VHDL: aufrunden log2(n)

Gast #1219240
Lesenswert?

Hallo zusammen,

brauche mal ein wenig VHDL Hilfe :-)

Also ich habe zurzeit (etwas vereinfacht ;-) sowas hier:


  port (
    instruction_mem_d     : in  std_logic_vector(7 downto 0); -- 8 Bit
                                                              -- Vektor
    instruction_mem_a     : in  std_logic_vector(2 downto 0)  -- Adresse
                                                              -- 2^3
    );


Jetzt würde das ganze generisch natürlich schöner sein, aber wie mache 
ich das am besten, dass
am Ende sowas dabei rumkommt ;-)

  port (
    instruction_mem_d     : in  std_logic_vector( (n - 1)  downto 0);
    instruction_mem_a     : in  std_logic_vector( aufrunden log2(n)  - 1
                                                  downto 0)
    );


Jenny
Persönliche Seite #1219259
Lesenswert?

Also ich habs so gelöst:
1
entity ram is
2
  generic(a : integer := 9; w: integer:= 32);
3
  port
4
  (
5
    clk      : in std_logic;
6
    wr       : in std_logic;
7
    addr     : in std_logic_vector (a-1 downto 0);
8
    din      : in  std_logic_vector(w-1 downto 0);
9
    dout1    : out std_logic_vector(w-1 downto 0)
10
  );
11

12
end ram;
13
-----------------------------------------------------------------------------
14
architecture ram_arch of ram is
15

16
  type ram_t is array ((2**a)-1 downto 0) of std_logic_vector(w-1 downto 0);
17
.
18
.
19
.
Dabei ist "a" die Adressbreite in Bits und "w" die Datenbreite in bits. 
(Hier also 32 bit daten und 9 bit Addressen)
Gast #1219283
Lesenswert?

Das ist zu einfach ;-)

Ich habe mein Beispiel ist ein wenig missverständlich formuliert.

Also nochmal ein bisschen geschickter:

Ich habe einen cache controller, der sich merken muss wieviele 
Instruktionen er geladen hat.


Könnte im einfachsten Fall so aussehen
1
cache_vector       : in 32bit_array ( 7 downto 0);
2
cache_instr_count  : out std_logic_vector(2 downto 0 );

Und jetzt wäre es natürlich schon, wenn man aus einem generic, dass 
angibt wie breit der cache controller ist, errechnen könnte welche Länge 
der Instruktionszähler hat.

Hoffe jetzt ist es ein wenig klarer :-)

Jenny

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren