《基于FPGA的數(shù)字電路系統(tǒng)設(shè)計》課件第3章_第1頁
《基于FPGA的數(shù)字電路系統(tǒng)設(shè)計》課件第3章_第2頁
《基于FPGA的數(shù)字電路系統(tǒng)設(shè)計》課件第3章_第3頁
《基于FPGA的數(shù)字電路系統(tǒng)設(shè)計》課件第3章_第4頁
《基于FPGA的數(shù)字電路系統(tǒng)設(shè)計》課件第3章_第5頁
已閱讀5頁,還剩372頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章綜合設(shè)計實例3.1乒乓球游戲電路設(shè)計3.2交通燈控制電路3.3簡易投幣式郵票自動銷售機(jī)控制電路設(shè)計3.4簡易數(shù)字鐘3.5按鍵陣列掃描及點(diǎn)陣顯示器控制電路設(shè)計3.6數(shù)字頻率/周期計3.7生理刺激反應(yīng)時間測試儀3.8LCD顯示控制電路3.9簡易數(shù)字式函數(shù)信號發(fā)生器3.10簡易數(shù)字電壓表

3.1乒乓球游戲電路設(shè)計

3.1.1設(shè)計實例

1.設(shè)計要求

以12個發(fā)光二極管逐個點(diǎn)亮模擬乒乓球的運(yùn)動,雙方擊球動作各以一個按鍵模擬,并以4位LED數(shù)碼管顯示游戲雙方的得分。具體規(guī)則如下:

(1)當(dāng)發(fā)球方按過擊球鍵后,“乒乓球”向?qū)Ψ揭苿樱?dāng)“球”達(dá)到終端位置時,對方必須按鍵接“球”。若對方在“球”到達(dá)接球位置時準(zhǔn)確按下?lián)羟蜴I,“球”即向反方向移動。若“球”到達(dá)接球位置時未被“接”住,“球”將飛出界外,發(fā)球方得1分。若對方在“球”未到達(dá)接球位置時按鍵,接球無效,“球”將繼續(xù)前行,直至出界。

(2)每次擊中“球”時,蜂鳴器鳴響一聲。

(3)當(dāng)某方得分達(dá)到11分,一局結(jié)束。記分閃顯3次,每次顯示1s,間隔1s,然后計分值歸零。雙方得分?jǐn)?shù)值可以各通過一個按鍵遞減以修改錯誤記分,減記分操作時,數(shù)值在0~10間變化。

(4)除游戲開始(上電)或一局結(jié)束(某方得分達(dá)11分)后,發(fā)球方可任意,否則只允許得分方發(fā)球,失分方的發(fā)球信號無效。

(5)球速可通過兩個按鍵設(shè)定為4級,移動速率分別為2Hz、4Hz、8Hz和10Hz。

2.設(shè)計的硬件環(huán)境

電路控制部分以FPGA實現(xiàn),球速選擇采用電平按鍵,擊球和減分采用脈沖鍵。得分顯示電路和球跡顯示電路由FPGA開發(fā)裝置決定。3.1.2設(shè)計原理分析

1.集成雙向移位寄存器的控制功能

移位寄存器在移位脈沖控制下,輸出狀態(tài)變化具有信號移位的特點(diǎn)。集成移位寄存器的型號繁多,輸出信號的位數(shù)一般為4位或8位。為了用戶使用方便,集成移位寄存器一般具有復(fù)位、預(yù)置、信號移位方式控制等功能,數(shù)據(jù)輸入、輸出方式都可分為串行或并行兩種,不同的型號可能具有不同的控制功能和方式。

1)狀態(tài)移位方式

集成移位寄存器的狀態(tài)輸出一般以A~D(4位)或A~H(8位)為序,可設(shè)A為數(shù)據(jù)的最高位。集成移位寄存器在每個移位脈沖作用下狀態(tài)數(shù)據(jù)移動一位,移位方向可以是單方向左移或右移,也可由外部信號控制雙向移動。左移時的狀態(tài)變化類似于數(shù)據(jù)同時順序向高位移動一位,右端串行輸入的數(shù)據(jù)移入寄存器的最低位QD(4位)或QH(8位)。右移時的狀態(tài)變化類似于數(shù)據(jù)同時順序向低位移動一位,左端串行輸入的數(shù)據(jù)移入寄存器的最高位QA。串行數(shù)據(jù)可以從寄存器的一個端口輸入或是從具有組合邏輯關(guān)系的多個端口輸入。

2)移位脈沖觸發(fā)方式

集成移位寄存器的狀態(tài)變化可以發(fā)生在移位脈沖的上升沿或下降沿。

3)復(fù)位方式

集成移位寄存器可以通過復(fù)位控制信號復(fù)位(全部位清零)。復(fù)位信號分高電平或低電平有效,復(fù)位方式分異步(直接復(fù)位)或同步(移位脈沖有效才能復(fù)位)控制。

4)預(yù)置數(shù)方式

集成移位寄存器可以由置數(shù)信號控制,通過并行數(shù)據(jù)輸入端預(yù)置初始值,所以具有置數(shù)功能的集成移位寄存器兼有串行和并行數(shù)據(jù)輸入方式。預(yù)置數(shù)信號分高電平或低電平有效,置數(shù)方式也分異步或同步控制。

5)數(shù)據(jù)輸出方式

集成移位寄存器數(shù)據(jù)輸出可以有串行和并行兩種方式。串行方式只有最高位狀態(tài)和最低位狀態(tài)輸出端,并行方式的所有狀態(tài)位同時輸出。并行輸出還可以具有三態(tài)控制功能,當(dāng)輸出使能無效時,移位寄存器的輸出端為高阻狀態(tài)。

6)移位使能控制

集成移位寄存器可以具有移位使能控制或移位脈沖使能控制功能。當(dāng)使能端有效時,寄存器允許移位,否則,寄存器內(nèi)容被鎖存。

表3-1-1列出了部分集成移位寄存器的控制方式和功能。

2.設(shè)計要求分析

根據(jù)游戲規(guī)則,本設(shè)計需要解決一些邏輯控制問題。

(1)當(dāng)游戲未開始時,所有發(fā)光二極管熄滅。發(fā)球方按擊球鍵后,其始端的發(fā)光二極管亮,然后向?qū)Ψ揭苿印K?,發(fā)球方的擊球鍵信號有效時,除了設(shè)定計數(shù)器的計數(shù)方式或寄存器的移位方向外,還必須對計數(shù)器或移位寄存器進(jìn)行一次預(yù)置數(shù)操作。

(2)當(dāng)“球”移到對方接球位置時,對方若及時接“球”,“球”返回,并鳴笛一響;而“球”未到接球位置時“擊球”無效。所以接球方擊球鍵信號必須與其接球位置的二極管控制信號同時有效時,才可改變計數(shù)器計數(shù)方式或移位寄存器的移位方向控制信號,同時選通音頻信號控制蜂鳴器。為了避免接球方違規(guī),提早按鍵等待“球”移動到接球位置,可將擊球按鍵信號的寬度整定為不大于一個移位脈沖周期。

(3)若“球”移到終端位置時對方未準(zhǔn)確接“球”,“球”飛出界外,另一方的得分?jǐn)?shù)加1??衫庙樞蛎}沖移位出界信號作為對方得分計數(shù)器的計數(shù)脈沖。當(dāng)某個得分計數(shù)器的狀態(tài)碼值達(dá)到十進(jìn)制數(shù)11時,啟動閃顯定時器控制記分顯示閃爍。由于記分值需要能在0~10之間被遞減修改,得分計數(shù)器也應(yīng)采用可逆計數(shù)器。當(dāng)記分值為0時,可考慮封鎖減分計數(shù)信號或使得分計數(shù)器準(zhǔn)備預(yù)置10。

(4)由于“發(fā)球”和“接球”采用同一按鍵信號,可通過發(fā)光二極管狀態(tài)進(jìn)行區(qū)別。為了避免失分方在“球”剛飛出界外時按鍵接“球”造成誤發(fā)“球”,可采用觸發(fā)器控制雙方對計數(shù)器或移位寄存器的預(yù)置數(shù)操作。每當(dāng)某方發(fā)“球”后,兩個發(fā)球禁止觸發(fā)器都被置位,不允許雙方再對計數(shù)器或移位寄存器預(yù)置數(shù)據(jù)。當(dāng)“球”出界后,得分方的記分脈沖使自身的觸發(fā)器復(fù)位,開放發(fā)“球”許可。當(dāng)一局結(jié)束后,雙方的發(fā)球許可都開放,發(fā)球方任意。

(5)計數(shù)器或移位寄存器的脈沖頻率決定了“乒乓球”的移動速率,可通過數(shù)據(jù)選擇器選擇不同的脈沖頻率改變游戲難度。3.1.3參考設(shè)計方案

參考設(shè)計方案擬采用具有預(yù)置功能的并行8位雙向集成移位寄存器74198實現(xiàn)。除寄存器位數(shù)不同外,74198的控制功能與74194完全相同,如表3-1-2所示。在工作方式信號S1、S0控制下,74LS198可以實現(xiàn)左移、右移、并行置數(shù)及保持4種功能。

1.集成移位寄存器位寬擴(kuò)展

根據(jù)設(shè)計原理分析,電路可考慮采用14位移位寄存器構(gòu)成。輸出信號Q13~Q0中,最高位Q13和最低Q0作為移位出界信號,中間12位Q12~Q1輸出控制發(fā)光二極管顯示“乒乓球”的移動軌跡。14位移位寄存器可由兩個8位集成移位寄存器74198級聯(lián)。移位脈沖由球速選擇鍵控制數(shù)據(jù)選擇器選擇不同頻率的時鐘信號。左移時低位序寄存器的最高位狀態(tài)移入高位序寄存器的最低位,所以低位序寄存器的最高位輸出QH連高位序寄存器的右端串行輸入SRSI。同理,高位序寄存器的最低位輸出QA連低位序寄存器的左端串行輸入SLSI。由于上電后FPGA各存儲元件的初始狀態(tài)都為“0”,所以74198的復(fù)位信號可接無效電平Vcc。如果需要,也可設(shè)置一個復(fù)位鍵控制。

2.接、發(fā)球控制

根據(jù)設(shè)計原理分析,接、發(fā)球時都必須設(shè)置或改變移位寄存器的移位控制方向,發(fā)球時還需要進(jìn)行預(yù)置操作。由表3-1-2可知,74198的移位方向和預(yù)置都采用S1、S0控制:在移位方向不同時方式控制信號S1、S0互補(bǔ),在預(yù)置操作時S1、S0都為“1”。因此,擬采用一個基本RS觸發(fā)器的互補(bǔ)輸出控制移位方向,并利用發(fā)球有效信號屏蔽其中的“0”信號,使S1、S0暫時為全“1”實現(xiàn)預(yù)置控制。

1)發(fā)球控制邏輯

采用控制12個發(fā)光二極管的全“0”信號和發(fā)球禁止觸發(fā)器的復(fù)位信號對擊球鍵狀態(tài)進(jìn)行邏輯判斷。當(dāng)某方發(fā)球條件滿足時,其擊球鍵閉合產(chǎn)生“發(fā)球”有效信號。利用“發(fā)球”信號的有效電平設(shè)置移位寄存器預(yù)置數(shù)據(jù)中為“1”的D12或D1;將移位方向觸發(fā)器直接置位或復(fù)位;通過邏輯門屏蔽移位方向觸發(fā)器輸出為“0”的信號,使S1、S0為全“1”。當(dāng)移位寄存器被預(yù)置后,利用Q12或Q1的有效狀態(tài)使兩個發(fā)球禁止觸發(fā)器都置位,“發(fā)球”信號無效,移位方向觸發(fā)器的輸出屏蔽取消,74198的S1、S0為“01”或“10”。由于74198為同步預(yù)置方式,所以發(fā)球鍵閉合的時間必須至少維持一個移位脈沖周期。

2)接球控制邏輯

接球方的擊球鍵閉合信號必須經(jīng)過脈寬整形。整形后的“擊球”脈沖如果與接球位置發(fā)光二極管的控制信號同時有效,產(chǎn)生“接球”有效脈沖?!敖忧颉庇行盘柺挂莆环较蛴|發(fā)器的狀態(tài)切換,并通過邏輯門選通200Hz~2kHz的音頻信號控制蜂鳴器產(chǎn)生一次鳴笛音。

根據(jù)以上分析,移位方向觸發(fā)器的復(fù)位(置位)輸入由某方的“發(fā)球”和“接球”兩個信號共同控制。圖3-1-1所示的數(shù)字單穩(wěn)態(tài)觸發(fā)電路可以實現(xiàn)對信號寬度的整形功能。輸入信號M為高電平后的第一個CP的上升沿時Y輸出為高電平、第二個CP的上升沿時Y回到低電平。所以當(dāng)M的正脈沖寬度大于一個CP周期時,Y輸出的是一個與CP同步、寬度恒定為1個CP周期(與M寬度無關(guān))的正脈沖。采用數(shù)字單穩(wěn)態(tài)觸發(fā)電路實現(xiàn)接球鍵信號脈寬整形時,必須考慮CP與移位脈沖的關(guān)系。若直接采用移位脈沖控制CP,那么當(dāng)接球位置的發(fā)光二極管亮?xí)r,移位脈沖有效沿已經(jīng)消失。按鍵閉合信號必須等待下一個移位脈沖有效沿被同步,但那時“球”已“出界”。所以,可考慮采用移位脈沖的反相信號或更高頻率的脈沖信號控制CP。圖3-1-1數(shù)字單穩(wěn)態(tài)觸發(fā)電路

3.得分計數(shù)和顯示

為了使顯示譯碼電路方便,可采用兩個十進(jìn)制可逆計數(shù)器級聯(lián)構(gòu)成得分計數(shù)器,雙方的4組得分計數(shù)BCD碼直接通過顯示譯碼輸出。得分計數(shù)器的加計數(shù)脈沖由移位出界信號Q13或Q0控制。當(dāng)接球方未能準(zhǔn)確接球改變移位方向時,移位寄存器的出界信號(最高Q13或最低位Q0)被置“1”,控制相應(yīng)得分計數(shù)器的加計數(shù)一次,并使得分方的發(fā)球禁止觸發(fā)器復(fù)位。得分計數(shù)器的狀態(tài)可采用數(shù)據(jù)比較器或邏輯門判斷。當(dāng)某方得分值為11(BCD碼為00010001)時,啟動一個定時計數(shù)器控制顯示閃爍。定時器的溢出信號控制得分計數(shù)器清零,并使兩個發(fā)球禁止觸發(fā)器同時復(fù)位。

兩個得分計數(shù)器的減計數(shù)可各由一個按鍵控制,以修改記分值,每按一次鍵產(chǎn)生一個減計數(shù)脈沖??赡嬗嫈?shù)器有74190、74192或參數(shù)化計數(shù)器,但若加、減計數(shù)脈沖不同,可采用雙脈沖可逆計數(shù)器74192(功能參考2.9節(jié))。得分計數(shù)器全零狀態(tài)的次態(tài)是10的BCD碼,可采用預(yù)置方法實現(xiàn)。另外,因為減分按鍵直接控制計數(shù)器的脈沖輸入,按鍵閉合時的抖動可能造成誤記分,所以減分按鍵信號需要經(jīng)過消抖動處理。按鍵消抖動的思路是每隔數(shù)十毫秒掃描一次按鍵,按鍵的抖動頻率遠(yuǎn)高于掃描頻率,這樣在兩次掃描的間隔時間內(nèi)發(fā)生的抖動完全可以被消除。圖3-1-1的數(shù)字單穩(wěn)態(tài)觸發(fā)電路同樣可以具有消除按鍵抖動的功能。電路時鐘脈沖CP的周期可選擇大于按鍵抖動一次的時間、小于按鍵閉合時間。一般,人手按鍵的時間約為零點(diǎn)幾秒,所以消除鍵抖動時CP的脈沖頻率可選擇10Hz~100Hz。觸發(fā)器的輸出在每個時鐘的上升沿(或下降沿)才隨按鍵的狀態(tài)變一次,達(dá)到了消除鍵抖動的目的。

4.球速分頻電路

球速分頻電路可采用計數(shù)器實現(xiàn)。得分顯示電路與FPGA開發(fā)裝置有關(guān),若顯示電路為動態(tài)掃描結(jié)構(gòu),如LP—2900,可參考2.8節(jié)的設(shè)計原理或直接調(diào)用已創(chuàng)建的邏輯符號。利用閃顯定時器的狀態(tài)碼輸出控制七段顯示譯碼器7448的滅顯輸入BIN,或在自建的譯碼電路中增加滅顯控制功能,實現(xiàn)3次顯示1s、滅顯1s的閃爍效果。

乒乓球游戲機(jī)的參考方案原理框圖見圖3-1-2,閃顯定時電路未在圖中示出。圖3-1-2系統(tǒng)原理框圖3.1.4設(shè)計預(yù)習(xí)準(zhǔn)備

擬定具體方案,查閱器件資料,選擇合適的器件,畫出電路原理框圖,標(biāo)出關(guān)鍵信號的連接關(guān)系。若采用參考設(shè)計方案,考慮以下問題:

(1)設(shè)計所選集成移位寄存器的級聯(lián)方式以及預(yù)置數(shù)控制邏輯。思考級聯(lián)后低位序寄存器的右端串行輸入SRSI和高位序寄存器的左端串行輸入SLSI應(yīng)如何控制?

(2)根據(jù)所用FPGA開發(fā)裝置選擇擊球鍵和減分鍵。根據(jù)所選按鍵的有效脈沖設(shè)計接、發(fā)球控制電路。

①考慮產(chǎn)生“接球”、“發(fā)球”信號的邏輯電路。

②分析控制移位方向的基本RS觸發(fā)器應(yīng)該采用什么邏輯門構(gòu)成?如何使“發(fā)球”、“接球”信號都能控制觸發(fā)器置位或復(fù)位?

③分析圖3-1-1電路的工作原理,若輸入信號M和時鐘脈沖CP的波形如圖3-1-3所示,畫出兩個觸發(fā)器和與門輸出的信號波形。如果輸入信號M為負(fù)脈沖,分析電路應(yīng)該如何修改?圖3-1-3數(shù)字單穩(wěn)態(tài)觸發(fā)電路輸入波形舉例

(3)考慮如何控制發(fā)球禁止觸發(fā)器置位或復(fù)位?

(4)考慮得分計數(shù)器和得分判斷電路的控制邏輯,畫出電路圖。根據(jù)所選可逆計數(shù)器的邏輯功能,分析如何控制減計數(shù)時狀態(tài)在0~10間變化?

(5)考慮閃顯定時器的控制邏輯。怎樣利用得分判斷信號啟動定時器計數(shù),定時時間到后需要進(jìn)行哪些操作?

(6)根據(jù)使用開發(fā)裝置的FPGA端口協(xié)議,確定各I/O端口引腳編號。3.1.5參考設(shè)計步驟

(1)建立項目工程并新建圖形文件,輸入接、發(fā)球控制電路設(shè)計。分析與綜合后建立仿真波形文件,設(shè)置仿真輸入信號,啟動仿真后觀察電路輸出的移位寄存器方式控制信號和預(yù)置數(shù)信號是否滿足設(shè)計要求。仿真正確后創(chuàng)建邏輯符號。

(2)新建圖形文件并設(shè)置為頂層文件。輸入移位寄存器部分的設(shè)計圖,調(diào)入接、發(fā)球邏輯符號。移位寄存器的脈沖輸入暫設(shè)一輸入端口CP。分析與綜合后打開步驟(1)建立的仿真文件,增加移位脈沖輸入。設(shè)置合適的脈沖信號。啟動仿真后觀察移位寄存器輸出狀態(tài)變化是否符合功能要求。

(3)另建圖形文件并暫設(shè)置為頂層文件,輸入得分計數(shù)電路和定時控制電路,分析與綜合后新建仿真波形文件,設(shè)置減分按鍵輸入信號和移位出界信號,啟動仿真后觀察得分累計功能是否符合設(shè)計要求,減分功能是否正確,得分達(dá)到11分時閃顯控制信號和計數(shù)器清零信號是否能正常產(chǎn)生。仿真通過后創(chuàng)建邏輯符號。

(4)設(shè)置步驟(2)建立的文件為頂層文件,調(diào)入得分計數(shù)和定時電路邏輯符號。輸入分頻電路、球速選擇電路和顯示譯碼控制電路。若采用LP—2900實現(xiàn)設(shè)計,需考慮發(fā)光二極管共陰極控制。

(5)分析與綜合項目后分配輸入、輸出端口引腳,編譯通過后下載,按設(shè)計要求逐項檢查游戲效果。3.1.6思考問題

(1)發(fā)球時的按鍵信號是否需要消抖動或同步化處理?為什么?

(2)根據(jù)參考方案完成的電路,在發(fā)球時蜂鳴器也可能鳴響一次,為什么?

(3)分析參考設(shè)計方案的不足之處,如何完善設(shè)計?

(4)若希望游戲再滿足以下規(guī)則,考慮應(yīng)該如何修改設(shè)計:

①在獲得每2分之后,接球方即成為發(fā)球方,直至該局比賽結(jié)束,或者直至雙方比分都達(dá)到10分。

②?10平后,發(fā)球和接發(fā)球次序不變,但每人只輪發(fā)1分球。并且勝方必須比敗方多得2分。

3.2交通燈控制電路

時序邏輯電路具有記憶功能,含有限狀態(tài)的時序電路被稱為“狀態(tài)機(jī)”,其特點(diǎn)是電路狀態(tài)按一定的規(guī)律周期性循環(huán)變化。交通燈控制電路是一個典型的有限狀態(tài)機(jī)控制電路,交通干道路口的紅、綠、黃三色燈根據(jù)不同的控制要求有規(guī)律周期性亮滅變化,各燈的亮滅持續(xù)時間也因干道的繁忙程度有所不相同。所以交通燈控制電路必須對狀態(tài)變化規(guī)律和狀態(tài)持續(xù)時間兩個變量進(jìn)行控制。3.2.1設(shè)計實例

1.設(shè)計要求

設(shè)計一個十字路口交通燈控制電路,要求東西、南北兩條干道的紅、綠、黃三色交通燈按表3-2-1的要求循環(huán)變化,并以倒計時方式指示干道通行(或禁行)的維持時間。

2.硬件環(huán)境

設(shè)計的控制部分以FPGA實現(xiàn),用6個發(fā)光二極管模擬東西、南北兩個方向的紅、綠、黃交通燈。用兩個七段數(shù)碼顯示器顯示干道的通行(禁行)時間。3.2.2設(shè)計原理分析

根據(jù)表3-2-1的要求,本設(shè)計的交通燈控制分6個狀態(tài),狀態(tài)轉(zhuǎn)換關(guān)系如圖3-2-1所示。由于各狀態(tài)持續(xù)時間有所不同,所以電路的核心控制部分是狀態(tài)機(jī)和定時器,狀態(tài)機(jī)在定時器觸發(fā)下周期性循環(huán)轉(zhuǎn)換,狀態(tài)碼控制6個燈以一定的規(guī)律變化。圖3-2-1電路狀態(tài)轉(zhuǎn)換圖

1.狀態(tài)機(jī)

數(shù)字電路中有限狀態(tài)機(jī)由觸發(fā)器構(gòu)成。狀態(tài)碼采用二進(jìn)制編碼方式時,狀態(tài)個數(shù)M與觸發(fā)器位數(shù)n滿足M≤2n。狀態(tài)碼采用一對一編碼(單位碼、獨(dú)熱碼)方式時,狀態(tài)個數(shù)M等于觸發(fā)器位數(shù)n。當(dāng)M<2n時,有2n-M個無效狀態(tài)存在,必須考慮電路的自啟動能力。比如,要實現(xiàn)圖3-2-1的6個狀態(tài):A、B、C、D、E、F至少需要3個觸發(fā)器。若采用六進(jìn)制加計數(shù)器作為狀態(tài)機(jī),A~F各狀態(tài)碼可分配為:000,001,010,011,100,101。狀態(tài)計數(shù)器可由定時器觸發(fā),當(dāng)計數(shù)器溢出時,計數(shù)器加1狀態(tài)碼遞增,實現(xiàn)狀態(tài)順序轉(zhuǎn)換。

2.定時器

數(shù)字電路中,計數(shù)器可以實現(xiàn)定時功能。其定時時間(溢出信號周期)為計數(shù)脈沖周期乘以計數(shù)器的模。加計數(shù)器的溢出信號為進(jìn)位輸出,減計數(shù)器的溢出信號為借位輸出。

當(dāng)計數(shù)脈沖周期相同時,要使?fàn)顟B(tài)定時時間不同,定時計數(shù)器的模應(yīng)該受狀態(tài)控制。改變計數(shù)器模值的方法很多,可以用反饋復(fù)位法或反饋預(yù)置法。而采用計數(shù)器溢出信號進(jìn)行反饋預(yù)置是唯一可以不改變電路結(jié)構(gòu),僅以控制預(yù)置數(shù)值實現(xiàn)模值修改的方法。當(dāng)采用減計數(shù)方式,并以計數(shù)器溢出信號異步控制其預(yù)置操作時,計數(shù)器的模等于其預(yù)置初值。所以,可由狀態(tài)碼設(shè)置減計數(shù)器的預(yù)置數(shù),使之實現(xiàn)不同的狀態(tài)定時。同時,減計數(shù)器輸出碼值呈遞減趨勢,符合設(shè)計要求的倒計時方式。

表3-2-2是可逆十進(jìn)制計數(shù)器74190的功能表,可以滿足交通燈的定時控制要求。

74190功能說明:

(1)?GN為計數(shù)器使能控制,低電平有效。當(dāng)GN為高電平時,禁止計數(shù)。

(2)?DNUP為計數(shù)方式控制,接高電平為減計數(shù),接低電平為加計數(shù)。

(3)?LDN為異步預(yù)置數(shù)控制,低電平有效。當(dāng)LDN為低電平時,計數(shù)器狀態(tài)QD、QC、QB、QA分別等于D、C、B、A。

(4)計數(shù)器位序由高至低順序為QD、QC、QB、QA,QD為最高位MSB,QA為最低位LSB。

(5)計數(shù)脈沖CLK上升沿有效。

(6)當(dāng)計數(shù)器輸出QDQCQBQA為十進(jìn)制加計數(shù)的最大狀態(tài)碼“1001”或為減計數(shù)的最小狀態(tài)碼全“0”時,極值狀態(tài)碼指示輸出MAX/MIN為高電平。

(7)當(dāng)極值碼指示MAX/MIN為高電平且CLK為低電平時,溢出信號RCON為低電平,即RCON與計數(shù)脈沖同步。

各信號的時序關(guān)系如圖3-2-2所示。圖3-2-2可逆十進(jìn)制計數(shù)器74190功能表

3.輸出譯碼器

輸出譯碼器的功能是將狀態(tài)碼譯成6個開關(guān)量信號控制兩個干道的6個交通燈。

當(dāng)狀態(tài)碼按六進(jìn)制加計數(shù)碼分配時,譯碼電路應(yīng)實現(xiàn)表3-2-3所示的3輸入、6輸出的組合邏輯函數(shù),當(dāng)采用6個觸發(fā)器實現(xiàn)一對一碼(單位碼、獨(dú)熱碼)狀態(tài)機(jī)時,可由各位狀態(tài)碼輸出直接綜合實現(xiàn)6個燈的控制。

4.干道通(禁)行時間控制

由于狀態(tài)A、B、C允許東西干道I通行、南北干道J禁行;狀態(tài)D、E、F允許南北干道J通行、東西干道I禁行。所以,干道的通(禁)行定時可分兩個狀態(tài):I狀態(tài)定時22s,J狀態(tài)定時16s。干道的通(禁)行時間必須另用一個定時器控制,顯示譯碼器將該定時器的輸出譯成七段碼顯示。根據(jù)以上分析,電路有兩個狀態(tài)機(jī)、兩個定時器,分別對交通燈和通(禁)行時間進(jìn)行控制??紤]到每個干道的通行時間分別與3個狀態(tài)對應(yīng),為了簡化電路,設(shè)想采用僅對干道通(禁)行時間進(jìn)行狀態(tài)控制的參考設(shè)計方案,交通燈的控制根據(jù)干道通行時間分段實現(xiàn)。系統(tǒng)結(jié)構(gòu)框圖如圖3-2-3所示。圖3-2-3交通燈電路結(jié)構(gòu)3.2.3參考設(shè)計方案

1.狀態(tài)定時

狀態(tài)定時由可預(yù)置初值的BCD碼計數(shù)器74190實現(xiàn),采用減計數(shù)方式。每當(dāng)計數(shù)碼減至0時,溢出信號控制計數(shù)器重置計時初值并觸發(fā)狀態(tài)翻轉(zhuǎn)。由于74190為異步置數(shù)功能,計數(shù)器的全“0”狀態(tài)不能維持。這樣,干道的通行(禁行)時間顯示值從預(yù)置值遞減至1,溢出信號周期就是狀態(tài)定時時間。

1)計數(shù)器級聯(lián)

由于兩個干道通行的定時時間都為2位十進(jìn)制數(shù),需要兩個BCD碼計數(shù)器級聯(lián)實現(xiàn)計數(shù)定時。減計數(shù)器的級聯(lián)原則是:低位計數(shù)器從全0狀態(tài)變?yōu)樽畲蟠a值狀態(tài)(溢出)時使高位計數(shù)器減1。級聯(lián)方式分異步和同步兩種。

(1)異步級聯(lián)——低位計數(shù)器的溢出信號控制高位計數(shù)器的計數(shù)脈沖輸入端??筛鶕?jù)計數(shù)器的時鐘觸發(fā)方式,在低位計數(shù)器狀態(tài)碼從全“0”變?yōu)樽畲蟠a值瞬間,為高位計數(shù)器提供有效的計數(shù)脈沖邊沿。

(2)同步級聯(lián)——低位計數(shù)器控制高位計數(shù)器的使能。只有當(dāng)?shù)臀挥嫈?shù)器溢出前(狀態(tài)為全“0”時),高位計數(shù)器的使能才有效,下一個計數(shù)脈沖使低位計數(shù)器變?yōu)樽畲蟠a值的同時使高位計數(shù)器減1。所以同步級聯(lián)只適用于具有使能控制的計數(shù)器。

74190具有使能控制,并兼有異步MAX/MIN和同步(受CP控制)RCON兩個溢出信號,可以靈活選擇級聯(lián)方式。但在計數(shù)器狀態(tài)從“1000”減到“0111”時,由于各位信號變化時間不同,使?fàn)顟B(tài)可能出現(xiàn)全“0”瞬間,導(dǎo)致異步溢出信號MAX/MIN產(chǎn)生冒險尖脈沖。

2)計數(shù)器預(yù)置數(shù)控制邏輯設(shè)計

當(dāng)I狀態(tài)的定時時間為22s,計數(shù)脈沖為1Hz時,計數(shù)器應(yīng)該預(yù)置22的BCD碼。同理,J狀態(tài)應(yīng)該預(yù)置16的BCD碼。如表3-2-4所示。定時計數(shù)器的預(yù)置值由I、J狀態(tài)觸發(fā)器的輸出電平S(0或1)控制。分析表3-2-4可見,兩個狀態(tài)需要預(yù)置的二進(jìn)制數(shù)D7D6D5D4D3D2D1D0中,D1都為“1”,D7D6D3D0都為“0”,而D5D4D2隨狀態(tài)不同,由狀態(tài)電平S確定。當(dāng)電路處于狀態(tài)I時,定時計數(shù)器的預(yù)置數(shù)是控制J狀態(tài)的定時值:D5=0,D4=D2=1;而處于J狀態(tài)時,計數(shù)器的預(yù)置數(shù)是控制I狀態(tài)的定時值:D5=1,D4=D2=0。顯然,采用一個反相器綜合觸發(fā)器的輸出就可實現(xiàn)定時計數(shù)器的預(yù)置控制邏輯。

2.計數(shù)器預(yù)置操作控制與狀態(tài)觸發(fā)邏輯設(shè)計

由于計數(shù)器的預(yù)置數(shù)操作與狀態(tài)觸發(fā)器的切換都由計數(shù)器的溢出信號控制,而預(yù)置數(shù)值又與觸發(fā)器原狀態(tài)的輸出電平S有關(guān),所以計數(shù)器的預(yù)置操作必須先于觸發(fā)器的狀態(tài)轉(zhuǎn)換,設(shè)計時應(yīng)該注意兩者的時序問題。當(dāng)計數(shù)器的預(yù)置功能為異步方式、狀態(tài)觸發(fā)器為邊沿觸發(fā)方式時,可利用預(yù)置信號有效電平的后沿(從有效電平變?yōu)闊o效電平時)控制觸發(fā)器狀態(tài)轉(zhuǎn)換。

3.輸出譯碼

1)顯示譯碼

干道通(禁)行時間可由狀態(tài)定時計數(shù)器的輸出通過譯碼后直接顯示。

2)交通燈控制

分析圖3-2-3可見,每個干道的通行狀態(tài)對交通燈都有3種不同的控制邏輯,分別對應(yīng)三個時間段:1~3s、4~6s、6s以上。所以,可采用數(shù)字比較器對定時計數(shù)器的輸出進(jìn)行比較判斷,確定定時值是否小于4或大于6。狀態(tài)定時值為兩位BCD碼(8位二進(jìn)制碼),可采用兩片4位數(shù)字比較器7485級聯(lián)比較。考慮到比較的數(shù)字都小于10,也可用一片比較器在高位計數(shù)器輸出為全“0”時比較低位計數(shù)器的4位輸出;當(dāng)高位計數(shù)器輸出不全為“0”時,定時值總大于6。

當(dāng)定時器輸出碼值處于4至6之間,通行干道的綠燈應(yīng)該按1s周期閃爍??稍诖藭r間段采用1Hz信號控制綠燈實現(xiàn)。這樣,采用一個三輸入(狀態(tài)S和兩個比較結(jié)果Y1、Y2)組合邏輯函數(shù)可以實現(xiàn)對6個交通燈的控制。

參考電路原理框圖如圖3-2-4所示。圖3-2-4交通燈控制電路參考原理框圖3.2.4設(shè)計預(yù)習(xí)準(zhǔn)備

如果自擬設(shè)計方案,畫出方案原理框圖,標(biāo)出關(guān)鍵信號的連接關(guān)系。如果按參考方案設(shè)計,準(zhǔn)備以下內(nèi)容。

(1)復(fù)習(xí)集成計數(shù)器、數(shù)值比較器的功能以及狀態(tài)機(jī)的設(shè)計方法。

(2)考慮74190的級聯(lián)方式,畫出計數(shù)器級聯(lián)圖,標(biāo)明控制信號連接關(guān)系。

(3)采用D、T、JK觸發(fā)器實現(xiàn)T′觸發(fā)時各激勵輸入應(yīng)該怎樣連接?

(4)確定干道通行狀態(tài)碼,設(shè)計預(yù)置數(shù)控制邏輯。

(5)選擇合適的的溢出信號實現(xiàn)級聯(lián)定時計數(shù)器預(yù)置控制邏輯和狀態(tài)機(jī)觸發(fā)邏輯。

(6)若采用兩片數(shù)字比較器級聯(lián),考慮信號的連接關(guān)系;若只對定時計數(shù)器的低位BCD碼比較,設(shè)計比較判斷邏輯。

(7)列出狀態(tài)電平S、兩個數(shù)字比較器輸出Y1、Y2與6個燈的邏輯關(guān)系真值表。并考慮如何使綠燈閃亮。

(8)根據(jù)所使用的FPGA開發(fā)裝置,考慮干道定時時間的譯碼顯示控制。3.2.5參考設(shè)計步驟

(1)創(chuàng)建圖形文件,按預(yù)習(xí)準(zhǔn)備內(nèi)容輸入定時計數(shù)器、狀態(tài)觸發(fā)器及預(yù)置控制部分電路。編譯后仿真兩個狀態(tài)的維持時間,觀察狀態(tài)電平與定時時間是否符合設(shè)計要求。

如果發(fā)現(xiàn)MAX/MIN信號有競爭冒險現(xiàn)象,可以通過一個D觸發(fā)器消除冒險毛刺。由于冒險信號很窄,寬度小于D觸發(fā)器的建立時間,不足以使觸發(fā)器輸出改變狀態(tài),從而消除冒險脈沖。D觸發(fā)器的時鐘頻率選擇在10kHz左右,以減少信號的延遲。

(2)按預(yù)習(xí)準(zhǔn)備內(nèi)容再輸入數(shù)字比較部分電路,編譯后仿真S、Y1、Y2三個信號是否符合設(shè)計要求。

(3)輸出譯碼邏輯設(shè)計。采用組合器件設(shè)計譯碼邏輯,或參照1.3.4節(jié)例3,采用AHDL的真值表方式設(shè)計一個輸出譯碼邏輯。分析與綜合后建立仿真波形文件,檢查S、Y1、Y2對6個輸出信號控制邏輯。仿真正確后創(chuàng)建器件符號在頂層文件中調(diào)用。

(4)設(shè)計時鐘分頻電路和定時顯示譯碼部分電路。若采用DE2開發(fā)板實現(xiàn)電路,由于采用共陽顯示器,靜態(tài)顯示方式,定時器輸出的每位BCD碼都經(jīng)過一個七段共陽顯示譯碼器輸出。若采用LP—2900開發(fā)裝置實現(xiàn)電路,譯碼掃描顯示模塊原理參考2.8節(jié)內(nèi)容。

(5)選擇6個發(fā)光二極管,定義端口引腳。若采用LP—2900開發(fā)裝置,注意發(fā)光二極管的共陰極控制電平。

(6)編譯后下載,觀察設(shè)計效果。3.2.6思考問題

(1)若計數(shù)器采用同步預(yù)置方式,通(禁)行時間如何顯示?

(2)定時計數(shù)器的溢出信號是否可以先觸發(fā)狀態(tài)轉(zhuǎn)換再進(jìn)行預(yù)置操作?

(3)能否有其他方法消除MAX/MIN信號中的冒險脈沖?

(4)如果希望增加轉(zhuǎn)彎信號燈,系統(tǒng)需要幾個狀態(tài)?畫出狀態(tài)圖,并列出交通燈的控制邏輯。

3.3簡易投幣式郵票自動銷售機(jī)

控制電路設(shè)計

3.3.1設(shè)計實例

1.設(shè)計要求

設(shè)計一個簡易投幣式郵票自動銷售控制系統(tǒng),具體要求如下:

(1)系統(tǒng)允許投入0.5元和1元兩種硬幣,售出面值為2元的郵票。

(2)當(dāng)硬幣投入后,系統(tǒng)用七段LED數(shù)碼管顯示已投入的累計幣值。

(3)當(dāng)投幣累計等于2元時,輸出郵票;當(dāng)投幣累計大于2元時,輸出郵票并輸出找零幣值。

(4)輸出信號有效電平維持3s時間,輸出信號無效后系統(tǒng)回到初始狀態(tài)(累計幣值為0)。輸出信號持續(xù)期間,不能允許再投入硬幣(封鎖投幣信號,實際產(chǎn)品可封鎖投幣口)。

(5)輸出信號有效時蜂鳴器以0.5s鳴響、0.5s間隔的方式發(fā)出提醒音,輸出郵票時蜂鳴器的鳴響頻率為1kHz,輸出郵票并找零時蜂鳴器的鳴響頻率為2kHz。

(6)為了保證系統(tǒng)上電時處于初始狀態(tài),設(shè)置一個狀態(tài)機(jī)復(fù)位鍵。

2.硬件環(huán)境

控制系統(tǒng)以FPGA實現(xiàn),用兩個脈沖按鍵分別模擬投入0.5元和1元兩種硬幣,用兩個發(fā)光二極管分別指示輸出郵票和找零。累計幣值用兩個七段LED數(shù)碼管顯示,顯示方式由所使用的FPGA開發(fā)裝置電路結(jié)構(gòu)決定。3.3.2設(shè)計原理分析

投幣式自動銷售機(jī)的主要功能是累計投入的幣值并做出判斷,所以要求電路具有記憶功能。數(shù)字電路中的時序邏輯單元能夠運(yùn)用電路“狀態(tài)”記憶輸入信號的變化歷程,因此本設(shè)計的基本電路是由觸發(fā)器構(gòu)成的時序“狀態(tài)機(jī)”。根據(jù)設(shè)計要求,簡易投幣式郵票自動銷售系統(tǒng)的控制流程如圖3-3-1所示。圖3-3-1簡易投幣式郵票自動銷售機(jī)控制流程圖

1.時序邏輯電路設(shè)計方法

為了使設(shè)計過程簡化,系統(tǒng)可采用同步時序邏輯電路實現(xiàn),其原理結(jié)構(gòu)如圖3-3-2所示。圖3-3-2同步時序邏輯電路原理框圖同步時序邏輯電路的具體設(shè)計步驟是:

(1)根據(jù)功能要求確定所需輸入變量、輸出變量以及狀態(tài)的個數(shù),列出原始狀態(tài)表或畫原始狀態(tài)圖。實現(xiàn)時序控制功能所需記憶的“事件”個數(shù)決定了時序邏輯電路的有效“狀態(tài)”個數(shù)。比如,若采用米利型狀態(tài)機(jī)實現(xiàn)本設(shè)計的功能,需要記憶的累計幣值是0元、0.5元、1元和1.5元4種狀態(tài)。

(2)化簡原始功能狀態(tài)表或狀態(tài)圖(合并等價狀態(tài)),列出最簡功能狀態(tài)表或狀態(tài)圖。如果器件邏輯資源豐富,可以不化簡狀態(tài)。根據(jù)圖3-3-1,若用米利型狀態(tài)機(jī)實現(xiàn)本設(shè)計,分別用A、B、C、D表示4種狀態(tài),功能狀態(tài)圖如圖3-3-3所示。圖3-3-3簡易投幣式郵票自動銷售機(jī)米利型狀態(tài)圖

(3)確定觸發(fā)器個數(shù)及狀態(tài)編碼值。賦予每個狀態(tài)一組二進(jìn)制編碼,代入功能狀態(tài)表,得邏輯狀態(tài)表。一般,觸發(fā)器個數(shù)n與狀態(tài)個數(shù)M滿足:M≤2n。4個狀態(tài)至少用兩個觸發(fā)器,若A~D各狀態(tài)編碼分配為“00”、“01”、“10”、“11”;兩種幣值用兩個開關(guān)量信號表示,設(shè)投入0.5元時X1=“1”,投入1元時X2=“1”,兩個信號同時為“1”時無效,狀態(tài)保持不變;并設(shè)郵票輸出信號為Z2、找零輸出信號為Z1,均為高電平有效。米利型狀態(tài)機(jī)賦值后的狀態(tài)表如表3-3-1所示。

(4)根據(jù)邏輯狀態(tài)表列各觸發(fā)器的次態(tài)卡諾圖和輸出卡諾圖,根據(jù)狀態(tài)表或化簡次態(tài)卡諾圖可列電路的輸出方程和各觸發(fā)器的次態(tài)方程。表3-3-1對應(yīng)的各觸發(fā)器次態(tài)卡諾圖如圖3-3-4所示。圖3-3-4米利型簡易投幣式郵票自動銷售機(jī)次態(tài)卡諾圖

(5)選擇觸發(fā)器類型,將各次態(tài)方程與所選觸發(fā)器的特性方程比較,得各觸發(fā)器的激勵驅(qū)動方程。根據(jù)輸出卡諾圖化簡得輸出邏輯函數(shù)表達(dá)式。若選擇D觸發(fā)器構(gòu)成狀態(tài)機(jī)的時序邏輯部分,則由于D觸發(fā)的特性方程=Di,因此激勵方程與次態(tài)方程相似。

(6)如果有無效狀態(tài)存在,則檢查電路的自啟動能力。如果不具備自啟動能力,可以重新考慮次態(tài)卡諾圖中無關(guān)項取值。

(7)選擇組合電路實現(xiàn)方式,根據(jù)觸發(fā)器的驅(qū)動方程及電路輸出函數(shù)表達(dá)式設(shè)計組合電路部分。畫電路連接圖。

2.狀態(tài)機(jī)的激勵控制方式

在數(shù)字邏輯中,可以采用不同的部件實現(xiàn)組合邏輯電路,比如邏輯門、譯碼器、數(shù)據(jù)選擇器、只讀存儲器、可編程邏輯陣列等。仍以簡易投幣式郵票自動銷售機(jī)米利型電路為例,說明同步時序電路中觸發(fā)器的激勵邏輯控制方法。

對照圖3-3-2可知,本例的輸入變量數(shù)i=2,狀態(tài)變量數(shù)n=2,輸出變量數(shù)m=2。若選擇D觸發(fā)器實現(xiàn)狀態(tài)機(jī),激勵變量數(shù)j=2。

1)邏輯門實現(xiàn)

根據(jù)組合邏輯模塊的輸入、輸出的邏輯關(guān)系列出真值表,寫出各輸出函數(shù)表達(dá)式并化簡,如果有邏輯門類型的限制則根據(jù)要求變換邏輯關(guān)系,然后由邏輯函數(shù)式畫出邏輯圖。

若對邏輯門類型沒有限制,可直接采用與或門實現(xiàn)激勵控制和輸出控制,電路圖略。

2)數(shù)據(jù)選擇器方式

觸發(fā)器的每個激勵和電路的每個輸出都用一個數(shù)據(jù)選擇器控制。數(shù)據(jù)選擇器的選擇輸入是狀態(tài)機(jī)的狀態(tài)變量Q,數(shù)據(jù)輸入根據(jù)觸發(fā)器的激勵函數(shù)決定,一般是邏輯常量或電路輸入X。所以,若用數(shù)據(jù)選擇器實現(xiàn)圖3-3-2中組合邏輯模塊,選擇器的個數(shù)是j+m個,每個選擇器的選擇輸入為n個,數(shù)據(jù)輸入為2n個。本例的觸發(fā)器激勵需要兩個四選一數(shù)據(jù)選擇器,每個選擇器的選擇變量A1、A0由觸發(fā)器輸出Q1、Q0控制,選擇器輸出Y分別控制觸發(fā)器的激勵D1、D0。設(shè)Q1為選擇器高位選擇碼,Q0為低位選擇碼。根據(jù)圖3-3-4可得各選擇器數(shù)據(jù)輸入Dyi的邏輯關(guān)系。

控制輸出D1的MUX1的4個數(shù)據(jù)輸入:

控制輸出D0的MUX0的4個數(shù)據(jù)輸入:

電路如圖3-3-5所示。圖3-3-5觸發(fā)器激勵由數(shù)據(jù)選擇器控制

3)只讀存儲器方式

觸發(fā)器的每個激勵和電路的每個輸出都由存儲器的一位數(shù)據(jù)輸出端控制,存儲器的地址由電路的輸入X和狀態(tài)機(jī)的狀態(tài)變量Q控制。所以,若用只讀存儲器ROM實現(xiàn)圖3-3-2中組合邏輯模塊,存儲器的地址碼位數(shù)是i+n,輸出數(shù)據(jù)位數(shù)是j+m,存儲容量是(j+m)×(i+n)。

存儲器中每個單元的存儲內(nèi)容是對應(yīng)電路輸入和狀態(tài)機(jī)現(xiàn)態(tài)某個組合時的次態(tài)和輸出邏輯值,所以,存儲器中存儲的信息就是邏輯狀態(tài)表。若用ROM實現(xiàn)米利型狀態(tài)機(jī)的組合邏輯關(guān)系,ROM的容量為16×4,地址碼和數(shù)據(jù)各為4位。如果以電路輸入X2X1和觸發(fā)器Q1Q0控制ROM的地址A3~A0,ROM的數(shù)據(jù)輸出q3~q0控制電路輸出Z2Z1和觸發(fā)器激勵D1D0,根據(jù)狀態(tài)轉(zhuǎn)移表可列ROM的存儲數(shù)據(jù)表,如表3-3-2所示。狀態(tài)機(jī)電路如圖3-3-6所示,圖中省略了ROM的讀控制和片選控制。由于ROM的地址受輸入信號控制,當(dāng)輸入改變時ROM的輸出必須馬上作出響應(yīng),以使?fàn)顟B(tài)機(jī)的觸發(fā)脈沖有效時正確的激勵信號已經(jīng)建立,所以在建立ROM器件時可以不設(shè)置端口控制時鐘。如果器件型號限定時鐘必選(如cyclone系列),則時鐘頻率應(yīng)遠(yuǎn)高于狀態(tài)機(jī)的觸發(fā)時鐘頻率,使ROM的輸出延時可以忽略,呈組合邏輯特性。圖3-3-6觸發(fā)器激勵由ROM控制

3.輸入信號處理

分析圖3-3-1的簡易投幣式郵票自動銷售機(jī)控制流程,系統(tǒng)狀態(tài)A~D隨硬幣投入而改變,而當(dāng)輸出郵票時,系統(tǒng)需要保持3s時間。所以,前4個狀態(tài)由投幣信號觸發(fā)轉(zhuǎn)換,后兩個狀態(tài)應(yīng)由定時信號觸發(fā)轉(zhuǎn)換。由于投幣信號是人為按鍵產(chǎn)生的,按鍵的持續(xù)時間不可能精確一致,所以脈沖寬度是隨機(jī)變化的,還可能伴有機(jī)械抖動。因此,系統(tǒng)必須對輸入信號進(jìn)行處理,消除信號抖動,并保證每個投幣有效信號觸發(fā)狀態(tài)變化一次。若狀態(tài)機(jī)的觸發(fā)時鐘采用周期性脈沖信號,幣值信號或定時信號是作為狀態(tài)機(jī)的輸入控制,則當(dāng)輸入無效時,狀態(tài)機(jī)也被觸發(fā),但狀態(tài)保持不變。為保證每次投入硬幣后狀態(tài)只變化一次,隨機(jī)輸入的異步信號必須歸化為與狀態(tài)機(jī)觸發(fā)時鐘同步、寬度為一個時鐘周期的脈沖信號。

如果選擇投幣信號或定時信號作為狀態(tài)機(jī)的觸發(fā)時鐘,由于輸入無效時狀態(tài)機(jī)沒有觸發(fā)脈沖,可使激勵控制邏輯簡化。

4.輸出信號處理

根據(jù)設(shè)計要求,輸出郵票和找零操作指示必須持續(xù)3s時間,所以系統(tǒng)必須具有定時功能。由數(shù)字邏輯基礎(chǔ)可知,模M的計數(shù)器經(jīng)過M個時鐘周期狀態(tài)循環(huán)一次,循環(huán)時間為M個計數(shù)脈沖周期。因此,可采用計數(shù)器實現(xiàn)定時或延時功能。

由于莫爾型時序邏輯電路的輸出信號受狀態(tài)控制,所以設(shè)計要求輸出信號持續(xù)3s的功能可以由狀態(tài)定時實現(xiàn)。而米利型電路的輸出信號受輸入信號控制,當(dāng)輸入信號無效后將影響輸出信號,可以采用觸發(fā)器維持輸出信號不變。當(dāng)輸出信號有效時使觸發(fā)器置位,持續(xù)3s后由定時信號復(fù)位。3.3.3設(shè)計參考方案

根據(jù)設(shè)計原理分析,投幣式自動銷售機(jī)的設(shè)計需要解決的幾個關(guān)鍵問題是:輸入信號同步化、電路狀態(tài)確定、狀態(tài)轉(zhuǎn)換關(guān)系分析、狀態(tài)機(jī)和組合控制邏輯以及輸出控制邏輯設(shè)計。參考方案擬采用莫爾型控制方式、組合電路采用只讀存儲器ROM構(gòu)成、狀態(tài)機(jī)觸發(fā)時鐘采用投幣信號和定時信號綜合產(chǎn)生。由于無幣投入時狀態(tài)機(jī)沒有觸發(fā)脈沖,所以幣值輸入可以一位編碼信號X區(qū)別:X=0,表示投入0.5元;X=1表示投入1元。設(shè)置兩個開關(guān)量輸出信號:Z2為找零輸出控制信號,Z1為郵票輸出控制信號。

1.狀態(tài)與狀態(tài)碼確定

由于采用莫爾型時序電路,6種幣值累計需要6個狀態(tài)記憶。與圖3-3-1相似,可設(shè)定狀態(tài)A為初始狀態(tài)(幣值累計為0元);狀態(tài)B表示投入幣值累計為0.5元;狀態(tài)C表示已累計1元;狀態(tài)D表示已累計1.5元;狀態(tài)E表示已累計2元,應(yīng)輸出郵票;狀態(tài)F表示已累計了2.5元,應(yīng)輸出郵票并找零0.5元。狀態(tài)系統(tǒng)狀態(tài)轉(zhuǎn)換關(guān)系如圖3-3-7所示。其中,狀態(tài)A~D由投幣信號觸發(fā)轉(zhuǎn)換,轉(zhuǎn)換趨向由幣值電平X控制。狀態(tài)E、F由3s定時信號觸發(fā),無條件回到初始狀態(tài)A。圖3-3-7簡易投幣式郵票自動銷售機(jī)莫爾型狀態(tài)圖

6個狀態(tài)至少需要3個觸發(fā)器記憶。由于每個狀態(tài)對應(yīng)了一種累計幣值,為了簡化幣值顯示譯碼電路,可以考慮選擇狀態(tài)碼Q2Q1Q0的最低位表示累計幣值的十分位數(shù),即Q0=1時,表示累計幣值小數(shù)部分為5;否則為0。狀態(tài)碼高兩位Q2Q1以二進(jìn)制數(shù)表示累計幣值的整數(shù)部分。這樣,狀態(tài)A的編碼為“000”、B為“001”、C為“010”、D為“011”、E為“100”、F為“101”,恰巧呈自然二進(jìn)制數(shù)序特點(diǎn)。

2.輸入信號處理

因為采用投幣信號和定時信號作為狀態(tài)機(jī)觸發(fā)時鐘,必須使每次投幣都產(chǎn)生一個觸發(fā)脈沖,并與定時脈沖綜合形成狀態(tài)機(jī)的觸發(fā)時鐘。當(dāng)系統(tǒng)處于狀態(tài)A~D時,由投幣脈沖觸發(fā),根據(jù)X的電平轉(zhuǎn)換狀態(tài);當(dāng)系統(tǒng)處于狀態(tài)E、F時,由定時脈沖觸發(fā),無條件轉(zhuǎn)向初始狀態(tài)。本設(shè)計采用兩個按鍵分別模擬兩種不同幣值的硬幣,產(chǎn)生兩路開關(guān)量脈沖信號。根據(jù)方案構(gòu)思,系統(tǒng)需要在任一按鍵作用時都要產(chǎn)生一個狀態(tài)機(jī)的觸發(fā)脈沖信號,同時設(shè)置相應(yīng)的幣值電平。選擇合適的邏輯門可將兩路脈沖信號綜合為一路,并采用3.1節(jié)中介紹的數(shù)字單穩(wěn)態(tài)電路對信號進(jìn)行同步化處理,既能消除按鍵抖動,又可將綜合后的投幣信號M歸化為寬度是一個CP脈沖周期的狀態(tài)觸發(fā)信號Y。

幣值電平X可以利用由邏輯門構(gòu)成的基本RS觸發(fā)器產(chǎn)生。當(dāng)0.5元投幣信號有效時使觸發(fā)器復(fù)位,X=0;當(dāng)1元投幣信號有效時使觸發(fā)器置位,X=1。

3.定時電路設(shè)計

根據(jù)設(shè)計要求,系統(tǒng)在狀態(tài)E和F維持3s時間,然后在定時信號的觸發(fā)下回到初始狀態(tài)。定時信號可采用定時計數(shù)器產(chǎn)生,系統(tǒng)進(jìn)入狀態(tài)E或F時允許循環(huán)周期為3s的定時計數(shù)器開始計時,當(dāng)定時時間到時計數(shù)器產(chǎn)生溢出信號Co觸發(fā)狀態(tài)轉(zhuǎn)換。當(dāng)系統(tǒng)不處于狀態(tài)E、F時,可強(qiáng)制計數(shù)器復(fù)位,沒有定時信號產(chǎn)生。

4.狀態(tài)機(jī)的組合邏輯部分設(shè)計

若狀態(tài)機(jī)采用D觸發(fā)器實現(xiàn),組合邏輯電路需要產(chǎn)生3個激勵信號,2個輸出信號(輸出郵票和找零)。由于FPGA具有豐富的存儲資源,所以組合邏輯函數(shù)可以考慮采用只讀存儲器ROM實現(xiàn)。ROM的地址輸入由幣值信號X以及狀態(tài)變量Q2Q1Q0控制,數(shù)據(jù)輸出為5位。根據(jù)圖3-3-7及狀態(tài)編碼,可列出系統(tǒng)的狀態(tài)轉(zhuǎn)移表。根據(jù)狀態(tài)轉(zhuǎn)移表以及ROM的輸入、輸出連接關(guān)系可建立ROM的數(shù)據(jù)存儲器表。

由于狀態(tài)機(jī)采用3個觸發(fā)器實現(xiàn),而電路的有效狀態(tài)為6個,所以必須考慮兩個無效狀態(tài)的自啟動問題。

5.累計幣值顯示電路設(shè)計

累計幣值為2位十進(jìn)制數(shù),1位整數(shù)、1位小數(shù),所以還要考慮小數(shù)點(diǎn)顯示。根據(jù)狀態(tài)碼Q2Q1Q0的分配原則,當(dāng)狀態(tài)碼Q0=“1”時,控制低位顯示值的BCD碼為“0101”,否則顯示碼為“0000”;而Q2Q1的狀態(tài)恰是高位顯示值BCD碼的低兩位。所以低位顯示碼的控制邏輯為“0Q00Q0”,高位顯示碼的控制邏輯為“00Q2Q1”。需要注意的是,ROM產(chǎn)生的是觸發(fā)器的激勵信號,而觸發(fā)器輸出的是狀態(tài)碼。若采用LP—2900實現(xiàn)系統(tǒng),動態(tài)掃描顯示控制電路的設(shè)計原理可參考2.8節(jié)。綜上所述,簡易投幣式郵票自動銷售機(jī)的參考設(shè)計框圖如圖3-3-8所示,圖中RST為狀態(tài)機(jī)復(fù)位輸入。圖3-3-8簡易投幣式郵票自動銷售機(jī)參考原理框圖3.3.4設(shè)計預(yù)習(xí)準(zhǔn)備

如果自擬設(shè)計方案,畫出方案原理框圖,標(biāo)出關(guān)鍵信號的連接關(guān)系。如果按參考方案設(shè)計,準(zhǔn)備以下內(nèi)容。

(1)確定存儲器的輸入、輸出信號位序,根據(jù)圖3-3-7狀態(tài)轉(zhuǎn)換關(guān)系及狀態(tài)編碼,列存儲數(shù)據(jù)表(狀態(tài)表)。

(2)根據(jù)所選投幣模擬鍵的有效電平設(shè)計基本RS觸發(fā)器。

(3)選擇合適的計數(shù)器設(shè)計定時電路。根據(jù)計數(shù)脈沖頻率確定計數(shù)器的模。

(4)考慮系統(tǒng)在E、F時如何禁止投幣信號M變化。

(5)根據(jù)輸出信號Z2、Z1設(shè)計蜂鳴器控制邏輯。

(6)考慮顯示控制邏輯。

(7)分析系統(tǒng)中哪些部件需要復(fù)位控制,設(shè)計復(fù)位邏輯。

(8)根據(jù)所用FPGA開發(fā)裝置基準(zhǔn)時鐘OSC的頻率和各模塊需要的時鐘頻率設(shè)計分頻電路,設(shè)計原理可參考2.5節(jié)內(nèi)容。3.3.5參考設(shè)計步驟

(1)創(chuàng)建工程,設(shè)計輸入信號處理電路,建立仿真文件。仿真后觀察輸入信號有效時投幣脈沖和幣值電平是否符合預(yù)定要求,仿真通過后創(chuàng)建模塊符號。

(2)設(shè)計定時電路,建立仿真文件。仿真結(jié)果符合預(yù)定要求后創(chuàng)建模塊符號。

(3)根據(jù)預(yù)習(xí)擬訂的存儲信息表建立存儲器的初始化文件?*.mif或?*.hex,建立方法參考1.3.4節(jié)例2。

(4)建立頂層文件。設(shè)計參數(shù)化ROM,選擇合適的字長和字?jǐn)?shù),注意初始化文件的路徑設(shè)置。

(5)調(diào)用底層各模塊,創(chuàng)建或?qū)敕诸l模塊和顯示控制模塊。設(shè)計顯示碼邏輯電路,注意各信號與顯示控制模塊的位序關(guān)系。設(shè)計蜂鳴器控制邏輯。

(6)分析與綜合通過后,分配輸入、輸出端口,根據(jù)所使用實驗裝置的FPGA端口連接協(xié)議鎖定端口編號,編譯通過后下載觀察設(shè)計效果。

(7)按設(shè)計要求檢查系統(tǒng)功能,若功能不滿足設(shè)計要求,修改設(shè)計文件。3.3.6思考問題

(1)參考方案中狀態(tài)機(jī)的輸出控制ROM的地址輸入。那么,當(dāng)觸發(fā)脈沖使?fàn)顟B(tài)機(jī)狀態(tài)轉(zhuǎn)換時,ROM的地址和輸出數(shù)據(jù)的改變是否會造成狀態(tài)機(jī)連續(xù)變化?為什么?

(2)參考方案中狀態(tài)機(jī)由投幣信號觸發(fā)轉(zhuǎn)換,投幣信號產(chǎn)生的脈沖寬度是否必須統(tǒng)一?為什么?

(3)如果參考方案的莫爾型狀態(tài)機(jī)用周期性同步脈沖觸發(fā),實現(xiàn)激勵和輸出控制的ROM容量需要多大?電路的輸入無效組合(維持狀態(tài)不變)有幾組?

3.4簡?易?數(shù)?字?鐘

3.4.1設(shè)計實例

1.設(shè)計要求

設(shè)計一個簡易數(shù)字鐘,具有整點(diǎn)報時和校時功能。

(1)以4位LED數(shù)碼管顯示時、分,時為二十四進(jìn)制。

(2)時、分顯示數(shù)字之間以小數(shù)點(diǎn)間隔,小數(shù)點(diǎn)以1Hz頻率、50%占空比的亮、滅規(guī)律表示秒計時。

(3)整點(diǎn)報時采用蜂鳴器實現(xiàn)。每當(dāng)整點(diǎn)前控制蜂鳴器以低頻鳴響4次,響1s、停1s,直到整點(diǎn)前一秒以高頻響1?s,整點(diǎn)時結(jié)束。高、低頻率相差一倍,一般低頻可選500?Hz或1kHz,高頻選擇1kHz或2kHz。

(4)采用兩個按鍵分別控制“校時”或“校分”。按下“校時”鍵時,時顯示值以0~23循環(huán)變化;按下“校分”鍵時,分顯示值以0~59循環(huán)變化,但時顯示值不能變化。

2.硬件環(huán)境

系統(tǒng)可以在DE2開發(fā)板或LP—2900開發(fā)裝置上實現(xiàn),控制部分采用FPGA設(shè)計。本節(jié)以LP—2900為例,說明簡易數(shù)字鐘電路的設(shè)計原理和實現(xiàn)方法。

圖3-4-1是LP—2900裝置上FPGA與七段數(shù)碼顯示器、校時按鍵、整點(diǎn)報時電路的控制信號連接關(guān)系。LP—2900裝置上的6個LED數(shù)碼顯示器連接成動態(tài)掃描方式,本設(shè)計需要4位LED數(shù)碼顯示,可參考2.8節(jié)。圖3-4-1LP—2900開發(fā)裝置FPGA與數(shù)字鐘的接口關(guān)系3.4.2設(shè)計原理分析

1.二進(jìn)制同步計數(shù)器74161

本設(shè)計電路采用二進(jìn)制同步計數(shù)器74161,其邏輯符號如圖3-4-2,功能如表3-4-1所示。圖3-4-274161邏輯符號

4位二進(jìn)制計數(shù)器74161模為16,狀態(tài)碼為“0000”~“1111”。從表3-4-1可以看出:

(1)?74161的復(fù)位取決于復(fù)位信號CLRN,與其他信號無關(guān)。所以其復(fù)位功能為異步控制、低電平有效,優(yōu)先級別最高。

(2)?D、C、B、A為并行數(shù)據(jù)輸入端。當(dāng)CLRN信號無效(為“1”)且置數(shù)信號LDN有效(為“0”)時,在CLK脈沖的上升沿,D、C、B、A的數(shù)據(jù)被置入計數(shù)器。所以其置數(shù)功能為同步控制、低電平有效,優(yōu)先級別僅次于復(fù)位控制。

(3)?ENT和ENP為計數(shù)使能控制端,高電平有效。只要兩個使能端中有一個為低電平,計數(shù)功能就被禁止,計數(shù)器狀態(tài)保持不變,所以兩者為“與”邏輯。

(4)進(jìn)位輸出RCO僅在計數(shù)器狀態(tài)為全“1”且ENT為高時才有效(高電平)。所以,RCO的下降沿指示了計數(shù)器的溢出(狀態(tài)碼從最大值復(fù)0),在多片計數(shù)器級聯(lián)時可作為向高位計數(shù)器的進(jìn)位信號。在計數(shù)器全狀態(tài)(0000~1111)計數(shù)時,RCO的信號周期為計數(shù)脈沖周期的16倍,可作為計數(shù)脈沖的16分頻信號,占空比(高電平時間與周期時間的之比)為1/16。

2.74161的應(yīng)用

模值為M的集成計數(shù)器可以被用來實現(xiàn)模為任意值的計數(shù)器電路。利用集成計數(shù)器的置數(shù)功能或復(fù)位功能可以減小集成計數(shù)器的模,而多片集成計數(shù)器相連又可以擴(kuò)展計數(shù)器的模。下面我們以加計數(shù)器(狀態(tài)碼從0→M-1變化)構(gòu)成十進(jìn)制計數(shù)器為例討論集成計數(shù)器的模值改變方法(10<M)。

1)反饋復(fù)位法

計數(shù)器74161為異步復(fù)位,利用第10個計數(shù)脈沖產(chǎn)生的無效狀態(tài)碼“1010”綜合出復(fù)位控制信號,使計數(shù)器立即被復(fù)位至循環(huán)周期的初始狀態(tài)“0”。狀態(tài)碼“1010”轉(zhuǎn)瞬即逝,不能維持。

如果計數(shù)器為同步復(fù)位,則利用第9個計數(shù)脈沖產(chǎn)生的有效狀態(tài)碼“1001”綜合出復(fù)位準(zhǔn)備信號,當(dāng)?shù)?0個脈沖到達(dá)時復(fù)位控制有效,計數(shù)器復(fù)位至狀態(tài)“0”。

2)反饋置數(shù)法

計數(shù)器74161為同步置數(shù),若預(yù)置數(shù)碼值為“0000”,則模為10的計數(shù)器的有效狀態(tài)碼為“0000”~“1001”,每個計數(shù)狀態(tài)循環(huán)周期中第10個時鐘使計數(shù)器狀態(tài)從“9”跳轉(zhuǎn)為“0”,稱反饋置零。利用第9個計數(shù)脈沖產(chǎn)生的有效狀態(tài)碼“1001”綜合出置數(shù)準(zhǔn)備信號,當(dāng)?shù)?0個脈沖到達(dá)時置數(shù)控制有效,計數(shù)器置數(shù)至狀態(tài)“0”。如果計數(shù)器為異步置數(shù),則利用第10個計數(shù)脈沖產(chǎn)生的無效狀態(tài)碼“1010”綜合出置數(shù)準(zhǔn)備信號,當(dāng)?shù)?0個脈沖到達(dá)時置數(shù)控制有效,計數(shù)器置數(shù)至狀態(tài)“0”。

當(dāng)電路發(fā)生走時誤差時,要求電路具有校時功能。數(shù)字鐘的分校正和時校正一般獨(dú)立進(jìn)行,并希望數(shù)值變化率較快,比如5~10Hz。

所以,數(shù)字鐘中分、時計數(shù)器都有兩個計數(shù)脈沖信號源,正常工作狀態(tài)時分別為分脈沖和時脈沖;校正狀態(tài)時都為5~10Hz的校正脈沖。校正鍵一般采用脈沖按鍵,需經(jīng)消抖動處理,否則可能很難精確設(shè)定時間。消抖動電路及其工作原理可參考3.1節(jié)。

電路在整點(diǎn)前10s鐘內(nèi)開始控制蜂鳴器報時,可采用數(shù)字比較器或邏輯門判斷分、秒計數(shù)器的狀態(tài)碼值,以不同頻率的脈沖控制蜂鳴器鳴響。3.4.3參考設(shè)計方案

根據(jù)設(shè)計原理分析,數(shù)字鐘電路主體部分是3個計數(shù)器,其中分、時計數(shù)器的計數(shù)脈沖由校正按鍵控制選擇秒、分計數(shù)器的溢出信號或校正10Hz計數(shù)信號。計數(shù)器的輸出通過七段譯碼后顯示,同時通過數(shù)值判斷電路控制蜂鳴器報時。

1.時、分、秒計數(shù)器

數(shù)字鐘的計時周期為24小時,顯示范圍00時00分00秒~23時59分59秒。為顯示譯碼方便起見,秒、分計數(shù)為六十進(jìn)制8421BCD碼計數(shù)器,當(dāng)秒、分計數(shù)器在最大狀態(tài)碼59(01011001)8421BCD時,溢出信號有效。計數(shù)為二十四進(jìn)制8421BCD碼計數(shù)器,即采用兩個十進(jìn)制計數(shù)器級聯(lián)成2位8421BCD碼計數(shù)器(模100),再用復(fù)位法或預(yù)置零法實現(xiàn)模為24、狀態(tài)碼為0~23的計數(shù)器。

1Hz秒脈沖和10Hz校正信號可從FPGA開發(fā)裝置的基準(zhǔn)時鐘的分頻獲得,分頻電路可參考2.5節(jié)設(shè)計。

2.分、時計數(shù)器的計數(shù)脈沖選擇

當(dāng)分(時)校正按鍵有效時,分、時計數(shù)器輸入10Hz的校正信號,否則,計數(shù)器分別輸入秒、分計數(shù)器的溢出信號。計數(shù)信號可以通過與或門、三態(tài)門或數(shù)據(jù)選擇器選擇。

校正分值時計數(shù)器的數(shù)值不能改變,所以分校正按鍵有效時必須封鎖分計數(shù)器的溢出信號向時計數(shù)器的進(jìn)位,可以采用邏輯門實現(xiàn)控制邏輯。但要注意分校正鍵狀態(tài)改變時要避免控制器產(chǎn)生一個時計數(shù)器的脈沖有效邊沿,引起時計數(shù)器誤觸發(fā)。

3.正點(diǎn)報時電路

采用數(shù)據(jù)選擇器選擇不同的頻率控制蜂鳴器。在59min50s起的單數(shù)秒值(51,53,55,57)時蜂鳴器控制信號頻率為500Hz,雙數(shù)秒值時控制信號頻率為0,在59min59s時控制信號頻率為1kHz。當(dāng)分計數(shù)值不是59或秒計數(shù)值小于50時,蜂鳴器不會鳴響。這樣,蜂鳴器鳴響時分計數(shù)器的狀態(tài)碼總是“01011001”,而秒計數(shù)器的高位組BCD碼為“0101”、低位組BCD碼的最低位為“1”。滿足鳴響條件時,若秒計數(shù)器低位組BCD碼的最高位碼為“0”(0ΦΦ1)時,蜂鳴器控制信號頻率為500Hz;為“1”(1001)時,控制信號頻率為1kHz。由于時間計數(shù)是逐一遞增的,所以只要根據(jù)分計數(shù)器BCD碼和秒計數(shù)器高位組BCD碼中為“1”的位和最低組BCD的最高、最低位信號電平即可綜合數(shù)據(jù)選擇器的控制邏輯。當(dāng)不滿足鳴響條件時,禁止脈沖信號控制蜂鳴器。采用秒計數(shù)脈沖控制時、分間的小數(shù)點(diǎn)。

圖3-4-3為簡易數(shù)字鐘框圖。圖3-4-3簡易數(shù)字鐘框圖3.4.4設(shè)計預(yù)習(xí)準(zhǔn)備

(1)查閱資料選擇合適的集成計數(shù)器設(shè)計二十四進(jìn)制計數(shù)器,根據(jù)所選計數(shù)器的功能特性考慮級聯(lián)方式以及模值修改方法,畫出電路原理框圖。

(2)考慮正點(diǎn)報時控制電路設(shè)計,畫出電路原理框圖。

(3)考慮分進(jìn)位信號控制電路,列出控制邏輯表達(dá)式或真值表。

(4)根據(jù)所用FPGA開發(fā)裝置的顯示電路結(jié)構(gòu),考慮時間顯示控制邏輯。

(5)查閱所使用開發(fā)裝置的FPGA端口編號表,在電路原理圖中標(biāo)出各輸入、輸出的端口編號。3.4.5參考設(shè)計步驟

(1)建立圖形文件設(shè)計二十四進(jìn)制計數(shù)器。綜合后建立仿真文件,觀察計數(shù)器狀態(tài)碼是否符合設(shè)計要求。仿真正確后創(chuàng)建邏輯符號。

(2)另建圖形文件并設(shè)置為頂層文件,設(shè)計蜂鳴器控制電路。綜合后建立仿真文件,觀察計數(shù)器狀態(tài)碼是否符合設(shè)計要求。仿真正確后創(chuàng)建邏輯符號。

(3)另建圖形文件并設(shè)置為頂層文件。導(dǎo)入或創(chuàng)建六十進(jìn)制計數(shù)器、分頻模塊和顯示譯碼控制模塊,導(dǎo)入二十四進(jìn)制計數(shù)器和蜂鳴器控制電路邏輯符號。

(4)設(shè)計按鍵輸入消抖動電路和秒、分、時各計數(shù)器間的級聯(lián)控制邏輯。

(5)完成整個電路后,分配各I/O端口引腳。編譯適配后下載觀察實驗效果。3.4.6思考問題

(1)若計數(shù)器為上升沿觸發(fā),如何實現(xiàn)異步級聯(lián)?

(2)根據(jù)按鍵消抖動電路的原理分析,鍵掃描頻率是否越低越好?

(3)調(diào)試時如果發(fā)現(xiàn)分校時按鍵改變狀態(tài)時會使時計數(shù)器加1,分析可能是什么原因,舉例說明。

(4)要求整點(diǎn)時能自動報時,報時頻率用1kHz推動揚(yáng)聲器,揚(yáng)聲器發(fā)聲次數(shù)應(yīng)與整點(diǎn)小時數(shù)一致,例如時間是9點(diǎn)整,揚(yáng)聲器應(yīng)響9次;其余類推。考慮如何設(shè)計整點(diǎn)報時

電路。

3.5按鍵陣列掃描及點(diǎn)陣顯示器

控制電路設(shè)計

3.5.1設(shè)計實例

1.設(shè)計要求

實現(xiàn)一個按鍵陣列判斷電路,采用發(fā)光二極管點(diǎn)陣顯示器以12個顯示符標(biāo)識12個按鍵。當(dāng)有鍵按下時,顯示其標(biāo)識符,并保持顯示符直到新的按鍵作用。如果多個按鍵同時閉合,只響應(yīng)最先作用的按鍵。

2.硬件環(huán)境

設(shè)計對象的實現(xiàn)環(huán)境與所采用的FPGA開發(fā)裝置有關(guān),本節(jié)以LP—2900為例,說明采用按鍵陣列掃描和點(diǎn)陣顯示器控制電路的設(shè)計原理和實現(xiàn)方法。

LP—2900開發(fā)裝置上有“0~9”、“*”、“#”共12個鍵構(gòu)成的3行4列按鍵陣列以及8行8列64個點(diǎn)的點(diǎn)陣顯示器。FPGA與按鍵陣列、點(diǎn)陣顯示器的連接關(guān)系如圖3-5-1所示。圖3-5-1LP—2900開發(fā)裝置FPGA與按鍵陣列、點(diǎn)陣顯示器的接口關(guān)系

FPGA通過端口RK1~RK3讀取鍵陣列的行線狀態(tài)X0~X2;通過3—8線譯碼器控制鍵陣列的列線Y0~Y3。74138的譯碼輸入由FPGA端口DE3~DE1控制。

點(diǎn)陣顯示器各行由FPGA的端口ROW1~ROW8控制,點(diǎn)陣顯示器各列由FPGA端口C1~C8通過反相器控制,以滿足電流驅(qū)動能力。3.5.2按鍵掃描和點(diǎn)陣顯示原理

1.按鍵掃描原理

數(shù)字電路中,按鍵的閉合和斷開狀態(tài)可以通過其控制的邏輯電平判斷。

1)按鍵狀態(tài)判斷

圖3-5-2(a)電路將按鍵閉合、斷開轉(zhuǎn)換成代表“0”或“1”二值邏輯的低電平和高電平,判斷電路輸出X的電平即可了解按鍵的通、斷狀態(tài)。按鍵一般為機(jī)械開關(guān),其觸點(diǎn)的合、斷有彈性抖動,如圖3-5-2(b)所示,抖動時間約5~10ms。為了保證按鍵動作一次電路只判斷到一次狀態(tài)電平改變,需要采用消抖動措施。采用基本RS觸發(fā)器可以對X的電平信號整形,實現(xiàn)消抖動。圖3-5-2按鍵狀態(tài)判斷原理

2)按鍵陣列判斷

若需要判斷的按鍵較多,為節(jié)省信號端口資源,一般將按鍵分成行、列兩組連接成陣列形式,16個按鍵的陣列如圖3-5-3(a)所示。每個按鍵跨接在一條行線Xi和一條列線Yi間。當(dāng)按鍵閉合時,行線與列線接通。每條行線都通過一個電阻上拉到?+5V電位,當(dāng)行線上的所有按鍵都未閉合時,行線一定為高電平。當(dāng)某條列線為低電平時,根據(jù)各行線的電平可判斷該列線上各鍵的狀態(tài)。比如,當(dāng)Y1為低電平時,如果4條行線X0、X1、X2、X3的狀態(tài)為“1011”,可判S11鍵閉合,S01,S21,S31鍵斷開;若X0、X1、X2、X3的狀態(tài)為“0101”,則可判斷S01、S21鍵閉合。圖3-5-3按鍵陣列掃描原理

3)按鍵掃描判斷

若以圖3-5-3(b)的負(fù)脈沖掃描序列信號控制鍵陣列的列線,使各列線分時為低電平,同時順序判斷各行線電平,就能逐個確定各鍵狀態(tài)。比如,首先觀察行線X0的電平,當(dāng)列線Y0~Y3分別為低電平時判斷了S0、S1、S2、S34個鍵;然后觀察行線X1,列線Y0~Y3再次分別為低電平,判斷S4、S5、S6、S74個鍵,……?顯然,每個按鍵的掃描時間是列線的低電平時間,而陣列的掃描周期是按鍵掃描時間乘以鍵數(shù)。所以,按鍵的閉合時間必須大于陣列掃描周期,否則閉合狀態(tài)可能會被遺漏。比如,當(dāng)陣列為16個鍵時,如果每個鍵的掃描時間是10ms,則鍵的閉合時間必須大于0.16s。按鍵的閉合時間因人的動作快慢而異,通常為零點(diǎn)幾秒至一點(diǎn)幾秒。

2.發(fā)光二極管點(diǎn)陣顯示原理

點(diǎn)陣顯示電路是由發(fā)光二極管組成的陣列。每一行發(fā)光二極管的陽極接在一起,由行信號ROWi控制;每一列發(fā)光二極管的陰極接在一起,由列信號Cj驅(qū)動。圖3-5-4是8行、8列的發(fā)光二極管點(diǎn)陣顯示電路,從上至下各行、從左至右各列編號依序增加。當(dāng)某行信號為“1”、某列信號為“0”時,連接該行、該列的發(fā)光二極管亮。若行信號ROW3為“1”、列信號C4、C6為“0”,陣列中對應(yīng)的兩個發(fā)光二極管亮。圖3-5-4發(fā)光二極管點(diǎn)陣顯示原理如果把發(fā)光二極管陣列的每一行看做一個8段共陽顯示器,ROWi為陽極公共端,每一列Cj就是顯示器的一個段,低電平有效。這樣,8×8點(diǎn)陣顯示電路與8位動態(tài)掃描共陽顯示電路的結(jié)構(gòu)完全相同,當(dāng)行掃描信號為高電平時,列信號的低電平可以控制該行各列的發(fā)光管亮。比如,當(dāng)ROW1為高電平時,若列信號C1~C8為“01111110”,則ROW1行第一和最末的發(fā)光管滅,其他6個亮。同理,若把發(fā)光二極管陣列的每一列看做一個8段共陰顯示器,Cj為陰極公共端,8×8點(diǎn)陣顯示電路就與8位動態(tài)掃描共陰顯示電路的結(jié)構(gòu)

相同。由于LP—2900開發(fā)裝置上點(diǎn)陣顯示器的列信號通過反相器驅(qū)動,所以其FPGA的列控制邏輯為高電平有效,即當(dāng)ROWi、Cj都為“1”時,第i行、第j列的發(fā)光二極管亮。

根據(jù)2.8節(jié)介紹的動態(tài)掃描顯示控制的原理,如果采用一個計數(shù)器順序產(chǎn)生8路行掃描信號RW1~RW8,同時根據(jù)各行發(fā)光二極管的顯示要求同步控制列信號,當(dāng)掃描計數(shù)頻率足夠高時,點(diǎn)陣顯示的效果為一個穩(wěn)定的字符。3.5.3設(shè)計參考方案

根據(jù)按鍵陣列的判斷原理,可采用一個計數(shù)器產(chǎn)生按鍵編碼信號。計數(shù)器的脈沖周期等于按鍵的掃描時間,計數(shù)器的模M大于等于被掃描的按鍵數(shù)N。本設(shè)計要求判斷12個按鍵的陣列,所以可采用4位二進(jìn)制計數(shù)器產(chǎn)生按鍵掃描碼。計數(shù)器輸出控制譯碼器產(chǎn)生列掃描信號Y0~Y3,并控制數(shù)據(jù)選擇器選擇行線電平Xi。當(dāng)被掃描的按鍵閉合時,選擇器的輸出信號控制寄存器保存計數(shù)器當(dāng)前的鍵碼狀態(tài),同時封鎖計數(shù)器停止鍵掃描,以避免其他按鍵閉合時產(chǎn)生的影響。發(fā)光二極管點(diǎn)陣電路采用3位二進(jìn)制計數(shù)器譯碼后掃描控制其行(列)信號ROWi(Cj),同時控制列(行)顯示碼同步循環(huán)輸出。所以,必須設(shè)計一個譯碼邏輯器件,根據(jù)寄存器保存的按鍵編碼輸出鍵符顯示列(行)控制碼。鍵符顯示譯碼器件可以采用AHDL真值表方式、組合邏輯器件或只讀存儲器ROM來實現(xiàn)。采用ROM存儲鍵符列顯示碼的參考設(shè)計電路如圖3-5-5所示。如果用LP—2900開發(fā)裝置完成設(shè)計,圖3-5-5中虛線以外的電路由FPGA實現(xiàn)。圖3-5-5參考設(shè)計電路原理框圖

1.按鍵編碼

圖3-5-5中計數(shù)器A輸出4位二進(jìn)制碼Q3~Q0,每組碼通過譯碼器A產(chǎn)生一列低電平有效的列信號,同時通過數(shù)據(jù)選擇器選中一個行線信號判斷連接該列、該行的按鍵狀態(tài)。當(dāng)數(shù)據(jù)選擇器輸出低電平時,表示被掃描鍵閉合。所以,計數(shù)器輸出的二進(jìn)制碼與陣列中的按鍵一一對應(yīng)。顯然,按鍵的編碼位序與計數(shù)器的輸出控制有關(guān)。若計數(shù)器的高兩位輸出Q3、Q2控制選擇信號B1和B0,低兩位輸出Q1、Q0控制譯碼信號A1和A0,則計數(shù)器輸出為“0001”時,Y0為低電平,選擇輸出X1的狀態(tài),掃描按鍵S2。因此,“0001”為S2的鍵碼。

2.鍵符顯示碼存儲

由于ROM的數(shù)據(jù)輸出控制點(diǎn)陣的列信號C1~C8,因此ROM中每個存儲單元的數(shù)據(jù)就是一行列控制碼,每位數(shù)據(jù)控制一列。一個顯示符的8行控制需要8個單元的列碼數(shù)據(jù),12個不同的鍵符顯示需要96個存儲單元,這樣顯示譯碼存儲器至少需要7位地址。如果ROM的高4位地址A6~A3由鍵碼Q3~Q0控制,低3位地址A2~A0由行掃描計數(shù)器B控制,每個顯示符的8行列控制碼被存放在以鍵碼劃分塊的連續(xù)8個存儲單元中。建立存儲數(shù)據(jù)文件時要注意數(shù)據(jù)位序與點(diǎn)陣列序的關(guān)系以及存儲單元低3位地址與點(diǎn)陣行序的關(guān)系。比如,若存儲器的數(shù)據(jù)輸出D7~D0依序控制C1~C8,則數(shù)據(jù)碼從高至低位分別對應(yīng)點(diǎn)陣顯示器的從左至右列。如果狀態(tài)機(jī)B的輸出與譯碼器B的輸入及存儲器低3位地址的位序?qū)?yīng)相同,當(dāng)譯碼器B的輸出Y0~

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論