yhzhangstrive的个人空间 https://blog.eetop.cn/280659 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

设计总结【一】——关于第一个FPGA设计的总结

已有 701 次阅读| 2013-4-1 19:57 |个人分类:FPGA

参加工作已经半年,所做的项目也到了测试阶段,之前做的一个子模块已集成到系统,由于是第一个设计,所以模块的健壮性很不好,别人看我的代码估计会吐血,就连现在叫我自己去看,可能好多地方一时半会都看不明白,而且设计的时候除了specification就没其他文档,整个项目过程中版本控制做的很不好,项目完成之后也没做什么总结就忙着参与到第二个项目中,以前一直用verilog HDL,而这个项目要用VHDL,所以得边学边做,不过还好,项目难度系数不大。扯远了,该总结了。通过第一个项目,coding的一些经验:

1. 代码风格很重要,他直接决定设计的健壮性及可靠性,好的编码风格以后维护起来也很方便,同时也方便交流。

2. 写spec的时候,端口信号的命名,内部模块之间的连接信号都要定义好,而且确定下来之后,尽量不要改动。另外,信号及变量名要有意义,以提高代码的可读性,方便与同事交流。

3. 如果可能,尽量采用同步设计,尽量一个模块采用一个时钟,如果有data或pulse需要同步,则单独用一个同步模块来同步。后面我或总结一些同步设计的方法,把设计当中用到的同步方法都总结出来(主要是快时钟域到慢时钟域及慢时钟域到快时钟域的同步)。

4. 尽量采用多的注释,大家一看都知道怎么回事的地方就不用注释了。

5. “时序是设计出来的,不是凑出来的”,虽然知道这个道理,但做第一个设计的时候还是没有遵守这个规则,以至于到后来设计完了,总感觉很多时序都是在仿真中不断的修改,凑出来的。这样就导致设计健壮性差,可维护性也很差。以后的设计一定要注意,写完整个设计的spec之后,还应该有一个design details specification,把各国模块之间的时序以及模块内部一些关键信号的时序详细的设计出来。后面coding喝simulation的工作量会减少很多。

6. coding完之后,编写testbench也是一个至关重要的环节,尽量把所有case都考虑进去。

7. 设计的容错处理很重要,比如接收数据超时处理等。

8. 设计能采用状态机尽量采用状态机设计。

9. 接到task之后,制定一个清晰的schedule很重要,并且严格按照schedule执行。

【未完待续】


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 3

    粉丝
  • 0

    好友
  • 4

    获赞
  • 6

    评论
  • 2422

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-23 19:30 , Processed in 0.017123 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部