微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 代码问题求解

代码问题求解

时间:10-02 整理:3721RD 点击:
各位大侠好!     我的部分代码如下:请问如果我加上最后一个else代码的内容,程序烧写到板子里时,在没有Fifo_rst复位的情况下,LED0-LED1微微的有点亮度;当我把最后那个else及代码去掉,重新编译烧写后,LED0-LED1亮度正常。不明白为啥?什么时候需要加上这个else,什么时候不需要加上呢?

  1. always@(posedge Clock or negedge Fifo_rst)
  2. begin
  3.         if(!Fifo_rst)begin
  4.                  LED0 <= 0;
  5.                  LED1 <= 0;
  6.         end
  7.         else if((Fcounter==0)&&(Read_data==255))begin
  8.                         LED0 <= 1;
  9.                         LED1 <= 1;
  10.                  end
  11.                 else begin
  12.                         LED0 <= 0;
  13.                         LED1 <= 0;
  14.                         end
  15. end

复制代码

从代码不就可以看出来么- -
没有加else的时候除了复位,其它情况下LED0-1都是点亮状态,亮度自然最高;加了else LED0-1只有在(Fcounter==0)&&(Read_data==255)的情况下才被点亮,其它情况下都是灭的,如果FPGA时钟频率很高的话点亮的时间很短,人眼看上去自然亮度就低了。

没有else并且没有复位的情况下,说有综合出来的寄存器都是X状态,也就是说会有弱电流影响,去掉else之后就是没有不复位的状况,电流完全受上拉下拉电阻控制,所以显示正常。

   寄存器x状态是个什么状态

没有else,寄存器默认保持。

二楼正解

二楼正解,个人认为不会有x状态出现,fpga上电加载完后,寄存器都有个默认值 在不特别设定的情况下 一般是0 你可以自己试一试 在定义寄存器的时候不设置初值 且 给寄存器赋值时不用复位 实现后用fpga editor看看

二楼正解

呵呵,这个问题比较简单哈

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top