Forum: FPGA, VHDL & Co. verilog schnippsel


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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.