在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7289|回复: 14

[求助] 这两种Verilog写法有什么区别吗?不明白!

[复制链接]
发表于 2011-5-16 23:07:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
写法1:边沿触发
always @(posedage clr or posedge clr)
begin
if(!clr)d = 0;
else   d = q;
end

写法2:电平敏感
begin
always @(clr)
if(!clr)d = 0;
else   d = q;
end

如果是电平敏感的话,意思就是说只要有电平变化就执行。但是只要有电平变化无非只有从1变到0,或者从0变到1这两种状态啊,这不就是一个下降沿和一个上升沿吗,这和把上升沿和下降沿都写在敏感列表里面有什么区别吗?
发表于 2011-5-17 00:53:38 | 显示全部楼层
我也不太清楚  希望有高手能指導一下...
发表于 2011-5-17 07:42:21 | 显示全部楼层
always @(clr)
if(!clr)d = 0;
else   d = q;
end

这是个latch,你分析它的时序就知道了。之前写posedge的那一种是flop。可以找一本数字电子技术的书看看,里面详细介绍了lath和flop之间时序和功能的区别。

注意0到1变化的边沿以及1到0变化的边沿和0电平/1电平是完全不一样的概念。一个是边沿,一个是电平。
“如果是电平敏感的话,意思就是说只要有电平变化就执行”,严格的说,应该这样理解,有电平变化就重新计算always块里的值。这个是典型的组合逻辑的功能描述,对不对。而有时钟边沿触发就重新计算(赋值),那么这个是典型的时序逻辑(D触发器)的功能描述,两者还是不一样的。计算或者说执行的原理还是不一样的。
发表于 2011-5-17 09:57:56 | 显示全部楼层
这种小白级问题没人愿意回答的,赶紧去看基本的数字逻辑基础
发表于 2011-5-17 15:37:01 | 显示全部楼层
楼主应该好好复习下数电了
发表于 2011-5-17 16:08:40 | 显示全部楼层
原理不同 啊
发表于 2011-5-17 21:50:53 | 显示全部楼层
呵呵 LATCH是不建议的
发表于 2011-5-17 23:22:29 | 显示全部楼层
路过  学习了
发表于 2011-5-18 15:15:28 | 显示全部楼层
现搞懂这两种代码综合出来的电路有什么不同
建议用DC综合完后自己去看看电路
这样你才会进步
发表于 2011-5-18 15:55:21 | 显示全部楼层
回复 1# pengjunjun0807
你的code本身就有问题,应该改成:
写法1:边沿触发
always @(posedage clr or negedge clr)
begin
if(!clr) d <= 0;
else    d <= q;
end

写法2:电平敏感

always @*
begin
if(!clr)         d <= 0;
else if (en)   d <= q;
end
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-3-4 22:53 , Processed in 0.026854 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表