一位十进制加法计数器的怎么用VHDL语言实现

课程设计中老师要求我们一位十进制加法计数器要用VHDL语言实现,以前没接触过VHDL,只有几天的时间要交报告,要MAX+plus II实现。从网上找了几个编译不了 不知道怎么回事,

十进制加法器的VHDL程序及注释如下:

// 包含所需的库
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

// 定义所需的输入输出端口和寄存器
ENTITY BCD_counter IS
 PORT(clr,clk: IN std_logic;
 BCD_q:OUT std_logic_vector(3 DOWNTO 0));
END BCD_counter;
ARCHITECTURE behavioral OF BCD_counter IS
 SIGNAL counter:std_logic_vector(3 DOWNTO 0);
BEGIN
 process(CLR,CLK)
 begin
 IF clr='0' then  // 清零标志有效,则计数器清零
     counter <= (OTHERS => '0');
 ELSIF rising_edge(clk) THEN
     IF counter < "1001" THEN     // 计数器数值小于10,计数器加1
         counter <= counter +'1';
     ELSE counter <= (OTHERS => '0'); // 计数器数值大于等于10,计数器清零
     END IF;
 END IF;
 end process;
 BCD_q <= counter;
END behavioral;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-15
library ieee;
use ieee.std_logic_unsigned.all; --------不同数制之间 就可以运算了
。。
。。
然后定义两个数据port 用 std_logic_vecor(2 downto 0 ) ; 三位就可以表示了 十进制的数了 但是 还要 定义 一个 和 和一个 进位数,用std_logic; 就行
第2个回答  推荐于2017-09-15
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
ENTITY BCD_counter IS
PORT(clr,clk: IN std_logic;
BCD_q:OUT std_logic_vector(3 DOWNTO 0));
END BCD_counter;
ARCHITECTURE behavioral OF BCD_counter IS
SIGNAL counter:std_logic_vector(3 DOWNTO 0);
BEGIN
process(CLR,CLK)
begin
IF clr='0' then
counter <= (OTHERS => '0');
ELSIF rising_edge(clk) THEN
IF counter < "1001" THEN
counter <= counter +'1';
ELSE counter <= (OTHERS => '0');
END IF;
END IF;
end process;
BCD_q <= counter;
END behavioral;本回答被提问者和网友采纳