käyttäjän toimintoja VHDL

B

Bartart

Guest
Hei!

Minun ongelmani on, olen kirjoitti funktion 3 syöteparametrit (integer, integer ja std_logic_vector) ja sijoitetun std_logic_vector.Tämä paketti on synthesible.että OK

mutta minun VHDL-koodin, kun voin käyttää toiminto ei toimi.

syntaksi on

SO <= hauskaa 3 6 "101";

virhe

IN tilassa muodollisesti xfrom hauskaa ilman oletusarvo on yhdistettävä todellinen arvo.mitään käsitystä siitä, miten ratkaista minun ongelmani?

Bart

 
Bartart wrote:

Hei!

mutta minun VHDL-koodin, kun voin käyttää toiminto ei toimi.syntaksi onSO <= hauskaa 3 6 "101";virheIN tilassa muodollisesti xfrom hauskaa ilman oletusarvo on yhdistettävä todellinen arvo.

Bart
 
Tämä toiminto saa kaksi argumenttia kuin kokonaisluku ja numero std_logic_vector.Tuotos toiminto on logic_vector with extended allekirjoittaa bittiä (MSB) ja syöttää tietoja.

esimerkki:

hauskaa (3,6, "101") pitäisi palata 111101
hauskaa (8,6, "001") - | | - 001 virhe

Tämä on toiminto määritelmä:

toiminto hauskaa (
signaali xfrom: integer;
signalal xto: integer;
signaali xdat: std_logic_vector) palaa std_logic_vector on

muuttuja lxdat: std_logic_vector ((xto - xfrom) downto 0);

aloittaa
jos ((xto - xfrom) = 0 tai (xto - xfrom) <0) sitten
palata xdat;
elsif (xto - xfrom)> 0 then
i vuonna xfrom on xto loop
lxdat (i xfrom): = xdat (xfrom);
loppuun loop;
palata lxdat;
end if;
loppuun hauskaa;Olen yrittänyt kanssa hauskaa (), mutta mitään vaikutusta.<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying tai Erittäin surullista" border="0" />
thx oksentaa!

Bart

 
Ongelmana tässä on vastaavat toisiaan todelliset ja muodolliset parametrit:

olet määritellyt xfrom, xto ja xdata (muodolliset parametrit) kuin signaaleja, kun taas todelliset parametrit käytät ovat vakioita.

Voit:

1) määrittää kolme signaaleja A, B kokonaisluku, C std_logic_vector ja käyttää niitä siirtää todellinen parametreja toiminnon;

2) poistaa signaalin määritelmän muodolliset parametrit

Yritä muuttaa sinut toiminnon määritelmää:

toiminto hauskaa (xfrom: integer;
xto: integer;
xdat: std_logic_vector)
palata std_logic_vector

Se toimii hyvin!

Kiinnitettävä huomiota myös teille täytäntöönpanoon; IMHO on joitakin virheitä: jos
olen ymmärtänyt aikomuksia, oikea koodi olisi

toiminto hauskaa (xfrom: integer;
xto: integer;
xdat: std_logic_vector)
palata std_logic_vector on

muuttuja lxdat: std_logic_vector ((xto - 1) downto 0);

aloittaa
jos ((xto - xfrom) = 0 tai (xto - xfrom) <0) sitten
palata xdat;
elsif (xto - xfrom)> 0 then
for i in 0 xfrom - 1 silmukka
lxdat (i): = xdat (i);
loppuun loop;
i vuonna xfrom - 1 xto - 1 silmukka
lxdat (i): = xdat (xfrom-1);
loppuun loop;
palata lxdat;
end if;
loppuun hauskaa;

Toivon tämä on auttaa sinua,

Ro.

 

Welcome to EDABoard.com

Sponsor

Back
Top