EDA课程设计基于fpga的数字频率计.doc

上传人:laozhun 文档编号:4146426 上传时间:2023-04-07 格式:DOC 页数:17 大小:294.50KB
返回 下载 相关 举报
EDA课程设计基于fpga的数字频率计.doc_第1页
第1页 / 共17页
EDA课程设计基于fpga的数字频率计.doc_第2页
第2页 / 共17页
EDA课程设计基于fpga的数字频率计.doc_第3页
第3页 / 共17页
EDA课程设计基于fpga的数字频率计.doc_第4页
第4页 / 共17页
EDA课程设计基于fpga的数字频率计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《EDA课程设计基于fpga的数字频率计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计基于fpga的数字频率计.doc(17页珍藏版)》请在三一办公上搜索。

1、 摘 要 等精度频率计在工业生产中具有很重要的作用,它在仪表测量领域扮演着重要的角色,它应用等精度测频原理,其测量精度优于普通频率计。基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。本次设计频率测量范围为2K999KHZ,作品已经与DDS信号源搭配成功的完成了调试,其测量精度高,性能稳定。本次设计方案是基于FPGA完成全系统设计,应用ALTERA公司的CYCLONE II芯片构成系统主体。本次设计的软件部分应用VHDL语言。应用 Quartus II 6.0完成系统的设计,具有

2、较高的灵活性与可靠性。关键词:等精度;频率计;FPGA;VHDLAbstract Equal accuracy cymometer play a very important role in the frequency of industrial production and in the field of measurement instrumentation, the application of precision frequency measurement principle, the accuracy is better than ordinary cymometer. The cy

3、mometer based on the principles of traditional frequency measurement of the accuracy will face more practical limitations when the frequency of the signal decrease.the equal accuracy cymometer not only has high accuracy, but also maintain constant accuracy in the whole frequency region.The frequency

4、 of this design is in the range of 2 K-999KHZ, it has been works with DDS signal generator successfully,completed with the commissioning, its high precision,stable performance.Key words:equal accuracy; cymometer;FPGA;VHDL目 录引言 11 设计功能及要求12 等精度测频原理13 FPGA概述33.1 FPGA概念 33.2 设计工具Quartus II 6.0 44 详细设计方

5、案55 结论12谢 辞 13参考文献 14附 录 15引言频率测量是电子测量的重要领域。频率的测量已越来越受到重视,长度、电压等参数也可以转化为与频率测量有关的技术来确定。本设计通过等精度频率测量的方法完成,基于FPGA完成了系统的设计,系统的可靠性优于常规元件组合而成的电路,系统工作频率高,稳定性也更好。通过对作品进行调试运行,证明了该设计方案的实际测量效果,该设计方案切实可行,能达到较高的频率测量精度。1 设计功能及要求1.1 设计等精度频率计,频率测量范围为2K999K。1.2 应用FPGA完成系统的设计。1.3 通过6位动态数码管完成频率数据的显示。2 等精度测频原理 等精度测频技术的

6、实际闸门时间不是固定的值,而是被测信号的整周期倍,即与被测信号同步,因此消除了对被测信号计数时产生的1个字误差,测量精度大大提高,而且达到了在整个测量频段的等精度测量,其波形图如图1所示。图1 等精度测频波形图在测量过程中,有两个计数器分别对标准信号和被测信号同时计数。首先给出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等到被测信号的上升沿到来时,计数器才真正开始计数。然后预置闸门关闭信号(下降沿)到时,计数器并不立即停止计数,而是等到被测信号的上升沿到来时才结束计数,完成一次测量过程。可以看出,实际闸门时间与预置闸门时间1并不严格相等,但差值不超过被测信号的一个周期 。等精度

7、测频具体实现方法可简化为图2所示CNT1和CNT2是两个可控计数器,标准频率(fs)信号从CNT1的时钟输入端CLK输入;经整形后的被测信号(fx)从CNT2的时钟输入端CLK输入。如图3所示 图2 等精度测频原理框图图3 闸门控制信号产生图设在一次实际闸门时间中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns。标准信号的频率为fs,则被测信号的频率为由式(1)可知,若忽略标频fs的误差,则等精度测频可能产生的相对误差为=(|fxc-fx|/fxe)100% (2)其中fxe为被测信号频率的准确值。在测量中,由于fx计数的起停时间都是由该信号的上升测触发的,在闸门时间内对fx的计数Nx

8、无误差(=NxTx);对fs的计数Ns最多相差一个数的误差,即|Ns|1,其测量频率为fxe=Nx/(Ns+Ns)/fs (3)将式(1)和(3)代入式(2),并整理得:=|Ns|/Ns1/Ns=1/(fs)=|Ns|/Ns1/Ns=1/(fs)由上式可以看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关,即实现了整个测试频段的等精度测量。闸门时间越长,标准频率越高,测频的相对误差就越小。标准频率可由稳定度好、精度高的高频率晶体振荡器产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度。每个计数器中的CEN输入端为时钟使能端控制时钟

9、输入。当预置门信号为高电平(预置时间开始)时,被测信号的上升沿通过D触发器的输出端,同时启动两个计数器计数;同样,当预置门信号为低电平(预置时间结束)时,被测信号的上升沿通过D触发器的输出端,同时关闭计数器的计数。系统由分频器、计数器1、计数器2、D触发器等组成。分频器出来的信号作为等精度测频原理的预置闸门信号。其中D触发器,计数器2和计数器1的作用与前2页图中所示相同。运算模块就是完成公式(1)的运算。复位主要对分频、计数器1和计数器2进行清零操作。3 FPGA概述3.1 FPGA概念FPGA是英文FieldProgrammable Gate Array的缩写,即现场可编程门阵列,它是在PA

10、L、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有: 1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 -2)FPGA可做其它全定制或半定

11、制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和IO引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 目前FPGA的品种很多,有XILINX公司的Virtex系列、TI公司的TPC系列、ALTERA公司的Stratix系列等。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPR

12、OM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。 FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。3.2

13、设计工具Quartus II 6.0Altera的可编程逻辑器件设计工具随着Altera公司在推出各种可编程逻辑器件的同时也在不断升级。从早期的APLUS、MAXPLUS发展到 目前的 MAXPLUS、Quartus、Quartus。MAXPLUS 和 Quartus 具有可视化的设计环境,具有工业标准 EDA工具接口,可以运行在多种操作平台上。Quartus 提供了一种与结构无关的设计环境,设计人员不需要精通器件的内部结构,只需要运用自己熟悉的输入工具(如原理图输入或高级行为描述语言)进行设计,利用Quartus可以将这些设计转换为最终结构所需要的格式。有关结构的详细知识已装入开发工具软件,

14、设计人员无须手工优化自己的设计,因此设计速度非常快。使用Quartus软件开发可编程逻辑器件,包括设计输入、项目编译、设计校验及器件编程等过程。MAXPLUS和 Quartus提供了全面的逻辑设计能力,设计人员可将文本、图形和波形等设计方法自由组合,建立起层次化的单器件或多器件设计。编译过程完成最小化逻辑综合、适配设计项目于单个器件或多个器件以及形成编程和配置数据等工作。设计校验包括功能仿真、时序仿真、影响速度的关键路径的延时预测以及多种系列器件混合使用的多器件仿真。Quartus是Altera的新一代设计开发软件,支持APEX20K、APEX、Excalibur、Mercury以及Strat

15、ix等新器件系列。为了缩短设计周期和降低设计复杂度,Quartus 含有工作组计算、集成逻辑分析功能、EDA工具集成、多过程支持、增强重编译和IP集成等特性。Quartus软件加强了网络功能,它具有最新的Internet技术,设计人员可以直接通过Internet获得 Altera的技术支持。Quartus的安装需要的PC机系统配置:奔腾或更好的PC机,256 MB以上的有效内存,不低于 128 MB的物理内存,1.5 GB以上的硬盘空间,Windows 98、Windows 2000或Windows NT 3.51、Windows NT 4.0操作系统,17英寸显示器。与MAXPLUS一样,Q

16、uartus也分为商业版和基本版。通过EDIF网表文件、SRAM目标文件(.sof)参数化的模块库(LPM)、 Verilog HDL、VHDL及DesignWare组件来共享信息, Quartus和MAXPLUS软件可与 Cadence、Mentor Graphics、OrCAD、Synopsys、Synplicity、Exemplar Logic及 Viewlogic等许多公司提供的多种 EDA工具接口。Quartus能够调用其它工具进行综合仿真,其它EDA工具也能够直接调用 Quartus工具进行设计编辑。4 详细设计方案 本次设计采用原理图、VHDL、Verilog HDL与LPM宏单

17、元库结合设计而成。顶层文件为为原理图设计。如图4所示。图4 顶层文件原理图被测信号技术模块采用VHDL语言描述完成:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count isport( bclk:in std_logic; tclk:in std_logic; bzq1:out std_logic_vector(15 downto 0); tsq1:out std_logic_vector(15 downto 0); clr:in std_logic; start:out st

18、d_logic); end count;architecture behave of count issignal bzq:std_logic_vector(15 downto 0);signal tsq:std_logic_vector(15 downto 0);signal ena:std_logic;signal q1:std_logic_vector(6 downto 0);signal cl: std_logic;begin tsq1=tsq;bzq1=bzq; start=ena; process (bclk) begin if bclkevent and bclk=1 then

19、if clr=1 then q1=0000000; cl=0; elsif q1=1111111 then q1=1111111; cl=0; else q1=q1+1;cl=1; end if; end if; end process;process (tclk)begin if tclkevent and tclk=1 then if clr=1 then tsq0);ena=0; elsif cl=1 then tsq=tsq+1;ena=1; else ena=0; end if; end if; end process;process (bclk)begin if bclkevent

20、 and bclk=1 then if clr=1 then bzq0); elsif ena=1 then bzq=bzq+1; end if; end if; end process;end behave;由公式1可知在实际闸门时间内被测信号周期数NX需要与标准时钟相乘,此乘法环节由原理图5与Verilog HDL语言结合完成图5 乘法器顶层图module multip(clk,tclk,out1,rst);input clk;input rst;input26:0 tclk;output26:0 out1;reg26:0 out1;reg26:0 q5;reg26:0 q6;reg26:

21、0 q7;reg26:0 q8;reg26:0 q9;reg26:0 q10;reg26:0 q11;always (posedge clk or negedge rst)beginif (rst=1b0) out1=27b0;elseq5 =tclk19;q6 =tclk18;q7 =tclk17;q8 =tclk16;q9 =tclk14;q10 =tclk9;q11 =tclk6;out1 =q5+q6+q7+q8+q9+q10+q11;end endmodule由公式一可知NX与FS相乘后需与NS相除,此处调用LPM宏单元库。如图6所示。图6 LPM除法器产生器生成的除法器为27位除法

22、器,内部设有流水线设计,除法运算延迟一个时钟周期,产生的除法器如下图7所示: 图7 除法器模块除法器产生的16位数据字即为被测信号的频率字,是BIN二进制代码,如果要在数码管显示必须经过BIN-BCD转换,此转换应用VHDL语言描述:library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity bin_bcd isport( datain:in std_logic_vector(23 dow

23、nto 0); dataout:out std_logic_vector(23 downto 0) );end entity;architecture rt1 of bin_bcd issignal temp5,temp4,temp3,temp2,temp1,temp0:std_logic_vector(3 downto 0);signal nn:INTEGER RANGE 0 TO 4194303;-16位的2进制beginprocess(datain,nn,temp5,temp4,temp3,temp2,temp1,temp0)beginnn=CONV_INTEGER (datain);t

24、emp5=conv_std_logic_vector(nn/100000,4);-百Ktemp4=conv_std_logic_vector(nn/10000-(nn/100000)*10,4);-十Ktemp3=conv_std_logic_vector(nn/1000-(nn/10000)*10,4);-千位temp2=conv_std_logic_vector(nn/100-(nn/1000)*10,4);-百位temp1=conv_std_logic_vector(nn/10-(nn/100)*10,4);-十位temp0=conv_std_logic_vector(nn-(nn/10

25、)*10,4);-个位end process;dataout=temp5&temp4&temp3&temp2&temp1&temp0;end rt1;动态数码管扫描程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity segmain isport(clk:in std_logic; rst:in std_logic; datain:in std_logic_vector(23 downto 0); dataout:out std_logic_vector(3 downto 0); l

26、edcom:out std_logic_vector(5 downto 0);end segmain;architecture behav of segmain issignal comclk:std_logic_vector(2 downto 0);signal bcd_led:std_logic_vector(3 downto 0);begin process(rst,clk) begin if rst=1 then comclk=5 then comclk=000;elsecomclk=comclk+1;end if;end if;end process;process(comclk)b

27、egin if comclk=000 then ledcom=000001; elsif comclk=001 then ledcom=000010;elsif comclk=010 then ledcom=000100;elsif comclk=011 then ledcom=001000;elsif comclk=100 then ledcom=010000;else ledcom=100000;end if;end process;process(comclk,datain)begin if comclk=000 then bcd_led=datain(3 downto 0); elsi

28、f comclk=001 then bcd_led=datain(7 downto 4); elsif comclk=010 then bcd_led=datain(11 downto 8); elsif comclk=011 then bcd_led=datain(15 downto 12); elsif comclk=100 then bcd_led=datain(19 downto 16); else bcd_led=datain(23 downto 20);end if;end process;dataout dout dout dout dout dout dout dout dou

29、t dout dout dout=1111111;end case;end process;end Behavioral;自动跟踪频率使能信号产生:module COUNT50b (clk,rst,out);input clk;input rst;output out;reg out;reg5:0 cnt;always (posedge clk )beginif (rst=1b1)cnt=6b0;else if (cnt=6b110001)cnt=6b000000;elsecnt24 )out=1b0;else out=1b1;endendmodule设定输入信号频率位100KHZ,系统仿真波

30、形图如图8所示:-图8 系统仿真波形图5 结论本次设计成功的完成了基于FPGA等精度频率计的设计,能够完成2K-999KHZ之间方波信号频率的测量与显示。同时可以通过调整闸门信号的时间改变测频的精确程度。但在设计中也遇到了种种问题,首先对时序的把握不够合理,时序的控制必须根据实际设计的需求,并考虑器件的常规工作频率,只有这样器件才能稳定的工作。其次在多位码组的运算环节中,对数位的变换控制不够清晰,本次设计乘法器是应用移位再相加的简便算法,数位的变换如果计算错误就会产生错误的结果。最后就是对硬件资源的节约做的还不够到位,相同的功能可通过更简单的逻辑以节省硬件资源。谢 辞在这个学期的课程设计中,我

31、能够顺利的完成设计,离不开众多老师和同学的热心帮助和支持。在此,我要向他们表示最衷心的感谢。 首先,感谢我的导师樊明老师。在整个课程设计期间,樊老师给了我很多指导和鼓励,使我能够顺利的完成任务。感谢和我一起做课程设计的同学们,感谢你们对我的设计和制作的热心帮助。 参考文献1 潘松EDA技术与VHDL(第二版)M北京:清华大学出版社,2007: 2512572 罗朝霞CPLD/FPGA设计与应用M四川:电子科技大学出版社,2003: 921433 潘松VHDL实用教程M. 北京: 电子工业出版社,2004: 3343454 杨小慧基于FPGA的EDA/SOPC技术与VHDL M北京:国防工业出版社,2007:188197 附 录图1 PCB图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号