Hola buenas,
Estoy intentando implementar un algoritmo matemático complejo en una FPGA y por eso me preocupa bastante usar el menor número de recursos posibles. En concreto, tengo que realizar muchas operaciones de producto por una constante. Por eso he hecho un test sencillo y he visto algo raro.
El código que he escrito es el siguiente:
module test(
input [10:0] a,
output reg [10:0] b
);
always @* begin
b=a*10'sd5;
end
endmodule
Así que estoy intentando multiplicar la entrada por 5. El problema es que el sintetizador del software que estoy usando (ISE project de Xilinx) me coloca un multiplicador entero para hacer esta operación, cuando tiene sentido pensar que es mucho más sencillo hacerlo con un simple sumador (dado que 5 es 101 en binario solo tendríamos que sumar a y una versión desplazada dos posiciones de a). ¿Hay alguna forma de hacer que el sintetizador ponga el sumador?
Obviamente en mi trabajo no tengo que multiplicar por 5, sino por diferentes constantes de unos 30 bits así que ponerme a escribir a mano el desarrollo con sumas y desplazamientos no es una buena idea.
Muchas gracias!!!
Estoy intentando implementar un algoritmo matemático complejo en una FPGA y por eso me preocupa bastante usar el menor número de recursos posibles. En concreto, tengo que realizar muchas operaciones de producto por una constante. Por eso he hecho un test sencillo y he visto algo raro.
El código que he escrito es el siguiente:
module test(
input [10:0] a,
output reg [10:0] b
);
always @* begin
b=a*10'sd5;
end
endmodule
Así que estoy intentando multiplicar la entrada por 5. El problema es que el sintetizador del software que estoy usando (ISE project de Xilinx) me coloca un multiplicador entero para hacer esta operación, cuando tiene sentido pensar que es mucho más sencillo hacerlo con un simple sumador (dado que 5 es 101 en binario solo tendríamos que sumar a y una versión desplazada dos posiciones de a). ¿Hay alguna forma de hacer que el sintetizador ponga el sumador?
Obviamente en mi trabajo no tengo que multiplicar por 5, sino por diferentes constantes de unos 30 bits así que ponerme a escribir a mano el desarrollo con sumas y desplazamientos no es una buena idea.
Muchas gracias!!!