EDA設(shè)計(jì)仿真與硬件描述語(yǔ)言課件-6-時(shí)序邏輯描述與實(shí)現(xiàn).ppt_第1頁(yè)
EDA設(shè)計(jì)仿真與硬件描述語(yǔ)言課件-6-時(shí)序邏輯描述與實(shí)現(xiàn).ppt_第2頁(yè)
EDA設(shè)計(jì)仿真與硬件描述語(yǔ)言課件-6-時(shí)序邏輯描述與實(shí)現(xiàn).ppt_第3頁(yè)
EDA設(shè)計(jì)仿真與硬件描述語(yǔ)言課件-6-時(shí)序邏輯描述與實(shí)現(xiàn).ppt_第4頁(yè)
EDA設(shè)計(jì)仿真與硬件描述語(yǔ)言課件-6-時(shí)序邏輯描述與實(shí)現(xiàn).ppt_第5頁(yè)
已閱讀5頁(yè),還剩88頁(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)介

EDA設(shè)計(jì)仿真與硬件描述語(yǔ)言,張德學(xué) 2010年6月1日,前堂回顧,基于FPGA開(kāi)發(fā)的基本流程 QuartusII工具流程基本概念(綜合、管腳分配) 開(kāi)發(fā)板介紹 Usb-blaster編程介紹 實(shí)例演示 /以組合邏輯為例,先將FPGA流程實(shí)驗(yàn)了一遍,隨后的課程邊學(xué)習(xí)邊實(shí)驗(yàn) /實(shí)驗(yàn)情況? 不動(dòng)手 = 0 實(shí)驗(yàn)室全天開(kāi)放,第五章 時(shí)序邏輯描述與實(shí)現(xiàn),由基本門(mén)構(gòu)建時(shí)序邏輯 同步電路概念 數(shù)字電路中基本部件描述舉例 演示,1. 由基本門(mén)構(gòu)建時(shí)序邏輯,組合電路定義?,組合電路: 電路的輸出僅是當(dāng)前輸入的函數(shù),與先前值無(wú)關(guān)。 怎樣與先前值有關(guān)?,反饋,最簡(jiǎn)單的方式:反饋! 奇數(shù)個(gè)反相器連接,結(jié)果? 偶數(shù)個(gè)反相器連接,結(jié)果? /Lab_inv_loop /簡(jiǎn)介腳本方式 vsim do sim.do,奇數(shù)個(gè)反相器連接: 震蕩,可以作為頻率源 偶數(shù)個(gè)反相器連接: 兩個(gè)穩(wěn)定狀態(tài),時(shí)序電路,Cross-coupled 兩個(gè)穩(wěn)定狀態(tài) (a)與(b)實(shí)際一樣,僅畫(huà)法不同,兩個(gè)穩(wěn)定狀態(tài),但沒(méi)有控制 / 需要仿真時(shí)賦初值,SR Latch,NOR門(mén) Cross-coupled /Lab_SR_Latch,缺點(diǎn): R=1,S=1時(shí)表現(xiàn)怪異,D Latch,SR Latch基礎(chǔ)上改進(jìn),避免R、S同時(shí)為1 Lab_D_Latch /層次化設(shè)計(jì),Latch缺點(diǎn),在CLK=1的時(shí)間內(nèi),D的變化均會(huì)傳遞到Q 實(shí)際更需要的是CLK由01或者10的邊沿觸發(fā)DQ,即觸發(fā)器Flip-flop Latch是level-sensitive, Flip-flop是edge-triggered,D Flip-Flop (DFF),可由兩個(gè)D Latch構(gòu)成DFF /Lab_D_FF /有更簡(jiǎn)單的寫(xiě)法,此處只是演示原理,DFF僅在時(shí)鐘上升沿時(shí)將DQ,Enabled DFF (帶使能功能),稍加改造DFF;a、b兩種方式實(shí)現(xiàn),帶reset的DFF,Latch 與 FF比較,2. 同步電路概念,同步電路 vs 異步電路? 系統(tǒng)中若存在多個(gè)DFF,采用的時(shí)鐘是同一個(gè)?,synchronous sequential circuit,電路的每一條路徑中至少包含一個(gè)register 所有register由同一時(shí)鐘源驅(qū)動(dòng) /準(zhǔn)確的說(shuō)法:各個(gè)register的時(shí)鐘間有固定的相位關(guān)系,同步電路較異步電路容易設(shè)計(jì),因而大部分采用同步電路 / why ? 通信電路中,有時(shí)必須采用異步電路(不同的信號(hào)源),3. 數(shù)字電路中基本部件描述舉例,復(fù)雜電路均建立在簡(jiǎn)單電路基礎(chǔ)上 基本電路的描述方法,Clocked D latch,上圖電路如何用verilog表達(dá)? /多種描述方法,module latch(d,c,q,q_b); /門(mén)級(jí)表達(dá) input d; input c; output q; output q_b; wire _r; wire _s; and #1 g1(_s,d,c); and #1 g2(_r,d,c); nor #2 g3(q_b,_s,q); nor #2 g4(q,q_b,_r); endmodule,module latch(d,c,q,q_b); /連續(xù)賦值表達(dá) input d; input c; output q; output q_b; assign #3 q = c?d:q; assign q_b = q; endmodule,module latch(d,c,q,q_b); /過(guò)程賦值表達(dá) input d; input c; output q; output q_b; reg q; reg q_b; always(c or d) begin if(c) begin #4 q = d; q_b = d; end end endmodule,D Latch 演示,/Lab4 注意時(shí)延設(shè)置,可以自己修改,看看結(jié)果,補(bǔ)充:阻塞賦值與非阻塞賦值,D Latch與 DFF更常用非阻塞(zu se,新華字典)賦值來(lái)表達(dá) 前面課程中介紹 過(guò)程塊(initial,always)時(shí),未涉及到時(shí)序電路,未介紹非阻塞賦值! /從仿真器工作原理開(kāi)始,可選講解,仿真器工作原理,intitial 執(zhí)行一次 always循環(huán)執(zhí)行(只要滿足觸發(fā)條件) always a=b; 如何執(zhí)行? 各block的執(zhí)行是concurrent,執(zhí)行順序不確定 beginend中的阻塞賦值按順序執(zhí)行,非阻塞賦值在當(dāng)前時(shí)間槽事件隊(duì)列結(jié)束時(shí)同時(shí)執(zhí)行 fork join中語(yǔ)句并行執(zhí)行,always a=b; 仿真器時(shí)間不能前進(jìn)!,Procedural assignments,在過(guò)程塊中的賦值(對(duì)比:連續(xù)賦值?) RHSLHS / Right Hand Side Left Hand Side LHS不能是Net類型 always(posedge clk) begin a=5; c=d; end,阻塞賦值 Blocking Assignments,Delayed Blocking assignments,a得到的是b(t+1)的值!,Blocking Intra-procedural delayed assignment,等價(jià):tmp=b; #1; a=tmp;,Blocking Intra-procedural delayed assignment,多條語(yǔ)句情況,問(wèn)題:,always(posedge clk) a=b; always(posedge clk) b=c; 假設(shè)0時(shí)刻時(shí)b=3,c=5,第一個(gè)posedge clk 后,a=?,答案:不確定 不同的仿真器可能給出不同的結(jié)果,取決于執(zhí)行順序,always(posedge clk) begin a=b; b=a; end / a與b交換值了嗎?,Non-blocking Assignments,不存在競(jìng)爭(zhēng)問(wèn)題!,是swap功能!,Delayed Non-blocking Assignments,Non-blocking Intra-procedural delayed Assignments,Non-blocking Intra-procedural delayed Assignments,Mixed Blocking and Non-blocking,問(wèn)題:,define FALSE 0 define TRUE 1 reg a; initial begin a = FALSE; /#1 a = FALSE; /a = #1 FALSE; a = TRUE; if (a = TRUE) $display (“True“); else $display (“False“); end /Lab/Lab_tmp目錄下,問(wèn)題:X ,Y = ?,initial begin x = 0; y = 0; end initial begin #0 x = 1; /zero delay control #0 y = 1; end,仿真器工作原理介紹結(jié)束,如何描述下圖電路?,方法1:多個(gè)always塊中阻塞賦值,always(posedge clk) Dout = Reg1 Dout; always(posedge clk) Reg1 = Din Dout;,上述描述不正確! 無(wú)論哪條always語(yǔ)句先執(zhí)行,結(jié)果都是錯(cuò)的! 無(wú)論哪條always語(yǔ)句先執(zhí)行,都改變了reg1或dout的值,再執(zhí)行另一個(gè)always語(yǔ)句時(shí),其依賴的reg1或dout都不是前一個(gè)時(shí)鐘的值,而是更新后的值了!顯然是錯(cuò)誤的,方法2:?jiǎn)蝹€(gè)always塊中賦值,reg temp; always(posedge clk) begin temp = Dout; Dout = Dout Reg1; Reg1 = temp Din; end,上述描述是正確的! 前提是:臨時(shí)變量保存上一時(shí)鐘的值,always塊中的語(yǔ)句只能按上述順序,否則也是錯(cuò)誤,方法3:非阻塞賦值,always(posedge clk) Dout = Dout Reg1; always(posedge clk) Reg1 = Dout Din;,上述描述正確! 非阻塞的含義: 首先計(jì)算出全部的RHS當(dāng)前值(當(dāng)前仿真時(shí)間槽),在時(shí)間槽處理事件隊(duì)列末,更新LHS(未必是在時(shí)間槽的后邊沿時(shí)刻上) 阻塞含義: 計(jì)算當(dāng)前仿真時(shí)間槽上各語(yǔ)句的RHS,并立即調(diào)度賦給LHS。(未考慮延時(shí)情況)。隨后語(yǔ)句等待此語(yǔ)句完成。 語(yǔ)句順序不同,可能導(dǎo)致不同結(jié)果! 非阻塞賦值更適于建模并發(fā)電路,時(shí)序邏輯中的阻塞賦值,結(jié)果?,module reg_test(clk,in1,out1); input clk; input in1; output out1; reg reg1,reg2,reg3,out1; always(posedge clk) begin reg1 = in1; reg2 = reg1; reg3 = reg2; out1 = reg3; end endmodule,時(shí)序邏輯中的非阻塞賦值,結(jié)果?,module reg_test(clk,in1,out1); input clk; input in1; output out1; reg reg1,reg2,reg3,out1; always(posedge clk) begin reg1 = in1; reg2 = reg1; reg3 = reg2; out1 = reg3; end endmodule,組合電路中的阻塞賦值,結(jié)果?,module reg_test(clk,in1,out1); input clk; input in1; output out1; reg reg1,reg2,reg3,out1; always(in1) begin reg1 = in1; reg2 = reg1; reg3 = reg2; out1 = reg3; end endmodule,邏輯錯(cuò)誤多是不規(guī)范(或錯(cuò)誤)的表達(dá)引起的!,2010.5.31,補(bǔ)充一個(gè)演示? 上述三種Verilog代碼在synthesis后,對(duì)應(yīng)的電路? Linux 上 synopsys DC + SpringSoft Verdi,各種D-Latch、DFF的表達(dá)方法,D Latch常用表達(dá),基本D Latch module d1(clk,d,q); input clk,d; output q; reg q; always(clk or d) /可用(*)代替,容易出錯(cuò)的地方 begin if(clk) /注意此處,if 無(wú) else情況 q = d; end endmodule,Asynchronous set latch,module d1(clk,d,q,set); input clk,d,set; output q; reg q; always(clk or d or set) begin if(set) q = 1b1; else if(clk) q = d; end endmodule,Asynchronous reset latch,module d1(clk,d,q,reset); input clk,d,reset; output q; reg q; always(clk or d or reset) begin if(reset) q = 1b0; else if(clk) q = d; end endmodule,Asynchronous set and reset latch,module d1(clk,d,q,set,reset); input clk,d,set,reset; output q; reg q; always(clk or d or set or reset) begin if(reset) q = 1b0; else if(set) q = 1b1; else if(clk) q = d; end endmodule,D Flip-Flop (DFF),posedge 含義?,posedge含義,01 0X or Z X or Z 1,DFF演示,timescale 1ns/100ps module d_ff(clk,d,q,q_b); input clk; input d; output q; output q_b; reg q; reg q_b; always(posedge clk) begin q=d; q_b=d; end endmodule /Lab5 /附帶演示posedge含義,DFF 常用表達(dá),基本DFF module dff (clk, d, q); input clk,d; output q; reg q; always(posedge clk) begin q=d; end endmodule,Asynchronous set FF,module asdff (clk, d, q,set); input clk,d,set; output q; reg q; always(posedge clk or posedge set) begin if(set) q = 1b1; else q=d; end endmodule,Asynchronous reset FF,module ardff (clk, d, q,reset); input clk,d,reset; output q; reg q; always(posedge clk or posedge reset) begin if(reset) q = 1b0; else q=d; end endmodule,Asynchronous set and reset FF,module arsdff (clk, d, q,set,reset); input clk,d,set,reset; output q; reg q; always(posedge clk or posedge set or posedge reset) begin if(reset) q = 1b0; else if(set) q = 1b1; else q=d; end endmodule,Synchronous set FF,module ssdff (clk, d, q,set); input clk,d,set; output q; reg q; always(posedge clk) begin if(set) q = 1b1; else q=d; end endmodule,Synchronous reset FF,module srdff (clk, d, q,reset); input clk,d,reset; output q; reg q; always(posedge clk) begin if(reset) q = 1b0; else q=d; end endmodule,Synchronous set and reset FF,module ssrdff (clk, d, q,set,reset); input clk,d,set,reset; output q; reg q; always(posedge clk) begin if(reset) q = 1b0; else if(set) q = 1b1; else q=d; end endmodule,register,DFF可以看作1bit存儲(chǔ)器、寄存器,register,module register(clk,d,q,set,reset); input 7:0 d; input clk,set,reset; output 7:0 q; reg 7:0 q; always(posedge clk) begin if(set) q=8hff; else if(reset) q = 8h0; els

溫馨提示

  • 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)論