程佳佳,賈俊霞(重慶科創(chuàng)職業(yè)學院,重慶 402160)
基于 CPLD的VHDL語言設計優(yōu)化
程佳佳,賈俊霞
(重慶科創(chuàng)職業(yè)學院,重慶402160)
摘要:通過對CPLD器件的介紹以及VHDL語言特點的闡述,本文描述和分析了在邏輯電路編程中常見的毛刺信號電路并給出了相應的消除方法、程序和仿真波形。
關(guān)鍵詞:語言;CPLD器件;設計
由于市場產(chǎn)品的需求和市場競爭的促進,新的可編程邏輯器件不斷涌現(xiàn),新器件的主要特點是向超高速、高密度、低功耗和低電壓等方向發(fā)展,含多種專用端口和附加功能模塊的FPGA不斷涌現(xiàn)。目前新器件的邏輯規(guī)模已達數(shù)百萬至千萬門級,工作頻率也越來越高,功耗不斷降低,出現(xiàn)了成為零功耗的CPLD器件。隨著可編程邏輯器件和開發(fā)技術(shù)不斷發(fā)展,EDA技術(shù)已經(jīng)滲透到各行各業(yè)的各個領域,而CPLD器件正是集成電路設計者首選。
CPLD是復雜可編程邏輯器件,它和簡單PLD都是乘積項結(jié)構(gòu)器件,也就是由可編程的與陣列和或陣列組成的。簡單PLD由于陣列規(guī)模小、功能弱、編程不便,基本被淘汰。CPLD器件由于進行了擴展,內(nèi)部結(jié)構(gòu)更加復雜,可提供更多的乘積項,因而構(gòu)成復雜的邏輯函數(shù)。
VHD L全名 Very-H igh-SpeedIntegratedCircuitHardware D esc riptionLanguage,即超高速集成電路的硬件描述語言,在電子工程技術(shù)等相關(guān)領域,事實上VHD L已成為通用硬件描述語言。1995年我國國家技術(shù)監(jiān)督局指定的CAD通用技術(shù)規(guī)范推薦VHD L作為我國電子設計自動化硬件描述語言的國家標準。
所謂硬件描述語言,VHDL具有很強的電路描述能力和建模能力,能多個層次對數(shù)字系統(tǒng)進行建模和描述。它主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,應用VHD L進行工程設計具有自動化設計程度高、與具體硬件電路無關(guān)和與設計平臺無關(guān)的特性,系統(tǒng)移植性強和修改方便等優(yōu)點。因此VHDL成為了CPLD編程最常用的語言工具。
而正因此,VHDL程序無法精確到電路的門級電路結(jié)構(gòu),無法精確硬件電路的動作。因而導致出現(xiàn)競爭冒險(具體表現(xiàn)即為毛刺現(xiàn)象),嚴重者會導致系統(tǒng)的嚴重故障。本文以下就最易出現(xiàn)毛刺信號的電路作出詳細的分析以及給出對應的優(yōu)化設計方法。
在數(shù)字邏輯電路中,當輸入信號的狀態(tài)改變時,輸出端可能會出現(xiàn)不正常的干擾信號,是電路產(chǎn)生錯誤的輸出,這種現(xiàn)象稱為競爭-冒險現(xiàn)象。產(chǎn)生競爭冒險現(xiàn)象的原因主要是門電路的延遲。在VHDL設計中,電路的行為很容易用各種功能描述語句描述,但是門級電路由軟件自動綜合布局。因此由于信號在CPLD的內(nèi)部走線和通過邏輯單元時造成的延遲及競爭冒險現(xiàn)象在CPLD的設計中是不可避免的。
知道了毛刺產(chǎn)生的條件,就可以通過改變設計,破壞其條件來減少毛刺的發(fā)生。還可以對電路進行改進,以消除毛刺對系統(tǒng)的影響。濾波法和添加冗余項法在很多數(shù)字電子技術(shù)的教科書中都有介紹,此處不再贅述。也曾有人提出了采樣法和利用格雷碼減少同時變化信號數(shù)量的方法,都是不錯的方法。但是我們也可以通過VHDL程序本身去消除毛刺。
這種方法是從VHDL語言入手,找出毛刺產(chǎn)生的根本原因,改變程序本身,產(chǎn)生滿足要求的功能模塊,來代替原有的邏輯功能塊。如例1中的由于信號的不同步而導致了毛刺,弄清楚了這個原因,則很容易通過同步輸入信號的方法而消除毛刺。解決方案如下:
process(clk)
begin
if clk’event and clk=’1’then
y<=(a and b) or (c and d);
end process;
而在VHDL語言中,數(shù)據(jù)的載體即數(shù)據(jù)對象包括常量,變量和信號。變量和信號可以實現(xiàn)賦值。但是信號是具有實際物理意義的,可以理解為實際電路連線中的電信號的流動,因此信號的賦值并不是立即的,而是存在一定的延時。而下面的程序則是因為VHDL語言中賦值語句本身的語言特性而導致了延時與毛刺現(xiàn)象。
例2
Entity maoci_1 is
Port(clk: in std_logic;
Co:out std_logic);
End;
Architecture one of maoci_1 is
signals:std_logic;
Signal q:std_logic_vector(3 downto 0):="0000";
Begin
Process(clk)
Begin
If s='1' then q<="0101" ;
Elsif clk'event and clk='1' then q<=q-1;
End if;
End process;
s<=q(3);
co<=q(2);
End one;
例2仿真波形毛刺。分析可知例2程序中是由于s值代入的延時而造成了q的不定狀態(tài)。因此修改設計,去掉信號s而直接對q預判,消除毛刺。
毛刺信號的出現(xiàn)經(jīng)常會影響到整個邏輯電路的穩(wěn)定性,因此判斷邏輯電路中判斷毛刺是否存在以及如何消除毛刺信號將是設計人員要長期研究的課題。本文中的方法能有效的消除毛刺,可供VHDL編程設計人員參考。
參考文獻:
[1]閻石.數(shù)字電子技術(shù)基礎(第五版)[J].高等教育出版社,1983(4).
[2]潘松,王國棟.VHDL實用教程〔M〕.電子科技大學出版社,2000.(1).
[3]崔建明.電工電子EDA仿真技術(shù)[M].高等教育出版社, 2004.
[4]李衍編.EDA技術(shù)入門與提高王行[M].西安電子科技大學出版社,2005.
[5]王鳳英,崔國瑋.計數(shù)器的VHDL設計與實現(xiàn) [M]. 現(xiàn)代電子技術(shù),2007(09).