當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]一個(gè)VHDL程序代碼包含實(shí)體(entity)、結(jié)構(gòu)體(architecture)、配置(configuration)、程序包(package)、庫(library)等。一、數(shù)據(jù)類型1.用戶自定義數(shù)據(jù)類


一個(gè)VHDL程序代碼包含實(shí)體(entity)、結(jié)構(gòu)體(architecture)、配置(configuration)、程序包(package)、庫(library)等。

一、數(shù)據(jù)類型

1.用戶自定義數(shù)據(jù)類型

使用關(guān)鍵字TYPE,例如:

TYPE my_integer IS RANGE -32 TO 32;

–用戶自定義的整數(shù)類型的子集

TYPE student_grade IS RANGE 0 TO 100;

–用戶自定義的自然數(shù)類型的子集

TYPE state IS (idle, forward, backward, stop);

–枚舉數(shù)據(jù)類型,常用于有限狀態(tài)機(jī)的狀態(tài)定義

一般來說,枚舉類型的數(shù)據(jù)自動(dòng)按順序依次編碼。

2.子類型

在原有已定義數(shù)據(jù)類型上加一些約束條件,可以定義該數(shù)據(jù)類型的子類型。VHDL不允許不同類型的數(shù)據(jù)直接進(jìn)行操作運(yùn)算,而某個(gè)數(shù)據(jù)類型的子類型則可以和原有類型數(shù)據(jù)直接進(jìn)行操作運(yùn)算。

子類型定義使用SUBTYPE關(guān)鍵字。

3.數(shù)組(ARRAY)

ARRAY是將相同數(shù)據(jù)類型的數(shù)據(jù)集合在一起形成的一種新的數(shù)據(jù)類型。

TYPE type_name IS ARRAY (specification) OF data_type;

–定義新的數(shù)組類型語法結(jié)構(gòu)

SIGNAL signal_name: type_name [:= initial_value];

–使用新的數(shù)組類型對SIGNAL,CONSTANT, VARIABLE進(jìn)行聲明

例如:

TYPE delay_lines IS ARRAY (L-2 DOWNTO 0) OF SIGNED (W_IN-1 DOWNTO 0);

–濾波器輸入延遲鏈類型定義

TYPE coeffs IS ARRAY (L-1 DOWNTO 0) OF SIGNED (W_COEF-1 DOWNTO 0);

–濾波器系數(shù)類型定義

SIGNAL delay_regs: delay_lines;– 信號延遲寄存器聲明

CONSTANT coef: coeffs := (); –常量系數(shù)聲明并賦初值

4.端口數(shù)組

在定義電路的輸入/輸出端口時(shí),有時(shí)需把端口定義為矢量陣列,而在ENTITY中不允許使用TYPE進(jìn)行類型定義,所以必須在包集(PACKAGE)中根據(jù)端口的具體信號特征建立用戶自定義的數(shù)據(jù)類型,該數(shù)據(jù)類型可以供包括ENTITY在內(nèi)的整個(gè)設(shè)計(jì)使用。

—————————————PACKAGE———————————-

library ieee;

use ieee.std_logic_1164.all;

——————————————

PACKAGE my_data_types IS

TYPE vector_array IS ARRAY (natural range <>) OF STD_LOGIC_VECTOR(7 DOWNTO 0); –聲明8位的數(shù)組

END my_data_types;

———————————–Main Code—————————————

library ieee;

use ieee.std_logic_1164.all;

use work.my_data_types.all; –用戶自定義包集

——————————————————————

ENTITY mux IS

PORT (inp: IN vector_array(0 to 3);

END mux;

——————————————————————————-

5.有符號數(shù)和無符號數(shù)

要使用SIGNED和UNSIGNED類型數(shù)據(jù),必須在代碼開始部分聲明ieee庫中的包集std_logic_arith。它們支持算術(shù)運(yùn)算但不支持邏輯運(yùn)算。

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

……

SIGNAL a: IN SIGNED (7 DOWNTO 0);

SIGNAL b: IN SIGNED (7 DOWNTO 0);

SIGNAL x: IN SIGNED (7 DOWNTO 0);

……

v <= a + b;

w <= a AND b;–非法(不支持邏輯運(yùn)算)

——————————————————————————-

STD_LOGIC_VECTOR類型的數(shù)據(jù)不能直接進(jìn)行算術(shù)運(yùn)算,只有聲明了std_logic_signed和std_logic_unsigned兩個(gè)包集后才可以像SIGNED和UNSIGNED類型的數(shù)據(jù)一樣進(jìn)行算術(shù)運(yùn)算。

6.數(shù)據(jù)類型轉(zhuǎn)換

在ieee庫的std_logic_arith包集中提供了許多數(shù)據(jù)類型轉(zhuǎn)換函數(shù):

1. conv_integer(p): 將數(shù)據(jù)類型為INTEGER,UNSIGNED,SIGNED,STD_ULOGIC或STD_LOGIC的操作數(shù)p轉(zhuǎn)換成INTEGER類型。不包含STD_LOGIC_VECTOR。

2. conv_unsigned(p,b):將數(shù)據(jù)類型為INTEGER,UNSIGNED,SIGNED或STD_ULOGIC的操作數(shù)p轉(zhuǎn)換成位寬為b的UNSIGNED類型數(shù)據(jù)。

3. conv_signed(p,b):將數(shù)據(jù)類型為INTEGER, UNSIGNED, SIGNED或STD_ULOGIC的操作數(shù)p轉(zhuǎn)換成位寬為b的SIGNED類型的數(shù)據(jù)。

4. conv_std_logic_vector(p, b):將數(shù)據(jù)類型為INTEGER, UNSIGNED, SIGNED或STD_LOGIC的操作數(shù)p轉(zhuǎn)換成位寬為b的STD_LOGIC_VECTOR類型的數(shù)據(jù)。

二、運(yùn)算操作符和屬性

1.運(yùn)算操作符

l賦值運(yùn)算符

賦值運(yùn)算符用來給信號、變量和常數(shù)賦值。

<=用于對SIGNAL類型賦值;

:=用于對VARIABLE,CONSTANT和GENERIC賦值,也可用于賦初始值;

=>用于對矢量中的某些位賦值,或?qū)δ承┪恢獾钠渌毁x值(常用OTHERS表示)。

例:

SIGNAL x: STD_LOGIC;

VARIABLE y: STD_LOGIC_VECTOR(3 DOWNTO 0);–最左邊的位是MSB

SIGNAL w: STD_LOGIC_VECTOR(0 TO 7);–最右邊的位是MSB

x <= ‘1’;

y := “0000”;

w <= “1000_0000”;– LSB位為1,其余位為0

w

l邏輯運(yùn)算符

操作數(shù)必須是BIT, STD_LOGIC或STD_ULOGIC類型的數(shù)據(jù)或者是這些數(shù)據(jù)類型的擴(kuò)展,即BIT_VECTOR, STD_LOGIC_VECTOR,STD_ULOGIC_VECTOR。

VHDL的邏輯運(yùn)算符有以下幾種:(優(yōu)先級遞減)

?NOT —— 取反

?AND —— 與

?OR —— 或

?NAND —— 與非

?NOR —— 或非

?XOR —— 異或

l算術(shù)運(yùn)算符

操作數(shù)可以是INTEGER, SIGNED, UNSIGNED, 如果聲明了std_logic_signed或std_logic_unsigned,可對STD_LOGIC_VECTOR類型的數(shù)據(jù)進(jìn)行加法或減法運(yùn)算。

+ —— 加

-—— 減

* —— 乘

/ —— 除

** —— 指數(shù)運(yùn)算

MOD —— 取模

REM —— 取余

ABS —— 取絕對值

加,減,乘是可以綜合成邏輯電路的;除法運(yùn)算只在除數(shù)為2的n次冪時(shí)才能綜合,此時(shí)相當(dāng)于對被除數(shù)右移n位;對于指數(shù)運(yùn)算,只有當(dāng)?shù)讛?shù)和指數(shù)都是靜態(tài)數(shù)值(常量或GENERIC參數(shù))時(shí)才是可綜合的;對于MOD運(yùn)算,結(jié)果的符號同第二個(gè)參數(shù)的符號相同,對于REM運(yùn)算,結(jié)果的符號同第一個(gè)參數(shù)符號相同。

l關(guān)系運(yùn)算符

=, /=,

左右兩邊操作數(shù)的類型必須相同。

l移位操作符

其中左操作數(shù)必須是BIT_VECTOR類型的,右操作數(shù)必須是INTEGER類型的(可以為正數(shù)或負(fù)數(shù))。

VHDL中移位操作符有以下幾種:

usll邏輯左移– 數(shù)據(jù)左移,右端補(bǔ)0;

usrl邏輯右移– 數(shù)據(jù)右移,左端補(bǔ)0;

usla算術(shù)左移– 數(shù)據(jù)左移,同時(shí)復(fù)制最右端的位,填充在右端空出的位置;

usra算術(shù)右移– 數(shù)據(jù)右移,同時(shí)復(fù)制最左端的位,填充在左端空出的位置;

urol循環(huán)邏輯左移 — 數(shù)據(jù)左移,從左端移出的位填充到右端空出的位置上;

uror循環(huán)邏輯右移 – 數(shù)據(jù)右移,從右端移出的位填充到左端空出的位置上。

例:x <= “01001”,那么:

y <= x sll 2;–邏輯左移2位,y<=”00100”

y <= x sla 2;–算術(shù)左移2位,y<=”00111”

y <= x srl 3;–邏輯右移3位,y<=”00001”

y <= x sra 3;–算術(shù)右移3位,y<=”00001”


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉