当前位置:文档之家› 手把手教你学FPGA 设计思想篇

手把手教你学FPGA 设计思想篇

泽屹电子手把手教你学FPGA设计思想篇阿东团队编著手把手教你学FPGA 设计思想篇目录写在前面...................................................................................................................................... - 4 -1 什么是设计思想.................................................................................................................... - 6 -2 概述........................................................................................................................................ - 6 -3 代码简单化............................................................................................................................ - 6 -4 注释层次化............................................................................................................................ - 7 -5 交互界面清晰化.................................................................................................................... - 7 -6 模块划分最优化.................................................................................................................... -7 -7 代码工具化............................................................................................................................ - 8 -8 方案精细化............................................................................................................................ - 8 -9 资源合理化............................................................................................................................ - 9 -10 时序流水化.......................................................................................................................... - 9 -11 资源优化方法.................................................................................................................... - 10 -12 代码自检............................................................................................................................ - 10 -13 通用电路BB化.................................................................................................................. - 10 -写在前面作者简介:大家好,我是阿东,我在通信行业做了10年的芯片设计,做了几款大型路由器和交换机芯片,写了10年的Verilog,对Verilog是熟悉的不能再熟悉了,对数据通信、QOS有深入研究和实现,精通数据通信各种协议,对通信网络有较深理解。

精通ASIC、FPGA和Verilog架构、方案、实现设计。

希望我的经历能让大家掌握项目开发的编码规范、设计思想、方案设计,给大家的学习和发展略进绵薄之力。

已经推出的教材包括:《手把手教你学FPGA_语法篇》《手把手教你学FPGA _编程规范篇》《手把手教你学FPGA _仿真篇》《手把手教你学FPGA _设计思想篇》。

后续还会推出更多相关资料,包括方案设计、视频教程等,请大家关注我们。

我们的FPGA论坛,欢迎大家访问:我们的FPGA开发板网站,欢迎大家访问:https:///上述教材的很多例子程序都可以在我们开发板配套光盘中找到,配套光盘里面还有更多更好的例子。

我们的淘宝店铺:本店专注于FPGA开发板,有低端、中端、高端开发板供大家选择。

1、EP4CE6 FPGA开发板: (包括开发板+USB Blaster下载器+电源线+2个DVD光盘):适合没有任何基础,可以用来做学习和一般项目使用。

https:///item.htm?spm=a1z10.1-c.w4004-1006554551.2.30df85ddnc1gGg&id=35 911884243备注:现在购买还送配套书籍一本(北航出版):https:///item.htm?spm=a1z10.1-c.w4004-1006554551.8.30df85ddhlb93f&id=540 8656362942、中端EP4CE10 FPGA开发板: (包括开发板+USB Blaster下载器+电源线+2个DVD光盘): 适合没有任何基础、有一定基础,可以用来做学习和一般项目、电子竞赛、NIOS。

https:///item.htm?spm=a1z10.1-c.w4004-1006554551.6.30df85ddnc1gGg&id=52 05887679083、高端EP4CE30 FPGA开发板: (包括核心板+底板+USB Blaster下载器+电源线+2个DVD光盘): 适合没有任何基础、有一定基础、基础较好,可以用来做学习和高级项目、NIOS。

https:///item.htm?spm=a1z10.1-c.w4004-1006554551.10.30df85ddnc1gGg&id=3 9939126777还有更多的开发板、配套外设、配套书籍可以直接到我们的淘宝店铺:https:///联系我们:QQ :1530384236旺旺:dongguo100QQ群:185735160 (欢迎加入)阿东FPGA论坛:/ (拷贝到浏览器中打开即可)1 什么是设计思想当前数字电路设计越来越复杂,一个项目里面每个人写的代码越来越多,及万行或者几十万行都越来越正常了,这么多的代码,如果没有一套完整的设计方法学,那么编写和重用是非常困难的。

设计方法学包括:编码规范,设计思想,设计流程,重用规范,代码检视方法等。

设计思想主要是有经验的老员工的经验积累,新员工和初学的人最欠缺的就是设计思想,因为这个是需要经过大型项目锤炼才能获得的。

2 概述本教材的设计思想主要包括代码简单化、注释层次化、交互界面清晰化、模块划分最优化、代码工具化、方案精细化、资源合理化、时序流水化、资源优化方法、代码自检、通用电路BB化。

3 代码简单化很多初学者和没有经过正规项目实践的人可能觉得代码写的越复杂越有水平,笔者最开始学习Verilog也是这样想的,每每看到复杂的代码都崇拜不已。

其实不是这样的,当前项目越来越复杂,新写的代码都需要经过多轮检视和后续项目重用,如果您的代码写的复杂无比,那么带来的检视、重用工作量是巨大的,也是项目周期不容许的,所以最好是使用简单的语句和逻辑实现复杂的功能,越简单越好。

能把一个复杂的东西使用简单的语句表达出来,是一种很好的能力。

代码简单化有几点建议:1)使用最基础和常见的语法,也有利于工具的资源优化。

2)少用复杂的语法,如“~^”、“===”等。

3)复杂功能分析清楚,语句之间越少耦合越好。

4)尽量不要使用状态机,状态机综合的电路较难分析,而且和其他电路相比还需要分析状态机覆盖率;4 注释层次化代码越复杂,注释的意义越大,注释分层可以提高对代码的理解和方案的划分。

注释层次化有几点建议:1)使用步骤1、2、3、4等编号描述.V文件的结构划分和功能。

2)每个步骤里面可以包括子步骤1、2、3、4等。

3)每个子步骤如果还是很复杂,可以继续划分子子步骤。

4)每个子步骤包括几个always或者assign块逻辑。

5 交互界面清晰化交互界面清晰化指的是模块间接口或者模块内子模块交互简单、清晰、没有歧义。

因为涉及到接口配合的地方一般都不是一个人完成的代码,凡不是一个人完成的事情都需要理解对方的意图,都是容易出问题的地方。

交互界面清晰化化有几点建议:1)接口定义越简单越好,需要避免耦合太多。

2)信号功能描述清晰,没有歧义。

3)信号最好在任何时候代表的都是相同的功能。

4)从系统方案层面划分接口,保证接口耦合性最少。

6 模块划分最优化复杂系统一般都是由多个模块一起完成的,如果模块划分不合理,会出现模块间耦合太多,导致系统不够健壮和清晰,很容易出问题,而且系统接受新需求能力不强,后续项目重用也比较麻烦。

所以模块划分是非常重要的一个环节。

让模块划分最优化是一个系统工程师必备的技能。

模块划分最优化有几点建议:1)完全理解系统的需求和规格。

2)对系统的实现要做到非常清楚。

3)划分的模块需要和熟悉系统的人讨论,大家都觉得是最优的时候才行。

4)模块间接口简单、清晰、没有歧义。

5)模块功能比较完整,同一个功能最好使用一个模块实现。

6)系统划分也要方便验证。

相关主题