




已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
EDA設計仿真與硬件描述語言,張德學 2010年6月1日,前堂回顧,基于FPGA開發(fā)的基本流程 QuartusII工具流程基本概念(綜合、管腳分配) 開發(fā)板介紹 Usb-blaster編程介紹 實例演示 /以組合邏輯為例,先將FPGA流程實驗了一遍,隨后的課程邊學習邊實驗 /實驗情況? 不動手 = 0 實驗室全天開放,第五章 時序邏輯描述與實現(xiàn),由基本門構建時序邏輯 同步電路概念 數字電路中基本部件描述舉例 演示,1. 由基本門構建時序邏輯,組合電路定義?,組合電路: 電路的輸出僅是當前輸入的函數,與先前值無關。 怎樣與先前值有關?,反饋,最簡單的方式:反饋! 奇數個反相器連接,結果? 偶數個反相器連接,結果? /Lab_inv_loop /簡介腳本方式 vsim do sim.do,奇數個反相器連接: 震蕩,可以作為頻率源 偶數個反相器連接: 兩個穩(wěn)定狀態(tài),時序電路,Cross-coupled 兩個穩(wěn)定狀態(tài) (a)與(b)實際一樣,僅畫法不同,兩個穩(wěn)定狀態(tài),但沒有控制 / 需要仿真時賦初值,SR Latch,NOR門 Cross-coupled /Lab_SR_Latch,缺點: R=1,S=1時表現(xiàn)怪異,D Latch,SR Latch基礎上改進,避免R、S同時為1 Lab_D_Latch /層次化設計,Latch缺點,在CLK=1的時間內,D的變化均會傳遞到Q 實際更需要的是CLK由01或者10的邊沿觸發(fā)DQ,即觸發(fā)器Flip-flop Latch是level-sensitive, Flip-flop是edge-triggered,D Flip-Flop (DFF),可由兩個D Latch構成DFF /Lab_D_FF /有更簡單的寫法,此處只是演示原理,DFF僅在時鐘上升沿時將DQ,Enabled DFF (帶使能功能),稍加改造DFF;a、b兩種方式實現(xiàn),帶reset的DFF,Latch 與 FF比較,2. 同步電路概念,同步電路 vs 異步電路? 系統(tǒng)中若存在多個DFF,采用的時鐘是同一個?,synchronous sequential circuit,電路的每一條路徑中至少包含一個register 所有register由同一時鐘源驅動 /準確的說法:各個register的時鐘間有固定的相位關系,同步電路較異步電路容易設計,因而大部分采用同步電路 / why ? 通信電路中,有時必須采用異步電路(不同的信號源),3. 數字電路中基本部件描述舉例,復雜電路均建立在簡單電路基礎上 基本電路的描述方法,Clocked D latch,上圖電路如何用verilog表達? /多種描述方法,module latch(d,c,q,q_b); /門級表達 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ù)賦值表達 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); /過程賦值表達 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 注意時延設置,可以自己修改,看看結果,補充:阻塞賦值與非阻塞賦值,D Latch與 DFF更常用非阻塞(zu se,新華字典)賦值來表達 前面課程中介紹 過程塊(initial,always)時,未涉及到時序電路,未介紹非阻塞賦值! /從仿真器工作原理開始,可選講解,仿真器工作原理,intitial 執(zhí)行一次 always循環(huán)執(zhí)行(只要滿足觸發(fā)條件) always a=b; 如何執(zhí)行? 各block的執(zhí)行是concurrent,執(zhí)行順序不確定 beginend中的阻塞賦值按順序執(zhí)行,非阻塞賦值在當前時間槽事件隊列結束時同時執(zhí)行 fork join中語句并行執(zhí)行,always a=b; 仿真器時間不能前進!,Procedural assignments,在過程塊中的賦值(對比:連續(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,等價:tmp=b; #1; a=tmp;,Blocking Intra-procedural delayed assignment,多條語句情況,問題:,always(posedge clk) a=b; always(posedge clk) b=c; 假設0時刻時b=3,c=5,第一個posedge clk 后,a=?,答案:不確定 不同的仿真器可能給出不同的結果,取決于執(zhí)行順序,always(posedge clk) begin a=b; b=a; end / a與b交換值了嗎?,Non-blocking Assignments,不存在競爭問題!,是swap功能!,Delayed Non-blocking Assignments,Non-blocking Intra-procedural delayed Assignments,Non-blocking Intra-procedural delayed Assignments,Mixed Blocking and Non-blocking,問題:,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目錄下,問題:X ,Y = ?,initial begin x = 0; y = 0; end initial begin #0 x = 1; /zero delay control #0 y = 1; end,仿真器工作原理介紹結束,如何描述下圖電路?,方法1:多個always塊中阻塞賦值,always(posedge clk) Dout = Reg1 Dout; always(posedge clk) Reg1 = Din Dout;,上述描述不正確! 無論哪條always語句先執(zhí)行,結果都是錯的! 無論哪條always語句先執(zhí)行,都改變了reg1或dout的值,再執(zhí)行另一個always語句時,其依賴的reg1或dout都不是前一個時鐘的值,而是更新后的值了!顯然是錯誤的,方法2:單個always塊中賦值,reg temp; always(posedge clk) begin temp = Dout; Dout = Dout Reg1; Reg1 = temp Din; end,上述描述是正確的! 前提是:臨時變量保存上一時鐘的值,always塊中的語句只能按上述順序,否則也是錯誤,方法3:非阻塞賦值,always(posedge clk) Dout = Dout Reg1; always(posedge clk) Reg1 = Dout Din;,上述描述正確! 非阻塞的含義: 首先計算出全部的RHS當前值(當前仿真時間槽),在時間槽處理事件隊列末,更新LHS(未必是在時間槽的后邊沿時刻上) 阻塞含義: 計算當前仿真時間槽上各語句的RHS,并立即調度賦給LHS。(未考慮延時情況)。隨后語句等待此語句完成。 語句順序不同,可能導致不同結果! 非阻塞賦值更適于建模并發(fā)電路,時序邏輯中的阻塞賦值,結果?,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,時序邏輯中的非阻塞賦值,結果?,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,組合電路中的阻塞賦值,結果?,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,邏輯錯誤多是不規(guī)范(或錯誤)的表達引起的!,2010.5.31,補充一個演示? 上述三種Verilog代碼在synthesis后,對應的電路? Linux 上 synopsys DC + SpringSoft Verdi,各種D-Latch、DFF的表達方法,D Latch常用表達,基本D Latch module d1(clk,d,q); input clk,d; output q; reg q; always(clk or d) /可用(*)代替,容易出錯的地方 begin if(clk) /注意此處,if 無 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 常用表達,基本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存儲器、寄存器,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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設備預知維修管理制度
- 設計研發(fā)中心管理制度
- 評估外聘專家管理制度
- 診所藥品供貨管理制度
- 2025年中國滑動窗行業(yè)市場全景分析及前景機遇研判報告
- 調度系統(tǒng)設備管理制度
- 財務風險預警管理制度
- 貨代公司人員管理制度
- 貨架物品擺放管理制度
- 貨車油路直供管理制度
- 聲門下吸引技術ppt課件
- 測控電路課程設計報告--信號采集調理電路的設計
- 法律英語單詞分單元匯總
- 江蘇省高中學生學籍卡
- 碳排放問題的研究--數學建模論文
- 贏越酒會講解示范
- 物業(yè)承接查驗協(xié)議書
- 香港匯豐銀行開戶-董事實益擁有人聲明(樣本)
- 主系表結構句子練習題
- (完整版)醫(yī)院感染控制及風險評估表
- 應屆畢業(yè)生畢業(yè)證明模板
評論
0/150
提交評論