As I mentioned before, another way to do it would be to assign a different address to each 32 bit word. For example, you could do something like:
always @(posedge clk) begin
if(avs_s0_write) begin
case(avs_s0_address)
2'd0: fifo_in <= avs_s0_writedata;
2'd1: fifo_in <= avs_s0_writedata;
2'd2: fifo_in <= avs_s0_writedata;
2'd3: fifo_in <= avs_s0_writedata;
endcase
end
end
Then, to write the 128 bits you would do something like:
IOWR(ADD_INTERFACE_0_BASE,0,a);
IOWR(ADD_INTERFACE_0_BASE,1,b);
IOWR(ADD_INTERFACE_0_BASE,2,c);
IOWR(ADD_INTERFACE_0_BASE,3,d);