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
目录
相关文章
|
机器学习/深度学习 算法 搜索推荐
基于FPGA的中值滤波算法的实现
中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值.
|
算法 计算机视觉 异构计算
基于FPGA的图像RGB转HSV实现,包含testbench和MATLAB辅助验证程序
基于FPGA的图像RGB转HSV实现,包含testbench和MATLAB辅助验证程序
|
存储 缓存 测试技术
ZYNQ-AXI Interconnect IP介绍
ZYNQ-AXI Interconnect IP介绍
3523 0
ZYNQ-AXI Interconnect IP介绍
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
人工智能 监控 算法
卷不过AI就驯服它!AI训练师速成攻略
这是一篇关于AI训练师职业的全面指南。文章从“驯服AI”的理念出发,将AI训练师比作“幼儿园老师”,详细描述了该职业的工作内容、入行技能要求、成长路径及工作日常。新手可以从基础的数据标注做起,逐步学习Python、数学知识和工具使用,通过三年计划实现职业进阶。文中还分享了摸鱼技巧、崩溃与高光时刻,以及避坑建议和未来转型方向。无论是在电商公司给商品打标签,还是训练医疗AI辅助诊断,这个职业都充满挑战与机遇。最后鼓励大家主动拥抱变化,把AI变成自己的左膀右臂,而非竞争对手。
3329 3
|
缓存 监控 安全
服务器荣获挖矿病毒,该如何处理?
【9月更文挑战第2天】若服务器不幸感染挖矿病毒,应立即断开网络连接,防止扩散;使用监控工具查找异常进程和文件,并全面扫描确认位置;谨慎删除病毒文件和进程,修复系统漏洞,安装最新补丁;加强安全防护,安装杀毒软件和防火墙,监控性能活动;最后从备份恢复数据,测试服务功能,确保正常运行。处理过程需谨慎耐心,强化安全管理。
1662 3
|
缓存 网络性能优化 SoC
ZYNQ-AXI_GP接口和AXI_HP接口的异同
ZYNQ-AXI_GP接口和AXI_HP接口的异同
1905 0
ZYNQ-AXI_GP接口和AXI_HP接口的异同
R语言中绘制箱形图的替代品:蜂群图和小提琴图
R语言中绘制箱形图的替代品:蜂群图和小提琴图
|
存储 算法 异构计算
基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证
|
算法 计算机视觉 异构计算
FPGA图像处理(高斯滤波)仿真篇
高斯滤波是一种低通平滑滤波,常用于模糊处理和减少噪声信号,其中模糊处理常用于预处理,即在提取目标之前去除图像中的一些细节等,这有利于高通处理。对于二维的数字图像信号,一般通过线性滤波器和非线性滤波器的模糊处理来减少强噪声信号。平滑滤波器就是用滤波掩模确定的邻域内的像素与加权值相卷积后得到的灰度均值来代替每个像素的值,这就很容易使用硬件实现。 GAUSS 滤波算法克服了边界效应,因而滤波后的图像较好。

热门文章

最新文章