欢迎光临散文网 会员登陆 & 注册

HDLBits (30) — Always模块(时钟)

2022-02-05 17:05 作者:僚机Wingplane  | 我要投稿

本题链接:

https://hdlbits.01xz.net/wiki/Alwaysblock2

对于硬件综合,有两种类型的always块是相关的:

  • 组合: always @(*)

  • 时钟: always @(posedge clk)

时钟always块就像组合always块一样创建了一个组合逻辑块,但会在组合逻辑块的输出端创建一组触发器(或“寄存器”)。与逻辑 blob 的输出立即可见不同,输出只在下一个触发(clk上升沿)之后可见。

阻塞与非阻塞分配

Verilog中有三种类型的分配:

  • 连续赋值(赋值x=y;)。只能在不在过程内部时使用(“始终块”)。

  • 过程阻塞分配:(x=y;)。只能在过程内部使用。

  • 过程非阻塞赋值:(x<=y;)。只能在过程内部使用。

在组合always块中,使用阻塞赋值。在时钟always块中,使用非阻塞赋值。充分理解为什么对硬件设计特别有用,于此同时还需要了解Verilog模拟器是如何跟踪事件。不遵循这一规则会导致非常难以发现的错误,这些错误既不确定,也不同于模拟硬件和合成硬件。

题目

使用assign语句、组合always块和时钟always块以三种方式构建异或门。请注意,时钟始终块产生与其他两个不同的电路:有一个触发器,因此输出延迟。

答案

输出波形


HDLBits (30) — Always模块(时钟)的评论 (共 条)

分享到微博请遵守国家法律