| 银杏科技有限公司旗下技术文档发布平台 | 
	
		| 技术支持电话 | 0379-69926675-801 | 
	
		| 技术支持邮件 | Gingko@vip.163.com | 
	
		| 版本 | 日期 | 作者 | 修改内容 | 
	
		| 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不亮。