本(běn)节(jié)的(de)文(wén)檔編号(hào):001100000037
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào): 001100000052
1、本(běn)节(jié)主(zhǔ)要(yào)介紹,Verilog HDL的(de)信(xìn)号(hào)類(lèi)型,主(zhǔ)要(yào)包(bāo)括两(liǎng)種(zhǒng)數據(jù)類(lèi)型:線(xiàn)网(wǎng)類(lèi)型(net type)和(hé)寄存器類(lèi)型(reg type),在(zài)進(jìn)行工程設計(jì)中(zhōng)也(yě)只(zhī)会(huì)使用(yòng)到(dào)这(zhè)两(liǎng)个(gè)類(lèi)型的(de)信(xìn)号(hào);信(xìn)号(hào)位宽(kuān),定(dìng)義信(xìn)号(hào)類(lèi)型的(de)同(tóng)时(shí),必須定(dìng)義好(hǎo)信(xìn)号(hào)的(de)位宽(kuān),取(qǔ)決于(yú)該信(xìn)号(hào)要(yào)表(biǎo)示的(de)最(zuì)大值,例如(rú)a信(xìn)号(hào)的(de)最(zuì)大值为(wèi)1000,那(nà)麼(me)信(xìn)号(hào)a的(de)位宽(kuān)必須大于(yú)或(huò)等于(yú)10位;線(xiàn)网(wǎng)類(lèi)型wire,用(yòng)于(yú)对(duì)結構化(huà)器件(jiàn)之間(jiān)的(de)物(wù)理連(lián)接的(de)建模,代(dài)表(biǎo)的(de)是(shì)物(wù)理連(lián)接線(xiàn),不(bù)存儲其邏輯值,通(tòng)常用(yòng)assign進(jìn)行賦值;寄存器類(lèi)型reg,通(tòng)常用(yòng)于(yú)对(duì)存儲單元(yuán)的(de)描述,如(rú)D型觸發(fà)器、ROM等。必須注意(yì)的(de)是(shì):reg類(lèi)型的(de)變(biàn)量(liàng)不(bù)一(yī)定(dìng)是(shì)存儲單元(yuán),如(rú)在(zài)always語(yǔ)句(jù)中(zhōng)進(jìn)行描述的(de)必須是(shì)用(yòng)reg類(lèi)型的(de)變(biàn)量(liàng);wire和(hé)reg的(de)區(qū)别,
2、本(běn)書(shū)總(zǒng)結出(chū)一(yī)套(tào)解(jiě)決方(fāng)法:在(zài)本(běn)模块(kuài)中(zhōng)使用(yòng)always設計(jì)的(de)信(xìn)号(hào)都定(dìng)義为(wèi)reg型,其他(tā)都定(dìng)義为(wèi)wire型。
3、ALTERA和(hé)VIVADO文(wén)檔
|
第(dì)4节(jié) 信(xìn)号(hào)類(lèi)型 Verilog HDL的(de)信(xìn)号(hào)類(lèi)型有(yǒu)很多(duō)種(zhǒng),主(zhǔ)要(yào)包(bāo)括两(liǎng)種(zhǒng)數據(jù)類(lèi)型:線(xiàn)网(wǎng)類(lèi)型(net type) 和(hé)寄存器類(lèi)型(reg type)。 笔(bǐ)者(zhě)在(zài)進(jìn)行工程設計(jì)过(guò)程中(zhōng),也(yě)是(shì)只(zhī)会(huì)使用(yòng)到(dào)这(zhè)两(liǎng)个(gè)類(lèi)型的(de)信(xìn)号(hào)。 4.1 信(xìn)号(hào)位宽(kuān) 定(dìng)義信(xìn)号(hào)類(lèi)型的(de)同(tóng)时(shí),必須定(dìng)義好(hǎo)信(xìn)号(hào)的(de)位宽(kuān)。默認信(xìn)号(hào)的(de)位宽(kuān)是(shì)1位,當信(xìn)号(hào)的(de)位宽(kuān)为(wèi)1时(shí)可(kě)不(bù)表(biǎo)述, 如(rú)定(dìng)義位宽(kuān)为(wèi)1的(de)wire型信(xìn)号(hào)a可(kě)直(zhí)接用(yòng)“wire a;”来(lái)表(biǎo)示。但信(xìn)号(hào)的(de)位宽(kuān)大于(yú)1位时(shí)就(jiù)一(yī)定(dìng)要(yào)表(biǎo)示出(chū)来(lái), 如(rú)用(yòng)“wire [7:0]”来(lái)表(biǎo)示該wire型信(xìn)号(hào)的(de)位宽(kuān)为(wèi)8位。
信(xìn)号(hào)的(de)位宽(kuān)取(qǔ)決于(yú)要(yào)該信(xìn)号(hào)要(yào)表(biǎo)示的(de)最(zuì)大值。該信(xìn)号(hào)能(néng)表(biǎo)示的(de)无符号(hào)數最(zuì)大值是(shì):2n-1,其中(zhōng)n
表(biǎo)示該信(xìn)号(hào)的(de)位宽(kuān)。例如(rú),信(xìn)号(hào)a的(de)最(zuì)大值为(wèi)1000,那(nà)麼(me)信(xìn)号(hào)a的(de)位宽(kuān)必須大于(yú)或(huò)等于(yú)10位。
下(xià)面(miàn)向(xiàng)读(dú)者(zhě)分(fēn)享一(yī)个(gè)位宽(kuān)計(jì)算技巧:打(dǎ)開(kāi)電(diàn)腦的(de)“計(jì)算器”後(hòu)選用(yòng)程序員模式,在(zài)在(zài)10進(jìn)制下(xià)
輸入(rù)信(xìn)号(hào)值,如(rú)1000,随後(hòu)可(kě)以(yǐ)查看(kàn)信(xìn)号(hào)位宽(kuān)。
4.2 線(xiàn)网(wǎng)類(lèi)型wire
線(xiàn)网(wǎng)類(lèi)型用(yòng)于(yú)对(duì)結構化(huà)器件(jiàn)之間(jiān)的(de)物(wù)理連(lián)線(xiàn)的(de)建模,如(rú)器件(jiàn)的(de)管(guǎn)脚,芯片(piàn)內(nèi)部(bù)器件(jiàn)如(rú)與(yǔ)門(mén)的(de)輸出(chū)
等。由(yóu)于(yú)線(xiàn)网(wǎng)類(lèi)型代(dài)表(biǎo)的(de)是(shì)物(wù)理連(lián)接線(xiàn),因(yīn)此(cǐ)其不(bù)存儲邏輯值,必須由(yóu)器件(jiàn)驅動(dòng)。通(tòng)常用(yòng)assign 進(jìn)行賦值, 如(rú) assign A = B ^ C。
wire 類(lèi)型定(dìng)義語(yǔ)法如(rú)下(xià):
wire [msb: lsb] wire1, wire2, . . .,wireN;
下(xià)面(miàn)对(duì)上(shàng)述情(qíng)況進(jìn)行舉例说(shuō)明(míng):
wire [3:0] Sat; // Sat为(wèi)4 位線(xiàn)型信(xìn)号(hào)
wire Cnt; //1 位線(xiàn)型信(xìn)号(hào)
wire [31:0] Kisp, Pisp, Lisp ;// Kisp, Pisp, Lisp 都是(shì)32位的(de)線(xiàn)型信(xìn)号(hào)。
4.3 寄存器類(lèi)型reg reg 是(shì)最(zuì)常用(yòng)的(de)寄存器類(lèi)型,寄存器類(lèi)型通(tòng)常用(yòng)于(yú)对(duì)存儲單元(yuán)的(de)描述,如(rú)D型觸發(fà)器、ROM 等。 寄存器類(lèi)型信(xìn)号(hào)的(de)特(tè)點(diǎn)是(shì)在(zài)某種(zhǒng)觸發(fà)機(jī)制下(xià)分(fēn)配了(le)一(yī)个(gè)值,在(zài)下(xià)一(yī)觸發(fà)機(jī)制到(dào)来(lái)之前(qián)保留原值。 但必須注意(yì)的(de)是(shì):reg 類(lèi)型的(de)變(biàn)量(liàng)不(bù)一(yī)定(dìng)是(shì)存儲單元(yuán), 如(rú)在(zài)always語(yǔ)句(jù)中(zhōng)進(jìn)行描述的(de)必須是(shì)用(yòng)reg 類(lèi)型的(de)變(biàn)量(liàng)。
reg 類(lèi)型定(dìng)義語(yǔ)法如(rú)下(xià):
reg [msb: lsb] reg1, reg2, . . . reg N;
例如(rú):
reg [3:0] Sat; // Sat为(wèi)4 位寄存器。
reg Cnt; //1 位寄存器。
reg [32:1] Kisp, Pisp, Lisp ; //不(bù)建議这(zhè)樣(yàng)定(dìng)義。
4.4 wire和(hé)reg的(de)區(qū)别 reg型信(xìn)号(hào)并不(bù)一(yī)定(dìng)生(shēng)成(chéng)寄存器。針(zhēn)对(duì)什麼(me)时(shí)候使用(yòng)wire類(lèi)型,什麼(me)时(shí)候用(yòng)reg類(lèi)型这(zhè)一(yī)問(wèn)題(tí), 笔(bǐ)者(zhě)總(zǒng)結出(chū)一(yī)套(tào)方(fāng)法:在(zài)本(běn)模块(kuài)中(zhōng)使用(yòng)always設計(jì)的(de)信(xìn)号(hào)都定(dìng)義为(wèi)reg型,其他(tā)信(xìn)号(hào)都定(dìng)義为(wèi)wire型。
上(shàng)述代(dài)碼中(zhōng),cnt1是(shì)用(yòng)always設計(jì)的(de),所(suǒ)以(yǐ)定(dìng)義为(wèi)reg型。 add_cnt1和(hé)end_cnt不(bù)是(shì)由(yóu)always産生(shēng)的(de),所(suǒ)以(yǐ)定(dìng)義为(wèi)wire型。
上(shàng)述代(dài)碼中(zhōng),信(xìn)号(hào)x是(shì)用(yòng)always設計(jì)的(de),所(suǒ)以(yǐ)要(yào)定(dìng)義为(wèi)reg型。 注意(yì):实際的(de)電(diàn)路(lù)中(zhōng)信(xìn)号(hào)x不(bù)是(shì)寄存器類(lèi)型,但仍然定(dìng)義为(wèi)reg型。
以(yǐ)上(shàng)是(shì)例化(huà)的(de)代(dài)碼,其中(zhōng)df是(shì)例化(huà)模块(kuài)的(de)輸出(chū)。 由(yóu)于(yú)df不(bù)是(shì)由(yóu)always産生(shēng)的(de),而(ér)是(shì)例化(huà)産生(shēng)的(de),因(yīn)此(cǐ)要(yào)定(dìng)義成(chéng)wire型。 |








