VHDL语言描述语句报告
第19讲VHDL顺序描述语句
![第19讲VHDL顺序描述语句](https://img.taocdn.com/s3/m/808b2e6ccdbff121dd36a32d7375a417866fc127.png)
END rsff; ARCHITECTURE rtl OF rsff IS BEGIN
PROCESS(s,r) VARIABLE last_state :BIT;
BEGIN ASSERT(NOT(s =‘1’AND r =‘1’)) REPORT “Both s and r equal to‘1’.” SEVERITY ERROR; IF(s =‘0’AND r =‘0’)THEN last_state := last_state; ELSIF(s =‘0’AND r =‘1’)THEN last_state := 0; ELSE last_state := 1; END IF; q <= last_state; qb <= not(last_state);
q <= tmp2;
END PROCESS;
END rtl;
上例是一个取三个输入位矢量最大值的功能描述, 它在结构体中的进程语句中使用了两个过程调用语 句。
B. 函数调用语句
函数调用与过程调用是十分相似的,不同之处是, 调用函数将返还一个指定数据类型的值,函数的参 量只能是输入值。
函数语句分为两个部分,函数首和函数体。 (1)函数首的格式为: FUNCTION 函数名称(参数列表) RETURN 数据类型名; (2)函数体的格式为: FUNCTION 函数名称(参数列表) RETURN 数据类型名 IS
RETURN语句是一段子程序结束后,返回主程序的控制 语句。它只能用于函数与过程体内,并用来结束当前最内层 函数或过程体的执行。
RETURN语句的书写格式为:
RETURN; RETURN 表达式;
VHDL语言的主要描述语句
![VHDL语言的主要描述语句](https://img.taocdn.com/s3/m/e3fc77df84868762caaed5d8.png)
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只要一个以上的条件被满足,进程就被启动.*注意:多条件等待时,表达式的值至少应包含一个信号量的值。
vhdl实验报告
![vhdl实验报告](https://img.taocdn.com/s3/m/7006125a11a6f524ccbff121dd36a32d7275c77f.png)
vhdl实验报告VHDL实验报告引言:VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和仿真。
本篇实验报告将介绍我在VHDL实验中的学习和实践经验,包括实验目的、实验过程、实验结果以及对VHDL的理解和展望。
一、实验目的VHDL实验的主要目的是让我们掌握VHDL语言的基本语法和使用方法,能够利用VHDL描述数字电路,并通过仿真和综合工具进行验证和实现。
通过这些实验,我们可以深入了解数字电路的原理和设计方法,提高我们的逻辑设计能力和工程实践能力。
二、实验过程在实验过程中,我们首先学习了VHDL的基本语法,包括实体声明、端口声明、信号声明等。
然后,我们通过实例学习了VHDL的建模方法,包括组合逻辑电路的建模和时序逻辑电路的建模。
在组合逻辑电路的建模中,我们学习了使用逻辑运算符和条件语句描述电路的功能;在时序逻辑电路的建模中,我们学习了使用过程语句和时钟信号描述电路的状态转换。
在学习了VHDL的基础知识后,我们开始进行实验设计。
我们选择了一个简单的数字电路,如4位加法器,来进行实验验证。
首先,我们通过VHDL语言描述了加法器的功能和结构,包括输入端口、输出端口和中间信号。
然后,我们使用仿真工具进行了功能仿真,验证了加法器的正确性。
接着,我们使用综合工具将VHDL代码综合成门级电路,并进行了时序仿真和时序优化,验证了加法器的时序正确性和性能。
三、实验结果通过实验,我们成功地实现了4位加法器的功能,并验证了其正确性和性能。
在功能仿真中,我们输入了不同的测试数据,观察了输出结果,发现加法器能够正确地进行加法运算,并得到了正确的结果。
在时序仿真中,我们观察了电路的时序行为,包括输入信号的变化、输出信号的响应和中间信号的传播延迟等,发现加法器能够在时序上满足要求,并且具有较好的性能。
第5章VHDL基本描述语句
![第5章VHDL基本描述语句](https://img.taocdn.com/s3/m/c4e68dcebb4cf7ec4afed0da.png)
多个赋值源
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语言的主要描述语句剖析](https://img.taocdn.com/s3/m/7994c3a58bd63186bcebbcb7.png)
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程序的主要描述语句](https://img.taocdn.com/s3/m/31a8dea20029bd64783e2c7f.png)
端口方向(端口类型)
结构体的语法格式:
• 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;
第2-4讲 VHDL语言主要描述语言
![第2-4讲 VHDL语言主要描述语言](https://img.taocdn.com/s3/m/3c85b63143323968011c9276.png)
能否定 义为信 号?
VHDL顺序语句
5、LOOP语句—WHILE循环(P45) 格式: 标号:WHILE 循环控制条件 LOOP 顺序处理语句; …… END LOOP; 注意: 循环控制条件没有直接给出循环次数,可以是任何 条件表达式,条件为“真”,进行循环,条件为“假”, 退出循环。 条件表达式需初始化。
EDA技术实用教程
第2-4讲 VHDL语言语言主要描述 语句
VHDL主要描述语句
在结构体 (ARCHITECTURE) 中 执行的语句 在进程(PROCESS) 函数(FUNCTION) 过程 (PROCEDURE) 中执行的语句
并行处理语句
硬件 描述 的特 点
高级 语言 的特 点
顺序处理语句
VHDL顺序语句P39
VHDL顺序语句
例: 8位奇偶校验电路 architecture abc of example is begin PROCESS(a) variable tmp:std_logic; begin tmp:=„0‟; FOR i IN 0 to 7 LOOP tmp:=tmp XOR a(i); END LOOP; Y<=tmp; end process; end abc;
VHDL顺序语句
例:
architecture abc of example is signal c :STD_LOGIC; begin PROCESS(a,b) begin c<=a and b after 10 ns; a<=„1‟; b<=„1‟; b<=„0‟; out<=c; end process; end abc;
VHDL断言语句与报告语句
![VHDL断言语句与报告语句](https://img.taocdn.com/s3/m/1a75d4b7fd0a79563c1e72c7.png)
例: RS触发器的VHDL描述中REPORT语句的使用。
LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL;
ENTITY rsff IS
PORT(s :IN BIT; r :IN BIT;
ቤተ መጻሕፍቲ ባይዱ
q :OUT BIT;
qb :OUT BIT); END rsff;
例: RS触发器的VHDL描述中断言语句的使用
LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY rsff IS PORT(s :IN BIT; r :IN BIT; q :OUT BIT; qb :OUT BIT); END rsff;
ARCHITECTURE rtl OF rsff IS BEGIN
last_state := 0;
ELSE last_state := 1;
END IF;
q <= last_state; qb <= not(last_state);
END PROCESS;
END rtl;
断言语句(Assert)
断言语句分为顺序断言语句和并行断言语句,顺序 断言语句主要用于进程、函数和过程仿真、调试中的人 机对话,它可以给出一个文字串作为警告和错误信息。 断言语句的书写格式如下:
PROCESS(s,r)
VARIABLE last_state :BIT; BEGIN ASSERT(NOT(s =„1‟AND r =„1‟)) REPORT “Both s and r equal to„1‟.” SEVERITY ERROR;
IF(s =„0‟AND r =„0‟)THEN last_state := last_state; ELSIF(s =„0‟AND r =„1‟)THEN last_state := 0; ELSE last_state := 1; END IF; q <= last_state; qb <= not(last_state); END PROCESS; END rtl;
VHDL语言的主要描述语句
![VHDL语言的主要描述语句](https://img.taocdn.com/s3/m/efb05959763231126edb11ca.png)
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只要一个以上的条件被满足,进程就被启动.*注意:多条件等待时,表达式的值至少应包含一个信号量的值。
VHDL的基本描述语句
![VHDL的基本描述语句](https://img.taocdn.com/s3/m/78699de2524de518964b7db1.png)
接下页
case indata is when "000" => y <= "11111110"; when "001" => y <= "11111101"; when "010" => y <= "11111011"; when "011" => y <= "11110111"; when "100" => y <= "11101111"; when "101" => y <= "11011111"; when "110" => y <= "10111111"; when "111" => y <= "01111111"; when others => y <= "XXXXXXXX"; end case; else y <= "11111111"; end if; end process; end architecture ex;
6.1.4 LOOP语句 语句
语句, (3)WHILE LOOP语句,语法格式如下: ) 语句 语法格式如下: [LOOP标号: [LOOP标号:] WHILE 条件 LOOP 标号 顺序语句 END LOOP [LOOP标号 ; 标号]; 标号
6.1.5 NEXT语句 语句
NEXT语句主要用在 语句主要用在LOOP语句执行中进行有条件的或无条件的转向控制。 语句执行中进行有条件的或无条件的转向控制。 语句主要用在 语句执行中进行有条件的或无条件的转向控制 NEXT; ; -- 第一种语句格式 无条件终止当前循环,跳到本次循环的LOOP语句处,开始下一次循环) 语句处, (无条件终止当前循环,跳到本次循环的 语句处 开始下一次循环) NEXT LOOP标号; 标号; -- 第二种语句格式 标号 NEXT LOOP标号 WHEN 条件表达式; 条件表达式; -- 第三种语句格式 标号 【例】 【例】 ... L1 : FOR cnt_value IN 1 TO 8 LOOP s1:a(cnt_value) := '0'; NEXT WHEN (b=c); s2:a(cnt_value + 8 ):= '0'; END LOOP L1; ... L_x: FOR cnt_value IN 1 TO 8 LOOP s1: a(cnt_value):= '0'; k := 0; L_y: LOOP s2: b(k) := '0'; NEXT L_x WHEN (e>f); s3: b(k+8) := '0'; k := k+1; NEXT LOOP L_y ; NEXT LOOP L_x ; ...
VHDL主要描述语句――CASE语句
![VHDL主要描述语句――CASE语句](https://img.taocdn.com/s3/m/3d60a94ac850ad02de8041c4.png)
使能端G 使能端
I0 I1 I2 I3
四 选 一 数 据 选 择 器
Q
公共通道
(同一时间内只可允许一个信号通过)
信 号 传 输 目 的 地
信号选择控制端AB 信号选择控制端
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 ;
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 ;
第五VHDL语言的主要描述语句剖析
![第五VHDL语言的主要描述语句剖析](https://img.taocdn.com/s3/m/7994c3a58bd63186bcebbcb7.png)
2020/11/11
5
惯性延时举例
假设某门电路的惯性延 时为20 ns
b<=inertial a after 20 ns;
10ns
所有器件都存在惯性延时, 在代入语句中加上惯性延 时时间,可以仿真硬件电 路实际工作情况,如:
2020/11/11
23
➢ 多条件等待中的表达式,至少应包含一个信号量, 比如,
wait until (interrupt=true)or(old_clk=‘1’);
若上面语句中interrupt和old_clk两个都是变量, 而没有一个信号量,那么,即使两个变量有变化, 这条语句也不会对表达式进行评估和计算。
end process;
end architecture beh;
2020/11/11
21
entity inhibit is port (x,y:in bit;
z: out bit); end entity inhibit; architecture rtl of inhibit is begin
signal xt,yt,zt:bit; begin
u1: inhibit port map (xt, yt, zt);
wait for 10 ns; xt<='0';yt<='1'; wait for 10 ns; xt<='1';yt<='0'; wait for 10 ns; xt<='1';yt<='1'; wait; --进入无限期等待, 避免进入无限期循环;
第四讲VHDL的基本描述语句
![第四讲VHDL的基本描述语句](https://img.taocdn.com/s3/m/4db24ba3f524ccbff12184aa.png)
2012-2-16
LOOP
[标号]:WHILE 条件 LOOP 顺序处理语句; END LOOP [标号]; i:=1; sum:=0; WHILE i<10 LOOP sum:=sum + i; i=i + 1; END LOOP; 不要将sum定义成 信号。 如果条件为真, 则进行循环,如 果条件为假,则 结束循环。
可行性研究勘察初步勘察及详细勘察三个阶段工作深度和精度应分别符合选择场址要求初步设计要求及施工图设计要求caseg1g2ag2b可行性研究勘察初步勘察及详细勘察三个阶段工作深度和精度应分别符合选择场址要求初步设计要求及施工图设计要求caseg1g2ag2b可行性研究勘察初步勘察及详细勘察三个阶段工作深度和精度应分别符合选择场址要求初步设计要求及施工图设计要求caselibraryieee
பைடு நூலகம்
CASE
CASE 表达式 IS WHEN 条件表达式1 => 顺序语句; WHEN 条件表达式2 => 顺序语句; … WHEN OTHERS =>顺序语句; END CASE; 条件表达式的值不可重叠,例如不可同时出现 WHEN “00” | ”01” 和WHEN “00” | ”11” 。 当CASE语句的条件表达式的值无法覆盖所有情况时,要用OTHERS 指出未能列出的其它所有情况的输出值。 若有多个选择值, 则用“|” 间隔, 例如:2|3 表示2 或3。 “=>”相当于IF 语句中的THEN。
WAIT ON a,b; WAIT UNTIL “en=‘1’; WAIT FOR 10ns;
WAIT ON 信号 信号 信号[,信号 信号]; eg: Process(a,b) begin y<= a and b; End process; Pay: Process(a ,b) begin wait on a,b; y<=a and b; End process;
VHDL的基本描述语句
![VHDL的基本描述语句](https://img.taocdn.com/s3/m/8c0ccd9951e79b896802267f.png)
VHDL的基本描述语句有并行语句(Concurrent Statements)和顺序语句(Sequential Statements)两大类(如表8-3所示)。
在系统设计中,这些基本描述语句从不同侧面完整地描述了数字系统的硬件结构和基本逻辑功能。
表8-3VHDL的并行语句和顺序语句并行语句用于表示算法模块间的连接关系,相互之间无次序关系,它们是并行执行的,与书写顺序无关。
VHDL的结构体由若干相互联系的并行描述语句组成,如图8-3所示。
并行描述语句在结构体中的语法格式如下:ARCHITECTURE 结构体名OF 实体名IS{说明语句}BEGIN{并行语句}END ARCHITECTURE 结构体名;并行描述语句主要有:并行信号赋值语句(Concurrent Signal Assignments)、进程语句(Process Statements)、块语句(Block Statements) 、元件例化语句(Component Instantiations)、生成语句(Generate Statements) 及并行过程调用语句(Concurrent Procedure Calls)等六种。
其中,进程语句和块语句是两种最主要、最常用的并行描述语句。
本节介绍这六种并行描述语句及其功能。
一、进程语句(TOP)进程PROCESS语句本身是并行描述语句,但却包含一系列顺序描述语句。
所以,设计中各个进程是并行执行,而各进程内的顺序描述语句却是按顺序执行。
进程与其他部分的通信,是通过从进程外的信号或端口中读取或者写入值来完成。
进程语句的语法格式如下:[进程名称:]PROCESS [(敏感表)]{进程声明}BEGIN{顺序语句}END PROCESS [进程名称];其中,进程声明是对子程序、类型、常量和变量等的说明;敏感表(Sensitivity_list)是所有敏感信号(包括端口)的列表;敏感表的语法格式为:信号名称{,信号名称}所谓进程对信号敏感,是指当信号发生变化时,能够触发进程中语句的执行。
5-VHDL主要描述语句(并行语句)
![5-VHDL主要描述语句(并行语句)](https://img.taocdn.com/s3/m/3df20f3a87c24028915fc37d.png)
第五章 VHDL主要描述语句--并行语句
类属子句和类属接口表为接口说明,它有点类似于实体的定
义 部 分 , 它 可 包 含 由 关 键 词 PORT、GENERIC、PORT MAP和GENERIC MAP引导的接口说明等语句,对BLOCK 的接口设置以及与外界信号的连接状况加以说明。
OUT1[Leabharlann ]OUT1[1]VCC 1
0
FD11 D0 Q0
OUT1[2]
OUT1[3]
组合电路型十进制加法器cnt10b综合后的RTL硬件结构图(增加了D触发器)
材料与能源学院微电子材料与工程系
第五章 VHDL主要描述语句--并行语句
5.2.2 BLOCK 语句 块(BLOCK)语句是一种将结构体中的并行描述语句进行组
3. 结构体中多个进程之所以能并行同步运行,一个很重要 的原因是进程之间的通信是通过传递信号和共享变量值 来实现的。 4. 进程是重要的建模工具。进程结构不但为综合器所支持, 而且进程的建模方式将直接影响仿真和综合结果。
材料与能源学院微电子材料与工程系
第五章 VHDL主要描述语句--并行语句
进程语句是VHDL程序中使用最频繁和最能体现VHDL语言
材料与能源学院微电子材料与工程系
第五章 VHDL主要描述语句--并行语句
IN1 [0] IN1 [1] IN1 [2] IN1 [3] CLR
NOT
AND4
ADDER4 1 A0 S0 A1 S1 A2 S2 A3 S3 B0 OR2 VCC 1 0
MUX4 2 A0 A1 A2 A3 Z0 B0 Z1 B1 Z2 B2 Z3 B3 S0
OUT1 [0] OUT1 [1] OUT1 [2] OUT1 [3]
EDA教程之第四章VHDL语言的主要描述语句
![EDA教程之第四章VHDL语言的主要描述语句](https://img.taocdn.com/s3/m/b009794b0640be1e650e52ea551810a6f524c803.png)
Y <= tmp;
END Process P1;
LOOP语句
循环变量(i)在信号说明、变量说明中不能出现,信号、 变量不能代入到循环变量中。
局部变量(tmp)仅能在进程中出现。 全局变量、信号可以将局部变量的值带ential statement
BEGIN
Indata <= S3 & S2 & S1 & S0;
P1:PROCESS (Indata, G1,G2)
IF( G1='0' AND G2='0') THEN
CASE indata IS
WHEN "0000"=> y <="01 11 11 11 11 11 11 11";
WHEN "0001"=> y <="10 11 11 11 11 11 11 11";
功能wait语句使系统暂时挂起(等同于end process),此时,信号值开始更新。条件满足后, 系统将继续运行。
顺序执行语句sequential statement
顺序执行语句sequential statement
顺序执行语句sequential statement
顺序执行语句sequential statement
并行处理语句concurrent statement
并行处理语句concurrent statement
并行处理语句concurrent statement
顺序执行语句和并行处理语句总结
1、顺序执行语句wait、assert、if -else 、 case、for-loop、while语句只能用在 process、function 和procedure 中; 2、并行处理语句(条件信号带入和选择信 号带入)只能用在architecture、block中;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[进程标号: ] Process [ 触发信号1,触发信号2,…… + [ 定义区 ] Begin 顺序语句 …… End Process [ 进程标号] ;
注: 方括号内容可以省略;触发信号将决定该过程是否执行;一个结构体 当中可以有多个过程;多个进程语句之间是并行执行,进程内部属于 顺序执行语句。
顺序语句:
按动作特点:照语句书写顺序执行; 使用范围 :进程、函数和过程内部出现; 实际应用 :时序电路、数据流控制电路;
基本的VHDL顺序语句
VHDL中的顺序语句用于描述进程或子程序的内部功能,且只能出现在 PROCESS、FUNCTION、PROCEDURE等语句中。 可以用来设计 时序电路、组合电路。 主要作用:时序流控制、程序控制、条件和迭代等,行为描述代码。 常用的顺序语句见下表。
例如下面语句是错误的: PROCESS(clk) BEGIN IF rising_eng_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,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;
语法说明:
时钟沿的VHDL描述方法总结(3种): 上升沿描述1: clk’event and clk=‘1’ ; 下降沿描述1: clk’event and clk=‘0’ ;
上升沿描述2:
clk='1' AND clk'EVENT AND clk'LAST_VALUE='0‘ 下降沿描述2: clk=‘0' AND clk'EVENT AND clk'LAST_VALUE=‘1‘
VHDL语言描述语句
一、VHDL语句分类; 二、基本的VHDL顺序语句 三、基本的VHDL并行语句 四、常用组合单元电路VHDL设计 五、常用时序单元电路VHDL设计
一、VHDL语句分类
按照功能分类:
赋值语句; 数据流控制语句(转向控制语句): 1. Case … when … ( 顺序 ); 2. If … else … ( 顺序 ); 3. with … select when ( 并 ); 4. When …else ( 并 ); 模块化设计语句:
上升沿描述3:
rising_edge(clk) ; 下降沿描述3: falling_edge(clk); Clk’event ??
进程语句总结:
进程仅在敏感信号发生变化时才执行。 特点:进程内部,顺序语句;进程语句之间,并行。 不同进程内不可以对同一信号赋值,即不可多重赋值。 进程内信号和变量赋值效果不同。 一个进程内不能同时扑捉同一个时钟信号的上升沿或者下降沿。
2.进程语句——语法说明
a) 进程标号:用于标识进程,可选。多个进程时,提高程序可读性;
a) 敏感信号列表:敏感信号发生变化(上升沿或者下降沿),进程被 激活,从而执行内部顺序语句。 注意:可以有多个敏感信号,用逗号隔开,任何一个变化都激活进 程,否则进程挂起。
c)
进程声明区: 用于定义进程内部的局部变量,信号不可在此声明。进程之间数据 交流通过全局信号。
基本的VHDL顺序语句
1、process(进程); 2、信号和变量; 3、IF语句; 4、C ASE语句; 5、CASE语句和IF语句的比较; 6、LOOP语句; 7、WAIT语句; 8、使用顺序代码设计组合逻辑电路;
5.3.1 进程(PROCESS)语句
语法说明: 1、Process为过程语句,定义如下:
process ; component ; generate ; block ;for…loop ; 子程序调用语句
仿真语句: wait ; 按照语句的执行方式特点分为: 并行语句:
按动作特点:语句执行顺序与书写顺序无关; 使用范围 :进程语句外部的语句都是并行的; 实际应用 :对应于各自独立运行的逻辑电路;
d) 顺序语句: 进程内部语句顺序执行。
e) 用处:适合描述时序电路。也可用于组合逻辑电路的设计。
例1:进程语句例程——带异步复位的D触发器
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY cydff IS PORT ( 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 clk'LAST_VALUE='0' AND clk'EVENT ) THEN q<=d; END IF ; END PROCESS cydff_inst ; END ARCHITECTURE behave ;
顺序语句 顺序赋值语句 IF语句 CASE语句 LOOP语句 WAIT语句 NULL语句 ASSERT语句 语句作用 信号或变量赋值 条件控制 条件控制 循环控制 描述延迟 空操作 仿真时报告错误 是否可综合 可综合 可综合 可综合 循环次数有限时可综 合 WAIT ON和WAIT UNTIL可综合 可综合 不可综合