FPGA-3X3矩阵的生成

简介: FPGA-3X3矩阵的生成

这里的话我用的是vivado的开发工具

配置shift ram可以实现两行数据的移位,

那再串上一行就可以实现说行数据的移位功能

配置下图:

image.png

其他的默认就行,这里我因为是对200*200 *8bit图片数据的进行处理,所以就主要把 位宽和深度定义为自己想要的就好了

moduleShift_RAM_3X3(
//globalsignalsinputclk,                        
inputrst_n,                          
//Imagedataprepredtobeprocessdinputper_clken,//PreparedImagedataoutput/captureenableclockinput           [7:0]   per_img_Y,//PreparedImagebrightnessinput//Imagedatahasbeenprocessdoutputmatrix_clken,   //PreparedImagedataoutput/captureenableclockoutputreg     [7:0]   matrix_p11,                     
outputreg     [7:0]   matrix_p12,                     
outputreg     [7:0]   matrix_p13, //3X3Matrixoutputoutputreg     [7:0]   matrix_p21,                     
outputreg     [7:0]   matrix_p22,                     
outputreg     [7:0]   matrix_p23,                     
outputreg     [7:0]   matrix_p31,                     
outputreg     [7:0]   matrix_p32,                     
outputreg     [7:0]   matrix_p33    );
//----------------------------------------------//consume1clkwire    [7:0]   row1_data;//framedataofthe1throwwire    [7:0]   row2_data;//framedataofthe2throwreg     [7:0]   row3_data;//framedataofthe3throwalways@(posedgeclkornegedgerst_n)beginif(!rst_n)
row3_data<=8'b0;elsebeginif(per_clken)
row3_data<=per_img_Y;
elserow3_data<=row3_data;
endend//----------------------------------------------------------//moduleofshiftramforrowdatawireshift_clk_en=per_clken;
//Shift_RAM_3X3_8bit1Shift_RAM_3X3_8bitu1_Shift_RAM_3X3_8bit (
  .D(row3_data),        //inputwire [7 : 0] D  .CLK(shift_clk_en),    //inputwireCLK  .SCLR(~rst_n),  //inputwireSCLR  .Q(row2_data)        //outputwire [7 : 0] Q);
//Shift_RAM_3X3_8bit2Shift_RAM_3X3_8bitu2_Shift_RAM_3X3_8bit (
  .D(row2_data),        //inputwire [7 : 0] D  .CLK(shift_clk_en),    //inputwireCLK  .SCLR(~rst_n),  //inputwireSCLR  .Q(row1_data)        //outputwire [7 : 0] Q);
//-------------------------------------------//per_clkendelay3clkreg     [1:0]   per_clken_r;
always@(posedgeclkornegedgerst_n)beginif(!rst_n)
per_clken_r<=2'b0;elseper_clken_r<= {per_clken_r[0], per_clken};  
endwireread_clken=per_clken_r[0];
assignmatrix_clken=per_clken_r[1];
//---------------------------------------------------------------------/****************************************(1)readdatafromshift_RAM(2)caulatethesobel(3)steadydataaftersobelgenerate******************************************///wire  [23:0]  matrix_row1= {matrix_p11, matrix_p12,matrix_p13};//justfortest//wire  [23:0]  matrix_row2= {matrix_p21, matrix_p22,matrix_p23};
//wire  [23:0]  matrix_row3= {matrix_p31, matrix_p32,matrix_p33};
always@(posedgeclkornegedgerst_n)beginif(!rst_n)begin        {matrix_p11, matrix_p12, matrix_p13} <=24'h0;        {matrix_p21, matrix_p22, matrix_p23} <=24'h0;        {matrix_p31, matrix_p32, matrix_p33} <=24'h0;end//elseif(read_frame_href)beginelseif(read_clken)begin//shift_RAMdatareadclockenbale            {matrix_p11, matrix_p12, matrix_p13} <= {matrix_p12, matrix_p13, row1_data};//1thshiftinput            {matrix_p21, matrix_p22, matrix_p23} <= {matrix_p22, matrix_p23, row2_data};//2thshiftinput            {matrix_p31, matrix_p32, matrix_p33} <= {matrix_p32, matrix_p33, row3_data};//3thshiftinputendelsebegin        {matrix_p11, matrix_p12, matrix_p13} <= {matrix_p11, matrix_p12, matrix_p13};
        {matrix_p21, matrix_p22, matrix_p23} <= {matrix_p21, matrix_p22, matrix_p23};
        {matrix_p31, matrix_p32, matrix_p33} <= {matrix_p31, matrix_p32, matrix_p33};
end//end/*elsebegin        {matrix_p11, matrix_p12, matrix_p13} <=24'h0;        {matrix_p21, matrix_p22, matrix_p23} <=24'h0;        {matrix_p31, matrix_p32, matrix_p33} <=24'h0;end*/endendmodule
目录
相关文章
|
8月前
|
存储 算法 计算机视觉
FPGA上实现低通滤波器
FPGA上实现低通滤波器
149 0
|
8月前
|
存储 编解码 算法
没有DSP的浮点单元不能进行浮点运算?
没有DSP的浮点单元不能进行浮点运算?
|
机器学习/深度学习 算法 搜索推荐
基于FPGA的中值滤波算法的实现
中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值.
|
7月前
|
存储 算法 计算机视觉
m基于FPGA的FIR低通滤波器实现和FPGA频谱分析,包含testbench和滤波器系数MATLAB计算程序
在Vivado 2019.2平台上开发的系统,展示了数字低通滤波器和频谱分析的FPGA实现。仿真结果显示滤波效果良好,与MATLAB仿真结果一致。设计基于FPGA的FIR滤波器,利用并行处理和流水线技术提高效率。频谱分析通过离散傅里叶变换实现。提供了Verilog核心程序以示例模块工作原理。
65 4
|
8月前
|
存储 异构计算
在FPGA上实现高通滤波器
在FPGA上实现高通滤波器
|
8月前
|
存储 缓存 算法
基于FPGA的二维DCT变换和逆变换verilog实现,包含testbench
基于FPGA的二维DCT变换和逆变换verilog实现,包含testbench
|
8月前
|
机器学习/深度学习 存储 缓存
窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算
窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算
71 0
|
算法 异构计算
基于FPGA的FFT变换和反变换实现,使用IP核设计,包含testbench
基于FPGA的FFT变换和反变换实现,使用IP核设计,包含testbench
324 0
|
算法 异构计算
m基于FPGA的积分梳状CIC滤波器verilog设计
m基于FPGA的积分梳状CIC滤波器verilog设计
198 0
m基于FPGA的积分梳状CIC滤波器verilog设计
|
存储 人工智能 BI
数字信号处理-05- FPGA常用运算模块-复数乘法器(二)
数字信号处理-05- FPGA常用运算模块-复数乘法器
760 0
数字信号处理-05- FPGA常用运算模块-复数乘法器(二)