VHDL语言及程序设计

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2014-7-2
21
数据类型转换
VHDL中,不同数据类型不能直接进行运算和代入,要进行运算或 代入必需对类型进行转换,使之一致
hwadee
2014-7-2
22
BIT_VECTOR与STD_LOGIC_VECTOR
代入STD_LOGIC_VECTOR的值只能是二进制,代入BIT_VECTOR的 值除二进制外还可以是八进制和十六进制
hwadee
2014-7-2
11
ARCHITECTURE的PROCESS子结构
PROCESS中的语句是顺序执行的,一个结构体中可以有多个 PROCESS,它们之间可以通过信号进行通信 PROCESS的启动受敏感信号控制,敏感信号的变化会直接导致 PROCESS的启动
hwadee
2014-7-2
hwadee
2014-7-2
18
用户自定义的数据类型




用户自定义的数据类型有枚举类型、整数类型和实数类型、数组类型、 记录类型四种 枚举类型: TYPE 数据类型名 IS (枚举文字,枚举文字,. . . .) 整数类型与实数类型是标准包中预定义的整数类型的子集,由于综合器 无法综合未限定范围的整数类型的信号或变量,故一定要用RANGE子 句为所定义整数范围限定范围以使综合器能决定信号或变量的二进制的 位数。 格式: TYPE 数据类型名 IS RANGE 约束范围; 数组类型:数组是同一类型数据集合,记录内元素类型可以不同 TYPE 数据类型名 IS ARRAY(下限 TO 上限) OF 类型名称,多维数组 不能生成逻辑电路,只能用于仿真图形 记录类型: TYPE 记录类型名 IS RECODE 元素名: 数据类型名; 元素名: 数据类型名; 。。。。。。。。。。。。。 END RECODE
分别有IN、OUT、 INOUT、BUFFER、 LINKAGE 常用的有INTEGER、 STD_LOGIC、 STD_LOGIC_VECTOR
hwadee
2014-7-2
8
ARCHITECTURE
所有能被仿真的实体都由结构体(ARCHITECTURE)描述,即 结构体描述实体的结构或行为,一个实体可以有多个结构体,每 个结构体分别代表该实体功能的不同实现方案 结构体格式: ARCHITECTURE 结构体名 OF 实体名 IS [定义语句(元件例化);] BEGIN 并行处理语句; END 结构体名; 结构体名是对本结构体的命名,它是该结构体的惟一名称,虽然 可以由设计人员自由命名,但一般都将命名和对实体的描述结合 起来,例如:行为描述(BEHAVE),寄存器传输级(RTL)
12
ARCHITECTURE的SUBPROGRAM子结构


与高级语言中的子程序概 念差不多,可以反复调用, 但不能重入,结构内语句 为顺序执行,有 Procedure和Function 之分 多个过程和函数汇集在一 起构成包集合,几个包集 合汇集在一起构成库
hwadee
2014-7-2
13
VHDL中的数据对象
hwadee
2014-7-2
23
数据类型的限定
VHDL中有时可以用上下文关系来判断某一数据的数据类型,如果不能判 断出来,就必需对数据进行类型限定,类似C中的强制类型转换
hwadee
2014-7-2
24
运算符:算术运算符,关系运算符,逻辑运算符与连接运算符
hwadee
2014-7-2
25
运算符的使用
库、包集合说明
实体说明
构造体
hwadee
2014-7-2
5
库和包集合的使用
库的说明总是放在设计单元的最前面,调用方法: LIRARY 库名 USE 库名.所要调用的程序包名.ALL 具体可打开安装目录C:\altera\quartus60\libraries\vhdl下相 应的文件进行学习 常用库和包集合:IEEE库中的包集合 STD_LOGIC_1164,STD_LOGIC_ARITH,STD_LOGIC_UN SIGNED,其中后两个包在日本synopsys(新思)公司目录中,该公 司在FPGA行列还推出了prime time静态时序分析工具 STD库中STANDARD包集合是VHDL的标准配置,使用时可以不 说明 WORK库:VHDL现行工作库,可以理解为用户当前编辑的目录中 所有可用的包和数据集
hwadee
2014-7-2
17
IEEE预定义的标准逻辑位与矢量
STD_LOGIC:工业标准的逻辑类型,取值 为‘0’、‘1’、‘Z’、‘X’(强未知)、‘W’ (弱未知)、‘L’(弱0)、‘H’(弱1)、 ‘—’(忽略)、‘U’(未初始化),只有前 四种具有实际物理意义,其他的是为了与模 拟环境相容才保留的 STD_LOGIC_VECTOR:工业标准的逻辑类 型集,STD_LOGIC的组合
hwadee
2014-7-2
27
赋值语句
顺序语句
赋值语句分为变量赋值和信号赋值,区 别如下:
hwadee
2014-7-2
3
VHDL语言程序的基本构成
库、包集合:用于存放预先编译好的程序包 (PACKAGE)和数据集合体,以便不同 的VHDL设计使用 实体说明:规定设计单元的输入输出接口 信号和引脚 构造体:定义设计单元的具体构造和操作
hwadee
2014-7-2
4
VHDL语言程序的基本构成示例



变量(VARIABLE):用于声明局部值或用于子程序中,变量的
赋值符号为“:=”, 定义格式: VARIABLE 变量名: 数据类型[:=初始值]
hwadee
2014-7-2
14
VHDL中的信号与变量
信号是实际的,是内部的一个存 储元件(SIGNAL)或者是外部 输入(IN、OUT、INOUT、 BUFFER) 变量是虚的,仅是为了书写方便 而引入的一个名称,常用在实现 某种算法的赋值语句当中 如果在一个进程中多次为一个信 号赋值,只有最后一个值会起作 用 ,这与SIGNAL的硬件特性 有关 变量赋值时,变量的值改变是立 即发生的 信号赋值用“<=”,变量赋值用 “:=”
hwadee
2014-7-2
9
Exemple of ARCHITECTURE
hwadee
2014-7-2
10
ARCHITECTURE的BLOCK子结构
子结构的使用使设计者可以把整个电路分成若干个相对独立的模块来进 行描述 子结构有:BLOCK,PROCESS,SUBPROGRAMS BLOCK与ARCHITECTURE相当于整体原理图与子原理图关系,结 构内部语句是并发的,如希望BLOCK有条件执行,可采用卫式 BLOCK,如下:
VHDL硬件描述语言及应用
-----------一种很好的数字系统硬件电路的形式化描述实现
VHDL语言概述
HDL:Hardware Description Language
VHDL:由美国国防部开发,1987年由IEEE标 准化,1993年进一步修订
Verilog:1983年由Gateway Design Automation 公司开发, 1990年被推向公众领域, 1995年成为 IEEE标准
建议:VHDL比较严谨,Verilog比较自由,初学 还是用VHDL比较好,初学用Verilog会比较容易 出错
hwadee 2014-7-2 2
VHDL中的注意事项
在VHDL语言中,大小写不加区分,但 在代码中巧妙应用大小写,可以使代码 变得易于阅读和规范 实体名必须与VHDL文件名相同,否则 编译会出错 信号与变量,过程与函数的区分
hwadee
2014-7-2
26
VHDL的主要描述语句
顺序描述语句和并发描述语句是VHDL程 序设计中两大基本描述语句系列 顺序描述语名只出现在PROCESS和 SUBPROGRAM中,语句按出现的次序加以 执行 对于FPGA搭建的应用系统,元件在定义的仿 真时该应该是并发工作的,并发语句就用于 表示这种并发行为
逻辑运算、算术运算、关系运算的左右以及代入的数据类型一定 要相同 VHDL中左右没有优先级的差异,如 x<=(a AND b) OR (NOT c AND d) 能真正综合的算术运算符只有“+”,“-”,“*”;“MOD”, “REM”,“/”分母是2乘方时可综合,由于硬件特性,后4种应 慎用,最好作适当变通 “《=”应通过上下文关系判定是关系运算符还是代入符 位的连接也可以采用集合的方式,把并置符改成“,”即可,如: temp_4<=(‘1’,‘0’,‘1’,‘0’);其中temp_4为4位宽的位 失量,但这种方式不能用于位失量连接,如: temp_4<=(temp_2,temp_2);就是错误的
hwadee
2014-7-2
16
标准定义的数据类型
Boolean布尔量:取值为FALSE和TRUE CHARACTER字符:ASCII字符,编程时用单引号括起来,如‘A’ STRING字符串:字符失量,双引号括起来,如“ADFBD” INTEGER整数:32位,范围从-(231-1)到(231-1); REAL实数:实数类型仅能在VHDL仿真器中使用,综合器不支持 BIT位:取值为0或1; TIME时间:范围从-(231-1)到(231-1),表达方法包含数字、 (空格)单位两部分,如(10 PS); BIT_VECTOR位矢量:其于BIT数据的数组,使用矢量必须注明宽度, 即数组中的元素个数和排列,如SIGNAL A: BIT_VECTOR (7 DOWNTO 0) NATUREAL自然数:整数的一个 POSITIVE正整数: SEVRITY LEVEL错误等级:在VHDL仿真器中,错误等级用来设计系 统的工作状态,共有四种可能的状态值:NOTE,WARNING,ERROR 和FAILURE
201百度文库-7-2 15



hwadee
VHDL的数据类型
VHDL是一种强类型语言,对于每一个常数、 变量、信号、函数及设定的各种参量的数据 类型(DATA TYPES)都有严格要求,相同 数据类型的变量才能互相传递和作用,标准 定义的数据类型都在VHDL标准程序表STD中 定义,实际使用中,不需要用USE语句以显 式调用 VHDL常用的数据类型有三种:标准定义的 数据类型、IEEE预定义标准逻辑位与矢量及 用户自定义的数据类型
在逻辑综合中,VHDL常用的数据对象有信号、变量及常量 信号SIGNAL:为全局变量,定义格式: SIGNAL 信号名: 数据类型[:=初始值]; 赋值格式: 目标信号名<=表达式 常在结构体中用赋值语句完成对信号赋初值的任务,因为综合器往往忽略信号声 名时所赋的值 常量:全局变量,在设计中描述某一规定类型的特定值不变,如利用它可设计 不同模值的计数器,模值存于一常量中,对不同的设计,改变模值仅需改变此常 量即可,就如上一章所说的参数化元件。 定义格式: CONSTANT 常数名:数据类型:=表达式
hwadee 2014-7-2 6
实体(ENTITY)
实体类似于原理图中的一个部件符号,它并不描述 设计的具体功能,只是定义所需的全部输入/输出信 号。实体格式如下:
ENTITY 实体名 IS
[GENERIC(常数名:数据类型[:设定值])] PORT 端口说明 (端口信号名1: 模式 类型; 端口信号名2: 模式 类型; 端口信号名3: 模式 类型; 端口信号名4: 模式 类型); END 实体名; 类属说明
hwadee
2014-7-2
19
用户自定义的数据类型举例
RANGE<>其范围一般由调用者传递的参数决定
hwadee
2014-7-2
20
用户自定义的子类型
对已定义类型作一些范围限制(也可以与原数据类型 完全一致),定义格式为: SUBTYPE 子类型名 IS 数据类型名(范围)
hwadee
实体名:实体名必须与VHDL文件名相同,否则编 译会出错
hwadee 2014-7-2 7
Exemple of ENTITY
GENERIC所定义的元件叫做参数化元件, 即元件的规模或特性由GENERIC的常数 决定,利用GENERIC可以设计更加通用 的元件,弹性地适应不同的应用
端口信号名在实体之中必须是唯一 的,信号名应是合法的标识符
相关文档
最新文档