第9章 VHDL结构与要素

合集下载

vhdl程序的基本结构vhdl程序一般由5个部分组成

vhdl程序的基本结构vhdl程序一般由5个部分组成

块语句
块标号:BLOCK[保护表达式] [类属子句;] [端口子句;] [块说明部分;] BEGIN
<块语句部分;>
; END BLOCK 块标号
类属子句用于参数的定义;端口子句用于信号的定义; 块说明部分对该块要用到的信号、常数、元件和子程序 等进行说明;块语句部分对该块的功能进行描述,块语 句部分的语句是并行执行的,和书写顺序无关。
缺省说明: library std; use std.standard.all;
常用库及其程序包
IEEE: IEEE认可的标准库 std_logic_1164:定义了 std_logic, std_logic_vector, std_ulogic, std_ulogic_vector 等数据类型
VHDL 程序的基本结构
设计实体
实体说明
构造体
设计实体的组成
实体说明
Entity <实体名> is
[类属说明;] [端口说明;]
[实体说明部分;] [实体语句部分;] End [entity]<实体名>;
最简单的例: entity nothing is end nothing;
实体说明--类属说明
类属为设计实体和外部环境通讯的静态通信提供通道。可以定
实体说明--实体语句部分
是设计实体接口的共同部分。只能由并行断 言语句、并行过程调用语句、被动进程语 句组成,且不能在语句中给信号赋值。
设计实体
实体说明
构造体
设计实体的组成
构造体
architecture <构造体名> of <实体名> is
[构造体说明语句;]
Begin
<功能描述语句;>

VHDL语言的基本要素(大全)

VHDL语言的基本要素(大全)

VHDL语言的基本要素一、数据对象VHDL语言的主要数据对象有信号,变量,常量。

信号—信号是电路中的物理量,对应于电路的连线、节点;信号说明全局量,用于描述中的构造体(Architecture), 实体(Intity),程序包(package)。

变量—变量是程序运算中的中间量,并不对应电路中的物理量。

变量说明局部量,用于进程语句(process), 函数(Function), 过程(procedure)。

常量—常数也不对应电路中的物理量,当常量说明全局量,在构造体(Architecture), 实体(Intity),程序包(package),进程语句(process), 函数(Function), 过程(procedure)中均可使用。

数据对象的定义格式:signal 信号名:数据类型,约束条件,表达式Variable 变量名:数据类型,约束条件:=表达式Constant 常量名:数据类型,约束条件:=表达式例如:Variable count:INTEGER RANGE 0 TO 255:=10Constant Daly:Time:=100ns信号代入和变量赋值的区别:两者形式不同,操作过程也不相同。

变量赋值符“:=”,信号的代入符“<=”。

在变量的赋值语句中,该语句一当执行,其值立即将赋予变量;而信号的代入,其语句执行后不会立即使信号发生代入,在下条语句执行时,仍使用原来的信号值,如进程语句中的敏感表的信号代入就是如此。

二、数据类型VHDL语言中的数据类型,一般而言可分为:标量类型和组合类型。

在实际使用中,也可分成予定义类型和用户定义类型。

VHDL语言是强类型的语言,主要可按如下分类和变换处理。

①标准数据类型⑴整数⑵实数(浮点数)-1.0E+38~+1.0E38 ⑶位bit(0,1)⑷位矢量⑸布尔量,“假”,“真”⑹字符(ASCⅡ)字符⑺时间⑻错误等级⑼自然数(大于等于0的整数)⑽字符串(字符矢量)②用户定义的数据类型TYPE 数据类型名{数据类型名} 数据类型定义⑴枚举类型⑵整数类型⑶实数类型⑷数组类型⑸存取类型⑹文件类型⑺记录类型⑻时间类型③用户定义子类型SUBTUPE 子类型名IS 数据类型名[范围]例:SUBTYPE digit is INTEGER RANGE 0 TO 9④数据类型转换数据类型的变换函数通常由“STD_LOGIC_1164”,“STD_LOGIC_ARITH”,“STD_LOGIC_UNSIGNED”的程序包提供例如,在STD_LOGIC_1164程序包中,TO_STD LOGIC VECTOR(A) 由BIT_VECTOR转换为STD_LOGIC_VECTORTO_BITVECTOR(A) 由STO_LOGIC_VECTOR转为BIT_VECTORTO_STDLOGIC(A) 由BIT转换为STD_LOGICTO_BIT(A) 由STD_LOGIC转换成BIT signal a: BIT_VECTOR(11 DOWNTO 0)signal b: STD_LOGIC_VECTOR(11 DOWNTO 0)a<=X”A8” 十六进制值可赋予位矢量b<=X”A8” 语法错,十六进制不能赋予.STD 矢量b<=TO_STDLOGICVECTOR(X“AF7”)b<=TO_STDLOGICVECTOR(O“5177”)八进制变换b<=TO_STDLOGICVECTCR(B“1010_1111_0111”)下表中也给出一些典型的类型变换函数三、运算符运算符的优先级如下表所示:运算符的优先级例如,并置运算符的使用:tmp_b<=b AND (en&en&en&en) y <= a & tmp_b第一个语句表示b 的4位位矢量由en 进行选择 得到一个4位位矢量输出第二个语句表示4位位矢量a 和4位位矢量b 再 次连接(并置)构成8位的位矢量y 输出 右图所示为并置运算符操作的电路示意。

EDA 第9章 VHDL结构与要素

EDA 第9章 VHDL结构与要素
9.7.2 字符串
“B”、 “X”
“O ” 、
9.7 VHDL文字规则
9.7.3 标识符及其表述规则
9.7 VHDL文字规则
9.7.4 下标名
9.8 数 据 类 型
● 标量型(Scalar Type):包括实数类型、整数类型、枚举类 型、时间类型。 ● 复合类型(Composite Type):可以由小的数据类型复合而 成,如可由标量型复合而成。复合类型主要有数组型(Array) 和记录型(Record)。 ● 存取类型(Access Type):为给定的数据类型的数据对象 提供存取方式。 ● 文件类型(Files Type):用于提供多值存取类型。
7. 字符串类型
8. 时间类型
9.8 数 据 类 型
9.8.1 VHDL预定义数据类型
9. 文件类型
9.8 数 据 类 型
9.8.2 IEEE预定义标准逻辑位与矢量
1. 标准逻辑位数据类型
2. 标准逻辑矢量数据类型
9.8 数 据 类 型
9.8.3 其他预定义标准数据类型
1. 无符号数据类型
9.8 数 据 类 型


9-10 判断下列VHDL标识符是否合法,如果有误则指出原因: 16#0FA#, 10#12F#, 8#789#, 8#356#, 2# 0101010# 74HC245 , \74HC574\, CLR/RESET, \IN 4/SCLK\, D100% 9-11 数据类型BIT、INTEGER和BOOLEAN分别定义在哪个库中?哪 些库和程序包总是可见的? 9-12 函数与过程的设计与功能有什么区别?调用上有什么区别?
3. 功能描述语句结构 ● 进程语句 ● 信号赋值语句 ● 子程序调用语句 ● 元件例化语句

第九讲VHDL结构及语言要素

第九讲VHDL结构及语言要素

2006-10
26
7)实数(REAL) 或称浮点数
取值范围:-1.0E38 ~ +1.0E38 实数类型仅能用于VHDL仿真器,一般综合器 不支持。
8)字符串(string) string 是 character 类型的一个非限定数组。用
双引号将一串字符括起来。如:
variable string_var : string(1 to 7);
2006-10
14
1、常量说明
常量说明:对某一个常量名赋予一个固定的值。 格式:
constant 常数名:数据类型:= 表达式;
例: constant data: bit_vector(3 downto 0):=“1010”
constant width: integer: = 8; constant x: new_bit: = ‘x’; 常量数据类型必须与表达式的数据类型一致。
b:=not a;
2006-10
17
3、信号说明
电子硬件系统运行的基本特性:
各部分电路工作的并行特性;
信号传输过程中的延时特性;
多驱动源的总线特性;
时序电路中触发器的记忆特性等。
信号是电子系统内部硬件连接和硬件特性的抽 象表示。用来描述硬件系统的基本特性。
信号定义格式:
signal 信号名:数据类型 约束条件:= 表达式;
注:‘_’用以提高数字可读性;数字间不允许空

2006-10
2
2、字符串型文字
按字符个数多少分为: 字符:用单引号引起来的ASCII字符,可以是
数值,也可以是符号或字母。 如:‘A’,‘*’,‘Z’ 字符串:用双引号引起来的一维字符数组
2006-10

VHDL语言的基本结构

VHDL语言的基本结构
1 实体说明 1)实体语句结构 ENTITY 实体名 IS [GENERIC(类属表);] [PORT(端口表);] END ENTITY 实体名 2)类属参数说明 GENERIC([常数名:数据类型[:设定值] {;常数名:数据类型[:设定值]};
4
一、VHDL语言设计的基本单元及其构成
3)端口说明 PORT(端口名{,端口名}:方向 数据类型; 是对设计实体与外部接口 的描述,即对元件引脚、 ┇ 数据类型和I/O方向的描述 端口名{,端口名}:方向 数据类型); 1端口名
设计实体
进程 或其它并行结构 结构体 n (ARCHITECTURE 进程 或其它并行结构
配置(CONFIGURATION)
VHDL程序设计实体的一般结构
2
VHDL语言的基本结构
主要内容
一、 VHDL语言设计的基本单元及其构成 二、 VHDL语言构造体的子结构描述 三、 包集合、库及配置
3
一、VHDL语言设计的基本单元及其构成
VHDL语言
15
二、VHDL语言构造体的子结构描述
【例】4位二进制加法计数器构造体逻辑描述。
SIGNAL cnt4:INTEGER RANGE O TO 15; ... PROCESS(clk,clear,Stop) BEGIN IF clear='0' THEN cnt4<=0; ELSIF clk'EVENT AND clk='1' THEN IF stop='0' THEN cnt4<=cnt4+1; END IF; END IF; END PROCESS; --注意cnt4的数据类型
存盘文件 为 bpac.vhd

第九章VHDL结构与要素(2)

第九章VHDL结构与要素(2)

END 程序包名;
9.5 程序包
【例9-16】 PACKAGE pacl IS -- 程序包首开始 TYPE byte IS RANGE 0 TO 255 ; -- 定义数据类型byte SUBTYPE nibble IS byte RANGE 0 TO 15 ; -- 定义子类型nibble CONSTANT byte_ff : byte := 255 ; -- 定义常数byte_ff SIGNAL addend : nibble ; -- 定义信号addend COMPONENT byte_adder -- 定义元件 PORT( a, b : IN byte ; c : OUT byte ; overflow : OUT BOOLEAN ) ; END COMPONENT ; FUNCTION my_function (a : IN byte) Return byte ; -- 定义函数 END pacl ; -- 程序包首结束 LIBRARY WORK; USE WORK.PACL.ALL;
【例9-17】 PACKAGE seven IS SUBTYPE segments is BIT_VECTOR(0 TO 6) ; TYPE bcd IS RANGE 0 TO 9 ; END seven ; USE WORK.seven.ALL ; -- WORK库默认是打开的, ENTITY decoder IS PORT (input: bcd; drive : out segments) ; END decoder ; ARCHITECTURE simple OF decoder IS BEGIN WITH input SELECT drive <= B"1111110" WHEN 0 , B"0110000" WHEN 1 , B"1101101" WHEN 2 , B"1111001" WHEN 3 , B"0110011" WHEN 4 , B"1011011" WHEN 5 , B"1011111" WHEN 6 , B"1110000" WHEN 7 , B"1111111" WHEN 8 , B"1111011" WHEN 9 , B"0000000" WHEN OTHERS ; END simple ;

第9章VHDL结构与要素

第9章VHDL结构与要素

9.8 数 据 类 型
9.8.1 VHDL预定义数据类型
7. 字符串类型
8. 时间类型
9.8 数 据 类 型
9.8.1 VHDL预定义数据类型
9. 文件类型
9.8 数 据 类 型
9.8.2 IEEE预定义标准逻辑位与矢量
1. 标准逻辑位数据类型
2. 标准逻辑矢量数据类型
9.8 数 据 类 型
9.3.4 决断函数
决断函数不可综合,主要用于VHDL仿真中解决信号被多个驱动源 驱动时,驱动信号间的竞争问题。
当多个驱动源都同时产生一个处理事项,只有其中一个驱动源的 信号值能赋给被驱动的信号。
决断函数输入一般是单一变量,多个驱动源的信号值组成非限定 数组, 多个信号驱动源,其信号值组成的未限定数组可依次类推。
9.9 VHDL操作符
9.9.1 逻辑操作符
9.9 VHDL操作符
9.9.1 逻辑操作符
9.9 VHDL操作符
9.9.1 逻辑操作符
9.9 VHDL操作符
9.9.1 逻辑操作符
9.9 VHDL操作符
9.9.2 关系操作符
“ = ”(等于)、“/=”(不等于)、“ >”(大于)、 “< ”(小于)、“>=”(大于等于)和“<=”(小于等于)
实验与设计
9-1 乐曲硬件演奏电路设计
(1)实验目的: (2)实验原理:
实验与设计
9-1 乐曲硬件演奏电路设计
(1)实验目的: (2)实验原理:
实验与设计
9-1 乐曲硬件演奏电路设计
(3)实验内容1: (4)实验内容2: (5)实验内容3: (6)实验内容4: (7)实验内容5: (8)实验内容6: (9)实验内容7: (10)实验报告:5E+系统的演示文件: /KX_7C5EE+/EXPERIMENTs/EXP4_Music/。

第9章VHDL结构与要素

第9章VHDL结构与要素
存放已经编译的实体、结构体、包集合和配置
2019/7/24
2
9.1 实体
VHDL实体作为一个设计实体(独立的电路功能结构)的组成部分,其功能是 对这个设计实体与外部电路进行接口描述。
实体是设计实体的表层设计单元,实体说明部分规定了设计单元的输入输 出接口或引脚,它是设计实体对外的一个通信界面。
它可以是一个简单的数字电路,也可以是复杂的数字电路,但基本构成是 一致的。
通常命名为behavioral(行为), dataflow(数据 流),structural(结构)
位于ARCHITECTURE和BEGIN之间,对信号、常数、数据类型、函数 进行定义
位于BEGIN和END之间,描述构造体的行为及连接关系
2019/7/24
7
在HDL设计中,设计者将自上至下分为3个层次:
2. 有符号数据类型(SIGNED TYPE)
例如: SIGNED'("0101") 代表 +5,5 SIGNED'("1011") 代表 –5
2019/7/24
变量var有11位数值, 最高位是var(0)
信号sig有6位数值, 最高位是sig(5)
最高位是符号位
16
9.9 VHDL语言的运算操作符
实体名 端口名 方向
实体
进 程 语
结 构 体

2019/7/24
4
一、实体说明
基本结构:ENTITY 实体名 IS [类属参数说明]; [端口说明]; END 实体名;
1、类属参数说明 必须放在端口说明之前,用于指定参数。
如:q<=tmp AFTER m;说明tmp建立一个延时值。 GENERIC(m:TIME:=1ns);构造体内m的值为1ns。 2、端口说明
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

9.1 实

9.1.3 参数传递映射语句
9.1 实

9.1.4 端口说明语句
9.2 结 构 体
1. 结构体的一般语言格式
2. 结构体说明语句
9.2 结 构 体
3. 功能描述语句结构 ● 进程语句 ● 信号赋值语句 ● 子程序调用语句 ● 元件例化语句
9.3 子 程 序
9.3.1 函数
9.3 子 程 序


9-14 运算符重载函数通常要调用转换函数,以便能够利用已有的数据类型。下 运算符重载函数通常要调用转换函数,以便能够利用已有的数据类型。 面给出一个新的数据类型AGE,并且下面的转换函数已经实现: 面给出一个新的数据类型 ,并且下面的转换函数已经实现: function CONV_INTEGER(ARG: AGE)return INTEGER; 仿照本章中的示例,利用此函数编写一个“ ”运算符重载函数, 仿照本章中的示例,利用此函数编写一个“+”运算符重载函数,支持下面的 运算: 运算: SIGNAL a,c : AGE; , ... c <= a + 20; 9-15 用两种方法设计 位比较器,比较器的输入是两个待比较的 位数 用两种方法设计8位比较器 比较器的输入是两个待比较的8位数 位比较器, A=[A7..A0]和B=[B7..B0],输出是 D、E、F。当A=B时D=1;当A>B时E=1; 和 , 、 、 。 时 ; 时 ; 当A<B时F=1。第一种设计方案是常规的比较器设计方法,即直接利用关系操 时 。第一种设计方案是常规的比较器设计方法, 作符进行编程设计;第二种设计方案是利用减法器来完成, 作符进行编程设计;第二种设计方案是利用减法器来完成,通过减法运算后的 符号和结果来判别两个被比较值的大小。 符号和结果来判别两个被比较值的大小。对两种设计方案的资源耗用情况进行 比较,并给以解释。 比较,并给以解释。 9-16 利用循环语句和移位操作符实现移位相加方式的纯组合电路 位乘法器设 利用循环语句和移位操作符实现移位相加方式的纯组合电路8位乘法器设 计。
EDA技术实用教程 技术实用教程
第9章 VHDL结构与要素 结构与要素
9.1 实

9.1.1 实体语句结构
9.1 实

9.1.2 参数传递说明语句
9.1 实

9.1.2 参数传递说明语句
9.1 实

9.1.2 参数传递说明语句
9.1 实

9.1.3 参数传递映射语句
9.1 实

9.1.3 参数传递映射语句
9.8.1 VHDL预定义数据类型 预定义数据类型
7. 字符串类型
8. 时间类型
9.8 数 据 类 型
9.8.1 VHDL预定义数据类型 预定义数据类型
9. 文件类型
9.8 数 据 类 型
9.8.2 IEEE预定义标准逻辑位与矢量 预定义标准逻辑位与矢量
1. 标准逻辑位数据类型
2. 标准逻辑矢量数据类型
9.3.1 函数
接下页
接上页
9.3 子 程 序
9.3.1 函数
9.3 子 程 序
9.3.1 函数
9.3 子 程 序
9.3.1 函数
9.3 子 程 序
9.3.2 重载函数
接下页
9.3 子 程 序 接上页
9.3.2 重载函数
接下页
接上页
9.3 子 程 序
9.3.2 重载函数
9.3 子 程 序


9-10 判断下列 判断下列VHDL标识符是否合法,如果有误则指出原因: 标识符是否合法, 标识符是否合法 如果有误则指出原因: 16#0FA#, 10#12F#, 8#789#, 8#356#, 2# # #, # #, # #, # #, # 0101010# # 74HC245 , \74HC574\, CLR/RESET, \IN 4/SCLK\, D100% , , , % 9-11 数据类型 数据类型BIT、INTEGER和BOOLEAN分别定义在哪个库中?哪 分别定义在哪个库中? 、 和 分别定义在哪个库中 些库和程序包总是可见的? 些库和程序包总是可见的? 9-12 函数与过程的设计与功能有什么区别?调用上有什么区别? 函数与过程的设计与功能有什么区别?调用上有什么区别? 9-13 回答有关 回答有关BIT和BOOLEAN数据类型的问题: 数据类型的问题: 和 数据类型的问题 类型的区别。 (1)解释 )解释BIT和BOOLEAN类型的区别。 和 类型的区别 (2)对于逻辑操作应使用哪种类型? )对于逻辑操作应使用哪种类型? (3)关系操作的结果为哪种类型? )关系操作的结果为哪种类型? 语句测试的表达式是哪种类型? (4)IF语句测试的表达式是哪种类型? ) 语句测试的表达式是哪种类型
9.9 VHDL操作符 操作符
9.9.1 逻辑操作符
9.9 VHDL操作符 操作符
9.9.1 逻辑操作符
9.9 VHDL操作符 操作符
9.9.1 逻辑操作符
9.9 VHDL操作符 操作符
9.9.1 逻辑操作符
9.9 VHDL操作符 操作符
9.9.2 关系操作符
等于)、 不等于)、 大于)、 “ = ”(等于 、“/=”(不等于 、“ >”(大于 、 等于 ” 不等于 ” 大于 小于)、 大于等于)和 小于等于) “< ”(小于 、“>=”(大于等于 和“<=”(小于等于 小于 ” 大于等于 ” 小于等于
5. 移位操作符
SLL、SRL、SLA、SRA、ROL 、ROR 、 、 、 、


9-1 说明实体、设计实体的概念。 说明实体、设计实体的概念。 9-2 举例说明 举例说明GENERIC说明语句和 说明语句和GENERIC映射语句有何用处。 映射语句有何用处。 说明语句和 映射语句有何用处 9-3 说明端口模式 说明端口模式INOUT和BUFFER有何异同点。 有何异同点。 和 有何异同点 9-4 什么是重载?重载函数有何用处? 什么是重载?重载函数有何用处? 9-5 在STRING、TIME、REAL、BIT数据类型中,VHDL综合器支持 数据类型中, 、 、 、 数据类型中 综合器支持 哪些类型? 哪些类型? 9-6 详细说明例 详细说明例9-29中的语句作用和程序实现的功能。 中的语句作用和程序实现的功能。 中的语句作用和程序实现的功能 9-7 表达式 表达式C<= A + B中,A、B和C的数据类型都是 中 、 和 的数据类型都是 STD_LOGIC_VECTOR,是否能直接进行加法运算?说明原因和解决 ,是否能直接进行加法运算? 方法。 方法。 9-8 VHDL中有哪三种数据对象?详细说明它们的功能特点以及使用方 中有哪三种数据对象? 中有哪三种数据对象 举例说明数据对象与数据类型的关系。 法,举例说明数据对象与数据类型的关系。 9-9 能把任意一种进制的值向一整数类型的数据对象赋值吗?如果能, 能把任意一种进制的值向一整数类型的数据对象赋值吗?如果能, 怎样做? 怎样做?
9.8 数 据 类 型
9.8.4 数据类型转换示例
9.8 数 据 类 型
9.8.4 数据类型转换示例
9.8 数 据 类 型
9.8.4 数据类型转换示例
9.9 VHDL操作符 操作符
9.9.1 逻辑操作符 逻辑操作符(Logical Operator) 逻辑操作符 关系操作符(Relational Operator) 关系操作符 算术操作符(Arithmetic Operator) 算术操作符 符号操作符(Sign Operator) 符号操作符 重载操作符(Overloading Operator)。 重载操作符 。
9.8 数 据 类 型
9.8.3 其他预定义标准数据类型
பைடு நூலகம்
1. 无符号数据类型
9.8 数 据 类 型
9.8.3 其他预定义标准数据类型
2. 有符号数据类型
9.8 数 据 类 型
9.8.4 数据类型转换示例
9.8 数 据 类 型
9.8.4 数据类型转换示例
9.8 数 据 类 型
9.8.4 数据类型转换示例
9.8 数 据 类 型
9.8.1 VHDL预定义数据类型 预定义数据类型
1. 布尔类型
2. 位数据类型
3. 位矢量类型
9.8 数 据 类 型
9.8.1 VHDL预定义数据类型 预定义数据类型
4. 字符类型 5. 整数类型 -2147483647~+2147483647
6. 实数类型
9.8 数 据 类 型
3. WORK库 库
4. VITAL库 库
9.4 VHDL库 库
9.4.2 库的用法
9.5 VHDL程序包 程序包
9.5 VHDL程序包 程序包
9.5 VHDL程序包 程序包
9.5 VHDL程序包 程序包
程序包。 (1)STD_LOGIC_1164程序包。 ) 程序包
程序包。 (2)STD_LOGIC_ARITH程序包。 ) 程序包
程序包。 (3)STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包。 ) 和 程序包
程序包。 (4)STANDARD和TEXTIO程序包。 ) 和 程序包
9.6 配 置
9.7 VHDL文字规则 文字规则
9.7.1 数字
整数: 整数: 实数 :
9.7 VHDL文字规则 文字规则
9.9 VHDL操作符 操作符
9.9.2 关系操作符
9.9 VHDL操作符 操作符
9.9.2 关系操作符
9.9 VHDL操作符 操作符
9.9.3 算术操作符
9.9 VHDL操作符 操作符
9.9.3 算术操作符
1. 求和操作符
相关文档
最新文档