ImageVerifierCode 换一换
格式:DOC , 页数:41 ,大小:1.21MB ,
资源ID:127801      下载积分:5 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-127801.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于FPGA数字跑表实验说明书.doc)为本站会员(h****)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

基于FPGA数字跑表实验说明书.doc

1、Logo Sina :Jennifer-tthFPGA 设计实践报告 基于 FPGA数字跑表 专 业: 电子信息工程 班 级: 电子 xxx 班 学生学号: xxxx 学生姓名: xxxx 指导教师: xxxx 完成时间: 2018 年 7 月 9 日 2 数字跑表设计 一、 设计概述 FPGA( Field Programmable Gate Array),即现场可编程门阵列,它是在PAL、 GAL、 CPLD 等可编程器件的基础上进一步发展的产物。它是作为 专用集成电路 ( ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足, 又克服了原有可编程器件门电路数有限的缺点。 Ve

2、rilog HDL 语言是在 C 语言的基础上发展而来的。从语法结构上看,Verilog HDL 继承和借鉴了 C 语言的很多语法,两者有许多的相似之处,但Verilog HDL 作为一种硬件描述语言,还是有本质的区别。即可适用于综合的电路设计,也可胜任电路和系统的仿真;能在多层次上对所设计的系统加以描述,从开关级、门级,寄存器传输级到行为级等都可以担任,而且没规模限制;灵活多变的电路描述风格,可进行行为描述,也可进行结构描述等,应用十分的广泛。 Quartus软件是 Atlera 的 CPLD/FPGA 集成开发软件,具有完善的可视化设计环境,并具有 标准的 EDA 工具接口,基于 Quar

3、tus进行 EDA 设计开发需要以下步骤 :设计输入、编译、仿真、编程与验证等。 本次通过 Verilog HDL 语言编写一个具有“百分秒、秒、分”计时功能的数字跑表,可以实现一个小时内精确至百分之一秒的计时器。数字跑表的显示可以通过编写数码管显示模块程序来实现,设计实现计数及进位的功能,通过几个always 模块的设计实现一个特定用途的电子产品 -数字跑表。 二、设计功能 数字跑表是生活中常见的一种电子产品,特别应用与体育比赛中。本数字跑表是通过按键来控制计时的 开始和结束,一个是复位控制按键,用于设计跑表为初始零状态;另一个则是开始 /停止控制按键,在复位控制无效的情况下,按一下开始 /

4、停止键则计时器开始计时,再按一下则暂停计时,再按一下则继续计时。下面是其功能图: 具体性能如下: ( 1) 跑表的计时范围为 0.01s 59min59.99s,计时精度为 10ms; ( 2) 具有异步复位清零、启动、计时和暂停功能; 3 ( 3) 输入时钟频率为 100Hz; ( 4) 要求数字跑表的输出能够直接驱动共阴极 7 段数码管显示 . 实现要求: ( 1) 分析功能要求,划分功能模块; ( 2) 编写各模块的 VerilogHDL 语言的设计程序; ( 3) 在 Quartus软件上完成设计和仿真; ( 4) 根据实验室 FPGA 芯片,将设计生成配置文件,然后将配置文件下载到实

5、验装置上运行,操作实验装置上设定的功能按键,验证设计功能。 三、设计方案 本次设计的跑表首先要从最低位的百分秒计数器开始,按照系统时钟进行计数。百分位计数到 100 后向秒计数器进位,秒计数器以百分秒计数器的进位位为时钟进行计数。秒计数到 60 后向分计数器进位,分计数器以秒计数器的进位位为时钟进行计数。数字跑表巧妙地运用进位位作为时钟来减少了计数的位数。 数字跑表提 供了清零位 CLR 和暂停 /开始位 PAUSE,百分秒的时钟信号可以通过系统时钟分频提供。分频至 100Hz,即可实现时间计数。 具体程序设计分为两个大模块。主要模块说明功能的分配、内部功能块和对外接口关系,功能模块具体控制实

6、际的逻辑功能和具体的实现。 (一) 主模块 在主程序模块中包括两部分,第一部分是 VerilogHDL 程序的逻辑结构。用if.else 以及进位来实现百分秒计满到 99 进位到秒,当秒满 59 时进位到分,分满 59 以后归 0.第二部分是 LDE 显 示部分。 (二) 时钟模块 4 第二大模块是时钟分频模块,本实验利用开发板上 50MHz 的时钟频率,通过分频程序将其分成所要求的 100Hz。通过计算得到需要利用 500000 分之一的分频,但是分频后快半秒,时钟是翻转后的一个高电平和一个低电平所以,最后分频是 250000 分之一分频。这样就刚好是正常的时间跳变速度。 四、 程序分析 下

7、面是程序的主要流程图: /*信号定义 CLK: 时钟信号; CLR: 异步复位信号; 分高位 分低位 秒高位 秒低位 百分秒高位 百分秒低位 MH ML SH SL MSH MSL 5 PAUSE: 暂停 /启动信号; */ module h (clk,clr,pause,msh,msl,sh,sl,mh,ml,led1,led2,led3,led4,led5,led6); input clk,clr; input pause; output 6:0led1; output 6:0led2; output 6:0led3; output 6:0led4; output 6:0led5; out

8、put 6:0led6; output 3:0 msh,msl,sh,sl,mh,ml; reg 6:0led1; reg 6:0led2; reg 6:0led3; reg 6:0led4; reg 6:0led5; reg 6:0led6; reg3:0 msh,msl,sh,sl,mh,ml; reg cn1,cn2; /cn1 为百分秒向秒的进位, cn2 为秒向分的进位 /百分秒计数进程,每计满 100, cn1 产生一个进位 1 always (posedge clk or posedge clr) begin if(clr) /异步复位 begin msh,msl=8h00; /

9、从 00 开始计数 cn1=0; end else if(!pause) /PAUSE 为 0 时正常计数,为 1 时暂时计数 begin if (msl=9) begin msl=0; /低位百分秒计数到 10 是归零 if (msh=9) begin msh=0; /高位百分秒计数到 10 是归零 cn1=1; /CN1 触发进位 end else /低位计数到 10,高位未计数到 10 时,高位计数 msh=msh+1; end else begin /低位计数未到 10 时,继续计数 msl=msl+1; 6 cn1=0; /低位未计数到 10 时, CN1 不产生进位 end end

10、 end /秒计数模块,每计数满 60, CN2 产生一个进位 always (posedge cn1 or posedge clr) begin if (clr) begin /异步复位 sh,sl=8h00; cn2=0; end else if(sl=9) begin sl=0; /低位秒计数到 10,低位归零 if (sh=5) begin sh=0; /低位计数到 10,高位计数到 6 时 ,高位秒归零 cn2=1; /cn2 触发进位 end else sh=sh+1; /低位计数到 10,高位未到 6 时,低位计数 end else begin sl=sl+1; /低位未计数到

11、10,低位计数 cn2=0; /低位未计数到 10 时, CN2 不产生进位 end end /分钟计数模块,每计满 60,系统自动清 0 always (posedge cn2 or posedge clr) begin if(clr) begin /异步复位 mh,ml=8h00; end else if(ml=9) begin ml=0; /低位分计数到 10 时,低位归零 if (mh=5) mh=0; /低位计数到 10,高位计数到 6 时,高位归零 7 else mh=mh+1; /低位计数到 10,高位未计数到 6 时,高位计数 end else ml=ml+1; /低位计数未到

12、 10 时,低位计数 end /led 显示模块 always(msl3:0) begin case(msl3:0) /利用 case 语句控制显示低位百分秒的 09 0:led1=b1000000; 1:led1=b1111001; 2:led1=b0100100; 3:led1=b0110000; 4:led1=b0011001; 5:led1=b0010010; 6:led1=b0000010; 7:led1=b1111000; 8:led1=b0000000; 9:led1=b0010000; endcase end always(msh3:0) begin case(msh3:0)

13、/利用 case 语句控制显示高位百分秒的 09 0:led2=b1000000; 1:led2=b1111001; 2:led2=b0100100; 3:led2=b0110000; 4:led2=b0011001; 5:led2=b0010010; 6:led2=b0000010; 7:led2=b1111000; 8:led2=b0000000; 9:led2=b0010000; endcase end always(sl3:0) begin case(sl3:0) /利用 case 语句控制显示低位秒的 09 0:led3=b1000000; 1:led3=b1111001; 2:le

14、d3=b0100100; 3:led3=b0110000; 8 4:led3=b0011001; 5:led3=b0010010; 6:led3=b0000010; 7:led3=b1111000; 8:led3=b0000000; 9:led3=b0010000; endcase end always(sh3:0) begin case(sh3:0) /利用 case 语句控制显示高位秒的 05 0:led4=b1000000; 1:led4=b1111001; 2:led4=b0100100; 3:led4=b0110000; 4:led4=b0011001; 5:led4=b001001

15、0; endcase end always(ml3:0) begin case(ml3:0) /利用 case 语句控制显示低位分的 09 0:led5=b1000000; 1:led5=b1111001; 2:led5=b0100100; 3:led5=b0110000; 4:led5=b0011001; 5:led5=b0010010; 6:led5=b0000010; 7:led5=b1111000; 8:led5=b0000000; 9:led5=b0010000; endcase end always(mh3:0) begin case(mh3:0) /利用 case 语句控制显示高

16、位分的 05 0:led6=b1000000; 1:led6=b1111001; 2:led6=b0100100; 3:led6=b0110000; 4:led6=b0011001; 5:led6=b0010010; endcase 9 end endmodule module led (ledin,ledout);/七段译码模块 input3:0 ledin; output6:0 ledout; reg6:0 ledout; always(ledin) /case 语句进行译码 begin case(ledin) /分别对应数码管的 a-g 4d0:ledout=7b11000000; 4d

17、1:ledout=7b11111001; 4d2:ledout=7b10100100; 4d3:ledout=7b10110000; 4d4:ledout=7b10011001; 4d5:ledout=7b10010010; 4d6:ledout=7b10000010; 4d7:ledout=7b11111000; 4d8:ledout=7b10000000; 4d9:ledout=7b10010000; default:ledout=7bx; endcase end endmodule 分频模块 module clk(f50m,f100); input f50m; output f100; reg f100; reg 31:0h; always(posedge f50m) begin if(h=250000) /对计数器进行判断,确定 f100 信号是否反转 begin h=0; /不计数 f100=f100; end else /未计数到 250000 时,继续计数 h=h+1; end endmodule 五、 仿真实现 10 (一)系统的功能模块原理图: (二)仿真图 六、硬件实现

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。