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

Subversion Repositories rs_encoder_decoder

[/] [rs_encoder_decoder/] [rtl/] [RS8Encoder8t.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 farooq21
// This is a verilog File Generated
2
// By The C++ program That Generates
3
// An Gallios Field Hardware DFT and IDFT
4
 
5
module RS8Encoder8t(clk_i, rst_i,
6
  encoder_i, // Control Signal calculates dft if dft_idft = 0 else idft if dft_idft = 1
7
  valid_i, // Control Signal
8
  encoder_o,  // Gallios Field Register input 1
9
  parity_o,
10
  busy_o
11
  );
12
  // Inputs are declared here
13
  input clk_i,rst_i;                    // Clock and Reset Declaration
14
  input valid_i; // Controll Signal That does All the Required Operations
15
  input [7:0] encoder_i;
16
  output reg [7:0] encoder_o;
17
  output reg parity_o;
18
  output reg busy_o;
19
 
20
  // Declaration of Wires And Register are here 
21
  reg [7:0] enc_reg;  // register inputs
22
  reg [7:0] reg_o [0:15];
23
  reg reg_o_o;
24
  reg [7:0] add_i;
25
  reg [8:0] input_counter;
26
  wire [7:0] mult_o[0:15];
27
 
28
 
29
 
30
  // Combinational Body 
31
  always @(input_counter or reg_o[0] or encoder_i) begin
32
    if (input_counter < 241) begin
33
      encoder_o = enc_reg;
34
    end
35
    else begin
36
      encoder_o = reg_o[0];
37
    end
38
  end
39
 
40
  always @(input_counter) begin
41
    if(|input_counter)
42
      parity_o = 1;
43
    else
44
      parity_o = 0;
45
  end
46
 
47
  always @(input_counter)begin
48
    if(input_counter>=239)
49
      busy_o = 1;
50
    else
51
      busy_o = 0;
52
  end
53
 
54
  always @(input_counter or encoder_i or reg_o[0]) begin
55
    if(input_counter == 1)
56
      add_i = enc_reg;
57
    else if(input_counter <240)
58
      add_i = reg_o[0]^enc_reg;
59
    else
60
      add_i = 8'b0;
61
  end
62
 
63
  // Sequential Circuit Starts from Here
64
  // input counter that counts no of inputs set
65
  always @(posedge clk_i) begin
66
    if(rst_i)
67
      enc_reg <= 0;
68
    else
69
      enc_reg <= encoder_i;
70
  end
71
 
72
  always @(posedge clk_i) begin
73
    if((rst_i) || (input_counter[8]))  begin
74
      input_counter <= 0;
75
    end
76
    else if (valid_i) begin
77
      input_counter <= input_counter + 1;
78
    end
79
  end
80
 
81
  always @(posedge clk_i) begin
82
    if (rst_i) begin
83
      reg_o[0]  <= 0;
84
      reg_o[1]  <= 0;
85
      reg_o[2]  <= 0;
86
      reg_o[3]  <= 0;
87
      reg_o[4]  <= 0;
88
      reg_o[5]  <= 0;
89
      reg_o[6]  <= 0;
90
      reg_o[7]  <= 0;
91
      reg_o[8]  <= 0;
92
      reg_o[9]  <= 0;
93
      reg_o[10] <= 0;
94
      reg_o[11] <= 0;
95
      reg_o[12] <= 0;
96
      reg_o[13] <= 0;
97
      reg_o[14] <= 0;
98
      reg_o[15] <= 0;
99
    end
100
    else if(input_counter == 1) begin
101
      reg_o[0] <= mult_o[0];
102
      reg_o[1] <= mult_o[1];
103
      reg_o[2] <= mult_o[2];
104
      reg_o[3] <= mult_o[3];
105
      reg_o[4] <= mult_o[4];
106
      reg_o[5] <= mult_o[5];
107
      reg_o[6] <= mult_o[6];
108
      reg_o[7] <= mult_o[7];
109
      reg_o[8] <= mult_o[8];
110
      reg_o[9] <= mult_o[9];
111
      reg_o[10] <= mult_o[10];
112
      reg_o[11] <= mult_o[11];
113
      reg_o[12] <= mult_o[12];
114
      reg_o[13] <= mult_o[13];
115
      reg_o[14] <= mult_o[14];
116
      reg_o[15] <= mult_o[15];
117
    end
118
    else begin
119
      reg_o[0] <= reg_o[1]^mult_o[0];
120
      reg_o[1] <= reg_o[2]^mult_o[1];
121
      reg_o[2] <= reg_o[3]^mult_o[2];
122
      reg_o[3] <= reg_o[4]^mult_o[3];
123
      reg_o[4] <= reg_o[5]^mult_o[4];
124
      reg_o[5] <= reg_o[6]^mult_o[5];
125
      reg_o[6] <= reg_o[7]^mult_o[6];
126
      reg_o[7] <= reg_o[8]^mult_o[7];
127
      reg_o[8] <= reg_o[9]^mult_o[8];
128
      reg_o[9] <= reg_o[10]^mult_o[9];
129
      reg_o[10] <= reg_o[11]^mult_o[10];
130
      reg_o[11] <= reg_o[12]^mult_o[11];
131
      reg_o[12] <= reg_o[13]^mult_o[12];
132
      reg_o[13] <= reg_o[14]^mult_o[13];
133
      reg_o[14] <= reg_o[15]^mult_o[14];
134
      reg_o[15] <= mult_o[15];
135
    end
136
  end
137
 
138
///////////////// Structural Model ////////////////
139
 
140
  // Multipliers Depending on the Generator Polynomial
141
  GF8Mult121 MULT_0(
142
    .mult_i(add_i),
143
    .mult_o(mult_o[0]) );
144
 
145
  GF8Mult106 MULT_1(
146
    .mult_i(add_i),
147
    .mult_o(mult_o[1]) );
148
 
149
  GF8Mult110 MULT_2(
150
    .mult_i(add_i),
151
    .mult_o(mult_o[2]) );
152
 
153
  GF8Mult113 MULT_3(
154
    .mult_i(add_i),
155
    .mult_o(mult_o[3]) );
156
 
157
  GF8Mult107 MULT_4(
158
    .mult_i(add_i),
159
    .mult_o(mult_o[4]) );
160
 
161
  GF8Mult167 MULT_5(
162
    .mult_i(add_i),
163
    .mult_o(mult_o[5]) );
164
 
165
  GF8Mult83 MULT_6(
166
    .mult_i(add_i),
167
    .mult_o(mult_o[6]) );
168
 
169
  GF8Mult11 MULT_7(
170
    .mult_i(add_i),
171
    .mult_o(mult_o[7]) );
172
 
173
  GF8Mult100 MULT_8(
174
    .mult_i(add_i),
175
    .mult_o(mult_o[8]) );
176
 
177
  GF8Mult201 MULT_9(
178
    .mult_i(add_i),
179
    .mult_o(mult_o[9]) );
180
 
181
  GF8Mult158 MULT_10(
182
    .mult_i(add_i),
183
    .mult_o(mult_o[10]) );
184
 
185
  GF8Mult181 MULT_11(
186
    .mult_i(add_i),
187
    .mult_o(mult_o[11]) );
188
 
189
  GF8Mult195 MULT_12(
190
    .mult_i(add_i),
191
    .mult_o(mult_o[12]) );
192
 
193
  GF8Mult208 MULT_13(
194
    .mult_i(add_i),
195
    .mult_o(mult_o[13]) );
196
 
197
  GF8Mult240 MULT_14(
198
    .mult_i(add_i),
199
    .mult_o(mult_o[14]) );
200
 
201
  GF8Mult136 MULT_15(
202
    .mult_i(add_i),
203
    .mult_o(mult_o[15]) );
204
 
205
 
206
  ///////////INPUT ADDER///////// 
207
 
208
 
209
endmodule

powered by: WebSVN 2.1.0

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