eda数字逻辑拔河游戏机设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南涉外经济学院
课程设计报告
课程名称:EDA技术与应用
报告题目:拔河游戏机设计
学生姓名:
所在学院:
专业班级:
学生学号:
指导教师:
2016年12月19日
课程设计任务书
摘要
电子拔河游戏机是一种能容纳甲乙双方参赛游戏电路。由一排发光二极管表示拔河的“电子绳”。由甲乙双方通过按纽开关使发光二极管向一方的终点延伸,当延伸到某方的最后一个发光二极管时,则该方获胜,连续比赛多局以定胜负。
关键词:拔河;脉冲;数显;二极管,时钟
目录
一、摘要…………………………………………………………………………
4
二、基本思想 (6)
三、设计框图 (6)
四、设计步骤和调试过程………………………………………………………
7
1:总体设计电路 (7)
2.模块设计和相应模块程序 (7)
3.仿真与仿真结果分析 (11)
4、实验调试结果 (11)
五、学生情况统计表 (12)
六、结论与心得 (13)
七、参考文献..............................................................................13八、教师评语与设计成绩.. (14)
一、基本思想
二十世纪后半期,通过EDA技术对大规模可编程逻辑器件编程,产品得到了大力的发展,这种方法不仅成本低、周期短、可靠性高,而且可随时在系统中修改其逻辑功能。这里采用VHDL语言来设计拔河游戏机,突出了其作为硬件描述,本设计的基本原理就是采用VHDL语言设计出拔河游戏机的原理程序,写入程序最后模拟仿真即可。拔河游戏机是一种能容纳甲乙双方参赛游戏电路。由一排发光二极管表示拔河的“电子绳”。本课题所设计的拔河游戏机由9个发光二极管排列成一行,开机之后只有中间一个发光二极管亮,以此作为拔河的中心线,游戏双方各持一个按键,迅速地、不断地按动产生脉冲,谁按得快,亮点就向哪方移动,每按一次,亮点移动一次。移到任一方终端指示灯点亮,这一方就获胜,此时双方按键均无作用,输出保持,只有经裁判复位后才使亮点恢复到中心线。当一局比赛结束后,由点亮该终点灯的信号使电路封锁加减脉冲信号的作用.即实现电路自锁,使加减脉冲无效。同时,使计分电路自动加分。控制电路部分应能控制由振荡器产生的脉冲信号进入计数器的加减脉冲的输入端,其进入方向则由参赛双方的按键信号决定。由设计内容可知,首先需要一个十进制的计数器,用于对双方按钮的次数计数,并通过译码器显示在数码管上。设计要求用50MHz的频率,而设计用到的是1K Hz的频率,所以要设
计一个程序进行分频。其次,显视控制部分设计要求在发光二极管上显示游戏状态,双方每按十次,亮点向先按十次移动一次,对脉冲进行计数,每十次移一位。需接入一个清零端 ,用于复位。再次,运用VHDL 程序语言进行各个模块的程序编写,控制电路的正常运行。最后,将以上程序组装起来,就可得到所需要的拔河游戏机。
二、设计框图
二、设计步骤和调试过程 1.总原理图
2.模块设计和相应模块程序 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY bahe IS
PORT(A,B,RST,CLK:IN STD_LOGIC;
DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END bahe;
ARCHITECTURE ONE OF bahe IS
SIGNAL BT:INTEGER RANGE 0 TO 8;
SIGNAL P:INTEGER RANGE 0 TO 6:=3;
SIGNAL C:STD_LOGIC;
SIGNAL D:STD_LOGIC;
SIGNAL DOUT1:STD_LOGIC;
SIGNAL DOUT2:STD_LOGIC;
BEGIN
PROCESS(C)
VARIABLE Q:INTEGER RANGE 0 TO 4;
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF A='1' THEN
Q:=Q+1;
END IF;
END IF;
IF(Q=0) THEN
DOUT1<='0';
END IF;
IF(Q=1) THEN
DOUT1<='0';
END IF;
IF(Q=2) THEN
DOUT1<='0';
END IF;
IF(Q=3) THEN
DOUT1<='0';
END IF;
IF(Q=4) THEN
DOUT1<='1';Q:=0;
END IF;
END PROCESS;
PROCESS(C)
VARIABLE Q:INTEGER RANGE 0 TO 4;
BEGIN
IF C='1' THEN
IF B='1' THEN
Q:=Q+1;
END IF;
END IF;
IF(Q=0) THEN
DOUT2<='0';
END IF;
IF(Q=1) THEN
DOUT2<='0';
END IF;
IF(Q=2) THEN
DOUT2<='0';
END IF;
IF(Q=3) THEN
DOUT2<='0';
END IF;
IF(Q=4) THEN
DOUT2<='1';Q:=0;
END IF;
END PROCESS;
PROCESS(CLK)
VARIABLE Q:INTEGER RANGE 0 TO 50;
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF Q<50 THEN Q:=Q+1;C<='0'; ELSE Q:=0;C<='1';
END IF;
END IF;