VHDL语言的数据类型课件_第1页
VHDL语言的数据类型课件_第2页
VHDL语言的数据类型课件_第3页
VHDL语言的数据类型课件_第4页
VHDL语言的数据类型课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL語言的數據類型

VHDL數據對象(DataObjects)Constantwidth:integer:=7;Constant

Vcc:REAL:=5.0;

ConstantD2:Std_Logic_Vector(widthDownto0):=”0000”;不能在程式中改變;增強程式的可讀性,便於修改程式;常量的使用範圍取決於其定義位置,可在Library、Entity、Architecture、Process中進行定義,其有效範圍也相應限定。1、常數(Constant)定義格式為:

Constant常數名:數據類型

:=運算式;

2、信號信號數據對象,代表電路內部線路,其在元件之間起互連作用,沒有方向性,可給它賦值,也可當作輸入。定義格式為:

Signal

信號名:數據類型[:=設定值];

如:

SignalA:Std_logic_vector(3Downto0):=“0000”;

注意:設定的初始值在綜合時沒有用,只是在仿真時在開始設定一個起始值。信號賦值語句的語法格式為:目標信號名<=運算式(設定值);A<=“1010”VHDL數據對象(DataObjects)3、變數

變數是一個局部量,用於對中間數據的臨時存儲,並不一定代表電路的某一硬體,沒有物理意義。定義格式為:

Variable變數名:數據類型[:=設定值];

如:Variablea:integer:=0;變數賦值語句的語法格式為: 目標變數名:=運算式(設定值);如:a:=bandc;VHDL數據對象(DataObjects)信號、變數、常數對比一、定義Signal

clk:std_logic;Variabledata:std_logic_vector(7downto0);Constantwidth:integer:=7;二、賦值方式clk<=‘1’;(非立即)data:=“1010”;(立即)三、定義區域信號:實體、結構體、程式包變數:進程、副程式常數:實體、結構體、程式包、塊、進程、副程式四、適用範圍信號:實體、結構體、程式包變數:定義了變數的進程、副程式的順序語句中常數:視其定義的位置而定若常數定義在實體中,適用範圍是實體所對應的所有結構體。若常數定義在結構體中,適用範圍就是本結構體。信號、變數、常數對比信號賦值(非立即)信號和變數賦值區別舉例Architectureabcofexampleissignaltmp:std_logic;Begin

process(a,b,c)begin

tmp<=a;x<=candtmp;

tmp<=b;y<=candtmp;endprocess; Endabc;變數賦值(立即)ArchitectureabcofexampleisBegin

process(a,b,c)

variabletmp:std_logic;begin

tmp:=a;x<=candtmp;

tmp:=b;y<=candtmp;endprocess; Endabc;執行結果:x=candby=candb執行結果:x=canday=candbVHDL數據類型

1、邏輯數據類型

(1)布爾代數(Boolean)型

定義位置:在std庫的standard程式包中進行定義。

取值:FALSE,TRUE

(2)位(Bit)

定義位置:在std庫的standard程式包中進行定義。

取值:0,1

(低電平,高電平)(3)位向量(Bit_Vector)

定義位置:在std庫的standard程式包中進行定義。

SignalA:bit_vector(0to7);SignalB:bit_vector(7downto0);A<=“00001010”;B<=“00001010”;VHDL數據類型

位向量是基於“位”數據類型的數組A(7)=0A(6)=1A(5)=0A(4)=1A(3)=0A(2)=0A(1)=0A(0)=0B(7)=0B(6)=0B(5)=0B(4)=0B(3)=1B(2)=0B(1)=1B(0)=0(4)標準邏輯型(Std_Logic)定義位置:在IEEE庫的std_logic_1164程式包中進行定義

VHDL數據類型

使用這類數據信號,必須包含下麵兩條聲明語句:

LibraryIEEE;UseIEEE.std_logic_1164.all;“U”初始值“X”不定“0”0“1”1Z高阻“W”弱不定“L”弱0“H”弱1“-”忽略VHDL數據類型

該類型能比較全面地包括數字電路中信號的幾種狀態,比位“bit”信號對於數字邏輯電路的邏輯特性描述更完整、更真實。所以在VHDL的程式裏,對於邏輯信號的定義,通常都是採用這個“標準邏輯”信號形式,不再使用“BIT”。(5)標準邏輯數組類型(Std_Logic_vector)

定義位置:在ieee庫的std_logic_1164程式包中進行定義。

Bit_Vector與Std_Logic_vector的區別在於數組的每一位前者為BIT型(0,1)後者為Std_Logic型SignalA:STD_LOGIC_VECTOR(0to7);SignalB:STD_LOGIC_VECTOR(7downto0);A<=“10100000”;B<=“00001010”;A(7)=?B(7)=?VHDL數據類型

邏輯數據類型賦值舉例Variablea,b:std_logic;Signaldata:std_logic_vector(0to3);a:=‘1’;b:=‘0’;data<=“1100”;一位值用單引號多位值用雙引號1、直接整體賦值2.段賦值Signaldata:std_logic_vector(0to3);data(1to2)<=“10”;data(0)<=‘1’;3.塊賦值Signala,b,c,d:std_logic;Signaldata:std_logic_vector(3downto0);data<=“0100”;(a,b,c,d)<=bus;位置關聯邏輯數據類型賦值舉例數值數據類型(1)整數(Integer)定義位置:在std庫的standard程式包中進行定義。即數值範圍為-231~231。整數不能用於邏輯運算,只能用於算術運算。VHDL數據類型

Signalday:integerrange0to31;Variablea,b,c:interger;C=a+b;有符號類型數據代表有符號數值,即可以是正數,0,負數;編譯器將有符號數類型作為一個補數的二進位數,最左邊的位為符號位。無符號類型數據代表無符號數值,即代表0或正數;最左邊的位為最高位。如:Unsigned(“0110”)代表;+6+10Unsigned(“1010”)代表如:signed(“0110”)代表+6;signed(“1010”)代表-2。VHDL數據類型

(2)無符號(Unsigned)和有符號(Signed)類型定義位置:有符號(Signed)和無符號(Unsigned)邏輯信號定義在庫IEEE的程式包std_logic_arith中。字串(STRING)數據類型雙引號引起來字串數組,一般用於程式的提示和結果說明,VARIABLEstring_yin:STRING(1TO7);string_yin:="abcd";字元(CHARACTER)數據類型單引號引起來,如:‘A’‘a’字元分大小寫。’A’不等於’a’VHDL數據類型

時間(TIME)數據類型(仿真使用,不能綜合)TYPEtimeISRANGE-2147483647TO2147483647unitsfs;--飛秒,VHDL中的最小時間單位

ps=1000fs;--皮秒

ns=1000ps;--納秒

us=1000ns;--微秒

ms=1000us;--毫秒

sec=1000ms;--秒

min=60sec;--分

hr=60min;--時endunits;VHDL數據類型

Q<=aandborcAFTER10ns;用戶定義的數據類型格式:

TYPE數據類型名數據類型定義1、枚舉類型格式:

TYPE數據類型名IS(元素1,元素2,……);例:TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);2、數組類型格式:TYPE數據類型名ISARRAY範圍OF原數據類型例:TYPEwordISARRAY(0TO7)OFSTD_LOGIC;3、記錄RecordTypes相同或不同類型的元素組成,類似C中的結構描述匯流排或功能塊TypeiocellisrecordEnable:bit;Data:bit_vector(7downto0);endrecord;

singalbus:iocell;bus.Enable<=‘1’;

bus.Data<=“00110110”;用戶定義的數據類型用戶定義的子類型用戶對已定義的數據類型,作一些範圍限制而形成新的數據類型格式: SUBTYPE子類型名IS數據類型名範圍例:SUBTYPEdataISSTD_LOGIC_VECTOR(7DOWNTO0);SUBTYPEdigitISINTEGERRANGE0TO9;能進行邏輯運算的數據類型:bit、bit_vector、boolean、std_logic、std_logic_vectorVHDL語言的操作符(operator)一、邏輯操作符

signald1,d2,s:integer;SIGNALa,b,c:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd,e,f,g:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALh,I,j,k:STD_LOGIC;SIGNALl,m,n,o,p:BOOLEAN;...s<=aandb; --integer不能進行邏輯運算a<=bANDc;--a、b、c的數據類型同屬4位長的位向量

d<=eORfORg;--兩個操作符OR相同,不需括弧

h<=(iNANDj)NANDk;--NAND必須加括弧

l<=(mXORn)AND(oXORp);--操作符不同,必須加括弧

h<=iANDjANDk;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论