河海大学计算机与信息学院(常州)
课程设计报告
专业、学号
题 目 四人抢答器电路
河海大学本科课程设计报告
学生姓名 指导教师
- 1 -
河海大学本科课程设计报告
课程设计(报告)任务书
(理 工 科 类)
Ⅰ、课程设计(报告)题目:
四人抢答器电路
Ⅱ、课程设计(论文)工作内容
一、课程设计目标 1、培养综合运用知识和独立开展实践创新的能力; 2、增强大家的合作意识和团队工作的经验; 3、培养大家将知识拿出共享的胸怀。 二、研究方法及手段应用
1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务; 2、仔细阅读课题要求,在完成要求后要有适当的创新精神。 三、课程设计预期效果 1、完成实验环境搭建;
2、实现一四人抢答器,有人抢答成功后,其他人再抢答无效;
3、通过蜂鸣器响1秒来提示抢答成功,并在数码管上显示抢答者的序号; 4、主持人通过按键清除抢答信息,并开始30秒的答题倒计时,当倒计时结束时,通过蜂鸣器响1秒来提示回答问题时间到,此时可以开始新一轮的抢答;
- 2 -
河海大学本科课程设计报告
学生姓名: 专业年级:
摘 要
本设计借助QuartusII软件在计算机上仿真做四人抢答器。在抢答竞赛中,通过选手按键的先后,判断有哪个选手回答问题,并且实现倒计时答题时间的功能。
本设计共有两个模块,分频模块和抢答模块,基本实现了抢答的功能。 【关键词】抢答器、QuartusII
ABSTRACT
With this design on a computer simulation software QuartusII do four Responder. In
the answer
in the
race,
through the
sequence
of key players
to
determine which players have to answer questions. and the time allowed to achieve the countdown function.
The design consists of two modules, frequency module and answer in the module, the basic realization of the answer in the function.
【Key words】Responder, QuartusII
- 3 -
河海大学本科课程设计报告
第一章 系统设计
第一节 课题目标及总体方案
四人抢答器电路设计的目标:
(1)实现一四人抢答器,有人抢答成功后,其他人再抢答无效;
(2)通过蜂鸣器响1秒来提示抢答成功,并在数码管上显示抢答者的序号; (3)主持人通过按键清除抢答信息,并开始30秒的答题倒计时,当倒计时结束时,通过蜂鸣器响1秒来提示回答问题时间到,此时可以开始新一轮的抢答; 我们设计的总体方案是将整个任务分成3个模块即分频模块、抢答模块、倒计时并报警模块。
答抢手抢按键入din1din2din3din4. 选答输:,,,抢答模块(qiangda) 倒计时模块(daojishi) 分频模块(clkgen)
鉴别抢答成功者序号并译码显示 进行30秒的倒计时(译码显示),倒计时结束时,蜂鸣器响1s提示答题时间结束 产生1hz和1khz的时钟信号 倒计时控制开关
- 4 -
河海大学本科课程设计报告
主持人控制,清屏按键,倒计时复位开关
第二节 设计框图说明
一、 分频模块
因为试验箱上的时钟是50M的,而倒计时模块中要用到1hz和1khz的时钟,所以要对50M时钟进行分频,使其每25M才产生一个上升沿,则将50M变成1hz,从而产生1hz和1khz的时钟,分频模块程序如下:
module Divider(rst,clk,clk_1khz,clk_1hz); input rst,clk;
output clk_1khz,clk_1hz; reg clk_1khz,clk_1hz; reg[24:0] count1; reg[14:0] count2;
always @(posedge clk or negedge rst) begin if(!rst)
- 5 -
河海大学本科课程设计报告
count1 = 0;
else if(count1==25'd25000000) begin
clk_1hz = ~clk_1hz; count1 = 0; end else
count1 = count1+25'b1; end
always @(posedge clk or negedge rst) begin if(!rst) count2 = 0;
else if(count2==15'd25000) begin
clk_1khz = ~clk_1khz; count2 = 0; end else
count2 = count2+15'b1; end endmodule
- 6 -
河海大学本科课程设计报告
二、抢答模块
抢答部分,包括信号的接收和锁存功能,使得抢答的人的号码能够在数码管显示出来,蜂鸣器响起,并且锁存,禁止其他人的号码再次出现在数码管上。抢答完毕,开始倒计时,主持人按下清零键,抢答人号码清除,进入答题时间,答题时间30秒,30秒倒计时开始,当还剩5秒时,给予提示,表明时间不多了,时间变为00时,答题结束。 module
Main(rst,clk,ina,inb,inc,ind,judge,clk_1hz,wei,duan,beep,wei1,duan1,clk_1khz); input clk,clk_1hz; input ina,inb,inc,ind,judge; output[3:0] wei; output[7:0] duan; input rst,clk_1khz; output [3:0] wei1; output [7:0] duan1; output beep; reg[3:0] wei; reg[7:0] duan; reg flag;
reg [5:0] shi,ge,data; reg [4:0] count; reg [3:0] wei1; reg [7:0] duan1;
- 7 -
河海大学本科课程设计报告
reg beep; reg yu;
always @(posedge clk) begin if(!rst) begin yu = 0; end if(!judge) begin flag=0; wei=4'b1111; duan=8'hff; yu=1; end else begin
if(ge==6'b000000&&shi==6'b000000) ; else begin if(!ina)
- 8 -
河海大学本科课程设计报告
begin if(!flag) begin
wei=4'b1101; duan=8'hf9; flag=1; end end else if(!inb) begin if(!flag) begin
wei=4'b1101; duan=8'ha4; flag=1; end end else if(!inc) begin if(!flag) begin
wei=4'b1101;
- 9 -
河海大学本科课程设计报告
duan=8'hb0; flag=1; end end else if(!ind) begin if(!flag) begin
wei=4'b1101; duan=8'h99; flag=1; end end end end end
always@(posedge clk_1hz or negedge rst) begin if(!rst) begin count = 0; end
- 10 -
河海大学本科课程设计报告
else if(count >= 5'd30) count = count; else if(yu==1)
count = count+5'b1; end
always @(count) begin
if(count>=5'b10101) begin
shi = 5'b00000; ge = 5'b11110-count; end else
if(count>=5'b01011) begin
shi=5'b00001; ge=5'b10100-count; end else
if(count>=5'b00001) begin
- 11 -
河海大学本科课程设计报告
shi=5'b00010; ge=5'b01010-count; end else begin shi=5'b00011; ge=5'b0; end end
always @(shi or ge) begin beep=0; if(flag==1)
beep=1;
if(shi==0 && ge==5) begin beep=1; end begin
if(shi==0 && ge==0) beep=1; end
- 12 -
河海大学本科课程设计报告
end
always @(clk_1khz) begin if(!rst)
wei1 = 4'b0000; else if(clk_1khz) begin
wei1=4'b0111;//¸öλ data=ge; end else begin
wei1=4'b1011;//ʮλ data=shi; end end
always @(data) begin case(data)
6'b000000: duan1=8'b1100_0000; 6'b000001: duan1=8'b1111_1001; 6'b000010: duan1=8'b1010_0100;
- 13 -
河海大学本科课程设计报告
6'b000011: duan1=8'b1011_0000; 6'b000100: duan1=8'b1001_1001; 6'b000101: duan1=8'b1001_0010; 6'b000110: duan1=8'b1000_0010; 6'b000111: duan1=8'b1111_1000; 6'b001000: duan1=8'b1000_0000; 6'b001001: duan1=8'b1001_0000; default:duan1=8'b1111_1111; endcase end endmodule
三、顶层文本文件
这部分程序是总定义与调用,使得两个模块能够结合在一起。
module qiangda(rst,clk,ina,inb,inc,ind,judge,beep,wei,duan,wei1,duan1); input rst,clk;//Clk ʱÖÓΪ50Mhz PIN_28 200ns input ina,inb,inc,ind,judge; output[3:0] wei,wei1; output[7:0] duan,duan1; output beep;
wire clk_1khz,clk_1hz;
Divider u1(rst,clk,clk_1khz,clk_1hz);
- 14 -
河海大学本科课程设计报告
Main u2(rst,clk,ina,inb,inc,ind,judge,clk_1hz,wei,duan,beep,wei1,duan1,clk_1khz); endmodule
第二章 结果与讨论
第一节 调试步骤与问题分析
我们首先做的是分频模块,这一模块主要是把默认的50MHZ的频率变为1HZ,这有这样,倒计时模块才能够正常显示。接下来我们做的是抢答模块,这部分实现抢答功能,将抢答者分为a、b、c、d,在数码管上分别用1、2、3、4,来表示,抢答加锁存,使得一个人抢到之后,其他人抢答无效。然后是倒计时模块,在主持人按复位键之后,抢答人的序号消失,并且开始30s倒计时答题时间,30s倒计时开始。接下来还有一些蜂鸣器,位选、段选,数码管对十个数字显示的程序,这样初步的设计完成了。
调试后,我们发现主持人复位键无法控制倒计时模块,倒计时成了一个单独部分,只能够单独的计时,与其他的键都无关,改了好多次都没有成功,在向其他同学咨询后才知道,两个模块中的变量是不可以同时使用的,因此,我们将抢答模块和倒计时模块合为一个部分,这样才实现复位倒计时功能。
第二节 调试结果
抢答模块调试成功后的结果:
- 15 -
河海大学本科课程设计报告
图2.1
倒计时调试成功后的结果:
- 16 -
河海大学本科课程设计报告
图2.2
整个系统调试成功后的结果:
图2.3
- 17 -
河海大学本科课程设计报告
心得体会
通过本次课程设计,我对Verilog HDL语言有了更深刻的了解,能够比较灵
活地运用它来实现我们所想要要其实现的功能。在实验中,我也遇到了很多挫折,其中比较突出的问题便是:1.无法把程序写进实验箱;2.由于四人抢答器需要的连接的管脚较多,一会小心便会弄错,导致数码管显示不正常,LED的灯不能按正确要求亮等。不过我都和同伴一一克服了,大家齐心协力解决了问题,使我明白了和他人共同合作的重要性,对待事情要认真,争取一次性的成功,如果开始不小心弄错,很难查出错误,而且耗费很多时间。在以后的道路上我们也必须深刻认识到团队合作的精神,投入今后的发展之中,专心致志的做事。
成功就是在不断摸索着前进中实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。
参考文献
[1] 夏宇闻.《第二版Verilog 数字系统设计教程》.北京:北京航空航天大学
出版社,2008.
[2] 杨晓慧 杨旭 编著.《FPGA系统设计与实例》.北京:人民邮电出版社,2010 [3] 罗杰 谢自美 编著.《电子线路设计、实验、测试》.北京:电子工业出版社,2008.
- 18 -
河海大学本科课程设计报告
[4] 杜慧敏 李宥谋 赵全良 编著.《基于Verilog的FPGA设计基础》.西安: 西安电子科技大学,2006.
- 19 -
河海大学本科课程设计报告
附 录
一、 软件:
程序编写:modelsim6.1f 硬件下载调试:quartus II
- 20 -
因篇幅问题不能全部显示,请点此查看更多更全内容