VHDL并行语句.ppt_第1页
VHDL并行语句.ppt_第2页
VHDL并行语句.ppt_第3页
VHDL并行语句.ppt_第4页
VHDL并行语句.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

六 VHDL语言的并行语句 1 并行信号赋值语句 4 进程语句 3 块语句 2 条件信号赋值语句 5 元件例化语句 6 生成语句 7 并行过程调用语句 结构体 结构体中的并行语句模块 1 并行信号赋值语句 赋值目标 表达式 例ARCHITECTUREcurtOFbc1ISSIGNALs1 e f g h STD LOGIC BEGINoutput1 aANDb output2 c d g eORf h eXORf s1 g ENDARCHITECTUREcurt 2 条件信号赋值语句 赋值目标 表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE 表达式 例ENTITYmuxISPORT a b c INBIT p1 p2 INBIT z OUTBIT END ARCHITECTUREbehvOFmuxISBEGINz aWHENp1 1 ELSEbWHENp2 1 ELSEc END 选择信号赋值语句 WITH选择表达式SELECT赋值目标信号 表达式WHEN选择值 表达式WHEN选择值 表达式WHEN选择值 例 WITHseltSELECTmuxout aWHEN0 1 0或1bWHEN2TO5 2或3 或4或5cWHEN6 dWHEN7 Z WHENOTHERS 3 块语句 块标号 BLOCK 块保护表达式 接口说明 类属说明 BEGIN并行语句 ENDBLOCK块标号 与大部分的VHDL语句不同 BLOCK语句的应用 包括其中的类属说明和端口定义 都不会影响对原结构体的逻辑功能的仿真结果 例 b1 BLOCKSIGNALs1 BIT BEGINS1 aANDb b2 BLOCKSIGNALs2 BIT BEGINs2 cANDd b3 BLOCKBEGINZ s2 ENDBLOCKb3 ENDBLOCKb2 y s1 ENDBLOCKb1 4 进程语句 进程标号 PROCESS 敏感信号参数表 IS 进程说明部分 BEGIN顺序描述语句 ENDPROCESS 进程标号 PROCESS语句结构的一般表达格式如下 在一个结构体中多个PROCESS语句可以同时并发运行 而进程内部语句之间是顺序关系 PROCESS语句在VHDL程序中 是描述硬件并行工作行为的最常用 最基本的语句 PROCESS组成 PROCESS语句结构 进程说明 顺序描述语句 敏感信号参数表 信号赋值语句 变量赋值语句 进程启动语句 子程序调用语句 顺序描述语句 进程跳出语句 1 进程说明部分主要定义一些局部量 可包括数据类型 常数 属性 子程序等 但需注意 在进程说明部分中不允许定义信号和共享变量 2 顺序描述语句部分可分为赋值语句 进程启动语句 子程序调用语句 顺序描述语句和进程跳出语句等 3 为启动进程 在进程中必须包含有一个显式的敏感信号量表或者包含一个WAIT语句 敏感信号表应当紧跟在PROCESS之后 含有敏感信号表的进程语句中不允许再显式出现WAIT语句 说明 1 PROCESS为一无限循环语句 2 PROCESS语句具有顺序 并行运行双重性 3 进程必须由敏感信号的变化来启动 4 信号是多个进程间的通信线 PROCESS语句特点 5 一个进程中只允许描述对应于一个时钟信号的同步时序逻辑 例 ENTITYmulISPORT a b c selx sely INBIT data out OUTBIT ENDmul ARCHITECTUREexOFmulISSIGNALtemp BIT BEGINp a PROCESS a b selx BEGINIF selx 0 THENtemp a ELSEtemp b ENDIF ENDPROCESSp a p b PROCESS temp c sely BEGINIF sely 0 THENdata out temp ELSEdata out c ENDIF ENDPROCESSp b ENDex 上例的综合结果 例 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYCNT10ISPORT CLR INSTD LOGIC IN1 INSTD LOGIC VECTOR 3DOWNTO0 OUT1 OUTSTD LOGIC VECTOR 3DOWNTO0 ENDENTITYCNT10 ARCHITECTUREARTOFCNT10ISBEGINPROCESS IN1 CLR ISBEGINIF CLR 1 ORIN1 1001 THENOUT1 0000 有清零信号 或计数已达9 OUT1输出0ELSE 否则作加1操作OUT1 IN1 1 注意 使用了重载算符 重载算符 是在库ENGIF STD LOGIC UNSIGNED中预先声明的ENDPROCESS ENDARCHITECTUREART 组合电路型十进制加法器CNT10综合后的RTL硬件结构图 一般用于组合电路进程模式 进程标记 PROCESS 信号名 信号名 信号名 VARIABLE 变量名 STD LOGIC VARIABLE 变量名 STD LOGIC BEGIN 指定信号 指定变量 过程调用 如果语句 CASE语句 循环语句ENDPROCESS 进程标记 用于时序电路进程模式 进程标记 PROCESS 信号名 信号名 信号名 VARIABLE 变量名 STD LOGIC VARIABLE 变量名 STD LOGIC BEGINWAITUNTIL 时钟信号 1 或CLK eventandCLK 1 指定信号 指定变量 过程调用 如果语句 CASE语句 循环语句ENDPROCESS 进程标记 5 元件例化语句 例化名 元件名PORTMAP 元件例化语句 端口名 连接端口名 元件例化就是将预先设计好的设计实体定义为一个元件 然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接 从而为当前设计实体引入一个新的低一级的设计层次 COMPONENT元件名ISGENERIC 类属表 元件定义语句PORT 端口名表 ENDCOMPONENT文件名 元件定义 声明 语句 元件例化语句 2020 3 15 19 可编辑 例 利用元件例化语句设计如下所示电路 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYND2ISPORT A B INSTD LOGIC C OUTSTD LOGIC ENDENTITYND2 ARCHITECTUREARTND2OFND2ISBEGINCC1 C S2 B D1 名字关联方式U3 ND2PORTMAP S1 S2 C Z1 混合关联方式ENDARCHITECTUREARTORD41 例 6 生成语句 标号 FOR循环变量IN取值范围GENERATE说明 BEGIN并行语句 ENDGENERATE 标号 表达式TO表达式 递增方式 如1TO5表达式DOWNTO表达式 递减方式 如5DOWNTO1 标号 IF条件GENERATE说明 BEGIN并行语句 ENDGENERATE 标号 取值范围 生成语句有一种复制作用 在设计中 只要根据某些条件 设定好某一元件或设计单位 就可以利用生成语句复制一组完全相同的并行元件或设计单元电路结构 生成语句的两种形式 例 利用生成语句产生的八个相同的电路模块 主要的VHDL程序如下 COMPONENTCOMPISPORT X INSTD LOGIC Y OUTSTD LOGIC ENDCOMPONENTCOMP SIGNALA B STD LOGIC VECTOR 0TO7 GEN FORIINA RANGEGENERATEU1 COMPPORTMAP X A I Y B I ENDGENERATEGEN 7 并行过程调用语句 PROCEDURE过程名 参数1 参数2 IS 声明语句 BEGIN 顺序处理语句 END过程名 并行过程调用语句可以作为一个并行语句直接出现在结构体或块语句中 并行过程调用语句的功能等效于包含了同一个过程调用语句的进程 并行过程调用语句的语句调用格式与前面讲的顺序过程调用语句是相同的 过程调用的实质内容要先装入程序包中 Package 过程名 关联参数表 并行过程调用 位置关联方式 名字关联方式 参数关联方式 例 设有一过程PROCEDUREvect a b INBIT x y INOUTBIT 则调用时 位置关联方式 vect in1 in2 out1 out2 名字关联方式 vect a in1 b in2 x out1 y out2 使用说明 1 过程的参数表中可以使用IN OUT INOUT三种 不能理解为端口 2 过程可以返回多个变量 通过OUT INOUT定义的参数返回 3 参数对象可以为常量 IN方式 信号 变量 4 在进程外的过程调用为并行过程调用 在进程内的为顺序过程调用 函数调用 FUNCTION函数名 参数1 参数2 RETURN数据类型名IS 定义变量语句 BEGIN 顺序处理语句 RETURN 返回变量名 END函数名 函数调用的实质内容要先装入程序包中 Package 函数名 关联参数表 使用说明 1 函数的参数表中只能为IN的信号与常量 2 函数返回值只有一个 通过RETURN实现 由函数名传给调用者 3 也可以像过程一样使用位置关联方式和名字关联方式 1 过程可以有多个返回值 函数只有一个 2 参数传递方式不同 过程 INOUTINOUT 函数 IN 过程 Procedure 函数 Function 两者的主要区别 1库的种类 A IEEE库 B STD库 C WORK库 D VITAL库 七 VHDL库 2库的用法 LIBRARYIEEE USEIEEE STD LOGIC 1164 STD ULOGIC USEIEEE STD LOGIC 1164 RISING EDGE USE语句的使用有两种常用格式 USE库名 程序包名 项目名 USE库名 程序包名 ALL 库的作用范围从一个实体说明开始到它所属的结构体 配置为止 当有两个实体时 第二个实体前要另加库和包的说明 程序包 常数说明 VHDL数据类型说明 元件定义 子程序 定义程序包的一般语句结构如下 PACKAGE程序包名IS 程序包首程序包首说明部分 END程序包名 PACKAGEBODY程序包名IS 程序包体程序包体说明部分以及包体内顺序语句 END程序包名 3VHDL程序包 例 程序包首 PACKAGElogicISTYPEthree level logicIS 0 1 z 数据类型项目CONSTANTunknown value three level logic 0 常数项目FUNCTIONinvert input three level logic RETURNthree level logic 函数项目ENDlogic PACKAGEBODYlogicISFUNCTIONinvert input three level logic 函数项目描述BEGINCASEinputISWHEN 0 RETURN 1 WHEN 1 RETURN 0 WHEN Z RETURN Z ENDCASE ENDinvert ENDlogic 程序包体 USElogic three level logic logic invert 使用数据类型和函数两个项目ENTITYinverterISPORT x INthree level logic y OUTthree level logic ENDinverter ARCHITECTUREinverter bodyOFinverterISBEGINkk PROCESSBEGINY invert x AFTER10ns WAITONx ENDPROCESS ENDinverter body 该包使用例 PACKAGEsevenISSUBTYPEsegmentsisBIT VECTOR 0TO6 TYPEbcdISRANGE0TO9 ENDseven USEWORK seven ALL WORK库默认是打开的 ENTITYdecoderISPORT input bcd drive outsegments ENDdecoder ARCHITECTUREsimpleOFdecoderISBEGINWITHinputSELECTdrive B 1111110 WHEN0 B 0110000 WHEN1 B 1101101 WHEN2 B 1111001 WHEN3 B 0110011 WHEN4 B 1011011 WHEN5 B 1011111 WHEN6 B 1110000 WHEN7 B 1111111 WHEN8 B 1111011 WHEN9 B 0000000

温馨提示

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

评论

0/150

提交评论