1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- //-----------------------------------------------------------------
- // USB Serial Port
- // V0.1
- // Ultra-Embedded.com
- // Copyright 2020
- //
- // Email: admin@ultra-embedded.com
- //
- // License: LGPL
- //-----------------------------------------------------------------
- //
- // This source file may be used and distributed without
- // restriction provided that this copyright statement is not
- // removed from the file and that any derivative work contains
- // the original copyright notice and the associated disclaimer.
- //
- // This source file is free software; you can redistribute it
- // and/or modify it under the terms of the GNU Lesser General
- // Public License as published by the Free Software Foundation;
- // either version 2.1 of the License, or (at your option) any
- // later version.
- //
- // This source is distributed in the hope that it will be
- // useful, but WITHOUT ANY WARRANTY; without even the implied
- // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- // PURPOSE. See the GNU Lesser General Public License for more
- // details.
- //
- // You should have received a copy of the GNU Lesser General
- // Public License along with this source; if not, write to the
- // Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- // Boston, MA 02111-1307 USA
- //-----------------------------------------------------------------
- //-----------------------------------------------------------------
- // Generated File
- //-----------------------------------------------------------------
- module usbf_crc16
- (
- // Inputs
- input [ 15:0] crc_in_i
- ,input [ 7:0] din_i
- // Outputs
- ,output [ 15:0] crc_out_o
- );
- //-----------------------------------------------------------------
- // Logic
- //-----------------------------------------------------------------
- assign crc_out_o[15] = din_i[0] ^ din_i[1] ^ din_i[2] ^ din_i[3] ^ din_i[4] ^ din_i[5] ^ din_i[6] ^ din_i[7] ^
- crc_in_i[7] ^ crc_in_i[6] ^ crc_in_i[5] ^ crc_in_i[4] ^ crc_in_i[3] ^ crc_in_i[2] ^ crc_in_i[1] ^ crc_in_i[0];
- assign crc_out_o[14] = din_i[0] ^ din_i[1] ^ din_i[2] ^ din_i[3] ^ din_i[4] ^ din_i[5] ^ din_i[6] ^
- crc_in_i[6] ^ crc_in_i[5] ^ crc_in_i[4] ^ crc_in_i[3] ^ crc_in_i[2] ^ crc_in_i[1] ^ crc_in_i[0];
- assign crc_out_o[13] = din_i[6] ^ din_i[7] ^
- crc_in_i[7] ^ crc_in_i[6];
- assign crc_out_o[12] = din_i[5] ^ din_i[6] ^
- crc_in_i[6] ^ crc_in_i[5];
- assign crc_out_o[11] = din_i[4] ^ din_i[5] ^
- crc_in_i[5] ^ crc_in_i[4];
- assign crc_out_o[10] = din_i[3] ^ din_i[4] ^
- crc_in_i[4] ^ crc_in_i[3];
- assign crc_out_o[9] = din_i[2] ^ din_i[3] ^
- crc_in_i[3] ^ crc_in_i[2];
- assign crc_out_o[8] = din_i[1] ^ din_i[2] ^
- crc_in_i[2] ^ crc_in_i[1];
- assign crc_out_o[7] = din_i[0] ^ din_i[1] ^
- crc_in_i[15] ^ crc_in_i[1] ^ crc_in_i[0];
- assign crc_out_o[6] = din_i[0] ^
- crc_in_i[14] ^ crc_in_i[0];
- assign crc_out_o[5] = crc_in_i[13];
- assign crc_out_o[4] = crc_in_i[12];
- assign crc_out_o[3] = crc_in_i[11];
- assign crc_out_o[2] = crc_in_i[10];
- assign crc_out_o[1] = crc_in_i[9];
- assign crc_out_o[0] = din_i[0] ^ din_i[1] ^ din_i[2] ^ din_i[3] ^ din_i[4] ^ din_i[5] ^ din_i[6] ^ din_i[7] ^
- crc_in_i[8] ^ crc_in_i[7] ^ crc_in_i[6] ^ crc_in_i[5] ^ crc_in_i[4] ^ crc_in_i[3] ^ crc_in_i[2] ^ crc_in_i[1] ^ crc_in_i[0];
- endmodule
|