版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章常用數(shù)字電路的設(shè)計(jì)技巧5.1鎖存器的產(chǎn)生
5.2D觸發(fā)器的妙用
5.3優(yōu)化的有限狀態(tài)機(jī)設(shè)計(jì)
5.4按鍵抖動(dòng)的消除方法
習(xí)題5
5.1鎖存器的產(chǎn)生
在電路設(shè)計(jì)中如果不是必需,則應(yīng)該盡量使用觸發(fā)器,而不用鎖存器。下面給出用VerilogHDL語言描述觸發(fā)器和鎖存器的例子。從上面的例子我們可以看出,觸發(fā)器是在時(shí)鐘沿進(jìn)行數(shù)據(jù)鎖存的,而鎖存器是用電平使能來鎖存數(shù)據(jù)的。所以,觸發(fā)器的q輸出端在每一個(gè)時(shí)鐘沿都會(huì)被更新,而鎖存器只能在使能電平有效時(shí)其q值才會(huì)被更新。
在VerilogHDL程序設(shè)計(jì)中,如果條件語句的所有條件沒有列舉出來,則很容易生成鎖存器。下面我們給出一個(gè)在“always”塊中使用if語句造成出現(xiàn)鎖存器的例子。在左邊的“always”塊,if語句說明只有當(dāng)sel=1時(shí),q才取d的值。這段程序并沒有寫出sel=0時(shí)的結(jié)果,那么當(dāng)綜合器綜合這段程序時(shí),會(huì)自動(dòng)認(rèn)為在sel=0時(shí)q值保持原值。這樣電路中必然會(huì)出現(xiàn)一個(gè)鎖存器來鎖存q的值。如果設(shè)計(jì)者希望當(dāng)sel=0時(shí)q的值為0,那么else項(xiàng)就必不可少了。請(qǐng)看右邊的“always”塊,整段程序模塊被綜合器綜合后,“always”塊對(duì)應(yīng)的部分不會(huì)生成鎖存器。
在條件case語句中缺少default項(xiàng)時(shí),也會(huì)發(fā)生這種情況。例如:在上面左邊的例子中,當(dāng)sel=00時(shí),q取a的值;當(dāng)sel=10時(shí),q取b的值。這段程序中并沒有說明sel取00和10以外的值時(shí)q取什么值。同樣,綜合器綜合這段程序時(shí)會(huì)自動(dòng)生成鎖存器,默認(rèn)q保持原值。上面右邊的例子很明確,程序中的case語句有default項(xiàng),指明了當(dāng)sel不取00或10時(shí),編譯器或仿真器應(yīng)賦q為0值。
為了避免違背設(shè)計(jì)者意愿而偶然出現(xiàn)鎖存器的現(xiàn)象,如果用if語句,則最好寫上else項(xiàng);如果用case語句,則最好寫上default項(xiàng)。遵循上面兩條原則,就可以避免發(fā)生這種錯(cuò)誤,使設(shè)計(jì)者更加明確設(shè)計(jì)目標(biāo),同時(shí)也增強(qiáng)了Verilog程序的可讀性。
5.2D觸發(fā)器的妙用
5.2.1毛刺的消除
信號(hào)在FPGA器件內(nèi)部通過連線和邏輯單元時(shí),都有一定的延時(shí)。延時(shí)的大小與連線的長(zhǎng)短和邏輯單元的數(shù)目有關(guān),同時(shí)還受器件的制造工藝、工作電壓、溫度等條件的影響。信號(hào)的高低電平轉(zhuǎn)換也需要一定的過渡時(shí)間。由于存在這些因素,因此多路信號(hào)的電平值發(fā)生變化時(shí),在信號(hào)變化的瞬間,組合邏輯的輸出有先后順序,并不是同時(shí)變化,往往會(huì)出現(xiàn)一些不正確的尖峰信號(hào),這些尖峰信號(hào)稱為“毛刺”。如果一個(gè)組合邏輯電路中有“毛刺”出現(xiàn),則說明該電路存在“冒險(xiǎn)”。圖5.1是一個(gè)邏輯冒險(xiǎn)的例子,從圖中我們可知f=ab+cd。如果a、b、c、d這四個(gè)輸入信號(hào)經(jīng)綜合布線后,信號(hào)到達(dá)CLB(可構(gòu)造邏輯塊)的長(zhǎng)度相同,則此時(shí)我們可以忽略信號(hào)在線路上傳輸?shù)难舆t,a、b、c、d信號(hào)的高低電平是同時(shí)變化的,這種布線無冒險(xiǎn)現(xiàn)象。但如果它們的布線長(zhǎng)度不一致,如圖5.2所示,f的查找表被布線到M塊上,則此時(shí)a、b、c、d這四個(gè)輸入信號(hào)到達(dá)CLB的路線長(zhǎng)度肯定不一致,這就必然導(dǎo)致輸出信號(hào)f出現(xiàn)毛刺。圖5.1存在邏輯冒險(xiǎn)的電路圖5.2FPGA的內(nèi)部結(jié)構(gòu)在D觸發(fā)器的D輸入端,只要毛刺不出現(xiàn)在時(shí)鐘的上升沿并且滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害,利用D觸發(fā)器不敏感的特性可以有效地消除毛刺。圖5.3所示是對(duì)上述電路消除毛刺的方法。圖5.3消除毛刺的邏輯電路5.2.2系統(tǒng)工作頻率的提高
在設(shè)計(jì)一個(gè)時(shí)序系統(tǒng)時(shí),如果系統(tǒng)的工作頻率過低,則達(dá)不到所設(shè)計(jì)的要求。一般有三種方法對(duì)系統(tǒng)進(jìn)行改善:一是對(duì)邏輯代碼進(jìn)行優(yōu)化,使其輸出結(jié)果在更短的時(shí)鐘周期內(nèi)完成;二是對(duì)系統(tǒng)提供的時(shí)鐘進(jìn)行倍頻;三是把一個(gè)系統(tǒng)模塊拆散成幾個(gè)系統(tǒng)模塊,進(jìn)行分級(jí)處理,并且每級(jí)的邏輯銜接信號(hào)都加上D觸發(fā)器。
圖5.4是一個(gè)工作頻率為fMHz的串聯(lián)二級(jí)組合邏輯電路。圖5.4串聯(lián)二級(jí)組合邏輯電路圖5.5所示是對(duì)上述電路的流水線改進(jìn)型,此時(shí)的系統(tǒng)的工作頻率可達(dá)2fMHz。圖5.5采用流水線技術(shù)的改進(jìn)電路
5.3優(yōu)化的有限狀態(tài)機(jī)設(shè)計(jì)
有限狀態(tài)機(jī)(FiniteStateMachine,F(xiàn)SM)在數(shù)字系統(tǒng)設(shè)計(jì)中應(yīng)用十分廣泛。根據(jù)狀態(tài)機(jī)的輸出是否與輸入有關(guān),可將狀態(tài)機(jī)分為兩大類:摩爾(Moore)型狀態(tài)機(jī)和米莉(Mealy)型狀態(tài)機(jī)。Moore型狀態(tài)機(jī)的輸出僅與當(dāng)前狀態(tài)有關(guān);Mealy型狀態(tài)機(jī)的輸出不僅與當(dāng)前狀態(tài)有關(guān),還與輸入有關(guān)。
一個(gè)優(yōu)化的有限狀態(tài)機(jī)主要應(yīng)注意以下三個(gè)方面:
(1)狀態(tài)機(jī)要安全。FSM不會(huì)進(jìn)入死循環(huán),并且一旦FSM進(jìn)入非設(shè)計(jì)狀態(tài),它能很快恢復(fù)到正常狀態(tài)。
(2)狀態(tài)機(jī)的設(shè)計(jì)要滿足設(shè)計(jì)的面積和速度的要求。面積小和速度快是程序下載到芯片中的理想要求。兩者是對(duì)立統(tǒng)一的矛盾體,要求一個(gè)設(shè)計(jì)同時(shí)滿足設(shè)計(jì)面積最小、運(yùn)行頻率最快兩個(gè)要求,這是不現(xiàn)實(shí)的。但在程序設(shè)計(jì)中應(yīng)盡量達(dá)到兩者的協(xié)調(diào)。
(3)狀態(tài)機(jī)的設(shè)計(jì)要清晰易懂、易維護(hù)。FSM應(yīng)分塊描述,這樣程序就增強(qiáng)了易讀性和維護(hù)性。
1.?FSM的描述方法
FSM在描述時(shí)應(yīng)描述清楚狀態(tài)轉(zhuǎn)移情況,例如每個(gè)狀態(tài)的輸出、狀態(tài)轉(zhuǎn)移的條件等。一般具體描述方法有以下三種:
(1)整個(gè)狀態(tài)機(jī)寫到一個(gè)“always”模塊里面描述,在該模塊中既描述狀態(tài)轉(zhuǎn)移,又描述狀態(tài)的輸入和輸出。
(2)用兩個(gè)“always”模塊來描述狀態(tài)機(jī),其中一個(gè)“always”模塊用來描述同步時(shí)序狀態(tài)轉(zhuǎn)移,另一個(gè)“always”模塊用來描述組合邏輯狀態(tài)轉(zhuǎn)移條件、狀態(tài)轉(zhuǎn)移規(guī)律以及輸出。
(3)用三個(gè)“always”模塊來描述狀態(tài)機(jī),其中一個(gè)“always”模塊用來描述同步時(shí)序狀態(tài)轉(zhuǎn)移,一個(gè)“always”模塊用來判斷邏輯狀態(tài)轉(zhuǎn)移條件、狀態(tài)轉(zhuǎn)移規(guī)律,另一個(gè)“always”模塊用來描述狀態(tài)的輸出。
一般FSM的設(shè)計(jì)多采用后兩種方法進(jìn)行描述。因?yàn)檫@兩種方法相比第一種方法來說,便于閱讀、理解和維護(hù),更重要的是利于綜合器優(yōu)化代碼。在第二種方法的描述中,狀態(tài)的輸出采用組合邏輯實(shí)現(xiàn),但組合邏輯很容易產(chǎn)生毛刺。第三種描述方法與第二種相比,關(guān)鍵在于根據(jù)狀態(tài)轉(zhuǎn)移規(guī)律,在上一狀態(tài)根據(jù)輸入條件判斷出當(dāng)前狀態(tài)的輸出,從而在不插入額外時(shí)鐘節(jié)拍的前提下,實(shí)現(xiàn)寄存器輸出。
2.狀態(tài)機(jī)的編碼
狀態(tài)機(jī)編碼主要有二進(jìn)制編碼、格雷編碼和一位獨(dú)熱編碼等方式。
(1)二進(jìn)制編碼。二進(jìn)制編碼采用普通的二進(jìn)制數(shù)表示每個(gè)狀態(tài)。例如,有四個(gè)狀態(tài)state0、state1、state2、state3,其二進(jìn)制編碼分別對(duì)應(yīng)的碼字為00、01、10、11。但二進(jìn)制編碼的缺點(diǎn)是相鄰狀態(tài)發(fā)生跳變時(shí),有可能多個(gè)比特位同時(shí)發(fā)生變化。例如,(01→10)有兩位比特發(fā)生變化。這樣容易產(chǎn)生毛刺,引起狀態(tài)誤跳的現(xiàn)象。
(2)格雷編碼。若將上述四個(gè)狀態(tài)(state0、state1、state2、state3)的編碼改為00、01、11、10,則這種編碼就為格雷編碼。采用格雷編碼的好處就是相鄰狀態(tài)發(fā)生跳變時(shí),只有一位比特位發(fā)生變化。這樣就減少了毛刺的產(chǎn)生。
(3)一位獨(dú)熱編碼。一位獨(dú)熱編碼指采用n位二進(jìn)制數(shù)(n位觸發(fā)器)來編碼具有n個(gè)狀態(tài)的狀態(tài)機(jī)。例如,四個(gè)狀態(tài)state0、state1、state2、state3,其一位獨(dú)熱編碼分別對(duì)應(yīng)的碼字為0001、0010、0100、1000;八個(gè)狀態(tài)分別為state0、state1、state2、state3、state4、state5、state6、state7,其一位獨(dú)熱編碼分別對(duì)應(yīng)的碼字為8'b00000001、8'b00000010、8'b00000100、8'b00001000、8'b00010000、8'b00100000、8'b01000000、8'b10000000。獨(dú)熱編碼的最大優(yōu)勢(shì)在于狀態(tài)比較時(shí)僅僅需要比較一個(gè)比特位,從而在一定程度上簡(jiǎn)化了比較邏輯,減少了毛刺產(chǎn)生的概率。由于CPLD更多地提供組合邏輯資源,而FPGA更多地提供觸發(fā)器資源,所以CPLD多使用二進(jìn)制編碼或格雷碼,而FPGA多使用獨(dú)熱編碼。另一方面,對(duì)于小型設(shè)計(jì)使用二進(jìn)制和格雷編碼更有效,而大型狀態(tài)機(jī)使用獨(dú)熱編碼更高效。
3.實(shí)例說明
圖5.6為一個(gè)Moore型狀態(tài)機(jī)轉(zhuǎn)換圖,共有4個(gè)狀態(tài):state0、state1、state2、state3,初始狀態(tài)為state0,每個(gè)狀態(tài)下的輸出分別為out=001,out=010,out=100,out=111。圖5.6狀態(tài)轉(zhuǎn)換圖 5.4按鍵抖動(dòng)的消除方法
按鍵開關(guān)是電路中的主要器件之一。在數(shù)字電路中,判斷一個(gè)按鍵是否被按下,是根據(jù)開關(guān)給出的高低電平來確定的。大多數(shù)按鍵開關(guān)采用的是機(jī)械式開關(guān)結(jié)構(gòu)。機(jī)械式開關(guān)的核心部件為彈性金屬簧片,因而在開關(guān)切換的瞬間會(huì)在接觸點(diǎn)出現(xiàn)來回彈跳的現(xiàn)象。對(duì)于靈敏度比較高的電路,這種彈跳現(xiàn)象必然會(huì)引起高低電平信號(hào)的來回跳動(dòng),這種現(xiàn)象稱為按鍵的抖動(dòng)現(xiàn)象。按鍵開關(guān)可分為低電平有效和高電平有效,本節(jié)都以低電平有效進(jìn)行講解。圖5.7給出的是未消抖和消抖后的按鍵信號(hào)的對(duì)比圖。圖5.7未消抖和消抖后的按鍵信號(hào)的對(duì)比圖按鍵開關(guān)按動(dòng)的次數(shù)是根據(jù)按鍵信號(hào)的高低電平跳動(dòng)的次數(shù)來判斷的。但由于抖動(dòng)信號(hào)的存在,開關(guān)按動(dòng)的次數(shù)就變成了未知數(shù)。這樣一來,按鍵信號(hào)就必須進(jìn)行消抖。在數(shù)字電路設(shè)計(jì)中消抖的方法很多,但大致可根據(jù)開關(guān)因素和人為因素來進(jìn)行消抖。
1.根據(jù)按鍵開關(guān)抖動(dòng)的特性進(jìn)行消抖
機(jī)械開關(guān)的抖動(dòng)存在三種情況:按下時(shí)有抖動(dòng),松開時(shí)也有抖動(dòng);按下時(shí)有抖動(dòng),松開時(shí)無抖動(dòng);按下時(shí)無抖動(dòng),松開時(shí)有抖動(dòng)。機(jī)械開關(guān)的抖動(dòng)波形、抖動(dòng)次數(shù)、抖動(dòng)時(shí)間都是隨機(jī)的,并不是每次都會(huì)產(chǎn)生抖動(dòng)。不同開關(guān)的最長(zhǎng)抖動(dòng)時(shí)間也不同。抖動(dòng)時(shí)間的長(zhǎng)短和機(jī)械開關(guān)特性有關(guān),一般為5~10ms。但是,某些開關(guān)的抖動(dòng)時(shí)間長(zhǎng)達(dá)20ms,甚至更長(zhǎng)。所以,在具體設(shè)計(jì)中要具體分析,根據(jù)實(shí)際情況來調(diào)整設(shè)計(jì)。
由按鍵開關(guān)這一抖動(dòng)特性,我們可以用采樣信號(hào)對(duì)開關(guān)的信號(hào)進(jìn)行采樣,這樣可以濾除抖動(dòng)信號(hào)。下面的例子以5ms為采樣周期。
2.根據(jù)按鍵時(shí)間進(jìn)行消抖
根據(jù)一般人按動(dòng)按鍵的速度小于10Hz(每秒小于10次)來判斷,按鍵按下去的時(shí)間將大于100ms。若以占空比50%來計(jì)算,則按鍵按下的時(shí)間大于50ms。根據(jù)這種規(guī)律我們認(rèn)為,按鍵按下的時(shí)間小于50ms的為抖動(dòng)信號(hào),按鍵按下的時(shí)間大于50ms的為按鍵信號(hào)。由此以50ms的采樣周期信號(hào)對(duì)按鍵信號(hào)進(jìn)行采樣,就可以把按鍵按
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高性能混凝土材料承包協(xié)議3篇
- 2024版物流運(yùn)輸購(gòu)銷合同范本
- 2025年新員工試用期間勞動(dòng)合同范本3篇
- 主體墻面刷漆施工專項(xiàng)合同版B版
- 2025年度貨運(yùn)司機(jī)安全責(zé)任合同3篇
- 二零二五年度二手商品攤位租賃與交易平臺(tái)合作協(xié)議3篇
- 二零二五年餐廳員工加班及休息時(shí)間合同范本3篇
- 2024聘用培訓(xùn)講師合作協(xié)議書包含師資評(píng)估體系3篇
- 2024茶葉行業(yè)市場(chǎng)開拓與推廣合同
- 2024的證券居間合同
- 《國(guó)有控股上市公司高管薪酬的管控研究》
- 餐飲業(yè)環(huán)境保護(hù)管理方案
- 人教版【初中數(shù)學(xué)】知識(shí)點(diǎn)總結(jié)-全面+九年級(jí)上冊(cè)數(shù)學(xué)全冊(cè)教案
- 食品安全分享
- 礦山機(jī)械設(shè)備安全管理制度
- 計(jì)算機(jī)等級(jí)考試二級(jí)WPS Office高級(jí)應(yīng)用與設(shè)計(jì)試題及答案指導(dǎo)(2025年)
- 造價(jià)框架協(xié)議合同范例
- 糖尿病肢端壞疽
- 心衰患者的個(gè)案護(hù)理
- 醫(yī)護(hù)人員禮儀培訓(xùn)
- 無人機(jī)飛行安全協(xié)議書
評(píng)論
0/150
提交評(píng)論