Créez un module Verilog appelé huitbit palu qui a deux entrées 8 bits, a et b, et une entrée 2 bits, sel. Les sorties de ce module sont un signal de 8 bits f, et un signal de 1 bit ovf. La valeur de ces sorties doit changer en fonction de la valeur du signal sel qui détermine l'opération.ALU 8 bits avec débordement dans Verilog
**s[1:0] f[7:0] ovf Description**
0 0 a + b (add) overflow a plus b
0 1 b (inv) 0 Bitwise inversion of b
1 0 a · b (and) 0 Bitwise AND of a and b
1 1 a | b (or) 0 Bitwise OR of a and b
J'ai la mission ci-dessus et voici ce que j'ai jusqu'à présent dans Verilog:
module eightbit_palu(input [7:0]a,
input [7:0]b,
input [1:0]sel,
output [7:0]f,
output ovf);
reg (f, ovf);
always @ (a, b, sel);
case(sel)
2’b00: f = a + b;
2’b01: f = ~b;
2’b10: f = a & b;
2’b11: f = a | b;
endcase
endmodule
Je suis nouveau Verilog donc je ne suis pas sûr si cela est juste ou ce que je devrais faire à propos de la valeur de débordement. Des conseils/suggestions?
OU est '|', pas '/'. Et je suppose que vous voulez ovf être 1 ssi l'opération est addition et l'addition a "signé débordement", est-ce exact? – harold
oui c'est correct – smd
L'addition vous donne réellement un bit supplémentaire. Si les deux bits supérieurs ne sont pas identiques, la troncature changera la valeur si elle est interprétée comme un entier complémentaire à 2 (c'est-à-dire qu'elle déborde). Vous avez besoin du supplément supplémentaire pour cela évidemment. – harold