📄 jpeg_hm_decode.v
字号:
//---------------------------------------------------------------------------// File Name : jpeg_hm_decode.v// Module Name : jpeg_hm_decode// Description : Decode of Haffuman data// Project : JPEG Decoder// Belong to : // Author : H.Ishihara// E-Mail : hidemi@sweetcafe.jp// HomePage : http://www.sweetcafe.jp/// Date : 2006/10/01// Rev. : 1.1//---------------------------------------------------------------------------// Rev. Date Description//---------------------------------------------------------------------------// 1.01 2006/10/01 1st Release// 1.02 2006/10/04 move for a comment widh OutData,OutDhtNumber register.// remove a ProcessColorNumber,tempPlace register.//---------------------------------------------------------------------------// $Id: //---------------------------------------------------------------------------`timescale 1ps / 1psmodule jpeg_hm_decode ( rst, // Reset clk, // Clock // Haffuman Table HaffumanTableEnable, // Table Data In Enable HaffumanTableColor, // Haffuman Table Color Number HaffumanTableCount, // Table Number HaffumanTableCode, // Haffuman Table Code HaffumanTableStart, // Haffuman Table Start Number // Haffuman Decode DataInRun, // Data In Start DataInEnable, // Data In Enable DataIn, // Data In // DHT table DhtColor, // Color Number DhtNumber, // Decode Dht Number DhtZero, // Zero Count of Dht Number DhtWidth, // Data Width of Dht Number // DQT Table DqtColor, // Color Number DqtNumber, // Dqt Number DqtData, // Dqt Data // DataOutIdle, DataOutEnable, DataOutColor, // Output decode data DecodeUseBit, // Used Data Bit DecodeUseWidth, // Used Data Width DecodeEnable, // Data Out Enable DecodeColor, // Data Out Enable DecodeCount, // Data Out Enable DecodeZero, // Data Out with Zero Count DecodeCode // Data Out with Code ); //-------------------------------------------------------------------------- // Input/Output //-------------------------------------------------------------------------- input rst,clk; // Reset and Clock input HaffumanTableEnable; // Table Data In Enable input [1:0] HaffumanTableColor; input [3:0] HaffumanTableCount; // Table Number input [15:0] HaffumanTableCode; // Haffuman Table Data input [7:0] HaffumanTableStart; // Haffuman Table Start Number input DataInRun; input DataInEnable; // Data In Enable input [31:0] DataIn; // Data In output [1:0] DhtColor; output [7:0] DhtNumber; // Decode Dht Number input [3:0] DhtZero; // Zero Count of Dht Number input [3:0] DhtWidth; // Data Width of Dht Number output DqtColor; output [5:0] DqtNumber; input [7:0] DqtData; input DataOutIdle; output DataOutEnable; output [2:0] DataOutColor; output DecodeUseBit; output [6:0] DecodeUseWidth; // Used Data Width output DecodeEnable; // Data Out Enable output [2:0] DecodeColor; output [5:0] DecodeCount; output [3:0] DecodeZero; // Data Out with Zero Count output [15:0] DecodeCode; // Data Out with Code //-------------------------------------------------------------------------- // Register Haffuman Table(YCbCr) //-------------------------------------------------------------------------- // Y-DC Haffuman Table reg [15:0] HaffumanTable0r [0:15]; // Y-DC Haffuman Table reg [15:0] HaffumanTable1r [0:15]; // Y-AC Haffuman Table reg [15:0] HaffumanTable2r [0:15]; // C-DC Haffuman Table reg [15:0] HaffumanTable3r [0:15]; // C-AC Haffuman Table reg [15:0] HaffumanNumber0r [0:15]; // Y-DC Haffuman Number reg [15:0] HaffumanNumber1r [0:15]; // Y-AC Haffuman Number reg [15:0] HaffumanNumber2r [0:15]; // C-DC Haffuman Number reg [15:0] HaffumanNumber3r [0:15]; // C-AC Haffuman Number integer i; always @(posedge clk or negedge rst) begin if(!rst) begin HaffumanTable0r[0] <= 16'h0000; HaffumanNumber0r[0] <= 8'h00; HaffumanTable1r[0] <= 16'h0000; HaffumanNumber1r[0] <= 8'h00; HaffumanTable2r[0] <= 16'h0000; HaffumanNumber2r[0] <= 8'h00; HaffumanTable3r[0] <= 16'h0000; HaffumanNumber3r[0] <= 8'h00; HaffumanTable0r[1] <= 16'h0000; HaffumanNumber0r[1] <= 8'h00; HaffumanTable1r[1] <= 16'h0000; HaffumanNumber1r[1] <= 8'h00; HaffumanTable2r[1] <= 16'h0000; HaffumanNumber2r[1] <= 8'h00; HaffumanTable3r[1] <= 16'h0000; HaffumanNumber3r[1] <= 8'h00; HaffumanTable0r[2] <= 16'h0000; HaffumanNumber0r[2] <= 8'h00; HaffumanTable1r[2] <= 16'h0000; HaffumanNumber1r[2] <= 8'h00; HaffumanTable2r[2] <= 16'h0000; HaffumanNumber2r[2] <= 8'h00; HaffumanTable3r[2] <= 16'h0000; HaffumanNumber3r[2] <= 8'h00; HaffumanTable0r[3] <= 16'h0000; HaffumanNumber0r[3] <= 8'h00; HaffumanTable1r[3] <= 16'h0000; HaffumanNumber1r[3] <= 8'h00; HaffumanTable2r[3] <= 16'h0000; HaffumanNumber2r[3] <= 8'h00; HaffumanTable3r[3] <= 16'h0000; HaffumanNumber3r[3] <= 8'h00; HaffumanTable0r[4] <= 16'h0000; HaffumanNumber0r[4] <= 8'h00; HaffumanTable1r[4] <= 16'h0000; HaffumanNumber1r[4] <= 8'h00; HaffumanTable2r[4] <= 16'h0000; HaffumanNumber2r[4] <= 8'h00; HaffumanTable3r[4] <= 16'h0000; HaffumanNumber3r[4] <= 8'h00; HaffumanTable0r[5] <= 16'h0000; HaffumanNumber0r[5] <= 8'h00; HaffumanTable1r[5] <= 16'h0000; HaffumanNumber1r[5] <= 8'h00; HaffumanTable2r[5] <= 16'h0000; HaffumanNumber2r[5] <= 8'h00; HaffumanTable3r[5] <= 16'h0000; HaffumanNumber3r[5] <= 8'h00; HaffumanTable0r[6] <= 16'h0000; HaffumanNumber0r[6] <= 8'h00; HaffumanTable1r[6] <= 16'h0000; HaffumanNumber1r[6] <= 8'h00; HaffumanTable2r[6] <= 16'h0000; HaffumanNumber2r[6] <= 8'h00; HaffumanTable3r[6] <= 16'h0000; HaffumanNumber3r[6] <= 8'h00; HaffumanTable0r[7] <= 16'h0000; HaffumanNumber0r[7] <= 8'h00; HaffumanTable1r[7] <= 16'h0000; HaffumanNumber1r[7] <= 8'h00; HaffumanTable2r[7] <= 16'h0000; HaffumanNumber2r[7] <= 8'h00; HaffumanTable3r[7] <= 16'h0000; HaffumanNumber3r[7] <= 8'h00; HaffumanTable0r[8] <= 16'h0000; HaffumanNumber0r[8] <= 8'h00; HaffumanTable1r[8] <= 16'h0000; HaffumanNumber1r[8] <= 8'h00; HaffumanTable2r[8] <= 16'h0000; HaffumanNumber2r[8] <= 8'h00; HaffumanTable3r[8] <= 16'h0000; HaffumanNumber3r[8] <= 8'h00; HaffumanTable0r[9] <= 16'h0000; HaffumanNumber0r[9] <= 8'h00; HaffumanTable1r[9] <= 16'h0000; HaffumanNumber1r[9] <= 8'h00; HaffumanTable2r[9] <= 16'h0000; HaffumanNumber2r[9] <= 8'h00; HaffumanTable3r[9] <= 16'h0000; HaffumanNumber3r[9] <= 8'h00; HaffumanTable0r[10] <= 16'h0000; HaffumanNumber0r[10] <= 8'h00; HaffumanTable1r[10] <= 16'h0000; HaffumanNumber1r[10] <= 8'h00; HaffumanTable2r[10] <= 16'h0000; HaffumanNumber2r[10] <= 8'h00; HaffumanTable3r[10] <= 16'h0000; HaffumanNumber3r[10] <= 8'h00; HaffumanTable0r[11] <= 16'h0000; HaffumanNumber0r[11] <= 8'h00; HaffumanTable1r[11] <= 16'h0000; HaffumanNumber1r[11] <= 8'h00; HaffumanTable2r[11] <= 16'h0000; HaffumanNumber2r[11] <= 8'h00; HaffumanTable3r[11] <= 16'h0000; HaffumanNumber3r[11] <= 8'h00; HaffumanTable0r[12] <= 16'h0000; HaffumanNumber0r[12] <= 8'h00; HaffumanTable1r[12] <= 16'h0000; HaffumanNumber1r[12] <= 8'h00; HaffumanTable2r[12] <= 16'h0000; HaffumanNumber2r[12] <= 8'h00; HaffumanTable3r[12] <= 16'h0000; HaffumanNumber3r[12] <= 8'h00; HaffumanTable0r[13] <= 16'h0000; HaffumanNumber0r[13] <= 8'h00; HaffumanTable1r[13] <= 16'h0000; HaffumanNumber1r[13] <= 8'h00; HaffumanTable2r[13] <= 16'h0000; HaffumanNumber2r[13] <= 8'h00; HaffumanTable3r[13] <= 16'h0000; HaffumanNumber3r[13] <= 8'h00; HaffumanTable0r[14] <= 16'h0000; HaffumanNumber0r[14] <= 8'h00; HaffumanTable1r[14] <= 16'h0000; HaffumanNumber1r[14] <= 8'h00; HaffumanTable2r[14] <= 16'h0000; HaffumanNumber2r[14] <= 8'h00; HaffumanTable3r[14] <= 16'h0000; HaffumanNumber3r[14] <= 8'h00; HaffumanTable0r[15] <= 16'h0000; HaffumanNumber0r[15] <= 8'h00; HaffumanTable1r[15] <= 16'h0000; HaffumanNumber1r[15] <= 8'h00; HaffumanTable2r[15] <= 16'h0000; HaffumanNumber2r[15] <= 8'h00; HaffumanTable3r[15] <= 16'h0000; HaffumanNumber3r[15] <= 8'h00; end else begin // if (!rst) if(HaffumanTableEnable ==2'b1) begin if(HaffumanTableColor ==2'b00) begin HaffumanTable0r[HaffumanTableCount] <= HaffumanTableCode; HaffumanNumber0r[HaffumanTableCount] <= HaffumanTableStart; end else if(HaffumanTableColor ==2'b01) begin HaffumanTable1r[HaffumanTableCount] <= HaffumanTableCode; HaffumanNumber1r[HaffumanTableCount] <= HaffumanTableStart; end else if(HaffumanTableColor ==2'b10) begin HaffumanTable2r[HaffumanTableCount] <= HaffumanTableCode; HaffumanNumber2r[HaffumanTableCount] <= HaffumanTableStart; end else begin HaffumanTable3r[HaffumanTableCount] <= HaffumanTableCode; HaffumanNumber3r[HaffumanTableCount] <= HaffumanTableStart; end end // if (HaffumanTableEnable ==2'b1) end // else: !if(!rst) end // always @ (posedge clk or negedge rst) //-------------------------------------------------------------------------- // Decode Process //-------------------------------------------------------------------------- reg [3:0] Process; // Process State reg [31:0] ProcessData; // Data
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -