第三章 并发语句_第1页
第三章 并发语句_第2页
第三章 并发语句_第3页
第三章 并发语句_第4页
第三章 并发语句_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、并行语句并行语句第第 三三 章章生生成成语语句句条条件件信信号号赋赋值值语语句句元元件件例例化化语语句句并并行行信信号号赋赋值值语语句句块块语语句句进进程程语语句句并并行行过过程程调调用用语语句句信号信号信号信号信号信号信号信号信号信号信号信号Concurrent Signal Assignment -并行信号赋值语句并行信号赋值语句Component instantiations -元件例化语句元件例化语句Process -进程语句进程语句Concurrent Procedure Call -并发过程调用语句并发过程调用语句Block -块语句块语句ASSERT-并行断言语句并行断言语句Ge

2、nera-生成语句生成语句(硬件的拷贝硬件的拷贝)VHDL语言是并行处理语言,能够进行并行处理的语言是并行处理语言,能够进行并行处理的语句有:语句有:ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 说明语句;说明语句; BEGIN 并行语句;并行语句;END ARCHITECTURE 结构体名;结构体名;并行语句在结构体中的使用格式如下:并行语句在结构体中的使用格式如下:进程语句最具有进程语句最具有VHDLVHDL语言特色。提供了一种用算语言特色。提供了一种用算法描述硬件行为的方法。特点:法描述硬件行为的方法。特点:(1) (1) 进程的进程的。(2) (2) 进程内部的

3、进程内部的顺序性顺序性。(3) (3) 进程启动由进程启动由ProcessProcess后的后的敏感信号敏感信号来触发,来触发, 也可用也可用WAITWAIT语句语句等待等待一个触发条件一个触发条件的成立。的成立。(4) (4) 各进程之间的通信是由各进程之间的通信是由信号信号来传递的。来传递的。 (5) (5) 进程的进程的启动启动和和挂起挂起。3.5.1 进程进程Process语句语句并行语句process并行语句process并行语句process信号信号信号信号信号信号进程名:进程名:PROCESS(敏感信号表敏感信号表)IS 进程说明部分:变量说明语句进程说明部分:变量说明语句; B

4、EGIN 顺序描述语句;顺序描述语句; END PROCESS 进程名进程名;敏感信号表:敏感信号表:进程内要读取的所有敏感信号进程内要读取的所有敏感信号(包括端包括端口口)的列表。每一个敏感信号的变化都将启动进程。的列表。每一个敏感信号的变化都将启动进程。 格式:格式:信号信号 ,信号,信号P1:PROCESS (clk)BEGINIF (clk EVENT AND clk=1) THEN q Z3.0=B3.0S0=0: =Z3.0=A3.0组合电路型十进制加法器组合电路型十进制加法器CNT10综合后的综合后的 RTL硬件结构图硬件结构图 (增加了增加了D触发器触发器)B0CLRQ0D00

5、Q0D0FD11Q0D0FD11Q0D0FD11FD11MUX42A3A2A1A0VCC 1ADDER41OR2AND4NOTS0=1: =Z3.0=B3.0S0=0: =Z3.0=A3.0CLKS3S2S1S0S0B3B2B1B0A3A2A1A0Z3Z2Z1Z0OUT10OUT11OUT12OUT13用用进进程程实实现现组组合合逻逻辑辑电电路路entity counter is port(clear: in bit; in_count: in integer range 0 to 9; out_count: out integer range 0 to 9);end counter;arch

6、itecture rt1 of counter isbegin process(in_count,clear) begin if(clear=1 or in_count=9)then out_count=0; else out_count=in_count+1; end if; end process;end rt1;用进程实现用进程实现时序逻辑电路时序逻辑电路entity counter is port(clear ,clock : in bit; count: buffer integer range 0 to 9);end counter;architecture rt1 of coun

7、ter isbegin process begin wait until (clockevent and clock=1); if(clear=1 or in_count=9)then out_count=0; else out_count=in_count+1; end if; end process;end rt1;定义:定义:给一个信号赋值,即为该信号创建一个驱动给一个信号赋值,即为该信号创建一个驱动器(驱动信号)。多个进程或并发语句给同一个信器(驱动信号)。多个进程或并发语句给同一个信号赋值,则该信号为号赋值,则该信号为多信号源驱动多信号源驱动。功能:功能:在同一条线上的在同一条线上的

8、不同时刻不同时刻内传输不同的信息内传输不同的信息三态缓冲器总线结构与三态缓冲器总线结构与多驱动信号多驱动信号BUS_OUTC_OUTENCOT11B_OUTENBOT11BCA_OUTENAOT11APROCESS (A_OUT) ISBEGIN BUS_OUT =A_OUT;END PROCESS;PROCESS (B_OUT) ISBEGIN BUS_OUT =B_OUT;END PROCESS;PROCESS (C_OUT) ISBEGIN BUS_OUT =C_OUT;END PROCESS;块块(Block)(Block)可看作结构体中可看作结构体中,将一系列并行描,将一系列并行描述

9、语句进行组合,可改善可读性,使得结构体中的述语句进行组合,可改善可读性,使得结构体中的并行语句层次、结构鲜明。并行语句层次、结构鲜明。3.5.2 块块(Block)语句语句1. 格式如下:格式如下: 块标号:块标号:Block(块块保护表达式保护表达式) 块说明项块说明项 BEGIN 并行语句并行语句 END Block块标号块标号;地位:块语句的使用不影响逻辑功能地位:块语句的使用不影响逻辑功能描述一:描述一:a1:out1=1 after 2ns; a2:out2=1 after 2ns; a3:out3=1 after 2ns;描述二:描述二:a1:out1=1 after 2ns; b

10、lk:block begin a2:out2=1 after 2ns; a3:out3=1 after 2ns; end block blk;以下两种描述结果相同以下两种描述结果相同2 2、嵌套块的应用、嵌套块的应用两个独立的两个独立的2输入与门输入与门 B1:block signal s: bit begin s=a and b; B2:block signal s: bit s=a and c; B3:block begin z=s; end block B3; end block B2; y=s; end block B1;子块声明与父块声明同名时,子块声明,将忽略父块声明子块声明与父块

11、声明同名时,子块声明,将忽略父块声明BCDAZY采用采用BLOCK语句描述二选一电路语句描述二选一电路4.卫式卫式(Guarded)块块由保护表达式的值决定真、假块语句的执行与否。由保护表达式的值决定真、假块语句的执行与否。entity eg1 is port(a: in bit; z:out bit); end eg1;architecture rt1 of eg1 is begin guarded_block: block (a=1) begin z=1when guard else end block;end rt1;综合不支持综合不支持(1) 简单信号简单信号赋值赋值语句语句 (CON

12、CURRENT SIGNAL ASSIGNMENT)(2) 条件信号条件信号赋值赋值语句语句 (CONDITIONAL SIGNAL ASSIGNMENT)(3) 选择信号选择信号赋值赋值语句语句 (SELECTIVE SIGNAL ASSIGNMENT)3.5.3 并行信号赋值语句分并行信号赋值语句分3种类型:种类型:共同特点:共同特点:1、赋值目标必须是、赋值目标必须是信号信号,与其它并发语句同时执行,与其它并发语句同时执行,与书写及是否在块语句中无关。与书写及是否在块语句中无关。2、每一信号、每一信号赋值语句赋值语句等效等效与一个与一个进程语句进程语句。所有所有输入信号的变化输入信号的变

13、化都将启动该语句的执行都将启动该语句的执行书写格式为:书写格式为:信号信号=表达式;表达式;1)简单信号赋值简单信号赋值语句语句一个简单信号赋值语句相当于一个进程语句的缩写一个简单信号赋值语句相当于一个进程语句的缩写两种表达式完全等同两种表达式完全等同ARCHITECTURE rt1 OF m4 ISBEGINy=a and b;END rt1;ARCHITECTURE rt1 OF m4 ISBEGINprocess(a,b)beginy=a and b;end process;END rt1;两种表达式等效两种表达式等效LIBRARY ieee;USE ieee.std_logic_116

14、4.all;ENTITY ex IS PORT(a,b: IN STD_LOGIC; y:OUT STD_LOGIC);END ex2;ARCHITECTURE r1 OF ex ISSIGNAL c: STD_LOGICBEGIN c=a and b; y=c;END r1;LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex2 IS PORT(a,b: IN STD_LOGIC; y:OUT STD_LOGIC);END ex2;ARCHITECTURE rt1 OF ex ISSIGNAL c: STD_LOGICBEGIN process

15、1:PROCESS(a,b) BEGIN c=a and b;END PROCESS process1;process2:PROCESS(c)BEGIN y=c;END PROCESS process2;END rt1;两种表达式两种表达式不不等效等效LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex2 IS PORT(a,b: IN STD_LOGIC; y:OUT STD_LOGIC);END ex2;ARCHITECTURE r1 OF ex ISSIGNAL c:STD_LOGICBEGIN c=a and b; y=c;END r1;

16、LIBRARY ieeeLIBRARY ieee; ;USE ieee.std_logic_1164.all;USE ieee.std_logic_1164.all;ENTITY ex2 ISENTITY ex2 IS PORT(a,b PORT(a,b: IN STD_LOGIC;: IN STD_LOGIC; y:OUT y:OUT STD_LOGIC); STD_LOGIC);END ex2;END ex2;ARCHITECTURE r1 OF ex ISARCHITECTURE r1 OF ex ISBEGINBEGINSIGNAL c:STD_LOGIC process1:PROCE

17、SS(a,b,c)process1:PROCESS(a,b,c) BEGIN BEGIN c=a and b;c=a and b; y=c; y=c;END PROCESS process1;END PROCESS process1;END r1;END r1;(Conditional Signal Assignment)(Conditional Signal Assignment)属于并发描述语句的范畴,可以根据不同的条件将不同的表属于并发描述语句的范畴,可以根据不同的条件将不同的表达式的值代入目标信号。达式的值代入目标信号。书写格式为:书写格式为:目标信号目标信号=表达式表达式1 WHEN

18、条件条件1 ELSE 表达式表达式2 WHEN条件条件2 ELSE . 表达式表达式n-1 WHEN条件条件n-1 ELSE 表达式表达式n ;例:四选一电路例:四选一电路LIBRARY ieee;USE ieee.std_logic_1064.allENTITY mux4 IS PORT(input : IN std_logic_vector(3 DOWNTO 0); sel: IN std_logic_vector(1 DOWNTO 0); y: OUT std_logic);END mux4;ARCHITECTURE rt1 OF mux4 ISBEGIN y = input(0) WH

19、EN sel=00 ELSE input(1) WHEN sel=01 ELSE input(2) WHEN sel=10 ELSE input(4) ;END rt1;input3.0sel1.0y条件信号赋值语句与进程中的多选择条件信号赋值语句与进程中的多选择IF语句语句等价等价(功能上功能上):q=a WHEN sela=1 ELSE b WHEN selb=1 ELSE c;PRCESS(sela, selb,a,b,c)BEGINIF sela=1 THEN q=a;ELSIF selb=1 THEN q=b;ELSE q=c;END PROCESS;WITH 表达式表达式 SELE

20、CT目标信号目标信号 表达式表达式1 WHEN 条件条件1 , 表达式表达式2 WHEN 条件条件2, 表达式表达式3 WHEN 条件条件3, 表达式表达式n WHEN 条件条件n;1)不能有不能有重叠的条件分支重叠的条件分支.2)最后条件可为最后条件可为others ,否则其它条件必须能包含表达式的否则其它条件必须能包含表达式的 所有可能值所有可能值3)选择信号代入语句与进程中的选择信号代入语句与进程中的case语句等价语句等价例:四选一电路例:四选一电路LIBRARY ieee;USE ieee.std_logic_1064.allENTITY mux4 IS PORT(input : I

21、N std_logic_vector(3 DOWNTO 0); sel: IN std_logic_vector(1 DOWNTO 0); y: OUT std_logic);END mux4;ARCHITECTURE rt1 OF mux4 ISBEGIN WITH sel SELECT y = input(0) WHEN 00 , input(1) WHEN 01 , input(2) WHEN 10 , input(4) WHEN 11 , X WHEN OTHERS ;END rt1;input3.0sel1.0y选择信号赋值语句与选择信号赋值语句与进程中进程中的多选择的多选择CASE

22、语语句等价句等价:WITH sel SELECTq q q q q=d; END CASE;END PROCESS;DECODERBCADATA1DATAOUTDATA2简单的指令译码器简单的指令译码器LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;ENTITY decoder IS PORT(a,b,c: IN std_logic; data1,data2: in std_logic; dataout: out std_logic);END decoder;ARCHITECTURE art OF

23、 decoder IS SIGNAL ins:std_logic_vector(2 downto 0);BEGIN ins=c&b&a; WITH ins SELECT dataoutb)THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; END packexp;USE WORK packexp.ALL;ENTITY exp IS PORT(.);END exp;ARCHITECTURE behav OF exp ISBEGIN out=max(dat1,dat2);-赋值语句中并行函数赋值语句中并行函数 PROCESS(dat3,d

24、at4) BEGIN out4) ; port map(x1,y1,z1,carry1);元件例化语句元件例化语句(元件声明和元件声明和元件调用元件调用)例化名称:例化名称:元件名称元件名称 generic map (类属名称类属名称=表达式表达式; ,类属名称类属名称=表达式表达式) ; port map (端口名称端口名称=当前端口或者信号当前端口或者信号; ,端口名称端口名称=当前端口或者信号当前端口或者信号) ;元件调用定义:元件调用定义:把把低层元件低层元件安装(调用)到安装(调用)到当前层次当前层次设计实体内部的过程。设计实体内部的过程。 包括:包括:类属参数传递类属参数传递(映射

25、映射)、元件端口映射元件端口映射。 port map(低层次低层次端口名端口名=当前层次当前层次端口名,端口名,.).); 例:例: or2 port map(o=n6, i1=n3,i2=n1); port map(当前层次当前层次端口名端口名, ,当前层次当前层次端口名,端口名,.).);例:例:or2 port map(n3,n1,n6);注:位置关联方式中,例化的端口表达式(信号)注:位置关联方式中,例化的端口表达式(信号) 必须与元件声明语句中的端口必须与元件声明语句中的端口顺序一致顺序一致。一个低层次设计在被调用前必须有一个元件声明一个低层次设计在被调用前必须有一个元件声明.ENT

26、ITY exam is PORT(ea,eb:IN BIT_VECTOR(3 DOWNTO 0); ey: OUT BIT_LOGIC);END exam;ARCHITECTURE exam_arch OF exam IS BEGIN END exam_arch;u1: compare PORT MAP(ea,eb,ey); -元件调用元件调用COMPONENT compare PORT(a:IN BIT_VECTOR(3 DOWNTO 0); b:IN BIT_VECTOR(3 DOWNTO 0); y: OUT BIT); END COMPONENT; -元件声明元件声明ORD41逻辑原理

27、图逻辑原理图 A1U1U2Z1U3B1C1D1ABABABCCCS1S2ND2ND2ND2LIBRARY 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 CC1,C=S2,B=D1); -名字关联方式名字关联方式 U3:ND2 PORT MAP (S1,S2,C=Z1); -混合关联方式混合关联方式END ARCHITECTURE ARTORD41;4位移位寄存器位移位

28、寄存器4位移位寄存器由位移位寄存器由四个四个结构相同的结构相同的DFF组成组成,对应对应的元件例化语句如下的元件例化语句如下:clkabENTITY shift IS port( a ,clk:IN BIT; b:OUT BIT);END shift;architecture gen_shift of shift is component dff port(d,clk:in BIT; g: out BIT); end component; SIGNAL X: BIT_VECTOR(0 TO 4);BEGINX(0) = a; ba(i),y=b(i);end generate gen;clka

29、barchitecture gen_shift of shift is component dff port(d,clk:in BIT; q: out BIT); end component;signal x: std_logic_VECTOR(0 to 4);beginx(0) =a; b=x(4);register1:for i in 0 to 3 generateUx: dff port map(x(i),clk,x(i+1);end generate; end architecture; 4位位移移位位寄寄存存器器architecture gen_shift of shift is c

30、omponent dff port(d,clk:in BIT; g: out BIT); end component;X(0) = a; b=X(4) U0:dff PORT MAP (X(0),clk,X(1); U1:dff PORT MAP (X(1),clk,X(2); U2:dff PORT MAP (X(2),clk,X(3); U3:dff PORT MAP (X(3),CLK,X(4);end architecture ;clkab4位移位寄存位移位寄存器等效描述器等效描述条件表达式条件表达式8 bit 并串转换器并串转换器52346170523461708 bit 8 bit

31、 并串转换器并串转换器( (续续) )8 bit 并串转换器仿真结果并串转换器仿真结果SN74373的内部逻辑结构的内部逻辑结构 OENLATCHLATCHLATCHLATCHLATCHLATCHLATCHLATCHQQQQQQQQQQQQQQQQENADDENADDDENADDENADDENADDENADDENADDENADGD8D7D6D5D4D3D2D1OT11OT11OT11OT11OT11OT11OT11Q8Q7Q6Q5Q4Q3Q2Q1OT11LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SN74373 IS PORT (D:IN S

32、TD_LOGIC_VECTOR(8 DOWNTO 1);OEN:IN STD_LOGIC; G:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 1);END ENTITY SN74373;ARCHITECTURE ONE OF SN74373 ISCOMPONENT LATCH IS PORT(D,ENA:IN STD_LOGIC; Q:OUT STD_LOGIC );END COMPONENT LATCH;SN74373的逻辑描述的逻辑描述SIGNA S1:STD_LOGIC_VECTOR (8 DOWNTO 1);BEGINGELATCH:FOR

33、NO IN 1 TO 8 GENERATE LATCHX:LATCH PORT MAP(D(NO),G,S1(NO);END GENERATE GELATCH;Q=S1 WHEN OEN=0 ELSE “ZZZZZZZZ”;END ARCHITECTURE ONE;ARCHITECTURE TWO OF SN74373 IS SIGNA S2:STD_LOGIC_VECTOR(8 DOWNTO 1);BEGINPROCESS(D, OEN,G) ISBEGINIF OEN=0 THEN Q=S2; ELSEQ=ZZZZZZZZ;END IF; IF G=1THEN S2实参表达式实参表达式 ,

34、形参名形参名=实参表达式实参表达式; PACKAGE packexp IS -定义程序包定义程序包 FUNCTION max (a,b: IN BIT) RETURN BIT;END packexp;PACKAGE BODY packexp IS FUNCTION max(a,b:IN BIT)RETURN BIT ISBEGIN IF (ab)THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; END packexp;-函数首函数首-函数体函数体USE WORK.packexp.ALL;ENTITY p IS PORT(dat1,d

35、at2,dat3,dat4: in bit; out1,out2: out bit);END p;ARCHITECTURE behav OF p ISBEGIN out1=max(dat1,dat2);-赋值语句中并行函数赋值语句中并行函数 PROCESS(dat3,dat4) BEGIN out2=max(dat3,dat4); -顺序函数调用语句顺序函数调用语句 END PROCESS;END behav; ENTITY func IS PORT(a:IN BIT_VECTOR(0 to 2); m:OUT BIT_VECTOR(0 to 2);END ENTITY func;ARCHIT

36、ECTURE demo OF func IS FUNCTION sam(x,y,z:BIT )RETURN BIT ISBEGIN RETURN ( x AND y )OR Z; END FUNCTION sam;BEGIN PROCESS(a) BEGIN m(0)=sam(a(0),a(1),a(2); m(1)=sam(a(2),a(0),a(1); m(2)DATA(HIGH) THEN -检测数据检测数据 V1:=DATA(LOW); DATA(LOW):=DATA(HIGH); DATA(HIGH):=V1; END IF;END PROCEDURE SWAP; -过程过程SWAP

37、定义结束定义结束 VARIABLE V2:DTYPE2; -在本进程中定义变量在本进程中定义变量V2BEGIN -进程开始进程开始 V2:=SR; -将输入值读入变量将输入值读入变量 SWAP(V2,1,2); -V2、1、2是对应于是对应于DATA、LOW、HIGH的实参的实参 SWAP(V2,2,3); -位置关联法调用,第位置关联法调用,第2、第、第3元素交换元素交换 SWAP(V2,1,2); -位置关联法调用,第位置关联法调用,第1、第、第2元素再次交换元素再次交换 SC=V2; END PROCESS;END ARCHITECTURE ART; 两个或两个以上有相同的过程名和两个或

38、两个以上有相同的过程名和互不相同的参数数量及数据类型的过互不相同的参数数量及数据类型的过程称为重载过程。程称为重载过程。对于重载过程,也是靠参量类型来辨对于重载过程,也是靠参量类型来辨别究竟调用哪一个过程的。别究竟调用哪一个过程的。 PROCEDURE CAL(V1,V2:IN REAL; SIGNA OUT1:INOUT INTEGER);PROCEDURE CAL(V1,V2:IN INTEGER; SIGNA OUT1:INOUT REAL); CAL(20.15,1.42,S1);-调用第一个重载过程调用第一个重载过程CAL,S1为为INOUT式的整数式的整数信号信号 CAL(23,3

39、20,S2); -调用第二个重载过程调用第二个重载过程CAL,S2为为INOUT式的实数式的实数信号信号3.7、程序包、程序包 (PACKAGES)程序包:程序包:一种使包体中的元件、函数、类型、一种使包体中的元件、函数、类型、说明,对其他设计单元是说明,对其他设计单元是“可见可见”、可调用的、可调用的设计单元设计单元。程序包说明的内容:程序包说明的内容: 常量说明;常量说明; VHDL数据类型说明;数据类型说明; 元件说明;元件说明; 子程序说明;子程序说明;程序包说明为程序包定程序包说明为程序包定义接口,声明包中义接口,声明包中常量常量说明说明; ; VHDLVHDL数据类型说数据类型说明

40、明; ; 元件说明元件说明; ; 子程序子程序说明说明. .方式类似实体定义方式类似实体定义模块接口模块接口程序的结构包括程序的结构包括: 程序包说明程序包说明(包首包首) 程序包主体程序包主体(包体包体)程序包体程序包体: 规定程序规定程序的实际功能的实际功能 ;存放说存放说明中的函数与元件明中的函数与元件方方式与结构体语句方法式与结构体语句方法相同相同一个完整的程序报包中,包首名和包体名是同一个名字一个完整的程序报包中,包首名和包体名是同一个名字Package 程序包名程序包名 is - 程序包首程序包首 程序包首说明部分程序包首说明部分; End程序包名程序包名;PACKAGE BODY 程序包名程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论