Line 37... |
Line 37... |
//// ////
|
//// ////
|
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
|
|
// CVS Log
|
// CVS Log
|
//
|
//
|
// $Id: ac97_in_fifo.v,v 1.4 2002-09-19 06:30:56 rudi Exp $
|
// $Id: ac97_in_fifo.v,v 1.5 2002-11-14 17:10:12 rudi Exp $
|
//
|
//
|
// $Date: 2002-09-19 06:30:56 $
|
// $Date: 2002-11-14 17:10:12 $
|
// $Revision: 1.4 $
|
// $Revision: 1.5 $
|
// $Author: rudi $
|
// $Author: rudi $
|
// $Locker: $
|
// $Locker: $
|
// $State: Exp $
|
// $State: Exp $
|
//
|
//
|
// Change History:
|
// Change History:
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.4 2002/09/19 06:30:56 rudi
|
|
// Fixed a bug reported by Igor. Apparently this bug only shows up when
|
|
// the WB clock is very low (2x bit_clk). Updated Copyright header.
|
|
//
|
// Revision 1.3 2002/03/11 03:21:22 rudi
|
// Revision 1.3 2002/03/11 03:21:22 rudi
|
//
|
//
|
// - Added defines to select fifo depth between 4, 8 and 16 entries.
|
// - Added defines to select fifo depth between 4, 8 and 16 entries.
|
//
|
//
|
// Revision 1.2 2002/03/05 04:44:05 rudi
|
// Revision 1.2 2002/03/05 04:44:05 rudi
|
Line 146... |
Line 150... |
if(we & !wp[0]) din_tmp1 <= #1 din[19:4];
|
if(we & !wp[0]) din_tmp1 <= #1 din[19:4];
|
|
|
always @(mode or din_tmp1 or din)
|
always @(mode or din_tmp1 or din)
|
case(mode) // synopsys parallel_case full_case
|
case(mode) // synopsys parallel_case full_case
|
2'h0: din_tmp = {din[19:4], din_tmp1}; // 16 Bit Output
|
2'h0: din_tmp = {din[19:4], din_tmp1}; // 16 Bit Output
|
2'h1: din_tmp = {13'h0, din[17:0]}; // 18 bit Output
|
2'h1: din_tmp = {14'h0, din[19:2]}; // 18 bit Output
|
2'h2: din_tmp = {11'h0, din[19:0]}; // 20 Bit Output
|
2'h2: din_tmp = {11'h0, din[19:0]}; // 20 Bit Output
|
endcase
|
endcase
|
|
|
always @(posedge clk)
|
always @(posedge clk)
|
if(we & (!m16b | (m16b & wp[0]) ) ) mem[ wp[2:1] ] <= #1 din_tmp;
|
if(we & (!m16b | (m16b & wp[0]) ) ) mem[ wp[2:1] ] <= #1 din_tmp;
|
Line 233... |
Line 237... |
if(we & !wp[0]) din_tmp1 <= #1 din[19:4];
|
if(we & !wp[0]) din_tmp1 <= #1 din[19:4];
|
|
|
always @(mode or din_tmp1 or din)
|
always @(mode or din_tmp1 or din)
|
case(mode) // synopsys parallel_case full_case
|
case(mode) // synopsys parallel_case full_case
|
2'h0: din_tmp = {din[19:4], din_tmp1}; // 16 Bit Output
|
2'h0: din_tmp = {din[19:4], din_tmp1}; // 16 Bit Output
|
2'h1: din_tmp = {13'h0, din[17:0]}; // 18 bit Output
|
2'h1: din_tmp = {14'h0, din[19:2]}; // 18 bit Output
|
2'h2: din_tmp = {11'h0, din[19:0]}; // 20 Bit Output
|
2'h2: din_tmp = {11'h0, din[19:0]}; // 20 Bit Output
|
endcase
|
endcase
|
|
|
always @(posedge clk)
|
always @(posedge clk)
|
if(we & (!m16b | (m16b & wp[0]) ) ) mem[ wp[3:1] ] <= #1 din_tmp;
|
if(we & (!m16b | (m16b & wp[0]) ) ) mem[ wp[3:1] ] <= #1 din_tmp;
|
Line 321... |
Line 325... |
if(we & !wp[0]) din_tmp1 <= #1 din[19:4];
|
if(we & !wp[0]) din_tmp1 <= #1 din[19:4];
|
|
|
always @(mode or din_tmp1 or din)
|
always @(mode or din_tmp1 or din)
|
case(mode) // synopsys parallel_case full_case
|
case(mode) // synopsys parallel_case full_case
|
2'h0: din_tmp = {din[19:4], din_tmp1}; // 16 Bit Output
|
2'h0: din_tmp = {din[19:4], din_tmp1}; // 16 Bit Output
|
2'h1: din_tmp = {13'h0, din[17:0]}; // 18 bit Output
|
2'h1: din_tmp = {14'h0, din[19:2]}; // 18 bit Output
|
2'h2: din_tmp = {11'h0, din[19:0]}; // 20 Bit Output
|
2'h2: din_tmp = {11'h0, din[19:0]}; // 20 Bit Output
|
endcase
|
endcase
|
|
|
always @(posedge clk)
|
always @(posedge clk)
|
if(we & (!m16b | (m16b & wp[0]) ) ) mem[ wp[4:1] ] <= #1 din_tmp;
|
if(we & (!m16b | (m16b & wp[0]) ) ) mem[ wp[4:1] ] <= #1 din_tmp;
|