電子系統(tǒng)設(shè)計(jì)Verilog語(yǔ)言基礎(chǔ)課件_第1頁(yè)
電子系統(tǒng)設(shè)計(jì)Verilog語(yǔ)言基礎(chǔ)課件_第2頁(yè)
電子系統(tǒng)設(shè)計(jì)Verilog語(yǔ)言基礎(chǔ)課件_第3頁(yè)
電子系統(tǒng)設(shè)計(jì)Verilog語(yǔ)言基礎(chǔ)課件_第4頁(yè)
電子系統(tǒng)設(shè)計(jì)Verilog語(yǔ)言基礎(chǔ)課件_第5頁(yè)
已閱讀5頁(yè),還剩80頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、電子系統(tǒng)設(shè)計(jì)第二講Verilog HDL語(yǔ)言基礎(chǔ)主要內(nèi)容HDL概述HDL發(fā)展史行為描述 vs. 結(jié)構(gòu)描述Verilog HDL基本要素基本Verilog HDL設(shè)計(jì)組合邏輯電路單元設(shè)計(jì)范例時(shí)序邏輯電路單元設(shè)計(jì)范例硬件描述語(yǔ)言設(shè)計(jì)規(guī)范ISE使用入門(mén)課程內(nèi)容回顧設(shè)計(jì)示例例:用基本門(mén)電路/觸發(fā)器實(shí)現(xiàn)下圖所示的狀態(tài)圖例:用通用中規(guī)模集成電路實(shí)現(xiàn)下圖所示的狀態(tài)圖0123456/0/1/0/0/0/1/0數(shù)字電路課程設(shè)計(jì)流程回顧組合邏輯設(shè)計(jì)流程時(shí)序邏輯設(shè)計(jì)流程中小規(guī)模集成電路實(shí)現(xiàn)設(shè)計(jì)示例&74161A2A1A001234567EN74151ZVCC編碼器/譯碼器設(shè)計(jì)示例8-3編碼器(Verilog HDL

2、設(shè)計(jì))3-8譯碼器(電路圖設(shè)計(jì))41MUX設(shè)計(jì)示例41MUX(VHDL設(shè)計(jì))41MUX(電路圖設(shè)計(jì))HDL發(fā)展史HDL:Hardware Description Language原始HDL: 如ABEL等 僅是對(duì)電路連接的簡(jiǎn)單文字描述主流HDL: 如VHDL、Verilog HDL等 在結(jié)構(gòu)描述能力基礎(chǔ)上具備行為描述能力 可面向設(shè)計(jì)以外綜合、仿真等應(yīng)用未來(lái)HDL: 如System C等 對(duì)大型系統(tǒng)設(shè)計(jì)、模塊化設(shè)計(jì)等支持度更優(yōu)ABEL語(yǔ)言程序段范例AHDL語(yǔ)言程序段范例VHDL語(yǔ)言程序段范例Verilog HDL語(yǔ)言程序段范例HDL設(shè)計(jì)方法行為描述 由輸入/輸出響應(yīng)關(guān)系描述 A componen

3、t is described by its input/output response結(jié)構(gòu)描述 由低等級(jí)的元件/基本單元的連接關(guān)系描述 A component is described by interconnecting lower-level components/ primitives行為描述設(shè)計(jì)方法示意只有電路的功能性描述,沒(méi)有結(jié)構(gòu)描述沒(méi)有具體的硬件意圖目的是綜合與仿真結(jié)構(gòu)描述設(shè)計(jì)方法示意電路的功能性和結(jié)構(gòu)涉及具體硬件目的是綜合從HDL到電路實(shí)現(xiàn)編譯 HDL語(yǔ)言正確性、可綜合性檢查綜合 形成對(duì)應(yīng)于PLD器件內(nèi)部邏輯電路資源的解釋?zhuān)ú季植季€等仿真 形成針對(duì)上述電路解釋的性能表現(xiàn)下載

4、按照流文件(Stream)格式要求植入PLDVerilog HDL發(fā)展史Verilog HDL語(yǔ)言最初于1983年由Gateway Design Automation (GDA) 公司為其模擬器產(chǎn)品開(kāi)發(fā)的硬件建模語(yǔ)言Cadence在1989年收購(gòu)GDA后,Verilog HDL語(yǔ)言于1990年正式對(duì)外發(fā)布Open Verilog International ( OVI )成立,以促進(jìn)Verilog語(yǔ)言規(guī)范的發(fā)展1993年,OVI推出了2.0版本Verilog 語(yǔ)言于2019年成為IEEE標(biāo)準(zhǔn),稱(chēng)為IEEE Std 1364-2019,2019年更新了標(biāo)準(zhǔn)Verilog HDL與其他HDL的差異

5、與ABEL、AHDL等語(yǔ)言相比上述語(yǔ)言多應(yīng)用邏輯等式來(lái)描述邏輯功能,側(cè)重于結(jié)構(gòu)描述方法Verilog HDL適合算法級(jí)、寄存器傳輸級(jí)(RTL)、門(mén)級(jí)、版圖級(jí)等各類(lèi)設(shè)計(jì)描述應(yīng)用與VHDL語(yǔ)言相比兩者都具備良好的行為描述能力Verilog HDL在描述硬件單元的結(jié)構(gòu)時(shí)更簡(jiǎn)單易讀,相比較而言,VHDL的描述長(zhǎng)度是Verilog HDL的兩倍Verilog HDL與PLD設(shè)計(jì) PLD設(shè)計(jì)是Verilog HDL的一大應(yīng)用 PLD設(shè)計(jì)僅支持Verilog HDL的一個(gè)子集 本課程后續(xù)只學(xué)習(xí)和介紹PLD設(shè)計(jì)中支持的Verilog HDLVerilog HDL基本要素注意點(diǎn):大小寫(xiě)敏感所有關(guān)鍵詞須小寫(xiě)空格用

6、于增加可讀性分號(hào)是語(yǔ)句終結(jié)符單行注釋?zhuān)?多行注釋?zhuān)?* */時(shí)間規(guī)范用于仿真Verilog HDL基本要素圖端口端口列表列出所有端口名稱(chēng)端口類(lèi)型input 輸入端口output 輸出端口inout 雙向端口端口聲明 ;例:module hello_world(a,b,c,d,e);input a, b, d;output c, e; assign c = a & b; assign e = d;endmodule數(shù)據(jù)類(lèi)型(Data Types)常量 參數(shù)(parameter) 變量 線網(wǎng)型(nets type) wire型最常用 寄存器型(register type) 標(biāo)量 向量 數(shù)組變量線網(wǎng)

7、型 用關(guān)鍵詞wire等聲明相當(dāng)于硬件電路里的物理連接,特點(diǎn)是輸出值緊跟輸入值變化例:wire7:0 in, out;assign out=in;寄存器型 用reg或integer申明具有保持作用的元件 注:不表示必將綜合成物理(硬件)寄存器!在過(guò)程語(yǔ)句(always, initial)中賦值integer是含符號(hào)整數(shù)型變量*存儲(chǔ)器二維寄存器數(shù)組不能是線網(wǎng)型(Net)例如:reg31:0 mem 0:1023; / 1k 32 reg31:0 instr;instr = mem2;注意:不允許對(duì)存儲(chǔ)器進(jìn)行雙索引操作instr = mem27:0 / 非法!常量 parameter可用來(lái)定義常量例

8、:parameter size=8; reg size-1:0 a, b;常量的正確使用在高級(jí)編程和大型程序設(shè)計(jì)中很重要數(shù)字 (Numbers) (1)sized, unsized: sized: 3b010 / 3位二進(jìn)制數(shù)字,值為010unsized: 默認(rèn)為十進(jìn)制; 默認(rèn)為32-bit.進(jìn)制十進(jìn)制 (d 或 D)十六進(jìn)制 (h 或 H)二進(jìn)制(b 或 B)八進(jìn)制 (o 或 O)數(shù)字 (Numbers) (2)負(fù)數(shù)在前加負(fù)號(hào)例: -8d3 特殊數(shù)符_ (下劃線):增加可讀性x或X (未知數(shù))z或Z (高阻)若定義的位寬比實(shí)際位數(shù)長(zhǎng)如果高位是0, x, z,高位分別補(bǔ)0, x, z;如果高位

9、是1,左邊補(bǔ)0.運(yùn)算符 (Operators)1. 算術(shù)運(yùn)算符(Arithmetic)+加-減*乘/除% 取模2. 邏輯運(yùn)算符 (Logical)&邏輯與|邏輯或!邏輯非運(yùn)算符 (Operators)3. 位運(yùn)算符 (Bitwise)按位取反&按位與|按位或按位異或, 按位同或4.關(guān)系運(yùn)算 (Relational)小于大于=大于或等于注: 左移右移8. 條件(Conditional)?:9. 位拼接(Concatenation) 運(yùn)算符優(yōu)先級(jí)缺省操作符優(yōu)先級(jí)+,-,!, (單目操作符)*,/,%+,- (雙目操作符),=,!=,=,!=&,&,|&|?:()可用于調(diào)整優(yōu)先級(jí)高優(yōu)先級(jí)低優(yōu)先級(jí)行為

10、級(jí)建模 (Behavior Modeling)過(guò)程語(yǔ)句 (initial, always)塊語(yǔ)句 (begin-end, fork-join)賦值語(yǔ)句 (assign, =, =)條件語(yǔ)句 (if-else, case, casez, casex)循環(huán)語(yǔ)句 (for, forever, repeat, while)編譯向?qū)дZ(yǔ)句(define, include, ifdef, else, endif)過(guò)程語(yǔ)句initial 用于仿真中的初始化,initial語(yǔ)句中的語(yǔ)句只執(zhí)行一次模板:initial begin 語(yǔ)句1; 語(yǔ)句2; ; endalways 塊內(nèi)的語(yǔ)句是不斷重復(fù)執(zhí)行的模板:alwa

11、ys ()begin / 過(guò)程賦值 / if-else, case 等選擇 / while, repeat, for 循環(huán) / task, function調(diào)用end敏感項(xiàng)說(shuō)明門(mén)控鎖存器module D_latch(D, Clk, Q); input D, Clk; output reg Q; always(D, Clk) if (Clk) Q = D;endmoduleD觸發(fā)器module flipflop(D, Clk, Q); input D, Clk; output reg Q; always(posedge Clk) Q = D;endmodule賦值語(yǔ)句連續(xù)賦值(Continuou

12、s) assign為連續(xù)賦值語(yǔ)句,主要對(duì)wire型變量賦值例:2選1數(shù)據(jù)選擇器module MUX21_1(out, a, b, sel);input a, b, sel;output out;assign out=(sel=0)?a:b;endmodule過(guò)程賦值(Procedural)左邊的賦值變量必須是reg型變量阻塞(blocking)b = a;/該語(yǔ)句結(jié)束后立刻賦值非阻塞(non-blocking)b = a;/整個(gè)過(guò)程塊結(jié)束時(shí)才執(zhí)行賦值阻塞賦值module example1(D, Clk, Q1, Q2) input D, Clk; output reg Q1, Q2; alwa

13、ys(posedge Clk) begin Q1 = D; Q2 = Q1; endendmodulealways塊內(nèi)的語(yǔ)句按編寫(xiě)的先后次序順序執(zhí)行若一個(gè)變量由阻塞語(yǔ)句賦值,則該新賦的值會(huì)被該塊中后面的所有語(yǔ)句使用非阻塞賦值module example2(D, Clk, Q1, Q2) input D, Clk; output reg Q1, Q2; always(posedge Clk) begin Q1 = D; Q2 = Q1; endendmodule非阻塞賦值可以使每條賦值語(yǔ)句的結(jié)果直到always塊的結(jié)尾才能看到阻塞賦值語(yǔ)句對(duì)語(yǔ)句順序的依賴(lài)可能綜合成錯(cuò)誤的電路,建議用非阻塞賦值語(yǔ)句

14、描述時(shí)序電路選擇語(yǔ)句if-else(解釋條件語(yǔ)句)ifelse ifelse ifelsecase(分支語(yǔ)句)case(敏感表達(dá)式)值1: 語(yǔ)句1;值2:語(yǔ)句2;值n: 語(yǔ)句n;default: 語(yǔ)句n+1;endcase基本Verilog HDL設(shè)計(jì)范例組合邏輯電路/七段碼譯碼器;module converter(DB,SEG); input3:0 DB; output6:0 SEG; reg6:0 SEG; always (DB) begin case(DB) 4b0000: SEG=7b1111110; 4b0001: SEG=7b0110000; 4b0010: SEG=7b11011

15、01; 4b0011: SEG=7b1111001; 4b0100: SEG=7b0110011; 4b0101: SEG=7b1011011; 4b0110: SEG=7b1011111; 4b0111: SEG=7b1110000; 4b1000: SEG=7b1111111; 4b1001: SEG=7b1111011; default: SEG=7b0000000; endcase end endmodule 基本Verilog HDL設(shè)計(jì)范例時(shí)序邏輯電路module sync_rsddf(clk,reset,set,d,q,qb); input clk,reset,set; inpu

16、t d; output reg q,qb; always(posedge clk) begin if(!set & reset) begin q=1; qb=0; end else if (set & !reset) begin q=0; qb=1; end else begin q=d; qb=d; end end endmodule 同步置位、復(fù)位的D觸發(fā)器 流水燈設(shè)計(jì)案例流水燈需求分析通過(guò)8個(gè)單色LED實(shí)現(xiàn)流水燈顯示效果流水燈設(shè)計(jì)方案用CASE語(yǔ)句實(shí)現(xiàn)用移位寄存器實(shí)現(xiàn)用有限狀態(tài)機(jī)實(shí)現(xiàn)狀態(tài)LED顯示要求Idlestate0 state1state2state3state4state5sta

17、te6state7流水燈設(shè)計(jì)之CASE語(yǔ)句實(shí)現(xiàn)module lamp (rst, clk, state);inputrst, clk;output7:0state;reg7:0state, next_state;parameterIdle = 8b11111111,state0=8b11111110,state1=8b11111100,state2=8b11111000,state3=8b11110000,state4=8b11100000,state5=8b11000000,state6=8b10000000,state7=8b00000000;always (posedge clk or

18、negedge rst)beginif (!rst)state=Idle;elsestate=next_state;endalways (state)begincase(state)Idle:next_state=state0;state0:next_state=state1;state1:next_state=state2;state2:next_state=state3;state3:next_state=state4;state4:next_state=state5;state5:next_state=state6;state6:next_state=state7;state7:next

19、_state=Idle;default:next_state=Idle;endcaseendendmoduleQuestion:如果流水燈效果要求為雙向移動(dòng),本程序如何修改? 流水燈波形注1:CPLD實(shí)驗(yàn)板上的LED當(dāng)電平為0時(shí)亮,為1時(shí)滅;注2:實(shí)際的時(shí)鐘需要適當(dāng)降低到人眼可以識(shí)別的變化范圍內(nèi)。流水燈設(shè)計(jì)之移位寄存器實(shí)現(xiàn)module lamp (rst, clk, state);inputrst, clk;output7:0state;reg7:0state, next_state;always (posedge clk or negedge rst)beginif (!rst)state=

20、8b11111111;elsestate=next_state;endalways(state)beginif (state=8b000000000)next_state=8b11111111;elsenext_state=state1;endendmoduleQuestions:如果流水燈效果要求為雙向移動(dòng),本程序如何修改?如果流水燈跳變節(jié)奏需要有變化,本程序如何修改?本程序原設(shè)計(jì)本身是否有不足?有限狀態(tài)機(jī)(FSM)設(shè)計(jì)基礎(chǔ)FSM分米勒型(Mealy)和摩爾型(Moore)兩種,前者的輸出取決于機(jī)器狀態(tài)和輸入,后者的輸出與輸入無(wú)關(guān)。FSM的設(shè)計(jì)方法有兩類(lèi):一種是將狀態(tài)的轉(zhuǎn)移和狀態(tài)的操作寫(xiě)在同

21、一個(gè)模塊中,另一個(gè)是將狀態(tài)轉(zhuǎn)移單獨(dú)寫(xiě)成一個(gè)模塊。后者利于綜合器優(yōu)化代碼、布局布線。Moore型FSMalways (w, state)begincase(state) / Define state circleA: if(w)next_state=B;elsenext_state=A;B:if(w)next_state=C;elsenext_state=A;C:if(w)next_state=C;elsenext_state=A;default:next_state=A;endcasez=(state=C);/Define outputend/ Define the sequential bl

22、ockalways (posedge clk or negedge rst)beginif (!rst)state=A;elsestate=next_state;endendmoduleA為初始狀態(tài);w為輸入;z為輸出module simple (clk, rst, w, z);input clk, rst, w;outputz;regz;reg2:1state, next_state;parameter2:1 A=2b00,B=2b01, C=2b10;Moore型FSM波形圖Mealy型FSM/Define the next state and output combination cir

23、cuitsalways (w,state)begin case(state)A: if(w) begin z=0; next_state=B; end else begin z=0; next_state=A; endB: if(w) begin z=1; next_state=B; end else begin z=0; next_state=A; endendcaseendendmodulemodule mealy (clk, rst, w, z);inputclk, rst, w;outputz;regz;regstate, next_state;parameter A=1b0, B=1

24、b1;/Define the sequential blockalways (posedge clk or negedge rst)begin if (!rst) state=A; else state=next_state;endMealy型FSM波形圖流水燈設(shè)計(jì)之有限狀態(tài)機(jī)實(shí)現(xiàn)module lamp (rst, clk, w, state);inputrst, clk, w;output7:0 state;reg7:0state, next_state;parameter Idle= 8b11111111,state0= 8b11111110,state1= 8b11111100,stat

25、e2= 8b11111000,state3= 8b11110000,state4= 8b11100000,state5= 8b11000000,state6= 8b10000000,state7= 8b00000000;always (posedge clk or negedge rst)beginif (!rst)state=Idle;elsestate=next_state;endalways (state or w)begincase (state)Idle:beginif (w)next_state=state0;else next_state=Idle;endstate0:begin

26、if (w)next_state=state1;elsenext_state=state0;endstate1:state2:state7:default:next_state。ISE 14.7 界面利用向?qū)?,建立一個(gè)新項(xiàng)目 (1)點(diǎn)擊上圖界面的new project.啟動(dòng)項(xiàng)目向?qū)?。Step1:如右圖,分別指定創(chuàng)建工程的路徑,工程名和頂層文件名。Step2:點(diǎn)擊 Next按鈕,進(jìn)入頁(yè)面三,完成器件選擇。器件的選擇是和實(shí)驗(yàn)平臺(tái)的硬件相關(guān)的,根據(jù)我們的Basys2實(shí)驗(yàn)開(kāi)發(fā)板,它使用的是Spartan3E-XC3S100E-CP132 的器件,找到相應(yīng)的器件,如圖所示:利用向?qū)?,建立一個(gè)新項(xiàng)目 (2)Step3:后面兩步分別是對(duì)EDA工具的設(shè)定和工程綜述,都不作任何操作。點(diǎn)擊Finish完成工程創(chuàng)建利用向?qū)?,建立一個(gè)新項(xiàng)目 (3)新建一個(gè)Verilog HDL文件根據(jù)右圖,向工程添加Verilog HDL文件。 新建一個(gè)Verilog HDL文件如右圖,文件類(lèi)型選擇Verilog Module,輸入文件名稱(chēng),選擇文件保存路徑,點(diǎn)擊Next。新建一個(gè)Verilog HDL文件

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論