VHDL的几个语法结构分析记录
扫描二维码
随时随地手机看文章
1、--GENERIC可以用来指定一些全局的变量,它要放在entity之后,port口映射之前
entity ethernet is
generic(--GENERIC语句指定的参数是全局的
MIIM_PHY_ADDRESS : t_phy_address := (others => '0');
MIIM_RESET_WAIT_TICKS : natural := 0;
MIIM_POLL_WAIT_TICKS : natural := DEFAULT_POLL_WAIT_TICKS;
MIIM_CLOCK_DIVIDER : positive := 50;
-- You need to supply the current speed via speed_override when MIIM is disabled
MIIM_DISABLE : boolean := FALSE
);
port(
a :input std_logic;
b:output std_logic
);
end entity;
GENERIC:此处的GENERIC什么的参数相当于.C文件声明的全局变量,可以在本.c文件中任何位置使用,如果需要定义所有文件都使用的全局变量,则需要在package中定义
如,
package const_def is
constant OCXO1PPS_DelayCounter:std_logic_vector(27 downto 0) := X"4C4B3FF";
constant OCXODelay1PPS_Counter:std_logic_vector(27 downto 0) := OCXO1PPS_DelayCounter+X"00C3500";
end const_def;
generic定义变量的作用,可以将定义的变量作为entity模块的一些配置参数的入口,比如定义一个timeperiod,默认=1000,当需要修改为2000时,可通过外部传递参数进来
传递方式格式:
C2:i2cs_rx
generic map(
timeperiod=>2000
)
port map(
CLB => CLB,
SCL => SCL,
SDA => SDA
);
这样就能更好的将.vhd程序模块化,重复利用率变高。
natural:自然数>=0;是integer的子类型
postive:正整数>0; 是interger的子类型