Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ git-svn-id: http://moon:8086/svn/vhdl/trunk@902 cc03376c-175c-47c8-b038-4cd826a8556b
65 lines
1.6 KiB
VHDL
65 lines
1.6 KiB
VHDL
LIBRARY IEEE;
|
|
USE IEEE.STD_LOGIC_1164.ALL;
|
|
USE IEEE.NUMERIC_STD.ALL;
|
|
use std.textio.all; -- Imports the standard textio package.
|
|
|
|
use work.utils_pkg.all; -- Imports the standard textio package.
|
|
|
|
ENTITY crc32 IS
|
|
Generic
|
|
(
|
|
crc32_init : unsigned(31 downto 0) := X"00000000"
|
|
);
|
|
Port
|
|
(
|
|
rst : in STD_LOGIC;
|
|
clk : in STD_LOGIC;
|
|
din_vld : in STD_LOGIC;
|
|
din : in unsigned(7 downto 0);
|
|
crc32_vld : out STD_LOGIC;
|
|
crc32_out : out unsigned(31 downto 0)
|
|
|
|
);
|
|
END crc32;
|
|
|
|
ARCHITECTURE behavior OF crc32 IS
|
|
|
|
type crc_table_t is array (0 to 15) of unsigned(31 downto 0);
|
|
|
|
constant crc_table : crc_table_t :=
|
|
(
|
|
X"4DBDF21C", X"500AE278", X"76D3D2D4", X"6B64C2B0",
|
|
X"3B61B38C", X"26D6A3E8", X"000F9344", X"1DB88320",
|
|
X"A005713C", X"BDB26158", X"9B6B51F4", X"86DC4190",
|
|
X"D6D930AC", X"CB6E20C8", X"EDB71064", X"F0000000"
|
|
);
|
|
|
|
signal crc0 : unsigned(31 downto 0);
|
|
signal crc1 : unsigned(31 downto 0);
|
|
signal crc2 : unsigned(31 downto 0);
|
|
|
|
--------------------------------------------------------------------------
|
|
begin
|
|
|
|
crc1 <= X"0" & crc0(31 downto 4) xor crc_table(to_integer(crc0(3 downto 0) xor din(3 downto 0)));
|
|
crc2 <= X"0" & crc1(31 downto 4) xor crc_table(to_integer(crc1(3 downto 0) xor din(7 downto 4)));
|
|
|
|
crc32_out <= crc0;
|
|
|
|
--------------------------------------------------------------------------
|
|
process(clk)
|
|
begin
|
|
if rising_edge(clk) then
|
|
if rst = '1' then
|
|
crc0 <= crc32_init;
|
|
crc32_vld <= '0';
|
|
elsif din_vld = '1' then
|
|
crc0 <= crc2;
|
|
crc32_vld <= '1';
|
|
end if;
|
|
end if;
|
|
end process;
|
|
|
|
--------------------------------------------------------------------------
|
|
end behavior;
|