( 201 —201 学年 第 学期 )
课程名称:EDA技术 开课实验室: 年 月 日 年级、专业、班 学号 姓名 实验项目名称 教师评语 按键控制LED实验 A.了解□ A.强 □ A.达到□ A.规范□ A.详细□ B.基本了解□ B.中等 □ B.基本达到□ B.基本规范□ B.一般 □ 成绩 指导老师 该同学是否了解实验原理: 该同学的实验能力: 该同学的实验是否达到要求: 实验报告是否规范: 实验过程是否详细记录: C.不了解□ C.差 □ C.未达到□ C.不规范□ C.没有 □ 教师签名: 年 月 日
一、实验目的
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'b10000000:led<=8'b10000000; 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
if(cnt>=50000000) //判断是否延时到了规定时间 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
if(cnt>=50000000) 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)
0:led<=8'b10000000;//0 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
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务