VHDL的幾個語法結(jié)構(gòu)分析記錄
1、--GENERIC可以用來指定一些全局的變量,它要放在entity之后,port口映射之前
entity ethernet is
generic(--GENERIC語句指定的參數(shù)是全局的
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什么的參數(shù)相當(dāng)于.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模塊的一些配置參數(shù)的入口,比如定義一個timeperiod,默認(rèn)=1000,當(dāng)需要修改為2000時,可通過外部傳遞參數(shù)進(jìn)來
傳遞方式格式:
C2:i2cs_rx
? ?generic map(
timeperiod=>2000
)
? ???port map(
? ?? ?CLB => CLB,
? ?? ?SCL => SCL,
? ?? ?SDA => SDA
? ?? ?? ???);
這樣就能更好的將.vhd程序模塊化,重復(fù)利用率變高。
natural:自然數(shù)>=0;是integer的子類型
postive:正整數(shù)>0; ? 是interger的子類型