//  Spreading block that takes a serial bitstream as input and
//  outputs an I and Q "spread" signal.  Uses the prbs module.
//  Author:  Andrew Iverson
//  Date: 11-21-99
//
//------------------------------------------------------------

`include "prbs.v"
`include "shift_reg.v"

module spreader(spread_out_i, spread_out_q, data_in, last_tap_i, 
		last_tap_q, tap_config_i, tap_config_q, prbs_clk, n_reset);

  output [11:0] spread_out_i, spread_out_q;
  input data_in, prbs_clk, n_reset;
  input [5:1] last_tap_i, last_tap_q;
  input [32:1] tap_config_i, tap_config_q;

  wire [11:0] spread_out_i, spread_out_q;
  wire temp_i, temp_q;

  prbs prbs_i(.prbs_out(temp_i), .data_in(data_in),
	      .last_tap(last_tap_i), .clk(prbs_clk),
	      .tap_config(tap_config_i), .n_reset(n_reset));

  prbs prbs_q(.prbs_out(temp_q), .data_in(data_in),
              .last_tap(last_tap_q), .clk(prbs_clk),
              .tap_config(tap_config_q), .n_reset(n_reset));

  shift_reg i_reg(.p12_data_out(spread_out_i),
                  .prbs_clk(prbs_clk),
				  .s_data_in(temp_i),
				  .n_reset(n_reset));

  shift_reg q_reg(.p12_data_out(spread_out_q),
                  .prbs_clk(prbs_clk),
				  .s_data_in(temp_q),
				  .n_reset(n_reset));

endmodule
