⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bp2_decoder.v

📁 H.264的CABAC的旁路码的另一个解码过程。
💻 V
字号:
module BP2_decoder(range_out, offset_out, bin_3, range_from_BP1, offset_from_BP1, range_from_RB2,
				   offset_from_RB2, bin_2, bin_1, dec_mode, readReg, total_used_bins);
	output [8:0]   	range_out;
	output [8:0] 	offset_out;
	output 			bin_3;
	
	reg [8:0]		range_out;
	reg [8:0]		offset_out;
	reg 			bin_3;	
	
	input [8:0]		range_from_BP1;
	input [8:0]		offset_from_BP1;
	input [8:0]		range_from_RB2;
	input [8:0]		offset_from_RB2;
	input 			bin_2;				//bypass decoder 1 output bin
	input 			bin_1;				//normal decoder 2 output bin
	input [2:0]		dec_mode;
	input [15:0]	readReg;	  
	input [3:0]		total_used_bins;
	
	reg [8:0]		range_new;
	reg [8:0]		offset_new;
	
	always @(range_from_BP1 or offset_from_BP1 or range_from_RB2 or offset_from_RB2 or 
		     bin_2 or bin_1 or dec_mode or readReg or total_used_bins)
	begin
		if(((dec_mode == 0) && (bin_1 == 0)) || ((dec_mode == 1) && (bin_2 == 1)))
			begin
				if((dec_mode == 0) && (bin_1 == 0))	//normal decoing process, sign
					begin 
						range_new = range_from_RB2;
						offset_new = offset_from_RB2;
						offset_new = offset_new << 1;
						offset_new[0] = readReg[total_used_bins];
					end	 
				else			 					//bypass decoding, prefix
					begin
						range_new  = range_from_BP1;
						offset_new = offset_from_BP1;
						offset_new = offset_new << 1;
						offset_new[0] = readReg[1];	//cause readReg[0] havn't been take out
					end	
					
				if(offset_new < range_new)
					begin
						bin_3 = 0;
					end			  
				else
					begin
						bin_3 = 1;
						offset_new = offset_new - range_new;
					end	
				range_out = range_new;
				offset_out = offset_new;	
			end	
	end	
	
endmodule	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -