\n'; Text += '
'; Text += ' \n'; Text += '
'; Text += '\n'; for (var i=0;i<(extra_info[extra_info_index].length-1);i++) { Text += hbutton(sig_buttons[i], 'opener.location=loc[sel.selectedIndex]['+i+'];', bnum++); } Text += hbutton("Search Backwards", 'opener.search(sel.options[ sel.selectedIndex ].text,' + '0,opener.last_link,-1,0);',bnum++); Text += hbutton("Search Forwards", 'opener.search(sel.options[ sel.selectedIndex ].text,' + '0,opener.last_link, 1,0);',bnum++); Text += hbutton("Close","window.close();",bnum++); Text += '
\n'; Text += '
Hosted by www.Geocities.ws

\n'; w.document.open(); w.document.write(Text); w.document.close(); w.document.forms[0].elements[0].options[0].text = linkText; w.sel = w.document.forms[0].elements[0]; for (j=0;j<10;j++) w.loc[j] = new Array(sig_buttons.length); copy_into_loc0(w,extra_info_index); } else { if ((window.location.pathname.substring(0,window.location.pathname.lastIndexOf(dirSep)))!= (w.location.pathname.substring(0,w.location.pathname.lastIndexOf(dirSep)))) { w.close(); if (is_nav4up) return qs(e,t,extra_info_index); else return false; } var opts = w.document.forms[0].elements[0].options; if ( opts.length<10 ) { w.loc[opts.length] = new Array; opts.length++; } for (i=opts.length-2;i>=0;i--) { opts[i+1].text=opts[i].text; for (var j=0;j' + ' '+text+'\n'; } function copy_into_loc0 (w,extra_info_index) { for (var i=1;i=0;i+=inc) { linkText = is_nav4up ? document.links[i].text : document.links[i].innerText; linkY = is_nav4up ? document.links[i].y : document.links[i].offsetTop; if ((linkText == text) && (linkY != y)) { window.status=""; if (is_nav4up) if (relative) window.scrollBy(0,linkY - y); else window.scrollTo(0,linkY); else if (is_ie4up) document.links[i].scrollIntoView(true); last_link=i; last_class=document.links[i].className; document.links[i].className='HI'; return false; } } nextpage = (inc==1) ? next_page() : prev_page(); wrappage = (inc==1) ? first_page() : last_page(); if (nextpage!="" || wrappage!="") { if (nextpage=="") { if (!confirm(text + " not found. Search again from "+((inc==1)?"first":"last")+" page?")) return false; nextpage=wrappage; } location=nextpage+ "?" + escape(text) + "&" + ( y - window.pageYOffset ) + "&" + inc; return false; } if (confirm(text + " not found. Search again from "+((inc==1)?"start":"end")+"?")) { if (inc==1) i=-1; else i=document.links.length; } else return false; } return true; } function loadqs() { var opt=location.search, text="", s="", y=0, si=0, inc=1; if (opt.length==0) return true; for (var i=1;i
//
// CRC.V
//
// This module calculates the 32-bit CRC code. 
// The module is general purpose and can be used any where.
// The polynomial is (0 1 2 4 5 7 8 10 11 12 16 22 23 26 32)
// Interfaces with the Receiver and the Transmitter module.
// The CRC calculated is same as that of the 
// IEEE-802 LANs and the X3T9.5 FDDI.
// 
[Up: alhamdulillah C1]
module crcIndex( 
			//Inputs
			reset_n, 
			BCLK, 
			D, //Input Data
			crc_in, // signal to indicate that the data is available on D bus
			//Outputs
			Calc_CRC// Calculated CRC bus, updated after each crc_in 		
		   );

input BCLK, reset_n, crc_in;
input [31:0] D;

output [31:0]Calc_CRC;
wire [31:0]Calc_CRC;

reg [15:0]C1;// C1 and C2 are 16 bits registers to form a 32-bit word of 
reg [15:0]C2;//calculated CRC. This was done as Altera has some problem with 32-bit registers


assign Calc_CRC={C1, C2}; 
//     C1  :    C2
//31     16:15      0

always@(negedge reset_n or negedge BCLK)
begin
   if(!reset_n)
   begin
     C1<=16'hFFFF; //The algorithm implemented requires that the initial value be all ones
     C2<=16'hFFFF;
   end

	else if(crc_in)
	begin
//These equations are used to calculate the CRC word. The equations are generated by the 
//CRC-tool avialable at www.easics.com

C2[0] <= D[31] ^ D[30] ^ D[29] ^ D[28] ^ D[26] ^ D[25] ^ D[24] ^ 
                D[16] ^ D[12] ^ D[10] ^ D[9] ^ D[6] ^ D[0] ^ C2[0] ^ 
                C2[6] ^ C2[9] ^ C2[10] ^ C2[12] ^ C1[0] ^ C1[8] ^ C1[9] ^ 
                C1[10] ^ C1[12] ^ C1[13] ^ C1[14] ^ C1[15];
C2[1] <= D[28] ^ D[27] ^ D[24] ^ D[17] ^ D[16] ^ D[13] ^ D[12] ^ 
                D[11] ^ D[9] ^ D[7] ^ D[6] ^ D[1] ^ D[0] ^ C2[0] ^ C2[1] ^ 
                C2[6] ^ C2[7] ^ C2[9] ^ C2[11] ^ C2[12] ^ C2[13] ^ C1[0] ^ 
                C1[1] ^ C1[8] ^ C1[11] ^ C1[12];
C2[2] <= D[31] ^ D[30] ^ D[26] ^ D[24] ^ D[18] ^ D[17] ^ D[16] ^ 
                D[14] ^ D[13] ^ D[9] ^ D[8] ^ D[7] ^ D[6] ^ D[2] ^ 
                D[1] ^ D[0] ^ C2[0] ^ C2[1] ^ C1[2] ^ C2[6] ^ C2[7] ^ C2[8] ^ 
                C2[9] ^ C2[13] ^ C2[14] ^ C1[0] ^ C1[1] ^ C1[2] ^ C1[8] ^ 
                C1[10] ^ C1[14] ^ C1[15];
C2[3] <= D[31] ^ D[27] ^ D[25] ^ D[19] ^ D[18] ^ D[17] ^ D[15] ^ 
                D[14] ^ D[10] ^ D[9] ^ D[8] ^ D[7] ^ D[3] ^ D[2] ^ 
                D[1] ^ C2[1] ^ C1[2] ^ C2[3] ^ C2[7] ^ C2[8] ^ C2[9] ^ C2[10] ^ 
                C2[14] ^ C2[15] ^ C1[1] ^ C1[2] ^ C1[3] ^ C1[9] ^ C1[11] ^ 
                C1[15];
C2[4] <= D[31] ^ D[30] ^ D[29] ^ D[25] ^ D[24] ^ D[20] ^ D[19] ^ 
                D[18] ^ D[15] ^ D[12] ^ D[11] ^ D[8] ^ D[6] ^ D[4] ^ 
                D[3] ^ D[2] ^ D[0] ^ C2[0] ^ C2[2] ^ C2[3] ^ C2[4] ^ C2[6] ^ 
                C2[8] ^ C2[11] ^ C2[12] ^ C2[15] ^ C1[2] ^ C1[3] ^ C1[4] ^ 
                C1[8] ^ C1[9] ^ C1[13] ^ C1[14] ^ C1[15];
C2[5] <= D[29] ^ D[28] ^ D[24] ^ D[21] ^ D[20] ^ D[19] ^ D[13] ^ 
                D[10] ^ D[7] ^ D[6] ^ D[5] ^ D[4] ^ D[3] ^ D[1] ^ D[0] ^ 
                C2[0] ^ C2[1] ^ C2[3] ^ C2[4] ^ C2[5] ^ C2[6] ^ C2[7] ^ C2[10] ^ 
                C2[13] ^ C1[3] ^ C1[4] ^ C1[5] ^ C1[8] ^ C1[12] ^ C1[13];
C2[6] <= D[30] ^ D[29] ^ D[25] ^ D[22] ^ D[21] ^ D[20] ^ D[14] ^ 
                D[11] ^ D[8] ^ D[7] ^ D[6] ^ D[5] ^ D[4] ^ D[2] ^ D[1] ^ 
                C2[1] ^ C1[2] ^ C2[4] ^ C2[5] ^ C2[6] ^ C2[7] ^ C2[8] ^ C2[11] ^ 
                C2[14] ^ C1[4] ^ C1[5] ^ C1[6] ^ C1[9] ^ C1[13] ^ C1[14];
  C2[7] <= D[29] ^ D[28] ^ D[25] ^ D[24] ^ D[23] ^ D[22] ^ D[21] ^ 
                D[16] ^ D[15] ^ D[10] ^ D[8] ^ D[7] ^ D[5] ^ D[3] ^ 
                D[2] ^ D[0] ^ C2[0] ^ C1[2] ^ C2[3] ^ C2[5] ^ C2[7] ^ C2[8] ^ 
                C2[10] ^ C2[15] ^ C1[0] ^ C1[5] ^ C1[6] ^ C1[7] ^ C1[8] ^ 
                C1[9] ^ C1[12] ^ C1[13];
    C2[8] <= D[31] ^ D[28] ^ D[23] ^ D[22] ^ D[17] ^ D[12] ^ D[11] ^ 
                D[10] ^ D[8] ^ D[4] ^ D[3] ^ D[1] ^ D[0] ^ C2[0] ^ C2[1] ^ 
                C2[3] ^ C2[4] ^ C2[8] ^ C2[10] ^ C2[11] ^ C2[12] ^ C1[1] ^ 
                C1[6] ^ C1[7] ^ C1[12] ^ C1[15];
    C2[9] <= D[29] ^ D[24] ^ D[23] ^ D[18] ^ D[13] ^ D[12] ^ D[11] ^ 
                D[9] ^ D[5] ^ D[4] ^ D[2] ^ D[1] ^ C2[1] ^ C2[2] ^ C2[4] ^ 
                C2[5] ^ C2[9] ^ C2[11] ^ C2[12] ^ C2[13] ^ C1[2] ^ C1[7] ^ 
                C1[8] ^ C1[13];
C2[10] <= D[31] ^ D[29] ^ D[28] ^ D[26] ^ D[19] ^ D[16] ^ D[14] ^ 
                 D[13] ^ D[9] ^ D[5] ^ D[3] ^ D[2] ^ D[0] ^ C2[0] ^ C2[2] ^ 
                 C2[3] ^ C2[5] ^ C2[9] ^ C2[13] ^ C2[14] ^ C1[0] ^ C1[3] ^ 
                 C1[10] ^ C1[12] ^ C1[13] ^ C1[15];
  C2[11] <= D[31] ^ D[28] ^ D[27] ^ D[26] ^ D[25] ^ D[24] ^ D[20] ^ 
                 D[17] ^ D[16] ^ D[15] ^ D[14] ^ D[12] ^ D[9] ^ D[4] ^ 
                 D[3] ^ D[1] ^ D[0] ^ C2[0] ^ C2[1] ^ C2[3] ^ C2[4] ^ C2[9] ^ 
                 C2[12] ^ C2[14] ^ C2[15] ^ C1[0] ^ C1[1] ^ C1[4] ^ C1[8] ^ 
                 C1[9] ^ C1[10] ^ C1[11] ^ C1[12] ^ C1[15];
    C2[12] <= D[31] ^ D[30] ^ D[27] ^ D[24] ^ D[21] ^ D[18] ^ D[17] ^ 
                 D[15] ^ D[13] ^ D[12] ^ D[9] ^ D[6] ^ D[5] ^ D[4] ^ 
                 D[2] ^ D[1] ^ D[0] ^ C2[0] ^ C2[1] ^ C1[2] ^ C2[4] ^ C2[5] ^ 
                 C2[6] ^ C2[9] ^ C2[12] ^ C2[13] ^ C2[15] ^ C1[1] ^ C1[2] ^ 
                 C1[5] ^ C1[8] ^ C1[11] ^ C1[14] ^ C1[15];
    C2[13] <= D[31] ^ D[28] ^ D[25] ^ D[22] ^ D[19] ^ D[18] ^ D[16] ^ 
                 D[14] ^ D[13] ^ D[10] ^ D[7] ^ D[6] ^ D[5] ^ D[3] ^ 
                 D[2] ^ D[1] ^ C2[1] ^ C1[2] ^ C2[3] ^ C2[5] ^ C2[6] ^ C2[7] ^ 
                 C2[10] ^ C2[13] ^ C2[14] ^ C1[0] ^ C1[2] ^ C1[3] ^ C1[6] ^ 
                 C1[9] ^ C1[12] ^ C1[15];
    C2[14] <= D[29] ^ D[26] ^ D[23] ^ D[20] ^ D[19] ^ D[17] ^ D[15] ^ 
                 D[14] ^ D[11] ^ D[8] ^ D[7] ^ D[6] ^ D[4] ^ D[3] ^ 
                 D[2] ^ C1[2] ^ C2[3] ^ C2[4] ^ C2[6] ^ C2[7] ^ C2[8] ^ C2[11] ^ 
                 C2[14] ^ C2[15] ^ C1[1] ^ C1[3] ^ C1[4] ^ C1[7] ^ C1[10] ^ 
                 C1[13];
    C2[15] <= D[30] ^ D[27] ^ D[24] ^ D[21] ^ D[20] ^ D[18] ^ D[16] ^ 
                 D[15] ^ D[12] ^ D[9] ^ D[8] ^ D[7] ^ D[5] ^ D[4] ^ 
                 D[3] ^ C2[3] ^ C2[4] ^ C2[5] ^ C2[7] ^ C2[8] ^ C2[9] ^ C2[12] ^ 
                 C2[15] ^ C1[0] ^ C1[2] ^ C1[4] ^ C1[5] ^ C1[8] ^ C1[11] ^ 
                 C1[14];
    C1[0] <= D[30] ^ D[29] ^ D[26] ^ D[24] ^ D[22] ^ D[21] ^ D[19] ^ 
                 D[17] ^ D[13] ^ D[12] ^ D[8] ^ D[5] ^ D[4] ^ D[0] ^ 
                 C2[0] ^ C2[4] ^ C2[5] ^ C2[8] ^ C2[12] ^ C2[13] ^ C1[1] ^ 
                 C1[3] ^ C1[5] ^ C1[6] ^ C1[8] ^ C1[10] ^ C1[13] ^ C1[14];
    C1[1] <= D[31] ^ D[30] ^ D[27] ^ D[25] ^ D[23] ^ D[22] ^ D[20] ^ 
                 D[18] ^ D[14] ^ D[13] ^ D[9] ^ D[6] ^ D[5] ^ D[1] ^ 
                 C2[1] ^ C2[5] ^ C2[6] ^ C2[9] ^ C2[13] ^ C2[14] ^ C1[2] ^ 
                 C1[4] ^ C1[6] ^ C1[7] ^ C1[9] ^ C1[11] ^ C1[14] ^ C1[15];
    C1[2] <= D[31] ^ D[28] ^ D[26] ^ D[24] ^ D[23] ^ D[21] ^ D[19] ^ 
                 D[15] ^ D[14] ^ D[10] ^ D[7] ^ D[6] ^ D[2] ^ C1[2] ^ 
                 C2[6] ^ C2[7] ^ C2[10] ^ C2[14] ^ C2[15] ^ C1[3] ^ C1[5] ^ 
                 C1[7] ^ C1[8] ^ C1[10] ^ C1[12] ^ C1[15];
    C1[3] <= D[29] ^ D[27] ^ D[25] ^ D[24] ^ D[22] ^ D[20] ^ D[16] ^ 
                 D[15] ^ D[11] ^ D[8] ^ D[7] ^ D[3] ^ C2[3] ^ C2[7] ^ 
                 C2[8] ^ C2[11] ^ C2[15] ^ C1[0] ^ C1[4] ^ C1[6] ^ C1[8] ^ 
                 C1[9] ^ C1[11] ^ C1[13];
    C1[4] <= D[30] ^ D[28] ^ D[26] ^ D[25] ^ D[23] ^ D[21] ^ D[17] ^ 
                 D[16] ^ D[12] ^ D[9] ^ D[8] ^ D[4] ^ C2[4] ^ C2[8] ^ 
                 C2[9] ^ C2[12] ^ C1[0] ^ C1[1] ^ C1[5] ^ C1[7] ^ C1[9] ^ 
                 C1[10] ^ C1[12] ^ C1[14];
    C1[5] <= D[31] ^ D[29] ^ D[27] ^ D[26] ^ D[24] ^ D[22] ^ D[18] ^ 
                 D[17] ^ D[13] ^ D[10] ^ D[9] ^ D[5] ^ C2[5] ^ C2[9] ^ 
                 C2[10] ^ C2[13] ^ C1[1] ^ C1[2] ^ C1[6] ^ C1[8] ^ C1[10] ^ 
                 C1[11] ^ C1[13] ^ C1[15];
    C1[6] <= D[31] ^ D[29] ^ D[27] ^ D[26] ^ D[24] ^ D[23] ^ D[19] ^ 
                 D[18] ^ D[16] ^ D[14] ^ D[12] ^ D[11] ^ D[9] ^ D[0] ^ 
                 C2[0] ^ C2[9] ^ C2[11] ^ C2[12] ^ C2[14] ^ C1[0] ^ C1[2] ^ 
                 C1[3] ^ C1[7] ^ C1[8] ^ C1[10] ^ C1[11] ^ C1[13] ^ C1[15];
    C1[7] <= D[31] ^ D[29] ^ D[27] ^ D[26] ^ D[20] ^ D[19] ^ D[17] ^ 
                 D[16] ^ D[15] ^ D[13] ^ D[9] ^ D[6] ^ D[1] ^ D[0] ^ 
                 C2[0] ^ C2[1] ^ C2[6] ^ C2[9] ^ C2[13] ^ C2[15] ^ C1[0] ^ 
                 C1[1] ^ C1[3] ^ C1[4] ^ C1[10] ^ C1[11] ^ C1[13] ^ C1[15];
    C1[8] <= D[30] ^ D[28] ^ D[27] ^ D[21] ^ D[20] ^ D[18] ^ D[17] ^ 
                 D[16] ^ D[14] ^ D[10] ^ D[7] ^ D[2] ^ D[1] ^ C2[1] ^ 
                 C1[2] ^ C2[7] ^ C2[10] ^ C2[14] ^ C1[0] ^ C1[1] ^ C1[2] ^ 
                 C1[4] ^ C1[5] ^ C1[11] ^ C1[12] ^ C1[14];
    C1[9] <= D[31] ^ D[29] ^ D[28] ^ D[22] ^ D[21] ^ D[19] ^ D[18] ^ 
                 D[17] ^ D[15] ^ D[11] ^ D[8] ^ D[3] ^ D[2] ^ C1[2] ^ 
                 C2[3] ^ C2[8] ^ C2[11] ^ C2[15] ^ C1[1] ^ C1[2] ^ C1[3] ^ 
                 C1[5] ^ C1[6] ^ C1[12] ^ C1[13] ^ C1[15];
    C1[10] <= D[31] ^ D[28] ^ D[26] ^ D[25] ^ D[24] ^ D[23] ^ D[22] ^ 
                 D[20] ^ D[19] ^ D[18] ^ D[10] ^ D[6] ^ D[4] ^ D[3] ^ 
                 D[0] ^ C2[0] ^ C2[3] ^ C2[4] ^ C2[6] ^ C2[10] ^ C1[2] ^ 
                 C1[3] ^ C1[4] ^ C1[6] ^ C1[7] ^ C1[8] ^ C1[9] ^ C1[10] ^ 
                 C1[12] ^ C1[15];
    C1[11] <= D[29] ^ D[27] ^ D[26] ^ D[25] ^ D[24] ^ D[23] ^ D[21] ^ 
                 D[20] ^ D[19] ^ D[11] ^ D[7] ^ D[5] ^ D[4] ^ D[1] ^ 
                 C2[1] ^ C2[4] ^ C2[5] ^ C2[7] ^ C2[11] ^ C1[3] ^ C1[4] ^ 
                 C1[5] ^ C1[7] ^ C1[8] ^ C1[9] ^ C1[10] ^ C1[11] ^ C1[13];
    C1[12] <= D[30] ^ D[28] ^ D[27] ^ D[26] ^ D[25] ^ D[24] ^ D[22] ^ 
                 D[21] ^ D[20] ^ D[12] ^ D[8] ^ D[6] ^ D[5] ^ D[2] ^ 
                 C1[2] ^ C2[5] ^ C2[6] ^ C2[8] ^ C2[12] ^ C1[4] ^ C1[5] ^ 
                 C1[6] ^ C1[8] ^ C1[9] ^ C1[10] ^ C1[11] ^ C1[12] ^ C1[14];
    C1[13] <= D[31] ^ D[29] ^ D[28] ^ D[27] ^ D[26] ^ D[25] ^ D[23] ^ 
                 D[22] ^ D[21] ^ D[13] ^ D[9] ^ D[7] ^ D[6] ^ D[3] ^ 
                 C2[3] ^ C2[6] ^ C2[7] ^ C2[9] ^ C2[13] ^ C1[5] ^ C1[6] ^ 
                 C1[7] ^ C1[9] ^ C1[10] ^ C1[11] ^ C1[12] ^ C1[13] ^ C1[15];
    C1[14] <= D[30] ^ D[29] ^ D[28] ^ D[27] ^ D[26] ^ D[24] ^ D[23] ^ 
                 D[22] ^ D[14] ^ D[10] ^ D[8] ^ D[7] ^ D[4] ^ C2[4] ^ 
                 C2[7] ^ C2[8] ^ C2[10] ^ C2[14] ^ C1[6] ^ C1[7] ^ C1[8] ^ 
                 C1[10] ^ C1[11] ^ C1[12] ^ C1[13] ^ C1[14];
    C1[15] <= D[31] ^ D[30] ^ D[29] ^ D[28] ^ D[27] ^ D[25] ^ D[24] ^ 
                 D[23] ^ D[15] ^ D[11] ^ D[9] ^ D[8] ^ D[5] ^ C2[5] ^ 
                 C2[8] ^ C2[9] ^ C2[11] ^ C2[15] ^ C1[7] ^ C1[8] ^ C1[9] ^ 
                 C1[11] ^ C1[12] ^ C1[13] ^ C1[14] ^ C1[15];

 
     end
end

endmodule


This page: Maintained by: [email protected]
Created:Sun Mar 11 19:19:08 2001
From: /mnt/c/windows/desktop/floppy/commen~1/crc.v

Verilog converted to html by v2html 6.0 (written by Costas Calamvokis).Help































Hosted by www.Geocities.ws

1