天天看點

Verilog初級教程(22)指派間延遲語句與指派内延遲語句

前言

正文

指派間延遲語句

指派内延遲語句

往期回顧

參考資料及推薦關注

verilog延遲語句可以在指派運算符的左側或右側指定延遲。

所謂的左側就是:

右側就是:

下面詳細講解。

指派間延遲語句在指派運算符的lhs上有延遲值。這表示語句本身在延遲到期後執行,是最常用的延遲控制形式。

請注意,q在時間10機關時變成了1,因為語句在10個時間機關時被計算,rhs是a、b和c的組合,計算為1。

這是其仿真結果:

Verilog初級教程(22)指派間延遲語句與指派内延遲語句

注:看到代碼的注釋了嗎?

inter-assignment delay: wait for #5 time units and then assign a and c to 1. note that ‘a’ and ‘c’ gets updated at the end of current timestep

這是很基礎的一句話,這句話說明了verilog這門語言的基本特點,或者說verilog中非阻塞指派的基本特點,如下:

這條語句,在第5ns時候雖然給a與c均指派了1,但是此刻并不生效,而會在目前時間步長結束時生效,例如,我們在此刻加一個語句,使用a與c的值:

Verilog初級教程(22)指派間延遲語句與指派内延遲語句

此時,q的值不會為1,而時為0,這就是因為此刻q的值沒有生效,如果在第6s在求q得值,我們在第6秒再看就可以看到生效了:

Verilog初級教程(22)指派間延遲語句與指派内延遲語句

由于一般timescale預設為1ns/1ps,是以,步長應該為1ns。也就是在1ns末生效。

指派内延遲是指在指派運算符的rhs上有一個延遲。這表示語句被計算,rhs上的所有信号的值首先被捕獲。然後在延時過後才對結果信号進行指派。

仿真結果為:

Verilog初級教程(22)指派間延遲語句與指派内延遲語句

很多人就感覺奇怪了,為什麼q沒有了為1的時候,不應該在10ns時候為1嗎?

如果出現這個疑問?很正常,但是需要再次了解了解,這個指派内延遲的含義與非阻塞指派的特點。

在第5ns時候,a,b,q同時被指派,a和c在第5s被非阻塞指派,也就是在第5ns末有效。

第5ns時,q也被指派,但是在第5ns時(起始),q經過計算為0,它經過5ns後被指派,是以,會一直為0,好像1被吞掉了似的,其實了解了二者的含義,很好了解。

為了對比,我們在第5ns時,對a和c都進行阻塞指派:

我們可以得到不一樣的結果:

Verilog初級教程(22)指派間延遲語句與指派内延遲語句

這才是你想要的結果。

什麼原因呢?

還是在第5ns時候(初),a和c都已經為1了,此時,q經過計算也為1,然後延遲5ns,指派給q,是以,q在10ns時候為1。

verilog初級教程(21)verilog中的延遲控制語句

verilog初級教程(20)verilog中的`ifdef 條件編譯語句

verilog初級教程(19)verilog中的參數

verilog初級教程(18)verilog中的函數與任務

verilog初級教程(17)verilog中的case語句

verilog初級教程(16)verilog中的控制塊

verilog初級教程(15)verilog中的阻塞與非阻塞語句

verilog初級教程(14)verilog中的指派語句

verilog初級教程(13)verilog中的塊語句

verilog初級教程(12)verilog中的generate塊

verilog初級教程(11)verilog中的initial塊

verilog初級教程(10)verilog的always塊

verilog初級教程(9)verilog的運算符

verilog初級教程(8)verilog中的assign語句

verilog初級教程(7)verilog子產品例化以及懸空端口的處理

verilog初級教程(6)verilog子產品與端口

verilog初級教程(5)verilog中的多元數組和存儲器

verilog初級教程(4)verilog中的标量與向量

verilog初級教程(3)verilog 資料類型

verilog初級教程(2)verilog hdl的初級文法

verilog初級教程(1)認識 verilog hdl

晶片設計抽象層及其設計風格

verilog以及vhdl所倡導的的代碼準則

fpga/asic初學者應該學習verilog還是vhdl?

https://www.chipverify.com/verilog/verilog-inter-and-intra-assignment-delay

個人微信公衆号: fpga lab

交個朋友