Zynqnet(五) fpga_top解析(一)

论文地址:https://github.com/dgschwend/zynqnet/blob/master/zynqnet_report.pdf

项目地址:https://github.com/dgschwend/zynqnet

背景:该函数取自FIRMWARE中,该部分代码是运行在异构开发板上的代码,既可以使用FPGA进行加速,也可以选择只在ARM端运行。核心函数是fpga_top,这个函数可以在ARM上运行,也可以用FPGA加速。在运行该函数之前,需要将权值+数据搬运到DRAM上还有确定各个层的权值地址,输入输出地址,这部分代码和解析可以见:

 Zynqnet(三) HSL_CODE解析 https://blog.csdn.net/crazyeden/article/details/85200655

本篇继续介绍fpga_top函数:

void fpga_top(layer_t layer, data_t *SHARED_DRAM, unsigned int weights_offset,
              weightaddr_t num_weights, unsigned int input_offset) 

以上为函数原型,从左至右参数依次分别为   某层,DRAM起始指针(固定值),weights_offset 权值的坐标(固定值,对每一层都是一样的),num_weights 当前层权值系数的个数,input_offset 输入数据的坐标(固定值,对每一层都是一样的),也包括输出,这部分为输入输出的存放区域。

 调用的函数一:  

MemoryController::setup(SHARED_DRAM, weights_offset, input_offset);

作用:将weights_offset和data_offset两个值赋给MemoryController命名空间下的全局变量

DRAM共分为两部分,一部分是权值,一部分输入输出。以下两个值是他们相对地址偏移:

MemoryController::dram_weights_offset

MemoryController::dram_data_offset

调用函数二:setLayerConfig(layer)

在调用四个命名空间内的这个同名函数对不同的缓存赋值,形参均为layer:

 ImageCache::width_in   ImageCache::height_in  ImageCache::ch_in  

ImageCache::line_width =  ch_in * width_in

ImageCache::loads_left=line_

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值