• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

FPGA如何入门

IC求生之路 2017-06-30 浏览量:1289
有一个赛灵思的开发板
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 刚开始需要一本xilinx HDL书,当时我看的好像是田耘那本,夏宇闻的也可以,利用按键,开关和LED一开始按照书上跑组合逻辑,玩的顺手之后把晶振用上跑一些时序,比如流水灯之类的,这里一定注意HDL和CPU语言的区别,并行和串行的理解一定到得位,之后就可以跑一些标准IP比如FIFO DCM BRAM等等,玩的好了再搭建一些更复杂的设计并一步一步深入,HDL只是基本描述工具,其实FPGA玩的是时序和约束。
    • 发布于 2017-06-30
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:8
  • 从基本逻辑控制开始,建议学习verilog语言
    • 发布于2017-06-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 对于理论上,要学习数电,这个是基础中的基础。


    之后,就是使用VHDL去实现一些数电电路。

    入门后,就是按例程走吧。

    • 发布于2017-06-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 先学习数电模电知识学下,然后理解基本逻辑门电路以及功能,至于语言你可以采用verilog或者VHDL语言都行,但是如果初学者建议用verilog语言,这个更贴近c语言,比较容易懂。


    • 发布于2017-06-30
    • 举报
    • 评论 0
    • 0
    • 0

  • FPGA的核心就是数电和VHDL语言,将这两个学会了就够了


    后面还有一些进阶的东西比如软核系统等,有需要的时候再去学

    • 发布于2017-07-01
    • 举报
    • 评论 0
    • 0
    • 0

  • (一) 要了解什么是FPGA

    既然要玩转FPGA,那我们首先最重要的当然是要了解什么FPGA。FPGA(Field-Programmable Gate Array),即现场可编程门阵列。看到编程两个字码农就笑了,不就是编程嘛,那可是我们的强项。且慢,此编程非彼编程。一定要把FPGA的编程和软件编程区分开来。软件的编程,处理器会逐条的把语言翻译成各种控制信号,去控制内部电路完成一个个运算或操作。那么FPGA的编程是怎么实现的呢?无论Altera家还是Xlinix家的FPGA,叫法有什么差异,基本单元都相似,都是由真值表和D触发器构成。改变真值表的值就改变了逻辑功能,再通过和D触发器组合来实现任何时序逻辑。所以我们对FPGA的编程,实际上就是去修改这些真值表和连接关系,使他们组成一张专门的真值表,去实现特定的功能。这和软件编程一步步运行程序有本质的区别。要想玩转FPGA,就必须理解FPGA内部的工作原理,学习如何利用这些单元实现复杂的逻辑设计。

    (二) 正确理解HDL语言

    HDL(Hardware Description Language),硬件描述语言。通过名称我们能看出来,HDL语言是一种“描述”语言,这一点和C语言是有本质区别的。正确理解描述的含义,对学好HDL语言很有帮助。HDL语言只是用文本的方式把硬件电路描述出来。我们在阅读HDL程序的时候,在脑子里应该能反映出一个完整的硬件电路结构。从另一方面说,我们在编写HDL语言之前,就已经对要实现的电路有清晰的概念。所以HDL语言只是一个描述我们头脑中具体电路的工具,玩转FPGA的根本不是语言而是逻辑电路设计。不要再纠结于我应该学习VHDL还是Verilog,那种语言更好学这些问题。如果把学习FPGA的重点放在学习语言上,死记硬背一些语法,那自然是抓错了重点。语言在日常使用中会越用越熟练,不需要花很长的专门时间去学习。当然一本好的参考资料可以随时方便查询会是很有帮助的。

    (三) 数字电路基础

    说到底,FPGA就是一堆数字逻辑组合在一起实现特定功能而已。所以数字电路基础知识是根本。如果你连触发器,组合电路,时序电路,竞争,毛刺等等基本概念还莫能两可不清不楚的话,那玩转FPGA只能是痴人说梦的幻想了。我们必须要好好的学好数字电路基础这门课,基本的数字电路烂熟于心。把这些基础打牢固,再往更深的方向发展。什么时候能够从抽象的算法中提炼算法的结构,再分解成具体的模块并通过硬件电路实现出来,这时候就算从菜鸟级别步入老鸟级别了。

    (四) 硬件设计思想

    这一点应该说是重中之重。学习FPGA,一定要有硬件设计思想。在软件编程的时候,比如1秒钟能实现5次乘法运算,那系统要求1秒钟实现50次乘法运算怎么办,我们会尽可能的优化代码,让代码更简洁更高效,或者提高系统主频,让系统跑的更快。但是在FPGA里面我们不是这种思维方式。在FPGA里实现一个乘法器不够用,那我就实现两个实现三个去满足系统要求;我可以进行流水线设计;串行运行方式不够快了,我可以先串并转换,再并行的做处理……只要FPGA的资源够用,我可以充分利用资源去满足系统要求。因为在我手里的就是一堆硬件资源,我要做的是把他们组合成一个好用的电路。评价硬件描述语言写的好坏的标准和其他软件编程语言的标准是完全不同的。因此一定要摒弃软件编程的一些固有思路,学会用硬件的方式去解决问题。时刻提醒自己正在设计的是一个电路,而不是一行行空洞的代码。这是很多做软件编程的人很难跨过的坎。FPGA学了很久还在纠结到底是用if_else语句好呢还是用case语句好?而不能透过这些语句表面看到他们所具体代表的电路。只有建立了硬件设计思想,才有更深入学习FPGA的可能。

    FPGA入门简单精通难。要想入门,买一块开发板跟着例程走一遍,很多人都能在很短的时间内熟悉开发软件的操作方法并且点亮开发板上的LED或者再实现个跑马灯什么的。但是再往后进步往往就进展很慢。上面提到的这四条是玩转FPGA的基础,只有打好了坚实的基础后面才能一马平川。希望每个学习FPGA的人最后都能成为大牛,设计出自己的完美电路。



    如何入门FPGA

    https://wenku.baidu.com/view/51bdfe8683d049649b6658aa.html

    1.png

    • 发布于2017-07-02
    • 举报
    • 评论 0
    • 0
    • 0

  • 那好好使用这个赛灵思开发板,再买一本语法书快速入门。多看入门视频
    • 发布于2017-10-16
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

FPGA如何入门