數(shù)據(jù)流描述方式采用什么語句?
數(shù)據(jù)流描述最基本的語句是assign連續(xù)賦值語句。
連續(xù)賦值語句是Verilog數(shù)據(jù)流建模的基本語句,用于對線網(wǎng)進行賦值,等價于門級描述,是從更高的抽象角度來對電路進行描述。連續(xù)賦值語句必須以關(guān)鍵詞assign開始。
連續(xù)賦值語句的左值可以是一下類型之一:標量線網(wǎng)、向量線網(wǎng)、矩陣中的一個元素(該矩陣可以是標量線網(wǎng)類型的,也可以是向量線網(wǎng)類型的)、向量線網(wǎng)的某一位、向量線網(wǎng)的部分位以及上述各種類型的拼接體。但是,不能是向量或向量寄存器。
連續(xù)賦值語句總是處于激活狀態(tài)。只要任意一個操作數(shù)發(fā)生變化,表達式就會被立即重新計算,并且將結(jié)果賦給等號左邊的線網(wǎng)。操作數(shù)可以是標量或向量的線網(wǎng)或寄存器,也可以是函數(shù)的調(diào)用。賦值延遲用于控制對線網(wǎng)賦予新值的時間,根據(jù)仿真時間單位進行說明。賦值延遲類似于門延遲,對于描述實際電路中的時序是非常重要的。
驅(qū)動和賦值的概念有什么區(qū)別?
驅(qū)動(Driving)和賦值(Assigning)。?線網(wǎng)是被驅(qū)動的,該值不被保持,在任意一個仿真步進上都需要重新計算;寄存器是被賦值的,且該值在仿真過程中被保持,直到下一個賦值的出現(xiàn)。寄存器型數(shù)據(jù)保持最后一次的賦值,而線型數(shù)據(jù)需要持續(xù)的驅(qū)動。wire使用在連續(xù)賦值語句中,而reg使用在過程賦值語句(initial ,always)中。wire若無驅(qū)動器連接,其值為z,reg默認初始值為不定值 x 。
行為描述主要用哪兩種語言?
所謂行為描述,是指用語言描述電路的行為。行為描述的語句有兩種:initial和always語句。
initial語句在0仿真時間執(zhí)行,而且只執(zhí)行一次;always語句同樣在0仿真時間開始執(zhí)行,但是它將一直循環(huán)執(zhí)行。這樣的特點單單從它們的命名上就能看得出來:一個是initial,就是初始化一次的意思;另一個是always,就是總在運行的意思。
邏輯運算“L=AB+BC+AC”對應(yīng)的行為級描述:
過程賦值語句是什么?
與數(shù)據(jù)流描述的連續(xù)賦值對應(yīng)的是行為描述的過程賦值的語句。
過程賦值語句的更新對象是寄存器、整數(shù)、實數(shù)或時間變量等。這些類型的變量在被賦值后,其值將保持不變,直到被其他過程賦值語句賦予新值。過程賦值語句只有在執(zhí)行到的時候才會起作用。過程賦值語句只能在initial或always語句內(nèi)進行賦值,只能對變量數(shù)據(jù)類型賦值,同時initial和always中只能使用過程賦值語句。過程賦值語句的左值可以是以下類型之一:reg、整形數(shù)、實型數(shù)、時間寄存器變量或存儲器單元、述各種類型的位選、上述各種類型的域選、面三種類型的拼接。
過程性賦值語句包括兩種類型的賦值語句:阻塞賦值(=)和非阻塞賦值(<=)。
模塊實例的端口對應(yīng)方式有哪些?
在使用這個模塊時(模塊例化),我們有兩種方法例化, 按位置例化和按名稱例化。
按位置例化:例化時,需要所有的參數(shù)順序必須和模塊本身的順序一致;例化時,只要寫端口名字即可。
按名稱例化:必須指定當前例化的端口名稱,端口的順序可以自由排序,不一定和模塊本身的順序相同。
簡述RTL級和行為級設(shè)計的區(qū)別?
RTL級,register transfer level,指的是用寄存器這一級別的描述方式來描述電路的數(shù)據(jù)流方式;而行為級,Behavior級,指的是僅僅描述電路的功能而可以采用任何verilog語法的描述方式。鑒于這個區(qū)別,RTL級描述的目標就是可綜合,而行為級描述的目標就是實現(xiàn)特定的功能而沒有可綜合的限制。