版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VerilogHDL基礎(chǔ)總結(jié)明達(dá)科(成都)科技培訓(xùn)有限公司Verilog程序是由模塊構(gòu)成的。每個(gè)模塊的內(nèi)容都是位于module和endmodule兩個(gè)語(yǔ)句之間。每個(gè)模塊實(shí)現(xiàn)特定的功能。模塊是可以進(jìn)行層次嵌套的。正因?yàn)槿绱瞬趴梢詫⒋笮偷牡臄?shù)字電路設(shè)計(jì)分割成不同的小模塊來(lái)實(shí)現(xiàn)特定功能。Verilog語(yǔ)法的基本概念Verilog語(yǔ)法的基本概念如果每個(gè)模塊都是可以綜合的,通過(guò)綜合工具可以把它們的功能描述全都轉(zhuǎn)換為最基本的邏輯單元描述,最后可以用一個(gè)上層模塊通過(guò)實(shí)例引用把這些模塊連接起來(lái),把它們整合成一個(gè)很大的邏輯系統(tǒng)。Verilog模塊可以分為兩種類型:一種是為了讓模塊最終能生成電路結(jié)構(gòu),另一種只是為了測(cè)試所設(shè)計(jì)的電路其邏輯功能是否正確。
Verilog語(yǔ)法的基本概念每個(gè)模塊要進(jìn)行端口定義,并說(shuō)明輸入輸出口,然后對(duì)模塊的功能進(jìn)行描述。VerilogHDL程序的書寫格式自由,一行可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句也可以分寫多行。除了endmodule語(yǔ)句外,每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有分號(hào)。可以用/*.....*/和//.......對(duì)VerilogHDL程序的任何部分作注釋。一個(gè)好的,有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增強(qiáng)程序的可讀性和可維護(hù)性。
例子一modulemuxtwo(out,a,b,sl);
inputa,b,sl;
outputout;
regout;
always@(sloraorb)
if(!sl)
out=a;
elseout=b;
endmodule
例子二modulemuxtwo(out,a,b,sl);
inputa,b,sl;
outputout;
not
u1(ns1,sl);
and
#1
u2(sela,a,nsl);
and
#1
u3(selb,b,sl);
or
#2
u4(out,sela,selb);
endmodule
例子三module
adder(count,sum,a,b,cin);
input[2:0]a,b;
input
cin;
output
count;
output[2:0]sum;
assign{count,sum}=a+b+cin;
endmodule
思考題是否任意抽象的符合語(yǔ)法的Verilog模塊都可以通過(guò)綜合工具轉(zhuǎn)變?yōu)殡娐方Y(jié)構(gòu)?什么叫綜合?仿真是什么?為什么要進(jìn)行仿真?仿真可以在幾個(gè)層面上進(jìn)行?每個(gè)層面的仿真有什么意義?如何產(chǎn)生連續(xù)的周期測(cè)試時(shí)鐘?
常用Verilog語(yǔ)法之一模塊的結(jié)構(gòu)(模塊端口定義;模塊內(nèi)容)數(shù)據(jù)類型及其常量和變量運(yùn)算符及表達(dá)式常用Verilog語(yǔ)法之一在Verilog模塊中所有過(guò)程塊(initial,always)、連續(xù)賦值語(yǔ)句、實(shí)例引用都是并行的;他們表示的是一種通過(guò)變量名互相連接的關(guān)系在同一模塊中這三者出現(xiàn)的先后順序沒(méi)有關(guān)系。只有連續(xù)賦值的語(yǔ)句assign和實(shí)例引用語(yǔ)句可以獨(dú)立與過(guò)程塊而存在于模塊功能定義部分。常用Verilog語(yǔ)法之一被實(shí)例引用的模塊,其端口可以通過(guò)不同名的連線或寄存器類型變量連接到別的模塊相應(yīng)的輸出輸入信號(hào)端。在always塊內(nèi)被賦值的每一個(gè)信號(hào)都必須定義成reg型。常用Verilog語(yǔ)法之二邏輯;關(guān)系;等式;移位;位拼接;縮減運(yùn)算符優(yōu)先級(jí)別關(guān)鍵詞賦值語(yǔ)句和塊語(yǔ)句(順序塊、并行塊、塊名、起始時(shí)間和結(jié)束時(shí)間)常用語(yǔ)法之二位拼接運(yùn)算符{},在C語(yǔ)言沒(méi)有定義,但在verilog中確是一種十分有用的語(yǔ)法;縮減運(yùn)算符也是C語(yǔ)言所沒(méi)有的,合理的使用縮減運(yùn)算符可以使程序簡(jiǎn)潔、明了;阻塞和非阻塞賦值也是C語(yǔ)言沒(méi)有的。我們應(yīng)當(dāng)理解這是十分重要的概念,特別在編程寫綜合風(fēng)格的模塊中要加以注意;常用Verilog語(yǔ)法之三條件語(yǔ)句(if_else,case)循環(huán)語(yǔ)句(forever,repeat,while,for)例子程序Ifelse語(yǔ)句module test (CK,RES,EN,Q,CA);input CK,RES,EN ;output Q,CA ;reg Q ;
always@(posedgeCKorposedgeRES)begin if(RES==1’b1) Q<=1’b0 ; elseif(EN==1’b1) Q<=~Q ;endassignCA=EN&Q;endmodule4選一4to1seleclter(usefunctioncase)moduletest(din,sel,dout);input[3:0]din;input[1:0]sel;outputdout;functionselect; input[3:0]din;input[1:0]sel;case(sel)2'h0:select=din[0];2'h1:select=din[1];2'h2:select=din[2];2'h3:select=din[3];defaultselect=1'bx;endcaseendfunctionassigndout=select(din,sel);endmodule常用Verilog語(yǔ)法之四結(jié)構(gòu)說(shuō)明語(yǔ)句(initial,always語(yǔ)句)Task和function說(shuō)明語(yǔ)句系統(tǒng)函數(shù)和任務(wù)常用Verilog語(yǔ)法之四一個(gè)程序模塊可以有多個(gè)initial和always過(guò)程塊;每個(gè)initial和always說(shuō)明語(yǔ)句在仿真的一開(kāi)始同時(shí)立即開(kāi)始執(zhí)行;initial語(yǔ)句只執(zhí)行一次;always語(yǔ)句則是不斷地重復(fù)活動(dòng)著,直到仿真過(guò)程結(jié)束;常用Verilog語(yǔ)法之四always語(yǔ)句后跟著的過(guò)程塊是否運(yùn)行,則要看它的觸發(fā)條件是否滿足,如滿足則運(yùn)行過(guò)程塊一次,再次滿足則再運(yùn)行一次,直至仿真過(guò)程結(jié)束;在一個(gè)模塊中,使用initial和always語(yǔ)句的次數(shù)是不受限制的,它們都是同時(shí)開(kāi)始運(yùn)行的;task和function語(yǔ)句可以在程序模塊中的一處或多處調(diào)用;常用Verilog語(yǔ)法之四Always的時(shí)間控制可以是沿觸發(fā)也可以是電平觸發(fā),可以是單個(gè)信號(hào)也可以是多個(gè)信號(hào),中間需要用關(guān)鍵字OR連接;沿觸發(fā)的always塊常常描述時(shí)序行為,如有限狀態(tài)機(jī);電平觸發(fā)的always塊常常用來(lái)描述組合邏輯電路;$display和$write的格式需要注意;常用Verilog語(yǔ)法之四initial
begin
areg=0;//初始化寄存器areg
for(index=0;index
memory[index]=0;
//初始化一個(gè)memory
end
在這個(gè)例子中用initial語(yǔ)句在仿真開(kāi)始時(shí)對(duì)各變量進(jìn)行初始化,注意這個(gè)初始化過(guò)程不需要任何時(shí)間。常用Verilog語(yǔ)法之五系統(tǒng)任務(wù)$monitor時(shí)間度量系統(tǒng)函數(shù)$time系統(tǒng)任務(wù)$finish$stop$readmemb$readmemh$random編譯預(yù)處理(宏定義;文件包含處理;時(shí)間尺度;條件編譯命令)常用Verilog語(yǔ)法之五在多模塊調(diào)試的情況下,$monitor需配合$monitoron與$monitoroff使用$monito與$display的不同之處在于$monitor是連續(xù)監(jiān)視數(shù)據(jù)的變化,因而往往只要在測(cè)試模塊的initial塊中調(diào)用一次就可以監(jiān)視被測(cè)試的所以感興趣的信號(hào),不需要也不能在always過(guò)程中調(diào)用$monitor$time常用在$monitor中,用來(lái)做時(shí)間標(biāo)記常用Verilog語(yǔ)法之五$stop和$finish常用在測(cè)試模塊的initial模塊中,配合時(shí)間延遲用來(lái)控制仿真的持續(xù)時(shí)間;$random在編寫測(cè)試程序是十分有用的,可以用來(lái)產(chǎn)生邊沿不穩(wěn)定的波形,和隨機(jī)出現(xiàn)的脈沖;$readmem在編寫測(cè)試程序是也十分有用,可以用來(lái)生成給定的復(fù)雜數(shù)據(jù)流.常用Verilog語(yǔ)法之五宏定義字符串引用時(shí),不要忘記,要用`引號(hào)Include等編譯預(yù)處理也必須用`引導(dǎo),而不是與C語(yǔ)言一樣用#引導(dǎo)或不需要引導(dǎo)符;關(guān)于阻塞和非阻塞的原則歸納總結(jié):原則一:時(shí)序電路建模時(shí),用非阻塞賦值;原則二:鎖存器電路建模時(shí),用非阻塞賦值;原則三:用always塊寫組合邏輯時(shí),采用阻塞賦值;常用Verilog語(yǔ)法之五原則四:在同一個(gè)always塊中同時(shí)建立時(shí)序和組合邏輯電路時(shí),用非阻塞賦值;原則五:在同一個(gè)always塊,不要同時(shí)使用非阻塞賦值和阻塞賦值;原則六:不要在多個(gè)always塊中為同一個(gè)變量賦值;原則七:用$strobe系統(tǒng)任務(wù)來(lái)顯示用非阻塞賦值的變量值;原則八:在賦值是不要用#0延遲;練習(xí)分別使用如下方式設(shè)計(jì)一個(gè)3輸入或門or3:連續(xù)賦值原語(yǔ)調(diào)用
UDP過(guò)程賦值練習(xí)設(shè)計(jì)一個(gè)對(duì)同步輸入碼流中“10110”序列的檢測(cè)電路完成一個(gè)8位的雙向移位寄存器的設(shè)計(jì)。要求能夠在控制信號(hào)和時(shí)鐘的共同作用下進(jìn)行并行輸入、左移和右移操作。其中的左移與右移操作都是用外來(lái)數(shù)據(jù)位填充移空位的。練習(xí)設(shè)計(jì)一個(gè)function,它完成兩個(gè)4位操作數(shù)a與b之間的8種操作,產(chǎn)生5位的結(jié)果out(不考慮溢出情況),8種功能由3位的輸入select信號(hào)選擇,分別如下:select功能3’b000a3’b001a+b3’b010a-b3’b011a/b3’b100a%b3’b101a<<13’b110a>>13’b111(a>b)(比較)練習(xí)1、數(shù)字電路設(shè)計(jì)有那幾種層次,可否分別舉個(gè)例子?2、能否回憶一下在學(xué)校中用原理圖進(jìn)行設(shè)計(jì)的方法或在數(shù)字電路課中的進(jìn)行數(shù)字電路設(shè)計(jì)的方法?能否用HDL語(yǔ)言簡(jiǎn)單描述一下4位寬的加法器?3、當(dāng)前兩種硬件描述語(yǔ)言是什么?4、以CPU為例,能否畫出Top-Down的樹(shù)狀圖?5、假設(shè)一D觸發(fā)器組的器件Reg8,輸入信號(hào)Din,輸出信號(hào)Qout,位寬8位,時(shí)鐘信號(hào)Clk,異步復(fù)位信號(hào)Rst,用于實(shí)現(xiàn)對(duì)8位數(shù)據(jù)總線的寄存,請(qǐng)描述出module語(yǔ)句,并畫出電路的示意圖練習(xí)6、HDL有哪幾種建模方式?7、結(jié)構(gòu)化建模方式主要的語(yǔ)句是什么?.A(A)的兩個(gè)A具體含義是什么?8、數(shù)據(jù)流的建模方式采用什么語(yǔ)句?語(yǔ)法是什么?9、行為建模方式采用什么語(yǔ)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)產(chǎn)品代加工與農(nóng)業(yè)綠色生產(chǎn)合作合同3篇
- 2025年度全新員工離職保密協(xié)議及知識(shí)產(chǎn)權(quán)歸屬合同2篇
- 二零二五年度互聯(lián)網(wǎng)醫(yī)療股東股權(quán)變更及服務(wù)協(xié)議3篇
- 二零二五年度文化場(chǎng)館租賃合同范本3篇
- 二零二五年度環(huán)保材料研發(fā)人員勞動(dòng)合同書(含成果轉(zhuǎn)化)2篇
- 2025年公司法人變更合同審查與合規(guī)性審查專項(xiàng)服務(wù)3篇
- 二零二五年度環(huán)保設(shè)備檢修及保養(yǎng)協(xié)議3篇
- 二零二五年度農(nóng)產(chǎn)品電商運(yùn)營(yíng)委托收購(gòu)合作協(xié)議3篇
- 2025養(yǎng)生館合伙人生態(tài)養(yǎng)生旅游項(xiàng)目合作協(xié)議3篇
- 二零二五年度農(nóng)機(jī)作業(yè)與農(nóng)村環(huán)境保護(hù)服務(wù)合同3篇
- 透水混凝土工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
- 2023年中荊投資控股集團(tuán)有限公司招聘筆試模擬試題及答案解析
- DPP-4抑制劑的臨床應(yīng)用及優(yōu)勢(shì)解析課件
- 《起重吊裝方案編制》課件
- 光伏扶貧項(xiàng)目可行性研究報(bào)告
- 鈑金沖壓件質(zhì)量要求
- 2022年高考全國(guó)甲卷語(yǔ)文試題評(píng)講課件55張
- 欠條(標(biāo)準(zhǔn)模版)
- 深圳京基·KKmall市場(chǎng)考察報(bào)告(45頁(yè)
- 國(guó)家開(kāi)放大學(xué)電大本科《西方社會(huì)學(xué)》2023-2024期末試題及答案(試卷代號(hào):1296)
- JBT5323-91立體倉(cāng)庫(kù)焊接式鋼結(jié)構(gòu)貨架 技術(shù)條件
評(píng)論
0/150
提交評(píng)論