Qual è la differenza tra $size
e $bits
operatore in verilog.? se ho variabili, [9:0]a
, [6:0]b
, [31:0]c
.
c <= [($size(a)+$size(b)-1]-:$bits(b)];
Quale sarà l'uscita su "c" dall'espressione precedente?
Qual è la differenza tra $size
e $bits
operatore in verilog.? se ho variabili, [9:0]a
, [6:0]b
, [31:0]c
.
c <= [($size(a)+$size(b)-1]-:$bits(b)];
Quale sarà l'uscita su "c" dall'espressione precedente?
$size
restituisce il numero di elementi nella dimensione, che equivale a $high - $low + 1
. È relativo alla dimensione, non solo ai bit counts. Se il tipo è array 1D o tipo integrale, è uguale a $bits
.
$bits
la funzione di sistema restituisce il numero di bit necessari per contenere un'espressione come un flusso di bit.
$bits ([expression|type_identifier])
Restituisce 0 quando viene chiamato con un tipo di dimensioni dinamiche che è attualmente vuoto. È un errore utilizzare direttamente la funzione di sistema $bits
con un identificatore di tipo di dimensioni dinamiche.
Non ho idea della tua domanda, c <= [($size(a)+$size(b)-1]-:$bits(b)];
. È un'espressione valida in RHS? Stai parlando dell'espressione della gamma di array, [n +: m]
o [n -: m]
?
$size()
indica il numero di bit per una singola dimensione. $bits()
indica il numero di bit per rappresentare completamente la variabile.
Ad esempio:
reg [9:0] a;
reg [9:0] b [5:0];
initial begin
$display("a Size ", $size(a));
$display("a Bits ", $bits(a));
$display("b Size ", $size(b));
$display("b Bits ", $bits(b)) ;
end
Dà:
a Size 10
a Bits 10
b Size 6 // Depth of memory
b Bits 60 // Width * Depth
Nel tuo caso è sufficiente avere 1 matrici tridimensionali, non ricordi o struct così $size()
e $bits()
sarebbe la stessa cosa.
'$ dimensione (a)' = 10, '$ dimensione (b) = 7',' $ bit (b) '= 7:' c <= x [17-1-: 7] 'Questi sono tutti tipi standard quindi '$ bit' e' $ size' sarebbero gli stessi. – Morgan
Hai ragione. Ma non mi rendo conto che sia un errore di battitura o un vero intento per 'c <= [17 + 7-1] -: 7];' – jclin
Ah sì, digitare 17 + 7-1. Nota anche che la domanda non ha variabili è solo un intervallo quindi non è valido verilog. – Morgan