FPGA从零开始到大神怎么学

1 选好一本比较全,排版比较合理的verilog书

       verilog作为现在最流行的FPGA开发语言,当然是入门基础,在这里小编给大家推荐一本多年来珍藏的两本书,一本是verilog2001的国际标准,还有一本是某高手写的非常全面的语法讲解书,下面是百度网盘链接,全免费的:

链接:https://pan.baidu.com/s/1tstjmKqFcDEkoH1hd43IXA 密码:b17x     

请大家切记:不要先看完语法书再动手学FPGA!

        强烈建议:把以上两本书作为工具书,也就是看到不明白的地方直接去查阅。每次查阅都会加深印象,对常见的语法也记得牢靠,不常见的语法也就不用浪费时间去记。        

2 从最简单的代码学起

        找到工具书后,找到最简单的基础实例(带仿真例程)开始看起,看不懂查阅工具书。看完之后用ISE或者Vivado综合,然后看RTL图,你就能看到这些代码最终翻译成了什么样的数字电路。

        紧接着就是仿真或者上板实测:用仿真的信号输入到你写的模块里面,你才能清晰的知道最终电路输出是什么结果,是否和你想的一致。如果不一致,找到不一致的原因。对于简单设计,仿真和实际上板是看不出差别的。

        另外:明白你写的代码是什么电路是整个FPGA设计永远的核心!如果你发现你有一天对自己写的代码非常清楚他出来是什么样子,那么恭喜你入门了!换句话说,就是要学会用机器的思维去看你的代码,只有多综合你才能懂xilinx的编译器是什么综合规律(以后公众号里也会详细讲),用机器去理解机器才是最好的理解!

        下面我分享一些适合初学者的案例,顺序由易到难:

        1.N bit计数器(FPGA综合的计数器和数电书上是不一样的哦,大家仔细去对比)

        2.LED控制,也就是单个信号输出规律控制,比如输出1s闪一次等等

        3.用状态机控制LED,比如按键A,按下是0.5s闪烁一次,再次按按键A是1s闪烁一次等等,可以自己自由编写。

        4.任意整数分频

        5.DDS设计

        6.模拟串口通信,比如波特率9600,起始位和停止位各1位,校验位没有。就按这种方式跟上位机通信看看能否正常工作。这个如果你能实现说明你已经有了一个质的飞跃,能够基本懂得verilog怎么设计电路了。

        7.SPI通信,也是比较简单的一种协议,不论做主还是从都可以试一下

        8.I2C通信,难度和SPI差不多

        9.学会常见IP核的使用

        在这里小编也附上一些自己学习时候的代码,以及ISE视频教程下面是百度网盘链接:

        超多实例源码链接:https://pan.baidu.com/s/1tt1W9dlFMI_CqlXd_ksa6A 密码:zkmq

       ISE视频教程链接:https://pan.baidu.com/s/1KfhLXPAYaLq5IFSxemFxvg 密码:g97e

3 进阶教程

        总的来说,进阶要掌握以下几点:

        1.时序约束的原因和使用方法,能熟练正确的应用最基本的时钟周期约束,时序例外约束,异步时钟域约束,同步复位的约束,高扇出约束

        2.清楚xilinx芯片内部时钟资源分布,能够知道自己的代码和约束能否让编译器用比较优化的走线布局布线。

        3.清楚内部嵌入式硬核的分布和合理使用

        4.懂得常见的异步时钟域正确传输的常见方法:握手信号,异步FIFO,同步器

        5.能看懂时序报告里面基本的一些参数

4 高阶教程

        高阶教程是无止境的,但是如果你学会以下几点你已经步入高手行列:

        1.对FPGA所有常用时序约束和时序例外约束,包括逻辑锁定的方法都能正确使用

        2.能够跟据时序报告做出合理的改进时序的方案

        3.清楚各种时序优化方案的大概极限

        5.能够在FPGA平台上实现一些复杂算法:比如PID调节,FFT变化,FIR滤波器,神经网络等等

        6.对大规模,大吞吐量的逻辑设计能够在需求输入的时候有一个大概的总体方案,大致要能够一下想到时钟方案,复位方案,高速接口方案这些该怎么做,或者能不能做到

        总之,高阶教程会让人离FPGA更远,把FPGA最为一个底层平台去实现一些抽象高深的理论。其实不管是CPU还是FPGA都是工具,工具里面的算法实现才是最重要的。

发布了54 篇原创文章 · 获赞 89 · 访问量 68万+

猜你喜欢

转载自blog.csdn.net/ayang1986/article/details/103638291