深度卷积神经网络的数字实现——二维卷积的纯数字电路实现(二)

本文介绍了如何在数字电路中实现深度卷积神经网络(DCNN)的二维卷积,详细阐述了包括乘法器、weight管理、加法器、打拍子模块、卷积操作子模块、单通道全卷积模块、全卷积池化激活模块和截位模块在内的数字模块设计方案。各模块功能、接口定义和实现方案逐一解析,旨在展示从理论到实践的DCNN数字实现过程。
摘要由CSDN通过智能技术生成

继第一篇卷积神经网络博客,这里继续更新后文。

3 数字模块实现方案

3.1 总体模块

总体模块不做过多说明,详细请看各底层子模块的介绍。

在这里插入图片描述

3.1.1 接口定义

在这里插入图片描述

3.2 乘法器子模块

3.2.1 模块功能

实现两个8位有符号数之间的乘法,并输出一个16位的数据。对输出结果不进行截取或饱和处理,保证数据的完备性。

3.2.2 接口定义

在这里插入图片描述

在这里插入图片描述

3.2.3 实现方案

本乘法器采用类似booth乘法器的算法,并在其基础上作加速处理。

1.输入被乘数A和乘数B,并存储在相应的寄存器中,同时声明16位的P空间;
2.将乘数A直接存入P空间;
3.读取乘数B的最低两位,对被乘数A执行相关的操作,并将其存入P空间,相关操作如下表;
4.将乘数B右移两位,并重复步骤2,总共重复n/2次(n位乘数B的位宽);
5.执行完n/2次后,P空间中的数据即为输出结果。

在这里插入图片描述
(表中P指的是P空间中数据的值。)

3.3 weight_manage子模块

3.3.1 模块功能

把从TOP.v接收到的weight存储器进行格式重排列,排列成从低到高,每9个为一个输出通道对应的3x3卷积核,并将新格式的weight存储器输出。

3.3.2 接口定义

在这里插入图片描述

在这里插入图片描述

3.4 加法器子模块

3.4.1 模块功能

本设计加法器包括3种:2输入加法器、64输入加法器、9输入加法器。分别对应到输出通道计算中的偏置相加,输入64通道的卷积输出结果的相加和每个卷积运算部分的9数相加(3×3模板中对应元素相乘之后得到9数相加),其中2输入加法器和9输入加法器是底层加法器模块,9输入加法器用于64输入加法器的构建以及卷积计算中。
之所以没有将加法器的输入端口数量进行模块化设计,
原因有二:
其一是端口数量的模块化在代码建模时不好设计;
其二是本设计中实涉及到的最底层加法器模块只有2输入和9输入两种。64输入模块的实现实际上是通过将9输入加法器例化8次(每个module中将其中一个输入置0)而得到。实际上,2输入与9输入加法器的最基本实现思路是完全一致的,故而以下以2输入加法器为例进行说明。

3.4.2 接口定义

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值