第4章 VHDL基础PPT课件_第1页
第4章 VHDL基础PPT课件_第2页
第4章 VHDL基础PPT课件_第3页
第4章 VHDL基础PPT课件_第4页
第4章 VHDL基础PPT课件_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

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

文档简介

.,1,第4章VHDL基础,VHDL结构,VHDL语法基础,VHDL常用语句,基本逻辑电路设计,.,2,什么是VHDL?,VHDL是超高速集成电路硬件描述语言(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)的英文缩写。,4.1VHDL结构,.,3,实体部分描述设计系统的外部接口信号(即输入/输出信号),结构体用于描述系统的内部电路,配置用于从库中选取所需元件安装到设计单元的实体中,包集合存放各设计模块能共享的数据类型、常数、子程序等,库用于存放已编译的实体、结构体、包集合和配置,.,4,VHDL程序结构,例4-1一个2输入的与门的逻辑描述LIBRARYieee;-库说明语句USEieee.std_logic_1164.ALL;-程序包说明语句ENTITYand2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDand2;ARCHITECTUREand2xOFand2ISBEGINy=aANDb;ENDand2x;,实体部分,结构体部分,.,5,2库(LIBRARY),库是用来放置可编译的设计单元的地方,通过其目录可查询和调用。VHDL中的库大致可归纳为5种:IEEE库、STD库、ASIC矢量库、WORK库和用户定义库。,IEEE库。常用的资源库。IEEE库包含经过IEEE正式认可的STD_LOGIC_1164包集合和某些公司提供的一些包集合,如STD_LOGIC_ARITH(算术运算库)、STD_LOGIC_UNSIGNED等。STD库。VHDL的标准库。库中存放有称为“standard”的标准包集合,其中定义了多种常用的数据类型,均不加说明可直接引用。STD库中还包含有称为“textio”的包集合。在使用“textio”包集合中的数据时,应先说明库和包集合名,然后才可使用该包集合中的数据。ASIC矢量库。在VHDL语言中,为了进行门级仿真,各公司可提供面向ASIC的逻辑门库。在该库中存放着与逻辑门一一对应的实体。为了使用面向ASIC的库,对库进行说明是必要的。,.,6,WORK库。WORK库是现行作业库。设计者所描述的VHDL语句不需要任何说明,将都存放在WORK库中。WORK库对所有设计都是隐含可见的,因此在使用该库时无需进行任何说明。用户定义库。用户定义库简称用户库,是由用户自己创建并定义的库。设计者可以把自己经常使用的非标准(一般是自己开发的)包集合和实体等汇集成在一起定义成一个库,作为对VHDL标准库的补充。用户定义库在使用时同样要首先进行说明。,.,7,库和程序包的语法:,library;use.all;,一般VHDL代码中库和程序包的调用语句:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_signed.all;useieee.std_logic_unsigned.all;,-最常用,-计数器常用,.,8,3.实体,实体的一般格式为:ENTITY实体名IS类属参数说明;端口说明;END;,ENTITY、IS、END是VHDL的关键字(保留字)。实体中的每一个I/O信号被称为端口,其功能对应于电路图符号的一个引脚。端口说明则是对一个实体的一组端口的定义,即对基本设计实体与外部接口的描述。端口是设计实体和外部环境动态通信的通道。,类属参数说明是可选部分。如果需要,可使用以“GENERIC”语句来指定该设计单元的类属参数(如延时、功耗等)。实体名、端口名等均应为符合VHDL命名规则的标识符。,.,9,类属参数说明的格式为:GENERIC(参数名:参数类型:=初始值);,端口说明的一般格式为:PORT(端口名,端口名:端口模式数据类型;端口名,端口名:端口模式数据类型);,端口模式用来说明数据传输通过该端口的方向。端口模式有以下几类:IN(输入):仅允许数据流进入端口。主要用于时钟输入、控制输入、单向数据输入。OUT(输出):仅允许数据流由实体内部流出端口。该模式通常用于终端计数一类的输出,不能用于反馈。BUFFER(缓冲):该模式允许数据流出该实体和作为内部反馈时用,但不允许作为双向端口使用。INOUT(双向):可以允许数据流入或流出该实体。该模式也允许用于内部反馈。如果端口模式没有指定,则该端口处于缺省模式为:IN。,.,10,entity实体名isport(a:inbit;b:inbit;y:outbit);end实体名;,端口名,数据类型,端口模式,a,b,y,?,.,11,例:四位加法器实体说明程序ENTITYadd4ISPORT(a,b:INSTD_LOGIC_VECTOR(3downto0);Ci:INSTD_LOGIC;Sum:OUTSTD_LOGIC_VECTOR(3downto0);Co:OUTSTD_LOGIC);ENDadd4;由实体说明画出四位加法器add4的电路图如下所示。,.,12,4.结构体,结构体主要是描述实体的硬件结构、元件之间的互连关系、实体所完成的逻辑功能以及数据的传输变换等方面的内容。,结构体的语句格式:,architecturearch_nameofe_nameis说明语句begin功能描述语句endarchitecturearch_name;,.,13,进程语句,块语句,体,结,构,说明语句,功能描述语句,元件例化语句,子程序调用语句,信号赋值语句,常数说明,数据类型说明,信号说明,例化元件说明,子程序说明,.,14,5.配置,配置主要为顶层设计实体指定结构体,或为参与例化的元件实体指定所希望的结构体,以层次方式来对元件例化作结构配置。,配置语句的一般格式如下:,configuration配置名of实体名isfor结构体名endfor;end配置名;,.,15,4.2VHDL语法基础,标识符的书写要遵守以下规则:(1)标识符由字母、数字和下划线组成,如a7_;(2)标识符中不区分大小写,ab和AB是一样的;(3)第一个字符必须是字母,如a666;(4)不允许有两个连续的下划线,如a_b错误;(5)末尾不能是下划线,如mname_错误;(6)标识符不能和关键字相同,如entity,is等。,4.2.1标识符,.,16,4.2.2数据类型,1.布尔(BOOLEAN)类型,TYPEBOOLEANIS(FALSE,TRUE);-库中该数据类型的定义语句,2.位(BIT)和位矢量(BIT_VECTOR)类型,用来表示数字系统中的信号值。位值用字符0或者1(将值放在引号中)表示。与整数中的1和0不同,1和0仅仅表示一个位的两种取值。,例:signala,b:bit;,signalx:bit_vector(0to7);variabley:bit_vector(3downto0);,例:signalf1:integerrange0to15;,3.整数(INTEGER)类型:-(231-1)(231-1)(范围),.,17,例:signala:std_logic;,例:variabley:std_logic_vector(3downto0);,4.标准逻辑位(STD_LOGIC)类型,TYPESTD_LOGICIS(U,X,0,1,Z,W,L,H,-);各值的含义是:U-未初始化的,X-强未知的,0-强0,1-强1,Z-高阻态,W-弱未知的,L-弱0,H-弱1,-忽略。,5.标准逻辑矢量(STD_LOGIC_VECTOR)类型,TYPESTD_LOGIC_VECTORISARRAY(NATURALRANGE)OFSTD_LOGIC;,.,18,6.字符(CHARACTER)和字符串(STRING)类型字符也是一种数据类型,所定义的字符量通常用单引号括起来,如a。一般情况下VHDL对大小写不敏感,但对字符量中的大小写则认为是不一样的。例如,B不同于b。字符量中的字符可以是从a到z中的任一个字母,从0到9中的任一个数以及空格或者特殊字符,如$,%等等。字符串是由双引号括起来的一个字符序列,也称字符矢量或字符串组。字符串常用于程序的提示和说明。字符串举例如下:VATIABLEstring_1:STRING(0TO3);string_1:=“abcd”;,7.实数(REAL)类型:只能仿真不能综合,8.时间(TIME)类型:只能仿真不能综合,.,19,标准数据类型,.,20,4.2.3VHDL类型转换函数,IEEE库类型转换函数表,.,21,4.2.4数据对象,1.常数(CONSTANT),CONSTANT常数名:数据类型:=表达式;-常数定义,constantfbt:std_logic_vector(0to5):=010110;-标准逻辑矢量类型constantdatain:integer:=15;-整数类型,CONSTANTDelay:TIME:=10ns;,常数说明语句格式为:,.,22,2.变量(VARIABLE)变量定义语句的格式为,VARIABLE变量名:数据类型:=初始值;-变量定义,variablea:std_logic:=1;-变量a定义为标准逻辑位数据类型,初始值是1变量赋值语句的格式为:,目标变量名:=表达式;-变量赋值,variablex,y:integerrange0to15;-分别定义变量x和y为整数类型variablea,b:std_logic_vector(7downto0);x:=11;y:=2+x;a:=b-b向a赋值a(0to5):=b(2to7);,.,23,3.信号(SIGNAL)信号定义语句的格式为:,SIGNAL信号名:数据类型:=初始值;-信号定义信号赋值语句表达式为:,目标信号名=表达式;-信号赋值,signala,b,c,y,z:integer;.process(a,b,c)beginy=a+b;z=ca;y=b;endprocess;,.,24,4.信号与变量的区别,信号与变量赋值语句功能的比较,.,25,例信号和变量值代入的区别举例PROCESS(a,b,c,d)BEGINd=a;x=b+d;d=c;y=b+d;ENDPROCESS;结果:x=b+c;y=b+c;PROCESS(a,b,c)VARIABLEd:std_logic_vector(3downto0);BEGINd:=a;x=b+d;d:=c;y=b+d;ENDPROCESS;结果:x=b+a;y=b+c;,-信号量的值是将进程语句最后带入的的值作为最终值-变量的值一经带入则立即改变。,.,26,逻辑操作符(LogicalOperator)关系操作符(RelationalOperator)算术操作符(ArithmeticOperator)符号操作符(SignOperator)重载操作符(OverloadingOperator),4.2.5VHDL操作符,.,27,算术操作符,+,加,整数,减,整数,1,if条件句then顺序语句elsif条件句then顺序语句.else顺序语句endif;,3,if条件句then顺序语句else顺序语句endif;,2,if条件句thenif条件句then.endif;endif;,4,IF语句的语句格式有如下四种:,.,35,例设计2选1的数据选择器。ARCHITECTURErtlOFmux2_1ISBEGINPROCESS(a,b,sel)BEGINIF(sel=1)THENc=a;ELSEc;.;;.WHENOTHERS=;ENDCASE;,CASE语句可以用来描述总线或编码、译码的行为,其功能是从众多不同语句的序列中选择其中之一执行之。IF语句也具有类似的功能,但CASE语句具有比IF语句更强的可读性。,.,38,条件表达式的值:,单个普通数值:如6。数值选择范围:如(2TO4),表示取值为2、3或4。并列数值:如35,表示取值为3或者5。混合方式:以上三种方式的混合。,CASE语句是无序的,所有表达式的值都是并行处理的;CASE语句所有表达式的值都必须穷举,且不能重复,不能穷尽的值用OTHERS表示;对任意项输入的条件表达式,VHDL不支持。(即条件表达式的值不能含有X),.,39,entitymux41is4选1多路选择器port(d:instd_logic_vector(3downto0);a,b:instd_logic;y:outstd_logic);endentitymux41;architectureartofmux41issignalsel:std_logic_vector(1downto0);beginselyyyyy=X;Endcase;endprocess;endart;,.,40,4.LOOP语句,循环标号:WHILE条件LOOP顺序处理语句;ENDLOOP循环标号;该语句中,如果条件为真,执行顺序处理语句;否则,结束循环。,LOOP标号:FOR循环变量IN循环次数范围LOOP顺序语句ENDLOOPLOOP标号;,.,41,【例】signala,b,c:std_logic_vector(1to3);.fornin1to3loopa(n)=b(n)andc(n);endloop;此段程序等效于顺序执行以下三个信号赋值操作:a(1)=b(1)andc(1);a(2)=b(2)andc(2);a(3)=b(3)andc(3);,.,42,5.NEXT语句:跳出本次循环,开始下一次循环,NEXT;-第一种语句格式NEXTLOOP标号;-第二种语句格式NEXTLOOP标号WHEN条件表达式;-第三种语句格式,6.EXIT语句:跳出整个循环,EXIT;-第一种语句格式EXITLOOP标号;-第二种语句格式EXITLOOP标号WHEN条件表达式;-第三种语句格式,.,43,7.WAIT语句,WAIT;-第一种语句格式(永远挂起)WAITON信号表;-敏感信号量变化,进程启动(敏感信号等待语句)WAITUNTIL条件表达式;-第三种语句格式(条件等待语句)WAITFOR时间表达式;-第四种语句格式(超时等待语句),注意:只有第三种语句格式能综合,其他只能仿真。,WAITUNTILclock=1;WAITUNTILrising_edge(clock);WAITUNTILNOTclockSTABLEANDclock=1;WAITUNTILclock=1ANDclockEVENT;,.,44,WAIT语句,WAIT语句有以下四种形式:WAIT-无限等待WAITON敏感信号表;-敏感信号量变化,进程启动WAITUNTIL条件表达式;-表达式成立时,进程启动WAITFOR时间表达式;-时间到,进程启动,WAIT语句是进程(含过程)的同步语句,是进程的启动点。在进程(或过程)中,当执行到WAIT等待语句时,运行程序将被挂起,直到满足此语句的结束挂起条件后,将重新开始执行进程(或过程)中的程序。WAIT作为进程体的一条语句同进程体内的其它语句顺序执行。,未设置挂起条件,表示永远挂起,即无限等待。,2.敏感信号等待语句,即敏感信号一旦发生变化将结束挂起,再次启动进程。VHDL规定,已列出敏感信号表的进程中不能使用任何形式的WAIT语句。一般,WAIT语句可用于进程中的任何地方。,3.条件等待语句。被此语句挂起的进程需满足如下两个条件才能结束挂起状态,重新启动:条件表达式中所含信号发生了变化;此信号改变后,且满足WAIT语句所设的条件。两条件缺一不可,且必须依照以上顺序完成。,4.超时等待语句(此语句不可综合,故不再讨论)。,.,45,8.RETURN语句RETURN语句是一段子程序结束后,返回主程序的控制语句,9.空操作语句,NULL;,NULL语句不完成任何操作,类似于汇编语言中的NOP语句,其作用只是使程序运行流程跨入下一步语句的执行。NULL语句常用于CASE语句中,为满足所有可能的条件,利用NULL来表示所余的不用条件下的操作行为,.,46,相对于传统的软件描述语言,并行语句结构是最具VHDL特色的。在VHDL中,并行语句具有多种语句格式,各种并行语句在结构体中的执行是同步进行的,或者说是并行运行的,其执行方式与书写的顺序无关。在执行中,并行语句之间可以有信息往来,也可以是相互独立、互不相关的。,4.3.2并行语句,.,47,结构体中的并行语句模块,.,48,并行语句在结构体中的使用格式如下:ARCHITECTURE结构体名OF实体名IS说明语句BEGIN并行语句ENDARCHITECTURE结构体名;,.,49,1.并行信号赋值语句并行信号赋值语句有三种形式:简单信号赋值语句、条件信号赋值语句和选择信号赋值语句。这三种信号赋值语句的共同点是:赋值目标必须都是信号,所有赋值语句与其他并行语句一样,在结构体内的执行是同时发生的,与它们的书写顺序和是否在块语句中没有关系。,.,50,(1)简单信号赋值语句,赋值目标=表达式;,ARCHITECTUREcurtOFbc1ISSIGNALs1,e,f,g,h:STD_LOGIC;BEGINoutput1=aANDb;output2=c+d;g=eORf;h=eXORf;s1=g;ENDARCHITECTUREcurt;,.,51,(2)条件信号赋值语句,赋值目标=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE.表达式;,1.条件信号代入语句与进程中的IF语句相同,具有顺序性,但ELSE不能省略。2.执行该语句时,每一赋值条件是按书写的先后关系逐项测定的,一旦发现条件为“true”,立即将表达式的值赋予目标信号。3.赋值条件的数据类型是布尔量。4.由于条件测试的顺序性,条件信号代入语句的赋值具有优先级别,其中第1子句优先级别最高,依次类推。,.,52,【例】ENTITYmuxISPORT(a,b,c:INBIT;p1,p2:INBIT;z:OUTBIT);END;ARCHITECTUREbehvOFmuxISBEGINz=aWHENp1=1ELSEbWHENp2=1ELSEc;END;,.,53,libraryieee;4选1多路选择器useieee.std_logic_1164.all;entitymux41isport(d:instd_logic_vector(3downto0);a,b:instd_logic;y:outstd_logic);endentitymux41;architectureartofmux41issignalsel:std_logic_vector(1downto0);beginsel=b,.,54,(3)选择信号赋值语句,WITH选择表达式SELECT赋值目标信号=表达式WHEN选择值,表达式WHEN选择值,.表达式WHEN选择值;,1.选择信号语句与进程中的CASE语句相似,但不能在进程中应用。2.选择信号语句具有敏感量,即WITH后面的选择条件表达式。每当选择表达式的值发生变化,便启动该语句对各子句的选择值(条件)进行测试对比,当发现有满足条件的子句时,就将此子句表达式的值赋予目标信号。3.与CASE语句相类似,该语句对子句条件选择值具有同期性(非顺序性)。4.不允许有条件重叠现象,也不允许存在条件涵盖不全的情况。,.,55,【例】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdecoderISPORT(a,b,c:INSTD_LOGIC;data1,data2:INSTD_LOGIC;dataout:OUTSTD_LOGIC);ENDdecoder;ARCHITECTUREconcuntOFdecoderISSIGNALinstruction:STD_LOGIC_VECTOR(2DOWNTO0);BEGINinstruction=c,.,56,libraryieee;useieee.std_logic_1164.all;entitymux41isport(inp:instd_logic_vector(3downto0);a,b:instd_logic;y:outstd_logic);endentitymux41;architectureartofmux41issignalsel:std_logic_vector(1downto0);beginsel=b,.,57,2.进程语句,(1)PROCESS语句结构的一般表达格式如下:进程标号:PROCESS(敏感信号参数表)IS进程说明部分BEGIN顺序语句ENDPROCESS进程标号;,.,58,(2)进程结构组成,进程说明部分,顺序描述语句部分,敏感信号参数表,.,59,(3)进程要点,1.PROCESS为一无限循环语句,2.PROCESS中的顺序语句具有明显的顺序/并行运行双重性,3.进程必须由敏感信号的变化来启动,4.进程语句本身是并行语句,5.信号是多个进程间的通信线,6.同步进程的敏感信号表中只有时钟信号,.,60,【例】ENTITYmulISPORT(a,b,c,selx,sely:INBIT;data_out:OUTBIT);ENDmul;ARCHITECTUREexOFmulISSIGNALtemp:BIT;BEGINp_a:PROCESS(a,b,selx)BEGINIF(selx=0)THENtemp=a;ELSEtemp=b;ENDIF;ENDPROCESSp_a;p_b:PROCESS(temp,c,sely)BEGINIF(sely=0)THENdata_out=temp;ELSEdata_out实际连接端口名,.);,-元件定义语句,-元件例化语句,元件例化:即引入一种连接关系,它将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。元件例化是使VHDL设计实体构成自上而下层次化设计的一个重要途径。元件例化可以是多层次的。,.,62,【例】全加器的VHDL描述,.,63,.,64,-半加器描述(1):布尔方程描述方法LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisBEGINso=NOT(aXOR(NOTb);cobin,co=d,so=e);-元件例化语句u2:h_adderPORTMAP(a=e,co=f,b=cin,so=sum);u3:or2aPORTMAP(d,f,cout);ENDARCHITECTUREfd1;,.,68,4.生成语句GENERATE语句用来产生多个相同的结构,适合于生成存储器阵列和寄存器阵列。GENERATE语句有两种格式:,标号:FOR循环变量IN取值范围GENERATE说明BEGIN并行语句ENDGENERATE标号;或标号:IF条件GENERATE说明Begin并行语句ENDGENERATE标号;,FOR-GENERATE语句在形式上与FOR-LOOP语句相象,但结构中前者是并发处理,后者是顺序处理。故FOR-GENERATE语句结构中不能使用EXIT和NEXT语句。,.,69,【例】.COMPONENTcompPORT(x:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALa:STD_LOGIC_VECTOR(0TO7);SIGNALb:STD_LOGIC_VECTOR(0TO7);.gen:FORiINaRANGEGENERATEu1:compPORTMAP(x=a(i),y=b(i);ENDGENERATEgen,.,.,70,生成语句产生的8个相同的电路模块,.,71,4.4基本逻辑电路设计,4.4.1组合逻辑电路设计1基本门电路基本门电路可以使用VHDL中定义的逻辑操作符,实现与门(AND)、或门(OR)、非门(NOT)、与非门(NAND)、或非门(NOR)、异或门(XOR)及同或门(XNOR)的逻辑,同时可构成这些基本门电路构成的逻辑函数式和逻辑图。,.,72,libraryieee;useieee.std_logic_1164.all;entityxiti309isport(a,b,c,d:instd_logic;y3,y2,y1,y0:outstd_logic);end;architecturexiti309arofxiti309isbeginy3=aor(bandc)or(bandd);y2=(aandd)or(band(notc)and(notd);y1=(aand(notd)or(notb)andc)or(candd);y0=(aand(notd)or(nota)and(notb)andd)or(bandcand(notd);endxiti309ar;,教材【例6-4】8421码转换成5421码的码组变换电路,.,73,libraryieee;useieee.std_logic_1164.all;entityadderisport(ai,bi,ci:instd_logic;si,co:outstd_logic);endadder;architectureadderofadderisbeginsi=aixorbixorci;cooutpoutpoutpoutpoutpoutpoutpoutpoutp=xxxxxxxx;endcase;endprocess;endarchitectureart4;,.,76,4线-2线优先编码器真值表,注:表中的“x”为任意,类似VHDL中的“-”值。,3.4线-2线优先编码器,.,77,libraryieee;useieee.std_logic_1164.all;entityencoderisport(a:instd_logic_vector(3downto0);y:outstd_logic_vector(1downto0);eo:outstd_logic);endencoder;architectureencoderpofencoderisbeginprocess(a)beginifa(3)=1theny=11;eo=1;elsifa(2)=1theny=10;eo=1;elsifa(1)=1theny=01;eo=1;elsifa(0)=1theny=00;eo=1;elsifa=0000theny=00;eo=0;endif;endprocess;endencoderp;,.,78,4.1路-4路数据分配器,libraryieee;useieee.std_logic_1164.all;entitymux4t1isport(s1,s2:instd_logic;datain:instd_logic;a,b,c,d:outstd_logic);endmux4t1;architectureoneofmux4t1issignals:std_logic_vector(1downto0);signaldataout:std_logic_vector(3downto0);beginsdataoutdataoutdataoutdataoutdataout=zzzz;endcase;endprocess;a=dataout(0);b=dataout(1);c=dataout(2);d=dataout(3);endarchitectureone;,.,80,5.4选1数据选择器,libraryieee;useieee.std_logic_1164.all;entitymux41isport(inp:instd_logic_vector(3downto0);a,b:instd_logic;y:outstd_logic);endentitymux41;architectureartofmux41issignalsel:std_logic_vector(1downto0);beginselled7led7led7led7led7led7led7led7led7led7led7=0000000;-不显示endcase;endprocess;endbehv;,.,83,4.4.2时序逻辑电路设计1,.,84,1.基本RS触发器,.,85,1.边沿JK触发器,libraryieee;useieee.std_logic_1164.all;entityjkcfqisport(j,k,clk:instd_logic;q,qb:outstd_logic);endentityjkcfq;architectureartofjkcfqissignalq_s,qb_s:std_logic;beginprocess(clk,j,k)isbeginif(clkeventandclk=1)then,.,86,if(j=0andk=1)thenq_s=0;qb_s=1;elsif(j=1andk=0)thenq_s=1;qb_s=0;elsif(j=1andk=1)thenq_s=notq_s;qb_s=notqb_s;endif;endif;q=q_s;qb=qb_s;endprocess;endarchitectureart;,.,87,2.异步复位/置位的D触发器libraryieee;useieee.std_logic_1164.all;entityasyndcfqisport(clk,d,preset,clr:instd_logic;q:outstd_logic);endentityasyndcfq;architectureartofasyndcfqisbegin,.,88,process(clk,preset,clr)isbeginif(preset=1)then-置位信号为1,则触发器被置位q=1;elsif(clr=1)then-复位信号为1,则触发器被复位q=0;elsif(clkeventandclk=1)thenq=d;endif;endprocess;endarchitectureart;,.,89,3.同步复位的D触发器libraryieee;useieee.std_logic_1164.all;entitysyndcfqisport(d,clk,reset:instd_logic;q:outstd_logic);endentitysyndcfq;architectureartofsyndcfqisbeginprocess(clk)isbeginif(clkeventandclk=1)thenif(reset=0)thenq=0;-时钟边沿到来且有复位信号,触发器被复位elseq=d;endif;endif;endprocess;endarchitectureart;,.,90,4.4位寄存器,libraryieee;useieee.std_logic_1164.all;entityregisport(d:instd_logic_vector(3downto0);clk:instd_logic;q:outstd_logic_vector(3downto0);endentityreg;architectureartofregisbeginprocess(clk)beginif(clkeventandclk=1)thenq=d;endif;endprocess;endarchitectureart;,.,91,5.移位寄存器,libraryieee;useieee.std_logic_1164.all;entityshifterisport(clk:instd_logic;data:instd_logic_vector(7downto0);shift_left:instd_logic;shift_right:instd_logic;reset:instd_logic;mode:instd_logic_vector(1downto0);qout:bufferstd_logic_vector(7downto0);endentityshifter;architectureartofshifterisbeginprocess(clk)begin,.,92,if(clkeventandclk=1)thenif(reset=1)thenqoutqoutqoutqoutnull;endcase;endif;endif;endprocess;endarchitectureart;,.,93,6.4位二进制加法计数器,【例8-5】用VHDL描述8421码4位二进制加法计数器。程序中具有异步清零控制端(低电平有效),同步置数控制端(低电平有效),计数控制信号(高电平有效)。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycntm16isport(clk,en,cr,sh:instd_logic;d:instd_logic_vector(3downto0);co:outstd_logic;q:bufferstd_logic_vector(3downto0);endentitycntm16;architectureartofcntm16isbeginco=1when(q=1111anden=1)else0;,.,94,process(clk,cr)isbeginif(cr=0)thenq=0000;elsif(clkeventandclk=1)thenif(sh=0)thenq=d(3downto0);elsif(en=1)thenif(q=1111)thenq=0000;elseq=q+1;endif;endif;endif;endprocess;endarchitectureart;,.,95,7.同步十进制加/减计数器74LS190,教材【例8-6】libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityt74190isport(cp:instd_logic;-计数时钟ld:instd_logic;-置数控制信号(低电平有效)ct:instd_logic;-计数控制端低电平有效u_d:instd_logic

温馨提示

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

评论

0/150

提交评论