热度 3|
构造一个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补码数。
系统内置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
卷积核固定选取为:
输入数据为:(Data_input.txt 有符号16进制)
转换成10进制
每次启动后TB读取要卷积的数据,并将此数据传输给CONV,每次传输一个数据即8bit
CONV接收完数据后开始卷积
卷积结束后把数据传输给TB,每次传输一个数据即20bit
在仿真前Transcript中命令:do wave.do加载预设波形
输出结果在Transcript中查看
Matlab验证结果(Matlab_Verify.m)
与verilog输出吻合