本帖最后由 dreamweaver 于 2010-3-22 18:39 编辑
详细说明如下:可进行加减计数功能,计数范围0000——9999,即4位10进制计数。不需要预置数和使能端,但要有reset清零。
最好是4个计数器串联,不是单独编程1个大的计数器。我已经编号了一个一位的(即0-9的),但不会串联出4位的,我的程序如下,恳请高手指导!
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity counter_up_down_10 is
port(reset,ctrl,clk:in std_logic;
cout: out std_logic_vector(3 downto 0);
jin,jie: out std_logic);
end counter_up_down_10;
architecture c10 of counter_up_down_10 is
signal temp:std_logic_vector(3 downto 0);
begin
process(clk,reset,ctrl)
begin
if reset='1'then
temp<="0000";
jin<='0';
jie<='0';
elsif( clk'event and clk='1' )then
if ctrl='1'then
if (temp=9)then
temp<="0000";
jin<='1';
else
temp<=temp+1;
jin<='0';
end if;
else
if (temp=0) then
temp<="1001";
jie<='1';
else
temp<=temp-1;
jie<='0';
end if;
end if;
end if;
end process;
cout<=temp;
end c10;
其中reset 为复位端,ctrl 加减控制端(=1加法,=0减法),jin进位,jie借位。 |