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

Subversion Repositories rs_dec_enc

[/] [rs_dec_enc/] [trunk/] [rtl/] [RS_DEC4.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
--{{ Section below this comment is automatically maintained
41
--   and may be overwritten
42
--{entity {RS_DEC4} architecture {RS_DEC4}}
43
 
44
library IEEE;
45
use IEEE.STD_LOGIC_1164.all;
46
use ieee.std_logic_arith.all;
47
use ieee.std_logic_unsigned.all;
48
use type1.all;
49
 
50
entity RS_DEC4 is
51
         port(
52
                 CLK : in STD_LOGIC;
53
                 RST : in STD_LOGIC;
54
                 STR : in STD_LOGIC;
55
                 D_IN : in STD_LOGIC_VECTOR(7 downto 0);
56
                 RD : in STD_LOGIC;
57
                 D_OUT : out STD_LOGIC_VECTOR(7 downto 0);
58
                 S_er : out STD_LOGIC;
59
                 S_ok : out STD_LOGIC;
60
                 SNB : out STD_LOGIC
61
             );
62
end RS_DEC4;
63
 
64
--}} End of automatically maintained section
65
 
66
architecture RS_DEC4 of RS_DEC4 is
67
 
68
component RS_DEC_SINDDROM is
69
        --generic( G_range:  integer := 4;
70
--      A_range:  integer := 9);
71
         port(
72
                 CLK : in STD_LOGIC;
73
                 RST : in STD_LOGIC;
74
                 STR : in STD_LOGIC;
75
                 D_IN : in STD_LOGIC_VECTOR(7 downto 0);
76
                 RD : in STD_LOGIC;
77
                 D_OUT : out STD_LOGIC_VECTOR(7 downto 0);
78
                 S_er : out STD_LOGIC;
79
                 SNB : out STD_LOGIC;
80
                 D_OUT1 : out tregA
81
             );
82
end component;
83
 
84
component RS_BER_MESS is
85
        --generic( G_range:  integer := 4;
86
--      A_range:  integer := 9);
87
         port(
88
                 CLK : in STD_LOGIC;
89
                 RST : in STD_LOGIC;
90
                 STR : in STD_LOGIC;
91
                 D_IN : in STD_LOGIC_VECTOR(7 downto 0);
92
                 S_OK : out STD_LOGIC;
93
                 SNB : out STD_LOGIC;
94
                 D_OUT : out kgx8;
95
                 D_OUT1 : out tregA
96
             );
97
end component;
98
signal rd1,s_er1,snb1,snb_sindr : std_logic:= '0';
99
signal d_sindr : STD_LOGIC_VECTOR(7 downto 0);
100
signal rgA1,rgA2,rgA3,rgA4 : tregA;
101
begin
102
 
103
 
104
U_dec: RS_DEC_SINDDROM
105
        --generic map( G_range => G_range,
106
--      A_range => A_range )
107
         port map(
108
                 CLK => clk, RST => rst,
109
                 D_IN => d_in,
110
                 STR => str,
111
                 RD => rd1,
112
                 D_OUT => d_sindr,
113
                 S_er => s_er1,
114
                 SNB => snb_sindr,
115
                 D_OUT1  => rgA2
116
             );
117
                S_er <= s_er1;
118
U_BM: RS_BER_MESS
119
        --generic map( G_range => G_range,
120
--      A_range => A_range )
121
         port map(
122
                 CLK => clk, RST => rst,
123
                 STR => snb_sindr,
124
                 D_IN => d_sindr,
125
                 S_OK => s_ok,
126
                 SNB => snb1,
127
                 D_OUT  => open,
128
                 D_OUT1  => rgA1
129
             );
130
process(clk,rst)
131
variable c : integer;
132
begin
133
        if rst = '1' then
134
                snb <= '0';
135
                rgA3 <= (others => (others => '0'));
136
                rgA4 <= (others => (others => '0'));
137
        elsif clk = '1' and clk'event then
138
                snb <= snb1;
139
                for i in 0 to A_range-1 loop rgA3(i) <= rgA1(i) xor rgA2(i); end loop;
140
        if snb1 = '1' then
141
                rgA4 <= rgA3;
142
        elsif rd = '1' then
143
                for i in 0 to A_range-2 loop rgA4(i+1) <= rgA4(i); end loop;
144
        end if;
145
    d_out <= rgA4(A_range-1);
146
        end if;
147
 
148
end process;
149
         -- enter your statements here --
150
 
151
end RS_DEC4;
152
 

powered by: WebSVN 2.1.0

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