hvordan du skrive Verilog for å velge en del av buss

J

jfzhan

Guest
Kjære alle,

Det er buss A [0:100], B [0:15], og registeret lengde [3:0].
Registeret kan settes av bruker.
Hvis lengden = 0, B [0:15] = A [0:15]
Hvis lengden = 1, B [0:15] = A [1:16]
Hvis lengden = 2, B [0:15] = A [2:17]
Hvis lengden = 3, B [0:15] = A [3:18], og så videre.

kan jeg skrive som dette,
tildele s_point = lengde;
tildele e_point = lengde 15;
tildele B [0:15] = A [s_point: e_point];

Den beste metoden er følgende metode?

alltid @ (lengde eller B) begynner
case (lengde)
0: B [0:15] = A [0:15];
1: B [0:15] = A [1:15];
2: B [0:15] = A [2:15];
...
15: B [0:15] = A [15:30];
endcase
slutt

Har det noen god metode for å skrive?

Takk!

 
Hei,
Ikke i ren Verilog.Men i SystemVerilog, kan du gjøre:

Code:tildele B [0:15] = A [s_point : 15];
 
Jeg beklager!Jeg vil bare vite hvordan du skal skrive det i Verilog!

 
Jeg tror at den optimale måten er

alltid @ (lengde eller B) begynner
case (lengde)
0: B [0:15] = A [0:15];
1: B [0:15] = A [1:15];
2: B [0:15] = A [2:15];
...
15: B [0:15] = A [15:30];
endcase
slutt

 

Welcome to EDABoard.com

Sponsor

Back
Top