|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
VHDL語言中的信號、變量與常量異同比較 |
| 作者:flanix 欄目:EDA技術(shù) |
VHDL語言中的信號、變量與常量異同比較 桂林信通科技有限公司 劉福奇 在VHDL中,對象是指用來保持?jǐn)?shù)據(jù)的一些客體單元。VHDL中的對象主要有4種:常量(CONSTANT)、變量(VARIABLE)、信號(SIGNAL)和文件(FILE)。本文主要討論前面三種在實際應(yīng)用中的異同點.傳統(tǒng)的計算機(jī)高級語言(如C語言)也有常量與變量.在語法上它們有相似的地方.而對于信號卻是硬件描述語言(本文指的是VHDL)中特有的元素. 1. 信號、變量與常量的意義 1.1信號是指在設(shè)計實體中數(shù)據(jù)交換的一種手段,采用信號對象可以把設(shè)計實體連接在一起形成模塊。在硬件電路中代表一條硬件連線,有時信號會被綜合成一個寄存器。 1.2變量主要是對暫時數(shù)據(jù)進(jìn)行局部存儲,它是一個局部量。 1.3 常量就是一個定值,對某些特定類型數(shù)據(jù)賦予的數(shù)值。定義一個常數(shù)主要是為了使設(shè)計實體中的某些量易于閱讀和修改 2. 信號、變量與常量的聲明 信號、變量與常量三者在使用前都必需先聲明后使用,否則會產(chǎn)生編譯錯誤。 2.1信號的聲明:SIGNAL 信號名 [,信號名……]:數(shù)據(jù)類型[:=表達(dá)式]; 如: SIGNAL clk:bit1; SIGNAL reset:bit; SIGNAL data_bus:bit_vector(7 DOWNTO 0); 在信號聲明中可以同時進(jìn)行賦初值,其賦值語法結(jié)構(gòu)為 SIGNAL clk:bit:=‘0’; SIGNAL reset:bit=‘1’; SIGNAL data_bus:bit_vector(7 DOWNTO 0):=‘01000101”; 2.1變量的聲明:VARIABLE 變量名 [,變量名……]:數(shù)據(jù)類型[:=表達(dá)式]; 如: VARIABLE i: interger RANGAE 0 TO 15:=0; VARIABLE enable:bit; 在變量說明中可以同時進(jìn)行賦初值,其賦值語法結(jié)構(gòu)為: 如: VARIABLE flag:bit:=‘1’; VARIABLE data_buffer:bit_vector(7 DOWNTO 0):=‘01000101”; 2.1常量的聲明: CONSTANT 常量名[,常量名……]:數(shù)據(jù)類型:=表達(dá)式; 如: CONSTATNT VCC:real:=5.0; CONSTANT delay_time:time:=10 ns; 3. 信號、變量與常量的使用范圍 3.1信號的使用范圍 信號可以在architecture、PACKAGE、entitiy中聲明,是全局量可以在全局使用。 3.2變量的使用范圍 變量可以在PROCESS、function、procedure中聲明,也只能在PROCESS、function、procedur中使用不是全局變量。 3.3常量的使用范圍 常量可以用于上面兩種場合。 4.信號、變量與常量的使用差別 4.1從硬件電路系統(tǒng)來看,常量相當(dāng)于電路中的恒定電平,如GND或VCC接口,而變量和信號則相當(dāng)于組合電路系統(tǒng)中門與門間的連接及其連線上的信號值。 4.2從行為仿真和VHDL語句功能上看,二者的區(qū)別主要表現(xiàn)在接受和保持信號的方式、信息保持與傳遞的區(qū)域大小上。例如信號可以設(shè)置延時量,而變量則不能;變量只能作為局部的信息載體,而信號則可作為模塊間的信息載體。變量的設(shè)置有時只是一種過渡,最后的信息傳輸和界面間的通信都靠信號來完成。 4.3從綜合后所對應(yīng)的硬件電路結(jié)構(gòu)來看,信號一般將對應(yīng)更多的硬件結(jié)構(gòu),但在許多情況下,信號和變量并沒有什么區(qū)別。例如在滿足一定條件的進(jìn)程中,綜合后它們都能引入寄存器。這時它們都具有能夠接受賦值這一重要的共性,而VHDL綜合器并不理會它們在接受賦值時存在的延時特性。 4.4雖然VHDL仿真器允許變量和信號設(shè)置初始值,但在實際運用中,VHDL綜合器并不會把這些信息綜合進(jìn)去。這是因為實際的FPGA/CPLD芯片在上電后,并不能確保其初始狀態(tài)的取向。因此,對于時序仿真來說,設(shè)置的初始值在綜合時是沒有實際意義的 4.5信號和變量是VHDL中重要的客體,他們之間的主要區(qū)別有: •信號賦值至少要有δ延時;而變量賦值沒有。 •信號除當(dāng)前值外有許多相關(guān)的信息,如歷史信息和投影波形;而變量只有當(dāng)前值。 •進(jìn)程對信號敏感而不對變量敏感。 •信號可以是多個進(jìn)程的全局信號;而變量只在定義他們的順序域可見(共享變量除外)。 •信號是硬件中連線的抽象描述,他們的功能是保存變化的數(shù)據(jù)值和連接子元件,信號在元件的端口連接元件。變量在硬件中沒有類似的對應(yīng)關(guān)系,他們用于硬件特性的高層次建模所需要的計算中。 通過前面的討論,在使用VHDL設(shè)計FPGA/CPLD芯片時要靈活運用信號、變量與常量對象提高設(shè)計效率。 |
| 2樓: | >>參與討論 |
| 作者: oaipoaip 于 2006/6/9 20:50:00 發(fā)布:
說得太復(fù)雜了不容易懂 |
|
| 3樓: | >>參與討論 |
| 作者: wzsoul 于 2006/6/27 17:26:00 發(fā)布:
詳細(xì) 比較詳細(xì):) |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |