当前位置:   article > 正文

FPGA中仿真概念

fpga阻塞仿真

FPGA中仿真概念

949948e1b11c61184856aa6cdd2bb439.png

需要对输入Verilog或VHDL的设计进行仿真,以检查设计的功能正确性。对于HDL RTL功能,需要使用不可综合的Verilog结构编写测试台。

阻塞和非阻塞赋值的仿真

不可综合Verilog RTL由示例9.1中所示的阻塞赋值组成。

在本例中,程序“always”块每次在时钟“clk”上的事件上执行,“initial”块仅执行一次,用于将值赋值给“a”、“b”、“c”和“d”。非阻塞赋值的仿真结果如波形9.1所示。

考虑Verilog RTL由示例9.2中所示的非阻塞赋值组成。

使用非阻塞的上述Verilog代码的仿真结果如波形9.2所示。

21c99eae4b77bf3e5840713150a29627.png示例9.1 Verilog阻塞赋值的仿真 0940dc7a47a4fa1001071c7be65e6fac.png波形9.1 Verilog阻塞赋值的仿真结果 5b4db195eca76d3ae9f085a6df2da6f4.png示例9.2 Verilog非阻塞赋值的仿真 0c05b4671b27d27adbf7ecfda29c0e7b.png表9.1 always和initial之间的差异
InitialAlways
在这种情况下,阻塞赋值在0仿真时间内执行,并在下一个指定序列中继续执行在这种情况下,阻塞赋值将在仿真时间0内继续执行,并根据灵敏度列表事件永远重复
此块仅执行一次,仿真在此块结束时停止此块中的仿真将永远继续。如果存在等待语句,则它将在仿真会话期间保持
它是不可综合的结构(特殊情况下可以)它是可综合的结构

表9.1中描述了always和initial块之间的差异。

具有赋值延迟的阻塞赋值

内部赋值延迟了阻塞赋值,延迟了赋值的评估和赋值的更新。

考虑下面示例9.3中所示的Verilog代码。

波形9.3给出了具有赋值延迟的阻塞赋值的仿真结果。

ed78f2b1d19e76391422bd48eec02408.png示例9.3具有赋值延迟的Verilog阻塞赋值 f4edb86d83a559f85d158fcd44ac419b.png

具有内部赋值延迟的阻塞赋值

内部赋值延迟阻塞赋值,延迟赋值的评估,但不延迟赋值的更新。

考虑下面示例9.4中所示的Verilog代码。

波形9.4给出了具有内部赋值延迟的阻塞赋值的仿真结果。

dcd0d783e9d0720d8a4dfd1494d25d29.png示例9.4具有内部赋值延迟的Verilog阻塞赋值 d9fcd86d43e2186f4cb82070cc22d40a.png波形9.4具有内部赋值延迟的Verilog阻塞赋值的仿真结果

具有赋值间延迟的非阻塞赋值

内部赋值延迟和非阻塞赋值延迟赋值的评估和赋值的更新。

考虑下面示例9.5中所示的Verilog代码。

波形9.5给出了具有赋值间延迟的非阻塞赋值的仿真结果。

5c7f1bcb28bb620c19818f1dc32404c8.png示例9.5具有赋值间延迟的Verilog非阻塞赋值 3fdf5e6cdc888863124a54701eddca86.png波形9.5具有赋值间延迟的Verilog非阻塞赋值的仿真结果

具有内部赋值延迟的非阻塞赋值

内部赋值延迟阻塞赋值、赋值更新,但不延迟赋值评估。

考虑下面示例9.6中所示的Verilog代码。

波形9.6给出了具有内部赋值延迟的阻塞赋值的仿真结果。

13887b94dc3494c4712137dab6c08837.png示例9.6具有内部赋值延迟的Verilog非阻塞赋值 391c70ca212020bd9cefae8d93a686fd.png波形9.6具有内部赋值延迟的Verilog非阻塞赋值的仿真结果

使用Verilog进行仿真

之前,我们讨论了详细设计综合和硬件推断。Verilog HDL对于设计的仿真功能非常强大。通过使用非综合结构,可以验证Verilog验证下设计(DUV),以确定设计的功能正确性。考虑具有输入为“clk”和“reset_n”的环形计数器的简单Verilog设计,并且计数器具有四位输出“q_out [3:0]”,在示例9.7中示出了环形计数器的RTL描述。 d35c1284a70338d4dfe3f1d1aa131726.png

示例9.7使用Verilog HDL的四位环形计数器

示例9.8描述了环形计数器的testbench,并将激励施加到DUV上。

上述testbench产生波形9.7所示的结果。

如上所述,基本仿真可以通过编写testbench来执行,该testbench可以强制激励被测试的设计。对于复杂度较低的FPGA设计,这种方法是可行的。但是对于大型SOC设计模块,使用复杂的自检测试台是必不可少的。验证工程师必须了解测试用例、测试计划和测试向量的创建。即使是最好的行业实践也是通过使用驱动程序、监视器和检查器来使用验证体系结构。此讨论超出了基于FPGA的设计范围。

e71c16b75bca5954d2aad5219e07e684.png示例9.8 Verilog环形计数器的testbench 541e41ed6e209427318d4d2554e413ab.png波形9.7环形计数器的仿真结果

cde1b532d4bf2c4fecae008cd3c1a337.png

Verilog复杂逻辑设计指南-奇偶校验生成器和校验器及筒式移位器

be88cac4a6232dc73351346c1a05fd4f.png                                

fc38ffa648188a082efc181576406b8e.png                                

6355d7cadd133cc333fa0bfaf92cb556.png

Verilog时序电路设计指南

59d82eb556860a995b67f21d5fde3d18.png

Verilog时序逻辑硬件建模设计(五)异步计数器&总结

fa0d3fef0f12ce769bb4858feea4113b.png

Verilog时序逻辑硬件建模设计(四)移位寄存器

bf7cfebb0037487b69d92f0f440041aa.png

Verilog时序逻辑硬件建模设计(三)同步计数器

79d83fa1ff7a2215169c8f8b37f2ffba.png

Verilog时序逻辑硬件建模设计(二)同步和异步复位

83a218e8973ce5d084ebdbca5bc7af3d.png

Verilog时序逻辑硬件建模设计(一)锁存器D-latch和触发器Flip-Flop

6965cccc55d076732ecb1e825b809bb3.png

Verilog组合逻辑设计指南

9bcb8e2f6a28143e6610925539b1e0b9.png

组合逻辑硬件建模设计(二)算术电路

5c9305bdc3c6b90135d21277973e0bfc.png

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

18a2761642bdbe4a722e00c10c64b20a.png

组合逻辑硬件建模设计(一)逻辑门

5d8926bac20ee8e0743ed5d8b75ccc5c.png

数字硬件建模-重新从另一方面理解Verilog(二)

4570e70bd11b0615f20fe8d7235545e6.png

数字硬件建模-从另一方面理解Verilog(一)

915ddf540911d71ac50f5795aab72f69.png

数字硬件建模综述


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/330872
推荐阅读
相关标签
  

闽ICP备14008679号