收藏 分销(赏)

基于VHDL的智力竞赛抢答器的设计和实现.doc

上传人:天**** 文档编号:2862298 上传时间:2024-06-07 格式:DOC 页数:16 大小:156.54KB 下载积分:8 金币
下载 相关 举报
基于VHDL的智力竞赛抢答器的设计和实现.doc_第1页
第1页 / 共16页
基于VHDL的智力竞赛抢答器的设计和实现.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
摘 要 本课程设计重要内容是运用EDA技术设计一种可容纳四组选手智力竞赛抢答器,全面熟悉、掌握VHDL语言基本知识,掌握运用VHDL语言对惯用组合逻辑电路和时序逻辑电路编程。本课程设计开发仿真工具是MAX+plus II,采用自顶向下、逐级细化设计办法设计整套系统,顶层模块用图形描述,底层文献用VHDL语言描述。通过波形仿真,实现了智力竞赛抢答器基本功能,达到了设计规定。 核心字 智力竞赛抢答器;EDA技术;VHDL;MAX+plus II;自顶向下 1 引 言 20世纪90年代,引进数字系统设计办法发生突破性变革技术是VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言)。它是一种IEEE-1076原则所规范硬件描述语言,重要用于算法级、寄存器级到门级各种抽象设计层次数字系统建模,已成为电子设计自动化(EDA)一种重要手段。 本课程设计重要目是:全面熟悉、掌握VHDL语言基本知识,掌握运用VHDL语言对惯用组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序技巧,掌握分析成果若干有效办法,进一步提高上机动手能力,培养设计综合电路能力,养成编写文档资料习惯和规范编程思想。 2 智力竞赛抢答器重要功能 设计一种4人参加智力竞赛抢答计时器。该系统具备回答问题时间控制功能,规定回答问题时间不大于等于100秒(显示为0~99),时间显示采用倒计时方式。当达到限定期间时,发出声响以示警告;当有某一参赛者一方面按下抢答开关时,相应显示灯亮并伴有声响,此时抢答器不再接受其她输入信号。智力竞赛抢答器功能分块如图2-1所示。 顶层文献QDQ daojishi 模块 sanxuanyi模块 pianxuan模块 xianshi模块 jianbie模块 suocunqi 模块 zhuanhuan模块 图2-1智力竞赛抢答器功能模块划分图 该智力竞赛抢答器分为七个模块,分别为:鉴别模块、锁存器模块、转换模块、选取输出模块、倒计时模块、片选模块和显示模块。 3 重要功能实现 3.1 鉴别功能 鉴别模块jianbie如图3-1所示,输入信号CLK和CLR,若CLR=“0”,表达无人按键,输出信号Q为0;若CLR=“1”,表达有人按键,输出信号Q为1。 图3-1 jianbie模块 鉴别模块源代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jianbie IS PORT(CLK,CLR:IN STD_LOGIC; Q :OUT STD_LOGIC); END jianbie; ARCHITECTURE jianbie_mk OF jianbie IS BEGIN PROCESS(CLK,CLR) BEGIN IF CLR='0'THEN --运用IF_THEN_ELSE语句 Q<='0'; ELSIF CLK'EVENT AND CLK='0'THEN --检测时钟下降沿 Q<='1'; END IF; END PROCESS; END jianbie_mk; 鉴别模块程序调试波形如图3-2所示,给CLK一种时钟信号,在某一时刻开始赋给CLR一种高电平,则从下一种时钟下降沿开始Q输出高电平。 图3-2鉴别模块仿真波形图 3.2 锁存器功能 锁存器模块suocunqi如图3-3所示,锁存器对四位答题者成果进行锁存,并将其赋给输出信号Q1,Q2,Q3,Q4。 图3-3 suocunqi模块 锁存器模块源代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY suocunqi IS PORT(D1,D2,D3,D4:IN STD_LOGIC; CLK,CLR:IN STD_LOGIC; Q1,Q2,Q3,Q4,ALM:OUT STD_LOGIC); END suocunqi; ARCHITECTURE suocunqi_mk OF suocunqi IS BEGIN PROCESS(CLK) BEGIN IF CLR='0'THEN Q1<='0'; Q2<='0'; Q3<='0'; Q4<='0'; ALM<='0'; ELSIF CLK'EVENT AND CLK='1'THEN --检测CLR为高电平,则有人抢答 Q1<=D1; Q2<=D2; Q3<=D3; Q4<=D4; ALM<='1'; END IF; END PROCESS; END suocunqi_mk; 锁存器模块程序调试波形如图3-4所示,给CLK一种时钟信号,在某一时刻开始赋给CLR一种高电平,则从下一种时钟上升沿开始:将D1赋给Q1、将D2赋给Q2、将D3赋给Q3、将D4赋给Q4,并输出ALM为1;在CLR为低电平时无 输出。 图3-4锁存器模块仿真波形图 3.3 转换功能 转换模块zhuanhuan如图3-5所示,把抢答成果转化为一种四位二进制数,表达抢答者编号。 图3-5 zhuanhuan模块 转换模块源代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY zhuanhuan IS PORT(D1,D2,D3,D4:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END zhuanhuan; ARCHITECTURE zhuanhuan_mk OF zhuanhuan IS BEGIN PROCESS(D1,D2,D3,D4) VARIABLE TMP:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN TMP:=D1&D2&D3&D4; CASE TMP IS WHEN "1000"=>Q<="0001"; --类似于真值表CASE语句 WHEN "0100"=>Q<="0010"; WHEN "0010"=>Q<="0011"; WHEN "0001"=>Q<="0100"; WHEN OTHERS=>Q<="0000"; END CASE; END PROCESS; END zhuanhuan_mk; 转换模块程序调试波形如图3-6所示,通过此模块将D1D2D3D4输入成果转换成Q1Q2Q3Q4这种四位二进制数,当D1=‘1’,其她三位为‘0’时,输出Q为“0001”;当D2=‘1’,其她三位为‘0’时,输出Q为“0010”;当D3=‘1’,其她三位为‘0’时,输出Q为“0011”;当D4=‘1’,其她三位为‘0’时,输出Q为“0100”;其她状况下,输出Q为“0000”。 图3-6 转换模块仿真波形图 3.4 选取输出功能 选取输出模块sanxuanyi如图3-7所示,用两个四位二进制数表达倒计时,其中D1为高位,D2为低位,用一种四位二进制数D3表达抢答号,输出信号Q1和Q2,其中Q1和Q2作为显示模块中数码管输入值。通过SEL值控制Q1和 Q2输出抢答号或者倒计时,当SEL=‘0’时为输出倒计时状态,Q1代表高位,Q2代表低位;当SEL=‘1’时,为显示抢答号状态,Q1输出为‘0’,Q2输出代表抢答者编号。 图3-7 sanxuanyi模块 选取输出模块源代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY sanxuanyi IS PORT(SEL:IN STD_LOGIC; D1,D2,D3:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q1,Q2 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END sanxuanyi; ARCHITECTURE sanxuanyi_mk OF sanxuanyi IS BEGIN PROCESS(SEL,D1,D2,D3) BEGIN IF SEL='1' THEN Q1<="0000";Q2<=D3; ELSE Q1<=D1;Q2<=D2; END IF; END PROCESS; END sanxuanyi_mk; 选取输出模块程序调试波形如图3-8所示,由SEL控制Q输出,当SEL为‘1’时,将D3赋给Q2,“0000”赋给Q1,输出成果代表抢答者编号;当SEL为‘0’时,将D2赋给Q2,D1赋给Q1,输出成果代表倒计时。 图3-8 选取输出模块仿真波形图 3.5 倒计时功能 倒计时模块daojishi如图3-9所示,用两个四位二进制数表达倒计时,定义变量HH,LL,由时钟CLK和使能信号EN控制,其中EN值由锁存器模块中ALM控制。当倒计时至HH==0,LL==0时,发出声音停止计时,输出H(XXX),L(XXX)。 图3-9 daojishi模块 倒计时模块源代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY daojishi IS PORT(CLK,EN:IN STD_LOGIC; H,L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SOUND:OUT STD_LOGIC); END daojishi; ARCHITECTURE daojishi_mk OF daojishi IS BEGIN PROCESS(CLK,EN) VARIABLE HH,LL:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK='1'THEN IF EN='1'THEN --EN=1驱动倒计时模块开始倒计时 SOUND<='0'; HH:="1001"; LL:="1001"; ELSIF LL=0 THEN IF HH=0 THEN SOUND<='1'; --倒计时至0时,输出超时报警信号 ELSE LL:="1001"; HH:=HH-1; END IF; ELSE LL:=LL-1; END IF; END IF; H<=HH; L<=LL; END PROCESS; END daojishi_mk; 倒计时模块程序调试波形如图3-10所示,当EN为“1”时,在时钟上升沿将“1001”赋给H和L,准备进入倒计时;从EN为“0”且时钟上升沿到来时,H和L值开始以逐渐递减,即从99倒计时到0,同步倒计时至0时,输出超时报警信号SOUND=1。 图3-10 倒计时模块仿真波形图 3.6 片选功能 片选模块pianxuan如图3-11所示,该模块用于控制选取输出模块输出倒计时或者抢答号,其中EN1值由锁存器模块中ALM控制。 图3-11 pianxuan模块 片选模块源代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY pianxuan IS PORT(CLK,EN1:IN STD_LOGIC; A :OUT STD_LOGIC); END pianxuan; ARCHITECTURE pianxuan_mk OF pianxuan IS BEGIN PROCESS(CLK,EN1) BEGIN IF EN1='0'THEN --运用IF_THEN_ELSE语句 A<='0'; ELSIF CLK'EVENT AND CLK='1'THEN --检测时钟上升沿 A<='1'; END IF; END PROCESS; END pianxuan_mk; 片选模块程序调试波形如图3-12所示,EN1=’0’时,将‘0’赋给A;当EN1=’1’时,在CLK时钟信号下一种时钟上升沿将‘1’赋给A。 图3-12 片选模块仿真波形图 3.7 显示功能 显示模块如图3-13所示,将所有进程中数值转换成七位二进制数。 图3-13 xianshi模块 显示模块源代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY xianshi IS PORT(D:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END xianshi; ARCHITECTURE xianshi_mk OF xianshi IS BEGIN PROCESS(D) BEGIN CASE D IS WHEN"0000"=>Q<="0111111"; WHEN"0001"=>Q<="0000110"; WHEN"0010"=>Q<="1011011"; WHEN"0011"=>Q<="1001111"; WHEN"0100"=>Q<="1100110"; WHEN"0101"=>Q<="1101101"; WHEN"0110"=>Q<="1111101"; WHEN"0111"=>Q<="0000111"; WHEN"1000"=>Q<="1111111"; WHEN"1001"=>Q<="1101111"; WHEN OTHERS=>Q<="0000000"; END CASE; END PROCESS; END xianshi_mk; 显示模块程序仿真波形如图3-14所示,将输入信号D转变成能在七段数码管上显示七位二进制数。 图3-14 显示模块仿真波形图 3.8 顶层模块 各模块连接后形成顶层文献电路图如图3-15所示。 图3-15 各模块连接后电路图 顶层文献仿真波形如图3-16所示,D2最先获得抢答权,输出声音信号SOUND=1,在数码管上显示抢答号,Q1输出“0111111”(0),Q2输出“1011011”(2),代表抢答号为02;之后自动进入倒计时状态,将“1101111”(9)赋给Q1和Q2,同步开始自动倒计时,倒计时至0时,输出超时报警信号SOUND=1,停止倒计时。 图3-16 顶层文献仿真波形图 4 总结 4.1 智力竞赛抢答器设计成果 通过MAX+plus II仿真,证明了本系统在实际运用中对的性,完全可以实现预期任务规定,在有一组信号抢答成功后发出声音提示,并能通过译码器显示抢答号;在两组或者两组以上信号同步抢答时视抢答无效。抢答成功后,系统启动倒计时功能,并且可以精确计时将时间呈两位数显示;倒计时开始后从99秒倒计时至0秒并通过译码器实时显示计时成果,当倒计时至0秒时,停止倒计时,发出超时报警信号。 4.2 学习总结 在整个设计过程中,重要需要考虑问题如下:将整套系统划提成各种子 模块,通过画流程图分析各模块之间联系,以达到设计规定;程序中电路时序设计;修改程序中语法错误;程序仿真时波形设计;依照波形仿真现象修改程序逻辑错误;对VHDL基本语法掌握;掌握使用MAX+plus II编辑程序、编译、设计波形、仿真办法。 通过本次课程设计,咱们加深了对EDA技术、VHDL语言基本语法知识及程序基本框架理解,将理论知识应用到实践中,提高了动手能力,同步养成了编写文档习惯。整套系统运用MAX+plus II编程、调试、仿真,使咱们对这个软件使用纯熟了诸多。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服