數字系統設計(上).ppt_第1頁
數字系統設計(上).ppt_第2頁
數字系統設計(上).ppt_第3頁
數字系統設計(上).ppt_第4頁
數字系統設計(上).ppt_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數字電路設計(上),主要內容,數字系統設計部分講座概述 常用數字系統單元設計范例 常用組合邏輯單元 常用時序邏輯單元 常用綜合邏輯設計示范 數字系統設計技巧舉例(上) Quartus II使用流程 宏函數使用 三態(tài)門使用 課后習題,數字系統設計部分講座說明,主要講座內容 常用數字系統設計范例 常用數字系統設計技巧 數字系統設計注意事項 講座與數字電路課程教學的差異 課時安排 內容覆蓋面 能力側重點,數字系統設計部分講座說明(續(xù)),課后習題要求 兩次課后都有習題布置 作業(yè)電子檔遞交: 文件命名要求:姓名+學號+作業(yè)名 其它 PLD設計開發(fā)平臺使用自學為主 HDL語言(不限種類)自學為主,數字電路

2、課程內容回顧,數制和碼制 組合邏輯電路 組合邏輯電路的分析 組合邏輯電路的設計 時序邏輯電路 時序邏輯電路的分析 時序邏輯電路的設計,培訓關注點,培訓關注點,數字電路課程內容回顧(續(xù)),組合邏輯設計流程,時序邏輯設計流程,數字電路課程內容回顧(續(xù)),典型組合邏輯單元案例 編碼/譯碼器 數據選擇器 查找表/ROM 典型時序邏輯單元案例 計數器 移位寄存器 數字系統設計要點 編碼/狀態(tài)的優(yōu)化選擇 中小規(guī)模的邏輯電路單元拆分,基于HDL和PLD器件的邏輯設計,名詞解釋 HDL:Hardware Description Language PLD:Programmable Logic Device 技術

3、優(yōu)勢 兼容原邏輯電路設計方法 增加電路行為描述設計方法 器件數量減少、設計效率提升、系統可靠性提升,組合邏輯電路單元設計范例,編碼器/譯碼器 多路數據選擇器,編碼器/譯碼器設計案例,8-3編碼器 (Verilog HDL設計),3-8譯碼器 (電路圖設計),41MUX設計案例,41MUX (VHDL設計),41MUX (電路圖設計),時序邏輯電路單元設計范例,計數器 移位寄存器 有限狀態(tài)機,計數器設計案例,可正向、倒向計數器 異步清零 同步置數,計數器設計案例,具體時序仿真結果,時鐘三分頻設計案例,時鐘三分頻設計案例,具體時序仿真結果,有限狀態(tài)機(FSM)設計基礎,FSM分米勒型(Mealy)

4、和摩爾型(Moore)兩種,前者的輸出取決于機器狀態(tài)和輸入,后者的輸出與輸入無關。 FSM的設計方法有兩類:一種是將狀態(tài)的轉移和狀態(tài)的操作寫在同一個模塊中,另一個是將狀態(tài)轉移單獨寫成一個模塊。后者利于綜合器優(yōu)化代碼、布局布線。,Moore型FSM,always (w, state) begin case(state) / Define state circle A: 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;

5、default:next_state=A; endcase z=(state=C);/Define output end / Define the sequential block always (posedge clk or negedge rst) begin if (!rst)state=A; elsestate=next_state; end endmodule,A為初始狀態(tài);w為輸入;z為輸出,module simple (clk, rst, w, z); input clk, rst, w; outputz; regz; reg2:1state, next_state; param

6、eter2:1 A=2b00,B=2b01, C=2b10;,Moore型FSM波形圖,Mealy型FSM,/Define the next state and output combination circuits always (w,state) begin case(state) A: if(w) begin z=0; next_state=B; end else begin z=0; next_state=A; end B: if(w) begin z=1; next_state=B; end else begin z=0; next_state=A; end endcase end

7、endmodule,module mealy (clk, rst, w, z); inputclk, rst, w; outputz; regz; regstate, next_state; parameter A=1b0, B=1b1; /Define the sequential block always (posedge clk or negedge rst) begin if (!rst) state=A; elsestate=next_state; end,Mealy型FSM波形圖,流水燈設計案例需求分析/設計方案,流水燈需求分析 通過8個單色LED實現流水燈顯示效果 流水燈設計方案

8、 用CASE語句實現 用移位寄存器實現 用有限狀態(tài)機實現,流水燈設計之CASE語句實現,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=8

9、b00000000; always (posedge clk or negedge rst) begin if (!rst)state=Idle; elsestate=next_state; end,always (state) begin case(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_s

10、tate=state6; state6:next_state=state7; state7:next_state=Idle; default:next_state=Idle; endcase end endmodule,Question:如果流水燈效果要求為雙向移動,本程序如何修改?,流水燈波形,注1:CPLD實驗板上的LED當電平為0時亮,為1時滅; 注2:實際的時鐘需要適當降低到人眼可以識別的變化范圍內。,流水燈設計之移位寄存器實現,module lamp (rst, clk, state); inputrst, clk; output7:0state; reg7:0state, next

11、_state; always (posedge clk or negedge rst) begin if (!rst)state=8b11111111; elsestate=next_state; end always(state) begin if (state=8b000000000) next_state=8b11111111; elsenext_state=state1; end endmodule,Questions: 如果流水燈效果要求為雙向移動,本程序如何修改? 如果流水燈跳變節(jié)奏需要有變化,本程序如何修改? 本程序原設計本身是否有不足?,流水燈設計之有限狀態(tài)機實現,module

12、 lamp (rst, clk, w, state); inputrst, clk, w; output7:0 state; reg7:0state, next_state; parameter Idle= 8b11111111, state0= 8b11111110, state1= 8b11111100, state2= 8b11111000, state3= 8b11110000, state4= 8b11100000, state5= 8b11000000, state6= 8b10000000, state7= 8b00000000; always (posedge clk or n

13、egedge rst) begin if (!rst)state=Idle; elsestate=next_state; end,always (state or w) begin case (state) Idle:begin if (w)next_state=state0; else next_state=Idle; end state0:begin if (w)next_state=state1; elsenext_state=state0; end state1: state2: state7: default:next_state=Idle; endcase end endmodul

14、e,三種流水燈設計對比,移位操作語句設計 移位操作與流水燈操作統一,程序設計簡易且易于理解 CASE語句設計 狀態(tài)轉換條件單一時的簡易FSM設計方法 有限狀態(tài)機設計 具備復雜狀態(tài)轉換設計能力 程序擴展能力強 程序本身語句復雜度偏高 有限狀態(tài)機是邏輯系統設計中重要的設計手段,需要熟練掌握和靈活應用。,波形序列發(fā)生器設計案例,波形序列發(fā)生器設計案例(續(xù)),波形序列發(fā)生器設計案例,具體時序仿真結果 程序設計含嵌套式有限狀態(tài)機設計思想,交通燈項目設計示范(一),交通燈項目要求說明 為某路口設計交通燈,控制2組紅、綠、黃指示燈及兩組(各兩位)七段碼數字指示燈。兩組紅、綠、黃指示燈分別控制東西和南北兩個方

15、向的通行情況。要求設計兩種工作狀態(tài):日間正常態(tài)和夜間休息態(tài),由一個輸入信號控制兩狀態(tài)之間的切換。夜間休息態(tài)要求數字燈顯示為“00”,兩個方向上都顯示閃爍的黃燈(0.5Hz左右),以示慢行。日間正常態(tài)要求兩方向交替通行,南北方向通行時間為32秒(秒為粗略值,相近即可,下同),東西方向通行時間為28秒,兩位數碼指示燈顯示倒數計時,計數的最后兩秒在通行方向由綠燈變?yōu)轱@示黃燈,非通行方向保持紅燈不變。,交通燈項目設計示范(二),端口分析 輸入: 時鐘信號 日夜模式控制 輸出: 南北方向交通燈 東西方向交通燈 南北方向計時顯示 東西方向計時顯示,交通燈項目設計示范(三),功能清單,注:此處選擇與實際應用

16、接近的倒數計數方案。,交通燈項目設計示范(四),設計方案1 以MUX為核心 設計方案2 以狀態(tài)機為核心 設計方案3 狀態(tài)機嵌套,交通燈項目設計示范(五),硬件實驗平臺推薦 CPLD DSK + 交通燈顯示電路 CPLD DSK 2,設計方案二說明,設計方案二說明(續(xù)),狀態(tài)1(夜間) 黃燈閃爍 狀態(tài)0(南北綠) 主計數器從30到1 狀態(tài)2(南北黃) 從計數器從2到1 狀態(tài)3(東西綠) 主計數器從26到1 狀態(tài)4(東西黃) 從計數器從2到1,設計方案二說明(續(xù)),七段碼顯示模塊 譯碼器(case語句優(yōu)先) 分頻模塊 計數器 主控模塊核心 狀態(tài)機 主/從計數器模塊 帶置數/使能控制的遞減計數器,其

17、它綜合邏輯設計案例列舉,電子鐘設計 試設計一個電子鐘,正常情況下能顯示小時和分鐘信息(四位七段碼),中間間隔2個LED燈每秒閃爍一次,當按某一按鍵后七段碼切換為秒數顯示。 串并轉換 試設計一個串并轉換電路模塊,能實現串行數據到8位并行數據的轉換功能(輸入:clk, reset,en,datas;輸出:7:0 datap),注意數據緩沖設計。,Quartus II軟件使用,Quartus II是個集成的PLD設計開發(fā)環(huán)境,功能涵蓋設計輸入、設計編譯、設計仿真、編程下載等各個設計流程需要 Quartus II支持第三方EDA廠家的設計工具輸入,Quartus II 界面簡介,Fig.1 Quart

18、us II基本界面,利用向導建立新項目 (1),Step 1: 在File菜單中選擇New Project Wizard.選項啟動項目向導。,Fig.2 QuartusII項目名稱、路徑、頂層文件設定窗口,分別指定創(chuàng)建工程的路徑,工程名和頂層文件名。 工程名和頂層文件可以一致也可以不同。 一個工程中可以有多個文件,但只能有一個頂層文件。,利用向導建立新項目 (2),Step2:點擊Next按鈕,頁面二是在新建的工程中添加已有Verilog HDL文件的。 Step3:點擊Next按鈕,進入頁面三,完成器件選擇。,圖3、QuartusII中器件選擇窗口,利用向導建立新項目 (3),Step4:后

19、面兩步分別是對EDA工具的設定和工程綜述,都不作任何操作。點擊Finish完成工程創(chuàng)建。,圖4、QuartusII項目設定完成綜述窗口,新建一個Verilog HDL文件,Quartus II中包含完整的文本編輯程序(Text Editor),在此用Verilog HDL來編寫源程序 新建一個Verilog HDL文件,可以通過 快捷按鈕 快捷鍵Ctrl+N 從File菜單中選擇New. 彈出頁式對話框后選擇Device Design Files頁面的Verilog HDL File,點擊OK按鈕。,Verilog HDL程序輸入,在用戶區(qū)Verilog HDL文件窗口中輸入源程序,保存時文件

20、名與實體名保持一致。 module basic_ddf(d,clk,q,qd); inputd,clk; outputq,qd; regq,qd; always(posedge clk) begin q=d; qd=d; end endmodule,對源程序進行語法檢查和編譯,使用快捷按鈕 ,對以上程序進行分析綜合,檢查語法規(guī)范; 如果沒有問題則編譯整個程序,使用 如果出現問題,則對源程序進行修改,直至沒有問題為止。,仿真,Quartus II內置波形編輯程序(Waveform Editor)可以生成和編輯波形設計文件。 Quartus II中的仿真包括功能仿真和時序仿真。兩種仿真操作類似,只

21、需在Tools菜單中選擇Simulater Tool,在其Simulater mode中進行選擇即可,圖5、QuartusII項目仿真設定窗口,時序仿真 (1),Step1、 新建一個波形文件:該過程與新建Verilog HDL文件類似,只是在彈出頁式對話框后選擇Other Files頁面的Vector Waveform File。,時序仿真 (2),Step2、 在波形文件中加入所需觀察波形的管腳:在Name中單擊右鍵,選擇Insert Node or bus.選項,出現Insert Node or bus對話框,此時可在該對話框的Name欄直接鍵入所需仿真的管腳名,也可點擊Node Fin

22、der.按鈕,將所有需仿真的管腳一起導入。,圖6、QuartusII建立待仿真文件時的管腳及內部信號選擇窗口,時序仿真 (3),Step3、 給輸入管腳指定仿真波形:分別選中輸入管腳,使用波形編輯器: 對其輸入波形進行編輯。最后保存波形文件,圖7、QuartusII中編輯完成的待仿真波形文件,時序仿真 (5),對basic_ddf的仿真結果說明 仿真結果在時間20ns時,輸入信號d已經是1狀態(tài),但是由于時鐘脈沖信號clk這時不是處于上升沿,所以必須等到時間軸30ns的地方,才會讓輸出信號q變成1,不過由于芯片的傳輸延遲效應,最后是在37ns處才會產生1。 在時間軸90ns處,輸入信號d和時鐘脈沖信號同時出現是1狀態(tài),但這上升沿的瞬間十分短暫,有仿真結果知道,輸出信號q必須等到下一個時鐘上升沿之后才會出現1狀態(tài)。 在時間軸160ns之后,由于沒有時鐘脈沖信號clk,這時不論d的輸入信號為何,輸出信號q始終保持不變。,*.pof 文件的生成 (1),圖9、QuartusII項目管理中的管腳分配窗口,表1 基本D觸發(fā)器管腳分配,*.pof 文件的生成 (2),Step1、分配管腳:選擇Assignment菜單的pins選項,進入管腳分配界面。 在管腳分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論