国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
轉(zhuǎn)帖-VHDL語(yǔ)法學(xué)習(xí)(1)--初步認(rèn)識(shí)VHDL
對(duì)于簡(jiǎn)單的語(yǔ)法學(xué)習(xí)可以參照這個(gè)網(wǎng)站:http://www.seas.upenn.edu/~ese201/vhdl/vhdl_primer.html#_Toc526061341有比較詳細(xì)的講解。

VHDL是用來(lái)描述數(shù)字電路的, 可以簡(jiǎn)單的描述一個(gè)門電路,還可以甚至復(fù)雜到描述微處理器或者一個(gè)系統(tǒng),但是無(wú)論描述的電路多么復(fù)雜,它的完整結(jié)構(gòu)都是由Entity,Architecture,Configuration,Package和Library 5個(gè)部分。但是一般情況,程序中只要有Entity和Architecture就可以描述電路了??聪聢D是一個(gè)簡(jiǎn)單的VHDL程序構(gòu)造圖:
造圖:

舉一個(gè)簡(jiǎn)單的例子:

ENTITY mux IS
GENERIC( m:TIME := 1ns);
PORT(
d0,d1,sel: IN BIT;
q:OUT BIT
);

ARCHITECTURE connect OF mux IS
SIGNAL tmp: BIT;
BEGIN
cale:PROCESS(d0,d1,sel)
VARIABLE tmp1,tmp2,tmp3:BIT;
BEGIN
tmp1:= d0 and sel;
tmp2:= d1 and (not sel);
tmp3:= tmp1 or tmp2;
tmp <= tmp3;
q<= tmp AFTER m;
END PROCESS;
END connect;

知識(shí)點(diǎn):
1)關(guān)于
GENERIC
GENERIC必須放在端口說(shuō)明之前,用于指定參數(shù)。上面的例子中的語(yǔ)句指定了Architecture內(nèi)的m的值為1ns。舉個(gè)例子:tmp1:=d0 and sel AFTER m; 表示d0和sel兩個(gè)輸入信號(hào)相and之后,經(jīng)過(guò)1ns延遲才送到tmp1。

2)SIGNAL,VARIABLE,CONSTANT
在例子中出現(xiàn)了SIGNAL和VARIABLE兩種,有什么區(qū)別呢?

SIGNAL是一種表示全局的量,用在ARCHITECTURE,PACKAGE,ENTITY中;SIGNAL賦值的時(shí)候要用<=,和給Port賦值的時(shí)候方法一樣;

VARIABLE是表示局部量,用在PROCESS,F(xiàn)UNCTION,PROCEDURE;VARIABLE賦值的時(shí)候要用:=,這一點(diǎn)是很大的不同;

CONSTANT是全局量,在上面提到的所有場(chǎng)合中都可以用。CONSTANT也是用:=來(lái)賦值的;


3)關(guān)于VHDL的數(shù)據(jù)類型。
VHDL數(shù)據(jù)類型

VHDL是一種強(qiáng)數(shù)據(jù)類型語(yǔ)言。要求設(shè)計(jì)實(shí)體中的每一個(gè)常數(shù)、信號(hào)、變量、函數(shù)以及設(shè)定的各種參量都必須具有確定的數(shù)據(jù)類型,并且相同數(shù)據(jù)類型的量才能互相傳遞和作用。

VHDL數(shù)據(jù)類型分為四大類:

1標(biāo)量類型(SCALAR TYPE);

2復(fù)合類型(COMPOSITE TYPE);

3存取類型(ACCESS TYPE);

4文件類型(FILES TYPE)

又分為:

1預(yù)定義數(shù)據(jù)類型、

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

1、VHDL的預(yù)定義數(shù)據(jù)類型

1)布爾量(boolean)

布爾量具有兩種狀態(tài):false 和 true 常用于邏輯函數(shù),如相等(=)、比較(<)等中作邏輯比較。如,bit 值轉(zhuǎn)化成boolean 值:
boolean_var := (bit_var = ‘1’);

2)位(bit)
bit 表示一位的信號(hào)值。
放在單引號(hào)中,如 ‘0’ 或 ‘1’。

3)位矢量 (bit_vector)
bit_vector 是用雙引號(hào)括起來(lái)的一組位數(shù)據(jù)。
如: “001100”  X“00B10B”

4)字符(character)
用單引號(hào)將字符括起來(lái)。
variable character_var : character;
... ...
Character_var : = ‘A’;

5)整數(shù)(integer)
integer 表示所有正的和負(fù)的整數(shù)。硬件實(shí)現(xiàn)時(shí),利用32位的位矢量來(lái)表示。可實(shí)現(xiàn)的整數(shù)范圍為:
-(231-1) to (231-1)
VHDL綜合器要求對(duì)具體的整數(shù)作出范圍限定,否則無(wú)法綜合成硬件電路。
如:signal s : integer range 0 to 15;
信號(hào) s 的取值范圍是0-15,可用4位二進(jìn)制數(shù)表示,因此 s 將被綜合成由四條信號(hào)線構(gòu)成的信號(hào)。

6)自然數(shù)(natural)和正整數(shù)(positive)
natural是integer的子類型,表示非負(fù)整數(shù)。
positive是integer的子類型,表示正整數(shù)。

定義如下:
subtype natural is integer range 0 to

integer’high;

subtype positive is integer range 1 to

integer’high;

7)實(shí)數(shù)(REAL)或稱浮點(diǎn)數(shù)
取值范圍:-1.0E38 - +1.0E38
實(shí)數(shù)類型僅能用于VHDL仿真器,一般綜合器不支持。

8)字符串(string)
string 是 character 類型的一個(gè)非限定數(shù)組。用雙引號(hào)將一串字符括起來(lái)。如:
variable string_var : string(1 to 7);
……
string_var := “Rosebud”;

9)時(shí)間(TIME)
由整數(shù)和物理單位組成
如:55 ms,20 ns

10)錯(cuò)誤等級(jí)(SEVERITY_LEVEL)
仿真中用來(lái)指示系統(tǒng)的工作狀態(tài),共有四種:
NOTE(注意)、WARNING(警告)、ERROR(出錯(cuò))、FAILURE(失敗)

2、IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量

1)std_logic 類型
由 ieee 庫(kù)中的std_logic_1164 程序包定義,為九值邏輯系統(tǒng),如下:
(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)
‘U’:未初始化的,
‘X’:強(qiáng)未知的,
‘0’:強(qiáng)0,
‘1’:強(qiáng)1,
‘Z’:高阻態(tài),   
‘W’:弱未知的,
‘L’:弱0,       
‘H’:弱1,
‘-’:忽略

由 std_logic 類型代替 bit 類型可以完成電子系統(tǒng)的精確模擬,并可實(shí)現(xiàn)常見(jiàn)的三態(tài)總線電路。

2)std_logic_vector 類型

由 std_logic 構(gòu)成的數(shù)組。定義如下:

type std_logic_vector is array(natural range<>) of std_logic;
賦值的原則:相同位寬,相同數(shù)據(jù)類型。

3、用戶自定義類型

用戶自定義類型是VHDL語(yǔ)言的一大特色。
可由用戶定義的數(shù)據(jù)類型有:

1)枚舉類型、

2)整數(shù)和實(shí)數(shù)類型、

3)數(shù)組類型、

4)記錄類型、

5)子類型

用類型定義語(yǔ)句TYPE和子類型定義語(yǔ)句SUBTYPE實(shí)現(xiàn)用戶自定義數(shù)據(jù)類型。

TYPE語(yǔ)句格式:
例:type byte is array(7 downto 0) of bit;
variable addend : byte;
type week is (sun, mon, tue, wed, thu,fri, sat);

type 數(shù)據(jù)類型名 is 數(shù)據(jù)類型定義 [of 基本數(shù)據(jù)類型];

SUBTYPE語(yǔ)句格式:
例: subtype digits is integer range 0 to 9;

由subtype 語(yǔ)句定義的數(shù)據(jù)類型稱為子類型。
subtype 子類型名 is 基本數(shù)據(jù)類型   約束范圍;

1)枚舉類型

枚舉該類型的所有可能的值。格式:

如:type std_logic is(‘U’,‘X’,‘0’,‘1’,

‘Z’,‘W’,‘L’,‘H’,‘-’)

如:type color is(blue,green,yellow, red);

type my_logic is (‘0’, ‘1’, ‘U’, ‘Z’);

variable hue : color;

signal sig : my_logic;

hue := blue;       sig <= ‘Z’;

type 類型名稱 is (枚舉文字{,枚舉文字});

枚舉類型的編碼: 綜合器自動(dòng)實(shí)現(xiàn)枚舉類型元素的編碼,一般將第一個(gè)枚舉量(最左邊)編碼為0,以后的依次加1。編碼用位矢量表示 ,位矢量的長(zhǎng)度將取所需表達(dá)的所有枚舉元素的最小值。

如:type color is(blue,green,yellow,red);

編碼為: blue=“00”;             
green=“01”;
yellow=“10”;      
red=“11”;

2)整數(shù)類型

用戶定義的整數(shù)類型是標(biāo)準(zhǔn)包中整數(shù)類型的子范圍。格式:例:type my_integer is integer range 0 to 9;

3)數(shù)組類型

數(shù)組:同類型元素的集合。VHDL支持多維數(shù)組。

多維數(shù)組的聲明:

type byte is array(7 downto 0) of bit;
type vector is array(3 downto 0) of byte;

限定數(shù)組、非限定數(shù)組、屬性:type 類型名稱 is range 整數(shù)范圍;

限定數(shù)組:

其索引范圍有一定的限制。

格式:   

非限定數(shù)組:數(shù)組索引范圍被定義成一個(gè)類型范圍。

格式:

例:type bit_vector is array(integer range <>)

of bit;

variable my_vector:bit_vector (5 downto -5);

type 數(shù)組名 is array(數(shù)組范圍) of 數(shù)據(jù)類型;

type 數(shù)組名 is array(類型名稱 range <>) of 數(shù)據(jù)類型;

屬性:

VHDL為多種類型定義了屬性。

語(yǔ)法如下:

對(duì)象’屬性

VHDL為數(shù)組預(yù)先定義的屬性:

left      right

high      low

length    range

reverse_range

對(duì)應(yīng)變量:

variable my_vector : bit_vector (5 downto -5);

各屬性如下:

my_vector’left                             5

my_vector’right                         -5

my_vector’high                           5

my_vector’low                          -5

my_vector’length                       11

my_vector’range                  (5 downto -5)

my_vector’reverse_range        (-5 to 5)

4)記錄類型

記錄是不同類型的名稱域的集合。

格式如下: 

訪問(wèn)記錄體元素的方式:記錄體名.元素名

type 記錄類型名 is record

元素名:數(shù)據(jù)類型名;

元素名:數(shù)據(jù)類型名;

┇ 

end   record;

例:

constant len:integer:= 8 ;

subtype byte_vec is bit_vector(len-1 downto 0);

type byte_and_ix is record

byte : byte_vec;

ix : integer range 0 to len;

end record ;

signal x, y, z : byte_and_ix ;

signal data : byte_vec ;

signal num : integer ;

…….

x.byte <= “11110000” ;

x.ix <= 2 ;

data <= y.byte ;

num <= y.ix ;

z <= x ;

5)子類型

子類型是已定義的類型或子類型的一個(gè)子集。

格式:            

例:

bit_vector 類型定義如下:

type bit_vector is array (natural range <>)

of bit;

如設(shè)計(jì)中只用16bit;可定義子類型如下:

subtype my_vector is bit_vector(0 to 15);

注:子類型與基(父)類型具有相同的操作符和子程序。可以直接進(jìn)行賦值操作。

subtype 子類型名 is 數(shù)據(jù)類型名[范圍];

4、數(shù)據(jù)類型轉(zhuǎn)換

VHDL是一種強(qiáng)類型語(yǔ)言,不同類型的數(shù)據(jù)對(duì)象必須經(jīng)過(guò)類型轉(zhuǎn)換,才能相互操作。

1)類型轉(zhuǎn)換函數(shù)方式

通過(guò)調(diào)用類型轉(zhuǎn)換函數(shù),使相互操作的數(shù)據(jù)對(duì)象的類型一致,從而完成相互操作。

library ieee;

library dataio;

use ieee.std_logic_1164.all;

use dataio.std_logic_ops.all;

entity cnt4 is

port(clk: in std_logic;

p: inout std_logic_vector(3 downto 0);

end cnt4;

architecture behv of cnt4 is

begin

process(clk)

begin

if clk’event and clk=‘1’ then

p<=to_vector(2, to_integer(p)+1);

end if;

end process;

end behv;

2)直接類型轉(zhuǎn)換方式

對(duì)相互間非常關(guān)聯(lián)的數(shù)據(jù)類型(如整型、浮點(diǎn)型),可進(jìn)行直接類型轉(zhuǎn)換。格式:

數(shù)據(jù)類型標(biāo)識(shí)符(表達(dá)式)

如:variable a, b : real;

variable c, d : integer;

……

a:= real(c);

d:= integer(b);

4)VHDL的數(shù)據(jù)類型轉(zhuǎn)換
數(shù)據(jù)類型的轉(zhuǎn)換
在VHDL程序中,不同類型的對(duì)象不能代入,因此要進(jìn)行類型轉(zhuǎn)換.類型轉(zhuǎn)換的方法有:
(1)類型標(biāo)記法.用類型名稱來(lái)實(shí)現(xiàn)關(guān)系密切的標(biāo)量類型之間的
轉(zhuǎn)換.
例如: VARIABLE x:INTEGER;
VARIABLE y:REAL;
使用類型標(biāo)記(即類型名)實(shí)現(xiàn)類型轉(zhuǎn)換時(shí),可采用賦值語(yǔ)句:
x :=INTEGER(y); y :=REAL(x).
(2)類型函數(shù)法.
VHDL程序包中提供了多種轉(zhuǎn)換函數(shù),使得某些類型的數(shù)據(jù)之間可以相互轉(zhuǎn)換,以實(shí)現(xiàn)正確的賦值操作.常用的類型轉(zhuǎn)換函數(shù)有:
★CONV_INTEGER ( ):將STD_LOGIC_VECTOR類型轉(zhuǎn)換成
INTEGER類型.
★CONV_STD_LOGIC_VECTOR( ):將INTEGER類型,UNSIGNED
類型或 SIGNED類型轉(zhuǎn)換成STD_LOGIC_VECTOR類型.
★TO_BIT ( ): 將STD_LOGIC類型轉(zhuǎn)換成BIT類型.
★TO_BIT_VECTOR( ):將STD_LOGIC_VECTOR類型轉(zhuǎn)換
BIT_VECTOR 類型.
★TO_STD_LOGIC( ): 將BIT類型轉(zhuǎn)換成STD_LOGIC類型.
★TO_STD_LOGIC_VECTOR( ): 將BIT_VECTOR類型轉(zhuǎn)換成
STD_LOGIC_VECTOR類型.
注意 :引用時(shí)必須首先 打開(kāi)庫(kù)和相應(yīng)的程序包.
該函數(shù)由STD_LOGIC_UNSIGNED
程序包定義
該函數(shù)由STD_LOGIC_ARITH
程序包定義
以下函數(shù)由STD_LOGIC_1164

-0-----------------------------------------------

類型轉(zhuǎn)換
類 型 變 換 函 數(shù)
由STD_LOGIC_VECTOR轉(zhuǎn)換成INTEGER
STD_LOGIC_UNSIGNED包含集
CONV_INTEGER(A)
由INTEGER,UNSDGNED,SIGNED轉(zhuǎn)換成STD_LOGIC_VECTOR
由UNSIGNED,SIGNED轉(zhuǎn)換成INTEGER
STD_LOGIC_ARITH包集合
CONV_STD_LOGIC_VECTOR(A,位長(zhǎng))
CONV_INTEGER(A)
由BIT_VECTOR轉(zhuǎn)換為STD_LOGIC_VECTOR
由STD_LOGIC_VECTO轉(zhuǎn)換為BIT_VECTOR
由BIT轉(zhuǎn)換成STD_LOGIC
由STD_LOGIC轉(zhuǎn)換成BIT
STD_LOGIC_1164包集合
TO_STDLOGICVECTOR(A)
TO_BITVECTOR(A)
TO_STDLOGIC(A)
TO_BIT(A)
功 能
函 數(shù) 名
由"STD_LOGIC_VECTOR"變換成"INTEGER"的實(shí)例
LIBRARY IEEE;
USE IEEE STD_LOGIC_1164.ALL;
USE IEEE STD_LOGIC_UNSIGNED.ALL;
ENTITY add5 IS
PORT (num:IN STD_LOGIC_VECTOR (2 DOWNTO 0);

);
END add5;
ARCHITECTURE rtl OF add5 IS
SIGNAL in_num:INTEGER RANGE 0 TO 5;

BEGIN
in_num<=CONV_INTEGER (num); 位矢量轉(zhuǎn)換成整數(shù)變換式

END rtl;
^0^

------------------------

函     數(shù)     名                                     功           能

STD_LOGIC_1164包集合         

TO_STDLOGICVECTOR(A) 由BIT_VECTOR轉(zhuǎn)換為STD_LOGIC_VECTOR

TO_BITVECTOR(A)           由STD_LOGIC_VECTO轉(zhuǎn)換為BIT_VECTOR

TO_STDLOGIC(A)             由BIT轉(zhuǎn)換成STD_LOGIC

TO_BIT(A)                       由STD_LOGIC轉(zhuǎn)換成BIT

STD_LOGIC_ARITH包集合

CONV_STD_LOGIC_VECTOR(A, 由INTEGER,UNSDGNED,SIGNED轉(zhuǎn)換

位長(zhǎng))                                       STD_LOGIC_VECTOR

CONV_INTEGER(A)                  由UNSIGNED,SIGNED轉(zhuǎn)換成INTEGER

STD_LOGIC_UNSIGNED包含集

CONV_INTEGER(A)                  由STD_LOGIC_VECTOR轉(zhuǎn)換成INTEGER





LIBRARY IEEE;
USE IEEE STD_LOGIC_1164.ALL;
USE IEEE STD_LOGIC_UNSIGNED.ALL;

ENTITY add5 IS

PORT(
num:IN STD_LOGIC_VECTOR (2 DOWNTO 0);



);

END add5;

ARCHITECTURE rtl OF add5 IS

SIGNAL in_num:INTEGER RANGE 0 TO 5;



BEGIN

in_num<=CONV_INTEGER (num); --位矢量轉(zhuǎn)換成整數(shù)變換式



END rtl;

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
vhdl數(shù)據(jù)類型定義
全面了解VHDL的標(biāo)識(shí)符、數(shù)據(jù)對(duì)象、數(shù)據(jù)類型
《數(shù)字系統(tǒng)設(shè)計(jì)》第九章 VHDL可綜合性
簡(jiǎn)易電子琴的設(shè)計(jì)
VHDL程序的結(jié)構(gòu)體
VHDL語(yǔ)法學(xué)習(xí)筆記:一文掌握VHDL語(yǔ)法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服