port(clk:in Std_logic //定义计数器输入端口
rst:in std_logic
ck1:in std_logic
r:out std_logic_vector(15 downto 0)//定义计数器输出16位输出端口
)
end counter
architecture Behavioral of counter is
signal tmp:std_logic //定义临时信号
signal count:std_logic_vector(15 downto 0)
begin
process(clk,tmp,count,rst,ck1)
begin
if(rst='0') then//如果复位信号=0
r<=(others=>'0') //将r的值赋0
count<=(others=>'0') //将count的值赋0
tmp<='0' //将tmp的值赋0
elsif rising_edge(clk)then //如果是在clk的上升沿
tmp<=ck1 //将ck1的值赋给tmp
if tmp='1'and ck1='0' then//如果tmp=1并且ck1=0
r<=count//将count的值赋给r
elsif tmp='0'and ck1='1' then //如果tmp=0并且ck1=1
count<=(others=>'0') //将count的值赋0
count(0)<='1' //将count第0位的值赋1
else
count<=count+1//count+1的值赋给count
end if
end if
end process
end Behavioral
这段程序的意思就是当复位置0时,所有数据全部清0,当复位置1时,在时钟的上升沿判断tmp=1并且ck1=0就直接将count的值输出,如果tmp=0并且ck1=1 就将count的值清零,并在下一个时钟沿将count记为0000000000000001 除此以外的情况计数器count都正常+1计数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)