【图像处理】FPGA实现linebuffer

    xiaoxiao2026-04-11  7

    我的目的是实现sobel edge detection,linebuffer是其中必不可少的一部分。

    linebuffer的实现如下:

    1. http://blog.csdn.net/lzy272942518/article/details/46660383, 这里的实现方法是用了经典的书《基于FPGA的嵌入式图像处理系统设计》,英文版

    下载链接:http://download.csdn.net/detail/lzy272942518/6949349

    但是这个博客里面的代码我尝试了,不成功,但是思路是很清晰的,值得我们看看 2. 第二种是基于altera的FPGA,运用其中的IP核可以直接生产,这是很棒的,但是我的xilinx里面没有可以移位linebuffer的IP核,所以自己写了以下的程序。 好吧 actually,也不是我写的,是我傍边的巴基斯坦男写的,他真的很厉害。   `timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 13:09:59 08/13/2016 // Design Name: // Module Name: shift_ram // Project Name: // Target Devices: // Tool versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // // module shift_ram( CLK, nRESET, data_in, data_out, Ready_DE ); input CLK; input nRESET; input Ready_DE; input [7:0]data_in; output [7:0]data_out; reg [7:0]ShiftRegister[0:647]; reg [9:0]i; always@(posedge CLK) begin if(Ready_DE) begin ShiftRegister[0] <= data_in; end else begin ShiftRegister[0] <= ShiftRegister[0]; end for (i = 1; i <= 647 ; i = i + 1) if(Ready_DE) begin ShiftRegister[i] <= ShiftRegister[i-1]; end else begin ShiftRegister[i] <= ShiftRegister[i]; end end assign data_out = ShiftRegister[647]; endmodule 在if语句中用了for语句进行循环,上面的647比较诡异,是因为我实现的是摄像头的处理,所以分辨率是648*494,如果大家用HDMI或者VGA的话,请参照各自的分辨率。 这样就可以实现linebuffer http://www.cnblogs.com/oomusou/archive/2008/08/25/verilog_sobel_edge_detector.html 真爱无双的博客 虽然程序很难用(因为早),但是很清晰的讲解了思路。值得借鉴

    转载请注明原文地址: https://ju.6miu.com/read-1308715.html
    最新回复(0)