时序优化和上板调试小结

  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

相关推荐
Z22ZHaoGGGG4 小时前
verilog实现采样电流有效值的计算
fpga开发
fei_sun4 小时前
牛客Verilog刷题篇
fpga开发
my_daling7 小时前
DSMC通信协议理解,以及如何在FPGA上实现DSMC从设备(1)
学习·fpga开发
fei_sun18 小时前
FPGA&数字前端
fpga开发
尤老师FPGA19 小时前
HDMI数据的接收发送实验(九)
fpga开发
Flamingˢ21 小时前
ZYNQ + OV5640 视频系统开发(四):HDMI 显示链路
嵌入式硬件·fpga开发·硬件架构·音视频
LCMICRO-133108477461 天前
国产长芯微LDC5141完全P2P替代DAC80501,数模转换器 (DAC)
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·数模转换器 dac
Nobody331 天前
锁存器与触发器
fpga开发
Nobody331 天前
跨时钟域信号处理的办法有哪些
fpga开发·信号处理