cvoffset.v 2.6 KB
/**************************************************************************
 *                                                                        *
 *               Copyright (C) 1994, Silicon Graphics, Inc.               *
 *                                                                        *
 *  These coded instructions, statements, and computer programs  contain  *
 *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
 *  are protected by Federal copyright  law.  They  may not be disclosed  *
 *  to  third  parties  or copied or duplicated in any form, in whole or  *
 *  in part, without the prior written consent of Silicon Graphics, Inc.  *
 *                                                                        *
 *************************************************************************/
// $Id: cvoffset.v,v 1.1 2002/05/21 23:55:43 berndt Exp $

//////////////////////////////////////////////////////////////////////////////
   //
   // Project Reality
   //
   // module:      cvoffset
   // description: None
   //
   // designer:    Mike M. Cai	 6/3/94
   //
//////////////////////////////////////////////////////////////////////////////

module cvoffset(x_offset, y_offset, mask_in);
output [1:0]   x_offset, y_offset;
input [15:0]   mask_in;

wire [3:0]     y_mask;
reg [3:0]      x_mask;

/*
assign 	 x_mask[0] = mask_in[15] | mask_in[11] | mask_in[7] | mask_in[3],
      	 x_mask[1] = mask_in[14] | mask_in[10] | mask_in[6] | mask_in[2],
      	 x_mask[2] = mask_in[13] | mask_in[9] | mask_in[5] | mask_in[1],
      	 x_mask[3] = mask_in[12] | mask_in[8] | mask_in[4] | mask_in[0];
*/ 
assign   y_mask[0] = mask_in[15] | mask_in[14] | mask_in[13] | mask_in[12],
      	 y_mask[1] = mask_in[11] | mask_in[10] | mask_in[9] | mask_in[8],
      	 y_mask[2] = mask_in[7] | mask_in[6] | mask_in[5] | mask_in[4],
      	 y_mask[3] = mask_in[3] | mask_in[2] | mask_in[1] | mask_in[0];

assign  y_offset[0] = (y_mask[1] & ~y_mask[0]) | 
      	       	      (y_mask[3] & ~y_mask[2] & ~y_mask[0]),
	y_offset[1] = (y_mask[2] | y_mask[3]) & ~y_mask[1] & ~y_mask[0];
	
always @(y_offset or mask_in )
   case (y_offset)
      2'b00:   x_mask = {mask_in[12],mask_in[13],mask_in[14],mask_in[15]};
      2'b01:   x_mask = {mask_in[8],mask_in[9],mask_in[10],mask_in[11]};
      2'b10:   x_mask = {mask_in[4],mask_in[5],mask_in[6],mask_in[7]};
      2'b11:   x_mask = {mask_in[0],mask_in[1],mask_in[2],mask_in[3]};
   endcase
assign  x_offset[0] = (x_mask[1] & ~x_mask[0]) | 
      	       	      (x_mask[3] & ~x_mask[2] & ~x_mask[0]),
	x_offset[1] = (x_mask[2] | x_mask[3]) & ~x_mask[1] & ~x_mask[0];

endmodule  //  cvoffset