2.3 VHDL对象、数据类型及运算符
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VHDL对象:变量
例: Architecture behav of count is begin
process (clk) variable temp: integer range o to 255 := ‘0’; begin
if clk’event and clk=’1’ then temp := temp + 1;
例Hale Waihona Puke :architecture behav of counter is signal count: std_logic_vector (7 downto 0);
begin process (clk) begin if (clk’event and clk=’1’) then if en = ‘1’ then count <= data; else count <= count +1; end if; end if; end process; q<=count;
end if; end process; end behav;
-- 请写出对应的实体说明
VHDL对象:变量
变量:定义进程中或子程序中的变化量
格式: VARIABLE 变量名:数据类型 := 初始值;
例:variable tmp : std_logic := ‘0’;
用途:在PROCESS,FUNCTION,ROCEDURE 中使用,用于描述算法和方便程序中的数值运 算,是一种局部量。
例: constant VCC : real := 5.0; constant delay : time := 10ns; constant fbus : bit_vector := “0101”;
用途:在ENTITY,ARCHITECTURE,PACKAGE, PROCESS,PROCEDURE,FUNCTION中保持静态数据, 以改善程序的可读性,并使修改程序容易。
2.3 VHDL对象、数据类型和运算 符
1、VHDL数据对象
(1)常量 (2)变量 (3)信号 (4)信号与端口的比较 (5)信号与变量的比较
2、VHDL数据类型
(1)标准数据类型 (2)用户定义的数据类型 (3)数据类型转换
3、VHDL运算符
VHDL对象:常量
对象: 程序中可被赋值的载体(信号,变量,常量) 常量:定义在设计描述中不变化的值 格式:CONSTANT 常数名:数据类型 := 表达式;
VHDL对象:变量与信号的比较
4.对应硬件结构不同。 信号对应实际电路的某个节点或信号线;变量是 一个抽象值,它不与任何实际电路连线对应。
注意:变量不与任何实际电路连线对应,不代表变量赋 值行为不产生与之对应的硬件结构。变量赋值语句既然 是可综合的,就一定会对硬件结构产生影响。
5.应用场合不同。 在实际应用中,信号的行为更接近硬件的实际情 况,因此更多地使用信号进行电路内部数据传 递,只在描述一些用信号很难描述的算法时才用 到变量。
此处换成sum<=sum+i可以吗?
FOR i IN 1 To 9 LOOP
格式: SIGNAL 信号名:数据类型 := 初始值;
例:signal y: integer range 0 to 15;
VHDL对象:信号
例1:
architecture behav of example is constant xdata: integer :=2; signal y: integer range 0 to 15;
begin process (s) variable tmp: integer := 0; begin if s =’0’ then tmp := 3; else tmp := 7; end if; y <= tmp + xdata; end process; q<=y ;
end behav;
VHDL对象:信号
VHDL对象:变量与信号的比较
• 变量典型应用场合举例
在LOOP语句中,若在一个循环体内需要对某一个数据进行多次操作, 则必须使用变量,因为对信号的多次赋值只有最后一次会生效。
Variable Sum:Integer RANGE 0 TO 127;
.
.
.
FOR i IN 1 To 9 LOOP
Sum:= Sum+i; END LOOP;
end if; q <= temp;
end process; end behav;
-- 请写出对应的实体说明
VHDL对象:信号
信号: 在ENTITY, ARCHITECTURE和 PACKAGE中用于定义内部连线,在元件间起互 连联作用;或作为一种数据容器,以保留历史值 或当前值。用来描述实体内部节点。
VHDL对象:常量
例: architecture behav of example is begin process (rst, clk, en) constant zero : std_logic_vector (7 dwonto 0) := “00000000”; begin
if clk’event and clk=‘1’ then if (rst = ‘1’) then q <= zero; elsif (en = ‘1’) then q <= data; else q <= q; end if;
end behav;
VHDL对象:信号与端口比较
VHDL对象:信号与端口比较
1.信号和端口都描述了电路中实际存在的节点。信 号描述的是实体内部的节点,而端口描述实体与 外界的接口。
2.信号理解为“实体内部不限定数据流动方向的端 口”。
3.端口理解为“限定数据流动方向的信号”。
4.信号赋值具有延时。
VHDL对象:变量与信号的比较
1.声明形式与赋值符号不同。
2.有效域不同。 信号在结构体内、进程外定义,变量在进程内定 义。信号有效域为整个结构体,可在不同进程中 传递数值;变量的有效域是定义该变量的进程。
3.赋值操作的执行不同。 变量赋值是立即生效,在执行下一条语句是,该 变量的值为上一句新赋的值;信号赋值具有延时 性,信号的赋值语句即使被执行也不会使信号立 即发生代入,下一条语句执行时,仍使用原来的 信号值(信号是在进程挂起时发生代入)。