(Verilog) wire和reg,以及always

For combinational always blocks, always use a sensitivity list of (*). Explicitly listing out the signals is error-prone (if you miss one), and is ignored for hardware synthesis. If you explicitly specify the sensitivity list and miss a signal, the synthesized hardware will still behave as though (*) was specified, but the simulation will not and not match the hardware's behaviour. (In SystemVerilog, use always_comb.)

A note on wire vs. reg: The left-hand-side of an assign statement must be a net type (e.g., wire), while the left-hand-side of a procedural assignment (in an always block) must be a variable type (e.g., reg). These types (wire vs. reg) have nothing to do with what hardware is synthesized, and is just syntax left over from Verilog's use as a hardware simulation language.

对于组合always块,总是使用(*)的敏感性列表。明确列出信号是容易出错的(如果你漏掉一个),并且在硬件合成中会被忽略。如果你明确指定了敏感性列表但漏掉了一个信号,合成后的硬件将仍然按照(*)指定的方式工作,但仿真将不会与硬件的行为相匹配。(在SystemVerilog中,请使用always_comb)。

关于wire和reg的注意事项:assign语句的左边必须是一个网络类型(如wire),而过程赋值(在always块中)的左边必须是一个变量类型(如reg)。这些类型(wire vs. reg)与合成的硬件无关,只是Verilog作为硬件仿真语言的语法剩下的部分。

相关推荐
第二层皮-合肥12 小时前
50天精通FPGA设计第八天-门电路基础知识
fpga开发
超能力MAX13 小时前
八股-异步时钟单脉冲传输
fpga开发
燎原星火*14 小时前
selectio
fpga开发
sam-zy15 小时前
PY32F406K1CU6 FLASH模拟EEPROM
单片机·嵌入式硬件·fpga开发
sam-zy15 小时前
PY32F403K1CU6定时器1~6基本配置,1ms中断,每隔1秒打印
单片机·嵌入式硬件·fpga开发
Saniffer_SH17 小时前
【每日一题】PCIe 里的 RefClk (Reference Clock) 到底是干什么的?
服务器·驱动开发·单片机·嵌入式硬件·fpga开发·计算机外设·硬件架构
测试专家17 小时前
FPGA在TSN板卡应用
fpga开发
stay_cloud18 小时前
HDMI字符显示 —— 基于Genesys2
fpga·hdmi·genesys2
碎碎思18 小时前
通过 UART 实现远程 AXI 访问:让 FPGA 调试更灵活
fpga开发
ThreeYear_s18 小时前
【FPGA+DSP系列】——DSP的EPWM外设注意事项
fpga开发