收藏 分享(赏)

VHDL第4章_寄存器描述.ppt

上传人:fmgc7290 文档编号:8633578 上传时间:2019-07-06 格式:PPT 页数:22 大小:314KB
下载 相关 举报
VHDL第4章_寄存器描述.ppt_第1页
第1页 / 共22页
VHDL第4章_寄存器描述.ppt_第2页
第2页 / 共22页
VHDL第4章_寄存器描述.ppt_第3页
第3页 / 共22页
VHDL第4章_寄存器描述.ppt_第4页
第4页 / 共22页
VHDL第4章_寄存器描述.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、,D触发器真值表(发生在时钟上升沿),0,1,D=1,D=1,D=0,D=0,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,【例4-6】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 ISPORT (CLK : IN STD_LOGIC ;D : IN STD_LOGIC ;Q : OUT STD_LOGIC );END ;ARCHITECTURE bhv OF DFF1 ISSIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS (CLK

2、)BEGINIF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -将内部的暂存数据向端口输出 END PROCESS ;END bhv;,D触发器,4.2.2 D触发器VHDL描述的语言现象说明,1. 标准逻辑位数据类型STD_LOGIC,BIT数据类型定义: TYPE BIT IS(0,1);,STD_LOGIC数据类型定义: TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);,STD_LOGIC所定义的9种数据的含义是: U表示未初始化的; X表示强未知的; 0表示强逻辑0; 1表示强逻辑1; Z表示高阻态

3、; W 表示弱未知的; L表示弱逻辑0; H表示弱逻辑1; -表示忽略。,4.2.2 D触发器VHDL描述的语言现象说明,2. 设计库和标准程序包,使用库和程序包的一般定义表式是:LIBRARY ;USE ALL ;,库的种类VHDL库可分为 5种:1)IEEE 库定义了四个常用的程序包: std_logic_1164 (std_logic types & related functions) std_logic_arith (arithmetic functions) std_logic_signed (signed arithmetic functions) std_logic_unsig

4、ned (unsigned arithmetic functions),Type STD_LOGIC:9 logic value system (U, X, 0, 1, Z, W, L, H, -) W, L, H” weak values (Not supported by Synthesis) X - (not x)used for unknown Z - (not z) used for tri-state - Dont Care,2)STD 库(默认库)库中程序包为:standard,定义最基本的数据类型:Bit,bit_vector ,Boolean,Integer,Real,and

5、 Time注:Type Bit2 logic value system (0, 1)3)面向ASIC的库4)WORK库(默认库)5)用户定义库,4、库及程序包的使用库及程序包的说明总是放在实体单元前面, 默认库及程序包可不作说明。用关健字library 说明要使用的库,用关健字 use 说明要使用的库中的程序包。库及程序包的作用范围:仅限于所说明的设计实体。每一个设计实体都必须有自已完整的库及程序包说明语句。,2 选 1 选择器:,2选1的另一种描述,3. SIGNAL信号定义和数据对象,ARCHITECTURE bhv OF DFF1 ISBEGINPROCESS (CLK)BEGINIF

6、CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS ; END ;,SIGNAL Q1 : STD_LOGIC,4.2.2 D触发器VHDL描述的语言现象说明,4. 上升沿检测表式和信号属性函数EVENT,关键词EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿:EVENT,CLKEVENT-CLKEVENT AND CLK=1,5. 不完整条件语句与时序电路,【例4-7】 ENTITY COMP_BAD IS PORT( a1 : IN BIT;b1 : IN BIT;q1 : OUT BIT ); END ; ARCHI

7、TECTURE one OF COMP_BAD ISBEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 = 0 ;- 未提及当a1=b1时,q1作何操作 END IF; END PROCESS ; END ;,4.2.2 D触发器VHDL描述的语言现象说明,5. 不完整条件语句与时序电路,图4-5 例5-11的电路图,5. 不完整条件语句与时序电路,【例4-8】 ENTITY COMP_GOOD IS PORT(a1 : IN BIT;b1 : IN BIT;q1 : OUT BIT ); END ; A

8、RCHITECTURE one OF COMP_GOOD ISBEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSE q1 = 0 ;END IF; END PROCESS ;END,图4-6 例4-12的电路图,4.2.3 实现时序电路的VHDL不同表达方式,【例4-9】 . PROCESS (CLK)BEGIN IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保CLK的变化是一次上升沿的跳变END IF; END PROCESS ;,【例4-10】 . PROC

9、ESS (CLK)BEGIN IF CLK=1 AND CLKLAST_VALUE=0 -同例5-13THEN Q = D ; END IF; END PROCESS ;,4.2.3 实现时序电路的VHDL不同表达方式,【例4-11】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 ISPORT (CLK : IN STD_LOGIC ;D : IN STD_LOGIC ;Q : OUT STD_LOGIC );END ;ARCHITECTURE bhv OF DFF3 ISSIGNAL Q1 : STD_LOGIC;BEGIN

10、PROCESS (CLK)BEGINIF rising_edge(CLK) - CLK的数据类型必须是STD_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ;END ;,4.2.3 实现时序电路的VHDL不同表达方式,【例4-12】 .PROCESS BEGINwait until CLK = 1 ; -利用wait语句Q = D ;END PROCESS;,【例4-13】.PROCESS (CLK)BEGINIF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对CLK的边沿检测END IF; END PROCESS ;,

11、4.2.3 实现时序电路的VHDL不同表达方式,图5-8 电平触发型寄存器的时序波形,【例4-14】.PROCESS (CLK,D) BEGINIF CLK = 1 -电平触发型寄存器THEN Q = D ; END IF; END PROCESS ;,4.2.4 异步时序电路设计,单一时钟的同步时序逻辑,4.2.4 异步时序电路设计 【例4-19】,.ARCHITECTURE bhv OF MULTI_DFF ISSIGNAL Q1,Q2 : STD_LOGIC;BEGIN PRO1: PROCESS (CLK)BEGINIF CLKEVENT AND CLK=1 THEN Q1 = NOT

12、 (Q2 OR A); END IF; END PROCESS ; PRO2:PROCESS (Q1)BEGINIF Q1EVENT AND Q1=1 THEN Q2 = D; END IF; QQ = Q2 ; END PROCESS ;,图5-9 例5-19综合的电路,Q1,Q2,比较用5种不同语句的D触发器VHDL程序,Entity test1 is port (clk, d : in bit;q : out bit); end test1; architecture body of test1 is signal q1 : bit ; begin process (clk) begin

13、if clk=1 AND clklast_value=0 thenq1 = d;end if;q = q1 ; end process; end test1_body;,LIBRARY IEEE; USE IEEE.std_logic_1164.all; Entity test1 is port (clk, d : in bit;q : out bit); end test1; architecture body of test1 is begin process (clk,d) beginif rising_edge(clk) thenq = d;end if; end process; e

14、nd test1_body;,They are all the same,DFF,Entity test1 is port (clk : in bit;d : in bit;q : out bit); end test1; architecture body of test1 is begin process beginwait until clk=1thenq1 = d;end if;q = q1 ; end process; end body;,Entity test1 is port (clk : in bit;d : in bit;q : out bit); end test1; architecture body of test1 is signal q1 : bit ; begin process (clk) beginif (clk = 1)thenq1 = d;end if;q = q1 ; end process; end body;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报