OpenCores
URL https://opencores.org/ocsvn/qaz_libs/qaz_libs/trunk

Subversion Repositories qaz_libs

[/] [qaz_libs/] [trunk/] [basal/] [src/] [gear_box/] [buffered_gear_box.v] - Blame information for rev 34

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 34 qaztronic
// --------------------------------------------------------------------
2
//
3
// --------------------------------------------------------------------
4
 
5
 
6
module
7
  buffered_gear_box(
8
    input   [12:0]  adc_bus,
9
    output          adc_data_stall,
10
 
11
    output  [7:0]   out,
12
 
13
    input           clk_1250,
14
    input           clk_250,
15
    input           sys_reset
16
  );
17
 
18
 
19
  // --------------------------------------------------------------------
20
  //
21
  reg [3:0] gear_select;
22
  wire      gear_reset = sys_reset | ~(gear_select < 4'hc);
23
 
24
  always @( posedge clk_250 )
25
    if( gear_reset )
26
      gear_select <= 0;
27
    else
28
      gear_select <= gear_select + 1;
29
 
30
 
31
  // --------------------------------------------------------------------
32
  //
33
  reg load_shift_r_select;
34
 
35
  always @( posedge clk_250 )
36
    if( sys_reset )
37
      load_shift_r_select <= 0;
38
    else if( gear_reset )
39
      load_shift_r_select <= ~load_shift_r_select;
40
 
41
 
42
  // --------------------------------------------------------------------
43
  //
44
  reg [3:0] counter;
45
  wire      shift_en = (~gear_reset) & (counter < 4'h8);
46
 
47
  always @( posedge clk_1250 )
48
    if( gear_reset )
49
      counter <= 0;
50
    else if( shift_en )
51
      counter <= counter + 1;
52
 
53
 
54
  // --------------------------------------------------------------------
55
  //
56
  reg [103:0] shift_b0_r;
57
  reg [103:0] shift_b1_r;
58
 
59
  always @( posedge clk_1250 )
60
    if( ~load_shift_r_select & shift_en )
61
        shift_b0_r <= {adc_bus, shift_b0_r[103:13]};
62
 
63
  always @( posedge clk_1250 )
64
    if( load_shift_r_select & shift_en )
65
        shift_b1_r <= {adc_bus, shift_b1_r[103:13]};
66
 
67
 
68
  // --------------------------------------------------------------------
69
  //
70
  reg  [7:0] shift_b0_r_mux;
71
 
72
  always @( * )
73
    case( gear_select )
74
      4'h0:      shift_b0_r_mux = shift_b0_r[7:0];
75
      4'h1:      shift_b0_r_mux = shift_b0_r[15:8];
76
      4'h2:      shift_b0_r_mux = shift_b0_r[23:16];
77
      4'h3:      shift_b0_r_mux = shift_b0_r[31:24];
78
      4'h4:      shift_b0_r_mux = shift_b0_r[39:32];
79
      4'h5:      shift_b0_r_mux = shift_b0_r[47:40];
80
      4'h6:      shift_b0_r_mux = shift_b0_r[55:48];
81
      4'h7:      shift_b0_r_mux = shift_b0_r[63:56];
82
      4'h8:      shift_b0_r_mux = shift_b0_r[71:64];
83
      4'h9:      shift_b0_r_mux = shift_b0_r[79:72];
84
      4'ha:      shift_b0_r_mux = shift_b0_r[87:80];
85
      4'hb:      shift_b0_r_mux = shift_b0_r[95:88];
86
      4'hc:      shift_b0_r_mux = shift_b0_r[103:96];
87
      default:   shift_b0_r_mux = shift_b0_r[7:0];
88
    endcase
89
 
90
 
91
  // --------------------------------------------------------------------
92
  //
93
  reg  [7:0] shift_b1_r_mux;
94
 
95
  always @( * )
96
    case( gear_select )
97
      4'h0:      shift_b1_r_mux = shift_b1_r[7:0];
98
      4'h1:      shift_b1_r_mux = shift_b1_r[15:8];
99
      4'h2:      shift_b1_r_mux = shift_b1_r[23:16];
100
      4'h3:      shift_b1_r_mux = shift_b1_r[31:24];
101
      4'h4:      shift_b1_r_mux = shift_b1_r[39:32];
102
      4'h5:      shift_b1_r_mux = shift_b1_r[47:40];
103
      4'h6:      shift_b1_r_mux = shift_b1_r[55:48];
104
      4'h7:      shift_b1_r_mux = shift_b1_r[63:56];
105
      4'h8:      shift_b1_r_mux = shift_b1_r[71:64];
106
      4'h9:      shift_b1_r_mux = shift_b1_r[79:72];
107
      4'ha:      shift_b1_r_mux = shift_b1_r[87:80];
108
      4'hb:      shift_b1_r_mux = shift_b1_r[95:88];
109
      4'hc:      shift_b1_r_mux = shift_b1_r[103:96];
110
      default:   shift_b1_r_mux = shift_b1_r[7:0];
111
    endcase
112
 
113
 
114
  // --------------------------------------------------------------------
115
  //
116
  assign adc_data_stall = ~shift_en;
117
 
118
 
119
  assign out = load_shift_r_select ? shift_b0_r_mux : shift_b1_r_mux;
120
 
121
 
122
endmodule

powered by: WebSVN 2.1.0

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