VHDL语言描述语句课件.ppt_第1页
VHDL语言描述语句课件.ppt_第2页
VHDL语言描述语句课件.ppt_第3页
VHDL语言描述语句课件.ppt_第4页
VHDL语言描述语句课件.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

VHDL语言描述语句,VHDL语言描述语句,一、VHDL语句分类;二、基本的VHDL顺序语句三、基本的VHDL并行语句四、常用组合单元电路VHDL设计五、常用时序单元电路VHDL设计,一、VHDL语句分类,按照功能分类:赋值语句;数据流控制语句(转向控制语句):Casewhen(顺序);Ifelse(顺序);withselectwhen(并);Whenelse(并);模块化设计语句:process;component;generate;block;forloop;子程序调用语句仿真语句:wait;按照语句的执行方式特点分为:并行语句:按动作特点:语句执行顺序与书写顺序无关;使用范围:进程语句外部的语句都是并行的;实际应用:对应于各自独立运行的逻辑电路;顺序语句:按动作特点:照语句书写顺序执行;使用范围:进程、函数和过程内部出现;实际应用:时序电路、数据流控制电路;,VHDL顺序语句,黑龙江大学电子工程学院/EDA教研室,基本的VHDL顺序语句,VHDL中的顺序语句用于描述进程或子程序的内部功能,且只能出现在PROCESS、FUNCTION、PROCEDURE等语句中。可以用来设计时序电路、组合电路。主要作用:时序流控制、程序控制、条件和迭代等,行为描述代码。常用的顺序语句见下表。,1、process(进程);2、信号和变量;3、IF语句;4、CASE语句;5、CASE语句和IF语句的比较;6、LOOP语句;7、WAIT语句;8、使用顺序代码设计组合逻辑电路;,基本的VHDL顺序语句,5.3.1进程(PROCESS)语句语法说明:1、Process为过程语句,定义如下:进程标号:Process触发信号1,触发信号2,定义区Begin顺序语句EndProcess进程标号;注:方括号内容可以省略;触发信号将决定该过程是否执行;一个结构体当中可以有多个过程;多个进程语句之间是并行执行,进程内部属于顺序执行语句。,2.进程语句语法说明,进程标号:用于标识进程,可选。多个进程时,提高程序可读性;敏感信号列表:敏感信号发生变化(上升沿或者下降沿),进程被激活,从而执行内部顺序语句。注意:可以有多个敏感信号,用逗号隔开,任何一个变化都激活进程,否则进程挂起。进程声明区:用于定义进程内部的局部变量,信号不可在此声明。进程之间数据交流通过全局信号。顺序语句:进程内部语句顺序执行。用处:适合描述时序电路。也可用于组合逻辑电路的设计。,例1:进程语句例程带异步复位的D触发器,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcydffISPORT(d,clk,rst:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDENTITYcydff;ARCHITECTUREbehaveOFcydffISBEGINcydff_inst:PROCESS(clk,rst)BEGINIF(rst=1)thenq=0;elsIF(clk=1ANDclkLAST_VALUE=0ANDclkEVENT)THENq=d;ENDIF;ENDPROCESScydff_inst;ENDARCHITECTUREbehave;,语法说明:时钟沿的VHDL描述方法总结(3种):clkeventandclk=1;clkeventandclk=0;clk=1ANDclkEVENTANDclkLAST_VALUE=0clk=0ANDclkEVENTANDclkLAST_VALUE=1rising_edge(clk);falling_edge(clk);Clkevent?,上升沿描述1:,下降沿描述1:,上升沿描述2:,下降沿描述2:,上升沿描述3:,下降沿描述3:,进程语句总结:,进程仅在敏感信号发生变化时才执行。特点:进程内部,顺序语句;进程语句之间,并行。不同进程内不可以对同一信号赋值,即不可多重赋值。进程内信号和变量赋值效果不同。一个进程内不能同时扑捉同一个时钟信号的上升沿或者下降沿。例如下面语句是错误的:PROCESS(clk)BEGINIFrising_edge(clk)thenelsiffalling_edge(clk)thenendif;endpeocess;,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;ELSEtemp=c;ENDIF;ENDPROCESSp_b;endex;,1、信号和变量异同:(1)、声明范围:。信号:ENTITY,ARCHITECTURE,PACKAGE(ALL)变量:顺序语句中(PROCESS、子程序)(2)、作用:动态数值传递,存储运算中间结果(变量)。(3)、使用范围:全局(sig),局部(var)。(4)、变量结果只能由信号传递到外部。(5)、动作特点:变量:立即更新。信号:process执行完毕才生效。(允许多驱动源,仅最后一个有效)(6)、操作符:信号:=变量::=,2、信号和变量,例2:ARCHITECTUREbehavioralOFexample_duibiISSIGNALd0,d1,d2,d3:STD_LOGIC;-定义信号SIGNALq0,q1:STD_LOGIC;BEGINli_1:PROCESS(d0,d1,d2,d3)BEGINd2=d0;-信号量代入q0=d2ORd3;d2=d1;-信号量代入q1=d2ORd3;ENDPROCESScduibi_1;li_2:PROCESS(d0,d1,d3)VARIABLEm2:STD_LOGIC;BEGINm2:=d0;-变量赋值q0=m2ORd3;m2:=d1;-变量赋值q1=m2ORd3;ENDPROCESScduibi_2;ENDbehavioral;,进程li_1的运行结果:q0=d1ORd3并且q1=d1ORd3进程li_2的运行结果:q0=d0ORd3而q1=d1ORd3,语法说明:进程当中的赋值:变量:立即更新。信号:process执行完毕赋值才生效。同时,进程中的信号赋值语句允许有多个不同的赋值驱动源,但仅最后一个驱动源有效,3、IF语句,IF语句IF语句是根据所指定的条件来确定执行哪些语句,适用于比较器、译码器等需要条件控制的逻辑电路设计,通常有以下三种类型。(1)用作门阀控制时的IF语句书写格式为IF(条件)THEN顺序处理语句;ENDIF;例程:PROCESS(clk)BEGINIFclkeventandclk=1THENq=d;qb=NOTd;ENDIF;ENDPROCESS;,(2)用作选择控制时的IF语句书写格式为IF(条件)THEN顺序处理语句1;ELSE顺序处理语句2;ENDIF;,PROCESS(a,b,en)BEGINIF(en=1)THENc=a;ELSEc=b;ENDIF;ENDPROCESS;,(3)用作多选择控制时的IF语句书写格式为IF条件1THEN顺序处理语句1;ELSIF条件2THEN顺序处理语句2;ELSIF条件N-1THEN顺序处理语句N-1;ELSE顺序处理语句N;ENDIF;,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);en:INSTD_LOGIC_VECTOR(1DOWNTO0);y:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREaaOFmux4ISBEGINPROCESS(input,en)BEGINIF(en=00)THENy=input(0);ELSIF(en=01)THENy=input(1);ELSIF(en=10)THENy语句2;WHENOTHERS=语句3(null、unaffected);ENDCASE;当需要对多个条件进行判断时:(1)、WHEN值=语句;-单个值(2)、WHEN值|值|值|值=语句;-多个值的“或”(3)、WHEN值TO值=语句;-取值范围,枚举,例5-10用CASE语句描述4选1电路。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(s1,s2,a,b,c,d:INSTD_LOGIC;z:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREaOFmux4ISSIGNALs:STD_LOGIC_VECTOR(1DOWNTO0);BEGINSZZZZZ相当于THEN(3)、分支入口条件必须唯一,且取值在表达式范围内。(4)、分支入口选择(并行),与书写顺序无关。(5)、OTHERS(必须列出条件表达式的所有可能),NULL。Case语句的条件没有优先级,综合后是一个并行多路选择器。注意:如果if语句太长,应该尽可能用case语句代替。适用于编写组合逻辑电路:译码器,编码器等。,语法说明:,5、语句与语句比较:1、有优先级的电路,用IF语句。2、CASE语句可提高程序可读性,经常用来设计状态机电路。,6、LOOP及相关语句用途:当一段代码需要多次重复执行时。LOOP语句的语法结构有以下两种。顺序语句,使用范围:进程、函数、过程。FOR/LOOP:循环固定次数label:FOR循环变量IN范围LOOP顺序处理语句;ENDLOOP循环标号;(2)WHILE/LOOP:循环执行直到某个条件不再满足label:WHILE(条件)LOOP顺序处理语句;ENDLOOP循环标号;,6、LOOP及相关语句,(3)、NEXT:跳出本次循环label:NEXTloop_labelwhen条件表达式;(4)、EXIT:结束整个循环操作label:EXITloop_labelwhen条件表达式;例:FORIIN0TOLOOPtemp:=tempXORcdata(i);ENDLOOP;FORIIN0TOLOOP不可综合,静态参数。,循环次数必须为确定值或者用属性语句来定义,例:VARIABLEsum_temp:INTEGER:=0;VARIABLEi:INTEGER:=0;BEGINsum_example:WHILE(icount:=count+1;WHENothers=EXIT;-跳出当前循环,使LOOP循环结束。ENDCASE;ENDLOOP;,1、利用LOOP/EXIT语句设计一个连0检测器对输入矢量中连续出现的零的个数进行统计(从矢量左端开始统计),课堂练习2,课堂练习2,2、利用loop语句描述一个n位的逐级进位加法器:,7.WAIT语句,1、作用:替代PROCESS敏感信号列表。2、WAIT语句语法格式:WAIT-无限等待(仿真)WAITFORtime-时间到(仿真,不可综合)WAITUNTILsignal_condition-条件满足(可综合)WAITONsignal1,signal2,;-敏感信号发生变化(可综合),7.1、WAIT语句说明作用:仿真复位信号的产生:reset_proc:processbeginreset=1;waitforreset_period;reset=0;wait;endprocess;,7.2、WAITFOR语句,作用:常用于描述仿真激励信号,产生时钟信号;例:constantclk_period:time:=10nsclk_process:processbeginclk=0;waitforclk_period/2;clk=1;waitforclk_period/2;ENDPROCESS;或者:Clk_process:process(clk)beginclk=NOTclkAFTERperiod/2;endprocess;,7.3WAITUNTIL使进程语句进入等待状态,直到UNTIL之后的条件满足后才激活。例:带同步复位端的D出触发器PROCESSBEGINWAITUNTIL(clkeventandclk=1);if(rst=1)thenoutput0);elsifclkeventandclk=1thenoutput=input;endif;endprocess;,7.4WAITONWAITON语句使进程进入等待状态,直到ON之后信号状态发生变化才被激活,相当于进程的敏感信号列表。WAITONclk,reset;-相当于在进程敏感信号列表中写clk,reset。【注意】:对于进程语句,WAITON和敏感信号列表只能二选一,不可同时存在。.,-敏感信号列表形式PROCESS(clk,reset)Begin顺序语句Endprocess;,-WAITON语句形式PROCESSBeginWAITONclk,reset顺序语句Endprocess;,WAITON语句,例:带异步复位的8位寄存器;PROCESSBEGINWAITONclk,rst;IFrst=1THENoutput0);ELSIFclkeventandclk=1THENoutputqNULL;ENDCASE;ENDdataflow;,8、使用顺序代码设计组合逻辑电路,使用顺序代码设计组合逻辑电路原则:原则1:确保在PROCESS中用到的所有输入信号都出现在敏感信号列表中。原则2:确保考虑了输入/输出信号

温馨提示

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

最新文档

评论

0/150

提交评论