欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

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

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

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

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

舉一個(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;

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

2)SIGNAL,VARIABLE,CONSTANT
在例子中出現了SIGNAL和VARIABLE兩種,有什么區別呢?

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

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

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


3)關(guān)于VHDL的數據類(lèi)型。
VHDL數據類(lèi)型

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

VHDL數據類(lèi)型分為四大類(lèi):

1標量類(lèi)型(SCALAR TYPE);

2復合類(lèi)型(COMPOSITE TYPE);

3存取類(lèi)型(ACCESS TYPE);

4文件類(lèi)型(FILES TYPE)

又分為:

1預定義數據類(lèi)型、

2用戶(hù)自定義數據類(lèi)型

1、VHDL的預定義數據類(lèi)型

1)布爾量(boolean)

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

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

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

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

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

6)自然數(natural)和正整數(positive)
natural是integer的子類(lèi)型,表示非負整數。
positive是integer的子類(lèi)型,表示正整數。

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

integer’high;

subtype positive is integer range 1 to

integer’high;

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

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

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

10)錯誤等級(SEVERITY_LEVEL)
仿真中用來(lái)指示系統的工作狀態(tài),共有四種:
NOTE(注意)、WARNING(警告)、ERROR(出錯)、FAILURE(失?。?br>
2、IEEE預定義標準邏輯位與矢量

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

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

2)std_logic_vector 類(lèi)型

由 std_logic 構成的數組。定義如下:

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

3、用戶(hù)自定義類(lèi)型

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

1)枚舉類(lèi)型、

2)整數和實(shí)數類(lèi)型、

3)數組類(lèi)型、

4)記錄類(lèi)型、

5)子類(lèi)型

用類(lèi)型定義語(yǔ)句TYPE和子類(lèi)型定義語(yǔ)句SUBTYPE實(shí)現用戶(hù)自定義數據類(lèi)型。

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 數據類(lèi)型名 is 數據類(lèi)型定義 [of 基本數據類(lèi)型];

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

由subtype 語(yǔ)句定義的數據類(lèi)型稱(chēng)為子類(lèi)型。
subtype 子類(lèi)型名 is 基本數據類(lèi)型   約束范圍;

1)枚舉類(lèi)型

枚舉該類(lèi)型的所有可能的值。格式:

如: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 類(lèi)型名稱(chēng) is (枚舉文字{,枚舉文字});

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

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

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

2)整數類(lèi)型

用戶(hù)定義的整數類(lèi)型是標準包中整數類(lèi)型的子范圍。格式:例:type my_integer is integer range 0 to 9;

3)數組類(lèi)型

數組:同類(lèi)型元素的集合。VHDL支持多維數組。

多維數組的聲明:

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

限定數組、非限定數組、屬性:type 類(lèi)型名稱(chēng) is range 整數范圍;

限定數組:

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

格式:   

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

格式:

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

of bit;

variable my_vector:bit_vector (5 downto -5);

type 數組名 is array(數組范圍) of 數據類(lèi)型;

type 數組名 is array(類(lèi)型名稱(chēng) range <>) of 數據類(lèi)型;

屬性:

VHDL為多種類(lèi)型定義了屬性。

語(yǔ)法如下:

對象’屬性

VHDL為數組預先定義的屬性:

left      right

high      low

length    range

reverse_range

對應變量:

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)記錄類(lèi)型

記錄是不同類(lèi)型的名稱(chēng)域的集合。

格式如下: 

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

type 記錄類(lèi)型名 is record

元素名:數據類(lèi)型名;

元素名:數據類(lèi)型名;

┇ 

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)子類(lèi)型

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

格式:            

例:

bit_vector 類(lèi)型定義如下:

type bit_vector is array (natural range <>)

of bit;

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

subtype my_vector is bit_vector(0 to 15);

注:子類(lèi)型與基(父)類(lèi)型具有相同的操作符和子程序??梢灾苯舆M(jìn)行賦值操作。

subtype 子類(lèi)型名 is 數據類(lèi)型名[范圍];

4、數據類(lèi)型轉換

VHDL是一種強類(lèi)型語(yǔ)言,不同類(lèi)型的數據對象必須經(jīng)過(guò)類(lèi)型轉換,才能相互操作。

1)類(lèi)型轉換函數方式

通過(guò)調用類(lèi)型轉換函數,使相互操作的數據對象的類(lèi)型一致,從而完成相互操作。

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)直接類(lèi)型轉換方式

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

數據類(lèi)型標識符(表達式)

如:variable a, b : real;

variable c, d : integer;

……

a:= real(c);

d:= integer(b);

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

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

類(lèi)型轉換
類(lèi) 型 變 換 函 數
由STD_LOGIC_VECTOR轉換成INTEGER
STD_LOGIC_UNSIGNED包含集
CONV_INTEGER(A)
由INTEGER,UNSDGNED,SIGNED轉換成STD_LOGIC_VECTOR
由UNSIGNED,SIGNED轉換成INTEGER
STD_LOGIC_ARITH包集合
CONV_STD_LOGIC_VECTOR(A,位長(cháng))
CONV_INTEGER(A)
由BIT_VECTOR轉換為STD_LOGIC_VECTOR
由STD_LOGIC_VECTO轉換為BIT_VECTOR
由BIT轉換成STD_LOGIC
由STD_LOGIC轉換成BIT
STD_LOGIC_1164包集合
TO_STDLOGICVECTOR(A)
TO_BITVECTOR(A)
TO_STDLOGIC(A)
TO_BIT(A)
功 能
函 數 名
由"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); 位矢量轉換成整數變換式

END rtl;
^0^

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

函     數     名                                     功           能

STD_LOGIC_1164包集合         

TO_STDLOGICVECTOR(A) 由BIT_VECTOR轉換為STD_LOGIC_VECTOR

TO_BITVECTOR(A)           由STD_LOGIC_VECTO轉換為BIT_VECTOR

TO_STDLOGIC(A)             由BIT轉換成STD_LOGIC

TO_BIT(A)                       由STD_LOGIC轉換成BIT

STD_LOGIC_ARITH包集合

CONV_STD_LOGIC_VECTOR(A, 由INTEGER,UNSDGNED,SIGNED轉換

位長(cháng))                                       STD_LOGIC_VECTOR

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

STD_LOGIC_UNSIGNED包含集

CONV_INTEGER(A)                  由STD_LOGIC_VECTOR轉換成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); --位矢量轉換成整數變換式



END rtl;

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

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久