版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
6Verilog
硬件描述語言
以及EGO1ARTIX-7介紹西安交通大學電氣工程學院寧改娣
博士
教授門電路IC設計電路舉例
假設要實現(xiàn)(不要求化簡):2026/1/30PLDINTRODUCTION可以想象,使用數(shù)以百計的不同邏輯門實現(xiàn)復雜數(shù)字邏輯變得非常困難,除了手頭要有需要的邏輯門,PCB的面積也將會非常大、功耗和可靠性問題突出。Thencame“programmablelogic”—theideathatimplementingalllogicdesignsusing7400-or4000-seriesICsisnolongerneeded.可編程邏輯器件(ProgrammableLogicDevices,PLD)主流是FPGA。PLD內(nèi)部集成了大量資源,出廠后可以實現(xiàn)用戶需要的各種不同功能,第五章介紹,不講結構也可以用2026/1/30PLD設計舉例(實驗室早期平臺)用很少的PLD資源實現(xiàn)了2026/1/30FPGAdesignflow原理圖和VHDL實現(xiàn)X=AB2026/1/30PLD及平臺左84引腳右475腳一張白紙2026/1/306.1硬件描述語言簡介HardwareDescriptionLanguage,HDL是對硬件電路及其執(zhí)行過程的描述。用軟件方法對硬件的結構和運行進行建模。所以程序設計過程也叫電路建模過程。HDL有上百種,成為IEEE的HDL共有2種:VHDL,1987成為IEEE標準,美國軍方組織開發(fā)
即VHSICHDL,VHSIC——VeryHighSpeedIntegratedCircuit)VerilogHDL,1995成為IEEE標準,民間開發(fā)HDL為適應新的情況,迅速發(fā)展新的硬件描述語言,像Superlog、SystemC、Cynlib
C++、SystemVerilog等等。Xilinx-7系列的綜合支持C、C++、SystemC等高級語言。2026/1/30VHDL就是超高速集成電路硬件描述語言。VHDL的主要優(yōu)點是:①是一種高層次的硬件描述語言,與器件的具體特性無關,②可移植性好。Verilog語法類似于C語言??梢造`活、簡潔地進行各種級別的邏輯設計,方便、快速地進行數(shù)字邏輯系統(tǒng)的仿真驗證、時序分析和邏輯綜合。Verilog硬件描述語言的優(yōu)點是:書寫簡潔,結構清晰,容易掌握,便于自學。2001年發(fā)布的Verilog
HDL
1364-2001標準中加入了VerilogHDL-A標準,使Verilog有了模擬設計描述的能力。VHDL與Verilog比較(指導書有簡介)VerilogHDL與C語言Verilog和C都對大小寫敏感。;、/*...*/和//、
“==”Verilog語言和C語言一樣都不能用關鍵字作為變量名2026/1/30C語言VerilogHDLfunctionmodule,function,taskif-then-elseif-then-elseforforwhilewhilecasecasebreakbreakdefinedefineprintfprintfintint{…}begin…endVerilog語言中沒有C語言中的一些較抽象的語法,例如迭代、指針、不確定次數(shù)的循環(huán)等。VerilogHDL與C語言Verilog語言描述的是電路!C語言編寫的可執(zhí)行程序。C程序是一行接一行依次執(zhí)行的,屬于順序結構——串行執(zhí)行指令,任一時間點只能有一條指令在執(zhí)行。
.exeVerilog描述的硬件是可以在同一時間同時運行的,屬于并行結構。一旦設備電源開啟,硬件的每個單元就會一直處于運行狀態(tài)?!猇erilog語言是并發(fā)執(zhí)行的。電路2026/1/30VerilogHDL與C語言VerilogHDL的模塊調用與C語言的函數(shù)調用也有區(qū)別:C語言每調用一次某函數(shù),就是去存儲器中存儲該函數(shù)的空間讀取指令執(zhí)行一次該函數(shù),入口地址固定的。VerilogHDL即使對同一個模塊的不同調用,每調用一次,都會綜合生成對應的硬件電路。評價HDL代碼的優(yōu)劣,要看綜合、實現(xiàn)后是否滿足面積、速度等指標要求,以及資源利用率的多少?2026/1/30VerilogHDL翻譯工具
綜合——是一種軟件工具,將高層次邏輯設計轉換成低層次的電路描述文件(網(wǎng)表文件,EDIF格式的文本文件)實現(xiàn)——也是一種軟件工具,是將網(wǎng)表文件翻譯成所選PLD器件的的底層模塊與硬件原語,將設計映射到FPGA器件結構上,并布局布線。即翻譯、映射和布局布線??捎糜诰C合的Verilog語法是相當有限的。語法沒有錯誤的Verilog程序不一定都能綜合,能綜合不一定都能實現(xiàn)。但基本的、常用的語法就可以實現(xiàn)大多數(shù)的電路設計。初學者要養(yǎng)成了解相關語法實現(xiàn)的硬件電路。2026/1/30Verilog的變量一種為網(wǎng)絡型(netstype),對應組合電路變量另一種為寄存器型(registertype),描述時序電路變量nets型變量指輸出根據(jù)輸入的變化而更新其值的變量register型變量對應的是具有狀態(tài)保持作用的電路元件,如觸發(fā)器、寄存器等。2026/1/30nets型變量(網(wǎng)絡型變量)wirea,b; //定義了兩個寬度為1位wire型變量a,bwire[7:0]out;wire[3:0]in;assignout[5:2]=in;//in賦值給out向量的第2位~5位2026/1/30類型功能說明wire,tri標準連線類型(缺省為wire類型)其取值為0,1,x,zwor,trior多重驅動時,具有線或特性的連線wand,triand多重驅動時,具有線與特性的連線tri1,tri0分別為上拉電阻和下拉電阻supply1,supply0分別為電源(邏輯1)和地(邏輯0)register型變量register型數(shù)據(jù)保持最后一次賦值,默認初始值為不定值x,通過過程賦值語句賦值reg數(shù)據(jù)名1,數(shù)據(jù)名2,……數(shù)據(jù)名n;//定義n個一位的reg變量,rega,b; //定義了兩個寬度為1位的reg型變量a,breg[n-l:0]數(shù)據(jù)名1,數(shù)據(jù)名2,……數(shù)據(jù)名n;//定義n位寬度的向量,例如:reg[7:0]data;//定義data為8位寬的reg型向量2026/1/30類型功能說明reg常用的寄存器型變量
integer32位帶符號整數(shù)型變量
real64位帶符號整數(shù)型變量
time無符號時間變量
Wire和reg的區(qū)別寄存器型數(shù)據(jù)保持最后一次的賦值,而線型數(shù)據(jù)需要持續(xù)的驅動;wire只能被assign連續(xù)賦值,wire表示直通,即只要輸入有變化,輸出馬上無條件地反映,wire型的變量綜合出來一般是一根導線。reg只能在initial和always中賦值。reg表示一定要有觸發(fā),輸出才會反映輸入;在過程賦值語句中,表達式右側的計算結果在某種條件的觸發(fā)下放到左側的一個變量當中。上、下沿或高、低電平2026/1/30數(shù)字和常量表示格式:<位寬>'<進制><數(shù)字>8'b11000101 //位寬為8位的二進制數(shù)110001018'hc5 //位寬為8位的十六進制數(shù)c5197//代表十進制數(shù)197,十進制數(shù)可缺省8‘b1001xxxx//位寬為8位的二進制數(shù),低四位不確定,等價于8'h9x8‘b1010zzzz//等價于8’hAz,Z或者?表示高阻,x、z不區(qū)分大小寫參數(shù)用于模塊中定義常量
格式:parameter參數(shù)名1=表達式,參數(shù)名2=表達式…;parametersel=8,code=8‘ha3;2026/1/30Verilog運算符2026/1/30C語言VerilogHDL語言功能++加--減**乘//除%%取模!!邏輯取反&&&&邏輯與||||邏輯或>>大于<<小于>=>=大于等于<=<=小于等于====等于!=!=不等于~~位反相&&按位邏輯與||按位邏輯或^^按位邏輯異或~^~^按位邏輯同或>>>>右移<<<<左移?:?:同等于if-else敘述算術運算符邏輯運算關系運算符按位邏輯運算Verilog語言運算符的優(yōu)先級運算類型運算符優(yōu)先級單目運算+,-,!,~高優(yōu)先級↓↓↓加()避免錯誤
低優(yōu)先級乘、除、取模*,/,%雙目運算(加、減)+,-移位<<,>>關系<,<=,>,>=等價==,!=,===,!==按位與、單目運算(與、與非)&,~&單目或雙目運算(異或、同或)^,^~按位或、單目運算(或、或非)|,~|邏輯與&&邏輯或||條件?:2026/1/30模塊(module)是Verilog設計中的基本單元,每個Verilog設計的系統(tǒng)中都由若干module組成①模塊在語言形式上是以關鍵詞module開始,endmodule結束的一段程序。②模塊的實際意義是代表硬件電路的邏輯實體。③每個模塊都實現(xiàn)特定的功能。④模塊之間是并行運行的。⑤模塊是分層的,高層模塊通過調用、連接低層模塊的實例來實現(xiàn)復雜的功能。⑥各模塊連接完成整個系統(tǒng),因此,需要一個頂層模塊(top-module)。2026/1/30自頂向下(TOP-DOWN)的設計方法頂層文件多數(shù)用原理圖設計(比如,CPU的ALU、控制器、指令譯碼、PC等部件)2026/1/30Verilog模塊(module)的結構
2026/1/30Verilog模塊的端口示意圖是Verilog程序的基本設計單元包含:模塊聲明、端口定義、信號類型聲明和邏輯功能描述四部分組成。Verilog模塊的結構(舉例1)modulenot2_inst(a,b,c);//模塊名為not2_inst,端口列表a,b,cinputa,b; //模塊的輸入端口為a,boutputc; //模塊的輸出端口為cwirea,b,c; //定義信號的數(shù)據(jù)類型(默認)assignc=~(a&b); //邏輯功能描述endmodule //模塊定義結束2026/1/30Verilog設計的描述風格Verilog設計的描述風格可分為:結構(Structural)描述數(shù)據(jù)流(DataFlow)描述行為(Behavioural)描述混合描述2026/1/30結構(Structural)描述知道具體電路結構。modulemux2_1( inputa,b,sl, outputout ); wirensl,sela,selb;
notu1(nsl,sl);
andu2(sela,a,nsl);
andu3(selb,b,sl);
oru4(out,sela,selb);endmodule2026/1/30
結構化描述就是在設計中,通過實例化(instantiate)Verilog語言內(nèi)建的元件或是已經(jīng)設計好的模塊來完成設計實體功能的描述。
例子中引用了Verilog語言內(nèi)建的not、and和or門原語。結構(Structural)描述特點描述的是門級電路結構或模塊結構很難看出其描述的邏輯功能是什么適合開發(fā)小規(guī)模的組合電路側重于描述電路由那些基本元件組成以及元件的相互連接關系2026/1/30數(shù)據(jù)流(DataFlow)描述知道邏輯關系表達式modulemux2_1( inputa,b,sl, outputout ); assignout=(a&~sl)|(b&sl);endmodule側重于邏輯表達式以及HDL運算符的靈活運用2026/1/30行為(Behavioural)描述行為描述只關注邏輯電路輸入、輸出的因果關系(行為特性),即在何種輸入條件下,產(chǎn)生何種輸出(操作),并不關心電路的內(nèi)部結構。modulemuxtwo( inputa,b,sl, outputregout); always@(sloraorb) if(!sl)out=a; elseout=b;endmoduleEDA的綜合工具會自動將行為描述轉換成電路結構。2026/1/30混合描述在一個.v程序中,用assign語句描述簡單的組合邏輯電路,用always語句描述較為復雜的邏輯過程。一個.v程序所表達的邏輯電路可由多個assign語句和多個always過程塊來描述。多個assign語句和多個always過程塊是同時并發(fā)執(zhí)行的。2026/1/30Verilog語句類別語句可綜合性賦值語句持續(xù)賦值語句assign√過程賦值語句=、<=√條件語句if-else語句√case語句√循環(huán)語句for語句√repeat語句while語句forever語句過程語句initial語句always語句√function語句√task語句√編譯預處理語句`define語句√`include語句√`timescale語句√`ifdef、`else、`endif√2026/1/30賦值語句持續(xù)賦值語句
assign(為網(wǎng)絡型變量賦值)格式:assign變量=表達式;assignc=~(a|b);在上面的賦值中,a和b信號的任何變化,都將隨時反映到c上來,因此稱為持續(xù)賦值方式。2026/1/30賦值語句2.過程賦值語句always(為reg等常用變量類型賦值)即寄存器建模。在always過程塊中的被賦值變量必須是reg型,Verilog語言支持兩種類型的賦值:1)非阻塞(non_blocking)賦值(并行賦值,不阻塞下句)非阻塞賦值使用“<=”語句,如
:b<=a;塊中所有<=語句同時將右邊賦值給左邊變量。2026/1/30非阻塞過程賦值語句(“<=”)--注意緩沖器2026/1/30波形圖紅色部分表示什么?綜合后原理圖中,IO信號自動生成了緩沖器賦值語句2.過程賦值語句2)阻塞(blocking)賦值方式(串行賦值)阻塞賦值使用“=”語句,如:b=a;阻塞賦值在該語句結束時就完成賦值操作,即b的值在該賦值語句結束后立刻改變。如果在一個塊語句中,有多條阻塞賦值語句,那么在前面的賦值語句沒有完成之前,阻塞(blocking)后面賦值語句的執(zhí)行。注意:assign賦值語句不允許出現(xiàn)在always語句塊中。2026/1/30阻塞過程賦值語句(“=”)2026/1/30賦值語句再舉例:moduleshiftreg( //這是正確使用非阻塞賦值的實例inputclk, inputserin, outoutreg[3:0]q ); always@(posedgeclk) begin q[0]<=serin; //非阻塞賦值:<= q[1]<=q[0]; q[2]<=q[1] q[3]<=q[2]; //寫作q<={q[2:0],serin};更簡單一些 endendmodule//實現(xiàn)移位寄存器功能,用=語句結果如何?2026/1/30用if-else語句描述一個三態(tài)門moduletristate( inputin,en, outputregout ); always@(inoren) begin if(en)out<=in; elseout<=1'bz; end endmodule2026/1/30用always過程語句描述D觸發(fā)器的Verilog程序moduleD_Flip_Flop( inputclk,//時鐘信號輸入端口,信號類型默認為wire型 inputset, //置位輸入端口,信號類型默認為wire型 inputD, //觸發(fā)信號輸入端口,信號類型默認為wire型 inputclr, //清零信號輸入端口,信號類型默認為wire型 outputregq //輸出端口,always過程塊中的輸出必須是reg型變量 ); always@(posedgeclkorposedgeclrornegedgeset)//敏感信號列表 begin//如果clk或clr有上升沿,或set的下降沿,將執(zhí)行下列程序段 if(clr)q<=0; //如果clr為高電平,則q輸出0 elseif(!set)q<=1;//如果set為低電平,則q輸出1 elseq<=D; //否則q輸出D end //always過程塊結束endmodule //模塊結束2026/1/30用case語句描述的4選1MUXmodulemux4_1b( inputin1,in2,in3,in4,s0,s1, outputregout ); always@(*)//使用通配符,任何一個輸入變量發(fā)生變化,都會執(zhí)行always case({s0,s1}) 2'b00:out=in1; 2'b01:out=in2; 2'b10:out=in3; 2'b11:out=in4; default:out=2'bx; endcaseendmodule2026/1/30
實驗板EGO1-模數(shù)混合口袋實驗平臺12026/1/30FPGA采用Artix-7XC7A35T-1CSG324-C的器件即Artix-7系列,封裝形式(Package)為CSG324,速度等級(Speedgrade)為-1(慢),溫度等級(TempGrade)為C商用)2026/1/30xilinxfpga溫度等級E擴展級(商業(yè)級)0~100°I工業(yè)級-40~100℃Q汽車級-40~125℃XA(XA打頭)M軍工級-55~125℃(DEFENSEGRADE)EGO1采用XilinxArtix-7系列XC7A35T-1CSG324CFPGA其資源如下:2026/1/302026/1/30
實驗板Basys2介紹USBportFour6-pinPmodconnectorsVGAPS/2相關外圍接口JTAGprogrammingviaon-boardUSB2portusingthefreeAdeptSoftware(version2.0orlater)參考文獻:/或/
/或/Basys2Reference: 用戶參考手冊Basys2Schematic: Basys2開發(fā)板原理圖Basys2_100_250General: 管腳約束文件AdeptIOExpansion: AdeptI/O擴展口參考設計ActivePowerMeter: 有源功率計參考設計Basys2UserDemo: 用戶演示文件MouseDisplayerRefComp: 鼠標顯示參考模塊MouseRefComp: 鼠標參考模塊設計PwmRefComp: PWM(脈寬調制)模塊設計Rs232RefProj: RS232參考設計工程文件VGARefComp: VGA參考設計模塊課外作業(yè):用Verilog實現(xiàn)X=AB下載安裝Vivado;——PLD和處理器都需要IDE下載需要的學習資料及實驗案例;注意方法!建立實現(xiàn)與非的工程文件;管腳約束文件(XAB);可以紙上談兵,仿真驗證;下載到FPGA,用開關和LED測試(開關作為輸入,LED作為輸出,要熟悉EGO1的原理圖)開關抖動對該功能是否有影響?抖動引起的LED閃爍對人的視覺是否有影響?如何消除抖動?
學習通上有:手把手教你設計2026/1/30熟悉軟件開發(fā)介紹ISE軟件使用與FPGA設計實例熟悉工程建立、源文件編輯、仿真、綜合、實現(xiàn)、下載等。Basys2實驗板上對應開關和LED原理圖。2026/1/30課外作業(yè):熟悉EGO原理圖2026/1/302026/1/30西安交通大學電氣學院電子學abcdefg七段數(shù)碼管的結構如圖所示,它有七個發(fā)光段(a、b、c、d、e、f、g);LED數(shù)碼管的每個段為一個或數(shù)個發(fā)光二極管,加上適當?shù)碾妷簳r,對應段就發(fā)光。七段數(shù)碼管的外形00000001001000110100010101100111100010018421BCD碼相應發(fā)光段2026/1/30西安交通大學電氣學院電子學1.七段LED數(shù)碼管的結構及顯示原理
LED數(shù)碼管有兩種結構:共陰和共陽,共陰數(shù)碼管的外形和內(nèi)部結構為:補充七段數(shù)碼管結構、原理(7.2.4)R+5VRR······2026/1/30西安交通大學電氣學院電子學74LS47abcdefgLTBI/RBORBIA0A1A2A374LS47abcdefgLTBI/RBORBIA0A1A2A374LS47abcdefgLTBI/RBORBIA0A1A2A374LS47abcdefgLTBI/RBORBIA0A1A2A3···abcdefg·COMR···abcdefg·COMR···abcdefg·COMR···abcdefg·COMRVCCA1B1C1D1A0B0C0D0A-1B-1C-D-1A-2B-2C-D-2RLT1多個數(shù)碼管的靜態(tài)顯示
所有數(shù)碼管公共端始終有效,各數(shù)碼管a~g分開數(shù)碼管動態(tài)顯示動態(tài)顯示:公共端分時有效,數(shù)碼管a~g段分別接一起。2026/1/30西安交通大學電氣學院電子學2026/1/30EGO上的數(shù)碼管部分原理圖
——來自EGO1用戶手冊_v2.22026/1/30EGO上的數(shù)碼管部分原理圖
數(shù)碼管限流電阻?B2上的4個數(shù)碼管電路是共陽極還是共陰極?靜態(tài)顯示?動態(tài)顯示?2026/1/30BCD到七段顯示譯碼器,若是共陽極數(shù)碼管2026/1/30Verilog
HDL參考源代碼
B2板BCD-TO_7SEG接共陽極數(shù)碼管,共陰極?modulehex7seg( inputwire[3:0]x, outputreg[6:0]a_to_g, outputwire[3:0]an ); assignan=4'b0000;//4個數(shù)碼管全部使能always@(*) case(x) 0:a_to_g=7‘b0000001;//x=0時,7位二進制數(shù)賦給a_to_g 1:a_to_g=7'b1001111;//a_to_g的高位對應A段,最低位對應G段 2:a_to_g=7'b0010010; 3:a_to_g=7'b0000110; 4:a_to_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 殘疾人服務機構財務制度
- 石廠財務制度管理制度表
- 廣東省村級財務制度
- 掛靠施工單位財務制度
- 民建支部財務制度
- 公寓治安保衛(wèi)制度
- 廢紙回收公司管理制度(3篇)
- 學校垃圾管理制度及措施(3篇)
- 火炬安裝施工方案(3篇)
- 景區(qū)門票預售管理規(guī)范制度
- 慢性胃炎的護理業(yè)務查房
- 經(jīng)典名著《紅樓夢》閱讀任務單
- 古田會議學習課件
- 高寒地區(qū)建筑工程冬季施工技術規(guī)范研究
- 電流保護原理課件
- DBJT15-212-2021 智慧排水建設技術規(guī)范
- 民俗學課件萬建中
- 能源與動力工程專業(yè)培養(yǎng)目標合理性評價分析報告
- 公司員工活動室管理制度
- 2025年水晶手鏈市場需求分析
- CJ/T 3066-1997內(nèi)磁水處理器
評論
0/150
提交評論