当前位置:文档之家› EDA技术按键控制LED实验

EDA技术按键控制LED实验

昆明理工大学信息工程与自动化学院学生实验报告
( 201 —201 学年第学期)
课程名称:EDA技术开课实验室:年月日
一、实验目的
1、熟悉FPGA开发完整流程
2、熟悉管脚分配,熟悉编程
二、实验设备
1、带有quartusII 软件的PC 机一台。

2、 FPGA 实验箱以及电源线下载线。

三、实验要求
实现8 个SW 按键控制8 个led 灯亮灭。

四、实验原理
1、按键控制led 灯原理:
本实验是通过按键的电平控制led灯。

其示意图如图 2.1。

图 2.1按键控制led 示意图
8 个SW 按键控制相对的8 个led 灯,当SW1 在上方,其余按键在下方时,此时SW1 为高电平,这时SW1 对应的led 被点亮。

2、模块符号:
图 2.2为按键控制led模块符号。

图 2.2 按键控制led 模块符号
3、源码:
module key1(key,led);
input[7:0] key;
output[7:0] led;
reg[7:0] led;
always@(key)
begin
case(key)
8'b00000001:led<=8'b00000001;
8'b00000010:led<=8'b00000010;
8'b00000100:led<=8'b00000100;
8'b00001000:led<=8'b00001000;
8'b00010000:led<=8'b00010000;
8'b00100000:led<=8'b00100000;
8'b01000000:led<=8'b01000000;
8'b00000000:led<=8'b00000000;
endcase
end
endmodule
五、实验步骤
1、打开quartusII 开发环境,建立工程、添加相应源文件(选目标芯片时,应采用EP2C35F672C8芯片)。

2、分配管脚
1)修改tcl 文件:
➢要在FPGA硬件芯片上运行程序,通过管脚分配才能实现我们的程序与硬件的连接,所以,管脚分配是很重要的一步,若是分配不对,就不能实现预期效果。

➢其实,管脚分配也是很简单的。

有一个文件,以.tcl为后缀名,这个文件不会编译自动生成,需针对相应的芯片编写。

本实验不需自己编写此文件(已针对实验系统编写好setup_35.tcl),以后每次自己建立工程,只要把这个文件复制到自己的工程文件夹里就可以了,下面是这个文件的一部分内容。

#clk
set_location_assignment PIN_P1 -to clk
#rst
set_location_assignment PIN_R4 -to rst
#led
set_location_assignment PIN_H23 -to led\[0\]
set_location_assignment PIN_G26 -to led\[1\]
set_location_assignment PIN_G25 -to led\[2\]
set_location_assignment PIN_K22 -to led\[3\]
set_location_assignment PIN_G24 -to led\[4\]
set_location_assignment PIN_G23 -to led\[5\]
set_location_assignment PIN_P18 -to led\[6\]
set_location_assignment PIN_N18 -to led\[7\]
➢#号后的是注释,不是实质内容,这个文件里的内容格式都是这样的,包含了本实验的模块,包括clk,rst,led 等的管脚分配,其中用红色标注的部分是FPGA 芯片的引脚名,在做开发板时,FPGA 芯片和各个模块(led,key等)都连接好了,所以这些引脚也就和各个模块连着了。

➢用蓝色标注的部分是我们程序中的引脚名。

这个文件就是把程序中的clk,led 和开发板上的真的clk,led 连起来,这样程序才能在开发板上运行。

我们只要保证程序中的引脚名和蓝色部分一样就好了,无论修改哪里,这个过程就是管脚分配,所以不管我们编辑什么程序,只要将蓝色部分改成我们编写程序的输入输出引脚名就行。

2) Run tcl 文件:
➢分配好管脚后,保存,我们还要run一下这个文件,来到quartus界面,看下图2.3
图2.3 Tools菜单栏
➢选择菜单tools,点击,在下拉菜单中选择tcl scripts,出现下图 2.4。

图 2.4 tcl scripts
➢选中图中蓝色部分,然后run,分配成功后,会出现下图 2.5。

图 2.5 引脚分配成功
➢分配成功后,如果是原理图输入的模块中clk 端会出现这样的标志,如果没分配成功,回去查看.tcl 文件是否有错。

3、配置:
➢编译前要进行一项设置,如下图 2.6。

图 2.6 配置目标芯片属性
➢在在图中蓝色部分右键,选择device,弹出界面如下图 2.7。

图 2.7 配置目标芯片属性
➢点击图标,弹出界面如下图 2.8。

图 2.8 配置目标芯片属性
➢点击图标,弹出界面如下图 2.9。

图 2.9 配置目标芯片属性
➢这里选择EPCS16,这是用来固化程序时用的,我们下载程序分两种方式,一种是下载到SDRAM 中,掉电程序丢失;另一种下载到flash 中,掉电不丢失。

这项设置就是为了使程序正确下载到flash 中。

设置好后确定。

4、编译
Run 后就可以编译了,不成功检查程序或引脚分配。

5、下载
1) 下载(掉电丢失):
➢本实验不需要波形图仿真,编译成功后就开始在开发板上运行,我们先用掉电丢
失的下载方式。

首先给实验板供上电,接上jtag接口。

然后点击图标,打开下载器,把我们的程序下载到开发板上,如下图 2.10。

图 2.10 下载界面
➢下载器驱动装好后,如果上边第二个红框是no hardware,则点击hardware setup 添加硬件,把生成的sof文件导入进来后,开始点start,下载成功后,如下图2.11。

图 2.11 jtag 模式下载完成
➢下载成功后,就在开发板上看到我们程序效果了,实现了跑马灯功能。

2) 下载(掉电不丢失):
➢接下来我们试着用掉电不丢失的下载方式,这里这样设置,如下图 2.12。

➢导入pof 文件后,Start 开始下载,然后也能实现和jtag 下载一样的功能了,而且掉电也不会丢失,除非在烧进新的程序时,会自动擦出旧程序。

实验截图:
心得体会:经过这次实验,我对按键控制LED有了进一步的了解,对如何通过编程利用按键控制LED的亮灭,怎样调整LED 的闪烁频率有了进一步的经验。

六、思考练习
实现按键控制跑马灯,按1 键从左向右,按2 键从右到左,选目标芯片,本实验箱核心板采用EP2C35F672C8芯片.
module led_water(clk,led,key);
input clk;
input[1:0]key;
output[7:0] led;
reg[7:0] led;
reg[50:0] cnt;
reg[3:0] cntm;
always@(posedge clk)
begin
If(key==2’b00)//当第一个按键按下时,灯从左向右亮,否则就从右向左亮 begin
//判断是否延时到了规定时间
begin
cntm<=cntm+1; //cntm加1,灯向右移一个
cnt<=0; //计时清零
end
else
begin
cnt<=cnt+1; 计时加1
end
if(cntm>=8) //如果cntm大于等于8,就清零
begin
cntm<=0;
end
end
else
begin
cntm<=cntm-1; //cnmt减1,灯向左移一个
cnt<=0;
end
else
begin
cnt<=cnt+1;
end
if(cntm<=0) //如果灯移到最左边,就给cnmt赋值8,让流水灯从最左 //边开始亮
begin
cntm<=8;
end
end
always@(posedge clk)
begin
case(cntm)
1:led<=8'b01000000;//1
2:led<=8'b00100000;//2
3:led<=8'b00010000;//3
4:led<=8'b00001000;//4
5:led<=8'b00000100;//5
6:led<=8'b00000010;//6
7:led<=8'b00000001;//7
default:led<=7'b00000000; endcase
end
endmodule。

相关主题