搜索
bottom↓
回复: 14

FPGA中的模块编译后经常出问题,项目捉急中,求大神指导!

[复制链接]

出0入0汤圆

发表于 2014-8-30 12:41:13 | 显示全部楼层 |阅读模式
现在在做网络帧数据的处理,用的是stratixII:EP2S60F672,写了十多个module,涉及到LAN91C111的读写模块,RAM,FIFO,以及用状态机写的网络帧解析模块,时钟都是100Mhz,逻辑资源已用19%。现在问题越来越多,有一个问题很头疼啊!模块我都是一个一个写的,做了Modelsim仿真,用硬件做过测试。现在写新的Verilog代码或修改某个模块,会导致其他已经验证过的模块不能正常工作,有时添加或删除某个无关引脚再编译又能正常工作,感觉都要崩溃了。

以前出现问题时我用逻辑锁定和增量编译将某个模块锁定,项目能勉强继续下去,可现在感觉所有自己写的模块都可能出现这个问题,总不至于将所有模块都逻辑锁定吧?这个问题解决不了,对FPGA编程真是没信心了。

学了几天的TimeQuest的时序约束,看了看RTL视图,感觉还是云里雾里的,不知道如何解决现在的问题,求指导!

本帖子中包含更多资源

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

x

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

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

出0入0汤圆

发表于 2014-8-30 12:44:58 来自手机 | 显示全部楼层
可能正是你的时序约束不够严谨所导致的吧。从timequest方面解决问题思路是正确的。

出0入0汤圆

发表于 2014-8-31 18:18:19 | 显示全部楼层
跑下后仿有帮助吗?

出0入0汤圆

 楼主| 发表于 2014-9-1 15:37:26 | 显示全部楼层
cxhy 发表于 2014-8-30 12:44
可能正是你的时序约束不够严谨所导致的吧。从timequest方面解决问题思路是正确的。 ...

恩,以前没弄过时序约束,只是浏览过一些帖子和教程,现在准备深入学学。thanks

出0入0汤圆

 楼主| 发表于 2014-9-1 15:42:01 | 显示全部楼层
jm2011 发表于 2014-8-31 18:18
跑下后仿有帮助吗?

这要试试,关键是有些模块是已经硬件跑通了的,在后续开发编写其他模块时,有时再编译后就不能正常工作,用signaltap查看一些状态机的状态值都出现了异常

出0入0汤圆

发表于 2014-9-1 16:58:27 | 显示全部楼层
做做时序分析 尝试对关键路径加约束 设计里只有一个时钟?

出0入0汤圆

发表于 2014-9-3 18:44:53 | 显示全部楼层
连什么问题都没搞清楚,上来就时序约束,只会越搞越糊涂

出0入0汤圆

发表于 2014-9-3 18:47:40 | 显示全部楼层
1、检查逻辑功能有没有问题
2、检查代码中是否一没处理妥当的异步操作
3、查看时序报告看看时序有没有问题

出0入0汤圆

发表于 2014-9-3 21:45:23 | 显示全部楼层
看你这系统模块之间很简单啊,应当容易实现的

出0入0汤圆

 楼主| 发表于 2014-9-4 19:11:04 | 显示全部楼层
via 发表于 2014-9-1 16:58
做做时序分析 尝试对关键路径加约束 设计里只有一个时钟?

恩,通过PLL输出两个时钟,一个10MHz,一个100Mhz,主要模块都是共用100Mhz时钟

出0入0汤圆

 楼主| 发表于 2014-9-4 19:19:22 | 显示全部楼层
蓝色风暴@FPGA 发表于 2014-9-3 18:47
1、检查逻辑功能有没有问题
2、检查代码中是否一没处理妥当的异步操作
3、查看时序报告看看时序有没有问题 ...

逻辑功能仿真测试都没问题,但是模块中的几个主要状态机(50多个状态)的写法不规范,现在准备按照书中提倡的规范写法来改写。
另外TimeQuest时序分析显示有相当多paths的建立余量为负值,准备着手解决。

出0入0汤圆

 楼主| 发表于 2014-9-4 19:22:32 | 显示全部楼层
NJ8888 发表于 2014-9-3 21:45
看你这系统模块之间很简单啊,应当容易实现的

恩,本身模块不多,但是数据发送中1万帧会丢10多帧,接收在高速时也容易丢帧。需要把整个调试完善后再集成到高速数据采集系统中。

出0入0汤圆

发表于 2014-9-4 21:31:10 | 显示全部楼层
100M时钟还是有点高的.你要仔细检查每个逻辑,确保1个clk内能完成.或者说,一个clk内不要做太多逻辑运算.实在不好处理的,分拆到两个clk.
确保Fmax不要离100M太远

出0入0汤圆

发表于 2014-9-4 22:46:23 来自手机 | 显示全部楼层
yueshengzing 发表于 2014-9-4 19:19
逻辑功能仿真测试都没问题,但是模块中的几个主要状态机(50多个状态)的写法不规范,现在准备按照书中提 ...

50多个状态机......楼主之前做软件的吧,顺序思维太浓了吧,fpga除非迫不得已,否则基本是用逻辑就能搞定

出0入4汤圆

发表于 2014-9-5 10:10:06 | 显示全部楼层
1. 每个时钟都要添加时钟约束, 不满足约束的信号加流水线处理
2. 每个进出芯片脚的信号要用时钟打一下, 消除路径延时.  同时把管脚信号放IOB里.
3. 跨时钟域的信号要加两级缓冲或者FIFO,双口RAM.  RXC,TXC,100M主clk要处理好.
4. 每个模块先独自仿真, 最后添加顶级的仿真, 确保逻辑正确.
5. 状态机多没事, 只要时钟处理好, 保证逻辑正确.  即使不做后仿真一般都没事.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-24 03:17

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

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