fpga中在某个时钟周期给一个reg或wire变量赋值,从下一个时钟开始不赋值,那么输出会保持原来的值吗

always@(posedge clk)
begin
if(!rst) cnt<=0;
else beign
cnt<=cnt+1;
if(cnt==0) a<=1;
if(cnt==100) a<=0;
end
end
请问在cnt为1到99期间a的值是多少

第1个回答  推荐于2017-09-18
首先从你的问题看你没有理解reg和wire,reg是寄存器,是用时钟驱动锁存数据的,所以给用时钟给变量赋值只能是reg;wire是相当于连在一个reg后面的线,这个线上的值由前面的reg或者是一些运算结果得到的,和时钟基本上没有直接关系。
然后是你的问题,if语句,主要应用场景主要是组合逻辑和时序逻辑,在组合逻辑中,一定要把所有的条件都写全,不然会造成一些不想要的结果(具体是什么我也不知道),反正要保证每一个条件都写全了;在逻辑时序中,也就是用时钟驱动的时候,就相当于条件满足一次就执行一次,不满足的时候就锁存当前的值,相当于if。。。。if.......else a<=a;本回答被提问者采纳
相似回答