EmbDev.net

Forum: FPGA, VHDL & Verilog 32 bits data_in and CRC7 VHDL code (*Urgent)


von Christopher A. (chrisang)


Attached files:

Rate this post
useful
not useful
Hi i would like to check if my code and waveform is correct for this

32 bits data_in
7 bits CRC
1
library ieee;
2
use ieee.std_logic_1164.all;
3
4
entity CRC7_32 is
5
port (data_in : in std_logic_vector (31 downto 0);
6
crc_en , rst, clk : in std_logic;
7
crc_out : out std_logic_vector (6 downto 0));
8
9
end CRC7_32;
10
11
architecture behavior of CRC7_32 is
12
13
signal crc_block: std_logic_vector (6 downto 0);
14
signal crc_next_state: std_logic_vector (6 downto 0);
15
16
begin
17
18
crc_out <= crc_block;
19
20
crc_next_state(0) <= crc_block(5) xor crc_block(6) xor data_in(0) xor data_in(4) xor data_in(7) xor data_in(8) xor data_in(12) xor data_in(14) xor data_in(15) xor data_in(16) xor data_in(18) xor data_in(20) xor data_in(21) xor data_in(23) xor data_in(24) xor data_in(30) xor data_in(31);
21
crc_next_state(1) <= crc_block(6) xor crc_block(0) xor data_in(1) xor data_in(5) xor data_in(8) xor data_in(9) xor data_in(13) xor data_in(15) xor data_in(16) xor data_in(17) xor data_in(19) xor data_in(21) xor data_in(22) xor data_in(24) xor data_in(25) xor data_in(31);
22
crc_next_state(2) <= crc_block(0) xor crc_block(1) xor data_in(2) xor data_in(6) xor data_in(9) xor data_in(10) xor data_in(14) xor data_in(16) xor data_in(17) xor data_in(18) xor data_in(20) xor data_in(22) xor data_in(23) xor data_in(25) xor data_in(26);
23
crc_next_state(3) <= crc_block(1) xor crc_block(2) xor crc_block(5) xor crc_block(6) xor data_in(0) xor data_in(3) xor data_in(4) xor data_in(8) xor data_in(10) xor data_in(11) xor data_in(12) xor data_in(14) xor data_in(16) xor data_in(17) xor data_in(19) xor data_in(20) xor data_in(26) xor data_in(27) xor data_in(30) xor data_in(31);
24
crc_next_state(4) <= crc_block(2) xor crc_block(3) xor crc_block(6) xor data_in(1) xor data_in(4) xor data_in(5) xor data_in(9) xor data_in(11) xor data_in(12) xor data_in(13) xor data_in(15) xor data_in(17) xor data_in(18) xor data_in(20) xor data_in(21) xor data_in(27) xor data_in(28) xor data_in(31);
25
crc_next_state(5) <= crc_block(3) xor crc_block(4) xor data_in(2) xor data_in(5) xor data_in(6) xor data_in(10) xor data_in(12) xor data_in(13) xor data_in(14) xor data_in(16) xor data_in(18) xor data_in(19) xor data_in(21) xor data_in(22) xor data_in(28) xor data_in(29);
26
crc_next_state(6) <= crc_block(4) xor crc_block(5) xor data_in(3) xor data_in(6) xor data_in(7) xor data_in(11) xor data_in(13) xor data_in(14) xor data_in(15) xor data_in(17) xor data_in(19) xor data_in(20) xor data_in(22) xor data_in(23) xor data_in(29) xor data_in(30);
27
28
process (clk,rst)
29
30
begin
31
32
if (rst = '1') then
33
crc_block <= b"0000000";
34
elsif (clk'EVENT and clk = '1') then
35
if (crc_en = '1') then
36
crc_block <= crc_next_state;
37
end if;
38
end if;
39
end process;
40
end architecture behavior;

von Omega (Guest)


Rate this post
useful
not useful
is ok

von Christopher A. (chrisang)


Rate this post
useful
not useful
thank you. do you know the explanation on how does this code works? just 
a brief one

von do_your_work_yourself (Guest)


Rate this post
useful
not useful
no

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.