⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reed_sol.v

📁 本電子檔為 verilog cookbook,包含了通訊,影像,DSP等重要常用之verilog編碼,可作為工程師與初學者的參考手冊
💻 V
📖 第 1 页 / 共 5 页
字号:
// Copyright 2007 Altera Corporation. All rights reserved.  
// Altera products are protected under numerous U.S. and foreign patents, 
// maskwork rights, copyrights and other intellectual property laws.  
//
// This reference design file, and your use thereof, is subject to and governed
// by the terms and conditions of the applicable Altera Reference Design 
// License Agreement (either as signed by you or found at www.altera.com).  By
// using this reference design file, you indicate your acceptance of such terms
// and conditions between you and Altera Corporation.  In the event that you do
// not agree with such terms and conditions, you may not use the reference 
// design file and please promptly destroy any copies you have made.
//
// This reference design file is being provided on an "as-is" basis and as an 
// accommodation and therefore all warranties, representations or guarantees of 
// any kind (whether express, implied or statutory) including, without 
// limitation, warranties of merchantability, non-infringement, or fitness for
// a particular purpose, are specifically disclaimed.  By making this reference
// design file available, Altera expressly does not recommend, suggest or 
// require that this reference design file be used in combination with any 
// other product not provided by Altera.
/////////////////////////////////////////////////////////////////////////////

// baeckler - 08-08-2006

// Reed Solomon
// N = 255 (symbols per code word)
// K = 239 (data symbols)
// t = 8 (# of errors corrected)
// 2t = 16 (# of check symbols)
// m = 8 (bits per symbol)


// alpha ^ 0 = 01
// alpha ^ 1 = 02
// alpha ^ 2 = 04
// alpha ^ 3 = 08
// alpha ^ 4 = 10
// alpha ^ 5 = 20
// alpha ^ 6 = 40
// alpha ^ 7 = 80
// alpha ^ 8 = 1d
// alpha ^ 9 = 3a
// alpha ^ 10 = 74
// alpha ^ 11 = e8
// alpha ^ 12 = cd
// alpha ^ 13 = 87
// alpha ^ 14 = 13
// alpha ^ 15 = 26
// alpha ^ 16 = 4c
// alpha ^ 17 = 98
// alpha ^ 18 = 2d
// alpha ^ 19 = 5a
// alpha ^ 20 = b4
// alpha ^ 21 = 75
// alpha ^ 22 = ea
// alpha ^ 23 = c9
// alpha ^ 24 = 8f
// alpha ^ 25 = 03
// alpha ^ 26 = 06
// alpha ^ 27 = 0c
// alpha ^ 28 = 18
// alpha ^ 29 = 30
// alpha ^ 30 = 60
// alpha ^ 31 = c0
// alpha ^ 32 = 9d
// alpha ^ 33 = 27
// alpha ^ 34 = 4e
// alpha ^ 35 = 9c
// alpha ^ 36 = 25
// alpha ^ 37 = 4a
// alpha ^ 38 = 94
// alpha ^ 39 = 35
// alpha ^ 40 = 6a
// alpha ^ 41 = d4
// alpha ^ 42 = b5
// alpha ^ 43 = 77
// alpha ^ 44 = ee
// alpha ^ 45 = c1
// alpha ^ 46 = 9f
// alpha ^ 47 = 23
// alpha ^ 48 = 46
// alpha ^ 49 = 8c
// alpha ^ 50 = 05
// alpha ^ 51 = 0a
// alpha ^ 52 = 14
// alpha ^ 53 = 28
// alpha ^ 54 = 50
// alpha ^ 55 = a0
// alpha ^ 56 = 5d
// alpha ^ 57 = ba
// alpha ^ 58 = 69
// alpha ^ 59 = d2
// alpha ^ 60 = b9
// alpha ^ 61 = 6f
// alpha ^ 62 = de
// alpha ^ 63 = a1
// alpha ^ 64 = 5f
// alpha ^ 65 = be
// alpha ^ 66 = 61
// alpha ^ 67 = c2
// alpha ^ 68 = 99
// alpha ^ 69 = 2f
// alpha ^ 70 = 5e
// alpha ^ 71 = bc
// alpha ^ 72 = 65
// alpha ^ 73 = ca
// alpha ^ 74 = 89
// alpha ^ 75 = 0f
// alpha ^ 76 = 1e
// alpha ^ 77 = 3c
// alpha ^ 78 = 78
// alpha ^ 79 = f0
// alpha ^ 80 = fd
// alpha ^ 81 = e7
// alpha ^ 82 = d3
// alpha ^ 83 = bb
// alpha ^ 84 = 6b
// alpha ^ 85 = d6
// alpha ^ 86 = b1
// alpha ^ 87 = 7f
// alpha ^ 88 = fe
// alpha ^ 89 = e1
// alpha ^ 90 = df
// alpha ^ 91 = a3
// alpha ^ 92 = 5b
// alpha ^ 93 = b6
// alpha ^ 94 = 71
// alpha ^ 95 = e2
// alpha ^ 96 = d9
// alpha ^ 97 = af
// alpha ^ 98 = 43
// alpha ^ 99 = 86
// alpha ^ 100 = 11
// alpha ^ 101 = 22
// alpha ^ 102 = 44
// alpha ^ 103 = 88
// alpha ^ 104 = 0d
// alpha ^ 105 = 1a
// alpha ^ 106 = 34
// alpha ^ 107 = 68
// alpha ^ 108 = d0
// alpha ^ 109 = bd
// alpha ^ 110 = 67
// alpha ^ 111 = ce
// alpha ^ 112 = 81
// alpha ^ 113 = 1f
// alpha ^ 114 = 3e
// alpha ^ 115 = 7c
// alpha ^ 116 = f8
// alpha ^ 117 = ed
// alpha ^ 118 = c7
// alpha ^ 119 = 93
// alpha ^ 120 = 3b
// alpha ^ 121 = 76
// alpha ^ 122 = ec
// alpha ^ 123 = c5
// alpha ^ 124 = 97
// alpha ^ 125 = 33
// alpha ^ 126 = 66
// alpha ^ 127 = cc
// alpha ^ 128 = 85
// alpha ^ 129 = 17
// alpha ^ 130 = 2e
// alpha ^ 131 = 5c
// alpha ^ 132 = b8
// alpha ^ 133 = 6d
// alpha ^ 134 = da
// alpha ^ 135 = a9
// alpha ^ 136 = 4f
// alpha ^ 137 = 9e
// alpha ^ 138 = 21
// alpha ^ 139 = 42
// alpha ^ 140 = 84
// alpha ^ 141 = 15
// alpha ^ 142 = 2a
// alpha ^ 143 = 54
// alpha ^ 144 = a8
// alpha ^ 145 = 4d
// alpha ^ 146 = 9a
// alpha ^ 147 = 29
// alpha ^ 148 = 52
// alpha ^ 149 = a4
// alpha ^ 150 = 55
// alpha ^ 151 = aa
// alpha ^ 152 = 49
// alpha ^ 153 = 92
// alpha ^ 154 = 39
// alpha ^ 155 = 72
// alpha ^ 156 = e4
// alpha ^ 157 = d5
// alpha ^ 158 = b7
// alpha ^ 159 = 73
// alpha ^ 160 = e6
// alpha ^ 161 = d1
// alpha ^ 162 = bf
// alpha ^ 163 = 63
// alpha ^ 164 = c6
// alpha ^ 165 = 91
// alpha ^ 166 = 3f
// alpha ^ 167 = 7e
// alpha ^ 168 = fc
// alpha ^ 169 = e5
// alpha ^ 170 = d7
// alpha ^ 171 = b3
// alpha ^ 172 = 7b
// alpha ^ 173 = f6
// alpha ^ 174 = f1
// alpha ^ 175 = ff
// alpha ^ 176 = e3
// alpha ^ 177 = db
// alpha ^ 178 = ab
// alpha ^ 179 = 4b
// alpha ^ 180 = 96
// alpha ^ 181 = 31
// alpha ^ 182 = 62
// alpha ^ 183 = c4
// alpha ^ 184 = 95
// alpha ^ 185 = 37
// alpha ^ 186 = 6e
// alpha ^ 187 = dc
// alpha ^ 188 = a5
// alpha ^ 189 = 57
// alpha ^ 190 = ae
// alpha ^ 191 = 41
// alpha ^ 192 = 82
// alpha ^ 193 = 19
// alpha ^ 194 = 32
// alpha ^ 195 = 64
// alpha ^ 196 = c8
// alpha ^ 197 = 8d
// alpha ^ 198 = 07
// alpha ^ 199 = 0e
// alpha ^ 200 = 1c
// alpha ^ 201 = 38
// alpha ^ 202 = 70
// alpha ^ 203 = e0
// alpha ^ 204 = dd
// alpha ^ 205 = a7
// alpha ^ 206 = 53
// alpha ^ 207 = a6
// alpha ^ 208 = 51
// alpha ^ 209 = a2
// alpha ^ 210 = 59
// alpha ^ 211 = b2
// alpha ^ 212 = 79
// alpha ^ 213 = f2
// alpha ^ 214 = f9
// alpha ^ 215 = ef
// alpha ^ 216 = c3
// alpha ^ 217 = 9b
// alpha ^ 218 = 2b
// alpha ^ 219 = 56
// alpha ^ 220 = ac
// alpha ^ 221 = 45
// alpha ^ 222 = 8a
// alpha ^ 223 = 09
// alpha ^ 224 = 12
// alpha ^ 225 = 24
// alpha ^ 226 = 48
// alpha ^ 227 = 90
// alpha ^ 228 = 3d
// alpha ^ 229 = 7a
// alpha ^ 230 = f4
// alpha ^ 231 = f5
// alpha ^ 232 = f7
// alpha ^ 233 = f3
// alpha ^ 234 = fb
// alpha ^ 235 = eb
// alpha ^ 236 = cb
// alpha ^ 237 = 8b
// alpha ^ 238 = 0b
// alpha ^ 239 = 16
// alpha ^ 240 = 2c
// alpha ^ 241 = 58
// alpha ^ 242 = b0
// alpha ^ 243 = 7d
// alpha ^ 244 = fa
// alpha ^ 245 = e9
// alpha ^ 246 = cf
// alpha ^ 247 = 83
// alpha ^ 248 = 1b
// alpha ^ 249 = 36
// alpha ^ 250 = 6c
// alpha ^ 251 = d8
// alpha ^ 252 = ad
// alpha ^ 253 = 47
// alpha ^ 254 = 8e
// alpha ^ 255 = 01

// gen_poly [0] = 3b
// gen_poly [1] = 24
// gen_poly [2] = 32
// gen_poly [3] = 62
// gen_poly [4] = e5
// gen_poly [5] = 29
// gen_poly [6] = 41
// gen_poly [7] = a3
// gen_poly [8] = 08
// gen_poly [9] = 1e
// gen_poly [10] = d1
// gen_poly [11] = 44
// gen_poly [12] = bd
// gen_poly [13] = 68
// gen_poly [14] = 0d
// gen_poly [15] = 3b
// gen_poly [16] = 01

module gf_mult_by_01 (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[0];
  assign o[1] = i[1];
  assign o[2] = i[2];
  assign o[3] = i[3];
  assign o[4] = i[4];
  assign o[5] = i[5];
  assign o[6] = i[6];
  assign o[7] = i[7];
endmodule

module gf_mult_by_02 (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[7];
  assign o[1] = i[0];
  assign o[2] = i[1]^i[7];
  assign o[3] = i[2]^i[7];
  assign o[4] = i[3]^i[7];
  assign o[5] = i[4];
  assign o[6] = i[5];
  assign o[7] = i[6];
endmodule

module gf_mult_by_03 (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[0]^i[7];
  assign o[1] = i[0]^i[1];
  assign o[2] = i[1]^i[2]^i[7];
  assign o[3] = i[2]^i[3]^i[7];
  assign o[4] = i[3]^i[4]^i[7];
  assign o[5] = i[4]^i[5];
  assign o[6] = i[5]^i[6];
  assign o[7] = i[6]^i[7];
endmodule

module gf_mult_by_04 (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[6];
  assign o[1] = i[7];
  assign o[2] = i[0]^i[6];
  assign o[3] = i[1]^i[6]^i[7];
  assign o[4] = i[2]^i[6]^i[7];
  assign o[5] = i[3]^i[7];
  assign o[6] = i[4];
  assign o[7] = i[5];
endmodule

module gf_mult_by_05 (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[0]^i[6];
  assign o[1] = i[1]^i[7];
  assign o[2] = i[0]^i[2]^i[6];
  assign o[3] = i[1]^i[3]^i[6]^i[7];
  assign o[4] = i[2]^i[4]^i[6]^i[7];
  assign o[5] = i[3]^i[5]^i[7];
  assign o[6] = i[4]^i[6];
  assign o[7] = i[5]^i[7];
endmodule

module gf_mult_by_06 (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[6]^i[7];
  assign o[1] = i[0]^i[7];
  assign o[2] = i[0]^i[1]^i[6]^i[7];
  assign o[3] = i[1]^i[2]^i[6];
  assign o[4] = i[2]^i[3]^i[6];
  assign o[5] = i[3]^i[4]^i[7];
  assign o[6] = i[4]^i[5];
  assign o[7] = i[5]^i[6];
endmodule

module gf_mult_by_07 (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[0]^i[6]^i[7];
  assign o[1] = i[0]^i[1]^i[7];
  assign o[2] = i[0]^i[1]^i[2]^i[6]^i[7];
  assign o[3] = i[1]^i[2]^i[3]^i[6];
  assign o[4] = i[2]^i[3]^i[4]^i[6];
  assign o[5] = i[3]^i[4]^i[5]^i[7];
  assign o[6] = i[4]^i[5]^i[6];
  assign o[7] = i[5]^i[6]^i[7];
endmodule

module gf_mult_by_08 (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[5];
  assign o[1] = i[6];
  assign o[2] = i[5]^i[7];
  assign o[3] = i[0]^i[5]^i[6];
  assign o[4] = i[1]^i[5]^i[6]^i[7];
  assign o[5] = i[2]^i[6]^i[7];
  assign o[6] = i[3]^i[7];
  assign o[7] = i[4];
endmodule

module gf_mult_by_09 (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[0]^i[5];
  assign o[1] = i[1]^i[6];
  assign o[2] = i[2]^i[5]^i[7];
  assign o[3] = i[0]^i[3]^i[5]^i[6];
  assign o[4] = i[1]^i[4]^i[5]^i[6]^i[7];
  assign o[5] = i[2]^i[5]^i[6]^i[7];
  assign o[6] = i[3]^i[6]^i[7];
  assign o[7] = i[4]^i[7];
endmodule

module gf_mult_by_0a (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[5]^i[7];
  assign o[1] = i[0]^i[6];
  assign o[2] = i[1]^i[5];
  assign o[3] = i[0]^i[2]^i[5]^i[6]^i[7];
  assign o[4] = i[1]^i[3]^i[5]^i[6];
  assign o[5] = i[2]^i[4]^i[6]^i[7];
  assign o[6] = i[3]^i[5]^i[7];
  assign o[7] = i[4]^i[6];
endmodule

module gf_mult_by_0b (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[0]^i[5]^i[7];
  assign o[1] = i[0]^i[1]^i[6];
  assign o[2] = i[1]^i[2]^i[5];
  assign o[3] = i[0]^i[2]^i[3]^i[5]^i[6]^i[7];
  assign o[4] = i[1]^i[3]^i[4]^i[5]^i[6];
  assign o[5] = i[2]^i[4]^i[5]^i[6]^i[7];
  assign o[6] = i[3]^i[5]^i[6]^i[7];
  assign o[7] = i[4]^i[6]^i[7];
endmodule

module gf_mult_by_0c (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[5]^i[6];
  assign o[1] = i[6]^i[7];
  assign o[2] = i[0]^i[5]^i[6]^i[7];
  assign o[3] = i[0]^i[1]^i[5]^i[7];
  assign o[4] = i[1]^i[2]^i[5];
  assign o[5] = i[2]^i[3]^i[6];
  assign o[6] = i[3]^i[4]^i[7];
  assign o[7] = i[4]^i[5];
endmodule

module gf_mult_by_0d (i,o);
input [7:0] i;
output [7:0] o;
wire [7:0] o;
  assign o[0] = i[0]^i[5]^i[6];
  assign o[1] = i[1]^i[6]^i[7];
  assign o[2] = i[0]^i[2]^i[5]^i[6]^i[7];
  assign o[3] = i[0]^i[1]^i[3]^i[5]^i[7];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -