随笔分类 -  Verilog

JPEG解码:反DCT变换(四)
摘要:反DCT变换的整个模块要经过2次矩阵相乘2次转秩,其实这两个矩阵相乘和转秩都是类似的,不同的是位宽有点区别,大同小异。反DCT变换的最顶层模块:idc 1 `timescale 1ps / 1ps 2 module idct ( 3 clk, 4 rst_n, 5 datain_en, 6 datain, 7 idct_dataout_en, 8 idct_dataout 9 );10 ... 阅读全文

posted @ 2012-03-24 15:38 @火枪手@ 阅读(1217) 评论(0) 推荐(0)

JPEG解码:反DCT变换(三)
摘要:2:矩阵的转秩在矩阵的相乘结束之后,要对矩阵转秩,转秩的效果就是行列转换。在此要用到2个ram,一个要做数据输入,另个用与数据输出。ram 1 `timescale 1ps / 1ps 2 module idct_ram ( 3 clk, 4 rst_n, 5 wr_rd, 6 datain, 7 wr_addr, 8 rd_addr, 9 ... 阅读全文

posted @ 2012-03-23 19:11 @火枪手@ 阅读(1288) 评论(0) 推荐(1)

JPEG解码:反DCT变换(二)
摘要:1:矩阵与矩阵的乘法运算。8*8与8*8的矩阵相乘,第一次来的8个数据依次与矩阵的A的第i列相乘的结果相加作为第一行的第i个数,第二次来的8个数与矩阵A的第i列相乘的结果相加做为第二行的第i 个数。依次类推,直到64个数全部都运算结束。由于每次来一个数,所以需要一个8位的移位寄存器来保存每次来的数,直到8个数都来齐,才开始于矩阵A相称,由于乘法涉及到有符号乘法,解决的办法为放缩的方法,把矩阵A的系数全部房贷2^16倍,就是把A的系数向右移16位,转化为整数,但是结果也要还原,即向左移16位。代码如下:shift 1 //------------------------------------- 阅读全文

posted @ 2012-03-23 14:29 @火枪手@ 阅读(1806) 评论(0) 推荐(1)

JPEG解码:反DCT变换(一)
摘要:DCT(Discrete Cosine Transform)离散余弦变换是一种经典谱分析方法,属于离散傅立叶变换的一种特殊情况,即在变换后的傅立叶级数中只包括余弦项,变化后的数据比较集中。经过DCT变换可以将图片从色彩域转换到频率域,将原始图像的信息块转化为代表不同频率分量的系数集。它是一种广泛使用的压缩方法,首先把每个单独的彩色图像分量分成8×8图像块,然后经过二维DCT变换,其低频分量都集中在左上角,高频分量分布在右下角。变换之后还是8×8的数据块,也就是说DCT变换本身并没有起到压缩数据的作用,但是它为以后的数据压缩奠定了必不可少的基础。经过DCT变换的数据有2个优点 阅读全文

posted @ 2012-03-22 03:36 @火枪手@ 阅读(8127) 评论(4) 推荐(0)

JPEG解码:反zig_zag变换
摘要:反量化模块就是对输入的64个数据进行重新排列,64个数据为8*8的数据,即8行8列。在进行编码的时候,DCT变换实际上是将图像从色彩域转向频频域,进过DCT变换的数据要经过量化,量化是实际上是对DCT系数的一个优化过程,它是利用人眼对高频部分不敏感的特性来实现数据的大幅度简化,具体操作时把频率域上的每个成分除以一个对于该成分的常数,去四舍五入接近的整数(已经在huffman解码模块实现反量化),是一种有损压缩。量化后的数据有个很大的特点,就是数列上的相邻点在图像上也是相邻的,还有个特点是直流分量对于交流分量来说要大,而且交流分量中含有大量的0,对于量化后的数据如何进行简化,从而再更大的进行数据 阅读全文

posted @ 2012-03-20 02:52 @火枪手@ 阅读(2674) 评论(4) 推荐(0)

JPEG解码:huffman解码
摘要:huffman解码是JPEG图片解码里面的关键步骤,也是最复杂的一步。在fsm模块中DHT状态下读取的不仅仅是huffman表,还有另外两个表,一个是存放1-16不同码长的最小编码的一个表,另一个是存放最小编码的地址的表。在huffman解码中需要用到这两个表,还有在本模块也集成了反量化模块。huffman解码的步骤:(1):判断解码数据的类型选择与之对应的表。(2):进行码长的判断。(3):计算DHT地址。(4):从DHT表中读取数据。(5):若为DC数据需要进行DPCM解码。对于一个huffman解码器应包含3个独立的存储器:(1):存放各个长度对应的最小编码。(2):存储各个长度对应码字 阅读全文

posted @ 2012-03-18 02:08 @火枪手@ 阅读(5207) 评论(3) 推荐(1)

JPEG解码:状态控制模块
摘要:状态控制模块主要是对JPEG图像组成的各个部分进行识别,并读取其中的有效信息。主要有以下几个模块:(1)图像开始(SOI),标识为FFD8,标志一副jpeg图像的开始。(2)图像识别信息(APP),标识为FFE0,可以读取图像的各种信息,比如XY像素单位,密度等。(3)量化表(DQT),标识为FFDB,一个AC量化表,一个DC量化表,每个量化表64个数据。(4)图像信息段(SOF),标识为FFCO,可以读取图片精度,图片高度,图片宽度等信息。(5)huffman表(DHT),标识为FFC4,读取4个huffman表数据,分别是亮度DC表,亮度AC表,色度DC表,色度AC表。(6)图像数据段(S 阅读全文

posted @ 2012-03-16 03:51 @火枪手@ 阅读(1898) 评论(1) 推荐(0)

JPEG解码:桶型寄存器
摘要:JPEG解码总共分为:桶型寄存器模块,状态控制模块,huffman解码模块,反量化模块,反zig_zag模块,反idct模块,色彩空间变换模块。桶型寄存器的作用是控制数据流和去除冗余。对于数据的控制是要求桶型存储器能读取数据的任何宽度,输出的数据给状态控制模块和huffman解码模块,状态控制模块要求输入的数据有两种,一种是8位,另一种是16位,huffman解码模块要求输入的数据为不定位数,huffman编码是不定位数的编码,所以在解码的时候事先不知道被解码数据的位数。冗余信息的产生是由于在编码非标志位的数据FF 时,必须在其后加上00,而产生了冗余信息00。所以再遇到FF00的时候必须去除 阅读全文

posted @ 2012-03-13 00:29 @火枪手@ 阅读(1776) 评论(2) 推荐(1)

VGA实验 :逻辑分析仪
摘要:经过了这么久,逻辑分析仪已经基本上完成了。一、功能:1、对采样得到的4路64位数据以波形的形式显示。2、支持9中采样频率:100M,50M,10M,2M,1M,500K,200K,100K,10K;3、支持三种采样模式:模式一,显示触发后64位数据,模式二:显示触发前后32位数据,模式三:显示触发前64位数据。4、支持边沿触发(上升沿和下降沿)的4路通道的逻辑组合,1000:通道0上升沿,其他通道下降沿。5、支持波形的放大和平移。二、器件:DE2开发板,芯片:cyclone II ep2c35f672c6三、模块划分:1、sys_ctrl 模块: 包括系统复位信号,例化PLL,输出clk_10 阅读全文

posted @ 2011-11-30 22:38 @火枪手@ 阅读(1920) 评论(1) 推荐(2)

VGA实验:显示字符
摘要:这个实验是在看了特权写的《深入浅出玩转FPGA》之后自己写的也算自己做一个小小的练习吧,目的是在屏幕上显示一行字:DIY 逻辑分析仪。由于试验中用到取字模的软件PCtoLCD2002,所以首先介绍下这个软件。软件的设置如上图。采用阴码格式,逐列扫面,高位在前的方式,所谓“高位在前”就是扫描图像的最先扫到的点放在前面,例如:**......八个像素点,*代表亮,.代表不亮,此时扫到的代码为:11000000,存到存储器中时候为:0xc0,所以当你要去从存储器中取数的时候应该先去取最高位。在程序中:rom_data[31-x].因为你去取第0个点的值的时候,它是存在存储器的最高位。我是把取出来的自 阅读全文

posted @ 2011-11-09 20:50 @火枪手@ 阅读(6350) 评论(5) 推荐(2)

VGA实验:点亮屏幕
摘要:要在屏幕上随意显示自己想要的东西,首先要做的是要点亮屏幕。这个实验的显示标准是640*480@60Hz,VGA控制模块的时钟频率为25MHz,实验主要包括三个模块:同步模块,VGA控制模块,PLL模块。本实验是基于DE2开发板,器件型号是:cyclone II ep2c35f672c6。这款器件的内部时钟是50MHz,所以需要一个PLL模块将50MHz分屏为25MHz。同步控制模块是控制显示标准,本实验为640*480,同时还向VGA控制模块提供坐标。VGA控制模块是设计的核心,控制屏幕的色彩。 1 module sync_module (clk_25m,rst_n,valid,hsync,v 阅读全文

posted @ 2011-11-08 16:45 @火枪手@ 阅读(1004) 评论(0) 推荐(2)

导航