第四章VHDL编程基础主要内容硬件描述语言及其特点VHDL程序基本结构VHDL语言要素VHDL结构体描述方式4.
1硬件描述语言及其特点4.
1.
1硬件描述语言的基本概念硬件描述语言很好地解决了文本语言描述和逻辑图描述存在的不足.
它是一种类似于C、C++的计算机高级语言,允许设计者通过精确定义的语句描述逻辑网络的任何操作,更重要的可以通过计算机仿真设计好的逻辑网络,而且仿真中包含了硬件特性.
4.
1.
2常用硬件描述语言简介目前常用的硬件描述语言有VHDL、Verilog、AHDL和ABEL语言.
VHDL的英文全名是VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,1982年发源于美国国防部,1987年底被和美国国防部确认为标准硬件描述语言.
1993年,IEEE对VHDL进行了修订,公布了新版本的VHDL,即IEEE标准的1076-1993版本.
4.
1硬件描述语言及其特点(续)4.
1.
3VHDL特点VHDL具有更强的行为描述能力支持团队设计模式系统设计与硬件结构无关具有较强的预测能力自动化程度高具有极强的移植能力4.
2VHDL程序基本结构4.
2.
1实体描述实体是一个模块的表层设计单元,其功能是该模块与外部电路进行接口的描述,它定义了模块的输入输出接口信号或引脚,是模块经封装后对外的一个通信界面.
ENTITYsimplegateISPORT(A,B,C:INBIT;F:OUTBIT);ENDsimplegate;4.
2.
1实体描述(续)端口声明的语句格式是:标识符:端口模式数据类型;VHDL可综合的端口模式有以下四种:"IN"通道为单向只读模式,规定数据只能通过此端口被读入实体中.
"OUT"通道为单向输出模式,规定数据只能通过此端口从实体向外流出,或者说可以将实体中的数据向此端口赋值.
"INOUT"定义的通道确定为输入输出双向端口,即从端口的内部看,可以对此端口进行赋值,也可以通过此端口读入外部的数据;而从端口的外部看,信号既可以从此端口流出,也可以向此端口输入信号,如RAM的数据端口.
"BUFFER"功能与INOUT类似,区别在于当需要输入数据时,只允许内部回读输出的信号,即允许反馈.
4.
2.
2结构体描述定义好模块的实体以后,就可以用结构体声明描述模块具体做什么,实现怎样的逻辑功能.
最典型的结构体描述方式有以下三种:行为描述:不考虑硬件实现的途径,直接建立输入与输出之间的关系.
结构描述:通过组合如基本逻辑门电路等更初级的部件构造实现逻辑功能.
数据流描述:通过定义模块中信号的流动方向描述模块功能,也可以看作一种特殊的行为描述模式.
4.
2.
2结构体描述(续)VHDL语言中,结构体描述的一般形式如下:ARCHITECTURE结构体名OF实体名IS说明语句1;说明语句2;…BEGIN功能描述语句1;功能描述语句2;END结构体名;4.
2.
3模块设计实例--双输入与非门实体描述ENTITYnand2ISPORT(A,B:INBIT;F:OUTBIT);ENDnand2;--以下是双输入与非门的结构体描述ARCHITECTUREbehavioralOFnand2ISBEGINF)OFSTD_LOGIC;使用时须加入下面的库语句:LIBRARYIEEE;USEIEEESTD_LOGIC_1164.
ALL;4.
3.
3VHDL数据类型(DataType)(续2)3.
自定义数据类型枚举类型(ENUMERATED)是用文字符号代替一组实际的二进制数的特殊数据类型,如,将一个星期WEEK定义为7状态的枚举数据类型:TYPEWEEKIS(sun,mon,tue,wed,thu,fri,sat);整数类型(INTEGER)和实数类型(REAL)对己作过预定义的数据类型,做取值范围约束.
如:定义数nat的取值范围为0~255TYPEnatISINTEGERRANGE0TO255;数组类型(ARRAY)可以定义约束型数组和未约束型数组.
约束型数组定义格式如下:TYPE数组名ISARRAY(数组下标范围)OF数据类型;记录类型(RECORD)4.
3.
3VHDL数据类型(DataType)(续3)4.
数据类型转换使用类型标记符实现数据类型转换例如:VARIABLEA:INTEGER;VARIABLEB:REAL;A:=integer(B);--变量B取整后赋值给变量AB:=real(A);--变量A加上小数点变成实数后赋值给变量B使用类型转换函数实现类型转换函数名功能备注TO_BIT()由STD_LOGIC转换为BITSTD_LOGIC_1164程序包TO_BIT_VECTOR()由STD_LOGIC_VECTOR转换为BIT_VECTORTO_STD_LOGIC()由BIT转换为STD_LOGICTO_STD_LOGIC_VECTOR()由BIT_VECTOR转换为STD_LOGIC_VECTORCON_STD_LOGIC_VECTOR()由INTEGER转换为STD_LOGIC_VECTORSTD_LOGIC_ARITH程序包CON_INTEGER()由STD_LOGIC_VECTOR转换为INTEGERSTD_LOGIC_ARITH程序包STD_LOGIC_UNSIGNED程序包4.
3.
4VHDL操作符1.
算术操作符求和操作符:包括加法操作符、减法操作符和并置操作符.
符号操作符:包括"+"(正)和"-"(负)两种操作符.
求积操作符:包括*(乘)、/(除)、MOD(取模)和RED(取余)四种.
混合操作符:包括乘方"**"和取绝对值"ABS"两种.
移位操作符:包括SLL(逻辑左移)、SRL(逻辑右移)、SLA(算术左移)、SRA(算术右移)、ROL(逻辑循环左移)和ROR(逻辑循环右移)六种操作符.
例4.
3利用移位操作实现的3-8译码器设计.
LIBRARYIEEE;USEIEEE.
STD_LOGIC_1164.
ALL;USEIEEE.
NUMERIC_STD.
ALL;ENTITYdecoder3_8ISPORT(cod:INNATURALRANGE0TO7;Sult:OUTUNSIGNED(7DOWNTO0));ENDdecoder3_8;ARCHITECTUREbehaveOFdecoder3_8ISCONSTANTnum:UNSIGNED(7DOWNTO0):="00000001";BEGINSulta,in_b=>b,out_s=>v,out_co=>u);--端口映射U2:H_adderPORTMAP(in_a=>v,in_b=>ci,out_s=>s,out_co=>w);U3:Or_2PORTMAP(x=>u,y=>w,z=>co);ENDStructural;本章小结本章作为VHDL语言的编程基础主要介绍了VHDL语言的特点,VHDL程序基本结构,VHDL语言要素和构造体的几种描述方式.
硬件描述语言的种类很多,但只有VHDL和Verilog已经成为IEEE标准.
不同于其他高级语言,为了更准确地描述硬件电路的特征,VHDL语言的程序结构采用将实体和结构体分别进行描述.
VHDL是一种强类型语言,对各种数据对象、数据类型,各种操作符、运算符以及文字书写都有严格的规定.
Hostadvice主机目录对我们的服务进行了测试,然后给PQ.hosting颁发了十大WordPress托管奖。为此,宣布PQ.Hosting将在一周内进行折扣优惠,购买和续订虚拟服务器使用优惠码:Hostadvice ,全部优惠10%。PQ.hosting,国外商家,成天于2019年,正规公司,是全球互联网注册商协会 RIPE 的成员。主要是因为提供1Gbps带宽、不限流量的基于KVM虚拟的V...
我们在选择虚拟主机和云服务器的时候,是不是经常有看到有的线路是BGP线路,比如前几天有看到服务商有国际BGP线路和国内BGP线路。这个BGP线路和其他服务线路有什么不同呢?所谓的BGP线路机房,就是在不同的运营商之间通过技术手段时间各个网络的兼容速度最佳,但是IP地址还是一个。正常情况下,我们看到的某个服务商提供的IP地址,在电信和联通移动速度是不同的,有的电信速度不错,有的是移动速度好。但是如果...
racknerd怎么样?racknerd最近发布了一些便宜美国服务器促销,包括大硬盘服务器,提供120G SSD+192TB HDD,有AMD和Intel两个选择,默认32G内存,1Gbps带宽,每个月100TB流量,5个IP地址,月付$599。价格非常便宜,需要存储服务器的朋友可以关注一下。RackNerd主要经营美国圣何塞、洛杉矶、达拉斯、芝加哥、亚特兰大、新泽西机房基于KVM虚拟化的VPS、...