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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.