版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
VerilogHDL基礎(chǔ)
第一部分初級篇第一講Verilog的基本概念2021/10/1012025/6/162硬件描述語言HDL(HardwareDescriptionLanguage)是硬件設(shè)計(jì)人員和電子設(shè)計(jì)自動化(EDA)工具之間的接口,其主要目的是用來編寫設(shè)計(jì)文件,建立電子系統(tǒng)行為級的仿真模型。1.1硬件描述語言HDL2021/10/1022025/6/1631.1硬件描述語言HDL硬件描述語言利用計(jì)算機(jī)的巨大能力對用HDL建模的復(fù)雜數(shù)字邏輯進(jìn)行仿真,然后再自動綜合以生成符合要求且在電路結(jié)構(gòu)上可以實(shí)現(xiàn)的數(shù)字邏輯網(wǎng)表(Netlist),根據(jù)網(wǎng)表和某種工藝的器件自動生成具體電路然后生成該工藝條件下這種具體電路的延時模型。仿真驗(yàn)證無誤后用于制造ASIC芯片或?qū)懭隒PLD和FPGA器件中。2021/10/1032025/6/164什么是硬件描述語言具有特殊結(jié)構(gòu)能夠?qū)τ布壿嬰娐返墓δ苓M(jìn)行描述的一種高級編程語言這種特殊結(jié)構(gòu)能夠:描述電路的連接描述電路的功能在不同抽象級上描述電路描述電路的時序表達(dá)具有并行性HDL主要有兩種:Verilog和VHDLVerilog起源于C語言,因此非常類似于C語言,容易掌握VHDL格式嚴(yán)謹(jǐn)VHDL出現(xiàn)較晚,但標(biāo)準(zhǔn)化早。IEEE1706-1985標(biāo)準(zhǔn)。2021/10/1042025/6/165為什么要使用硬件描述語言電路的邏輯功能容易理解;便于計(jì)算機(jī)對邏輯進(jìn)行分析處理;把邏輯設(shè)計(jì)與具體電路的實(shí)現(xiàn)分成兩個獨(dú)立的階段來操作;邏輯設(shè)計(jì)與實(shí)現(xiàn)的工藝無關(guān);邏輯設(shè)計(jì)的資源積累可以重復(fù)利用;可以由多人共同更好更快地設(shè)計(jì)非常復(fù)雜的邏輯電路(幾十萬門以上的邏輯系統(tǒng))。2021/10/1052025/6/1661.2VerilogHDL的歷史1.2.1什么是VerilogHDL
VerilogHDL是硬件描述語言的一種,用于數(shù)字電子系統(tǒng)設(shè)計(jì)。設(shè)計(jì)者可用它進(jìn)行各種級別的邏輯設(shè)計(jì),可用它進(jìn)行數(shù)字邏輯系統(tǒng)的仿真驗(yàn)證、時序分析、邏輯綜合。它是目前應(yīng)用最廣泛的一種硬件描述語言。
2021/10/1062025/6/1671.2VerilogHDL的歷史1.2.2VerilogHDL的產(chǎn)生及發(fā)展VerilogHDL是在1983年由GDA(GateWayDesignAutomation)公司的PhilMoorby所創(chuàng)。PhiMoorby后來成為Verilog-XL的主要設(shè)計(jì)者和Cadence公司的第一個合伙人。在1984~1985年間,Moorby設(shè)計(jì)出了第一個Verilog-XL的仿真器。1986年,Moorby提出了用于快速門級仿真的XL算法。1990年,Cadence公司收購了GDA公司1991年,Cadence公司公開發(fā)表Verilog語言,成立了OVI(OpenVerilogInternational)組織來負(fù)責(zé)VerilogHDL語言的發(fā)展。1995年制定了VerilogHDL的IEEE標(biāo)準(zhǔn),即IEEE1364。2021/10/1072025/6/1681.2VerilogHDL的歷史2021/10/1082025/6/169VHDL
-比VerilogHDL早幾年成為IEEE標(biāo)準(zhǔn);
-語法/結(jié)構(gòu)比較嚴(yán)格,因而編寫出的模塊風(fēng)格比較清晰;-比較適合由較多的設(shè)計(jì)人員合作完成的特大型項(xiàng)目(一百萬門以上)。1.3VerilogHDL和VHDL的比較2021/10/1092025/6/1610VerilogHDL
-較多的第三方工具的支持
-語法結(jié)構(gòu)比VHDL簡單-學(xué)習(xí)起來比VHDL容易-仿真工具比較好使-測試激勵模塊容易編寫1.3VerilogHDL和VHDL的比較2021/10/10102025/6/16111.3VerilogHDL和VHDL的比較2021/10/10112025/6/16121.4Verilog目前的應(yīng)用情況和適用的設(shè)計(jì)Verilog的主要應(yīng)用包括:ASIC和FPGA工程師編寫可綜合的RTL代碼高抽象級系統(tǒng)仿真進(jìn)行系統(tǒng)結(jié)構(gòu)開發(fā)測試工程師用于編寫各種層次的測試程序用于ASIC和FPGA單元或更高層次的模塊的模型開發(fā)2021/10/10122025/6/16131.4Verilog目前的應(yīng)用情況和適用的設(shè)計(jì)
Verilog
較為適合系統(tǒng)級(System)、算法級(Alogrithem)、寄存器傳輸級(RTL)、邏輯(Logic)、門級(Gate)和電路開關(guān)級(Switch)的設(shè)計(jì),而對于特大型(千萬門級以上)的系統(tǒng)級(System)設(shè)計(jì),則VHDL更為合適。2021/10/10132025/6/16141.5采用VerilogHDL設(shè)計(jì)復(fù)雜數(shù)字電路的優(yōu)點(diǎn)1.5.1傳統(tǒng)設(shè)計(jì)方法——電路原理圖輸入法
采用電路原理圖輸入法進(jìn)行設(shè)計(jì),周期長、需要專門的設(shè)計(jì)工具、需手工布線等。這種低水平的設(shè)計(jì)方法大大延長了設(shè)計(jì)周期。2021/10/10142025/6/1615
采用Verilog輸入法,可以很容易地把完成的設(shè)計(jì)移植到不同廠家的不同芯片中去,并在不同規(guī)模應(yīng)用時可以較容易地作修改。采用Verilog輸入法最大的優(yōu)點(diǎn)是其與工藝無關(guān)性。實(shí)際上這是利用了計(jì)算機(jī)的巨大能力并在EDA工具幫助下,把邏輯驗(yàn)證與具體工藝庫匹配、布線即時延計(jì)算分成不同的階段來實(shí)現(xiàn),從而減輕了人們的繁瑣勞動。1.5.2VerilogHDL設(shè)計(jì)法與傳統(tǒng)的電路原理圖輸入法的比較2021/10/10152025/6/16161.5采用VerilogHDL設(shè)計(jì)
復(fù)雜數(shù)字電路的優(yōu)點(diǎn)
1.5.3Verilog的標(biāo)準(zhǔn)化與軟核的重用
Verilog是在1983年由GDA公司首先開發(fā)成功的,經(jīng)過諸多改進(jìn),于1995年11月正式被批準(zhǔn)為VerilogIEEE1363-1995標(biāo)準(zhǔn),又于2001年3月在原標(biāo)準(zhǔn)的基礎(chǔ)上經(jīng)過改進(jìn)和補(bǔ)充推出VerilogIEEE1364-2001新標(biāo)準(zhǔn)。由于VerilogHDL設(shè)計(jì)方法與工藝無關(guān)性,因而大大提高了Verilog模型的可重用性。我們把功能經(jīng)過驗(yàn)證的、可綜合的、實(shí)現(xiàn)后電路結(jié)構(gòu)總門數(shù)在5000門以上的VerilogHDL模型稱之為“軟核”(Softcore),而把由軟核構(gòu)成的器件成為虛擬器件。利用軟核和虛擬器件的可重復(fù)利用的特性就可大大縮短設(shè)計(jì)周期,加快了復(fù)雜電路的設(shè)計(jì)。2021/10/10162025/6/16171.5.4軟核、固核和硬核的概念以及它們的重用
顯而易見,在具體實(shí)現(xiàn)手段和工藝技術(shù)尚未確定的邏輯設(shè)計(jì)階段,軟核具有最大的靈活性。而近年來電路實(shí)現(xiàn)工藝技術(shù)的發(fā)展是相當(dāng)迅速的,為了邏輯電路設(shè)計(jì)成果的積累,和更快更好地設(shè)計(jì)更大規(guī)模的電路,發(fā)展軟核的設(shè)計(jì)和推廣軟核的重用技術(shù)是非常有必要的。
把在某一種專用半導(dǎo)體集成電路工藝的(ASIC)器件上實(shí)現(xiàn)的經(jīng)驗(yàn)證是正確的總門數(shù)在5000門以上的電路結(jié)構(gòu)掩膜,稱之為“硬核”。
把在某一種現(xiàn)場可編程門陣列(FPGA)器件上實(shí)現(xiàn)的,經(jīng)驗(yàn)證是正確的總門數(shù)在5000門以上電路結(jié)構(gòu)編碼文件,稱之為“固核”。2021/10/10172025/6/16181.6VerilogHDL的設(shè)計(jì)流程簡介
自頂向下的設(shè)計(jì)是從系統(tǒng)級開始,把系統(tǒng)級劃分為若干個基本單元,然后再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接用EDA元件庫的基本元件來實(shí)現(xiàn)為止圖1.1.3為自頂向下(Top-Down)的示意圖,以設(shè)計(jì)樹的形式繪出。
1.6.1自頂向下(Top-Down)設(shè)計(jì)的基本概念圖1.1.3Top-Down設(shè)計(jì)思想2021/10/10182025/6/16191.6VerilogHDL的設(shè)計(jì)流程簡介1.6.2層次管理的基本概念
復(fù)雜數(shù)字邏輯電路和系統(tǒng)的層次化、結(jié)構(gòu)化設(shè)計(jì)隱含著硬件設(shè)計(jì)方案的逐次分解。完整的硬件設(shè)計(jì)可以由圖1.1.3所示的設(shè)計(jì)樹描述。在這個設(shè)計(jì)樹上,節(jié)點(diǎn)對應(yīng)著該層次上基本單元的行為描述,樹枝對應(yīng)著基本單元的結(jié)構(gòu)分解。在不同的層次都可以進(jìn)行仿真以對設(shè)計(jì)思想進(jìn)行驗(yàn)證。EDA工具提供了有效的手段來管理錯綜復(fù)雜的層次,即可以很方便地查看某一層次某模塊的源代碼或電路圖以改正仿真時發(fā)現(xiàn)的錯誤。2021/10/10192025/6/16201.6.3具體模塊的設(shè)計(jì)編譯和仿真的過程1.6VerilogHDL的設(shè)計(jì)流程簡介
從左圖可以看出,模塊設(shè)計(jì)流程主要由兩大主要功能部分組成:1)設(shè)計(jì)開發(fā):即從編寫設(shè)計(jì)文件->綜合到布局布線->投片生成這樣一系列步驟。2)設(shè)計(jì)驗(yàn)證:也就是進(jìn)行各種仿真的一系列步驟,如果在仿真過程中發(fā)現(xiàn)問題就返回設(shè)計(jì)輸入進(jìn)行修改。2021/10/10202025/6/16211.6VerilogHDL的設(shè)計(jì)流程簡介
1.6.4對應(yīng)具體工藝器件的優(yōu)化、映象和布局布線
由于各種ASIC和FPFA器件的工藝各不相同,因而當(dāng)用不同廠家的不同器件來實(shí)現(xiàn)已驗(yàn)證的邏輯網(wǎng)表(EDIF文件)時,就需要不同的基本單元庫與布線延遲模型與之對應(yīng)才能進(jìn)行準(zhǔn)確的優(yōu)化、映象、和布局布線?;締卧獛炫c布線延遲模型由熟悉本廠工藝的工程師提供,再由EDA廠商的工程師編入相應(yīng)的處理程序,而邏輯電路設(shè)計(jì)師只需用一文件說明所用的工藝器件和約束條件,EDA工具就會自動地根據(jù)這一文件選擇相應(yīng)的庫和模型進(jìn)行準(zhǔn)確的處理從而大大提高設(shè)計(jì)效率。2021/10/10212025/6/16221.7小結(jié)掌握HDL設(shè)計(jì)方法應(yīng)從學(xué)習(xí)VerilogHDL設(shè)計(jì)方法開始。由于Top-Down的設(shè)計(jì)方法是首先從系統(tǒng)設(shè)計(jì)入手的,因而從頂層進(jìn)行功能劃分和結(jié)構(gòu)設(shè)計(jì)。系統(tǒng)的總體仿真是頂層進(jìn)行功能化分的重要環(huán)節(jié),這時的設(shè)計(jì)與工藝無關(guān)。從底向上的設(shè)計(jì)在某種意義上講是Top-Down設(shè)計(jì)的逆過程。2021/10/1022Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程第二講Verilog語法的基本概念2021/10/10232025/6/1624概述
Verilog既是一種行為描述的語言也是一種結(jié)構(gòu)描述語言。Verilog模型可以是實(shí)際電路的不同級別的抽象。這些抽象的級別包括:
?
系統(tǒng)級(system):用高級語言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)模塊的外部性能的模型。
?
算法級(algorithm):用高級語言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)算法的模型。
?RTL級(RegisterTransferLevel):描述數(shù)據(jù)在寄存器之間流動和如何處理、控制這些數(shù)據(jù)流動的模型。
以上三種都屬于行為描述,只有RTL級才與邏輯電路有明確的對應(yīng)關(guān)系。
?
門級(gate-level):描述邏輯門以及邏輯門之間的連接的模型。
?
開關(guān)級(switch-level):描述器件中三極管和儲存節(jié)點(diǎn)以及它們之間連接的模型。2021/10/10242025/6/1625
VerilogHDL行為描述語言具有以下功能:
?可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu)。
?
用延遲表達(dá)式或事件表達(dá)式來明確地控制過程的啟動時間。
?
通過命名的事件來觸發(fā)其它過程里的激活行為或停止行為。
?
提供了條件如if-else、case、循環(huán)程序結(jié)構(gòu)。
?
提供了可帶參數(shù)且非零延續(xù)時間的任務(wù)(task)程序結(jié)構(gòu)。
?
提供了可定義新的操作符的函數(shù)結(jié)構(gòu)(function)。
?
提供了用于建立表達(dá)式的算術(shù)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符。
?VerilogHDL語言作為一種結(jié)構(gòu)化的語言也非常適合于門級和開關(guān)級的模型設(shè)計(jì)。概述
2021/10/10252025/6/1626概述
因其結(jié)構(gòu)化的特點(diǎn)又使它具有以下功能:提供了一套完整的表示組合邏輯的基本元件的原語(primitive);提供了雙向通路(總線)和電阻器件的原語;可建立MOS器件的電荷分享和電荷衰減動態(tài)模型。
2021/10/10262025/6/16272.1Verilog模塊的基本概念
下面先介紹幾個簡單的VerilogHDL程序,從中了解Verilog模塊的特性
【例2.1】
modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;regout;always@(sloraorb)if(!sl)out=a;elseout=b;endmoduleabslout2021/10/10272025/6/16282.1Verilog模塊的基本概念MUX(多路選擇器)的行為可以描述為:只要信號a或b或sl發(fā)生變化,如果sl為0則選擇a輸出;否則選擇b輸出。這個行為的描述并沒有說明如果輸入a或b是三態(tài)的(高阻時)輸出應(yīng)該是什么,但有具體結(jié)構(gòu)的真實(shí)電路是有一定的輸出的。沒有考慮延時問題2021/10/10282025/6/16292.1Verilog模塊的基本概念【例2.2】moduletwomux(out,a,b,sl);inputa,b,sl;outputout;notu1(nsl,sl);and#1u2(sela,a,nsel);and#1u3(selb,b,sl);or#2u4(out,sela,selb);endmoduleabslselbselansel
MUX的結(jié)構(gòu)級描述,采用Verilog基本單元(門)描述。描述中含有傳輸延時。2021/10/10292025/6/16302.1Verilog模塊的基本概念【例2.3】
moduleadder(count,sum,a,b,cin);input[2:0]a,b;inputcin;outputcount;output[2:0]sum;assign{count,sum}=a+b+cin;endmodule
這個例子描述了一個三位的加法器。從例子中可以看出,整個VerilogHDL程序是位于module和endmodule聲明語句之間的2021/10/10302025/6/16312.1Verilog模塊的基本概念【例2.4】
modulecompare(equal,a,b);outputequal;//聲明輸出信號equalinput[1:0]a,b;//聲明輸入信號a,bassignequal=(a==b)?1:0;
/*如果兩個輸入信號相等則輸出為1。否則輸出為0*/endmodule
這個程序描述了一個比較器.在這個程中,/*........*/和//.........表示注釋部分,注釋只是為了方便程序員理解程序,對編譯是不起作用的。2021/10/10312025/6/1632【例2.5】moduletrist2(out,in,enable);outputout;inputin,enable;bufil1mybuf(out,in,enable);endmodule2.1Verilog模塊的基本概念程序通過調(diào)用一個在Verilog語言提供的原語庫中現(xiàn)存的三態(tài)驅(qū)動器元件bufil1來實(shí)現(xiàn)其邏輯功能。這個調(diào)用過程也稱為庫元件bufif1的實(shí)例化,在本模塊中它被具體化為mybuf.2021/10/103233【例2.6】moduletrist1(sout,sin,ena);outputsout;inputsin,ena;mytritri_inst(.out(sout),.in(sin),.enable(ena));//調(diào)用由mytri模塊定義的實(shí)例元件tri_inst,即把已定義的模塊myfri在本模塊中具體化為tri_instendmodulemodulemytri(out,in,enable);outputout;inputin,enable;assignout=enable?in:’bz;endmodule2.1Verilog模塊的基本概念2021/10/10332025/6/16342.2Verilog用于模塊的測試如何檢查上述例子其功能是否正確?需要有測試激勵信號輸入到被測模塊需要記錄被測模塊的輸出信號需要把用功能和行為描述的Verilog模塊轉(zhuǎn)換為門級電路互連的電路結(jié)構(gòu)(綜合)。需要對已經(jīng)轉(zhuǎn)換為門級電路結(jié)構(gòu)的邏輯進(jìn)行測試(門級電路仿真)。需要對布局布線后的電路結(jié)構(gòu)進(jìn)行測試。(布局布線后仿真)。2021/10/1034352.2Verilog用于模塊的測試被測模塊激勵和控制信號輸出響應(yīng)和驗(yàn)證2021/10/1035362.3小結(jié)
通過上面的例子可以看到:(1)VerilogHDL程序是由模塊構(gòu)成的。每個模塊的內(nèi)容都是位于module和endmodule兩個語句之間。每個模塊實(shí)現(xiàn)特定的功能。(2)模塊是可以進(jìn)行層次嵌套的。(3)每個模塊要進(jìn)行端口定義,并說明輸入輸出口,然后對模塊的功能進(jìn)行描述。(4)VerilogHDL程序的書寫格式自由,一行可以寫幾個語句,一個語句也可以分寫多行。(5)除了endmodule語句外,每個語句和數(shù)據(jù)定義的最后必須有分號。(6)可以用/*.....*/和//...對VerilogHDL程序的任何部分作注釋。一個好的,有使用價值的源程序都應(yīng)當(dāng)加上必要的注釋,以增強(qiáng)程序的可讀性和可維護(hù)性。2021/10/1036Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程第三講常用Verilog語法之一2021/10/10373.1模塊的結(jié)構(gòu)
Verilog的基本設(shè)計(jì)單元是“模塊”(block)。一個模塊是由兩部分組成的,一部分描述接口,另一部分描述邏輯功能,即定義輸入是如何影響輸出的。moduleblock1(a,b,c,d);inputa,b;outputc,d;
assignc=a|b;assignd=a&b;
endmoduleabcd2021/10/1038
Verilog模塊的結(jié)構(gòu)由在module和endmodule關(guān)鍵詞之間的四個主要部分組成:
-端口定義:
moduleblock1(a,b,c,d);
-I/O說明:
inputa,b,c;outputd;
-內(nèi)部信號聲明:
wirex;
-功能定義:
assignd=a|x;assignx=(b&~c);endmodule3.1模塊的結(jié)構(gòu)2021/10/10393.1模塊的結(jié)構(gòu)3.1.1模塊的端口定義模塊的端口聲明了模塊的輸入輸出口。其格式如下:module模塊名(口1,口2,口3,口4,………);3.1.2模塊內(nèi)容
模塊的內(nèi)容包括I/O說明、內(nèi)部信號聲明、功能定義。I/O說明的格式
輸入口:input[信號位寬-1:0]端口名1;
input[信號位寬-1:0]端口名2;
…input[信號位寬-1:0]端口名i;//(共有i個輸入口)2021/10/10403.1模塊的結(jié)構(gòu)輸出口output[信號位寬-1:0]端口名1;
output[信號位寬-1:0]端口名2;
…output[信號位寬-1:0]端口名j;//(共有j個輸出口)輸入/輸出口:
inout[信號位寬-1:0]端口名1;
inout[信號位寬-1:0]端口名2;
…inout[信號位寬-1:0]端口名k;//(共有k個雙向總線端口)I/O說明也可以寫在端口聲明語句里。其格式如下:modulemodule_name(inputport1,inputport2,…outputport1,outputport2…);2021/10/10413.1模塊的結(jié)構(gòu)內(nèi)部信號說明
在模塊內(nèi)用到的和與端口有關(guān)的wire和reg變量的聲明。如:reg[width-1:0]R變量1,R變量2…;wire[width-1:0]W變量1,W變量2…;
……2021/10/10423.1模塊的結(jié)構(gòu)功能定義
模塊中最重要的部分是邏輯功能定義部分。有三種方法可在模塊中產(chǎn)生邏輯。
-用assign語句(數(shù)據(jù)流描述):assigna=b&c;
-用實(shí)例元件(結(jié)構(gòu)化描述):
and2and_inst(q,a,b);-用“always”塊(行為描述):always@(posedgeclkorposedgeclr)beginif(clr)q<=0;elseif(en)q<=d;end2021/10/10433.1模塊的結(jié)構(gòu)3.1.3理解要點(diǎn)如在模塊中邏輯功能由下面三個語句塊組成:
assigncs=(a0&~a1&~a2);//-----1and2and_inst(qout,a,b);//-----2always@(posedgeclkorposedgeclr)//-----3beginif(clr)q<=0;elseif(en)q<=d;end三條語句是并行的,它們產(chǎn)生獨(dú)立的邏輯電路;而在always塊中:begin與end之間是順序執(zhí)行的。2021/10/10443.2數(shù)據(jù)類型及其常量及變量3.2.1.常量
在程序運(yùn)行過程中,其值不能被改變的量稱為常量。一.?dāng)?shù)字整數(shù)。在VerilogHDL中,整型常量即整常數(shù)有以下四種進(jìn)制表示形式:1)二進(jìn)制整數(shù)(b或B)2)十進(jìn)制整數(shù)(d或D)3)十六進(jìn)制整數(shù)(h或H)4)八進(jìn)制整數(shù)(o或O)數(shù)字表達(dá)方式有以下三種:1)<位寬><進(jìn)制><數(shù)字>這是一種全面的描述方式。2)<進(jìn)制><數(shù)字>在這種描述方式中,數(shù)字的位寬采用缺省位寬(這由具體的機(jī)器系統(tǒng)決定,但至少32位)。3)<數(shù)字>在這種描述方式中,采用缺省進(jìn)制十進(jìn)制。2021/10/10453.1.2數(shù)值1.VerilogHDL中的數(shù)值可取下面的四類值:0邏輯零、邏輯非、低電平1邏輯1、邏輯真、高電平x或X不確定的邏輯狀態(tài)z或Z高阻態(tài)VerilogHDL中有兩類數(shù)值常量整型數(shù)和實(shí)型數(shù)2021/10/1046
下劃線符號“_”除了不能放于數(shù)值的首位以外,可以隨意用在整型數(shù)與實(shí)型數(shù)中,他們對數(shù)值的大小沒有任何改變,只是為了提高可讀性。
1)整型數(shù)及其表示
VerilogHDL的整數(shù)可以使二進(jìn)制(b或B)、十進(jìn)制(d或D)、十六進(jìn)制(h或H)與八進(jìn)制(o或O),有下面三種書寫形式(1)簡單的十進(jìn)制格式;(2)缺省位寬的基數(shù)格式;(3)指定位寬的基數(shù)格式。VerilogHDL中有兩類數(shù)值常量整型數(shù)和實(shí)型數(shù)2021/10/1047(1)簡單的十進(jìn)制格式:用0~9的數(shù)字串組成的十進(jìn)制數(shù),可以用符號“+”或“-”來表示數(shù)的正負(fù).(2)缺省位寬的基數(shù)格式;表示形式為:`<base_format><number>符號“`”為基數(shù)格式表示的固有字符,該字符不能省略,否則為非法表示形式;參數(shù)<base_format>用于說明數(shù)值采用的進(jìn)制格式;參數(shù)<number>為相應(yīng)進(jìn)制格式下的一串?dāng)?shù)字.這種格式未指定位寬,其缺省值至少為32位.(3)指定位寬的基數(shù)格式:表示形式為:<size>`<base_format><number>參數(shù)<size>用來指定所表示數(shù)字的位寬.當(dāng)位寬小于數(shù)值的實(shí)際大小時,相應(yīng)的高位部分被忽略;當(dāng)位寬大于數(shù)值的實(shí)際位數(shù),且數(shù)值的最高位是0或1時,相應(yīng)的高位部分補(bǔ)0;而當(dāng)位寬大于數(shù)值的實(shí)際位數(shù),但數(shù)值的最高位是x或z時,相應(yīng)的高位部分補(bǔ)X或Z.2021/10/1048數(shù)制基數(shù)符號合法的表示值二進(jìn)制borB0,1,x,X,z,Z,?,_八進(jìn)制oorO0~7,x,X,z,Z,?,_十進(jìn)制dorD0~9,_十六進(jìn)制horH0~9,a~f,A~F,x,X,z,Z,?,_VerilogHDL中有兩類數(shù)值常量整型數(shù)和實(shí)型數(shù)基數(shù)符號及其合法的表示值2021/10/1049數(shù)值表示位寬數(shù)制等效二進(jìn)制值及其解書釋10缺省十進(jìn)制0…0_1010(32位或以上)4ac缺省十進(jìn)制非法,十進(jìn)制表示不允許出現(xiàn)ac字樣`h4ac缺省十六進(jìn)制0…0_0100_1010_1100(32位或以上)9`o6719位八進(jìn)制0110_0111_00019`o-6719位八進(jìn)制非法,符號位只能出現(xiàn)在表示的最左端6`hf36位十六進(jìn)制11_0011,高位部分被舍去6`hf6位十六進(jìn)制00_1111,高位部分由0補(bǔ)足3`b10x3位二進(jìn)制10x12`h2x612位十六進(jìn)制0010_xxxx_10106`hx6位十六進(jìn)制xx_xxxx,高位部分由x補(bǔ)足VerilogHDL中有兩類數(shù)值常量整型數(shù)和實(shí)型數(shù)2021/10/1050例;三種格式的整數(shù)表示法
15 (十進(jìn)制15)簡單的十進(jìn)制
`h15 (十進(jìn)制21,十六進(jìn)制15)缺省位寬的十六進(jìn)制
5`b10011 (十進(jìn)制19,二進(jìn)制10011)5位的二進(jìn)制
12`h01F (十進(jìn)制31,十六進(jìn)制01F)12位的十六進(jìn)制VerilogHDL中有兩類數(shù)值常量整型數(shù)和實(shí)型數(shù)2021/10/1051
VerilogHDL中的實(shí)數(shù)可以用十進(jìn)制與科學(xué)計(jì)數(shù)法兩種格式來表示,如果采用十進(jìn)制格式,小數(shù)點(diǎn)兩邊必須都有數(shù)字,否則為非法的表示形式.實(shí)數(shù)表示法的實(shí)例1.8//十進(jìn)制計(jì)數(shù)法3.8e10
//科學(xué)計(jì)數(shù)法2.1E-9//科學(xué)計(jì)數(shù)法可用e或E表示,其結(jié)果相同3_2387.3398_3047//使用下劃線提高可讀性3.//非法表示,小數(shù)點(diǎn)兩遍都必須有數(shù).2e6//非法表示,小數(shù)點(diǎn)兩遍都必須有數(shù).12//非法表示,小數(shù)點(diǎn)兩遍都必須有數(shù)實(shí)型數(shù)及其表示VerilogHDL中有兩類數(shù)值常量整型數(shù)和實(shí)型數(shù)2021/10/10523.2數(shù)據(jù)類型及其常量及變量x和z值。在數(shù)字電路中,x代表不定值,z代表高阻值。一個x可以用來定義十六進(jìn)制數(shù)的4位二進(jìn)制數(shù)的狀態(tài),八進(jìn)制數(shù)的3位,二進(jìn)制數(shù)的1位。z的表示方式同x類似。z還有一種表達(dá)方式是可以寫作“?”。2021/10/10533.2數(shù)據(jù)類型及其常量及變量
負(fù)數(shù)。一個數(shù)字可以被定義為負(fù)數(shù),只需在位寬表達(dá)式前加一個減號,減號必須寫在數(shù)字定義表達(dá)式的最前面。注意減號不可以放在位寬和進(jìn)制之間也不可以放在進(jìn)制和具體的數(shù)之間。-8'd5//這個表達(dá)式代表5的補(bǔ)數(shù)(用八位二進(jìn)制數(shù)表示)8‘d-5//非法格式下畫線(underscore_)。下劃線可以用來分隔開數(shù)的表達(dá)以提高程序可讀性。但不可以用在位寬和進(jìn)制處,只能用在具體的數(shù)字之間。16'b1010_1011_1111_1010//合法格式8'b_0011_1010//非法格式當(dāng)常量不說明位數(shù)時,默認(rèn)值是32位,每個字母用8位的ASCII值表示。2021/10/10543.2數(shù)據(jù)類型及其常量及變量二.參數(shù)(parameter)型用參數(shù)聲明一個可變常量,常用于定義延時及寬度變量。參數(shù)定義的語法:parameter<list_of_assignment>;可一次定義多個參數(shù),用逗號隔開。在使用文字(literal)的地方都可以使用參數(shù)。參數(shù)的定義是局部的,只在當(dāng)前模塊中有效。參數(shù)定義可使用以前定義的整數(shù)和實(shí)數(shù)參數(shù)。modulemod1(out,in1,in2);...parametercycle=20,prop_del=3,setup=cycle/2-prop_del,p1=8,x_word=16’bx,file="/usr1/jdough/design/mem_file.dat";...wire[p1:0]w1;//Awiredeclarationusingparameter...endmodule注意:參數(shù)file不是string,而是一個整數(shù),其值是所有字母的擴(kuò)展ASCII值。若file=“AB”,則file值為8‘h4142。用法:$fopen(file);$display(“%s”,file);2021/10/10553.2數(shù)據(jù)類型及其常量及變量3.2.2變量
變量即在程序運(yùn)行過程中其值可以改變的量。常用的網(wǎng)絡(luò)數(shù)據(jù)類型包括wire型和tri型。wire型變量通常是用來表示單個門驅(qū)動或連續(xù)賦值語句驅(qū)動的網(wǎng)絡(luò)型數(shù)據(jù),tri型變量則用來表示多驅(qū)動器驅(qū)動的網(wǎng)絡(luò)型數(shù)據(jù)。
表1.3.1Wire/tri變量的真值2021/10/10563.2數(shù)據(jù)類型及其常量及變量一.wire型
wire型數(shù)據(jù)常用來表示用于以assign關(guān)鍵字指定的組合邏輯信號。Verilog程序模塊中輸入輸出信號類型缺省時自動定義為wire型。其格式如下:wire[n-1:0]數(shù)據(jù)名1,數(shù)據(jù)名2,……數(shù)據(jù)名i;//共有i條總線,每條總線內(nèi)有n條線路,或wire[n:1]數(shù)據(jù)名1,數(shù)據(jù)名2,……數(shù)據(jù)名i;2021/10/10573.2數(shù)據(jù)類型及其常量及變量二.reg型
寄存器是數(shù)據(jù)儲存單元的抽象。寄存器數(shù)據(jù)類型的關(guān)鍵字是reg。reg類型數(shù)據(jù)的默認(rèn)初始值為不定值x。
reg型數(shù)據(jù)常用來表示用于“always”模塊內(nèi)的指定信號,常代表觸發(fā)器。在“always”塊內(nèi)被賦值的每一個信號都必須定義成reg型。reg型數(shù)據(jù)的格式如下:reg[n-1:0]數(shù)據(jù)名1,數(shù)據(jù)名2,…
數(shù)據(jù)名i;或reg[n:1]數(shù)據(jù)名1,數(shù)據(jù)名2,…
數(shù)據(jù)名i;2021/10/1058moduletop;wirey;rega,b;DUTu1(y,a,b);initialbegina=0;b=0;#10a=1;….endendmodulemoduleDUT(Y,A,B_);outputY;inputA,B:wireY,A,B;and(Y,A,B);endmodule模塊DUT的邊界輸入口輸出口輸出/入口netnetnet/registernetnet/registernetinout舉例說明數(shù)據(jù)類型的選擇2021/10/1059輸入口(input)可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動,但它本身只能驅(qū)動網(wǎng)絡(luò)連接。輸出口(output)可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動,但它本身只能驅(qū)動網(wǎng)絡(luò)連接。輸入/輸出口(inout)只可以由網(wǎng)絡(luò)連接驅(qū)動,它本身也只能驅(qū)動網(wǎng)絡(luò)連接。如果信號變量是在過程塊(initial塊或always塊)中被賦值的,必須把它聲明為寄存器類型變量
如何選擇正確的數(shù)據(jù)類型?2021/10/1060如何選擇正確的數(shù)據(jù)類型moduletop;wirey;rega,b; DUTu1(y,a,b); initialbegin a=0;b=0; #5a=1;endendmodulemoduleDUT(Y,A,B);outputY;inputA,B;wireY,A,B; and(Y,A,B);endmodule輸入端口可以由net/register驅(qū)動,但輸入端口只能是net輸出端口可以是net/register類型,輸出端口只能驅(qū)動net在過程塊中只能給register類型賦值若Y,A,B說明為reg則會產(chǎn)生錯誤。in1in2OABY雙向端口輸入/輸出只能是net類型2021/10/1061選擇數(shù)據(jù)類型時常犯的錯誤舉例修改前:moduleexample(o1,o2,a,b,c,d);inputa,b,c,d;outputo1,o2;regc,d;rego2andu1(o2,c,d);always@(aorb)if(a)o1=b;elseo1=0;endmodule修改后:moduleexample(o1,o2,a,b,c,d);inputa,b,c,d;outputo1,o2;//regc,d;//rego2rego1;andu1(o2,c,d);always@(aorb)if(a)o1=b;elseo1=0;endmoduleexample.v2021/10/1062選擇數(shù)據(jù)類型時常犯的錯誤舉例Compilingsourcefile"example.v"Error!Illegalleft-hand-sideassignment[Verilog-ILHSA]"example.v",11:o1=b;Error!Illegalleft-hand-sideassignment[Verilog-ILHSA]"example.v",12:o1=0;2errors第一次編譯信息verilog–cexample.v第二次編譯信息Compilingsourcefile"example.v"Error!Incompatibledeclaration,(c)definedasinputatline2[Verilog-IDDIL]"example.v",5:Error!Incompatibledeclaration,(d)definedasinputatline2[Verilog-IDDIL]"example.v",5:Error!Gate(u1)hasillegaloutputspecification[Verilog-GHIOS]"example.v",8:3errors2021/10/10633.2數(shù)據(jù)類型及其常量及變量三.memory型
VerilogHDL通過對reg型變量建立數(shù)組來對存儲器建模,可以描述RAM型存儲器,ROM存儲器和reg文件。數(shù)組中的每一個單元通過一個數(shù)組索引進(jìn)行尋址。在Verilog語言中沒有多維數(shù)組存在。memory型數(shù)據(jù)是通過擴(kuò)展reg型數(shù)據(jù)的地址范圍來生成的。其格式如下:reg[n-1:0]存儲器名[m-1:0];或reg[n-1:0]存儲器名[m:1];2021/10/10643.3運(yùn)算符及表達(dá)式
VerilogHDL語言的運(yùn)算符范圍很廣,其運(yùn)算符按其功能可分為以下幾類:運(yùn)算符分類所含運(yùn)算符算術(shù)運(yùn)算符+,-,*,/,%邏輯運(yùn)算符!,&&,||關(guān)系運(yùn)算符<,>,<=,>=相等運(yùn)算符==,!=,===,!==位運(yùn)算符~,&,|,^,^~or~^歸約運(yùn)算符&,~&,|,~|,^,~^or^~移位運(yùn)算符<<,>>條件運(yùn)算符?:連接運(yùn)算符{}2021/10/10653.3運(yùn)算符及表達(dá)式
在VerilogHDL語言中運(yùn)算符所帶的操作數(shù)是不同的,按其所帶操作數(shù)的個數(shù)運(yùn)算符可分為三種:1)單目運(yùn)算符(unaryoperator):可以帶一個操作數(shù),操作數(shù)放在運(yùn)算符的右邊。2)二目運(yùn)算符(binaryoperator):可以帶二個操作數(shù),操作數(shù)放在運(yùn)算符的兩邊。3)三目運(yùn)算符(ternaryoperator):可以帶三個操作,這三個操作數(shù)用三目運(yùn)算符分隔開。
見下例:clock=~clock;//~是一個單目取反運(yùn)算符,clock是操作數(shù)。c=a|b;//是一個二目按位或運(yùn)算符,a和b是操作數(shù)。r=s?t:u;//?:是一個三目條件運(yùn)算符,s,t,u是操作數(shù)。2021/10/10663.3運(yùn)算符及表達(dá)式3.3.1.基本的算術(shù)運(yùn)算符
+ 加- 減* 乘/ 除% 模將負(fù)數(shù)賦值給reg或其它無符號變量使用2的補(bǔ)碼算術(shù)。如果操作數(shù)的某一位是x或z,則結(jié)果為x
在整數(shù)除法中,余數(shù)舍棄模運(yùn)算中使用第一個操作數(shù)的符號modulearithops();parameterfive=5;integerans,int;reg[3:0]rega,regb;reg[3:0]num;initialbeginrega=3;regb=4'b1010;int=-3;//int=1111……1111_1101endinitialfork#10ans=five*int;//ans=-15#20ans=(int+5)/2;//ans=1#30ans=five/int;//ans=-1#40num=rega+regb;//num=1101#50num=rega+1;//num=0100#60num=int;//num=1101#70num=regb%rega;//num=1#80$finish;joinendmodule注意integer和reg類型在算術(shù)運(yùn)算時的差別。integer是有符號數(shù),而reg是無符號數(shù)。2021/10/10673.3運(yùn)算符及表達(dá)式3.3.2.位運(yùn)算符~ not& and| or^ xor~^ xnor^~ xnor
按位操作符對矢量中相對應(yīng)位運(yùn)算。regb=4'b1010regc=4'b1x10num=regb®c=1010;
位值為x時不一定產(chǎn)生x結(jié)果。如#50時的or計(jì)算。modulebitwise();reg[3:0]rega,regb,regc;reg[3:0]num;initialbeginrega=4'b1001;regb=4'b1010;regc=4'b11x0;endinitialfork#10num=rega&0;//num=0000#20num=rega®b;//num=1000#30num=rega|regb;//num=1011#40num=regb®c;//num=10x0#50num=regb|regc;//num=1110#60$finish;joinendmodule2021/10/1068~01xz結(jié)果10xx&01xz00000101xxx0xxxz0xxx五類按位操作符的運(yùn)算規(guī)則2021/10/1069|01xz001xx11111xx1xxzx1xx^01xz001xx110xxxxxxxz0xx1~^or^~01xz010x0101xxxxxxxzxxxx五類按位操作符的運(yùn)算規(guī)則2021/10/1070modulebitTest;reg[3:0]a,b,c;initialbegina=4’b1100;b=4’b0011;c=4,b0101;$displayb(~a);//按位非運(yùn)算符,結(jié)果為4b’0011$displayb(a&c);//按位與運(yùn)算符,結(jié)果為4b’0100$displayb(a|b);//按位或運(yùn)算符,結(jié)果為4b’1111$displayb(b^c);//按位異或運(yùn)算符,結(jié)果為4b’0110$displayb(a~^c);//按位異或非運(yùn)算符,結(jié)果為4b’0110endendmodule按位運(yùn)算的例子2021/10/10713.3運(yùn)算符及表達(dá)式3.3.2.位運(yùn)算符當(dāng)兩個操作數(shù)位數(shù)不同時,位數(shù)少的操作數(shù)零擴(kuò)展到相同位數(shù)。a=4'b1011;b=8'b01010011;c=a|b;//a零擴(kuò)展為8'b00001011?位運(yùn)算符中除了~是單目運(yùn)算符以外,均為二目運(yùn)算符,即要求運(yùn)算符兩側(cè)各有一個操作數(shù).?位運(yùn)算符中的二目運(yùn)算符要求對兩個操作數(shù)的相應(yīng)位進(jìn)行運(yùn)算操作。2021/10/1072Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程第四講常用Verilog語法之二2021/10/10734.1邏輯運(yùn)算符! not&& and|| or邏輯操作符的結(jié)果為一位1,0或x。邏輯操作符只對邏輯值運(yùn)算。如操作數(shù)為全0,則其邏輯值為false如操作數(shù)有一位為1,則其邏輯值為true若操作數(shù)只包含0、x、z,則邏輯值為x邏輯反操作符將操作數(shù)的邏輯值取反。例如,若操作數(shù)為全0,則其邏輯值為0,邏輯反操作值為1。modulelogical();parameterfive=5;regans;reg[3:0]rega,regb,regc;initialbeginrega=4‘b0011; //邏輯值為“1”regb=4‘b10xz;//邏輯值為“1”regc=4‘b0z0x;//邏輯值為“x”endinitialfork#10ans=rega&&0;//ans=0#20ans=rega||0;//ans=1#30ans=rega&&five;//ans=1#40ans=regb&®a;//ans=1#50ans=regc||0;//ans=x#60$finish;joinendmodule2021/10/1074VerilogHDL提供了三種邏輯運(yùn)算符:邏輯與運(yùn)算符:&&邏輯或運(yùn)算符:||邏輯非運(yùn)算符:!其中邏輯與和邏輯或是雙目運(yùn)算符,邏輯非是單目運(yùn)算符mn!m!nM&&nM||n001100011001100101110011邏輯運(yùn)算的真值表4.1邏輯運(yùn)算符2021/10/1075modulelogicalTest;
reg[3:0]a,b,c;
initialbegina=2;b=0;c=4’hx;
$display(a&&b);//邏輯與,結(jié)果為0$display(a||b);//邏輯或,結(jié)果為1$display(!a);//邏輯非,結(jié)果為0$display(a||c);//結(jié)果為1,未知數(shù)||1(=1)$display(!c);//結(jié)果為未知數(shù)
endendmodule4.1邏輯運(yùn)算符2021/10/10764.2關(guān)系運(yùn)算符> 大于< 小于>= 大于等于<= 小于等于modulerelationals();reg[3:0]rega,regb,regc;regval;initialbeginrega=4'b0011;regb=4'b1010;regc=4'b0x10;endinitialfork
#10val=regc>rega;//val=x#20val=regb<rega;//val=0#30val=regb>=rega;//val=1
#40val=regb>regc;//val=1#50$finish;joinendmodulerega和regc的關(guān)系取決于x無論x為何值,regb>regc其結(jié)果是1’b1、1’b0或1’bx。2021/10/10774.3等式運(yùn)算符==01xz010xx101xxxxxxxzxxxx賦值操作符,將等式右邊表達(dá)式的值拷貝到左邊。邏輯等
case等===01xz0100010100x0010z0001a=2'b1x;b=2'b1x;if(a==b)$display("aisequaltob");else$display("aisnotequaltob");a=2'b1x;b=2'b1x;if(a===b)$display("aisidenticaltob");else$display("aisnotidenticaltob");注意邏輯等與case等的差別2‘b1x==2’b0x
值為0,因?yàn)椴幌嗟?‘b1x==2’b1x
值為x,因?yàn)榭赡懿幌嗟?,也可能相?‘b1x===2’b0x
值為0,因?yàn)椴幌嗤?‘b1x==2’b1x
值為1,因?yàn)橄嗤?021/10/10784.3等式運(yùn)算符==
邏輯等!=
邏輯不等其結(jié)果是1’b1、1’b0或1’bx。如果左邊及右邊為確定值并且相等,則結(jié)果為1。如果左邊及右邊為確定值并且不相等,則結(jié)果為0。如果左邊及右邊有值不能確定的位,但值確定的位相等,則結(jié)果為x。!=的結(jié)果與==相反值確定是指所有的位為0或1。不確定值是有值為x或z的位。moduleequalities1();reg[3:0]rega,regb,regc;regval;initialbeginrega=4'b0011;regb=4'b1010;regc=4'b1x10;endinitialfork#10val=rega==regb;//val=0#20val=rega!=regc;//val=1#30val=regb!=regc;//val=x#40val=regc==regc;//val=x#50$finish;joinendmodule2021/10/1079
moduleequTest;reg[3:0]a,b,c,d,e,f;initialbegina=4;b=7;//缺省值為十進(jìn)制數(shù)
c=4’b010;d=4’bx10;e=4’bx101;f=4’bxx01;$displayb(c);//輸出0010$displayb(d);//輸出xx10$displayb(a==b);//相等運(yùn)算符,結(jié)果為0$displayb(c!=d);//不相等運(yùn)算符,結(jié)果為x$displayb(c!=f);//不相等運(yùn)算符,結(jié)果為1$displayb(d===e);//全等運(yùn)算符,結(jié)果為0$displayb(c!==d);//非全等運(yùn)算符,結(jié)果為1endendmodule相等關(guān)系運(yùn)算符的例子2021/10/10804.3等式運(yùn)算符===相同(case等)!==不相同(case不等)
其結(jié)果是1’b1、1’b0或1’bx。如果左邊及右邊的值相同(包括x、z),則結(jié)果為1。如果左邊及右邊的值不相同,則結(jié)果為0。!==的結(jié)果與===相反綜合工具不支持moduleequalities2();reg[3:0]rega,regb,regc;regval;initialbeginrega=4'b0011;regb=4'b1010;regc=4'b1x10;endinitialfork#10val=rega===regb;//val=0#20val=rega!==regc;//val=1#30val=regb===regc;//val=0#40val=regc===regc;//val=1#50$finish;joinendmodule2021/10/10814.4移位運(yùn)算符>> 邏輯右移<< 邏輯左移
移位操作符對其左邊的操作數(shù)進(jìn)行向左或向右的位移位操作。第二個操作數(shù)(移位位數(shù))是無符號數(shù)若第二個操作數(shù)是x或z則結(jié)果為x<<將左邊的操作數(shù)左移右邊操作數(shù)指定的位數(shù)>>將左邊的操作數(shù)右移右邊操作數(shù)指定的位數(shù)在賦值語句中,如果右邊(RHS)的結(jié)果:位寬大于左邊,則把最高位截去位寬小于左邊,則零擴(kuò)展moduleshift();reg[9:0]num,num1;reg[7:0]rega,regb;initialrega=8'b00001100;initialfork
#10num<=rega<<5;//num=01_1000_0000#10regb<=rega<<5;//regb=1000_0000#20num<=rega>>3;//num=00_0000_0001#20regb<=rega>>3;//regb=0000_0001#30num<=10'b11_1111_0000;#40rega<=num<<2;//rega=1100_0000#40num1<=num<<2;//num1=11_1100_0000
#50rega<=num>>2;//rega=1111_1100#50num1<=num>>2;//num1=00_1111_1100#60$finish;joinendmodule建議:表達(dá)式左右位數(shù)一致2021/10/10824.5位拼接運(yùn)算符
位拼接還可以用嵌套的方式來表達(dá)。{b,{3{a,b}}}//這等同于{b,a,b,a,b,a,b}用于表示重復(fù)的表達(dá)式如上例中的4和3,必須是常數(shù)表達(dá)式。{}位拼接運(yùn)算符其使用方法如下:{信號1的某幾位,信號2的某幾位,..,..,信號n的某幾位}例:{a,b[3:0],w,3’b101}位拼接還可以用重復(fù)法來簡化表達(dá)式。{4{w}}//這等同于{w,w,w,w}2021/10/1083
moduleconcatTest;rega;reg[1:0]b;reg[5:0]c;initialbegina=1’b1;b=2’b00;c=6’b101001;$displayb({a,b});//產(chǎn)生一個3位數(shù)3‘b100$displayb({c[5:3],a});//產(chǎn)生一個4位數(shù)4‘b1011endendmodule
modulereplicTest;rega;reg[1:0]b;reg[5:0]c;initialbegin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 稅務(wù)師考試真題及答案
- 高頻產(chǎn)品推廣創(chuàng)意面試題及答案
- 專升本解剖題庫及答案
- 四川安全員試題及答案
- 高級茶藝師題庫附答案
- 教師資格證考試試題及答案
- 監(jiān)理工程師基本理論與相關(guān)法規(guī)真題及答案
- 兒童保健服務(wù)規(guī)范試題庫及答案(習(xí)題試題資料)
- 安全知識競賽經(jīng)典題庫含答案
- 醫(yī)院導(dǎo)醫(yī)考試試題及答案
- 2025年江蘇省高考?xì)v史真題(含答案解析)
- 2025-2030中國綠色甲烷行業(yè)發(fā)展現(xiàn)狀與未來發(fā)展前景預(yù)測報(bào)告
- 系統(tǒng)解剖學(xué)章節(jié)練習(xí)題及答案
- (人教版)初中物理九年級 第二十章綜合測試及答案03
- 人教版九年級歷史上冊期末復(fù)習(xí)知識點(diǎn)考點(diǎn)背誦提綱
- 2025年電動三輪車銷售與農(nóng)村市場拓展合同
- 公路水運(yùn)工程施工安全風(fēng)險(xiǎn)評估指南 第6部分:航道工程JT∕T 1375
- 陜西掛職人員管理辦法
- 2024-2025學(xué)年四川省達(dá)州市高一上學(xué)期1月期末考試語文試題(解析版)
- 天臺縣富創(chuàng)塑膠有限公司年產(chǎn)2400噸TPE彈性體塑粒項(xiàng)目環(huán)評報(bào)告
- 機(jī)關(guān)部門協(xié)作管理制度
評論
0/150
提交評論