I'm new to Verilog and I need a little help here. 
I have a register array reg [32-1:0] out which represents a signed integer.
A smaller array holds a number between 0 and 1000 reg [14-1:0] d. I would like to do something like this (damping out on every clock cycle):
always @(posedge clk_i) begin
    out <= $signed(out) * $unsigned(d)/1000;
end
I heared that using / is bad practice for synthesizable code. Can anyone show me how to implement such an exponential decay?
EDIT: I changed dividing by 1000 to dividing by 1024, because it's much easier to handle. My code looks now like this:
reg [32-1:0] out;
reg [32-1:0] in;
reg [42-1:0] tmp;
reg [14-1:0] d;
always @(posedge clk_i) begin
    tmp = {in,10'd0};
    if(tmp[41]==1) begin
      tmp = $signed(tmp) * -1;
      tmp = $signed(tmp) >> 10;
      tmp = $signed(tmp) * $unsigned(d);
      tmp = $signed(tmp) * -1;
    end
    else begin
      tmp = $signed(tmp) >> 10;
      tmp = $signed(tmp) * $unsigned(d);
    end
    out <= tmp[42-1:10];
 end
The code works well in simulation but on the fpga it seems like in is multiplied by zero (out is zero)? Does anyone know what is going wrong here?