搜索
bottom↓
回复: 12

再一次验证FX2 68013的速度

[复制链接]

出0入442汤圆

发表于 2012-9-30 15:52:52 | 显示全部楼层 |阅读模式
上次由于使用外接时钟供IFCLK,性能平平(台机读/写34MB/s,老本读/写只有27MB/s),这次重写了一下,花了两天时间,特此总结一些现象,和FPGA新手们需要注意的一个仿真调试问题。
一、先介绍一下新模块能达到的最高速度。老本读/写如果采用只收发不验证的方式,速度可以达到40MB/s,如果带有验证,速度仍然只有27MB/s,应该是老本CPU处理能力较弱,导致USB控制器没有用满带宽。台机未测试,但是根据经验,速度只会更快,预期可以达到50MB/s,即USB2.0在Windows系统上的极限。
二、介绍一下调试过程中遇到的一些小问题。
1、前一天用FIFO花了一天时间写了个模块,最后发现,如果想实现连续读写,那么必须得有一个数据泵把数据从FIFO中泵出(FIFO延时有3个周期),这样泵长度就达到了6,带来的是巨大的资源开销,写到最后,发现模块占用了近1000个slices,而且运行总出错,漏数据或多数据。搞了一天,最后放弃。
2、当天夜里重写了一个小的模块,这次没有使用FIFO,而是使用了两个BRAM,其中为了优化性能,采用地址和数据计数器分开的方式,地址和数据计数器分别计数,在写USB的FIFO满时,自动把地址减1,另外为了确保数据可以直接从端口读取,采用了一个延时计数器产生BUF非空信号,经过仿真和DEBUG,最后模块仿真OK。杯具的是没有进行后仿真,因此连同上一次实验室的一些故障都没有发现。
3、今天上午进行上板通讯测试。结果发现死活都不正常,数据似乎只有最后一个字是正确的。一次发一个字,测试正常,然而一次发一组字,数据是杂乱无章的。怀疑是建立时间不够引起的,然而建立时间高达10ns+,不可能是建立时间的问题。然后进入单独收发测试,发没问题,FPGA发的任何数据PC都可以正常收到。收用了一个4字LED,发一个字,正常,也没发现问题。再把Loop接起来,上板,发现还是数据错乱的问题,这次发现了最后一个字一般是正确的。见鬼了。
4、下午,无奈中做了一次后仿真(前仿没有任何错误),调出系统时钟信号。OMG,系统时钟经DLL之后,输入的偏移高达5ns+!难怪死活不工作了。但是这个时钟偏移哪来的?想了一想,之前用的是GCLK3输入,DLL是放在DLL3上,现在改为FX2的IFCLK输入之后,时钟接到了GCLK1上。难道是这个问题?用Chip Planner看一下,果然,时钟信号从GCLK1PIN上跨过长长的布线来到DLL3上,然后BUF再跨过长长的布线接回DLL3上。我晕,忘了调整DLL和BUFG的约束了。调好位置,再上板,只发现了一个字的偏移,调回来,再测,一切OK。
三、介绍一点经验。
老鸟们可能会认为这问题很幼稚,然而,在一个项目运作过程中,肯定会有各种各样的小更改,难免会遇到我的情况。新的FPGA一般都会自动摆放DLL/PLL和BUFG,但是老的FPGA有的不会(比如我用的Spartan-IIE)。因此,在进行功能验证前,应当首先对系统时钟树进行后仿真验证,然后再进行前仿真功能验证。调整时钟输入管脚时,如果对应的PLL/DLL和BUFG做了约束,则必须要重新调整位置,以免出现捉摸不到的现象。有的新手上来就爱问,“我要不要用ChipScope来调试啊?“诸如此类的问题,说句实话,片内在线调试,除了偶然性错误分析之外,一般用不到。后仿真绝大多数也是用不到的。通常情况下,只要前仿功能正常,再验证一下时钟,上板都能正常工作。我的疏忽在于,没有进行时钟验证,浪费了我一天时间啊。想我也写了上W行verilog了,结果却在这个地方栽了个小跟头。

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-10-2 21:39:28 | 显示全部楼层
学习了!
LZ控制时序是用状态机实现的吗?时钟多大?

出0入442汤圆

 楼主| 发表于 2012-10-2 22:17:12 | 显示全部楼层
Coodool 发表于 2012-10-2 21:39
学习了!
LZ控制时序是用状态机实现的吗?时钟多大?

肯定用状态机啊。要不然怎么控制逻辑。时钟是来自FX2的48M时钟,经过DLL同步之后就可以以边沿形式操作了。

出0入0汤圆

发表于 2012-10-2 22:57:25 | 显示全部楼层
wye11083 发表于 2012-10-2 22:17
肯定用状态机啊。要不然怎么控制逻辑。时钟是来自FX2的48M时钟,经过DLL同步之后就可以以边沿形式操作了 ...

最近在维护一个代码,检测FIFO状态加+公司的协议控制,状态机时序开销好大。
我在想是否可以人工规划好时序,保证各信号间的相对时序,然后分块实现
这样可以减少状态机状态数目,或完全不用状态机。

之前写过一个Motorola借口控制时序,因为时序太紧,采用了上述手段,但是时序的确不太好控制,有点乱。

不知有没有什么其他的好办法?

出0入442汤圆

 楼主| 发表于 2012-10-3 04:30:21 | 显示全部楼层
Coodool 发表于 2012-10-2 22:57
最近在维护一个代码,检测FIFO状态加+公司的协议控制,状态机时序开销好大。
我在想是否可以人工规划好时 ...

没什么好方法,但是如果输入的时钟是稳定的,那就可以作为源同步来设计,这次我就用的源同步。只要控制好FIFO,麻烦还真有点。

出0入0汤圆

发表于 2013-1-11 09:56:18 | 显示全部楼层
请教下楼主, 根据SPEC, 建立时间最小需要18.5ns , 我看你写的是10ns+,  你这个建立时间够吗?

出0入0汤圆

发表于 2013-1-30 11:06:36 | 显示全部楼层
wye11083 发表于 2012-10-3 04:30
没什么好方法,但是如果输入的时钟是稳定的,那就可以作为源同步来设计,这次我就用的源同步。只要控制好 ...

请教下楼主, 根据SPEC, 建立时间最小需要18.5ns , 我看你写的是10ns+,  你这个建立时间够吗?

出0入0汤圆

发表于 2013-1-30 11:08:20 | 显示全部楼层
别误导啊. 你能达到50MB/s ???

出0入0汤圆

发表于 2013-6-6 14:50:59 | 显示全部楼层
楼主有没有开发过基于68013的USB摄像头?能否提供一些资料?

出0入0汤圆

发表于 2013-9-8 18:07:07 | 显示全部楼层
请教LZ,GPIF和slave fifo哪个快?

出0入0汤圆

发表于 2013-9-8 21:31:48 来自手机 | 显示全部楼层
看看。。。

出0入0汤圆

发表于 2013-9-11 18:53:55 | 显示全部楼层
jobsju 发表于 2013-1-30 11:08
别误导啊. 你能达到50MB/s ???

我感觉到不了

出0入0汤圆

发表于 2013-9-15 17:29:04 | 显示全部楼层
CY7C68013A
SYN SLAVE FIFO 模式 16BIT
FPGA设置工作与IFCLK同频,状态机不间断发数据给68013A,
PC机驱动使用LIBUSB
VC单线程
实测上传速度达到是38MBYTE/S 。
我觉得这个速度基本是USB2.0极限了!
再高可能达到,但是我觉得不一定能长时间稳定。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-24 07:12

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

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