////////////////////////////////////////////////////////////////////// //// //// //// Mixcolumns for 8 bit //// //// //// //// This file is part of the SystemC AES //// //// //// //// Description: //// //// Mixcolum for a byte //// //// //// //// Generated automatically using SystemC to Verilog translator //// //// //// //// To Do: //// //// - done //// //// //// //// Author(s): //// //// - Javier Castillo, jcastilo@opencores.org //// //// //// ////////////////////////////////////////////////////////////////////// //// //// //// Copyright (C) 2000 Authors and OPENCORES.ORG //// //// //// //// 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, download it //// //// from http://www.opencores.org/lgpl.shtml //// //// //// ////////////////////////////////////////////////////////////////////// // // CVS Revision History // // $Log: byte_mixcolum.v,v $ // Revision 1.1.1.1 2004/07/05 09:46:23 jcastillo // First import // module byte_mixcolum(a,b,c,d,outx,outy); input [7:0] a,b,c,d; output [7:0] outx, outy; reg [7:0] outx, outy; function [7:0] xtime; input [7:0] in; reg [3:0] xtime_t; begin xtime[7:5] = in[6:4]; xtime_t[3] = in[7]; xtime_t[2] = in[7]; xtime_t[1] = 0; xtime_t[0] = in[7]; xtime[4:1] =xtime_t^in[3:0]; xtime[0] = in[7]; end endfunction reg [7:0] w1,w2,w3,w4,w5,w6,w7,w8,outx_var; always @ (a, b, c, d) begin w1 = a ^b; w2 = a ^c; w3 = c ^d; w4 = xtime(w1); w5 = xtime(w3); w6 = w2 ^w4 ^w5; w7 = xtime(w6); w8 = xtime(w7); outx_var = b^w3^w4; outx=outx_var; outy=w8^outx_var; end endmodule