usb_data_crc.vhd

来自「VHDL function for calculate USB Data CRC」· VHDL 代码 · 共 58 行

VHD
58
字号
---------------------------------------------------------------------------------- Purpose : synthesizable CRC function--   * polynomial: (0 2 15 16)--   * data width: 8--------------------------------------------------------------------------------library ieee;use ieee.std_logic_1164.all;package PCK_CRC16_D8 is  -- polynomial: (0 2 15 16)  -- data width: 8  -- convention: the first serial 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;end PCK_CRC16_D8;package body PCK_CRC16_D8 is  -- polynomial: (0 2 15 16)  -- data width: 8  -- convention: the first serial 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(7) xor d(6) xor d(5) xor d(4) xor d(3) xor d(2) xor d(1) xor d(0) xor c(8) xor c(9) xor c(10) xor c(11) xor c(12) xor c(13) xor c(14) xor c(15);    newcrc(1) := d(7) xor d(6) xor d(5) xor d(4) xor d(3) xor d(2) xor d(1) xor c(9) xor c(10) xor c(11) xor c(12) xor c(13) xor c(14) xor c(15);    newcrc(2) := d(1) xor d(0) xor c(8) xor c(9);    newcrc(3) := d(2) xor d(1) xor c(9) xor c(10);    newcrc(4) := d(3) xor d(2) xor c(10) xor c(11);    newcrc(5) := d(4) xor d(3) xor c(11) xor c(12);    newcrc(6) := d(5) xor d(4) xor c(12) xor c(13);    newcrc(7) := d(6) xor d(5) xor c(13) xor c(14);    newcrc(8) := d(7) xor d(6) xor c(0) xor c(14) xor c(15);    newcrc(9) := d(7) xor c(1) xor c(15);    newcrc(10) := c(2);    newcrc(11) := c(3);    newcrc(12) := c(4);    newcrc(13) := c(5);    newcrc(14) := c(6);    newcrc(15) := d(7) xor d(6) xor d(5) xor d(4) xor d(3) xor d(2) xor d(1) xor d(0) xor c(7) xor c(8) xor c(9) xor c(10) xor c(11) xor c(12) xor c(13) xor c(14) xor c(15);    return newcrc;  end nextCRC16_D8;end PCK_CRC16_D8;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?