Verilog里面,always,assign和always@(×)区别

更新时间:2023-05-07 14:07:01 阅读: 评论:0

Verilog⾥⾯,always,assign和always@(×)区别
来源:⽹络素材
1.always@后⾯内容是敏感变量,always@(*)⾥⾯的敏感变量为*,意思是说敏感变量由综合器根据always⾥⾯的输⼊变量⾃动添加,也就是所有变量都是敏感列表,不⽤⾃⼰考虑。
2.如果没有@,那就是不会满⾜特定条件才执⾏,⽽是执⾏完⼀次后⽴马执⾏下⼀次,⼀直重复执⾏,⽐如testbench⾥⾯产⽣50Mhz的时钟就(假设时间尺度是1ns)可以写成
⼀般always@(*)是指⾥⾯的语句是组合逻辑的。*代替了敏感变量。
⽽⼀般时序逻辑要写成
时钟信号clk上升沿或者复位信号rst下降沿的时候执⾏always块内的代码。
assign ⽤于描述组合逻辑
always@(敏感事件列表) ⽤于描述时序逻辑
敏感事件上升沿 podge,下降沿 negedge,或电平
敏感事件列表中可以包含多个敏感事件,但不可以同时包括电平敏感事件和边沿敏感事件,也不可以同时包括同⼀个信号的上升沿和下降沿,这两个事件可以合并为⼀个电平敏感事件。
在新的verilog2001中“,”和“or”都可以⽤来分割敏感事件了,可以⽤“*”代表所有输⼊信号,这可以防⽌遗漏。
合法的写法:
所有的assign 和 always 块都是并⾏发⽣的!
并⾏块、顺序块
将要并⾏执⾏的语句写在
将要顺序执⾏的语句写在
并⾏块和顺序块都可以写在
initial 或 always@ 之后,也就是说写在块中的语句是时序逻辑的
对assign之后不能加块,实现组合逻辑只能⽤逐句的使⽤assign

本文发布于:2023-05-07 14:07:01,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/865827.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:逻辑   事件   变量   信号   组合   上升   时序   时钟
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图