版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021/7/231第六讲 VHDL硬件描述语言_4教学课时:教学课时:2学时学时教学内容:教学内容:VHDL语句语句(1)元件例化语句()元件例化语句(1学时)学时)(2)生成语句()生成语句(1学时)学时)2021/7/232元件例化语句元件例化就是元件例化就是将预先设计好的设计实体将预先设计好的设计实体定义为一个元件定义为一个元件,然后利用映射语句将然后利用映射语句将此元件与另一个设计实体中的指定端口此元件与另一个设计实体中的指定端口相连相连,从而进行层次化设计从而进行层次化设计。元件例化。元件例化是使是使VHDL设计实体构成设计实体构成“自上而下自上而下”或或“自下而上自下而上”层次化
2、设计的一种重要层次化设计的一种重要途径。途径。2021/7/233元件例化语句分为元件声明和元件例化两部分。用元件例化方式设计电路的方法是:(1)完成各种元件的设计。(2)元件声明。(3)通过元件例化语句调用这些元件,产生需要的设计电路。2021/7/234元件声明语句的格式COMPONENT 元件名元件名 GENERIC ; PORT ;END COMPONENT; 2021/7/235元件例化语句的格式元件例化就是将元件的引脚与调用该元件的端口的引脚相关联。关联方法有位置关联,名字关联,混合关联。(1)位置关联方式)位置关联方式例化名:元件名例化名:元件名 port map(信号信号1,信
3、号,信号2,.);(2)名字关联方式)名字关联方式例化名:元件名例化名:元件名 port map(信号关联式信号关联式1,信号关联式,信号关联式2,.);信号关联式形如:信号关联式形如:a=a1,b=b1,意思是将元件的引脚意思是将元件的引脚a与调用该元与调用该元件的端口件的端口a1相关联。这种情况下,位置可以是任意的。相关联。这种情况下,位置可以是任意的。(3)混合关联方式)混合关联方式将上述两种相结合,即为混合关联方式。将上述两种相结合,即为混合关联方式。2021/7/236元件例化举例例例1:利用:利用2输入与非门元件,设计输入与非门元件,设计4输入的与非与非输入的与非与非电路。电路。方
4、法一方法一:在调用文件里声明元件,在调用文件里声明元件,它放在结构体的它放在结构体的begin之前之前。第一步:设计第一步:设计2输入与非门,其输入与非门,其VHDL源程序为源程序为nand_2.vhd;第二步:元件声明及元件例化,其第二步:元件声明及元件例化,其VHDL源程序为源程序为nand_4.vhd;生成的生成的RTL视图:视图:2021/7/237library ieee;use ieee.std_logic_1164.all;entity nand_2 isport(a,b:in std_logic;y:out std_logic);end nand_2;architecture
5、one of nand_2 isbeginprocess(a,b)beginy=a nand b;end process;end one;library ieee;use ieee.std_logic_1164.all;entity nand_4 isport(a,b,c,d:in std_logic;y:out std_logic);end nand_4;architecture one of nand_4 is-元件声明元件声明component nand_2 port(a,b:in std_logic;y:out std_logic);end component;-元件声明元件声明sig
6、nal y1,y2:std_logic; beginu1:nand_2 port map(a,b,y1);-元件例化元件例化u2:nand_2 port map(c,d,y2);u3:nand_2 port map(y1,y2,y);end one;2021/7/238例例1:利用:利用2输入与非门元件,设计输入与非门元件,设计4输入的与输入的与非与非电路。非与非电路。方法方法2:将元件声明放在程序包里进行说明:将元件声明放在程序包里进行说明 第一步:设计第一步:设计2输入与非门,其输入与非门,其VHDL源程序为源程序为nand_2.vhd;第二步:元件声明,放在程序包里,其第二步:元件声明,
7、放在程序包里,其VHDL源程序源程序为为mypkg.vhd;第三步:元件例化,其第三步:元件例化,其VHDL源程序为源程序为mynand_4.vhd;2021/7/239程序包(p228)在设计实体中声明的数据类型、数据对象只能用于本实体和结构体内部,不能被其他实体和结构体使用,就像高级语言中的局部变量一样。为了使数据类型、元件等能被多个设计实体调用或共享,VHDL提供了程序包的机制。程序包就像是公用的工具箱,各个设计实体都可使用其中定义的工具。2021/7/2310程序包的格式package 程序包名 is程序包头说明部分end 程序包名;package body 程序包名 is程序包体说明
8、部分及包体内容end 程序包名;2021/7/2311如何打开程序包?用语句use work.程序包名.all;打开程序包。其中,work库是用户设计的现行工作库,用于存放自己设计的工程项目。在QuartusII 的根目录下为设计建立一个工程目录(即文件夹),VHDL综合器将此目录默认为work库。但work不是设计项目的目录名,而是一个逻辑名。VHDL标准规定work库总是可见的,因此,在程序设计时不需要明确指定。2021/7/2312用将元件声明放在程序包里的设计方法设计用将元件声明放在程序包里的设计方法设计4输入的与非输入的与非与非门,详见演示实例与非门,详见演示实例mynand_4.q
9、pf。(1)在在QuartusII 的根目录下新建工程的根目录下新建工程mynand_4.(2)编辑编辑VHDL源程序文件源程序文件nand_2.vhd,mypkg.vhd,mynand_4.vhd.nand_2.vhd用来描述用来描述2输入与非门。输入与非门。mypkg.vhd用来进行元件声明。用来进行元件声明。mynand_4.vhd实现元件例化。实现元件例化。2021/7/2313library ieee;use ieee.std_logic_1164.all;entity nand_2 isport(a,b:in std_logic;y:out std_logic);end nand_
10、2;architecture one of nand_2 isbeginprocess(a,b)beginy=a nand b;end process;end one;library ieee;use ieee.std_logic_1164.all;package mypkg iscomponent nand_2port(a,b:in std_logic; y:out std_logic);-元件声明元件声明end component;end mypkg;library ieee;use ieee.std_logic_1164.all;use work.mypkg.all;-打开程序包打开程序
11、包entity mynand_4 isport(a,b,c,d:in std_logic;y:out std_logic);end mynand_4;architecture one of mynand_4 issignal y1,y2:std_logic; begin-元件例化元件例化u1:nand_2 port map(a,b,y1);u2:nand_2 port map(c,d,y2);u3:nand_2 port map(y1,y2,y);end one;2021/7/2314思考题用一位用一位D触发器,利用元件例化语句实现触发器,利用元件例化语句实现4位移位寄存器。位移位寄存器。思路
12、:思路:(1)设计一位)设计一位D触发器的源程序文件触发器的源程序文件shift_reg1.vhd。(2)用元件例化实现)用元件例化实现4位移位寄存器文件位移位寄存器文件shift_reg4.vhd。2021/7/23154位位D触发器的触发器的VHDL程序文件:程序文件:library ieee;use ieee.std_logic_1164.all;entity shift_reg4 isport(clk:in std_logic;D:in std_logic;Q:out std_logic);end shift_reg4;architecture one of shift_reg4 is
13、component shift_reg1port(clk:in std_logic;D:in std_logic;Q:out std_logic);end component;-元件声明元件声明signal Q0,Q1,Q2:std_logic;begin-元件例化元件例化u0:shift_reg1 port map(clk,D,Q0);u1:shift_reg1 port map(clk,Q0,Q1);u2:shift_reg1 port map(clk,Q1,Q2);u3:shift_reg1 port map(clk,Q2,Q);end one;1位位D触发器的触发器的VHDL程序文件:
14、程序文件:library ieee;use ieee.std_logic_1164.all;entity shift_reg1 isport(clk:in std_logic;D:in std_logic;Q:out std_logic);end entity;architecture one of shift_reg1 isbeginprocess(clk,D)beginif clkevent and clk=1 thenQ=D;end if;end process;end one;2021/7/2316生成语句生成语句生成语句(生成语句(GENERATE)是一种可以建立重复结构或者是在多个
15、模块)是一种可以建立重复结构或者是在多个模块的表示形式之间进行选择的语句。由于生成语句可以用来产生多个相的表示形式之间进行选择的语句。由于生成语句可以用来产生多个相同的结构,因此使用生成语句就可以避免多段相同结构的同的结构,因此使用生成语句就可以避免多段相同结构的VHDL程序程序的重复书写(的重复书写(相当于相当于复制复制)。)。生成语句有两种形式:生成语句有两种形式:FOR- GENERATE模式和模式和IF- GENERATE模式。模式。FOR- GENERATE 模式的生成语句模式的生成语句FOR- GENERATE 模式生成语句的书写格式为:模式生成语句的书写格式为:标号:标号:FOR
16、 循环变量循环变量 IN 离散范围离散范围 GENERATE ;END GENERATE 标号标号; 2021/7/2317 其中循环变量的值在每次的循环中都将发生变化;离散范其中循环变量的值在每次的循环中都将发生变化;离散范围用来指定循环变量的取值范围,循环变量的取值将从取值围用来指定循环变量的取值范围,循环变量的取值将从取值范围最左边的值开始并且递增到取值范围最右边的值,实际范围最左边的值开始并且递增到取值范围最右边的值,实际上也就限制了循环的次数;循环变量每取一个值就要执行一上也就限制了循环的次数;循环变量每取一个值就要执行一次次GENERATE语句体中的并行处理语句;最后语句体中的并行
17、处理语句;最后FOR- GENERATE模式生成语句以保留字模式生成语句以保留字END GENERATE 标标号:号:;来结束;来结束GENERATE语句的循环。语句的循环。 生成语句的典型应用是存储器阵列和寄存器。下面以四位生成语句的典型应用是存储器阵列和寄存器。下面以四位移位寄存器为例,说明移位寄存器为例,说明FOR- GENERATE模式生成语句的优模式生成语句的优点和使用方法。点和使用方法。 2021/7/23184位位D触发器的触发器的VHDL程序文件:程序文件:library ieee;use ieee.std_logic_1164.all;entity shift_reg4 is
18、port(clk:in std_logic;D:in std_logic;Q:out std_logic);end shift_reg4;architecture two of shift_reg4 iscomponent shift_reg1port(clk:in std_logic;D:in std_logic;Q:out std_logic);end component;-元件声明元件声明signal y:std_logic_vector(0 to 4);beginy(0)=D;u0:for i in 0 to 3 generate元件生成元件生成ux:shift_reg1 port m
19、ap(clk,y(i),y(i+1);end generate;Q=y(4);end two;1位位D触发器的触发器的VHDL程序文件:程序文件:library ieee;use ieee.std_logic_1164.all;entity shift_reg1 isport(clk:in std_logic;D:in std_logic;Q:out std_logic);end entity;architecture one of shift_reg1 isbeginprocess(clk,D)beginif clkevent and clk=1 thenQ=D;end if;end pro
20、cess;end one;例例: FOR- GENERATE模式生成语句应用模式生成语句应用.用用1位位D触发器设计触发器设计4位移位寄存器。位移位寄存器。 2021/7/2319 可以看出用可以看出用FOR- GENERATE模式生成语句替代思考题中模式生成语句替代思考题中的四条元件例化语句,使的四条元件例化语句,使VHDL程序变的更加简洁明了。程序变的更加简洁明了。IF- GENERATE模式生成语句模式生成语句IF- GENERATE模式生成语句的书写格式如下:模式生成语句的书写格式如下:标号:标号:IF 条件条件 GENERATE ;END GENERATE 标号标号; 2021/7/
21、2320思考题设计一位二进制全加器,然后利用for-generate生成语句实现4位二进制全加器,并仿真验证设计结果。2021/7/2321library ieee;use ieee.std_logic_1164.all;entity adder_1 isport(a,b:in std_logic;cin:in std_logic;cout:out std_logic;s:out std_logic);end adder_1;architecture one of adder_1 issignal temp:std_logic_vector(2 downto 0);beginprocess(a,b,cin)begintemp=a&b&cin;if temp=011 or temp=101 or temp=110 or temp=111 thencout=1;elsecout=0;end if;s=a xor b xo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年网络综艺行业发展运行现状及投资潜力预测报告
- 2023-2029年中国牙齿矫正设备行业市场全景评估及投资前景展望报告
- 2025劳动合同法全文实施细则
- 2024邮政业行业分析报告
- 电子工业用助剂项目可行性研究报告申请立项
- 2025年液位传感器项目评估报告
- 2025年中国常压储罐行业市场前瞻与投资战略规划分析报告
- 2025年18L马口铁罐项目可行性研究报告
- 半消声室行业行业发展趋势及投资战略研究分析报告
- 2025年中国食品礼品行业发展趋势及投资前景预测报告
- 麻醉医学知识培训培训课件
- 人教版四年级上册数学 第五单元《平行四边形和梯形》单元专项训练 作图题(含答案)
- 物业品质督导述职报告
- 2024年山东济南轨道交通集团有限公司招聘笔试参考题库含答案解析
- 疗愈行业现状分析
- 北京海淀区2023-2024学年六年级上学期期末数学数学试卷
- 2023年安全总监年终工作总结
- 浙江省杭州拱墅区2023-2024学年六年级上学期期末语文试题
- 以消费者为中心:提升营销效果的技巧
- 部编版四年级道德与法治上册期末复习计划
- 兽用疫苗管理制度
评论
0/150
提交评论