卷积计算的verilog 实现

在这里插入图片描述

目录

1.问题分析
2.工作框图
3.工作方式
4.数据选取
5.文件说明
6.端口说明
7.工作说明
8.仿真说明
9.仿真结果
1)波形
2)Transcript
10.Matlab 验证

1. 问题分析

构造一个3 * 3的卷积核,并利用该卷积核完成与6*6矩阵的卷积运算,数据位宽8bit补码数, 结果位宽20bit补码数

卷积的基本过程如下:

对卷积核进行180度翻转(数据读写顺序的调度)将33卷积核的中心对准66矩阵的每个数进行对应数据乘累加得出结果,如此往复作业给出实现结构以及RTL代码

ModelSim SE10.1a

Matlab R2010a

输入数据补码8bit,实际有效7bit,输出数据补码20bit,实际有效19bit,卷积增加位数3*3=9,所以单个乘法最多增加19-7-9=3bit。所以卷积核采用3bit数,即4bit补码数。

2. 工作框图

在这里插入图片描述

在这里插入图片描述

3. 工作方式

系统内置3*3的4bit补码数的卷积核
在这里插入图片描述

外部输入6*6的8bit补码数
在这里插入图片描述

工作过程:系统将反转后的卷积核与上图某一深色数据和其周围一圈进行相乘并相加。直到所有深色部分均进行过卷积操作。

举例如下,对应第一个要进行卷积操作的数D22
在这里插入图片描述

O22= D11*C33 + D12*C32 + D13*C31输出数据为:
   + D21*C23 + D22*C22 + D23*C21
   + D31*C13 + D32*C12 + D33*C11

4. 数据选取

卷积核固定选取为:
在这里插入图片描述

输入数据为:(Data_input.txt 有符号16进制)
在这里插入图片描述

转换成10进制
在这里插入图片描述

5. 文件说明

在这里插入图片描述

6. 端口说明

在这里插入图片描述

7. 工作说明

每次启动后TB读取要卷积的数据,并将此数据传输给CONV,每次传输一个数据即8bit
CONV接收完数据后开始卷积
卷积结束后把数据传输给TB,每次传输一个数据即20bit
在这里插入图片描述

8. 仿真说明

在仿真前Transcript中命令:do wave.do加载预设波形
输出结果在Transcript中查看

9. 仿真结果

  1. 波形
    在这里插入图片描述

  2. Transcript
    在这里插入图片描述

10. Matlab 验证

Matlab验证结果(Matlab_Verify.m)
在这里插入图片描述

与verilog输出吻合

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值