FPGA实训报告2.docx
- 文档编号:23608210
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:25
- 大小:537.01KB
FPGA实训报告2.docx
《FPGA实训报告2.docx》由会员分享,可在线阅读,更多相关《FPGA实训报告2.docx(25页珍藏版)》请在冰豆网上搜索。
FPGA实训报告2
目录
1绪论1
1.1前言1
1.2选题背景与意义2
1.3设计要求2
1.4此次设计研究的主要内容应解决问题3
1.5开发工具简介3
1.5.1EDA技术3
1.5.2硬件描述语言—VerilogHDL3
1.5.3VerilogHDL的设计流程4
1.5.4FPGA特点4
2程序框图5
2.1系统总体框图和原理5
2.2系统实现功能5
3程序分析6
3.1各个变量的定义6
3.2分频模块6
3.3倒计时模块9
3.4抢答模块9
4电路各引脚的分配9
4.1数码显示部分10
4.2按键的分配11
5程序的调试11
5.1各个模块(部分)的调试11
5.2整体的调试11
5.3遇到的问题及解决方案11
6结论12
谢辞13
参考文献14
附录15
1绪论
1.1前言
硬件描述语言HardwareDescriptionLanguage是硬件设计人员和电子设计自动化EDA工具之间的界面。
其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。
即利用计算机的巨大能力对用VerilogHDL或VHDL建模的复杂数字逻辑进行仿真,然后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表Netlist,根据型仿真验证无误后用于制造ASIC芯片或写入EPLD和FPGA器件中。
VerilogHDL是一种硬件描述语言(HDL:
HardwareDiscriptionLanguage),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
VerilogHDL就是在用途最广泛的C语言的基础上发展起来的一种件描述语言,它是由GDA(GatewayDesignAutomation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。
1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得VerilogHDL迅速得到推广应用。
1989年CADENCE公司收购了GDA公司,使得VerilogHDL成为了该公司的独家专利。
1990年CADENCE公司公开发表了VerilogHDL,并成立LVI组织以促进VerilogHDL成为IEEE标准,即IEEEStandard1364-1995。
VerilogHDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把VerilogHDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。
1.2选题背景与意义
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
理论联系实际,巩固和运用所学课程,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个智力抢答器的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。
巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。
为了进一步了解计算机组成原理与系统结构,深入学习EDA技术,用VerilogHDL语言去控制将会使我们对本专业知识可以更好地掌握。
1.3设计要求
1、计数8人抢答器。
2、10个按键:
系统复位键、主判、8位选手。
3、主判按开始数码管显示9-0倒计时(选手抢答无效)倒计时完后蜂鸣器“滴”一声选手可以抢答显示选手号数。
以此循环。
4、可以在实验板上完成,不用外加电路。
5、调试并测量电路性能。
6、写出课程设计报告书
1.4此次设计研究的主要内容应解决问题
抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器。
电子抢答器的中心构造一般都是由抢答器由单片机以及外围电路组成。
本设计是以八路抢答为基本概念。
从实际应用出发,利用电子设计自动化(EDA)技术,用可编程逻辑器件设计具有扩充功能的抢答器。
它以VerilogHDL硬件描述语言作为平台,结合动手实验而完成的。
它的特点是电路简单、制作方便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。
抢答器在性能发面应该有较好,比如抢答次数可以计数,倒计时时间可调,选手违规抢答可显示,抢答器的灵敏性的提高等都有待我们解决。
1.5开发工具简介
1.5.1EDA技术
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
1.5.2硬件描述语言—VerilogHDL
VerilogHDL是硬件描述语言的一种,用于数字电子系统设计。
该语言是1983年由GDA(GateWayDesignAutomation)公司的PhilMoorby首创的。
PhilMoorby后来成为Verilog-XL的主要设计者和Cadence公司(CadenceDesignSystem)的第一个合伙人。
在1984-1985年间,PhilMoorby设计出第一个名为Verilog-XL的仿真器;1986年,他对VerilogHDL的发展又一次作出了巨大贡献——提出了用于快速门级仿真的XL算法。
随着Verilog-XL算法的成功,VerilogHD语言得到迅速发展。
1989年,Cadence公司收购GDA公司,VerilogHDL语言成为了Cadence公司的私有财产。
1990年,Cadence公司决定公开VerilogHDL语言,并成立了OVI(OpenVerilogInternational)组织,并负责促进VerilogHDL语言的发展。
基于VerilogHDL的优越性,IEEE于1995年制定了VerilogHDL的IEEE标准,即VerilogHDL1364-1995;2001年发布了VerilogHDL1364-2001标准。
1.5.3VerilogHDL的设计流程
1、文本编辑:
用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。
通常VerilogHDL文件保存为.v文件。
2、功能仿真:
将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只有在布线完成之后,才进行时序仿真)。
3、逻辑综合:
将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。
逻辑综合软件会生成.edf(EDIF)的EDA工业标准文件。
(最好不用MAX+PLUSII进行综合,因为只支持VHDL/VerilogHDL的子集
4、布局布线:
将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到CPLD/FPGA内。
5、时序仿真:
需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序(也叫后仿真)。
1.5.4FPGA特点
采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
目前FPGA的品种很多,有XILINX公司的Virtex系列、TI公司的TPC系列、ALTERA公司的Stratix系列等。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
FPGA有多种配置模式:
并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
OutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
FPGA可做其它全定制或半定制ASIC电路的中试样片。
2程序框图
2.1系统总体框图和原理
图2.1.1系统总体框图
2.2系统实现功能
随着Verilog数字系统设计教程的进一步学习,我们应该具备独立设计一个小系统的能力。
此次四人抢答器电路设计有以下几个目标:
(1)实现一八人抢答器,有人抢答成功后,其他人再抢答无效;
(2)通过蜂鸣器响1秒来提示抢答开始,并在数码管上显示抢答者的序号;
(3)主持人通过按键清除抢答信息,并开始10秒的答题倒计时,当倒计时结束时,通过蜂鸣器响1秒来提示回答问题开始,此时可以开始抢答;
我们设计的总体方案是将整个任务分成3个部分即分频部分(延时)、抢答模块、倒计时并报警模块。
3程序分析
3.1各个变量的定义
moduletest_1(
buzzer,clk,res,key,seg,out);
inputclk,res;/*********时钟与主判的引脚*****/
input[7:
0]key;/***********八个抢答按键*******/
outputreg[6:
0]out;/**********数码管的7段********/
outputregbuzzer;/*******蜂鸣器的引脚定义*******/
outputreg[3:
0]seg;/******数码管的位选择定义******/
regm;/**********锁存信号m**********/
reg[8:
0]s;
reg[30:
0]counter;/**********计数存储***********/
always@(posedgeclk)/*******主时钟上升沿触发*******/
beginif(res==0)
begins=0;m=0;counter=0;buzzer=1;/*****定义初始化*******/
end
3.2分频模块
因为试验箱上的时钟是40M的,而倒计时模块中要用到1hz倒计时所以要对4M时钟进行分频产生1hz,进行9秒钟倒计时,也可以说是延时程序;分频程序如下:
begin
if(counter==40000000)/*************一秒钟的计数************/
begincounter=0;
end
elsebegincounter=counter+1;endend
else
count1<=count1+1;
end
3.3倒计时模块
在倒计时模块中,当主持人启动倒计时开关后,数码管上显示10秒的倒计时并且在倒计时结束后蜂鸣器开始发出报警声音。
倒计时模块程序如下:
always@(posedgeclk)
beginif(res==0)
begins=0;m=0;counter=0;counter=0;end
/*************************倒计时部分******************************/
case(s)
0:
beginout=7'b001_0000;seg=4'b1110;//显示数字
beginif(counter==40000000)
begincounter=0;s=1;//延时1秒进入下一秒及显示
end
elsebegincounter=counter+1;end
end
end
1:
beginout=7'b000_0000;seg=4'b1110;
beginif(counter==40000000)
begincounter=0;s=2;//进入下一秒显示
end
elsebegincounter=counter+1;end
end
end
2:
beginout=7'b111_1000;seg=4'b1110;
beginif(counter==40000000)
begincounter=0;s=3;
end
elsebegincounter=counter+1;end
end
end
3:
beginout=7'b000_0010;seg=4'b1110;
beginif(counter==40000000)
begincounter=0;s=4;
end
elsebegincounter=counter+1;end
end
end
4:
beginout=7'b001_0010;seg=4'b1110;
beginif(counter==40000000)
begincounter=0;s=5;
end
elsebegincounter=counter+1;end
end
end
5:
beginout=7'b001_1001;seg=4'b1110;
beginif(counter==40000000)
begincounter=0;s=6;
end
elsebegincounter=counter+1;end
end
end
6:
beginout=7'b011_0000;seg=4'b1110;
beginif(counter==40000000)
begincounter=0;s=7;
end
elsebegincounter=counter+1;end
end
end
7:
beginout=7'b010_0100;seg=4'b1110;
beginif(counter==40000000)
begincounter=0;s=8;
end
elsebegincounter=counter+1;end
end
End
8:
beginout=7'b111_1001;seg=4'b1110;
beginif(counter==40000000)
begincounter=0;s=9;
end
elsebegincounter=counter+1;end
end
end
9:
beginout=7'b100_0000;seg=4'b1110;
beginif(counter==40000000)
begincounter=0;s=10;buzzer=1;
end
elsebegincounter=counter+1;buzzer=0;end
//报警1秒钟(buzzer低电平有效)
end
end
/**************************倒计时结束*****************************/
3.4抢答模块
抢答模块要具有第一信号鉴别、锁存功能。
第一信号鉴别锁存的关键是准确判断出第一抢答者并将其锁存,在得到第一信号后,将输入端封锁,使其他组的抢答信号无效,可以用触发器或锁存器实现。
设置抢答按钮key[0]、key[1]、key[2]、key[3]、key[4]、key[5]、key[6]、key[7]主持人复位信号res。
res=0时,第一信号鉴别、锁存电路、答题计时电路复位;res=0时,开始抢答,由第一信号鉴别锁存电路形成第一抢答信号,并进行组别显示。
抢答模块程序如下:
/**********************抢答部分***********************/
default:
begin//大于或等于10即倒计时结束抢答开始
if(!
key[0]&&!
m)beginout=7'b111_1001;seg=4'b1110;m=1;end
/************m初值为0,有按键按下即锁定*************/
elseif(!
key[1]&&!
m)beginout=7'b010_0100;seg=4'b1110;m=1;end
elseif(!
key[2]&&!
m)beginout=7'b011_0000;seg=4'b1110;m=1;end
elseif(!
key[3]&&!
m)beginout=7'b001_1001;seg=4'b1110;m=1;end
elseif(!
key[4]&&!
m)beginout=7'b001_0010;seg=4'b1110;m=1;end
elseif(!
key[5]&&!
m)beginout=7'b000_0010;seg=4'b1110;m=1;end
elseif(!
key[6]&&!
m)beginout=7'b111_1000;seg=4'b1110;m=1;end
elseif(!
key[7]&&!
m)beginout=7'b000_0000;seg=4'b1110;m=1;end
elseif(!
m==1)beginout=7'b100_0000;seg=4'b1110;s=10;end
/*****无按键显示0并重新扫描直到有按键按下并锁定******/
end
endcase
4电路各引脚的分配
4.1数码显示部分
数码管有共阴极和共阳极两种,对于共阳数码管,字形驱动输出0有效,字位驱动输出1有效;而对于共阴数码管则相反,即:
字形驱动输出1有效,字位驱动输出0有效显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有:
发光二极管LED显示器、液晶LCD显示器、CRT显示器等。
LED显示器是现在最常用的显示器之一,发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。
分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。
只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。
LED数码管有共阳、共阴之分。
图是共阳式、共阴式LED数码管的原理图和符号。
图4.1.2、数码管的符号图图4.1.2、数码管引脚分配
图十一共阳式、共阴式LED数码管的原理图和数码管的符号图
数码管实际上就是八个发光二极管,它们以两种方式连接,如果将其阴极连接在一起,这种方式构成的数码管成为共阴数码管;如果将其阳极连接在一起,这种方式构成的数码管为共阳数码管。
通过FPGA的八个控制口即可控制7段数码管各种不同显示,以及四个位选通可以控制那位数码管发光。
4.2按键的分配
按键一般都是以电平触发,在实验板中是以按下为低电平,在引脚分配时要对照好按键分配图进行分配资源。
图4.2.1、电路板中按键分布与分配
本实验的各个引脚的分配请细看附录,即是FPGA芯片中的引脚,必需与电路板的硬件一一对应。
5程序的调试
5.1各个模块(部分)的调试
程序中的分频与倒计时在一起,也可以说分频是1秒钟的延时,所以把倒计时部分分开,做为一个独立模块程序进行调试;先进行仿真,后下载程序看看实验板是否正常。
倒计时模块调试正常后进行抢答模块调试,先进行引脚的定义与分配,再进行程序调试、仿真、下载后观察电路板上是否正常。
5.2整体的调试
各个模块部分调试都无问题后进行整体调试,进行程序调试、仿真、下等,最后进行观察电路板上的现象,如果不成功,在进行程序的更改,调试等。
5.3调试过程遇到的问题及解决方案
1、在实验的开始阶段,我对所写的代码进行了波形仿真,发现波形仿真的结果是错的,再进行程序更改,经过多次修改,仿真才逐步达到理想状态。
然后进行其他方面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 报告