VHDL語言 第八章 時序邏輯電路設計_第1頁
VHDL語言 第八章 時序邏輯電路設計_第2頁
VHDL語言 第八章 時序邏輯電路設計_第3頁
VHDL語言 第八章 時序邏輯電路設計_第4頁
VHDL語言 第八章 時序邏輯電路設計_第5頁
已閱讀5頁,還剩41頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

第八章

時序邏輯電路設計時序邏輯電路定義:任意時刻的輸出不僅取決于當時的輸入信號,而且還取決于電路原來的狀態,或者說,還與以前的輸入有關。

按照電路的工作方式,時序邏輯電路可分為同步時序邏輯電路(簡稱同步時序電路)和異步時序邏輯電路(簡稱異步時序電路)兩種類型。

常見的時序邏輯電路有觸發器、計數器、寄存器等。概述8.1時鐘信號和復位信號8.1.1時鐘信號描述時序電路總是以時鐘進程形式來描述,方式有兩種:1)進程的敏感信號是時鐘信號2)用進程中的WAITON語句等待時鐘任何時序電路都是用時鐘信號作為驅動信號的。時序電路只是在時鐘信號的有效沿或電平到來時,其狀態才發生變化。因此,時鐘信號通常是描述時序電路的程序的執行條件。1)進程的敏感信號是時鐘信號在這種情況下,時鐘信號應作為敏感信號,顯式地出現在PROCESS語句后跟的括號中,例如PROCESS(clock_signal)。時鐘信號邊沿的到來,將作為時序電路語句執行的條件。例:PROCESS(clock_signal)BEGINIF(clock_edge_condition)THENsignal_out<=signal_in;---

其它時序語句;

---ENDIF;ENDPROCESS;該進程在時鐘信號發生變化時被啟動,而在時鐘邊沿的條件得到滿足時才真正執行時序電路所對應的語句。使用了IF語句對時鐘沿進行說明。在這種情況下,描述時序電路的進程將沒有敏感信號,而是用WAITON語句來控制進程的執行。也就是說,進程通常停留在WAITON語句上,只有在時鐘信號到來,且滿足邊沿條件時,其余的語句才能執行,如下例如示:PROCESSBEGINWAITON(clock_signal)UNTIL(clock_edge_conditon);signal_out<=signal_in;---

其它時序語句;

---ENDPROCESS2)用進程中的WAITON語句等待時鐘在使用WAITON語句的進程中,敏感信號量應寫在進程中的WAITON語句后面。在編寫上述兩個程序時應注意:

?無論IF語句還是WAITON語句,在對時鐘邊沿說明時,一定要注明是上升沿還是下降沿,光說明是邊沿是不行的。

?當時鐘信號作為進程的敏感信號時,在敏感信號的表中不能出現一個以上的時鐘信號,除時鐘信號以外,像復位信號等是可以和時鐘信號一起出現在敏感表中的。

?WAITON語句只能放在進程的最前面或者是最后面。3)時鐘邊沿的描述可以用時鐘信號的屬性來描述時鐘的邊沿。其上升沿的描述為:IFclk=‘1’ANDclk’LAST_VALUE=‘0’ANDclk’EVENT時鐘的下降沿的描述為:IFclk=‘0’ANDclk’LAST_VALUE=‘1’ANDclk’EVENT在一些程序中經常所見時鐘沿表達如下時鐘上升沿:

(clock’eventandclock=‘1’)時鐘下降沿:

(clock’eventandclock=‘0’)8.1.2觸發器的同步和非同步復位同步復位:當復位信號有效且在給定的時鐘邊沿到來時,觸發器才被復位。異步復位:一旦復位信號有效,觸發器就被復位。1)同步復位在用VHDL語言描述時,同步復位一定在以時鐘為敏感信號的進程中定義,且用IF語句來描述必要的復位條件。例如:process(clock_signal)beginif(clock_edge_condition)then

if(reset_condition)thensignal_out<=reset_value;elsesignal_out<=signal_in;┇endif;endif;endprocess;2)非同步復位異步復位在描述時與同步方式不同:首先在進程的敏感信號中除時鐘信號以外,還應加上復位信號;其次是用IF語句描述復位條件;最后在ELSE段描述時鐘信號邊沿的條件,并加上EVENT屬性。其描述方式如:PROCESS(reset_signal,clk_signal)BEGINIF(reset_condition)THENsignal_out<=reset_value;ELSIF(clk_eventANDclk_edge_condition)THENsignal_out<=signal_in;---

其它時序語句;

---屬性’EVENT

對在當前的一個極小的時間段Δ內發生的事件的情況進行檢測。如發生事件,則返回true,否則返回false。發生事件:信號電平發生變化。左例中進程后跟括號內有兩個敏感信號:復位信號和時鐘信號。進程中的IF語句一開始就判斷復位條件,可見復位優先級高于時鐘。8.2觸發器觸發器(FlipFlop)是一種可以存儲電路狀態的電子元件。按邏輯功能不同分為:RS觸發器、D觸發器、JK觸發器、T觸發器。8.2.1鎖存器

鎖存器(Latch)是一種對脈沖電平敏感的存儲單元電路,它們可以在特定輸入脈沖電平作用下改變狀態。鎖存,就是把信號暫存以維持某種電平狀態。鎖存器的最主要作用是緩存。鎖存器根據觸發邊沿、復位和預置方式以及輸出端多少的不同可以有多種形式的鎖存器。1)D鎖存器上升沿觸發的D鎖存器:上升沿觸發的D鎖存器,有一個數據輸入端d,一個時鐘輸入端Clk和一個數據輸出端q。D鎖存器的輸出端只有在上升沿脈沖過后輸入端d的數據才傳送到輸出端q。時鐘信號應作為敏感信號,顯式地出現在PROCESS語句后跟的括號中。使用了IF語句對時鐘沿進行說明。時鐘邊沿的到來時,將作為時序電路語句執行的條件。D鎖存器程序實例1D鎖存器程序實例2WAITUNTIL

表達式;當表達式的值為“真”時,進程被啟動,否則進程被掛起。

該語句在表達式中將建立一個隱式的敏感信號量表,當表中的任何一個信號量發生變化時,就立即對表達式進行一次評估。如果評估結果使表達式返回一個“真”值,則進程脫離等待狀態,繼續執行下一個語句。2)異步復位D鎖存器異步復位D鎖存器和一般的D鎖存器區別是多了一個復位輸入端clr。當clr=‘0’時,輸出端q置‘0’。clr稱為清0輸入端。clr低電平有效。進程后跟括號內有兩個敏感信號:清0信號和時鐘信號。進程中的IF語句一開始就判斷清0條件,可見此時清0優先級高于時鐘。異步復位D鎖存器程序實例3)異步復位/置位D鎖存器除了前述的d,clk,q端外,還有clr和pset的復位、置位端。當clr=‘0’時復位,使q=‘0’;當pset=‘0’時置位,使q=‘1’;clr、pset均是低電平有效。異步復位/置位D鎖存器程序實例進程后跟括號內有三個敏感信號:時鐘信號,復位信號和置位信號。通過進程中的IFTHENELSEIF語句可以看出:優先級,置位最高,復位次之,時鐘最低。4)同步復位D鎖存器與異步方式不同的是,當復位信號有效(clr=‘1’)以后,只是在有效邊沿來時才能進行復位操作。從圖中可以看出復位信號的優先級比d端的數據輸入高,也就是當clr=‘1’時,無論d端輸入什么信號,在clk的上升沿到來時,q輸出總是“0”。同步復位D鎖存器程序實例進程后跟括號內只有一個敏感信號:時鐘信號。通過進程中的IFTHENELSEIF語句可以看出:優先級,時鐘最高,復位次之。8.2.2JK觸發器JK觸發器是數字電路觸發器中的一種電路單元。JK觸發器具有置0、置1、保持和翻轉功能,在各類集成觸發器中,JK觸發器的功能最為齊全。在實際應用中,它不僅有很強的通用性,而且能靈活地轉換其他類型的觸發器。由JK觸發器可以構成D觸發器和T觸發器。JK觸發器的輸入端有置位輸入pset,復位輸入clr,控制輸入j和k,時鐘信號輸入clk;輸出端有正向輸出端q和反向輸出端qb。JK觸發器的真值表如表所示。表中q0表示原狀態不變,翻轉表示改變原來的狀態。優先級:置位最高于復位,與真值表不一致,沒有考慮pset=clr=“0”時,輸出時q=“X”(未知態)。四個敏感信號,異步與真值表一致的程序此例中pset=clr=“0”這種情況沒有考慮,在邏輯綜合時,輸出是未知的。8.2.3T觸發器TClkQQ

libraryieee;useieee.std_logic_1164.all;entityt_ffisport(t,clk:instd_logic;q:bufferstd_logic);endt_ff;architecturertloft_ffisbeginprocess(clk)beginifclk’eventandclk=‘1’thenift=‘1’thenq<=notq;elseq<=q;endif;endprocess;endrtl;T觸發器程序實例libraryieee;useieee.std_logic_1164.all;entityrs_ffisport(r,s,clk:instd_logic;q,qn:bufferstd_logic);endrs_ff;architecturertlofrs_ffisbeginprocess(r,s,clk)beginifclk’eventandclk=‘1’thenifs=‘1’andr=‘0’thenq<=‘0’;qn<=‘1’;elsifs=‘0’andr=‘1’thenq<=‘1’;qn<=‘0’;elsifs=‘0’andr=‘0’thenq<=q;qn<=qn;elsenull;endif;endif;endprocess;endrtl;SClkQQRSRQQn00QQn0110100111??8.2.4同步RS觸發器null為空語句,不作任何操作。格式:

null;8.3寄存器數字電路中,用來存放二進制數據或代碼的電路稱為寄存器。

寄存器是由具有存儲功能的觸發器組合起來構成的。一個觸發器可以存儲1位二進制代碼,存放n位二進制代碼的寄存器,需用n個觸發器來構成。

按照功能的不同,可將寄存器分為基本寄存器和移位寄存器兩大類。基本寄存器只能并行送入數據,需要時也只能并行輸出。移位寄存器中的數據可以在移位脈沖作用下依次逐位右移或左移,數據既可以并行輸入、并行輸出,也可以串行輸入、串行輸出,還可以并行輸入、串行輸出,串行輸入、并行輸出,十分靈活,用途也很廣。8位串行輸入、串行輸出移位寄存器它具有兩個輸入端:數據輸入端a和時鐘輸入端clk;一個數據輸出端b。在時鐘信號作用下,前級數據向后級移動。該8位寄存器由8個D觸發器構成。8位移位寄存器描述(結構描述)在結構體的說明部分利用COMPONENT語句對要引用元件進行聲明。利用生成語句指定生成次數利用COMPONENT_INSTANT語句,調用元件,用位置映射方式8位移位寄存器直接用信號連接描述進程中執行信號代入語句時,被代入信號量的值在當時并沒有發生改變,直到進程結束,代入過程才同時發生。此例描述了移位功能。若將程序中信號改成變量,變量賦值語句中,被賦值的變量的值會立即改變,結果如何?8.4計數器在數字電子技術中應用的最多的時序邏輯電路。計數器不僅能用于對時鐘脈沖計數,還可以用于分頻、定時、產生節拍脈沖和脈沖序列以及進行數字運算等。但是并無法顯示計算結果,一般都是要通過外接LCD或LED屏才能顯示。1、如果按照計數器中的觸發器是否同時翻轉分類,可將計數器分為同步計數器和異步計數器兩種。常見的同步計數器有74160系列,74LS190系列,常見的異步計數器有74LS290系列。2、如果按照技術過程中數字增減分類,又可將計數器分為加法計數器和減法計數器,隨時鐘信號不斷增減的為加法計數器,不斷減少的為減法計數器。

同步計數器指在時鐘脈沖(計數脈沖)的控制下,構成計數器的各觸發器狀態同時發生變化的計數器。8.4.1同步計數器(1)帶允許端的十二進制計數器計數器由4個觸發器構成,clr是清零,en是計數控制端,qa,qb,qc,qd為計數器的4位二進制值的輸出端。帶允許端的十二進制計數器調用了標準邏輯無符號包定義了計數中間信號,由于輸出qa,qb,qc,qd被定義為out類型PROCESS后跟兩個敏感信號判斷清零信號判斷計數使能信號判斷時鐘信號判斷計數的終點‘’不同類型數據值可以進行相加,這是因為調用了標準邏輯無符號程序包(2)可逆計數器

可逆計數器根據計數控制信號的不同,在時鐘脈沖作用下,可以實現加1和減1的操作??刂贫藆pdn=‘1’計數器加1,updn=‘0’計數器減1。可逆計數器(加減計數器)程序設計調用了標準邏輯無符號包定義了計數中間信號PRO

溫馨提示

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

評論

0/150

提交評論