首页 > 其他分享 >FPGA图像处理仿真:生成数据源的方法

FPGA图像处理仿真:生成数据源的方法

时间:2024-10-29 11:51:29浏览次数:6  
标签:cnt IMG FPGA 数据源 WIDTH 图像处理 total DATA reg

免责声明:本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。

读者在使用本文信息时,应自行验证其准确性和适用性,并对其使用结果负责。本文内容不构成专业技术咨询或建议,具体的技术实现和应用应根据实际情况和需要进行详细分析和验证。

本文所涉及的任何商标、版权或其他知识产权均属于其各自的所有者。若本文中引用了第三方的资料或信息,引用仅为学术交流目的,不构成对第三方内容的认可或保证。

若有任何疑问或需进一步信息,请联系本文作者或相关专业人士。


前言

本章将介绍如何在仿真中将图像转化为数据流。


一、定义变参

     parameter     IMG_W  = 640 ,//图像宽度
     parameter     IMG_H  = 480 ,//   高度
     parameter DATA_WIDTH = 64   //输出的位宽

二、定义模块接口

(
     input                        clk          ,
     input                        rst_n        ,
     output                       hsync        ,
     output                       vsync        ,
     output    [DATA_WIDTH-1:0]   data 
    );

三、定义图像存储矩阵并初始化

reg  [DATA_WIDTH-1:0] array [(IMG_W*IMG_H*8/DATA_WIDTH)-1:0];

initial 
    begin
	$readmemh("C:/Users/ROG/Desktop/INTR_PRJ/project_1/project_1.sim/480.txt",array);
    end

四、定义固参

localparam total_h =  IMG_W/(DATA_WIDTH/8) + 100 ;
localparam total_v =  IMG_H + 30 ;

注:多出来的行列用于图像消隐

五、逻辑设计

原理:通过两个计数器来产生hsync、vsync,以及矩阵索引index,最后打拍同步

reg  [31:0]  index   ;
reg  [15:0]  cnt_h   ;
reg  [15:0]  cnt_v   ;
reg          valid_h ;
reg          valid_v ;

always@(posedge clk or negedge rst_n)
   if(!rst_n)
        cnt_h <= 'd0;
   else if(cnt_h>=total_h-1)
        cnt_h <= 'd0;  
   else 
        cnt_h <= cnt_h + 1'b1;
        
always@(posedge clk or negedge rst_n)
   if(!rst_n)       
        cnt_v <= 'd0;
   else if(cnt_h>=total_h-1 && cnt_v>=total_v-1)  
        cnt_v <= 'd0;
   else if(cnt_h>=total_h-1)
        cnt_v <= cnt_v + 1'b1;
   else 
        cnt_v <= cnt_v;
        
always@(posedge clk or negedge rst_n)
   if(!rst_n)
         valid_h <= 1'd0;
   else if(cnt_h>(100-1))       
         valid_h <= 1'd1;
   else 
         valid_h <= 1'd0; 
        
always@(posedge clk or negedge rst_n)
   if(!rst_n)        
         valid_v <= 1'b0;
   else if(cnt_v>(30-1))  
         valid_v <= 1'b1;
   else 
         valid_v <= 1'b0;
        
always@(posedge clk or negedge rst_n)
   if(!rst_n) 
         index <= 'd0;
   else if(valid_v && valid_h)
           if(index==(IMG_W*IMG_H*8/DATA_WIDTH)-1)
                  index <= 'd0;
           else 
                  index <= index + 1'b1;
   else 
         index <= index;
    
    
always@(posedge clk or negedge rst_n)
   if(!rst_n) 
         vsync <= 1'b0;
   else 
         vsync <= valid_v; 

always@(posedge clk or negedge rst_n)
   if(!rst_n) 
        data <= 'd0;
   else if(valid_v && valid_h)
        data <= array[index];
   else 
        data <= 'd0;      
 
always@(posedge clk or negedge rst_n)
   if(!rst_n)     
        hsync <= 1'b0;
   else 
        hsync <= valid_v & valid_h;

六、仿真

注:TXT文件中的单个数据的长度需要与DATA_WIDTH一致,否则会出现数据不定态。


总结

再见

标签:cnt,IMG,FPGA,数据源,WIDTH,图像处理,total,DATA,reg
From: https://blog.csdn.net/qq_52538756/article/details/143320631

相关文章

  • FPGA实例——点亮led
    前言:Helloworld!这句代码大家都很熟悉吧,作为学习C语言的开始,逐渐的进入代码的世界。那么对于硬件来说,点灯也就是梦的开始,无论是单片机还是FPGA等等。有句话说得好,当你学会点灯的时候那么你就已经开始入门了哈哈哈。当然,硬件的话不比得软件,想要真正的入门还得通过不断地学习......
  • 图像处理领域的加速算子收集
    1、Simd库——CPU指令集加速算子 SimdLibraryDocumentation.部分算子截图: 2、VPI库——CPU、GPU(CUDA)加速算子 VPI-VisionProgrammingInterface:Algorithms部分算子截图: 3、CV-CUDA库算子 CV-CUDA—CV-CUDABetadocumentation部分算子截图: ......
  • FPGA秋招必看基础 | 什么是FPGA?
    关注......
  • 基于MATLAB的条形码的识别图像处理报告
    一、设计任务及要求3二、设计原理及设计方案3、条码译码原理3条码译码方案4三、设计步骤与结果10   设计步骤10   结果分析11四、课程设计总结15五、心得体会15六、参考文献16附录一、源程序17附录二、成绩评定表25设计任务及要求......
  • 一个包含了超过 200 个实用脚本的 Python 脚本库,如文件管理、网络操作、图像处理、文
    前言在日常的工作和生活中,我们经常会遇到一些重复性的任务,如文件管理、网络cao作、图像处理、文本处理等。这些任务虽然简单,但如果频繁手动cao作,不仅耗时耗力,还容易出错。现有的软件虽然能处理一部分问题,但往往功能单一,无法满足多样化的需求。那么,有没有一款软件能够处理这种......
  • 图像处理的实现与应用(Elixir 版)
    图像处理在现代应用程序中变得越来越重要。本文将使用Elixir实现一些基本的图像处理操作,包括灰度转换、去除边框和图像分割。我们将使用Mogrify库,它是一个强大的图像处理库,基于ImageMagick。环境准备首先,确保你已经安装了Elixir和ImageMagick。然后,在你的项目中添加mog......
  • 图像处理的实现与应用(Nim 版)
    图像处理在计算机视觉和图形设计中具有重要的应用价值。本文将使用Nim编写一些基本的图像处理操作,包括灰度转换、去除边框和图像分割。环境准备确保你的Nim环境已安装好,并安装nimimage库。可以通过以下命令安装:bashnimbleinstallnimimage加载图像首先,定义一个加载图......
  • 在图像处理中,散度 div 具体的作用是什么
    在图像处理中,散度(divergence)通常用于量化一个向量场中的向量是如何相互远离或靠近的。图像可被视为矢量场,每一个像素点具有一定的矢量值,这些像素点的向量值可代表了不同的图像特性,如边缘、纹理等。在图像处理的环境下,散度在检测图像特征、边缘检测、图像分割以及光流估计等方面扮......
  • 图像处理的实现与应用(Ada 版)
    图像处理在许多应用中都发挥着重要作用,本文将使用Ada编写一些基本的图像处理操作,包括灰度转换和图像分割。环境准备确保你已经安装了Ada编译器,如GNAT,并安装了相应的图像处理库,比如GdkPixbuf。你可能需要在你的系统中安装相应的开发工具。加载图像首先,我们定义一个加载图......
  • 图像处理的实现与应用(Go 版)
    图像处理在计算机视觉和图形设计中扮演着重要角色。本文将使用Go语言实现一些基本的图像处理操作,包括灰度转换、去除边框、提取有效区域和图像分割。环境准备确保你的Go环境已安装好。在项目中无需额外依赖,因为我们将使用Go的标准库。加载图像使用Go的image和image......