您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 第8章VHDL设计进阶-
第8章VHDL设计进阶EDA技术与VHDL设计VHDL设计进阶VHDL语言允许设计人员采用不同的描述方式进行设计实体中结构体的书写。结构体的3种描述方式为:行为描述方式、寄存器传输描述方式和结构描述方式,分别对应的结构体名为behave、rtl和structure。这3种描述方式从不同角度对设计实体的行为和功能进行描述,具有各自的特点。8.1VHDL行为描述方式VHDL结构化描述方式VHDLRTL描述方式有限状态机(FSM)设计8.28.38.4VHDL设计进阶以一位全加器的VHDL语言描述为例,对结构体的这3种描述方式进行分别讨论。一位全加器的逻辑示意图和实现的逻辑电路图如图所示。8.1VHDL行为描述方式=1ABCinSCo=1&&11ABCinSCo一位全加器的逻辑示意图和实现的逻辑电路图所谓行为描述,就是对设计实体的数学模型的描述,其抽象程度远远高于寄存器传输描述方式和结构描述方式。行为描述类似于高级编程语言,当描述一个设计实体的行为时,无需知道具体电路的结构,只需要用一组状态来描述即可。行为描述的优点在于只需要描述清楚输入与输出的行为,而不需要花费更多的精力关注设计功能的门级实现。8.1VHDL行为描述方式例8.1行为描述方式描述的1位全加器LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYfull_adderISPORT(A,B:INstd_logic;Cin:INstd_logic;Co:OUTstd_logic;S:OUTstd_logic);ENDfull_adder;ARCHITECTUREbehaveOFfull_adderISBEGINPROCESS(A,B,Cin)VARIABLEn:integerRANGE0TO3;CONSTANTS_vector:std_logic_vector(0TO3):=”0101”;CONSTANTCo_vector:std_logic_vector(0TO3):=”0011”;8.1VHDL行为描述方式例8.1行为描述方式描述的1位全加器BEGINn:=0;IF(A=’1’)THENn:=n+1;ENDIF;IF(B=’1’)THENn:=n+1;ENDIF;IF(Cin=’1’)THENn:=n+1;ENDIF;S=S_vector(n);Co=Co_vector(n);ENDPROCESS;ENDbehave;8.1VHDL行为描述方式例8.2行为描述方式描述的10位二进制全加器LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;Useieee.std_logic_unsigned.all;Entityadder1isport(a,b:instd_logic_vector(9downto0);co:instd_logic_vector(9downto0);c1:outstd_logic;sum:outstd_logic_vector(10downto0));end;8.1VHDL行为描述方式architecturebehaveofadder1issignala_temp:std_logic_vector(10downto0);signalb_temp:std_logic_vector(10downto0);signalsum_temp:std_logic_vector(10downto0);beginprocessbegina_temp=’0’&a;b_temp=’0’&b;sum_temp=a_temp+b_temp+co;sum=sum_temp(9downto0);c1=sum_temp(10);endprocess;endbehave;8.1VHDL行为描述方式例8.2行为描述方式描述的10位二进制全加器所谓结构描述方式,就是指在多层次的设计中,通过调用库中的元件或是已设计好的模块来完成设计实体功能的描述。在结构体中,描述只表示元件(或模块)和元件(或模块)之间的互连,就像网表一样。当引用库中不存在的元件时,必须首先进行元件的创建,然后将其放在工作库中,这样才可以通过调用工作库来引用元件。在引用元件时,首先要在结构体说明部分进行元件的说明,然后才在使用元件时进行元件例化。8.2VHDL结构化描述方式LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYh_adderISPORT(A,B:INstd_logic;Co:OUTstd_logic;S:OUTstd_logic);ENDh_adder;ARCHITECTURErtlOFh_adderISSIGNALtmp1,tmp2:std_logic;BEGINtmp1=AORB;tmp2=ANANDB;Co=NOTtmp1;S=tmp1ANDtmp2;ENDrtl;8.2VHDL结构化描述方式例8.3寄存器传输方式描述的半加器这里,定义了构成一位全加器的基本元件—半加器,下面就可以采用半加器来构成一位全加器。由一位半加器实现一位全加器的逻辑电路图如图所示。8.2VHDL结构化描述方式libraryieee;--或门逻辑表达useieee.std_logic_1164.all;entityor2isport(a,b:instd_logic;c:outstd_logic);endentityor2;architectureoneofor2isbeginc=aorb;endarchitectureone;8.2VHDL结构化描述方式例8.4结构描述方式描述的1位全加器architectureoneoff_adderis--1位全加器componenth_adderport(a,b:instd_logic;co,so:outstd_logic);endcomponent;componentor2port(a,b:instd_logic;c:outstd_logic);endcomponent;signald,e,f:std_logic;beginu1:h_adderportmap(a=ain,b=bin,co=d,so=e);u2:h_adderportmap(a=e,b=cin,co=f,so=sum);u3:or2portmap(a=d,b=f,c=cout);endarchitectureone;8.2VHDL结构化描述方式例8.4结构描述方式描述的1位全加器用行为描述方式编写的VHDL语言程序抽象程度很高,是很难直接映射到具体逻辑器件上的。所谓寄存器传输描述,就是指对设计实体的描述按照从信号到信号的寄存器传输的路径形式来进行。由于这种描述形式容易进行逻辑综合,因此成为设计人员经常采用的一种描述方式。有时候,这种描述方式也被称作数据流描述方式。8.3VHDLRTL描述方式LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYfull_adderISPORT(A,B:INstd_logic;Cin:INstd_logic;Co:OUTstd_logic;S:OUTstd_logic);ENDfull_adder;ARCHITECTURErtlOFfull_adderISSIGNALtmp1,tmp2:std_logic;BEGINtmp1=AXORB;tmp2=tmp1ANDCin;S=tmp1XORCin;Co=tmp2OR(AANDB);ENDrtl;8.3VHDLRTL描述方式例8.6寄存器传输方式描述的1位全加器Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityand_orisport(a,b,c,d:Instd_logic;f:outstd_logic);end;architecturertlofand_orisbeginprocessbeginf=(aandb)or(candd);endprocess;end;8.3VHDLRTL描述方式例8.7寄存器传输方式描述的逻辑函数:f=ab+cd1.用数据流描述模式设计电路与用传统的逻辑方程设计电路很相似。显见,f=ab+cd和f=(aandb)or(candd)是很相似的。它们的差别仅在于描述逻辑运算的逻辑符号及表达方式略有不同。数据流描述亦表示行为,但含有结构信息,如进程间的通信等,通常用并行语句进行描述。2.设计中只要有了布尔代数表达式就很容易将它转换为VHDL的数据流表达式。转换方法是用VHDL中的逻辑运算符号置换布尔逻辑运算符即可。例如,用or置换“+”;用“=”置换“=”。8.3VHDLRTL描述方式例8.7寄存器传输方式描述的逻辑函数:f=ab+cd在实际的应用中,根据有限状态机是否使用输入信号,设计人员经常将其划分为Moore有限状态机和Mealy型有限状态机两种类型。(1)Moore型有限状态机。这种有限状态机的输出仅与当前状态有关,即可以把Moore型有限状态机的输出看成是当前状态的函数。(2)Mealy型有限状态机。这种有限状态机的输出信号不仅与当前状态有关,而且还与所有的输入信号有关,即可以把Mealy有限状态机的输出看成是当前状态和所有输入信号的函数。可见,Mealy有限状态机要比Moore型有限状态机复杂一些。8.4有限状态机(FSM)设计8.4.1Moore和Mealy状态机的选择Moore型和Mealy型有限状态机的结构框图如图所示。从中可以看出两种有限状态机的区别。8.4.1Moore和Mealy状态机的选择Moore型有限状态机的结构框图Mealy型有限状态机的结构框图在设计过程中,设计人员具体选择使用Moore型有限状态机还是使用Mealy型有限状态机?通常,设计过程中采用何种有限状态机主要取决于以下几个方面:1.对于Moore型有限状态机来说,输出信号将在时钟信号的触发沿到来后的几个门时延后得到输出值,同时在该时钟周期的剩余时间内保持不变,即使输入信号在该时钟周期内发生变化,输出信号的值也不会改变。8.4.1Moore和Mealy状态机的选择有限状态机的选择2.对于Mealy型有限状态机来说,由于它的输出是输入信号的函数,因此如果输入信号发生改变,那么输出可以在一个时钟周期的中间发生改变。可见,与Moore型有限状态机相比,它对输入信号的变化相应要早一个时钟周期。3.在实际的应用过程中,Moore型有限状态机可能要比相应的Mealy型有限状态机需要更多的状态。8.4.1Moore和Mealy状态机的选择有限状态机的选择由于VHDL语言提供了异常丰富的语法,因此有限状态机的VHDL语言描述可以具有多种不同的方式。一般来说,一个用来描述有限状态机功能的VHDL语言程序中应该包含以下几个内容:1.至少包括一个状态信号,它们用来指定有限状态机的状态;2.状态转移指定和输出指定,它们对应于控制单元中与每个控制步关的转移条件;3.时钟信号,它一般是用来进行同步的;4.同步或异步复位信号。8.4.2有限状态机的描述方式通常,在描述有限状态机的过程中,常用的描述方式有3种:三进程描述方式、双进程描述方式和单进程描述方式。8.4.2有限状态机的描述方式下面我们以一个具体的Moore型有限状态机的设计为例,具体介绍采用不同描述方式来描述Moore型有限状态机功能的具体方法。现在要求设计一个存储控制器,它的具体要求为:1.存储控制器能够根据微处理器的读周期或者写周期,分别对存储器输出写使能信号we和读使能信号oe;2.存储控制器的输入信号有3个:微处理器的准备就绪信号ready、微处理器的读写信号read_write和时钟信号clk。8.4.2有限状态机的描述方式存储控制器根据控制器的工作过程给出有限状态机的状态转移图。完成了有限状态机的状态转移图后,还要给出这个有限状态机的输出逻辑。8.4.2
本文标题:第8章VHDL设计进阶-
链接地址:https://www.777doc.com/doc-4478088 .html