摘 要: 本文從分析電氣信息類專業數字電子技術及其實驗教學現狀出發,根據數字集成電路設計領域發展趨勢和工程實踐要求,介紹了硬件描述語言在數字集成電路設計中的應用,并通過兩個設計實例進一步說明了其分類、特點和差異。
關鍵詞: 硬件描述語言 verilog HDL VHDL
1.引言
數字電子技術是電氣信息類專業一門重要的技術基礎課程,既具有一定的理論性,同時作為一門技術課程又有相當強的實踐性。因此,我們必須為理論的講述配置一定的實驗項目。目前實驗項目的組織有兩種途徑:一是采用原來傳統的小規模(SSI)或中規模集成電路(MSI)為單元構建實驗項目;二是以大規模(LSI)可編程CPLD/FPGA芯片為平臺,利用專門的硬件描述語言來實現。
2.現狀與需求
目前,在許多本科院校的數字電子技術課程實驗教學和數字電路的設計中,仍采用傳統的小規模(SSI)或中規模集成電路(MSI)為單元來構建和設計。這種思路已經不能適應教學和行業發展趨勢的需要。它主要有如下幾個方面的原因:一是實驗室必須為每一個實驗項目獨立地準備實驗器材,而且要保證實驗元件的正確性和可靠性,這是一件很費時費力的工作,同時一旦有學生操作失誤,芯片就有可能燒壞,從而浪費資源;二是目前的大學生電子設計大賽所設計的數字系統設計和一些接口電路已經涉及和要求掌握在大規模和超大規模可編程芯片基礎上設計復雜的數字電路;三是目前隨著微電子技術和計算機技術的飛速發展,工程中已經廣泛采用以CPLD/FPGA為基礎設計數字集成電路,用軟件的方法設計硬件電路已經是行業的需要。
為此,有必要在課堂教學中引入硬件描述語言用以設計數字集成電路,并設置相應的實驗項目以掌握硬件描述語言和熟悉相關開發工具。
3.硬件描述語言在數字電路設計中的應用
3.1硬件描述語言簡介[1]
一般的硬件描述語言可以在三個層面上描述電路,其層次由低到高依次為門電路級、RTL級和行為級。任何一種硬件描述語言都要轉換成門電路級才能被布線器所接受。綜合的方向是由高到底:行為級→RTL級→門電路級。
3.2硬件描述語言分類及主要差異
目前主流的描述語言有Verilog HDL和VHDL兩種,各有特點和優勢。Verilog HDL更適合RTL和門電路的描述,是一種較為低級的語言。其綜合過程只要經過RTL級→門電路級,故較為容易控制電路資源,常用在專業的集成電路設計上。而VHDL語言則更適合行為級和RTL級的描述,因此其綜合過程通常要經過行為級→RTL級→門電路級的轉換。[2]
同時,Verilog HDL語言具有C語言的描述風格,是一種較為容易掌握的語言。VHDL語言入門較難,但熟悉后設計效率比Verilog HDL要高。
3.3硬件描述語言在數字電路設計中的應用舉例
譯碼器是數字電路中應用最為廣泛的中規模集成電路,常用于設計接口電路和擴展I/O口。下面是用VHDL語言來描述一個3—8譯碼器的例子。[3]
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;—IEEE庫說明
ENTITY decoder IS
PORT(A:IN STD_LOGIC_VECTOR(2 DOWNTO 0);—實體說明,輸入三位地址,高電平有效
S:IN STD_LOGIC;—使能信號,高電平有效
Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));—輸出八個譯碼信號,高電平有效
END decoder;
ARCHITECTURE arch OF decoder IS—結構體描述
SIGNAL SEL:STD_LOGIC_VECTOR(3 DOWNTO 0);—敏感列表
BEGIN
SEL(0)<=S;
SEL(1)<=A(0);
SEL(2)<=A(1);
SEL(3)<=A(2);
WITH SEL SELECT
Y<=\"00000001\"WHEN\"0001\",—功能描述
\"00000010\"WHEN\"0011\",
\"00000100\"WHEN\"0101\",
\"00001000\"WHEN\"0111\",
\"00010000\"WHEN\"1001\",
\"00100000\"WHEN\"1011\",
\"01000000\"WHEN\"1101\",
\"10000000\"WHEN\"1111\",
\"11111111\"WHEN ORTHERS,
END arch;
譯碼器種類繁多,輸入輸出電平有效值要求高低不同,在此我們只需稍改功能描述中的取值即可,非常方便。因此修改教學內容是非常方便的。不難看出內部結構比較復雜的譯碼器用VHDL語言描述就顯得非常簡潔易懂。其實一般較為復雜的器件比較適合用VHDL來描述,在RTL級和行為級上進行描述。
D觸發器是時序電路的基礎,是數字系統的基本單元。下面是利用Verilog HDL描述一個異步復位的D觸發器。
module DFF(q,qb,d,clk,clr);模塊名和端口列表
output q,qb;//端口輸入輸出說明,輸出端q和反相qb
input d,clk,clr;//數據輸入端d,時鐘端clk和復位端clr
reg q;端口類型說明
wire qb,d,clk,clr;
assign qb=!q;//互非輸出
always @(posedge clk or negedge clr)//異步復位時的敏感表
if(!clr)
q<=0;//低電平復位信號有效是清零
else
q<=d;
endmodule
將敏感列表稍加改動即可變為同步復位的D觸發器。像觸發器這樣的時序器件用Verilog HDL描述是比較方便的。Verilog HDL語言對一些電氣特性、時延特性的描述有非常強大的描述能力。
4.結論
以可編程器件為基礎,利用硬件描述語言進行數字集成電路設計已經是業界不可避免的發展趨勢。這不僅優化了教學資源和設計環境,而且提高了設計效率,對切實提高學生動手能力和適應市場以及技術發展的要求起著重要作用。
參考文獻:
[1]潘松,王國棟.VHDL實用教程[M].成都:電子科技大學出版社,2000.
[2]夏宇聞.復雜數字電路與系統的Verilog HDL設計技術[M].北京航空航天大學出版社,2002.
[3]高吉祥.數字電子技術[M].北京:電子工業出版社,2007.
[4]江國強.EDA技術與應用[M].北京:電子工業出版社,2004.