hanjingyu2008的个人空间 https://blog.eetop.cn/219089 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

卷积计算

热度 3已有 1041 次阅读| 2019-2-28 19:25

卷积计算


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

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

卷积的基本过程如下:

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

ModelSim SE10.1a

Matlab  R2010a


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

 

2. 工作框图

 

 

 

 

3. 工作方式

系统内置3*34bit补码数的卷积核


外部输入6*68bit补码数


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

举例如下,对应第一个要进行卷积操作的数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

 

 

9. Matlab 验证

 

Matlab验证结果(Matlab_Verify.m

verilog输出吻合


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 6

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3128

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-23 00:15 , Processed in 0.016996 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部