EDA技术按键控制LED实验

合集下载

EDA实验流水灯控制

EDA实验流水灯控制

彩灯控制器一、设计内容及要求:设计一个彩灯控制器,要求:1.四路彩灯从左向右逐次渐亮,间隔为1秒。

2.四路彩灯从右向左逐次渐灭,间隔为1秒。

3.四路彩灯同时点亮,时间间隔为1秒,然后同时变暗,时间为1秒,反复4次。

二、总体框图图(1)总体框图根据设计要求,电路设计大体思路如下:由脉冲发生器发出频率脉冲信号,利用计数器加法计数功能输出0000~1111的脉冲信号,经过数据选择器分别在0000~0011,0100~0111,1000~1111三个时段输出不同的高低电平,控制移位寄存器实现右移→左移→置数功能,从而控制彩灯按照设计要求实现亮灭。

三、选择器件本次课程设计所用器件如表一:表一本次课程设计所用器件1.同步二进制计数器74LS163表二7-3 74LS163功能表根据逻辑图、波形图、功能表分析,74LS163具有如下功能:管脚图逻辑符号1)1是同步4位二进制加法计数器,M=16,CP上升沿触发2)2既可同步清除,也可异步清除。

同步清除时,清除信号的低电平将在下一个CP上升沿配合下把四个触发器的输出置为低电平。

异步清除时,直接用清除信号的低电平把四个触发器的输出置为低电平。

3)3同步预置方式:当LD = 0时,在CP作用下,计数器可并行打入预置数据.当LD = 1时,使能输入PT同时为高电平,在CP作用下,进行正常计数。

4)PT任一为低时,计数器处于保持状态。

5) 5 CO为进位输出,可用来级联成n位同步计数器。

2.四位双向移位寄存器74LS19474LS194内部原理图74LS194四位双向移位寄存器具有左移、右移、并行数据输入、保持、清除功能。

1)从图1中74LS194的图形符号和引脚图分析。

SRG4是4位移位寄存器符号,D0~D3并行数据输入端、D SL左移串行数据输入端、D SR右移串行数据输入端、S A(M0)和S B (M1)(即9脚和10脚)工作方式控制端分别接电平开关,置1或置0,CP 时钟输入端接正向单次脉冲,清零端接负向单次脉冲,Q0~Q3输出端。

奋斗的小孩之altera系列第十七篇按键控制led

奋斗的小孩之altera系列第十七篇按键控制led

奋斗的小孩之altera 系列第十七篇按键控制led对于每一个的小实验,我们都可以把它看作是一个小项目,逐步的去分析,设计,调试,最后完成功能。

下面我们就开始我们的“小项目”。

项目名称:按键控制led。

具体要求:按下按键led亮,释放按键led灭。

通过分析上述的“项目名称”和“具体要求”,我们可以设计出如下的架构:当我们需要用到外部按键和led时,我们应该去分析它们的工作原理,如下:独立按键的电路图Led的电路图简单的分析得知:按键按下为低电平,按键释放为高电平。

输出为高电平时,led灭,输出为低电平时,led亮。

在verilog中/*······*/,中间的内容会被注释掉,不被编译进去。

‘//·····’表示这一行//后面的内容会被注释掉,不被编译进去。

设计代码如下:/*模块名称:key_led模块功能:按下按键led亮,释放按键led灭编写时间:2016-08-11作者:至芯科技----奋斗的小孩邮箱:zxopenhxs@*/module key_led (clk, rst_n, key, led);input clk;input rst_n;//低电平有效的复位input key;output reg led;//低电平led亮always @ (posedge clk or negedge rst_n )begin // 时序逻辑,异步复位if (!rst_n)beginled <= 1'b1;endelsebeginif (key == 1'b0)begin//按键按下led <= 1'b0;endelsebegin//按键释放led <= 1'b1;endendendendmodule激励代码如下:/*模块名称:key_led_tb模块功能:为key_led模块提供激励信号编写时间:2016-08-11作者:至芯科技----奋斗的小孩邮箱:zxopenhxs@*/`timescale 1ns/1psmodule key_led_tb;reg clk;reg rst_n;//低电平有效的复位reg key;wire led;//低电平led亮initial beginclk = 1'b1;rst_n = 1'b0;key = 1'b1;//复位时,按键释放# 200 // 复位200nsrst_n = 1'b1;# 200key = 1'b0;# 200//按下200nskey = 1'b1;//按键释放# 200$stop;endalways # 10 clk = ~clk;//50Mkey_led key_led_dut(.clk(clk),.rst_n(rst_n),.key(key),.led(led));endmodule笔者手中的板子的本地晶振为:50MHz。

EDA实训报告交通灯

EDA实训报告交通灯

《EDA技术与应用》实训报告学号:姓名:指导老师:实训题目:交通灯控制电路的设计1.系统设计1.1 设计要求设计交通灯控制电路。

1.1.1 设计任务①.借助EDA实训仪实现一个十字路口的交通灯控制系统。

数码管显示时间。

发光二极管显示东西南北方向的红、黄、绿灯情况,其中绿灯亮灯时间总是比同一时间红灯要少4秒,绿灯倒数结束后变黄灯,红灯倒数结束后变绿灯。

②.有些路段车流量较少或者突发紧急情况时,可以通过控制拨动开关调整交通灯控制。

以实现整个电路符合实际交通道路控制要求。

1.1.2 技术要求①.用EDA实训仪上的4只八段数码管分别显示道路东西和南北通行和禁止的倒计时时间。

②.能设置道路东西和南北两侧通行和禁止的倒计时时间,最大设置时间为99秒,最小设置时间为1秒。

③. 交通灯用红、绿、黄三种发光二极管(LED)显示控制的结果。

④. 红、绿、黄灯显示的次序应符合实际交通道路控制的要求。

1.2 方案比较①.老师给的原理图只有一个方向的数码管显示,操作比较简单。

②.实现四个方向和白天黑夜模式的数码管显示,有突发情况还可以使得交通灯倒计时停止在某个时间。

比较上种方案复杂。

1.3 方案论证通过方案①和②的比较,最终选择方案②。

因为东西南北方向都会有红、黄、绿灯的显示,其中绿灯亮灯时间总是比同一时间红灯要少4秒,绿灯倒数结束后变黄灯,红灯倒数结束后变绿灯。

有些路段车流量较少或者突发紧急情况时,可以通过控制拨动开关调整交通灯控制。

更符合十字路口交通灯实际的工作原理。

1.3.1 总体思路fpq分频器,将EDA实训仪主板提供的20MHz的主频经20000000分频后,得到电路所需的1Hz(秒)时钟。

减法器,产生道路东西和南北通行和禁止的倒计时时间。

kzq控制器控制电路,控制整个系统的工作。

控制器接收倒计时的结果,当倒计时归0时,改变电路的控制模式,输出倒计时的初始时间和交通灯亮灭控制信号。

以下为交通灯总体框图。

交通灯工作的四种工作状态:工作状态一:东西——红——倒计时:20→4南北——绿——倒计时:16→0 工作状态二:东西——红——倒计时:3→0南北——黄——倒计时:3→0 工作状态三:东西——绿——倒计时:16→0南北——红——倒计时:20→4 工作状态四:东西——黄——倒计时:3→0南北——红——倒计时:3→0 (以上四种工作状态循环进行)1.3.2 设计方案分频器计数器计数器控制器计数器2.各个模块程序的设计<1>.分频器的设计该模块自带的频率为20000000Hz的一个晶振接入,经过分频器后产生1S的时钟信号,然后由cout脚输出。

《EDA技术及应用》实验指导书

《EDA技术及应用》实验指导书

实验一组合逻辑器件设计一、实验目的1、通过一个简单的3-8译码器的设计,掌握组合逻辑电路的设计方法。

2、掌握组合逻辑电路的静态测试方法。

3、初步了解QUARTUS II原理图输入设计的全过程。

二、实验主要仪器与设备1、输入:DIP拨码开关3位。

2、输出:LED灯。

3、主芯片:EP1K10TC100-3。

三、实验内容及原理三-八译码器即三输入,八输出。

输出与输入之间的对应关系如表1-1-1所示。

表1-1 三-八译码器真值表四、预习要求做实验前必须认真复习数字电路中组合逻辑电路设计的相关内容(编码器、译码器)。

五、实验步骤1、利用原理图设计输入法画图1-1-1。

2、选择芯片ACEX1K EP1K10TC100-3。

3、编译。

4、时序仿真。

5、管脚分配,并再次编译。

6、实验连线。

7、编程下载,观察实验结果。

图1-1 三-八译码器原理图六、实验连线用拨码开关的低三位代表译码器的输入(A,B,C),将之与EP1K10TC100-3的管脚相连;用LED灯来表示译码器的输出(D0~D7),将之与EP1K10TC100-3芯片的管脚相连。

拨动拨档开关,可以观察发光二极管与输入状态的对应关系同真值表中所描述的情况是一致的。

七、实验结果八、思考题在输入端加入使能端后应如何设计?附:用硬件描述语言完成译码器的设计::LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY T2 ISPORT(A: IN STD_LOGIC_VECTOR(2 DOWNTO 0);Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END T2;ARCHITECTURE A OF T2 ISBEGINWITH A SELECTY <= "00000001" WHEN "000","00000010" WHEN "001","00000100" WHEN "010","00001000" WHEN "011","00010000" WHEN "100","00100000" WHEN "101","01000000" WHEN "110","10000000" WHEN OTHERS;END A;实验二组合电路设计一、实验目的1、掌握组合逻辑电路的设计方法。

按键控制LED灯

按键控制LED灯
(1) 共阴极接法。把发光二极管的阴极连在一起构成公共阴极, 使用时公共阴极接低电平。每个发光二极管的阳极通过电阻与输 入端相连。如图 5-3(b)所示。当笔画(字段)接高电平时被点亮。
(2) 共阳极接法。把发光二极管的阳极连在一起构成公共阳极, 使用时公共阳极接高电平,每个发光二极管的阴极通过电阻与输 入端相连。如图 5-3(c)所示。当笔画(字段)接低电平时被点亮。
2、模拟开关灯
参考程序如下: ORG 0000H L1: JB P3.2,L2
转到L2 CLR P0.0
SJMP L1 L2: JB P3.3,L1
SETB P0.0
SJMP L1 END
;如果P3.2的状态为1(1号键未按),则跳 ;1号键按下,P0.0清0,输出低电平,LED
发光
;如果P3.3的状态为1(2号键未按),则跳 转到L1
;2号键按下,P0.0置1,输出高电平,LED 熄灭
按下1号键时,P3.2=0,程序从L1顺序执 行,P0.0被清0,输出低电平,LED发光, 1号键未按下,程序跳转到L2,检测2号 键,即P3.3的状态,如果P3.3的状态为1 (2号键未按),则跳转到L1,完成一个 循环;如果P3.3的状态为0(2号键被按 下),程序从L2顺序执行,P0.0置1,输 出高电平,LED熄灭。最后执行 SJMP L1,回到开始处继续执行。
分析该程序,我们发现,当按下P3口外接的按 键时,与之连接的引脚变成低电平,单片机执 行MOV A,P3指令时,该引脚的状态输入到A中。 在执行MOV P0,A时,输出到P0口,与之对应 的P0口引脚为低电平,点亮相应的LED灯。 P3.2、P3.3、P3.4、P3.5分别控制P0.2、P0.3、 P0.4、P0.5引脚连接的LED灯。

EDA实验设计报告流水灯

EDA实验设计报告流水灯

EDA实验设计报告流水灯一、实验背景流水灯是一种光电组合组件,它大多由两个简单元件组成,一个是led发光二极管,另一个是电位器,可以改变二极管的亮度。

本实验以FATI0A0话题,使用IMO89C52单片机实现流水灯,探究LED的工作原理和单片机的控制原理。

二、实验目的1、通过练习,掌握FATI0A0开发工具的使用,熟悉FATI0A0的基础开发流程;2、掌握基于PORTA的控制方法,通过调节端口的输出电压,控制LED的亮度和闪烁;3、掌握基于定时器的控制方法,使LED实现流水灯效果;4、掌握电路结构和作用原理,用多种方式实现流水灯效果,利用延时函数编程,启用定时器0、定时器1和定时中断,掌握定时器的设置方法等。

三、实验环境本次流水灯实验由FATI0A0开发平台准备了硬件环境:实验台、IMO89C52单片机、晶振、电源、LED等组成。

四、实验步骤(一)编写程序1.首先利用CY8IDE软件设计并编写流水灯程序,开启定时器,通过定时中断实现LED 的闪烁;2.然后了解定时器1的设置方法,编写流水灯程序,将定时器1设置为内部计数,并设定中断周期;3.最后将定时器1设置为高中断优先级,以确保流水灯的互斥性。

(二)烧写1.连接实验台的FATI0A0和串口,Push连接拨码开关,检查元件布局是否正确;2.将编写的程序烧写到FATI0A0,同时将电源和晶振接到FATI0A0的连接器上;3.然后将烧写好的源代码下载到FATI0A0可编译环境,并在FATI0A0上启动,程序就会运行起来。

(三)验证1.将拉线连接到LED上,先检查LED是否能正常亮灭;2.将程序烧写到FATI0A0后,打开LED,检查流水灯效果,看是否按照要求显示;3.如果实验结果满足要求,实验就成功。

五、结论本次实验熟悉了FATI0A0开发环境的使用,掌握了PORTA的控制方法,熟悉了基于定时器的控制方法,使LED实现流水灯效果,用多种方式实现流水灯效果,利用延时函数编程,启动定时器0、定时器1和定时中断,掌握定时器的设置方法等,有助于更好、更全面地掌握IMO89C52单片机和流水灯的相关知识。

《EDA技术及应用》交通灯控制电路的设计

《EDA技术及应用》交通灯控制电路的设计1 系统设计1.1 设计要求1.1.1 设计任务1、用4个八段数码管分别显示道路东西和南北通行和禁止的倒计时时间。

2、能设置道路东西和南北两侧通行和禁止的倒计时时间,最大设置时间为99秒,最小设置时间为1秒。

3、交通灯用红、绿、黄三种发光二极管(LED)显示控制的结果。

4、红、绿、黄灯显示的次序应符合实际交通道路控制的要求。

5、其它功能。

1.1.2性能指标要求设计一个交通控制器,用LED 显示灯表示交通状态,并以8 段数码显示器显示当前状态剩余秒数南北方向绿灯亮时,东西方向红灯亮;反之亦然,二者交替允许通行,南北方向每次放行99s,东西方向每次放行99s,南北红绿灯始终比东西红绿灯快3s。

每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为3s。

因为开发板没有绿黄灯,所以用两组三个led灯替代显示红黄绿灯。

南北方向与东西方向各用两个8位数码管显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。

1.2 设计思路及设计框图1.2.1设计思路本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。

设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下两个方向的都为红灯亮启,进入正常工作状态后,当南北方向红绿灯上绿灯亮时,东西方向红绿灯上红灯亮,各方向最后倒计时3s时,南北方向红绿灯和东西方向红绿灯上的代表黄灯的led灯亮启,持续3S后,南北方向红绿灯上红灯亮启,东西方向红绿灯上绿灯亮启持续99s,之后南北方向和东西方向上的黄灯都亮启3s,一个循环完成,循环往复的直行这个过程。

1.2.2总体设计框图根据任务需求,总体设计有:分频器模块、控制器模块、倒计时模块、红绿灯显示模块、码模块和译码显示模块如下图所示:2 各个模块程序的设计led红绿灯显示:module led(clk,led,N,D,cout,zt);input clk;input [6:0] N;input [6:0] D;output reg [5:0] led;output reg [1:0] zt;output reg [6:0] cout;always@(posedge clk)begincout=cout+1;if(cout<N-3)led=6'b100001;//南北绿灯,东西红灯else if(cout>N-3&&cout<N)led=6'b100010;//南北黄灯,东西红灯else if(cout>N&&cout<D+N-3)led=6'b001100;//南北红灯,东西绿灯else if(cout>N+D-3&&cout<N+D)led=6'b010100;//南北红灯,东西黄灯else if(cout==N+D)cout=0;if(cout<N-4)zt=0;else if(cout>N-4&&cout<N-1)zt=1;else if(cout>N-1&&cout<D+N-4)zt=2;else if(cout>D+N-4&&cout<N+D-1)zt=3;endEndmodule分频器:module div(clk,clkout);input clk;output reg clkout;Parameter CNT_MAX =50_000_000;//1s->1hz(50_000_000/1),0.5s->2hz(50_000_000/2=25_000_000) //parameter CNT_MAX = 1; //for simulationreg [25:0] cnt;always @ (posedge clk)if (cnt < CNT_MAX - 1'b1)cnt <= cnt + 1'b1;elsecnt <= 26'd0;always @(posedge clk)if(cnt == CNT_MAX - 1'b1)clkout=1'b1;elseclkout=1'b0; Endmodule调时控制:module ts(s,N,D,mode);input [1:0] s;input mode;output [6:0] N;output [6:0] D;j u1(.s(s[0]),.q(N),.mode(mode));j u2(.s(s[1]),.q(D),.mode(mode));Endmodule倒计时计数:module seg(clk,N,D,cout,zt,fs1,fs2); input clk;input [6:0] N;input [6:0] D;input [6:0] cout;input [1:0] zt;output reg [6:0] fs1;output reg [6:0] fs2;always@(posedge clk)case(zt)2'b00:begin fs1=N-cout-4; fs2=N-cout-1;end2'b01:begin fs1=N+D-cout-1; fs2=N-cout-1;end2'b10:begin fs1=N+D-cout-1; fs2=N+D-4-cout;end2'b11:begin fs1=N+D-cout-1; fs2=2*N+D-cout-1;endendcaseEndmodule计时输出:module j(s,q,mode);input s,mode;output reg [6:0] q;initialq=15;//初始从15开始启动always@(posedge s)if(mode)q=q+1;elseq=q-1;Endmodule数码管调用:// Module Function:数码管的译码模块初始化module segment7 (seg_datin,seg_led,en);input [3:0] seg_datin; //数码管需要显示0~f共16个数字,所以需要4位数据输入端 input en; //数码管使能端output [7:0] seg_led; //在DE10-Standard上控制一个数码管需要7个信号MSB~LSB=DP、G、F、E、D、C、B、Areg [7:0] seg [15:0]; //定义了一个reg型的数组变量,相当于一个16*8的存储器,存储器一共有16个数,每个数有8位宽initial //在过程块中只能给reg型变量赋值,Verilog中有两种过程块always和initial//initial和always不同,其中语句只执行一次beginseg[0] = ~(8'h3f) ; //对存储器中第一个数赋值8'b0011_1111,7段显示数字 0 seg[1] = ~(8'h06); //7段显示数字 1seg[2] = ~(8'h5b); //7段显示数字 2seg[3] = ~(8'h4f); //7段显示数字 3seg[4] = ~(8'h66); //7段显示数字 4seg[5] = ~(8'h6d); //7段显示数字 5seg[6] = ~(8'h7d); //7段显示数字 6seg[7] = ~(8'h07); //7段显示数字 7seg[8] = ~(8'h7f); //7段显示数字 8seg[9] = ~(8'h6f); //7段显示数字 9seg[10] = ~(8'h77); //7段显示数字 aseg[11] = ~(8'h7c); //7段显示数字 bseg[12] = ~(8'h39); //7段显示数字 cseg[13] = ~(8'h5e); //7段显示数字 dseg[14] = ~(8'h79); //7段显示数字 eseg[15] = ~(8'h71); //7段显示数字 fendassign seg_led = en?seg[seg_datin]:8'hff; //连续赋值,输入不同四位数,输出对于译码的8位输出,共阴数码管取反。

EDA实验quartus操作流程

EDA实验quartus操作流程3.1 应⽤QuartusⅡ完成LED的驱动⼀、实验⽬的通过实验,是同学们能够逐步了解、熟悉和掌握FPGA开发软件QuartusⅡ的使⽤⽅法及VHDL语⾔的编程⽅法。

⼆、实验内容SmartSOPC核⼼上有8个发光⼆极管LED1-LED8.在QuickSOPC核⼼板上LED1-LED8分别与FPGA芯⽚的第50、53-55、176和第47-49引脚相连。

本实验的内容是建⽴可⽤控制LED亮/灭的简单硬件电路,要求点亮SmartSOPC实验箱上的4个发光⼆极管(LED1、LED3、LED5和LED7)。

具体包括:(1)使⽤QuartusⅡ建⽴⼯程;(2)QuartusⅡ⼯程设计;(3)设置编译选项并编译硬件系统;(4)下载硬件设计到⽬标FPGA;(5)观察LED状态。

三、实验原理FPGA器件同单⽚机⼀样,为⽤户提供了许多灵活独⽴的输⼊/输出I/O⼝。

FPGA每个I/O⼝可以配置为输⼊、输出、双向I/O、集电极开路和三态门等各种组态。

做输出⼝时,FPGA的I/O⼝可以吸收最⼤为24mA的电流,可以直接驱动发光⼆极管LED等器件。

所以只要正确分配并锁定引脚后,在相应的引脚上输出低电平“0”,就可实现点亮该发光⼆极管的功能。

四、实验步奏1、使⽤QuartusⅡ建⽴⼯程(1)打开QuartusⅡ软件并建⽴⼯程①打开QuartusⅡ软件,软件界⾯如图1.1所⽰。

图 1.1②选择File—New project wizard来新建⼀项⼯程(注意是新建⼯程,不是New),如图1.2。

图1.2③任何⼀项设计都是⼀项⼯程,必须⾸先为此⼯程建⽴⼀个放置与此⼯程相关的所有⽂件的⽂件夹,此⽂件夹将被QuartusⅡ默认为⼯作库。

⼀般来说,不同的设计项⽬最好放在不同的⽂件夹中,⽽同⼀⼯程的所有⽂件都必须放在同⼀⽂件夹中。

不要将⽂件夹设在计算机已有的安装⽬录中,更不要将⼯程⽂件直接放在安装⽬录中。

项目二、按键控制LED

一、实验目的:
1、结合数字输入功能制作一个可控制的LED。

2、主要元件:UNO R3控制板、面包板、跳线、按钮开关一个
二、知识点:
1、按钮:常用来接通或断开‘控制电路’(其中电流很小),从而达到控制电动机或其他电气设备运行目的的一种开关。

我们用的按钮开关一共4个引脚分别为1、2、3、4如下图,其中1和2引脚始终相连(以下我们称它为A脚);3和4引脚始终相连(以下我们叫它B脚),当按钮按下时,A和B接通,不按按钮情况它们不连接。

三、实验内容或步骤:
1、搭建电路(参照下图)
2、下载以下程序,运行并记录结果
指导书中,要求截图清晰,在要求回答的地方用文字回答,注意排版美观。

07.开关控制LED灯实验

创建工程,设计输入操作参考流水灯实验
实验内容:开关控制LED灯左右移动
原理图
输入KEY[0-1],KEY[0]为移动触发按键,KEY[1]为移动方向选择按键
输出LED[0-7]
所用实验箱资源
名称
引脚
备注
SYS_RST
M16
核心板上的复位键
KEY[0-1]
T9,R9
按键或逻辑开关,B4,A3,A2
LED[7] <= LED[0];
end
else
begin
LED[0] <= LED[7];
LED[1] <= LED[0];
LED[2] <= LED[1];
LED[3] <= LED[2];
LED[4] <= LED[3];
LED[5] <= LED[4];
LED[6] <= LED[5];
LED[7] <= LED[6];
begin LED=8'H01; end
else begin
if(!KEY[1]) begin
LED[0] <= LED[1];
LED[1] <= LED[2];
LED[2] <= LED[3];
LED[3] <= LED[4];
LED[4] <= LED[5];
LED[5] <= LED[6];
LED[6] <= LED[7];
与LCD复用
电路代码:
moduletop(KEY,LED,SYS_RST);
input SYS_RST;
input [1:0]KEY;
output [7:0]LED;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

昆明理工大学信息工程与自动化学院学生实验报告 ( 201 —201 学年 第 学期 ) 课程名称:EDA技术 开课实验室: 年 月 日 年级、专业、班 学号 姓名 成绩

实验项目名称 按键控制LED实验 指导老师 教师评语

该同学是否了解实验原理: A.了解□ B.基本了解□ C.不了解

□ 该同学的实验能力: A.强 □ B.中等 □ C.差 □ 该同学的实验是否达到要求: A.达到□ B.基本达到□ C.未达到□ 实验报告是否规范: A.规范□ B.基本规范□ C.不规范□ 实验过程是否详细记录: A.详细□ B.一般 □ 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'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

相关文档
最新文档