第5章 VHDL并行语句

合集下载

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并行语句
过程调用的实质内容要先装入程序包中(Package):
PROCEDURE 过程名(参数1;参数2;) IS [声明语句;]
BEGIN [顺序处理语句;]
END 过程名;
并行过程调用:
过程名(关联参数表);
参数关联方式
位置关联方式 名字关联方式 =>
例:设有一过程PROCEDURE vect(a,b:IN BIT;
output1 <= a AND b ; output2 <= c + d ; g <= e OR f ; h <= e XOR f ; s1 <= g ; END ARCHITECTURE curt;
2、条件信号赋值语句
赋值目标 <= 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE ... 表达式 ;
PROCESS语句在VHDL程序中,是描述硬件并行工作 行为的最常用、最基本的语句。
PROCESS 组成 PROCESS语句结构
进程说明
顺序描述语句
敏感信号参数表





































说明
(1) 进程说明部分主要定义一些局部量,可包括数据 类型、常数、属性、子程序等。但需注意,在进程说 明部分中不允许定义信号和共享变量。
-- 指定信号
-- 指定变量
-- 过程调用

第五章(VHDL主要描述语句)

第五章(VHDL主要描述语句)

(4) CASE语句执行中必须选中,且只能选中所列条件语
句中一条。这表明CASE语句中至少要包含一个条件语句。
CASE语句常用来描写总线行为、编码器和译码器的结构。CASE语句 与IF语句功能相似但CASE语句的可读性好,非常简洁。
CASE语句的误用:
SIGNAL value : INTEGER RANGE 0 TO 15 ; SIGNAL out_1 : BIT ; CASE value IS -- 缺少 WHEN条件语句 END CASE ; -- 分支条件不包含2到15 CASE value IS WHEN 0 => out_1 <= „1‟; WHEN 1 => out_1 <=„0‟; END CASE ; -- 在5到10上发生重叠 CASE value IS WHEN 0 TO 10 => out_1 <= „1‟; WHEN 5 TO 15 => out_1 <= „0‟; END CASE ;
IF语句不仅可用于选择器设计,还可用于比较 器,译码器等进行条件控制的逻辑设计。IF语句 中至少应有一个条件句,条件句必须由布尔表达 式构成,条件表达式中能使用关系运算操作及逻 辑运算操作的组合表达式。 IF语句颠倒条件判别次序,会引起在综合时逻辑 功能的变化,即IF语句判别条件不可颠倒。 IF语句中,先处理最起始的条件;如果不满足, 再处理下一个条件。一般把条件约束最多的作为 起始条件。

用IF语句描述一个二位等值比较器
ARCHITECTURE a OF compare IS LIBRARY IEEE; BEGIN PROCESS(a,b) USE IEEE.STD_LOGIC_1164.ALL; BEGIN ENTITY compare IS IF(a>b) THEN eater<='1';equal<='0';less<='0'; generic(n:natural:=2); ELSIF (a=b) THEN PORT( greater<='0';equal<='1';less<='0'; ELSE a,b:IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); greater<='0';equal<='0';less<='1'; greater,equal,less:OUT STD_LOGIC); END IF; END PROCESS; END; END;

5、VHDL并行语句

5、VHDL并行语句

2、在程序包中定义函数
①程序包首:
package 程序包名 is 函数首; --数据类型、子程序、元件的声明 end 程序包名;
②程序包体:
package body 程序包名 is 函数体; end 程序包名;
3、函数的调用

格式: 数据对象<=函数名(实参1,实参2,…);

调用方式:顺序调用、并行调用。
②程序包体:
package body 程序包名 is 过程体; end 程序包名;
3、过程的调用

格式:过程名(实参1,实参2,…); 实参与形参的对象类型、数据类型要一致。 过程的调用方式:顺序调用、并行调用。
在进程中为顺序语句;在结构体中为并 行语句(并行语句的启动条件:in或inout形 参发生变化)。

例1:1位半加器的过程定义,以下为程序 包文件<pac1.vhd>:
在程序包 中定义过 程

例1:1位半加器的过程调用,以下为顶层 文件<test.vhd>:
并行调 用

例2:四输入与非门的过程定义,以下为程 序包文件(my_pac.vhd):
在程序包 中定义过 程

例2:四输入与非门的过程调用,以下为顶 层文件(test.vhd):

赋值目标必须是信号或端口。 信号赋值语句出现在结构体中,为并行语 句;出现在进程和子程序中,为顺序语句。
1、简单信号赋值语句:信号<=表达式;

执行条件:赋值符号的右边发生变化。
2、条件信号赋值语句: 信号<=值1 when 条件1 else 值2 when 条件2 else
。。。
值n when 条件n else 值n+1;

VHDL并行语句

VHDL并行语句

6.1 进程语句(PROCESS)
进程语句是最主要的并行语句,它在VHDL程序设计中使用频率最高,也 是最能体现硬件描述语言特点的一条语句。进程语句的内部是是顺序语句, 而进程语句本身是一种并行语句。进程语句的综合是比较复杂的,主要涉 及这样一些问题:综合后的进程是用组合逻辑电路还是用时序逻辑电路来 实现?进程中的对象是否有必要用寄存器、触发器、锁存器或是 RAM 等 存储器件来实现。 进程语句结构中至少需要一个敏感信号量,否则除了初始化阶段,进程永
远不会被再次激活。这个敏感量一般是一个同步控制信号,同步控制信号
用在同步语句中,同步语句可以是敏感信号表、WAIT UNTIL语句或是 WAIT ON语句。
6-3 package mtype is type state_t is (s0,s1,s2,s3); end mtype; library ieee; use ieee.std_logic_1164.all; use work.mtype.all; entity s4_machine is port( clk, inc, a1,b1 :in std_logic ; rst : in boolean ; out1 : out std_logic ); end s4_machine; architecture activ of s4_machine is signal current _state , next_state :state_t ; begin sync : process (clk, rst ) if (rst ) then current_state <= s0 ;
· CONCURRENT PROCEDURE CALL
· ASSERT · GENERIC · COMPONENT_INSTANT · GENERATE

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)语句

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 块语句
功能:将一个大系统程序分解为若干子系统(块) 编写,便于程序的编写、调试和查错。

5VHDL顺序语句与并行语句

5VHDL顺序语句与并行语句

5 VHDL顺序语句与并行语句电子信息工程学院 顺序语句与并行语句 大纲进程语句 顺序语句 并行语句22电子信息工程学院顺序语句与并行语句VHDL 程序设计约定语句结构描述中方括号“[ ]”内的内容为可选内容。

对于VHDL 的编译器和综合器来说,程序文字的大小写是不加区分的。

程序中的注释使用双横线“--”。

QuartusII 要求源程序文件的名字与实体名、工程名必须一致。

编写程序注意不要在中文输入状态下输入英文字符和符号。

为了使程序结构清晰,使用层次缩进格式书写代码。

3 电子信息工程学院 顺序语句与并行语句 概述顺序语句仅出现在进程和子程序中。

在结构体中的执行是同时进行,执行顺序与书写顺序无关。

4电子信息工程学院顺序语句与并行语句进程语句(PROCESS )● 进程本身是并行语句,但内部是顺序语句;● 进程只有在特定的时刻(敏感信号发生变化)才会被激活。

[进程标号:] PROCESS (敏感信号参数表) [声明区]; BEGIN 顺序语句END PROCESS [进程标号];在进程中起作用的局部变量一个进程可以有多个敏感信号,任一敏感信号发生变化都会激活进程进程语句定义顺序语句模块,用于将从外部获得的信号值,或内部的运算数据向其他的信号进行赋值。

5电子信息工程学院顺序语句与并行语句进程的工作原理当某个敏感信号的值发生变化时,每个进程语句立即完成进程内顺序语句所定义的功能行为。

执行过程终止顺序语句所定义的功能行为的结果可以赋值给信号,并通过信号被其他的进程读取或赋值。

6电子信息工程学院顺序语句与并行语句进程与时钟在每个上升沿启动一次进程(执行进程内所有的语句)。

上升沿描述:Clock’ EVENT AND Clock=‘1’ 下降沿描述:Clock’ EVENT AND Clock=‘0’ 上升沿描述: rising_edge (Clock) 下降沿描述: falling_edge (Clock)7 电子信息工程学院 顺序语句与并行语句 进程语句格式与结构[进程标号: ] PROCESS [ ( 敏感信号参数表 ) ] [IS] [进程说明部分] BEGIN顺序描述语句END PROCESS [进程标号];PROCESS 语句结构进程说明顺序描述语句 敏感信号参数表信号赋值语句变量赋值语句进程启动语句子程序调用语句顺序描述语句进程跳出语句8电子信息工程学院 顺序语句与并行语句 1. PROCESS 为一无限循环语句2. PROCESS 中的顺序语句具有明显的顺序/并行运行双重性3. 进程语句本身是并行语句4. 信号是多个进程间的通信线5. 一个进程中只允许描述对应于一个时钟信号的同步时序 逻辑进程要点9电子信息工程学院 顺序语句与并行语句 进程注意事项● 进程本身是并行语句,但内部为顺序语句;● 进程在敏感信号发生变化时被激活,在使用了敏感表的进程中不能含wait 语句;● 在同一进程中对同一信号多次赋值,只有最后一次生效; ● 在不同进程中,不可对同一信号进行赋值; ● 一个进程不可同时对时钟上、下沿敏感。

第 5 章 VHDL语言描述语句[93页]

第 5 章  VHDL语言描述语句[93页]

EDA技术与数字系统设计
9
第5章 VHDL硬件描述语言 (2)进程语句的组成 ② 顺序描述语句部分
是一段顺序执行语句,用于描述该进程的行为。
● 信号赋值语句:在进程中将计算或处理的结果赋 值给信号。
● 变量赋值语句:在进程中以变量的形式存储计算 的中间值。
● 子 程 序 (subprograme) 调 用 语 句 : 对 已 定 义 的 过 程
EDA技术与数字系统设计
27
第5章 VHDL硬件描述语言
(2)块语句的应用
利用块语句可以将结构体中的并行语句划分成多个并行方式的子 块,每一个子块都是一个独立的设计实体,具有自己的类属参数和界 面端口,以及与外部环境的衔接描述。
(1) 块语句还可以实现嵌套: 内层的块语句可以使用外层块语句所定义的信号; 但外层块语句不能使用内层块语句定义的信号;
VHDL有如下几类基本顺序语句:赋值语句;IF语句;CASE语句;LOOP语 句;NEXT语句;EXIT语句;子程序;RETURN语句;WAIT语句;NULL 语句。其余常见语句均为并行语句。
与高级语言不同,VHDL的描述语句有并行语句和顺序语句之分。VHDL的 语句的总体结构示意图如图5-1所示。结构体ARCHITECTURE中包含主要 的并行语句,它们之间总是并行执行的,而其中,进程/函数/过程内部包含 的又是顺序语句。
4选择信号赋值是并行语句,不能用在Process中。
EDA技术与数字系统设计
22
第5章 VHDL硬件描述语言
用选择信号赋值语句实现四选一数据选择器。
ARCHITECTURE example6 OF mux41 IS
SIGNAL s: STD_LOGIC_VECTOR( 1 DOWNTO 0 );

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语句(并行)
在一个构造体中多个PROCESS 语句可以同时并 在一个构造体中多个 PROCESS语句可以同时并 行的执行,该语句有如下特点: 行的执行,该语句有如下特点: 1 、 可以和其它进程语句同时执行 , 并可以存取构造体 可以和其它进程语句同时执行, 和实体中所定义的信号 2、进程中的所有语句都按照顺序执行 3、 为启动进程 ,在进程中必须包含一个敏感信号表或 为启动进程, WAIT语句 WAIT语句 4、进程之间的通信是通过信号来实现的
D
WAIT语句 WAIT语句
WAIT WAIT ON WAIT UNTIL WAIT FOR 无限等待 敏感信号量变化 条件满足 时间到
WAIT 语句
格式: 信号[,信号 信号] 格式:WAIT ON 信号[,信号] 例: PROCESS BEGIN y<=a AND b; WAIT ON a,b; a,b; END PROCESS; PROCESS; 该例中的进程与下例中进程相同: 该例中的进程与下例中进程相ห้องสมุดไป่ตู้:
例: Architecture m2 of and2 is Signal tmp : std_logic_vector(1 down to 0); Begin tmp<=d1 & d2; With tmp select f<=’1’ when “11”, ‘0’ when others; End m2;
Architecture m2 of exam1 is begin process (a, b) begin c<=a and b; d<= a or b ; end process; end m2;
A B & C
≥1
D
Architecture m2 of exam1 is begin process begin c<=a and b; d<= a or b ; end process; end m2;

第5章 VHDL并行语句

第5章 VHDL并行语句

变化都将启动相关并行语句的赋值操作,而这种启动完全是独立于其他
语句的。
5.1 并行信号赋值语句
5.1.1.简单信号赋值语句
并行简单信号赋值语句是 VHDL并行语句结构的最基本的单元,它的语句 格式如下:
信号赋值目标<=表达式
式中信号赋值目标的数据对象必须是信号,它的数据类型必须与赋 值符号右边表达式的数据类型一致。
信号赋值操作:符号“<=”进行信号赋值操作 的,它可以用在顺序执行语句中,也可以用在 并行处理语句中 注意 1、用在并行处理语句中时,符号<=右边的值是 此条语句的敏感信号,即符号 <= 右边的值发生 变化就会重新激发此条赋值语句,也即符号 <= 右边的值不变化时,此条赋值语句就不会执行。 如果符号<=右边是常数则赋值语句一直执行。 2、用在顺序执行语句中时,没有以上说法。
VHDL 中不存在纯粹的并行行为和顺 并行语句在结构体中的使用格式如下: 序行为的语句。例如,相对于其他 ARCHITECTURE 结构体名 OF 实体名 IS 的并行语句,进程属于并行语句, 而进程内部运行的都是顺序语句。 说明语句; PROCESS结构中的顺序语句,其顺序 BEGIN 执行过程只是相对于计算机中的软 并行语句; 件行为仿真的模拟过程而言的,这 END ARCHITECTURE 结构体名; 个过程与硬件结构中实现的对应的 逻辑行为是不相同的。
选择信号赋值语句格式如下:
表达式WHEN选择值;
执行依赖于进程中敏感信号的改变而启动进程, 而且要求 CASE 语句中各子句的条件不能有重叠, 必须包容所有的条件。 选择信号语句中的敏感量为关键词 WITH旁的选 择表达式。当选择表达式的值发生变化时,就将 启动此语句对于各子句的选择值进行测试对比, 当发现有满足条件的子句的选择值时,就将此子 句表达式中的值赋给赋值目标信号。 与 CASE 语句相似,选择赋值语句对于子句条 件选择值的测试具有同期性,而条件信号赋值语 句是按照子句的书写顺序从上至下逐条测试的。 选择赋值语句不允许有条件重叠的现象,也 不允许存在条件涵盖不全情况。

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;

5-VHDL主要描述语句(并行语句)

5-VHDL主要描述语句(并行语句)
材料与能源学院微电子材料与工程系
第五章 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]

52VHDL基本描述语句

52VHDL基本描述语句
4)OTHERS只能出现一次,且只能作为最后一 个条件取值。
【例5-7】例5-2的四选一数据选择器的CASE 实现。实体略。
ARCHITECTURE archmux OF mux4 IS
BEGIN PROCESS(s , a0, a1, a2, a3 ) BEGIN
CASE s IS WHEN “00”=> y<=a0; WHEN “01”=> y<=a1; WHEN “10”=> y<=a2; WHEN OTHERS => y<=a3;
从综合的角度看,BLOCK语句没有实用价值。
格式:
块名:BLOCK [(表达式)] [块声明项;]
BEGIN 并行语句;
END BLOCK [块名];
注意:块名必须有。
【例5-4】8位数字比较器
ENTITY COMP IS PORT(
a,b: IN INTEGER RANGE 0 T0 255;
顺序语句:
执行按书写顺序进行
5.2.1 并行语句
进程语句 块语句 并行信号赋值语句 元件例化语句 生成语句 并行过程调用语句
1. 进程语句PROCESS
进程语句是个复合语句,由一段程序构成。
一个程序可以有多个进程,各个进程是并发执行 的,但进程内部的所有语句却都是顺序执行的。 多进程间的通信依靠信号来传递。
2. CASE_WHEN语句 ELSIF允许在一个语句中出现多重条件,但嵌套层
数不宜过多。在含有多个互不相关信号的条件时, 采用CASE_WHEN语句程序的可读性比较好。
对完成相同的逻辑功能,用CASE语句比用IF语句耗 用更多的硬件资源。
CASE语句属于顺序语句,必须放在进程中,
格式: CASE 表达式 IS

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)。

实验与设计
5-5 VGA彩条信号显示控制电路设计
实验与设计
5-5 VGA彩条信号显示控制电路设计
实验与设计
5-5 VGA彩条信号显示控制电路设计
实验与设计
5-5 VGA彩条信号显示控制电路设计
实验与设计
5-5 VGA彩条信号显示控制电路设计
5.1.6 全加器设计与例化语句应用
5.1 并行信号赋值语句
5.1.6 全加器设计与例化语句应用
5.1 并行信号赋值语句
5.1.7 生成语句
5.1 并行信号赋值语句
5.1.7 生成语句
5.1 并行信号赋值语句
5.1.7 生成语句
5.1 并行信号赋值语句
5.1.7 生成语句
5.1.8 GENERIC参数传递映射语句及其使用方法
实验与设计
5-1.8位加法器设计实验 5-2 高速硬件除法器设计
实验与设计
5-3 移位相加型8位硬件乘法器设计
实验与设计
5-4 基于VHDL代码的频率计设计
实验与设计
5-4 基于VHDL代码的频率计设计
实验与设计
5-5 VGA彩条信号显示控制电路设计
实验与设计
5-5 VGA彩条信号显示控制电路设计
5.2 VHDL运算操作符
5.2.1 逻辑操作符
5.2 VHDL运算操作符
5.2.1 逻辑操作符
5.2 VHDL运算操作符
5.2.2 关系操作符
“ = ”(等于) “/=”(不等于) “ >”(大于) “< ”(小于) “>=”(大于等于) “<=”(小于等于)
5.2 VHDL运算操作符
5.2.3 算术操作符
1. 信号类属性
2. 数据区间类属性
5.1 并行信号赋值语句
5.1.11 信号属性及属性函数 3. 数值类属性
5.1 并行信号赋值语句
5.1.11 信号属性及属性函数 3. 数值类属性
5.1 并行信号赋值语句
5.1.11 信号属性及属性函数 4. 数组类属性'LENGTH
5. 用户定义属性
5.2 VHDL运算操作符
5.2 VHDL运算操作符
1. 求和操作符
5.2 VHDL运算操作符
1. 求和操作符
5.2 VHDL运算操作符
1. 求和操作符
5.2 VHDL运算操作符
2. 求积操作符 *(乘) /(除) MOD(取模) RED(取余)
3. 符号操作符
4. 混合操作符
5.2 VHDL运算操作符
5. 移位操作符
第5章 VHDL并行语句
5.1 并行信号赋值语句
5.1.1 简单信号赋值语句
5.1 并行信号赋值语句
5.1.2 条件信号赋值语句
5.1 并行信号赋值语句
5.1.3 选择信号赋值语句
5.1 并行信号赋值语句
5.1.4 块语句
5.1 并行信号赋值语句
5.1.5 元件例化语句
5.1 并行信号赋值语句
5.2 VHDL运算操作符
5.2.4 省略赋值操作符
5.3 keep属性应用
5.4 SignalProbe使用方法
1. 按常规流程完成设计仿真和硬件测试 2. 设置SignalProbe Pins
3. 编译SignalProbe Pins测 试信息并下载测试
习题
5-4
实验与设计
5-1.8位加法器设计实验 5-2 高速硬件除法器设计
5.1.9 数据类型定义语句 3. 枚举型数据类型定义
5.1 并行信号赋值语句
5.1.9 数据类型定义语句 4. 枚举型子类型数据类型定义
5.1.10 VHDL的存储器描述
5.1 并行信号赋值语句
5.1 并行信号赋值语句
5.1.10 VHDL的存储器描述
5.1 并行信号赋值语句
5.1.11 信号属性及属性函数
5.1 并行信号赋值语句
5.1 并行信号赋值语句Байду номын сангаас
5.1.8 GENERIC参数传递映射语句及其使用方法
5.1 并行信号赋值语句
5.1.9 数据类型定义语句 1. 限定性数组型数据类型定义
5.1 并行信号赋值语句
5.1.9 数据类型定义语句 2. 非限定性数组型数据类型定义
5.1 并行信号赋值语句
5.2.1 逻辑操作符 逻辑操作符(Logical Operator) 关系操作符(Relational Operator)
算术操作符(Arithmetic Operator)
符号操作符(Sign Operator)
重载操作符(Overloading Operator)
5.2 VHDL运算操作符
5.2.1 逻辑操作符
相关文档
最新文档