元件类语句:结构描述 具体描述电路各元件的端口及其连接 以基本元件为基础逐级构建; 元件:已经定义的电路模块(实体),可以来自标准库中,也 可以是自己或他人以前编译过的实体 元件的基本要点:元件名输入输出端口特点 设计的要点:建立端口之间的连接 元件语句的一般描述方式 结构体形式: Architecture str of实体名is 元件说明;(电路设计中使用的元件及端口) 类型说明; 信号说明;(电路设计中各中间连接点) 元件使用语句;(端口与信号(中间连接点及输入 /输出端点)的连接关系) end str 元件说明: component元件名 port(信号名:模式信号类型;
元件类语句: 结构描述 具体描述电路各元件的端口及其连接; 以基本元件为基础逐级构建; 元件:已经定义的电路模块(实体),可以来自标准库中,也 可以是自己或他人以前编译过的实体; 元件的基本要点: 元件名 输入/输出端口特点; 设计的要点:建立端口之间的连接; 元件语句的一般描述方式 结构体形式: Architecture str of 实体名 is 元件说明; (电路设计中使用的元件及端口) 类型说明; 信号说明; (电路设计中各中间连接点) begin 元件使用语句; (端口与信号(中间连接点及输入 /输出端点)的连接关系) end str; 元件说明: component 元件名 port(信号名:模式 信号类型;
信号名:模式信号类型); end component, 要点 元件说明与电路实体说明的编写方式非常相似 模块名称和对应端口名称应完全一致:其端口排列顺序也应 该完全一致 所用的电路实体应在work库或已说明的库中; 例:已有元件的程序为 use ieee std logic 1164. all entity kand port(a, b: in std logic y: out std logic) end kand architecture d of kand y<=a and b; end d: 元件说明语句为 component kand port(a, b: in std logic y: out std logic) end component
……. 信号名:模式 信号类型); end component; 要点: 元件说明与电路实体说明的编写方式非常相似; 模块名称和对应端口名称应完全一致;其端口排列顺序也应 该完全一致; 所用的电路实体应在 work 库或已说明的库中; 例:已有元件的程序为 library ieee; use ieee.std_logic_1164.all; entity kand2 is port(a, b: in std_logic; y: out std_logic); end kand2; architecture d of kand2 is begin y <= a and b; end d; 元件说明语句为: component kand2 port(a, b: in std_logic; y: out std_logic); end component;
元件使用语句: 元件编号:元件名 port map(信号对应表); 元件使用语句要点 对每一元件应该指定唯一的编号; 元件名称应该与已经有的元件名称完全一致 信号对应表:将本元件的各端口与外部的信号接点或端口建 立连接;每个连接应该具有一个唯一的名称 顺序关联法:按本元件各端口顺序排列连接点; 名称关联法:将本元件各端口名称逐一与对应的连接点 名称联系起来; 例希望将上述kand输入与data,en连接,输出与out连接 原来的元件:port(a,b: in std logic; y: out std logic 使用的设置:顺序法port( data, en,out); 名称法port(a= data,y=>outb=>en) 结构设计的示例 例1 inhibit I门z=x·y(带有元件说明语句的使用 library ieee use ieee std logic 1164. all; entity butnot is port(x,y: in std logic;
元件使用语句: 元件编号:元件名 port map(信号对应表); 元件使用语句要点: 对每一元件应该指定唯一的编号; 元件名称应该与已经有的元件名称完全一致; 信号对应表:将本元件的各端口与外部的信号接点或端口建 立连接;每个连接应该具有一个唯一的名称; 顺序关联法:按本元件各端口顺序排列连接点; 名称关联法:将本元件各端口名称逐一与对应的连接点 名称联系起来; 例 希望将上述 kand 输入与 data,en 连接,输出与 out 连接 原来的元件:port(a, b: in std_logic; y: out std_logic); 使用的设置: 顺序法 port(data,en,out); 名称法 port(a=>data,y=>out,b=>en); 结构设计的示例: 例 1 inhibit 门 ⋅= yxz (带有元件说明语句的使用) library ieee; use ieee.std_logic_1164.all; entity butnot is port (x,y: in std_logic;
z: out std logic) architecture str of butnot is component kin port(a: in std logic, y: out std logic) component kanda port(a, b: in std logic; y: out std logic); end component ul: kin port map(y, temp); u2:kanda port map(x, temp, z); end str 注意:为了保障使用元件的端口名正确性,需专门设计反相 器kinv和2输入与门kand2的模块存放于work库中; 其他例题质数检测器 p284质数检测器的结构设计p.284表4-43 generate语句相同元件的重复使用 在同一结构体中使用多个相同元件时,为避免反复说明, 可以采用 generate语句 元件语句 编号:for指标in范围 generate 元件编号:元件名 port map(信号1,信号2,…); end generate 在以上语句中,指标为整数,不需要定义,各元件对应 的信号此时成为数组,其下标由指标范围决定 例2p.2858位总线反相器 generate语句的应用
z: out std_logic); end butnot; architecture str of butnot is signal temp: std_logic; component kinv port (a: in std_logic; y: out std_logic); end component; component kand2 port (a,b: in std_logic; y: out std_logic); end component; begin u1: kinv port map(y,temp); u2: kand2 port map(x,temp,z); end str; 注意:为了保障使用元件的端口名正确性,需专门设计反相 器 kinv 和 2 输入与门 kand2 的模块,存放于 work 库中; 其他例题 质数检测器 p.284 质数检测器的结构设计 p.284 表 4-43 generate 语句 相同元件的重复使用 在同一结构体中使用多个相同元件时,为避免反复说明, 可以采用 generate 语句: 元件语句: 编号:for 指标 in 范围 generate 元件编号:元件名 port map(信号 1,信号 2,…); end generate 在以上语句中,指标为整数,不需要定义,各元件对应 的信号此时成为数组,其下标由指标范围决定; 例 2 p.285 8 位总线反相器 generate 语句的应用
use ieee std logic 1164. all; entity inv is port(a, b, c, d: in std logic vector (I downto 0) y: out std logic vector(7 downto 0)); end inv 8 architecture str of iny 8 is signal x std logic vector(7 downto 0); x<=a&b&c& d gl: for b in 7 downto 0 generate ul: kin port map(x(b),y(b)) 也可以采用 if-generate语句的形式控制电路的结构变化: 编号:if关系式 generate 元件语句 end generate: generic语句用于端口的控制 当希望一类元件的端口(或其他参量)可以自由变化时 可以采用 generIc语句(类属语句) 在原有元件中的定义:p285表446
library ieee; use ieee.std_logic_1164.all; entity inv8 is port (a,b,c,d: in std_logic_vector (1 downto 0); y:out std_logic_vector (7 downto 0) ); end inv8; architecture str of inv8 is component kinv port (a: in std_logic; y: out std_logic); end component; signal x:std_logic_vector(7 downto 0); begin x <= a & b & c & d; g1: for b in 7 downto 0 generate u1: kinv port map (x(b),y(b)); end generate; end str; 也可以采用 if-generate 语句的形式控制电路的结构变化: 编号:if 关系式 generate 元件语句; end generate; generic 语句 用于端口的控制 当希望一类元件的端口(或其他参量)可以自由变化时, 可以采用 generic 语句(类属语句); 在原有元件中的定义:p.285 表 4-46 entity …