1、 一一、设计目的、设计目的 1掌握数字系统的设计方法; 2掌握硬件描述语言V erilog HDL; 3掌握模块化设计方法; 4掌握开发软件的使用方法。 二二、设计要求、设计要求 (1)设计拔河游戏电路,用按键与 LED 表示输入与输出。 (2)初始时,16 个 LED 中间的两个点亮,然后游戏双方不停按动按键,点亮的两个 LED 向按动按键慢的一方移动; (3)每按动一下按键,LED 向对方移动一格; (4)只要 LED 移动到头,游戏结束; (5)由裁判下达比赛开始命令后,甲乙双方才能输入信号,否则,输入信号无效。 用数码管显示获胜者的盘数,每次比赛结束自动给获胜方加分。 (6)完成全部流
2、程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布 局布线、时序仿真、下载验证等。 (7)三三、设计、设计环境环境 计算机、QuatusII 开发软件 四四、设计、设计内容内容(设计原理设计原理和方案和方案、程序设计、仿真分析和适配程序设计、仿真分析和适配) 4.1 设计原理和方案设计原理和方案 电子拔河游戏机是一种能容纳甲乙双方参赛或甲乙双方加裁判的三人游戏电路。 由一排 16 个 LED 发光二极管表示拔河的“电子绳” 。由甲乙双方通过按钮开关使发光的 LED 管向自 己一方的终点延伸,当延伸到某方的最后一 LED 管时,则该方失败,对方获胜,并对获胜次 数进行计数,连续比赛多
3、局以定胜负。比赛开始,由裁判下达比赛命令后,甲乙双方才能输 入信号,否则,输入信号无效。裁判信号由键盘空格键来控制。“电子绳”由 16 个 LED 管 构成,裁判下达“开始比赛”的命令后,摁一下空格键,位于“电子绳”中点的 LED 发亮。 甲乙双方通过按键输入信号,使发亮的 LED 管向自己一方移动,并阻止其向对方延伸,谁摁 得快就向这一方移动。 当从中点至自己一方的最后一个 LED 管发亮时, 表示比赛结束, 这时, 电路自锁,保持当前状态不变,除非由裁判使电路复位,并对获胜的一方计数器自动加一。 记分电路用两位七段数码管分别对双方得分进行累计, 在每次比赛结束时电路自动加分。 当 比赛结束
4、时,计分器清零,为下一次比赛做好准备。 4.2 程序设计及仿真程序设计及仿真 4.2.1 分频器分频器模块程序设计及仿真模块程序设计及仿真 module fpq(_10000HzOut,_25HzOut,_50MHzIn); input _50MHzIn; output _10000HzOut,_25HzOut; parameter width1=16,value1=2499; parameter width2=10,value2=499; reg _10000HzOut,_25HzOut; reg width1-1:0 Count; reg width2-1:0 Cnt; always (p
5、osedge _50MHzIn) /2500*2*10000Hz=50MHz if (Count=value1) /Binary Counter(02499) begin Count = 15d0; _10000HzOut = _10000HzOut; end else Count = Count + 1b1; always (posedge _50MHzIn) /100 000*2*25Hz=50MHz if (Cnt=value2) /Binary Counter(099999) begin Cnt = 15d0; _25HzOut = _25HzOut; end 按键模块按键模块 主控制
6、电路主控制电路 模块模块 拔河拔河 LED显显 示模块示模块 计分数码管计分数码管 显示模块显示模块 else Cnt = Cnt + 1b1; endmodule 图 1,分频器仿真波形图 4.2.2 按键按键模块程序设计及仿真模块程序设计及仿真 按键模块采用 3 个或门消抖,由于有两个玩家, 所以设置有两个按键,采用 25hz脉冲。 module xiaodou(key1, key2, _25H,k1, k2); input key1; / 按键 1 input key2; / 按键 2 input _25H; /脉冲 25Hz output k1; output k2; assign k1=(a1|a2|a3); / assign k2=(b1|b2|b3); / 采用 3 个或门消抖 reg a1,a2,a3,b1,b2,b3; always (posedge _25H