打印
[verilog]

两种写发,感觉应该更稳定,却出现了问题

[复制链接]
1054|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
z894811350|  楼主 | 2015-12-1 13:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 z894811350 于 2015-12-1 13:39 编辑

第一种
reg     aa;
wire    aa_rising;
wire    aa_falling;
always @(posedge sys_clk)
begin
    if(rst_l==1'b0)
         begin
             aa_r<=1'b0;
         end
         else if(bb==1'b0)
             aa_r<=aa;
end
assign  aa_rising =(aa_r==1'b0 && (aa==1'b1))?1'b1:1'b0;
assign  aa_falling=(aa_r==1'b1 && (aa==1'b0))?1'b1:1'b0;
图像正常
第二种
reg     [3:0]    aa;
wire    aa_rising;
wire    aa_falling;
always @(posedge sys_clk)
begin
    if(rst_l==1'b0)
         begin
             aa_r<=4'd0;
         end
         else if(bb==1'b0)
             aa_r[3:0]<={aa[2:0],aa};
end
assign  aa_rising =(aa_r==4'b0011)?1'b1:1'b0;
assign  aa_falling=(aa_r==4'b1100)?1'b1:1'b0;
图像乱了
时钟是125M
哪位帮助解释一下这两种写法什么情况会出现问题

相关帖子

沙发
ococ| | 2015-12-1 14:35 | 只看该作者
第二种判断上升沿下降沿的条件就写错了

使用特权

评论回复
板凳
z894811350|  楼主 | 2015-12-1 15:26 | 只看该作者
ococ 发表于 2015-12-1 14:35
第二种判断上升沿下降沿的条件就写错了

aa_r[3:0]<={aa_r[2:0],aa}
我抄错了!
这回呢

使用特权

评论回复
地板
玄德| | 2015-12-1 23:08 | 只看该作者

没仔细看逻辑。

不过,提醒LZ注意运算符的优先级。


使用特权

评论回复
5
ococ| | 2015-12-2 09:54 | 只看该作者

assign  aa_rising =(aa_r==4'b0001)?1'b1:1'b0;
assign  aa_falling=(aa_r==4'b1110)?1'b1:1'b0;

这样才跟第一种是一样的吧

使用特权

评论回复
6
z894811350|  楼主 | 2015-12-2 10:44 | 只看该作者
我是为了抓取到稳定的信号,
所以做了移位,本以为第二种会稳定,结果乱了
现在我用下面这种就OK了
begin
aa_r1<=aa;
aa_r2<=aa_r1
end
assign  aa_rising =(aa_r2==1'b0 && (aa_r1==1'b1))?1'b1:1'b0;
assign  aa_falling=(aa_r2==1'b1 && (aa_r1==1'b0))?1'b1:1'b0;
不知道是为什么

使用特权

评论回复
7
feihufuture| | 2015-12-2 16:04 | 只看该作者
z894811350 发表于 2015-12-2 10:44
我是为了抓取到稳定的信号,
所以做了移位,本以为第二种会稳定,结果乱了
现在我用下面这种就OK了

1 125m时钟不低了,要注意了
2 注意建立时间和保持时间的时序问题

使用特权

评论回复
8
z894811350|  楼主 | 2015-12-2 16:42 | 只看该作者
feihufuture 发表于 2015-12-2 16:04
1 125m时钟不低了,要注意了
2 注意建立时间和保持时间的时序问题

时序不懂啊!就是规范着写代码;
后面也遇到类似的情况,感觉小代码低频采低频无所谓了,随意采;
高频采低频,还是要滤波,为了稳定不能差资源啊

使用特权

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

本版积分规则

4

主题

47

帖子

1

粉丝