这是本文档旧的修订版!
银杏科技有限公司旗下技术文档发布平台 |
技术支持电话 | 0379-69926675-801 |
技术支持邮件 | Gingko@vip.163.com |
技术论坛 | http://www.eeschool.org |
版本 | 日期 | 作者 | 修改内容 |
V1.0 | 2020-10-13 | zgf | 初次建立 |
实验二:新建FPGA工程——驱动LED
一、 实验目的与意义
学习HqFpga软件新建工程的方法和步骤。
学习Verilog语言描述功能模块的基本语法。
二、 实验原理
三、 建立工程
图 2-2 HqFpga软件主界面
图 2-3 新建工程
3、弹出新建工程向导对话框,在“工程目录”栏设置工程存放路径;在“工程名称”栏填写工程名称,这里以“led”为例; iCore3L双核心板的FPGA采用国产器件,西安智目标器件选择SL2S-25E,设计输入选择RTL描述;然后点击“下一步”。
注意:
不能把工作目录放在Windows的系统目录及其子目录下,包括(但不限于):桌面目录:C:\user\…\desktop, windows目录C:\Windows,程序安装目录C:\Program Files 或 Program Files(X86),等等。另外,工作目录名称中不能包含特殊字符,例如空格、括号等,也不建议包含中文字符。
图 2-4 新建工程参数设置
图 2-5 RTL输入可以通过添加源文件完成
图 2-6 设计管理界面建立新文件
图 2-7 设计管理界面编辑源代码并检查语法
图 2-8 向工程中添加建立的源文件
图 2-9 主界面RTL综合按钮
图 2-10 主界面可查看RTL综合后的资源利用情况
图 2-11 添加物理约束
图 2-12 添加引脚约束
图 2-13 FPGA三色LED的硬件原理图
图 2-14 绑定引脚信息
图 2-15 设置优化选项
图 2-16 点击“设计实现”按钮进行布局布线
图 2-17 全编译后生成bit文件,活页出现“下载/编程”按钮
图 2-18 弹出的HqFpga下载界面
图 2-19 下载过程中的信息提示
图2-20 HqFpga生成.bin文件的设置。
四、 代码分析
前面通过对各个步骤的详细介绍,讲述了从建立工程到编译下载实现的整个过程,下面对工程代码做个讲解。
本工程较为简单,代码也很简短。首先是关键字module,它和endmodule关键字定义一个模块,关键字module后面的字符就是模块的名字,本工程中模块的名字为led。
接着是模块的端口,即位于模块名后面小括号里的变量。本工程led模块有输入时钟和用于控制三色LED的输出,如下面代码中所示。
module led(
input clk_fpga,//25MHz
output [2:0] fpga_led
);
reg fpga_ledr;
reg fpga_ledg;
reg fpga_ledb;
always@(posedge clk_fpga)
begin
fpga_ledr<=1'b1;
fpga_ledg<=1'b0;//引脚输出低电平,对应颜色的发光二极管点亮
fpga_ledb<=1'b1;
end
assign fpga_led={fpga_ledr,fpga_ledg,fpga_ledb};
//--------------------led module end---------------------//
endmodule
在模块的内部,定义了三个寄存器变量fpga_ledr、fpga_ledg、fpga_ledb;always块以输入时钟的上升沿作为触发条件,控制三个寄存器变量的值分别为1、0、1。assign语句用于将这三个寄存器变量的值传递到控制三色LED的fpga_led变量,使fpga_led[2]=1,fpga_led[1]=0,fpga_led[0]=1,
至此实现了输出变量fpga_led的三位二进制值为101,而fpga_led变量对应的三位寄存器是连接到FPGA引脚,进而连接到三色LED的,那么,fpga_led的对应寄存器的值的变换,将直接影响fpga对应引脚的电平变化。即当fpga_led的值为二进制的101时,和fpga_led[1]寄存器对应引脚输出低电平,那么和此引脚相连的led两端的电压将变成3.3V,从而使LED发亮。
同理,当fpga_led变量对应的另外两个寄存器的变量为1时,对应引脚输出为高电平,则与这两根引脚相连的led两端电压为0,led不亮。