您好,欢迎访问三七文档
VHDL的配置△用默认配置把结构体连到实体。△用元件配置为每个元件的具体装配指定用于哪个实体。△在配置内,端口映射允许映射带有不同名的实体到元件的具体安装元件上。△在配置中指定类属能使我们推迟连接类属信息。△在结构体中配置带有块语句的结构体用块配置。△结构配置允许在结构体说明部分为元件具体装配做配置的详细说明。VHDL的配置(1)•配置是把元件具体安装到实体的最基本设计单元,模块的配置是模块的零件清单,在安装元件时,配置将为实体在多个结构体中指出用哪个结构体,当一种实体─结构体组合编辑到库中时就产生一个可仿真的对象。•设计描述总是把公共部分(如Package)往前提,把具体部分(装配的元件和类属参数)往后放•配置则为所配置的结构体指定具体安装元件的类属值,这种机制能提供了一种在实际布线之后,最后加延时值的能力,以便为后仿真提供实际的延时值。•配置中可以用端口映射把新元件映射到相应的信号上去,这种功能为设计选用和修改元件库。•配置提供替换能力,实现对实体所需的结构体进行选择,而当选择改变时,只需对配置文件进行重新编辑和仿真配置分为默认配置、元件配置、块配置和结构配置默认配置(配置指定)是最简单形式的显式的配置(这种配置并非一个,配置实体将用最后编辑的结构体),不含任何块语句和元件的模块用这种配置,默认配置指定配置实体的配置名和为实体指定的结构体,看下面big_count和small_count两个配置例句:USEWORK.std_logic_1164.ALL;ENTITYcounterISPORT(load,clear,clk:INstd_logic;data_in:ININTEGER;data_out:OUTINTEGER);ENDcounter;ARCHITECTUREcount_255OFcounterISBEGINPROCESS(clk)VARIABLEcount:INTEGER:=0;BEGINIFclear='1'THENcount:=0;ELSIFload='1'THENcount:=data_in;VHDL的配置(2)ELSEIF(clk'EVENT)AND(clk='1')AND(clk'LAST_VALUE='0')THENIF(count=255)THENcount:=0;ELSEcount:=count+1;ENDIF;ENDIF;ENDIF;data_out=count;ENDPROCESS;ENDcount_255;CONFIGURATIONsmall_countOFcounterISFORcount_255ENDFOR;ENDsmall_count;VHDL的配置(3)ARCHITECTUREcount_64kOFcounterISBEGINPROCESS(clk)VARIABLEcount:INTEGER:=0;BEGINIFclear='1'THENcount:=0;ELSIFload='1'THENcount:=data_in;ELSEIF(clk'EVENT)AND(clk='1')AND(clk'LAST_VALUE='0')THENIF(count=65535)THENcount:=0;ELSEcount:=count+1;ENDIF;ENDIF;ENDIF;data_out=count;ENDPROCESS;ENDcount_64k;VHDL的配置(4)元件配置通过构造可配置的具体安装库元件,在结构性结构体中,用元件配置语句配置这些元件。下面是简单的2-4解码器器件配置的例子:USEWORK.std_logic_1164.ALL;ENTITYinvISPORT(a:INstd_logic;b:OUTstd_logic);ENDinv;ARCHITECTUREbehaveOFinvISBEGINb=NOT(a)AFTER5ns;ENDbehave;ab(y)(x)CONFIGURATIONbig_countOFcounterISFORcount_64kENDFOR;ENDbig_count;CONFIGURATIONinvconOFinvISFORbehaveENDFOR;ENDinvcon;USEWORK.std_logic_1164.ALL;ENTITYand3ISPORT(a1,a2,a3:INstd_logic;o1:OUTstd_logic);ENDand3;ARCHITECTUREbehaveOFand3ISBEGINo1=a1ANDa2ANDa3AFTER5ns;ENDbehave;a3and3o1a2a1USEWORK.std_logic_1164.ALL;ENTITYdecodeISPORT(a,b,en:INstd_logic;q0,q1,q2,q3:OUTstd_logic);ENDdecode;Decodeq3q2q1q0enbaCONFIGURATIONand3conOFand3ISFORbehaveENDFOR;ENDand3con;VHDL的配置(5)ARCHITECTUREstructuralOFdecodeISCOMPONENTinvPORT(a:INstd_logic;b:OUTstd_logic);ENDCOMPONENT;COMPONENTand3PORT(a1,a2,a3:INstd_logic;o1:OUTstd_logic);ENDCOMPONENT;SIGNALnota,notb:std_logic;BEGINI1:invPORTMAP(a,nota);I2:invPORTMAP(b,notb);A1:and3PORTMAP(nota,en,notb,Q0);A2:and3PORTMAP(a,en,notb,Q1);A3:and3PORTMAP(nota,en,b,Q2);A4:and3PORTMAP(a,en,b,Q3);ENDstructural;notbnotaq3q2q1a4a3q0a2a1I1I2baen(x)(y)VHDL的配置(6)低级配置:对解码器实体低级形式的元件配置如下:CONFIGURATIONdecode_llconOFdecodeISFORstructuralFORI1:invUSECONFIGURATIONWORK.invcon;ENDFOR;FORI2:invUSECONFIGURATIONWORK.invcon;ENDFOR;FORALL:and3USECONFIGURATIONWORK.and3con;ENDFOR;ENDFOR;ENDdecode_llcon;该配置指定decode实体的structural结构体中每个元件所用的配置,低级配置在当前配置库中已经存在时才能编辑,如用元件I1、或者用ALL(如对and3元件)或者OTHERS付句标识元件。从工作库中对I1元件配置称之为invcon的配置。在多个配置时低级配置既易写又好理解,但在层次增加时,增加了多步进程的重新编辑实体──结构体对的配置:在这种形式中指定用实体──结构体对,该结构体实际上是可选项,如果未指定结构体,用的就是这个实体最后编辑的结构体。USEENTITY指定实体用哪个结构体。VHDL的配置(7)CONFIGURATIONdecode_eaconOFdecodeISFORstructuralFORI1:invUSEENTITYWORK.inv(behave);ENDFOR;FOROTHERS:invUSEENTITYWORK.inv(behave);ENDFOR;FORA1:and3USEENTITYWORK.and3(behave);ENDFOR;FOROTHERS:and3USEENTITYWORK.and3(behave);ENDFOR;ENDstructural;ENDdecode_eacon;库元件配置invcon(先建好)库元件配置and3con(先建好)元件配置Decond_llcon方式Decond_eacon方式第二个反相器用了OTHERS付句(第一个反相器标识I1),这将允许另一个元件用不同的结构体来描述,将存在一种混合的建模方式,即一个元件在开关(或门级)建模,而另一个元件在行为级建模。在改变结构体所用的元件时,低级配置修改后需重新编辑,并根据它重新编辑较高级的配置,而实体-结构体配置在改变结构体所用的元件时,只对修改的decode_eacon配置重新编辑,并不做其它配置的重新编辑。VHDL的配置(8)端口映射:当元件端口与正在映射元件具体安装元件的实体端口不一致时,可用配置端口映射付句规定哪个元件端口映射到实体的实际端口,如果端口名相同,那么端口映射付句将完成端口匹配:USEWORK.std_logic_1164.ALL;ENTITYinvISPORT(x:INstd_logic;y:OUTstd_logic);ENDinv;ARCHITECTUREbehaveOFinvISBEGINy=NOT(x)AFTER5ns;ENDbehave;CONFIGURATIONinvconOFinvISFORbehaveENDFOR;ENDinvcon;注意原来的元件端口是(a,b)而现在的实体端口是(x,y)CONFIGURATIONdecode_map_conOFdecodeISFORstructuralFORI1:invUSEENTITYWORK.inv(behave);PORTMAP(a=x,b=y);ENDFOR;FORI2:invUSEENTITYWORK.inv(behave);PORTMAP(a=x,b=y);ENDFOR;FORALL:and3USEENTITYWORK.and3(behave);ENDFOR;ENDFOR;ENDdecode_map_con;需要在配置中加端口映射付句VHDL的配置(30)映射库实体:能把不同名的配置库元件与相应的实体映射,这种能力允许元件名不同于它正在映射的实体,设计者能很方便地在实体之间交换实体的结构体中用到的每个元件,反过来可把具体安装的元件映射到不同的实体。如解码器例子的门级反相器inv,换成NMOS晶体管级的模型:USEWORK.std_logic_1164.ALL;ENTITYgroundISPORT(x:OUTstd_logic);ENDground;ARCHITECTUREdirtOFgroundISBEGINx=`0';ENDdirt;CONFIGURATIONguoundconOFguoundISFORdirtENDFOR;ENDgroundcon;配置库元件guoundconUSEWORK.std_LOGIC_1164.ALL;ENTITYvccISPORT(x:OUTstd_logic);ENDvcc;ARCHITECTUREplus5OFvccISBEGINx=`1';ENDplus5;CONFIGURATIONvccconOFvccISFORplus5ENDFOR;ENDvcccon;配置库元件vccconUSEWORK.std_logic_1164.ALL;ENTITYdepISPORT(top:INstd_logic);bottom:OUTstd_logic);ENDdep;ARCHITECTUREbehaveOFdepISBEGINbottom=R1WHENtop=`1'ELSEROWHENtop=`0'ELSERXWHENtop=`X'ELSEtop;ENDbehave;CONFIGURATIONdepconOFdepISFORbehaveENDFOR;ENDdepcon;配置库元件depcon耗尽管USEWORK.std_login_1164.ALL;ENTITYuxfrISFORT(left,sw:INstd_logic;righe:outstd_logic);ENDuxfr;ARCHIECTUREbehaveOFuxfrISBEGINuxfr_proc:PROCESS(left,sw)BEGI
本文标题:VHDL的配置
链接地址:https://www.777doc.com/doc-5390929 .html