




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章常用數字電路的設計技巧5.1鎖存器的產生
5.2D觸發器的妙用
5.3優化的有限狀態機設計
5.4按鍵抖動的消除方法
習題5
5.1鎖存器的產生
在電路設計中如果不是必需,則應該盡量使用觸發器,而不用鎖存器。下面給出用VerilogHDL語言描述觸發器和鎖存器的例子。從上面的例子我們可以看出,觸發器是在時鐘沿進行數據鎖存的,而鎖存器是用電平使能來鎖存數據的。所以,觸發器的q輸出端在每一個時鐘沿都會被更新,而鎖存器只能在使能電平有效時其q值才會被更新。
在VerilogHDL程序設計中,如果條件語句的所有條件沒有列舉出來,則很容易生成鎖存器。下面我們給出一個在“always”塊中使用if語句造成出現鎖存器的例子。在左邊的“always”塊,if語句說明只有當sel=1時,q才取d的值。這段程序并沒有寫出sel=0時的結果,那么當綜合器綜合這段程序時,會自動認為在sel=0時q值保持原值。這樣電路中必然會出現一個鎖存器來鎖存q的值。如果設計者希望當sel=0時q的值為0,那么else項就必不可少了。請看右邊的“always”塊,整段程序模塊被綜合器綜合后,“always”塊對應的部分不會生成鎖存器。
在條件case語句中缺少default項時,也會發生這種情況。例如:在上面左邊的例子中,當sel=00時,q取a的值;當sel=10時,q取b的值。這段程序中并沒有說明sel取00和10以外的值時q取什么值。同樣,綜合器綜合這段程序時會自動生成鎖存器,默認q保持原值。上面右邊的例子很明確,程序中的case語句有default項,指明了當sel不取00或10時,編譯器或仿真器應賦q為0值。
為了避免違背設計者意愿而偶然出現鎖存器的現象,如果用if語句,則最好寫上else項;如果用case語句,則最好寫上default項。遵循上面兩條原則,就可以避免發生這種錯誤,使設計者更加明確設計目標,同時也增強了Verilog程序的可讀性。
5.2D觸發器的妙用
5.2.1毛刺的消除
信號在FPGA器件內部通過連線和邏輯單元時,都有一定的延時。延時的大小與連線的長短和邏輯單元的數目有關,同時還受器件的制造工藝、工作電壓、溫度等條件的影響。信號的高低電平轉換也需要一定的過渡時間。由于存在這些因素,因此多路信號的電平值發生變化時,在信號變化的瞬間,組合邏輯的輸出有先后順序,并不是同時變化,往往會出現一些不正確的尖峰信號,這些尖峰信號稱為“毛刺”。如果一個組合邏輯電路中有“毛刺”出現,則說明該電路存在“冒險”。圖5.1是一個邏輯冒險的例子,從圖中我們可知f=ab+cd。如果a、b、c、d這四個輸入信號經綜合布線后,信號到達CLB(可構造邏輯塊)的長度相同,則此時我們可以忽略信號在線路上傳輸的延遲,a、b、c、d信號的高低電平是同時變化的,這種布線無冒險現象。但如果它們的布線長度不一致,如圖5.2所示,f的查找表被布線到M塊上,則此時a、b、c、d這四個輸入信號到達CLB的路線長度肯定不一致,這就必然導致輸出信號f出現毛刺。圖5.1存在邏輯冒險的電路圖5.2FPGA的內部結構在D觸發器的D輸入端,只要毛刺不出現在時鐘的上升沿并且滿足數據的建立和保持時間,就不會對系統造成危害,利用D觸發器不敏感的特性可以有效地消除毛刺。圖5.3所示是對上述電路消除毛刺的方法。圖5.3消除毛刺的邏輯電路5.2.2系統工作頻率的提高
在設計一個時序系統時,如果系統的工作頻率過低,則達不到所設計的要求。一般有三種方法對系統進行改善:一是對邏輯代碼進行優化,使其輸出結果在更短的時鐘周期內完成;二是對系統提供的時鐘進行倍頻;三是把一個系統模塊拆散成幾個系統模塊,進行分級處理,并且每級的邏輯銜接信號都加上D觸發器。
圖5.4是一個工作頻率為fMHz的串聯二級組合邏輯電路。圖5.4串聯二級組合邏輯電路圖5.5所示是對上述電路的流水線改進型,此時的系統的工作頻率可達2fMHz。圖5.5采用流水線技術的改進電路
5.3優化的有限狀態機設計
有限狀態機(FiniteStateMachine,FSM)在數字系統設計中應用十分廣泛。根據狀態機的輸出是否與輸入有關,可將狀態機分為兩大類:摩爾(Moore)型狀態機和米莉(Mealy)型狀態機。Moore型狀態機的輸出僅與當前狀態有關;Mealy型狀態機的輸出不僅與當前狀態有關,還與輸入有關。
一個優化的有限狀態機主要應注意以下三個方面:
(1)狀態機要安全。FSM不會進入死循環,并且一旦FSM進入非設計狀態,它能很快恢復到正常狀態。
(2)狀態機的設計要滿足設計的面積和速度的要求。面積小和速度快是程序下載到芯片中的理想要求。兩者是對立統一的矛盾體,要求一個設計同時滿足設計面積最小、運行頻率最快兩個要求,這是不現實的。但在程序設計中應盡量達到兩者的協調。
(3)狀態機的設計要清晰易懂、易維護。FSM應分塊描述,這樣程序就增強了易讀性和維護性。
1.?FSM的描述方法
FSM在描述時應描述清楚狀態轉移情況,例如每個狀態的輸出、狀態轉移的條件等。一般具體描述方法有以下三種:
(1)整個狀態機寫到一個“always”模塊里面描述,在該模塊中既描述狀態轉移,又描述狀態的輸入和輸出。
(2)用兩個“always”模塊來描述狀態機,其中一個“always”模塊用來描述同步時序狀態轉移,另一個“always”模塊用來描述組合邏輯狀態轉移條件、狀態轉移規律以及輸出。
(3)用三個“always”模塊來描述狀態機,其中一個“always”模塊用來描述同步時序狀態轉移,一個“always”模塊用來判斷邏輯狀態轉移條件、狀態轉移規律,另一個“always”模塊用來描述狀態的輸出。
一般FSM的設計多采用后兩種方法進行描述。因為這兩種方法相比第一種方法來說,便于閱讀、理解和維護,更重要的是利于綜合器優化代碼。在第二種方法的描述中,狀態的輸出采用組合邏輯實現,但組合邏輯很容易產生毛刺。第三種描述方法與第二種相比,關鍵在于根據狀態轉移規律,在上一狀態根據輸入條件判斷出當前狀態的輸出,從而在不插入額外時鐘節拍的前提下,實現寄存器輸出。
2.狀態機的編碼
狀態機編碼主要有二進制編碼、格雷編碼和一位獨熱編碼等方式。
(1)二進制編碼。二進制編碼采用普通的二進制數表示每個狀態。例如,有四個狀態state0、state1、state2、state3,其二進制編碼分別對應的碼字為00、01、10、11。但二進制編碼的缺點是相鄰狀態發生跳變時,有可能多個比特位同時發生變化。例如,(01→10)有兩位比特發生變化。這樣容易產生毛刺,引起狀態誤跳的現象。
(2)格雷編碼。若將上述四個狀態(state0、state1、state2、state3)的編碼改為00、01、11、10,則這種編碼就為格雷編碼。采用格雷編碼的好處就是相鄰狀態發生跳變時,只有一位比特位發生變化。這樣就減少了毛刺的產生。
(3)一位獨熱編碼。一位獨熱編碼指采用n位二進制數(n位觸發器)來編碼具有n個狀態的狀態機。例如,四個狀態state0、state1、state2、state3,其一位獨熱編碼分別對應的碼字為0001、0010、0100、1000;八個狀態分別為state0、state1、state2、state3、state4、state5、state6、state7,其一位獨熱編碼分別對應的碼字為8'b00000001、8'b00000010、8'b00000100、8'b00001000、8'b00010000、8'b00100000、8'b01000000、8'b10000000。獨熱編碼的最大優勢在于狀態比較時僅僅需要比較一個比特位,從而在一定程度上簡化了比較邏輯,減少了毛刺產生的概率。由于CPLD更多地提供組合邏輯資源,而FPGA更多地提供觸發器資源,所以CPLD多使用二進制編碼或格雷碼,而FPGA多使用獨熱編碼。另一方面,對于小型設計使用二進制和格雷編碼更有效,而大型狀態機使用獨熱編碼更高效。
3.實例說明
圖5.6為一個Moore型狀態機轉換圖,共有4個狀態:state0、state1、state2、state3,初始狀態為state0,每個狀態下的輸出分別為out=001,out=010,out=100,out=111。圖5.6狀態轉換圖 5.4按鍵抖動的消除方法
按鍵開關是電路中的主要器件之一。在數字電路中,判斷一個按鍵是否被按下,是根據開關給出的高低電平來確定的。大多數按鍵開關采用的是機械式開關結構。機械式開關的核心部件為彈性金屬簧片,因而在開關切換的瞬間會在接觸點出現來回彈跳的現象。對于靈敏度比較高的電路,這種彈跳現象必然會引起高低電平信號的來回跳動,這種現象稱為按鍵的抖動現象。按鍵開關可分為低電平有效和高電平有效,本節都以低電平有效進行講解。圖5.7給出的是未消抖和消抖后的按鍵信號的對比圖。圖5.7未消抖和消抖后的按鍵信號的對比圖按鍵開關按動的次數是根據按鍵信號的高低電平跳動的次數來判斷的。但由于抖動信號的存在,開關按動的次數就變成了未知數。這樣一來,按鍵信號就必須進行消抖。在數字電路設計中消抖的方法很多,但大致可根據開關因素和人為因素來進行消抖。
1.根據按鍵開關抖動的特性進行消抖
機械開關的抖動存在三種情況:按下時有抖動,松開時也有抖動;按下時有抖動,松開時無抖動;按下時無抖動,松開時有抖動。機械開關的抖動波形、抖動次數、抖動時間都是隨機的,并不是每次都會產生抖動。不同開關的最長抖動時間也不同。抖動時間的長短和機械開關特性有關,一般為5~10ms。但是,某些開關的抖動時間長達20ms,甚至更長。所以,在具體設計中要具體分析,根據實際情況來調整設計。
由按鍵開關這一抖動特性,我們可以用采樣信號對開關的信號進行采樣,這樣可以濾除抖動信號。下面的例子以5ms為采樣周期。
2.根據按鍵時間進行消抖
根據一般人按動按鍵的速度小于10Hz(每秒小于10次)來判斷,按鍵按下去的時間將大于100ms。若以占空比50%來計算,則按鍵按下的時間大于50ms。根據這種規律我們認為,按鍵按下的時間小于50ms的為抖動信號,按鍵按下的時間大于50ms的為按鍵信號。由此以50ms的采樣周期信號對按鍵信號進行采樣,就可以把按鍵按
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代理創業合同協議書模板
- 買賣鋁制品合同協議書
- 土地買賣居間合同協議書
- 企業信用報告-安徽兆峰膠業有限公司
- 2025年拉桿球頭項目投資可行性研究分析報告
- 2025年貴州重點項目-威寧松油加工項目可行性研究報告
- 解聘合同協議書百度
- 生物學科跨學科融合計劃
- 買賣舊方木合同協議書
- 湘繡工藝品企業以數字化推進轉型升級策略制定與實施手冊
- 無創血糖儀行業營銷策略方案
- 答案-國開電大本科《當代中國政治制度》在線形考(形考任務一)試題
- 運用PDCA降低留置尿管相關尿路感染課件
- 國際經貿新形勢下我國外貿高質量發展的挑戰及對策
- 數據治理咨詢項目投標文件技術方案
- 腫瘤標志物的免疫檢驗(免疫學檢驗課件)
- 煙臺市芝罘區2022-2023學年數學五下期末調研模擬試題含答案
- 交通協管員外包服務方案
- 外科學研究進展智慧樹知到答案章節測試2023年浙江中醫藥大學
- 醫院護士落實VTE預防措施不規范原因分析品管圈魚骨圖
- 國家開放大學《人文英語4》邊學邊練參考答案
評論
0/150
提交評論