¿Cómo hago uso de los multiplicadores para generar un sumador simple?

4

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
    
pregunta geft

1 respuesta

3

Utilice el "Visor de mapas tecnológicos" de Altera si desea ver exactamente cómo y dónde se están inferiendo esos 24 elementos.

No estoy seguro de a qué tecnología se dirigió. Para un StratixV, utiliza 16 registros y 1 segmento DSP y, si lo necesita, obtendrá la siguiente etapa de registro de forma gratuita desde la salida de mux.

Visor RTL

Vistadetecnología/recursos

Puede ver que los elementos lógicos se usan uno por bit para el mux de salida y uno por bit para el sumador, con la celda DSP resaltada.

Es posible que pueda empaquetar todo en una sola celda DSP SV usando los distintos bits de modo (pre adders para a / b, establecer mult stage en x1) para evitar el mux de salida, pero todo es discutible ese tipo de dispositivo!

    
respondido por el shuckc

Lea otras preguntas en las etiquetas