国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

VHDL中常用的數(shù)據(jù)對(duì)象

2017-03-06 23:46劉春梅高香梅
電子技術(shù)與軟件工程 2016年23期
關(guān)鍵詞:常量變量信號(hào)

劉春梅 高香梅

摘 要

簡(jiǎn)要介紹了VHDL中數(shù)據(jù)對(duì)象的基本概念,從不同方面討論了常用的數(shù)據(jù)對(duì)象的區(qū)別與聯(lián)系,通過(guò)實(shí)例詳細(xì)比較了信號(hào)與變量的用法。

【關(guān)鍵詞】VHDL 變量 信號(hào) 常量

1 引言

VHDL是一種常用的高級(jí)描述語(yǔ)言,通常包含庫(kù)、程序包、實(shí)體、構(gòu)造體和配置等部分。而數(shù)據(jù)對(duì)象根據(jù)不同情況可以定義在VHDL程序的這些部分中,尤其是信號(hào)和變量的使用易產(chǎn)生混淆。

2 數(shù)據(jù)對(duì)象的區(qū)別與聯(lián)系

在VHDL語(yǔ)言中,凡是可以賦予一個(gè)值的對(duì)象稱為客體也可叫做數(shù)據(jù)對(duì)象,能夠接受不同數(shù)據(jù)類(lèi)型的賦值。常用的數(shù)據(jù)對(duì)象主要有常量、變量和信號(hào)三種。

從定義范圍來(lái)看,常量和信號(hào)是全局量,變量是局部量。常量可以在程序包、實(shí)體、進(jìn)程中使用,一般在程序開(kāi)始前對(duì)常量進(jìn)行賦值。信號(hào)是電子電路內(nèi)部硬件實(shí)體相互連接的抽象表示,可以在結(jié)構(gòu)體、程序包和實(shí)體說(shuō)明中使用,信號(hào)名不能沖突。變量?jī)H在進(jìn)程語(yǔ)句、過(guò)程語(yǔ)句、函數(shù)語(yǔ)句的結(jié)構(gòu)中使用,不能將信息帶出對(duì)它作出定義的當(dāng)前設(shè)計(jì)單元。其中,應(yīng)用在不同范圍的變量名可以重復(fù)。

從延時(shí)特性來(lái)看,常量與變量的賦值是立即生效的,沒(méi)有延時(shí)。VHDL語(yǔ)言規(guī)則不支持變量附加延時(shí)語(yǔ)句,變量的賦值是一種理想化的數(shù)據(jù)傳輸,是立即發(fā)生。但是信號(hào)的代入賦值是允許延時(shí)的。比如,A0<=A1 AFTER 10 ns表示信號(hào)A0的值是由A1延時(shí)10ns所賦予的。

從賦值方式來(lái)看,常量與變量采用的是“:=”進(jìn)行賦值,信號(hào)采用的是“<=”進(jìn)行代入賦值,但是不論何種數(shù)據(jù)對(duì)象,初始化賦值均采用“:=”,其中,采用“:=”對(duì)信號(hào)賦初值時(shí)候不產(chǎn)生延時(shí)。常量的值在程序運(yùn)行過(guò)程不能改變,但是信號(hào)與變量可以進(jìn)行賦值。

常量、變量和信號(hào)所賦的值應(yīng)該與定義的表達(dá)式數(shù)據(jù)類(lèi)型一致,否則會(huì)出現(xiàn)錯(cuò)誤。信號(hào)與變量也可相互賦值,賦值符號(hào)的選擇取決于被賦值的數(shù)據(jù)對(duì)象。由于變量只能在所定義進(jìn)程內(nèi)使用,若想將變量用于進(jìn)程外,則可以賦值給同類(lèi)型的信號(hào)。在VHDL中,如果需要對(duì)某一數(shù)據(jù)進(jìn)行多次操作,則必須使用變量,因?yàn)閷?duì)信號(hào)的多次賦值只有最后一次會(huì)生效。

3 變量與信號(hào)用法的實(shí)例分析

數(shù)據(jù)對(duì)象中,變量與信號(hào)的用法易混淆,以四選一數(shù)據(jù)選擇器為例,分別采用信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句來(lái)實(shí)現(xiàn)。A0,A1,A2,A3分別為選擇器的一位數(shù)據(jù)輸入端,選擇端為S1,S0,其中S1S0分別為00,01,10,11時(shí),選擇A0,A1,A2,A3的值給輸出端口Q。采用信號(hào)賦值語(yǔ)句的結(jié)構(gòu)體程序如下:

ARCHITECTURE one OF mux4 IS

SIGNAL xy:INTEGER RANGE 0 TO 3;

BEGIN

PROCESS(A0,A1,A2,A3,S0,S1)

BEGIN

xy<=0;

IF (S0='1') THEN xy<=xy+1;

END IF;

IF (S1='1') THEN xy<=xy+2;

END IF;

CASE xy IS

WHEN 0=>Q<=A0;

WHEN 1=>Q<=A1;

WHEN 2=>Q<=A2;

WHEN 3=>Q<=A3;

WHEN OTHERS =>NULL;

END CASE;

END PROCESS;

END one;

該程序段內(nèi)xy是全局量的信號(hào),定義在結(jié)構(gòu)體中,其值與S1S0的值一樣,當(dāng)xy分別為0,1,2,3時(shí),將A0,A1,A2,A3賦給Q。經(jīng)過(guò)Quartus II9.0軟件程序編譯可以通過(guò)。仿真結(jié)果如圖1所示,其中,輸入A0設(shè)置為頻率較高的周期信號(hào),A1為低電平,A2位頻率較低的周期信號(hào),A3為高電平。

從圖1仿真結(jié)果看出,采用信號(hào)賦值語(yǔ)句的結(jié)果不正確,分析其原因主要是因?yàn)樾盘?hào)賦值是在進(jìn)程結(jié)束時(shí)更新,啟動(dòng)一次進(jìn)程信號(hào)xy的值只能改變一次。

下面采用變量賦值語(yǔ)句來(lái)實(shí)現(xiàn),對(duì)程序進(jìn)行如下修改:

ARCHITECTURE one OF mux4 IS

BEGIN

PROCESS(A0,A1,A2,A3,S0,S1)

VARIABLE xy:INTEGER RANGE 0 TO 3;

BEGIN

xy:=0;

IF (S0='1') THEN xy:=xy+1;

END IF;

IF (S1='1') THEN xy:=xy+2;

END IF;

CASE xy IS

WHEN 0=>Q<=A0;

WHEN 1=>Q<=A1;

WHEN 2=>Q<=A2;

WHEN 3=>Q<=A3;

WHEN OTHERS =>NULL;

END CASE;

END PROCESS;

END one;

該程序段中,作為局部量的變量定義在進(jìn)程中,經(jīng)過(guò)軟件編譯成功。圖2為采用變量賦值語(yǔ)句的仿真結(jié)果。

從圖2看出,當(dāng)S1S0也就是xy的值為0時(shí),Q輸出A0的值,S1S0為1時(shí),Q輸出A1的值,S1S0為2時(shí),Q輸出A2的值,S1S0為3時(shí),Q輸出A3的值,所以采用變量賦值語(yǔ)句的結(jié)果實(shí)現(xiàn)了選擇器的功能,這是因?yàn)樽兞抠x值是立即更新,啟動(dòng)一次進(jìn)程變量xy的值為所需要的最后結(jié)果。

4 結(jié)束語(yǔ)

在VHDL中,數(shù)據(jù)對(duì)象類(lèi)似于一種容器,它接受不同數(shù)據(jù)類(lèi)型的賦值。常量,變量和信號(hào)是常用的三種數(shù)據(jù)對(duì)象。其中,信號(hào)與變量的使用容易產(chǎn)生混淆,通過(guò)實(shí)例分析討論了信號(hào)與變量,如果使用不當(dāng),結(jié)果會(huì)產(chǎn)生錯(cuò)誤,因此,在設(shè)計(jì)中要謹(jǐn)慎使用信號(hào)與變量。

參考文獻(xiàn)

[1]吳方,劉文娟.EDA技術(shù)[M].武漢:武漢大學(xué)出版社,2011.

[2]劉昌華.EDA技術(shù)與應(yīng)用——基于Quartus II和VHDL[M].北京:北京航空航天大學(xué)出版社,2012.

[3]胥勛濤.EDA技術(shù)項(xiàng)目化教程[M].北京:電子工業(yè)出版社,2011.

作者單位

安徽農(nóng)業(yè)大學(xué)經(jīng)濟(jì)技術(shù)學(xué)院 安徽省合肥市 230011

猜你喜歡
常量變量信號(hào)
科學(xué)照亮世界
——卡文迪什測(cè)定萬(wàn)有引力常量
抓住不變量解題
完形填空二則
也談分離變量
孩子停止長(zhǎng)個(gè)的信號(hào)
基于LabVIEW的力加載信號(hào)采集與PID控制
SL(3,3n)和SU(3,3n)的第一Cartan不變量
低氧低分壓環(huán)境下泡塑吸附火焰原子吸收光譜法測(cè)定常量金
分離變量法:常見(jiàn)的通性通法
論常量函數(shù)的充分必要條件