欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于FPGA的数字频率计设计与实现(共7页).docx

    • 资源ID:14945760       资源大小:63.20KB        全文页数:7页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于FPGA的数字频率计设计与实现(共7页).docx

    精选优质文档-倾情为你奉上【摘要】本文介绍了基于FPGA的数字频率计的设计方法,设计采用硬件描述语言Verilog,在软件平台Quartus9.1上完成,可以在较高的时钟频率下正常工作。该数字频率计采用测频的方法,能基本测量1Hz到16MHz之间的信号。并使用仿真软件对Verilog程序做了仿真,并完成综合布局布线,最终下载到DE2-70实验板上得到实现。【关键词】FPGA、Verilog、Quartus9.1、测评方法Abstract:This paper introduces the design method of digital frequency meter based on FPGA,which use hardware description language-Verilog in software development platform Quartus9.1 and word in relatively high-speed clock.The frequency meter uses the method of frequency measurement,which could accurately measure the frequency of signals from 1Hz to 16MHz.This system uses the simulation tool to run and debug the Verilog progran,and design the circuit placement.A good result can be achieved when the program was burnt on the breadboard DE2-70. Key words:FPGA,Verilog, Quartus9.1,Frequency Measurement0 引言数字频率计是一种基本的测量仪器,是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。 因此,它被广泛应用与航天、电子、测控等领域。它的基本测量原理是,首先让被测信号与标准信号一起通过一个闸门,然后用计数器计数信号脉冲的个数,把标准时间内的计数的结果,用锁存器锁存起来,最后用显示译码器,把锁存的结果用液晶显示器显示出来。根据数字频率计的基本原理,本文设计方案的基本思想是分为四个模块来实现其功能,即整个数字频率计系统分为分频模块、计数模块、锁存器模块和显示模块等几个单元,并且分别用VHDL对其进行编程,实现了闸门控制信号、计数电路、锁存电路、显示电路等。而且,本设计方案还要求,被测输入信号的频率范围自动切换量程,控制小数点显示位置,并以十进制形式显示。本文详细论述了利用VHDL硬件描述语言设计,并在EDA(电子设计自动化)工具的帮助下,用大规模可编程器件(CPLD)实现数字频率计的设计原理及相关程序。特点是:无论底层还是顶层文件均用Verilog HDL语言编写,避免了用电路图设计时所引起的毛刺现象;改变了以往数字电路小规模多器件组合的设计方法。整个频率计设计在一块CPLD芯片上,与用其他方法做成的频率计相比,体积更小,性能更可靠。该设计方案对其中部分元件进行编程,实现了闸门控制信号 、多路选择电路、计数电路、位选电路、段选电路等。频率计的测频范围:116MHz。该设计方案通过了Quartus 9.1软件仿真、硬件调试和软硬件综合测试。1 电路设计总体框图本设计主要由8个部分组成,以Cyclone芯片部分为核心展开,待测信号输入,由外部电源,复位电路,单片机电路,液晶显示,标准时钟以及JTAG下载各个单元配合起来实现测试频率并在液晶显示屏上实时显示出数字频率信号,原理框图如图1所示。显示译码器锁存器计数器被测频率控制信号产生频标Gate锁存信号图1 原理框图频率是周期信号在单位时间内的重复次数,电子计数器可以对一个周期信号发生的次数,进行计数。如果某一信号在T秒时间间隔内的重复次数为N次,则该信号的频率f为 在直接测频率的基础上发展的多周期同步测频率法,在目前的测频系统中得到越来越多广泛的应用。将被测信号变成脉冲信号,其重复频率等于被测频率fx。时间基准信号发生器提供标准的时间脉冲信号、若其周期为1s。则门控电路的输出信号持续时间亦准确地等于1s。闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数N是在1秒时间内的累计数 所以被测频率fx=NHz。所以,直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。其频率测量原理如图2所示。图2 频率测量原理图2 系统的硬件框架设计控制的核心芯片是FPGA,其硬件框架设计如图3所示,它由两大功能模块组成:(1)频率计数模块,包含两个部分,选通时间控制部分,可改变选通时间;计数部分,根据选通时间的长短对被测信号正脉冲进行计数;(2)扫描显示模块,对计数的结果进行扫描显示,从而完成整个测频率的过程。外围的电路相对简单,只有信号输入整形电路和数码管显示电路和LCD显示模块。 系统的工作原理是,被测信号经整形生成矩形波输入到控制核心芯片FPGA的计数模块,计数模块根据所提供的矩形波上升沿计数,计数时间则由选通时间控制部分决定,根据频率所处的范围来决定档位;将计数的结果给显示电路,通过扫描,在数码管上和LCD上显示频率的大小。3 仿真结果由于频率计的仿真计数时间为1s,在软件测试中仿真时间较长,故此设计直接在实验板上实现可得测试结果如图4所示。4 设计总结通过此次课程设计,使我更加扎实的掌握了有关Quartus II软件的使用,使我们对EDA的知识重新巩固了。也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。代码:module Freq_counter(iCLK,RST_N,MODE,START,FCLK,HEX,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7,CONT,SEL,LCD_DATA,oLCD_RW,oLCD_RS,oLCD_EN,oLCD_ON); input iCLK,RST_N;input MODE,START,FCLK;output 24:0 CONT;output 7:0 HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7;output SEL;output 7:0 LCD_DATA;output oLCD_RW,oLCD_RS,oLCD_EN,oLCD_ON;wire CLK_33M,rst10;wire 24:0 CONT;reg SEL,en,rst1;reg 5:0 stat;wire rt,clk1,clk2,clk3,clk4,clk5,clk6,clk7;wire 31:0 bcd;reg 31:0 bcd1;wire 6:0SEG0,SEG1,SEG2,SEG3,SEG4,SEG5,SEG6,SEG7;wire 7:0 HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7;/-PLL50M U0 (.inclk0(iCLK), .c0(CLK_33M);always (posedge MODE or negedge RST_N) if(!RST_N) SEL<=1'b0; else SEL<=SEL+1'b1; /SEL=0 auto MODE; SEL=1 man MODE; always (posedge CONT19 or negedge RST_N) if(!RST_N) begin stat<=6'd0; en<=1'd0; rst1<=1'b0; end else if(!SEL) case(stat) 6'd31: begin stat<=stat+1'b1; en<=1'b1; rst1<=1'b1; end 6'd32: begin stat<=6'd0; en<=1'b0; rst1<=1'b0; end default: begin stat<=stat+1'b1; en<=1'b0; rst1<=1'b1; end endcase else case(stat) 6'd0: if(!START) begin stat<=stat+1'b1; rst1<=1'b0; end else stat<=stat; 6'd32: begin stat<=stat+1'b1; en<=1'b1; rst1<=1'b1; end 6'd33: begin stat<=6'd0; en<=1'b0; rst1<=1'b0; end default: begin stat<=stat+1'b1; en<=1'b0; rst1<=1'b1; end endcase assign rt=en; assign rst10= RST_N & rst1; /- CONT_10 hex0 (.clk(FCLK),.rst(rst10),.bcd(bcd3:0),.co(clk1); CONT_10 hex1 (.clk(clk1),.rst(rst10),.bcd(bcd7:4),.co(clk2); CONT_10 hex2 (.clk(clk2),.rst(rst10),.bcd(bcd11:8),.co(clk3); CONT_10 hex3 (.clk(clk3),.rst(rst10),.bcd(bcd15:12),.co(clk4); CONT_10 hex4 (.clk(clk4),.rst(rst10),.bcd(bcd19:16),.co(clk5); CONT_10 hex5 (.clk(clk5),.rst(rst10),.bcd(bcd23:20),.co(clk6); CONT_10 hex6 (.clk(clk6),.rst(rst10),.bcd(bcd27:24),.co(clk7); CONT_10 hex7 (.clk(clk7),.rst(rst10),.bcd(bcd31:28); always (posedge rt or negedge RST_N) if(!RST_N) bcd1<=32'd0; else bcd1<=bcd;sem_drive U2 (.oSEG0(SEG0), .oSEG1(SEG1), .oSEG2(SEG2), .oSEG3(SEG3), .oSEG4(SEG4), .oSEG5(SEG5), .oSEG6(SEG6), .oSEG7(SEG7), /output to 8 SEG .iDIG(bcd1); /input 8-BCD code (4*8=32bit) assign HEX0 = 1'b1,SEG0;assign HEX1 = (bcd111:8=4'd0) && (bcd17:4=4'd0) ? 8'd255 : 1'b1,SEG1;assign HEX2 = (bcd115:12=4'd0) && (bcd111:8=4'd0) ? 8'd255 : 1'b1,SEG2;assign HEX3 = (bcd119:16=4'd0) && (bcd115:12=4'd0) ? 8'd255 : 1'b1,SEG3;assign HEX4 = (bcd123:20=4'd0) && (bcd119:16=4'd0) ? 8'd255 : 1'b1,SEG4;assign HEX5 = (bcd127:24=4'd0) && (bcd123:20=4'd0) ? 8'd255 : 1'b1,SEG5;assign HEX6 = (bcd131:28=4'd0) && (bcd127:24=4'd0) ? 8'd255 : 1'b1,SEG6;assign HEX7 = (bcd131:28=4'd0) ? 8'd255 : 1'b1,SEG7;/-wire 7:0 LCD_DATA;wire oLCD_RW,oLCD_RS,oLCD_ON,oLCD_EN;LCD_1602 U3 (.iCLK(CLK_33M), /input clock .iRST_N(RST_N), /reset/LCD Side .LCD_DATA(LCD_DATA), .LCD_RW(oLCD_RW), /R/W H/L H:Read(Module TO MPU)L:Write(MPU TO Module) .LCD_EN(oLCD_EN), /E H,H_L Chip enable signal; .LCD_RS(oLCD_RS), /RS H/L H:DATA, L:Instruction code .LCD_ON(oLCD_ON), /Operating voltage for LCD .clk_4(CONT23), .id(bcd1); / realtime display dataendmodule专心-专注-专业

    注意事项

    本文(基于FPGA的数字频率计设计与实现(共7页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开