I want to execute 2 modules, one after another using one flag signal
What changes do I have to do in code below to the modules. I have used delay_4 and multiply.
module iir_model(yout,temp1,win,clk); input [3:0] win; output [3:0] yout; wire [3:0] yout; input clk; output [3:0] temp1; wire [3:0] temp1; delay_4 a1(temp1,win,clk); multiply_4 (yout,win,temp1); endmodule delay_4:
module delay_4(data_out,data_in,clk); input [3:0] data_in; input clk; output [3:0] data_out; reg [3:0] data_out; reg [2:0] counter=4'b000; reg [3:0] temp; reg carry; integer i=0; always @(posedge clk) begin i=i+1; if(i==1) temp=data_in; if(i>1) begin if(counter!=4'b100) begin carry=temp[0]; temp=temp>>1'b1; temp[3]=carry; $monitor ($time," clk=%b, counter=%b ,temp=%b ,carry=%b,data_out=%b",clk, counter,temp,carry,data_out); counter=counter+1; end data_out=(temp==data_in)?temp:4'b0000; end end endmodule multiply_4:
module multiply_4(z,x,y); input [3:0] x,y; output [7:0] z; reg [7:0] t; reg [7:0] z; integer i,j; always @ (x or y) begin z = 8'b0; for(i = 0; i < 4 ; i = i + 1) begin t = 8'b0; if(y[i]) begin t[i] = x[0]; t[i+1] = x[1]; t[i+2] = x[2]; t[i+3] = x[3]; end z = z + t; end end endmodule