fpga实操训练(基础)

Posted 嵌入式-老费

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fpga实操训练(基础)相关的知识,希望对你有一定的参考价值。

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        之前我们虽然说过怎么编写verilog代码,怎么用iverilog软件和gtkwave软件进行仿真验证,但是一直没有说明如何在真实的板子上进行开发。今天正好来试一下。因为两年前买了ax301开发板,使用的是altera fpga,所以这些测试都是以altera为基础进行的。

1、准备quartus软件

        每个品牌的fpga都有自己的eda软件。比如altera,就需要自己安装quartus软件。这里使用的是quartus prime 17.1.0 lite edition版,不收费。厂家对这个版本进行了阉割,但是基本的测试和练习不受影响。

2、购买fpga开发板

        目前某宝上面的fpga开发板很多,大家可以根据自己的需求进行购买。我个人买的的是ax301。另外某火、某原子也都有对应的fpga板子,大家可以自己灵活购买。

3、安装usb2uart驱动

        现在出售的很多电脑、笔记本都没有串口,所以厂家提供的开发板都提供了usb2uart这个接口。既可以供电,也可以当串口使用,一举两得。对于ax301这个开发板,使用的驱动可以从这里下载,

https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads

4、安装quartus和jtag驱动

        除了quartus这个平台软件之外,还需要安装cyclone器件库。器件库都是以qdz文件结尾的。不需要单独安装。在安装quartus的时候,会自动把这些器件库一起安装的。

        另外,安装完quartus之后,还需要安装jtag驱动,一般在这个目录寻找即可,

C:\\intelFPGA_lite\\17.1\\quartus\\drivers\\usb-blaster

5、搭建好fpga环境

        fpga环境和笔记本电脑之间进行调试,只需要两条usb线即可。一条是usb负责供电和串口;一条usb负责jtag调试。

6、创建第一个工程led_test

        创建第一个工程,依次填写工作目录,模块名,

       选择空项目,

        跳过文件添加,

        根据开发板选择正确的fpga类型,直接finish。

 7、添加led_test.v文件,

         其中代码的内容如下所示,


module led_test(clk ,rst, led);

`define MAX_NUM 32'd4999_9999

// input signal
input clk;
input rst;

// output signal
output led;

// signal type
wire clk;
wire rst;
reg[3:0] led;

// inner signal
reg[31:0] count;

// count register
always@(posedge clk or negedge rst)
	if(!rst)
		count <= 32'b0;
	else if(count == `MAX_NUM)
		count <= 32'b0;
	else
		count <= count + 1'b1;

// led data
always@(posedge clk or negedge rst)
	if(!rst)
		led <= 4'b0001;
	else if(count == `MAX_NUM)
		led <= led[2:0], led[3];

endmodule

         将文件保存为led_test.v,

        在Project Navigator里面按Files显示视图,

         将led_test.v修改成top层,

         直接综合文件,

8、配置fpga属性,单击“Assignments”-》“Device”,选择“Device and Pin Options”

        不使用的pin修改为输入三态,

        “Dual-Purpose Pins”中的所有value都修改为“Use as regular I/O”,

        电压修改为3.3v,保存。

9、绑定pin脚,选择“Assignments”-》“Pin Planner”,按如下图配置,保存。

        每一个板子的pin脚绑定,最好参考对应的电路图,或者是excel文件。比如ax301,可以参考官方给出的qsf文件,

https://github.com/alinxalinx/AX301

10、再次编译,

11、选择“Tools”-》“Programmer”,准备烧入,一般是sof文件

      直接单击start,即可完成烧入。

      如果没有其他问题的话,就会看到一个流水灯的效果。

 其他:

        将verilog代码port到fpga开发板子上面是一个很重要的学习过程。在这个过程中,会遇到很多的问题,比如软件的下载、设备的连接、驱动的安装、jtag无法识别、下载后没有效果等等。但这又是一个不得不经历的阶段。只有通过不断犯错,才能让自己有所收益。毕竟所有的ip编写、仿真不是根本目的,最重要的还是要让板子动起来。

以上是关于fpga实操训练(基础)的主要内容,如果未能解决你的问题,请参考以下文章

fpga实操训练(fpga和cpu之间的配合)

fpga实操训练(fpga和cpu之间的配合)

fpga实操训练(uart串口)

fpga实操训练(uart串口)

fpga实操训练(一个典型的fpga系统)

fpga实操训练(一个典型的fpga系统)