当前位置:
首页 >
【Verilog HDL】语句的并发执行
发布时间:2023/11/30
57
豆豆
生活随笔
收集整理的这篇文章主要介绍了
【Verilog HDL】语句的并发执行
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1. 实践得到的启发
先从一个简单的现象得出结论,Verilog语句是并发执行的!
同时,这也是**$monitor系统任务为全局有效**的一个重要支持因素,如果没有并发,它是完不成这项功能的实现的。
众所周知,高级语言通常都是自上而下编译和执行的,但是Verilog硬件描述语言不一样,它更喜欢并发执行。
这是一门直接触及底层硬件编程的语言,效率非常高,并发执行是为了适应它所处的环境。
先来看看一下激励块代码:
module stimulus;// 设置激励信号reg I0 = 1,I1 = 0,I2 = 1,I3 = 0,I4 = 1,I5 = 0,I6 = 1,I7 = 0; // 输入数据信息reg S2,S1,S0; // 地址输入端信息,注意使用“小端序”wire OUT; // 输出数据mux8_to_1 M8T (I0,I1,I2,I3,I4,I5,I6,I7,S2,S1,S0,OUT);// 设置信号监视器initialbegin$monitor ($time," S2 = %b, S1 = %b, S0 = %b, OUT = %b\n",S2,S1,S0,OUT); // 注意【\n】end// 设置激励信号initialbegin// $display ("I0 = %b, I1 = %b, I2 = %b, I3 = %b, I4 = %b, I5 = %b, I6 = %b, I7 = %b\n"// ,I0,I1,I2,I3,I4,I5,I6,I7);#1 S2 = 0; S1 = 0; S0 = 0;#1 S2 = 0; S1 = 0; S0 = 1;#1 S2 = 0; S1 = 1; S0 = 0;#1 S2 = 0; S1 = 1; S0 = 1;#1 S2 = 1; S1 = 0; S0 = 0;#1 S2 = 1; S1 = 0; S0 = 1;#1 S2 = 1; S1 = 1; S0 = 0;#1 S2 = 1; S1 = 1; S0 = 1;endendmodule输出结果为:
0 S2 = x, S1 = x, S0 = x, OUT = x1 S2 = 0, S1 = 0, S0 = 0, OUT = 1 2 S2 = 0, S1 = 0, S0 = 1, OUT = 0 3 S2 = 0, S1 = 1, S0 = 0, OUT = 1 4 S2 = 0, S1 = 1, S0 = 1, OUT = 05 S2 = 1, S1 = 0, S0 = 0, OUT = 1 6 S2 = 1, S1 = 0, S0 = 1, OUT = 0 7 S2 = 1, S1 = 1, S0 = 0, OUT = 1 8 S2 = 1, S1 = 1, S0 = 1, OUT = 0观察可得,不仅仅两个initial块是并发执行的,并且他们还是从仿真时刻为0的时候就开始并发执行了。
【疑问】(未解决)
Vivado 2017.4中
红圈圈是意味着并发执行吗?暂时不知道,后续再研究。
——————————
后续深入内容以后再说
总结
以上是生活随笔为你收集整理的【Verilog HDL】语句的并发执行的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 英雄联盟里是艾瑞莉娅漂亮还是菲奥娜漂亮?
- 下一篇: 【数字逻辑】第四章 组合逻辑电路:端口