Verilog中的一些語法和技巧_第1頁
Verilog中的一些語法和技巧_第2頁
Verilog中的一些語法和技巧_第3頁
Verilog中的一些語法和技巧_第4頁
Verilog中的一些語法和技巧_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

、.、.3、RegXregreg4、在數(shù)據(jù)類型中?和Z均表示高阻態(tài)。5、Reg“always”regreg是并不一定總是這樣。6、VerilogMemoryregreg[n-1:0]存儲(chǔ)器名[m-1:0];7、在除法和取余的運(yùn)算中結(jié)果的符號(hào)和第一個(gè)操作數(shù)的符號(hào)位是相同的。8、不同長度的數(shù)據(jù)進(jìn)行運(yùn)算:兩個(gè)長度不同的數(shù)據(jù)進(jìn)行位運(yùn)算時(shí),系統(tǒng)會(huì)自動(dòng)0作數(shù)安慰進(jìn)行操作。9、===與!===和==與!==的區(qū)別:后者稱為邏輯等是運(yùn)算符,其結(jié)果是2xzxzx0.10、非阻塞和阻塞賦值方式:非阻塞賦值方式(如a<=b)上面語句所賦得變量值不能立即被下面語句所用(2)3(賦值語句執(zhí)行完后,塊才結(jié)束2b311、模塊的描述方式:(RTL為寄存器傳輸級(jí)描述)(1)“assign”連續(xù)賦值語句來實(shí)現(xiàn)。分為兩種a、顯式連續(xù)賦值語句;1PAGEPAGE10連線型變量類型[連線型變量為快]連線型變量名Assign#(延時(shí)量)連線型變量名=賦值表達(dá)式;顯式連續(xù)賦值語句包含了兩條語句;第一條是對(duì)連線型變量的進(jìn)行類型說明的說明語句;第二句是對(duì)這個(gè)已得到聲明的連線型變量進(jìn)行連續(xù)賦值語句。影視賦值語句:連線型變量類型(復(fù)制驅(qū)動(dòng)強(qiáng)度延時(shí)量連線性變量名=賦值表達(dá)式。隱式連續(xù)賦值語句是把連線性變量說明語句和連線AssignAssignreg行為描述方式:A、initialB、always0、結(jié)構(gòu)描述方式verilogverilogHDLAb、用用戶自定義元件UDPcd關(guān)級(jí)元件混合型描述11、連續(xù)賦值語句與過程賦值語句的區(qū)別:veriloga、從語法上來看,連續(xù)賦值語句由“assign”關(guān)鍵詞來表示,而過程賦值語句中則不包含b、連續(xù)賦值語句中左側(cè)的被賦值數(shù)據(jù)類型必須是線網(wǎng)型數(shù)據(jù),而過程賦值語句中的被賦值數(shù)據(jù)類型則必須是寄存器類型的變量c、連續(xù)賦值語句不能出現(xiàn)在過程快(initialalways)而過程賦值語句則只能出現(xiàn)在過程快中d、連續(xù)復(fù)制語句主要用來對(duì)組合邏輯電路進(jìn)行建模以及對(duì)線網(wǎng)型數(shù)據(jù)間的連接進(jìn)行描述,而過程賦值語句主要用來對(duì)時(shí)序邏輯電路進(jìn)行行為描述e(值上,這也是我們有時(shí)會(huì)使用“連續(xù)驅(qū)動(dòng)”這個(gè)術(shù)語的原因,而在過程賦值語變量的取值不再受到賦值表達(dá)式的影響.1、間隔符和注釋符:verilogHDL(\b、tab(\t行符(\n)以及換頁符。注釋符有2種://和/*……….*/后為多行注釋符用于對(duì)多行語句注釋;前者為單行注釋符,只對(duì)注釋符所在的行有效。13數(shù)之間,他們對(duì)數(shù)值的大小沒有任何的影響,只是為了提高可讀性。verilogbB、十進(jìn)制dD、八進(jìn)制oO六進(jìn)制(hH)格式:<size>’<base-format><number> <size>用于指定所表示數(shù)的位寬,在數(shù)值的表示中式可以缺省的.位寬小于數(shù)值的實(shí)際位數(shù)時(shí),相應(yīng)的高位部分被忽略;當(dāng)位寬大于實(shí)際的位數(shù),且數(shù)值的最高位是0或者1時(shí),相應(yīng)的高位補(bǔ)零當(dāng)位寬高于數(shù)值的實(shí)際位數(shù)但數(shù)值的最高位是x或者z時(shí)相應(yīng)的高位部分補(bǔ)x或者z。二進(jìn)制中的x或者z表示一位處于x或者z,八進(jìn)制的表示三位,十六進(jìn)制的表示4位。14、實(shí)型數(shù)及其表示方法VerilogHDL進(jìn)制數(shù)格式,小數(shù)點(diǎn)兩邊必須有數(shù)字,否則為非法字符。如3.8E10 2.1e-9;15、字符串寫。如字符串用作verilogHDL8ASCII8ASCIIverilog最大長度。需要注意的是,verilogHDL大于字符串的實(shí)際長度,則字符串變量的高位補(bǔ)零。Reg[8*12:1]stringvarInitialBegin string=“helloEnd特殊字符:\n換行符\ttab鍵 \\符號(hào)\\*符號(hào)*\dddASCII16、數(shù)據(jù)類型01z,中X,z物理類型數(shù)據(jù)分為連線型和寄存器型亮中連線型數(shù)據(jù)對(duì)應(yīng)的是硬件電路的物理信號(hào)連線,沒有電荷的保持作用(除外。連線型數(shù)據(jù)必須有去動(dòng)員驅(qū)動(dòng),有兩種方式對(duì)他進(jìn)行驅(qū)動(dòng):一種是結(jié)構(gòu)assign連線型數(shù)據(jù)Wire,triWor,triorWand,triandTri1

功能描述兩種常見類型多重驅(qū)動(dòng)時(shí),具有線或特性的連線型多重驅(qū)動(dòng)時(shí),具有線與特性的連線型上拉電阻Tri0Tri0下拉電阻Supp.ly11Supply00VerilogHDL中的連線型數(shù)據(jù)及其功能描述regx在過程語句后面的過程塊語句中。ROM,RAM件進(jìn)行建模。數(shù)組中的每一個(gè)寄存器均稱為一個(gè)元素,用不同的索引來尋址。Reg[16:1]mem[5:1]165、抽象數(shù)據(jù)類項(xiàng)有整型integer 時(shí)間型time實(shí)型real參數(shù)性parameter17、運(yùn)算符*/xx。18~對(duì)于3==2)1;而后者對(duì)為進(jìn)行操作~(、0、1、0)=1101;19后將運(yùn)算結(jié)果與第三位進(jìn)行歸約運(yùn)算,以此類推,直到最后一位。格式(&b)19、移位運(yùn)算?!不會(huì)20、條件運(yùn)算符:verilogHDL1,則算子返回第二個(gè)操作數(shù);如第一個(gè)操0,表給出的邏輯,將第二個(gè)和第三個(gè)操作數(shù)按位比較得到結(jié)果。:01XZ00XXX1X1XXXXXXXZXXXX21VerilogHDL復(fù)制運(yùn)算符{{}}將一個(gè)表達(dá)式放入雙重花括號(hào)內(nèi),而復(fù)制因子放在第一個(gè)括號(hào)內(nèi),用來指定復(fù)制的次數(shù)。運(yùn)算符[]()~!&|~&~|^~^^~+-{}*/%+-<< >>> >= < >===!=&…^ ^~ ~^|&&||

描述為選擇或部分選擇圓括號(hào)歸約運(yùn)算符鏈接運(yùn)算符算術(shù)運(yùn)算符雙目運(yùn)算符以為運(yùn)算符關(guān)系運(yùn)算符相等運(yùn)算符按位與按位異或或異或非按位或邏輯與邏輯或::條件表達(dá)式二、模塊的基本結(jié)構(gòu)1Module<模塊名>(模塊端口說明參數(shù)定義(可選數(shù)據(jù)類型說明過程快(initialalways連續(xù)賦值語句任務(wù)定義tast(可選)函數(shù)定義function(可選)沒有進(jìn)行數(shù)據(jù)類型說明,則他的類型缺省為連線類型(wire。必須出現(xiàn)在端口和數(shù)據(jù)被引用之前。2(1)在行為描述模塊中出現(xiàn)的每個(gè)過程塊initial塊)都代表一個(gè)獨(dú)立的進(jìn)程。0每一個(gè)過程塊內(nèi)部的多條語句的執(zhí)行方式可以是順序執(zhí)行的(當(dāng)快定義語begin——end,也可以是并行執(zhí)行的(塊定義語句是時(shí)的情況。alwaysinitial3、initialInitial語句塊而語句塊的格式為:<塊定義語句>:<塊名>塊內(nèi)局部變量;時(shí)間控制1 行為語句;時(shí)間控制n 行為語句;<塊定義語句2>其中:塊定義語句刻意是“beginend”語句組,或者時(shí)“fork,join”語句組。disable句中斷。部變量只能是寄存器類數(shù)據(jù)類型。行為語句可以是如下語句中的一種過程賦值語(阻塞型或非阻塞型過程賦值語句)過程連續(xù)賦值語句(assign/deassign或force/release語句組)if條件分支語句case條件分支語句 循環(huán)控制語(foreverrepeatwhilefor循環(huán)語句) wait等待語句 disable終端語句 事件觸發(fā)語句(event——trigger) 任務(wù)調(diào)用語句(用戶自定義的任務(wù)或系統(tǒng)任務(wù)。Initialinitial過程塊常常用來對(duì)只需執(zhí)行一次的過程進(jìn)行描述,例如刻意用來寄存器的初始化!4、always過程塊:Alwaysalways”Always@(敏感事件列表)語句塊其中語句塊的格式為:<塊定義語句1 這里一般是begin或者fork>:<塊名塊內(nèi)局部變量說明;時(shí)間控制1 行為語句1;。。。時(shí)間控制n 行為語句n;<塊定義語句2 這里一般是end>說明:@(敏感事件列表)是可選項(xiàng),帶有敏感事件列表的語句塊被稱為“由事OR他的塊內(nèi)定義語句也分為串行塊和并行塊。5alwaysinitialalwaysalways為觸發(fā)條件始終被滿足。6alwaysalwaysalwaysalways列入敏感事件列表。7、串行塊:begin:<塊名>快內(nèi)局部變量時(shí)間控制1 行為語句1;。。。時(shí)間控制n 行為語句Endreginteger型變量聲明語句。他的語句是順序執(zhí)行的。8、并行塊和串行塊的格式是相同的,只是它的關(guān)鍵字是fork-join,而且他的語句是并行執(zhí)行的。而且并行塊和串行塊是可以嵌套使用的。三、行為描述:時(shí)間控制和賦值控制1、時(shí)間控制可以用來對(duì)過程塊中各條語句的執(zhí)行時(shí)間進(jìn)行控制,時(shí)間控制分為兩類:、延時(shí)控制:為行為語句的執(zhí)行指定一個(gè)延時(shí)時(shí)間的控制方式、事件控制:為行為語句的執(zhí)行指定觸發(fā)事件的時(shí)間控制方式其中時(shí)事件控制方式又可以分為兩類:邊沿觸發(fā)事件控制和電平敏感事件控制2、延時(shí)控制格式為:#<延遲時(shí)間>行為語句;或者#<延遲時(shí)間>;是以多少個(gè)仿真時(shí)間單位的形式給出的,可以是一個(gè)立即數(shù)、變量和表達(dá)式。xz值的二進(jìn)制補(bǔ)碼值作為實(shí)際的延時(shí)量。3、邊沿觸發(fā)控制分為四種格式:第一種:@<事件表達(dá)式> 行為語句第二種:@<事件表達(dá)式>;第三種1>or<2>。or<@(<1>or<2>。or<n>;其中事件表達(dá)式有三種形式:<信號(hào)名>Posedge<信號(hào)名>Negedge<信號(hào)名>信號(hào)名可以是任意數(shù)據(jù)類型的標(biāo)量或矢量。輯變化(不論是整條便還是負(fù)跳變。它是信號(hào)出了保持穩(wěn)定太意外的任意一種變化過程。第二種表示正跳變可以是下列中的一種:0——x變化過程。第二種表示正跳變可以是下列中的一種:0——x0——z0——1z——1第三種表示負(fù)跳變可以是寫列中的一種:1——x1——z1——0Z——0.4、用always過程塊實(shí)現(xiàn)組合邏輯功能x——0(1)事件表達(dá)式內(nèi)不能能包含“posedge”和“negedge”關(guān)鍵詞,也就是說敏感事件列表中的事件表達(dá)式智能是前面所述的第一種現(xiàn)在敏感時(shí)間列表中。5、電平敏感事件控制(wait語句)是某一個(gè)指定的條件為真。有三種形式:第一種:wait(條件表達(dá)式)語句塊;第二種:wait(條件表達(dá)式) 行為語句第三種wait(條件表達(dá)式;6(initial過程塊(現(xiàn)連續(xù)賦值語句,同時(shí)過程賦值語句也只能用在過程塊中。過程賦值語句的基本格式為:<被賦值變量><賦值操作符><賦值表達(dá)式>性賦值類型。7、過程賦值語句智能對(duì)于對(duì)寄存器類的變量(reg、integer、real、time)進(jìn)行賦值8、過程賦值的兩種延時(shí)方式:予左端被賦變量。例如 #5 a=b;相當(dāng)于延時(shí)5在把b的值賦給a。、內(nèi)部時(shí)間控制當(dāng)賦值語句中的時(shí)間控制部分出現(xiàn)在“賦值操作符”和“賦值表達(dá)式”之間這種情況下的時(shí)間控制成為“內(nèi)部時(shí)間控制”。格式為:a=#5b;先計(jì)算b的值,當(dāng)延遲時(shí)間過后把b的值賦給a??梢姡趦?nèi)部時(shí)間控制方式下,時(shí)間控制所“控制”的是賦值表達(dá)式被計(jì)算時(shí)刻到賦值操作被執(zhí)行時(shí)刻之間的時(shí)間差,賦值表達(dá)式被計(jì)算時(shí)刻和賦值變量被復(fù)制的時(shí)刻是不同的,他們之間的時(shí)間差是有時(shí)間控制部分決定的。abbab格式例子:b=#5a;c=@(posedgeclk)a;d=wait(enable)a;9#0a=b不具有延時(shí)控制的賦值語句“a=b”的執(zhí)行過程是很相似的;在語句開始執(zhí)行后baa=b”內(nèi)的表達(dá)式計(jì)算和變量賦值操作則是在賦值開始執(zhí)行后立即進(jìn)行的,不需要等待同一時(shí)刻的其他操作完成后才進(jìn)行。如initialBeginA=0;B=0;EndInitialBegin#0#0b=1;End上了顯示零延時(shí)控制a,b0,0a,b1,a、1。10、阻塞和非阻塞賦值:阻塞型————符號(hào)為“=” 非阻塞型——符號(hào)為“<=”區(qū)別:阻塞型在串行快中的個(gè)跳阻塞型過程賦值語句將以他們?cè)陧樞蚩熘械南群笈帕写涡蛞来蔚玫綀?zhí)行;而并行塊中的各條阻塞型過程賦值語句則是同事得到執(zhí)行的。阻塞性過程賦值語句的執(zhí)行過程是:先計(jì)算右端賦值表達(dá)式的取值,然后立即將計(jì)算結(jié)果賦值給“=”左端的被復(fù)制變量。值操作執(zhí)行完畢后下一條語句才能開始執(zhí)行。也就是說“=”時(shí),語句是一條一條執(zhí)行的,第一條語句執(zhí)行完畢后,第二條語句才開始執(zhí)行。begin-end畢之前,下一條語句也是可以執(zhí)行的。12、連續(xù)賦值語句:主要對(duì)組合邏輯電路進(jìn)行描述。連線性賦值語句智能用來對(duì)連星星變量進(jìn)行驅(qū)動(dòng)(賦值量進(jìn)行賦值他可以采用如下兩種格式:、顯示連續(xù)復(fù)制語句:連線型變量類型[連線型變量位寬]連線型變量名;Assign#(延時(shí)量)連線型變量名=賦值表達(dá)式;、隱式連續(xù)賦值語句:連線型變量類型(賦值驅(qū)動(dòng)強(qiáng)度)[連線型變量位寬]#(延時(shí)量)連線型變量名=賦值表達(dá)式;在以上兩種格式中trireg線型數(shù)據(jù)類型。驅(qū)動(dòng)強(qiáng)度默認(rèn)為(strong1,weak0)即賦1值時(shí)的驅(qū)動(dòng)強(qiáng)度為strong,賦0值weakwire(weak1,strong0)a=b&c;“延時(shí)量”也是可選的格式如下:#(delay1,delay2,delay3)delay1、2、3“delay1”表示連線性變量轉(zhuǎn)移到“1”時(shí)的延時(shí)量(稱為上升延時(shí)delay2delay3阻z”狀態(tài)的延時(shí)稱之為關(guān)斷延時(shí)。在實(shí)際使用中上三個(gè)值是可以省略其中一個(gè)或者兩個(gè)的:如值給出了一個(gè)延時(shí)延時(shí)值為零。同時(shí)也可以包含任何操作符。13、 在實(shí)際中,連續(xù)賦值語句的賦值目標(biāo)可以是如下幾種:、標(biāo)量連線型變Wirea,b;Assigna=b;、向量連線性變Wire[7:0]a,b;Assigna=b;、向量連線型中變量的一Wire[7:0]a,b;Assigna[3]=b[3];、向量連線性變量中的幾Wire[7:0]a,b;Assigna[3:2]=b[3:2];、上面幾種類型的任意憑借運(yùn)算結(jié)Wirea,c;Wire[2:1]b;Assign{a,c}=b;在需要對(duì)多個(gè)連線型變量進(jìn)行連續(xù)賦值時(shí)還可以采用下列形勢(shì)的連續(xù)復(fù)制語句,他可以實(shí)現(xiàn)對(duì)多個(gè)變量進(jìn)行連續(xù)賦值。AssignC=d;D=f;就等同于Assigna=b;Assignc=d;Assignd=f;連續(xù)賦值語句是對(duì)連線型變量進(jìn)行連續(xù)的驅(qū)動(dòng);14(而寄存器型變量只奧在某一時(shí)刻得到一次過程賦值后就能一直保持其取值,弱一個(gè)連線性變量沒有得到認(rèn)可連續(xù)驅(qū)動(dòng)則它的取值x。15連續(xù)賦值語句、過程塊、模塊實(shí)例或原語實(shí)例時(shí),他們之間都是并行執(zhí)行的。.16在過程塊內(nèi)對(duì)變量進(jìn)行連續(xù)賦值的。過程連續(xù)賦值語句和連續(xù)賦值語句的不同之處在于:、過程連續(xù)賦值語句智能用在過程塊(initialalways)中,而、過程連續(xù)賦值語句刻意對(duì)寄存器類變量進(jìn)行連續(xù)復(fù)制,他的賦值目標(biāo)不可以是變量的某一位或者某幾位。值表達(dá)式”內(nèi)操作數(shù)的任何變化都會(huì)引起被賦值變量取值的更新,直到對(duì)該變量執(zhí)行了“撤銷過程連續(xù)賦值操作”。17、assigndeassignassigndeassign器類變量的連續(xù)復(fù)制,而后者則是一條撤連續(xù)賦值的語句。Assign語句的使用語法是:Assign其中“寄存器類變量”致命了連續(xù)賦值操作的目標(biāo)變量,熱“賦值表達(dá)式”則致命了連續(xù)賦值的“驅(qū)動(dòng)信號(hào)”。assign進(jìn)入被連續(xù)驅(qū)動(dòng)的狀態(tài)。他的優(yōu)先級(jí)是高于普通過程賦值語句的。如果有2assignassignassignDeassign的使用語法:Deassign<寄存器變量>;assign由普通的過程賦值語句進(jìn)行賦值操作。deassigndeassign18、forcereleaseingforce先級(jí)高于“assignForce語句的語法如下:Force<寄存器或連線性變量>=<賦值表達(dá)式>forceforce態(tài),這是將忽略其他較低優(yōu)先級(jí)的賦值語句(assignrelease“語句來釋放對(duì)這個(gè)寄存器變量的連續(xù)賦值為止。ForceReleasedeassignforce行為描述:高級(jí)程序語句、函數(shù)和任務(wù)1if-eksecase2、If-else、if(<條件表達(dá)式>)語句或語句塊;其中條件表達(dá)式中1代表真,0、z、x代表假。沒else語句。、if(<條件表達(dá)式>)語句或語句塊Else 語句或語句塊、if(<條件表達(dá)式>)1;Elseif(<條件表達(dá)式>)Else if(<條件表達(dá)式>)語句或語句塊Else 語句或語句塊n+1;3、case分支控制語句case分支語句有case、casez、casex三種形式。1、caseCase(<控制表達(dá)式>)<分支項(xiàng)表達(dá)式>1:1;<分支項(xiàng)表達(dá)式>2:2;<分支項(xiàng)表達(dá)式>n:Default:語句塊n+1;Endcase式通常是一些常量表達(dá)式。將在這些槍狂下需要執(zhí)行的語句塊放在這幾個(gè)分支項(xiàng)表達(dá)式的后面。例如Case(op_code)2’b00:out=a|b;2’b01,2’b10,2’b11:out=a&b;Default:out=0;Endcase4casexcasez:casezcasex都視為不比關(guān)心的情況。5、循環(huán)控制語句:forever、repeat、while、for循環(huán)語句。6Forever分將不斷重復(fù)的執(zhí)行。格式如下:Forever語句或語句塊;ForeverinitialBeginForever#25clk=~clk;End產(chǎn)生一個(gè)周期為50的時(shí)鐘波形。forever語句塊中使用終止語句(disable)來實(shí)現(xiàn)這一目的。如:begin:FOREVER_PARTforeverbegincount=count+1;if(count>=200)disable#25clk=~clk;EndEnd7、repeat循環(huán)語句repeat循環(huán)語句實(shí)現(xiàn)的是一種循環(huán)次數(shù)預(yù)先指定的循環(huán),這中循環(huán)語句內(nèi)的循環(huán)體部分被重復(fù)執(zhí)行指定的次數(shù)。格式:repeat(<循環(huán)次數(shù)表達(dá)式>) 語句或者語句塊;其中循環(huán)此時(shí)表達(dá)式可以是整數(shù)、變量或一個(gè)數(shù)值表達(dá)式。Data={data<<1,temp}用來實(shí)現(xiàn)移位操作。Tempdata8、whilewhile為“真”時(shí)才會(huì)重復(fù)執(zhí)行循環(huán)體,否則不執(zhí)行循環(huán)體。格式如下:while(<條件表達(dá)式>)語句或語句塊;句的執(zhí)行。9、for循環(huán)語句while,for定的條件表達(dá)式成立時(shí)才進(jìn)行循環(huán)。格式:For(<語句一>;<條件表達(dá)式>;<語句二>)循環(huán)體語句或語句塊;作和增值操作;分一下幾步:、執(zhí)行語句一。for3若“條件表達(dá)式”的取值不為真,則不再執(zhí)行循環(huán)體部分,循環(huán)過程結(jié)束,退出for循環(huán)語句的執(zhí)行。、執(zhí)行語句二然后轉(zhuǎn)到(2)繼續(xù)執(zhí)行。10、 任務(wù)調(diào)試,引入任務(wù)和函數(shù)還可以簡化程序的結(jié)構(gòu),增強(qiáng)代碼的易讀性。任務(wù)的定義:Task端口與類型說明局部變量說明Begin行為語句EndEndtask端口列表。在定義任務(wù)的時(shí)候,要注意以下幾點(diǎn):、在第一行“task”語句中不能列出端口名稱表;、在任務(wù)定義結(jié)構(gòu)中的“行為語句”部分可以有延時(shí)語句、敏感事件控制、在一個(gè)任務(wù)中刻意條用其他的任務(wù)或者函數(shù),也可以調(diào)用該任務(wù)本身。、在任務(wù)定義結(jié)構(gòu)內(nèi)不允許出現(xiàn)過程塊。任務(wù)的調(diào)用格式:<任務(wù)名>(1、2調(diào)用任務(wù)時(shí)注意:、任務(wù)調(diào)用語句只能出現(xiàn)在過程塊中。、任務(wù)調(diào)用語句就像一條普通的行為語句那樣得到處理。11、函數(shù)函數(shù)定義的語法如下:Function<返回值類型或返回值寬度><函數(shù)名>;Begin行為語句;EndEndfunction寬度進(jìn)行說明:“[msb:lsb]”這種形式說明函數(shù)名所代表的返回?cái)?shù)據(jù)變量是一個(gè)多為“[msb:lsb]”指定。“integer“real”如果這項(xiàng)缺省則認(rèn)為函數(shù)名代表的變量是一個(gè)一位的寄存器。在進(jìn)行函數(shù)定義是必須注意:、與任務(wù)一樣,函數(shù)定義結(jié)構(gòu)智能出現(xiàn)在模塊中,而不能出現(xiàn)在過程塊中。、函數(shù)至少需要一個(gè)輸入端口。、函數(shù)不能有任何類型的輸出端口和雙向端口。、在函數(shù)定義結(jié)構(gòu)中的行為語句部分內(nèi)不能出現(xiàn)任何類型的時(shí)間控制描述disable、與任務(wù)定義一樣,函數(shù)定義結(jié)構(gòu)內(nèi)部不能出現(xiàn)過程塊。、在一個(gè)函數(shù)內(nèi)可以對(duì)其它函數(shù)進(jìn)行調(diào)用,但是函數(shù)不能調(diào)用其他的任務(wù)。、在第一行“function”中不能出現(xiàn)端口名列表函數(shù)調(diào)用的格式:<函數(shù)名>(<輸入表達(dá)式1><輸入表達(dá)式2><><輸入表達(dá)式n>)M在函數(shù)定義結(jié)構(gòu)中排列順序及類型保持一致。注意以下兩點(diǎn):out=getbyte(input、number;在這個(gè)函數(shù)語句中,函數(shù)調(diào)用部分“getbyte(input、number”被看做是一個(gè)條語句出現(xiàn)也就是說“getbyte(input、number”是非法的。assignassignnet=getbyte(input、number;第四章:用戶自定義元件(UDP)UDP的格式如下:Primitive2><輸出端口類型說明(output;輸入端口類型說明(input;輸出端寄存器變量說明元件初始狀態(tài)說明Table<table1><table2><tableEndtableEndprimitive(2)、只有一個(gè)輸出端口并且改輸出端口并且改輸出端口必須是端口說明表中的UDPUDP9UDP10(標(biāo)量。UDP0、1、xz。、由關(guān)鍵字“table”和“endtable”tableUDP元件定義模塊內(nèi)的一個(gè)輸出真值表。在table01xzUDPtableTableUDPUDPtable上。例子;Primitivemux4_1(out,in1,in2,in3,in4,ctrl1,ctr2);Outputout;Inputin1,in2,in3,in4,ctrl1,ctr2;Table//in1 in2 in3 in4 ctrl1 ctrl2: out注釋行用于保證表項(xiàng)中各項(xiàng)的正確//排列順序0???00:01???00:10??00:01??00:1?0?00:0?1?00:1?0?00:0??100:1EndtableEndprimitiveUDP2UDP對(duì)于組合邏輯電路UDP元件的描述相當(dāng)于直接把電路的邏輯真值表搬到UDP藐視的table表中。組合邏輯電路UDP定義時(shí)的table的真值表為:12n1table各個(gè)輸入輸出邏輯值智能是0、1、x和?中的一個(gè),不能去高阻態(tài);primitivetabletable像中的排列順序必須和他們?cè)凇皃rimivite”定義語句中端口表象內(nèi)的排列tabletablex。3、時(shí)序邏輯對(duì)時(shí)序邏輯UDP進(jìn)行定義時(shí)的table表項(xiàng)格式為:<輸入1邏輯值><輸入2邏輯值>。<輸入n邏輯值>:<內(nèi)部狀態(tài)>:<輸出輯值> 輸入邏輯值要用空格分開。ing端口說明變?yōu)榧拇嫫黝愋?。他分為電平觸發(fā)和邊沿觸發(fā)兩種:電平觸發(fā)的UDPD_inClkCurrent_stateNext_state0001x01001x101x11101x100PrimitiveOutputq;Regq;latch(q,clk,d_in)Inputclk,d_in;InitialTable//clkd_in:current_state:next_state01:?:1;00:?:0;1?:?:-;EndtableEndprimitiveTUDPPrimitivet_trrgger(q,clk,t_in);Outputq;Regq;Inputt_in,clk;Table//clk t_in:state:q(01) 0:?:-;(01) 1:?:1;(01) 1:?:0;(10) ?:?:-;(0x) 0:?:-;(1x) 0:?:-;(??):?:-;EndtableEndprimitive其中(??)表示0、1、x中的一個(gè)狀態(tài)跳到其中的一個(gè)狀態(tài)。Table表項(xiàng)定義說明縮記符號(hào)0邏輯0用來描述輸入輸出信號(hào)1邏輯1用來藐視輸入輸出信號(hào)Xx為不定態(tài)用來描述輸入輸出信號(hào)-輸出狀態(tài)保持不變只能用來描述時(shí)序邏輯電路的UDP出狀態(tài)的輸01x(任意態(tài))不能用來對(duì)輸出進(jìn)行描述Bb01不能用來對(duì)輸出進(jìn)行描述(VW)輸入從邏輯值v變化到邏輯值w不能用來對(duì)輸出進(jìn)行描述,其中的是1、0、x、?中的一個(gè)v,wRr等價(jià)于(01)輸入上升跳變不能用來對(duì)輸出進(jìn)行描述Ff等價(jià)于(10)輸入上升跳變不能用來對(duì)輸出進(jìn)行描述Pp(01(0x(x1中的任意一個(gè)表示輸入端包含x態(tài)的正跳變不能用來對(duì)輸出進(jìn)行描述Nn(10(1x(x0任意一個(gè)表示輸入端包含x態(tài)的負(fù)跳變不能用來對(duì)輸出進(jìn)行描述*等價(jià)于(??)表示輸入端的任意變化不能用來對(duì)輸出進(jìn)行描述第八章:結(jié)構(gòu)描述在verilog中,一個(gè)模塊可以對(duì)其它的模塊進(jìn)行調(diào)用(化(實(shí)例語句1verilog2、Module<聲明語句模塊組項(xiàng)SpecifyEndmodule其中:聲明部分用來對(duì)模塊端口類型(輸入、輸出、雙向、模塊內(nèi)部變量(存器、連線和存儲(chǔ)器類型)以及模塊悲慘是進(jìn)行說明。模塊組項(xiàng)部分是模塊功能的描述題部分,用來對(duì)模塊的功能特點(diǎn)進(jìn)行描述,在這一部分可以出現(xiàn)具有行為描述性質(zhì)的語句結(jié)構(gòu)(initialalways,也可以出現(xiàn)結(jié)構(gòu)描述項(xiàng)語句(模塊實(shí)例語句、門及元件3、對(duì)上述的具體說明:端口的分隱式端口名形式和顯式端口名形式兩種形式隱式端口名形式:(<端口表達(dá)式1><端口表達(dá)式2>…<端口表達(dá)式n>)一位或某幾位,或者是以上三種組合。顯式端口名形式:(1>(<2>(<n>))端口聲明的作用對(duì)象智能是模塊端口的內(nèi)部變量,而不能是端口名。4、模塊

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論