VHDL: Afkort underskrevet til std_logic_vector

C

clsfox

Guest
Jeg har brug for at syntetisere en DCT kerne til en Spartan3E FPGA og har følgende problem:

Kernen bruger en rom for DCT koefficienter og beregner dem som denne.

type ROM_TYPE er array (0 til (2 ** ROMADDR_W) -1)
af std_logic_vector (ROMDATA_W-1 downto 0);
konstant rom: ROM_TYPE: =
(
(Andre => '0 '),
std_logic_vector (AP) (ROMDATA_W-1 downto 0),
std_logic_vector (AP),
std_logic_vector (AP AP)
std_logic_vector (AP),
std_logic_vector (AP AP)
std_logic_vector (AP AP)
std_logic_vector (AP AP AP)
std_logic_vector (AP),
std_logic_vector (AP AP)
std_logic_vector (AP AP)
std_logic_vector (AP AP AP)
std_logic_vector (AP AP)
std_logic_vector (AP AP AP)
std_logic_vector (AP AP AP)
std_logic_vector (AP AP AP AP)
....... osv.AP er en konstant:

konstant AP: Underskrevet (ROMDATA_W-1 downto 0): = "00" & "010110101000";

Hvordan kan jeg trunkere AP AP til 14bits behov inde i typecasting kommando?Problemet er, at de tilføjelser AP AP, AP AP AP etc overløb til> 14bits og kernen ikke kan syntetiseres.

Any ideas anyone?

 
Jeg tror, det er en sag, når du forsøger at montere en større rør til dine trætte.

 
Du har ret, men det er ikke min kode dette er en DCT kerne klar og kontrolleres fra www.opencores.org og jeg prøver at syntetisere det med henblik på at tilpasse det til mit projekt.Det er derfor, jeg spørger.Måske er der nogen er stødt på denne form for typecasting og har en løsning at foreslå.

 
godt i dette tilfælde vil jeg bruge en funktion til at gøre det trunkering, og satte den i min pakke.

 
Jeg har ikke prøve, men der bør være flere muligheder for at størrelsen af konstanterne: en og maske, en conv_unsigned (), en mod operatør, en brugerdefineret funktion.

 

Welcome to EDABoard.com

Sponsor

Back
Top