Changeset 178 for trunk/3DEES/Paella.v
- Timestamp:
- Dec 20, 2013, 10:10:03 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/3DEES/Paella.v
r154 r178 34 34 ); 35 35 36 localparam N = 12;36 localparam N = 6; 37 37 38 38 // Turn output ports off … … 83 83 ); 84 84 85 /* 86 reg [31:0] led_counter; 87 always @(posedge CLK_50MHz) 88 begin 89 led_counter = led_counter + 32'd1; 90 end 91 assign LED = led_counter[28]; 92 */ 85 93 wire [11:0] osc_mux_data [4:0]; 86 94 … … 88 96 wire trg_flag; 89 97 90 wire [2:0] coi_data;91 wire coi_flag;92 93 98 wire [4*12-1:0] int_mux_data [N-1:0]; 94 99 95 wire amp_flag [N-1:0]; 96 wire [11:0] amp_data [N-1:0]; 97 98 wire cnt_good [N-1:0]; 100 wire [1:0] amp_flag [3*N-1:0]; 101 wire [12:0] amp_data [3*N-1:0]; 102 103 wire [1:0] amp_mux_flag [2:0]; 104 wire [11:0] amp_mux_data [2:0]; 105 106 wire cnt_good [3:0]; 99 107 wire [15:0] cnt_bits_wire; 100 108 … … 105 113 wire [11:0] tst_data; 106 114 107 wire [ 11:0] cmp_data;108 wire [1 1:0] del_data;109 110 wire [ 20:0] cic_data [N-1:0];115 wire [3:0] cmp_data; 116 wire [1:0] del_data; 117 118 wire [19:0] cic_data [N-1:0]; 111 119 112 120 wire [11:0] dec_data [N-1:0]; 113 wire [11:0] clp_data [N-1:0]; 114 wire [11:0] tmp_data [1:0]; 121 wire [12:0] clp_data [N-1:0]; 122 wire [11:0] tmp_data; 123 115 124 116 125 wire i2c_reset; 126 127 assign tmp_data = 12'h000; 128 assign sys_clock = CLK_100MHz; 129 /* 130 sys_pll sys_pll_unit( 131 .inclk0(CLK_100MHz), 132 .c0(sys_clock)); 133 */ 117 134 /* 118 135 sys_pll sys_pll_unit( … … 124 141 wire ADC_DCO, ADC_FCO; 125 142 143 126 144 test test_unit( 127 145 .clock(ADC_FCO), 128 146 .data(tst_data)); 147 */ 129 148 130 149 adc_lvds #( 131 .size( 3),150 .size(6), 132 151 .width(12)) adc_lvds_unit ( 133 152 .clock(sys_clock), 134 153 .lvds_dco(ADC_DCO), 135 154 .lvds_fco(ADC_FCO), 136 .lvds_d(36'd0), 137 .test(tst_data), 138 .trig(12'd0), 139 .adc_frame(sys_frame), 140 .adc_data({cmp_data, adc_data[2], adc_data[1], adc_data[0]})); 141 */ 142 sys_pll sys_pll_unit( 143 .inclk0(CLK_100MHz), 144 .c0(sys_clock)); 145 146 adc_lvds #( 147 .size(6), 148 .width(24)) adc_lvds_unit ( 149 .clock(sys_clock), 150 .lvds_dco(ADC_DCO), 151 .lvds_fco(ADC_FCO), 152 .lvds_d({ADC_D[5], ADC_D[4], ADC_D[3], ADC_D[2], ADC_D[1], ADC_D[0]}), 155 .lvds_d(ADC_D), 156 // .test(tst_data), 153 157 .adc_frame(sys_frame), 154 158 .adc_data({ 155 adc_data[11], adc_data[10], adc_data[9], adc_data[8], 156 adc_data[7], adc_data[6], adc_data[5], adc_data[4], 157 adc_data[3], adc_data[2], adc_data[1], adc_data[0]})); 159 adc_data[5], adc_data[4], adc_data[3], 160 adc_data[2], adc_data[1], adc_data[0]})); 158 161 159 162 wire [15:0] cfg_bits [63:0]; … … 174 177 wire mrg_bus_busy; 175 178 176 wire [1 2*16-1:0] int_bus_miso;179 wire [11*16-1:0] int_bus_miso; 177 180 178 181 genvar j; … … 197 200 198 201 generate 199 for (j = 0; j < 12; j = j + 1)202 for (j = 0; j < 6; j = j + 1) 200 203 begin : MUX_DATA 201 204 assign int_mux_data[j] = { 202 amp_data[j],203 clp_data[j],204 c ic_data[j][19:8],205 {4'd0, amp_flag[j][0], 7'd0}, 206 amp_data[j][11:0], 207 clp_data[j][11:0], 205 208 sys_data[j]}; 206 209 end … … 210 213 211 214 lpm_mux #( 212 .lpm_size(4* 12),215 .lpm_size(4*6), 213 216 .lpm_type("LPM_MUX"), 214 217 .lpm_width(12), 215 .lpm_widths( 6)) trg_mux_unit (216 .sel(cfg_bits[4][1 3:8]),218 .lpm_widths(5)) trg_mux_unit ( 219 .sel(cfg_bits[4][12:8]), 217 220 .data({ 218 int_mux_data[11], int_mux_data[10], int_mux_data[9], int_mux_data[8], 219 int_mux_data[7], int_mux_data[6], int_mux_data[5], int_mux_data[4], 220 int_mux_data[3], int_mux_data[2], int_mux_data[1], int_mux_data[0]}), 221 int_mux_data[5], int_mux_data[4], int_mux_data[3], 222 int_mux_data[2], int_mux_data[1], int_mux_data[0]}), 221 223 .result(trg_mux_data)); 222 224 … … 226 228 227 229 lpm_mux #( 228 .lpm_size(4* 12),230 .lpm_size(4*6), 229 231 .lpm_type("LPM_MUX"), 230 232 .lpm_width(12), 231 .lpm_widths( 6)) osc_mux_unit (232 .sel(cfg_mux_selector[j*8+ 5:j*8]),233 .lpm_widths(5)) osc_mux_unit ( 234 .sel(cfg_mux_selector[j*8+4:j*8]), 233 235 .data({ 234 int_mux_data[11], int_mux_data[10], int_mux_data[9], int_mux_data[8], 235 int_mux_data[7], int_mux_data[6], int_mux_data[5], int_mux_data[4], 236 int_mux_data[3], int_mux_data[2], int_mux_data[1], int_mux_data[0]}), 236 int_mux_data[5], int_mux_data[4], int_mux_data[3], 237 int_mux_data[2], int_mux_data[1], int_mux_data[0]}), 237 238 .result(osc_mux_data[j])); 238 239 end … … 264 265 .bus_busy(bus_busy[1])); 265 266 266 new_filter #(.size(12), .width(12)) filter_unit (267 filter #(.size(6), .width(12)) filter_unit ( 267 268 .clock(sys_clock), 268 269 .frame(sys_frame), 269 270 .reset(1'b0), 270 .inp_data({ 271 sys_data[11], sys_data[10], sys_data[9], sys_data[08], 272 sys_data[7], sys_data[6], sys_data[5], sys_data[4], 273 sys_data[3], sys_data[2], sys_data[1], sys_data[0]}), 274 .out_data({ 275 cic_data[11], cic_data[10], cic_data[9], cic_data[8], 276 cic_data[7], cic_data[6], cic_data[5], cic_data[4], 277 cic_data[3], cic_data[2], cic_data[1], cic_data[0]})); 278 279 generate 280 for (j = 0; j < 3; j = j + 1) 271 .inp_data({sys_data[5], sys_data[4], sys_data[3], 272 sys_data[2], sys_data[1], sys_data[0]}), 273 .out_data({cic_data[5], cic_data[4], cic_data[3], 274 cic_data[2], cic_data[1], cic_data[0]})); 275 /* 276 new_filter #(.size(6), .width(12)) filter_unit ( 277 .clock(sys_clock), 278 .frame(sys_frame), 279 .reset(1'b0), 280 .inp_data({sys_data[5], sys_data[4], sys_data[3], 281 sys_data[2], sys_data[1], sys_data[0]}), 282 .out_data({cic_data[5], cic_data[4], cic_data[3], 283 cic_data[2], cic_data[1], cic_data[0]})); 284 */ 285 286 generate 287 for (j = 0; j < 2; j = j + 1) 281 288 begin : DECONV_CHAIN 282 289 283 clip #(.shift(22), .width( 20), .widthr(12)) clip_unit (290 clip #(.shift(22), .width(19), .widthr(12)) clip_unit ( 284 291 .clock(sys_clock), 285 292 .frame(sys_frame), 286 293 .reset(1'b0), 287 // .del_data({6'd14, 6'd14, 6'd14, 6'd14}), 288 .del_data({cfg_bits[39+8*j][5:0], cfg_bits[37+8*j][5:0], cfg_bits[35+8*j][5:0], cfg_bits[33+8*j][5:0]}), 289 .amp_data({6'd17, 6'd17, 6'd17, 6'd17}), 290 // .tau_data({16'd17193, 16'd17193, 16'd17193, 16'd17193}), /* exp(-14/1125)*1024*17 */ 291 .tau_data({cfg_bits[38+8*j], cfg_bits[36+8*j], cfg_bits[34+8*j], cfg_bits[32+8*j]}), 294 .del_data({6'd0, 6'd32, 6'd32, 6'd32}), 295 // .del_data({6'd0, cfg_bits[37+6*j][5:0], cfg_bits[35+6*j][5:0], cfg_bits[33+6*j][5:0]}), 296 .amp_data({6'd0, 6'd20, 6'd20, 6'd20}), 297 .tau_data({16'd0, 16'd19835, 16'd19835, 16'd19835}), 298 // exp(-32/1000)*1024*20 299 // .tau_data({16'd0, cfg_bits[36+6*j], cfg_bits[34+6*j], cfg_bits[32+6*j]}), 292 300 .inp_data({ 293 cic_data[j*4+3][19:0], cic_data[j*4+2][19:0], 294 cic_data[j*4+1][19:0], cic_data[j*4+0][19:0]}), 301 19'd0, cic_data[j*3+2][18:0], cic_data[j*3+1][18:0], cic_data[j*3+0][18:0]}), 295 302 .out_data({ 296 clp_data[j*4+3], clp_data[j*4+2], 297 clp_data[j*4+1], clp_data[j*4+0]})); 298 299 end 300 endgenerate 301 302 generate 303 for (j = 0; j < 12; j = j + 1) 303 tmp_data, clp_data[j*3+2], clp_data[j*3+1], clp_data[j*3+0]})); 304 305 end 306 endgenerate 307 308 generate 309 for (j = 0; j < 6; j = j + 1) 304 310 begin : MCA_CHAIN 305 306 assign sys_data[j] = (cfg_bits[1][j]) ? (adc_data[j] ^ 12'hfff) : (adc_data[j]); 307 308 amplitude #(.width(12)) amplitude_unit_2 ( 311 /* 312 shift #(.shift(11), .width(19), .widthr(13)) shift_unit ( 309 313 .clock(sys_clock), 310 314 .frame(sys_frame), 311 315 .reset(1'b0), 312 .cfg_data({1'b0, 12'd0, 12'd5}), 313 // .cfg_data({cfg_bits[7+2*j][12:0], cfg_bits[6+2*j][11:0]}), 314 // .inp_data(dec_data[j]), 316 .amp_data(6'd21), 317 .inp_data(cic_data[j][18:0]), 318 .out_data(clp_data[j])); 319 */ 320 assign sys_data[j] = (cfg_bits[1][j]) ? (adc_data[j] ^ 12'hfff) : (adc_data[j]); 321 322 amplitude #(.width(13)) amplitude_unit ( 323 .clock(sys_clock), 324 .frame(sys_frame), 325 .reset(1'b0), 326 .min_data({1'b0, cfg_bits[7][11:0]}), 327 .max_data(13'd4095), 328 // .cfg_data(cfg_bits[6+2*j][11:0]), 315 329 .inp_data(clp_data[j]), 316 330 .out_flag(amp_flag[j]), … … 323 337 .frame(sys_frame), 324 338 .reset(cfg_bits[0][5]), 325 .hst_good((amp_flag[0] ) & (cnt_good[0]) & (cfg_bits[13][1])),339 .hst_good((amp_flag[0][1]) & (cnt_good[0]) & (cfg_bits[13][1])), 326 340 .hst_data(amp_data[0]), 327 /*328 .hst_good((amp_flag[j]) & (cnt_good[j]) & (cfg_bits[13][1])),329 .hst_data(amp_data[j]),330 */331 341 .bus_ssel(bus_ssel[2]), 332 342 .bus_wren(bus_wren), … … 338 348 counter hst_counter_unit ( 339 349 .clock(sys_clock), 340 // .frame((sys_frame) & (~ana_dead[0])),341 .frame(sys_frame),350 .frame((sys_frame) & (~amp_flag[0][1])), 351 // .frame(sys_frame), 342 352 .reset(cfg_bits[0][8]), 343 353 .setup(cfg_bits[13][0]), … … 395 405 396 406 lpm_mux #( 397 .lpm_size(1 2),407 .lpm_size(11), 398 408 .lpm_type("LPM_MUX"), 399 409 .lpm_width(16),
Note:
See TracChangeset
for help on using the changeset viewer.