VHDL的数据对象和数据类型.ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•int_bus信号是结构体局部信号,故它只能在 data_flow结构体中,或在结构体的任何进程语句中 被引用。
•变量在进程和子程序中做局部的数据存储,处理信 号值要花时间,而变量的赋值都是立即发生的:
VARIABLE variable_name ,variable_name : variable_type[:= value];
BEGIN a := 1 ; --ok 1 a :=-1 ; --ok 2 a := 1.0; --error 3
END PROCESS; END test;
VHDL很强的数据类型为赋值提供了一种校验操作
VHDL的数据对象和数据类型(8)
实数类型模仿描述数学上实数对象,它们表示整数值 和分数值范围的数。标准库中标准程序包指定实数的 最小范围从-1.0E+38到+1.0E+38。
ARCHITECTURE test OF test IS signal a : REAL;
BEGIN a <= 1.0; -- ok 1 a <= 1; -- error 2 a <= -1.0E10; -- ok 3 a <= 1.5E-20; -- ok 4 a <= 5.3 ns; -- error 5
Sum <= A Xor B; Carry <= A and B; End Block Half_Adder;
Half_Subtractor: Block-- Half Subtractor Begin
Difference <= A Xor B; Borrow <= Not A and B; End Block Half_Subtractor;
ELSE
delay := 4 ns;
END IF;
q <= state AFTER delay;
END PROCESS;
END and5;
△变量处理起来更快些,因为变量赋值是立即发生
的,而信号却必须为此事件作一个安排处置。
△变量用很少的存储器,相反为了做一个调度安排
和处理信号属性,需要存储更多的信号信息。
并行语句 Block
ENTITY CH3_3_1 is
PORT(A,B: IN
Std_Logic;
Carry,Sum,Borrow,Difference: OUT
Std_Logic
);
END CH3_3_1;
ARCHITECTURE a OF CH3_3_1 IS BEGIN Half_Adder : Block -- Half Adder Begin
明规定类型名和类型的范围,在程序包说明部分、实 体说明部分、结构体说明部分、子程序说明部分和进 程说明部分中都允许有类型说明。
TYPE type_name IS type_mark; 类型标志type_mark包容了规定类型的很广泛的方法。
Types
File
Access
Composite
Array Record
Scalar
Enumerater
Physical
Real
Integer
VHDL数据类型图示
•四大类是标量类型、复合类型、寻址类型和文件类型
。标量类型包括所有简单的类型,如象整数和实数;
复合类型包括数组和记录;寻址类型在一般编辑语言
中等价为指针;最后,文件类型用设计者定义的文件
类型为设计者提供所说明的文件对象。
b
PORT ( a, b, c, d, e : IN std_locgic;and5
q
q : OUT std_logic);
d
END and5;
e
ARCHITECTURE and5 OF and5 IS
BEGIN
PROCESS(a, VARIABLE VARIABLE
b, c, state delay
TYPE bus_type IS ARRAY (0 to 7) OF std_logic;
SIGNAL vcc
: std_logic :在= '程1';序包中说明
SIGNAL ground : std_logic :的= '全0';局信号
FUNCTION magic_function( a: IN bus_type) RETURN
即在关键词SIGNAL后跟一个或者多个信号名 ,每个信号名将建一个新信号,用冒号:把信号 名和信号的数据类型分隔开,信号数据类型规定 信号包含的数据类型信息,最后信号还包含初始 化信号指定的初值。 •实体说明部分、结构体说明和程序包说明都能 说明信号,全局信号在程序包中说明,它们被所
属的实体分享。
USE WORK.std_logic_1164.ALL; PACKAGE sigdecl IS
VHDL的数据对象和数据类型(1)
VHDL(一种数据类型很强的语言)
数据类型(数据对象取值 数据对象(传递信息的载
的集合或子集)
体)
Scalar types (标量数据类型)
1. Enumeration
Constant(常量) Variable(变量)
(可枚举数据类型)
Signal(信号)
SIGNAL sys_clk : std_logic : =sy's1_';clk
END board_design;
ARCHITECTURE data_flow OF board_design IS
SIGNAL int_bus : bus_type;
在结构体中说
CONST:A=NT('dXi's,c'oXn'n,e'cXt'_,v'aXl'u,e'X:',b'uXs',t'y明Xp'e的,'iXn't)_;bus
BEGIN
int_bus <= data_in WHEN sys_clk = '1'
ELSE int_bus;
data_out <= magic_function(int_bus) WHEN sys_clk
= '0'
ELSE disconnect_value;
sys_clk <= NOT(sys_cl不k)能a在ft主er动50进n程s;中说明信号!
• 常量描述: CONSTANT constant_name,constant_name: type_name[:= value];
• VHDL也支持延迟常数,常在程序包说明中说明 常量,将在程序包体中指定常量的值。
• 常量有和信号一样的可视性规则: 1. 在程序包中说明的常量被全局化。 2. 在实体说明部分的常量被那个实体中任何结构
在数组和一些线性运算中经常用常量表vhdl的设计描述用常量表特别适于实现rom网络的电路与函数设计vhdl的数据对象和数据类型6?数据类型规定数据对象的特征和取值的范围vhdl含有很宽范围的数据类型用它们可建立简单的或者复杂的对象
VHDL的数据对象和数据类型
△类型用于三种数据对象:信号、变量和常量。 △信号对象是连接实体的主要机制,用信号在实体之间 传送信息。 △变量对象位于进程和子程序中, 主要用于局部计算结 果的暂存。 △常量对象命名数据类型的一种特殊值。 △整数类型的行为和算术中整数相似,而实型类型行为 和算术中的实数类似。 △可枚举类型是抽象数据类型,它描述用户定义的操作 并使模块更可读。 △物理类型表示如距离、电流和时间一类的物理量。 △复合类型由数组和记录组成,数组是相同类型元素的 分组,而记录是不同类型元素的分组。 △寻址类型象一般编程语言中的指针。 △文件类型是从模块中能读和能写特定类型的线性数据 流。 △子类型能对基本类型加限制。
2. Integer(整数数据类 File(文件) 型)
3. Physical(物理数据类 型)
4. Floating point(实数 数据类型)
Composite
(复合数据类型)
1. Array(数组数据类型)
2. Record(记录数据类 型)
Access(寻址数据类型)
兰色为不可综合的数据对象和数据类型
END data_flow;
VHDL的数据对象和数据类型(3)
•在程序包sigdecl中说明的全局信号Vec和ground可 被多个实体引用,为引用程序包,用VHDL的USE付句 。
USE work.sigdecl; USE work.sigdecl.ground; 或 USE work.sigdecl.ALL •sys_clk信号能被board_design实体内和 board_design实体的任何结构体所引用, sys_clk 信号对其实体全局化
准程序包规定整数的最小范围: 从-2,147,483,647到 +2,147,483,647 2的补码表示方式规定整数的范围 从-2,147,483,648到+2,147,483,647 VHDL整数定义的范围是对0值对称的。
ARCHITECTURE test OF test IS BEGIN
PROCESS(X) V b :int_type;
体引用 3. 在结构体中的常量能被其结构体内部任何语句
采用,包括为进程语句采用。 4. 在进程说明中说明的常量只能在进程中使用。
5. 在数组和一些线性运算中经常用常量表,VHDL 的设计描述用常量表特别适于实现ROM网络的 电路与函数设计
VHDL的数据对象和数据类型(6)
•数据类型规定数据对象的特征和取值的范围,VHDL含 有很宽范围的数据类型,用它们可建立简单的或者复 杂的对象。 •一个新的数据类型必须先建立一个类型说明。类型说
END a;
ENTITY FullAdder is
Port (
A
: IN
Std_Logic;
B
: IN
Std_Logic;
△信号可能需要用一个WAIT语句,以便为相同执行
迭代做信号赋值的同步处理。
VHDL的数据对象和数据类型(5)
• 常量对象是为特定的数据类型值所赋予的名称 ,用常量的文件模块容易更新。模块需要在多 个具体元件中放一个固定值就用常量。
CONSTANT PI: REAL: = 3.1414;
这种模块的表示方式也变得更可读。
VHDL的数据对象和数据类型(2)
•数据对象的分类: 1 信号:它表示把元件的装配端口连在一起的
互连线。 2 变量:用于对暂时数据的局部贮存,变量只
在进程内部是可视的。 3 常量:顾名思义是规定的值。
•信号数据对象:把实体连在一起形成模块,信 号是实体间动态数据交换的手段,信号说明如下 :
SIGNAL signal_name : signal_type [ :=initial_value ] ;
d::,steti)dm_el;og用 序ic此 的; 两 可个 读变 性量 更使 好程
BEGIN
state :=a AND b AND c AND d AND e;
IF state = '1' THEN
delay :=4.5 ns;
ELSIF state = '0' THEN
delay := 3 ns;
NED test;
可枚举数据类型是非常强的抽象建模工具,可用它严 格表式一个特定操作所需的值,由于可枚举类型的所 有字面值都由用户定义,如字母的字面值、标识符字 符串abc,a和black和用引号括起来的单个字符字面 值(`X',`1'和`0’)。对四态仿真值系统典型的可枚 举类型表示如下:
TYPE fourval IS (`X',`0',`1',`Z'); 。`X'不定态值 。`0'逻辑值0或值为假 。`1'逻辑值1或值为真 。`Z'三态值或收集被开路的值 把逻辑值`1'和`0'与整数值的1和0的字面值分开,在 可枚举类型中用1和0将是一个错误,因为这些是整形 值
•关键词VARIABLE后跟着一个或多个变量名,每个名 字建立一个新变量,结构variable_type定义变量的 数据类型,并且还可以指定一个可选的初值,只可 以在进程说明部分和子程序说明部分说明变量:
VHDL的数据对象和数据类型(4)
USE WORK.std_logic_1164.ALL;
a
ENTITY and5 IS
VHDL的数据对象和数据类型(7)
•标量类型描述一次持有一个值的对象,说明为标量 类型的对象在任何时间最多能持一种标量值,整个 对象范围都可引用标量类型,它包括四类类型:
1整数类型 2实数类型 3可枚举数类型 4物理类型
•整数类型严格地与算术整数相似,所有预定的算术 函数,像加、减、乘和除都适于整数类型,VHDL标
bus_type;
END sigdecl;
board_design的实
USE WORK.sigdecl.ALL; 体
USE WORK.std_logic_1164.ALL;
ENTPIOTRYT(bodaartda__diensi:gnINisbus_type;在实体中说明的
data_out : OUT bus_type);
相关文档
最新文档