文章目录
前言
第一次使用FPGA,试了一下点灯,熟悉FPGA从编写代码到烧写程序实现的过程。
一、新建项目
打开Quartus,选择新建一个项目
设置好项目位置和名字,选择NEXT
下一步添加文件,没有文件可以跳过,NEXT
根据所使用的芯片类型选择器件,如图,NEXT
选择仿真软件和编程语言,NEXT
最后一页是对前面选择的汇总,NEXT
二、编写程序
需要实现的内容:通过按键实现LED的亮灭。
下图为所使用的芯片中LED原理图,当引脚输出为逻辑0时,LED灭,输出1时,LED亮。
下图是按键的原理图,按键按下时从左侧输出低电平0,按键松开为高电平。
因此,当按键按下时,LED灭,按键松开时,LED亮。
1.代码编写
新建好项目后界面如图所示
点击文件图标,在弹出窗口中选择Verilog HDL File,点击OK。
出现编程界面
将该新建文件另存为.v文件,进行保存。
首先编写模块代码,类似于matlab里的函数
module led(key_in,led_out);
input key_in;
output led_out;
assign led_out = key_in?1'd1:1'd0;
endmodule
点击分析图标,对所写代码进行分析查看是否有错
编译通过跳出成功的提示框
编写执行函数
`timescale 1ns/1ns
module led_tb;
reg key_in;
wire led_out;
led led(
.key_in(key_in),
.led_out(led_out)
);
initial begin
key_in = 1;
#200;
key_in = 0;
#200;
key_in = 1;
#200;
key_in = 0;
#200;
end
endmodule
同样进行编译检查是否有错,完成后点击RTL Simulation进行仿真,仿真时会调用Modelsim软件执行
仿真后弹出的Modelsim界面如图所示,状态栏是灰色,点不了
点击灰色部分,状态栏便可恢复,点击图示的放大镜,便可预览所有波形,从波形上可以看出仿真正确。
2.布局布线,引脚分配
编译完成以后需要进行布局布线,点击三角按钮开始
弹出成功提示框
下面进行引脚分配,查阅芯片手册找到引脚分配,这里选择LED0和KEY1。
点击Assignments,下拉页面选Pin Planner
可以看出,软件已经列出了需要分配的输入输出端口,在Location处填入引脚名,然后关闭窗口
3.程序烧写
点击Programmer
弹出窗口中点击Add File添加文件
弹出窗口中选择output_files文件夹
接着选中.sof文件,点击Open
添加完如图所示,此时Start键是灰色,原因是没有连接板子,将板子连接到电脑上,点击Hardware Setup
弹出窗口选择USB-Blaster [USB-0],点击Close
点击Start开始下载,进度100%完成
完成以后,程序已经下载到芯片里,可以实现功能了。
按键松开时,LED点亮
按键按下时,LED熄灭
4.问题解决
4.1 Modelsim仿真弹出错误窗口
弹出错误提示框,原因是Modelsim的安装位置没有识别到
点击TOOL,在下拉选项卡中选择Options
点击EDA Tool Options,在右侧Modelsim-Altera中的安装路径有错误,需要更改
找到Modelsim的安装路径,并修改
修改如下所示
4.2Modelsim仿真错误
点击仿真时显示Nativelink Error,原因是上一个modelsim仿真文件没有停止并关闭,将其关闭后重新仿真便可以解决
4.3.Quartus仿真错误
点击三角按钮进行Compilation时出现以下错误,原因是电脑上运行Grammarly,产生了错误,将Grammarly退出即可解决问题。
参考链接
总结
本文记录了一下基础的FPGA从代码编写到实现的全过程。