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