VHDL库.包.配置.ppt_第1页
VHDL库.包.配置.ppt_第2页
VHDL库.包.配置.ppt_第3页
VHDL库.包.配置.ppt_第4页
VHDL库.包.配置.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1 主要内容 程序包和配置重点内容 配置 第4章VHDL的库 程序包和配置 2 1 库 Library 库是经编译后的数据的集合 存放包集合定义 实体定义 结构体定义和配置定义 库的功能类似于UNIX和MS DOS操作系统中的目录 库中存放设计的数据 在VHDL中 库的说明总放在设计单元的最前面 库中的各个设计单元可以用作进行其他设计的资源 一个设计可以使用多个库中的设计单元 第4章VHDL的库 程序包和配置 4 1VHDL的库 程序包和配置 3 第4章VHDL的库 程序包和配置 1 库的使用首先在设计的开头说明要引用的库 然后使用use子句指明要使用库中的哪一个设计单元 其书写格式为 Library库名 Use库名 程序包名 all 其中 程序包名就是实际设计要使用的库中的设计单元 all表示使用程序包中的所有项目 4 第4章VHDL的库 程序包和配置 引用库和程序包中的说明语句有以下4种形式 假定设计实体中的信号类型为std logic 其类型说明在ieee库的std logic 1164程序包中定义 形式一 Libraryieee Entityand2isPort a inieee Std logic 1164 Std logic b inieee Std logic 1164 Std logic c outieee Std logic 1164 Std logic Endand2 库说明 程序包 数据类型 5 第4章VHDL的库 程序包和配置 形式2 Libraryieee Useieee all Entityand2isPort a inStd logic 1164 Std logic b inStd logic 1164 Std logic c outStd logic 1164 Std logic Endand2 形式3 Libraryieee Useieee std logic 1164 all Entityand2isPort a instd logic b instd logic c outstd logic Endand2 6 第4章VHDL的库 程序包和配置 引用库和程序包中的说明语句有以下4种形式 假定设计实体中的信号类型为std logic 其类型说明在ieee库的std logic 1164程序包中定义 形式4 Libraryieee Useieee std logic 1164 std logic Entityand2isPort a instd logic b instd logic c outstd logic Endand2 7 第4章VHDL的库 程序包和配置 2 库的种类VHDL提供的库可分为两大类 设计库 对当前设计是永远可见的 不需在程序开头对它们进行说明 一般包括std库和work库 资源库 用来存放常规元件和常用模块的库 在使用时要进行说明 资源库的内容与厂商直接相关 现在的VHDL厂商和EDA工具厂商都有自己的资源库 其中含有厂商自定义的程序包 应用最广泛的资源库是ieee库 vital库和用户自定义的库 8 第4章VHDL的库 程序包和配置 1 std库是VHDL的标准库 包含程序包standard和textio 程序包standard中定义了bit bit vector character和time等数据类型 程序包textio主要包含了对文本文件进行读写操作的过程和函数 注意 使用程序包textio时要对库和程序包进行说明 Librarystd Usestd textio all 使用程序包standard时 由于VHDL规定standard程序包总是可见的 因此不必进行说明 9 第4章VHDL的库 程序包和配置 2 work库 是VHDL的工作库 在编译一VHDL的时候 默认其保存在work库中 因此work库可以用来临时保存设计人员以前编译过的元件和模块 也可以通过该库来使用其中的元件和模块 VHDL标准中规定了work库也是永远可见的 因此在使用work库的时候不需要对它进行说明 10 第4章VHDL的库 程序包和配置 3 ieee库 是应用最广泛的资源库 主要包括程序包std logic 1164 numeric bit numeric std math complex和math real 其中程序包std logic 1164 numeric bit numeric std是ieee标准化组织认可的程序包 现在有些公司 如synopsys公司提供了程序包std logic arith std logic signed和std logic unsigned等 虽没得到ieee标准化组织的认可 但仍然定义在ieee库中 使用ieee库时必须进行说明 Libraryieee Useieee std logic 1164 all 11 第4章VHDL的库 程序包和配置 4 vital库 是应用比较广泛的资源库 主要包括程序包vital timing和vital primitives 其中vital timing是一个时序程序包 vital primitives是一个基本元件程序包 它们可以提高VHDL门级时序模拟精度 5 用户自定义库 用来存放设计中共用的一些程序包 这是设计人员自己建立的资源库 可以提高设计的灵活性 在VHDL的开头要对库进行说明 12 第4章VHDL的库 程序包和配置 2 程序包 Package 在VHDL中 设计的实体和结构体中定义的数据类型 常量 子程序说明和元件说明等部分只能在该设计实体中使用 而对其他设计实体是不可见的 程序包说明像C语言中include语句一样 用来单纯地罗列VHDL中所要用到的信号定义 常量定义 数据类型 子程序说明和元件说明等 是一个可编译的设计单元 要使用程序包中的某些说明和定义 要用use语句说明 各种VHDL编译系统都含有多个标准程序包 如Std Logic 1164和Standard程序包 用户也可已自行设计程序包 保存到WORK下 13 第4章VHDL的库 程序包和配置 程序包由两个独立的单元组成 程序包说明部分和程序包包体部分构成 1 程序包说明部分的一般格式 PACKAGE程序包名IS说明语句END 程序包名 其中说明语句为 数据类型说明 常量说明 子程序说明 信号定义及元件说明等 2 程序包体单元的一般格式 PACKAGEBODY程序包名IS包体语句END 程序包名 14 第4章VHDL的库 程序包和配置 PACKAGEfunISSUBTYPEsegmentISBIT Vector 0to6 TYPEBCDISRANGE0to9 ENDfun ENTITYdecoderISPORT INPUT BCD DRIVE OUTSEGMENT ENDdecoder ARCHITECTUREartOFdecoderISBEGINWITHINPUTSELECT DRIVE 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 WHENOTHERS ENDart 例 在现行WORK库中定义程序包并立即使用实例 15 第4章VHDL的库 程序包和配置 几种应用较广的程序包 1 Standard预先在std库中编译 主要定义了布尔类型 bit类型 character类型 出错级别 实数类型 整数类型 时间类型 延迟长度子类型 自然数子类型 正整数子类型 string类型 bit vector子类型 文件打开方式类型和文件打开状态类型 对所有设计模块可见 2 textio预先在std库中编译 定义了line类型 text类型 side类型 操作宽度width子类型 文件input 文件output readline过程 对应于不同数据类型的read过程 writeline过程和对应于不同数据类型的write过程 对所有设计模块都不可见 使用时要进行说明 16 3 std logic 1164预先在ieee库中编译 是使用最广泛的程序包 定义了设计人员长采用的一些数据类型和函数 定义了std ulogic类型 std ulogic vector类型 std logic子类型 std logic vector类型 决断函数resolved X01Z子类型 UX01子类型 UX01Z子类型 对应于不同数据类型的and nand or nor xor xnor not函数 对应于不同数据类型的To bot To bitvector To stdulogic To stdlogicvector To stdulogicvector To X01 To X01Z To UX01转换函数 上升沿函数rising edge 下降沿函数falling edge和对应于不同类型的Is X函数 对所有设计模块都不可见 使用时要进行说明 第4章VHDL的库 程序包和配置 17 第4章VHDL的库 程序包和配置 4 numeric std已被定义为标准程序包 定义了用于综合的数据类型和算术函数 定义了两种数据类型 unsigned和signed 其中unsigned表示无符号的位矢量 signed表示带符号的位矢量 其最左端是最高位 还含有所有unsigned和signed类型的重载算术运算 还含有一些有用的类型转换函数 时钟检测函数和其他一些使用的函数 5 numeric bit与程序包numeric std基本相同 不同之处在于它的基本元素类型是bit 而不是std logic 18 3 配置 Configuration 配置语句用于描述各种设计实体和元件之间的连接关系以及设计实体和结构体之间的连接关系 设计者可以利用这种配置语句来选择不同的结构体 使其与要设计的实体相对应 仿真某一时实体时 可以利用配置来选择不同的结构体 进行性能对比实验以得到性能最佳的结构体 例如 要设计一个二输入四输出的译码器 如果一种结构中的基本元件采用反相器和三输入与门 而另一种结构中的基本元件都采用与非门 它们各自的结构体是不一样的 并且放在各自不同的库中 要设计译码器就可以利用配置语句实现对两种不同的结构体的选择 第4章VHDL的库 程序包和配置 19 1 默认配置配置语句的基本格式 Configurationofis 语句说明 End 配置语句根据不同的情况 其说明语句有简有繁 最简单的缺省配置格式 ConfigurationofisForEndfor End 教材中128页例题 第4章VHDL的库 程序包和配置 默认配置只能用来选择不含有任何块语句和元件的结构体 20 Libraryieee Useieee std logic 1164 all Entityexampleisport a b instd logic y outstd logic Endexample Architectureand2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a 第4章VHDL的库 程序包和配置 Architectureor2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a 21 Architecturexor2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a 第4章VHDL的库 程序包和配置 Architecturenor2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a 22 Architecturenand2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a 第4章VHDL的库 程序包和配置 23 Configurationcfg1ofexampleisforand2 arcendfor Endcfg1 Configurationcfg2ofexampleisforor2 arcendfor Endcfg2 Configurationcfg3ofexampleisfornand2 arcendfor Endcfg3 Configurationcfg4ofexampleisfornor2 arcendfor Endcfg4 Configurationcfg5ofexampleisforxor2 arcendfor Endcfg5 第4章VHDL的库 程序包和配置 配置语句cfg1将进行逻辑与操作的结构体配置给实体 配置语句cfg2将进行逻辑或操作的结构体配置给实体 24 2 元件配置 为了避免混淆 需要给出所说明元件属于哪一个设计库里的哪一个设计实体 以及设计实体所对应的是哪一个结构体 低级的配置实体 结构体对的配置 第4章VHDL的库 程序包和配置 25 基本书写结构 CONFIGURATION配置名OF实体名ISFOR选配结构体名FOR元件例化标号名 元件名USECONFIGURATION库名 元件配置名 ENDFOR FOR元件例化标号名 元件名USECONFIGURATION库名 元件配置名 ENDFOR ENDFOREND配置名 注意 所规定的低级配置一定要在当前配置库中已经存在时才能编译 第4章VHDL的库 程序包和配置 低级的配置 26 ARCHITECTUREstructureOFfull adderISCOMPONENTor2PORT a b INstd logic c OUTstd logic ENDCOMPONENT COMPONENTand2PORT a b INstd logic c OUTstd logic ENDCOMPONENT COMPONENTxor2PORT a b INstd logic c OUTstd logic ENDCOMPONENT SIGNALtmp1 tmp2 tmp3 std logic BEGINU1 xor2PORTMAP a b tmp1 第4章VHDL的库 程序包和配置 例题 全加器的实现LIBRARYIEEE USEIEEE sti logic 1164 all ENTITYfull adderISPORT a b Cin INstd logic Co S OUTstd logic ENDfull adder 2020 3 16 27 可编辑 28 U2 and2PORTMAP tmp1 Cin tmp2 U3 xor2PORTMAP tmp1 Cin S U4 and2PORTMAP a b tmp3 U5 or2PORTMAP tmp2 tmp3 Co ENDsturcture CONFIGURATIONfull adder cfgOFfull adderISFORstructureFORU1 U3 xor2USECONFIGURATIONwork xor2 cfg ENDFOR FORU2 U4 and2USECONFIGURATIONwork and2 cfg ENDFOR FORU5 or2USECONFIGURATIONwork or2 cfg ENDFOR ENDFOR Endfull adder cfg 第4章VHDL的库 程序包和配置 元件例化标名号为U1和U3所指定的是元件库work中的设计实体xor2 其结构体为低级配置xor2 cfg指定的结构体 29 实体 结构体对的配置 基本书写结构 CONFIGURATION配置名OF实体名ISFOR选配结构体名FOR元件调用标号名 元件名USEENTITY库名 实体名 结构体名 ENDFOR FOR元件调用标号名 元件名USEENTITY库名 实体名 结构体名 ENDFOR ENDFOREND配置名 注意 所规定的元件实体和其对应的结构体一定要在当前的配置库中已经存在 否则编译会出错 就是在配置的过程中为每一个元件直接指定实体的结构体 而不是指定该实体的低级配置 第4章VHDL的库 程序包和配置 30 CONFIGURATIONfull adder cfgOFfull adderISFORstuctureFORU1 U3 xor2USEENTITYwork xor2 xor2 arc ENDFOR FORU2 U4 and2USEENTITYwork and2 and2 arc ENDFOR FORU5 or2USEENTITYwork or2 or2 arc ENDFOR ENDFOR ENDfull adder cfg 第4章VHDL的库 程序包和配置 31 3 块的配置 要指明元件所在的块 块配置在结构体和元件之间分出另一层次 若对某个含有块语句的结构体进行文件配置时 必须指明是哪一个块的配置 与元件配置相同 块配置也有两种不同的形式 低级的配置形式和实体 结构体对的配置形式 第4章VHDL的库 程序包和配置 32 低级块配置格式 CONFIGURATION配置名OF实体名ISFOR选配结构体名FOR块名FOR元件调用标号名 元件名USECONFIGURATION库名 元件配置名 ENDFOR ENDFOR FOR块名FOR元件调用标号名 元件名USECONFIGURATION库名 元件配置名 ENDFOR ENDFOR ENDFOR END配置名 第4章VHDL的库 程序包和配置 33 实体 结构体对的块配置格式 CONFIGURATION配置名OF实体名ISFOR选配结构体名FOR块名FOR元件调用标号名 元件名USEENTITY库名 实体名 结构体名 ENDFOR ENDFOR FOR块名FOR元件调用标号名 元件名USEENTITY库名 实体名 结构体名 ENDFOR ENDFOR ENDFOR END配置名 第4章VHDL的库 程序包和配置 34 BEGINsum BLOCKBEGINU1 xor2PORTMAP a b tmp1 U2 xor2PORTMAP tmp1 Cin S ENDBLOCKsum carry BLOCKBEGINU3 or2PORTMAP tmp2 tmp3 Co middle BLCOKBEGINU4 and2PORTMAP tmp1 Cin tmp2 U5 and2PORTMAP a b tmp3 ENDBLOCKmiddle ENDBLOCKcarry ENDstructure 第4章VHDL的库 程序包和配置 35 FORstructureFORsumFORall xor2USECONFIGURATIONwork xor2 cfg ENDFOR ENDFOR FORcarryFORU3 or2USECONFIGURATIONwork or2 cfg ENDFOR FORmiddleFORall and2USECONFIGURATIONwork and2 cfg ENDFOR ENDFOR ENDFOR ENDFOR ENDfull adder cfg 第4章VHDL的库 程序包和配置 CONFIGURATIONfull adder cfgOFfull adderIS 36 4 结构体的配置 结构体配置也是对结构体中所引用的元件进行配置 但是这种配置与元件配置有很大的区别 元件配置是使用专门的配置语句来完成的 配置语句与元件所在的结构体是分开的 而结构体配置则是放在结构体的说明语句部分 它是一种配置说明不需要与元件所在的结构体分开的配置类型 低级配置格式 for useconfiguation 实体 结构体对配置格式 for useentity 第4章VHDL的库 程序包和配置 37 1 子程序重载 子程序重载允许设计人员用同一个名字编写两个或两个以上的子程序 但是这些子程序的参数类型 参数数目和返回值可能是不同的 1 参数类型的重载 是指被重载的子程序的参数类型是不同的 这时VHDL编译器将会根据子程序调用过程中的实参类型来选择与之相一致的子程序 4 2重载 第4章VHDL的库 程序包和配置 38 FUNCTIONmax i1 i2 bit vector RETURNbit vector FUNCTIONmax i1 i2 integer RETURNinteger ENDexample PACKAGEbodyexampleISFUNCTIONmax i1 i2 std logic vector RETURNstd logic vectorISVARIABLEtmp std logic vector i1 RANGE BEGINIF i1 i2 THENtmp i1 ELSEtmp i2 ENDIF RETURN tmp ENDmax 第4章VHDL的库 程序包和配置 LIBRARYIEEE USEIEEE std logic 1164 all PACKAGEexampleISFUNCTIONmax i1 i2 std logic vector RETURNstd logic vector 39 FUNCTIONmax i1 i2 bit vector RETURNbit vectorISVARIABLEtmp bit vector i1 RANGE BEGINIF i1 i2 THENtmp i1ELSEtmp i2 ENDIFRETURN tmp ENDmax 第4章VHDL的库 程序包和配置 FUNCTIONmax i1 i2 integer RETURNintegerISVARIABLEtmp integer BEGINIF i1 i2 THENtmp i1 ELSEtmp i2 ENDIFRETURN tmp ENDmax ENDexample 40 Libraryieee Useieee std logic 1164 all Usework example all Entitymax valueisPort a1 a2 instd logic vector 7downto0 b1 b2inbit vector 7downto0 c1 c2 ininteger a outstd logic vector 7downto0 b outbit vector 7downto0 c outinteger endmax value architecturebehaveofmax valueisbegina max a1 a2 b max b1 b2 c max c1 c2 endbehave 第4章VHDL的库 程序包和配置 41 2 参数数目的重载 是指相同名字的子程序具有不同数目的参数 参数类型却有可能相同 这时VHDL编译器将会根据子程序调用过程中的参数数目来选择与之相一致的子程序 LIBRARYIEEE USEIEEE std logic 1164 all PACKAGEexampleISFUNCTIONconvert a0 a1 std logic RETURNinteger FUNCTIONconvert a0 a1 a2 std logic RETURNinteger FUNCTIONconvert a0 a1 a2 a3 std logic RETURNinteger ENDexample PACKAGEbodyexampleIS 第4章VHDL的库 程序包和配置 42 FUNCTIONconvert a0 a1 std logic RETURNintegerISVARIABLEresult integer 0 BEGINIF a0 1 THENresult result 1 ENDIFIF a1 1 THENresult result 2 ENDIFENDconvert FUNCTIONconvert a0 a1 a2 std logic RETRUNintegerISVARIABLEresult integer 0 BEGINresult convert a0 a1 IF a2 1 THENresult result 4 ENDIF RETURN result ENDconvert 第4章VHDL的库 程序包和配置 43 FUNCTIONconvert a0 a1 a2 a3 std logic RETURNintegerISVARIABLEresutl integer 0 BEGINresult convert a0 a1 a2 IF a3 1 THENresult result 8 ENDIFRETURN result ENDconvert ENDexample 第4章VHDL的库 程序包和配置 44 Libraryieee Useieee std logic 1164 all Usework example all EntitytestisPort i0 i1 i2 i3 instd logic Endtest ArchitecturebehaveoftestisSignalint1 int2 int3 integer BeginInt1 convert i0 i1 Int2 convert i0 i1 i2 Int3 convert i0 i1 i2 i3 Endbehave 第4章VHDL的库 程序包和配置 45 3 函数返回类型的重载 是指被重载的同名函数的返回值类型是不同的 这时VHDL编译器将会根据函数调用过程中的函数返回类型来选择与之一致的函数 LIBRARYIEEE USEIEEE std logic 1164 all PACKAGEexampleISFUNCTIONmax i1 i2 std logic vector RETURNstd logic vector FUNCTIONmax i1 i2 std logic vector RETURNbit vector ENDexample 第4章VHDL的库 程序包和配置 46 PACKAGEbodyexampleISFUNCTIONmax i1 i2 std logic vector RETURNstd logic vectorISVARIABLEtmp std logic vector i1 RANGE BEGINIF i1 i2 THENtmp i1 ELSEtmp i2 ENDIF RETURN tmp ENDmax 第4章VHDL的库 程序包和配置 47 FUNCTIONmax i1 i2 std logic vector RETURNbit vectorISVARIABLEtmp std logic vector i1 RANGE BEGINIF i1 i2 THENtmp i1 ELSEtmp i2 ENDIFRETURN to bitvector tmp ENDmaxENDexample 第4章VHDL的库 程序包和配置 48 Libraryieee Useieee std logic 1164 all

温馨提示

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

评论

0/150

提交评论