EDA技术课设资料.docx
《EDA技术课设资料.docx》由会员分享,可在线阅读,更多相关《EDA技术课设资料.docx(16页珍藏版)》请在冰豆网上搜索。
EDA技术课设资料
EDA技术课程设计报告
题目智力抢答器的设计
学院信息科学与工程学院
专业电子信息工程
学生姓名白奉强
学号201310312216年级2013级
指导教师程皓职称副研究员
2016年12月21日
课程设计题目:
智力抢答器的设计
学生姓名:
白奉强
设计报告成绩(按照优、良、中、及格、不及格评定)
指导教师评语:
指导教师(签名)年月日
说明:
指导教师评分后,设计报告交院实验室保存。
智力抢答器的设计
摘要:
以四路抢答为基本概念。
从实际应用出发,利用电子设计自动化(EDA)技术,用可编程逻辑器件设计具有扩充功能的抢答器。
它以VerilogHDL硬件描述语言作为平台,结合动手实验而完成的。
它的特点是电路简单、制作方便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。
本抢答器的电路主要有四部分组成:
鉴别锁存电路、FPGA主芯片EP1C3T144C8电路、计分电路以及扫描显示模块的电路,并利用QuartusII工具软件完成了VerilogHDL源程序编写和硬件下载。
这个抢答器设计基本上满足了实际比赛应用中的各种需要。
在实际中有很大的用途
关键词:
有限状态机(FSM);Verilog;智力抢答器
目录
绪论1
1.课程背景1
2.选题的目的和意义1
3.主要的研究内容1
第1章设计方案2
1.1有限状态机2
1.2系统功能要求分析2
1.3系统整体设计3
第2章抢答器的逻辑设计与仿真4
2.1模块描述4
2.2抢答器的源程序4
第3章系统仿真结果6
第4章绪论6
参考文献8
附录8
绪论
课程背景
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的,EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度,利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成,现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
选题的目的和意义
目的:
1、熟悉verilog语言
2、学习智力抢答器的设计,调试,仿真以及对仿真波形的调试
意义:
理论联系实际,巩固和运用所学课程,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个智力抢答器的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。
巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。
主要的研究内容
1、熟悉verilog语言
2、学习智力抢答器的设计,调试,仿真以及对仿真波形的调试
(1)设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。
(2)电路具有第一抢答信号的鉴别和锁存功能。
在主持人将系统复位并发出抢答指令后,若参加者按抢答开关,则该组指示灯亮并用组别显示电路显示抢答者的组别。
此时,电路具备自锁功能,使别组的抢答开关不起作用。
(3)设置计分电路。
每组在开始时预置成100分,抢答后主持人计分,答对一次加10分。
(4)设置犯规电路。
对提前和超时抢答的组别鸣喇叭示警,并由显示电路显示出犯规组别。
设计方案
有限状态机
有限状态机是一类很重要的时序电路,是许多数字系统的核心部件,也是一种抽象的机制,它在任意时刻都处于有限状态集合中的某一个状态。
它可以应用于从系统分析到设计的所有阶段。
有限状态机的优点在于简单易用,状态间的关系清晰直观。
有限状态机设计因其程序结构简单,是VHDL语言中一种较常用的描述方法。
在一些实用逻辑系统中,有许多是利用有限状态机的设计方案来描述和实现的。
状态机的工作方式是根据控制信号按照预先设定的状态进行顺序运行的,状态机是纯硬度数字系统中的顺序控制电路,因此状态机在其运行方式上类似于控制灵活和方便的CPU,而在运行速度和工作可靠性方面都优于CPU。
在智力竞赛中用VHDL状态机设置的抢答器,可使比赛更加准确、公正、直观。
同时还可以设置计分、犯规以奖励记录等多种功能。
利用VHDL状态机对系统进行整体的设计,使整个系统简洁直观、排错容易、高效稳定。
系统功能要求分析
根据系统设计要求可知,系统的输入信号有:
各组的抢答按钮A、B、C、D,系统清零信号CLR,系统始终信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制断LDN,计时使能端EN,计时预置数据调整按钮TA、TB;系统的输出信号有:
四个组抢答成功与否的指示灯控制信号输出口LEDA、LEDB、LEDC、LEDD,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。
本系统应具有的功能有:
第一抢答信号的鉴别和锁存功能;抢答计时功能;各组得分的累加和动态显示功能;
图1抢答器系统框图
系统整体设计
整个系统分为四个主要模块:
抢答鉴别锁存模块QDJB;抢答计时模块JSQ;抢答计分模块JFQ;译码模块YMQ。
这里我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。
系统的工作原理如下:
当主持人按下使能端EN时,抢答器开始工作。
A、B、C、D四位抢答者谁最先抢答成功则此选手的台号灯(LEDA~LEDD)将点亮,并且主持人前的组别号显示数码管将显示出抢答成功着的台号;接下来主持人提问,若回答正确,主持人按加分按钮ADD,抢答计分模块JFQ将给对应的组加分,并将该组的总分显示在对应的选手计分数码管JF2_A~JF0_A、JF2_B~JF0_B、JF2_C~JF0_C、JF2_D~JF0_D上。
在此过程中,主持人可以采用计时手段(JSQ),打开计时器使计时预置控制端LDN有效,输入限制时间,使计时使能端EN有效,开始计时。
完成第一轮抢答后,主持人清零接着重新开始,步骤如上。
图2所示为智力抢答器的组成框图。
图2智力抢答器的组成框图
抢答器的逻辑设计与仿真
模块描述
抢答鉴别模块描述的是当系统清零信号CLR为零时,A、B、C、D四位抢答者开始抢答,谁最先抢答成功,谁的台灯号将亮起来。
这时其余选手的台灯将不起作用。
原理是用verilog语言if-elsif的并行运算关系,系统模块接受输入信号,用if语句判断最先输入的是那个组,一旦鉴别出第一个抢答者,系统将自动锁存结果,并在数码管上显示台灯号。
抢答器的部分源程序
moduleQiangDaQi
(clk,inputEn,inputL1,inputL2,inputL3,inputL4,Sig1,Sig2,Sig3,Sig4,Led,Buzzer);
//一开始时声明有哪些端口
inputclk,inputEn,inputL1,inputL2,inputL3,inputL4;//输入口
outputSig1,Sig2,Sig3,Sig4;
output[0:
7]Led;
outputBuzzer;//输出口
regSig1=1'b1,Sig2=1'b1,Sig3=1'b1,Sig4=1'b1;
reg[0:
7]Led;
regBuzzer;//在输出口配置个寄存器,以便运算
regEnFlat=1'b0;//配置寄存器,EnFlat是表明开始抢答的标志位
regBuClk=1'b0;//BuClk是蜂鸣器的标志位
reg[0:
7]BuL=8'd0;//BuL是做蜂鸣器的延时用
always@(posedgeclk)//捕捉时钟
begin
if(inputEn==1'b0)//初始化各按键并开始抢答
begin
EnFlat=1'b1;//初始化各个标志位和参数
Sig1=1'b1;
Sig2=1'b1;
Sig3=1'b1;
Sig4=1'b1;//各个按键对应的LED控制端
Led=8'b11111111;//静态数码管的控制端,有8位
BuClk=1'b0;
Buzzer=1'b1;//蜂鸣器的控制管脚,低电平为发声音
end
if(EnFlat==1'b1)//开始抢答
begin
if(inputL1==1'b0)//如果按键1按下
begin
EnFlat=1'b0;//禁止其他选手抢答
Sig1=1'b0;//静态数码管显示序号'1
Led=8'b01101111;'//对应的LED点亮
BuClk=1'b1;//指示蜂鸣器发声
end
elseif(inputL2==1'b0)//如果按键2按下
begin
EnFlat=1'b0;//禁止其他选手抢答
Sig2=1'b0;
Led=8'b00011010;
BuClk=1'b1;
end
elseif(inputL3==1'b0)//如果按键3按下
begin
EnFlat=1'b0;//禁止其他选手抢答
Sig3=1'b0;
Led=8'b01001010;
BuClk=1'b1;
end
elseif(inputL4==1'b0)//如果按键4按下
begin
EnFlat=1'b0;//禁止其他选手抢答
Sig4=1'b0;
Led=8'b01101001;
BuClk=1'b1;
end
end
if(BuClk==1'b1)//当蜂鸣器标志位置1时//进入此蜂鸣器处理程序
begin
Buzzer=1'b0;//蜂鸣器发声
BuL=BuL+8'd1;//延时变量加1
if(BuL==8'd255)//当到达延时的时间时关掉蜂鸣器
begin
BuL=8'd0;//延时变量复位
BuClk=1'b0;//蜂鸣器标志位复位
Buzzer=1'b1;//蜂鸣器停掉
end
end
end
Endmodule
3仿真综合
根据以上设计原理,我们进行仿真综合,分别得到如下的结果
图3抢答仿真波形图
图4加减分模块仿真图
图5重置模块
图6I/O引脚的选取
第4章结论
以FPGA为控制核心设计的抢答器,开发周期短,功能升级方便,整个控制系统所需元件少,集成度较高,具有良好的稳定性和可靠性。
经过仿真以及下载到FPGA开发板上测试,此次设计可以公正、准确、直观的判断第一抢答者,并对抢答进行计时,加减操作的计时,并通过LED显示并提示时间,以及复位抢答等功能,同时3个BCD数码管可以正确的显示第一抢答者的组号以及积分信息。
同时通过测试验证了软件的按键消抖处理适当,不会产生按键误判断的情况,以及状态机的程序设计方式结构清晰,易于查找程序的错误和进行改进。
参考文献
1.阎石,《数字电子技术基础》(第四版).高等教育出版社,1998.11
2.康华光,《电子技术基础》(数字部分)第四版.高等教育出版社,2000
3.王道宪,《CPLD/FPGA可编程逻辑器件应用与开发》,北京,国防工业出版社,2004
4 .郑崇勋,《数字系统故障对策与可靠性技术》,北京,国防工业出版社,1995
5.欧阳星明,《数字逻辑》,武汉,华中科技大学出版社2000
6.张昌凡等,《可编程逻辑器件及VHDL设计技术》,广州,华南理工大学出版社,2001
7.李景华等,《可编程逻辑器件与EDA技术》,沈阳,东北大学出版社,2000
8.卢毅、赖杰,《VHDL与数字电路设计》,科学出版社
9.谭会生、张昌凡,《EDA技术及应用》,西安电子科技大学出版社
10.辛春艳,《VHDL硬件描述语言》,国防工业出版社
11.李中发,《数字电子技术》,北京,中国水利水电出版社,2001.7
12.夏路易、石宗义,《电路原理图与电路板设计教程Protel99SE》,北京,2002.6
附录
抢答模块
begin
if(EnFlat==1'b1)
begin
if(inputL1==1'b0)
begin
EnFlat=1'b0;
answer=3’d1;
Led2=8'hf9;
BuClk=1'b1;
end
elseif(inputL2==1'b0)
begin
EnFlat=1'b0;
answer=3’d2;
Led2=8'ha4;
BuClk=1'b1;
end
elseif(inputL3==1'b0)
begin
EnFlat=1'b0;
answer=3’d3;
Led2=8'hb0;
BuClk=1'b1;
end
elseif(inputL4==1'b0)
begin
EnFlat=1'b0;
answer=3’d4;
Led2=8'h99;
BuClk=1'b1;
end
end
End
加减分数模块
if(answer==3’d1)//第一组加减分
begin
beginif(add)
score1=score1+1;//当主持人判定选手的回答正确时,按下add键进行加分操作
elseif(stu)
score1=score1-1;
//当主持人判定选手的回答错误时,按下stu键进行减分操作
end
score=score1;//把第一组的分数赋值给分数寄存器
end
if(answer==3’d2)//第二组加减分
begin
beginif(add)
score2=score2+1;
//当主持人判定选手的回答正确时,按下add键进行加分操作
elseif(stu)
score2=score2-1;
//当主持人判定选手的回答错误时,按下stu键进行减分操作
end
score=score2;
end
if(answer==3’d3)//第三组加减分
begin
begin
if(add)
score3=score3+1;
//当主持人判定选手的回答正确时,按下add键进行加分操作
elseif(stu)
score3=score3-1;
//当主持人判定选手的回答错误时,按下stu键进行减分操作
end
score=score3;
end
if(answer==3’d4)//第四组加减分
begin
begin
if(add)
score4=score4+1;
//当主持人判定选手的回答正确时,按下add键进行加分操作
elseif(stu)
score4=score4-1;
//当主持人判定选手的回答错误时,按下stu键进行减分操作
end
score=score4;
End
倒计时模块
begin
if(EnFlat==1'b1)
begin
if(cnt!
=32'd48000000)//计时实现1HZ分频
cnt=cnt+32'd1;
else
begin
cnt=32'd0;
Led1=8'b11111111<<1'b1;//Led1左移一个单位,实现一秒的倒计时
end
end
if(Led1==8'b0)//倒计时结束还没有按键按下,则抢答停止且蜂鸣器响
EnFlat=1'b0;
BuClk=1'b1;
End
蜂鸣器模块
begin
if(BuClk==1'b1)//当蜂鸣器标志位置1时
begin//进入此蜂鸣器处理程序
Buzzer=1'b0;//蜂鸣器发声
BuL=BuL+8'd1;//延时变量加1
end
if(BuL==8'd255)//当到达延时的时间时关掉蜂鸣器
begin
BuL=8'd0;//延时变量复位
BuClk=1'b0;//蜂鸣器标志位复位
Buzzer=1'b1;//蜂鸣器停掉
end
End
重置模块
if(clr)//按下clr键以后各组参数重置,整个比赛重新开始
begin
EnFlat=1'b1;//重置各个标志位和参数Led1=8'b11111111;//重置时8个Led灯全亮
Led2=8'b11111111;//选手号静态数码管(数码管为共阳极)的控制端,有8位
Led3=8'b11111111//选手分数显示数码管重置;
BuClk=1'b0;//蜂鸣器标志位重置
Buzzer=1'b1;//蜂鸣器的控制管脚重置,低电平为发声音
score1=4’d5;
score2=4’d5;
score3=4’d5;
score4=4’d5;//各组分数重置
answer=8’hff;//分数显示寄存器重置
End
数码显示模块
begin
case(score)
4'h0:
Led3=8'hc0;//显示0
4'h1:
Led3=8'hf9;//显示1
4'h2:
Led3=8'ha4;//显示2
4'h3:
Led3=8'hb0;//显示3
4'h4:
Led3=8'h99;//显示4
4'h5:
Led3=8'h92;//显示5
4'h6:
Led3=8'h82;//显示6
4'h7:
Led3=8'hf8;//显示7
4'h8:
Led3=8'h80;//显示8
4'h9:
Led3=8'h90;//显示9
4'ha:
Led3=8'hbf;//显示-
default:
Led3=8'hff;//不显示
endcase
end
endmodule