vhdl 拔河

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书
学院信息科学与工程学院专业电子信息科学与技术
学生姓名张迎曦学号0903070131
设计题目基于vhdl的拔河游戏机设计
内容及要求:
课题:基于vhdl的拔河游戏机设计
用7个发光二极管排列成一行,模拟拔河过程。

游戏开始时只有中间的发光二极管点亮,作为拔河的中心线。

用按键来模拟拔河队员,按下键表示用力,根据
甲乙双方按键的快慢与多少,决定亮点移动的方向。

移到任一方终端二极管时,
该方获胜,
(1)、设置“比赛开始”按键,实现一对一拔河;
(2)、设置复位键,按下后比分清零,双方重新开始比赛;
进度安排:
第十六周(前两天):查找资料
第十六周(第3、4天):总体设计
第十七周(第5、6天):模块设计
第十七周(第7、8天):仿真与测试
第十七周(第9、10天):撰写论文及答辩
指导教师(签字):
年月日学院院长(签字)
年月日
摘要
随着现代社会的发展,科技的进步,现在的游戏是越来越多样化,拔河现在不仅仅用一个绳子来比赛也科技用电子来模拟,使游戏变的更加有有趣味。

本次设计使用 Quartus II工具来设计拔河游戏机的实现。

其主要是实现拔河游戏的功能,其中分为两大模块,即分为玩家输入模块和控制模块。

通过双方按键的快慢多少来进行比较,己方按一次加一,对方按一次减一,知道有一方累计加到四次方为赢。

关键字:FPGA ;拔河;波形图;ASM图
目录
1.引言 (3)
2.系统的设计要求 (3)
4.控制系统控制算法模型的建立(ASM图的建立 (4)
5.系统程序设计 (6)
5.1设计的具体实现 (6)
6.运行结果与分析 (9)
6.1波形仿真 (9)
参考文献 (13)
1.引言
随着现代社会的发展,科技的进步,现在的游戏是越来越多样化,拔河现在不仅仅用一个绳子来比赛也科技用电子来模拟,使游戏变的更加有有趣味。

1课题背景
随着现代社会的发展,科技的进步,现在的游戏是越来越多样化,拔河现在不仅仅用一个绳子来比赛也科技用电子来模拟,使游戏变的更加有有趣味。

设计要求
用7个发光二极管排列成一行,模拟拔河过程。

游戏开始时只有中间的发光二极管点亮,作为拔河的中心线。

用按键来模拟拔河队员,按下键表示用力,根据
甲乙双方按键的快慢与多少,决定亮点移动的方向。

移到任一方终端二极管时,
该方获胜,
(1)、设置“比赛开始”按键,实现一对一拔河;
(2)、设置复位键,按下后比分清零,双方重新开始比赛;
3.系统分析
4.控制系统控制算法模型的建立(ASM 图的建立)
检测拨码开关信号
玩家1变化?
玩家2变化?
count1++ count2++
力度点阵显示
到了1s ?
count=count1-count2
count=0?
count>0?
灯左移
灯右移
最左端? 最右端?
记分器1++ 记分器2++
记分器1=3?
记分器2=3?
music2
结束
music1
计数器清零
music1
计数器清零
初始化(计数器记分器清零,灯位于正中)
复位键开始
Y
N
N
N
Y
Y
5.系统程序设计
5.1 设计的具体实现
1.玩家一模块
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Entity Declaration
ENTITY conuter_a IS
-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
PORT
(
a : IN STD_LOGIC;
rst : IN STD_LOGIC;
ena : IN STD_LOGIC;
ca : OUT STD_LOGIC;
da : OUT integer range 0 to 3
);
-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
END conuter_a;
-- Architecture Body
ARCHITECTURE conuter_a_architecture OF conuter_a IS
signal cnt: integer range 0 to 3;
BEGIN
process(ena,rst,a)
begin
if ena='0'then cnt<=0;
elsif rst='1' then ca<='0';
elsif rising_edge(a) then
if cnt=3 then ca<='1';
end if;
cnt<=cnt+1;
end if;
end process;
da<=cnt;
END conuter_a_architecture;
2. 玩家二模块
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Entity Declaration
ENTITY conuter_b IS
-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
PORT
(
rst : IN STD_LOGIC;
b : IN STD_LOGIC;
enb : IN STD_LOGIC;
cb : OUT STD_LOGIC;
db : OUT integer range 0 to 3
);
-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! END conuter_b;
-- Architecture Body
ARCHITECTURE conuter_b_architecture OF conuter_b IS
signal cnt: integer range 0 to 3;
BEGIN
process(enb,rst,b)
begin
if enb='0'then cnt<=0;
elsif rst='1' then cb<='0';
elsif rising_edge(b) then
if cnt=3 then cb<='1';
end if;
cnt<=cnt+1;
end if;
end process;
db<=cnt;
END conuter_b_architecture;
3. 控制模块
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Entity Declaration
ENTITY controller IS
-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
PORT
(
ca : IN STD_LOGIC;
cb : IN STD_LOGIC;
da : IN integer range 0 to 3;
db : IN integer range 0 to 3;
reset : IN STD_LOGIC;
en : IN STD_LOGIC;
rst : OUT STD_LOGIC;
do : OUT STD_LOGIC_VECTOR(3 downto 0);
ena : OUT STD_LOGIC;
enb : OUT STD_LOGIC;
do2 : OUT STD_LOGIC_VECTOR(4 downto 1);
do1 : OUT STD_LOGIC_VECTOR(4 downto 1);
mid : OUT STD_LOGIC
);
-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
END controller;
-- Architecture Body
ARCHITECTURE controller_architecture OF controller IS
BEGIN
process(en,da,db,ca,cb,reset)
variable temp:integer range 0 to 15;
variable c: std_logic_vector(1 downto 0);
begin
mid<='0';do1<="0000";do2<="0000";rst<='0';
if en='0'then ena<='0';enb<='0';
else
c:=ca&cb;
case c is
when "11" => rst<='1';
when "10" => if da=db then
ena<='0';enb<='0';do<="0001";else temp:=da+4-db;end if;
do1(temp)<='1';
when "01" => if da=db then
ena<='0';enb<='0';do<="0010";else temp:=db+4-da;end if;
do2(temp)<='1';
when "00" => if da=db then mid<='1' ;
elsif da>db then temp:=da-db;do1(temp)<='1';
else temp:=db-da;
do2(temp)<='1';
end if;
when others=> null;
end case;
if reset='1'then
ena<='1';enb<='1';do<="0000";rst<='1';
end if;
end if;
end process;
END controller_architecture;
6.运行结果与分析
波形说明:a,b模拟两个玩家mid表示绳子到了中间也就是说双方速度与力量相当,开始b先发力这时候显示0001记为一次,b再次发力显示0010记为2次其中1表示绳子的中间点的位置,这时候a发力使绳子往回拉了一格过一段较量最终b胜出
参考文献
[1] 侯伯亭,顾新. VHDL 硬件描述语言与数字逻辑电路设计. 西安:西安电子科技大学出版社,1999.
[2] Douglas L.Perry.VHDL:Programming by Example(Fouth Edition). McGraw—Hill.
[3] Actel Corporation.Actel HDL Coding Style Guide.
[4]潘松,黄继业. EDA技术实用教程(第3版).北京:科学出版社,2006.
[5]王金明. 数字系统设计与Verilog HDL(第3版). 北京;电子工业出版社,2009.
[6]于孟尝.数字电子技术基础简明教程.第三版.北京:高等教育出版社,1985。

12
[7]王金明.数字系统设计VHDL 北京:电子工业出版设,2010。

相关文档
最新文档