eda(第3讲)第3章vhdl入门

上传人:san****019 文档编号:70807896 上传时间:2019-01-18 格式:PPT 页数:40 大小:256.51KB
返回 下载 相关 举报
eda(第3讲)第3章vhdl入门_第1页
第1页 / 共40页
eda(第3讲)第3章vhdl入门_第2页
第2页 / 共40页
eda(第3讲)第3章vhdl入门_第3页
第3页 / 共40页
eda(第3讲)第3章vhdl入门_第4页
第4页 / 共40页
eda(第3讲)第3章vhdl入门_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《eda(第3讲)第3章vhdl入门》由会员分享,可在线阅读,更多相关《eda(第3讲)第3章vhdl入门(40页珍藏版)》请在金锄头文库上搜索。

1、1,VHDL进阶,本讲要点: VHDL程序运行机制:并行语句和顺序语句 process语句 If语句 时钟边沿 同步和异步,2,3.2 简单时序电路的VHDL描述,让我们继续学习硬件描述语言,3,VHDL程序运行机制,architecture one of mux21b is signal c, e: bit ; begin process (a,b,d) begin c = a+b ; e=d ; end process; f=c; g=d; h=c+d; end architecture one ;,4,VHDL程序运行机制,architecture one of mux21b is si

2、gnal c, e: bit ; begin process (a,b,d) begin c = a+b ; e=d ; end process; f=c; g=d; h=c+d; end architecture one ;,5,并行语句和顺序语句,电路逻辑功能的描述分为:并行语句和顺序语句两种。,顺序语句:按照语句的先后排列顺序执行。,并行语句:并行执行语句,与语句的书写顺序无关。,用在结构体语句中,用在进程语句中,6,进程语句,进程标号: PROCESS ( 敏感信号参数表 ) IS 进程说明部分 BEGIN 顺序描述语句 END PROCESS 进程标号;,7,PROCESS语句结构,

3、进程说明,顺序描述语句,敏感信号参数表,信号赋值语句,变量赋值语句,进程启动语句,子程序调用语句,顺序描述语句,进程跳出语句,PROCESS 组成,8,进程要点,1.进程PROCESS为一无限循环语句,2.进程PROCESS内部必须用顺序语句,顺序语句 也必须用在进程PROCESS内,3. 进程必须由敏感信号的变化来启动,4. 进程语句本身是并行语句,9,5. 信号是多个进程间的通信线,6. 一个进程中只允许描述对应于一个时钟信号的同 步时序逻辑,10,【例3-5】D触发器:DFF1.VHD LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY

4、 DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END DFF1; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定义一个数据 的暂存节点 BEGIN PROCESS (CLK,Q1) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; -将内部的暂存数据向端口输出 END bhv;,图3-4 D触发器,11,VHDL描

5、述的语言现象说明,1. 标准逻辑位数据类型STD_LOGIC,BIT数据类型定义: TYPE BIT IS(0,1); -只有两种取值 STD_LOGIC数据类型定义: TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-); -9种,12,2、库和程序包,1. IEEE,2. STD,3. WORK,4. VITAL,STD_LOGIC_1164 ;STD_LOGIC_ARITH ; STD_LOGIC_UNSIGNED ; STD_LOGIC_SIGNED,STANDARD ;TEXTIO,YOUR LIBRARY,VITAL_TIMING VITAL_PRIMITIV

6、ES,13,库的用法:P289,LIBRARY ; USE ALL ;,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;,14,3. 信号定义和数据对象,EVENT,4. 上升沿检测表达式和信号属性函数EVENT,5. 不完整条件语句与时序电路,SIGNAL Q1 : STD_LOGIC ;,CLKEVENT AND CLK = 1,15,【例3-6】不完整的IF语句 ENTITY COMP_BAD IS PORT( a1,b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS

7、 BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 = 0 ;- 未提及当a1=b1 时,q1作何操作 END IF; END PROCESS ; END ;,16,图3-5 例3-6的电路图(Synplify综合),17,图3-6 例3-7的电路图(Synplify综合),【例3-7】完整的IF语句 . IF a1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; .,18,If-then 语法,(1),IF 条件 THEN 顺序处理语句1; 顺序处理语句2; END IF

8、;,例: IF (a=1) THEN c=b; d=e; END IF;,19,If-then-else 语法,IF 条件 THEN 语句1; 语句2; 。 ELSE 语句1; 语句2; 。 END IF;,(2),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;,20,If-then-elsif-else 语法,IF 条件1 THEN 语句1; 语句2; 。 ELSIF 条件2 THEN 语句1; 语句

9、2; 。 ELSE 语句1; 语句2; 。 END IF;,(3),21,IF语句不仅可以用于选择器的设计,而且还可以用于比较器、译码器等凡是可以进行条件控制的逻辑电路设计。 需要注意的是, IF语句的条件判断输出是布尔量, 即是“真”(TRUE)或“假”(FALSE)。 因此在IF语句的条件表达式中只能使用关系运算操作(=, /=, , =)及逻辑运算操作的组合表达式。,22,时钟信号,任何时序电路都以时钟信号为驱动信号,时序电路仅在时钟信号的边沿到来时,其状态才发生改变。 因此,时钟信号通常是描述时序电路程序的执行条件。 另外,时序电路也总是以时钟进程的形式进行描述的,23,时钟脉冲上升沿

10、描述,IF (clkEVENT AND clk=1) THEN WAIT UNTIL clk=1; IF (clklast_value=0 AND clkevent AND clk=1) THEN IF ( rising_edge(clk) ) THEN,24,IF (clkEVENT AND clk=0) THEN WAIT UNTIL clk=0; IF (clklast_value=1 AND clkevent AND clk=0) THEN IF (falling_edge(clk) THEN,时钟脉冲下降沿描述,25,实现时序电路的不同描述,(1) . PROCESS (CLK) B

11、EGIN IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保CLK的变化是一次上升沿的跳变 END IF; END PROCESS ;,(2) . PROCESS (CLK) BEGIN IF CLK=1 AND CLKLAST_VALUE=0 THEN Q = D ; END IF; END PROCESS ;,26,(3) LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT (CLK,D : IN STD_LOGIC ; Q : OUT S

12、TD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) -必须打开STD_LOGIC_1164程序包 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; -在此,赋值语句可以放在进程外,作为并行赋值语句 END ;,27,(4) . PROCESS BEGIN wait until CLK = 1 ; -利用wait语句 Q = D ; END PROCESS;,28,(5) . PR

13、OCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS,图3-7 D触发器的时序波形,29,(6) . PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ;,图3-8 D锁存器的时序波形,30,复位信号,同步复位,就是当复位信号有效且在给定的时钟边沿到来时,触发器才被复位。换一句话说,即使复位信号有效,如果时钟脉冲边沿未到来,触发器也不会复位。 异步复位则不同,一旦复位信号有效,触发

14、器就立即复位。,31,同步复位描述的VHDL描述,PROCESS(clk) BEGIN IF 时钟边沿判断 THEN IF 复位条件 THEN Signal_out=reset_value; ELSE Signal_out=signal_in; END IF; END IF; END PROCESS;,32,同步复位描述 在用VHDL语言描述时,同步复位一定在以时钟为敏感信号的进程中定义,且用IF语句来描述必要的复位条件。 另外,描述复位条件的IF语句一定要嵌套在描述时钟边沿条件的IF语句的内部,,33,异步复位的VHDL语言描述,首先,在进程的敏感信号表中除时钟外,还应添上复位信号; 另外,

15、描述复位的IF语句应放在进程的第一条语句位置,34,PROCESS(clock_signal, reset_signal) BEGIN IF(reset_condition) THEN Signal_out=reset_value; ELSIF(clock_edge_condition) THEN Signal_out=signal_in; END IF; END PROCESS;,35,*异步时序电路设计,【例3-8】 . ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGIN PRO1: PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=1 THEN Q1 = NOT (Q2 OR A); END IF; END PROCESS ; PRO2: PROCESS (Q1) BEGIN IF Q1EVENT AND Q1=1 THEN Q2 = D; END IF; END PROCESS ; QQ = Q2 ; .,36,图3-9 例3-8综合后的电路(Synplify综合),37,【例3-9】3选1选择器 ENTITY mul IS PORT (a, b, c, selx, sely : IN

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号