EDA课件第三章3.ppt
《EDA课件第三章3.ppt》由会员分享,可在线阅读,更多相关《EDA课件第三章3.ppt(58页珍藏版)》请在三一文库上搜索。
1、VHDL语言描述系统硬件行为时,按语句执行顺序可以分为 (Sequential)描述语句和 Concurrent)描述语句。灵活运用这两类语句就可以正确地描述系统的并发行为和顺序行为。 例如,进程语句(Process Statement)是一个并发语句。在一个构造体内可以有几个进程语句同时存在,各进程语句是 执行的。但是,在进程内部所有语句应是 描述语句,也就是说,是按书写的顺序自上至下,一个语句一个语句地执行的。例如,IF 语句、LOOP语句等都属于此类顺序描述语句。,1、 顺序描述语句,执行顺序与书写顺序一致,与传统软件设计语言的特点相似。顺序语句只能用在 与 中。 在VHDL语言中顺序描
2、述语句主要有以下几种:,*信号代入语句; * 变量赋值语句; * WAIT语句; * IF语句; * CASE语句; * LOOP语句; * NEXT语句; * EXIT 语句;,2、 并发描述语句,VHDL的并发语句用来描述一组并发行为,它是并发执行的,与程序的书写顺序无关。 语句(PROCESS); (CONCURRENT)信号代入语句; (CONDITIONAL)信号代入语句; (SELECTIVE)信号代入语句; (CONCURRENT PROCEDURE)过程调用语句; (BLOCK)语句。,3.4.1 信号代入语句,信号代入语句的作用是将数据或表达式的结果赋给一个目标对象,目标对象
3、可以是内部信号,也可以是端口信号。 信号代入语句可分为: 三种。,1、简单信号代入语句,简单代入语句可以在进程内部使用,按顺序执行;代入语句也可以在构造体内部的进程外使用,且并发执行。 并发代入语句在仿真时刻同时运行,它表征了各个独立器件的各自的独立操作。如: a=b+c; d=e*f;,-分别描述加法器和乘法器行为。在实际系统中加法器和乘法器是同时并发执行的。,书写格式: 目的信号量=信号量表达式; 意义:将右边信号量表达式的值赋给左边的目的信号量。,1、简单信号代入语句(续),代入符号“=”的右边可以用算术表达式,也可以用逻辑运算表达式,还可以用关系操作表达式。,注意,1)代入符号与小于等
4、于的区别; 2)代入符号两边信号量的类型和长度应一致;,a. 一个进程:最后一次赋值有效,补充:信号的多次赋值,architecture rtl of ex is signal a : std_logic; begin process() begin a = b; a = c; end process; end rtl;,- 结果是a=c,2、 条件信号代入语句,格式:,目的信号量 = 表达式1 WHEN 条件1 ELSE 表达式2 WHEN 条件2 ELSE 表达式3 WHEN 条件3 ELSE 表达式n;,ELSE,在每个表达式后面都跟有用“WHEN”所指定的条件,如果满足该条件,则该表达
5、式值代入目的信号量;如果条件不满足,则再判断下一个表达式所指定的条件。最后一个表达式可以不跟条件,即所有条件都不满足时,条件信号代入语句举例,利用条件信号代入语句实现四选一逻辑电路。 ENTITY mux4 IS PORT ( i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC); END mux4; ARCHITECTURE rtl OF mux4 IS SIGNAL sel : STD_LOGIC_VECTOR ( 1 DOWNTO 0 ); BEGIN sel= b,目的信号量 = 表达式1 WHEN 条件1 ELSE 表达式2
6、WHEN 条件2 ELSE 表达式3 WHEN 条件3 ELSE 表达式n;,格式:,WITH 表达式 SELECT 目的信号量 = 表达式1 WHEN 条件1, 表达式2 WHEN 条件2, 表达式n WHEN 条件n;,1)不能有重叠的条件分支。 2)最后条件可为 others。否则,全部条件 必须能包含表达式的所有可能值。 3)选择信号赋值语句与进程中的 case 语 句等价。,3、 选择信号代入语句,注,用选择信号代入语句实现四选一电路,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux IS PORT ( i0, i1, i2,
7、 i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC ); END mux; ARCHITECTURE behave OF mux IS SIGNAL sel : INTEGER; BEGIN WITH sel SELECT q= i0 WHEN 0, i1 WHEN 1, i2 WHEN 2 , i3 WHEN 3, X WHEN OTHERS;,sel= 0 WHEN a=0 AND b=0 ELSE 1 WHEN a=0 AND b=1 ELSE 2 WHEN a=1 AND b=0 ELSE 3 WHEN a=1 AND b=1 ELSE 4; END
8、 behave;,选择信号代入语句,根据sel的不同值来完成选择功能,条件信号代入语句,根据a和b不同取值,对信号sel代入值,4、 变量赋值语句,书写格式: 目的变量:=表达式; 意义:表达式的值替代目的变量的值,立即有效。,注意,1)两边的数据类型必须相同; 2)目的变量的类型和范围应事先给出; 3)右边的表达式可以是变量,信号或字符; 4)变量只在进程或子程序中使用,它无法传递到进程之外。,1)赋值方式的不同: 变量:= 表达式; 信号 = 表达式; 2)硬件实现的功能不同: 信号代表电路单元、功能模块间的互联,代表实际的硬件连线;变量代表暂存的临时数据。 3)有效范围的不同: 信号:程
9、序包、实体、结构体;全局量。 变量:进程、子程序;局部量。 4)赋值行为的不同: 信号赋值 更新数值;变量赋值 更新数值;,补充:变量与信号的差异,信号赋值: architecture rtl of sig is signal a,b : std_logic; - 定义信号 begin process(a, b) begin a = b ; b = a ; end process ; end rtl ;,补充举例:信号赋值与变量赋值的比较,在进程内部信号是延时更新,信号只有在整个过程执行完毕后(end process)才更新完成。此例中,a = b先是b的值赋给a,但a的值并不立即更新;所以在
10、执行 b = a 时,a还是先前的a,即是要将a的原值赋给b;当程序执行到end process时,a和b才更新完成,最终a和b值互换。,- 结果是 a 和 b 的值互换,变量赋值: architecture rtl of var is begin process variable a,b:std_logic; - 定义变量 begin a := b ; b := a ; end process ; end rtl;,补充举例:信号赋值与变量赋值的比较,变量的赋值立即生效,a的值立即更新为b的初始值,此时的a已经变为b的初值,于是就是将b的初值代入b,- 结果是a和b的值都等于b的初值,3.4
11、.2 IF语句,IF语句是VHDL语言中最基础、最常用的语句,常用于选择器、比较器、编码器、译码器状态机的设计,。 IF语句根据制定的条件来执行指定的语句,共有三种类型: 1、单选控制; 2、二选控制; 3、多选控制。,1、IF语句的单选控制,格式: IF 条件 THEN 顺序处理语句; END IF; 当程序执行到该IF语句时,就要判断IF语句所指定的条件是否成立。如果条件成立,则执行顺序处理语句;不成立则跳过IF语句所包含的顺序处理语句,而向下执行IF语句的后续语句。这里的条件起到门闩的控制作用。,D触发器的描述举例,LIBRARY IEEE; USE IEEE.STD.LOGIC.116
12、4.ALL; ENTITY dff IS PORT(clk,d : IN STD_LOGIC; q : OUT STD_LOGIC); END dff; ARCHITECTURE rtl OF dff IS BEGIN PROCESS( clk ) BEGIN IF( clkEVENT AND clk= 1 ) THEN q=d; END IF; END PROCESS; END trl;,注,此例中,IF语句的条件是时钟信号clk事件发生,且时钟clk=1(时钟脉冲上升沿到来)。只有在这个时候d端信号值才赋值给q端。当该条件不满足时,q端维持原来的输出值。,2、IF语句的二选择控制,格式:
13、IF 条件 THEN 顺序处理语句; ELSE 顺序处理语句; END IF; 当条件满足时,则执行THEN和ELSE之间的顺序处理语句;如不满足则执行ELSE和END IF之间的顺序处理语句。,IF二选择控制举例,二选一电路 ARCHITECTURE rtl OF mux2 IS BEGIN PROCESS( a, b, sel ) BEGIN IF ( sel = 1 ) THEN c= a; ELSE c=b; END IF; END PROCESS; END rtl;,此例中,二选一电路的输入端为a和b,选择控制端为sel,输出端为c。,注,3、IF语句的多条件控制,格式: IF 条件
14、 THEN 顺序处理语句; ELSIF 条件 THEN 顺序处理语句; ELSIF 条件 THEN 顺序处理语句; ELSE 顺序处理语句; END IF;,在多选择控制的IF语句中,设置了多个条件。当某个条件满足时就执行跟在该条件这后的顺序处理语句, 如果条件都不满足则执行ELSE和END IF之间的语句。,注,IF语句多条件控制语句举例,四选一电路: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT ( input : IN STD_LOGIC_VECTOR ( 3 DOWNTO 0); sel : IN STD_
15、LOGIC_VECTOR ( 1 DOWNTO 0); y: OUT STD_LOGIC); END mux4; ARCHITECTURE rtl OF mux4 IS BEGIN PROCESS( input, sel ) BEGIN IF ( sel = “00” ) THEN y = input ( 0 ); ELSIF ( sel = “01” ) THEN y = input ( 1 );,ELSIF ( sel = “10” ) THEN y = input ( 2 ); ELSE y = input ( 3); END IF; END PROCESS; END rtl;,注,if
16、_then_elsif 语句中隐含了优先级别的判断,最先出现的条件优先级最高,可用于设计具有优先级的电路。如8-3优先级编码器。,3、IF语句小结,(1)IF语句可以用于凡是可以进行条件控制的逻辑电路设计。 (2)IF语句的条件判断的输出是布尔量,即是“真”(true)或“假”(FALSE)。因此在IF语句的条件表达式中只能使用关系运算操作符( =,/=, = )及逻辑运算操作符的组合表达式。 (3)IF语句只能在进程内部使用。,条件信号赋值语句与进程中的多选择 if 语句等价:,q = a WHEN sela = 1 ELSE b WHEN selb = 1 ELSE c;,PROCESS(
17、sela, selb, a, b, c) BEGIN IF sela=1 THEN q = a; ELSIF selb=1 THEN q = b; ELSE q = c; END IF; END PROCESS;,3.4.3 CASE语句,case 语句常用来描述总线或编码、译码行为。 可读性比if 语句强。 格式: CASE 表达式 IS WHEN 条件表达式=顺序处理语句; END CASE; 当CASE 和 IS 之间的表达式的取值满足指定的条件表达式的值时,程序将执行后跟的,由符号“=”所指的顺序处理语句。,CASE语句中条件表达式的形式可以是: 1)一个值;2)多个值的逻辑“或”关系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课件 第三
链接地址:https://www.31doc.com/p-2891707.html