当前位置:文档之家› 北邮数电综合实验电子沙漏的设计与实现

北邮数电综合实验电子沙漏的设计与实现

ENTITY scan_led_2 IS
PORT ( CLK : IN STD_LOGIC;
BTN0: IN STD_LOGIC;
SW0 : IN STD_LOGIC;
SW1 : IN STD_LOGIC;
SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
BT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0);
北 京 邮 电 大 学
数电综合实验报告
实验名称:电子沙漏的设计与实现
学 院:信息与通信工程学院
姓Байду номын сангаас名:
班 级:
学 号:
班内序号:
1、实验设计的基本要求
沙漏是一种古老的计时工具,也是一种玩具。电子沙漏用发光二极管表示沙粒,模拟沙漏的运动过程。电子沙漏会像真正的沙漏一样,上部的沙粒(点亮的发光二极管)一粒一粒往下掉,下部的沙粒一粒一粒堆起来。
3、 按键 BTN0 作为计时启动停止按键,启动后沙粒即可按照 SW1 设定的方向移动, 以 SW1 为低电平时为例,LED 移动的顺序与对应关系如图 3 的1~16所示(若 SW1 为高电平,则点阵显示移动顺序为16~1)。每颗沙粒的移动时间为 1 秒,当移动 到图 3 的16时,若 SW1 仍为低电平,则保持沙粒不动,但计时继续,直到 SW1 的 电平发生变化或者 BTN0 计时停止。
控制模块是用来实现具体的操作的,通过对按下BTN0按键的次数统计,将其分为奇数与偶数两种情况,在奇数时使功能正常运行,在统计为偶数时使时间暂停,以此来实现对此系统的控制。
由于数电实验电路板自带着时钟频率,但此频率并不能满足系统的要求,故需要分频将时钟频率变为所需要的频率,用来作为60秒计时器的校准和正常运行。
SIGNAL CNT9 : INTEGER RANGE 0 TO 9;
SIGNAL A : INTEGER RANGE 0 TO 9;
SIGNAL S : INTEGER RANGE 0 TO 7;--控制点阵显示
SIGNAL S1 : INTEGER RANGE 0 TO 16;--沙漏状态
SIGNAL S2 : INTEGER RANGE 0 TO 100;--开机画面
port(clk_in: in std_logic;
clk_out: out std_logic);
end component;
SIGNAL clk_tmp1 : std_logic;
SIGNAL BT1:STD_LOGIC_VECTOR(5 DOWNTO 0);
SIGNAL CNT6 : INTEGER RANGE 0 TO 6;
5、 自拟其它功能。
二、系统设计
1、设计思路
实验比较复杂,故采用分模块设计的思想,将模块分为了分频模块、控制模块、数码管显示模块、8*8点阵显示模块。
由于本实验需要用BTN0按键来控制时间和沙漏的开始运行以及时间的暂停功能,故需要检测输入,此时就要用到防抖模块,防止在按下按键时有多个上升沿产生导致开关并不能完美的发挥作用。
本实验最重要的部分就是8*8点阵显示模块和数码管显示模块。对于led灯来说,要让它按照设计好的图案显示,需要一行行对8*8点阵进行扫描,在列中来控制哪一行来显示,经过一定时间后到下一行显示,而控制红灯亮还是绿灯则通过不同的接口控制,在扫描频率够快的时候,由于人眼暂留效应,会误以为是一直在显示,以此达到所需要的效果。数码管的显示模块与此类似,通过选位信号选择需要亮的数码管,然后在扫描频率较高时则看到稳定显示的数字。
SIGNAL SW_0 : STD_LOGIC;--SW_0 为1时运行 为0时保持原状态
SIGNAL SW_1 : STD_LOGIC;--SW_1 为0时向下运动 为1时向上运动
end;
architecture a of div4k is
signal cnt : integer range 0 to 1999;
signal clk_tmp : std_logic;
begin
process(clk_in)
begin
if (clk_in'event and clk_in='1') then
R:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
Cr:OUT STD_LOGIC_VECTOR(0 TO 6);
Cg:OUT STD_LOGIC_VECTOR(0 TO 6));
END;
ARCHITECTURE arc OF scan_led_2 IS
component div4k
if cnt=1999 then
cnt<=0; clk_tmp<= not clk_tmp;
else
cnt<=cnt+1;
end if;
end if;
end process;
clk_out<=clk_tmp;
end;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
2、系统框图
(1)总体框图
(2)程序流程图


三、源程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity div4k is
port(clk_in : in std_logic;
clk_out : out std_logic);
4、 设计实现一个 60 秒计时器,当按键 BTN0 启动时开始工作,用于在沙粒移动过程 中进行计时校准,并用数码管 DISP0~DISP1 显示计时结果。
提高要求:
1、 可以调节控制电子沙漏的流动速度。
2、 用多种方式呈现电子沙漏界面。
3、 自行设定沙粒的移动路径,显示每颗沙粒的移动过程。
4、 外接重力感应器,实现真实的电子沙漏功能。
1、采用 8*8 双色点阵显示电子沙漏的开机界面,如图 2 所示。其中红色 LED 代表沙漏的上半部分沙粒 VD0~VD15,绿色 LED 代表沙漏的下半部分 VD0'~VD15'。
2、用拨码开关 SW1 模拟重力感应器。当 SW1 为低电平时,沙粒从 VD0~VD15 向 VD0'~VD15'移动;当 SW1 为高电平时,沙粒从 VD0'~VD15'向 VD0~VD15 移动。
相关主题