沈祖斌 鄒光毅
(江漢大學數學與計算機科學學院,湖北 武漢430056)
目前國內數字邏輯課程的教學內容多是基于SSI、MSI等器件進行分析和設計,采用的是經典的數字邏輯設計方法,即用真值表、卡諾圖、狀態轉換圖、狀態轉換表、狀態方程、時序圖、邏輯圖和邏輯函數表達式等方法,來分析和設計數字邏輯系統。顯然,對于較復雜的數字系統,因其輸入變量數、輸出函數變量數和狀態數的急劇增加,再使用上述這種傳統方法進行分析和設計難以適用,甚至根本無法進行。數字邏輯課程的實驗環節也是基于標準SSI,MSI芯片的所謂硬實驗臺實驗室(Hardware-based Laboratory),這種實現臺不易做成開放性,實驗準備,實驗內容和實驗課安排都不靈活,實驗內容和效果也受到所供SSI,MSI芯片的限制。如今,數字化的概念已深入到各個領域,幾乎絕大多數系統已不是簡單幾個邏輯變量就能完全描述的。然而目前在專門講授數字系統設計基礎理論和方法的數字邏輯課程中,絕大多數高校仍然是沿用了幾十年不變的老方法,顯然已遠遠落后于時代的要求,必須加以改革創新。
VHDL的方法克服了傳統方法的弱點,與傳統方法相比有幾處根本優點,設計者可以在VHDL描述模型建立之后馬上用仿真手段來驗證系統功能是否滿足要求。這種方法還可以免去傳統方法的許多繁雜的試湊等耗時勞動(設計瓶頸),因而減少設計時間,降低設計難度,避免了由于人工試湊設計常容易發生的錯誤。利用各種EDA工具,可自動的將一個可綜合的設計在給定的具體器件上進行門級實現。而且,用這種方法系統整體指標往往容易實現,而傳統的方法則不然。這種方法其主要設計文件是用VHDL語言編寫的源程序,而不是電路原理圖,顯然傳統硬件電路設計最后形成的主要文件是電路原理圖,它與設計的器件和技術有關,不易設計文檔的復用。用VHDL語言設計系統硬件電路,主要設計文件是用VHDL語言編寫的源程序,以此作為歸納文件有很多好處:首先,資料量小,便于保存;其次是可繼承性好,即設計其它硬件電路時可以調用文件中的某些庫、進程和過程等描述某些局部硬件電路的程序;第三是閱讀方便,很容易在程序中看出某一硬件電路的工作原理和邏輯關系,而閱讀電路原理圖,推知其工作原理都需要較多的硬件知識和經驗,而且看起來也不夠一目了然。VHDL還有一個重要的特點就是設計描述與器件無關(without referenec to specific hardware),顯然這是基于SSI、MSI等器件進行分析和設計無法做到的,設計者能專注其設計,而且在EDA綜合工具的配合下支持自頂向下的設計。
采用VHDL的方法,在實驗環境上也把基于硬件的實驗室改變成基于軟件的實驗室(Software-based Laboratory)即軟實驗臺,直接在VHDL仿真器中驗證實驗結果的正確性,根本克服了硬實驗臺的不足,易于實現實驗的開放性和網絡教學模式。
VHDL的方法是順應迅速發展的通訊技術、電子測量技術、自動化控制等技術的需要而發展起來的,它使硬件軟件化變為現實,使大規模和超大規模集成電路的設計向標準化、自動化的方向邁進了一大步。無疑,傳統的設計方法已經遠遠落后,國內電子行業已逐漸將VHDL硬件描述語言應用于電子系統設計中。為了避免我們的教學內容與電子技術發展脫節,增強人才的競爭能力,適應市場需要,將VHDL硬件描述語言引入數字邏輯的教學和實驗中,逐步對舊的教學模式和教學內容加以改革,勢在必行,也是時代的要求和科技發展的必然結果。
VHDL語言是目前廣泛流行的硬件描述語言之一,它起源于美國國防部超高速集成電路計劃,計劃公布后受到業界的普遍歡迎。1987年12月被IEEE正式批準為標準的硬件描述語言,并于1993年公布了修改后的IEEE最新標準。VHDL支持結構化的開發設計,因此一個大型的數字系統可以分成較小的子系統,許多人可在不同的子系統中同時進行開發工作。VHDL是通過元件例化語句來實現這一功能的。和其它高級語言一樣,VHDL是一種強類型語言,這使設計中的許多錯誤易于發現。VHDL允許設計者在不同的抽象層次里對系統進行行為描述及結構描述。VHDL有三種主要的建模描述風格:
算法描述(Algorithmic):即用順序語句來描述輸入輸出對應關系的算法,這種描述方式最初往往與實現硬件無關。
數據流描述(Dataflow):即用一組并行語句來描述數據在寄存器之間流動的建模方式。這種方式與實際硬件實際存在某種對應關系。
結構描述風格 (Structural):這是一種與硬件結構最近的描述方式,它通過文件的例化語句來實現。
下面用一個實例來說明采用VHDL語言設計一個四位可控的Johnson計數器,從中可以領略一下采用VHDL方法的風格和特點,此例所反映的設計過程也是筆者所指的軟實驗臺所包含的具體內容。設計模塊端口信號有:LEPT,左移控制;RIGHT,右移控制;STOP,停止計數控制;CLK,時鐘輸入端,Q3-Q0,計數器輸出端。設計采用VHDL輸入方式。該設計的VHDL代碼如下:

從上面的VHDL的設計代碼可見:VHDL的設計文檔由三大部分組成,即庫的聲明,端口說明和結構體設計描述。其中端口說明清晰的反映了所設計器件的輸入輸出性質,在結構體設計描述中也清楚的描述了器件所完成的邏輯功能。這是傳統的采用SSI,MSI等標準規格器件設計所沒有的優點。

圖1 設計實例功能仿真圖
用VHDL仿真器驗證設計的正確性。參見圖1:設計實例功能仿真圖。
隨著CMOS技術的日趨成熟和EDA技術的產生和逐步完善,給數字系統的分析和設計方法帶來巨大的變革,EDA業界出現了將整個系統集成一個片IC芯片上的系統芯片 (System on a Chip,簡稱SOC)或稱片上系統的概念。系統芯片SOC與傳統集成電路IC芯片的設計思想是不同的,SOC是微電子設計領域的一場革命。它和集成電路的關系與當時集成電路與分離元器件的關系類似,其對微電子技術的推動作用不亞于自50年代末快速發展起來的集成電路技術。SOC是從整個系統的角度出發,把處理機制、模型算法、芯片結構、各層次電路直至器件的設計緊密結合起來,在單個(或少數幾個)芯片上完成整個系統的功能。它的設計必須采用VHDL的方法才能實現。在數字邏輯課程教學和實驗中,在向學生講授最基本的數字系統概念和方法時就引入VHDL的方法,其意義和目的也在于此。筆者并不贊成把數字邏輯和VHDL程序設計作為兩門課程分開來講授,盡管許多高校和教材都是這樣設計的。
[1]M.Morris Mano,etc.邏輯與計算機設計基礎[M].北京:機械工業出版社,2011.
[2]林明權,等,編.VHDL數字控制系統設計范例[M].北京:電子工業出版社,2003.
[3]Mark Zwolinski.Digital System Design with VHDL[M].USA:Pearson Education Limited,2000.
[4]歐陽星明,等,編.數字邏輯[M].武漢:華中科技大學出版社,2009.