




已阅读5页,还剩104页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3 5VHDL并行语句 第三章 3 5VHDL并行语句 ConcurrentSignalAssignment 并行信号赋值语句Componentinstantiations 元件例化语句Process 进程语句ConcurrentProcedureCall 并发过程调用语句Block 块语句ASSERT 并行断言语句Genera 生成语句 硬件的拷贝 VHDL语言是并行处理语言 能够进行并行处理的语句有 3 5VHDL并行语句 ARCHITECTURE结构体名OF实体名IS说明语句 BEGIN并行语句 ENDARCHITECTURE结构体名 并行语句在结构体中的使用格式如下 进程语句最具有VHDL语言特色 提供了一种用算法描述硬件行为的方法 特点 1 进程的并行执行性 2 进程内部的顺序性 3 进程启动由Process后的敏感信号来触发 也可用WAIT语句等待一个触发条件的成立 4 各进程之间的通信是由信号来传递的 5 进程的启动和挂起 3 5 1进程Process语句 3 5VHDL并行语句 结构体 并行语句process 信号 信号 信号 3 5VHDL并行语句 进程名 PROCESS 敏感信号表 IS 进程说明部分 变量说明语句 BEGIN顺序描述语句 ENDPROCESS 进程名 敏感信号表 进程内要读取的所有敏感信号 包括端口 的列表 每一个敏感信号的变化都将启动进程 格式 信号 信号 3 5VHDL并行语句 P1 PROCESS clk BEGINIF clk EVENT ANDclk 1 THENq d ENDIF ENDPROCESSP1 3 5VHDL并行语句 例3 5 1 ARCHITECTUREARTOFSTATISBEGINP1 PROCESSISBEGINWAITUNTICLOCK IF DRIVER 1 THENCASEOUTPUTISWHENS1 OUTPUTOUTPUTOUTPUTOUTPUT S1 ENDCASE ENDPROCESSP1 ENDARCHITECTUREART ARCHITECTUREbehavOFhalf adderISBEGINPadder PROCESS a b BEGINSum aXORb Carry aANDb ENDPROCESSPadder ENDbehav 利用进程语句设计的半加器 3 5VHDL并行语句 敏感信号表的特点 1 同步进程的敏感信号表中只有时钟信号 如 process clk beginif clk eventandclk 1 thenifreset 1 thendata 00 elsedata in data endif endif endprocess 3 5VHDL并行语句 2 异步进程的敏感信号表中除了时钟信号还有其它信号 如 process clk reset beginifreset 1 thendata 00 elsif clk eventandclk 1 thendata in data endif endprocess 3 5VHDL并行语句 3 如果有WAIT语句 则不许使用敏感信号表 process a b begin顺序语句 endprocess processbegin顺序语句 waitona b endprocess 进程可实现组合逻辑电路 时序逻辑电路 3 5VHDL并行语句 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 ELSEOUT1 IN1 1 ENGIF ENDPROCESS ENDARCHITECTUREART 3 5VHDL并行语句 组合电路型十进制加法器CNT10综合后的RTL硬件结构图 3 5VHDL并行语句 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYCNT10ISPORT CLR CLK INSTD LOGIC CNT BUFFERSTD LOGIC VECTOR 3DOWNTO0 ENDENTITYCNT10 ARCHITECTUREARTOFCNT10ISBEGINPROCESSISBEGINWAITUNTICLK EVENTANDCLK 1 IF CLR 1 ORCNT 9 THENCNT 0000 ELSECNT CNT 1 ENDIF ENDPROCESS ENDARCHITECTUREART 3 5VHDL并行语句 组合电路型十进制加法器CNT10综合后的RTL硬件结构图 增加了D触发器 用进程实现组合逻辑电路 entitycounterisport clear inbit in count inintegerrange0to9 out count outintegerrange0to9 endcounter architecturert1ofcounterisbeginprocess in count clear beginif clear 1 orin count 9 thenout count 0 elseout count in count 1 endif endprocess endrt1 3 5VHDL并行语句 用进程实现时序逻辑电路 entitycounterisport clear clock inbit count bufferintegerrange0to9 endcounter architecturert1ofcounterisbeginprocessbeginwaituntil clock eventandclock 1 if clear 1 orin count 9 thenout count 0 elseout count in count 1 endif endprocess endrt1 3 5VHDL并行语句 定义 给一个信号赋值 即为该信号创建一个驱动器 驱动信号 多个进程或并发语句给同一个信号赋值 则该信号为多信号源驱动 功能 在同一条线上的不同时刻内传输不同的信息 3 5VHDL并行语句 三态缓冲器总线结构与多驱动信号 ARCHITECTURErt1ofdrivebeginA OUT AWHEN ENA ELSE Z B OUT BWHEN ENA ELSE Z C OUT CWHEN ENA ELSE Z PROCESS A OUT ISBEGINBUS OUT A OUT ENDPROCESS PROCESS B OUT ISBEGINBUS OUT B OUT ENDPROCESS PROCESS C OUT ISBEGINBUS OUT C OUT ENDPROCESS 3 5VHDL并行语句 块 Block 可看作结构体中子模块 将一系列并行描述语句进行组合 可改善可读性 使得结构体中的并行语句层次 结构鲜明 3 5 2块 Block 语句 1 格式如下 块标号 Block 块保护表达式 块说明项BEGIN并行语句ENDBlock 块标号 3 5VHDL并行语句 地位 块语句的使用不影响逻辑功能 描述一 a1 out1 1 after2ns a2 out2 1 after2ns a3 out3 1 after2ns 描述二 a1 out1 1 after2ns blk blockbegina2 out2 1 after2ns a3 out3 1 after2ns endblockblk 以下两种描述结果相同 3 5VHDL并行语句 2 嵌套块的应用 两个独立的2输入与门 B1 blocksignals bitbegins aandb B2 blocksignals bits aandc B3 blockbeginz s endblockB3 endblockB2 y s endblockB1 子块声明与父块声明同名时 子块声明 将忽略父块声明 3 5VHDL并行语句 采用BLOCK语句描述二选一电路 ENTITYmuxISPORT a b s INBIT y OUTBIT ENDENTITY ARCHITECTUREconnectOFmuxISSIGNALtmp1 tmp2 tmp3 BIT BEGINblock1 BLOCKBEGINtmp1 aands tmp2 band NOTa tmp3 tmp1ortmp2 y tmp3 ENDblock1 ENDconnect 3 5VHDL并行语句 4 卫式 Guarded 块 由保护表达式的值决定真 假块语句的执行与否 entityeg1isport a inbit z outbit endeg1 architecturert1ofeg1isbeginguarded block block a 1 beginz 1 whenguardelseendblock endrt1 综合不支持 3 5VHDL并行语句 1 简单信号赋值语句 CONCURRENTSIGNALASSIGNMENT 2 条件信号赋值语句 CONDITIONALSIGNALASSIGNMENT 3 选择信号赋值语句 SELECTIVESIGNALASSIGNMENT 3 5 3并行信号赋值语句分3种类型 共同特点 1 赋值目标必须是信号 与其它并发语句同时执行 与书写及是否在块语句中无关 2 每一信号赋值语句等效与一个进程语句 所有输入信号的变化都将启动该语句的执行 3 5VHDL并行语句 书写格式为 信号 表达式 1 简单信号赋值语句 一个简单信号赋值语句相当于一个进程语句的缩写 两种表达式完全等同 ARCHITECTURErt1OFm4ISBEGINy aandb ENDrt1 ARCHITECTURErt1OFm4ISBEGINprocess a b beginy aandb endprocess ENDrt1 3 5VHDL并行语句 两种表达式等效 LIBRARYieee USEieee std logic 1164 all ENTITYexISPORT a b INSTD LOGIC y OUTSTD LOGIC ENDex2 ARCHITECTUREr1OFexISSIGNALc STD LOGICBEGINc aandb y c ENDr1 LIBRARYieee USEieee std logic 1164 all ENTITYex2ISPORT a b INSTD LOGIC y OUTSTD LOGIC ENDex2 ARCHITECTURErt1OFexISSIGNALc STD LOGICBEGINprocess1 PROCESS a b BEGINc aandb ENDPROCESSprocess1 process2 PROCESS c BEGINy c ENDPROCESSprocess2 ENDrt1 3 5VHDL并行语句 两种表达式不等效 LIBRARYieee USEieee std logic 1164 all ENTITYex2ISPORT a b INSTD LOGIC y OUTSTD LOGIC ENDex2 ARCHITECTUREr1OFexISSIGNALc STD LOGICBEGINc aandb y c ENDr1 LIBRARYieee USEieee std logic 1164 all ENTITYex2ISPORT a b INSTD LOGIC y OUTSTD LOGIC ENDex2 ARCHITECTUREr1OFexISBEGINSIGNALc STD LOGICprocess1 PROCESS a b c BEGINc aandb y c ENDPROCESSprocess1 ENDr1 3 5VHDL并行语句 ARCHITECTUREARTOFXHFZISSIGNAS1 STD LOGIC BEGINOUTPUT1 AANDB OUTPUT2 C D B1 BLOCKISSIGNAE F G H STD LOGIC BEGING EORF H EXORF ENDBLOCKB1 S1 G ENDARCHITECTUREART 五条信号赋值语句的执行是并行发生的 3 5VHDL并行语句 2 条件信号赋值语句 ConditionalSignalAssignment 属于并发描述语句的范畴 可以根据不同的条件将不同的表达式的值代入目标信号 书写格式为 目标信号 表达式1WHEN条件1ELSE表达式2WHEN条件2ELSE 表达式n 1WHEN条件n 1ELSE表达式n 3 5VHDL并行语句 例 四选一电路 LIBRARYieee USEieee std logic 1064 allENTITYmux4ISPORT input INstd logic vector 3DOWNTO0 sel INstd logic vector 1DOWNTO0 y OUTstd logic ENDmux4 ARCHITECTURErt1OFmux4ISBEGINy input 0 WHENsel 00 ELSEinput 1 WHENsel 01 ELSEinput 2 WHENsel 10 ELSEinput 4 ENDrt1 3 5VHDL并行语句 条件信号赋值语句与进程中的多选择IF语句等价 功能上 q aWHENsela 1 ELSEbWHENselb 1 ELSEc PRCESS sela selb a b c BEGINIFsela 1 THENq a ELSIFselb 1 THENq b ELSEq c ENDPROCESS 3 5VHDL并行语句 WITH表达式SELECT目标信号 表达式1WHEN条件1 表达式2WHEN条件2 表达式3WHEN条件3 表达式nWHEN条件n 1 不能有重叠的条件分支 2 最后条件可为others 否则其它条件必须能包含表达式的所有可能值3 选择信号代入语句与进程中的case语句等价 3 选择信号赋值语句的格式为 3 5VHDL并行语句 例 四选一电路 LIBRARYieee USEieee std logic 1064 allENTITYmux4ISPORT input INstd logic vector 3DOWNTO0 sel INstd logic vector 1DOWNTO0 y OUTstd logic ENDmux4 ARCHITECTURErt1OFmux4ISBEGINWITHselSELECTy input 0 WHEN 00 input 1 WHEN 01 input 2 WHEN 10 input 4 WHEN 11 X WHENOTHERS ENDrt1 3 5VHDL并行语句 选择信号赋值语句与进程中的多选择CASE语句等价 WITHselSELECTq aWHEN 00 bWHEN 01 cWHEN 01 dWHENothers PRCESS sel a b c d BEGINCASEselISWHEN 00 qqqq d ENDCASE ENDPROCESS 3 5VHDL并行语句 简单的指令译码器 3 5VHDL并行语句 LIBRARYieee USEieee std logic 1164 ALL USEieee std logic unsigned all ENTITYdecoderISPORT a b c INstd logic data1 data2 instd logic dataout outstd logic ENDdecoder 3 5VHDL并行语句 ARCHITECTUREartOFdecoderISSIGNALins std logic vector 2downto0 BEGINins cENDart 3 5VHDL并行语句 练习 设计一数据选择器MUX 其系统模块图和功能表如下图所示 试采用whenelse语句来描述该数据选择器MUX的实体与结构体 模块图 功能表 3 5VHDL并行语句 复习上一次课堂教学主要内容 并行信号赋值语句 ConcurrentSignalAssignment 1 简单信号赋值语句 2 条件信号赋值语句 3 选择信号赋值语句 3 5VHDL并行语句 位置 结构体 块语句功能 等效于一个过程调用语句的进程 书写格式 过程名 关联参量名 3 5 4并行过程调用语句 3 5VHDL并行语句 PACKAGEpackexpIS 定义程序包FUNCTIONmax a b INSTD LOGIC VECTOR RETURNSTD LOGIC VECTOR FUNCTIONfuncl a b c REAL RETURNREAL FUNCTION a b ININTEGER RETURNINTEGER FUNCTIONas2 SIGNALin1 in2 INREAL RETURNREAL ENDpackexp 3 5VHDL并行语句 PACKAGEBODYpackexpISFUNCTIONmax a b INSTD LOGIC VECTOR RETURNSTD LOGIC VECTORISBEGINIF a b THENRETURNa ELSERETURNb ENDIF ENDFUNCTIONmax ENDpackexp 3 5VHDL并行语句 USEWORKpackexp ALL ENTITYexpISPORT ENDexp ARCHITECTUREbehavOFexpISBEGINout max dat1 dat2 赋值语句中并行函数PROCESS dat3 dat4 BEGINout max dat3 dat4 顺序函数调用语句ENDPROCESS ENDbehav 3 5VHDL并行语句 例3 5 17 CHBLK BLOCKISSIGNAS1 STD LOGIC VECTOR 0TO0 过程调用前设定矢量尺寸SIGNAS2 STD LOGIC VECTOR 0TO1 SIGNAS3 STD LOGIC VECTOR 0TO2 SIGNAS4 STD LOGIC VECTOR 0TO3 3 5VHDL并行语句 SIGNAE1 E2 E3 E4 BOOLEAN BEGINCHECK S1 E1 并行过程调用 关联参数名为S1 E1CHECK S2 E2 并行过程调用 关联参数名为S2 E2CHECK S3 E3 并行过程调用 关联参数名为S3 E3CHECK S4 E4 并行过程调用 关联参数名为S4 E4ENDBLOCKCHBLK 图3 20为此检测模块的逻辑电路结构图 3 5VHDL并行语句 块CHBLK的逻辑电路结构图 3 5VHDL并行语句 本次课的内容 元件例化语句生成语句 3 5VHDL并行语句 层次化设计示意 3 5VHDL并行语句 VHDL层次化设计示意 3 5VHDL并行语句 元件声明类似实体ENTITY声明 3 5 5元件例化语句 元件声明和元件调用 语法 COMPONENT元件名 IS GENERIC说明 类属参数说明PORT说明 端口数据说明ENDCOMPONENT 元件名 元件声明定义 对所调用的较低层次的实体模块 元件 名称的类属参数 端口数据类型的声明 3 5VHDL并行语句 例 元件声明 调用元件之前要先元件声明 componentaddisgeneric n positive port x y inbit vector n 1downtoo z outbit vector n 1downto0 carry outbit endcomponentadd componentand2port i1 i2 inbit O1 outbit endcomponent 3 5VHDL并行语句 可在以下部分声明元件 结构体 Architecture 程序包 Package 块 Block 被声明元件的来源 1 VHDL设计实体 2 其它HDL设计实体 3 另外一种标准格式的元件 如EDIF或XNF4 厂商提供的工艺库中的元件 IP核 3 5VHDL并行语句 例 U1 ADDgenericmap N 4 portmap x1 y1 z1 carry1 元件例化语句 元件声明和元件调用 例化名称 元件名称 genericmap 类属名称 表达式 类属名称 表达式 portmap 端口名称 当前端口或者信号 端口名称 当前端口或者信号 元件调用定义 把低层元件安装 调用 到当前层次设计实体内部的过程 包括 类属参数传递 映射 元件端口映射 3 5VHDL并行语句 PORT端口映射方式 名称关联方式portmap 低层次端口名 当前层次端口名 例 or2portmap o n6 i1 n3 i2 n1 位置关联方式portmap 当前层次端口名 当前层次端口名 例 or2portmap n3 n1 n6 注 位置关联方式中 例化的端口表达式 信号 必须与元件声明语句中的端口顺序一致 3 5VHDL并行语句 一个低层次设计在被调用前必须有一个元件声明 ENTITYexamisPORT ea eb INBIT VECTOR 3DOWNTO0 ey OUTBIT LOGIC ENDexam ARCHITECTUREexam archOFexamISBEGINENDexam arch u1 comparePORTMAP ea eb ey 元件调用 COMPONENTcomparePORT a INBIT VECTOR 3DOWNTO0 b INBIT VECTOR 3DOWNTO0 y OUTBIT ENDCOMPONENT 元件声明 3 5VHDL并行语句 ORD41逻辑原理图 3 5VHDL并行语句 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYND2ISPORT A B INSTD LOGIC C OUTSTD LOGIC ENDENTITYND2 ARCHITECTUREARTND2OFND2ISBEGINC ANANDB ENDARCHITECTUREARTND2 ND的VHDL语言描述 3 5VHDL并行语句 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYORD41ISPORT A1 B1 C1 D1 INSTD LOGIC Z1 OUTSTD LOGIC ENDENTITYORD41 ARCHITECTUREARTORD41OFORD41ISCOMPONENTND2ISPORT A B INSTD LOGIC C OUTSTD LOGIC ENDCOMPONENTND2 ORD41顶层描述 3 5VHDL并行语句 SIGNAS1 S2 STD LOGIC BEGINU1 ND2PORTMAP A1 B1 S1 位置关联方式U2 ND2PORTMAP A C1 C S2 B D1 名字关联方式U3 ND2PORTMAP S1 S2 C Z1 混合关联方式ENDARCHITECTUREARTORD41 3 5VHDL并行语句 4位移位寄存器 4位移位寄存器由四个结构相同的DFF组成 对应的元件例化语句如下 ENTITYshiftISport a clk INBIT b OUTBIT ENDshift 3 5VHDL并行语句 architecturegen shiftofshiftiscomponentdffport d clk inBIT g outBIT endcomponent SIGNALX BIT VECTOR 0TO4 BEGINX 0 a b X 4 U0 dffPORTMAP X 0 clk x 1 U1 dffPORTMAP X 1 clk x 2 U2 dffPORTMAP X 2 clk x 3 U3 dffPORTMAP X 3 CLK x 4 endarchitecture 3 5VHDL并行语句 生成语句作用 复制产生多个相同的结构建立0个或多个备份 并行结构 3 5 6生成语句GENERATE 分为两类 FOR GENERATE 采用一个离散的范围决定备份的数目IF GENERATE 有条件地生成0个或1个备份 3 5VHDL并行语句 FOR GENERATE语句 语法 标号 for循环变量in范围generate 并行语句 endgenerate 标号 范围 整数表达式to整数表达式整数表达式downto整数表达式for loop语句与for generate语句比较 3 5VHDL并行语句 例 用生成语句创建多个备份componentcompport x inbit y outbit endcomponent signala b bit vector 0to7 gen foriina rangegenerateU compportmap x a i y b i endgenerategen 3 5VHDL并行语句 architecturegen shiftofshiftiscomponentdffport d clk inBIT q outBIT endcomponent signalx std logic VECTOR 0to4 beginx 0 a b x 4 register1 foriin0to3generateUx dffportmap x i clk x i 1 endgenerate endarchitecture 4位移位寄存器 3 5VHDL并行语句 architecturegen shiftofshiftiscomponentdffport d clk inBIT g outBIT endcomponent X 0 a b X 4 U0 dffPORTMAP X 0 clk X 1 U1 dffPORTMAP X 1 clk X 2 U2 dffPORTMAP X 2 clk X 3 U3 dffPORTMAP X 3 CLK X 4 endarchitecture 4位移位寄存器等效描述 3 5VHDL并行语句 IF GENERATE语句语法 标号 IF条件表达式generate 并行语句 endgenerate 标号 if语句与if generate语句的区别 1 if generate没有类似于IF语句的ELSE或ELSIF分支语句2 IF语句是顺序语句 if generate则为并行语句 3 5VHDL并行语句 8bit并串转换器 8bit并串转换器 续 3 4VHDL描述语句 8bit并串转换器仿真结果 3 4VHDL描述语句 SN74373的内部逻辑结构 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYLATCHISPORT D INSTD LOGIC ENA INSTD LOGIC Q OUTSTD LOGIC ENDENTITYLATCH ARCHITECTUREONEOFLATCHISSIGNAS0 STD LOGIC BEGINPROCESS D ENA ISBEGINIFENA 1 THENS0 D ENDIF Q S0 ENDPROCESS ENDARCHITECTUREONE 1位锁存器LATCH的逻辑描述 3 5VHDL并行语句 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYSN74373ISPORT D INSTD LOGIC VECTOR 8DOWNTO1 OEN INSTD LOGIC G INSTD LOGIC Q OUTSTD LOGIC VECTOR 8DOWNTO1 ENDENTITYSN74373 ARCHITECTUREONEOFSN74373ISCOMPONENTLATCHISPORT D ENA INSTD LOGIC Q OUTSTD LOGIC ENDCOMPONENTLATCH SN74373的逻辑描述 3 5VHDL并行语句 SIGNAS1 STD LOGIC VECTOR 8DOWNTO1 BEGINGELATCH FORNOIN1TO8GENERATELATCHX LATCHPORTMAP D NO G S1 NO ENDGENERATEGELATCH Q S1WHENOEN 0ELSE ZZZZZZZZ ENDARCHITECTUREONE ARCHITECTURETWOOFSN74373ISSIGNAS2 STD LOGIC VECTOR 8DOWNTO1 BEGINPROCESS D OEN G ISBEGINIFOEN 0 THENQ S2 ELSEQ ZZZZZZZZ ENDIF 3 5VHDL并行语句 IFG 1 THENS2 D ENDIF ENDPROCESS ENDARCHITECTURETWO 3 5VHDL并行语句 总结 元件例化语句 元件声明元件调用 生成语句 FOR GENERATEIF GENERATE 3 4VHDL描述语句 作业 装订线 1 已知一个简单的波形发生器的数字部分系统框图如下图所示 3 4VHDL描述语句 其VHDL描述中Entity部分分别如下 试用VHDL描述该系统的顶层设计 注 使用例化语句 3 4VHDL描述语句 定义 独立的 有名称的算法位置 结构体或程序包中的任何位置特点 可重载性允许多个重名的子程序 子程序的参数类型及返回值数据类型不同 3 6子程序 在VHDL语言中 子程序分两类 1 过程 PROCEDURE 2 函数 FUNCTION 过程 0个或多个in 默认 inout out参数函数 0个或者多个in参数 一个return值 子程序首 指明其名称 参数及返回值子程序体 描述子程序要实现的功能 过程 一个语句函数 表达式的一部分 函数 包括函数首 程序包 和函数体函数首 函数名 参数表和返回值函数首格式 FUNCTION函数名 参数表 RETURN数据类型名函数名 普通的标识符 运算符 参数表 定义输入值 3 6 1函数 函数语句的一般书写格式为 FUNCTION函数名 参数表 RETURN数据类型名 函数首FUNCTION函数名 参数表 RETURN数据类型名IS 定义语句 变量定义BEGIN 顺序处理语句 END过程名 函数体 2 函数调用 执行一个给定名字和输入参数的过程 返回一个指定数据类型的值 语句格式如下 函数名 形参名 实参表达式 形参名 实参表达式 PACKAGEpackexpIS 定义程序包FUNCTIONmax a b INBIT RETURNBIT ENDpackexp PACKAGEBODYpackexpISFUNCTIONmax a b INBIT RETURNBITISBEGINIF a b THENRETURNa ELSERETURNb ENDIF ENDFUNCTIONmax ENDpackexp 函数首 函数体 USEWORK packexp ALL ENTITYpISPORT dat1 dat2 dat3 dat4 inbit out1 out2 outbit ENDp ARCHITECTUREbehavOFpISBEGINout1 max dat1 dat2 赋值语句中并行函数PROCESS dat3 dat4 BEGINout2 max dat3 dat4 顺序函数调用语句ENDPROCESS ENDbehav ENTITYfuncISPORT a INBIT VECTOR 0to2 m OUTBIT VECTOR 0to2 ENDENTITYfunc ARCHITECTUREdemoOFfuncISFUNCTIONsam x y z BIT RETURNBITISBEGINRETURN xANDy ORZ ENDFUNCTIONsam BEGINPROCESS a BEGINm 0 sam a 0 a 1 a 2 m 1 sam a 2 a 0 a 1 m 2 sam a 1 a 2 a 0 ENDPROCESS ENDARCHITECTUREdemo 但这时要求函数中定义的操作数具有不同的数据类型 以便调用时用以分辨不同功能的同名函数 在不同数据类型操作数构成的同名函数中 以运算符重载式函数最为常用 3 6 2重载函数 OVERLOADEDFUNCTION 重载函数 VHDL允许以相同的函数名定义函数 PROCEDURE过程名 参数1 过程首PROCEDURE过程名 参数1 参数2 IS 定义语句 变量定义BEGIN 顺序处理语句 END过程名 过程语句 3 6 3 过程语句的一般书写格式为 过程体 过程首不是必须的 除在程序包外 过程体是必须的 在任何地方根据名称调用语句 过程首 过程名和参数表 可对常数 变量和信号作出说明 用关键字IN OUT和INOUT定义这些参数的工作模式 PROCEDUREro1 VARIABLEa b INOUTINTEGER PROCEDUREpro2 CONSTANTa1 INTEGER VARIABLEb1 OUTINTEGER PROCEDUREpro3 SIGNALsig INOUTBIT PACKAGEDATA TYPESIS 定义程序包TYPEDTYPE1ISINTEGERRANGE0TO3 定义数据类型TYPEDTYPE2ISARRAY 1TO3 OFDTYPE1 ENDPACKAGEDATA TYPES USEWORK DATA TYPES ALL 打开以上建立在当前工作库的程序包DATA TYPESENTITYSORTISPORT SR INDTYPE2 SC OUTDTYPE2 ENDENTITYSORT ARCHITECTUREARTOFSORTISBEGINPROCESS SR ISPROCEDURESWAP DATA INOUTDTYPE2 LOW HIGH ININTEGER IS SWAP的形参名为DATA LOW HIGHVARIABLEV1 DTYPE1 BEGINIF DATA LOW DATA HIGH THEN 检测数据V1 DATA LOW DATA LOW DATA HIGH DATA HIGH V1 ENDIF ENDPROCEDURESWAP 过程SWAP定义结束VARIABLEV2 DTYPE2 在本进程中定义变量V2 BEGIN 进程开始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 ENDPROCESS ENDARCHITECTUREART 3 6 4 重载过程 OVERLOADEDPROCEDURE 两个或两个以上有相同的过程名和互不相同的参数数量及数据类型的过程称为重载过程 对于重载过程 也是靠参量类型来辨别究竟调用哪一个过程的 PROCEDURECAL V1 V2 INREAL SIGNAOUT1 INOUTINTEGER PROCEDURECAL V1 V2 ININTEGER SIG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人转正申请书
- 潜水泵安全培训记录内容课件
- 2025年服装订货协议合同范本
- 行政复议申请书格式工厂
- 2025常见的饲料买卖合同范本
- 2025版工程承包合同范本
- 更换先人牌位申请书
- 车辆转让申请书
- 申请处分降级申请书
- 注销一般纳税人申请书
- 学校辍学学生劝返工作记录卡
- 《细胞工程学》考试复习题库(带答案)
- 粤教花城版小学音乐歌曲《哈哩噜》课件
- 第六讲:RCEP服务贸易与投资解读课件
- 初中数学人教七年级上册(2023年新编) 有理数专题《有理数中的数学思想》教学设计
- 加油站反恐防暴应急预案
- 展筋丹-中医伤科学讲义-方剂加减变化汇总
- 检测检验作业指导书(疾病预防控制中心)
- 咪达唑仑说明书
- 第二章药物转运及转运体
- 装备外观代码
评论
0/150
提交评论