欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    VHDL语言描述语句.ppt

    • 资源ID:5452217       资源大小:469.50KB        全文页数:46页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VHDL语言描述语句.ppt

    VHDL语言描述语句,VHDL语言描述语句,一、VHDL语句分类;二、基本的VHDL顺序语句三、基本的VHDL并行语句四、常用组合单元电路VHDL设计五、常用时序单元电路VHDL设计,一、VHDL语句分类,按照功能分类:赋值语句;数据流控制语句(转向控制语句):Case when(顺序);If else(顺序);with select when(并);When else(并);模块化设计语句:process;component;generate;block;forloop;子程序调用语句仿真语句:wait;按照语句的执行方式特点分为:并行语句:按动作特点:语句执行顺序与书写顺序无关;使用范围:进程语句外部的语句都是并行的;实际应用:对应于各自独立运行的逻辑电路;顺序语句:按动作特点:照语句书写顺序执行;使用范围:进程、函数和过程内部出现;实际应用:时序电路、数据流控制电路;,VHDL顺序语句,黑龙江大学电子工程学院/EDA教研室,基本的VHDL顺序语句,VHDL中的顺序语句用于描述进程或子程序的内部功能,且只能出现在PROCESS、FUNCTION、PROCEDURE等语句中。可以用来设计 时序电路、组合电路。主要作用:时序流控制、程序控制、条件和迭代等,行为描述代码。常用的顺序语句见下表。,1、process(进程);2、信号和变量;3、IF语句;4、C ASE语句;5、CASE语句和IF语句的比较;6、LOOP语句;7、WAIT语句;8、使用顺序代码设计组合逻辑电路;,基本的VHDL顺序语句,5.3.1 进程(PROCESS)语句语法说明:1、Process为过程语句,定义如下:进程标号:Process 触发信号1,触发信号2,定义区 Begin顺序语句End Process 进程标号;注:方括号内容可以省略;触发信号将决定该过程是否执行;一个结构体当中可以有多个过程;多个进程语句之间是并行执行,进程内部属于顺序执行语句。,2.进程语句语法说明,进程标号:用于标识进程,可选。多个进程时,提高程序可读性;敏感信号列表:敏感信号发生变化(上升沿或者下降沿),进程被 激活,从而执行内部顺序语句。注意:可以有多个敏感信号,用逗号隔开,任何一个变化都激活进 程,否则进程挂起。进程声明区:用于定义进程内部的局部变量,信号不可在此声明。进程之间数据 交流通过全局信号。顺序语句:进程内部语句顺序执行。用处:适合描述时序电路。也可用于组合逻辑电路的设计。,例1:进程语句例程带异步复位的D触发器,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY cydff ISPORT(d,clk,rst:IN STD_LOGIC;q:OUT STD_LOGIC);END ENTITY cydff;ARCHITECTURE behave OF cydff ISBEGINcydff_inst:PROCESS(clk,rst)BEGIN IF(rst=1)then q=0;elsIF(clk=1 AND clkLAST_VALUE=0 AND clkEVENT)THEN q=d;END IF;END PROCESS cydff_inst;END ARCHITECTURE behave;,语法说明:时钟沿的VHDL描述方法总结(3种):clkevent and clk=1;clkevent and clk=0;clk=1 AND clkEVENT AND clkLAST_VALUE=0 clk=0 AND clkEVENT AND clkLAST_VALUE=1 rising_edge(clk);falling_edge(clk);Clkevent?,上升沿描述1:,下降沿描述1:,上升沿描述2:,下降沿描述2:,上升沿描述3:,下降沿描述3:,进程语句总结:,进程仅在敏感信号发生变化时才执行。特点:进程内部,顺序语句;进程语句之间,并行。不同进程内不可以对同一信号赋值,即不可多重赋值。进程内信号和变量赋值效果不同。一个进程内不能同时扑捉同一个时钟信号的上升沿或者下降沿。例如下面语句是错误的:PROCESS(clk)BEGINIF rising_edge(clk)then elsif falling_edge(clk)then end if;end peocess;,entity mul isport(a,b,c,selx,sely:IN bit;data_out:OUT BIT);end mul;ARCHITECTURE ex OF mul IS SIGNAL temp:BIT;BEGIN p_a:PROCESS(a,b,selx)BEGIN IF(SELX=0)THEN temp=a;ELSE temp=b;END IF;END PROCESS p_a;p_b:PROCESS(temp,c,sely)BEGIN IF(SELy=0)THEN data_out=temp;ELSE temp=c;END IF;END PROCESS p_b;end ex;,1、信号和变量异同:(1)、声明范围:。信号:ENTITY,ARCHITECTURE,PACKAGE(ALL)变量:顺序语句中(PROCESS、子程序)(2)、作用:动态数值传递,存储运算中间结 果(变量)。(3)、使用范围:全局(sig),局部(var)。(4)、变量结果只能由信号传递到外部。(5)、动作特点:变量:立即更新。信号:process执行完毕才生效。(允许多驱动源,仅最后 一个有效)(6)、操作符:信号:=变量::=,2、信号和变量,例2:ARCHITECTURE behavioral OF example_duibi ISSIGNAL d0,d1,d2,d3:STD_LOGIC;-定义信号 SIGNAL q0,q1:STD_LOGIC;BEGINli_1:PROCESS(d0,d1,d2,d3)BEGIN d2=d0;-信号量代入 q0=d2 OR d3;d2=d1;-信号量代入 q1=d2 OR d3;END PROCESS cduibi_1;li_2:PROCESS(d0,d1,d3)VARIABLE m2:STD_LOGIC;BEGIN m2:=d0;-变量赋值 q0=m2 OR d3;m2:=d1;-变量赋值 q1=m2 OR d3;END PROCESS cduibi_2;END behavioral;,进程li_1的运行结果:q0=d1 OR d3 并且 q1=d1 OR d3进程li_2的运行结果:q0=d0 OR d3 而 q1=d1 OR d3,语法说明:进程当中的赋值:变量:立即更新。信号:process执行完毕赋值才生效。同时,进程中的信号赋值语句允许有多个不同的赋值驱动源,但仅最后 一个驱动源有效,3、IF语句,IF语句 IF语句是根据所指定的条件来确定执行哪些语句,适用于比较器、译码器等需要条件控制的逻辑电路设计,通常有以下三种类型。(1)用作门阀控制时的IF语句书写格式为 IF(条件)THEN 顺序处理语句;END IF;例程:PROCESS(clk)BEGIN IF clkevent and clk=1 THEN q=d;qb=NOT d;END IF;END PROCESS;,(2)用作选择控制时的IF语句书写格式为 IF(条件)THEN 顺序处理语句1;ELSE 顺序处理语句2;END IF;,PROCESS(a,b,en)BEGIN IF(en=1)THEN c=a;ELSE c=b;END IF;END PROCESS;,(3)用作多选择控制时的IF语句书写格式为 IF 条件1 THEN 顺序处理语句1;ELSIF 条件2 THEN 顺序处理语句2;ELSIF 条件N-1 THEN 顺序处理语句N-1;ELSE 顺序处理语句N;END IF;,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT(input:IN STD_LOGIC_VECTOR(3 DOWNTO 0);en:IN STD_LOGIC_VECTOR(1 DOWNTO 0);y:OUT STD_LOGIC);END mux4;ARCHITECTURE aa OF mux4 ISBEGIN PROCESS(input,en)BEGIN IF(en=00)THEN y=input(0);ELSIF(en=01)THEN y=input(1);ELSIF(en=10)THEN y=input(2);ELSE y=input(3);END IF;END PROCESS;END aa;,例2(例5-9)四选一数据选择器,IF语句应用例2,8-3优先编码器(74HC148),课堂练习1,模10计数器;N位移位寄存器(右移);作业1:(1)、N位移位寄存器(左移);(2)、通用模n计数器;,IF 语句使用总结,If语句必须要有else,尤其组合逻辑嵌套计数不能太多,否则关键路径会很长,会严重影响性能;分支较多的if应想办法采用case代替;If条件判断不能太长,若逻辑比较复杂,尽量用新产生信号代替;注意if的优先级;,尽量不使用、=比较符。,4、CASE语句CASE语句的一般格式为:CASE 表达式 IS WHEN 值1=多条赋值语句;WHEN 值2=语句2;WHEN OTHERS=语句3(null、unaffected);END CASE;当需要对多个条件进行判断时:(1)、WHEN 值=语句;-单个值(2)、WHEN 值|值|值|值=语句;-多个值的“或”(3)、WHEN 值 TO 值=语句;-取值范围,枚举,例5-10 用CASE语句描述4选1电路。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT(s1,s2,a,b,c,d:IN STD_LOGIC;z:OUT STD_LOGIC);END mux4;ARCHITECTURE a OF mux4 IS SIGNAL s:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN SZZZZZ=X;END CASE;END PROCESS;END a;,覆盖全部条件,不能有重复条件,只能在最后出现,(1)、条件表达式:整数、枚举、数组。(2)、=相当于 THEN(3)、分支入口条件必须唯一,且取值在表达式范围内。(4)、分支入口选择(并行),与书写顺序无关。(5)、OTHERS(必须列出条件表达式的所有可能),NULL。Case语句的条件没有优先级,综合后是一个并行多路选择器。注意:如果if语句太长,应该尽可能用case语句代替。适用于编写组合逻辑电路:译码器,编码器等。,语法说明:,5、语句与语句比较:1、有优先级的电路,用IF语句。2、CASE语句可提高程序可读性,经常用来设计状态机电路。,6、LOOP及相关语句用途:当一段代码需要多次重复执行时。LOOP语句的语法结构有以下两种。顺序语句,使用范围:进程、函数、过程。FOR/LOOP:循环固定次数 label:FOR 循环变量 IN 范围 LOOP 顺序处理语句;END LOOP 循环标号;(2)WHILE/LOOP:循环执行直到某个条件不再满足 label:WHILE(条件)LOOP 顺序处理语句;END LOOP 循环标号;,6、LOOP及相关语句,(3)、NEXT:跳出本次循环 label:NEXT loop_label when 条件表达式;(4)、EXIT:结束整个循环操作 label:EXIT loop_label when 条件表达式;例:FOR I IN 0 TO LOOP temp:=temp XOR cdata(i);END LOOP;FOR I IN 0 TO LOOP不可综合,静态参数。,循环次数必须为确定值或者用属性语句来定义,例:VARIABLE sum_temp:INTEGER:=0;VARIABLE i:INTEGER:=0;BEGINsum_example:WHILE(i 100)LOOP sum_temp:=sum_temp+i;i:=i+1;END LOOP sum_example;END PROCESS;,6.3、NEXT语句 NEXT语句主要用于LOOP语句的内部循环控制,有条件或无条件地跳出本次循环,开始下一次循环。NEXT语句的一般格式为:(1)NEXT(2)NEXT LOOP标号(3)NEXT LOOP标号 WHEN 条件表达式例:CTEST1:FOR m IN 0 TO 50 LOOP-外循环 CTEST2:FOR n IN 1 TO 40 LOOP-内循环 NEXT CTEST1 WHEN m=n;-NEXT语句的执行条件 END LOOP CTEST2;END LOOP CTEST1;,6.4 EXIT语句 退出(EXIT)语句也是LOOP语句中使用的循环控制语句。执行EXIT语句,将结束循环状态,从LOOP语句中跳出,终止LOOP语句的执行。EXIT语句的一般格式为:(1)EXIT(2)EXIT LOOP标号(3)EXIT LOOP标号 WHEN 条件表达式,FOR i IN 0 TO 31 LOOP NEXT WHEN ccontrol=0;-跳到下一次循环;temp:=temp XOR cdata(i);END LOOP;FOR i IN dataRANGE LOOP CASE data(i)IS WHEN 0=count:=count+1;WHEN others=EXIT;-跳出当前循环,使LOOP循环结束。END CASE;END LOOP;,1、利用LOOP/EXIT语句设计一个连0检测器对输入矢量中连续出现的零的个数进行统计(从矢量左端开始统计),课堂练习2,课堂练习2,2、利用loop语句描述一个n位的逐级进位加法器:,7.WAIT语句,1、作用:替代PROCESS敏感信号列表。2、WAIT语句语法格式:WAIT-无限等待(仿真)WAIT FOR time-时间到(仿真,不可综合)WAIT UNTIL signal_condition-条件满足(可综合)WAIT ON signal1,signal2,;-敏感信号发生变化(可综合),7.1、WAIT 语句说明 作用:仿真复位信号的产生:reset_proc:process begin reset=1;wait for reset_period;reset=0;wait;end process;,7.2、WAIT FOR 语句,作用:常用于描述仿真激励信号,产生时钟信号;例:constant clk_period:time:=10ns clk_process:process begin clk=0;wait for clk_period/2;clk=1;wait for clk_period/2;END PROCESS;或者:Clk_process:process(clk)begin clk=NOT clk AFTER period/2;end process;,7.3 WAIT UNTIL使进程语句进入等待状态,直到UNTIL之后的条件满足后才激活。例:带同步复位端的D出触发器 PROCESS BEGIN WAIT UNTIL(clkevent and clk=1);if(rst=1)then output0);elsif clkevent and clk=1 then output=input;end if;end process;,7.4 WAIT ON WAIT ON 语句使进程进入等待状态,直到ON之后信号状态发生变化才被激活,相当于进程的敏感信号列表。WAIT ON clk,reset;-相当于在进程敏感信号列表中写clk,reset。【注意】:对于进程语句,WAIT ON 和敏感信号列表只能二选一,不可同时存在。.,-敏感信号列表形式PROCESS(clk,reset)Begin 顺序语句End process;,-WAIT ON语句形式PROCESSBegin WAIT ON clk,reset 顺序语句End process;,WAIT ON 语句,例:带异步复位的8位寄存器;PROCESS BEGIN WAIT ON clk,rst;IF rst=1 THEN output0);ELSIF clkevent and clk=1 THEN output=input;end if;end process;,课堂练习-3,用wait on 语句设计带有异步复位的寄存器电路;作业:用wait until 语句设计模10计数器。,补充:空操作(NULL)语句 NULL语句是一种只占位置的空处理操作(空值),执行到该句只是使程序走到下一条语句。NULL语句的一般格式为:NULL;例:ARCHITECTURE dataflow OF cnull ISSIGNAL d,q:STD_LOGIC;SIGNAL sel:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN CASE sel IS WHEN 0|7=q NULL;END CASE;END dataflow;,8、使用顺序代码设计组合逻辑电路,使用顺序代码设计组合逻辑电路原则:原则1:确保在PROCESS中用到的所有输入信号都出现在敏感信号列表中。原则2:确保考虑了输入/输出信号的所有可能组合,即真值表必须在代码中完整的反映出来(否则可能产生出多余的锁存器)。例:数据选择器,锁存和寄存的差别,区别:锁存是电平起作用寄存是时钟有效沿起作用!在设计中,应该尽量避免使用锁存!因为锁存要占去大量的触发器资源,而且会对电路带来某种不稳定的隐患。在组合逻辑的组合进程中,条件语句描述时应该指定所有条件下所有输出的状态,以避免锁存。比如if/case语句的所有分支必须定义全部的输出才可能避免出现锁存。,作业:,(1)、N位移位寄存器(左移);(2)、通用模n计数器;(3)、用wait until 语句设计模10计数器。,谢谢观赏!,Thanks!,

    注意事项

    本文(VHDL语言描述语句.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开