VHDL语言描述语句讲课讲稿

上传人:go****e 文档编号:137423011 上传时间:2020-07-08 格式:PPT 页数:46 大小:574.50KB
返回 下载 相关 举报
VHDL语言描述语句讲课讲稿_第1页
第1页 / 共46页
VHDL语言描述语句讲课讲稿_第2页
第2页 / 共46页
VHDL语言描述语句讲课讲稿_第3页
第3页 / 共46页
VHDL语言描述语句讲课讲稿_第4页
第4页 / 共46页
VHDL语言描述语句讲课讲稿_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《VHDL语言描述语句讲课讲稿》由会员分享,可在线阅读,更多相关《VHDL语言描述语句讲课讲稿(46页珍藏版)》请在金锄头文库上搜索。

1、VHDL语言描述语句,VHDL语言描述语句,一、VHDL语句分类; 二、基本的VHDL顺序语句 三、基本的VHDL并行语句 四、常用组合单元电路VHDL设计 五、常用时序单元电路VHDL设计,一、VHDL语句分类,按照功能分类: 赋值语句; 数据流控制语句(转向控制语句): Case when ( 顺序 ); If else ( 顺序 ); with select when ( 并 ); When else ( 并 ); 模块化设计语句: process ; component ; generate ; block ;forloop ; 子程序调用语句 仿真语句: wait ; 按照语句的执行

2、方式特点分为: 并行语句: 按动作特点:语句执行顺序与书写顺序无关; 使用范围 :进程语句外部的语句都是并行的; 实际应用 :对应于各自独立运行的逻辑电路; 顺序语句: 按动作特点:照语句书写顺序执行; 使用范围 :进程、函数和过程内部出现; 实际应用 :时序电路、数据流控制电路;,VHDL顺序语句,黑龙江大学电子工程学院/EDA教研室,基本的VHDL顺序语句,VHDL中的顺序语句用于描述进程或子程序的内部功能,且只能出现在PROCESS、FUNCTION、PROCEDURE等语句中。 可以用来设计 时序电路、组合电路。 主要作用:时序流控制、程序控制、条件和迭代等,行为描述代码。 常用的顺序

3、语句见下表。,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.进

4、程语句语法说明,进程标号:用于标识进程,可选。多个进程时,提高程序可读性; 敏感信号列表:敏感信号发生变化(上升沿或者下降沿),进程被 激活,从而执行内部顺序语句。 注意:可以有多个敏感信号,用逗号隔开,任何一个变化都激活进 程,否则进程挂起。 进程声明区: 用于定义进程内部的局部变量,信号不可在此声明。进程之间数据 交流通过全局信号。 顺序语句: 进程内部语句顺序执行。 用处:适合描述时序电路。也可用于组合逻辑电路的设计。,例1:进程语句例程带异步复位的D触发器,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY cydff IS PORT

5、 ( d,clk,rst : IN STD_LOGIC ; q : OUT STD_LOGIC ) ; END ENTITY cydff ; ARCHITECTURE behave OF cydff IS BEGIN cydff_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 ;,语法说明: 时钟沿的VH

6、DL描述方法总结(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:,进程语句总结:,进程仅在敏感信号发生变化时才执行。 特点:进程内部,顺序语句;进程语句之间,并行。 不同进程内不可以对同一信号赋值,即不可

7、多重赋值。 进程内信号和变量赋值效果不同。 一个进程内不能同时扑捉同一个时钟信号的上升沿或者下降沿。 例如下面语句是错误的: PROCESS(clk) BEGIN IF rising_edge(clk) then elsif falling_edge(clk) then end if; end peocess;,entity mul is port (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,

8、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)、使用范围

9、:全局(sig),局部(var)。 (4)、变量结果只能由信号传递到外部。 (5)、动作特点: 变量:立即更新。 信号:process执行完毕才生效。(允许多驱动源,仅最后 一个有效) (6)、操作符: 信号: = 变量: :=,2、信号和变量,例2 : ARCHITECTURE behavioral OF example_duibi IS SIGNAL d0, d1, d2, d3 : STD_LOGIC ; - 定义信号 SIGNAL q0, q1 : STD_LOGIC ; BEGIN li_1 :PROCESS (d0, d1, d2, d3 ) BEGIN d2 = d0 ; - 信

10、号量代入 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的

11、运行结果: 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=N

12、OT 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

13、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 IS BEGIN 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

14、 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语句的一般格

15、式为: 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;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号