工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

VHDL的并行行为

作者:dolphin时间:2011-05-03

VHDL的并行行为

在VHDL中,结构体的内部没有规定语句的次序,执行的次序仅由对语句中的敏感信号发生的事件决定,且语句是同时执行产生其并行性。   

并行幅值语句   选择信号赋值语句   复杂赋值语句

并行赋值语句

对象 = 表达式

每当表达式的信号值变化时执行该语句。每个表达式至少有一个敏感信号,每当敏感信号改变其值时,这个信号赋值语句就执行。

在所有的并行语句中,两个以上的并行赋值语句在字面上的顺序并不表明它们的执行顺序,例如下面的两个结构体在功能上是等价的。

例14:

  ENTITY exe IS
PORT(a1,a2:IN BIT; b1,b2:OUT BIT);
END exe; 实体
   ARCHITECTURE exe_arc1 OF exe IS
BEGIN
b1 = a1 AND a2;
b2 = NOT a1 OR a2;
END exe_arc1; 结构体1
ARCHITECTURE exe_arc2 OF exe IS
  BEGIN
   b2 = NOT a1 OR a2;
    b1 = a1 AND a2;
  END exe_arc2; 结构体2


--------------------------------------------------------------------------------


选择信号赋值语句 回页首

它们的每一个赋值语句都需要给出一个表达式,同时给出与该表达式的每个可能值相关联的信号,选择信号赋值语句的一般形式如下:

WITH 表达式 SELECT
      对象 = 信号1 WHEN 分支1 ,
       信号2 WHEN 分支2 ,
              ┇
        信号n WHEN 分支n ;

用一个典型的四路数据选择器的VHDL程序说明WITH一般形式的用法,实体产生的符号如图8-6所示。

例15:四选一数据选择器

ENTITY sels IS
 PORT(d0,d1,d2,d3:IN BIT;
s :INTEGER RANGE 0 TO 3;
       out1 :OUT BIT);
 END sels;

ARCHITECTURE sels_arc OF sels IS
BEGIN
WITH s SELECT
  out1 = d0 WHEN 0,
     d1 WHEN 1,
     d2 WHEN 2,
     d3 WHEN 3;
END sels_arc;


此例是一个六输入端口和一个输出端口的模块,四个输入是逻辑类型,两个输入是整数类型,程序对s敏感,判断s值后将d0、d1、d2或d3送到输出out1。

注:选择信号S提供四种选择,因此应是两位二进制代码,因此用粗线表示。


--------------------------------------------------------------------------------


复杂赋值语句
例16:

  仍以四路数据选择器为例,图8-7示出此例的四输入数据选择器的符号,四输入数据选择器的第二个VHDL程序如下:

LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY mux4 IS
 PORT(I0,I1,I2,I3,A,B:IN std_logic;
        Q :OUT std_logic);
END mux4;


ARCHITECTURE mux4_arc OF mux4 IS
  SIGNAL sel :INTEGER ;
   BEGIN
   Q =I0 AFTER 10 ns WHEN sel= 0 ELSE
  I1 AFTER 10 ns WHEN sel= 1 ELSE
 I2 AFTER 10 ns WHEN sel= 2 ELSE
 I3 AFTER 10 ns ;
   sel =0 WHEN A= ‘0’ AND B= ‘0’ ELSE
   1 WHEN A= ‘1’ AND B= ‘0’ ELSE
  2 WHEN A= ‘0’ AND B= ‘1’ ELSE


关键词: 并行 行为

评论

技术专区