VHDL主要描述语句――CASE语句

合集下载

第6章 VHDL语言的主要描述语句

第6章 VHDL语言的主要描述语句

1、IF语句的门闩控制
格式: IF 条件 THEN
顺序处理语句; END IF;
当程序执行到该 IF 语句时,就要判断 IF 语句所指定 的条件是否成立。如果条件成立,则执行顺序处理 语句;不成立则跳过 IF 语句所包含的顺序处理语句, 而向下执行 IF 语句的后续语句。这里的条件起到门 闩的控制作用。
wait until clk'event and clk='1';
q <= d; end process; end rtl;
3、WAIT FOR
WAIT FOR 语句的完整书写格式为: WAIT FOR 时间表达式; WAIT FOR 语句后面跟着的是时间表达式,当进程执 行到该语句时将被挂起,直到指定的等待时间到时, 进程再开始执行WAIT FOR 语句后继的语句。 例如: WAIT FOR 20ns; 这个语句中时间表达式是一个常数值20ns,当进程执行 到该语句时将等待20ns。一旦20ns时间到,进程将执行 WAIT FOR 语句的后继语句。
6.1 顺序描述语句
执行顺序与书写顺序一致,与传统软件设计语言的特 点相似。顺序语句只能用在进程与子程序中。 在VHDL语言中顺序描述语句有以下几种: * WAIT语句; * 变量赋值语句; * LOOP语句; * 过程调用语句; * 断言语句; * 信号代入语句; * IF语句; * CASE语句; * NEXT语句; * EXIT 语句; * NULL语句
2、WAIT UNTIL
WAIT UNTIL 语句的完整书写格式为:
WAIT UNTIL 表达式; 当表达式的值为“真”时,进程被启动,否则进 程被挂起。 该语句在表达式中将建立一个隐式的敏感信号量 表,当表中的任何一个信号量发生变化时,就立即对 表达式进行一次评估。如果评估结果使表达式返回一 个“真”值,则进程脱离等待状态,继续执行下一个 语句。例如:

VHDL语言的主要描述语句

VHDL语言的主要描述语句

VHDL语言的主要描述语句按照语句的执行顺序对VHDL语言进行分类,包含两类语句:●并行描述语句该语句的执行与书写顺序无关,总是同时被执行●顺序描述语句从仿真的角度,该语句是顺序执行的进程语句(PROCESS)是最典型的并行语句,一个构造体可以有几个进程语句同时存在,而且并发执行。

但是进程部的所有语句都是顺序语句。

一、顺序描述语句顺序描述语句只能用在进程和子程序中,它和其他高级语言一样,其语句是按照语句的出现的顺序加以执行的。

如下分别介绍有关的顺序描述语句.1.WAIT语句进程在执行过程中总是处于两种状态:执行或挂起,进程的状态变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程.等待语句的格式:*WAIT 无限等待*WAIT ON 敏感信号变化*WAIT UNTIL 条件满足*WAIT FOR 时间到(1)WAIT ON格式:WAIT ON 信号[,信号]例5-1PROCESS(a,b)BEGINy<=a AND b;END PROCESS;该例中的进程与下例中进程相同:例5-1PROCESSBEGINy<=a AND b;WAIT ON a,b;END PROCESS;例5-2PROCESS(a,b)BEGINy<=a AND b;WAIT ON a,b;END PROCESS;(2)WAIT UNTIL 直到条件满足格式: WAIT UNTIL 布尔表达式当进程执行到该语句时,被挂起;若布尔表达式为真时,进程将被启动.例: WAIT UNTIL ((x*10)<100)(3)WAIT FOR 等到时间到格式: WAIT FOR 时间表达式当进程执行到该语句时,被挂起;等待一定的时间后,进程将被启动.例: WAIT FOR 20 ns;WAIT FOR (a*(b+c);(4)多条件WAIT 语句例: WAIT ON nmi,interrupt UNTIL ((nmi=TRUE) OR (interrupt=TRUE)) FOR 5 us 该等待有三个条件:第一,信号nmi和interrupt 任何一个有一次刷新动作第二, 信号nmi和interrupt 任何一个为真第三, 已等待5 us只要一个以上的条件被满足,进程就被启动.*注意:多条件等待时,表达式的值至少应包含一个信号量的值。

chap6VHDL语言的主要描述语句

chap6VHDL语言的主要描述语句

〈EDA技术教程〉第6章

VHDL语言构造体的描述方法



LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (s4,s3, s2,s1 : IN STD_LOGIC; z4,z3, z2,z1 : OUT STD_LOGIC); END mux41; ARCHITECTURE activ OF mux41 IS SIGNAL sel : INTEGER RANGE 0 TO 15; BEGIN PROCESS (sel ,s4,s3,s2,s1 ) BEGIN sel<= 0 ; -- 输入初始值 IF (s1 ='1') THEN sel <= sel+1 ; ELSIF (s2 ='1') THEN sel <= sel+2 ; ELSIF (s3 ='1') THEN sel <= sel+4 ; ELSIF (s4 ='1') THEN sel <= sel+8 ; ELSE NULL; -- 注意,这里使用了空操作语句 END IF ; z1<='0' ; z2<='0'; z3<='0'; z4<='0'; --输入初始值 CASE sel IS WHEN 0 => z1<='1' ; -- 当sel=0时选中
--若清零端有效,则输出清零
ELSIF clk'event AND clk='1' THEN qout<=d ; --清零端无效,则时钟上升沿时输出为d END IF;

第17讲VHDL主要描述语句case语句

第17讲VHDL主要描述语句case语句

END PROCESS;
END rtl;
练习:
用多选择结构实现如下问题: 1.求三个数中的最大数。 输入:整数a,b,c 输出:最大数max
2. Y= 1(X>0)
0 (X=0) -1 (X<0)
CASE语句
CASE语句根据满足的条件直接选择多项顺序语句中的一项执行。
CASE语句的结构为: CASE 表达式 IS WHEN 条件选择值 => 顺序语句, ┇
WHEN 条件选择值 => 顺序语句,
END CASE; 功能:先计算表达式的值,然后根据条件句中的选择值 执行相对应的顺序语句。 注意:条件句中的“=>”不是操作符,它相当于THEN作用。
其中WHEN条件选择值可以有四种表达方式;
① 单个普通数值,如:5; ② 数值选择范围,如:(1 TO 3); ③ 并列值,如:4 | 6,表示取值为4或6; ④ WHEN OTHERS => 顺序语句
例[A] PROCESS
BEGIN
y <= a AND b; WAIT ON a,b; END PROCESS; 例[B]PROCESS(a,b)
BEGIN
y <= a AND b; END PROCESS; 在例[A]中执行所有语句后,进程将在WAIT语句处被挂起,
直到a或b中任何一个信号发生变化,进程才重新开始。例 [A]与例[B]是等价的。
用二选一结构实现求两数中的较大数。 输入:整数a,b; 输出:较大数C
3.多选择控制语句
这种语句的书写格式为:
IF 条件 THEN 顺序语句 ELSIF 顺序语句
ELSIF
顺序语句 ┇ ELSE 顺序语句
END IF;

第5章VHDL基本描述语句

第5章VHDL基本描述语句

多个赋值源
SVEC(0) <= V1; --将V1在上面的赋值1,赋给SVEC(0)
SVEC(1) <= V2;
SVEC(2) <= S1; SVEC(3) <= S2;
--将V2在上面的赋值1,赋给SVEC(1)
--将S1在上面的赋值1,赋给SVEC(2) --将最下面的赋予S2的值‘0’,赋给SVEC(3)
FOR LOOP循环主要用在规定数目的重复情况;
WHILE LOOP则根据控制条件执行循环直到条件为
FALSE。
FOR LOOP语句
FOR LOOP格式:
[标号:] FOR 循环变量 IN 循环次数范围 LOOP
顺序处理语句;
END LOOP [标号];
循环变量:属于LOOP语句的局部变量,不需要事先定义,也不能 被赋值,它的值从循环次数范围的初值开始,执行一次顺序语句 自动加一,当其值超出循环次数范围时,则退出循环语句。
5.1.1赋值语句
语句格式: 变量赋值目标:= 赋值源;
信号赋值目标<= 赋值源;
比较: (1)信号赋值有一定的延时,在时序电路中,在时 钟信号触发下的信号赋值,目标信号要比源信号延迟 一个时钟周期;变量赋值语句立即执行,没有延时。 (2)进程中同一变量多次赋值时按顺序立即执行, 而信号多次赋值时,只有进程结束前最后一个赋值被 执行。
不完整IF语句
作用:形成锁存,用于构成时序电路,而组合电路只能
使用完整的IF语句。
例5-6: IF (clk’event and clk=’1’) then
Q<=d;
End if;
二选一IF语句
语句格式:
IF 条件 THEN 顺序执行语句1;

第五章 VHDL语言的主要描述语句

第五章 VHDL语言的主要描述语句

component inhibit is port (x,y:in bit;z: out bit); end component inhibit;
2013-5-20
24
4. 多条件等待语句
前面所讲的三类wait 语句,等待的条件都是单一的, 要么是信号量(wait on),要么是布尔量(wait until),要 么是时间量(wait for)。wait语句可同时使用多个等待条 件。 例如

c <= a and b after 15 ns;
--表示当a或b发生新的变化15ns后,它们进行 与逻辑操作的结果才被代入到信号a中,可描述 逻辑门的延时特性;

a<=‗0‘ after 5 ns,‗1‘ after 10 ns, ‗0‘ after 15 ns;
--该信号代入语句描述了怎样的波形呢?
2013-5-20 6
3) 两类延时语句--惯性延时、传输延时
(1) 惯性(Inertial)延时

惯性延时:在惯性模型中,系统或器件输出信号要发 生变化,必须有一段时间的延时,这段延时时间,就 是系统或元件的惯性延时。 特点:当一个系统或器件的输入信号周期,小于系统 或器件的惯性延时,其输出将保持不变。 如:在一个信号值维持期间,如果存在任何毛刺、脉 冲等周期小于器件本身的惯性延时的情况,输出信号 的值将不变,否则将引起信号的变化。
wait on umi,interrupt until ( (umi=true) or (interrupt=true) ) for 5 us;
上述语句等待的是3个条件:
1) 信号量umi和interrupt任何一个有一次新的变化;
2) 信号量umi或interrupt 任何一个取值为“真”; 3) 该语句已等待5 us。

第五VHDL语言的主要描述语句剖析

第五VHDL语言的主要描述语句剖析

wait on 所起作用与进程的敏感信号量表相同, 两者不能同时存在。
2020/11/11
15
2. wait until 语句
1) 书写格式 wait until 布尔表达式;
❖ 利生变化时,就自动检测
布尔表达式是否为真; ❖ 如果为真,则进程脱离等待状态,执行后续语句;
assert语句检查一个布尔表达式为真或假,如果值 是真,则该语句任何事都不做,如果值是假,断言 语句将输出一用户规定的字符串到标准输出终端。
2020/11/11
10
设计者所写的文 字串,通常是说 明错误的原因, 文字串应用双引 号括起来。
错误严重程度的级别,
分为4级别:failure, error,waring,
如:在一个信号值维持期间,如果存在任何毛刺、脉 冲等周期小于器件本身的惯性延时的情况,输出信号 的值将不变,否则将引起信号的变化。
2020/11/11
5
惯性延时举例
假设某门电路的惯性延 时为20 ns
b<=inertial a after 20 ns;
10ns
所有器件都存在惯性延时, 在代入语句中加上惯性延 时时间,可以仿真硬件电 路实际工作情况,如:
2020/11/11
2
5.1.1 信号代入语句
1) 书写格式
目的信号量<= 敏感信号量表达式;
2) 举例
处于构造体中的信号代入语句 z <= a or (b nand c);
有3 个敏感量 a、b、 c,无论哪一个敏感量发生 变化,该代入语句将被执行。
2020/11/11
3
a <= b after 5 ns; --表示当b发生新的变化5ns后,才被代入到信

VHDL程序的主要描述语句

VHDL程序的主要描述语句

端口方向(端口类型)
结构体的语法格式:
• architecture 结构体名称 of 实体 名称 is • 说明语句 • 内部信号、常数、数据类型、子程序 (函数、过程)、元件等的说明; • begin • 功能描述语句; • end [architecture] 结构体名称;
vhdl中的主要描述语句分为两 类:描述行为和描述结构。
• (1)赋值情况:当被选择的信号发生变化时, 启动执行,满足哪一个条件,就将其对应的表 达式代入目标信号。 • (2)选择型语句中各行结尾均未“,”,只 有最后一行用“;”,不能有重叠的条件分支, 最后条件可为 others,若最后条件不为 others,则其它条件必须包含表达式的所有 可能值。 • (3)执行:选择型信号赋值语句无优先级顺 序,与进程中的 case 语句等价。
例:用选择型语句设计一个四 选一的数据选择器
例:用选择型语句设计一个四 选一的数据选择器
练习:用选择型语句设计一个 八选一的数据选择器
三种并行信号赋值语句的共同特点:
• (1)赋值目标必须时信号,与其他并行 语句同时执行,与书写顺序无关; • (2)每一个信号赋值语句等效于一个进 程语句,所有输入信号的变化都将启动 该语句的执行。 • c<= a xor b;
(1)基本型
• • • • • • 格式: 信号名<=敏感信号量表达式 after 时间表达式 例:s<=x xor y; sum<=s xor cin after 1ns; 说明:若未注明延时表示延时很小,δ延时。 延时可分为两类:传输延时与惯性延时
• 传输延时:模拟信号在连线(或传输线) 上的延时。 • 格式:b<=transport a after 20ns;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使能端G 使能端
I0 I1 I2 I3
四 选 一 数 据 选 择 器
Q
公共通道
(同一时间内只可允许一个信号通过)
信 号 传 输 目 的 地
信号选择控制端AB 信号选择控制端
VHDL主要描述语句 主要描述语句――CASE语句 主要描述语句 语句
一、复习 1.IF语句的三种书写格式: 语句的三种书写格式: 语句的三种书写格式 IF 条件 THEN 顺序处理语句 ; END IF ;
IF 条件 THEN 顺序处理语句1 ; ELSE 顺序处理语句2 ; END IF ;
IF 条件1 THEN 顺序处理语句1 ; ELSIF 条件2 THEN 顺序处理语句2 ; …… ELSIF 条件N THEN 顺序处理语句N ; ELSE 顺序处理语句0 ; END IF ;
(同一时间内只可允许一个信号通过)
信 号 传 输 目 的 地
信号选择控制端AB 信号选择控制端
LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; ENTITY 4SEL IS PORT ( I0,I1,I2,I3: IN STD-LOGIC ; , , , A,B:IN STD-LOGIC ; , : Q:OUT STD-LOGIC ) ; END 4SEL ; ARCHITECTURE A OF 4SEL IS SIGNAL D : STD-LOGIC-VECTOR(2 DOWNTO 0); D<=A & B ; PROCESS( D ) CASE D IS WHEN “00” => Q <= I0 ; WHEN “01” => Q <= I1 ; WHEN “10” => Q <= I2 ; WHEN “11” => Q <= I3 ; WHEN OTHER => NULL ; END CASE ; END A;
A 0 0 1 1
B 0 1 0 1
Q I0 I1 I2 I3
五、思考题 请在上程序基础上加入一个使能端G。 请在上程序基础上加入一个使能端 。当G=0时,选择器不工作,不进行 时 选择器不工作, 任何选择;只有G=1时,选择器才开始工作,按照信号选择控制端的要 任何选择;只有 时 选择器才开始工作, 求选择信号进行传输。 求选择信号进行传输。
1 1 1 ARCHITECTURE A OF 2AND IS SIGNAL D : STD-LOGIC-VECTOR(2 DOWNTO 0); D<=A & B ; PROCESS( D ) CASE D IS NULL 表示 WHEN “00” => C<= “0” ; 无任何赋值 WHEN “01” => C<= “0” ; 操作 WHEN “10” => C<= “0” ; WHEN “11” => C<= “0” ; WHEN OTHER => NULL ; 该程序可以实现二输入与门的 功能. 功能 END CASE ; END A;
语句设计一个四选一数据选择器) 四、练习(用CASE 语句设计一个四选一数据选择器) 练习( 什么是数据选择器,它什么功能? 数据选择器是经过选择,把多个通道的数据传送到唯一的公共数据通道上进 行传输。它的作用相当于一个多输入的单刀多掷开关。
I0 I1 I2 I3
四 选 一 数 据 选 择 器
Q
公共通道
对比总结:以上两个程序表明,一些功能相同的描述 可以用IF语句实现 一些功能相同的描述,可以用 语句实现,也可以用 对比总结 以上两个程序表明 一些功能相同的描述 可以用 语句实现 也可以用
CASE语句实现 但是两者还是有区别的 首先 在IF语句中 先处理最起始 语句实现.但是两者还是有区别的 首先,在 语句中 语句中,先处理最起始 语句实现 但是两者还是有区别的.首先 的条件,如果不满足才会处理下一个条件 而在 语句中,没有值的顺 的条件 如果不满足才会处理下一个条件.而在 如果不满足才会处理下一个条件 而在CASE语句中 没有值的顺 语句中 序号,所有的值是并行处理的 因此 项中已用过的值,如果在后面 序号 所有的值是并行处理的.因此 所有的值是并行处理的 因此WHEN项中已用过的值 如果在后面 项中已用过的值 WHEN项中再次使用 那在语法上错误的 也就是说 表达式的值不能重 项中再次使用,那在语法上错误的 也就是说,表达式的值不能重 项中再次使用 那在语法上错误的.也就是说 复使用.如下列程序 复使用 如下列程序: 如下列程序 CASE SEL IS WHEN 0 => Q <= I1 ; WHEN 1 TO 3 => Q <= I1 ; WHEN 2 TO 5 => Q <= I2 ; WHEN 5 TO 7 => Q <= I3 ; WHEN OTHER => Q <= I4 ; END CASE ;
2.试修改如下程序中出现的错误并分析其可以实现的功能 试修改如下程序中出现的错误并分析其可以实现的功能. 试修改如下程序中出现的错误并分析其可以实现的功能
LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; ENTITY 2AND IS PORT ( A,B: IN STD-LOGIC ; C:OUT STD-LOGIC ) ; END 2AND; ARCHITECTURE A OF 2AND IS SIGNAL D:STD-LOGIC-VECTOR(2 DOWNTO ) IF D=“00” THEN C<= “0” ELSEIF D=“01” THEN C<= “0” ; ELSEIF D=“10” THEN C<= “0” ; ELSE C<= “1” ; END PROCESS ; END A;
之间的表达式的取值满足指定的条件表达式时,程序将执行 当CASE 和 IS 之间的表达式的取值满足指定的条件表达式时 程序将执行 对应的由=>所指的顺序处理语句 所指的顺序处理语句. 对应的由 所指的顺序处理语句
试分析如下程序可以实现什么功能) 三、例题(试分析如下程序可以实现什么功能 例题 试分析如下程序可以实现什么功能 LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; ENTITY 2AND IS PORT ( A,B: IN STD-LOGIC ; C:OUT STD-LOGIC ) ; END 2AND; A 0 0 1 B 0 1 0 C 0 0 0
A 0 0 1 1
B 0 1 0 1
C 0 0 0 1
;
该程序可以实现二输入与 门的功能
ELSIF
END IF ;
二、新授 在用VHDL语言进行逻辑设计时 有些操作是根据某表达式的值来进行的 这时常 语言进行逻辑设计时,有些操作是根据某表达式的值来进行的 在用 语言进行逻辑设计时 有些操作是根据某表达式的值来进行的,这时常 常会用到CASE语句 语句. 常会用到 语句 CASE 条件表达式 WHEN 条件表达式的值 => 顺序处理语句 ; 条件表达式的值1 顺序处理语句1 WHEN 条件表达式的值 => 顺序处理语句 ; 条件表达式的值2 顺序处理语句2 ...... WHEN 条件表达式的值 => 顺序处理语句N ; 条件表达式的值N 顺序处理语句 WHEN OTHERS => 顺序处理语句 0 ; END CASE ;
相关文档
最新文档