《寄存器設(shè)計(jì)應(yīng)用》PPT課件.ppt_第1頁(yè)
《寄存器設(shè)計(jì)應(yīng)用》PPT課件.ppt_第2頁(yè)
《寄存器設(shè)計(jì)應(yīng)用》PPT課件.ppt_第3頁(yè)
《寄存器設(shè)計(jì)應(yīng)用》PPT課件.ppt_第4頁(yè)
《寄存器設(shè)計(jì)應(yīng)用》PPT課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第5章 寄存器設(shè)計(jì)應(yīng)用,CPLD與FPGA的應(yīng)用,寄存器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 ; -類(lèi)似于在芯片內(nèi)部定義一個(gè)數(shù)據(jù)的暫存節(jié)點(diǎn) BEGIN PROCESS (CLK,Q1) BEGIN IF CLKEVENT A

2、ND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; -將內(nèi)部的暫存數(shù)據(jù)向端口輸出 END bhv;,寄存器描述的VHDL程序,VHDL描述的語(yǔ)言現(xiàn)象說(shuō)明,信號(hào)定義和數(shù)據(jù)對(duì)象,信號(hào)定義 SIGNAL Q1:STD_LOGIC; 表示在描述的器件DFF1內(nèi)部定義標(biāo)識(shí)符Q1的數(shù)據(jù)對(duì)象為信號(hào)SIGNAL,其數(shù)據(jù)類(lèi)型為STD_LOGIC。 由于Q1被定義為器件的內(nèi)部節(jié)點(diǎn)信號(hào),數(shù)據(jù)的進(jìn)出不像端口信號(hào)那樣受限制,所以不必定義其端口模式(如IN、OUT等)。 定義Q1的目的是為了在設(shè)計(jì)更大的電路時(shí)使用由此引入的時(shí)序電路的信號(hào),這是一種常用的時(shí)序電路設(shè)

3、計(jì)的方式。 有Q1過(guò)渡,Q不用BUFFER類(lèi)型。,VHDL描述的語(yǔ)言現(xiàn)象說(shuō)明,上升沿檢測(cè)表式和信號(hào)屬性函數(shù)EVENT,CLKEVENT AND CLK=1 檢測(cè)時(shí)鐘信號(hào)CLK的上升沿 關(guān)鍵詞EVENT是信號(hào)屬性函數(shù),用來(lái)獲得信號(hào)行為信息的函數(shù)稱(chēng)為信號(hào)屬性函數(shù) EVENT “clkEVENT”就是對(duì)clk標(biāo)識(shí)符的信號(hào)在當(dāng)前的一個(gè)極小的時(shí)間段 內(nèi)發(fā)生事件的情況進(jìn)行檢測(cè)。所謂發(fā)生事件,就是clock在其數(shù)據(jù)類(lèi)型的取值范圍內(nèi)發(fā)生變化,從一種取值轉(zhuǎn)變到另一種取值(或電平方式)。,VHDL描述的語(yǔ)言現(xiàn)象說(shuō)明,上升沿檢測(cè)表式和信號(hào)屬性函數(shù)EVENT,如果clk的數(shù)據(jù)類(lèi)型定義為STD_LOGIC,則在 時(shí)間段

4、內(nèi),clk從其數(shù)據(jù)類(lèi)型允許的9種值中的任何一個(gè)值向另一值跳變,如由0變成1、由1變成0或由Z變成0,都認(rèn)為發(fā)生了事件 雖然STD_LOGIC一般只有0和1,LAST_VALUE 信號(hào)屬性函數(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 ;- 未提及當(dāng)a1=b1時(shí),

5、q1作何操作 END IF; END PROCESS ; END ;,不完整條件語(yǔ)句與時(shí)序電路,不完整條件語(yǔ)句與時(shí)序電路,電路圖(Synplify綜合),不完整條件語(yǔ)句與時(shí)序電路,. IF a1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; .,(Synplify綜合),實(shí)現(xiàn)時(shí)序電路的不同表述,【例】 . PROCESS (CLK) BEGIN IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -確保CLK的變化是一次上升沿的跳變 END IF; END PROCESS ;,實(shí)現(xiàn)時(shí)序電路的不同表

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) - 必須打開(kāi)STD_LOGIC_1164程序包 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; END ;,實(shí)現(xiàn)時(shí)序電路的不同表述,【例】 . PROCESS BEGIN wait until CLK = 1 ; -利用wait語(yǔ)句 Q = D ; END PROCESS;,實(shí)現(xiàn)時(shí)序電路的不同表述,【例】 . PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用進(jìn)程的啟動(dòng)特性產(chǎn)生對(duì)CLK的邊沿檢測(cè) END IF; END PROCESS ;,時(shí)序波形,實(shí)現(xiàn)時(shí)序電路的不同表述,【例】 . PRO

8、CESS (CLK,D) BEGIN IF CLK = 1 -電平觸發(fā)型寄存器 THEN Q = D ; END IF; END PROCESS,時(shí)序波形,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;,異步時(shí)序電路設(shè)計(jì),在時(shí)序電路設(shè)計(jì)中應(yīng)注意,一個(gè)時(shí)鐘進(jìn)程只能構(gòu)成對(duì)應(yīng)單一時(shí)鐘信號(hào)的時(shí)序電路,或者說(shuō)是同步時(shí)序電路。即如果在進(jìn)程中需要構(gòu)成多觸發(fā)器時(shí)序電路,也只能產(chǎn)生對(duì)應(yīng)某個(gè)單一時(shí)鐘的同步時(shí)序邏輯。異步邏輯必須用多個(gè)時(shí)鐘進(jìn)程語(yǔ)句來(lái)構(gòu)成。,異步時(shí)序電路設(shè)計(jì),【例】 . 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 ; .,其中,進(jìn)程標(biāo)號(hào)PRO1和PRO2只是一種標(biāo)注符號(hào),不參加綜合。程序中,時(shí)鐘進(jìn)程PRO1的賦值信號(hào)Q1成了時(shí)鐘進(jìn)程PRO2的敏感信號(hào)及時(shí)鐘信號(hào)。這兩個(gè)時(shí)鐘進(jìn)程通過(guò)Q1進(jìn)行通信聯(lián)系。顯然,盡管兩個(gè)進(jìn)程都是并行語(yǔ)句,但它們被執(zhí)行(啟動(dòng))

11、的時(shí)刻并非同時(shí),因?yàn)楦鶕?jù)敏感信號(hào)的設(shè)置,進(jìn)程PRO1總是先于PRO2被啟動(dòng)。,寄存器描述的VHDL程序,異步時(shí)序電路設(shè)計(jì),移位寄存器VHDL描述 移位寄存器的描述 移位寄存器就是一種具有移位功能的寄存器陣列。移位功能是指寄存器里面存儲(chǔ)的數(shù)據(jù)能夠在外部時(shí)鐘信號(hào)的作用下進(jìn)行順序左移或者右移,因此移位寄存器常常用來(lái)存儲(chǔ)數(shù)據(jù)、實(shí)現(xiàn)數(shù)據(jù)的串并轉(zhuǎn)換、進(jìn)行數(shù)值運(yùn)算以及數(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) ; - -元件例化語(yǔ)句 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描述的語(yǔ)言現(xiàn)象說(shuō)明 (1) 元件聲明語(yǔ)句和元件例化語(yǔ)句 文件在實(shí)體中首先定義了移位寄存器頂層設(shè)計(jì)元件的端口信號(hào)dl、cp、d0, 然后在ARCHITECTURE和BEGIN之間利用COMPONENT語(yǔ)句對(duì)準(zhǔn)備調(diào)用的元件(DFF觸發(fā)器)作了聲明,并定義了q(4)到q(0)五個(gè)信號(hào)作為器件內(nèi)部的連接線 最后利用端口映射語(yǔ)句PORT MAP( )將四個(gè)D觸發(fā)器連接起來(lái)構(gòu)成一個(gè)完整的移位寄存器。,(2) LOOP循環(huán)語(yǔ)句

14、,常用的循環(huán)語(yǔ)句有FOR 和WHILE兩種。 1). FOR 循環(huán) 循環(huán)標(biāo)號(hào) : FOR 循環(huán)變量的循環(huán)次數(shù)范圍 LOOP 順序語(yǔ)句; END LOOP 循環(huán)標(biāo)號(hào); 例如: 例:add: FOR i IN 1 TO 9 LOOP sum:=i+sum; END LOOP add; add 為循環(huán)標(biāo)號(hào),i 是一個(gè)臨時(shí)循環(huán)變量,屬于FOR 語(yǔ)句的局部變量,不必事先定義, 由FOR 語(yǔ)句自動(dòng)定義,在FOR語(yǔ)句中不應(yīng)再使用其他與此變量同名的標(biāo)識(shí)符。i從循環(huán)范圍的初值開(kāi)始,每循環(huán)一次就自動(dòng)加1,直到超出循環(huán)范圍的終值為止。執(zhí)行結(jié)果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ù)的語(yǔ)句, 循環(huán)次數(shù)取決于條件表達(dá)式是否成立。 其格式如下: 循環(huán)標(biāo)號(hào) : WHILE 條件表達(dá)式 LOOP 順序語(yǔ)句; END LOOP 循環(huán)標(biāo)號(hào) ; 循環(huán)標(biāo)號(hào)是用來(lái)表示W(wǎng)HILE循環(huán)語(yǔ)句的標(biāo)識(shí)符,是可選項(xiàng)。在循環(huán)語(yǔ)句中,沒(méi)有給出循環(huán)次數(shù)的范圍,而是給出了循環(huán)語(yǔ)句的條件。WHILE后邊的條件表達(dá)式是一個(gè)布爾表達(dá)式,如果條件為T(mén)URE,則進(jìn)行循環(huán),如果條件為FALSE,則結(jié)束循環(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; 在完成多個(gè)條件語(yǔ)句時(shí),一定要注意優(yōu)先問(wèn)題,同時(shí)注意ELSIF的使用。,(3) IF條件語(yǔ)句優(yōu)先問(wèn)題,(4)生成語(yǔ)句 生成語(yǔ)句是一種循環(huán)語(yǔ)句,具有復(fù)制電路的功能。當(dāng)設(shè)計(jì)一個(gè)由多個(gè)相同單元模塊組成的電路時(shí),利用生成語(yǔ)句復(fù)制一組完全相同的并行組件或設(shè)計(jì)單元電路結(jié)構(gòu),避免多段相同結(jié)構(gòu)的重復(fù)書(shū)寫(xiě),以簡(jiǎn)化設(shè)計(jì)。 生成語(yǔ)句有FOR工作模式和IF工作模式兩種。 1) FOR

17、工作模式的生成語(yǔ)旬 生成標(biāo)號(hào): FOR 循環(huán)變量IN 取值范圍GENERATE 并行語(yǔ)句: END GENERATE 生成標(biāo)號(hào) ;,【例5 -15】用FOR工作模式生成語(yǔ)句描述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 工作模式生成語(yǔ)句 dffx:dddd PORT MAP (ep , q(i) , q( i+ 1); -元件例化 END GENERATE reg1; d0 =q(4); END str;,2) IF 工作模式的生成語(yǔ)句 IF 工作模式的生成語(yǔ)句常用來(lái)描述帶有條件選擇的結(jié)構(gòu)。格式如下: 生成標(biāo)號(hào): IF 條件GENERATE 并行語(yǔ)句; END GENERATE 生成標(biāo)號(hào) ; 其中,條件是一個(gè)布爾表達(dá)式,返回值為布爾類(lèi)型:當(dāng)返回值為T(mén)RUE時(shí),就會(huì)去執(zhí)行生成語(yǔ)句中的并行處理語(yǔ)句;當(dāng)返回值為FALSE時(shí),則不執(zhí)行生成語(yǔ)句中的并行處理語(yǔ)句。,【例5-16】用FOR和IF工作模式的生成語(yǔ)句描述8位移位寄存器。程序如下: LIBRAR

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論