寄存器設(shè)計應(yīng)用課件_第1頁
寄存器設(shè)計應(yīng)用課件_第2頁
寄存器設(shè)計應(yīng)用課件_第3頁
寄存器設(shè)計應(yīng)用課件_第4頁
寄存器設(shè)計應(yīng)用課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第5章 寄存器設(shè)計應(yīng)用 CPLD與FPGA的應(yīng)用 第1頁,共30頁。寄存器VHDL描述D觸發(fā)器的描述 D觸發(fā)器 第2頁,共30頁?!纠縇IBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -類似于在芯片內(nèi)部定義一個數(shù)據(jù)的暫存節(jié)點 BEGIN PROCESS (CLK,Q1) BEGI

2、N IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; -將內(nèi)部的暫存數(shù)據(jù)向端口輸出 END bhv; 寄存器描述的VHDL程序 第3頁,共30頁。VHDL描述的語言現(xiàn)象說明 信號定義和數(shù)據(jù)對象 信號定義SIGNAL Q1:STD_LOGIC; 表示在描述的器件DFF1內(nèi)部定義標識符Q1的數(shù)據(jù)對象為信號SIGNAL,其數(shù)據(jù)類型為STD_LOGIC。 由于Q1被定義為器件的內(nèi)部節(jié)點信號,數(shù)據(jù)的進出不像端口信號那樣受限制,所以不必定義其端口模式(如IN、OUT等)。 定義Q1的目的是為了在設(shè)計更大的電路時使用由此

3、引入的時序電路的信號,這是一種常用的時序電路設(shè)計的方式。 有Q1過渡,Q不用BUFFER類型。第4頁,共30頁。VHDL描述的語言現(xiàn)象說明 上升沿檢測表式和信號屬性函數(shù)EVENT CLKEVENT AND CLK=1 檢測時鐘信號CLK的上升沿 關(guān)鍵詞EVENT是信號屬性函數(shù),用來獲得信號行為信息的函數(shù)稱為信號屬性函數(shù) EVENT“clkEVENT”就是對clk標識符的信號在當前的一個極小的時間段 內(nèi)發(fā)生事件的情況進行檢測。所謂發(fā)生事件,就是clock在其數(shù)據(jù)類型的取值范圍內(nèi)發(fā)生變化,從一種取值轉(zhuǎn)變到另一種取值(或電平方式)。第5頁,共30頁。VHDL描述的語言現(xiàn)象說明 上升沿檢測表式和信號屬

4、性函數(shù)EVENT 如果clk的數(shù)據(jù)類型定義為STD_LOGIC,則在 時間段內(nèi),clk從其數(shù)據(jù)類型允許的9種值中的任何一個值向另一值跳變,如由0變成1、由1變成0或由Z變成0,都認為發(fā)生了事件雖然STD_LOGIC一般只有0和1LAST_VALUE 信號屬性函數(shù),它表示最近一次事件發(fā)生前的值。 第6頁,共30頁。【例】ENTITY COMP_BAD IS PORT( a1,b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1

5、= 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; .(Synplify綜合) 第9頁,共30頁。實現(xiàn)時序電路的不同表述 【例】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -確保CLK的變化是一次上升沿的跳變 END IF; END PROCESS ; 第10頁,共30頁。實現(xiàn)時序電路的不同表述 【例】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 THE

6、N Q = D ; END IF; END PROCESS ; 第11頁,共30頁?!纠縇IBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK,D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - 必須打開STD_LOGIC_1164程序包 THEN Q1 = D ; END IF

7、; END PROCESS ; Q = Q1 ; END ; 第12頁,共30頁。實現(xiàn)時序電路的不同表述 【例】.PROCESS BEGIN wait until CLK = 1 ; -利用wait語句 Q = D ;END PROCESS; 第13頁,共30頁。實現(xiàn)時序電路的不同表述 【例】.PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用進程的啟動特性產(chǎn)生對CLK的邊沿檢測 END IF; END PROCESS ; 時序波形 第14頁,共30頁。實現(xiàn)時序電路的不同表述 【例】.PROCESS (CLK,D) BEGIN IF CLK = 1

8、-電平觸發(fā)型寄存器 THEN Q = D ; END IF; END PROCESS 時序波形 第15頁,共30頁。LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF51 IS PORT (CLK0 : IN STD_LOGIC ; CL: IN STD_LOGIC ; OUT1 : OUT STD_LOGIC ); END DFF51 ;ARCHITECTURE bhv OF DFF51 IS SIGNAL D,Q: STD_LOGIC ; BEGIN PROCESS (CLK1,CL) BEGIN D=CL NOR Q;IF CLK

9、1EVENT AND CLK1 = 1 THEN Q = D ; END IF; END PROCESS ; OUT1= NOT Q ; END bhv; 第16頁,共30頁。異步時序電路設(shè)計 在時序電路設(shè)計中應(yīng)注意,一個時鐘進程只能構(gòu)成對應(yīng)單一時鐘信號的時序電路,或者說是同步時序電路。即如果在進程中需要構(gòu)成多觸發(fā)器時序電路,也只能產(chǎn)生對應(yīng)某個單一時鐘的同步時序邏輯。異步邏輯必須用多個時鐘進程語句來構(gòu)成。 第17頁,共30頁。異步時序電路設(shè)計 【例】 . ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGINPRO1:

10、PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=1 THEN Q1 = NOT (Q2 OR A); END IF; END PROCESS ;PRO2: PROCESS (Q1) BEGIN IF Q1EVENT AND Q1=1 THEN Q2 = D; END IF; END PROCESS ; QQ = Q2 ; . 其中,進程標號PRO1和PRO2只是一種標注符號,不參加綜合。程序中,時鐘進程PRO1的賦值信號Q1成了時鐘進程PRO2的敏感信號及時鐘信號。這兩個時鐘進程通過Q1進行通信聯(lián)系。顯然,盡管兩個進程都是并行語句,但它們被執(zhí)行(啟動)的時刻并非

11、同時,因為根據(jù)敏感信號的設(shè)置,進程PRO1總是先于PRO2被啟動。第18頁,共30頁。寄存器描述的VHDL程序 異步時序電路設(shè)計 第19頁,共30頁。移位寄存器VHDL描述移位寄存器的描述移位寄存器就是一種具有移位功能的寄存器陣列。移位功能是指寄存器里面存儲的數(shù)據(jù)能夠在外部時鐘信號的作用下進行順序左移或者右移,因此移位寄存器常常用來存儲數(shù)據(jù)、實現(xiàn)數(shù)據(jù)的串并轉(zhuǎn)換、進行數(shù)值運算以及數(shù)據(jù)處理等。第20頁,共30頁?!纠?-11】LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY shift IS PORT( d1: IN STD_LOGIC; cp: I

12、N STD_LOGIC; d0: OUT STD_ LOGIC);END shift;ARCHITECTURE str OF shift IS COMPONENT dff PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END COMPONENT;SIGNAL q: STD_LOGIC_VECTOR( 4 DOWNTO 0);BEGINq(0) =d1;dffl :dff PORT MAP (q(0) ,cp, q(l) ; - -元件例化語句dff2 :dff PORT MAP (q(1) ,cp, q(2

13、);dff3 :dff PORT MAP (q(2) ,cp, q(3);dff4 :dff PORT MAP (q(3) ,cp, q(4);d0=q(4);END str;第21頁,共30頁。5.3.2 VHDL描述的語言現(xiàn)象說明(1) 元件聲明語句和元件例化語句文件在實體中首先定義了移位寄存器頂層設(shè)計元件的端口信號dl、cp、d0,然后在ARCHITECTURE和BEGIN之間利用COMPONENT語句對準備調(diào)用的元件(DFF觸發(fā)器)作了聲明,并定義了q(4)到q(0)五個信號作為器件內(nèi)部的連接線最后利用端口映射語句PORT MAP( )將四個D觸發(fā)器連接起來構(gòu)成一個完整的移位寄存器。第

14、22頁,共30頁。(2) LOOP循環(huán)語句常用的循環(huán)語句有FOR 和WHILE兩種。1). FOR 循環(huán)循環(huán)標號 : FOR 循環(huán)變量的循環(huán)次數(shù)范圍 LOOP順序語句;END LOOP 循環(huán)標號;例如:例:add: FOR i IN 1 TO 9 LOOP sum:=i+sum; END LOOP add; add 為循環(huán)標號,i 是一個臨時循環(huán)變量,屬于FOR 語句的局部變量,不必事先定義, 由FOR 語句自動定義,在FOR語句中不應(yīng)再使用其他與此變量同名的標識符。i從循環(huán)范圍的初值開始,每循環(huán)一次就自動加1,直到超出循環(huán)范圍的終值為止。執(zhí)行結(jié)果Sum中為到的和。例:add: FOR i I

15、N 9 DOWNTO 1 LOOP sum:=i+sum; END LOOP add;第23頁,共30頁。2). WHILE 循環(huán)WHILE 循環(huán)是一種未知循環(huán)次數(shù)的語句, 循環(huán)次數(shù)取決于條件表達式是否成立。其格式如下:循環(huán)標號 : WHILE 條件表達式 LOOP順序語句;END LOOP 循環(huán)標號 ;循環(huán)標號是用來表示W(wǎng)HILE循環(huán)語句的標識符,是可選項。在循環(huán)語句中,沒有給出循環(huán)次數(shù)的范圍,而是給出了循環(huán)語句的條件。WHILE后邊的條件表達式是一個布爾表達式,如果條件為TURE,則進行循環(huán),如果條件為FALSE,則結(jié)束循環(huán)。第24頁,共30頁。IF ( clr=0) THEN 清零;EL

16、SIF (clkEVENT) AND (clk=1) THEN IF (load =0) THEN 并行置數(shù) ELSIF (load =1) AND (dir=0) THEN 左移 ELSIF (load =1) AND (dir=1) THEN 右移 END IF;END IF;在完成多個條件語句時,一定要注意優(yōu)先問題,同時注意ELSIF的使用。(3) IF條件語句優(yōu)先問題第25頁,共30頁。(4)生成語句生成語句是一種循環(huán)語句,具有復(fù)制電路的功能。當設(shè)計一個由多個相同單元模塊組成的電路時,利用生成語句復(fù)制一組完全相同的并行組件或設(shè)計單元電路結(jié)構(gòu),避免多段相同結(jié)構(gòu)的重復(fù)書寫,以簡化設(shè)計。生成

17、語句有FOR工作模式和IF工作模式兩種。1) FOR 工作模式的生成語旬生成標號: FOR 循環(huán)變量IN 取值范圍GENERATE并行語句:END GENERATE 生成標號 ;第26頁,共30頁。【例5 -15】用FOR工作模式生成語句描述4位移位寄存器。程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift2 ISPORT( dl: IN STD_LOGIC;ep: IN STD_LOGIC;d0: OUT STD_LOGIC);END shift2;ARCHITECfURE str OF shift2 ISCOMPONENT

18、dffPORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC );END COMPONENT;SIGNAL q: STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINq(0) =dl;reg1:FOR i IN 0 TO 3 GENERATE -FOR 工作模式生成語句dffx:dddd PORT MAP (ep , q(i) , q( i+ 1); -元件例化END GENERATE reg1;d0 =q(4);END str;第27頁,共30頁。2) IF 工作模式的生成語句IF 工作模式的生成語句常用來描述帶有條件選擇的結(jié)構(gòu)。格式如下:生成標號: IF 條件GENERATE并行語句;END GENERATE 生成標號 ;其中,條件是一個布爾表達式,返回值為布爾類型:當返回值為TRUE時,就會去執(zhí)行生成語句中的并行處理語句;當返回值為FALSE時,則不執(zhí)行生成語句中的并行處理語句。第28頁,共30頁。【例5-16】用FOR和IF工作模式的生成語句描述8位移位寄存器。程序如

溫馨提示

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

評論

0/150

提交評論