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

📄 jpeg_encoder.v

📁 fpga based jpge 压缩算法
💻 V
📖 第 1 页 / 共 2 页
字号:
		// fill quantization table (IN ZIG-ZAG ORDER !!!)		//		// quantization table list 1		qnt_list[00] <= 8'd16;		qnt_list[01] <= 8'd11;		qnt_list[02] <= 8'd12;		qnt_list[03] <= 8'd14;		qnt_list[04] <= 8'd12;		qnt_list[05] <= 8'd10;		qnt_list[06] <= 8'd16;		qnt_list[07] <= 8'd14;		qnt_list[08] <= 8'd13;		qnt_list[09] <= 8'd14;		qnt_list[10] <= 8'd18;		qnt_list[11] <= 8'd17;		qnt_list[12] <= 8'd16;		qnt_list[13] <= 8'd19;		qnt_list[14] <= 8'd24;		qnt_list[15] <= 8'd40;		qnt_list[16] <= 8'd26;		qnt_list[17] <= 8'd24;		qnt_list[18] <= 8'd22;		qnt_list[19] <= 8'd22;		qnt_list[20] <= 8'd24;		qnt_list[21] <= 8'd49;		qnt_list[22] <= 8'd35;		qnt_list[23] <= 8'd37;		qnt_list[24] <= 8'd29;		qnt_list[25] <= 8'd40;		qnt_list[26] <= 8'd58;		qnt_list[27] <= 8'd51;		qnt_list[28] <= 8'd61;		qnt_list[29] <= 8'd60;		qnt_list[30] <= 8'd57;		qnt_list[31] <= 8'd51;		qnt_list[32] <= 8'd56;		qnt_list[33] <= 8'd55;		qnt_list[34] <= 8'd64;		qnt_list[35] <= 8'd72;		qnt_list[36] <= 8'd92;		qnt_list[37] <= 8'd78;		qnt_list[38] <= 8'd64;		qnt_list[39] <= 8'd68;		qnt_list[40] <= 8'd87;		qnt_list[41] <= 8'd69;		qnt_list[42] <= 8'd55;		qnt_list[43] <= 8'd56;		qnt_list[44] <= 8'd80;		qnt_list[45] <= 8'd109;		qnt_list[46] <= 8'd81;		qnt_list[47] <= 8'd87;		qnt_list[48] <= 8'd95;		qnt_list[49] <= 8'd98;		qnt_list[50] <= 8'd103;		qnt_list[51] <= 8'd104;		qnt_list[52] <= 8'd103;		qnt_list[53] <= 8'd62;		qnt_list[54] <= 8'd77;		qnt_list[55] <= 8'd113;		qnt_list[56] <= 8'd121;		qnt_list[57] <= 8'd112;		qnt_list[58] <= 8'd100;		qnt_list[59] <= 8'd120;		qnt_list[60] <= 8'd92;		qnt_list[61] <= 8'd101;		qnt_list[62] <= 8'd103;		qnt_list[63] <= 8'd99;		//		// initial body		//		clk = 0; // start with low-level clock		rst = 0; // reset system		dstrb = 1'b0;		rst = #17 1'b1;		list_cnt = (input_lists_start -1) * 64;		// wait a while		repeat(20) @(posedge clk);		for(n=input_lists_start; n <= input_lists_end; n = n +1)		begin			// present dstrb			dstrb = #1 1'b1;			for(y=0; y<=7; y=y+1)			for(x=0; x<=7; x=x+1)			begin				@(posedge clk)				dstrb = #1 1'b0;				din = #1 input_list[list_cnt] -8'd128;				list_cnt = list_cnt +1;			end		end	endendmodule//// check outputs//module fdct_qnr_checker(clk, rst, dstrb, din);	parameter output_lists_start = 2;	parameter output_lists_end = 2;	//	// inputs	//	input clk;	input rst;	input dstrb;	input [10:0] din;	//	// variables	//	reg [10:0] output_list [(output_lists_end*64) -1:0];	integer x, y;	integer n, err_cnt;	integer list_cnt;	reg go;	//	// module body	//	always @(posedge clk)	  go <= #1 dstrb;	initial	begin	  //	  // fill output-table (IN ZIG-ZAG ORDER)	  //	  // output list 1	  output_list[00] <= 11'h00f;	  output_list[01] <= 11'h000;	  output_list[02] <= 11'h7fe;	  output_list[03] <= 11'h7ff;	  output_list[04] <= 11'h7ff;	  output_list[05] <= 11'h7ff;	  output_list[06] <= 11'h000;	  output_list[07] <= 11'h000;	  output_list[08] <= 11'h7ff;	  output_list[09] <= 11'h000;	  output_list[10] <= 11'h000;	  output_list[11] <= 11'h000;	  output_list[12] <= 11'h000;	  output_list[13] <= 11'h000;	  output_list[14] <= 11'h000;	  output_list[15] <= 11'h000;	  output_list[16] <= 11'h000;	  output_list[17] <= 11'h000;	  output_list[18] <= 11'h000;	  output_list[19] <= 11'h000;	  output_list[20] <= 11'h000;	  output_list[21] <= 11'h000;	  output_list[22] <= 11'h000;	  output_list[23] <= 11'h000;	  output_list[24] <= 11'h000;	  output_list[25] <= 11'h000;	  output_list[26] <= 11'h000;	  output_list[27] <= 11'h000;	  output_list[28] <= 11'h000;	  output_list[29] <= 11'h000;	  output_list[30] <= 11'h000;	  output_list[31] <= 11'h000;	  output_list[32] <= 11'h000;	  output_list[33] <= 11'h000;	  output_list[34] <= 11'h000;	  output_list[35] <= 11'h000;	  output_list[36] <= 11'h000;	  output_list[37] <= 11'h000;	  output_list[38] <= 11'h000;	  output_list[39] <= 11'h000;	  output_list[40] <= 11'h000;	  output_list[41] <= 11'h000;	  output_list[42] <= 11'h000;	  output_list[43] <= 11'h000;	  output_list[44] <= 11'h000;	  output_list[45] <= 11'h000;	  output_list[46] <= 11'h000;	  output_list[47] <= 11'h000;	  output_list[48] <= 11'h000;	  output_list[49] <= 11'h000;	  output_list[50] <= 11'h000;	  output_list[51] <= 11'h000;	  output_list[52] <= 11'h000;	  output_list[53] <= 11'h000;	  output_list[54] <= 11'h000;	  output_list[55] <= 11'h000;	  output_list[56] <= 11'h000;	  output_list[57] <= 11'h000;	  output_list[58] <= 11'h000;	  output_list[59] <= 11'h000;	  output_list[60] <= 11'h000;	  output_list[61] <= 11'h000;	  output_list[62] <= 11'h000;	  output_list[63] <= 11'h000;	  // output list 2	  output_list[064] <= 11'h7c0;	  output_list[065] <= 11'h000;	  output_list[066] <= 11'h000;	  output_list[067] <= 11'h000;	  output_list[068] <= 11'h000;	  output_list[069] <= 11'h000;	  output_list[070] <= 11'h000;	  output_list[071] <= 11'h000;	  output_list[072] <= 11'h000;	  output_list[073] <= 11'h000;	  output_list[074] <= 11'h000;	  output_list[075] <= 11'h000;	  output_list[076] <= 11'h000;	  output_list[077] <= 11'h000;	  output_list[078] <= 11'h000;	  output_list[079] <= 11'h000;	  output_list[080] <= 11'h000;	  output_list[081] <= 11'h000;	  output_list[082] <= 11'h000;	  output_list[083] <= 11'h000;	  output_list[084] <= 11'h000;	  output_list[085] <= 11'h000;	  output_list[086] <= 11'h000;	  output_list[087] <= 11'h000;	  output_list[088] <= 11'h000;	  output_list[089] <= 11'h000;	  output_list[090] <= 11'h000;	  output_list[091] <= 11'h000;	  output_list[092] <= 11'h000;	  output_list[093] <= 11'h000;	  output_list[094] <= 11'h000;	  output_list[095] <= 11'h000;	  output_list[096] <= 11'h000;	  output_list[097] <= 11'h000;	  output_list[098] <= 11'h000;	  output_list[099] <= 11'h000;	  output_list[100] <= 11'h000;	  output_list[101] <= 11'h000;	  output_list[102] <= 11'h000;	  output_list[103] <= 11'h000;	  output_list[104] <= 11'h000;	  output_list[105] <= 11'h000;	  output_list[106] <= 11'h000;	  output_list[107] <= 11'h000;	  output_list[108] <= 11'h000;	  output_list[109] <= 11'h000;	  output_list[110] <= 11'h000;	  output_list[111] <= 11'h000;	  output_list[112] <= 11'h000;	  output_list[113] <= 11'h000;	  output_list[114] <= 11'h000;	  output_list[115] <= 11'h000;	  output_list[116] <= 11'h000;	  output_list[117] <= 11'h000;	  output_list[118] <= 11'h000;	  output_list[119] <= 11'h000;	  output_list[120] <= 11'h000;	  output_list[121] <= 11'h000;	  output_list[122] <= 11'h000;	  output_list[123] <= 11'h000;	  output_list[124] <= 11'h000;	  output_list[125] <= 11'h000;	  output_list[126] <= 11'h000;	  output_list[127] <= 11'h000;	  // output list 3	  output_list[128] <= 11'h005;	  output_list[129] <= 11'h002;	  output_list[130] <= 11'h7eb;	  output_list[131] <= 11'h7f8;	  output_list[132] <= 11'h000;	  output_list[133] <= 11'h000;	  output_list[134] <= 11'h000;	  output_list[135] <= 11'h000;	  output_list[136] <= 11'h000;	  output_list[137] <= 11'h7fd;	  output_list[138] <= 11'h000;	  output_list[139] <= 11'h000;	  output_list[140] <= 11'h000;	  output_list[141] <= 11'h000;	  output_list[142] <= 11'h000;	  output_list[143] <= 11'h000;	  output_list[144] <= 11'h000;	  output_list[145] <= 11'h000;	  output_list[146] <= 11'h000;	  output_list[147] <= 11'h000;	  output_list[148] <= 11'h000;	  output_list[149] <= 11'h000;	  output_list[150] <= 11'h000;	  output_list[151] <= 11'h000;	  output_list[152] <= 11'h000;	  output_list[153] <= 11'h000;	  output_list[154] <= 11'h000;	  output_list[155] <= 11'h000;	  output_list[156] <= 11'h000;	  output_list[157] <= 11'h000;	  output_list[158] <= 11'h000;	  output_list[159] <= 11'h000;	  output_list[160] <= 11'h000;	  output_list[161] <= 11'h000;	  output_list[162] <= 11'h000;	  output_list[163] <= 11'h000;	  output_list[164] <= 11'h000;	  output_list[165] <= 11'h000;	  output_list[166] <= 11'h000;	  output_list[167] <= 11'h000;	  output_list[168] <= 11'h000;	  output_list[169] <= 11'h000;	  output_list[170] <= 11'h000;	  output_list[171] <= 11'h000;	  output_list[172] <= 11'h000;	  output_list[173] <= 11'h000;	  output_list[174] <= 11'h000;	  output_list[175] <= 11'h000;	  output_list[176] <= 11'h000;	  output_list[177] <= 11'h000;	  output_list[178] <= 11'h000;	  output_list[179] <= 11'h000;	  output_list[180] <= 11'h000;	  output_list[181] <= 11'h000;	  output_list[182] <= 11'h000;	  output_list[183] <= 11'h000;	  output_list[184] <= 11'h000;	  output_list[185] <= 11'h000;	  output_list[186] <= 11'h000;	  output_list[187] <= 11'h000;	  output_list[188] <= 11'h000;	  output_list[189] <= 11'h000;	  output_list[190] <= 11'h000;	  output_list[191] <= 11'h000;	  // output list 4	  output_list[192] <= 11'h7fc;	  output_list[193] <= 11'h00e;	  output_list[194] <= 11'h005;	  output_list[195] <= 11'h005;	  output_list[196] <= 11'h7ff;	  output_list[197] <= 11'h002;	  output_list[198] <= 11'h001;	  output_list[199] <= 11'h003;	  output_list[200] <= 11'h7fb;	  output_list[201] <= 11'h001;	  output_list[202] <= 11'h000;	  output_list[203] <= 11'h000;	  output_list[204] <= 11'h7fe;	  output_list[205] <= 11'h7fb;	  output_list[206] <= 11'h7ff;	  output_list[207] <= 11'h7ff;	  output_list[208] <= 11'h002;	  output_list[209] <= 11'h002;	  output_list[210] <= 11'h000;	  output_list[211] <= 11'h7ff;	  output_list[212] <= 11'h000;	  output_list[213] <= 11'h000;	  output_list[214] <= 11'h000;	  output_list[215] <= 11'h000;	  output_list[216] <= 11'h000;	  output_list[217] <= 11'h000;	  output_list[218] <= 11'h000;	  output_list[219] <= 11'h001;	  output_list[220] <= 11'h000;	  output_list[221] <= 11'h7ff;	  output_list[222] <= 11'h000;	  output_list[223] <= 11'h000;	  output_list[224] <= 11'h000;	  output_list[225] <= 11'h000;	  output_list[226] <= 11'h000;	  output_list[227] <= 11'h000;	  output_list[228] <= 11'h000;	  output_list[229] <= 11'h000;	  output_list[230] <= 11'h000;	  output_list[231] <= 11'h000;	  output_list[232] <= 11'h000;	  output_list[233] <= 11'h000;	  output_list[234] <= 11'h000;	  output_list[235] <= 11'h000;	  output_list[236] <= 11'h000;	  output_list[237] <= 11'h000;	  output_list[238] <= 11'h000;	  output_list[239] <= 11'h000;	  output_list[240] <= 11'h000;	  output_list[241] <= 11'h000;	  output_list[242] <= 11'h000;	  output_list[243] <= 11'h000;	  output_list[244] <= 11'h000;	  output_list[245] <= 11'h000;	  output_list[246] <= 11'h000;	  output_list[247] <= 11'h000;	  output_list[248] <= 11'h000;	  output_list[249] <= 11'h000;	  output_list[250] <= 11'h000;	  output_list[251] <= 11'h000;	  output_list[252] <= 11'h000;	  output_list[253] <= 11'h000;	  output_list[254] <= 11'h000;	  output_list[255] <= 11'h000;	  //	  // checker body	  //	  list_cnt = (output_lists_start -1) * 64;	  // wait for 'rst' signal to negate	  while (rst !== 1'b1) #1;	  $display("*");	  $display("* Verifying FDCT & Quantization/rounding unit");	  $display("*");	  err_cnt = 0;	  for(n=output_lists_start; n <= output_lists_end; n = n +1)	  begin	      $display("\n* verifying input-list %d", n);	      // wait for 'den' signal	      while (!go) @(posedge clk);	      for(y=0; y<=7; y=y+1)	         for(x=0; x<=7; x=x+1)	            begin	                if (din !== output_list[list_cnt])	                   begin	                       $display("Data compare error, received %h, expected %h. %d",	                                 din, output_list[list_cnt], y*8 +x);	                       err_cnt = err_cnt +1;	                   end	                list_cnt = list_cnt +1;	                @(posedge clk);	            end	  end	  repeat(150) @(posedge clk);	  $display("\nTotal errors: %d", err_cnt);	  $stop;	endendmodule

⌨️ 快捷键说明

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