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

Subversion Repositories rs_dec_enc

[/] [rs_dec_enc/] [trunk/] [rtl/] [mul_g8.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 unicore
---------------------------------------------------------------------
2
----                                                             ----
3
----  Reed Solomon decoder/encoder IP core                       ----
4
----                                                             ----
5
----  Authors: Anatoliy Sergienko, Volodya Lepeha                ----
6
----  Company: Unicore Systems http://unicore.co.ua              ----
7
----                                                             ----
8
----  Downloaded from: http://www.opencores.org                  ----
9
----                                                             ----
10
---------------------------------------------------------------------
11
----                                                             ----
12
---- Copyright (C) 2006-2010 Unicore Systems LTD                 ----
13
---- www.unicore.co.ua                                           ----
14
---- o.uzenkov@unicore.co.ua                                     ----
15
----                                                             ----
16
---- This source file may be used and distributed without        ----
17
---- restriction provided that this copyright statement is not   ----
18
---- removed from the file and that any derivative work contains ----
19
---- the original copyright notice and the associated disclaimer.----
20
----                                                             ----
21
---- THIS SOFTWARE IS PROVIDED "AS IS"                           ----
22
---- AND ANY EXPRESSED OR IMPLIED WARRANTIES,                    ----
23
---- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED                  ----
24
---- WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT              ----
25
---- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.        ----
26
---- IN NO EVENT SHALL THE UNICORE SYSTEMS OR ITS                ----
27
---- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,            ----
28
---- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL            ----
29
---- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT         ----
30
---- OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,               ----
31
---- DATA, OR PROFITS; OR BUSINESS INTERRUPTION)                 ----
32
---- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,              ----
33
---- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT              ----
34
---- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING                 ----
35
---- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,                 ----
36
---- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.          ----
37
----                                                             ----
38
---------------------------------------------------------------------
39
 
40
 
41
 
42
library IEEE;
43
use IEEE.STD_LOGIC_1164.all;
44
use ieee.std_logic_arith.all;
45
use ieee.std_logic_unsigned.all;
46
 
47
entity mul_g8 is
48
        port(
49
                clk : in STD_LOGIC;
50
                rst : in STD_LOGIC;
51
                m_d : in STD_LOGIC;
52
                a : in STD_LOGIC_VECTOR(7 downto 0);
53
                b : in STD_LOGIC_VECTOR(7 downto 0);
54
                res : out STD_LOGIC_VECTOR(7 downto 0)
55
                );
56
end mul_g8;
57
 
58
 
59
architecture mul_g8 of mul_g8 is
60
 
61
        component reed_sol_mull_div is
62
                port(
63
                        clk : in STD_LOGIC;
64
                        rst : in STD_LOGIC;
65
                        a : in STD_LOGIC_VECTOR(7 downto 0);
66
                        b : in STD_LOGIC_VECTOR(7 downto 0);
67
                        m_d : in STD_LOGIC;     -- '0' - mull, '1' - div
68
                        tabla0 : in STD_LOGIC_VECTOR(7 downto 0);
69
                        tablb0 : in STD_LOGIC_VECTOR(7 downto 0);
70
                        tabl1 : in STD_LOGIC_VECTOR(7 downto 0);
71
                        addra : out STD_LOGIC_VECTOR(7 downto 0);
72
                        addrb : out STD_LOGIC_VECTOR(7 downto 0);
73
                        addr1 : out STD_LOGIC_VECTOR(7 downto 0);
74
                        error : out STD_LOGIC;
75
                        res : out STD_LOGIC_VECTOR(7 downto 0)
76
                        );
77
        end component;
78
 
79
        type trom is array(0 to 255) of integer;
80
        constant rom0 : trom :=(                                                  ---2**
81
        1,  2,  4,  8,  16, 32, 64, 128,29, 58, 116,232,205,135,19, 38,
82
        76, 152,45, 90, 180,117,234,201,143,3,  6,  12, 24, 48, 96, 192,
83
        157,39, 78, 156,37, 74, 148,53, 106,212,181,119,238,193,159,35,
84
        70, 140,5,  10, 20, 40, 80, 160,93, 186,105,210,185,111,222,161,
85
        95, 190,97, 194,153,47, 94, 188,101,202,137,15, 30, 60, 120,240,
86
        253,231,211,187,107,214,177,127,254,225,223,163,91, 182,113,226,
87
        217,175,67, 134,17, 34, 68, 136,13, 26, 52, 104,208,189,103,206,
88
        129,31, 62, 124,248,237,199,147,59, 118,236,197,151,51, 102,204,
89
        133,23, 46, 92, 184,109,218,169,79, 158,33, 66, 132,21, 42, 84,
90
        168,77, 154,41, 82, 164,85, 170,73, 146,57, 114,228,213,183,115,
91
        230,209,191,99, 198,145,63, 126,252,229,215,179,123,246,241,255,
92
        227,219,171,75, 150,49, 98, 196,149,55, 110,220,165,87, 174,65,
93
        130,25, 50, 100,200,141,7,  14, 28, 56, 112,224,221,167,83, 166,
94
        81, 162,89, 178,121,242,249,239,195,155,43, 86, 172,69, 138,9,
95
        18, 36, 72, 144,61, 122,244,245,247,243,251,235,203,139,11, 22,
96
        44, 88, 176,125,250,233,207,131,27, 54, 108,216,173,71, 142,0
97
        );
98
        constant rom1 : trom :=(                                         --- log2
99
        255,0,  1,  25, 2,  50, 26, 198,3,  223,51, 238,27, 104,199,75,
100
        4,      100,224,14, 52, 141,239,129,28, 193,105,248,200,8, 76, 113,
101
        5,  138,101,47, 225,36, 15, 33, 53, 147,142,218,240,18, 130,69,
102
        29, 181,194,125,106,39, 249,185,201,154,9,  120,77, 228,114,166,
103
        6,  191,139,98, 102,221,48, 253,226,152,37, 179,16, 145,34, 136,
104
        54, 208,148,206,143,150,219,189,241,210,19, 92, 131,56, 70, 64,
105
        30, 66, 182,163,195,72, 126,110,107,58, 40, 84, 250,133,186,61,
106
        202,94, 155,159,10, 21, 121,43, 78, 212,229,172,115,243,167,87,
107
        7,  112,192,247,140,128,99, 13, 103,74, 222,237,49, 197,254,24,
108
        227,165,153,119,38, 184,180,124,17, 68, 146,217,35, 32, 137,46,
109
        55, 63, 209,91, 149,188,207,205,144,135,151,178,220,252,190,97,
110
        242,86, 211,171,20, 42, 93, 158,132,60, 57, 83, 71, 109,65, 162,
111
        31, 45, 67, 216,183,123,164,118,196,23, 73, 236,127,12, 111,246,
112
        108,161,59, 82, 41, 157,85, 170,251,96, 134,177,187,204,62, 90,
113
        203,89, 95, 176,156,169,160,81, 11, 245,22, 235,122,117,44, 215,
114
        79, 174,213,233,230,231,173,232,116,214,244,234,168,80, 88, 175
115
        );
116
 
117
 
118
        signal a00,a01,a02 : std_logic_vector(7 downto 0) := (others => '0');
119
        signal d00,d01,d02 : std_logic_vector(7 downto 0) := (others => '0');
120
begin
121
 
122
 
123
        mull0: reed_sol_mull_div
124
        port map(
125
                clk => clk,
126
                rst => rst,
127
                a =>  a,
128
                b => b,
129
                m_d => m_d, -- mull, '1' - div
130
                tabla0 => d00,
131
                tablb0 => d01,
132
                tabl1  => d02,
133
                addra => a00,
134
                addrb => a01,
135
                addr1 => a02,
136
                error => open,
137
                res => res
138
                );
139
 
140
        d00     <= conv_std_logic_vector (rom1(conv_integer(a00)),8);
141
        d01     <= conv_std_logic_vector (rom1(conv_integer(a01)),8);
142
        d02     <= conv_std_logic_vector (rom0(conv_integer(a02)),8);
143
 
144
 
145
 
146
 
147
end mul_g8;

powered by: WebSVN 2.1.0

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