FPGA经验分享 第一阶段 看了绝不后悔

博主详细记录了从Verilog语法学习到FPGA实战的全过程,包括Verilog的组合逻辑、时序逻辑、状态机设计,以及Vivado软件使用、仿真工具操作、各类协议实现等。通过敲代码、仿真验证和硬件调试,博主积累了丰富的经验,并分享了在UART、SPI、IIC、HDMI等协议调试中遇到的问题及解决方法。此外,还提及了论坛资源和学习心得,强调了实践和错误处理在学习过程中的重要性。
摘要由CSDN通过智能技术生成

Name:Percy 细致学习过程(仅供参考)
每个阶段学习完成之后需要有个输出:(学习总结)例如:Verilog学习总结,例程里面的ila测试数据截图,HDMI截图,仿真截图,等
一:语法类:
书籍千千万,可以选择自己合适的学习进步
1.参考学习语法书籍:1.Verilog入门(夏宇闻),2.FPGA 开发指南−ALIENTEK 新起点
大致学习流程:语法,组合逻辑,时序逻辑,状态机,仿真,验证实际板子,硬件调试。
●组合逻辑:加法器,选择器,乘法器
●时序逻辑(仿真):同步时序,异步时序,计数器。
●状态机:moore,mealy,三段式状态机
例如:
(1)一段式:整个状态机写到一个always模块里面,在该模块中既描述状态转移,又描述状态的输入和输出;
(2)二段式:用两个always模块来描述状态机,其中一个always模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出;
(3)三段式:在两个always模块描述方法基础上,使用三个always模块,一个always模块采用同步时序描述状态转移,一个always采用组合逻辑判断状态转移条件,描述状态转移规律,另一个always模块描述状态输出(可以用组合电路输出,也可以时序电路输出)。
●仿真:modelsim仿真代码编写。例如熟知:仿真中输入需要定义为reg,输出为wire。Initial语句。时钟生成:always # 5 clk=~clk;等
●Verilog语法:
Verilog语法:Verilog是硬件描述语言,在编译下载到FPGA之后,会生成电路,所以Verilog全部是并行处理与运行的。
Verilog的数字进制格式 :十进制 ,十六进制,十进制
Verilog的数据类型 :寄存器类型,线网类型 ,参数类型
Verilog的运算符 :算术运算符 ,关系运算符 ,逻辑运算符等
阻塞与非阻塞
If else,case,always,assign,wire,reg使用
Verilog入门(夏宇闻)上需要去学习的地方:
入门指南
Verilog语言要素
表达式
数据流建模
行为级建模
结构建模
验证
这里只是列举了一部分首先需要关注的地方,其余的地方,后面遇到可以来补充。
xilinx学习书籍:何斌的三大本
二:平台类
Vivado软件的使用:先照着开发板学习pdf进行软件整个过程学习/熟悉:PL+PS。
仿真工具:有自带的仿真工具,也有modelsim仿真工具,一定要多仿真
Quartusii,signalii,NIOSII(类似于VIVADO的sdk)
国产软件:Pango Design Suite
Ise
这些都需要联合仿真modelsim,平台的搭建要会
三:例程类
照着代码自己敲一遍简单的程序,理解其中的含义。注意:一定要敲,重要:比如简单的流水灯,pwm,按键控制程序,分频器,计时器,计数器,状态机。多仿真看结果。
fpga_altera新起点:上有许多实际的例子,可以作为后期参考学习:例如频率计,光传感,实时时钟,SDRAM,ov5640,AD/DA.
四:实践类:
基本的协议:需要掌握原理,编写代码。
uart分为3个电平标准:RS232,RS485,RS422.
Spi
Iic
Usb
Ps2
其他的一些常用的模块
五:论坛推荐
Csdn
Hi fpga
21c电子开发论坛
AET-中国科技核心期刊
Xilinx社区
Xininx的openhw
Fpga4fun
我的调试心得:(部分输出)
Uart:
RS232,RS422是全双工的,而RS485,是半双工的,调试的时候虽然uart底层一样,但是使能端口的配置是不一样的,需要去配置他的EN。而且出现了一个BUG:在485电平标准下,数据传输需要在输入输出之间延时几十ns,不然立即传输的话,总线数据异常,丢失高(一位)位数据。
Spi:
首先学习了SPI的工作模式,spi底层驱动编写:这个里面就涉及的有状态机,
了解了spi的器件:ARINC429(半双工SPI)
IIC
了解iic基本工作模式,学习Verilog的底层代码,学习了iic类型器件rtc,代码编写,进行下板验证:目前只是验证了秒的计数值
HDMI
开发板上的资源,了解硬件,在原有的程序基础上进行修改,输出字符,图片。
Rapidio:
高速传输数据总线,我来公司的第二个周就开始接触这个复杂的总线协议。首先需要一个方向去了解这个总线协议:博客→数据手册→探讨请教→看代码→写代码→仿真→单板自环测试→双板数据测试→引出上层配置io。
其中的话会发现许多的问题和疑问,我觉得最好的方法还是需要有逻辑的去发现和思考问题,然后解决问题,多写笔记,多画图,多看别人的博客调试经验(csdn)还有其他的fpga论坛.
can总线和ARINC429
学习can总线的时候顺便把ps那面的软件SDK给熟悉了,以及相关的配置。Can在ps那面是有外设的,并且有例程的。因为是arm那面的知识就没有过多的涉及了解。
Arinc429总线采用的是SPI半双工模式;基本就是读写控制寄存器的方式工作,了解了整个的流程,基本读写寄存器,报文格式,数据传输端口(两输入一输出),工作模式以及作用。
学习心得
Vivado软件心得:
出现了各种各样的错误。(如果你不出现错误就不正常了)
举例:最开始的时候会犯一些语法上的错误,然后与错误不断地争斗的过程中,那种低级的错误不会再犯了。让我也学会了看报错的那个英文,(有时候经常拿去翻译)。还有就是学会了ila测试呀以及ila测试过程中的一些犯错,最终也是顺利解决了。***说的我们是百度工程师(哈哈!)有问题对就上百度,然后你就会发现各种解决办法,这个就得看你的火眼精金了。然后不断地尝试,碰壁,再尝试,再碰壁,直到解决是一个过程(在硬件和软件联合调试过程中也是这样)。
Modelsim的仿真:
这个软件我简直吐了哇:最开始来的时候由于电脑原因(window10复制路径前面有个奇怪的字符)我的环境变量配置没有对。后面又出现了联合仿真不成功的问题:这个是tb文件没有写对的原因。如果你有一点点错误,那面就会一直转圈圈,不会进modelsim。而且vivado又不会报错,这个有点狗xue。后面慢慢熟悉了,就如我前面说的多敲代码,多出bug然后你就会少犯错了。
Ise:
基本的操作会了,也是和vivado类似,只是这个里面的东西是没有sdk的,没有PS那些的,属于纯逻辑设计。项目目前还没有接触这块。
Quartus:
以前在学校的时候就会了,给我的感觉就是编译的速度非常的快,不像vivado那样要半天,但是一些逻辑资源,IP核,以及处理速度在要弱于xilinx。
硬件类要会的一些:
看数据手册,看懂原理图,分析其中的工作模式,就如上面讲的uart分为三个电平标准,所以要具体问题具体分析。最开始的时候看英文手册很头疼,但是有了翻译软件这种神奇的东西,以他为主,然后翻译不对的地方再自己看为辅,节约时间以及降低在又要了解新知识的时候又要了解这些个英文单词的双重problem。后面的话看的数据手册多起来了。一些单词也是相同的,多看就熟悉起来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值