第四章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是一种强类型语言,对各种数据对象、数据类型,各种操作符、运算符以及文字书写都有严格的规定.
AlphaVPS是一家保加利亚本土主机商(DA International Group Ltd),提供VPS主机及独立服务器租用等,数据中心包括美国(洛杉矶/纽约)、德国、英国和保加利亚等,公司办公地点跟他们提供的保加利亚数据中心在一栋楼内,自有硬件,提供IPv4+IPv6,支持PayPal或者信用卡等方式付款。商家提供的大硬盘VPS主机,提供128GB-2TB磁盘,最低年付15欧元起,也可以选择...
提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...
DiyVM是一家成立于2009年的国人主机商,提供的产品包括VPS主机、独立服务器租用等,产品数据中心包括中国香港、日本大阪和美国洛杉矶等,其中VPS主机基于XEN架构,支持异地备份与自定义镜像,VPS和独立服务器均可提供内网IP功能。商家VPS主机均2GB内存起步,三个地区机房可选,使用优惠码后每月69元起;独立服务器开设在香港沙田电信机房,CN2线路,自动化开通上架,最低499元/月起。下面以...