寄存器描述及其VHDL语言现象
寄存器描述及其寄存器描述及其寄存器描述及其寄存器描述及其VHDLVHDLVHDLVHDL语言现象语言现象语言现象语言现象EDA技术实用教程 寄存器描述及其VHDL语言现象 1.1 D触发器的VHDL描述【例4-7】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;图4-4 D触发器 寄存器描述及其VHDL语言现象 1.1 D触发器的VHDL描述【例4-7】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;寄存器描述及其VHDL语言现象 1.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,-);寄存器描述及其VHDL语言现象 1.2 D触发器VHDL描述的语言现象说明 2.设计库和标准程序包 使用库和程序包的一般定义表式是:LIBRARY ;USE .ALL;1.2 D触发器VHDL描述的语言现象说明 3.SIGNAL信号定义和数据对象【例4-8】ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q=D;END IF;END PROCESS;END;寄存器描述及其VHDL语言现象 1.2 D触发器VHDL描述的语言现象说明 4.上升沿检测表式和信号属性函数EVENT 5.不完整条件语句与时序电路 关键词EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿:EVENT【例4-9】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 b1 THEN q1=1;ELSE q1=0;END IF;END PROCESS;END;图4-6 例4-10的电路图 寄存器描述及其VHDL语言现象 1.3 实现时序电路的VHDL不同表达方式【例4-11】.PROCESS(CLK)BEGINIF CLKEVENT AND(CLK=1)AND(CLKLAST_VALUE=0)THEN Q=D;-确保CLK的变化是一次上升沿的跳变 END IF;END PROCESS;寄存器描述及其VHDL语言现象 1.3 实现时序电路的VHDL不同表达方式【例4-12】.PROCESS(CLK)BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同例4-11 THEN Q=D;END IF;END PROCESS;【例4-13】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)-必须打开STD_LOGIC_1164程序包 THEN Q1=D;END IF;Q=Q1;END PROCESS;END;寄存器描述及其VHDL语言现象 1.3 实现时序电路的VHDL不同表达方式【例4-14】.PROCESS BEGIN wait until CLK=1 ;-利用wait语句 Q=D;END PROCESS;寄存器描述及其VHDL语言现象 1.3 实现时序电路的VHDL不同表达方式【例4-15】.PROCESS(CLK)BEGIN IF CLK=1 THEN Q=D;-利用进程的启动特性产生对CLK的边沿检测 END IF;END PROCESS;寄存器描述及其VHDL语言现象 1.3 实现时序电路的VHDL不同表达方式【例4-16】.PROCESS(CLK,D)BEGIN IF CLK=1 -电平触发型寄存器 THEN Q=D;END IF;END PROCESS;1.3 实现时序电路的VHDL不同表达方式 图4-7 边沿型触发器时序波形 图4-8 电平触发型寄存器的时序波形 寄存器描述及其VHDL语言现象 1.4 异步时序电路设计 图4-9 例4-17综合后的电路【例4-17】.ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2:STD_LOGIC;BEGINPRO1: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;谢谢观看!谢谢观看!谢谢观看!谢谢观看!EDA技术实用教程