劉文君
摘要:文章介紹了VHDL語言及其基本特點(diǎn),討論了VHDL語言在數(shù)字電路設(shè)計(jì)中的諸多優(yōu)點(diǎn),通過十位計(jì)數(shù)器的實(shí)例介紹了在MAX+plusⅡ環(huán)境下運(yùn)用VHDL語言設(shè)計(jì)實(shí)際電路的具體方法和步驟。結(jié)果表明VHDL語言應(yīng)用于數(shù)字電路仿真的靈活性及直觀性。
關(guān)鍵詞:VHDL 數(shù)字電路 MAX+plusⅡ 仿真
0 引言
VHDL是70年代末和80年代初,由美國國防部為超高速集成電路VHSIC(Very Hight Speed Intergrated Circuit)計(jì)劃提出的硬件描述語言VHDL(VHSIC Hardware Description Language)。1983年7月,由Intermetrics公司和Texas Instruments公司組成開發(fā)小組,承擔(dān)了提出語言版本并開發(fā)其軟件環(huán)境的任務(wù)。其目的在于所開發(fā)的硬件描述語言具有功能強(qiáng)大、嚴(yán)格、可讀性好、通用性好、移植性好等特點(diǎn),避免重復(fù)勞動(dòng),省時(shí)省力并能降低開發(fā)電子新產(chǎn)品的費(fèi)用。利用計(jì)算機(jī)輔助設(shè)計(jì)自上而下的逐層完成相應(yīng)的描述,并與大規(guī)??删幊唐骷嘟Y(jié)合,使設(shè)計(jì)出的電路系統(tǒng)速度更快、體積更小、重量更輕、功耗更小、穩(wěn)定性更高,大大提高了產(chǎn)品的競(jìng)爭(zhēng)能力。VHDL語言已日益成為一種通用的硬件設(shè)計(jì)交換媒介, MAX+PLUSⅡ計(jì)算機(jī)輔助工程軟件,提供了全面的邏輯設(shè)計(jì)能力,從編輯、綜合、布線到仿真、下載驗(yàn)證一氣呵成,十分方便。
1 VHDL語言特點(diǎn):
傳統(tǒng)的設(shè)計(jì)方法是基于中小規(guī)模集成電路器件進(jìn)行設(shè)計(jì)(如74系列及其改進(jìn)系列、CC4000系列、74HC系列等都屬于通用型數(shù)字集成電路),而且是采用自底向上進(jìn)行設(shè)計(jì):①首先確定可用的元器件;②根據(jù)這些器件進(jìn)行邏輯設(shè)計(jì),完成各模塊;③將各模塊進(jìn)行連接,最后形成系統(tǒng);④而后經(jīng)調(diào)試、測(cè)量觀察整個(gè)系統(tǒng)是否達(dá)到規(guī)定的性能指標(biāo)。
VHDL與電路圖設(shè)計(jì)電路的方式不同,和電路圖設(shè)計(jì)方式相比,具有以下特點(diǎn):①易于修改;②設(shè)計(jì)能力更強(qiáng);③VHDL語言很方便:獨(dú)立于器件設(shè)計(jì);相同的程序代碼可以用于不同廠家生產(chǎn)的器件。④VHDL具有電路仿真與驗(yàn)證功能,仿真結(jié)果直觀、形象。
2 VHDL程序的基本結(jié)構(gòu):
VHDL程序的基本結(jié)構(gòu)可分為:①LIBRARY和PACHAGE聲明區(qū);②ENTITY定義區(qū);③ARCHITECTURE定義區(qū);④CONFIGURATION定義區(qū)。
2.1 LIBRARY和PACKAGE聲明區(qū):Library(庫)是用于存放預(yù)先編譯好的Package(程序包)。Package(程序包)中定義了基本的常數(shù),數(shù)據(jù)類型,元件及子程序等。作用:聲明在實(shí)體和結(jié)構(gòu)體定義中將用到的數(shù)據(jù)類型、元件或子程序等。
聲明格式:Library 庫名;Use 庫名. PACKAGE名.All;
2.2 ENTITY定義區(qū):ENTITY(實(shí)體)用于定義電路的外觀,即I/O端口的類型和數(shù)量。
定義格式:Entity 實(shí)體名 is。Port(a:inbit;b:in bit;c:out bit);
End 實(shí)體名;其中a、b、c是端口名,in、out是端口模式,bit是數(shù)據(jù)類型。
2.3 ARCHITECTURE定義區(qū):定義了實(shí)體的實(shí)現(xiàn)。即電路的具體描述,說明電路執(zhí)行什么動(dòng)作或?qū)崿F(xiàn)功能。
定義格式:Architecture 結(jié)構(gòu)體名 of 實(shí)體名 is
[聲明語句;(內(nèi)部信號(hào)、變量、常數(shù),元件,子程序聲明)]
Begin并行描述語句;End 結(jié)構(gòu)體名;
2.4 CONFIGURATION定義區(qū):當(dāng)實(shí)體有多個(gè)結(jié)構(gòu)體時(shí),系統(tǒng)默認(rèn)實(shí)體選用最后一個(gè)結(jié)構(gòu)體,利用CONFIGURATION語句可以任意選擇采用哪一個(gè)結(jié)構(gòu)體。
定義格式:Configuration 配置名 of 實(shí)體名 is
for選用的結(jié)構(gòu)體名end for;end configuration 配置名;
3 十進(jìn)制計(jì)數(shù)器的VHDL程序設(shè)計(jì):
下面以十進(jìn)制計(jì)數(shù)器為例簡(jiǎn)單的介紹一下,用VHDL語言進(jìn)行電路設(shè)計(jì)的具體過程。
3.1 功能:此十進(jìn)制計(jì)數(shù)器的有一時(shí)鐘使能輸入端ENA,用于鎖定計(jì)數(shù)值。當(dāng)高電平時(shí)計(jì)數(shù)允許,低電平時(shí)禁止計(jì)數(shù)。
3.2 語言程序設(shè)計(jì):library ieee;use ieee.std_logic_1164.all;→library聲明區(qū);entity cnt10 isport(clk,clr,ena:in std_logic;—計(jì)數(shù)、清零、計(jì)數(shù)使能信號(hào);co:out std_logic;—計(jì)數(shù)進(jìn)位;cq:out integer range 0 to 15);—4位計(jì)數(shù)結(jié)果輸出end cnt10;entity定義區(qū)architecture behav of cnt10 is signal cqi:integer range 0 to 15;begin process(clk,clr,ena)begin if clk=‘1 then cqi<=0;—計(jì)數(shù)器異步清零elsif clk'event and clk=‘1 then if ena='1' then if cqi<9 then cqi<=cqi+1;—等于9,則清零else cqi<=0;end if;end if;end if;end process;process(cqi)beginif cqi=9 then co<=‘1;—進(jìn)位輸出else co<=‘0;end if;end process;cq<=cqi;end behav;architecture定義區(qū)
3.3 VHDL語言的開發(fā)環(huán)境:以MAX+plusⅡ作為運(yùn)行環(huán)境,支持原理圖、VHDL和Verilog語言文本文件,以及波形與EDIF等格式的文件作為設(shè)計(jì)輸入,并支持這些文件的任意混合設(shè)計(jì)。MAX+plusⅡ具有門級(jí)仿真器,可以進(jìn)行功能仿真和時(shí)序仿真,能夠產(chǎn)生精確的仿真結(jié)果。在MAX+plusⅡ環(huán)境下用VHDL語言設(shè)計(jì)電路的全過程包括以下幾個(gè)步驟:①源文件的編輯:點(diǎn)擊“新建文件夾”在對(duì)話框中選擇“Text Editor file ”,按 “OK”按鈕,即選中了文本編輯方式。然后將上述程序輸入。輸入完畢后,選擇菜單“File→Save”,出現(xiàn)對(duì)話框,然后在“File Name”框中輸入文件名,然后按“OK”,文件即被存入。②系統(tǒng)的編譯:在編譯系統(tǒng)文件F_ADDER.GDF前,需要設(shè)置該文件為頂層文件Project。選擇菜單“File”→“Project”→“Set Project to Current File”,當(dāng)前的工程即被設(shè)為F_ADDER。選擇“MAX+plusⅡ”→“Compiler”菜單,可運(yùn)行編譯器,檢驗(yàn)程序是否正確。③系統(tǒng)仿真:選擇菜單“File”→“New”,在對(duì)話框中選擇“Waveform Editor File”,按“OK”后將出現(xiàn)波形編輯器子窗口。選擇菜單“Node”→“Enter Nodes from SNF”,在出現(xiàn)的對(duì)話框中選擇“l(fā)ist”鍵,然后按“=〉”按鈕,在按下“OK”鍵,選中的信號(hào)將出現(xiàn)在波形編輯器中。編輯好輸入信號(hào)保存,再按下“MAX+plusⅡ”→“simulator”出現(xiàn)仿真結(jié)果。
CNT10的仿真波形如圖1:
該仿真波形,很直觀的將十位計(jì)數(shù)器的計(jì)數(shù)過程展現(xiàn)出來,同時(shí)也驗(yàn)證了vhdl程序設(shè)計(jì)的可實(shí)現(xiàn)性。④系統(tǒng)下載:程序設(shè)計(jì)成功后,就可以下載到芯片上進(jìn)行實(shí)驗(yàn)操作了。如果MAX+plusⅡ是安裝后第一次調(diào)用編程器,則MAX+plusⅡ講彈出對(duì)話框選擇型號(hào),以便調(diào)用正確的編程器驅(qū)動(dòng)程序。其選擇方法是啟動(dòng)“Programmer”,選菜單“Options”→“Hardware Setup”,在“Hardware Type”下拉欄中選“ByteBlaster”,按“OK”即可。用鼠標(biāo)雙擊編程器子窗口或者選擇“MAX+plusⅡ”→“Programmer”菜單,可調(diào)出編程器(Programmer)窗口。在將設(shè)計(jì)文件編程配置進(jìn)硬件芯片前,需連接好硬件測(cè)試系統(tǒng)。一切連接就緒后,方可按下編程器窗口中的“Configure”按鈕,無誤后,即可將所涉及的內(nèi)容下載到芯片中。下載成功后彈出的小窗口中顯示“Configuration Complete”。接下去就可以在實(shí)驗(yàn)系統(tǒng)上進(jìn)行實(shí)驗(yàn)驗(yàn)證。
4 小結(jié)
通過對(duì)十進(jìn)制計(jì)數(shù)器的VHDL的仿真實(shí)現(xiàn),簡(jiǎn)單的介紹了用VHDL語言進(jìn)行數(shù)字電路設(shè)計(jì)的方法、步驟,表明了VHDL在數(shù)字電子電路的設(shè)計(jì)中具有設(shè)計(jì)方法靈活、硬件描述能力強(qiáng)、仿真結(jié)果直觀等特點(diǎn)。隨著集成電路技術(shù)的高速發(fā)展,數(shù)字系統(tǒng)迅速朝著更高集成度、超小型化、高性能、高可靠性和低功耗的系統(tǒng)級(jí)芯片方向發(fā)展,從而使電路設(shè)計(jì)逐步向高層設(shè)計(jì)轉(zhuǎn)移。作為一種設(shè)計(jì)技術(shù),VHDL已成為數(shù)字電路設(shè)計(jì)時(shí)一種重要的方法,為我們的學(xué)習(xí)、工作提供了很大的幫助。
參考文獻(xiàn):
[1]曾繁泰,陳美金編著.VHDL程序設(shè)計(jì).清華大學(xué)出版社.2000.
[2]劉潤華,單亦先編著.電子設(shè)計(jì)自動(dòng)化.石油大學(xué)出版社.2001.9:35-41.
[3]譚會(huì)生,張昌凡編著.EDA技術(shù)與應(yīng)用.西安電子科技大學(xué)出版社.2001.
[4]王振紅編著.VHDL數(shù)字電路設(shè)計(jì)與應(yīng)用實(shí)踐教程.機(jī)械工業(yè)出版社.2003.6.
[5]潘松,王國棟編著.VHDL實(shí)用教程.清華大學(xué)出版社.2000.