傳統的硬件電路設計方法是采用自下而上的設計方法,即根據系統對硬件的要求,詳細編制技術規格書,并畫出系統控制流圖;然后根據技術規格書和系統控制流圖,對系統的功能進行細化,合理地劃分功能模塊,并畫出系統的功能框圖;接著就進行各功能模塊的細化和電路設計;各功能模塊電路設計、調試完成后,將各功能模塊的硬件電路連接起來再進行系統的調試,最后完成整個系統的硬件設計。采用傳統方法設計數字系統,特別是當電路系統非常龐大時,設計者必須具備較好的設計經驗,而且繁雜多樣的原理圖的閱讀和修改也給設計者帶來諸多的不便。
為了提高開發的效率,增加已有開發成果的可繼承性以及縮短開發周期,各ASIC研制和生產廠家相繼開發了具有自己特色的電路硬件描述語言(Hardware Description Language,簡稱HDL)。但這些硬件描述語言差異很大,各自只能在自己的特定設計環境中使用,這給設計者之間的相互交流帶來了極大的困難。因此,開發一種強大的、標準化的硬件描述語言作為可相互交流的設計環境已勢在必行。于是,美國于1981年提出了一種新的、標準化的HDL,稱之為VHSIC(Very High Speed Integrated Circuit) Hardware Description Language,簡稱VHDL。這是一種用形式化方法來描述數字電路和設計數字邏輯系統的語言。設計者可以利用這種語言來描述自己的設計思想,然后利用電子設計自動化工具進行仿真,再自動綜合到門級電路,最后用PLD實現其功能。
vhdl特點
與其他硬件描述語言相比,VHDL具有以下特點:
功能強大、設計靈活
VHDL具有功能強大的語言結構,可以用簡潔明確的源代碼來描述復雜的邏輯控制。它具有多層次的設計描述功能,層層細化,最后可直接生成電路級描述。VHDL支持同步電路、異步電路和隨機電路的設計,這是其他硬件描述語言所不能比擬的。VHDL還支持各種設計方法,既支持自底向上的設計,又支持自頂向下的設計;既支持模塊化設計,又支持層次化設計。
支持廣泛、易于修改
由于VHDL已經成為IEEE標準所規范的硬件描述語言,大多數EDA工具幾乎都支持VHDL,這為VHDL的進一步推廣和廣泛應用奠定了基礎。在硬件電路設計過程中,主要的設計文件是用VHDL編寫的源代碼,因為VHDL易讀和結構化,所以易于修改設計。
強大的系統硬件描述能力
VHDL具有多層次的設計描述功能,既可以描述系統級電路,又可以描述門級電路。而描述既可以采用行為描述、寄存器傳輸描述或結構描述,也可以采用三者混合的混合級描述。另外,VHDL支持慣性延遲和傳輸延遲,還可以準確地建立硬件電路模型。VHDL支持預定義的和自定義的數據類型,給硬件描述帶來較大的自由度,使設計人員能夠方便地創建高層次的系統模型。
獨立于器件的設計、與工藝無關
設計人員用VHDL進行設計時,不需要首先考慮選擇完成設計的器件,就可以集中精力進行設計的優化。當設計描述完成后,可以用多種不同的器件結構來實現其功能。
很強的移植能力
VHDL是一種標準化的硬件描述語言,同一個設計描述可以被不同的工具所支持,使得設計描述的移植成為可能。
易于共享和復用
VHDL采用基于庫(Library)的設計方法,可以建立各種可再次利用的模塊。這些模塊可以預先設計或使用以前設計中的存檔模塊,將這些模塊存放到庫中,就可以在以后的設計中進行復用,可以使設計成果在設計人員之間進行交流和共享,減少硬件電路設計。
vhdl20秒倒計時源代碼
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity js is
port(clk_1s,rst,s:in std_logic;
ta,tb:out integer range 0 to 9);
end js;
architecture one of js is signal co:std_logic;
signal ta1,tb1:integer range 0 to 9;
begin
p1:process(clk_1s,rst,s,ta1) begin
if rst=‘0’ then
ta1<=4;
elsif clk_1s‘event and clk_1s=’1‘ then
co<=’0‘;
if s=’1‘ then
if ta1= 0 then
ta1<=9;
co<=’1‘;
else ta1<=ta1-1;
end if;
end if;
end if;
end process p1;
p2:process(co,rst,s,tb1)
begin
if rst=’0‘ then
tb1<=1;
elsif co’event and co=‘1’ then
if s=‘1’ then
if tb1=0 then
tb1<=1;
else tb1<=tb1-1;
end if; end if;
end if;
end process p2;
ta<=ta1;
tb<=tb1;
end one;
評論
查看更多