首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于单片SRAM和FPGA的红外图像显示的设计及实现
来源:本站整理  作者:佚名  2011-09-23 10:37:00




//SRAM写使能
always @(posedge SRAM_CLK)
    if (!rst_n | (sram_write_counter==319))
    ui_sram_write <= 0;
    else if(LVAL_fallage)
    ui_sram_write <= 1;//SRAM写地址切换
    always @(posedge SRAM_CLK)
    if (!rst_n | Hsync_odd_riseage)
      ui_sram_write_add <= 0;//起始地址
    else if (ui_sram_write)
      ui_sram_write_add <= ui_sram_write_add + 1;
    SRAM的写使能设计要避免与SRAM的读使能冲突。本方案在FIFO_OUT模块上设计了一个可编程空标志位program_empty,当fifo数据不足160个时,program_empty置高,PAL制式视频的行扫描周期为64μs,也就是FIFO_OUT每64 μs被读一次(一次读出320个数),这样只要在64 μs时间内能够写入320个数就可以保证下次行扫描能够从FIFO_OUT取出数据。由于本系统中SRAM的写使能周期为16.5 μs,因此本方案是将SRAM读状态分2种情况,在FVAL信号有效期间,采用program_empty置高和SRAM的写使能下降沿的“与”操作作为SRAM读触发信号;在FVAL信号无效期间,SRAM无写控制,program_empty信号的上升沿将作为SRAM的读触发信号。然后根据读触发信号生成一个320的计数器,并在计数器有效期间将SRAM的读使能置为高。这样就能保证SRAM的读写不冲突,且数据也不会漏写,控制时序见图5。

    PAL制式视频显示分为奇场和偶场,因此在奇场时,SRAM的读地址应该满足:第n行地址范围为320×(n-1)~319+320×(n-1)(n=1,2……128);偶场时,RAM的读地址应该满足:第n行地址范围320×n~319+320×n(n=1,2……128),其读使能及读地址的FPGA主要代码如下:
//////// sram的读标志位有2种状态:(1)奇场数据有效时////用写sram的下降沿‘与’fifo半行标志位。(2)奇场数据无效时用 fifo半行标志位产生上升沿
    always @(posedge SRAM_CLK)
    if (!rst_n)
    ui_sram_read_flag <= 0;
    else begin
    if ((FVAL_d | ui_sram_write_5d)& Hsync_odd )
    ui_sram_read_flag <= ui_sram_write_fallage &
fifo_sram_adv7123_prom_empty_d;
    else
    ui_sram_read_flag<=fifo_sram_adv7123_prom_empty_riseage;
    end
////  SRAM读地址切换
    always @(posedge SRAM_CLK)
    if (!rst_n | Hsync_odd_riseage)
       ui_sram_read_add <= 0;//奇场起始地址
    else if (Hsync_odd_fallage)
        ui_sram_read_add <= 320;//偶场起始地址
    else if (ui_sram_read_fallage)
        ui_sram_read_add <= ui_sram_read_add+320;
    else if (ui_sram_read)
        ui_sram_read_add <= ui_sram_read_add+1;
    最后通过下面的赋值给出了SRAM芯片的读写、片选及地址信号:
assign SRAM_read_write_en=~(ui_sram_write & Hsync_odd);
//SRAM读写使能
assign SRAM_CE=~(ui_sram_read | ui_sram_write);
//SSRAM片选
assign SRAM_ADD=(ui_sram_write)?ui_sram_write_add:
ui_sram_read_add;//SSRAM地址
2.2.4 灰度拉伸
    将SRAM的读使能和读数据送入灰度拉伸模块作为数据使能和输入数据。本方案中,图像灰度线性拉伸算法表达式为:
    
    式(1)中:Y是拉伸后输出图像灰度值;X是SRAM中读出的数据,为原始图像16 bit二进制数灰度值;Xmin是输入图像数据直方图统计最小灰度值;Xmax是输入图像数据直方图统计最大灰度值。为保证精度,实际应用中将上述公式进行简单变换,可以记为:
    
    Q值在上帧结束前直方图统计模块已经得到,这样拉伸运算只需1次减法和乘法运算,得到积左移14 bit后,截取低10 bit就得到拉伸后的灰度值。需要注意的是,截取前要判定乘法是否溢出,如果溢出,结果置为最大灰度值210。本方案中主要通过调用乘法器IP核来完成乘法运算,不同硬件的乘法器延迟时间不同,所以必须要将输入数据使能信号作相应延迟后,成为输出使能与乘法器输出数据同步[3]。经过灰度拉伸后的图像数据送入FIFO_OUT模块用于图像显示,其中,灰度拉伸模块的输出使能及输出数据作为FIFO_OUT模块的输入使能和输入数据。
    该图像处理方案以FPGA 作为核心控制芯片,采用单片SRAM实现了图像预处理、数据缓存、图像存储及显示的功能。随着FPGA 性能的不断提高及其灵活的可编程性,设计者可以进一步在FPGA内部实现各种其他的图像处理算法。这样,直接采用FPGA和单片SRAM的方案不但减小了PCB 尺寸,降低了元件数量及PCB布线的难度,也降低了元件相互连线带来的信号失真,从而增加了可靠性和稳定性。本方案已成功应用在本单位的图像采集和处理产品中。
参考文献
[1] 田耘,胡彬,徐文波,等.Xilinx ISE Design Suite 10.x FPGA开发指南[M].北京:人民邮电出版社,2008.
[2] Xilinx Corporation.fifo_generator_ds317.http://www.xilinx.com,2005.
[3] Xilinx Corporation.Muli_gen_ds255.http://www.xilinx.com,2005.

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:22,582.03000 毫秒