FPGA 从零开始学习

FPGA 从零开始学习

第一章 工欲善其事必先利其器–各类工具安装

  1. FPGA开发工具安装
  2. 软件配置和可能遇到的问题

第二章 系统搭建和硬件编程语言的学习

  1. FPGA硬件系统搭建
  • 设计思想与方法
  • VIVADO创建一个完整的工程流程
  1. 硬件编程语言的学习

FPGA硬件系统的搭建--VIVADO创建一个完整的工程流程


前言

初学的人最迷茫的就是怎么开始一个工程?(比如我···)这里我会用一个简单的例子从代码开始,完成整个工程流程的创建,直到上板调试程序固化完成。整个走一遍,就会掌握一个工程从代码到烧录到芯片的全部过程,希望给初次学习的人能提供一些帮助。


VIVADO创建工程全过程

1. 详细创建过程

首先第一步,我们编写一个非常简单的代码。

// LED
module led(
  input key,
  output led
);
assign led = key;
endmodule

Verilog学习我后续再写,目前值学了一丢丢。这里就是举个例子,很简单一个按键输入,一个LED输出,按键的高低电平直接输出点亮LED,没有用任何逻辑单元。(点灯注意一下,这里按下去是低电平,所以实际板子上肯定是灌电流点亮)
1
编完代码,我们就要进行编译和仿真了,这里打开Modelsim,创建新的Project(软件的安装配置见FPGA从零开始学系列其他文章)。
2
我起名叫led,“Project Location”是工程路径,也就是你的存放位置,然后点击OK。
3
出现上图,我们已经有了.v的代码,所以选择“Add Existing File”(添加已有文件),指定文件位置。
4
这里就可以看到文件已经加入,看到那个蓝色的显眼包“?”了吗?因为代码没有编译,所以就是这个状态。
5
右键编译,可以选择 Compile Selected(编译所选)和Compile All(编译全部),如果这里有好几个.v的代码,那第一个就是编译你选中的其中一个,后面就是全部编译。
6
编译完成没有报错就是上图状态,蓝色的问号变成了绿色的对号。下面进行仿真,右键出现下图。
7
这个代码是没办法仿真的,因为只定义了输入输出接口,没有激励信号。要仿真需要再添加一个仿真文件(TestBench),就是一个定义了激励信号的.v文件,过程和前面一样,也添加到这里,不重复描述了,我就用led.v来举例子。
8
在 Design 标签(Modelsim 中当前包含的全部库)页面中选择 work 库中的 led 模块,在 Optimization 一栏中勾选“Enable optimization”,对优化选项进行设置,OK。
9
进入如图界面,注意左下角的三个标签,分别对应库文件界面,工程界面和仿真界面,现在我们就在仿真界面。
10
右键添加波形
11
就可以看到波形了,这里介绍上面两个常用按键,左边红圈Restart,如果仿真出错,我们去修改代码,然后在上面说过的工程界面重新编译,编译完成重新仿真就点Restart,会清空所有波形。右边红圈Run,就是开始仿真。
12
这里就可以看到仿真波形了(我添加了仿真文件)。这里我们的前期准备工作就都完成了,开始VIVADO创建工程。
13
Create Project,起名led,下面的创建子目录根据需要勾选,勾上会自动创建工程子目录,也可以自己创建。
14
创建RTL工程
15
添加.v源文件
16
添加约束文件,如果有约束文件可以直接添加,没有可以空着,后面在管脚分配的地方生成约束文件。
17
选择FPGA型号,这个与自己手里的实际板卡对应就可以。我是用之前做的一个A7的板子做调试板用,所以选自了A7的型号。
18
创建完成,警告是提示没有管脚约束文件。
19
注意左边的三个视图,分析设计、综合设计、布线设计分别对应我们设计的不同阶段,目前就在分析设计阶段。
20
打开左边分析设计,点Schematic(原理图),就可以看到我们代码对应的功能模块,下面红圈就是管脚分配和电平标准设置,分配完成是黄色显示,未分配是灰色,完成后保存。
21
生成管脚约束文件XDC
22
点击XDC文件可以直接查看,里面就是我们刚才设置的管脚分配和电平标准。
23
接下来进行综合,红圈内可以看到当前状态,正在综合。
24
综合完成弹出界面,可以直接进行最后一步布线,也可以关掉从右边的布线界面打开,这里直接运行布线。
25
完成后可以看到状态,两个绿色的对勾,都是Complete。
26
这里可以打开综合界面的原理图查看,和分析界面相对比,多了输入和输出缓冲,这是自动生成的,也就是说这个功能实际上只用了FPGA里的一个输入和输出缓冲器。
27
打开Device就能看到FPGA内部实际使用的部分。
28
布线完成我们就可以生成bit流文件了,右边点击Generate Bitstream,这个就是在线烧录要使用的文件。
29
生成bit流文件成功
30
打开硬件管理器,用编程工具连接板卡的JTAG口,点击上图小红圈里的快速连接菜单。
31
连接成功出现上图,VIVADO正确识别FPGA,右键选择Program Device,在线编程。
32
选择我们刚才生成的bit流文件开始烧录,在线编程实际上是把程序写入了FPGA的SRAM里,这样你就可以在板子上测试你的代码要实现的功能了,SRAM内容掉电会失去,所以我们需要固化程序,烧录进FPGA的FLASH中,这样断电重启代码依然可以运行。
33
在Tools下面有生成FLASH配置文件的菜单
34
按照图中选择配置,格式MCS,Size选择板子上FLASH实际的大小,注意这里单位是Byte。接口也是按照实际选择,我板子上用的QSPI,选择bit流文件位置,下面校验项等也勾上。
35
吧唧!我这里报错了,看了一下是因为检测到的接口配置模式是1位的,我刚才选择的是4位,对应QSPI,需要改一下软件的配置模式。
36
打开布线设计界面,Tools下有菜单,如图红圈所示,编辑器件属性。
37
配置模式,选择和你的FLASH对应的就可以了,这里选中是高亮黄色,OK。
38
修改了配置模式需要重新生成一下bit流文件,然后用新的bit流文件再生成FLASH配置文件,成功如上图提示。
39
右键挂载FLASH芯片,选择板子上实际使用的型号。我用的windbond(华邦)的,这里会遇到问题,这个后面汇总再说。
40
挂载成功后烧录FLASH
41
添加生成的FLASH配置文件,擦除、编程、校验都勾上。
42
烧写成功提示
43
最后一步,右键设置从FLASH启动,大功告成。
至此,就完成了一个完成的工程流程。

2. 问题点汇总

A. FLASH接口选择问题;

一定要与实际芯片能支持的功能相一致,比如串行/并行,1bit/2bit/4bit。我遇到的就是软件配置是1bit,我根据实际芯片QSPI模式选择了4bit,所以报错了,修改配置并重新生成bit流文件。

B. 挂载FLASH芯片不识别;

这个就和VIVADO有关系了,在VIVADO的安装目录下:C:\Xilinx\Vivado\2023.2\data\xicom,这个文件夹里有个xicom_cfgmem_part_table.csv的文件,里面列举了所有能支持的FLASH型号。

我板子上用的华邦国产的,不在列表,所以是不支持的,如果用的镁光,可能就没问题了。这里解决办法是把国产芯片型号添加进列表,让VIVADO能识别出来。

在网上找了很多办法(解决办法网上很多),就是用文本编辑器打开上面的.csv文件,复制一段代码进去,作用就是把自己的型号添到列表中,还特别强调不能用EXCEL打开。所以我试了好多遍,好几种代码都没成功,最后只能用最笨的办法,直接EXCEL打开,在里面按照前面的格式添加进去,成了!所以这里其他同学如果遇到同样的问题,可以都试试,说不定哪种就能解决呢?也不是别人说不行就一定不行嘛!


总结

这篇主要是讲了如何从代码到上板卡调试最后固化程序完成完整FPGA工程开发流程。图有点多,篇幅太长,主要也是想详细记录下来每一步,让初学的人能简单直观的看到全部过程,自己也能从中得到收获,更熟悉一遍。

  • 38
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值