阅读:1838回复:3
CRC校验功能如何用VHDL实现?
望高手多多赐教!!
|
|
沙发#
发布于:2003-02-24 16:42
你想做多少位的crc校验?
|
|
板凳#
发布于:2003-02-24 21:45
上www.easics.com/webtools/crctool,可自动生成各种CRC校验程序,想看原理上IEEE去搜,一堆
|
|
|
地板#
发布于:2003-02-25 12:39
16位CRC产生,并行输入,一次一个字节
package body PCK_CRC16_D8 is -- polynomial: (0 5 12 16) data width: 8 -- convention: the first serial data bit is D(7) function nextCRC16_D8 ( Data: std_logic_vector(7 downto 0); CRC: std_logic_vector(15 downto 0) ) return std_logic_vector is variable D: std_logic_vector(7 downto 0); variable C: std_logic_vector(15 downto 0); variable NewCRC: std_logic_vector(15 downto 0); begin D := Data; C := CRC; NewCRC(0) := D(4) xor D(0) xor C(8) xor C(12); NewCRC(1) := D(5) xor D(1) xor C(9) xor C(13); NewCRC(2) := D(6) xor D(2) xor C(10) xor C(14); NewCRC(3) := D(7) xor D(3) xor C(11) xor C(15); NewCRC(4) := D(4) xor C(12); NewCRC(5) := D(5) xor D(4) xor D(0) xor C(8) xor C(12)xor C(13); NewCRC(6) := D(6) xor D(5) xor D(1) xor C(9) xor C(13)xor C(14); NewCRC(7) := D(7) xor D(6) xor D(2) xor C(10) xor C(14)xor C(15); NewCRC(8) := D(7) xor D(3) xor C(0) xor C(11) xor C(15); NewCRC(9) := D(4) xor C(1) xor C(12); NewCRC(10) := D(5) xor C(2) xor C(13); NewCRC(11) := D(6) xor C(3) xor C(14); NewCRC(12) := D(7) xor D(4) xor D(0) xor C(4) xor C(8)xor C(12) xor C(15); NewCRC(13) := D(5) xor D(1) xor C(5) xor C(9) xor C(13); NewCRC(14) := D(6) xor D(2) xor C(6) xor C(10) xor C(14); NewCRC(15) := D(7) xor D(3) xor C(7) xor C(11) xor C(15); return NewCRC; end nextCRC16_D8; end PCK_CRC16_ |
|
|