一、parameter在可綜合邏輯設(shè)計(jì)中只能用于定義整數(shù),否則綜合后會(huì)提示下面的錯(cuò)誤信息;而在仿真中既可以定義整數(shù),也可以定義實(shí)數(shù)。
HDLCompiler:499 "" line 60: Illegal operation with real number
二、當(dāng)以下面的形式給出參數(shù)定義時(shí),CLK_CYCLE將是一個(gè)舍去小數(shù)部分的整數(shù)。
parameter CLK_CYCLE = 10/4;
三、在仿真時(shí)如果要定義一個(gè)實(shí)數(shù)參數(shù)時(shí),可以是下面任意一種定義形式。
parameter CLK_CYCLE = 2.5; 或
parameter CLK_CYCLE = 10.0/4; 或
parameter CLK_CYCLE = 10/4.0; 或
parameter CLK_CYCLE = 10.0/4.0;
四、在進(jìn)行可綜合邏輯設(shè)計(jì)時(shí),如果一個(gè)參數(shù)是經(jīng)過(guò)又乘又除后得到的,那么有如下兩種形式,一種是先除后乘,另一種是先乘后除。這里推薦用先乘后除,杜絕用先除后乘,理由是先乘后除的結(jié)果更加接近真實(shí)值(能夠除盡的情況除外)。不妨以具體數(shù)值進(jìn)行分析,如T0=15,CLK_CYCLE的值理論上為66.6667。如果采用先除后乘,由于100/15舍去小數(shù)后得6,再乘以10,CLK_CYCLE結(jié)果為60;如果采用先乘后除,100*10得1000,再除以15,舍去小數(shù)后CLK_CYCLE結(jié)果為66。很明顯,66更加接近真實(shí)值。
parameter CLK_CYCLE = 100/T0*10; 或
parameter CLK_CYCLE = 100*10/T0;