




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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 ; -類似于在芯片內部定義一個數據的暫存節(jié)點 BEGIN PROCESS (CLK,Q1) BEGIN IF CLKEVENT A
2、ND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; -將內部的暫存數據向端口輸出 END bhv;,寄存器描述的VHDL程序,VHDL描述的語言現象說明,信號定義和數據對象,信號定義 SIGNAL Q1:STD_LOGIC; 表示在描述的器件DFF1內部定義標識符Q1的數據對象為信號SIGNAL,其數據類型為STD_LOGIC。 由于Q1被定義為器件的內部節(jié)點信號,數據的進出不像端口信號那樣受限制,所以不必定義其端口模式(如IN、OUT等)。 定義Q1的目的是為了在設計更大的電路時使用由此引入的時序電路的信號,這是一種常用的時序電路設
3、計的方式。 有Q1過渡,Q不用BUFFER類型。,VHDL描述的語言現象說明,上升沿檢測表式和信號屬性函數EVENT,CLKEVENT AND CLK=1 檢測時鐘信號CLK的上升沿 關鍵詞EVENT是信號屬性函數,用來獲得信號行為信息的函數稱為信號屬性函數 EVENT “clkEVENT”就是對clk標識符的信號在當前的一個極小的時間段 內發(fā)生事件的情況進行檢測。所謂發(fā)生事件,就是clock在其數據類型的取值范圍內發(fā)生變化,從一種取值轉變到另一種取值(或電平方式)。,VHDL描述的語言現象說明,上升沿檢測表式和信號屬性函數EVENT,如果clk的數據類型定義為STD_LOGIC,則在 時間段
4、內,clk從其數據類型允許的9種值中的任何一個值向另一值跳變,如由0變成1、由1變成0或由Z變成0,都認為發(fā)生了事件 雖然STD_LOGIC一般只有0和1,LAST_VALUE 信號屬性函數,它表示最近一次事件發(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綜合),實現時序電路的不同表述,【例】 . PROCESS (CLK) BEGIN IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -確保CLK的變化是一次上升沿的跳變 END IF; END PROCESS ;,實現時序電路的不同表
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 ;,實現時序電路的不同表述,【例】 . PROCESS BEGIN wait until CLK = 1 ; -利用wait語句 Q = D ; END PROCESS;,實現時序電路的不同表述,【例】 . PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用進程的啟動特性產生對CLK的邊沿檢測 END IF; END PROCESS ;,時序波形,實現時序電路的不同表述,【例】 . 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進行通信聯系。顯然,盡管兩個進程都是并行語句,但它們被執(zhí)行(啟動)
11、的時刻并非同時,因為根據敏感信號的設置,進程PRO1總是先于PRO2被啟動。,寄存器描述的VHDL程序,異步時序電路設計,移位寄存器VHDL描述 移位寄存器的描述 移位寄存器就是一種具有移位功能的寄存器陣列。移位功能是指寄存器里面存儲的數據能夠在外部時鐘信號的作用下進行順序左移或者右移,因此移位寄存器常常用來存儲數據、實現數據的串并轉換、進行數值運算以及數據處理等。,【例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描述的語言現象說明 (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)次數范圍 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)次數的語句, 循環(huán)次數取決于條件表達式是否成立。 其格式如下: 循環(huán)標號 : WHILE 條件表達式 LOOP 順序語句; END LOOP 循環(huán)標號 ; 循環(huán)標號是用來表示WHILE循環(huán)語句的標識符,是可選項。在循環(huán)語句中,沒有給出循環(huán)次數的范圍,而是給出了循環(huán)語句的條件。WHILE后邊的條件表達式是一個布爾表達式,如果條件為TURE,則進行循環(huán),如果條件為FALSE,則結束循環(huán)。,IF ( clr=0) THEN 清零; ELSIF (clkEVENT) AND (clk=
16、1) THEN IF (load =0) THEN 并行置數 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇射陽中學2024~2025學年高二下冊6月期末考試數學試題含解析
- 消費者信任建立與維護考核試卷
- 中藥藥效評價與臨床用藥個體化研究考核試卷
- 印刷機精度提升在標簽印刷中的應用分析考核試卷
- 物聯網與智能設備的邊緣計算優(yōu)勢考核試卷
- 財經大學-經濟管理專業(yè)-2017級《現代企業(yè)管理》試卷
- 絲織品在戶外運動服裝色彩與心理影響研究考核試卷
- 部編語文一年級上冊拼音拼讀練習冊
- 2025年中國HID手電筒數據監(jiān)測研究報告
- 2025年中國C型組合角尺數據監(jiān)測研究報告
- 風動鑿巖機操作規(guī)程(4篇)
- 自助餐的服務流程培訓
- 聯塑管材檢驗報告模板
- 部編版五年級上冊課內、課外閱讀訓練(教師+學生)+根據課文內容填空
- 浙江省杭州市(2024年-2025年小學四年級語文)部編版質量測試((上下)學期)試卷及答案
- 【建筑專業(yè)】16J914-1公用建筑衛(wèi)生間(完整)
- DL∕T 1098-2016 間隔捧技術條件和試驗方法
- 化學-福建省泉州市2023~2024學年高一下學期期末教學質量監(jiān)測試題和答案
- AQ/T 2059-2016 磷石膏庫安全技術規(guī)程(正式版)
- AQ 1011-2005 煤礦在用主通風機系統(tǒng)安全檢測檢驗規(guī)范(正式版)
- 2021年廣東省深圳實驗學校自主招生數學模擬試卷
評論
0/150
提交評論