




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字逻辑新编1第一页,共五十页,编辑于2023年,星期六VHDL标识符基本标识符由字母、数字和下划线组成第一个字符必须是字母最后一个字符不能是下划线不允许连续2个下划线保留字(关键字)不能用于标识符大小写等效3.3数据对象、数据类型、
运算符和表达式2第二页,共五十页,编辑于2023年,星期六VHDL标识符有效的标识符A_h_1show_new_stateCOUNTER_Adecode3_8counter非法的标识符A%h_1show-new-stateCOUNTER_T__13_8decoderISDOWNTO3.3数据对象、数据类型、
运算符和表达式3第三页,共五十页,编辑于2023年,星期六3.3.1数据对象VHDL语言数据对象常量(CONSTANT)变量(VARIABLE)信号(SIGNAL)4第四页,共五十页,编辑于2023年,星期六常量(Constant)固定值,不能在程序中被改变增强程序的可读性,便于修改程序在综合后,连接到电源和地可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定常数的描述格式:
CONSTANT常量名:数据类型:=表达式如:Constantdata_bus_width:integer:=8;3.3.1数据对象5第五页,共五十页,编辑于2023年,星期六变量(Variable)临时数据,没有物理意义只能在Process和Function中定义,并只在其内部有效要使其全局有效,先转换为Signal一旦赋值,立即生效变量的描述格式:
VARIABLE变量名:数据类型:=表达式
如:variableresult:std_logic:=‘0’;3.3.1数据对象6第六页,共五十页,编辑于2023年,星期六信号(Signals)代表连线,Port也是一种信号没有方向性,可给它赋值,也可当作输入在Entity中和Architecture中定义设定的初始值只是在仿真开始设定了一个起始值,在综合时没有用。信号的描述格式:
SIGNAL信号名:数据类型[:=初始值]signalcount:bit_vector(3downto0):=“0011”;3.3.1数据对象7第七页,共五十页,编辑于2023年,星期六信号赋值语句格式目标信号名<=表达式;
q<=count;irq<='0';aa<=dx1;bb<=dx2;s1<=s2AFTER10ns
3.3.1数据对象8第八页,共五十页,编辑于2023年,星期六信号与变量的区别信号赋值可以有延迟时间,变量赋值无时间延迟信号除当前值外还有许多相关值,如历史信息等,变量只有当前值进程对信号敏感,对变量不敏感信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见信号可以看作硬件的一根连线,但变量无此对应关系赋值的形式不同;声明的位置不同9第九页,共五十页,编辑于2023年,星期六信号与变量的区别architecturertlofstartissignalcount:integerrange0to7;
beginprocess(clk)beginif(clk'eventandclk='1')then
count<=count+1;if(count=0)thencarryout<='1';elsecarryout<='0';endif;endif;endprocess;endrtl;architecturertlofstartisbeginprocess(clk)variablecount:integerrange0to7;beginif(clk'eventandclk='1')then
count:=count+1;if(count=0)thencarryout<='1';elsecarryout<='0';endif;endif;endprocess;endrtl;10第十页,共五十页,编辑于2023年,星期六VHDL标准数据类型IEEE标准数据类型用户自定义数据类型3.3.2数据类型11第十一页,共五十页,编辑于2023年,星期六数据类型含义整数(integer)整数,32位,-2147483647~2147483646实数(real)浮点数,-1.0e+38~+1.0e+38位(bit)逻辑“0”或“1”位矢量(bit_vector)位矢量布尔量(boolean)逻辑“假”或逻辑“真”字符(character)ASCII字符时间(time)时间单位(fs,ps,ns,us,ms,sec,min,hr)错误等级NOTE,WARNING,ERROR,FAILURE自然数,正整数整数的子集字符串(string)字符矢量VHDL标准数据类型
12第十二页,共五十页,编辑于2023年,星期六VHDL标准数据类型1、整数(INTEGER)
范围:-2147483547---2147483646,用range限定数的范围,如:variablea:integerrange0to9;2、实数(REAL)
范围:-1.0E38---1.0E38(仿真器中可用,综合器不支持)书写时一定要有小数。如:1.08#43.6#e+43、位(BIT)
数字系统中,信号经常用位的值表示,位的值用带单引号的‘1’和‘0’来表示。13第十三页,共五十页,编辑于2023年,星期六VHDL标准数据类型4、位矢量(BIT_VECTOR)
位矢量是用双引号括起来的一组位数据如:“010101”5、布尔量(BOOLEAN)
只有“真”和“假”两个状态,可以进行关系运算6、字符(CHARACTER)
字符量通常用单引号括起来,对大小写敏感。’A’与‘a’不同。明确说明1是字符时:CHARACTER(‘1’)14第十四页,共五十页,编辑于2023年,星期六VHDL标准数据类型7、字符串(STRING)
字符串是双引号括起来的由字母、数字或@、
%、$组成的一串字符。区分大小写。
如:“laksdklakld”“1010101010”8、时间(TIME)
时间的单位:fs,ps,ns,ms,sec,min,hr
例:10ns
整数数值和单位之间应有空格15第十五页,共五十页,编辑于2023年,星期六VHDL标准数据类型9、错误等级(SEVERITYLEVEL)
在VHDL仿真器中,错误等级用来表示系统的状态,共有4种:NOTE(注意)、ERROR(错误)、FAILURE(失败)、WARNING(警告)10、自然数(NATURAL)正整数(POSITIVE)
自然数是整数的一个子类型,包括0和正整数;正整数也是整数的一个子类型。16第十六页,共五十页,编辑于2023年,星期六IEEE标准数据类型
在IEEE库的程序包std_logic_1164中定义了两个非常重要的数据类型:
1、标准逻辑位(std_logic)
取值:’0’,’1’,’Z’,’X’,’W’,’L’,’H’等9种
注意:使用时必须大写,若用小写’z’表示取值高阻是错误的,必须用大写’Z’。
2、标准逻辑矢量(Std_logic_vector)
标准一维数组,数组中每个元素的数据类型均为标准逻辑位类型。Entity
eqcomp4
isPort(a,b:instd_logic_vector(3downto0);equal:outstd_logic);End
eqcomp4;17第十七页,共五十页,编辑于2023年,星期六IEEE标准数据类型注意:1、在使用“std_logic”和“std_logic_vector”时,在程序中必须声明库及程序包说明语句,即LIBRARYIEEE和std_logic_1164.ALL这两句在程序中必不可少。
2、std_logic有多个取值,与标准数据类型bit不同,在编程时应注意考虑全所有情况。18第十八页,共五十页,编辑于2023年,星期六VHDL运算符逻辑运算符AND、OR、NAND、NOR、XOR、NOT关系运算符=、/=、<、>、<=、>=算术运算符+、-、*、/并置(连接)运算符&3.3.3VHDL运算符与表达式19第十九页,共五十页,编辑于2023年,星期六类型操作符功能操作数数据类型算术运算符
+加整数-减整数
&并置一维数组*乘整数和实数(包括浮点数)
/除整数和实数(包括浮点数)MOD取模整数
REM取余整数
SLL逻辑左移BIT或布尔型一维数组
SRL逻辑右移BIT或布尔型一维数组
SLA算术左移BIT或布尔型一维数组
SRA算术右移
BIT或布尔型一维数组
ROL逻辑循环左移
BIT或布尔型一维数组
ROR逻辑循环右移
BIT或布尔型一维数组**乘方
整数
ABS取绝对值
整数20第二十页,共五十页,编辑于2023年,星期六类型操作符功能操作数数据类型关系运算符
=等于任何数据类型
/=不等于任何数据类型
<小于枚举与整数类型,及对应的一维数组
>大于枚举与整数类型,及对应的一维数组
<=小于等于枚举与整数类型,及对应的一维数组
>=大于等于枚举与整数类型,及对应的一维数组逻辑运算符
AND与BIT,BOOLEAN,STD_LOGIC
OR或BIT,BOOLEAN,STD_LOGIC
NAND与非BIT,BOOLEAN,STD_LOGIC
NOR或非BIT,BOOLEAN,STD_LOGIC
XOR异或BIT,BOOLEAN,STD_LOGIC
XNOR异或非BIT,BOOLEAN,STD_LOGIC
NOT非BIT,BOOLEAN,STD_LOGIC并置运算符
&连接位
BIT,BOOLEAN,STD_LOGIC21第二十一页,共五十页,编辑于2023年,星期六运算符优先级运算符优先级NOT,ABS,**
最高优先级REM,MOD,/,*-(负号),+(正号)
&,-
,
+
SRL,ROR,ROL,SRA,SLA,SLL,SRL
>=,<=,>,<,/=,=
XNOR,XOR,NOR,NAND,OR,AND最低优先级3.3.3VHDL运算符与表达式22第二十二页,共五十页,编辑于2023年,星期六注意:在C语言中逻辑运算有左右优先级顺序的规定,而在VHDL语言中,左右没有优先级差别。需加括号表示优先级。如:X<=aANDbORc;--错误
X<=(aANDb)ORc;--正确但若一个逻辑表达式中只有“AND”,”OR”,”XOR”运算符,那么改变运算顺序将不会导致逻辑的改变。此时,括号可以省略。逻辑运算符的使用如:
x<=aANDbANDcANDd;
x<=aORbORcORd;
x<=aXORbXORc;23第二十三页,共五十页,编辑于2023年,星期六注意:而在VHDL语言中,关系运算符<=也用于信号的赋值,要根据上下文判断符号<=是用于赋值还是小于等于。关系运算符的使用architecturertlofstartissignalcount:integerrange0to7;
beginprocess(clk)beginif(clk'eventandclk='1')then
count<=count+1;if(count=0)thencarryout<='1';elsecarryout<='0';endif;endif;endprocess;endrtl;24第二十四页,共五十页,编辑于2023年,星期六并置运算符“&”用于位的连接。并置运算可用于位的连接,形成位矢量;并置运算符可用于矢量的连接,形成新的矢量;并置运算可用于位和矢量的连接,形成新的矢量SIGNALa,b:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALq:STD_LOGIC_VECTOR(7DOWNTO0);q<=a&b;并置运算符的使用SIGNALa,b,c,d:STD_LOGIC;SIGNALq:STD_LOGIC_VECTOR(3DOWNTO0);q<=a&b&c&d;25第二十五页,共五十页,编辑于2023年,星期六表达式
VHDL语言中的表达式与其他高级程序设计语言非常相似,同样是由运算符将基本元素连接起来的式子。一个表达式,需要有两个要素:运算符和基本元素。基本元素包括对象名、文字、函数调用等的表达式。例如:a&b,b(6)&b(5)&b(4),
(A/B)*B+(AREMB),7REM(-2)等。3.3.3VHDL运算符与表达式26第二十六页,共五十页,编辑于2023年,星期六3.3.4基本顺序描述语句顺序语句:每一条顺序语句的执行顺序都和它们的书写顺序基本一致。只能出现在进程和子程序中。常用顺序语句赋值语句IF语句CASE语句(针对本门课程及教材列出的常用顺序语句)27第二十七页,共五十页,编辑于2023年,星期六3.3.4基本顺序描述语句1.赋值语句信号赋值语句
格式:目的信号量<=信号量表达式例:a<=b;注意:限定在进程、函数过程等顺序区域使用进程结束时起作用与小于等于的关系操作符的差别赋值符号两边的变量及表达式的数据类型和长度必须保持一致28第二十八页,共五十页,编辑于2023年,星期六3.3.4基本顺序描述语句1.赋值语句变量赋值语句格式:目的变量:=表达式例:c:=a+b;D:=3;注意:限定在进程、函数、过程等顺序区域使用变量赋值无延时特性,立即生效变量值具有局部性赋值符号两边的变量及表达式的数据类型和长度必须保持一致29第二十九页,共五十页,编辑于2023年,星期六3.3.4基本顺序描述语句2.IF语句格式一
IF条件
THEN
顺序执行语句
ENDIF;
例:IF(a=’1’)THENc<=b;ENDIF;
30第三十页,共五十页,编辑于2023年,星期六3.3.4基本顺序描述语句2.IF语句格式二
IF条件
THEN
顺序执行语句
ELSE
顺序执行语句
ENDIF;ARCHITECTURErtlOFmux2ISBEGINPROCESS(a,b,sel)BEGINIF(sel='1')THENc<=a;ELSEc<=b;ENDIF;ENDPROCESS;
ENDrtl;31第三十一页,共五十页,编辑于2023年,星期六3.3.4基本顺序描述语句2.IF语句格式三
IF
条件THEN
顺序执行语句
ELSIF条件
THEN
顺序执行语句
:
ELSIF条件
THEN
顺序执行语句
ELSE
顺序执行语句
ENDIF;
32第三十二页,共五十页,编辑于2023年,星期六3.3.4基本顺序描述语句3.CASE语句格式:CASE表达式
ISWHEN条件表达式=>顺序处理语句;END
CASE;其中WHEN的条件表达式可以有4种形式:WHEN值=>顺序处理语句;WHEN值|值|值|…|值=>顺序处理语句;WHEN值
TO值=>顺序处理语句;WHENOTHERS=>顺序处理语句;
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(a,b,i0,i1,i2,i3:INSTD_LOGIC; q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREmux4_behaveOFmux4IS
SIGNAL
sel:INTEGERRANGE0TO3;BEGINPROCESS(a,b,i0,i1,i2,i3)BEGINsel<=0;IF(a=‘1’)THENsel<=sel+1;ENDIF;IF(b=‘1’)THENsel<=sel+2;ENDIF;CASEselISWHEN0=>q<=i0;WHEN1=>q<=i1;WHEN2=>q<=i2;WHEN3=>q<=i3;ENDCASE;ENDPROCESS;ENDmux4_behave;
sel<=0;IF(a=‘1’)THENsel<=sel+1;ENDIF;IF(b=‘1’)THENsel<=sel+2;ENDIF;CASEselISWHEN0=>q<=i0;WHEN1=>q<=i1;WHEN2=>q<=i2;WHEN3=>q<=i3;ENDCASE;33第三十三页,共五十页,编辑于2023年,星期六3.3.5基本并行描述语句并行语句:位于Process外面,同时执行,不分位置的先后顺序常用并行语句进程语句并行信号赋值语句端口说明语句(针对本门课程及教材列出的常用并行语句)34第三十四页,共五十页,编辑于2023年,星期六1.进程语句在一个结构体中多个PROCESS语句可以同时并行的执行,该语句有如下特点:可以和其它进程语句同时执行,并可以存取构造体和实体中所定义的信号进程中的所有语句都按照顺序执行为启动进程,在进程中必须包含敏感信号表进程之间的通信是通过信号量来实现的3.3.5基本并行描述语句35第三十五页,共五十页,编辑于2023年,星期六1.进程语句
格式:
[进程名:]PROCESS[敏感信号表]
变量说明语句;
BEGIN
……
顺序处理语句;
……
ENDPROCESS[进程名];3.3.5基本并行描述语句Architecture
behavioral
ofeqcomp4is
begincomp:process(a,b)
begin
ifa=bthen equal<=‘1’;
else
equal<=‘0’;
endif;
endprocesscomp;end
behavioral;36第三十六页,共五十页,编辑于2023年,星期六2.并行信号赋值语句简单信号赋值语句条件信号赋值语句选择信号赋值语句3.3.5基本并行描述语句37第三十七页,共五十页,编辑于2023年,星期六2.并行信号赋值语句简单信号赋值语句格式:目的信号量<=信号量表达式例:a<=b;q<=c+d;
信号赋值语句在进程中使用是顺序语句,但是在进程外即在结构体中使用时为并发语句。
3.3.5基本并行描述语句38第三十八页,共五十页,编辑于2023年,星期六2.并行信号赋值语句条件信号赋值语句格式:
目的信号量<=表达式1WHEN
条件1ELSE
表达式2WHEN条件2ELSE
表达式3WHEN条件3ELSE
:
表达式n;3.3.5基本并行描述语句Signala,b,c,d:std_logic;Signalw,x,y,z:std_logic;……f<=wwhena=‘1’elsexwhenb=‘1’elseywhenc=‘1’elsezwhend=‘1’else‘0’;39第三十九页,共五十页,编辑于2023年,星期六2.并行信号赋值语句选择信号赋值语句格式:
WITH
选择表达式SELECT
赋值目标信号<=表达式1WHEN条件1,
表达式2WHEN条件2,
:
表达式nWHEN条件n;3.3.5基本并行描述语句Signals:std_logic_vector(1downto0);Signala,b,c,d,f:std_logic;……Withsselectf<=awhen“00”,bwhen“01”,cwhen“10”,
dwhen“11”,‘X’whenothers;40第四十页,共五十页,编辑于2023年,星期六2.并行信号赋值语句注意:条件信号赋值语句When-else语句条件语句可以是一个简单的表达式选择信号赋值语句With-select-when则不能采用表达式作为条件如:
a<=“0000”whenstate=idleandstate=‘1’else
“0001”whenstate=idleandstate=‘0’elsebwhenstate=runningandstate=‘1’elsea;3.3.5基本并行描述语句41第四十一页,共五十页,编辑于2023年,星期六3.端口说明语句
PORT端口说明语句用于设计实体和外部电路的接口通道说明,包含对每一个接口通道的名称、模式和数据类型的说明。3.3.5基本并行描述语句端口说明的一般格式为:
PORT(端口名{,端口名}:端口模式数据类型;端口名{,端口名}:端口模式数据类型);42第四十二页,共五十页,编辑于2023年,星期六几种语句的比较语句With-select-whenWhen-elseIf-elseCase-when选择条件一个信号的不同值,互斥多个信号多种组合,不必互斥多个信号多种组合,不必互斥一个信号的不同值,互斥语句属性并行并行顺序顺序用途编码、译码、多路选择器优先编码器,地址译码器优先编码器,地址译码器编码、译码、多路选择器状态机43第四十三页,共五十页,编辑于2023年,星期六在利用VHDL进行工程设计中,预先定义好的数据类型、子程序等设计单元的集合体(程序包),或预先设计好的各种设计实体(元件库程序包)等信息汇集在一个或几个库中以供调用。可以把库看成是一种用来存储预先完成的程序包和数据集合体的仓库。库(LIBRARY)的语句格式如下:
LIBRARY库名; 这一语句即相当于为其后的设计实体打开了以此库名命名的库,以便设计实体可以利用其中的程序包。如语句“LIBRA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋装修合同样本及注意事项
- 版砌体项目合同范本:墙体砌筑合作合同
- 网络信息安全保密协议
- 住宅简易改造合同模板
- 胃管非计划性拔管预防策略
- 2025年北京理工大学附中中考数学零模试卷
- 基础设施工程劳务承包合同
- 住宅委托管理合同模板
- 加油站经营权转让合同
- 标准货物仓储合同范本
- 面具的设计制作课件
- 病历书写规范细则(2024年版)
- 《国内手语翻译人才供求现状调研报告》
- 2023年西藏初中生物学业水平考试卷试题真题(含答案解析)
- 人教版八年级下册地理2024-2025学年八年级下册地理期末综合测试卷(二)(含答案)
- 护理学科建设规划
- 原始点医学(201904第15版)
- 环境监测知识培训
- 2024年湖南省高考化学试卷真题(含答案解析)
- 足球脚内侧踢地滚球技术教案
- 新职业英语综合教程学习通超星期末考试答案章节答案2024年
评论
0/150
提交评论