第8章VHDL顺序和并行语句归纳

合集下载

8.VHDL基本语句和函数

8.VHDL基本语句和函数

4)
格式
IF
条件1 THEN 条件1 顺序语句1 顺序语句1; 条件2 ELSIF 条件2 THEN 顺序语句2 顺序语句2; …… 条件n ELSIF 条件n THEN 顺序语句n; 顺序语句n; ELSE 顺序语句n+1; 顺序语句n+1; IF; END IF;
注意
这类语句可以实现不同类型电路的描述。 这类语句可以实现不同类型电路的描述。 其任一分支顺序语句的执行条件是以上各分支 条件相与, 条件相与,即语句中顺序语句的执行条件具有 向上相与的功能。 向上相与的功能。
注意ቤተ መጻሕፍቲ ባይዱ
•条件句中的选择值必须在表达式的取值范围内; 条件句中的选择值必须在表达式的取值范围内; 条件句中的选择值必须在表达式的取值范围内 •CASE语句中每一条件句的选择只能出现一次,相同 CASE语句中每一条件句的选择只能出现一次 CASE语句中每一条件句的选择只能出现一次, 选择值的条件语句不能重复出现; 选择值的条件语句不能重复出现; •所有表达式的值都必须穷举,不能穷举的值用 所有表达式的值都必须穷举, 所有表达式的值都必须穷举 OTHERS表示 表示。 OTHERS表示。
Library ieee; use ieee.std_logic_1164.all; entity test_06 is port( d: in std_logic; x: out std_logic); end test_06; architecture test_06 of test_06 is signal a: std_logic_vector(3 downto 0); signal b: std_logic_vector(2 downto 0); begin process begin a<="1010"; b<="111"; if(a>b) then x<=d; else x<='0'; end if; end process; end test_06;

VHDL语句

VHDL语句

VHDL的顺序语句和并行语句一、顺序语句顺序语句只能出现在进程(PROCESS)、子程序(过程(PROCEDURE)和函数(FUNCTION))中,其特点与传统的计算机编程语句类似,是按程序书写的顺序自上而下、一条一条地执行。

利用顺序语句可以描述数字逻辑系统中的组合逻辑电路和时序逻辑电路。

VHDL的顺序语句有赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句等六类。

<1>赋值语句赋值语句的功能是将一个值或一个表达式的运算结果传递给某一个数据对象。

(1)变量赋值语句格式:目标变量名:=赋值源(表达式);例如:x:=5.0;(2)信号赋值语句格式:目标信号名<=赋值源;例如:y<=…1‟;说明:该语句若出现在进程或子程序中则是顺序语句,若出现在结构体中则是并行语句。

( 3 )数组元素赋值例如:SIGNAL a,b:STD LOGIC VECTOR(1 TO 4);a<=“1101”;a(1 TO 2)<=“10”;a(1 TO 2)<=b(2 TO 3);<2>流程控制语句通过条件控制开关决定是否执行一条或几条语句,或重复执行一条或几条语句,或跳过一条或几条语句。

流程控制语句共有5种:IF语句CASE语句LOOP语句NEXT语句EXIT语句(1)IF语句1、IF 条件句Then 顺序语句END IF ;2、IF 条件句Then 顺序语句ELSE 顺序语句END IF ;3、IF 条件句Then 顺序语句ELSIF 条件句Then 顺序语句...ELSE 顺序语句END IF4、IF 条件句ThenIF 条件句Then...END IFEND IF例子:8线-3线优先编码器的设计LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALLENTITY coder ISPORT(a:IN STD LOGIC VECTOR(0 TO 7);y:OUT STD LOGIC VECTOR(0 TO 2));END coder;ARCHITECTURE example2 OF coder ISBEGINPROCESS(a)BEGINIF (a(7)=…0‟)THEN y<=”111”;ELSIF (a(6)=‟0‟) THEN y<=”011”;ELSIF (a(5)=‟0‟) THEN y<=”101”;ELSIF (a(4)=‟0‟) THEN y<=”001”;ELSIF (a(3)=‟0‟) THEN y<=”110”;ELSIF (a(2)=‟0‟) THEN y<=”010”;ELSIF (a(1)=‟0‟) THEN y<=”100”;ELSE y<=”000”;END IF;END PROCESS;END example2;(2)CASE语句格式:CASE 表达式ISWhen 选择值=>顺序语句;When 选择值=>顺序语句;…When OTHERS =>顺序语句;END CASE;说明:“=>”不是运算符,相当“THEN”。

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只要一个以上的条件被满足,进程就被启动.*注意:多条件等待时,表达式的值至少应包含一个信号量的值。

4、VHDL顺序语句

4、VHDL顺序语句

<法二:使用类型转换函数>

<例5.2.2>二选一数据选择器
如何描述 四选一数 据选择器?

<例5.2.3>8-3优先编码器
输入 输出 a7 a6 a5 a4 a3 a2 a1 a0 y2 y1 y0 0 x x x x x x x 1 1 1 1 0 x x x x x x 1 1 0 1 1 0 x x x x x 1 0 1 1 1 1 0 x x x x 1 0 0 1 1 1 1 0 x x x 0 1 1 1 1 1 1 1 0 x x 0 1 0 1 1 1 1 1 1 0 x 0 0 1 1 1 1 1 1 1 1 0 0 0 0

代码:

练习:3-8译码器
输入 a2 a1 a0 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0
y7 1 0 0 0 0 0 0 0
y6 0 1 0 0 0 0 0 0
y5 0 0 1 0 0 0 0 0
输出 y4 y3 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0
顺序语句可以包含若干条语句顺序语句可以包含若干条语句格式格式22中可以有若干个中可以有若干个elsifelsif结构结构if语句可以嵌套使用语句可以嵌套使用p111p111例例524524521法一
《VHDL顺序语句》

VHDL语句分为两大类:顺序语句和并行语句。 顺序语句:按照语句的前后书写顺序执行。 并行语句:执行顺序与语句的书写顺序无关。 顺序语句只能写在进程、子程序中。

作业

P126第6题(1)
“循环变量”为临时变量,不必事先声明;不 能被赋值;在loop语句中不能有与之重名的标识 符。 循环范围的写法:“初值 to 终值”或“初值 downto 终值”。

VHDL语言的顺序语句.

VHDL语言的顺序语句.


用CASE语句描述4选1多路选择器。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUX41 IS PORT(S1,S2: IN STD_LOGIC; A,B,C,D:IN STD_LOGIC; Z: OUT STD_LOGIC);
END ENTITY MUX41;
END mux4;
ARCHITECTURE rt1 OF mux4 BEGIN PROCESS (input, sel) BEGIN IF (sel=”00”) THEN ELSIF (Sel=”01”) THEN ELSIF (Sel=”10”) THEN ELSE END IF; END PROCESS; END rt1;
B、CASE 语句
CASE 表达式 IS When 选择值 => 顺序语句; When 选择值 => 顺序语句; ... [When OTHERS =>顺序语句;] END CASE ;
选择值可以有四种不同的表达方式: 单个普通数值,如6。 数值选择范围,如(2 TO 4),表示取值为2、3或4。 并列数值,如35,表示取值为3或者5。 混合方式,以上三种方式的混合。
(4) CASE语句执行中必须选中,且只能选中所列条件语
句中的一条。这表明CASE语句中至少要包含一个条件语句。
CASE语句常用来描写总线行为、编码器和译码器的结构。CASE语句 与IF语句功能相似但CASE语句的可读性好,非常简洁。
C、LOOP 语句
(1)单个LOOP语句,其语法格式如下: [标号:] LOOP 顺序语句; END LOOP [标号 ]; 用法示例: L2 :LOOP a := a+1; EXIT L2 WHEN a >10 ; -- 当a大于10时跳出循环 END LOOP L2; ... (2)FOR… LOOP语句,语法格式如下: [标号:] FOR 循环变量 IN 循环次数范围 LOOP 顺序语句; END LOOP [标号];

VHDL的并行语句

VHDL的并行语句

case语句
null语句(空语句,值保持不变)
进程语句的构成
PROCESS语句结构
进程说明 信 号 赋 值 语 句 变 量 赋 值 语 句
顺序描述语句 进 程 启 动 语 句 子 程 序 调 用 语 句 顺 序 描 述 语 句 进 程 跳 出 语 句
敏感信号参数表
Example will be more clear
c selb
q
Conditional Signal Assigments

The output get the value when the condition is true e.g. 2 to 1 multiplexer
Entity test1 is port (in1, in2, sel : in bit; d : out bit); end test1; architecture test1_body of test1 is begin d <= in1 when sel = „0‟ else in2; end test1_body;
选择信号赋值语句
基本格式 WITH 表达式 SELECT 目标信号<= 表达式1 WHEN 选择条件1, 表达式2 WHEN 选择条件2, …… 举例 表达式n WHEN 选择条件n; WITH sel SELECT

所有可能情况都要考 q <= a WHEN “00”, A 虑,但可以在最后加 B 上Others语句来处理 b WHEN “01”, C 未考虑到的情况D
常用并行语句包括:

信号赋值语句
简单信号、条件信号、选择信号赋值语句

进程(Process)语句

元件例化(Component)语句

VHDL语言的顺序语句

VHDL语言的顺序语句

C、LOOP 语句
(1)单个LOOP语句,其语法格式如下: [标号:] LOOP 顺序语句; END LOOP [标号 ]; 用法示例: L2 :LOOP a := a+1; EXIT L2 WHEN a >10 ; -- 当a大于10时跳出循环 END LOOP L2; ...
(2)FOR… LOOP语句,语法格式如下: [标号:] FOR 循环变量 IN 初值 TO 终值 LOOP 顺序语句; END LOOP [标号];
顺序语句是相对于并行语句而言的,其特点 是按程序书写的顺序自上而下、一条一条地执行 的。利用顺序语句可以描述数字逻辑系统中的组 合逻辑电路和时序逻辑电路。 顺序语句只能出现在进程(PROCESS)、 过程(PROCEDURE)、 函数(FUNCTION) 中。在同一设计实体中,所有的进程是并行执行 的,每个进程内部是顺序执行的。
3、等待语句
WAIT; WAIT ON 信号表; WAIT UNTIL 条件表达式; WAIT FOR 时间表达式;
WAIT语句
EXIT有四种用法,其语法格式如下:
-- 第一种语句格式,表示永远挂起 -- 第二种语句格式 -- 第三种语句格式 -- 第四种语句格式, 超时等待语句
用法示例1: SIGNAL s1,s2 : STD_LOGIC; ... PROCESS BEGIN ... WAIT ON s1,s2 ; END PROCESS ;
顺序语句1;
顺序语句2;
ELSIF 条件2 … 第三种 ELSIF 条件n ELSE END IF;
THEN
顺序语句n;
顺序语句n+1;

用IF语句描述一个四选一电路
LIBRARY IEEE; USE IEEE. STE_LOGIC_1164.ALL;

3.4 VHDL并行语句

3.4 VHDL并行语句

BEGIN
--ALU块行为描述语句
END ALU;
REG8 BLOCK SIGNALZbus : STD_LOGIC_VECTOR(31
DOWNTO 0);--定义局域量 BEGIN REG1 BLOCK SIGNAL Zbus1:STD_LOGIC_VECTOR(31
DOWNTO 0);--定义子局域量 BEGIN --REG1子块行为描述语句 END REG1
BEGIN
… END adder;
2、过程调用语句 格式:过程名(关联参数表); 例如:adder(a1,b1,sum1);
规则:(1)若过程在进程(PROCESS)中调用,则 是顺序语句;
(2)若过程调用出现在结构体(ARCHITECTURE) 或块(BLOCK)中,则属于并行语句,相当一个进 程,而且每调用一次过程,就相当插入一个元件。
USE IEEE.STD LOGIC 1164.ALL
ENTITY CPU IS
PORT(clk,RESET:IN STD LOGIC;
ADDERS:OUT STD LOGIC_VECTOR(31 DOWNTO 0);
DATA:INOUT STD LOGIC VECTOR(7 DOWNTO 0);
END CPU ;
PROCESS BEGIN WAIT UNTIL clk‘EVENT AND clk=’1’; IF (clr=’1’ OR cnt=9) THEN cnt<=0; ELSE Cnt<=cnt+1; END IF; END PROCESS;
END example5;
3.4.2 块语句
功能:将一个大系统程序分解为若干子系统(块) 编写,便于程序的编写、调试和查错。

VHDL并行语句

VHDL并行语句

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;
ELSE
--否则作加1操作
OUT1<=IN1+1; --注意,使用了重载算符"+",重载算符"+"是在库
ENG IF;
...
4、进程语句
PROCESS语句结构的一般表达格式如下
[进程标号: ] PROCESS [ ( 敏感信号参数表 ) ] [IS] [进程说明部分]
BEGIN 顺序描述语句;
END PROCESS [进程标号];
在一个结构体中多个PROCESS语句可以同时并发运 行,而进程内部语句之间是顺序关系。
例 ENTITY mux IS
PORT ( a,b,c : IN BIT ; p1,p2 : IN BIT ; z : OUT BIT );
END; ARCHITECTURE behv OF mux IS BEGIN
z <= a WHEN p1 = '1' ELSE b WHEN p2 = '1' ELSE c;
六、VHDL语言的并行语句
结构体
1、并行信号赋值语句 2、条件信号赋值语句 3、块语句 4、进程语句 5、元件例化语句 6、生成语句 7、并行过程调用语句
A R C H IT E C T U R E

VHDL语言的顺序语句

VHDL语言的顺序语句

WHEN "11"=>z<=d;
WHEN OTHERS =>z<='X'; END CASE;
END PROCESS;
END ARCHITECTURE ART;
使用CASE语句需注意以下几点: (1) 条件句中的选择值必须在表达式的取值范围内。
(2) 除非所有条件句中的选择值能完整覆盖CASE语句中
E、EXIT 语句 EXIT有三种用法,其语法格式如下:
EXIT; EXIT LOOP 标号; EXIT LOOP 标号 WHEN 条件表达式; -- 第一种语句格式 -- 第二种语句格式 -- 第三种语句格式
这种语句格式与前述的NEXT 语句的格式和操作功能非常相 似,惟一的区别是NEXT语句是跳向LOOP 语句的起始点, 而EXIT语句则是跳向LOOP语句的终点。 EXIT语句为程序需要处理保护、出错和警告状态时,提供了 一种快捷、简便的调试方法。
当LOOP 标号缺省时,则执行NEXT 语句时,即 刻无条件终止当前的循环,跳回到本次循环LOOP语 句开始处,开始下一次循环;否则跳转到指定标号的 LOOP语句开始处,重新开始执行循环操作。若 WHEN子句出现并且条件表达式的值为TRUE,则执 行NEXT语句,进入跳转操作,否则继续向下执行。
用法示例:
Y: OUT STD_LOGIC);
END mux4;
ARCHITECTURE rt1 OF mux4 IS BEGIN PROCESS (input, sel) BEGIN IF (sel=”00”) THEN Y<=input (0); ELSIF (sel=”01”) THEN Y<=input (1); ELSIF (sel=”10”) THEN Y<=input (2); ELSE Y<=input (3); END IF; END PROCESS; END rt1;

VHDL语言的顺序语句

VHDL语言的顺序语句
vhdl语言的顺序语 句
目 录
• 顺序语句概述 • 顺序语句概述 • 赋值语句 • 条件语句 • 循环语句 • 控制流语句
01
CATALOGUE
顺序语句概述
过程块(process block)
过程块是顺序语句的一种形式,它包含一系列的顺序语句,按照一定的顺序执行。
过程块通常在仿真过程中按照时间顺序逐行执行。
loop-statement循环语句
语法示例
```vhdl
loop_statement: process(some_signal)
loop-statement循环语句
01
02
begin
• 循环体
03
if some_condition then
loop-statement循环语句
• 条件满足时执行的代码
并行过程块(concurrent process block)
并行过程块是另一种形式的顺序语句,它包含一系列的顺序语句,这些语句在仿真过程中同时执行。
并行过程块通常用于描述数字系统的并发行为。
02
CATALOGUE
赋值语句
连续赋值语句
总结词
在连续赋值语句中,信号或变量的值 在每个仿真时间步都会更新。
case语句
end case;
```
conditional语句
描述:类似于其他编程语言中的三元操作符。
01
02
语法
```vhdl
03
04
signal_name <= "0" when condition else "1";
```
05
06
上述语句表示,如果条件为真,则将 `signal_name`设置为"0",否则设置为 "1"。

VHDL语言

VHDL语言
PORT (a, b : IN STD_LOGIC; co,so : OUT STD_LOGIC); END h_adder;
VHDL语言的基本结构
实体结构
ENTITY 实体名 IS PORT ( 端口名1,端口名2,…端口名n :方向 数据类型名; … 端口名a,端口名b,…端口名m :方向 数据类型名);
80年代初,产生VHDL(Very high speed IC HDL)语言。 1987.12 ,作为IEEE标准(87版)。 1993 ,经修改的VHDL再次被IEEE标准认证(93版)。 1995 ,中国国家技术监督局推荐为国家标准。
VHDL语言的优点
支持自上而下的设计方法(整体描述)
半加器描述事例: WHEN “00” => so<=‘0’; co<=‘0’ ; WHEN “01” => so<=‘1’; co<=‘0’ ; WHEN “10” => so<=‘1’; co<=‘0’ ; WHEN “11” => so<=‘0’; co<=‘1’ ;
P.42 表3-3
VHDL语言的基本结构
实体 用以描述外部端口
构造体 用以描述内部结构及行为
实体结构
ENTITY 实体名 IS PORT ( 端口名1,端口名2,…端口名n :方向 数据类型名; … 端口名a,端口名b,…端口名m :方向 数据类型名);
END 实体名;
半加器实体说明举例 ENTITY h_adder IS
。 l任何标识符必须以英文字母开头。 l必须是单一下划线“_”,且其前后都必须有英文字母或数字。 l标识符中的英语字母不分大小写。 l允许包含图形符号(如回车符、换行符等),也允许包含空格符。

VHDL的基本描述语句

VHDL的基本描述语句

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)是所有敏感信号(包括端口)的列表;敏感表的语法格式为:信号名称{,信号名称}所谓进程对信号敏感,是指当信号发生变化时,能够触发进程中语句的执行。

EDA 技术:VHDL语句总结

EDA 技术:VHDL语句总结

begin
if sel = "0001" then output <= in1(0) ; output2<=‘1’;
elsif (sel = "0010") then
output <= in1(0) xor in1(1) ; output2 <= ‘0’ ;
elsif sel = "0100" then
sel: in std_logic_vector(3 downto 0); output: out std_logic; output2: out std_logic); end ifexample1;
architecture arch of ifexample1 is
begin
process(in1, sel)
begin case (din) is when “00” => dout <=“0001” ; when “01” => dout <= “0010” ; when “10” => dout <=“0100” ; when “11” => dout <=“1000” ; end case;
end rtl ;
使用变量能获得比较好的综合结果,有利于优化, 但 需要锁存中间结果时必须使用信号。
❖ 初值(有三种形式,前两种综合忽略)
1、type states is (IDLE,S0,S1,S2); signal state:states; --信号state默认值为IDLE
2、signal Z : bit_vector(3 downto 0) :=“0000” ;
end if; end process; end rtl;

VHDL顺序语句

VHDL顺序语句

F、返回语句
RETURN语句是一段子程序结束后,返回主程序的 控制语句。它有两种格式: RETURN; RETURN 表达式; --第一种语句格式 -- 第二种语句格式
第一种格式只能用于过程,它后面一定不能有表达式; 第二种格式只能用于函数,它后面必须有条件表达式, 它是函数结束的必要条件,函数结束必须用RETURN语 句。
NEXT [LOOP 标号] [WHEN 条件表达式];
当LOOP 标号缺省时,则执行NEXT 语句时,即 刻无条件终止当前的循环,跳回到本次循环LOOP语 句开始处,开始下一次循环,否则跳转到指定标号的 LOOP语句开始处,重新开始执行循环操作。若 WHEN子句出现并且条件表达式的值为TRUE,则执 行NEXT语句,进入跳转操作,否则继续向下执行。
THEN
顺序语句n;
顺序语句n+1;
例 :IF (SET=’1’) THEN
c<=b END IF; 例 : IF (sel=’1’) THEN
c<=a;
ELSE
c<=b;
END IF;
IF语句 实例1 : 4选1数据选择器
LIBRARY IEEE;
USE
IEEE. STE_LOGIC_1164.ALL;
B、CASE 语句
CASE 表达式 IS When 选择值 => 顺序语句; When 选择值 => 顺序语句; ... [When OTHERS =>顺序语句;] END CASE ;
选择值可以有四种不同的表达方式: 单个普通数值,如6。 数值选择范围,如(2 TO 4),表示取值为2、3或4。 并列数值,如35,表示取值为3或者5。 混合方式,以上三种方式的混合。

VHDL顺序与并行语句

VHDL顺序与并行语句

一顺序语句
1.4 LOOP语句
(2) FOR_LOOP语句,语法格式如下:
[LOOP标号:] FOR 循环变量,IN 顺序语句 END LOOP [LOOP标号]; 循环次数范围 LOOP
一顺序语句
1.4 LOOP语句
【例4】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY p_check IS PORT ( a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); y : OUT STD_LOGIC ); END p_check; ARCHITECTURE opt OF p_check IS SIGNAL tmp :STD_LOGIC ; BEGIN PROCESS(a) BEGIN tmp <='0'; FOR n IN 0 TO 7 LOOP tmp <= tmp XOR a(n); END LOOP ; y <= tmp; END PROCESS; END opt;
【例3】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY alu IS PORT( a, b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); opcode: IN STD_LOGIC_VECTOR (1 DOWNTO 0); result: OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END alu; ARCHITECTURE behave OF alu IS CONSTANT plus : STD_LOGIC_VECTOR (1 DOWNTO 0) := CONSTANT minus : STD_LOGIC_VECTOR (1 DOWNTO 0) := CONSTANT equal : STD_LOGIC_VECTOR (1 DOWNTO 0) := CONSTANT not_equal: STD_LOGIC_VECTOR (1 DOWNTO 0) := BEGIN PROCESS (opcode,a,b) BEGIN CASE opcode IS WHEN plus => result <= a + b; -- a、b相加 WHEN minus => result <= a - b; -- a、b相减 WHEN equal => -- a、b相等 IF (a = b) THEN result <= x"01"; ELSE result <= x"00"; END IF; WHEN not_equal => -- a、b不相等 IF (a /= b) THEN result <= x"01"; ELSE result <= x"00"; END IF; END CASE; END PROCESS; END behave;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
顺序语句 END IF
VHDL常用顺序语句、并行语句归纳
常用的并行语句有: (1) 并行信号赋值语句,用 “<=” 运算符 (2) 条件赋值语句,WHEN-ELSE (3) 选择信号赋值语句,WITH-SELECT (4) 进程语句,PROCESS 常用的顺序语句有: (1) 信号赋值语句和变量赋值语句 (2) IF- ELSE语句 (3) CASE-WHEN语句 (4) FOR-LOOP
VHDL中描述时序逻辑时必须使用进程语句。
PROCESS语句结构的一般表达格式如下
[进程标号: ] PROCESS [ ( 敏感信号参数表 [进程说明部分]
BEGIN 顺序描述语句
END PROCESS [进程标号];
) ] [IS]
8.3 进程语句归纳
8.3.2 进程结构组成
进程说明部分 数据类型、常数、变量、属性、子程序
1 WHEN s0=’1’ AND s1=’0’ ELSE 2 WHEN s0=’0’ AND s1=’1’ ELSE 3; x <= a WHEN select=0 ELSE b WHEN select=1 ELSE c WHEN select=2 ELSE d; ...
8.5 IF语句概述
(1) IF
条件句 Then 顺序语句
END IF ;
(3) IF 条件句 Then IF 条件句 Then ... END IF
END IF
(2) IF 条件句 Then 顺序语句
ELSE 顺序语句
END IF ; (4) IF 条件句 Then
顺序语句 ELSIF 条件句 Then 顺序语句 ... ELSE
图8-9 固有延时输入输出波形
A
B 0 10 20 30 40ns
图8-10传输延时输入输出波形
8.6 仿真延时
8.6.3 仿真
VHDL仿真器和综合器将自动为系统中的信号赋值 配置一足够小而又能满足逻辑排序的延时量,即仿真 软件的最小分辩时间,这个延时量就称为仿真 (Simulation Delta),或称 延时,从而使并行语句 和顺序语句中的并列赋值逻辑得以正确执行。由此可 见,在行为仿真、功能仿真乃至综合中,引入 延时 是必需的。仿真中, 延时的引入由EDA工具自动完于一个时钟信号的同步时序逻辑 在一个进程内,不可在一个if语句中同时捕捉时钟的上升沿和下
降沿。
8.4 并行语句例解
【例8-13】 ARCHITECTURE dataflow OF mux IS SIGNAL seiect : INTEGER RANGE 15 DOWNTO 0; BEGIN Select <= 0 WHEN s0=’0’ AND s1=’0’ ELSE
EDA 技术实用教程
第8 章 VHDL设计深入
第 8 章 VHDL设计深入
8.1、数据对象♠ 8.2、含高阻输出的电路设计♠ 8.3、顺序语句 8.4、并行赋值语句讨论 8.5、IF语句概述 8.6、仿真延时 8.7、VHDL的描述风格
8.3 顺序语句归纳
8.3.1 进程语句格式
结构体中,允许放置任意多个进程语句结构,而每一进程的内部是由 一系列顺序语句来构成的。
END PROCESS;
8.3 进程语句归纳
8.3.3 进程要点
3. 进程必须由敏感信号的变化来启动
4. 进程语句本身是并行语句 进程内部为顺序语句,但作为整体,与其他进程间是并行关系。
8.3 进程语句归纳
8.3.3 进程要点
5. 信号是多个进程间的通信线 在不同进程内不可对同一个信号赋值,即不可多重赋值! 进程内信号赋值和变量赋值的效果是不同的!
顺序描述语句部分
赋值语句、进程启动语句、子程序调用语句、 顺序描述语句、进程跳出语句
敏感信号参数表 进程对各自的敏感信号敏感
8.3 进程语句归纳
8.2.3 进程要点
1. PROCESS为一无限循环语句
2. PROCESS中的顺序语句具有明显的顺序/并行运行双重性
PROCESS(abc) BEGIN CASE abc IS WHEN "0000" => so<="010" ; WHEN "0001" => so<="111" ; WHEN "0010" => so<="101" ; ... WHEN "1110" => so<="100" ; WHEN "1111" => so<="000" ; WHEN OTHERS => NULL ; END CASE;
8.6 仿真延时
8.6.1 固有延时 z <= x XOR y AFTER 5ns ; z <= x XOR y ; B <= A AFTER 20ns ;--固有延时模型
8.6 仿真延时
8.6.2 传输延时 B <= TRANSPORT A AFTER 20 ns;-- 传输延时模型
A
B 0 10 20 30 40ns
相关文档
最新文档