《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 數(shù)字系統(tǒng)設(shè)計(jì)中VHDL語言設(shè)計(jì)問題探討
數(shù)字系統(tǒng)設(shè)計(jì)中VHDL語言設(shè)計(jì)問題探討
謝正光
摘要: 從描述方法、設(shè)計(jì)規(guī)則、時(shí)序等方面分析了用硬件描述語言VHDL在EDA設(shè)計(jì)中容易出現(xiàn)問題的原因,并提出了相應(yīng)的解決方案。
關(guān)鍵詞: 開發(fā)工具 VHDL EDA
Abstract:
Key words :

  摘  要: 從描述方法、設(shè)計(jì)規(guī)則、時(shí)序等方面分析了用硬件描述語言VHDLEDA設(shè)計(jì)中容易出現(xiàn)問題的原因,并提出了相應(yīng)的解決方案。
  關(guān)鍵詞: VHDL語言  數(shù)字系統(tǒng)設(shè)計(jì)  問題

   VHDL語言作為一個(gè)系統(tǒng)設(shè)計(jì)語言的工業(yè)標(biāo)準(zhǔn)已被廣大的硬件設(shè)計(jì)者所接受。但因其具有龐大、繁瑣以及易于出錯(cuò)的特性[1][2],且在實(shí)際設(shè)計(jì)過程中,每個(gè)設(shè)計(jì)工程師對(duì)語言規(guī)則、電路行為的理解程度和編程風(fēng)格不同,造成同樣的系統(tǒng)功能綜合出來的電路結(jié)構(gòu)往往大相徑庭,其電路的復(fù)雜程度和時(shí)延特性也差異較大,有時(shí)某些臃腫的電路還會(huì)產(chǎn)生難以預(yù)料的問題。因此,有必要對(duì)在VHDL設(shè)計(jì)中如何簡化電路結(jié)構(gòu)及優(yōu)化電路設(shè)計(jì)的問題進(jìn)行深入探討。
1   設(shè)計(jì)問題探討
1.1 描述方法對(duì)電路結(jié)構(gòu)的影響

  用VHDL語言進(jìn)行電路設(shè)計(jì),其最終綜合出的電路的復(fù)雜程度除取決于該設(shè)計(jì)所要求功能的難易程度外,還受設(shè)計(jì)工程師對(duì)電路描述方法和設(shè)計(jì)規(guī)則理解程度的影響。最常見的使電路復(fù)雜化的原因之一是設(shè)計(jì)中存在許多本不必要的類似鎖存器的結(jié)構(gòu)而導(dǎo)致電路復(fù)雜、工作速度低,且由于時(shí)序問題而導(dǎo)致不可預(yù)料的后果。
  VHDL語言中引入寄存器的是Wait和If語句。所以如果要描述一個(gè)組合電路和時(shí)序電路混合的系統(tǒng),可以將描述時(shí)序的部分放在具有邊沿檢測條件的If或Wait語句的進(jìn)程中,而將描述組合電路的語句放在普通進(jìn)程中。在此普通進(jìn)程中,應(yīng)盡量使用When...Else來代替If結(jié)構(gòu)或If語句中必須帶有的Else。典型電路是FSM(有限狀態(tài)機(jī))電路,建議用3個(gè)進(jìn)程來描述。具體如下:

1.2 毛刺信號(hào)
  任何組合電路都可能是潛在毛刺信號(hào)的發(fā)生器。當(dāng)毛刺信號(hào)影響后續(xù)電路時(shí),整個(gè)設(shè)計(jì)就只能宣告失敗。因此,當(dāng)后續(xù)電路對(duì)組合電路輸出的毛刺敏感時(shí),最好的辦法是將此輸出進(jìn)行鎖存后再輸出到下一級(jí),如圖1所示。

 

1.3 時(shí)  序
  在原始設(shè)計(jì)電路中,應(yīng)充分考慮在每一步時(shí)序上留有如圖2所示的充分裕量,以避免由于電壓、溫度和工藝等變化出現(xiàn)時(shí)序上的問題。


1.4 時(shí)鐘電路
  若時(shí)鐘電路設(shè)計(jì)不當(dāng),在環(huán)境因素(如溫度、電壓等)變化時(shí),會(huì)導(dǎo)致電路邏輯混亂。時(shí)鐘電路設(shè)計(jì)過程中,建議盡可能使用如圖3所示的全局時(shí)鐘,少用門控時(shí)鐘,不用多級(jí)時(shí)鐘、級(jí)聯(lián)時(shí)鐘和多時(shí)鐘網(wǎng)絡(luò)。使用門控時(shí)鐘時(shí)要求門控時(shí)鐘只能由單個(gè)的“與門”或“或門”構(gòu)成,且門的輸入信號(hào)中只能有1個(gè)信號(hào)作為時(shí)鐘信號(hào)。最好的辦法是將門控時(shí)鐘改為全局時(shí)鐘,以改善設(shè)計(jì)電路的可靠性,如圖4、圖5所示。并且用控制門控時(shí)鐘的控制信號(hào)作為觸發(fā)器的使能信號(hào)或用其控制輸入數(shù)據(jù)。


1.5 異步邏輯
  EDA(Electronics Design Automation)設(shè)計(jì)中,由EDA系統(tǒng)自動(dòng)完成布線。特別是在FPGA設(shè)計(jì)中,為了均衡邏輯塊的資源,信號(hào)在整個(gè)芯片內(nèi)部經(jīng)過的門數(shù)可能并非與邏輯表達(dá)式中所期望的一致,有時(shí)甚至無法正確估計(jì)某個(gè)信號(hào)的延時(shí)。因而常規(guī)的諸如利用增加冗余項(xiàng)或增加慣性延時(shí)環(huán)節(jié)來消除異步電路帶來的冒險(xiǎn)方法均不一定能起作用。所以數(shù)字系統(tǒng)設(shè)計(jì)中盡量少用異步電路,或用選通脈沖在信號(hào)作用時(shí)間上加以控制來避開產(chǎn)生冒險(xiǎn)的尖峰。
1.6 異步輸入
  許多輸入要求各異步系統(tǒng)之間進(jìn)行同步通信,或者同步系統(tǒng)需要異步輸入控制。如果異步輸入不能滿足建立時(shí)鐘和保持時(shí)鐘的限制,則會(huì)導(dǎo)致受控的同步系統(tǒng)出現(xiàn)邏輯混亂。
  如果是寄存器的異步置位或清零端,最好用全局的置位或清零控制信號(hào)驅(qū)動(dòng);對(duì)于其他控制輸入可以插入D觸發(fā)器來解決異步輸入不穩(wěn)定的問題。
2  結(jié)  論
  通過以上討論可知,用VHDL語言進(jìn)行電路設(shè)計(jì)時(shí),涉及到VHDL語言的使用方法和對(duì)設(shè)計(jì)的理解程度。因此在編程前首先要對(duì)整個(gè)設(shè)計(jì)進(jìn)行較深入的了解,科學(xué)地設(shè)計(jì)規(guī)劃,在進(jìn)行具體設(shè)計(jì)時(shí)應(yīng)注意以下問題:
  (1)保證時(shí)鐘無毛刺,盡量利用全局時(shí)鐘,少用門控時(shí)鐘。(2)盡量使用全局置位復(fù)位信號(hào)。(3)寄存所有對(duì)毛刺敏感的組合輸出,組合電路復(fù)雜時(shí)可采用“流水”技術(shù)。(4)同步所有異步輸入信號(hào),盡量不用異步電路。(5)對(duì)同步時(shí)序電路應(yīng)消除“滯留”狀態(tài)。(6)為每一步時(shí)序留有充分的裕度等。
參考文獻(xiàn)
1   IEEE Standard VHDL Language Reference Module.IEEE,Std 1076-1993.1993
2   IEEE Standard VHDL Mathermatical Packages.IEEE,Std 1076.2-1996.1996
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。