OpenCores
URL https://opencores.org/ocsvn/aes-128-ecb-encoder/aes-128-ecb-encoder/trunk

Subversion Repositories aes-128-ecb-encoder

[/] [aes-128-ecb-encoder/] [trunk/] [fpga/] [aes128_ecb_2017/] [aes128_ecb.srcs/] [sources_1/] [ip/] [clk_gen/] [mmcm_pll_drp_func_us_pll.vh] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 vv_gulyaev
///////////////////////////////////////////////////////////////////////////////
2
//    
3
//    Company:          Xilinx
4
//    Engineer:         Jim Tatsukawa
5
//    Date:             6/15/2015
6
//    Design Name:      PLLE3 DRP
7
//    Module Name:      plle3_drp_func.h
8
//    Version:          1.10
9
//    Target Devices:   UltraScale Architecture
10
//    Tool versions:    2015.1
11
//    Description:      This header provides the functions necessary to  
12
//                      calculate the DRP register values for the V6 PLL.
13
//                      
14
//      Revision Notes: 8/11 - PLLE3 updated for PLLE3 file 4564419
15
//      Revision Notes: 6/15 - pll_filter_lookup fixed for max M of 19
16
//                         PM_Rise bits have been removed for PLLE3
17
// 
18
//    Disclaimer:  XILINX IS PROVIDING THIS DESIGN, CODE, OR
19
//                 INFORMATION "AS IS" SOLELY FOR USE IN DEVELOPING
20
//                 PROGRAMS AND SOLUTIONS FOR XILINX DEVICES.  BY
21
//                 PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
22
//                 ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
23
//                 APPLICATION OR STANDARD, XILINX IS MAKING NO
24
//                 REPRESENTATION THAT THIS IMPLEMENTATION IS FREE
25
//                 FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE
26
//                 RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY
27
//                 REQUIRE FOR YOUR IMPLEMENTATION.  XILINX
28
//                 EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH
29
//                 RESPECT TO THE ADEQUACY OF THE IMPLEMENTATION,
30
//                 INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
31
//                 REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE
32
//                 FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES
33
//                 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
34
//                 PURPOSE.
35
// 
36
//                 (c) Copyright 2009-2010 Xilinx, Inc.
37
//                 All rights reserved.
38
// 
39
///////////////////////////////////////////////////////////////////////////////
40
 
41
// These are user functions that should not be modified.  Changes to the defines
42
// or code within the functions may alter the accuracy of the calculations.
43
 
44
// Define debug to provide extra messages durring elaboration
45
//`define DEBUG 1
46
 
47
// FRAC_PRECISION describes the width of the fractional portion of the fixed
48
//    point numbers.  These should not be modified, they are for development 
49
//    only
50
`define FRAC_PRECISION  10
51
// FIXED_WIDTH describes the total size for fixed point calculations(int+frac).
52
// Warning: L.50 and below will not calculate properly with FIXED_WIDTHs 
53
//    greater than 32
54
`define FIXED_WIDTH     32
55
 
56
// This function takes a fixed point number and rounds it to the nearest
57
//    fractional precision bit.
58
function [`FIXED_WIDTH:1] round_frac
59
   (
60
      // Input is (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point number
61
      input [`FIXED_WIDTH:1] decimal,
62
 
63
      // This describes the precision of the fraction, for example a value
64
      //    of 1 would modify the fractional so that instead of being a .16
65
      //    fractional, it would be a .1 (rounded to the nearest 0.5 in turn)
66
      input [`FIXED_WIDTH:1] precision
67
   );
68
 
69
   begin
70
 
71
   `ifdef DEBUG
72
      $display("round_frac - decimal: %h, precision: %h", decimal, precision);
73
   `endif
74
      // If the fractional precision bit is high then round up
75
      if( decimal[(`FRAC_PRECISION-precision)] == 1'b1) begin
76
         round_frac = decimal + (1'b1 << (`FRAC_PRECISION-precision));
77
      end else begin
78
         round_frac = decimal;
79
      end
80
   `ifdef DEBUG
81
      $display("round_frac: %h", round_frac);
82
   `endif
83
   end
84
endfunction
85
 
86
// This function calculates high_time, low_time, w_edge, and no_count
87
//    of a non-fractional counter based on the divide and duty cycle
88
//
89
// NOTE: high_time and low_time are returned as integers between 0 and 63 
90
//    inclusive.  64 should equal 6'b000000 (in other words it is okay to 
91
//    ignore the overflow)
92
function [13:0] mmcm_pll_divider
93
   (
94
      input [7:0] divide,        // Max divide is 128
95
      input [31:0] duty_cycle    // Duty cycle is multiplied by 100,000
96
   );
97
 
98
   reg [`FIXED_WIDTH:1]    duty_cycle_fix;
99
 
100
   // High/Low time is initially calculated with a wider integer to prevent a
101
   // calculation error when it overflows to 64.
102
   reg [6:0]               high_time;
103
   reg [6:0]               low_time;
104
   reg                     w_edge;
105
   reg                     no_count;
106
 
107
   reg [`FIXED_WIDTH:1]    temp;
108
 
109
   begin
110
      // Duty Cycle must be between 0 and 1,000
111
      if(duty_cycle <=0 || duty_cycle >= 100000) begin
112
         $display("ERROR: duty_cycle: %d is invalid", duty_cycle);
113
         $finish;
114
      end
115
 
116
      // Convert to FIXED_WIDTH-FRAC_PRECISION.FRAC_PRECISION fixed point
117
      duty_cycle_fix = (duty_cycle << `FRAC_PRECISION) / 100_000;
118
 
119
   `ifdef DEBUG
120
      $display("duty_cycle_fix: %h", duty_cycle_fix);
121
   `endif
122
 
123
      // If the divide is 1 nothing needs to be set except the no_count bit.
124
      //    Other values are dummies
125
      if(divide == 7'h01) begin
126
         high_time   = 7'h01;
127
         w_edge      = 1'b0;
128
         low_time    = 7'h01;
129
         no_count    = 1'b1;
130
      end else begin
131
         temp = round_frac(duty_cycle_fix*divide, 1);
132
 
133
         // comes from above round_frac
134
         high_time   = temp[`FRAC_PRECISION+7:`FRAC_PRECISION+1];
135
         // If the duty cycle * divide rounded is .5 or greater then this bit
136
         //    is set.
137
         w_edge      = temp[`FRAC_PRECISION]; // comes from round_frac
138
 
139
         // If the high time comes out to 0, it needs to be set to at least 1
140
         // and w_edge set to 0
141
         if(high_time == 7'h00) begin
142
            high_time   = 7'h01;
143
            w_edge      = 1'b0;
144
         end
145
 
146
         if(high_time == divide) begin
147
            high_time   = divide - 1;
148
            w_edge      = 1'b1;
149
         end
150
 
151
         // Calculate low_time based on the divide setting and set no_count to
152
         //    0 as it is only used when divide is 1.
153
         low_time    = divide - high_time;
154
         no_count    = 1'b0;
155
      end
156
 
157
      // Set the return value.
158
      mmcm_pll_divider = {w_edge,no_count,high_time[5:0],low_time[5:0]};
159
   end
160
endfunction
161
 
162
// This function calculates mx, delay_time, and phase_mux 
163
//  of a non-fractional counter based on the divide and phase
164
//
165
// NOTE: The only valid value for the MX bits is 2'b00 to ensure the coarse mux
166
//    is used.
167
function [10:0] mmcm_pll_phase
168
   (
169
      // divide must be an integer (use fractional if not)
170
      //  assumed that divide already checked to be valid
171
      input [7:0] divide, // Max divide is 128
172
 
173
      // Phase is given in degrees (-360,000 to 360,000)
174
      input signed [31:0] phase
175
   );
176
 
177
   reg [`FIXED_WIDTH:1] phase_in_cycles;
178
   reg [`FIXED_WIDTH:1] phase_fixed;
179
   reg [1:0]            mx;
180
   reg [5:0]            delay_time;
181
   reg [2:0]            phase_mux;
182
 
183
   reg [`FIXED_WIDTH:1] temp;
184
 
185
   begin
186
`ifdef DEBUG
187
      $display("mmcm_pll_phase-divide:%d,phase:%d",
188
         divide, phase);
189
`endif
190
 
191
      if ((phase < -360000) || (phase > 360000)) begin
192
         $display("ERROR: phase of $phase is not between -360000 and 360000");
193
         $finish;
194
      end
195
 
196
      // If phase is less than 0, convert it to a positive phase shift
197
      // Convert to (FIXED_WIDTH-FRAC_PRECISION).FRAC_PRECISION fixed point
198
      if(phase < 0) begin
199
         phase_fixed = ( (phase + 360000) << `FRAC_PRECISION ) / 1000;
200
      end else begin
201
         phase_fixed = ( phase << `FRAC_PRECISION ) / 1000;
202
      end
203
 
204
      // Put phase in terms of decimal number of vco clock cycles
205
      phase_in_cycles = ( phase_fixed * divide ) / 360;
206
 
207
`ifdef DEBUG
208
      $display("phase_in_cycles: %h", phase_in_cycles);
209
`endif
210
 
211
 
212
         temp  =  round_frac(phase_in_cycles, 3);
213
 
214
         // set mx to 2'b00 that the phase mux from the VCO is enabled
215
         mx                     =  2'b00;
216
         phase_mux      =  temp[`FRAC_PRECISION:`FRAC_PRECISION-2];
217
         delay_time     =  temp[`FRAC_PRECISION+6:`FRAC_PRECISION+1];
218
 
219
   `ifdef DEBUG
220
      $display("temp: %h", temp);
221
   `endif
222
 
223
      // Setup the return value
224
      mmcm_pll_phase={mx, phase_mux, delay_time};
225
   end
226
endfunction
227
 
228
// This function takes the divide value and outputs the necessary lock values
229
function [39:0] mmcm_pll_lock_lookup
230
   (
231
      input [6:0] divide // Max divide is 64
232
   );
233
 
234
   reg [759:0]   lookup;
235
 
236
   begin
237
      lookup = {
238
         // This table is composed of:
239
         // LockRefDly_LockFBDly_LockCnt_LockSatHigh_UnlockCnt
240
         40'b00110_00110_1111101000_1111101001_0000000001, //1  
241
         40'b00110_00110_1111101000_1111101001_0000000001, //2
242
         40'b01000_01000_1111101000_1111101001_0000000001, //3
243
         40'b01011_01011_1111101000_1111101001_0000000001, //4
244
         40'b01110_01110_1111101000_1111101001_0000000001, //5
245
         40'b10001_10001_1111101000_1111101001_0000000001, //6
246
         40'b10011_10011_1111101000_1111101001_0000000001, //7
247
         40'b10110_10110_1111101000_1111101001_0000000001, //8
248
         40'b11001_11001_1111101000_1111101001_0000000001, //9
249
         40'b11100_11100_1111101000_1111101001_0000000001, //10
250
         40'b11111_11111_1110000100_1111101001_0000000001, //11
251
         40'b11111_11111_1100111001_1111101001_0000000001, //12
252
         40'b11111_11111_1011101110_1111101001_0000000001, //13
253
         40'b11111_11111_1010111100_1111101001_0000000001, //14
254
         40'b11111_11111_1010001010_1111101001_0000000001, //15
255
         40'b11111_11111_1001110001_1111101001_0000000001, //16
256
         40'b11111_11111_1000111111_1111101001_0000000001, //17
257
         40'b11111_11111_1000100110_1111101001_0000000001, //18
258
         40'b11111_11111_1000001101_1111101001_0000000001 //19
259
 
260
      };
261
 
262
      // Set lookup_entry with the explicit bits from lookup with a part select
263
      mmcm_pll_lock_lookup = lookup[ ((19-divide)*40) +: 40];
264
   `ifdef DEBUG
265
      $display("lock_lookup: %b", mmcm_pll_lock_lookup);
266
   `endif
267
   end
268
endfunction
269
 
270
// This function takes the divide value and the bandwidth setting of the PLL
271
//  and outputs the digital filter settings necessary. Removing bandwidth setting for PLLE3.
272
function [9:0] mmcm_pll_filter_lookup
273
   (
274
      input [6:0] divide // Max divide is 19
275
   );
276
 
277
   reg [639:0] lookup;
278
   reg [9:0] lookup_entry;
279
 
280
   begin
281
 
282
      lookup = {
283
         // CP_RES_LFHF
284
         10'b0010_1111_01, //1
285
         10'b0010_0011_11, //2
286
         10'b0011_0011_11, //3
287
         10'b0010_0001_11, //4
288
         10'b0010_0110_11, //5
289
         10'b0010_1010_11, //6
290
         10'b0010_1010_11, //7
291
         10'b0011_0110_11, //8
292
         10'b0010_1100_11, //9
293
         10'b0010_1100_11, //10
294
         10'b0010_1100_11, //11
295
         10'b0010_0010_11, //12
296
         10'b0011_1100_11, //13
297
         10'b0011_1100_11, //14
298
         10'b0011_1100_11, //15
299
         10'b0011_1100_11, //16
300
         10'b0011_0010_11, //17
301
         10'b0011_0010_11, //18
302
         10'b0011_0010_11 //19
303
      };
304
 
305
         mmcm_pll_filter_lookup = lookup [ ((19-divide)*10) +: 10];
306
 
307
   `ifdef DEBUG
308
      $display("filter_lookup: %b", mmcm_pll_filter_lookup);
309
   `endif
310
   end
311
endfunction
312
 
313
// This function set the CLKOUTPHY divide settings to match
314
// the desired CLKOUTPHY_MODE setting. To create VCO_X2, then
315
// the CLKOUTPHY will be set to 2'b00 since the VCO is internally
316
// doubled and 2'b00 will represent divide by 1. Similarly "VCO" // will need to divide the doubled clock VCO clock frequency by // 2 therefore 2'b01 will match a divide by 2.And VCO_HALF will // need to divide the doubled VCO by 4, therefore 2'b10
317
function [9:0] mmcm_pll_clkoutphy_calc
318
   (
319
      input [8*9:0] CLKOUTPHY_MODE
320
   );
321
 
322
      if(CLKOUTPHY_MODE == "VCO_X2") begin
323
         mmcm_pll_clkoutphy_calc= 2'b00;
324
      end else if(CLKOUTPHY_MODE == "VCO") begin
325
         mmcm_pll_clkoutphy_calc= 2'b01;
326
      end else if(CLKOUTPHY_MODE == "CLKIN") begin
327
         mmcm_pll_clkoutphy_calc= 2'b11;
328
      end else begin // Assume "VCO_HALF"
329
         mmcm_pll_clkoutphy_calc= 2'b10;
330
      end
331
 
332
endfunction
333
 
334
 
335
// This function takes in the divide, phase, and duty cycle
336
// setting to calculate the upper and lower counter registers.
337
function [37:0] mmcm_pll_count_calc
338
   (
339
      input [7:0] divide, // Max divide is 128
340
      input signed [31:0] phase,
341
      input [31:0] duty_cycle // Multiplied by 100,000
342
   );
343
 
344
   reg [13:0] div_calc;
345
   reg [16:0] phase_calc;
346
 
347
   begin
348
   `ifdef DEBUG
349
      $display("mmcm_pll_count_calc- divide:%h, phase:%d, duty_cycle:%d",
350
         divide, phase, duty_cycle);
351
   `endif
352
 
353
      // w_edge[13], no_count[12], high_time[11:6], low_time[5:0]
354
      div_calc = mmcm_pll_divider(divide, duty_cycle);
355
      // mx[10:9], pm[8:6], dt[5:0]
356
      phase_calc = mmcm_pll_phase(divide, phase);
357
 
358
      // Return value is the upper and lower address of counter
359
      //    Upper address is:
360
      //       RESERVED    [31:26]
361
      //       MX          [25:24]
362
      //       EDGE        [23]
363
      //       NOCOUNT     [22]
364
      //       DELAY_TIME  [21:16]
365
      //    Lower Address is:
366
      //       PHASE_MUX   [15:13]
367
      //       RESERVED    [12]
368
      //       HIGH_TIME   [11:6]
369
      //       LOW_TIME    [5:0]
370
 
371
   `ifdef DEBUG
372
      $display("div:%d dc:%d phase:%d ht:%d lt:%d ed:%d nc:%d mx:%d dt:%d pm:%d",
373
         divide, duty_cycle, phase, div_calc[11:6], div_calc[5:0],
374
         div_calc[13], div_calc[12],
375
         phase_calc[16:15], phase_calc[5:0], 3'b000);//Removed PM_Rise bits
376
   `endif
377
 
378
      mmcm_pll_count_calc =
379
         {
380
            // Upper Address
381
            6'h00, phase_calc[10:9], div_calc[13:12], phase_calc[5:0],
382
            // Lower Address
383
            phase_calc[8:6], 1'b0, div_calc[11:0]
384
         };
385
   end
386
endfunction
387
 
388
 
389
// This function takes in the divide, phase, and duty cycle
390
// setting to calculate the upper and lower counter registers.
391
// for fractional multiply/divide functions.
392
//
393
// 
394
function [37:0] mmcm_pll_frac_count_calc
395
   (
396
      input [7:0] divide, // Max divide is 128
397
      input signed [31:0] phase,
398
      input [31:0] duty_cycle, // Multiplied by 1,000
399
      input [9:0] frac // Multiplied by 1000
400
   );
401
 
402
        //Required for fractional divide calculations
403
                          reg   [7:0]                    lt_frac;
404
                          reg   [7:0]                    ht_frac;
405
 
406
                          reg   /*[7:0]*/                       wf_fall_frac;
407
                          reg   /*[7:0]*/                       wf_rise_frac;
408
 
409
                          reg [31:0] a;
410
                          reg   [7:0]                    pm_rise_frac_filtered ;
411
                          reg   [7:0]                    pm_fall_frac_filtered ;
412
                          reg [7:0]                      clkout0_divide_int;
413
                          reg [2:0]                      clkout0_divide_frac;
414
                          reg   [7:0]                    even_part_high;
415
                          reg   [7:0]                    even_part_low;
416
 
417
                          reg   [7:0]                    odd;
418
                          reg   [7:0]                    odd_and_frac;
419
 
420
                          reg   [7:0]                    pm_fall;
421
                          reg   [7:0]                    pm_rise;
422
                          reg   [7:0]                    dt;
423
                          reg   [7:0]                    dt_int;
424
                          reg [63:0]             dt_calc;
425
 
426
                          reg   [7:0]                    pm_rise_frac;
427
                          reg   [7:0]                    pm_fall_frac;
428
 
429
                          reg [31:0] a_per_in_octets;
430
                          reg [31:0] a_phase_in_cycles;
431
 
432
                                parameter precision = 0.125;
433
 
434
                          reg [31:0] phase_fixed; // changed to 31:0 from 32:1 jt 5/2/11
435
                          reg [31: 0] phase_pos;
436
                          reg [31: 0] phase_vco;
437
                          reg [31:0] temp;// changed to 31:0 from 32:1 jt 5/2/11
438
                          reg [13:0] div_calc;
439
                          reg [16:0] phase_calc;
440
 
441
   begin
442
        `ifdef DEBUG
443
                        $display("mmcm_pll_frac_count_calc- divide:%h, phase:%d, duty_cycle:%d",
444
                                divide, phase, duty_cycle);
445
        `endif
446
 
447
   //convert phase to fixed
448
   if ((phase < -360000) || (phase > 360000)) begin
449
      $display("ERROR: phase of $phase is not between -360000 and 360000");
450
      $finish;
451
   end
452
 
453
 
454
      // Return value is
455
      //    Transfer data
456
      //       RESERVED     [37:36]
457
      //       FRAC_TIME    [35:33]
458
      //       FRAC_WF_FALL [32]
459
      //    Upper address is:
460
      //       RESERVED     [31:26]
461
      //       MX           [25:24]
462
      //       EDGE         [23]
463
      //       NOCOUNT      [22]
464
      //       DELAY_TIME   [21:16]
465
      //    Lower Address is:
466
      //       PHASE_MUX    [15:13]
467
      //       RESERVED     [12]
468
      //       HIGH_TIME    [11:6]
469
      //       LOW_TIME     [5:0]
470
 
471
 
472
 
473
        clkout0_divide_frac = frac / 125;
474
        clkout0_divide_int = divide;
475
 
476
        even_part_high = clkout0_divide_int >> 1;//$rtoi(clkout0_divide_int / 2);
477
        even_part_low = even_part_high;
478
 
479
        odd = clkout0_divide_int - even_part_high - even_part_low;
480
        odd_and_frac = (8*odd) + clkout0_divide_frac;
481
 
482
        lt_frac = even_part_high - (odd_and_frac <= 9);//IF(odd_and_frac>9,even_part_high, even_part_high - 1)
483
        ht_frac = even_part_low  - (odd_and_frac <= 8);//IF(odd_and_frac>8,even_part_low, even_part_low- 1)
484
 
485
        pm_fall =  {odd[6:0],2'b00} + {6'h00, clkout0_divide_frac[2:1]}; // using >> instead of clkout0_divide_frac / 2 
486
        pm_rise = 0; //0
487
 
488
        wf_fall_frac = (odd_and_frac >=2) && (odd_and_frac <=9);//IF(odd_and_frac>=2,IF(odd_and_frac <= 9,1,0),0)
489
        wf_rise_frac = (odd_and_frac >=1) && (odd_and_frac <=8);//IF(odd_and_frac>=1,IF(odd_and_frac <= 8,1,0),0)
490
 
491
 
492
 
493
        //Calculate phase in fractional cycles
494
        a_per_in_octets         = (8 * divide) + (frac / 125) ;
495
        a_phase_in_cycles       = (phase+10) * a_per_in_octets / 360000 ;//Adding 1 due to rounding errors
496
        pm_rise_frac            = (a_phase_in_cycles[7:0] ==8'h00)?8'h00:a_phase_in_cycles[7:0] - {a_phase_in_cycles[7:3],3'b000};
497
 
498
        dt_calc         = ((phase+10) * a_per_in_octets / 8 )/360000 ;//TRUNC(phase* divide / 360); //or_simply (a_per_in_octets / 8)
499
        dt      = dt_calc[7:0];
500
 
501
        pm_rise_frac_filtered = (pm_rise_frac >=8) ? (pm_rise_frac ) - 8: pm_rise_frac ;                                //((phase_fixed * (divide + frac / 1000)) / 360) - {pm_rise_frac[7:3],3'b000};//$rtoi(clkout0_phase * clkout0_divide / 45);//a;
502
 
503
        dt_int                  = dt + (& pm_rise_frac[7:4]); //IF(pm_rise_overwriting>7,dt+1,dt)
504
        pm_fall_frac            = pm_fall + pm_rise_frac;
505
        pm_fall_frac_filtered   = pm_fall + pm_rise_frac - {pm_fall_frac[7:3], 3'b000};
506
 
507
        div_calc        = mmcm_pll_divider(divide, duty_cycle); //Use to determine edge[7], no count[6]
508
        phase_calc      = mmcm_pll_phase(divide, phase);// returns{mx[1:0], phase_mux[2:0], delay_time[5:0]}
509
 
510
      mmcm_pll_frac_count_calc[37:0] =
511
         {              2'b00, pm_fall_frac_filtered[2:0], wf_fall_frac,
512
                        1'b0, clkout0_divide_frac[2:0], 1'b1, wf_rise_frac, phase_calc[10:9], div_calc[13:12], dt[5:0],
513
                        3'b000, 1'b0, ht_frac[5:0], lt_frac[5:0] //Removed PM_Rise bits
514
//                      pm_rise_frac_filtered[2], pm_rise_frac_filtered[1], pm_rise_frac_filtered[0], 1'b0, ht_frac[5:0], lt_frac[5:0]
515
                } ;
516
 
517
   `ifdef DEBUG
518
      $display("-%d.%d p%d>>  :DADDR_9_15 frac30to28.frac_en.wf_r_frac.dt:%b%d%d_%b:DADDR_7_13 pm_f_frac_filtered_29to27.wf_f_frac_26:%b%d:DADDR_8_14.pm_r_frac_filt_15to13.ht_frac.lt_frac:%b%b%b:", divide, frac, phase, clkout0_divide_frac, 1, wf_rise_frac, dt, pm_fall_frac_filtered, wf_fall_frac, 3'b000, ht_frac, lt_frac);
519
   `endif
520
 
521
   end
522
endfunction
523
 
524
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.