fpga中的硬件逻辑与软件程序的区别,相信大家在做除法运算时会有深入体会。若其中一个操作数为常数,可通过简单的移位与求和操作代替,但用硬件逻辑完成两变量间除法运算会占用较多的资源,电路结构复杂,且通常无法在一个时钟周期内完成。因此fpga实现除法运算并不是一个“/”号可以解决的。
好在此类基本运算均有免费的ip核使用,本人使用的vivado 2016.4开发环境提供的divider gen ip核均采用axi总线接口,已经不再支持native接口。故做除法运算的重点从设计算法电路转变成了调用axi总线ip核以及hdl中有符号数的表示问题,极大降低了开发难度。以下就上述两个方面进行探讨。
veriloghdl中默认数据类型为无符号数,因此需要数学运算的场合必须要用“signed”声明,如:reg signed [8-1:0] signal_a;wire signed [32-1:0] signal_b;需要注意一点,fpga将所有有符号数视为二进制补码形式,运算的结果同样为补码。再来看看除法器ip核配置界面。
总共就两页,非常简单。需要重点关注的有三个地方:1 算法实现结构(algorithm type)2 被除数与除数的位宽 3 第二页flow control模式。现来一一说明:
就算法结构来说官方文档pg151 logicore ip product guide中说得很详细:lutmult结构操作数最好不要高于12bit,且充分利用dsp slice和bram以降低对fpga 逻辑资源的消耗。radix-2操作数不要超过16bit,且利用资源与lutmulti相反,大量使用register和lut从而将dsp slice和bram资源节省出来用在别的地方。最后一个high radix结构支持超过16bit的大位宽操作数,利用dspslice等专用硬件资源。根据自己的需求选择即可。
位宽问题没什么好说的,需要特别注意保留位宽满足计算范围,也就是运算之前的“补码符号位扩展”。至于flow control 模式与接口和axi总线有关。
接口划分得十分清晰,被除数 除数和商通道以及必要的时钟和复位逻辑接口。每个axi总线通道总是包括tdata tuser tlast 和握手信号tvalid tready,其中tuser为附加信息,tlast表示流模式下最后一个数据,相当于数据包中的包尾处。数据传输仅在tvalid和tready同时拉高时有效并更新。
而non blocking mode在除法运算时较常用,一句话概括:ip核接口不带有fifo缓存,输出通道数据必须被下游模块实时处理。上图就明白了:
这一模式实际上是对axi总线的简化,很多场合下并不完全需要axi总线强大的流控功能,特别是在axi总线模块的上下游均为可进行实时处理的fpga逻辑电路的情况下。axi总线的另一个特点就是data packing,需要将不是8bit倍数位宽的数据高位填充从而确保数据最小单位是1byte,具体填充方式有所不同。很容易想到,这样的data packing 功能对soc中pl与ps部分的交互是十分友好的。
总体来说,在fpga中做基本的数学运算没什么难度,即使是指数 对数 开根号之类的复杂运算也有浮点ip core的支持。本人后续用到复杂算法时,会采用hls方式开发,仅用于算法验证,欢迎关注。
原文标题:fpga中的除法运算及初识axi总线
文章出处:【微信公众号:fpga之家】欢迎添加关注!文章转载请注明出处。
人工智能将会带来恐怖后果?苹果联合创始人却不这么认为
硒鼓的工作原理
从消费级到航天级,不同等级的传感器有何区别?
嗅探器是什么_嗅探器怎么用
5G无线网络供电方案探讨
如何实现FPGA中的除法运算
百度沈抖:聚焦场景深耕行业,为企业数字化带来实际成效
米尔科技内核芯片介绍
传统去除马赛克的方法,如何通过多帧画面去除马赛克的原理
虹科方案 | 需要实现CAN与以太网之间的信息有效传递与智能变送?你只需要一个网关模块!
摩擦焊接的工作原理
瑞智康诚应用交付系统 WebEXP 通过IPv6 Ready Logo认证
Fluke 1738三相高级电能质量记录仪的功能及主要特点分析
三星申请折叠平板电脑专利成功,借此挑战苹果主导地位
随着智能科技产品的发展,让智能居家融入我们的生活
iPhone 5s的原型已经浮出水面
智能安防已具备一定成熟度 AI安防正在向场景应用体验过渡
基于嵌入式操作系统VxWorks的SCSI硬盘高速记录系统
华为p10最新消息:华为P10问题不断,突显华为走向高端的无奈
杭州云深处科技有限公司发布了新版“绝影”机器狗