搜索
bottom↓
回复: 20

国产安路FPGA使用——最精简化内置SDRAM控制器例程。更新测试数据:SDRAM时钟提前2.6ns基本解决SDRAM问题

[复制链接]

出0入442汤圆

发表于 2020-7-2 15:09:48 | 显示全部楼层 |阅读模式
本帖最后由 wye11083 于 2020-7-4 18:26 编辑



        input                         clk_i,
        input                         rst_i,
        input                         clk2x_i,                //        Read clock should be tested. Since all IOs use IODDR, the timing is relatively fixed.

注意时序问题。根据估计,安路的ODDR到OPAD再到SDRAM再到DQ再到IDDR总路径估计有~5ns左右,不算上SDRAM的Output Hold的话起码也得有3.5ns。
实际使用时,clk_i和clk2x_i请对齐,因为SDRAM的clk是下降沿出1,这样就构成了1:2的SDRAM控制器。安路的内核效率不咋的,高频上不去,因此这样设计不太影响有效的带宽。

模块实际工作在74.25MHz,clk2x_i为148.5MHz,此时从SDRAM的clk到DQ的延迟最大有3.36ns,实际估计可能会稍微吃掉一点SDRAM的Output Hold。如果要提高频率,则需要把clk2x_i往前提一点,以避免Setup Time不足造成读数据错误。

此外,安路的工具链似乎不太稳定,工程改一个地方都有可能造成SDRAM崩溃,第1个Burst的最低字节始终是错的。目前也没有找到原因,遇到这种情况直接打开LPF_SDRAMULPController,把DEBUG_DDR_TRP改一下,为1或2,一般都能解决SDRAM出错的问题。国产就是这样,总会有点小毛病不太顺,但是基本上能用。

模块为标准AXI4接口,但是很多特性都不支持。模块不区分4KB边界,但是为防万一,建议外面手动加上4K边界,避免移植出现问题。已知Xilinx官方IP会在4K边界上出错。模块仅支持BRAM接口,要求输入输出ready或valid均为恒1,没有内置FIFO,不支持传输阻塞。

模块为最精简化控制器,是不包含打开的页地址记录的。也即,每次操作都是一次全新的操作,控制器会自动进行ACT-RW-PRE的操作。因此对于小的Burst会带来严重的效率损失。对连续地址短Burst有需求的则需要自己去增加Opened Bank管理了。同理,AXI总线也会带来最大2个周期的延迟,不支持流水线操作,每次只能响应一条指令,对目前我的应用需求来说可以满足。想要追求极致效率的可以自己研究高性能控制器。给个思路:用一堆Bank Machine去管理读写指令,由每个Bank Machine去管理映射到它的指令,用id实现无缝交替传输。

此外,注意一下安路的工具链时序分析似乎有bug,生成的时序比实际时序要多出~2ns,比如设置10ns,工具链实际是按~12ns去布线,没有找到原因,且安路FAE似乎也没有解释原因。实际使用时需要手动缩短时序以避免出现意外情况。实测片内逻辑最高可跑到~150MHz的主频(只能留出来5%的时序余量,而且需要极度流水线化,就像Intel的Prescott处理器一样拼命加深流水线),实用主频不超过100MHz。



根据最新测试结果,当SDRAM时钟提前2.666ns时,读时序bug基本消失(多次未复现)。因此推算安路FPGA的输出buffer延迟应在2~2.5ns之间,输入buffer延迟应在0.5~1ns之间,总延迟在2.5~3.5ns左右。因此,clk2x_i需要向后延长一点时间或向前提一点时间,使clk2x的下降沿到clk_i的两个边沿延迟在2.666ns~2.75ns之间,理论上可以达成完美读写。

当前工程综合资源占用率不到50%,理论上EG4S20共有19600个LUT,但是它有一半是LUT5,因此折合29400个LUT4,19600个DFF,64个1Kx9的RAM,16个4Kx8的RAM,资源量已经明显超过XC6SLX25了。当然主频是个很大的bug,一个模块为了跑到150MHz内部所有信号全部做了深度流水线。综合性能约为Spartan-6的50%~65%。欢迎大家都来搞国产FPGA

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入17汤圆

发表于 2020-7-2 17:12:04 | 显示全部楼层
楼主说的这些坑都踩过,有时候改一个低频时钟域的赋值语句,会导致主时钟域最高工作频率降20%,真是隔山打牛啊。
话说楼主对SDRAM的操作最快能到标称的200MHz吗?我这边费尽洪荒之力也只能到133MHz

出0入442汤圆

 楼主| 发表于 2020-7-2 17:33:53 来自手机 | 显示全部楼层
Nuker 发表于 2020-7-2 17:12
楼主说的这些坑都踩过,有时候改一个低频时钟域的赋值语句,会导致主时钟域最高工作频率降20%,真是隔山打 ...

问题不大。我估计你肯定是1:1模式,能干到133m已经吊炸天了(但是我怕你时钟约束没处理,它实际按100m给你布的)。

我这1:2内核频率才区区75mhz,clk2x是sdram时钟,148m。就算到200m跑起来还是轻轻松松的,因为内核只跑一半啊,64位。你还可以用oddrx2继续怼,1:4,这样跑到400mhz都问题不大(此时sdram估计已经跑断腿了。。)。

低速的模块我一大堆都没出一个bug,高速就不行了,估计安路的优化器不太稳定,时序比较紧的模块可能被错误优化造成某些地方不太稳,或者是它的ram等地方有不太稳定,总之现象很奇怪,就只有sdram的第一个burst的最低字节是错的,遇到这种情况改一下trp就好了。我就1和2来回改啊改。。我用xilinx这么多年都没遇到过安路这种奇怪bug。

出0入17汤圆

发表于 2020-7-2 17:43:16 | 显示全部楼层
是1:1模式,时钟有约束,采用双时钟方式,有效相位窗口很小

出0入0汤圆

发表于 2020-7-2 18:43:36 | 显示全部楼层
楼主牛人 什么都会的样子

出0入0汤圆

发表于 2020-7-2 22:18:53 | 显示全部楼层
芯片如何购买?开发资料从哪获取?

出0入4汤圆

发表于 2020-7-2 22:26:20 | 显示全部楼层
安路的工具链是要 license 还是可以免费用?

出0入0汤圆

发表于 2020-7-2 22:51:42 来自手机 | 显示全部楼层
免费的,还行

出0入442汤圆

 楼主| 发表于 2020-7-2 22:53:01 | 显示全部楼层
atommann 发表于 2020-7-2 22:26
安路的工具链是要 license 还是可以免费用?

安路的工具包含半年license

出0入442汤圆

 楼主| 发表于 2020-7-2 22:53:31 | 显示全部楼层
gui401 发表于 2020-7-2 22:18
芯片如何购买?开发资料从哪获取?

找FAE,代理商等等。资料也找他们要。但是安路目前的资料不多,而且很多信息都没有,比如IO的延时。

出0入984汤圆

发表于 2020-7-4 17:58:57 | 显示全部楼层
手里有个EG4S20开发板一直吃灰

出0入17汤圆

发表于 2020-7-31 16:29:38 | 显示全部楼层
楼主,您有安路的EG4S20的SDRAM完整官方例程吗?
能否分享一下,谢谢啦

出0入442汤圆

 楼主| 发表于 2020-8-1 00:03:04 来自手机 | 显示全部楼层
DOER 发表于 2020-7-31 16:29
楼主,您有安路的EG4S20的SDRAM完整官方例程吗?
能否分享一下,谢谢啦

没有。我提供的ip可以直接用,把时钟配好即可。

出0入0汤圆

发表于 2020-10-11 09:56:35 | 显示全部楼层
我用的高云FPGA, 内置SDRAM时钟是跑的是148MHZ, 32bit,长时间没问题,但是再高,到160MHZ,有点悬,200MHZ基本没戏

出0入442汤圆

 楼主| 发表于 2020-10-11 10:19:51 来自手机 | 显示全部楼层
orta1986 发表于 2020-10-11 09:56
我用的高云FPGA, 内置SDRAM时钟是跑的是148MHZ, 32bit,长时间没问题,但是再高,到160MHZ,有点悬,200MH ...

兄弟,你要仔细检查时序。安路的综合器综合的时序是有问题的,必须要手动给够余量。还有,安路默认给的是drive=8,slew=fast,148.5m只是我hdmi频率的2倍。你可以看看高云给的多少。此外就是burst了,建议内核跑半频,这样高速端压力不大,低速端使用2倍位宽压力也不大。你要是1:1怼高频那fpga就要吃翔了

出0入17汤圆

发表于 2022-12-15 14:49:43 | 显示全部楼层
Nuker 发表于 2020-7-2 17:12
楼主说的这些坑都踩过,有时候改一个低频时钟域的赋值语句,会导致主时钟域最高工作频率降20%,真是隔山打 ...
(引用自2楼)

请问安路FPGA您还在使用吗,500K采集与SD存储,有做过吗,可以合作。

出0入17汤圆

发表于 2022-12-15 14:52:53 | 显示全部楼层
大神两年前就开始用国产安路了,我之前帖子提到的500K采样然后高速存储,有时间做吗?

出0入442汤圆

 楼主| 发表于 2022-12-15 15:10:13 来自手机 | 显示全部楼层
HZKJ 发表于 2022-12-15 14:49
请问安路FPGA您还在使用吗,500K采集与SD存储,有做过吗,可以合作。
(引用自16楼)

sd没有用过,这个效率不好提高。500k你随便找个mcu就搞定了的。。上fpga大材小用了。我们都是单fpga挂多路高分sensor做一些前处理+图像采集用的。

出0入17汤圆

发表于 2022-12-15 15:37:51 | 显示全部楼层
wye11083 发表于 2022-12-15 15:10
sd没有用过,这个效率不好提高。500k你随便找个mcu就搞定了的。。上fpga大材小用了。我们都是单fpga挂多 ...
(引用自18楼)

MCU实时性不太好,高速连续存储感觉不可靠。
生产成本高点可以接受,所以选FPGA
您看用其他存储芯片好做吗,1G字节就够了。

出0入442汤圆

 楼主| 发表于 2022-12-15 15:40:30 来自手机 | 显示全部楼层
HZKJ 发表于 2022-12-15 15:37
MCU实时性不太好,高速连续存储感觉不可靠。
生产成本高点可以接受,所以选FPGA
您看用其他存储芯片好做 ...

(引用自19楼)

fpga做复杂任务真不如mcu。。你找个fifo芯片,就不用实时了。

出0入17汤圆

发表于 2022-12-15 18:38:41 | 显示全部楼层
wye11083 发表于 2022-12-15 15:40
fpga做复杂任务真不如mcu。。你找个fifo芯片,就不用实时了。
(引用自20楼)

目前的思路是用芯片内部的容量RAM做双缓存,但是速度还是跟不上。
大神能加个微信吗,方便的时候留言请教,也方便给您发红包。HZKJ6688
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 20:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表