Forum: FPGA, VHDL & Co. verilog schnippsel


von Olpo O. (olpo)


Lesenswert?

Hallo,

kann jmd was mit dem Code anfangen?
1
wire     [3:0]    rx_data;
2
3
assign tx_enable = (
4
  ((mode == `ETH_SEND) | (mode == `ETH_PAUSE)) & 
5
  ((state != `ETH_CLK_DLY) & (state != `ETH_IDLE)));
6
7
assign buffer_next = {  
8
  buffer[19:16],
9
  buffer[31:28],
10
  buffer[11:8],
11
  buffer[23:20],
12
  buffer[3:0],
13
  buffer[15:12],
14
  (mode != `ETH_PAUSE) ? rx_data : 4'h0,
15
  buffer[7:4] };

Was macht assign buffer_next?
Wofür steht rx_data : 4'h0?

von mac4ever (Gast)


Lesenswert?

WENN mode ungleich eth_pause, dann benutze rx_data(4 Bit breit) 
ansonsten setze 0000

4'h0 bedeutet: 4 Bit mit dem Zahlenwert 0 Hexadezimal

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Herbert Pehman schrieb:
> Was macht assign
Eine Suche hier im Forum bringt dir den 
Beitrag "Verilog Zuweisung". Interessant dort z.B. der 
letzte Beitrag.

> 4'h0
4 Bits breit mit Wert hex 0
Das steht aber wirklich noch im allergrottigsten Verilog-Buch. Welches 
hast du?

von Olpo O. (olpo)


Lesenswert?

Ich habe gar kein Verilog Buch.
Ich versuche nur ein Verilog-Projekt in mein VHDL-Projekt zu 
integrieren.
Womit ich auch gleich auf meinen anderen Beitrag hinweisen möchte: 
Beitrag "Mc.Master Decoder zu Microblaze ?"

Und stehen die buffer[x:y]?
Werden alle buffer-Bereiche gleichzeitig mit rx_data beschrieben?

von Harald F. (hfl)


Lesenswert?

Dieses Konstrukt

assign buffer_next = {
  buffer[19:16],
  buffer[31:28],
  buffer[11:8],
  buffer[23:20],
  buffer[3:0],
  buffer[15:12],
  (mode != `ETH_PAUSE) ? rx_data : 4'h0,
  buffer[7:4] };

heißt auf Deutsch: Weise dem Vektor buffer_next die Aneinanderhängung 
der Werte buffer[19 bis 16], [31 bis 28] ... [7 bis 4] zu. In der Summe 
stehen auf der rechten Seite des Gleichheitszeichens 8 mal 4 Bit, also 
ist anzunehmen, dass buffer_next ein 32 Bit breiter Vektor ist. Falls 
buffer_next noch breiter ist, werden die oberen Stellen mit 0 gefüllt, 
falls es schmaler ist, werden die oberen Stellen der rechten Seite 
ignoriert.

Deine Frage "Werden alle buffer-Bereiche gleichzeitig mit rx_data 
beschrieben?" muss also mit Nein beantwortet werden. Nur die Bits [7:4] 
von buffer_next werden mit rd_data beschrieben, und auch das nur dann, 
wenn mode != `ETH_PAUSE, ansonsten mit 0.

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.