4_新的硬件描述语言VHDL编程基础.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:130 大小:1.7MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

4_新的硬件描述语言VHDL编程基础.ppt

4_新的硬件描述语言VHDL编程基础.ppt

预览

免费试读已结束,剩余 120 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第四章硬件描述语言VHDL编程基础第一节概述第一节概述2.VerilogHDL语言简介二、VHDL的优点VHDL的优点三、VHDL与高级语言的区别第二节VHDL程序结构1.USE定义区2.实体说明实体名类属表端口表:指明实体的输入、输出信号极其模式。端口表的一般格式为:PORT(端口名:端口模式数据类型……)端口模式:共四种:IN(输入)、OUT(输出)、INOUT(双向端口)、BUFFER(输出并向内部反馈)实体举例练习一练习一答案练习3.结构体VHDL结构体术语结构体结构图实体和结构体之间的关系Structure描述描述该设计单元的硬件结构,即该硬件是如何构成的,类似于数字电路中的逻辑图描述.DateFlow描述它是类似于寄存器传输级的方式描述数据的传输和变换,以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。与数字电路中的真值表描述相似。BehaviorProcess描述只描述所希望电路的功能或者电路行为(输入输出间转换的行为),而没有指明或涉及实现这些行为的硬件结构。与数字电路中的逻辑表达式描述相似。architectureoneofmux21issignald,e:bit;begind<=aand(not)s;e<=bands;y<=dore;endone;architectureoneofmux21isbeginy<=(aand(nots)or(bands);endone;BehaviorProcess描述结构体—行为描述举例操作案例第三节VHDL的基本数据类型(1)常量声明(2)变量声明变量赋值(3)信号声明信号赋值信号举例信号和变量的作用范围信号和变量的区别二、数据类型6)Bit(位):取值为0或1.7)Time(时间):取值范围与整数一致,一般用于仿真。8)Bit_vector(位矢量):基于BIT数据类型的数组。使用时必需注明宽度。9)Natural(自然数)和Positive(正整数):是整数的一个子类型。10)Severitylevel(错误等级):用来设计系统的工作状态。有四种状态值:NOTE(注意)、WARNING(警告)、ERROR(错误)、FAILURE(失败)。2.用户自定义的数据类型3.IEEE预定义标准逻辑位与矢量Std_Logic数据类型三、标识符四、运算符(2)关系运算符(3)逻辑运算符五、VHDL属性1.数值类属性2.函数类属性3.范围类属性练习ARCHITECTUREexample1OFFull_adderISBEGINsum<=aXORbXORc;c<=(aANDb)OR(bANDc)OR(aANDc);ENDexample1;第四节VHDL的基本描述语句1)IF布尔表达式1THEN顺序语句1ENDIF【例4-3】IF语句描述的判断程序(2选1)练习操作案例2.CASE语句使用CASE语句时应注意:条件句的选择值应在表达式的取值范围内.除非所有条件句中的选择值能完全覆盖case语句中表达式的取值,否则最后一个条件句中的选择必须用“others”表示.case语句中每一条件句的选择值只能出现一次,不能有相同选择值的条件语句出现.case语句执行中必须选中且只能选中所列条件语句中的一条.【例4-4】case语句描述的判断程序课后练习3.LOOP语句(4)NEXT语句:在LOOP语句中,用来跳出当前循环。其格式为:NEXT[循环标号][WHEN条件];(5)EXIT语句:用来结束LOOP语句的执行。其格式为:EXIT[循环标号][WHEN条件];利用LOOP语句可以简化同类顺序语句表达式.如:Signala,b,c:std_logic_vector(1to3)……FornIN1to3LOOPa(n)<=b(n)ANDc(n)ENDLOOP等效于:a(1)<=b(1)ANDc(1)a(2)<=b(2)ANDc(2)a(3)<=b(3)ANDc(3)4.NULL语句二、并行语句1.进程语句进程语句进程语句的格式如下:[标号:]PROCESS(敏感信号表)[说明语句];--------定义一些局部变量BEGIN[顺序语句];ENDPROCESS[标号:];敏感信号表LIBRARYieee;USEieee.std_logic_1164.all;ENTITYif_caseISPORT(a,b,c,d:INStd_Logic;sel:INStd_Logic_Vector(1downto0);y,z:OUTStd_Logic);ENDif_case;ARCHITECTURElogicOFif_caseISBEGINi