易灵思开发注意事项和常见问题

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 19

注意事项

1)新建工程时需要选择芯片型号对应的时序模型,该时序模型根据芯片右上角的丝印确认,如下图所示丝印为 I4,表示工业标准的第四个等级

修改时序模型
常见问题

1)裸机系统通过 mac ip 操作 phy 的 mdio 寄存器时,写寄存器的地址变成了读寄存器的地址

原因:mcu 写寄存器的方式为异步,同时 mcu 操作 mac ip 的速度比 mac ip 的 mdio 总线要快,造成寄存器地址错乱。

措施:mcu 操作 mac ip 时加延时,让其操作速度与 mdio 总线速度匹配;


2)博峤自己的 T85 开发板上,phy 芯片 RTL8211E-VL-CG 状态寄存器不正常,一直为 0

原因:易灵思官方 demo 给 phy 芯片 DM9119INP 打了寄存器补丁,直接在博峤自己的开发板上运行,该补丁配置会引起 phy


芯片 RTL8211E-VL-CG 异常。

措施:将该补丁去掉后再运行;
3)在运行官方 i2cMasterDemo 时,使用易灵思片内逻辑分析仪抓取 I2C 波形,scl 和 sda 一直为高电平;

原因:scl 和 sda 需要硬件外接上拉电阻;

措施:将外接 sensor 模块插上开发板(模块 I2C 总线自带上拉电阻);

4)使用 lvds 输入时钟来控制 led 灯闪烁,实际运行时 led 灯常亮,没有按预期闪烁;

原因:使用易灵思片内逻辑分析仪会降低运行性能,该逻辑分析仪最大采样频率为 200M,在资源不拥塞的情况下,运行频率最大能到
450M,500M 时很容易出现时序违例造成系统运行异常;资源拥塞时勉强能到 300M,350M 时就容易出现出现时序违例造成系
统运行异常;

措施:在满足产品定义的情况下,尽量降低系统时钟频率,易灵思的芯片定位如此;

5)lvds 使用同步码训练过程中发现,通过 wire 引出寄存器给逻辑分析探测时,训练结果正常;当不通过组合逻辑引出寄存器时,训练结果异


常;

原因:易灵思综合器为了节省片上资源,会通过优化算法将一些认为不重要的变量优化掉,导致运行结果不符合预期;

措施:通过查看手册 efinity-synthesis.pdf,通过(* async_reg = "true" *)修饰变量,可以避免综合


器误删寄存器;
6)拉高 GMX4002 的 TEXP,lvds 解串后的数据不符合预期,虽然训练码 0x18E 可以匹配成功;

原因:GMX4002 在 lvds 是以小端模式传输(先传输的数据的低位),解串逻辑用的大端模式,造成后续数据解串异常;


措施:修改解串逻辑,按小端模式解串;

7)lvds 解串数据不稳定,无法稳定得到数据帧;

原因:解串器没有遵循时序逻辑,输出结果有误码现象;

措施:如果两个时钟域同源,只需要保证两个时钟的相位一致就行,可以使用锁相环的 feedback 功能实现;


8)多路 lvds 数据解串不同步,有的通道无法正常解串;

原因:解串相关时钟存在较大 clock skew,尤其是 5bit 转 10bit 的时钟经过了两个锁相环,使得 clock skew 更大了;

措施:保证解串相关时钟由同一个锁相环产生,同时解串时钟相位偏移 90 度;
9)下载新的 fpga 配置文件后软核裸机固件运行出现 crash 死机;

原因:易灵思编译器长时间工作出现编译异常,导致生成的配置文件出现时序问题;

措施:重启电脑;

10)下载调整软核主频的 fpga 配置文件后软核裸机固件运行不起来;

原因:主频配置不正确,软核配置的主频和 pll 实际给到软核的主频不匹配;

措施:将 pll 实际输出给软核的主频统一到软核配置的主频;

11)Lwiperf 裸机固件在博峤 T85 板子上运行不起来,出现死机现象;

原因:有一个参考 sensor lvds 时钟的 pll,该 pll 的 locked 信号控制着 phy 相关模块的复位功能,由于未对 lvds 做配置不能输出
时钟,造成 phy 相关模块功能异常;
措施:让该 pll 参考其他有效时钟,或者初始化 sensor 都能解决该问题;

12)博峤 T85 板子以太网无法正常收发数据包,用示波器测 rgmii_txc 引脚,没有时钟输出;

原因:之前调开发板时,修改 mii 接口时将 rgmii_txc 相关逻辑屏蔽,新板子使用的是 rgmii 接口,没有将该修改点回退;


措施:回退之前的修改点;

13)博峤 T85 板子以太网接收异常,PC 发送超过 61 字节时会丢最后一个字节(61 字节以内及 61 字节都正常),比如 PC 发送 66


字节,fpga 只收到 65 字节,最后一个字节丢失;
原因:易灵思跑超过 100M 的逻辑容易出现时序违例的情况,同时他们的产品对温度比较敏感,在温度超过 60 度时会让时序恶化,导致运行异
常;

措施:给芯片加散热片,将温度控制到 60 度以内;

14)pylon 连接 T85 相机连续出图情况下,有撕裂现象;

原因:读 frame buffer 的状态机有跨时钟域情况(125M),导致该状态机概率出现状态切换异常,正常情况下从状态 3b'101 只能切


换到 3’b000,异常时却从状态 3b'101 切换到 3’b001;
措施:优化状态机,消除跨时钟域的信号;

15)pylon 连接 T85 相机首次连续出图正常,当停止出图再启动连续出图就有撕裂现象;

原因:停止出图的时序异常(sensor 先停止再输出 fifo 复位信号),设置 sensor 停止出图后 lvds 时钟会跟着停止,由于接收 lvds


数据的 fifo 采用的异步时钟,其复位信号依赖 lvds 时钟,造成 fifo 的复位逻辑没有正常执行;

措施:先输出 fifo 复位信号再停止 sensor 出图;


16)调试 Sony 图像传感器 IMX264 连续出图有撕裂现象;

原因:VMAX 设置的值过大,超过了 sensor 最大允许范围;

措施:将 VMAX 设置成数据手册推荐的值;

17)调试 Gpixel 4002 传感器调整分辨率为 2046X1200 有撕裂乱码现象;


原因:宽度 2046 不是 8 的整数倍,导致 dma 模块消耗了更多的时钟用于数据同步,而此时系统时钟和 lvds 数据时钟都是 60M,造成
fifo 溢出;

措施:将系统时钟提高到 65M;

18)调试 Gpixel 4002 传感器调整分辨率为 2046X998 有切边现象;


原因:有的帧缓存首地址没有按 16 字节对齐,而 axi 总线协议会将非对齐访问变成对齐访问,返回的数据排列将是按向下对齐地址后状态,与实
际需要的数据排列有偏差;

措施:对于非对齐访问的 axi 返回数据添加一级 cache,将数据按需求的序列输出;

19)连续出图半小时左右概率出现烂图现象;
原因:udp 发送状态机的 busy 状态存在跨时钟域情况,软核运行在 65M 的时钟域,去读取运行在 125M 时钟域的 udp 输出的
busy 状态,在 udp 状态切换情况下,软核读取的 busy 值存在毛刺,导致状态读取异常;

措施:将 udp 的 busy 值 s 通过多打两拍展宽的方式消除毛刺(亚稳态);

20)连续出图时第一帧概率出现 dma 接收不完整;

原因:dma 接收数据过程中被停止出图命令打断,造成内部状态机异常;

措施:接收到停止出图命令后,先将 dma 停止接收数据,再执行 lvds 复位动作;


21)调试 548 驱动出现大量横纹;
原因:按 pdf 参考设置 sensor 采样深度寄存器 0x3200 时,将低四位的值覆盖成非法值;

措施:0x3200 寄存器的值设置为 0x15;

22)调试 548 驱动出现暗纹,并在垂直方向上匀速移动;

原因:图像起始位置比较靠后,造成 pix_cnt 像素计数器溢出;


措施:设置图像起始位置在 OB 行数之后;

23)Gamma 模块占用逻辑资源过大,logic 增加了 10000 单位;


原因:8 个 lvds 通道共用一个查找表,导致拥塞;

措施:每个 lvds 通达单独使用一个查找表;

24)调试 IMX287 的 fast trigger mode 实际帧率与脉冲频率不一致;


原因:sony sensor 在触发模式下,每一帧都需要重新学习同步码;

措施:修改 lvds 解串逻辑,每一帧都重新学习同步码;

25)非阻塞赋值不符合时序要求,变成了组合逻辑,导致图像显示异常(每行的最后一拍的的几个像素拜耳排列未同步);

原因:always 语句中有敏感信号未参与相关触发器的逻辑控制,编译器优化后将非阻塞逻辑变成了阻塞逻辑;

措施:将 always 语句中多余的敏感信号移除;

You might also like