找回密码
 注册
关于网站域名变更的通知
查看: 318|回复: 3
打印 上一主题 下一主题

verilog 上下边沿同时触发 可综合代码实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-11-30 14:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
always@(posedge active_row_en)4 y$ g$ N( b& Q7 J
active_row[cnt1]<=1'd1;3 `' E4 i( N/ s+ t$ h
always@(negedge active_row_en)
/ s3 l2 Z, L; R6 ?6 yactive_row[cnt1]<=1'd0;
9 b# U* r5 \9 H6 }这样的代码为什么不可以综合,求解决办法。就是想在active_row_en 的上下边沿都触发,acitve_row_en的频率是1M
* {7 A! O  N6 |! h- f2 e

该用户从未签到

2#
发表于 2022-11-30 15:10 | 只看该作者
从语法上看,一个触发器在两个process 里面赋值是不可综合的
& \2 x! i9 Y* G/ {其次,在FPGA里面,有双沿触发的触发器吗?没有吧,所以即使可以综合,最后map的时候也会报错。8 j3 l3 w8 K- a/ r! m! e
要么用沿检测实现,但是这时就不能叫“上下沿都触发了”。

该用户从未签到

3#
发表于 2022-11-30 15:15 | 只看该作者
这个active_row_en很有问题它可能会有很多的毛刺,并非是真正的上沿和下降沿,再一个如此设计会导致触发器所用时钟彼此不一致,应该用系统的时钟做一个上升沿检测和一个下降沿检测!

该用户从未签到

4#
发表于 2022-11-30 15:22 | 只看该作者
active_row[cnt1]不可以在两个always块中都赋值,会报错的。
( B+ }2 g5 p3 @) v, x% k你可以试试不加posedge和nededge ,就是 always @(active_row_en),这样只要active_row_en值变化就触发。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-5 12:35 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表