代码问题求解
时间:10-02
整理:3721RD
点击:
各位大侠好! 我的部分代码如下:请问如果我加上最后一个else代码的内容,程序烧写到板子里时,在没有Fifo_rst复位的情况下,LED0-LED1微微的有点亮度;当我把最后那个else及代码去掉,重新编译烧写后,LED0-LED1亮度正常。不明白为啥?什么时候需要加上这个else,什么时候不需要加上呢?
- always@(posedge Clock or negedge Fifo_rst)
- begin
- if(!Fifo_rst)begin
- LED0 <= 0;
- LED1 <= 0;
- end
- else if((Fcounter==0)&&(Read_data==255))begin
- LED0 <= 1;
- LED1 <= 1;
- end
- else begin
- LED0 <= 0;
- LED1 <= 0;
- end
- end
从代码不就可以看出来么- -
没有加else的时候除了复位,其它情况下LED0-1都是点亮状态,亮度自然最高;加了else LED0-1只有在(Fcounter==0)&&(Read_data==255)的情况下才被点亮,其它情况下都是灭的,如果FPGA时钟频率很高的话点亮的时间很短,人眼看上去自然亮度就低了。
没有else并且没有复位的情况下,说有综合出来的寄存器都是X状态,也就是说会有弱电流影响,去掉else之后就是没有不复位的状况,电流完全受上拉下拉电阻控制,所以显示正常。
寄存器x状态是个什么状态
没有else,寄存器默认保持。
二楼正解
二楼正解,个人认为不会有x状态出现,fpga上电加载完后,寄存器都有个默认值 在不特别设定的情况下 一般是0 你可以自己试一试 在定义寄存器的时候不设置初值 且 给寄存器赋值时不用复位 实现后用fpga editor看看
二楼正解
呵呵,这个问题比较简单哈
