亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bch_decoder.c

?? 鎂光的ECC編碼方案和解碼方案
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************************
*
*    File Name:  bch_decoder.c
*     Revision:  2.0
*         Date:  March, 2007
*        Email:  nandsupport@micron.com
*      Company:  Micron Technology, Inc.
*
*  Description:  Micron NAND BCH Decoder
*
*   References: 
* 		  1. Error Control Coding, Lin & Costello, 2nd Ed., 2004
* 		  2. Error Control Codes, Blahut, 1983
**
*   Disclaimer   This software code and all associated documentation, comments or other 
*  of Warranty:  information (collectively "Software") is provided "AS IS" without 
*                warranty of any kind. MICRON TECHNOLOGY, INC. ("MTI") EXPRESSLY 
*                DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
*                TO, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND ANY IMPLIED WARRANTIES 
*                OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. MTI DOES NOT 
*                WARRANT THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, OR THAT THE 
*                OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE. 
*                FURTHERMORE, MTI DOES NOT MAKE ANY REPRESENTATIONS REGARDING THE USE OR 
*                THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, 
*                ACCURACY, RELIABILITY, OR OTHERWISE. THE ENTIRE RISK ARISING OUT OF USE 
*                OR PERFORMANCE OF THE SOFTWARE REMAINS WITH YOU. IN NO EVENT SHALL MTI, 
*                ITS AFFILIATED COMPANIES OR THEIR SUPPLIERS BE LIABLE FOR ANY DIRECT, 
*                INDIRECT, CONSEQUENTIAL, INCIDENTAL, OR SPECIAL DAMAGES (INCLUDING, 
*                WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, 
*                OR LOSS OF INFORMATION) ARISING OUT OF YOUR USE OF OR INABILITY TO USE 
*                THE SOFTWARE, EVEN IF MTI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
*                DAMAGES. Because some jurisdictions prohibit the exclusion or 
*                limitation of liability for consequential or incidental damages, the 
*                above limitation may not apply to you.
*
*                Copyright 2007 Micron Technology, Inc. All rights reserved.
*
* Rev  Author			Date		Changes
* ---  ---------------	----------	-------------------------------
* 1.0  ZS		08/07/2006	Initial release
* 2.0  PF		03/05/2007	Fixed bug that caused some codewords
* 					to not be corrected
* 
* 
/*******************************************************************************/

#include "BCH_Global.c"

int bb[rr_max] ;	// Syndrome polynomial
int s[rr_max];		// Syndrome values
int syn_error;		// Syndrome error indicator
int count;		// Number of errors
int location[tt_max];	// Error location
int ttx2;		// 2t
int decode_flag;	// Decoding indicator 
	
void parallel_syndrome() {
/* Parallel computation of 2t syndromes.
 * Use the same lookahead matrix T_G_R of parallel computation of parity check bits.
 * The incoming streams are fed into registers from left hand
 */
	int i, j, iii, Temp, bb_temp[rr_max] ;
	int loop_count ;

	// Determine the number of loops required for parallelism.  
	loop_count = ceil(nn_shorten / (double)Parallel) ;
	
	// Serial to parallel data conversion
	for (i = 0; i < Parallel; i++) 
		for (j = 0; j < loop_count; j++) 
			if (i + j * Parallel < nn_shorten)
				data_p[i][j] = recd[i + j * Parallel];
			else
				data_p[i][j] = 0;
	
	// Initialize the parity bits.
	for (i = 0; i < rr; i++)
		bb[i] = 0;
	
	// Compute syndrome polynomial: S(x) = C(x) mod g(x)
	// S(t) = T_G_R S(t-1) + R(t) 
	// Ref: L&C, pp. 225, Fig. 6.11
	for (iii = loop_count - 1; iii >= 0; iii--) {
		for (i = 0; i < rr; i++) {
			Temp = 0;
			for (j = 0; j < rr; j++) 
				if (bb[j] !=0 && T_G_R[i][j] != 0)
					Temp ^= 1 ;
			bb_temp[i] = Temp;
		}
		
		for (i = 0; i < rr; i++)
			bb[i] = bb_temp[i];
		
		for (i = 0; i < Parallel; i++)
			bb[i] = bb[i] ^ data_p[i][iii];
	}
	
	// Computation 2t syndromes based on S(x)
	// Odd syndromes
	syn_error = 0 ;
	for (i = 1; i <= ttx2 - 1; i = i+2) {
	 	s[i] = 0 ;
		for (j = 0; j < rr; j++)
			if (bb[j] != 0)
				s[i] ^= alpha_to[(index_of[bb[j]] + i*j) % nn] ;
		if (s[i] != 0)
			syn_error = 1 ;	// set flag if non-zero syndrome => error
    	}

	// Even syndrome = (Odd syndrome) ** 2
	for (i = 2; i <= ttx2; i = i + 2) {
	 	j = i / 2;
		if (s[j] == 0)
			s[i] = 0;
		else
			s[i] =  alpha_to[(2 * index_of[s[j]]) % nn];
	}
	
	if (Verbose) {
		fprintf(stdout, "# The syndrome from parallel decoder is:\n") ;
		for (i = 1; i <= ttx2; i++)
			fprintf(stdout, "   %4d (%4d) == 0x%04x (0x%x)\n", s[i],index_of[s[i]],s[i], index_of[s[i]]) ;
		fprintf(stdout, "\n\n") ;
	}
}

void decode_bch() {
	register int i, j, elp_sum ;
	int L[ttx2+3];			// Degree of ELP 
	int u_L[ttx2+3];		// Difference between step number and the degree of ELP
	int reg[tt+3];			// Register state
	int elp[ttx2+4][ttx2+4]; 	// Error locator polynomial (ELP)
	int desc[ttx2+4];		// Discrepancy 'mu'th discrepancy
	int u;				// u = 'mu' + 1 and u ranges from -1 to 2*t (see L&C)
	int q;				//

	parallel_syndrome() ;
	
	if (!syn_error) {
		decode_flag = 1 ;	// No errors
		count = 0 ;
	}
	else {	
		// Having errors, begin decoding procedure
		// Simplified Berlekamp-Massey Algorithm for Binary BCH codes
		// 	Ref: Blahut, pp.191, Chapter 7.6 
		// 	Ref: L&C, pp.212, Chapter 6.4
		//
		// Following the terminology of Lin and Costello's book:   
		// 	desc[u] is the 'mu'th discrepancy, where  
		// 	u='mu'+1 and 
		// 	'mu' (the Greek letter!) is the step number ranging 
		// 		from -1 to 2*t (see L&C)
		// 	l[u] is the degree of the elp at that step, and 
		// 	u_L[u] is the difference between the step number 
		// 		and the degree of the elp. 
		
		if (Verbose) fprintf(stdout,"Beginning Berlekamp loop\n");

		// initialise table entries
		for (i = 1; i <= ttx2; i++) 
			s[i] = index_of[s[i]];

		desc[0] = 0;				/* index form */
		desc[1] = s[1];				/* index form */
		elp[0][0] = 1;				/* polynomial form */
		elp[1][0] = 1;				/* polynomial form */
		//elp[2][0] = 1;				/* polynomial form */
		for (i = 1; i < ttx2; i++) {
			elp[0][i] = 0;			/* polynomial form */
			elp[1][i] = 0;			/* polynomial form */
			//elp[2][i] = 0;			/* polynomial form */
		}
		L[0] = 0;
		L[1] = 0;
		//L[2] = 0;
		u_L[0] = -1;
		u_L[1] = 0;
		//u_L[2] = 0;
		u = -1; 
 
		do {
			// even loops always produce no discrepany so they can be skipped
			u = u + 2; 
			if (Verbose) fprintf(stdout,"Loop %d:\n", u);
			if (Verbose) fprintf(stdout,"     desc[%d] = %x\n", u, desc[u]);
			if (desc[u] == -1) {
				L[u + 2] = L[u];
				for (i = 0; i <= L[u]; i++)
					elp[u + 2][i] = elp[u][i]; 
			}
			else {
				// search for words with greatest u_L[q] for which desc[q]!=0 
				q = u - 2;
				if (q<0) q=0;
				// Look for first non-zero desc[q] 
				while ((desc[q] == -1) && (q > 0))
					q=q-2;
				if (q < 0) q = 0;

				// Find q such that desc[u]!=0 and u_L[q] is maximum
				if (q > 0) {
					j = q;
				  	do {
				    		j=j-2;
						if (j < 0) j = 0;
				    		if ((desc[j] != -1) && (u_L[q] < u_L[j]))
				      			q = j;
				  	} while (j > 0);
				}
 
				// store degree of new elp polynomial
				if (L[u] > L[q] + u - q)
					L[u + 2] = L[u];
				else
					L[u + 2] = L[q] + u - q;
 
				// Form new elp(x)
				for (i = 0; i < ttx2; i++) 
					elp[u + 2][i] = 0;
				for (i = 0; i <= L[q]; i++) 
					if (elp[q][i] != 0)
						elp[u + 2][i + u - q] = alpha_to[(desc[u] + nn - desc[q] + index_of[elp[q][i]]) % nn];
				for (i = 0; i <= L[u]; i++) 
					elp[u + 2][i] ^= elp[u][i];

			}
			u_L[u + 2] = u+1 - L[u + 2];
 
			// Form (u+2)th discrepancy.  No discrepancy computed on last iteration 
			if (u < ttx2) {	
				if (s[u + 2] != -1)
					desc[u + 2] = alpha_to[s[u + 2]];
				else 
					desc[u + 2] = 0;

				for (i = 1; i <= L[u + 2]; i++) 
					if ((s[u + 2 - i] != -1) && (elp[u + 2][i] != 0))
			        		desc[u + 2] ^= alpha_to[(s[u + 2 - i] + index_of[elp[u + 2][i]]) % nn];
			 	// put desc[u+2] into index form 
				desc[u + 2] = index_of[desc[u + 2]];	

			}

			if (Verbose) {
				fprintf(stdout,"     deg(elp) = %2d --> elp(%2d):", L[u], u);
				for (i=0; i<=L[u]; i++)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲高清免费一级二级三级| 日韩一区二区在线观看视频 | 久久久久88色偷偷免费| 欧美日韩精品一区二区三区四区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 日韩一区二区免费在线观看| 国产黄色91视频| 久久精品国产亚洲高清剧情介绍| 免费av成人在线| 看国产成人h片视频| 人人爽香蕉精品| 九九**精品视频免费播放| 免费成人你懂的| 国产在线精品免费av| 国产高清精品网站| 成人一级视频在线观看| 99精品视频中文字幕| 色婷婷国产精品久久包臀 | 日本乱人伦一区| 欧美日韩在线综合| 日韩三级视频中文字幕| 国产三级久久久| 亚洲黄色免费网站| 午夜欧美电影在线观看| 免费在线观看一区| 国产乱人伦偷精品视频免下载| 国产精品原创巨作av| eeuss鲁一区二区三区| 欧美中文字幕亚洲一区二区va在线| 欧美三级日韩三级| 久久久国产精品午夜一区ai换脸| 国产精品久久久久久久午夜片| 亚洲一区二区3| 国内精品嫩模私拍在线| 色av成人天堂桃色av| xvideos.蜜桃一区二区| 亚洲人妖av一区二区| 男男视频亚洲欧美| 91玉足脚交白嫩脚丫在线播放| 91精品国产黑色紧身裤美女| 亚洲国产精品激情在线观看| 香蕉久久夜色精品国产使用方法| 国产一区二区电影| 欧美日韩一区精品| 国产精品免费观看视频| 七七婷婷婷婷精品国产| 亚洲人午夜精品天堂一二香蕉| 免费在线观看精品| 成人v精品蜜桃久久一区| 亚洲视频电影在线| 日韩一区二区不卡| 欧美特级限制片免费在线观看| 天天操天天干天天综合网| 精品三级在线看| 91久久精品一区二区三| 一本色道久久综合狠狠躁的推荐| 久久国产乱子精品免费女| 中文字幕一区二区三| 奇米精品一区二区三区四区| 色综合欧美在线视频区| 国产精品热久久久久夜色精品三区 | 国产日韩v精品一区二区| 无码av免费一区二区三区试看| www.亚洲在线| 国产色产综合产在线视频| 日韩精品色哟哟| 精品污污网站免费看| 亚洲啪啪综合av一区二区三区| 国产精品资源网站| 久久综合九色综合久久久精品综合| 亚洲成人动漫一区| 欧美在线观看视频一区二区三区| 国产精品卡一卡二卡三| 国产+成+人+亚洲欧洲自线| 精品av综合导航| 免费的成人av| 日韩手机在线导航| 久久电影网电视剧免费观看| 8x8x8国产精品| 免费在线欧美视频| 欧美一区二区在线不卡| 五月天精品一区二区三区| 欧美日韩一卡二卡三卡| 亚洲成人在线网站| 欧美精品亚洲二区| 日本午夜精品视频在线观看| 91精品久久久久久久久99蜜臂| 日本不卡不码高清免费观看| 91精品国产手机| 久久国产精品色| www精品美女久久久tv| 国产福利一区二区三区| 中文在线免费一区三区高中清不卡| 国产成人免费视频精品含羞草妖精| 中日韩免费视频中文字幕| 91香蕉视频mp4| 亚洲成年人网站在线观看| 91精品国产麻豆| 国产乱对白刺激视频不卡| 国产精品美女一区二区三区| 91精彩视频在线观看| 肉肉av福利一精品导航| 久久久精品日韩欧美| aaa国产一区| 日韩中文字幕一区二区三区| 久久综合国产精品| 色婷婷av一区二区三区gif| 免费观看在线色综合| 国产亚洲综合色| 精品婷婷伊人一区三区三| 狠狠狠色丁香婷婷综合激情| 亚洲美女屁股眼交| 精品欧美一区二区在线观看| 99re视频这里只有精品| 蜜桃一区二区三区四区| 国产精品不卡在线观看| 3atv在线一区二区三区| 99热国产精品| 久久99这里只有精品| 一区二区三区欧美日| 久久久久久久久久久久电影| 欧美无砖砖区免费| 成人精品鲁一区一区二区| 日本色综合中文字幕| 亚洲欧美另类小说| 久久在线免费观看| 在线不卡中文字幕| 99久久99久久精品免费看蜜桃| 日本不卡一区二区三区| 亚洲视频香蕉人妖| 久久久综合视频| 日韩欧美视频在线| 欧美视频一区二区三区四区| 成人精品高清在线| 国产一区二区三区四区五区美女 | 欧美三级乱人伦电影| 国产精品一区二区x88av| 日韩av中文字幕一区二区三区| 国产精品久久久久aaaa| 欧美精品一区二区蜜臀亚洲| 欧美色手机在线观看| youjizz国产精品| 国产激情偷乱视频一区二区三区| 麻豆视频观看网址久久| 婷婷一区二区三区| 婷婷夜色潮精品综合在线| 一区二区三区四区视频精品免费 | 中文字幕佐山爱一区二区免费| 精品成a人在线观看| 日韩欧美另类在线| 欧美一级在线视频| 欧美久久一二区| 欧美精品少妇一区二区三区| 在线观看av一区二区| 欧美亚洲精品一区| 欧美体内she精高潮| 欧美日韩中文一区| 欧美日韩精品免费观看视频| 欧美三级三级三级| 91.麻豆视频| 日韩精品中午字幕| 精品国产一区二区三区久久久蜜月 | 精品亚洲免费视频| 国精产品一区一区三区mba视频| 美日韩一区二区| 国产综合久久久久影院| 国产成人综合在线播放| 成人一二三区视频| 9久草视频在线视频精品| 91免费版pro下载短视频| 欧美性生活大片视频| 欧美精品久久天天躁| 精品久久国产97色综合| 久久综合999| 综合亚洲深深色噜噜狠狠网站| 亚洲一区自拍偷拍| 捆绑调教一区二区三区| 国产.欧美.日韩| 色婷婷国产精品久久包臀| 欧美电影一区二区三区| 国产亚洲一二三区| 亚洲激情欧美激情| 日韩国产欧美在线播放| 国产一区二区在线电影| 99re视频精品| 日韩美女一区二区三区四区| 国产精品欧美一区二区三区| 亚洲午夜精品在线| 国模冰冰炮一区二区| 色综合色综合色综合| 精品国产乱码久久久久久图片 | 亚洲综合色视频| 久久精品国产99国产| 99国产精品99久久久久久| 欧美精品 日韩| 中文字幕va一区二区三区| 日本一区二区综合亚洲| 亚洲成人免费电影| 成人欧美一区二区三区在线播放| 亚洲精品国产一区二区精华液|