- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六讲 VHDL硬件描述语言_4 教学课时:2学时 教学内容: VHDL语句 (1)元件例化语句(1学时) (2)生成语句(1学时) 元件例化语句 元件例化就是将预先设计好的设计实体定义为一个元件,然后利用映射语句将此元件与另一个设计实体中的指定端口相连,从而进行层次化设计。元件例化是使VHDL设计实体构成“自上而下”或“自下而上”层次化设计的一种重要途径。 元件例化语句分为元件声明和元件例化两部分。 用元件例化方式设计电路的方法是: (1)完成各种元件的设计。 (2)元件声明。 (3)通过元件例化语句调用这些元件,产生需要的设计电路。 元件声明语句的格式 COMPONENT 元件名 [GENERIC 参数说明;] PORT 端口说明; END COMPONENT; 元件例化语句的格式 元件例化就是将元件的引脚与调用该元件的端口的引脚相关联。关联方法有位置关联,名字关联,混合关联。 (1)位置关联方式 例化名:元件名 port map(信号1,信号2,.....); (2)名字关联方式 例化名:元件名 port map(信号关联式1,信号关联式2,.....); 信号关联式形如:a=a1,b=b1,意思是将元件的引脚a与调用该元件的端口a1相关联。这种情况下,位置可以是任意的。 (3)混合关联方式 将上述两种相结合,即为混合关联方式。 元件例化举例 例1:利用2输入与非门元件,设计4输入的与非与非电路。 方法一:在调用文件里声明元件,它放在结构体的begin之前。 第一步:设计2输入与非门,其VHDL源程序为nand_2.vhd; 第二步:元件声明及元件例化,其VHDL源程序为nand_4.vhd; library ieee; use ieee.std_logic_1164.all; entity nand_2 is port(a,b:in std_logic; y:out std_logic); end nand_2; architecture one of nand_2 is begin process(a,b) begin y=a nand b; end process; end one; 例1:利用2输入与非门元件,设计4输入的与非与非电路。 方法2:将元件声明放在程序包里进行说明 第一步:设计2输入与非门,其VHDL源程序为nand_2.vhd; 第二步:元件声明,放在程序包里,其VHDL源程序为mypkg.vhd; 第三步:元件例化,其VHDL源程序为mynand_4.vhd; 程序包(p228) 在设计实体中声明的数据类型、数据对象只能用于本实体和结构体内部,不能被其他实体和结构体使用,就像高级语言中的局部变量一样。为了使数据类型、元件等能被多个设计实体调用或共享,VHDL提供了程序包的机制。程序包就像是公用的工具箱,各个设计实体都可使用其中定义的工具。 程序包的格式 package 程序包名 is 程序包头说明部分 end 程序包名; package body 程序包名 is 程序包体说明部分及包体内容 end 程序包名; 如何打开程序包? 用语句use work.程序包名.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实现元件例化。 library ieee; use ieee.std_logic_1164.all; entity nand_2 is port(a,b:in std_logic; y:out std_logic); end nand_2; architecture one of nand_2 is begin process(a,b) begin y=a nand b; end process; end one; 思考题 用一位D触发器,利用元件例化语句实现4位移位寄存器。 思路: (1)设计一位D触发器的源程序文件shift_reg1.vhd。 (2)用元件例
文档评论(0)