Altera FPGA开发入门:软件安装与点灯与仿真(QuartusPrime & ModelSim)

目的

在这里插入图片描述
最近工作上有使用FPGA的需求,这里先拿个 Altera 的 EP4CE6E22C8N 来练练手。除去电脑,开发最低需求只需要一个核心板,一个 USB Blaster 下载器即可,加一起几十块钱就可以搞定。

软件与资料

开发软件

在这里插入图片描述
开发软件用的 Intel® Quartus® Prime Lite Edition Design Software Version 22.1.2 for Windows ,这个版本,免费且是最后一个仿真可以直接选ModelSim的版本(现在新的仿真软件Questa入门版也是免费的,不过我这里其它地方有用ModelSim的需求):
https://www.intel.com/content/www/us/en/software-kit/785086/intel-quartus-prime-lite-edition-design-software-version-22-1-2-for-windows.html

我这里下载单个文件的方式,只需要用到下面的软件和器件数据就够了:
在这里插入图片描述

仿真软件

仿真软件用的 ModelSim-Intel® FPGAs Standard Edition Software Version 20.1.1 ,安装时选择入门版不需要License:
https://www.intel.com/content/www/us/en/software-kit/750666/modelsim-intel-fpgas-standard-edition-software-version-20-1-1.html
在这里插入图片描述

芯片资料

EP4CE6E22C8N 属于Cyclone IV 系列的FPGA:
在这里插入图片描述

资料可以从下面页面找到:
https://www.intel.com/content/www/us/en/docs/programmable/767845/current/cyclone-iv-featured-documentation-quick.html
在这里插入图片描述

开发入门

在这里插入图片描述
这里并不介绍上图这种通用的FPGA开发流程,只是讲一讲上面的软件和单片机的大致开发过程步骤。

这里将实现一个LED灯闪烁的功能,过程中涉及新建项目文件、IP核使用、仿真、引脚分配、下载等。

首先介绍软件界面主要需要用到的部分按钮:
在这里插入图片描述

新建项目和文件

可以从 File -> New Project Wizard 选择创建新项目:
在这里插入图片描述

新建项目后选择创建代码文件(这里保持为 blink.v):
在这里插入图片描述

使用IP核

接下来就可以直接写代码了。不过这里用个软件自带的IP核来实现计时功能:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我的核心板上芯片的外部时钟是50MHz的,我准备用这个作为计数器输入,这样计数 25000000 次就是500ms。

编写代码和分析综合

接下来在 blink.v 中写点灯的功能代码:

module blink( // 声明模块
	clk,
	led
);

	input clk;            // clk为输入信号
	output reg led = 0;   // led为输出信号
	wire [27:0] count;
	
	counter counter_inst(
		.clock(clk),       // 连接计数器时钟和clk
		.q(count)          // 连接计数器计数值和count
	);
	
	always@(posedge clk)  // 在clk上升沿时
		if (count == 0)    // 当count为0时
			led <= !led;    // 对led值取反

endmodule

完成代码后可以执行分析和综合,没有错误的话可以看到设计情况:
在这里插入图片描述

仿真测试

接下来新建 blink_tb.v 文件(这种 xxx_tb.v 的命名方式只是一种常见写法 testbench )用于仿真测试,代码如下:

`timescale 1ns/1ns // 仿真时间尺度和精度

module blink_tb();

	reg sig_clk;
	wire sig_led;

	blink blink_inst(
		.clk(sig_clk),
		.led(sig_led)
	);

	initial sig_clk = 0;           // 设置初值
	always #10 sig_clk = ~sig_clk; // 每 10*1ns 翻转一次sig_clk(即50MHz信号)
	
	initial begin      // 开始执行
		#2_000_000_000; // 延时 2_000_000_000 纳秒(即 2000ms 或 2秒钟)
		$stop;          // 停止执行
	end

endmodule

分析综合没问题就可以开始用软件仿真了,首先在 Quartus Prime 中设置 ModelSim 的路径:
在这里插入图片描述
选择你自己的软件安装地址,比如我这里是 C:/intelFPGA/20.1/modelsim_ase/win32aloem

接下来添加仿真文件:
在这里插入图片描述
在这里插入图片描述

点击 QuartusPrime 软件中的仿真按钮会自动打开 ModelSim ,这里因为设置仿真时间为2秒,会非常非常慢,需要耐心等待仿真完成:
在这里插入图片描述
可以看到2秒内led信号确实每500ms翻转一次。

放大看信号的仿真情况符合设计:
在这里插入图片描述
需要注意的是每次仿真前都需要先关闭 ModelSim 软件。

分配引脚

引脚分配根据实际的电路图来,我这里用到下面两个引脚:
在这里插入图片描述

在软件中进行引脚分配和电平设置:
在这里插入图片描述

对于未使用到的引脚也可以根据需求统一设置:
在这里插入图片描述

编译下载

分配好引脚后可以进行编译,编译完成后会生成 .sof 文件可以通过下载器下载到芯片中:
在这里插入图片描述

下载前确保正确安装了下载器驱动:
在这里插入图片描述

在软件中选择下载器和文件进行下载,下载完成可以看到板子上LED灯闪烁:
在这里插入图片描述

生成固件烧录到Flash

前面的 .sof 文件烧录掉电后就失效了,想要固化的话需要烧录到Flash中。

我的板子上外部Flash用的 W25Q16JVSIQ ,它直接和FPGA相连,并没有引出别的烧录脚。所以我这里需要生成 .jic 文件,然后使用下载器通过FPGA将固件下载到Flash中。

在软件中生成 .jic 文件:
在这里插入图片描述

生成后就可以下载了,注意下载到Flash中会慢一些:
在这里插入图片描述
下载后需要上电重启板子观察效果。

除了使用 QuartusPrime 来下载,官方也提供了独立的 QuartusProgrammer 软件可以用来下载固件。

总结

现在来说因为工具软件生态等的完善,目前 Altera 的 FPGA 开发入门点个灯什么的还是非常简单的。能跑通流程,剩下的就是具体业务开发的工作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naisu Xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值