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

📄 jpeg_hm_decode.v

📁 jpeg格式到bmp格式的硬件实现
💻 V
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------------// 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 + -