Hi
I need another one help,please help me.Here i wrote vhdl code for 32 bit crc for 2 bits of input data. please can anybody ulter this code
for 32 bits of input data.If u have any other vhdl or verilog code (CRC-32 and 32 bit data) please forward to me.
please...
Vhdl code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity CRC_BLOCK is
port (
fcs:out std_logic_vector(31 downto 0);
CLK:in std_logic;
data:in std_logic_vector(1 downto 0);
Reset_n:in std_logic);
end CRC_BLOCK;
architecture Behavioral of CRC_BLOCK is
begin
process(CLK)
variable Dividend: std_logic_vector(34 downto 0);--make it 34 and check
variable quo1:std_logic_vector(31 downto 0);
variable rem1: std_logic_vector(33 downto 0);
variable g:integer;
variable polynomial:std_logic_vector(32 downto 0);--G(X)
constant n:std_logic_vector(32 downto 0):="100000000000000000000000000000000";
begin
if(CLK'event and CLK = '1')then
if(Reset_n = '0')then
quo1 := (others=>'0');
polynomial:="100000100110000010001110110110111";
dividend := data * n;--M(X)*X32
rem1(33 downto 0):=dividend(33 downto 0);
fcs(31 downto 0) <= rem1(31 downto 0);
else
if (g=1) then
quo1:= (others=>'0');
else
if(rem1 >= polynomial )then
rem1 (0) := rem1(1) xor polynomial(0);
rem1 (1) := rem1(2) xor polynomial(1);
rem1 (2) := rem1(3) xor polynomial(2);
rem1 (3) := rem1(4) xor polynomial(3);
rem1 (4) := rem1(5) xor polynomial(4);
rem1 (5) := rem1(6) xor polynomial(5);
rem1 (6) := rem1(7) xor polynomial(6);
rem1 (7) := rem1(8) xor polynomial(7);
rem1 (8) := rem1(9) xor polynomial(8);
rem1 (9) := rem1(10) xor polynomial(9);
rem1 (10) := rem1(11) xor polynomial(10);
rem1 (11) := rem1(12) xor polynomial(11);
rem1 (12) := rem1(13) xor polynomial(12);
rem1 (13) := rem1(14) xor polynomial(13);
rem1 (14) := rem1(15) xor polynomial(14);
rem1 (15) := rem1(16) xor polynomial(15);
rem1 (16) := rem1(17) xor polynomial(16);
rem1 (17) := rem1(18) xor polynomial(17);
rem1 (18) := rem1(19) xor polynomial(18);
rem1 (19) := rem1(20) xor polynomial(19);
rem1 (20) := rem1(21) xor polynomial(20);
rem1 (21) := rem1(22) xor polynomial(21);
rem1 (22) := rem1(23) xor polynomial(22);
rem1 (23) := rem1(24) xor polynomial(23);
rem1 (24) := rem1(25) xor polynomial(24);
rem1 (25) := rem1(26) xor polynomial(25);
rem1 (26) := rem1(27) xor polynomial(26);
rem1 (27) := rem1(28) xor polynomial(27);
rem1 (28) := rem1(29) xor polynomial(28);
rem1 (29) := rem1(30) xor polynomial(29);
rem1 (30) := rem1(31) xor polynomial(30);
rem1 (31) := rem1(32) xor polynomial(31);
rem1 (32) := rem1(33) xor polynomial(32);
quo1 := quo1 + 1;
end if;
if(rem1 >= polynomial )then
rem1(32 downto 0) := rem1(31 downto 0) & '0';
rem1 (0) := rem1(0) xor polynomial(0);
rem1 (1) := rem1(1) xor polynomial(1);
rem1 (2) := rem1(2) xor polynomial(2);
rem1 (3) := rem1(3) xor polynomial(3);
rem1 (4) := rem1(4) xor polynomial(4);
rem1 (5) := rem1(5) xor polynomial(5);
rem1 (6) := rem1(6) xor polynomial(6);
rem1 (7) := rem1(7) xor polynomial(7);
rem1 (8) := rem1(8) xor polynomial(8);
rem1 (9) := rem1(9) xor polynomial(9);
rem1 (10) := rem1(10) xor polynomial(10);
rem1 (11) := rem1(11) xor polynomial(11);
rem1 (12) := rem1(12) xor polynomial(12);
rem1 (13) := rem1(13) xor polynomial(13);
rem1 (14) := rem1(14) xor polynomial(14);
rem1 (15) := rem1(15) xor polynomial(15);
rem1 (16) := rem1(16) xor polynomial(16);
rem1 (17) := rem1(17) xor polynomial(17);
rem1 (18) := rem1(18) xor polynomial(18);
rem1 (19) := rem1(19) xor polynomial(19);
rem1 (20) := rem1(20) xor polynomial(20);
rem1 (21) := rem1(21) xor polynomial(21);
rem1 (22) := rem1(22) xor polynomial(22);
rem1 (23) := rem1(23) xor polynomial(23);
rem1 (24) := rem1(24) xor polynomial(24);
rem1 (25) := rem1(25) xor polynomial(25);
rem1 (26) := rem1(26) xor polynomial(26);
rem1 (27) := rem1(27) xor polynomial(27);
rem1 (28) := rem1(28) xor polynomial(28);
rem1 (29) := rem1(29) xor polynomial(29);
rem1 (30) := rem1(30) xor polynomial(30);
rem1 (31) := rem1(31) xor polynomial(31);
rem1 (32) := rem1(32) xor polynomial(32);
end if;
if (rem1 > polynomial) then
fcs(31 downto 0) <= rem1(31 downto 0);
g:=1;
end if;
end if;
end if;
end if;
end process;
end Behavioral;