VHDL第4章寄存器描述.ppt_第1页
VHDL第4章寄存器描述.ppt_第2页
VHDL第4章寄存器描述.ppt_第3页
VHDL第4章寄存器描述.ppt_第4页
VHDL第4章寄存器描述.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,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 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS (CLK) BEGIN IF 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表示高阻态; 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_unsigned (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 Time 注:Type Bit 2 logic value system (0, 1) 3)面向ASIC的库 4)WORK库(默认库) 5)用户定义库,4、库及程序包的使用 库及程序包的说明总是放在实体单元前面, 默认库及程序包可不作说明。用关健字library 说明要使用的库,用关健字 use 说明要使用的库中的程序包。 库及程序包的作用范围:仅限于所说明的设计实体。 每一个设计实体都必须有自已完整的库及程序包说明语句。,2 选 1 选择器:,2选1的另一种描述,3. SIGNAL信号定义和数据对象,ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF 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 ; ARCHITECTURE one OF COMP_BAD IS 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 ;,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 ; ARCHITECTURE one OF COMP_GOOD IS BEGIN 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】 . PROCESS (CLK) BEGIN IF CLK=1 AND CLKLAST_VALUE=0 -同例5-13 THEN Q = D ; END IF; END PROCESS ;,4.2.3 实现时序电路的VHDL不同表达方式,【例4-11】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - CLK的数据类型必须是STD_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ;,4.2.3 实现时序电路的VHDL不同表达方式,【例4-12】 . PROCESS BEGIN wait until CLK = 1 ; -利用wait语句 Q = D ; END PROCESS;,【例4-13】. PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS ;,4.2.3 实现时序电路的VHDL不同表达方式,图5-8 电平触发型寄存器的时序波形,【例4-14】. PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ;,4.2.4 异步时序电路设计,单一时钟的同步时序逻辑,4.2.4 异步时序电路设计 【例4-19】,. 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; 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 if clk=1 AND clklast_value=0 then q1 = 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) begin if rising_edge(clk) then q = d; end if; end process; end 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 begin wait until clk=1 then q1 = d; end if; q = q1 ; end process; en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论