lietotāja definētas funkcijas VHDL

B

Bartart

Guest
Čau!

Mana problēma ir tā, man wrote funkcija ar 3 ieejas parametriem (skaitlim, skaitlim un std_logic_vector) un peļņu std_logic_vector.Šī pakete ir synthesible.ka OK

bet manā VHDL kods kad es izmantot funkciju tā nedarbojas.

to sintakse ir

SO <= jautri 3 6 "101";

kļūdu

Režīmā ir oficiāli xfrom jautrības bez noklusētā vērtība ir saistīta ar faktisko vērtību.jebkura ideja, kā atrisināt manu problēmu?

Bart

 
Bartart wrote:

Čau!

bet manā VHDL kods kad es izmantot funkciju tā nedarbojas.to sintakse irSO <= jautri 3 6 "101";kļūduRežīmā ir oficiāli xfrom jautrības bez noklusētā vērtība ir saistīta ar faktisko vērtību.

Bart
 
Šī funkcija izpaužas divi argumenti kā skaitlim un numuru, kā std_logic_vector.Rezultāts ir funkcija ir logic_vector ar izvērstu parakstīt bitu (MSB) no ieejas datiem.

Piemēram:

fun (3,6, "101") būtu atgriešanās 111101
fun (8,6, "001") - | | - 001 kļūda

Šī ir funkcija definīcijai:

funkcija jautri (
signālu xfrom: skaitlim;
signalal xto: skaitlim;
signālu xdat: std_logic_vector) atgriešanās std_logic_vector ir

mainīgs lxdat: std_logic_vector ((xto - xfrom) downto 0);

sākt
ja ((xto - xfrom) = 0 vai (xto - xfrom) <0), tad
atgriezties xdat;
elsif (xto - xfrom)> 0, tad
par i xfrom, lai xto cilpa
lxdat (i xfrom): = xdat (xfrom);
end loop;
atgriezties lxdat;
mērķi, ja;
end fun;Esmu mēģinājis ar jautri (), bet nav spēkā.<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Saucošs vai Ļoti bēdīgs" border="0" />
thx vēmekļi!

Bart

 
Problēma šeit ir sakritība starp faktisko un formālo parametri:

jums noteikts xfrom, xto un xdata (formālas parametri), kā signālus, bet kuru faktisko parametru jūs izmantojat ir konstantes.

Jūs varat:

1) noteikt trīs signālus A, B, kā skaitlim, C, kā std_logic_vector un izmantot tos, lai caurlaide faktisko parametru funkcija;

2) noņemt signālu definīcija no formālas parametri

Mēģiniet mainīt jūs funkciju definīcija kā:

funkcija jautri (xfrom: skaitlim;
xto: skaitlim;
xdat: std_logic_vector)
atgriezties std_logic_vector

It works fine!

Pievērsiet uzmanību arī uz jūsu īstenošanu; imho tur ir dažas kļūdas: ja
es esmu saprot jūsu nodomus, tiesības kods būtu

funkcija jautri (xfrom: skaitlim;
xto: skaitlim;
xdat: std_logic_vector)
atgriezties std_logic_vector ir

mainīgs lxdat: std_logic_vector ((xto - 1) downto 0);

sākt
ja ((xto - xfrom) = 0 vai (xto - xfrom) <0), tad
atgriezties xdat;
elsif (xto - xfrom)> 0, tad
i 0 līdz xfrom - 1 cilpa
lxdat (i): = xdat (i);
end loop;
par i xfrom - 1 līdz xto - 1 cilpa
lxdat (i): = xdat (xfrom-1);
end loop;
atgriezties lxdat;
mērķi, ja;
end fun;

Cerot, tas ir palīdzēt jums,

Ro.

 

Welcome to EDABoard.com

Sponsor

Back
Top