时序优化和上板调试小结

  1. fpga 内部对于除法 ,不论是取整还是求余 ,都十分不友好。特别是除法+组合逻辑+大位宽 的的组合方式,会综合处很大的逻辑深度和逻辑级数,造成时序违例;

解决: 使用移位计算取代 ,这也是为什么fpga 喜欢定义参数==2的幂次方;

乘法和除法使用累加/累减 实现(注意处理的最大时钟周期);

  1. fpga 内部对于乘法的计算也不友好,通常是将乘法逻辑拆分+打拍的方式修复时序。 如果不必要的过大位宽也不利于时序收敛;

解决:使用右移实现;

计算拆分+流水;

  1. 对于逻辑内部设计到基于软件配置信息,fpga 内部自己计算输出的一些内参信息。 如果内参信息的计算设计的除法/乘法/加法/减法 等组合运算时 ,完全可以将内参的计算剥离出来,转换成配置接口的形式传入。 fpga 工程师可以提供脚本,借助脚本计算出软件将要配置的所有接口信息。

解决: 删除内参生成逻辑,改为软件配置接口实现,fpga 提供参数生成脚本,帮助软件配置;

  1. fpga内部对于bram的depth 必须是2 的幂次方,比如深度为1024 ,那么bram的深度位宽是10 ,另外xilinx 的bram深度 是 (数据存储位宽 * 深度)

  2. 数据输入fifo ,做整包调度,允许整包丢弃。逻辑需要保证实现整包写和整包读取; 也就是,在写的过程中,不care反压,只在写的第一拍判断输入缓存是否afull。

在读的第一拍,判断后级FIFO是否afull ,不afull 一直读取,后续的读不care 后记fifo 的afull

  1. 对于图像的读写仿真测试,需要借助fwrite和fread,将dut的 输出保存到文件,借助py 解析文件,可以快速定位代码问题;

  2. 项目开发步骤: 编码===》仿真===》修改时序===》再次仿真验证===》上板调试===》 加ila,signaltap ===》 项目pass

相关推荐
Eloudy19 小时前
HSB FPGA 架构总体
fpga开发·架构
Terasic友晶科技20 小时前
【教程】Agilex 5 SOC FPGA的HPS端如何响应FPGA端中断(三)——设备树Overlay
fpga开发·设备树·agilex 5·设备树overlay
ARM|X86+FPGA工业主板厂家21 小时前
基于嵌入式 GPU 的智能服务机器人
linux·运维·arm开发·fpga开发·机器人
Freak嵌入式1 天前
Pico PIO 汇编语法深度详解:标识符、指令、伪指令全解析
汇编·stm32·单片机·嵌入式硬件·fpga开发·硬件架构
Riwuarua1 天前
从近似0基础开始FPGA开发 -- part.7 FPGA的网络通信设计
fpga开发
pingping_TEL1 天前
JESD204B_IP核使用教程
fpga开发
cmc10282 天前
292.三段式状态机第三段时序逻辑用state_c与_n的差异分析
fpga开发
智塑未来3 天前
FPGA开发板怎么选?先看资质、案例与研发底盘
fpga开发
minglie14 天前
黑金AX301的SDRAM
fpga开发
hahaha60164 天前
HLS高层次综合设计技巧--高层次综合设计探讨
fpga开发