打印

always语句问题,比较奇怪,请高手解释一下

[复制链接]
2992|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
armsnow|  楼主 | 2011-3-21 11:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
output                   led;            //led灯输出线
reg        [7:0]        data;           //一秒加1的数据
always @ (data)
    led<=~led;                          //当data有变化时,led亮灭交替
但这样写代码为什么不行呢,灯一值是亮的。请高手解释一下,在这里先谢谢了!

相关帖子

沙发
utopiaworld| | 2011-3-23 22:42 | 只看该作者
没有时钟  这个应该会是组合逻辑电路
always @ (×)
    led=~led;  
是组合逻辑环路

如果要闪闪可以写成这样子
always@(posedge clk or negedge rst_n)
begin
if(rst_n == 1'b0)
       data_dly <= 1'b0;
else
       data_dly <= data;
end
always@(posedge clk or negedge rst_n)
begin
    if(rst_n == 1'b0)
       led <= 1'b0;
    else if(data != data_dly)
      led <= ~led;
end

使用特权

评论回复
板凳
armsnow|  楼主 | 2011-3-25 11:01 | 只看该作者
谢谢,给分了

使用特权

评论回复
地板
junjietianya| | 2011-4-6 09:59 | 只看该作者
你的lED初始化为WIRE型,WIRE默认值为Z,Z=X;X=~X;所以需要initial led=1,或led=0;然后always。

使用特权

评论回复
5
maxlogic| | 2011-4-17 22:48 | 只看该作者
组合逻辑环,你看一下,你自己综合的RTL视图就明白了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

39

帖子

1

粉丝