// β=2// duplico la cifrà più significativa di Awire [M-1:0] V={M{A[N-1]}};assign Aest={V,A};
Riduttore di Campo per Interi
// β=2// produco ow flag in base allo xor delle due cifre più significative// elimino cifra più significativa// caso riduzione unitariaassign ow=A[L-1]^A[L-2];assign Arid=A[L-2:0];//caso generale, con riduzione di Massign ow=(&A[L-1:N-1])^(|A[L-1:N-1]); //scoprire se le M+1 cifre più significative di A sono uguali tra loro: & e | devono dare lo stesso risultatoassign Arid=A[N-1:0];
Negatore
//se a coincide con l'estremo negativo ovvero A=β^(n) / 2, l'opposto non esistewire [N-2:0] zero={(N-1){'B0}};wire [N-1:0] estremonegativo={1'B1,zero};assign ow=(A==estremonegativo)?1:0;assign Aopp= ~A+1;
Sommatore per Interi
//si estendono gli addendi di una cifra//fare somma su N+1 cifre//ridurre somma di una cifra, se ow=1, la somma non era fattibile su N cifreassign Sest={A[N-1],A}+{B[N-1],B};assign ow={Sest[N]==Sest[N-1])?0:1;assign S=Sest[N-1:0];//su β=2 possiamo evitare l'estensione e semplicemente ricavare ow dallo xor dei due riporti più significativi
Sottrattore per Interi
assign Dest={A[N-1],A}-{B[N-1],B};assign ow={Dest[N]==Dest[N-1])?0:1;assign D=Dest[N-1:0];//su β=2 possiamo evitare l'estensione e semplicemente ricavare ow dallo xor dei due riporti più significativi