Verilog实现简单的卷积计算!分模块说明,简单易懂

同步发布于个人博客

简要说明

使用Verilog实现核大小为3*3的简单卷积。

计算作用的图像来自MNIST数据集(自行查阅),图像大小为28*28,像素为8bit,长这样:

digit_1

图像的像素点很少可以直接存入BRAM中:图像按行顺序展开为一行784个的8bit数,然后用coe文件存入Vivado提供的ROM中。卷积计算的结果为26*26大小的数组,按行展开存入RAM中。

注:因为只是简单尝试实现卷积,没有过于考虑速度和资源消耗

模块设计

rom

用于存储图像,使用BRAM IP核

在Vivado中操作:

  • 选择类型为单端口ROM

image-20241218154943397

  • 设置数据位宽和地址深度,设置总是使能
  • 注意:不使用输出寄存器。输出寄存器会导致时许偏移,详细自行查阅

image-20241218154910151

  • 设置coe文件初始化ROM

image-20241218154828555

  • 打包一下

    `timescale 1ns / 1ps
    
    module rom (
        input in_clk,
        input [9:0] in_rom_addr,
    
        output [7:0] out_rom_data
    );
    
        rom_gen_0 u_rom1 (
            .clka(in_clk),
            .addra(in_rom_addr),
            .douta(out_rom_data)
        );
    
    endmodule
    

image_read

从存储图像的ROM中读取用于卷积计算的9个像素点

端口配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值