时序优化和上板调试小结

  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

相关推荐
FPGA的花路14 小时前
基于脚本的ModelSim自动化仿真(Xilinx FPGA篇)
fpga开发·xilinx·自动化脚本·modelsim仿真
汽车仪器仪表相关领域1 天前
Kvaser Hybrid Pro 2xCAN/LIN 双通道可编程CAN/LIN通讯接口:一机双模可编程,汽车车身混合总线测试专用设备
人工智能·功能测试·安全·fpga开发·汽车·压力测试
szxinmai主板定制专家1 天前
电力设备RK3568/RK3576+FPGA,多系统混合部署Linux+RTOS RT-THREAD,强实时性
linux·运维·服务器·人工智能·嵌入式硬件·fpga开发
ALINX技术博客2 天前
【黑金云课堂】FPGA技术教程Vitis开发:PS端DP接口解析
fpga开发·fpga
FakeOccupational2 天前
fpga系列 HDL:跨时钟域同步 shift register同步(CDC)毛刺滤除&解码前去抖动滤波模块
fpga开发
小眼睛FPGA2 天前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程6-基于UDP 的以太网传输实验例程
fpga开发
高速上的乌龟2 天前
Lattice LFCPNX-100 HSB+Fpga开发详解: MAC+PCS以太网SFP光口传输
单片机·嵌入式硬件·fpga开发
ALINX技术博客2 天前
【黑金云课堂】FPGA技术教程Linux开发:电压温度检测/USB/eMMC
linux·fpga开发
小眼睛FPGA2 天前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程3-基于紫光FPGA 的UART 串口通信
fpga开发
liuluyang5302 天前
SV 时钟移位示例代码解析
fpga开发·sv