电子沙漏试验报告
电子沙漏 数字电路与逻辑设计实验报告 题目题目: :电子沙漏电子沙漏 姓姓名名 学学院院信息与通信工程学院信息与通信工程学院 班班级级 任课教师任课教师 20192019 年年1212 月月 电子沙漏 目录 摘要和关键字 一、 任务要求 二、 系统设计(设计思路、总体框图、分块设计) 三、 仿真波形及波形分析 四、 代码及注释 五、 所实现功能说明及资源利用情况 六、 故障问题分析 七、 总结和结论 八、参考文献 电子沙漏 摘要和关键字 摘要 沙漏是一种古老的计时工具,也是一种玩具。西方沙漏由两个 玻璃球和一个狭窄的连接管道组成的。通过充满了沙子的玻璃球从 上面穿过狭窄的管道流入底部玻璃球所需要的时间来对时间进行测 量。电子沙漏用发光二极管表示沙粒,模拟沙漏的运动过程。电子 沙漏会像真正的沙漏一样,上部的沙粒(点亮的发光二极管)一粒 一粒往下掉,下部的沙粒一粒一粒堆起来。 本次课程设计中,使用 EPM1270T144C5N、Quartus ii 来完成设 计要求。 关键词 EPM1270T144C5N,按键消抖,时钟分频,扫描输出 电子沙漏 一、任务要求: 1、相关知识: 沙漏是一种古老的计时工具,也是一种玩具。电子沙漏用发光二极管表示 沙粒,模拟沙漏的运动过程。电子沙漏会像真正的沙漏一样,上部的沙粒(点 亮的发光二极管)一粒一粒往下掉,下部的沙粒一粒一粒堆起来。 在结构上,两组各 16 个发光二极管分别排列成为两个三角形,如图 1 所 示。其中:VD0 ~VD15 位于上部,排列成倒三角形;VD0 ~VD15 位于下部, 排列成正三角形。两个三角形的顶尖相对,组成沙漏形状。当上部有一个发光 二极管熄灭时,相应地下部就有一个发光二极管点亮,模拟了沙粒的运动。 2、基本要求: ①采用 8*8 双色点阵显示电子沙漏的开机界面,如图 2 所示。其中红色 LED 代表沙漏的上半部分沙粒 VD0~VD15,绿色 LED 代表沙漏的下半部分 VD0 ~VD15 。 电子沙漏 ②用拨码开关 SW1 模拟重力感应器。当 SW1 为低电平时,沙粒从 VD0~VD15 向 VD0 ~VD15 移动;当 SW1 为高电平时,沙粒从 VD0 ~VD15 向 VD0~VD15 移动。 ③按键 BTN0 作为计时启动停止按键,启动后沙粒即可按照 SW1 设定的 方向移动,以 SW1 为低电平时为例,LED 移动的顺序与对应关系如图 3 的 1~ 16 所示(若 SW1 为高电平,则点阵显示移动顺序为 16~1) 。每颗沙粒的移动 时间为 1 秒,当移动到图 3 的 16 时,若 SW1 仍为低电平,则保持沙粒不动, 但计时继续,直到 SW1 的电平发生变化或者 BTN0 计时停止。 ④设计实现一个 60 秒计时器,当按键 BTN0 启动时开始工作,用于在沙 电子沙漏 粒移动过程中进行计时校准,并用数码管 DISP0~DISP1 显示计时结果。 3、提高要求: ①可以调节控制电子沙漏的流动速度。 ②用多种方式呈现电子沙漏界面。 ③自行设定沙粒的移动路径,显示每颗沙粒的移动过程。 二、系统设计: 总体框图: 时钟 防抖模块输入 主程序 译码模块 输出译码 数码管、 点阵 显示 电子沙漏 分块设计: ①按键计数模块 control:process(timm,reset,shuzi) --按键计数 begin if (timm event and timm= 1 ) and (reset= 1 )then shuzi= shuzi+1; end if; end process; ②数码管控制模块 controlsmg: process(clk2,shownum,shuzi,reset,count) begin if(shownum(1)6) then if reset= 0 and (shuzi rem 2 =0) and (count=5)then if (clk2 event and clk2= 1 ) then if(shownum(1)=5) then if(shownum(0)=9) then shownum(0)=0; shownum(1)=shownum(1)+1; else shownum(0)= shownum(0)+1; end if; end if; end if; else shownum(1)=shownum(1); shownum(0)= shownum(0); end if; elsif( reset = 1 ) then shownum(1)=0; shownum(0)catcatsevensevensevensevensevensevensevensevensevensevenseven=“0000000“; end case; end if; end process; 电子沙漏 ④分频模块: clktim:process(clk)--分频模块 variable cout1: integer:=0; variable cout2: integer:=0; variable cout3: integer:=0; variable cout4: integer:=0; begin if clk event and clk = 1 then--扫描点阵和数码管 cout1:= cout1+1; if cout1= 25 then tim = 0 ; elsif cout1 50 then tim = 1 ; else cout1:=0; end if; cout2:=cout2+1; --扫描按键 if cout2= 4500000 then timm= 0 ; elsif cout2 9000000 then timm= 1 ; else cout2:=0; end if; cout3:=cout3+1;--沙漏快速移动 if cout3= 6250000 then clk1= 0 ; elsif cout3 12500000 then clk1= 1 ; else cout3:=0; end if; cout4:=cout4+1;--时钟计时及沙漏常规移动 if cout4= 25000000 then clk2= 0 ; elsif cout4 50000000 then clk2= 1 ; else cout4:=0; end if; end if; end process; 电子沙漏 流程图: 电子沙漏 三、仿真波形及波形分析: 点阵显示采用行扫描模式 电子沙漏 四、代码及注释 (见附件) 五、功能说明及资源利用情况: 本次实验完成了题目的所有基本要求以及调节速度的提高要 求,即用 8*8 双色点阵模拟了电子沙漏,实现了沙粒的流动;用拨 码开关 sw1 模拟了重力感应器;用 DISP0~DISP1 模拟了 60 秒计时 器;用按键 btn0 控制启动和暂停,btn1 实现复位,btn2 实现三种 速度的切换。 器件资源使用情况如下: Total logic elements:272/1270(21%) Total pins:43/116(37%) 电子沙漏 管脚定义如下 六