⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc_pkg.vhd

📁 VHDL语言实现的CRC校验
💻 VHD
📖 第 1 页 / 共 2 页
字号:
        crcout(8)  := r(7);
        crcout(9)  := r(8);
        crcout(10) := r(9);
        crcout(11) := r(10);
        crcout(12) := d xor r(11) xor r(15);
        crcout(13) := r(12);
        crcout(14) := r(13);
        crcout(15) := r(14);
        return crcout;
    
  end crc16_ccitt_1;
--------------------------------------------------------------
	function crc16_ccitt_8( data:  std_logic_vector(7 downto 0);
                          crcin:   std_logic_vector(15 downto 0) )
  return std_logic_vector is

  variable d: std_logic_vector(7 downto 0);
  variable r: std_logic_vector(15 downto 0);
  variable crcout: std_logic_vector(15 downto 0);

  begin
        d:= data;
        r:= crcin;
    
        crcout(0)  := d(4) xor d(0) xor r(8) xor r(12);
        crcout(1)  := d(5) xor d(1) xor r(9) xor r(13);
        crcout(2)  := d(6) xor d(2) xor r(10) xor r(14);
        crcout(3)  := d(7) xor d(3) xor r(11) xor r(15);
        crcout(4)  := d(4) xor r(12);
        crcout(5)  := d(5) xor d(4) xor r(0) xor r(8) xor r(12) xor r(13);
        crcout(6)  := d(6) xor d(5) xor d(1) xor r(9) xor r(13) xor r(14);
        crcout(7)  := d(7) xor d(6) xor d(2) xor r(10) xor r(14) xor r(15);
        crcout(8)  := d(7) xor d(3) xor r(0) xor r(11) xor r(15);
        crcout(9)  := d(4) xor r(1) xor r(12);
        crcout(10) := d(5) xor r(2) xor r(13);
        crcout(11) := d(6) xor r(3) xor r(14);
        crcout(12) := d(7) xor d(4) xor d(0) xor r(4) xor r(8) xor r(12) xor r(15);
        crcout(13) := d(5) xor d(1) xor r(5) xor r(9) xor r(13);
        crcout(14) := d(6) xor d(2) xor r(6) xor r(10) xor r(14);
        crcout(15) := d(7) xor d(3) xor r(7) xor r(11) xor r(15);
        return crcout;
        
  end crc16_ccitt_8;
---------------------------------------------------------------
  function crc12_1( data:  std_logic;
                   crcin:   std_logic_vector(11 downto 0) )
  return std_logic_vector is
  
  variable d:   std_logic;
  variable r: std_logic_vector(11 downto 0);
  variable crcout: std_logic_vector(11 downto 0);

  begin
        d:= data;
        r:=crcin;
    
        crcout(0)  := d xor r(11);
        crcout(1)  := r(0);
        crcout(2)  := d xor r(1) xor r(11);
        crcout(3)  := d xor r(2) xor r(11);
        crcout(4)  := r(3);
        crcout(5)  := r(4);
        crcout(6)  := r(5);
        crcout(7)  := r(6);
        crcout(8)  := r(7);
        crcout(9)  := r(8);
        crcout(10) := r(9);
        crcout(11) := d xor r(10);
    return crcout; 
      
  end crc12_1;   
--------------------------------------------------------------
  function crc8_1( data:  std_logic;
                  crcin:   std_logic_vector(7 downto 0) )
  return std_logic_vector is
     
  variable d:   std_logic;
  variable r: std_logic_vector(7 downto 0);
  variable crcout: std_logic_vector(7 downto 0);
    
  begin   
        d:= data;
        r:=crcin;
       
        crcout(0)  := d xor r(7);
        crcout(1)  := r(0);
        crcout(2)  := r(1);
        crcout(3)  := r(2);
        crcout(4)  := d xor r(3) xor r(7);
        crcout(5)  := d xor r(4) xor r(7);
        crcout(6)  := r(5);
        crcout(7)  := r(6);
    
    return crcout; 
         
  end crc8_1;    
---------------------------------------------------------------
  function crc8_8( data:  std_logic_vector(7 downto 0);
                   crcin:   std_logic_vector(7 downto 0) )
  return std_logic_vector is
  
  variable d: std_logic_vector(7 downto 0);
  variable r: std_logic_vector(7 downto 0);
  variable crcout: std_logic_vector(7 downto 0);

  begin
        d:= data;
        r:=crcin;
    
        crcout(0) := d(7) xor d(6) xor d(0) xor r(0) xor r(6) xor r(7);
        crcout(1) := d(6) xor d(1) xor d(0) xor r(0) xor r(1) xor r(6);
        crcout(2) := d(6) xor d(2) xor d(1) xor d(0) xor r(0) xor r(1) xor r(2) xor r(6);
        crcout(3) := d(7) xor d(3) xor d(2) xor d(1) xor r(1) xor r(2) xor r(3) xor r(7);
        crcout(4) := d(4) xor d(3) xor d(2) xor r(2) xor r(3) xor r(4);
        crcout(5) := d(5) xor d(4) xor d(3) xor r(3) xor r(4) xor r(5);
        crcout(6) := d(6) xor d(5) xor d(4) xor r(4) xor r(5) xor r(6);
        crcout(7) := d(7) xor d(6) xor d(5) xor r(5) xor r(6) xor r(7);
        return crcout; 
    
  end crc8_8;
---------------------------------------------------------------
  function crc5_11( data:  std_logic_vector(10 downto 0);
                    crcin:   std_logic_vector(4 downto 0) )
  return std_logic_vector is
  
  variable d: std_logic_vector(10 downto 0);
  variable r: std_logic_vector(4 downto 0);
  variable crcout: std_logic_vector(4 downto 0);

  begin
        d:= data;
        r:=crcin;
    
        crcout(0) := d(10) xor d(9) xor d(6) xor d(5) xor d(3) xor d(0) xor r(0) xor r(3) xor r(4);
        crcout(1) := d(10) xor d(7) xor d(6) xor d(4) xor d(1) xor r(0) xor r(1) xor r(4);
        crcout(2) := d(10) xor d(9) xor d(8) xor d(7) xor d(6) xor d(3) xor d(2) xor d(0) xor r(0) 
                  xor r(1) xor r(2) xor r(3) xor r(4);
        crcout(3) := d(10) xor d(9) xor d(8) xor d(7) xor d(4) xor d(3) xor d(1) xor r(1) xor r(2) 
                  xor r(3) xor r(4);
        crcout(4) := d(10) xor d(9) xor d(8) xor d(5) xor d(4) xor d(2) xor r(2) xor r(3) xor r(4);
        return crcout; 
    
  end crc5_11;    
----------------------------------------------------------------
  function crc4_1( data:  std_logic;                            
                   crcin:   std_logic_vector(3 downto 0) )      
  return std_logic_vector is                                      
                                                                 
  variable d:   std_logic;                                        
  variable r: std_logic_vector(3 downto 0);                                          
  variable crcout: std_logic_vector(3 downto 0);                  
                                                                 
  begin                                                           
        d:= data;                                                 
        r:=crcin;                                                 
                                                                 
        crcout(0)  := d xor r(3);                                 
        crcout(1)  := d xor r(0)xor r(3);                                       
        crcout(2)  := r(1);                                       
        crcout(3)  := r(2);                                                                                                                                    
        return crcout;                                                
                                                                 
  end crc4_1;                                                        
---------------------------------------------------------------
end crc_pkg;
---------------------------------------------------------------------------------------------------- 
---------------------------------------------------------------------------------------------------- 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

⌨️ 快捷键说明

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