📄 crc32.vhd
字号:
--循环冗余计算的并行实现代码--初始值是全0或全1都可以library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.numeric_std.all;entity crc32 isport(clk:in std_logic; load:in std_logic; enable:in std_logic; d:in std_logic_vector(7 downto 0); crc:out std_logic_vector(31 downto 0));end crc32;architecture crc32_8 of crc32 issignal r: std_logic_vector(31 downto 0);--signal s: std_logic_vector(31 downto 0);begin crc<=r; process(clk) --variable r: std_logic_vector(0 to 31); begin if rising_edge(clk) then if load='1' then r<=x"00000000"; else if enable='1' then r(0) <= d(6) xor d(0) xor r(24) xor r(30); r(1) <= d(7) xor d(6) xor d(1) xor d(0) xor r(24) xor r(25) xor r(30) xor r(31); r(2) <= d(7) xor d(6) xor d(2) xor d(1) xor d(0) xor r(24) xor r(25) xor r(26) xor r(30) xor r(31); r(3) <= d(7) xor d(3) xor d(2) xor d(1) xor r(25) xor r(26) xor r(27) xor r(31); r(4) <= d(6) xor d(4) xor d(3) xor d(2) xor d(0) xor r(24) xor r(26) xor r(27) xor r(28) xor r(30); r(5) <= d(7) xor d(6) xor d(5) xor d(4) xor d(3) xor d(1) xor d(0) xor r(24) xor r(25) xor r(27) xor r(28) xor r(29) xor r(30) xor r(31); r(6) <= d(7) xor d(6) xor d(5) xor d(4) xor d(2) xor d(1) xor r(25) xor r(26) xor r(28) xor r(29) xor r(30) xor r(31); r(7) <= d(7) xor d(5) xor d(3) xor d(2) xor d(0) xor r(24) xor r(26) xor r(27) xor r(29) xor r(31); r(8) <= d(4) xor d(3) xor d(1) xor d(0) xor r(0) xor r(24) xor r(25) xor r(27) xor r(28); r(9) <= d(5) xor d(4) xor d(2) xor d(1) xor r(1) xor r(25) xor r(26) xor r(28) xor r(29); r(10) <= d(5) xor d(3) xor d(2) xor d(0) xor r(2) xor r(24) xor r(26) xor r(27) xor r(29); r(11) <= d(4) xor d(3) xor d(1) xor d(0) xor r(3) xor r(24) xor r(25) xor r(27) xor r(28); r(12) <= d(6) xor d(5) xor d(4) xor d(2) xor d(1) xor d(0) xor r(4) xor r(24) xor r(25) xor r(26) xor r(28) xor r(29) xor r(30); r(13) <= d(7) xor d(6) xor d(5) xor d(3) xor d(2) xor d(1) xor r(5) xor r(25) xor r(26) xor r(27) xor r(29) xor r(30) xor r(31); r(14) <= d(7) xor d(6) xor d(4) xor d(3) xor d(2) xor r(6) xor r(26) xor r(27) xor r(28) xor r(30) xor r(31); r(15) <= d(7) xor d(5) xor d(4) xor d(3) xor r(7) xor r(27) xor r(28) xor r(29) xor r(31); r(16) <= d(5) xor d(4) xor d(0) xor r(8) xor r(24) xor r(28) xor r(29); r(17) <= d(6) xor d(5) xor d(1) xor r(9) xor r(25) xor r(29) xor r(30); r(18) <= d(7) xor d(6) xor d(2) xor r(10) xor r(26) xor r(30) xor r(31); r(19) <= d(7) xor d(3) xor r(11) xor r(27) xor r(31); r(20) <= d(4) xor r(12) xor r(28); r(21) <= d(5) xor r(13) xor r(29); r(22) <= d(0) xor r(14) xor r(24); r(23) <= d(6) xor d(1) xor d(0) xor r(15) xor r(24) xor r(25) xor r(30); r(24) <= d(7) xor d(2) xor d(1) xor r(16) xor r(25) xor r(26) xor r(31); r(25) <= d(3) xor d(2) xor r(17) xor r(26) xor r(27); r(26) <= d(6) xor d(4) xor d(3) xor d(0) xor r(18) xor r(24) xor r(27) xor r(28) xor r(30); r(27) <= d(7) xor d(5) xor d(4) xor d(1) xor r(19) xor r(25) xor r(28) xor r(29) xor r(31); r(28) <= d(6) xor d(5) xor d(2) xor r(20) xor r(26) xor r(29) xor r(30); r(29) <= d(7) xor d(6) xor d(3) xor r(21) xor r(27) xor r(30) xor r(31); r(30) <= d(7) xor d(4) xor r(22) xor r(28) xor r(31); r(31) <= d(5) xor r(23) xor r(29); end if; end if; end if; end process;end crc32_8;-- r(0) <= d(6) xor d(0) xor r(24) xor r(30);-- r(1) <= d(7) xor d(6) xor d(1) xor d(0) xor r(24) xor r(25) xor r(30) xor r(31);-- r(2) <= d(7) xor d(6) xor d(2) xor d(1) xor d(0) xor r(24) xor r(25) xor r(26) xor r(30) xor r(31);-- r(3) <= d(7) xor d(3) xor d(2) xor d(1) xor r(25) xor r(26) xor r(27) xor r(31);-- r(4) <= d(6) xor d(4) xor d(3) xor d(2) xor d(0) xor r(24) xor r(26) xor r(27) xor r(28) xor r(30);-- r(5) <= d(7) xor d(6) xor d(5) xor d(4) xor d(3) xor d(1) xor d(0) xor r(24) xor r(25) xor r(27) xor -- r(28) xor r(29) xor r(30) xor r(31);-- r(6) <= d(7) xor d(6) xor d(5) xor d(4) xor d(2) xor d(1) xor -- r(25) xor r(26) xor r(28) xor r(29) xor r(30) xor r(31);-- r(7) <= d(7) xor d(5) xor d(3) xor d(2) xor d(0) xor r(24) xor r(26) xor r(27) xor r(29) xor r(31);-- r(8) <= d(4) xor d(3) xor d(1) xor d(0) xor r(0) xor r(24) xor r(25) xor r(27) xor r(28);-- r(9) <= d(5) xor d(4) xor d(2) xor d(1) xor r(1) xor r(25) xor r(26) xor r(28) xor r(29);-- r(10) <= d(5) xor d(3) xor d(2) xor d(0) xor r(2) xor r(24) xor r(26) xor r(27) xor r(29);-- r(11) <= d(4) xor d(3) xor d(1) xor d(0) xor r(3) xor r(24) xor r(25) xor r(27) xor r(28);-- r(12) <= d(6) xor d(5) xor d(4) xor d(2) xor d(1) xor d(0) xor -- r(4) xor r(24) xor r(25) xor r(26) xor r(28) xor r(29) xor r(30);-- r(13) <= d(7) xor d(6) xor d(5) xor d(3) xor d(2) xor d(1) xor -- r(5) xor r(25) xor r(26) xor r(27) xor r(29) xor r(30) xor r(31);-- r(14) <= d(7) xor d(6) xor d(4) xor d(3) xor d(2) xor r(6) xor r(26) xor r(27) xor r(28) xor r(30) xor r(31);-- r(15) <= d(7) xor d(5) xor d(4) xor d(3) xor r(7) xor r(27) xor r(28) xor r(29) xor r(31);-- r(16) <= d(5) xor d(4) xor d(0) xor r(8) xor r(24) xor r(28) xor r(29);-- r(17) <= d(6) xor d(5) xor d(1) xor r(9) xor r(25) xor r(29) xor r(30);-- r(18) <= d(7) xor d(6) xor d(2) xor r(10) xor r(26) xor r(30) xor r(31);-- r(19) <= d(7) xor d(3) xor r(11) xor r(27) xor r(31);-- r(20) <= d(4) xor r(12) xor r(28);-- r(21) <= d(5) xor r(13) xor r(29);-- r(22) <= d(0) xor r(14) xor r(24);-- r(23) <= d(6) xor d(1) xor d(0) xor r(15) xor r(24) xor r(25) xor r(30);-- r(24) <= d(7) xor d(2) xor d(1) xor r(16) xor r(25) xor r(26) xor r(31);-- r(25) <= d(3) xor d(2) xor r(17) xor r(26) xor r(27);-- r(26) <= d(6) xor d(4) xor d(3) xor d(0) xor r(18) xor r(24) xor r(27) xor r(28) xor r(30);-- r(27) <= d(7) xor d(5) xor d(4) xor d(1) xor r(19) xor r(25) xor r(28) xor r(29) xor r(31);-- r(28) <= d(6) xor d(5) xor d(2) xor r(20) xor r(26) xor r(29) xor r(30);-- r(29) <= d(7) xor d(6) xor d(3) xor r(21) xor r(27) xor r(30) xor r(31);-- r(30) <= d(7) xor d(4) xor r(22) xor r(28) xor r(31);-- r(31) <= d(5) xor r(23) xor r(29);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -