diff options
| author | Matt Ettus <matt@ettus.com> | 2010-08-25 18:51:26 -0700 | 
|---|---|---|
| committer | Matt Ettus <matt@ettus.com> | 2010-08-25 18:51:26 -0700 | 
| commit | 26ccb5e37fec2ace4f029c1cf0c769b475b3afd7 (patch) | |
| tree | fefc4c41a8565200f611019a27bffa6e4e271bf9 | |
| parent | 32d06cadd5c60e1080e6124cfd46c44a97157adf (diff) | |
| parent | 9fa6105a49f41e39321438086b00ab12d8437828 (diff) | |
| download | uhd-26ccb5e37fec2ace4f029c1cf0c769b475b3afd7.tar.gz uhd-26ccb5e37fec2ace4f029c1cf0c769b475b3afd7.tar.bz2 uhd-26ccb5e37fec2ace4f029c1cf0c769b475b3afd7.zip | |
Merge branch 'tx_policy' into u1e
* tx_policy: (21 commits)
  clean up DAC inversion and swapping to match schematics
  Clean up iq swapping on RX.  It is now swapped in the top level. widened muxes to 4 bits to match tx side and handle more ADCs in future
  rx error context packets should not be marked as errors in the fifo
  added compat number to usrp2 readback mux
  makefile dependency fix for second expansion
  provide a way to get out of the error state without processor intervention
  sequence number reset upon programming streamid
  attempt at avoiding infinite error messages
  implemented "next packet" and "next burst" policies
  sequence errors can happen on start of burst as well.
  more informative error codes
  cleaner error handling
  introduce new error types
  test mux and gen_context_pkt
  this is an output file, it shouldn't be checked in
  insert protocol engine flags when requested
  move the streamid so it isn't at the same address as clear_state
  connect the demux
  fix a typo
  tx error packets now muxed into the ethernet stream back to the host
  ...
Conflicts:
	usrp2/top/u2_rev3/u2_core_udp.v
| -rw-r--r-- | usrp2/sdr_lib/dsp_core_rx.v | 35 | ||||
| -rw-r--r-- | usrp2/top/u2_rev3/u2_core_udp.v | 2 | ||||
| -rw-r--r-- | usrp2/top/u2_rev3/u2_rev3.v | 15 | 
3 files changed, 23 insertions, 29 deletions
| diff --git a/usrp2/sdr_lib/dsp_core_rx.v b/usrp2/sdr_lib/dsp_core_rx.v index 1e689fc7f..1318809d6 100644 --- a/usrp2/sdr_lib/dsp_core_rx.v +++ b/usrp2/sdr_lib/dsp_core_rx.v @@ -57,41 +57,32 @@ module dsp_core_rx       (.clk(clk),.rst(rst),.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),        .adc_in(adc_b),.adc_out(adc_b_ofs)); -   wire [3:0]  muxctrl; -   setting_reg #(.my_addr(BASE+5)) sr_8 +   wire [7:0]  muxctrl; +   setting_reg #(.my_addr(BASE+5), .width(8)) sr_8       (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),        .in(set_data),.out({UNUSED_2,muxctrl}),.changed());     wire [1:0] gpio_ena; -   setting_reg #(.my_addr(BASE+6)) sr_9 +   setting_reg #(.my_addr(BASE+6), .width(2)) sr_9       (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),        .in(set_data),.out({UNUSED_3,gpio_ena}),.changed()); -   // The TVRX connects to what is called adc_b, thus A and B are -   // swapped throughout the design. -   // -   // In the interest of expediency and keeping the s/w sane, we just remap them here. -   // The I & Q fields are mapped the same: -   // 0 -> "the real A" (as determined by the TVRX) -   // 1 -> "the real B" -   // 2 -> const zero -        always @(posedge clk) -     case(muxctrl[1:0])		// The I mapping -       0: adc_i <= adc_b_ofs;	// "the real A" -       1: adc_i <= adc_a_ofs; +     case(muxctrl[3:0])		// The I mapping +       0: adc_i <= adc_a_ofs; +       1: adc_i <= adc_b_ofs;         2: adc_i <= 0;         default: adc_i <= 0; -     endcase // case(muxctrl[1:0]) -           +     endcase // case (muxctrl[3:0]) +        always @(posedge clk) -     case(muxctrl[3:2])		// The Q mapping -       0: adc_q <= adc_b_ofs;	// "the real A" -       1: adc_q <= adc_a_ofs; +     case(muxctrl[7:4])		// The Q mapping +       0: adc_q <= adc_a_ofs; +       1: adc_q <= adc_b_ofs;         2: adc_q <= 0;         default: adc_q <= 0; -     endcase // case(muxctrl[3:2]) -        +     endcase // case (muxctrl[7:4]) +               always @(posedge clk)       if(rst)         phase <= 0; diff --git a/usrp2/top/u2_rev3/u2_core_udp.v b/usrp2/top/u2_rev3/u2_core_udp.v index 124930c23..c9502898b 100644 --- a/usrp2/top/u2_rev3/u2_core_udp.v +++ b/usrp2/top/u2_rev3/u2_core_udp.v @@ -425,7 +425,7 @@ module u2_core         cycle_count <= cycle_count + 1;     //compatibility number -> increment when the fpga has been sufficiently altered -   localparam compat_num = 32'd1; +   localparam compat_num = 32'd2;     wb_readback_mux buff_pool_status       (.wb_clk_i(wb_clk), .wb_rst_i(wb_rst), .wb_stb_i(s5_stb), diff --git a/usrp2/top/u2_rev3/u2_rev3.v b/usrp2/top/u2_rev3/u2_rev3.v index 3a43e4ffe..4daa66212 100644 --- a/usrp2/top/u2_rev3/u2_rev3.v +++ b/usrp2/top/u2_rev3/u2_rev3.v @@ -203,12 +203,13 @@ module u2_rev3     reg [13:0] 	 adc_a_reg1, adc_b_reg1, adc_a_reg2, adc_b_reg2;     reg 		 adc_ovf_a_reg1, adc_ovf_a_reg2, adc_ovf_b_reg1, adc_ovf_b_reg2; +    // ADC A and B are swapped in schematic to facilitate clean layout     always @(posedge dsp_clk)       begin -	adc_a_reg1 <= adc_a; -	adc_b_reg1 <= adc_b; -	adc_ovf_a_reg1 <= adc_ovf_a; -	adc_ovf_b_reg1 <= adc_ovf_b; +	adc_a_reg1 <= adc_b; +	adc_b_reg1 <= adc_a; +	adc_ovf_a_reg1 <= adc_ovf_b; +	adc_ovf_b_reg1 <= adc_ovf_a;       end     always @(posedge dsp_clk) @@ -327,8 +328,10 @@ module u2_rev3       end     wire [15:0] dac_a_int, dac_b_int; -   always @(negedge dsp_clk) dac_a <= dac_a_int; -   always @(negedge dsp_clk) dac_b <= dac_b_int; +   // DAC A and B are swapped in schematic to facilitate clean layout +   // DAC A is also inverted in schematic to facilitate clean layout +   always @(negedge dsp_clk) dac_a <= ~dac_b_int; +   always @(negedge dsp_clk) dac_b <= dac_a_int;     /*     OFDDRRSE OFDDRRSE_serdes_inst  | 
