亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
久久激情五月婷婷| 538在线一区二区精品国产| 一本大道久久精品懂色aⅴ | 99久久精品国产观看| 欧美精选在线播放| 国产欧美日韩综合| 男女男精品视频| 日本高清免费不卡视频| 国产婷婷色一区二区三区在线| 亚洲第一福利视频在线| 成人开心网精品视频| 日韩欧美色综合网站| 亚洲午夜激情网页| 色欧美88888久久久久久影院| 久久精品视频在线看| 久久 天天综合| 日韩一区二区免费电影| 亚洲成人动漫在线观看| 在线免费av一区| 一区二区欧美国产| 一本大道av一区二区在线播放| 国产偷国产偷亚洲高清人白洁 | 亚洲免费观看高清完整版在线观看熊| 久久国产精品一区二区| 欧美伦理视频网站| 天堂久久一区二区三区| 在线成人免费观看| 日本欧美在线看| 日韩欧美在线一区二区三区| 五月天中文字幕一区二区| 欧美亚洲高清一区二区三区不卡| 国产精品福利一区二区| 99久久99久久精品国产片果冻| 久久精品男人天堂av| 国产在线麻豆精品观看| 国产亚洲一二三区| 国产成人日日夜夜| 亚洲欧洲国产日韩| 成人久久18免费网站麻豆| 中文字幕精品一区二区精品绿巨人 | 国产aⅴ综合色| 国产精品少妇自拍| 99久久精品国产麻豆演员表| 亚洲欧美日韩在线播放| 欧美日韩美女一区二区| 日韩电影在线一区二区| 欧美精品一区二区三区四区| 粉嫩av一区二区三区在线播放| 亚洲视频一区二区在线| 欧美亚洲日本一区| 激情综合色播五月| 中文字幕一区二区三区乱码在线 | 夜色激情一区二区| 日韩一区二区视频| 成人黄色小视频| 午夜精品久久久久久久99樱桃| 精品日韩在线观看| 99国产欧美另类久久久精品| 午夜精品一区二区三区免费视频 | 亚洲国产一区二区三区青草影视| 欧美日韩国产123区| 国产精品亚洲综合一区在线观看| 国产精品久久久久久久浪潮网站 | 91麻豆精品一区二区三区| 亚洲成av人片一区二区梦乃| 国产校园另类小说区| 99热99精品| 视频一区国产视频| 中文字幕高清不卡| 91精品欧美福利在线观看| 国产毛片精品国产一区二区三区| 亚洲人成影院在线观看| 日韩欧美色综合网站| 日本韩国一区二区三区| 国产精品1024久久| 日本在线不卡视频| 成人免费在线观看入口| 日韩欧美色电影| 91热门视频在线观看| 国产麻豆一精品一av一免费| 亚洲国产视频一区二区| 国产精品第四页| 欧美精品一区二区三区四区| 欧美日韩成人综合在线一区二区| 成人免费av资源| 久久电影网电视剧免费观看| 亚洲高清一区二区三区| 17c精品麻豆一区二区免费| 欧美va亚洲va| 在线播放91灌醉迷j高跟美女 | 综合久久国产九一剧情麻豆| 精品免费一区二区三区| 欧美图片一区二区三区| caoporn国产一区二区| 国产一区二区三区四| 日韩av一级片| 天堂一区二区在线| 亚洲国产美女搞黄色| 中文字幕在线观看不卡视频| 国产欧美日韩综合精品一区二区| 日韩欧美国产不卡| 欧美一区二区三区爱爱| 欧美日韩一区小说| 欧美日韩国产精品成人| 欧美在线观看视频一区二区三区| 91女厕偷拍女厕偷拍高清| 成人免费高清在线| 99国产一区二区三精品乱码| 成人手机在线视频| 成人av免费在线| 成人黄色在线视频| 91丝袜呻吟高潮美腿白嫩在线观看| 国产成人夜色高潮福利影视| 国产另类ts人妖一区二区| 激情综合五月天| 国产乱码精品一区二区三 | 91色porny在线视频| 91在线云播放| 色综合天天综合网天天看片| 91浏览器入口在线观看| 日本韩国欧美国产| 欧美欧美欧美欧美| 91精品国产乱码| 久久免费国产精品| 欧美高清在线一区二区| 国产精品久久久久久福利一牛影视 | 色婷婷亚洲一区二区三区| 日本电影欧美片| 欧美日韩国产免费| 精品久久一区二区| 欧美高清在线一区| 一区二区高清视频在线观看| 五月婷婷综合在线| 国产成人综合自拍| 91影视在线播放| 91精品麻豆日日躁夜夜躁| 久久综合久久综合久久综合| 国产精品福利一区| 日韩黄色免费网站| 成人精品视频网站| 精品婷婷伊人一区三区三| 欧美电视剧在线观看完整版| 国产精品入口麻豆原神| 亚洲一区在线电影| 国产一区二区日韩精品| 在线观看日韩国产| 久久久久久久久久电影| 亚洲男人天堂av网| 精品一区二区三区av| 93久久精品日日躁夜夜躁欧美| 欧美精选午夜久久久乱码6080| 久久久国产午夜精品| 亚洲国产va精品久久久不卡综合| 韩国理伦片一区二区三区在线播放| 99re8在线精品视频免费播放| 69久久夜色精品国产69蝌蚪网 | 欧美本精品男人aⅴ天堂| 日本一区二区视频在线| 亚洲国产色一区| 成人av电影免费在线播放| 欧美日韩高清一区| 亚洲免费观看在线观看| 国产乱对白刺激视频不卡| 欧美日韩一级二级三级| 国产精品久久综合| 精品亚洲国产成人av制服丝袜 | 亚洲欧美福利一区二区| 精品一区二区三区香蕉蜜桃| 96av麻豆蜜桃一区二区| 久久色.com| 五月激情综合网| 在线国产电影不卡| 国产精品视频观看| 国产一区二区不卡| 日韩免费高清av| 亚洲午夜私人影院| 91福利精品第一导航| 国产精品欧美一级免费| 国产乱码精品一区二区三区五月婷| 欧美高清一级片在线| 亚洲猫色日本管| 成人午夜精品在线| 国产欧美一区二区三区鸳鸯浴| 免费在线观看日韩欧美| 欧美猛男超大videosgay| 亚洲色图20p| 91污在线观看| 亚洲三级小视频| 91在线porny国产在线看| 国产精品亲子乱子伦xxxx裸| 国产精品自拍一区| 久久亚洲欧美国产精品乐播 | 成人av资源下载| 国产女主播一区| 成人性生交大片免费看中文| 国产调教视频一区| 国产福利不卡视频| 国产欧美1区2区3区| 国产激情一区二区三区四区 | 91久久精品一区二区三区|