元件例化语句

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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. 元件声明
定义:对所调用的较低层次的实体模块(元件)的 名称、类属参数、端口类型、数据类型的声明
语法:
COMPONENT 元件名 GENERIC 说明; PORT 说明; END COMPONENT; ----类属声明 ----端口声明
元件声明类似实体声明(entity)
2. 元件的例化
定义:把低层元件安装(调用)到当前层次 设计实体内部的过程。 包括:类属参数传递、元件端口映射。 COMPONENT_INSTANT语句的书写格式为:
元件例化语句
元件例化就是将预先设计好的设计实体 定义为一个元件,然后利用映射语句将此元 件与另一个设计实体中的指定端口相连,从 而进行层次化设计。元件例化是使VHDL设 计实体构成“自上而下”或“自下而上”层 次化设计的一种重要途径。
• 元件例化语句分为元件声明和元件例化 两部分。 • 用元件例化方式设计电路的方法是: • (1)完成各种元件的设计。 • (2)元件声明。 • (3)通过元件例化语句调用这些元件, 产生需要的设计电路。
位置映射方法
所谓位置映射就是在下一层中元件声明的信号书写顺 序位置和PORT MAP()中指定的实际信号书写顺序位置 一一对应。例如,在二输入与门中端口的输入输出定义为: PORT (a,b: IN BIT;
c: OUT BIT);
在设计的引用中与门u2的信号对应关系描述为:
u2: and2 PORT MAP Leabharlann Baidunsel,d1,ab);
标号名:元件名 PORT MAP (信号,· · · );
例如: u2: and2 PORT MAP (nsel,d1,ab);
标号名加在元件名的前面,在该构造体的说明中该 标号名一定是唯一的。
下一层元件的端口信号与实际连接的信号用 PORT MAP的映射关系联系起来。 映射方法有两种:一种是位置映射;一种是名称映 射。
名称映射方法
所谓名称映射就是将已经存于库中的现成模块的各端 口名称,赋予设计中模块的信号名。 例如: u2: and2 PORT MAP (a=>nsel,b=>d1,c=>ab);
在输出信号没有连接的情况下,对应端口的描述可以省略。
可在以下部分声明元件: 构造体(Architecture) 程序包(Package) 块(Block)
被声明元件的来源:
VHDL设计实体;
其它HDL设计实体;
另外一种标准格式的文件,如EDIF或XNF; 厂商提供的工艺库中的元件、IP核。
元件声明举例
例1:利用2输入与非门元件,设计4输入的与非与非电路。
元件声明举例
方法一:在调用文件里声明元件,它放在结构 体的begin之前。 第一步:设计2输入与非门,其VHDL源程 序为nand_2.vhd; 第二步:元件声明及元件例化,其VHDL 源程序为nand_4.vhd;
例1:利用2输入与非门元件,设计4输入的与非与 非电路。 方法2:将元件声明放在程序包里进行说明 第一步:设计2输入与非门,其VHDL源程序为 nand_2.vhd; 第二步:元件声明,放在程序包里,其VHDL源程 序为mypkg.vhd; 第三步:元件例化,其VHDL源程序为 mynand_4.vhd;
作业题 • 用一位D触发器,利用元件例化语句实现 4位移位寄存器。 • 思路: • (1)设计一位D触发器的源程序文件 shift_reg1.vhd。 • (2)用元件例化实现4位移位寄存器文 件shift_reg4.vhd。
RTL寄存器原理图
library ieee; use ieee.std_logic_1164.all; entity shift_reg1 is port(clk:in std_logic; D:in std_logic; Q:out std_logic); end entity; architecture one of shift_reg1 is begin process(clk,D) begin if clk'event and clk='1' then Q<=D; end if; end process;
相关文档
最新文档