VHDL并行语句技术专攻_第1页
VHDL并行语句技术专攻_第2页
VHDL并行语句技术专攻_第3页
VHDL并行语句技术专攻_第4页
VHDL并行语句技术专攻_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、六、六、vhdlvhdl语言的并行语句语言的并行语句1、并行信号赋值语句、并行信号赋值语句4、进程语句、进程语句3、块语句、块语句2、条件信号赋值语句、条件信号赋值语句5、元件例化语句、元件例化语句6、生成语句、生成语句7、并行过程调用语句、并行过程调用语句结构体结构体1专业课生成语句条件信号赋值语句元件例化语句并行信号赋值语句块语句进程语句并行过程调用语句信号信号信号信号信号信号architectureend architecture结构体中的并行语句模块结构体中的并行语句模块2专业课1、并行信号赋值语句、并行信号赋值语句赋值目标赋值目标 = 表达式表达式例例 architecture cu

2、rt of bc1 issignal 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;3专业课2、条件信号赋值语句、条件信号赋值语句赋值目标赋值目标 = 表达式表达式 when 赋值条件赋值条件 else 表达式表达式 when 赋值条件赋值条件 else . 表达式表达式 ;例例 entity mux is port ( a,b,c : in bit ; p1,p2 : in bit

3、; z : out bit ); end; architecture behv of mux is begin z = a when p1 = 1 else b when p2 = 1 else c ; end;4专业课选择信号赋值语句选择信号赋值语句with 选择表达式选择表达式 select 赋值目标信号赋值目标信号 =表达式表达式 when 选择值选择值, 表达式表达式 when 选择值选择值, ., 表达式表达式 when 选择值;选择值;例例 .with selt selectmuxout = a when 0|1 , - 0或或1 b when 2 to 5 , - 2或或3,或,

4、或4或或5 c when 6 , d when 7 , z when others ; .5专业课3、块语句、块语句块标号块标号 : block (块保护表达式)块保护表达式) 接口说明接口说明; 类属说明类属说明; begin 并行语句并行语句; end block 块标号块标号 ; 与大部分的与大部分的vhdl语句不同,语句不同,block语句的应语句的应用,包括其中的类属说明和端口定义,都不会影响用,包括其中的类属说明和端口定义,都不会影响对原结构体的逻辑功能的仿真结果。对原结构体的逻辑功能的仿真结果。6专业课例例 . b1 : block signal s1: bit ; begin

5、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 ;.7专业课4、进程语句、进程语句 进程标号进程标号: process ( 敏感信号参数表敏感信号参数表 ) is 进程说明部分进程说明部分 begin 顺序描述语句顺序描述语句; end process 进程标号进程标号;process语句结构的一般表达格式如下语句结构的一般表达格式如下 在一个结构体中多个在一个

6、结构体中多个process语句可以同时并发运语句可以同时并发运行,而进程内部语句之间是顺序关系。行,而进程内部语句之间是顺序关系。 process语句在语句在vhdl程序中,是描述硬件并行工作程序中,是描述硬件并行工作行为的最常用、最基本的语句。行为的最常用、最基本的语句。8专业课 process 组成组成process语句结构语句结构进程说明进程说明顺序描述语句顺序描述语句敏感信号参数表敏感信号参数表信号赋值语句变量赋值语句进程启动语句子程序调用语句顺序描述语句进程跳出语句9专业课(1) 进程说明部分主要定义一些局部量,可包括数据进程说明部分主要定义一些局部量,可包括数据类型、常数、属性、子

7、程序等。但需注意,在进程说类型、常数、属性、子程序等。但需注意,在进程说明部分中不允许定义信号和共享变量。明部分中不允许定义信号和共享变量。(2) 顺序描述语句部分可分为赋值语句、进程启动语顺序描述语句部分可分为赋值语句、进程启动语句、子程序调用语句、顺序描述语句和进程跳出语句句、子程序调用语句、顺序描述语句和进程跳出语句等。等。(3)为启动进程,在进程中必须包含有一个显式的为启动进程,在进程中必须包含有一个显式的敏感敏感信号量表信号量表或者包含一个或者包含一个waitwait语句语句;敏感信号表应当紧;敏感信号表应当紧跟在跟在processprocess之后,含有敏感信号表的进程语句中不之后

8、,含有敏感信号表的进程语句中不允许再显式出现允许再显式出现waitwait语句。语句。说明说明10专业课1. 1. processprocess为一无限循环语句为一无限循环语句2. 2. processprocess语句具有顺序语句具有顺序/ /并行运行双重性并行运行双重性3. 3. 进程必须由敏感信号的变化来启动进程必须由敏感信号的变化来启动4. 4. 信号是多个进程间的通信线信号是多个进程间的通信线process语句特点语句特点5. 5. 一个进程中只允许描述对应于一个时钟信号的同步时序一个进程中只允许描述对应于一个时钟信号的同步时序逻辑逻辑 11专业课例例:entity mul ispo

9、rt (a, b, c, selx, sely : in bit; data_out : out bit );end mul;architecture ex of mul is signal temp : bit;beginp_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

10、; end if; end process p_b;end ex;12专业课上例的综合结果上例的综合结果13专业课例例: 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

11、 process (in1,clr) is begin if (clr= 1 or in1= 1001) then out1=0000; -有清零信号,或计数已达有清零信号,或计数已达9,out1输出输出0 else -否则作加否则作加1操作操作 out1z3.0=b3.0s0=0: =z3.0=a3.015专业课l_进程标记进程标记:lprocess (_信号名信号名, _信号名信号名, _信号名信号名)lvariable _变量名变量名 : std_logic;lvariable _变量名变量名 : std_logic;lbeginl- 指定信号指定信号l- 指定变量指定变量l- 过程调用

12、过程调用l- 如果语句如果语句l- case语句语句l- 循环语句循环语句lend process _进程标记进程标记; 16专业课l_进程标记进程标记:lprocess (_信号名信号名, _信号名信号名, _信号名信号名)lvariable _变量名变量名 : std_logic;lvariable _变量名变量名 : std_logic;lbeginlwait until _时钟信号时钟信号 = 1;l 或或 clk event and clk=1l- 指定信号指定信号l- 指定变量指定变量l- 过程调用过程调用l- 如果语句如果语句l- case语句语句l- 循环语句循环语句lend

13、process _进程标记进程标记; 17专业课5、元件例化语句、元件例化语句例化名例化名 :元件名:元件名 port map( - 元件例化语句元件例化语句 端口名端口名 = 连接端口名,连接端口名,.) ; 元件例化就是将预先设计好的设计实体定义为一个元元件例化就是将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。级的设计层次。component 元件名元件名 is generic (类属表);

14、类属表); - 元件定义语句元件定义语句 port (端口名表);端口名表);end component 文件名;文件名;元件定义元件定义( (声明声明) )语句语句元件例化语句元件例化语句18专业课a1u1u2z1u3b1c1d1abababcccs1s2nd2nd2nd2例例: :利用元件例化语句设计如下所示电路利用元件例化语句设计如下所示电路19专业课library ieee;use ieee.std_logic_1164.all;entity nd2 isport(a,b:in std_logic; c:out std_logic);end entity nd2;architectur

15、e artnd2 of nd2 isbegin cc1,c=s2,b=d1); -名字关联方式名字关联方式 u3:nd2 port map (s1,s2,c=z1); -混合关联方式混合关联方式end architecture artord41;例例: :a1u1u2z1u3b1c1d1abababcccs1s2nd2nd2nd220专业课6、生成语句、生成语句标号:标号: for 循环变量循环变量 in 取值范围取值范围 generate 说明说明; begin 并行语句并行语句; end generate 标号标号 ;表达式表达式 to 表达式表达式 ; - 递增方式,如递增方式,如1 t

16、o 5表达式表达式 downto 表达式表达式 ; - 递减方式,如递减方式,如5 downto 1标号:标号: if 条件条件 generate 说明说明; begin 并行语句并行语句; end generate 标号标号 ;取值范围取值范围 生成语句有一种复制作用,在设计中,只要根据某生成语句有一种复制作用,在设计中,只要根据某些条件,设定好某一元件或设计单位,就可以利用生成些条件,设定好某一元件或设计单位,就可以利用生成语句复制一组完全相同的并行元件或设计单元电路结构。语句复制一组完全相同的并行元件或设计单元电路结构。:生成语句的两种形式生成语句的两种形式21专业课a0compinpu

17、toutputb0a1compinputoutputb1a7compinputoutputb7例例: :利用生成语句产生的八个相同的电路模块利用生成语句产生的八个相同的电路模块 22专业课主要的主要的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 arange generate u1:comp port map (x= a(i), y=b(i);end gener

18、ate gen;23专业课7、并行过程调用语句、并行过程调用语句procedure 过程名(参数过程名(参数1;参数;参数2;);) is 声明语句;声明语句;begin 顺序处理语句;顺序处理语句;end 过程名;过程名; 并行过程调用语句可以作为一个并行语句直接出现并行过程调用语句可以作为一个并行语句直接出现在结构体或块语句中。并行过程调用语句的功能等效于在结构体或块语句中。并行过程调用语句的功能等效于包含了同一个过程调用语句的进程。并行过程调用语句包含了同一个过程调用语句的进程。并行过程调用语句的语句调用格式与前面讲的顺序过程调用语句是相同的。的语句调用格式与前面讲的顺序过程调用语句是相

19、同的。过程调用的实质内容要先装入程序包中(过程调用的实质内容要先装入程序包中(packagepackage): :24专业课过程名(关联参数表)过程名(关联参数表);并行过程调用:并行过程调用:位置关联方式位置关联方式名字关联方式名字关联方式 =参数关联方式参数关联方式例:例:设有一过程设有一过程procedure vect(a,b:in bit; x,y:inout bit); 则调用时:则调用时:位置关联方式:位置关联方式:vect(in1,in2,out1,out2);名字关联方式:名字关联方式:vect(a=in1,b=in2,x=out1,y=out2);25专业课使用说明使用说明1

20、、过程的参数表中可以使用过程的参数表中可以使用in、out、inout三种;三种;(不能理解为端口)(不能理解为端口)2、过程可以返回多个变量(通过、过程可以返回多个变量(通过out、inout 定义的定义的参数返回);参数返回);3、参数对象可以为常量(、参数对象可以为常量(in方式)、信号、变量;方式)、信号、变量;4、在进程外的过程调用为并行过程调用;在进程内的为、在进程外的过程调用为并行过程调用;在进程内的为顺序过程调用;顺序过程调用;26专业课函数调用:函数调用:function 函数名(参数函数名(参数1;参数;参数2) return 数据类型名数据类型名 is 定义变量语句;定义

21、变量语句;begin 顺序处理语句;顺序处理语句;return 返回变量名返回变量名;end 函数名;函数名;函数调用的实质内容要先装入程序包中(函数调用的实质内容要先装入程序包中(packagepackage): :函数名(关联参数表)函数名(关联参数表);27专业课使用说明使用说明1、函数的参数表中只能为函数的参数表中只能为in的信号与常量;的信号与常量;2、函数返回值只有一个(通过、函数返回值只有一个(通过return实现,由函数名实现,由函数名传给调用者);传给调用者);3、也可以像过程一样使用位置关联方式和名字关联方式;、也可以像过程一样使用位置关联方式和名字关联方式; 1 1、过程

22、可以有多个返回值,函数只有一个过程可以有多个返回值,函数只有一个; ;2 2、参数传递方式不同、参数传递方式不同: : 过程(过程(in out inoutin out inout) 函数(函数(inin) 过程(过程(procedure) 函数(函数(functionfunction)两者的主要区别:两者的主要区别:28专业课1 库的种类库的种类a. ieeea. ieee库库b. stdb. std库库c. workc. work库库d. vitald. vital库库七、七、vhdlvhdl库库29专业课2 库的用法库的用法 library ieee ; use ieee.std_log

23、ic_1164.std_ulogic ; use ieee.std_logic_1164.rising_edge ; use语句的使用有两种常用格式: use 库名库名.程序包名程序包名.项目名项目名 ; use 库名库名.程序包名程序包名.all ; 库的作用范围从一个实体说明开始到它所属库的作用范围从一个实体说明开始到它所属的结构体、配置为止,当有两个实体时,第二个的结构体、配置为止,当有两个实体时,第二个实体前要另加库和包的说明。实体前要另加库和包的说明。30专业课程序包程序包常数说明常数说明vhdl数据类型说明数据类型说明元件定义元件定义子程序子程序定义程序包的一般语句结构如下: pa

24、ckage package 程序包名程序包名 is - is - 程序包首程序包首 程序包首说明部分程序包首说明部分; end end 程序包名程序包名; ; package body package body 程序包名程序包名 is - is - 程序包体程序包体 程序包体说明部分以及包体内程序包体说明部分以及包体内顺序顺序语句语句; end end 程序包名程序包名; ;3 vhdl程序包程序包31专业课例例: : 程序包首程序包首package logic is type three_level_logic is (0,1,z); -数据类型项目数据类型项目 constant unkno

25、wn_value : three_level_logic :=0; - 常数项目常数项目 function invert (input: three_level_logic) return three_level_logic; -函数项目函数项目 end logic;32专业课package body logic is function invert (input: three_level_logic); -函数项目描述函数项目描述 begin case input is when 0 = return 1; when 1 = return 0; when z = return z; end

26、case; end invert;end logic;程序包程序包体体33专业课 use logic.three_level_logic, logic.invert; -使用数据类型和使用数据类型和 函数两个项目函数两个项目entity inverter is port(x: in three_level_logic ; y: out three_level_logic);end inverter;architecture inverter_body of inverter isbegin kk: process begin y=invert(x) after 10ns; wait on x; end process; end inverter_body;该包使用例该包使用例:34专业课 package seven is subtype segment

温馨提示

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

评论

0/150

提交评论