可置数的减法计数器
可以在递减到0的时候流出一点时间来LOAD计数值
增加一个 计数器开始计数允许位(en)(此位有效后,就不允许预置数位变化),内部设置一个flag,
可计数 = en & flag ,
!flag = !en | 计数满
process(clk_cnt3)
begin
if(rising_edge(clk_cnt3))then
if(cnt3>X"00000000")then
en<='1';
cnt3<=cnt3-'1';
else
en<='0';
if(cnt33/=cnt3_temp)then
cnt33<=cnt3_temp;
cnt3<=cnt3_temp;
end if;
end if;
end if;
end process;
如果我的cnt3_temp变化,则把cnt3_temp放入cnt3中开始计数,但是我再次设置相同的计数值则不能计数,此事我该怎么处理,应为我现在要求只要cnt3_temp设置大于0的数就开始计数,等cnt3减到0停止,如果我cnt_temp有值输入,就算和上次的值是一样的也要计数,计完则停止,有输入开始,不管cnt3_temp是什么值,大于0就行,现在上面的代码是输入不同的值开始计数,请问该怎么设计
process(clk_cnt3)
begin
if(rising_edge(clk_cnt3))then
if(cnt3>X"00000000")then
en<='1';
cnt3<=cnt3-'1';
else
en<='0';
if(cnt33/=cnt3_temp)then
cnt33<=cnt3_temp;
cnt3<=cnt3_temp;
end if;
end if;
end if;
end process;
如果我的cnt3_temp变化,则把cnt3_temp放入cnt3中开始计数,但是我再次设置相同的计数值则不能计数,此事我该怎么处理,应为我现在要求只要cnt3_temp设置大于0的数就开始计数,等cnt3减到0停止,如果我cnt_temp有值输入,就算和上次的值是一样的也要计数,计完则停止,有输入开始,不管cnt3_temp是什么值,大于0就行,现在上面的代码是输入不同的值开始计数,请问该怎么设计
cnt33<=cnt3_temp; ---赋值的方向反了吧?
