基于FPGA制作秒表.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FPGA制作秒表

基于FPGA的数字秒表设计 河海大学 唐家博 摘要:利用FPGA制作数字秒表,外围电路简单,可靠性高,集成度高。 本设计方法主要采用VerilogHDL语言进行仿真与设计,集成开发环境是 Altera公司的quartusII。并把最终的结果用数码管进行显示。 关键词:FPGA、VerilogHDL、数字秒表、quartusII 引言 FPGA,全称是Field-Programmable Gate Array,即现场可编程门阵列,顾名思义该芯片的内部电路逻辑是不确定的,可以通过软件进行编程,这与传统的cpu、mcu等存在着明显的差异,而后者的内部电路逻辑是确定的。对FPGA的编程也与普通的软件编程是不一样的,对FPGA的编程实际上是对FPGA内部的电路逻辑进行编程,也就是所谓的HDL(hardware description language),即硬件描述语言。 目前主流的HDL包括VHDL与VerilogHDL,使用更为广泛的是VerilogHDL,在开发者中占80%左右的份额,而本文也将以VerilogHDL为例,介绍利用该硬件描述语言来实现数字秒表的设计。 设计要求与目标 a、能够从0.00秒一直计时到59.99秒 b、精度要求是10ms c、设有清零键,能够一键清零 d、设有使能键,能够提供计时暂停功能 硬件系统的搭建 时钟信号:由于数字秒表对时间精度的要求度高,所以我们采用晶体振荡器来提供时钟信号,晶体振荡器具有频率稳定、受外界影响小等特点。我们可以通过利用数字电路元件对晶体振荡器进行分频,并得到一个1MHz的时钟信号,并利用该时钟信号进行后面的设计。 译码与显示:我们利用译码器进行译码,通过数码管进行显示。其中译码管我们采用74HC164显示译码管。由于每个数码管要显示的数字从0开始最大到9为止,所以我们输出信号的位宽设计为4位即可。 使能键与清零键:为提高系统的可靠性,我们采用电平触发的按键,并且我们采用异步使能与异步清零的方式,并且清零端的优先级要高于使能端的优先级。 计时与计数功能:这部分是整个秒表的核心部分,将通过对FPGA的编程来实现。芯片采用altera公司的Cyclone系列,该系列的芯片价格适中,足以实现秒表系统的设计。 4、计时与计数器的设计: 4.1流程图: 4.2程序设计: //clk是时钟信号; rst是复位信号;en是使能端;x1表示百分之一秒;x2表示十分之一秒;x3表示秒;x4表示十秒;x5表示分钟;x6表示十分钟; module miaobiao(clk,rst,en,x1,x2,x3,x4,x5,x6); input clk,rst,en; output [3:0]x1,x2,x3,x4,x5,x6; reg [3:0]xclk,xx1,xx2,xx3,xx4,xx5,xx6; reg cclk,c1,c2,c3,c4,c5,c6; always @(en)begin if(en) cclk=clk;//en为高电平使能 else cclk=0;end always @(posedge cclk or posedge rst)begin if(rst) xclk=0;else if(xclk==9)begin xclk=0; c1=1;end else begin xclk=xclk+1; c1=0;end end always @(posedge c1 or posedge rst)begin if(rst) xx1=0;else if(xx1==9)begin xx1=0; c2=1;end else begin xx1=xx1+1; c2=0;end end always @(posedge c2 or posedge rst)begin if(rst) xx2=0;else if(xx2==9)begin xx2=0; c3=1;end else begin xx2=xx2+1; c3=0;end end always @(posedge c3 or posedge rst)begin if(rst) xx3=0;else if(xx3==9)begin xx3=0; c4=1;end else begin xx3=xx3+1; c4=0;end end always @(posedge c4 or posedge rst)begin if(rst) xx4=0;else if(xx4==5)begin xx4=0; c5=1;end else begin xx4=xx4+1; c5=0;end end always @(posedge c5 or posedge rst)begin if(rst) xx5=0;else if(xx5

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档