打印

Verilog assign和always 注意事宜

[复制链接]
2114|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FangTT|  楼主 | 2013-1-30 22:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assign 用于描述组合逻辑
always@(敏感事件列表) 用于描述时序逻辑
敏感事件 上升沿 posedge,下降沿 negedge,或电平
敏感事件列表中可以包含多个敏感事件,但不可以同时包括电平敏感事件和边沿敏感事件,也不可以同时包括同一个信号的上升沿和下降沿,这两个事件可以合并为一个电平敏感事件。
在新的verilog2001中“,”和“or”都可以用来分割敏感事件了,可以用“*”代表所有输入信号,这可以防止遗漏。
合法的写法:
always@ *
always@ (posedge clk1,negedge clk2)
always@ (a or b)
`timescale 100ns/100ns //定义仿真基本周期为100ns
always #1 clk=~clk //#1代表一个仿真周期即100ns

所有的assign 和 always 块都是并行发生的!
并行块、顺序块
将要并行执行的语句写在
fork
//语句并行执行
join
将要顺序执行的语句写在
begin
//语句顺序执行
end
并行块和顺序块都可以写在
initial 或 always@ 之后,也就是说写在块中的语句是时序逻辑的
对assign之后不能加块,实现组合逻辑只能用逐句的使用assign
组合逻辑如果不考虑门的延时的话当然可以理解为瞬时执行的,因此没有并行和顺序之分,并行和顺序是针对时序逻辑来说的。值得注意的是所有的时序块都是并行执行的。initial块只在信号进入模块后执行1次而always块是由敏感事件作为中断来触发执行的

相关帖子

沙发
GoldSunMonkey| | 2013-1-30 22:58 | 只看该作者
感谢分享,非常不错啊

使用特权

评论回复
板凳
charlydady| | 2013-2-1 08:54 | 只看该作者
always也可以实现组合逻辑哦

使用特权

评论回复
地板
charlydady| | 2013-2-1 08:55 | 只看该作者
敏感变量不用时钟沿,用阻塞赋值

使用特权

评论回复
5
qin552011373| | 2013-2-1 20:09 | 只看该作者
不会verilog   我是不是文盲了。。。。。

使用特权

评论回复
6
Backkom80| | 2013-2-5 08:13 | 只看该作者
楼主的对第二句写的很模糊,会让人读了有误解的地。

时序逻辑和组合逻辑的区分是以触发条件的方式来区分的,不是以用always  还是 assign来区分的。

always@(敏感事件列表) 可以用于描述时序逻辑,也可以用于表组合逻辑,主要取决于敏感事件列表的触发方式。

使用特权

评论回复
7
GoldSunMonkey| | 2013-2-5 22:33 | 只看该作者
Backkom80 发表于 2013-2-5 08:13
楼主的对第二句写的很模糊,会让人读了有误解的地。

时序逻辑和组合逻辑的区分是以触发条件的方式来区分的 ...

分享的很好啊

使用特权

评论回复
8
Backkom80| | 2013-2-6 08:51 | 只看该作者
GoldSunMonkey 发表于 2013-2-5 22:33
分享的很好啊

使用特权

评论回复
9
GoldSunMonkey| | 2013-2-13 23:33 | 只看该作者
:kiss:

使用特权

评论回复
10
Backkom80| | 2013-2-16 09:14 | 只看该作者

使用特权

评论回复
11
yibiantian| | 2013-2-18 19:52 | 只看该作者
顶一个

使用特权

评论回复
12
linhaiqing60| | 2013-2-20 10:59 | 只看该作者
楼主,你能写几个例程贴出代码,并且综合出电路试图截图出来给大家看,这样子会更有效果,光看理论的东西,看懂了也不容易吸收。

使用特权

评论回复
13
FangTT|  楼主 | 2013-3-18 17:14 | 只看该作者
linhaiqing60 发表于 2013-2-20 10:59
楼主,你能写几个例程贴出代码,并且综合出电路试图截图出来给大家看,这样子会更有效果,光看理论的东西, ...

嘿嘿,这个要靠自己体会的

使用特权

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

本版积分规则

45

主题

172

帖子

4

粉丝