FPGA课程设计报告多功能数字钟讲解_第1页
FPGA课程设计报告多功能数字钟讲解_第2页
FPGA课程设计报告多功能数字钟讲解_第3页
FPGA课程设计报告多功能数字钟讲解_第4页
FPGA课程设计报告多功能数字钟讲解_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.z......资料....多功能数字钟开课学期:2014—2015学年第二学期课程名称:FPGA课程设计学院:信息科学与工程学院专业:集成电路设计与集成系统班级:**:姓名:任课教师:2015年7月21日说明论文书写要求与说明严格按照模板进行书写。自己可以自行修改标题的题目关于字体:题目:三号黑体加粗。正文:小四号宋体,行距为1.25倍。严禁抄袭和雷同,一经发现,成绩即判定为不及格!!!设计提交说明设计需要提交“电子稿”和“打印稿”;“打印稿”包括封面、说明(即本页容)、设计容三部分;订书机左边装订。“电子稿”上交:文件名为“FPGA课程设计报告-班级-**-.doc”,所有报告发送给班长,由班长统一打包后统一发送到付小倩老师。“打印稿”由班长收齐后交到:12教305办公室;上交截止日期:2015年7月31日17:00之前。TOC\o"1-3"\h\u24450第一章绪论325864关键词:FPGA,数字钟332162第二章FPGA的相关介绍4166452.1FPGA概述4300082.2FPGA特点4111892.3FPGA设计注意525707第三章QuartusII与VerilogHDL相关介绍7259743.1QuartusII7250263.2VerilogHDL711204第四章设计方案865204.1数字钟的工作原理850864.2按键消抖897504.3时钟复位8182754.4时钟校时818094.5数码管显示模块。86908第五章方案实现与验证9279795.1产生秒脉冲9305555.2秒个位进位952855.3按键消抖938515.4复位按键设置10232935.5数码管显示。10286475.6RTL结构总图112133第六章实验总结1313625第七章VerilogHDL源代码附录14第一章绪论现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者的代表就是电子设计自动化(electronicdesignautomatic,EDA)技术。本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级这三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器;而FPGA是特殊的ASIC芯片,与其它的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。在控制系统中,键盘是常用的人机交换接口,当所设置的功能键或数字键按下的时候,系统应该完成该键所对应的功能。因此,按键信息输入是与软件结构密切相关的过程。根据键盘结构的不同,采用不同的编码方法,但无论有无编码以及采用什么样的编码,最后都要转换成为相应的键值,以实现按键功能程序的转移。[1]钟表的数字化给人们生产生活带来了极大的方便,而且大扩展了钟表原先的报时功能。诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些都是以钟表数字化为基础的。因此研究数字钟以及扩大其应用有着非常现实的意义。关键词:FPGA,数字钟第二章FPGA的相关介绍FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。2.1FPGA概述系统设计师可以根据需要通过可编辑的连接把FPGA部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。这3种可编程电路是:可编程逻辑模块(CLB--ConfigurableLogicBlock)、输入/输出模块(IOB--I/OBlock)和互连资源(IR—InterconnectResource)。可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。2.2FPGA特点FPGA的基本特点主要有:1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC电路的中试样片。3)FPGA部有丰富的触发器和I/O引脚。4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。编程互连资源IR可以将FPGA部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统。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作为微处理器的外设,由微处理器对其编程。2.3FPGA设计注意不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一些关键设计问题。不过,你不必独自面对这些挑战,因为在当前业领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。本次实验所采用的FPGA器件是AlteraCycloneV5CSEMA5F31C6NFPGA实物图FPGA数码管介绍,每节数码管低电平点亮高电平熄灭。

LED序号如下图所示:根据上图所示的顺序,可以得出显示的数组代码。4'd0:HE*0=7'b1000000; //0 低电平点亮高电平熄灭4'd1:HE*0=7'b1111001; //14'd2:HE*0=7'b0100100; //24'd3:HE*0=7'b0110000; //34'd4:HE*0=7'b0011001; //44'd5:HE*0=7'b0010010; //54'd6:HE*0=7'b0000010; //64'd7:HE*0=7'b1111000; //74'd8:HE*0=7'b0000000; //84'd9:HE*0=7'b0010000; //9default:HE*0=7'b1111111; //不符合条件的显示零第三章QuartusII与VerilogHDL相关介绍3.1QuartusIIQuartusII是Altera公司的综合性PLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(AlteraHardware支持DescriptionLanguage)等多种设计输入形式,嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。QuartusII软件拥有友好的界面,使用便捷,功能强大,当中可编程逻辑设计环境采用完成集成化,是先进的EDA工具软件。该软件具备诸多特点(例如:开放性,与结构无联系,多平台设计,完全集成化,设计库丰富、工具模块化等),支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式。QuartusII能够在多系统上使用,为用户的设计方式提供了完善的图形界面。具有运行速度快,界面统一,功能集中,学用简单等特点。3.2VerilogHDLVerilogHDL是一种硬件描述语言(HDL:HardwareDescriptionLanguage),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。VerilogHDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由GatewayDesignAutomation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。第四章设计方案4.1数字钟的工作原理振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻0”规律计数。计数满后各计数器清零,重新计数。计数器的输出分别经译码器送数码管显示。计时出现误差时,可以用校时电路校时、校分。控制信号由三个独立按键输入。输入信号选择FPGA器件上的50MHZ时钟信号。4.2按键消抖因为按键的物理结构并非理想式开关,在按键按下后会在一个很短的时间出现电平抖动的情况,因此需要对按键进行消抖处理。这里的按键消抖与单片机中的按键消抖问题有所不同,不能采用延时的方法进行按键消抖,这里我选用对时钟脉冲计数的方式来判断按键是否按下。采用50MHZ时钟信号,实测160ms的消抖时长较为合适,即8000000个时钟上升沿。4.3时钟复位按下复位按键后,所有位清零。4.4时钟校时时钟计时过程中,可对时钟进行校时。本次设计不考虑对秒位进行校时,分钟的个位和小时的个位加到10时会自动进位,因此只对分钟的个位和小时的个位设置可以加1的校时按钮,即可实现校时功能。整体比较容易实现。4.5数码管显示模块。选择需要显示的时钟位数作为敏感词,用上述给出的显示代码对时钟的每一位分别进行显示处理。第五章方案实现与验证5.1产生秒脉冲always(posedgeclk) //敏感词为50MHZ时钟上升沿。。。。。。 count=count+1; if(count==32'd50000000) //产生一个一秒的脉冲, begin count=0; count_s0=count_s0+1; //秒个位计数 end如代码展现,当计数器count记到50000000个时钟上升沿的时候,向秒个位进1.5.2秒个位进位 if(count_s0==4'd10) begin count_s0=0; count_s1=count_s1+1; //产生秒十位进位 end当秒的个位计数到10的时候,向秒的十位进位。5.3按键消抖

if(!inrst_m0) count0=count0+1; if(count0==32'd8000000&&!inrst_m0) begin count0=0; count_m0=count_m0+1; end对时钟秒冲进行计数,计数达到8000000时,判断此时的电平是否为0,若还是为0,则判断按键按下,执行分钟个位加1操作。5.4复位按键设置 begin if(!reset) //按键按下为逻辑0 begin count=0; //复位置零 count_s0=0;count_s1=0; count_m0=0;count_m1=0; count_h0=0;count_h1=0; end else复位按键按下后所有位置零。5.5数码管显示。always(count_s0) //秒个位显示 begin case(count_s0) 4'd0:HE*0=7'b1000000; //0 低电平点亮高电平熄灭 4'd1:HE*0=7'b1111001; //1 4'd2:HE*0=7'b0100100; //2 4'd3:HE*0=7'b0110000; //3 4'd4:HE*0=7'b0011001; //4 4'd5:HE*0=7'b0010010; //5 4'd6:HE*0=7'b0000010; //6 4'd7:HE*0=7'b1111000; //7 4'd8:HE*0=7'b0000000; //8 4'd9:HE*0=7'b0010000; //9 default:HE*0=7'b1111111; //不符合条件的显示零 endcase end5.6RTL结构总图显示部分如下图:判断主体如下图:部分引脚图展现最终实验现象:实验总结其实本次的多功能数字钟设计其实应该还有很多其他的方法,比如用到外部中断功能进行时钟的校时,采用按键输入加数码管闪烁的方式进行校时位的选择,但限于时间较短,这部分知识空白,所以本次设计实有所缺陷。经历了本次FPGA的设计,有很多感受,首先就是看了一点数字钟设计方面的资料,遇到很多不理解的地方,于是就需要再和同学进行研究讨论,在讨论的过程中,能听到其他人的思路,感觉特别有意思,同样的功能,实现的方法有许许多多,努力把自己的想法实现,或是选择一种你喜欢的设计借鉴一下,两者都是很好的选择。通过这次设计实验,着实培养了我们独立思考、解决问题的能力,从最一开始的一筹莫展,没有一点思路,感觉像平底拔楼一样,从两手空空到产生一个控制电路,从无到有,这是创造的力量。同时,和其他同学讨论的过程也很重要,要说的还有就是最后实验成功的喜悦是无可替代的,就好像你亲手种的果树长出了果实,养的鸡下了鸡蛋,是一种创造的喜悦,整个心就像是一个大箱子里面放着一块糖,隐隐约约总能感觉到一丝甜蜜。数码管显示的数字钟是常见的技术,这次基于FPGA的多功能数字钟设计具有很高的工程价值和现实意义。让我们将知识服务于生活,将知识用于实践,锻炼了我们发现问题解决问题的能力。这次FPGA的多功能数字钟设计,加深了我们对FPGA设计的理解,培养了我们的逻辑思维和动手操作能力,使我们将知识与技能起来,使我们每个人的都在不断进步,提高了专业技能,提高了动手实践的综合能力。VerilogHDL源代码附录moduleclock(reset,inrst_m0,inrst_h0,clk,HE*0,HE*1,HE*2,HE*3,HE*4,HE*5);inputclk,reset,inrst_m0,inrst_h0;outputreg[6:0]HE*0,HE*1,HE*2,HE*3,HE*4,HE*5;reg[31:0]count=0,count0=0,count1=0; //实际宽度为25reg[3:0]count_s0=0,count_s1=0, count_m0=0,count_m1=0, count_h0=0,count_h1=0;always(posedgeclk) begin if(!inrst_m0) count0=count0+1; if(count0==32'd8000000&&!inrst_m0)//按键消抖 begin count0=0; count_m0=count_m0+1; end if(!inrst_h0) count1=count1+1; if(count1==32'd8000000&&!inrst_h0) begin count1=0; count_h0=count_h0+1; end if(!reset) //按键按下为逻辑0 begin count=0; //复位置零 count_s0=0;count_s1=0; count_m0=0;count_m1=0; count_h0=0;count_h1=0; end else count=count+1; if(count==32'd50000000) //产生一个一秒的脉冲, begin count=0; count_s0=count_s0+1; //秒个位计数 end else if(count_s0==4'd10) begin count_s0=0; count_s1=count_s1+1; //产生秒十位进位 end else if(count_s1==4'd6) begin count_s1=0; count_m0=count_m0+1; end else if(count_m0==4'd10) //分个位计数 begin count_m0=0; count_m1=count_m1+1; end else if(count_m1==4'd6) //分十位计数 begin count_m1=0; count_h0=count_h0+1; end else if(count_h0==4'd10) //时个位计数 begin count_h0=0; count_h1=count_h1+1; end else if(count_h0==4&&count_h1==2) //满24判断 begin count_h0=0; count_h1=0; endendalways(count_s0) //秒个位显示 begin case(count_s0) 4'd0:HE*0=7'b1000000; //0 低电平点亮高电平熄灭 4'd1:HE*0=7'b1111001; //1 4'd2:HE*0=7'b0100100; //2 4'd3:HE*0=7'b0110000; //3 4'd4:HE*0=7'b0011001; //4 4'd5:HE*0=7'b0010010; //5 4'd6:HE*0=7'b0000010; //6 4'd7:HE*0=7'b1111000; //7 4'd8:HE*0=7'b0000000; //8 4'd9:HE*0=7'b0010000; //9 default:HE*0=7'b1111111; //不符合条件的显示零 endcase endalways(count_s1) //秒十位显示 begin case(count_s1) 4'd0:HE*1=7'b1000000; //0 低电平点亮高电平熄灭 4'd1:HE*1=7'b1111001; //1 4'd2:HE*1=7'b0100100; //2 4'd3:HE*1=7'b0110000; //3 4'd4:HE*1=7'b0011001; //4 4'd5:HE*1=7'b0010010; //5 default:HE*1=7'b1111111; //不符合条件的显示零 endcase endalways(count_m0) //分个位显示 begin case(count_m0) 4'd0:HE*2=7'b1000000; //0 低电平点亮高电平熄灭 4'd1:HE*2=7'b1111001; //1 4'd2:HE*2=7'b0100100; //2 4'd3:HE*2=7'b0110000; //3 4'd4:HE*2=7'b0011001; //4 4'd5:HE*2=7'b0010010; //5 4'd6:HE*2=7'b0000010; //6 4'd7:HE*2=7'b1111

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论