在用国产安路的FPGA,代码为什么总是会牵一发而动全身?
项目中用到了7:1的LVDS接收,数据率525Mbps,锁存数据的时钟为75M*3.5=262.5M编译报出的Fmax 280M左右,刚刚够
主要的问题就是,LVDS接收模块比较诡异,有的时候工作是正常的,但稍微改一点跟LVDS接收完全不相干的代码,重新编译工作就不正常了
再改一下,有可能又正常了,总之就是感觉很不稳定,有没有什么好的优化和解决方法,请大家分享一下经验
这和我用高云一个德行嘛 。 我改下SPI发送的数值(高速ADC,SPI接口用于配置, 数据走LVDS),我的UDP协议栈(不在一个始终域)直接不能正常工作了。。。 时钟报告也是刚刚够, FAE让过约束稍微提高内核电压解决。。。 本帖最后由 xxdd 于 2021-9-8 15:52 编辑
夏筱雨 发表于 2021-9-8 15:10
这和我用高云一个德行嘛 。 我改下SPI发送的数值(高速ADC,SPI接口用于配置, 数据走LVDS),我的UDP协 ...
提高内核电压,有效果吗?
我感觉就是时序报告不准,Fmax不够,时序错乱了 本帖最后由 dukelec 于 2021-9-8 16:01 编辑
爲了省錢,我喜歡給 fpga 掛無源晶體,剛開始的時候,改動一點無關代碼,就不穩定了,甚至不能運行了,
查了一下,是驅動外部晶體的反向器的位置變化導致,後來專門爲其在 sdc 增加了一些語句,就解決了:
https://blog.d-l.io/crystal-input-to-fpga
你說的這種問題,可能是國產芯片要留更多餘量才行,
也可以考慮通過 sdc 增加一些限制,讓綜合器優先處理容易出問題的功能塊
還有些高級玩法是鎖定佈局 dukelec 发表于 2021-9-8 15:55
爲了省錢,我喜歡給 fpga 掛無源晶體,剛開始的時候,改動一點無關代碼,就不穩定了,甚至不能運行了,
查 ...
好方法,省钱到极致!
谢谢提供思路,我尝试一下 国产FPGA都是这样的,要习惯才好。用A或者X很多警告的时候也能运行,国产的说不得什么时候重新编译一次就崩了 我准备也要搞这个安路的芯片了,刚好避雷 xxdd 发表于 2021-9-8 15:51
提高内核电压,有效果吗?
我感觉就是时序报告不准,Fmax不够,时序错乱了 ...
从0.995提高到了1.053 UDP可以正常收发数据了。。。 (1)到官网找最新的linux/win版本的工具。4.6及以前的所有版本时序报告不可靠。5.0.2及以前的版本IO LVDS配置有bug。
(2)7:1建议用4:1 IDDRx2做gear box,这样可以支撑到1.2Gbps以上(我的系统工程内部主频128MHz,IO是4:1,2倍频,实际由IO->主频最大能稳定运行在1020Mbps以内)。
(3)安路的LVDS需要精细调延迟。安路的IO延迟以4XBG256为例,Bank1/3需要打14~16拍,Bank0/2需要打4~6拍,才可以做到DC->fMax。具体可以根据不同Tap的频率黑洞来估计。安路PLL的Source Sync模式下也只是确保PLL->IDDRx2.SCLK的延迟跟走BUFIO时一致,但是安路的IO Buffer有点拉垮。
(4)无论用何种FPGA,做时序约束时一定要留出一点余量!绝对不能卡着点,因为你不知道芯片的工作状况。比如你外部给1.15V虽然在合理的工作范围内,但是如果有瞬变电流需求,则你的电源模块可能会跪一下子!遇到莫名其妙的问题可以示波器打一下尖峰。
(5)安路的PLL如果做级联,务必要按手册的说明,对PLL输出做分组,否则不能保证可靠性!此外,切勿使用任何一个PLL.C0之外的时钟去级联生成相关时钟!安路的工具链有bug,这种配置大概率会不能工作。
(6)安路的PLL做固定移相的话,切记RefClk输出无论如何都和输入时钟同相位!需要注意。
(7)跨时钟阈务必严格规范代码,握手信号务必做好多重确认(A1->B1->BACK->AACK),数据尽量使用FIFO,低->高可以简单使用LUTRAM。但是数据FIFO的地址也务必要多重握手传递。严禁使用任何异步信号直接在状态机里用做条件跳转!
(8)安路的单端IO缓冲器比较拉垮,注意LVCMOS33片内直通的延迟约4ns,走IO之后最少7ns,即IO Buffer单边延迟至少2.5ns(I估计2.5~3ns,O估计4~4.5ns,还不计算入OREG的延迟),接FX2之类的时候都有时序违规的现象发生,务必做好补偿。
以上全部做到之后,可以保证你的工程每次改完编译都能顺利正常运行。甚至一些Xilinx上面偶尔会有的小毛病安路上几乎从来没遇到过。但是上面这些坑务必注意不要掉进去。其中,第(5)项决定你的倍频工作是否稳定可靠,(1)决定你的工程能否正常运行,(2)(3)决定你的高速接口能否正常工作,(7)决定你的设计会不会偶然变砖。 wye11083 发表于 2021-9-8 19:42
(1)到官网找最新的linux/win版本的工具。4.6及以前的所有版本时序报告不可靠。5.0.2及以前的版本IO LVDS ...
谢谢大神分享经验,这些坑安路自己的FAE都未必知道 wye11083 发表于 2021-9-8 19:42
(1)到官网找最新的linux/win版本的工具。4.6及以前的所有版本时序报告不可靠。5.0.2及以前的版本IO LVDS ...
大神,再请教一下,你回复里说的gear box是什么意思?我从没听过这种说法呢
网上搜了一下,也没看到什么相关资料。
我的项目里用到了lvds 7:1的接收和发送,主时钟75M,现在做法就是生成一个1/2时钟,一个3.5倍时钟,然后在这两个时钟的同步下进行发送和接收
跨时域处理,参考的是官方给的代码,用芯片里的DSRAM实现
这种方式您觉得是否合理呢,现在跑的不是很稳定
齿轮箱,就是A:B“lvds 7:1的接收和发送” 本帖最后由 wye11083 于 2021-9-13 19:14 编辑
xxdd 发表于 2021-9-13 15:13
大神,再请教一下,你回复里说的gear box是什么意思?我从没听过这种说法呢
网上搜了一下,也没看到什么 ...
gear box你找找xilinx的文档。说白了就是一个移位寄存器,比如8位,那么每周期进7位,那么寄存器里面有7位,6位,5位,===。控制好进来和出去的数量。
跨时钟域就是用双口RAM实现的。注意FIFO两端ptr需要握手同步,或者快速同步(写<=读,且数据连续,则只需要同步FIFO最高地址位) xxdd 发表于 2021-9-8 16:01
好方法,省钱到极致!
谢谢提供思路,我尝试一下
这种属于炫技, 批量做产品的话叫翻车高手 时序约束问题,或者是 SERDES的IDELAY参数没做对 wye11083 发表于 2021-9-8 19:42
(1)到官网找最新的linux/win版本的工具。4.6及以前的所有版本时序报告不可靠。5.0.2及以前的版本IO LVDS ...
{:lol:} 你怎么什么都知道, 群里大牛太多了 ,以后有问题还是论坛里问你 {:lol:} 安路的价格如何 tjiefk 发表于 2021-10-18 14:19
安路的价格如何
价格能做到单片机价格估计很多人考虑 NM2012 发表于 2021-10-18 16:22
价格能做到单片机价格估计很多人考虑
单片机和FPGA是完全不同的应用场景,没有可比性
xxdd 发表于 2021-10-18 16:49
单片机和FPGA是完全不同的应用场景,没有可比性
{:titter:} ep4ce10涨到400了,想用安路替换,不知道价格如何 tjiefk 发表于 2021-10-18 21:40
ep4ce10涨到400了,想用安路替换,不知道价格如何
400也太夸张了,安路p2p兼容的,20块钱左右,能批量供货
具体可以找代理问 400还不一定买得到 tjiefk 发表于 2021-10-19 13:17
400还不一定买得到
我手上还有10K EP4CE10F17没用掉,你有用的话,转卖给你如何?你出个价 xxdd 发表于 2021-10-19 14:30
我手上还有10K EP4CE10F17没用掉,你有用的话,转卖给你如何?你出个价
买芯片是采购的事,从原厂订期货的
页:
[1]