打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Verilog always block

Always块是Verilog中的过程块之一。 Always块中的语句按顺序执行。

Syntax

always @ (event)  [statement] always @ (event) begin  [multiple statements]end

Always块在某些特定事件处执行。该事件由敏感度列表定义。

什么是敏感度列表?

敏感性列表是一个表达式,它定义了何时应该执行always块,并在括号()中的@运算符之后指定。 该列表可以包含一个或一组信号,其值更改将执行always块。

在下面显示的代码中,只要信号a或b的值发生变化,始终执行块中的所有语句。

// 每当“ a”或“ b”的值更改时,执行always块always @ (a or b) begin  [statements]end

在下面的示例中,always块中的所有语句在信号clk的每个上升沿执行。

// Execute always block at positive edge of signal "clk"always @ (posedge clk) begin  [statements]end

如果没有灵敏度列表会怎样?

在整个仿真过程中,always块将连续重复执行。 只要灵敏度列表中的任何信号发生变化,便会触发always块。 如果always块中没有时序控制语句,则由于零延迟无限循环,仿真将挂起!

下面显示的示例是一个Always块,它试图反转信号clk的值。 该语句每0个时间单位执行一次。 因此,由于语句中没有延迟,因此它将永远执行。

// always block is started at time 0 units// But when is it supposed to be repeated ?// There is no time control, and hence it will stay and// be repeated at 0 time units only. This continues// in a loop and simulation will hang !always clk = ~clk; 

即使灵敏度列表为空,也应该有其他形式的时间延迟。 如下所示,在always结构中,通过延迟语句可以添加仿真时间。 现在,每10个时间单位完成一次时钟反转。

  always #10 clk = ~clk;

注意:显式延迟不能合成为逻辑门!

因此,真正的Verilog设计代码始终需要一个敏感度列表。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一个用Verilog实现PWM硬件的开发实例
FPGA语法篇
FPGA的Veilog HDL语法、框架总结
Verilog 编写规范
verilog中begin...end中间的语句是怎么执行的?
Verilog的135个经典设计实例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服