array variabel indeks i VHDL?

T

Techspec

Guest
Hej,

Xilinx didnt have et forum at spørge om VHDL så her er jeg.

Jeg var en smule frustreret over, hvordan man håndterer array med en bestemt måde.Jeg er ikke god til at forklare dette, men jeg vil prøve.Jeg allready rød mange fora, programguider osv., men ingen af dem forklare, hvordan man laver en variabel indeks til en 2D-array.Jeg har et kort stærkt forenklet eksempel kode, det er dybest set det, jeg prøver at gøre:

--
--
type hukommelse er array (INTEGER interval <>) i std_logic_vector (0 til 3);
signal control_array: hukommelse (0 til 4);

--
--
begynd
--
--
control_array (store_data) <= "1010";
--
--

"store_data" bør pointer til et array, men hvilken type det skal være?Thnx
Techs

 
stykker fra en kode:

...
brug ieee.std_logic_arith.all;

....
Write_Addr: i std_logic_vector (addr-1 downto 0);
....type ram_type er array (0 til dybde-1) af
std_logic_vector (bredde-1 downto 0);
signal tmp_ram: ram_type;

....
tmp_ram (conv_integer (Write_Addr)) <= Data_in;

 
Hej, og tak for det tip ..

Jeg har ændret det til at se sådan ud:

....
DATA: i std_logic_vector (3 downto 0);
CHANNEL: i std_logic_vector (3 downto 0);
....

type ram_type er array (3 downto 0) af std_logic_vector (3 downto 0);
signal tmp_ram: ram_type;

....
tmp_ram (conv_integer (CHANNEL)) <= DATA;dette gav mig ingen fejl, men 1 advarsel, som jeg dont forstå:

"Index værdi (er) ikke passer array range, simulering mismatch".

Nogen idé om hvorfor?, Forekommer mig, at de skal matche den række ....Techspec

 
Det forekommer mig, at:

CHANNEL: i std_logic_vector (3 downto 0);

betyder o "0" ~ o "7", i mellemtiden:

type ram_type er array (3 downto 0) af std_logic_vector (3 downto 0);

array size = (3 downto 0) = 4.Måske er grunden til, size mismatch?

 
Antallet af steder, den "kanal" kan adressen er 16, da det er 4 bit lang.Henviser til, at din ram type kun har 4 steder.dermed advarsel

 
prøv dette:
--
type ram_type er array (0 til dybde-1) af std_logic_vector (bredde-1 downto 0);
signal tmp_ram: ram_type;
signal cnt: heltal mellem 0 og dybde-1;

tmp_ram (cnt) <= DATA;
--

GL
Craftor

 

Welcome to EDABoard.com

Sponsor

Back
Top