vhdl拔河设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

现代电子系统设计期末实验报告课题:设计十六:拔河游戏机姓名:学号:日期:2012年12月17日1、方案设计与论证本设计主要设计思想、程序流程参照下图所示:本拔河游戏机主要由加/减计数器、译码器、得分计数及显示模块四大模块组成。输入信号共有in1、in2、begin、reset、reset1五个,其中in1、in2分别为两位选手的按键脉冲输入,begin为裁判控制信号,reset是加/减计数器清零信号,reset1是得分计数器清零信号;两组输出信号分别控制LED灯代表拔河绳结位置及动态数码管显示分数。2、电路图及有关设计文件1.加/减计数器模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjishuisport(reset:instd_logic;cpu,cpd:instd_logic;q:outstd_logic_vector(3downto0));endjishu;architecturejishu_architectureofjishuissignalcountu,countd:std_logic_vector(3downto0);beginprocess(cpu,cpd,reset)beginifcpu'eventandcpu='1'thencountu=countu+1;--甲按键一次,加计数器+1endif;ifcpd'eventandcpd='1'thencountd=countd-1;--乙按键一次,减计数器-1endif;ifreset='0'thencountu=0000;countd=0000;endif;q=countu+countd+3;--q初始值设为3,译码结果为点亮中间的LED灯endprocess;endjishu_architecture;2.译码器模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityyimaisport(d:instd_logic_vector(3downto0);y0:bufferstd_logic;y1:bufferstd_logic;y2:bufferstd_logic;y3:bufferstd_logic;y4:bufferstd_logic;y5:bufferstd_logic;y6:bufferstd_logic);endyima;architectureyima_architectureofyimaisbeginprocess(d)begincasedis--根据加/减计数器结果判断点亮LED灯when0000=y0='1';y1='0';y2='0';y3='0';y4='0';y5='0';y6='0';when0001=y1='1';y0='0';y2='0';y3='0';y4='0';y5='0';y6='0';when0010=y2='1';y1='0';y0='0';y3='0';y4='0';y5='0';y6='0';when0011=y3='1';y1='0';y2='0';y0='0';y4='0';y5='0';y6='0';when0100=y4='1';y1='0';y2='0';y3='0';y0='0';y5='0';y6='0';when0101=y5='1';y1='0';y2='0';y3='0';y4='0';y0='0';y6='0';whenothers=y6='1';y1='0';y2='0';y3='0';y4='0';y5='0';y0='0';endcase;endprocess;endyima_architecture;3.得分计数器模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjishu2isport(a,b,reset1:instd_logic;s1,s2:outstd_logic_vector(3downto0));endjishu2;architecturebehaveofjishu2issignalm1,m2:std_logic_vector(3downto0);beginprocess(a,b,reset1)beginifa'eventanda='1'thenm1=m1+1;endif;ifb'eventandb='1'thenm2=m2+1;endif;ifreset1='0'thenm1=0000;m2=0000;endif;s1=m1;s2=m2;endprocess;endbehave;4.显示模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityxianshiisport(clk:instd_logic;a,b:instd_logic_vector(3downto0);s:outstd_logic_vector(7downto0);p:outstd_logic_vector(6downto0));endxianshi;architecturebehaveofxianshiissignalcount:std_logic_vector(15downto0);signalclk1:std_logic;beginprocess(a,b,clk)beginifrising_edge(clk)thencount=count+1;endif;clk1=count(15);caseclk1is--由时钟信号片选两片数码管动态显示分数when'0'=caseaiswhen0000=s=01111111;p=1111110;when0001=s=01111111;p=0110000;when0010=s=01111111;p=1101101;when0011=s=01111111;p=1111001;when0100=s=01111111;p=0110011;when0101=s=01111111;p=1011011;when0110=s=01111111;p=1011111;when0111=s=01111111;p=1110000;when1000=s=01111111;p=1111111;whenothers=s=01111111;p=1111011;endcase;when'1'=casebiswhen0000=s=11111110;p=1111110;when0001=s=11111110;p=0110000;when0010=s=11111110;p=1101101;when0011=s=11111110;p=1111001;when0100=s=11111110;p=0110011;when0101=s=11111110;p=1011011;when0110=s=11111110;p=1011111;when0111=s=11111110;p=1110000;when1000=s=11111110;p=1111111;whenothers=s=11111110;p=1111011;endcase;endcase;endprocess;endbehave;5.总设计图3、仿真结果与测试分析由上图仿真结果可知,当begin信号为1时,y[6..0]即LED灯显示才开始改变,代表裁判按下begin开关后才能开始比赛。in1变化速度比in2快时,y[6..0]即LED灯逐渐左移到顶端,数码管显示数字加一。以此类推,其余功能不加以赘述。4、设计总结1.同一进程中对同一变量不能重复赋值;2.同一进程并行语句只能检测一个脉冲的上升沿;3.设计中由于对总线结构如何分出支线使用不熟悉,在译码器模块中输出信号没有能设计成总线结构,增加了模块设计的复杂度和代码长度;4.在显示模块将50Mhz时钟信号分频后作为动态数码管片选信号,仿真时要将分频模块去除否则看不出实验结果。

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功