VHDL第六讲_VHDL的元件例化语句_第1页
VHDL第六讲_VHDL的元件例化语句_第2页
VHDL第六讲_VHDL的元件例化语句_第3页
VHDL第六讲_VHDL的元件例化语句_第4页
VHDL第六讲_VHDL的元件例化语句_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

第六讲VHDL硬件描述语言 4 教学课时 2学时教学内容 VHDL语句 1 元件例化语句 1学时 2 生成语句 1学时 元件例化语句 元件例化就是将预先设计好的设计实体定义为一个元件 然后利用映射语句将此元件与另一个设计实体中的指定端口相连 从而进行层次化设计 元件例化是使VHDL设计实体构成 自上而下 或 自下而上 层次化设计的一种重要途径 元件例化语句分为元件声明和元件例化两部分 用元件例化方式设计电路的方法是 1 完成各种元件的设计 2 元件声明 3 通过元件例化语句调用这些元件 产生需要的设计电路 元件声明语句的格式 COMPONENT元件名 GENERIC PORT ENDCOMPONENT 元件例化语句的格式 元件例化就是将元件的引脚与调用该元件的端口的引脚相关联 关联方法有位置关联 名字关联 混合关联 1 位置关联方式例化名 元件名portmap 信号1 信号2 2 名字关联方式例化名 元件名portmap 信号关联式1 信号关联式2 信号关联式形如 a a1 b b1 意思是将元件的引脚a与调用该元件的端口a1相关联 这种情况下 位置可以是任意的 3 混合关联方式将上述两种相结合 即为混合关联方式 元件例化举例 例1 利用2输入与非门元件 设计4输入的与非与非电路 方法一 在调用文件里声明元件 它放在结构体的begin之前 第一步 设计2输入与非门 其VHDL源程序为nand 2 vhd 第二步 元件声明及元件例化 其VHDL源程序为nand 4 vhd 生成的RTL视图 libraryieee useieee std logic 1164 all entitynand 2isport a b instd logic y outstd logic endnand 2 architectureoneofnand 2isbeginprocess a b beginy anandb endprocess endone libraryieee useieee std logic 1164 all entitynand 4isport a b c d instd logic y outstd logic endnand 4 architectureoneofnand 4is 元件声明componentnand 2port a b instd logic y outstd logic endcomponent 元件声明signaly1 y2 std logic beginu1 nand 2portmap a b y1 元件例化u2 nand 2portmap c d y2 u3 nand 2portmap y1 y2 y endone 例1 利用2输入与非门元件 设计4输入的与非与非电路 方法2 将元件声明放在程序包里进行说明第一步 设计2输入与非门 其VHDL源程序为nand 2 vhd 第二步 元件声明 放在程序包里 其VHDL源程序为mypkg vhd 第三步 元件例化 其VHDL源程序为mynand 4 vhd 程序包 p228 在设计实体中声明的数据类型 数据对象只能用于本实体和结构体内部 不能被其他实体和结构体使用 就像高级语言中的局部变量一样 为了使数据类型 元件等能被多个设计实体调用或共享 VHDL提供了程序包的机制 程序包就像是公用的工具箱 各个设计实体都可使用其中定义的工具 程序包的格式 package程序包名is程序包头说明部分end程序包名 packagebody程序包名is程序包体说明部分及包体内容end程序包名 如何打开程序包 用语句usework 程序包名 all 打开程序包 其中 work库是用户设计的现行工作库 用于存放自己设计的工程项目 在QuartusII的根目录下为设计建立一个工程目录 即文件夹 VHDL综合器将此目录默认为work库 但work不是设计项目的目录名 而是一个逻辑名 VHDL标准规定work库总是可见的 因此 在程序设计时不需要明确指定 用将元件声明放在程序包里的设计方法设计4输入的与非与非门 详见演示实例mynand 4 qpf 1 在QuartusII的根目录下新建工程mynand 4 2 编辑VHDL源程序文件nand 2 vhd mypkg vhd mynand 4 vhd nand 2 vhd用来描述2输入与非门 mypkg vhd用来进行元件声明 mynand 4 vhd实现元件例化 libraryieee useieee std logic 1164 all entitynand 2isport a b instd logic y outstd logic endnand 2 architectureoneofnand 2isbeginprocess a b beginy anandb endprocess endone libraryieee useieee std logic 1164 all packagemypkgiscomponentnand 2port a b instd logic y outstd logic 元件声明endcomponent endmypkg libraryieee useieee std logic 1164 all usework mypkg all 打开程序包entitymynand 4isport a b c d instd logic y outstd logic endmynand 4 architectureoneofmynand 4issignaly1 y2 std logic begin 元件例化u1 nand 2portmap a b y1 u2 nand 2portmap c d y2 u3 nand 2portmap y1 y2 y endone 思考题 用一位D触发器 利用元件例化语句实现4位移位寄存器 思路 1 设计一位D触发器的源程序文件shift reg1 vhd 2 用元件例化实现4位移位寄存器文件shift reg4 vhd 4位D触发器的VHDL程序文件 libraryieee useieee std logic 1164 all entityshift reg4isport clk instd logic D instd logic Q outstd logic endshift reg4 architectureoneofshift reg4iscomponentshift reg1port clk instd logic D instd logic Q outstd logic endcomponent 元件声明signalQ0 Q1 Q2 std logic begin 元件例化u0 shift reg1portmap clk D Q0 u1 shift reg1portmap clk Q0 Q1 u2 shift reg1portmap clk Q1 Q2 u3 shift reg1portmap clk Q2 Q endone 1位D触发器的VHDL程序文件 libraryieee useieee std logic 1164 all entityshift reg1isport clk instd logic D instd logic Q outstd logic endentity architectureoneofshift reg1isbeginprocess clk D beginifclk eventandclk 1 thenQ D endif endprocess endone 生成语句生成语句 GENERATE 是一种可以建立重复结构或者是在多个模块的表示形式之间进行选择的语句 由于生成语句可以用来产生多个相同的结构 因此使用生成语句就可以避免多段相同结构的VHDL程序的重复书写 相当于 复制 生成语句有两种形式 FOR GENERATE模式和IF GENERATE模式 FOR GENERATE模式的生成语句FOR GENERATE模式生成语句的书写格式为 标号 FOR循环变量IN离散范围GENERATE ENDGENERATE 标号 其中循环变量的值在每次的循环中都将发生变化 离散范围用来指定循环变量的取值范围 循环变量的取值将从取值范围最左边的值开始并且递增到取值范围最右边的值 实际上也就限制了循环的次数 循环变量每取一个值就要执行一次GENERATE语句体中的并行处理语句 最后FOR GENERATE模式生成语句以保留字ENDGENERATE 标号 来结束GENERATE语句的循环 生成语句的典型应用是存储器阵列和寄存器 下面以四位移位寄存器为例 说明FOR GENERATE模式生成语句的优点和使用方法 4位D触发器的VHDL程序文件 libraryieee useieee std logic 1164 all entityshift reg4isport clk instd logic D instd logic Q outstd logic endshift reg4 architecturetwoofshift reg4iscomponentshift reg1port clk instd logic D instd logic Q outstd logic endcomponent 元件声明signaly std logic vector 0to4 beginy 0 D u0 foriin0to3generate 元件生成ux shift reg1portmap clk y i y i 1 endgenerate Q y 4 endtwo 1位D触发器的VHDL程序文件 libraryieee useieee std logic 1164 all entityshift reg1isport clk instd logic D instd logic Q outstd logic endentity architectureoneofshift reg1isbeginprocess clk D beginifclk eventandclk 1 thenQ D endif endprocess endone 例 FOR GENERATE模式生成语句应用 用1位D触发器设计4位移位寄存器 可以看出用FOR GENERATE模式生成语句替代思考题中的四条元件例化语句 使VHDL程序变的更加简洁明了 IF GENERATE模式生成语句IF GENERATE模式生成语句的书写格式如下 标号 IF条件GENERATE ENDGENERATE 标号 思考题 设计一位二进制全加器 然后利用for generate生成语句实现4位二进制全加器 并仿真验证设计结果 libraryieee useieee std logic 1164 all entityadder 1isport a b instd logic cin instd logic cout outstd logic s outstd logic endadder 1 architectureoneofadder 1issignaltemp std logic vector 2downto0 beginprocess a b cin begintemp a 一位二进制全加器的VHDL代码 libraryieee useieee std logic 1164 all entityadder 4isport a b instd logic vector 3downto0 cin instd logic cout outstd logic sum outstd logic vector 3downto0 endentity architectureoneofadder 4iscomponentadder 1port a b instd logic cin instd logic cout outstd logic s outstd logic endcomponent signalqout std

温馨提示

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

评论

0/150

提交评论