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

Subversion Repositories rs_encoder_decoder

[/] [rs_encoder_decoder/] [rtl/] [GF8GenMult.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 Generic 
4
// Bit Parallel Hardware Multiplier
5
 
6
// THIS BLOCK IS THE IMPLEMENTATION OF MODULE A 
7
module GF8GenMultModA(
8
  modA_i1, // Generic Multiplier Mod A input 1
9
  modA_i2, // Generic Multiplier Mod A input 2
10
  modA_o   // Generic Multiplier Mod A output
11
  );
12
  // Inputs are declared here
13
  input [7:0] modA_i1, modA_i2;
14
  output wire modA_o;
15
 
16
  // Declaration of Wires And Register are here 
17
  wire xor0_w0, xor0_w1, xor0_w2, xor0_w3;
18
  wire xor1_w0, xor1_w1;
19
  wire and_w0, and_w1, and_w2, and_w3, and_w4, and_w5, and_w6, and_w7;
20
 
21
  //LOGIC STARTS FROM HERE
22
 
23
  assign and_w0 = modA_i1[0] & modA_i2[0];
24
  assign and_w1 = modA_i1[1] & modA_i2[1];
25
  assign and_w2 = modA_i1[2] & modA_i2[2];
26
  assign and_w3 = modA_i1[3] & modA_i2[3];
27
  assign and_w4 = modA_i1[4] & modA_i2[4];
28
  assign and_w5 = modA_i1[5] & modA_i2[5];
29
  assign and_w6 = modA_i1[6] & modA_i2[6];
30
  assign and_w7 = modA_i1[7] & modA_i2[7];
31
 
32
  assign xor0_w0 = and_w0^and_w1;
33
  assign xor0_w1 = and_w2^and_w3;
34
  assign xor0_w2 = and_w4^and_w5;
35
  assign xor0_w3 = and_w6^and_w7;
36
 
37
  assign xor1_w0 = xor0_w0^xor0_w1;
38
  assign xor1_w1 = xor0_w2^xor0_w3;
39
 
40
  assign modA_o = xor1_w0^xor1_w1;
41
 
42
endmodule
43
 
44
 
45
 
46
// This is a verilog File Generated
47
// By The C++ program That Generates
48
// An Gallios Field Generic 
49
// Bit Parallel Hardware Multiplier
50
 
51
// THIS BLOCK IS THE IMPLEMENTATION OF MODULE B 
52
module GF8GenMultModB(
53
  modB_i, // Generic Multiplier Mod B input 1
54
  modB_o   // Generic Multiplier Mod B output
55
  );
56
  // Inputs are declared here
57
  input [7:0] modB_i;
58
  output wire [6:0] modB_o;
59
 
60
  assign modB_o[0] = modB_i[0]^modB_i[2]^modB_i[3]^modB_i[4];
61
  assign modB_o[1] = modB_i[1]^modB_i[3]^modB_i[4]^modB_i[5];
62
  assign modB_o[2] = modB_i[2]^modB_i[4]^modB_i[5]^modB_i[6];
63
  assign modB_o[3] = modB_i[3]^modB_i[5]^modB_i[6]^modB_i[7];
64
  assign modB_o[4] = modB_i[0]^modB_i[2]^modB_i[3]^modB_i[6]^modB_i[7];
65
  assign modB_o[5] = modB_i[0]^modB_i[1]^modB_i[2]^modB_i[7];
66
  assign modB_o[6] = modB_i[0]^modB_i[1]^modB_i[4];
67
 
68
endmodule
69
 
70
 
71
 
72
// This is a verilog File Generated
73
// By The C++ program That Generates
74
// An Gallios Field Generic 
75
// Bit Parallel Hardware Multiplier
76
 
77
module GF8GenMult(
78
  mult_i1, // Gallios Field Generic Multiplier input 1
79
  mult_i2, // Gallios Field Generic Multiplier input 2
80
  mult_o   // Gallios Field Generic Multiplier output
81
  );
82
  // Inputs are declared here
83
  input [7:0] mult_i1, mult_i2;
84
  output wire [7:0] mult_o;
85
  // Declaration of Wires And Register are here 
86
  wire [6:0] modB_o;
87
  wire [7:0] dual_o, dual_i;
88
  wire [7:0] modA_w [0:6];
89
  assign dual_i[0] = mult_i1[1];
90
  assign dual_i[1] = mult_i1[0];
91
  assign dual_i[2] = mult_i1[7];
92
  assign dual_i[3] = mult_i1[6];
93
  assign dual_i[4] = mult_i1[5];
94
  assign dual_i[5] = mult_i1[4];
95
  assign dual_i[6] = mult_i1[3]^mult_i1[7];
96
  assign dual_i[7] = mult_i1[2]^mult_i1[7]^mult_i1[6];
97
 
98
  GF8GenMultModB MODB(
99
    .modB_i(dual_i),
100
    .modB_o(modB_o));
101
 
102
 
103
  assign modA_w[0] =  {modB_o[0],dual_i[7:1]};
104
  assign modA_w[1] =  {modB_o[1],modB_o[0],dual_i[7:2]};
105
  assign modA_w[2] =  {modB_o[2],modB_o[1],modB_o[0],dual_i[7:3]};
106
  assign modA_w[3] =  {modB_o[3],modB_o[2],modB_o[1],modB_o[0],dual_i[7:4]};
107
  assign modA_w[4] =  {modB_o[4],modB_o[3],modB_o[2],modB_o[1],modB_o[0],dual_i[7:5]};
108
  assign modA_w[5] =  {modB_o[5],modB_o[4],modB_o[3],modB_o[2],modB_o[1],modB_o[0],dual_i[7:6]};
109
  assign modA_w[6] =  {modB_o[6],modB_o[5],modB_o[4],modB_o[3],modB_o[2],modB_o[1],modB_o[0],dual_i[7:7]};
110
 
111
  GF8GenMultModA MODA0(
112
    .modA_i1(dual_i), // Generic Multiplier Mod A input 1
113
    .modA_i2(mult_i2), // Generic Multiplier Mod A input 2
114
    .modA_o(dual_o[0]));   // Generic Multiplier Mod A output
115
 
116
  genvar j;
117
  generate
118
    for (j=1; j < 8; j = j+1) begin:MODABLOCKS
119
      GF8GenMultModA MODA(
120
        .modA_i1(modA_w[j-1]), // Generic Multiplier Mod A input 1
121
        .modA_i2(mult_i2), // Generic Multiplier Mod A input 2
122
        .modA_o(dual_o[j]));   // Generic Multiplier Mod A output
123
    end
124
  endgenerate
125
 
126
  assign mult_o[0] = dual_o[1];
127
  assign mult_o[1] = dual_o[0];
128
  assign mult_o[2] = dual_o[7]^dual_o[2]^dual_o[3];
129
  assign mult_o[3] = dual_o[6]^dual_o[2];
130
  assign mult_o[4] = dual_o[5];
131
  assign mult_o[5] = dual_o[4];
132
  assign mult_o[6] = dual_o[3];
133
  assign mult_o[7] = dual_o[2];
134
endmodule

powered by: WebSVN 2.1.0

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