介紹vhdl的三種不同的描述風格:行為級模型、rtl級模型和結(jié)構(gòu)化模型的建立方法。在一個系統(tǒng)中三種描述風格基本上都可能用到。在主模塊與子模塊調(diào)用時一般采用使用結(jié)構(gòu)化描述。在一般模塊的設(shè)計時,根據(jù)具體情況,可以用行為級描述,又可以用數(shù)據(jù)流描述。對于一個復(fù)雜系統(tǒng)的描述來講,單用一種描述方法來描述是不現(xiàn)實的,通常是幾種描述方法混合使用。
結(jié)構(gòu)體中的3種模型描述方式
實體部分描述了對外接口,實體內(nèi)部的操作或特性則是通過結(jié)構(gòu)體來描述的。在電路中,如果實體代表一個器件符號,則結(jié)構(gòu)體描述了這個符號的內(nèi)部行為。結(jié)構(gòu)體不能單獨存在,它必須有一個界面說明,即一個實體。
一個單一的實體可以有數(shù)個結(jié)構(gòu)。每個結(jié)構(gòu)體對應(yīng)著實體不同結(jié)構(gòu)和算法實現(xiàn)方案,其間的各個結(jié)構(gòu)體的地位是同等的,它們完整地實現(xiàn)了實體的行為,但同一結(jié)構(gòu)體不能為不同的實體所擁有。
結(jié)構(gòu)體通常由說明部分和部分組成,基本格式如下:
architecture
結(jié)構(gòu)體名 of
實體名is
<說明語句>
begin
<描述語句>
end 結(jié)構(gòu)體名;
注意在這個格式中,結(jié)構(gòu)體名和實體名是聯(lián)系在一起的?!敖Y(jié)構(gòu)體名 of 實體名”的意思就是“某實體的一個結(jié)構(gòu)體名為„„”。結(jié)構(gòu)體的命名應(yīng)該盡量使人了解其功能,of后面的實體名表明該結(jié)構(gòu)體屬于哪個實體。
結(jié)構(gòu)體中的說明語句是對結(jié)構(gòu)體的功能描述語句中將要用到的信號(signal)、數(shù)據(jù)類型(type)、常數(shù)(constant)、元件(component)、函數(shù)(function)和過程(procedure)等加以說明的語句。
對于一個實體來說,結(jié)構(gòu)體有3種描述方式:行為描述、數(shù)據(jù)流描述、結(jié)構(gòu)描述。
1、行為描述法
architecture another of nand2 is
begin
process(il,i2)
begin
if il=‟1‟ and i2=‟1‟ then
ol<=‟0‟ after 5ns;
else
ol<=‟1‟ after 5ns;
end if;
end process;
end another;
注意行為描述反映一個設(shè)計的功能或算法,一般使用進程process,用順序語句表達。這種描述完全是從與非門輸入和輸出的邏輯關(guān)系出發(fā),是對與非門性能的一種描述,是一種抽象描述而不是針對某一器件,屬于高層次描述,與計算機高級語言類似。
2、數(shù)據(jù)流描述法
清單3-3是二輸入與非門的數(shù)據(jù)流描述,這種描述主要是反映數(shù)據(jù)經(jīng)過一定的邏輯運算后在輸入和輸出之間的傳送。
清單3-3 二輸入與非門的數(shù)據(jù)流描述
architecture dataflow of nand2 is begin
ol <= i1 nand i2 end dataflow;
注意 二輸入與非門的數(shù)據(jù)流描述,由與非門構(gòu)成,反映一個設(shè)計中數(shù)據(jù)從輸入到
輸出的流向,使用并發(fā)語句描述,而不是進程順序語句。
3、結(jié)構(gòu)描述法
結(jié)構(gòu)描述(structural description)是以元件(component)為基礎(chǔ),通過描述模塊和模塊之間的連接關(guān)系,來反映整個系統(tǒng)的構(gòu)成和性能。清單3-4反映了二輸入與非門的的結(jié)構(gòu)描述。
architecture structure of nand is
signal temp std_logic;
begin
u1 : and2 port map (i1,i2,temp); u2 : inv port map (temp,o1);
end structure;
注意結(jié)構(gòu)描述使用元件例化語句,描述了由一個與門and2和一個非門inv通過接口
構(gòu)成的一個與非門。此方法適用于多層次設(shè)計,可以把一個復(fù)雜的系統(tǒng)分為多個子系統(tǒng),將每一個子系統(tǒng)設(shè)計為一個模塊,再用結(jié)構(gòu)描述模塊和模塊之間的連接關(guān)系,形成一個整體。