Estoy tratando de sintetizar un circuito de Altera usando la menor cantidad posible de elementos lógicos. Además, los multiplicadores integrados no cuentan en contra de los elementos lógicos, por lo que debería estar usándolos. Hasta ahora el circuito parece correcto en términos de funcionalidad. Sin embargo, el siguiente módulo utiliza una gran cantidad de elementos lógicos. Utiliza 24 elementos lógicos y no estoy seguro de por qué, ya que debería usar 8 + un par de puertas combinacionales para el bloque de casos.
Sospecho que el sumador, pero no estoy 100% seguro. Sin embargo, si mi sospecha es correcta, ¿es posible usar multiplicadores como un simple sumador?
module alu #(parameter N = 8)
(
output logic [N-1:0] alu_res,
input [N-1:0] a,
input [N-1:0] b,
input [1:0] op,
input clk
);
wire [7:0] dataa, datab;
wire [15:0] result;
// instantiate embedded 8-bit signed multiplier
mult mult8bit (.*);
// assign multiplier operands
assign dataa = a;
assign datab = b;
always_comb
unique case (op)
// LW
2'b00: alu_res = 8'b0;
// ADD
2'b01: alu_res = a + b;
// MUL
2'b10: alu_res = result[2*N-2:N-1]; // a is a fraction
// MOV
2'b11: alu_res = a;
endcase
endmodule