diff options
| author | Martin Braun <martin.braun@ettus.com> | 2014-10-07 11:25:20 +0200 | 
|---|---|---|
| committer | Martin Braun <martin.braun@ettus.com> | 2014-10-07 11:25:20 +0200 | 
| commit | fd3e84941de463fa1a7ebab0a69515b4bf2614cd (patch) | |
| tree | 3fa721a13d41d2c0451d663a59a220a38fd5e614 /fpga/usrp2/sdr_lib/small_hb_dec.v | |
| parent | 3b66804e41891e358c790b453a7a59ec7462dba4 (diff) | |
| download | uhd-fd3e84941de463fa1a7ebab0a69515b4bf2614cd.tar.gz uhd-fd3e84941de463fa1a7ebab0a69515b4bf2614cd.tar.bz2 uhd-fd3e84941de463fa1a7ebab0a69515b4bf2614cd.zip  | |
Removed copy of FPGA source files.
Diffstat (limited to 'fpga/usrp2/sdr_lib/small_hb_dec.v')
| -rw-r--r-- | fpga/usrp2/sdr_lib/small_hb_dec.v | 136 | 
1 files changed, 0 insertions, 136 deletions
diff --git a/fpga/usrp2/sdr_lib/small_hb_dec.v b/fpga/usrp2/sdr_lib/small_hb_dec.v deleted file mode 100644 index c05a48b81..000000000 --- a/fpga/usrp2/sdr_lib/small_hb_dec.v +++ /dev/null @@ -1,136 +0,0 @@ -// -// Copyright 2011 Ettus Research LLC -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program.  If not, see <http://www.gnu.org/licenses/>. -// - -// Short halfband decimator (intended to be followed by another stage) -// Implements impulse responses of the form [A 0 B 0.5 B 0 A] -// -// These taps designed by halfgen4 from ldoolittle: -//   2 * 131072 * halfgen4(.75/8,2) -module small_hb_dec -  #(parameter WIDTH=18) -    (input clk, -     input rst, -     input bypass, -     input run, -     input stb_in, -     input [WIDTH-1:0] data_in, -     output reg stb_out, -     output reg [WIDTH-1:0] data_out); - -   // Round off inputs to 17 bits because of 18 bit multipliers -   localparam INTWIDTH = 17; -   wire [INTWIDTH-1:0] 	data_rnd; -   wire 		stb_rnd; -    -   round_sd #(.WIDTH_IN(WIDTH),.WIDTH_OUT(INTWIDTH)) round_in -     (.clk(clk),.reset(rst),.in(data_in),.strobe_in(stb_in),.out(data_rnd),.strobe_out(stb_rnd)); -   	 -    -   reg 			stb_rnd_d1; -   reg [INTWIDTH-1:0] 	data_rnd_d1; -   always @(posedge clk) stb_rnd_d1 <= stb_rnd; -   always @(posedge clk) data_rnd_d1 <= data_rnd; -    -   wire 		go; -   reg 			phase, go_d1, go_d2, go_d3, go_d4; -   always @(posedge clk) -     if(rst | ~run) -       phase <= 0; -     else if(stb_rnd_d1) -       phase <= ~phase; -   assign 		go = stb_rnd_d1 & phase; -   always @(posedge clk)  -     if(rst | ~run) -       begin -	  go_d1 <= 0; -	  go_d2 <= 0; -	  go_d3 <= 0; -	  go_d4 <= 0; -       end -     else -       begin -	  go_d1 <= go; -	  go_d2 <= go_d1; -	  go_d3 <= go_d2; -	  go_d4 <= go_d3; -       end - -   wire [17:0] 		coeff_a = -10690; -   wire [17:0] 		coeff_b = 75809; -    -   reg [INTWIDTH-1:0] 	d1, d2, d3, d4 , d5, d6; -   always @(posedge clk) -     if(stb_rnd_d1 | rst) -       begin -	  d1 <= data_rnd_d1; -	  d2 <= d1; -	  d3 <= d2; -	  d4 <= d3; -	  d5 <= d4; -	  d6 <= d5; -       end - -   reg [17:0] sum_a, sum_b, middle, middle_d1; - -   always @(posedge clk) -     if(go) -       begin -	  sum_a <= {data_rnd_d1[INTWIDTH-1],data_rnd_d1} + {d6[INTWIDTH-1],d6}; -	  sum_b <= {d2[INTWIDTH-1],d2} + {d4[INTWIDTH-1],d4}; -	  //middle <= {d3[INTWIDTH-1],d3}; -	  middle <= {d3,1'b0}; -       end - -   always @(posedge clk) -     if(go_d1) -       middle_d1 <= middle; -    -   wire [17:0] sum = go_d1 ? sum_b : sum_a; -   wire [17:0] coeff = go_d1 ? coeff_b : coeff_a; -   wire [35:0] 	 prod;    -   MULT18X18S mult(.C(clk), .CE(go_d1 | go_d2), .R(rst), .P(prod), .A(coeff), .B(sum) ); - -   localparam ACCWIDTH = 30; -   reg [ACCWIDTH-1:0] 	 accum; -    -   always @(posedge clk) -     if(rst) -       accum <= 0; -     else if(go_d2) -       accum <= {middle_d1[17],middle_d1[17],middle_d1,{(16+ACCWIDTH-36){1'b0}}} + {prod[35:36-ACCWIDTH]}; -     else if(go_d3) -       accum <= accum + {prod[35:36-ACCWIDTH]}; -    -   wire [WIDTH:0] 	 accum_rnd; -   wire [WIDTH-1:0] 	 accum_rnd_clip; -    -   wire 	 stb_round; -    -   round_sd #(.WIDTH_IN(ACCWIDTH),.WIDTH_OUT(WIDTH+1)) round_acc  -     (.clk(clk), .reset(rst), .in(accum), .strobe_in(go_d4), .out(accum_rnd), .strobe_out(stb_round)); - -   clip #(.bits_in(WIDTH+1),.bits_out(WIDTH)) clip (.in(accum_rnd), .out(accum_rnd_clip)); -    -   // Output -   always @(posedge clk) -     begin -	stb_out  <= bypass ? stb_in : stb_round; -	data_out <= bypass ? data_in : accum_rnd_clip; -     end - - -endmodule // small_hb_dec  | 
