vhdl程序第二章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章VHDL语法基础2020/1/172——存放各种类型数据的容器,包括变量、常量和信号1.变量(VARIABLE)规则:只能在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)中说明和使用的局域量定义格式:VARIABLE变量名:数据类型{:=初始值}例如:VARIABLEa:INTEGERVARIABLEb:INTEGER:=2;2.1VHDL数据对象2020/1/173变量赋值语句:目标变量名:=表达式例如:VARIABLEx,y:REALVARIABLEa,b:BITVECTOR(0TO7);x:=100.0;y:=1.5+x;a:=“1010101”a(3TO6):=(‘1’,‘1’,‘0’,‘1’);a(0TO5):=b(2TO7);2020/1/1742.信号(SIGNAL)规则:信号是在结构体(ARCHITECTURE)、程序包(PACKAGE)和实体中说明的全局量。信号定义格式:SIGNAL信号名:数据类型:=初值;例如:SIGNALtemp:STDLOGIC:=‘0’;SIGNALflaga,flagb:BITSIGNALdata:STDLOOGICVECTOR(15DOWNTO0);2020/1/175信号赋值语句:目标信号名<=表达式例如:x<=9;y<=x;z<=xAFTER5ns;信号与变量的区别:(1)使用场合不同;(变量:进程;信号:结构体)(2)变量用“:=”号赋值,其值被立即使用(无时间延迟);而信号用“<=”赋值,其值可以附加延迟。2020/1/1763.常数(CONSTANT)规则:常数在程序前部定义,且一旦被赋值就不能再改变。常数定义格式:CONSTANT常数名:数据类型:=初值;例如:CONSTANTfbus:BITVECTOR:=“010111”;CONSTANTVcc:REAL:=5.0;CONSTANTdely:TIME:=25ns;2020/1/1771.数字型文字——由数字、小数点和下划线组成(1)整数文字5,678,156E2,45_234_287(=45234287)(2)实数文字188.993,88_670_551.453_909(3)以数制基数表示的文字格式:数制#数值#例如:10#170#16#FE#2#11010001#8#376#2.2VHDL文字规则2020/1/178(4)物理量文字例如:60s,100m2.字符串文字字符——以单引号括起来的数字、字母和符号(ASCII码)例如:’0’,’1’,’A’,’B’,’a’,’b’字符串——一维的字符数组,用双引号括起来。(1)文字字符串例如:”ABC”,”ABOY.”,”A”2020/1/179(2)数值字符串——矢量格式:数制基数符号“数值字符串”其中:B——二进制基数符号;O——八进制基数符号;X——16进制基数符号;例如:B“111011110”;矢量数组,长度为9O“15”;等效B“001101”,长度为6X“AD0”;等效B“101011010000”,长度为122020/1/17103.标识符——是用户给常量、变量、信号、端口、子程序或参数定义的名字规则:以字母开头,后跟若干字母、数字或单个下划线构成,但最后不能为下划线。例如:h_adder,mux21,example为合法标识符;2adder,_mux21,ful__adder,adder_为错误的标识符。VHDL’93标准支持扩展标识符,以反斜杠来定界,允许以数字开头,允许使用空格以及两个以上的下划号。例如:\74LS193\,\ABOY.\等为合法的标识符。2020/1/17114.下标名——数组格式:标识符(表达式)例如:b(3)5.段名——多个下标名的组合格式:标识符(表达式方向表达式)方向:TO——下标序号由低到高DOWNTO——下标序号由高到低例如:D(7DOWNTO0);表示数据总线D7~D0D(0TO7);表示数据总线D0~D72020/1/17121.标量型(ScalarType)——单元素的最基本数据类型(1)实数类型(2)整数类型(3)枚举类型(4)时间类型2.3.1VHDL数据类型2.复合类型(CompositeType)(1)数组型(Array)(2)记录型(Record)2020/1/17133.存取类型(AccessType)——为数据对象提供存取方式4.文件类型(FilesType)——提供多值存取类型2.3.2VHDL的预定义数据类型——在IEEE库中的标准程序包(STANDARD)中预先定义的数据类型。2020/1/17141.布尔(BOOLEAN)数据类型包括逻辑“假”(FALSE)和逻辑“真”(TRUE),定义语句:TYPEBOOLEANIS(FALSE,TRUE);--以枚举类型定义2.位(BIT)数据类型包括‘0’和‘1’,定义语句:TYPEBITIS(‘0’,‘1’)2020/1/17153.位矢量(BITVECTOR)数据类型位矢量是用双引号括起来的数字序列,如“0011”,X“00FD”定义语句:TYPEBITVECTORISARRAY(NaturalRange〈〉)OFBIT;--“〈〉”表示数据范围未定界规则:使用位矢量必须注明位宽,例如:SIGNALa:BITVECTOR(7DOWNTO0);--定义a为由a(7)~a(0)构成矢量,左为a(7)右为a(0);2020/1/17164.字符(CHARACTER)数据类型字符是用单引号括起来的ASCII码字符,如‘A’,‘a’,‘0’,‘9’定义语句:TYPECHARACTERIS(ASCII码字符表中的全部字符)5.整数(INTEGER)数据类型整数包括:正整数、负整数和零范围:32位带符号数原码,即-(231-1)~+(231-1)(-2147483647~+2147483647)2020/1/17176.自然数(NATURAL)和正整数(POSITIVE)数据类型自然数——包括0和正整数正整数——不包括0的正整数7.实数(REAL)数据类型由正、负、小数点和数字组成,如:-1.0,+2.5,-1.0E38范围:-1.0E+38TO+1.0E+382020/1/17188.字符串(STRING)数据类型字符串是用双引号括起来的字符序列,也称字符矢量或字符串数组。例如,“ABOY.”,“10100011”9.时间(TIME)数据类型时间是物理量数据,由整数数据和单位两部分组成,定义语句:2020/1/1719TYPETIMEISRANGE–2147483647TO2147483647unitsfs;--飞秒(10-15S)VHDL中的最小时间单位ps=1000fs;--皮秒ns=1000ps;--纳秒us=1000ns;--微秒ms=1000us;--毫秒sec=1000ms;--秒min=60sec;--分hr=60min;--时ENDunits;2020/1/172010.错误等级(SeverityLevel)错误等级数据用于表征系统的状态,包括:NOTE(注意),WARNING(警告),ERROR(出错),FAILURE(失败)。在仿真过程中,可输出这4种值来提示被仿真系统当前的工作状态。其定义如下:TYPEseverity_levelIS(note,warning,error,failure);2020/1/17212.3.5IEEE预定义的标准逻辑位和矢量1.标准逻辑位(STDLOGIC)数据类型TYPESTDLOGICIS(‘U’--未初始化的‘X’--强未知的‘0’--强0‘1’--强1‘Z’--高阻态‘W’--弱未知的‘L’--弱0‘H’--弱1‘-’--忽略);2.标准逻辑矢量(STDLOGICVECTOR)数据类型TYPESTDLOGICVECTORISARRAY(NaturalRange〈〉)OFSTDLOGIC;--〈〉表示范围未定2020/1/17222.3.6用户自定义数据类型方式定义格式:TYPE数据类型名IS数据类型定义OF基本数据类型或:TYPE数据类型名IS数据类型定义;例如:TYPEstISARRAY(0TO15)OFSTDLOGIC;TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);2020/1/17231.枚举类型(Enumerated)定义格式:TYPE数据类型名IS数据类型定义;例如:TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);2.整数类型和实数类型定义格式:TYPE数据类型名ISRANGE范围;例如:TYPEnum1ISRANGE0TO100;2020/1/17243.数组类型数组——是一组具有相同数据类型的元素的组合。定义格式:TYPE数组名ISARRAY(数据范围)OF数据类型;例如:TYPEdata_busISARRAY(7DOWNTO0)OFSTD_LOGIC;--定义数据总线,下标由高到低,即D7位权值最高,D0位权值最低。TYPEdata_busISARRAY(0TO7)OFSTD_LOGIC;--定义数据总线,下标由低到高,即D0位权值最高,D7位权值最低。2020/1/17254.记录类型(Recode)记录——是一组不同数据类型的元素的组合。定义格式:TYPE记录类型名ISRECODE元素名:元素数据类型;元素名:元素数据类型;:ENDRECODE[记录类型名]2020/1/1726类型操作符功能操作数数据类型算术操作符+加整数-减整数&并一维数组*乘整数和实数/除整数和实数MOD取模整数REM求余整数SLL逻辑左移BIT或布尔型一维数组SRL逻辑右移BIT或布尔型一维数组2.4VHDL操作符2020/1/1727类型操作符功能操作数数据类型算术操作符SLA算术左移BIT或布尔型一维数组SRA算术右移BIT或布尔型一维数组ROL逻辑循环左移BIT或布尔型一维数组ROR逻辑循环右移BIT或布尔型一维数组**乘方整数ABS取绝对值整数2020/1/1728类型操作符功能操作数数据类型关系操作符=等于任何数据类型/=不等于任何数据类型小于枚举与整数及对应的一维数组大于同上=小于等于同上=大于等于同上2020/1/1729类型操作符功能操作数数据类型逻辑操作符AND与BIT、BOOLEAN、STDLOGICOR或同上NAND与非同上NOR或非同上XOR异或同上NXOR异或非同上NOT非同上

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功