Forum: FPGA, VHDL & Co. Komponent-Instanzen: Resize möglich?


von Patrick B. (p51d)


Lesenswert?

Hallo

Ich habe eine kleine Frage: Ist es möglich, ein Resize bei einer Instanz 
von einem Komponenten zu machen?

Ein Beispiel: Es soll eine Uhr aufgebaut werden
1
sec10_cnt: bcd_counter GENERIC MAP(
2
    cnt_width => 4,
3
    cnt_up_limit => 5
4
  )
5
  PORT MAP(
6
  ci => sec1_co,
7
  load_val => (others => '0'),
8
  load => rst_sec,
9
  rst => rst,
10
  clk => clk,
11
  co => sec10_co,
12
  count => sec10
13
);
Der Vektor sec10 ist (zwangsläufig) 4 Bit breit, aber der Zähler selber 
könnte mit nur 3 Bits aufgebaut werden. Über Generic wird der Vektor 
count definiert (cnt_width). Ist es jetzt möglich, den Zähler mit 3-Bit 
Breite zu realisieren und dann in der Instanz count auf 4-Bit zu 
verbreitern?

Das selbe gilt für die 10ner Stelle der Stunden. Hier muss der Zähler 
nur von 0 bis 2 Zählen können, die 7-Segment-Anzeige braucht dann aber 
einen 4-Bit Vektor.

Besten Dank für die Hilfe
MFG
Patrick

von Uwe B. (uwe_beis)


Lesenswert?

Hi,

ja, natürlich. Aber zunächst stellt sich die Frage, warum du nicht bei 
der Zuweisung des Zählers zum 7-Sgmentdecoder die MSBits zufügst?

  siebensegment_decoder_input <= '0' & sec10_co;

Aber das war nicht deine Frage: Auch innerhalb der Entity geht es, aber 
dann musst du co eine feste Breite von 4 zuordnen. Bei der Ausgabe 
lautet es dann:

  co <= (3 downto cnt_width => '0') & interner_counter;

... glaube ich jedenfalls...

Nebenbei: Wieso heißt deine Entity bcd_counter? Das ist doch ein 
beliebig konfigurierbarer n-Bit-Zähler, der erst bei der Instanziierung 
durch cnt_up_limit => 9 zu einem BCD-Zähler wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.