单片机并行语句

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

A[0]
COMP INPUT OUTPUT
B[0]
A[1]
COMP INPUT OUTPUT
B[1]
A[7]
COMP INPUT OUTPUT

B[7]
主要的VHDL程序如下: … COMPONENT COMP IS PORT (X:IN STD_LOGIC;Y: OUT STD_LOGIC); END COMPONENT COMP; SIGNAL A,B:STD_LOGIC_VECTOR (0 TO 7); … GEN: FOR I IN A'RANGE GENERATE U1:COMP PORT MAP (X=> A(I), Y=>B(I)); END GENERATE GEN; …
六、VHDL语言的并行语句
1、并行信号赋值语句 2、条件信号赋值语句
3、块语句
结构体 4、进程语句
5、元件例化语句
6、生成语句
7、并行过程调用语句
ARCHITECTURE
条 件 生 信 成 信号 号 信号 语 赋 句 值 语 句
并 元 行 件 信 进 块 信号 例 信号 号 信号 程 信号 语 化 赋 语 句 语 值 句 句 语 句
IN1[0] IN1[1] IN1[2] IN1[3] CLR
NOT
AND4
ADDER41 A0 S0 A1 S1 A2 S2 A3 S3 B0 OR2 VCC 1 0
MUX42 A0 A1 A2 A3 Z0 B0 Z1 B1 Z2 B2 Z3 B3 S0
OUT1[0] OUT1[1] OUT1[2] OUT1[3]
S0=0: =>Z[3..0]=A[3..0] S0=1: =>Z[3..0]=B[3..0]
组合电路型十进制加法器CNT10综合后的RTL硬件结构图
一般用于组合电路进程模式
__进程标记:
PROCESS
(__信号名, __信号名, __信号名) VARIABLE __变量名 : STD_LOGIC; VARIABLE __变量名 : STD_LOGIC; BEGIN -- 指定信号 -- 指定变量 -- 过程调用 -- 如果语句 -- CASE语句 -- 循环语句 END PROCESS __进程标记;
2、条件信号赋值语句
赋值目标 <= 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE ... 表达式 ; 例 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 ; END;
A1 B1
A U1 C S1 B ND2 A U3 C B ND2 A U2 C S2 B ND2 Z1
C1 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; D1 ENTITY ORD41 IS PORT(A1,B1,C1,D1:IN STD_LOGIC; Z1:OUT STD_LOGIC); END ENTITY ORD41; ARCHITECTURE ARTORD41 OF ORD41 IS COMPONENT ND2 IS PORT(A,B:IN STD_LOGIC; C:OUT STD_LOGIC); END COMPONENT ND2; SIGNAL S1,S2:STD_LOGIC; BEGIN U1:ND2 PORT MAP (A1,B1,S1); U2:ND2 PORT MAP (A=>C1,C=>S2,B=>D1); U3:ND2 PORT MAP (S1,S2,C=>Z1); END ARCHITECTURE ARTORD41;
PROCESS语句特点
1. PROCESS为一无限循环语句
2. PROCESS语句具有顺序/并行运行双重性
3. 进程必须由敏感信号的变化来启动 4. 信号是多个进程间的通信线 5. 一个进程中只允许描述对应于一个时钟信号的同步时序 逻辑
例: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 data_out <= c; END IF; END PROCESS p_b; END ex;
3、块语句
块标号 : BLOCK [(块保护表达式)] 接口说明; 类属说明; BEGIN 并行语句; END BLOCK 块标号 ;
与大部分的VHDL语句不同,BLOCK语句的应 用,包括其中的类属说明和端口定义,都不会影响 对原结构体的逻辑功能的仿真结果。
例 ... b1 : BLOCK SIGNAL s1: BIT ; BEGIN S1 <= a AND b ; b2 : BLOCK SIGNAL s2: BIT ; BEGIN s2 <= c AND d ; b3 : BLOCK BEGIN Z <= s2 ; END BLOCK b3 ; END BLOCK b2 ; y <= s1 ; END BLOCK b1 ; ...
--位置关联方式 --名字关联方式 --混合关联方式
6、生成语句
生成语句有一种复制作用,在设计中,只要根据某 些条件,设定好某一元件或设计单位,就可以利用生成 语句复制一组完全相同的并行元件或设计单元电路结构。
[标号:] FOR 循环变量 IN 取值范围 GENERATE 说明; BEGIN 并行语句; END GENERATE [标号] ;
4、进程语句
PROCESS语句结构的一般表达格式如下
[进程标号: ] PROCESS [ ( 敏感信号参数表 ) ] [IS] [进程说明部分] BEGIN 顺序描述语句; END PROCESS [进程标号];
在一个结构体中多个PROCESS语句可以同时并发运 行,而进程内部语句之间是顺序关系。 PROCESS语句在VHDL程序中,是描述硬件并行工作 行为的最常用、最基本的语句。
7、并行过程调用语句
并行过程调用语句可以作为一个并行语句直接出现 在结构体或块语句中。并行过程调用语句的功能等效于 包含了同一个过程调用语句的进程。并行过程调用语句 的语句调用格式与前面讲的顺序过程调用语句是相同的。ቤተ መጻሕፍቲ ባይዱ
并 行 过 程 调 用 语 句
END ARCHITECTURE
结构体中的并行语句模块
1、并行信号赋值语句
赋值目标 = 表达式
例 ARCHITECTURE curt OF bc1 IS SIGNAL s1, e, f, g, h : STD_LOGIC ; BEGIN output1 <= a AND b ; output2 <= c + d ; g <= e OR f ; h <= e XOR f ; s1 <= g ; END ARCHITECTURE curt;
选择信号赋值语句
WITH 选择表达式 SELECT 赋值目标信号 <=表达式 WHEN 选择值, 表达式 WHEN 选择值, ..., 表达式 WHEN 选择值; 例 ... WITH selt SELECT muxout <= a WHEN 0|1 , -- 0或1 b WHEN 2 TO 5 , -- 2或3,或4或5 c WHEN 6 , d WHEN 7 , 'Z' WHEN OTHERS ; ...
上例的综合结果
例: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT(CLR: IN STD_LOGIC; IN1:IN STD_LOGIC_VECTOR(3 DOWNTO 0); OUT1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY CNT10; ARCHITECTURE ART OF CNT10 IS BEGIN PROCESS (IN1,CLR) IS BEGIN IF (CLR= ‘1’ OR IN1= "1001") THEN OUT1<="0000"; --有清零信号,或计数已达9,OUT1输出0 ELSE --否则作加1操作 OUT1<=IN1+1; --注意,使用了重载算符"+",重载算符"+"是在库 ENG IF; --STD_LOGIC_UNSIGNED中预先声明的 END PROCESS; END ARCHITECTURE ART;
5、元件例化语句
元件例化就是将预先设计好的设计实体定义为一个元 件,然后利用特定的语句将此元件与当前的设计实体中的 指定端口相连接,从而为当前设计实体引入一个新的低一 级的设计层次。 元件定义(声明)语句 COMPONENT 元件名 IS GENERIC (类属表); -- 元件定义语句 PORT (端口名表); END COMPONENT 文件名; 元件例化语句 例化名 :元件名 PORT MAP( -- 元件例化语句 [端口名 =>] 连接端口名,...) ;
用于时序电路进程模式

__进程标记: PROCESS (__信号名, __信号名, __信号名) VARIABLE __变量名 : STD_LOGIC; VARIABLE __变量名 : STD_LOGIC; BEGIN WAIT UNTIL __时钟信号 = ‘1’; 或 CLK 'event and CLK='1' -- 指定信号 -- 指定变量 -- 过程调用 -- 如果语句 -- CASE语句 -- 循环语句 END PROCESS __进程标记;
PROCESS 组成
PROCESS语句结构
进程说明 信 号 赋 值 语 句 变 量 赋 值 语 句
顺序描述语句 进 程 启 动 语 句
敏感信号参数表 顺 序 描 述 语 句
子 程 序 调 用 语 句
进 程 跳 出 语 句
说明
(1) 进程说明部分主要定义一些局部量,可包括数据 类型、常数、属性、子程序等。但需注意,在进程说 明部分中不允许定义信号和共享变量。 (2) 顺序描述语句部分可分为赋值语句、进程启动语 句、子程序调用语句、顺序描述语句和进程跳出语句 等。 (3)为启动进程,在进程中必须包含有一个显式的敏感 信号量表或者包含一个WAIT语句;敏感信号表应当紧 跟在PROCESS之后,含有敏感信号表的进程语句中不 允许再显式出现WAIT语句。
例:利用元件例化语句设计如下所示电路
A1 B1
A U1 C S1 B ND2 A U3 C B ND2 A U2 C S2 B ND2 Z1
C1 D1
例:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ND2 IS PORT(A,B:IN STD_LOGIC; C:OUT STD_LOGIC); END ENTITY ND2; ARCHITECTURE ARTND2 OF ND2 IS BEGIN C<=A NAND B; END ARCHITECTURE ARTND2;
: 生成语句的两种形式
[标号:] IF 条件 GENERATE 说明; BEGIN 并行语句; END GENERATE [标号] ;
取值范围
表达式 TO 表达式 ; -- 递增方式,如1 TO 5 表达式 DOWNTO 表达式 ; -- 递减方式,如5 DOWNTO 1
例:利用生成语句产生的八个相同的电路模块
相关文档
最新文档