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

2011-1-27 22:08 2297 5 6 分类: FPGA/CPLD

    参加工作已经半年,所做的项目也到了测试阶段,之前做的一个子模块已集成到系统,由于是第一个设计,所以模块的健壮性很不好,别人看我的代码估计会吐血,就连现在叫我自己去看,可能好多地方一时半会都看不明白,而且设计的时候除了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执行。

【未完待续】

文章评论1条评论)

登录后参与讨论

用户1113192 2011-2-9 17:32

不错 很有想法。
相关推荐阅读
用户313737 2014-03-08 00:11
【专题一】元器件之电阻
  电阻 1.电阻器的基本工作原理和主要特性 1.1 电阻器电路模型 电阻器与一个电感L串联,再与一个电容C并联。当电阻器的工作频率不是很高时,由于电感L的电感量很小而相当于桐庐,...
用户313737 2013-05-01 11:13
i2c
整理的i2c源码...
用户313737 2013-04-16 11:40
[博客大赛]在Modelsim中使用脚本进行仿真【一】—— 在ModelSim中添加Xilinx仿真库
在对FPGA的设计进行仿真的过程中,调用脚本进行仿真比直接使用GUI更方便。在使用之前,我们需要将Xilinx ISE仿真库文件加载至Modelsim中,这里使用ISE自带的工具 Simulati...
用户313737 2013-04-16 11:40
[博客大赛]在Modelsim中使用脚本进行仿真【二】—— 常用脚本命令
  加载Xilinx仿真库之后,下面编写脚本进行仿真,这里附上常用的脚本命令,以供参考: 文件名:simulation.do /****************************...
用户313737 2013-04-15 23:40
脉冲展宽与压缩电路【Verilog HDL】
采用时钟计数方法实现的单稳态脉冲展宽电路,能够有效、方便地对输入脉冲进行展宽和压缩。单稳态展宽电路的主要功能组成部件是单稳态触发器。单稳态触发器的工作特性具有以下显著特点。 (1) 稳态和暂稳...
用户313737 2013-04-15 23:34
【转】FPGA中常犯设计错误列表
  这是一个在设计中常犯的错误列表,这些错误常使得你的设计不可靠或速度较慢,为了提高你的设计性能和提高速度的可靠性,你必须确定你的设计通过所有的这些检查。 可靠性   **为时钟信...
我要评论
1
5
关闭 站长推荐上一条 /2 下一条