文/方育紅,江漢大學數(shù)學與計算機科學學院
VHDL在數(shù)字邏輯設計課程實驗中應用
文/方育紅,江漢大學數(shù)學與計算機科學學院
VHDL語言是一種用于硬件電路設計的高級語言。它在80年代初期出現(xiàn),最初是由美國國防部開發(fā)出來供美國軍隊用來提高設計的可靠性和縮減開發(fā)周期的一種適用范圍較小的設計語言。作為一種硬件電路設計語言,VHDL在數(shù)字邏輯設計課程實驗的應用,發(fā)揮著十分重要的作用。
VHDL;數(shù)字邏輯設計;硬件描述語言
VHDL全名Very-High-Speed Integrated Circuit Hardware Description Language,誕生于1982年。1987年底,VHDL被IEEE和美國國防部確認為標準硬件描述語言 。自IEEE-1076(簡稱87版)之后,各EDA公司相繼推出自己的VHDL設計環(huán)境,或宣布自己的設計工具可以和VHDL接口。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標準的1076-1993版本,簡稱93版。VHDL作為IEEE的工業(yè)標準硬件描述語言,得到眾多EDA公司支持,在電子工程領域,已成為事實上的通用硬件描述語言。
VHDL主要用于描述數(shù)字系統(tǒng)的結構,行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風格以及語法是十分類似于一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設計就可以直接調用這個實體。這種將設計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設計的基本點。
VHDL具有功能強大的語言結構,可以用簡潔明確的源代碼來描述復雜的邏輯控制。它具有多層次的設計描述功能,層層細化,最后可直接生成電路級描述。VHDL支持同步電路、異步電路和隨機電路的設計,這是其他硬件描述語言所不能比擬的。VHDL還支持各種設計方法,既支持自底向上的設計,又支持自頂向下的設計;既支持模塊化設計,又支持層次化設計。
下面用一個實例來說明采用VHDL語言設計一個四位可控的Johnson計數(shù)器,從中可以領略一下采用VHDL方法的風格和特點,此例所反映的設計過程也是筆者所指的軟實驗臺所包含的具體內(nèi)容。設計模塊端口信號有:LEPT,左移控制;RIGHT,右移控制;STOP,停止計數(shù)控制;CLK,時鐘輸入端,Q3-Q0,計數(shù)器輸出端。設計采用VHDL輸入方式。該設計的VHDL代碼如下:
library IEEE;
use IEEE.std_logic_1164.all;
entity johnson is
port ( LEFT : in STD_LOGIC;
RIGHT : in STD_LOGIC;
STOP : in STD_LOGIC;
CLK : in STD_LOGIC;
Q : buffer STD_LOGIC_VECTOR (3 downto 0));
end johnson;
architecture johnson_arch of Johnson is
signal DIR: STD_LOGIC;
signal RUN: STD_LOGIC;
begin
process (CLK)
begin
if (CLK'event and CLK='1') then
if (RIGHT='0') then
DIR <= '0';
elsif (LEFT='0') then
DIR <= '1';
end if;
if (STOP='0') then
RUN <= '0';
elsif (LEFT='0' or RIGHT='0') then
RUN <= '1';
end if;
if (RUN='1') then
if (DIR='1') then
Q(3 downto 1) <= Q(2 downto 0);
Q(0) <= not Q(3);
else
Q(2 downto 0) <= Q(3 downto 1);
Q(3) <= not Q(0);
end if;
end if;
end if;
end process;
end johnson_arch;
從上面的VHDL的設計代碼可見:VHDL的設計文檔由三大部分組成,即庫的聲明,端口說明和結構體設計描述。其中端口說明清晰的反映了所設計器件的輸入輸出性質,在結構體設計描述中也清楚的描述了器件所完成的邏輯功能。這是傳統(tǒng)的采用SSI,MSI等標準規(guī)格器件設計所沒有的優(yōu)點。
VHDL學習過程中,應加強硬件概念的理解,沒有硬件概念或是硬件概念不強,在設計時,往往會將VHDL設計以軟件編程的方式來處理,而得出一些不可思議的結果。
作為一門硬件描述語言,VHDL幾乎可以用來描述現(xiàn)有的大型系統(tǒng)數(shù)字電路、算法以及其它設計。但是,限于目前綜合工具的水平,VHDL中的許多語法還不能支持,綜合時就無法達到如此精度,因此這條語句主要用來編寫測試激勵,而很少出現(xiàn)在設計實體中。類似的情況還有很多,目前VHDL設計使用的也只是整個標準中的一部分,這也正是VHDL的“可綜合子集”性質,它一定程度上限制了VHDL的廣泛應用,但是隨著綜合技術的發(fā)展,這種情況會逐漸得以改善,VHDL也將在各個領域中發(fā)揮出愈來愈重要的作用。
[1]任曉東等編著,CPLD/FPGA高級應用開發(fā)指南[M].北京:電子工業(yè)出版社,2003.
[2]李國麗等編著,EDA與數(shù)字系統(tǒng)設計[M].北京:機械工業(yè)出版社,2004.