虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。
先上一篇PPT:RSPwFPGAs BookIntro v2.pdf
再转一篇e-Mail:
很高兴能认识两位技术专家,并得到你们的帮助。
我使用Altera的芯片和工具已经有10多年了,对其工具的易用性感受很深。在工作中,我自己写了一些用于仿真、调试的工具,也结合实际,把一些软件开发中常用的配置管理工具引入到了FPGA产品开发中。在我的第一份工作中,我就已经开始使用版本管理工具和迭代式开发方法,我们那时候叫“小步快跑”。从工具角度看,版本管理、回归测试、自动化脚本是敏捷开发必不可少的要素;从开发方法看,迭代式开发、提早集成、每日发布、及时反馈和重构是敏捷开发的精髓。这些从软件工程中得来的工具和方法,也适用于FPGA开发,毕竟FPGA开发离不开编码,而且芯片本身也是可编程和可重构的。然而,工具和方法都是形式上的。敏捷开发真正的难点在于“落地”,也就是结合工程开发的具体情况,调整工具和方法的使用,使其服务于具体的工程开发实践。把形式上的敏捷,转变成本质上的敏捷。
我们要做的这本书,就是要结合一个具体的工程,把敏捷开发的方法和工具,“落地”到FPGA开发中,有针对性地解决一些FPGA开发者经常遇到的“痛点”。
工程的选取,我现在的想法是在EasyGX上,开发一个兼容Intel 82574L的PCIe千兆网卡。通过这个工程,读者可以掌握SG-DMA PCIe接口设备的开发,可以掌握RGMII以太网接口设备的开发,并打通从Linux OS到互联网/云的数据通路。在此基础上,可以进一步扩展线速度网络协议卸载(我之前做过UDP协议卸载的产品,TCP协议卸载的原型,IEEE1588的硬件辅助实现),OpenCL异构计算(EasyGX的板上资源是否能够支持,还有待考证),以及PCIe存储协议接口(我正在做的一个开源项目)。
工程中涉及到的知识点有:芯片底层IO特殊功能的使用、Serdes的使用和调试、PCIe IP Core的使用、Qsys层次化架构的使用、DMA的设计和使用、一个最小功能以太网MAC的开发、仿真模型的设计和使用、C和System Verilog联合仿真接口的设计和使用。
工程中涉及到的工具有:Qsys、多个基于Virtual JTAG的调试工具、Quartus Tcl脚本、Modelsim Tcl脚本、TimeQuest时序约束和分析、GIT版本管理工具。
工程中涉及到的方法有:FPGA工程的版本管理方法、FPGA工程的自动化发布方法、FPGA工程的回归测试的方法、FPGA迭代式开发方法。
全书的篇章按照迭代式开发的方法,从骏龙提供的PCIe DMA参考设计出发,每一章扩展开发一部分功能,引入一部分工具和方法。每一章自成体系,具备一个迭代周期的全部内容:需求分析、目标分解、任务实施、回顾反思、下一阶段计划。
以上是我对这本书的一些计划和想法。邮件中提到的(3)和(4)超出了我的能力。我们可以考虑请另外一位作者加入或者另起一本书来做。
关于本书涉及的一些素材,可以参考我放在开源代码中的几个工程和附件中的PPT。
Hardware Assisted IEEE 1588 IP Core: http://opencores.org/project,ha1588
Bus Transaction Monitor with JTAG: http://opencores.org/project,bustap-jtag
EasyGX-Qsys-PCIe-Study: https://git.oschina.net/riple/EasyGX-Qsys-PCIe-Study
谨以此文作为本系列文章的开篇。
ilove314_323192455 2015-10-22 14:04
用户1696769 2015-10-21 17:06
用户1669570 2015-10-21 13:43
ash_riple_768180695 2015-10-20 19:31
用户377235 2015-10-19 08:48
wenxings_326063143 2015-10-11 08:12