




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第5章 寄存器設計應用,CPLD與FPGA的應用,寄存器VHDL描述,D觸發(fā)器的描述,D觸發(fā)器,【例】 LIBRARY 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 ; -類似于在芯片內部定義一個數(shù)據(jù)的暫存節(jié)點 BEGIN PROCESS (CLK,Q1) BEGIN IF CLKEVENT A
2、ND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; -將內部的暫存數(shù)據(jù)向端口輸出 END bhv;,寄存器描述的VHDL程序,VHDL描述的語言現(xiàn)象說明,信號定義和數(shù)據(jù)對象,信號定義 SIGNAL Q1:STD_LOGIC; 表示在描述的器件DFF1內部定義標識符Q1的數(shù)據(jù)對象為信號SIGNAL,其數(shù)據(jù)類型為STD_LOGIC。 由于Q1被定義為器件的內部節(jié)點信號,數(shù)據(jù)的進出不像端口信號那樣受限制,所以不必定義其端口模式(如IN、OUT等)。 定義Q1的目的是為了在設計更大的電路時使用由此引入的時序電路的信號,這是一種常用的時序電路設
3、計的方式。 有Q1過渡,Q不用BUFFER類型。,VHDL描述的語言現(xiàn)象說明,上升沿檢測表式和信號屬性函數(shù)EVENT,CLKEVENT AND CLK=1 檢測時鐘信號CLK的上升沿 關鍵詞EVENT是信號屬性函數(shù),用來獲得信號行為信息的函數(shù)稱為信號屬性函數(shù) EVENT “clkEVENT”就是對clk標識符的信號在當前的一個極小的時間段 內發(fā)生事件的情況進行檢測。所謂發(fā)生事件,就是clock在其數(shù)據(jù)類型的取值范圍內發(fā)生變化,從一種取值轉變到另一種取值(或電平方式)。,VHDL描述的語言現(xiàn)象說明,上升沿檢測表式和信號屬性函數(shù)EVENT,如果clk的數(shù)據(jù)類型定義為STD_LOGIC,則在 時間段
4、內,clk從其數(shù)據(jù)類型允許的9種值中的任何一個值向另一值跳變,如由0變成1、由1變成0或由Z變成0,都認為發(fā)生了事件 雖然STD_LOGIC一般只有0和1,LAST_VALUE 信號屬性函數(shù),它表示最近一次事件發(fā)生前的值。,【例】 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 = 1 ; ELSIF a1 b1 THEN q1 = 0 ;- 未提及當a1=b1時,
5、q1作何操作 END IF; END PROCESS ; END ;,不完整條件語句與時序電路,不完整條件語句與時序電路,電路圖(Synplify綜合),不完整條件語句與時序電路,. IF a1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; .,(Synplify綜合),實現(xiàn)時序電路的不同表述,【例】 . PROCESS (CLK) BEGIN IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -確保CLK的變化是一次上升沿的跳變 END IF; END PROCESS ;,實現(xiàn)時序電路的不同表
6、述,【例】 . PROCESS (CLK) BEGIN IF CLK=1 AND CLKLAST_VALUE=0 THEN Q = D ; END IF; END PROCESS ;,【例】 LIBRARY 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_e
7、dge(CLK) - 必須打開STD_LOGIC_1164程序包 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; END ;,實現(xiàn)時序電路的不同表述,【例】 . PROCESS BEGIN wait until CLK = 1 ; -利用wait語句 Q = D ; END PROCESS;,實現(xiàn)時序電路的不同表述,【例】 . PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用進程的啟動特性產生對CLK的邊沿檢測 END IF; END PROCESS ;,時序波形,實現(xiàn)時序電路的不同表述,【例】 . PRO
8、CESS (CLK,D) BEGIN IF CLK = 1 -電平觸發(fā)型寄存器 THEN Q = D ; END IF; END PROCESS,時序波形,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) B
9、EGIN D=CL NOR Q; IF CLK1EVENT AND CLK1 = 1 THEN Q = D ; END IF; END PROCESS ; OUT1= NOT Q ; END bhv;,異步時序電路設計,在時序電路設計中應注意,一個時鐘進程只能構成對應單一時鐘信號的時序電路,或者說是同步時序電路。即如果在進程中需要構成多觸發(fā)器時序電路,也只能產生對應某個單一時鐘的同步時序邏輯。異步邏輯必須用多個時鐘進程語句來構成。,異步時序電路設計,【例】 . ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGIN PR
10、O1: 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ù)敏感信號的設置,進程PRO1總是先于PRO2被啟動。,寄存器描述的VHDL程序,異步時序電路設計,移位寄存器VHDL描述 移位寄存器的描述 移位寄存器就是一種具有移位功能的寄存器陣列。移位功能是指寄存器里面存儲的數(shù)據(jù)能夠在外部時鐘信號的作用下進行順序左移或者右移,因此移位寄存器常常用來存儲數(shù)據(jù)、實現(xiàn)數(shù)據(jù)的串并轉換、進行數(shù)值運算以及數(shù)據(jù)處理等。,【例5-11】 LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY shift IS PORT( d1: IN STD_LOGIC; cp: IN STD_LOGIC; d0: O
12、UT 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); BEGIN q(0) =d1; dffl :dff PORT MAP (q(0) ,cp, q(l) ; - -元件例化語句 dff2 :dff PORT MAP (q(1) ,cp, q(2); dff3 :df
13、f PORT MAP (q(2) ,cp, q(3); dff4 :dff PORT MAP (q(3) ,cp, q(4); d0=q(4); END str;,5.3.2 VHDL描述的語言現(xiàn)象說明 (1) 元件聲明語句和元件例化語句 文件在實體中首先定義了移位寄存器頂層設計元件的端口信號dl、cp、d0, 然后在ARCHITECTURE和BEGIN之間利用COMPONENT語句對準備調用的元件(DFF觸發(fā)器)作了聲明,并定義了q(4)到q(0)五個信號作為器件內部的連接線 最后利用端口映射語句PORT MAP( )將四個D觸發(fā)器連接起來構成一個完整的移位寄存器。,(2) LOOP循環(huán)語句
14、,常用的循環(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語句中不應再使用其他與此變量同名的標識符。i從循環(huán)范圍的初值開始,每循環(huán)一次就自動加1,直到超出循環(huán)范圍的終值為止。執(zhí)行結果Sum中為到的和。,例:add: FOR i IN 9 DOWNTO 1
15、LOOP sum:=i+sum; END LOOP add;,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,則結束循環(huán)。,IF ( clr=0) THEN 清零; ELSIF (clkEVENT) AND (clk=
16、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)先問題,(4)生成語句 生成語句是一種循環(huán)語句,具有復制電路的功能。當設計一個由多個相同單元模塊組成的電路時,利用生成語句復制一組完全相同的并行組件或設計單元電路結構,避免多段相同結構的重復書寫,以簡化設計。 生成語句有FOR工作模式和IF工作模式兩種。 1) FOR
17、工作模式的生成語旬 生成標號: FOR 循環(huán)變量IN 取值范圍GENERATE 并行語句: END GENERATE 生成標號 ;,【例5 -15】用FOR工作模式生成語句描述4位移位寄存器。程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY shift2 IS PORT( dl: IN STD_LOGIC; ep: IN STD_LOGIC; d0: OUT STD_LOGIC); END shift2; ARCHITECfURE str OF shift2 IS COMPONENT dff PORT (CLK : IN STD_L
18、OGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END COMPONENT; SIGNAL q: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN q(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;,2) IF 工作模式的生成語句 IF 工作模式的生成語句常用來描述帶有條件選擇的結構。格式如下: 生成標號: IF 條件GENERATE 并行語句; END GENERATE 生成標號 ; 其中,條件是一個布爾表達式,返回值為布爾類型:當返回值為TRUE時,就會去執(zhí)行生成語句中的并行處理語句;當返回值為FALSE時,則不執(zhí)行生成語句中的并行處理語句。,【例5-16】用FOR和IF工作模式的生成語句描述8位移位寄存器。程序如下: LIBRAR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美術欣賞教學講座
- 肩周炎特色護理方案課件
- 新型研究型大學的建設目標
- 生育補貼的資金來源與保障策略
- 工業(yè)遺產保護規(guī)劃的制定與實施
- 地理跨學科教學的跨文化視野策略
- 傳統(tǒng)戲劇保護的社會參與機制
- 加工機芯合同范本
- 廠子出售轉讓合同范本
- 加入?yún)f(xié)會合同范本
- (2024年)健康評估教學教案心電圖檢查教案
- 政府機關保安服務項目整體服務方案
- 武漢中考理化生實驗備考試題庫(含答案)
- 村民委員會組織法解讀(修改)課件
- 旅店會客登記制度
- 無人機校企合作方案
- 新教材 人教版高中物理選擇性必修第一冊 第三章 機械波 知識點考點重點難點提煉匯總
- 城市軌道交通員工職業(yè)素養(yǎng)(高職)全套教學課件
- 體系基礎知識培訓
- 工程力學期末考試試卷A及答案
- 氣體充裝安全操作規(guī)程
評論
0/150
提交評論