




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
常用語法之一2023/5/281第一頁,共五十三頁,編輯于2023年,星期六內容提要3.1模塊結構3.2數據類型2023/5/282第二頁,共五十三頁,編輯于2023年,星期六3.1模塊結構Verilog的基本設計單元是“模塊”(block)。一個模塊是由兩部分組成的:一)描述接口;二)描述邏輯功能,即定義輸入是如何影響輸出的。下面舉例說明:2023/5/283第三頁,共五十三頁,編輯于2023年,星期六3.1模塊結構端口定義I/O說明內部信號聲明功能定義2023/5/284第四頁,共五十三頁,編輯于2023年,星期六3.1模塊的結構Verilog模塊的結構由在module和endmodule
關鍵詞之間的四個主要部分組成:
-端口信息:moduleblock1(a,b,c,d);-輸入/輸出說明:inputa,b,c;outputd;-內部信號:wirex;-功能定義:assignd=a|x;assignx=(b&~c);endmodule
2023/5/285第五頁,共五十三頁,編輯于2023年,星期六編寫VerilogHDL模塊的練習請在下面的空格中填入適當的符號使其成為右圖的Verilog模塊:
moduleblock1(a,b,—,—,—);input—,—,—;——d,—;assignd=a|(b&~c);assigne=(b&~c);______abcde2023/5/286第六頁,共五十三頁,編輯于2023年,星期六編寫VerilogHDL模塊的練習請在下面的空格中填入適當的符號使其成為右圖的Verilog模塊:
moduleblock1(a,b,c,d,e);inputa,b,c;
outputd,e;assignd=a|(b&~c);assigne=(b&~c);
endmoduleabcde2023/5/287第七頁,共五十三頁,編輯于2023年,星期六“與或非”門電路moduleAOI(A,B,C,D,F);inputA,B,C,D;outputF;wireA,B,C,D,F; assignF=~((A&B)|(C&D));endmodule2023/5/288第八頁,共五十三頁,編輯于2023年,星期六3.1.1模塊的端口定義模塊的端口聲明了模塊的輸入輸出端口
module模塊名(端口1,端口2,端口3,…);模塊的端口表示的是模塊的輸入輸出口名,與別的模塊聯系端口的標識。模塊引用的問題
2023/5/289第九頁,共五十三頁,編輯于2023年,星期六模塊調用(引用)形式模塊調用的基本形式為:模塊名調用名(端口名表項)
由于描述的是具體的硬件邏輯,每個模塊都表示一個具有特定功能的電路塊。因此每當它被其它模塊調用時,該模塊內部被調用的電路塊就被復制一次。如果在當前模塊中多次調用同一個模塊,則需要用不同的調用名。VerilogHDL的模塊調用和C語言的函數調用相似,也存在形參和實參的結合問題。2023/5/2810第十頁,共五十三頁,編輯于2023年,星期六模塊調用(引用)方式模塊的調用方式可大致分為兩種:位置關聯調用方式、端口名關聯調用方式。【例】模塊調用的例子。moduleha(out1,out2,in1,in2);inputin1,in2;outputout1,out2;…...endmodule2023/5/2811第十一頁,共五十三頁,編輯于2023年,星期六模塊調用(引用)方式模塊調用采用位置關聯調用方式,只需按序列出實例的端口名。模塊實例語句如下:
hah1(P,Q,S,C);在本語句中,ha是模塊名,h1是實例名稱,并且端口按序關聯。模塊調用采用端口名關聯調用方式,則無需按序排列端口名,但實例的端口信號和被調用模塊的端口信號必須一一列出。模塊實例語句如下:
hah2(.in2(C),.in1(S),.out1(P),.out2(Q),)
由于端口之間的對應關系十分清楚,因此端口名的排列順序可隨意改變。2023/5/2812第十二頁,共五十三頁,編輯于2023年,星期六模塊端口定義聲明輸入、輸出或是雙向聲明數據類型(wireorreg)default:wire輸入和雙向不能聲明為reg型測試模塊不需要端口定義2023/5/2813第十三頁,共五十三頁,編輯于2023年,星期六3.1.2模塊內容I/O說明內部信號聲明功能定義2023/5/2814第十四頁,共五十三頁,編輯于2023年,星期六I/O說明的格式(1)輸入口:input[信號位寬-1,0]端口名1;input[信號位寬-1,0]端口名2;……input[信號位寬-1,0]端口名i;輸出口output[信號位寬-1,0]端口名1;output[信號位寬-1,0]端口名2;……output[信號位寬-1,0]端口名j;輸入輸出口inout[信號位寬-1,0]端口名1;inout[信號位寬-1,0]端口名2;……inout[信號位寬-1,0]端口名k;2023/5/2815第十五頁,共五十三頁,編輯于2023年,星期六I/O說明的格式(2)可以在端口聲明語句中同時進行端口類型說明modulemodule_name(inputport1,inputport2,…outputport1,outputport2…);2023/5/2816第十六頁,共五十三頁,編輯于2023年,星期六內部信號說明對端口信號、節點信號必須進行數據類型的定義默認定義:wire類型
regcout;reg[3:0]out;wireA,B,C,D;2023/5/2817第十七頁,共五十三頁,編輯于2023年,星期六功能定義在Verilog模塊中有三種方法可以生成邏輯電路:-用assign語句:assigncs=(a0&~a1&~a2);-用元件的實例調用:and2and_inst(q,a,b);-用always塊:always@(posedgeclkorposedgeclr)begin
if(clr)q<=0;
elseif(en)q<=d;end2023/5/2818第十八頁,共五十三頁,編輯于2023年,星期六功能定義assign:描述組合邏輯最常用的方法之一always:組合邏輯時序邏輯“<=“一種賦值2023/5/2819第十九頁,共五十三頁,編輯于2023年,星期六并發和順序執行并發:Verilog模塊中各子模塊是并發執行過程塊:always、initial元件例化assign順序:always模塊內部各個always塊之間是并發關系2023/5/2820第二十頁,共五十三頁,編輯于2023年,星期六要點小結Verilog模塊中所有過程塊、連續賦值語句、實例引用都是并行的;表示一種通過變量名互相連接的關系;同一模塊中這三者出線的先后順序沒有關系;只有assign和實例引用語句可以獨立于過程塊出線在模塊的功能定義部分。2023/5/2821第二十一頁,共五十三頁,編輯于2023年,星期六內容提要3.1模塊結構3.2數據類型2023/5/2822第二十二頁,共五十三頁,編輯于2023年,星期六Verilog有三種主要的數據類型:
Nets
表示器件之間的物理連接,稱為網絡連接類型Register
表示抽象的儲存單元,稱為寄存器/變量類型Parameter
表示運行時的常數,稱為參數類型主要的數據類型2023/5/2823第二十三頁,共五十三頁,編輯于2023年,星期六0、低、偽、邏輯低、地、VSS、負插入01XZ0bufbufbufbufif11、高、真、邏輯高、電源、VDD、正插入X、不確定:邏輯沖突無法確定其邏輯值HiZ、高阻抗、三態、無驅動源Verilog的四種邏輯值2023/5/2824第二十四頁,共五十三頁,編輯于2023年,星期六3.2.1常量值不改變的量數字整數二進制整數b或B十進制整數d或D十六進制整數h或H八進制整數o或O8‘b101000118’haa2023/5/2825第二十五頁,共五十三頁,編輯于2023年,星期六3.2.1常量x和zX:不定值Z:高阻值4’b10x08’h4z2023/5/2826第二十六頁,共五十三頁,編輯于2023年,星期六3.2.1常量負數-:放在數字定義表達式的最前面-8’d5下畫線分割數的表達2023/5/2827第二十七頁,共五十三頁,編輯于2023年,星期六3.2.1常量參數parameterparameter參數名1=表達式,參數名2=表達式;表達式必須是常數表達式,只能包含數字或參數parameterbyte_size=8,byte_msb=byte_size-1;2023/5/2828第二十八頁,共五十三頁,編輯于2023年,星期六參數化設計參數化設計是電路設計的重要概念之一;參數化功能塊只要在映射過程中賦予不同的參數,就可以得到不同的設計;參數化設計在IP產業中占有重要的位置;參數屬性由其代表的參數屬性決定2023/5/2829第二十九頁,共五十三頁,編輯于2023年,星期六參數傳遞舉例moduledecode(A,F); parameterwidth=1,polarity=1;endmodulemoduletop; decode#(4,0)D1(A4,F16);decode#(5)D2(A5,F32);endmodule2023/5/2830第三十頁,共五十三頁,編輯于2023年,星期六參數要點常用參數來聲明運行時的常數。可用字符串表示的任何地方,都可以用定義的參數來代替。參數是本地的,其定義只在本模塊內有效。2023/5/2831第三十一頁,共五十三頁,編輯于2023年,星期六舉例說明:modulemd1(out,in1,in2);…..parametercycle=20,prop_del=3,setup=cycle/2-prop_del,p1=8,x_word=16’bx,file=“/user1/jmdong/design/mem_file.dat”;wire[p1:0]w1;//用參數來說明wire的位寬
….initialbegin$open(file);…….#20000display(“%s”,file);$stopend….endmodule舉例2023/5/2832第三十二頁,共五十三頁,編輯于2023年,星期六
舉例說明:modulemod(out,ina,inb);…parametercycle=8,real_constant=2.039,file=“/user1/jmdong/design/mem_file.dat”;…endmodulemoduletest;…modmk(out,ina,inb);defparammk.cycle=6,mk.file=“../my_mem.dat”;…endmodule
參數值的改寫(方法之一)
2023/5/2833第三十三頁,共五十三頁,編輯于2023年,星期六舉例說明:modulemod(out,ina,inb);…parametercycle=8,real_constant=2.039,file=“/user1/jmdong/design/mem_file.dat”;…endmodulemoduletest;…mod#(5,3.20,“../my_mem.dat”)mk(out,ina,inb);…endmodule
參數值的改寫(方法之二)2023/5/2834第三十四頁,共五十三頁,編輯于2023年,星期六3.2.2變量硬件描述語言中,變量的數據類型用來表示數字電路中的物理連線、數據存儲和傳輸單元等物理量。2023/5/2835第三十五頁,共五十三頁,編輯于2023年,星期六3.2.2數據類型線網類型:表示結構化元件間的物理連線,綜合后一般為連線節點網絡(線網)數據類型表示結構實體之間的物理連接不能存儲值,必須受到驅動值assign的驅動寄存器類型:抽象的數據存儲單元只能在always和initial語句中被賦值,有可能被綜合成寄存器2023/5/2836第三十六頁,共五十三頁,編輯于2023年,星期六Nets(網絡連線):由模塊或門驅動的連線。驅動端信號的改變會立刻傳遞到輸出的連線上。例如:右圖上,selb的改變,會自動地立刻影響或門的輸出。netsabslselbselansloutNets線網類型2023/5/2837第三十七頁,共五十三頁,編輯于2023年,星期六連接(Nets)類型變量的種類:在為不同工藝的基本元件建立庫模型的時候,常常需要用不同的連接類型來與之對應,使其行為與實際器件一致。常見的有以下幾種。
類型功能
wire,tri
對應于標準的互連線(缺省)
supply1,supply2
對應于電源線或接地線
wor,trior
對應于有多個驅動源的線或邏輯連接
wand,triand
對應于有多個驅動源的線與邏輯連接
trireg
對應于有電容存在能暫時存儲電平的連接
tri1,tri0
對應于需要上拉或下拉的連接如果不明確地說明連接是何種類型,應該是指wire類型。Nets的種類2023/5/2838第三十八頁,共五十三頁,編輯于2023年,星期六Nets線網類型wire和tri線網:兩者均為連線,tri用于描述多個驅動源同時驅動同一根線的線網類型,并無特殊意義
wireA,B;wire[7:0]Data;tri[15:0]DataBus;Verilog數據類型的缺省值為1位wire2023/5/2839第三十九頁,共五十三頁,編輯于2023年,星期六wire型wire型數據通常用來表示以assign語句賦值的組合邏輯信號。模塊的輸入輸出信號類型缺省定義為wireWire可以作為表達式輸入,也可以作為assign語句或實例元件的輸出。
wiredata1,data2,…,datan; wire[n-1:0]data1,data2,…,datan;2023/5/2840第四十頁,共五十三頁,編輯于2023年,星期六
寄存器(register)類型變量
register型變量能保持其值,直到它被賦于新的值。register型變量常用于行為建模,產生測試的激勵信號。常用行為語句結構來給寄存器類型的變量賦值。abslselbselansloutreg_areg_selreg_bRegister2023/5/2841第四十一頁,共五十三頁,編輯于2023年,星期六
寄存器(register)類型變量的數據類型
寄存器類型變量共有四種數據類型:類型功能
.
reg無符號整數變量,可以選擇不同的位寬。
integer有符號整數變量,32位寬,算術運算可產生2的補碼。
real有符號的浮點數,雙精度。
time無符號整數變量,64位寬(Verilog-XL仿真工具用64位的正數來記錄仿真時刻)Register的種類可綜合2023/5/2842第四十二頁,共五十三頁,編輯于2023年,星期六reg型registertype表示一個抽象的數據存儲單元,對應的是具有狀態保持作用的電路元件(觸發器、寄存器)只能在always語句和initial語句中被賦值,其值在兩次賦值之間被保存,具有x的缺省值。在always,initial等過程塊內,被賦值的每一個信號必須是寄存器型。
regdata1,data2,…,datan; reg[n-1:0]data1,data2,…,datan;2023/5/2843第四十三頁,共五十三頁,編輯于2023年,星期六輸入口(input)可以由寄存器或網絡連接驅動,但它本身只能驅動網絡連接。輸出口(output)可以由寄存器或網絡連接驅動,但它本身只能驅動網絡連接。輸入/輸出口(inout)只可以由網絡連接驅動,但它本身只能驅動網絡連接。如果信號變量是在過程塊(initial塊或always塊)中被賦值的,必須把它聲明為寄存器類型變量
如何選擇正確的數據類型?2023/5/2844第四十四頁,共五十三頁,編輯于2023年,星期六舉例說明數據類型的選擇moduletop;wirey;rega,b;DUTu1(y,a,b);initialbegina=0;b=0;#10a=1;….endendmodule模塊DUT的邊界輸入口輸出口輸出/入口netnetnet/registernetnet/registernetinoutmoduleDUT(Y,A,B_);outputY;inputA,B:wireY,A,B;and(Y,A,B);endmodule舉例說明數據類型的選擇2023/5/2845第四十五頁,共五十三頁,編輯于2023年,星期六
在過程塊中對變量賦值時,忘了把它定義為寄存器類型(reg)或已把它定義為連接類型了(wire)把實例的輸出連接出去時,把它定義為寄存器類型了把模塊的輸入信號定義為寄存器類型了。這是經常犯的三個錯誤!!!選擇數據類型時常犯的錯誤
2023/5/2846第四十六頁,共五十三頁,編輯于2023年,星期六Verilog模塊中的信號只有兩種主要的信號類型:
-寄存器類型:reg在always塊中被賦值的信號,往往代表觸發器,但不一定是觸發器。-連線類型:wire用assign關鍵詞指定的組合邏輯的信號或連線2023/5/2847第四十七頁,共五十三頁,編輯于2023年,星期六Verilog模塊中的信號要點需要注意的是:
-寄存器(reg)類型不一定是觸發器。
-它只是在always塊中賦值的信號。2023/5/2848第四十八頁,共五十三頁,編輯于2023年,星期六Verilog中reg與wire的不同點用寄存器(reg)類型變量生成組合邏輯舉例:modulerw1(a,b,out1,out2);inputa,b;outputout1,out2;regout1;wire
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業智能與教育投資決策風險與回報的分析
- 在線平臺優化下學生的跨領域互動探索
- 智能教育技術如何優化課堂互動
- 學生大腦的記憶系統研究
- 教育無界開啟知識共享新紀元
- 醫療健康數據與教育大數據的整合中的隱私保護
- 2024年咸陽興平市特崗教師招聘筆試真題
- 團隊合作內培訓課件
- 一年級數學計算題專項練習匯編
- 2024-2025學年度重慶青年職業技術學院單招《物理》能力檢測試卷及答案詳解(典優)
- 高空作業佩戴安全帶培訓
- 2025年春人教版英語七年級下冊 Unit 7 A Day to Remember(教學設計)
- 小學信息技術五年級上冊第3課《流程圖描述算法》教學設計
- 市政工程計量表格樣表
- 職業院校教師人工智能素養:內涵流變、框架構建與生成路徑
- 封裝車間預防錯漏混報告
- 2024年教師招聘考試教育綜合理論知識復習題庫及答案(共600題)
- GB/T 12412-2024牦牛絨
- 專項10:現代文閱讀 媒體文閱讀(練習)-【中職專用】2025年對口升學語文二輪專項突破(解析版)
- 產品檢驗知識培訓課件
- 大數據完整題庫500題(含參考答案)
評論
0/150
提交評論