1. FPGA加速的意义 fpga作为一种器件,只是实现目的的一种方法,过度追求实现的技术细节(用hdl还是hls,用啥芯片,用啥接口)容易只见树木不见森林。工具软件的用法也好,器件的架构也好,语言孰优孰劣的争论也罢。工程应用里大概更多应该去考虑适合的实现方式,现在software define network/flash/xxx,已然大势所趋,算法是纲,纲举目张。是因为在实现上需要有流水线,多路并行,快速部署的目的所以考虑使用FPGA,而不是为了使用而使用。 不管实现目的的方法是FPGA还是DSP甚至是GPU,这些都是工具,工程师的核心竞争力除了在于熟练地掌握开发的技巧。更重要的在于信号与系统、数字信号处理、图像处理之类的让你了解算法、优化算法的基石;以及数字电路、微机原理、处理器体系结构这些让你了解为什么这些工具要这样设计,要这样发展的课程(系统学习一点体系结构,那么这些数据级并行、指令级并行、线程级并行的处理器就不再陌生了)工程师应该顶天(了解应用,了解算法)也应该立地(了解工具,掌握技巧)。 许多人觉得学校教的东西老土(还在讲8086、讲74LSxx),但是这些老土能流传至今就是因为它们经典,它们最朴素地阐明了这个行业所要解决的问题以及基本的思想。技术潮流千变万化,但是这几门核心的课程才是给你介绍了什么在指引着潮流。
2. 开发资料获取与学习信息繁杂的互联网年代,知道如何去获取有用信息是一项重要能力,这部分资料官方给了很明晰的指引。 关于工具和IP
下载个Xilinx Docnav,里面有全套文档
上图最左边那一列,看Vivado Design Hubs。从宏观讲System-level design flow,再到具体的综合、仿真,约束等等步骤。
里面每一栏分两类文档,user guide 和 tutorial。前者相当于词典或者说明书,用来查细节。后者是一系列lab,含工程、代码以及step by step的讲解
关于芯片 or 板卡的
上图左边找到对应的板卡,比如zynq就是zc702/706,
每块板卡都有几个可以用来做模板抄的工程,一个是基本功能的BIST系统,一个是复杂一点的Base Targeted References(BTR)这俩工程一般你能用到的IP和功能都给你做了例子,有代码有工程由step by step讲解
关于具体应用
开发具体应用的去查xapp xxxx,图像处理、通信、编解码各路应用都有,有代码有工程,修修补补照抄就行。不过现在也逐渐在迁移到wiki,附一个wiki链接: https://xilinx-wiki.atlassian.net/wiki/spaces/A/overviewxilinx-wiki.atlassian.net/wiki/spaces/A/overview
关于PCB or SCH
画PCB Layout的移步上图的Board Files,有原理图、Layout,都是有工程有BOM的,删改下不用的器件,改改尺寸照抄就行。 3. 其他
我们不生产代码,我们只是Xilinx的搬运工;平时拿IP玩连连看。
总之学会查文档,一切都不叫事儿了。
zynq其实就是个外挂FPGA的ARM处理器,你平时咋用Microblaze就咋用Zynq。至于PL,PS的问题,PS是ARM的处理器咋用它就咋用,写C/C++,再GDB调试;PL是FPGA咋用它就咋用,写RTL,ModelSim/ISim仿真、ChipScope调试。
顶多加个软硬件互相触发调试,cross-trigger的教程全家桶见ug940 ug1165。全系统连arm拿Modelsim逻辑仿真办不到,你arm上还要起linux呢,这得仿真多久。。。。。流片时才这么仿,得用Emulator仿好久,比如C家Palladium,S家Zebu。
最好习惯看英文文档,都干这行了,看中文二手资料治标不治本。长篇文档不要憷,也没让你看全文,都是当字典查的。新华词典那么厚,不也没人通读一遍么。
|