2.2 并行语句与顺序语句

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
并行语句与顺序语句
顺序语句和并行语句是VHDL程序设计中两大描述语句系列。 顺序语句相对于并行语句而言,其语句特点是:每一条顺序 语句的执行顺序与书写顺序基本一致。顺序语句只能出现在进程 和子程序中。 并行语句在结构体中的执行是同步的,其执行方式与书写顺 序无关。结构体中的并行语句主要有几种。 并行语句和顺序语句不是互相独立存在的。例如,相对于其 它并行语句,进程语句属于并行语句,而进程内部运行的是顺序 语句。
第一部分语句是元件定义语句,相当于对一个现成的设计 实体进行封装,使其只留出对外的接口界面。就像一个集成芯 片只留几个引脚在外面一样。
第二部分语句为元件例化语句,例化名相当于标在当前系 统(电路板)中的插座名称,而元件名则是准备在此插座上插 入的、已定义好的元件名称。 PORT MAP是端口映射的意思, 将元件定义语句中的信号表名与当前系统插座上各插针的引脚 名相连。
y <= a(0) WHEN add="00" ELSE a(1) WHEN add="01" ELSE a(2) WHEN add="10" ELSE a(3);
end a;
选择信号赋值语句
选择信号赋值语句 语句格式:
WITH 选择表达式 SELECT 赋值目标信号<=表达式 WHEN 选择值, 表达式 WHEN 选择值, 表达式 WHEN 选择值;
块语句功能:结构体的子模块,系统的局部电路。
block语句格式: [块标号:]block
用于信号的映 射、参数定义
[块头]
[说明语句];
begin [并行语句]
与结构体的说 明语句相同
end block[块标号];
block语句应用举例:
块语句
... b1 : BLOCK
SIGNAL s1: BIT ; BEGIN S1 <= a AND b ; b2 : BLOCK SIGNAL s2: BIT ; BEGIN s2 <= c AND d ; b3 : BLOCK BEGIN
并行语句
结构体中的并行语句可以是行为描述也可以是结构描述, 经常用到的并行语句有:
1. 进程语句 2. 信号赋值语句 3. 块语句 4. 元件例化语句 5. 生成语句 6. 并行过程调用语句
进程语句 进程语句的格式: [进程标号: ] PROCESS [ ( 敏感信号参数表 ) ] IS
[进程说明部分] BEGIN
并行语句----元件例化 Component Instantiations
• 元件例化即指元件的调用 • 元件例化就是引入一种连接关系,将预先设计好的设
计实体定义为一个元件,然后用端口映射语句将此元 件与当前设计实体中的指定端口相连。 • 两部分:元件声明 component
端口映射 port map • 端口映射的两种方式:位置关联法和名称关联法
顺序描述语句 END PROCESS [进程标号]; 综合后的进程语句对应的硬件逻辑:可能是组合逻辑也 可能是时序逻辑,取决于进程内的语句描述。
进程语句 启动进程的信号名
PROCESS语句结构 定义局部量,不允许定义信号和共享变量
进程说明
顺序描述语句
敏感信号参数表
信 号 赋 值 语 句
变 量 赋 值 语 句
元件例化可以以不同的形式出现。元件例化意味着在当前 结构体内定义了一个新的设计层次,这个设计层次的总称叫元 件。该元件可以是已设计好的一个VHDL设计实体;可以是来自 FPGA元件库中的元件;可以是以其它硬件描述语言 Verilog设 计的实体;元件还可以是软IP核,或者是嵌入式硬IP核。
元件例化语句格式如下:
语句属性 用途
With-select- When-else when
一个信号的不 多个信号多 同值,互斥 种组合,不
必互斥
并行
并行
编码、译码、 优先编码 多路选择器 器,地址译
码器
If-else Case-when
多个信号 一个信号的 多种组 不同值,互 合,不必 斥 互斥
顺序
顺序Baidu Nhomakorabea
优先编码 编码、译码、 器,地址 多路选择器 译码器 状态机
1位二进制全加器的VHDL设计
半加器h_adder逻辑功能真值表
ab 00 01 10 11
so co 00 10 10 01
全加器f_adder电路图
元件描述
LIBRARY IEEE ;--或门逻辑描述
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY or2a IS
PORT (a, b :IN STD_LOGIC;
Z <= s2 ; END BLOCK b3 ; END BLOCK b2 ; y <= s1 ; END BLOCK b1 ; ...
元件例化语句 元件例化语句(参考教材)
元件例化引入了一种连接关系。将预先设计好的设计实体 认为是一个元件,然后利用特定的语句将该元件与当前的设计 实体中的指定端口相连接,为当前设计实体引入一个低一级的 设计层次。
简单信号赋值语句
并行信号赋值语句
简单信号赋值语句是VHDL并行语句结构的最基本的单元。
语句格式:赋值目标<=表达式
注意的问题:赋值目标的数据对象必须是信号,其数据类型
与赋值符号右边表达式的数据类型一致。
应用举例:
ARCHITECTURE ct OF aa IS SIGNAL yout : STD_LOGIC_VECTOR(5 DOWNTO 1); BEGIN
c : OUT STD_LOGIC ); END ENTITY or2a;
ARCHITECTURE one OF or2a IS
BEGIN
LIBRARY IEEE; --半加器描述(1)
c <= a OR b ;
USE IEEE.STD_LOGIC_1164.ALL;
END ARCHITECTURE fu1;
Instruction<=d&c&b&a;
选择信号赋值语句
WITH instruction SELECT
dataout<="0000001"WHEN "0000",
"1001111" WHEN "0001",
"0010010" WHEN "0010",
"0000110" WHEN "0011",
"1001100" WHEN "0100",
注意的问题:
(1)赋值条件的数据类型是布尔量,当它为真时表示满足 赋值条件。
(2)执行条件信号语句时,每一赋值条件是按书写的先后 关系逐项测定,一旦发现赋值条件=TRUE,立即将表达式的值 赋给赋值目标变量。
(3)条件赋值语句中的ELSE不可省略。
(4)最后一项表达式可以不跟条件语句,表示以上各条件 都不满足时,则将此表达式赋给赋值目标信号。
end entity; architecture a of mux42 is begin with add select
y <= a(0) WHEN "00" , a(1) WHEN "01" , a(2) WHEN "10" , a(3) WHEN "11" ;
end a;
选择信号赋值语句 应用举例:用选择信号赋值语句描述七段译码器的功能。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY decoder4_7 IS
进 程 启 动 语 句
子 程 序 调 用 语 句
顺 序 描 述 语 句
进 程 跳 出 语 句
进程语句
进程语句应用时应注意的问题: 1.进程语句中所有语句属于顺序语句,但同一结构体的不
同进程之间是并行运行,各进程根据敏感信号独立运行。 2.信号是多个进程之间并行联系的通信线,进程的说明部
分不能定义信号。 3.进程必须由敏感信号的变化启动,否则必须有一个WAIT
PORT(a,b,c,d:IN STD_LOGIC; dataout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END; ARCHITECTURE con OF decoder4_7 IS SIGNAL instruction: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
条件信号赋值语句 应用举例:用条件赋值语句描述四选一数据选择器的功能。 entity mux41 is
port(a:in bit_vector(3 downto 0); add:in bit_vector(1 downto 0); y:out bit);
end entity; architecture a of mux41 is begin
元件例化语句
component 元件名
generic 说明;
port 说明;
end component;
[例化名:] 元件名 port map (信号映射);
第一部分是对一个现成的设计实体定义为一个元件;
第二部分是元件与当前设计实体中的连接说明。
元件例化语句
以上两部分语句在元件例化中都是必须存在的。
yout(1) <= a AND b; yout(2) <= c + d; yout(3) <= e OR f; yout(4) <= e XOR f; yout(5) <= c - d;
END ct; 结构体中的五条信号赋值语句的执行是并行发生的。
条件信号赋值语句
条件信号赋值语句 语句格式:赋值目标<=表达式1 WHEN 赋值条件1 ELSE 表达式2 WHEN 赋值条件2 ELSE ---- --表达式n;
语句来激励进程。
并行信号赋值语句
并行信号赋值语句的三种形式 简单信号赋值语句;条件信号赋值语句和选择信号赋值语句。
三种信号赋值语句的共同点: 1.赋值目标都是信号,在结构体内的执行是同时发生的,与
书写顺序无关。 2.每一条信号赋值语句都相当于一条缩写的进程语句,而这
条语句的所有输入信号都被列入缩写进程的敏感信号表中。因 此,任何信号的变化都将启动相关并行语句的赋值操作,这种 启动独立于其它语句,可以直接出现在结构体中。
begin
u1: na2 port map (set, nq, q);
u2: na2 port map (q,reset,nq); --位置映射
end netlist;
rsff.vhd的综合电路:
元件例化语句 元件例化可以是多层次。在一个设计实体中被调用的元件 本身也可以是一个低层次的当前设计实体,因而可以调用其它 的元件,以便构成更低层次的电路元件。
(3)选择信号赋值语句的每一子句结尾是逗号,最后一句是分号。
选择信号赋值语句 应用举例:用选择信号赋值语句描述四选一数据选择器的功能。 entity mux42 is
port(a:in bit_vector(3 downto 0); add:in bit_vector(1 downto 0); y:out bit);
注意的问题:
选择信号赋值语句
(1)选择信号赋值语句不能在进程中应用,选择信号语句的敏 感量是WITH后面的选择表达式,每当选择表达式的值发生变化 时,启动该语句,有满足条件的子句时,就将该子句表达式中的 值赋给目标信号。
(2)选择赋值语句对子句条件选择值的测试具有同期性,按子 句的书写顺序从上至下逐条测试。选择赋值语句不允许有条件重 叠的现象或条件涵盖不全的情况。
当前设计实体相当于一个较大的电路系统,所定义的例化 元件相当于一个要插在这个电路系统上的芯片,而当前设计实 体中指定的端口相当于这个电路系统上准备接受该芯片的一个 插座。元件例化是使VHDL设计实体构成自上而下层次化设计的 一种重要途径。
元件例化语句 应用举例:用元件例化语句描述与非门构成的基本RS触发器。
"0100100" WHEN "0101",
"0100000" WHEN "0110",
"0001111" WHEN "0111",
"0000000" WHEN "1000",
"0001100" WHEN "1001",
"ZZZZZZZ" WHEN OTHERS;
END con;
几种语句的比较
语句 选择条件
entity rsff is
port (set, reset: in bit;
q, nq: inout bit);
end rsff;
architecture netlist of rsff is
component na2
--元件说明
port (a,b: in bit; c:out bit);
end component;
相关文档
最新文档