欢迎来到天天文库
浏览记录
ID:38810148
大小:342.31 KB
页数:30页
时间:2019-06-19
《《寄存器设计应用》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章寄存器设计应用《CPLD与FPGA的应用》寄存器VHDL描述D触发器的描述D触发器【例】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;--类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS(CLK,Q1)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=D;ENDIF;ENDPROCESS;Q<
2、=Q1;--将内部的暂存数据向端口输出ENDbhv;寄存器描述的VHDL程序VHDL描述的语言现象说明信号定义和数据对象信号定义SIGNALQ1:STD_LOGIC;表示在描述的器件DFF1内部定义标识符Q1的数据对象为信号SIGNAL,其数据类型为STD_LOGIC。由于Q1被定义为器件的内部节点信号,数据的进出不像端口信号那样受限制,所以不必定义其端口模式(如IN、OUT等)。定义Q1的目的是为了在设计更大的电路时使用由此引入的时序电路的信号,这是一种常用的时序电路设计的方式。有Q1过渡,Q不用BUFFER类型。VHDL描述的语言现象说明上升沿检测表式和信号属性函数EVE
3、NTCLK‘EVENTANDCLK=’1‘检测时钟信号CLK的上升沿关键词EVENT是信号属性函数,用来获得信号行为信息的函数称为信号属性函数<信号名>'EVENT“clk'EVENT”就是对clk标识符的信号在当前的一个极小的时间段内发生事件的情况进行检测。所谓发生事件,就是clock在其数据类型的取值范围内发生变化,从一种取值转变到另一种取值(或电平方式)。VHDL描述的语言现象说明上升沿检测表式和信号属性函数EVENT如果clk的数据类型定义为STD_LOGIC,则在时间段内,clk从其数据类型允许的9种值中的任何一个值向另一值跳变,如由‘0’变成‘1’、由‘1’变
4、成‘0’或由‘Z’变成‘0’,都认为发生了事件虽然STD_LOGIC一般只有‘0’和‘1’’LAST_VALUE信号属性函数,它表示最近一次事件发生前的值。【例】ENTITYCOMP_BADISPORT(a1,b1:INBIT;q1:OUTBIT);END;ARCHITECTUREoneOFCOMP_BADISBEGINPROCESS(a1,b1)BEGINIFa1>b1THENq1<='1';ELSIFa15、nplify综合)不完整条件语句与时序电路...IFa1>b1THENq1<='1';ELSEq1<='0';ENDIF;...(Synplify综合)实现时序电路的不同表述【例】...PROCESS(CLK)BEGINIFCLK'EVENTAND(CLK='1')AND(CLK'LAST_VALUE='0')THENQ<=D;--确保CLK的变化是一次上升沿的跳变ENDIF;ENDPROCESS;实现时序电路的不同表述【例】...PROCESS(CLK)BEGINIFCLK='1'ANDCLK'LAST_VALUE='0'THENQ<=D;ENDIF;ENDPROCESS;6、【例】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)--必须打开STD_LOGIC_1164程序包THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;END;实现时序电路的不同表述【例】...PROCESSBEGINwaituntilCLK='1';--利用wa7、it语句Q<=D;ENDPROCESS;实现时序电路的不同表述【例】...PROCESS(CLK)BEGINIFCLK='1'THENQ<=D;--利用进程的启动特性产生对CLK的边沿检测ENDIF;ENDPROCESS;时序波形实现时序电路的不同表述【例】...PROCESS(CLK,D)BEGINIFCLK='1'--电平触发型寄存器THENQ<=D;ENDIF;ENDPROCESS时序波形LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF51ISPOR
5、nplify综合)不完整条件语句与时序电路...IFa1>b1THENq1<='1';ELSEq1<='0';ENDIF;...(Synplify综合)实现时序电路的不同表述【例】...PROCESS(CLK)BEGINIFCLK'EVENTAND(CLK='1')AND(CLK'LAST_VALUE='0')THENQ<=D;--确保CLK的变化是一次上升沿的跳变ENDIF;ENDPROCESS;实现时序电路的不同表述【例】...PROCESS(CLK)BEGINIFCLK='1'ANDCLK'LAST_VALUE='0'THENQ<=D;ENDIF;ENDPROCESS;
6、【例】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)--必须打开STD_LOGIC_1164程序包THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;END;实现时序电路的不同表述【例】...PROCESSBEGINwaituntilCLK='1';--利用wa
7、it语句Q<=D;ENDPROCESS;实现时序电路的不同表述【例】...PROCESS(CLK)BEGINIFCLK='1'THENQ<=D;--利用进程的启动特性产生对CLK的边沿检测ENDIF;ENDPROCESS;时序波形实现时序电路的不同表述【例】...PROCESS(CLK,D)BEGINIFCLK='1'--电平触发型寄存器THENQ<=D;ENDIF;ENDPROCESS时序波形LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF51ISPOR
此文档下载收益归作者所有