元件例化

合集下载

VHDL中元件例化语句的使用

VHDL中元件例化语句的使用
C0M P0NENT。
(2)元 件例 化 语句
例 化名 :元 件 名 PORT MAP( [端 口名 =>] 连接 端 口名 ,...) ;
元 件 例 化 语 句 ,其 中的 例 化 名 必 须是 已经 存在 的 , 它类 似 于 标在 当前 电路 设计 系 统 中的一 个插 座 名 ,而 元件 名 则是 准 备在 此插 座 上 插入 的底 层 设计 中的 元件 名 PORT MAP是 端 口映射 ,或 端 口 连接 的意 思 ,其 中 的“端 口名 ”是在 元件 定 义语 句 中 的端 口名表 中 己 定 义好 的 元件 端 口的 名字 ,或 者 说是 顶层 文 件 中待 连接 的 各个 元件 本 身 的端 口名 。“连 接 端 口名 ”则是 顶 层系 统 中准 备 与接 入 的元 件 的 端 口相 连 的通信 线名 ,相 当于插 座上各插 针的 引脚 名 。元 件例化 就是 讲元 件的 引脚与 调用该 元件 的端 口的引脚相 关联 ,该关联 有三种 表达 方式 ,一是端 口名关 联法 也称 端 口名 映射 法 。形式 :例 化名 : 元件 名 PORT MAP(信号 关联式 1,信号关 联式2,…);信号 关联式 形如 : b=>b1,意思是将元 件的 引脚b与调用该 元件 的端 [Slbl相关 联 ,符号“=>” 为连接 符 号 。这 时 ,端 口名 与 连接 端 口名 的对 应 形式 在PORT MAP 句 中 的位置 可 以是 任 意 的 。二 是 位置 关 联法 。所 谓 位置 关 联 ,就是 以位置 的对 应 关系 连 接相 应 的端 口。形 式 :例 化 名 :元 件 名 PORT MAP(信号 l,信 号2, …);使 用 这种 方 式 ,端 口名 和关 联 连接 符 号 都 可省 去 ,在PORT MAP子 句 中要 求连 接端 口的信 号排 列 方 式与 所 需例 化 的 元件 端 口定 义 的端 口名 相对 应 。三 是 混合 关联 法 , 即端 口 名 映射 法与 位置 关 联法 相结 合使 用 的方 法 。

元件例化语句

元件例化语句
பைடு நூலகம்
位置映射方法
所谓位置映射就是在下一层中元件声明的信号书写顺 序位置和PORT MAP()中指定的实际信号书写顺序位置 一一对应。例如,在二输入与门中端口的输入输出定义为: PORT (a,b: IN BIT;
c: OUT BIT);
在设计的引用中与门u2的信号对应关系描述为:
u2: and2 PORT MAP (nsel,d1,ab);
例1:利用2输入与非门元件,设计4输入的与非与 非电路。 方法2:将元件声明放在程序包里进行说明 第一步:设计2输入与非门,其VHDL源程序为 nand_2.vhd; 第二步:元件声明,放在程序包里,其VHDL源程 序为mypkg.vhd; 第三步:元件例化,其VHDL源程序为 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)用元件例化实现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;

元器件例化语句

元器件例化语句

元器件例化语句1. 元器件例化语句就像是魔法咒语一样,能让电路设计变得超简单!比如说,我要设计一个计数器电路,使用D触发器的例化语句,就像把一个个小魔法零件组装起来,“DFF_inst : DFF port map ( clk => clk, d => data, q => count );”,看,一个简单的计数器就有雏形啦。

2. 元器件例化语句啊,那可是电路世界里的万能钥匙。

就像你玩积木,每个不同形状的积木(元器件)都有它特定的拼接方式(例化语句)。

像在做一个简单的数字时钟电路时,用七段数码管的例化语句“SEG_DISP_inst : SEG_DISP port map ( num => time_val, seg =>seg_out );”,就如同把代表时间的数字准确地放在了该放的位置。

3. 元器件例化语句,你可别小瞧它,这可是电路设计师的秘密武器呢。

想象一下,你是个大厨,元器件是食材,例化语句就是你独特的烹饪手法。

例如我在构建一个音频放大电路,三极管的例化语句“TRANS_inst : TRANS port map ( base => input_signal, collector => output_signal );”就像恰到好处地调味,让声音放大得恰到好处。

4. 嘿,元器件例化语句真的很有趣!它就像给每个电子元器件安排一个专属座位一样。

我做一个LED闪烁电路的时候,LED的例化语句“LED_inst : LED port map ( anode => power, cathode => control_signal );”就像告诉LED,你就坐这儿,然后按照我的规则闪起来。

5. 元器件例化语句简直就是电路里的“排兵布阵”之法。

你看,在设计一个逻辑门电路的时候,与门的例化语句“AND_GATE_inst :AND_GATE port map ( input1 => a, input2 => b, output => result );”,这就如同在战场上把士兵(输入信号)安排到正确的位置(与门的输入端口),然后得到预期的战斗结果(输出信号)。

30.用元件例化语句设计电路

30.用元件例化语句设计电路
end component;
componentfulladd
port(in1,in2,cin:instd_logic;
fsum,fcarry:outstd_logic);
end component;
begin
u1:halfadd
port map(a=>a(0),hsum=>sum(0),hcarry=>cout1,b=>b(0));
重庆科创职ቤተ መጻሕፍቲ ባይዱ学院授课方案(教案)
课名:教 师:
班级:编写时间:
课题:
用元件例化语句设计电路
授课时数
2
教学目的及要求:
1.掌握VHDL中元件例化语句的相关语法
2.会用元件例化语句设计VHDL程序并进行硬件测试
教学重点:
元件例化语句的VHDL相关语法
教学难点: 元件声明和元件例化语句的位置
教学步骤及内容 :
libraryieee;
use ieee.std_logic_1164.all;
entity add4 is
旁批栏:
port(a:instd_logic_vector(3downto0);
b:instd_logic_vector(3downto0);
sum:outstd_logic_vector(3downto0);
旁批栏:
6.引脚指定
指定输入输出对应的芯片的引脚,注意一些引脚不能用。选择菜单命令Assign | Pin/Location/Chip,将设计的4位寄存器与目标芯片(EPM7128SLC84-10)联系起来.
7.程序下载
Max+PlusII-progeammer-JTAG-Multi-DeviceJTAG chain setup-Select Programming file–找到你所要的.pof文件-add-OK

FPGA试题

FPGA试题

FPGA试题1.⼀个项⽬的输⼊输出端⼝是定义在 A 。

A. 实体中B. 结构体中C. 任何位置D. 进程体2. 描述项⽬具有逻辑功能的是 B 。

A. 实体B. 结构体C. 配置D. 进程3.关于1987标准的VHDL语⾔中,标识符描述正确的是 B 。

A. 下划线可以连⽤B. 下划线不能连⽤C. 不能使⽤下划线D. 可以使⽤任何字符4.VHDL语⾔中变量定义的位置是 D ;VHDL语⾔中信号定义的位置是 D 。

A. 实体中中任何位置B. 实体中特定位置C. 结构体中任何位置D. 结构体中特定位置5.变量和信号的描述正确的是 A 。

A. 变量赋值号是:=B. 信号赋值号是:=C. 变量赋值号是<=D. ⼆者没有区别6.变量和信号的描述正确的是 B 。

A. 变量可以带出进程B. 信号可以带出进程C. 信号不能带出进程D. ⼆者没有区别6.关于VHDL数据类型,正确的是 D 。

A. 数据类型不同不能进⾏运算B. 数据类型相同才能进⾏运算C. 数据类型相同或相符就可以运算D. 运算与数据类型⽆关7.关于VHDL数据类型,正确的是 B 。

A. ⽤户不能定义⼦类型B. ⽤户可以定义⼦类型C. ⽤户可以定义任何类型的数据D. 前⾯三个答案都是错误的8.可以不必声明⽽直接引⽤的数据类型是 C 。

A. STD_LOGICB. STD_LOGIC_VECTORC. BITD. 前⾯三个答案都是错误的9.使⽤STD_LOGIG_1164使⽤的数据类型时 B 。

A.可以直接调⽤B.必须在库和包集合中声明C.必须在实体中声明D. 必须在结构体中声明10.VHDL运算符优先级的说法正确的是 C 。

A. 逻辑运算的优先级最⾼B. 关系运算的优先级最⾼C. 逻辑运算的优先级最低D. 关系运算的优先级最低11.VHDL中顺序语句放置位置说法正确的是 D 。

A.可以放在进程语句中B. 可以放在⼦程序中C. 不能放在任意位置D. 前⾯的说法都正确12.不属于顺序语句的是 B 。

EDA技术题库

EDA技术题库

EDA技术题库一.填空题1. Verilog的基本设计单元是模块.它是由两部分组成,一部分描述接口;另一部分描述逻辑功能,即定义输入是如何影响输出的.2。

用assign描述的语句我们一般称之为组合逻辑,并且它们是属于并行语句,即于语句的书写次序无关.而用always描述的语句我们一般称之为组合逻辑或时序逻辑,并且它们是属于串行语句,即于语句的书写有关。

3.在case语句中至少要有一条default语句。

4. 已知x=4'b1001,y=4'0110,则x的4位补码为4’b1111,而y的4位的补码为4'b0110 。

5. 两个进程之间是并行语句。

而在Always中的语句则是顺序语句。

6.综合是将高层次上描述的电子系统转换为低层次上描述的电子系统,以便于系统的具体硬件实现。

综合器是能自动将高层次的表述(系统级、行为级)转化为低层次的表述(门级、结构级)的计算机程序7. 设计输入的方式有原理图、硬件描述语言、状态图以及波形图。

8.按照仿真的电路描述级别的不同,HDL仿真器可以完成:系统级仿真,行为级仿真,RTL 级仿真,门级(时序)仿真。

按照仿真是否考虑硬件延时分类,可以分为:功能仿真和时序仿真。

仿真器可分为基于元件(逻辑门)仿真器和基于HDL语言的仿真器9. IP核是知识产权核或知识产权模块,在EDA技术中具有十分重要的地位。

半导体产业的IP定义为用于ASIC或FPGA中的预先设计好的电路功能模块。

IP分为软IP、固IP和硬IP.10.可编程逻辑器件PLD是一种通过用户编程或配置实现所需逻辑功能的逻辑器件,也就是说用户可以根据自己的需求,通过EDA开发技术对其硬件结构和工作方式进行重构,重新设计其逻辑功能11.两种可编程逻辑结构是基于与—或阵列可编程结构(乘积项逻辑可编程结构)、基于SRAM 查找表的可编程逻辑结构12。

PLD按集成度分类:简单PLD、复杂PLD;按结构分类:基于“与—或”阵列结构的器件、基于查找表结构的器件;从编程工艺上分类:熔丝型、反熔丝型、EPROM型、EEPROM 型、SRAM型、Flash型13。

VHDL并行语句

VHDL并行语句
过程调用的实质内容要先装入程序包中(Package):
PROCEDURE 过程名(参数1;参数2;) IS [声明语句;]
BEGIN [顺序处理语句;]
END 过程名;
并行过程调用:
过程名(关联参数表);
参数关联方式
位置关联方式 名字关联方式 =>
例:设有一过程PROCEDURE vect(a,b:IN BIT;
output1 <= a AND b ; output2 <= c + d ; g <= e OR f ; h <= e XOR f ; s1 <= g ; END ARCHITECTURE curt;
2、条件信号赋值语句
赋值目标 <= 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE ... 表达式 ;
PROCESS语句在VHDL程序中,是描述硬件并行工作 行为的最常用、最基本的语句。
PROCESS 组成 PROCESS语句结构
进程说明
顺序描述语句
敏感信号参数表





































说明
(1) 进程说明部分主要定义一些局部量,可包括数据 类型、常数、属性、子程序等。但需注意,在进程说 明部分中不允许定义信号和共享变量。
-- 指定信号
-- 指定变量
-- 过程调用

元件例化

元件例化

元件例化语句元件例化就是引入一种连接关系,将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。

在这里,当前设计实体相当于一个较大的电路系统,所定义的例化元件相当于一个要插在这个电路系统板上的芯片,而当前设计实体中指定的端口则相当于这块电路板上准备接受此芯片的一个插座。

元件例化是使VHDL 设计实体构成自上而下层次化设计的一种重要途径。

在一个结构体中调用子程序,包括并行过程的调用非常类似于元件例化,因为通过调用,为当前系统增加了一个类似于元件的功能模块。

但这种调用是在同一层次内进行的,并没有因此而增加新的电路层次,这类似于在原电路系统增加了一个电容或一个电阻。

元件例化是可以多层次的,在一个设计实体中被调用安插的元件本身也可以是一个低层次的当前设计实体,因而可以调用其它的元件,以便构成更低层次的电路模块。

因此,元件例化就意味着在当前结构体内定义了一个新的设计层次,这个设计层次的总称叫元件,但它可以以不同的形式出现。

如上所说,这个元件可以是已设计好的一个VHDL 设计实体,可以是来自FPGA 元件库中的元件,它们可能是以别的硬件描述语言,如Verylog 设计的实体。

元件还可以是软的IP 核,或者是FPGA 中的嵌入式硬IP 核。

元件例化语句由两部分组成,前一部分是对一个现成的设计实体定义为一个元件,第二部分则是此元件与当前设计实体中的连接说明,它们的语句格式如下:(1)元件定义语语句COMPONENT 元件名GENERIC (类属表);PORT (端口名表);END COMPONENT 文件名;(2)元件例化语句例化名:元件名 PORT MAP( [端口名 =>] 连接端口名,...) ;以上两部分语句在元件例化中都是必须存在的。

第一部分语句是元件定义语句,相当于对一个现成的设计实体进行封装,使其只留出对外的接口界面。

EDA

EDA

1. 说明端口模式INOUT 和BUFFER 有何异同点:INOUT :双向端口;BUFFER :输出并向内部反馈。

2.3. 一个相对完整的VHDL 程序应包含哪些组成部分:一个相对完整的VHDL 程序应包含库、程序包、实体、结构体和配置,其中,库、实体、结构体是最基本和不可缺少的部分。

4.简述元件例化语句的作用,组成及格式:把已经设计好的设计实体称为一个元件或一个模块,它可以被高层次的设计引用。

引用时就会用到元件声明和元件例化语句。

二者缺一不可。

1)元件声明COMPONENT 元件实体名PORT (元件端口信息);END COMPONENT ;2)元件例化例化名:元件名 PORT MAP (端口列表)5.什么叫‘综合’及一般综合应包含那些过程:综合过程就是将电路的高级语言描述转换成低级的,可与FPGA/CPLD 器件结构相映射的网表文件。

一般综合应包含以下过程:语法检查和设计规则检查、网络表提取、逻辑优化和综合。

6.简述MAX+PLUS Ⅱ的设计流程:MAX+PLUS Ⅱ的设计过程包括设计项目的建立与设计的输入、设计编译、设计校验(仿真和定时分析)、器件编程四个步骤。

设计输入:可以采用原理图输入、HDL 语言描述、及波形输入等几种方式。

设计编译:先根据设计要求设定编译参数和编译策略,如器件的选择、逻辑综合方式的选择等。

然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合和器件适配,并产生报告文件、延时信息文件及编程文件,供分析仿真和编程使用。

设计校验(项目仿真):包括功能仿真、时序仿真和定时分析,可以利用软件的仿真功能来验证设计项目的逻辑功能是否正确。

器件编程与验证:用经过仿真确认后的编程文件通过编程器(Programmer )将设计下载到实际芯片中,最后测试芯片在系统中的实际运行性能。

7. 指出下面图形中节点的类型.ctrl 输入 clk 输入 state 隐含 Q[3..0]输出:8. 简述在系统编程:在系统可编程特性(ISP )是指不需要使用编程器,只需要通过计算机接口和编程电缆,直接在用户自己设计的目标系统中或线路板上,为重新构造设计逻辑而对器件进行编程或反复编程的能力。

EDA实验--元件例化语言描述的测频控制器

EDA实验--元件例化语言描述的测频控制器

EDA实验(三)CLK作是测频控制时钟频率固定为1HZ。

Fsin是待测信号。

1、1)、测频控制器工作功能仿真波形:2)、测频控制器工作时序仿真波形:2、1)、4位频率计工作功能仿真波形4位频率计功能仿真分析:由功能仿真波形可以看出其低12位为000100000101,每四个一组转化后为105,经译码器后读得105。

待测周期为9.52ms,待测频率计算得105(1/0.00952)。

输入数据与测得数据一致。

2)、4位频率计工作时序波形:3、1)、8位频率计工作功能仿真波形:2)、8位频率计工作时序仿真波形:8位频率计功能时序仿真分析:同理由时序仿真波形可以看出其低12位为000100000101,其于全部为0,每四个一组转化后为105,经译码器后读得105。

其待测周期为9.52ms,待测频率计算得105(1/0.00952)。

输入数据与测得数据一致。

且时序仿真波形与功能仿真波形相比出现了毛刺。

一、4位十进制计数器的VHDL代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport (clk,clr,ena:in std_logic;cq:out std_logic_vector(3 downto 0);carry_out:out std_logic);end cnt10;architecture behav of cnt10 isbeginprocess(clk,clr,ena)variable cqi:std_logic_vector(3 downto 0);beginif clr='1' then cqi:=(others=>'0');elsif clk'event and clk='0' thenif ena='1' thenif cqi<9 then cqi:=cqi+1;else cqi:=(others=>'0');end if;end if;end if;if cqi=9 then carry_out<='1';else carry_out<='0';end if;cq<=cqi;end process;end behav;二、4位锁存器VHDL语言:library ieee;use ieee.std_logic_1164.all;entity reg4b isport(load : in std_logic;din : in std_logic_vector(3 downto 0);dout: out std_logic_vector(3 downto 0));end;architecture art of reg4b isbeginprocess(load,din)beginif(load'event and load = '1')thendout<=din;end if;end process;end art;三、测频控制器的VHDL语言:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testctl isport( clk : std_logic;tsten,clr_cnt,load : out std_logic);end;architecture art of testctl issignal clk_div2 : std_logic;beginload<=not clk_div2;tsten <=clk_div2;p1:process(clk)beginif clk'event and clk='1' thenclk_div2<=not clk_div2;end if;end process;p2:process(clk,clk_div2)beginif clk='0'and clk_div2='0' thenclr_cnt<='1';elseclr_cnt<='0';end if;end process;end art;四、4位十进制频率计的顶层文件:library ieee;use ieee.std_logic_1164.all;entity cui4 isport(fsin,clk:in std_logic;dout:out std_logic_vector(16 downto 0));end;architecture art of cui4 iscomponent cnt10port( clk,clr,ena:in std_logic;cq:out std_logic_vector(3 downto 0);carry_out:out std_logic);end component;component reg4bport (load:in std_logic;din:in std_logic_vector(3 downto 0);dout:out std_logic_vector(3 downto 0));end component;component testctlport ( clk:in std_logic;tsten,clr_cnt,load:out std_logic);end component;signal ena:std_logic;signal clr:std_logic;signal load:std_logic;signal carry0:std_logic;signal carry1:std_logic;signal carry2:std_logic;signal clr_cnt:std_logic;signal tsten :std_logic;signal a,b: std_logic;signal cq0,cq1,cq2,cq3:std_logic_vector(3 downto 0);beginu0:testctl port map(clk=>clk,tsten=>a,clr_cnt=>b,load=>load);u1:cnt10 port map(clk=>fsin,clr=>b,ena=>a,cq=>cq0,carry_out=>carry0); u2:reg4b port map(load,cq0,dout(3 downto 0));u3:cnt10 port map(clk=>carry0,clr=>b,ena=>a,cq=>cq1,carry_out=>carry1);u4:reg4b port map(load,cq1,dout(7 downto 4));u5:cnt10 port map(clk=>carry1,clr=>b,ena=>a,cq=>cq2,carry_out=>carry2); u6:reg4b port map(load,cq2,dout(11 downto 8));u7:cnt10 port map(clk=>carry2,clr=>b,ena=>a,cq=>cq3,carry_out=>dout(16)); u8:reg4b port map(load,cq3,dout(15 downto 12));end art;五、8位十进制频率计的顶层文件:library ieee;use ieee.std_logic_1164.all;entity cui8 isport(fsin,clk:in std_logic;dout:out std_logic_vector(32 downto 0));end;architecture art of cui8 iscomponent cnt10port( clk,clr,ena:in std_logic;cq:out std_logic_vector(3 downto 0);carry_out:out std_logic);end component;component reg4bport (load:in std_logic;din:in std_logic_vector(3 downto 0);dout:out std_logic_vector(3 downto 0));end component;component testctlport ( clk:in std_logic;tsten,clr_cnt,load:out std_logic);end component;signal ena:std_logic;signal clr:std_logic;signal load:std_logic;signal carry0:std_logic;signal carry1:std_logic;signal carry2:std_logic;signal carry3:std_logic;signal carry4:std_logic;signal carry5:std_logic;signal carry6:std_logic;signal clr_cnt:std_logic;signal tsten :std_logic;signal a,b: std_logic;signal cq0,cq1,cq2,cq3,cq4,cq5,cq6,cq7:std_logic_vector(3 downto 0);beginu0:testctl port map(clk=>clk,tsten=>a,clr_cnt=>b,load=>load);u1:cnt10 port map(clk=>fsin,clr=>b,ena=>a,cq=>cq0,carry_out=>carry0);u2:reg4b port map(load,cq0,dout(3 downto 0));u3:cnt10 port map(clk=>carry0,clr=>b,ena=>a,cq=>cq1,carry_out=>carry1);u4:reg4b port map(load,cq1,dout(7 downto 4));u5:cnt10 port map(clk=>carry1,clr=>b,ena=>a,cq=>cq2,carry_out=>carry2);u6:reg4b port map(load,cq2,dout(11 downto 8));u7:cnt10 port map(clk=>carry2,clr=>b,ena=>a,cq=>cq3,carry_out=>carry3);u8:reg4b port map(load,cq3,dout(15 downto 12));u9:cnt10 port map(clk=>carry3,clr=>b,ena=>a,cq=>cq4,carry_out=>carry4);u10:reg4b port map(load,cq4,dout(19 downto 16));u11:cnt10 port map(clk=>carry4,clr=>b,ena=>a,cq=>cq5,carry_out=>carry5); u12:reg4b port map(load,cq5,dout(23 downto 20));u13:cnt10 port map(clk=>carry5,clr=>b,ena=>a,cq=>cq6,carry_out=>carry6); u14:reg4b port map(load,cq6,dout(27 downto 24));u15:cnt10 port map(clk=>carry6,clr=>b,ena=>a,cq=>cq7,carry_out=>dout(32)); u16:reg4b port map(load,cq7,dout(31 downto 28));end art;。

基本语法 元件例化与层次设计

基本语法 元件例化与层次设计

基本语法元件例化与层次设计2.3 VHDL层次化结构模型2.3.2 元件例化2. 元件例化语句──用来引用元件的并行语句。

当一个实体引用一个元件时,使用元件例化语句。

元件例化语句指定该实例元件对应的元件模型,并且指定了元件模型端口与实体中信号的关联关系。

例如:architecture Parent_body of Parent iscomponent And2port(I1, I2: Bit; O1: out Bit);end component;signal Sl,32,S3: Bit;beginChild: And2 port map(I1=>S1,I2=>S2,O1=>S3);end Parent-body;2.3 VHDL层次化结构模型2.3.2 元件例化一个实体的结构体中引用某些元件,称为元件例化(Component instantiation),用元件例化语句表示。

该元件称为实例元件或例化元件(instance)。

各元件例化语句的执行顺序与书写顺序无关。

1. 元件声明——声明要调用某种模型的元件。

要引用的元件必须预先声明,称为元件声明。

元件声明通常放在该结构体的声明部分,也可以放在一个程序包中。

来源:/Article/HDL/VHDL/200508/121.htmlVHDL: Creating a Hierarchical DesignThis example describes how to create a hierarchical design using VHDL.The top-level design, called top.vhd, implements an instance of the function logic.vhd.In the top.vhd file, a component for the logic function is declared inside the architecture in which it is instantiated. The Component Declaration defines the ports of the lower-level function.-----------------------------------------------------------------------------1.top.vhd (Top-level file)LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY top ISPORT(w_in, x_in, y_in :IN std_logic;clock :IN std_logic;z_out :OUT std_logic);END top;ARCHITECTURE a OF top ISCOMPONENT logicPORT(a,b,c :IN std_logic;x :OUT std_logic);END COMPONENT;SIGNAL w_reg, x_reg, y_reg, z_reg :std_logic;BEGINlow_logic : logicPORT MAP (a => w_reg, b => x_reg, c => y_reg, x => z_reg);PROCESS(clock)BEGINIF (clock'event AND clock='1') THENw_reg<=w_in;x_reg<=x_in;y_reg<=y_in;z_out<=z_reg;END IF;END PROCESS;END a;--------------------------------------------------------------------------------2.logic.vhdLIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY logic ISPORT(a,b,c : IN std_logic;x : OUT std_logic);END logic;ARCHITECTURE a OF logic ISBEGINPROCESS (a,b,c)BEGINx<=(a and b) or c;END PROCESS; END;。

eda第四章

eda第四章

第四章系统层次化设计层次化设计在数字系统设计中被广泛地应用,因为它有下面两个主要的优点:①一些常用的模块可以被单独创建并存储,在以后的设计中可以直接调用该模块,而无需重新设计;②它使整个设计更结构化,程序也具有更高的可读性;顶层文件只将一些小模块整合在一起,这使整个系统的设计思想比较容易被理解。

本章将介绍如何在MAX+plusII中采用图形法与文本法结合的混合输入方法实现元件重用与系统的层次化设计。

第一节系统层次化设计的概念层次化设计的示意图如图所示从图中可以看出,层次化设计的核心有两个,一是模块化,二是元件重用。

系统层次化设计的概念模块化:可以将一个大系统划分为几个子模块,而这些子模块又分别由更小的模块组成,如此往下,直至不可再分。

这也正是自顶向下(Top-down)的设计方法。

图中,顶层文件所描述的实体A由B、C、D三个实体组成,而实体B和实体C又分别由实体E、F和实体F、G构成。

每个实体都可以看成上一层实体中的一个模块或元件(Component),就像搭积木一样一层一层地构建。

元件重用:同一个元件可以被不同的设计实体调用,也可以被同一个设计实体多次调用。

图中,实体F分别被实体B和实体C调用,而实体G则被实体C调用了2次。

元件重用不但大大减轻了设计者的工作量,而且使程序更结构化和具有更高的可读性。

第二节利用图形输入法实现系统层次化设计一、元件重用这里先看一个简单的问题:假设系统中有一个200kHz的时钟,系统要求将其分为100 kHz、50 kHz和25 kHz,并在这4个频率的时钟中选择一个作为输出(如图所示),如何从CLk1(200kHz)生成其他频率的时钟信号呢?很容易就可以想到两种方案:①设计一个2分频电路、一个4分频电路和一个8分频电路,直接从200kHz时钟信号分频得到所需的几个频率的时钟信号(如图所示);②只设计一个2分频电路,用3个2分频电路级联的方式,从200kHz信号中逐级分出所需的时钟信号(如图所示)。

元件例化

元件例化

元件声明是对VHDL模块(即底层设计,也是完整的VHDL设计)的说明,使之可在其他被调用,元件声明可放在程序包中,也可在某个设计的构造体中声明。

元件例化指元件的调用。

元件声明及元件例化的语法分别如下:元件声明:component〈元件实体名〉prot(〈元件端口信息,同该元件实现时的实体的port部分〉);end compnent;—元件例化:〈例化名〉:〈实体名,即元件名〉port map(〈端口列表〉);例如,在一个设计中调用一个模为10的计数器cntm10和一个七段译码器decode47构成如下电路,则该调用过程孥即元件例化。

VHDL描述如下:library ieee;use ieee.std_logic_1164.all;entity cntvh10 isport (rd, ci, clk : in std_logic;co : out std_logic;qout : out std_logic_vector (6 downto 0));end cntvh10;architecture arch of cntvh10 isComponent decode47 isport (adr : in std_logic_vector (3 downto 0);decodeout : out std_logic_vector (6 downto0));end Component;—元件声明Component cntm10 isPort ( ci : in std_logic;nreset : in std_logic;clk : in std_logic;co : out std_logic;qcnt : buffer std_logic_vector (3 downto 0));end Component;signal qa: std_logic_vector (3 downto 0);beginu1 : cntm10 port map (ci, rd, clk, co, qa); —元件例化u2 : decode47 port map ( decodeout=>qout, adr=>qa);end arch;元件例化时的端口列表可按位置关联方法,如u1,这种方法要求的实参(该设计中连接到端口的实际信号,如ci,等)所映射的形参(元件的对外接口信号)的位置同元件声明中的一样;元件例化时的端口列表也可按名称关联方法映射实参与形参,如u2。

元件例化特点及应用

元件例化特点及应用

元件例化特点及应用元件例化是指通过实例化操作,将一个类(元件)的实例(对象)从内存中创建出来,并且可以对该实例进行操作和调用。

元件例化有以下几个特点:1. 创建实例:元件例化操作可以根据类的定义,在内存中创建一个实例。

这个实例可以具有类定义中的属性和方法,并且可以使用这些属性和方法进行各种操作。

2. 对象独立性:每个实例都是独立的,它们之间互不影响。

即使两个对象的属性值相同,它们也是不同的实例。

3. 实例化的灵活性:通过元件例化操作,可以创建多个实例,并且可以对这些实例进行自由操作。

可以根据实际需要创建任意数量的实例,并对每个实例进行个性化设置。

4. 数据封装性:元件例化操作可以将数据封装在实例对象中,实现数据的隐藏和保护。

只有通过对象的方法才能访问和修改数据,提高数据的安全性和可靠性。

5. 继承性:元件例化操作可以继承类的属性和方法。

通过继承,可以避免重复编写相同的代码,并且可以在子类中对父类的属性和方法进行扩展和修改。

元件例化在计算机科学中有广泛的应用,包括但不限于以下几个方面:1. 面向对象编程(OOP):面向对象编程是一种以对象为基础的软件编程范式。

在面向对象编程中,元件例化是实现对象创建和操作的基础。

通过元件例化,可以将现实世界中的概念和关系映射为软件编程中的对象和类,并对对象进行各种操作和调用。

2. 图形用户界面(GUI)开发:在GUI开发中,可以使用元件例化操作创建各种图形界面元素,例如窗口、按钮、文本框等。

通过实例化这些元素,可以在界面上显示和操作各种用户界面组件,提供丰富的用户交互体验。

3. 数据库编程:在数据库编程中,可以使用元件例化操作创建数据表的实例对象。

通过这些实例对象,可以对数据表中的数据进行增删改查等操作,实现数据的存储、检索和管理。

4. 网络编程:在网络编程中,可以使用元件例化操作创建网络连接的实例对象,例如套接字对象。

通过这些对象,可以进行网络通信,实现数据的传输和交换。

元件例化语句、块语句和生成语句36页PPT

元件例化语句、块语句和生成语句36页PPT
极端的法规,就是极端的不公。 ——西 塞罗 57、法律一旦成为人们的需要,人们 就不再 配享受 自由了 。—— 毕达哥 拉斯 58、法律规定的惩罚不是为了私人的 利益, 而是为 了公共 的利益 ;一部 分靠有 害的强 制,一 部分靠 榜样的 效力。 ——格 老秀斯 59、假如没有法律他们会更快乐的话 ,那么 法律作 为一件 无用之 物自己 就会消 灭。— —洛克
60、人民的幸福是至高无个的法。— —西塞 罗
66、节制使快乐增加并使享受加强。 ——德 谟克利 特 67、今天应做的事没有做,明天再早也 是耽误 了。——裴斯 泰洛齐 68、决定一个人的一生,以及整个命运 的,只 是一瞬 之间。 ——歌 德 69、懒人无法享受休息之乐。——拉布 克 70、浪费时间是一桩大罪过。——卢梭
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

元件例化语句
元件例化就是引入一种连接关系,将预先设计好的设计实体定义为一个元件,然后利用
特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个
新的低一级的设计层次。

在这里,当前设计实体相当于一个较大的电路系统,所定义的例化
元件相当于一个要插在这个电路系统板上的芯片,而当前设计实体中指定的端口则相当于这
块电路板上准备接受此芯片的一个插座。

元件例化是使VHDL 设计实体构成自上而下层次化
设计的一种重要途径。

在一个结构体中调用子程序,包括并行过程的调用非常类似于元件例化,因为通过调用,
为当前系统增加了一个类似于元件的功能模块。

但这种调用是在同一层次内进行的,并没有
因此而增加新的电路层次,这类似于在原电路系统增加了一个电容或一个电阻。

元件例化是可以多层次的,在一个设计实体中被调用安插的元件本身也可以是一个低层
次的当前设计实体,因而可以调用其它的元件,以便构成更低层次的电路模块。

因此,元件
例化就意味着在当前结构体内定义了一个新的设计层次,这个设计层次的总称叫元件,但它
可以以不同的形式出现。

如上所说,这个元件可以是已设计好的一个VHDL 设计实体,可以
是来自FPGA 元件库中的元件,它们可能是以别的硬件描述语言,如Verylog 设计的实体。

元件还可以是软的IP 核,或者是FPGA 中的嵌入式硬IP 核。

元件例化语句由两部分组成,前一部分是对一个现成的设计实体定义为一个元件,第二
部分则是此元件与当前设计实体中的连接说明,它们的语句格式如下:
(1)元件定义语语句
COMPONENT 元件名
GENERIC (类属表);
PORT (端口名表);
END COMPONENT 文件名;
(2)元件例化语句
例化名:元件名 PORT MAP( [端口名 =>] 连接端口名,...) ;
以上两部分语句在元件例化中都是必须存在的。

第一部分语句是元件定义语句,
相当于
对一个现成的设计实体进行封装,使其只留出对外的接口界面。

就像一个集成芯片只留几个
引脚在外一样,它的类属表可列出端口的数据类型和参数,端口名表可列出对外通信的各端
口名。

元件例化的第二部分语句即为元件例化语句,其中的例化名是必须存在的,它类似于
标在当前系统(电路板)中的一个插座名,而元件名则是准备在此插座上插入的、已定义好的
元件名。

PORT MAP 是端口映射的意思,其中的端口名是在元件定义语句中的端口名表中已
定义好的元件端口的名字,连接端口名则是当前系统与准备接入的元件对应端口相连的通信
端口,相当于插座上各插针的引脚名。

元件例化语句中所定义的元件的端口名与当前系统的连接端口名的接口表达有两种方
式,一种是名字关联方式。

在这种关联方式下,例化元件的端口名和关联(连接)符号“=>”
两者都是必须存在的。

这时,端口名与连接端口名的对应形式在PORT MAP 句中的位置可以
是任意的。

另一种是位置关联方式。

若使用这种方式,端口名和关联连接符号都可省去,在PORT MAP
子句中,只要列出当前系统中的连接端口名就行了,但要求连接端口名的排列方式与所需例
化的元件端口定义中的端口名一一对应。

例子:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ND2 IS
PORT(A,B:IN STD_LOGIC;
C:OUT STD_LOGIC);
END ENTITY ND2;
ARCHITECTURE ARTND2 OF ND2 IS
BEGIN
C<=A NAND B;
END ARCHITECTURE ARTND2;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ORD41 IS
PORT(A1,B1,C1,D1:IN STD_LOGIC;
Z1:OUT STD_LOGIC);
END ENTITY ORD41;
ARCHITECTURE ARTORD41 OF ORD41 IS
COMPONENT ND2 IS
PORT(A,B:IN STD_LOGIC;
C:OUT STD_LOGIC);
END COMPONENT ND2;
SIGNAL S1,S2:STD_LOGIC;
BEGIN
U1:ND2 PORT MAP (A1,B1,
S1); --位置关联方式
U2:ND2 PORT MAP (A=>C1,C=>S2,B=>D1); --名字关联方式
U3:ND2 PORT MAP (S1,S2,
C=>Z1); --混合关联方式
END ARCHITECTURE ARTORD41;。

相关文档
最新文档