这是本文档旧的修订版!
	
		|   银杏科技有限公司旗下技术文档发布平台   | 
	
	
		| 技术支持电话 | 0379-69926675-801 | 
	
	
		| 技术支持邮件 | Gingko@vip.163.com | 
	
	
		| 技术论坛 | http://www.eeschool.org | 
	
	
		|   版本   |   日期   |   作者   |   修改内容   | 
	
	
		|   V1.0   |   2020-10-13  |   zgf   |   初次建立   | 
	
 
实验二:新建FPGA工程——驱动LED
一、 实验目的与意义
 学习HqFpga软件新建工程的方法和步骤。
 
 学习Verilog语言描述功能模块的基本语法。
 
 
二、 实验原理
三、 建立工程
 3、弹出新建工程向导对话框,在“工程目录”栏设置工程存放路径;在“工程名称”栏填写工程名称,这里以“led”为例; iCore3L双核心板的FPGA采用国产器件,西安智目标器件选择SL2S-25E,设计输入选择RTL描述;然后点击“下一步”。
 
 注意:
 
 不能把工作目录放在Windows的系统目录及其子目录下,包括(但不限于):桌面目录:C:\user\…\desktop, windows目录C:\Windows,程序安装目录C:\Program Files 或 Program Files(X86),等等。另外,工作目录名称中不能包含特殊字符,例如空格、括号等,也不建议包含中文字符。
 
 
四、 代码分析
 前面通过对各个步骤的详细介绍,讲述了从建立工程到编译下载实现的整个过程,下面对工程代码做个讲解。
 
 本工程较为简单,代码也很简短。首先是关键字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不亮。