fpga数字频率计.docx

上传人:飞****2 文档编号:78737658 上传时间:2023-03-19 格式:DOCX 页数:18 大小:392.90KB
返回 下载 相关 举报
fpga数字频率计.docx_第1页
第1页 / 共18页
fpga数字频率计.docx_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《fpga数字频率计.docx》由会员分享,可在线阅读,更多相关《fpga数字频率计.docx(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、现代电子技术综合实验(数字频率计)实验报告姓名肖骏学号 时间2011年4月30日 摘要 本次试验通过对数字频率计原理的掌握,利用已有的数字电路设计知识,配合相应的软件,如ISE软件的使用(设计输入、仿真、实现),了解可编程逻辑器件(FPGA)的一般情况,通过verilog语言的描述来设计满足要求的数字频率计。并根据实验结果对误差的来源进行分析和计算。一、实验名称数字频率计的设计二、实验地点211科研楼308三、实验目的和任务(1) 了解数字电路设计的基本特点 (2) 了解数字频率计电路的基本原理 (3) 基本掌握 ISE 软件的使用(设计输入、仿真、实现) (4) 了解可编程逻辑器件( FPG

2、A )的一般情况 (5) 基本掌握 HDL 的使用四、实验内容(1) 设计出符合设计要求的解决方案 (2) 设计出单元电路 (3) 利用 EDA 软件对各单元电路及整体电路进行仿真 (4)利用 EDA 软件在 ELB 电子课程设计实验板实现设计 (5) 观察实验结果五、项目需用仪器设备名称以及所需主要元器件PC 机、EDA教学实验系统一台,带有(SPARNTA N XC2S100芯片 ,LED 管 , 七段数码管 等)的实验板一块 , 跳线、下载电缆一根(已接好)六、实验任务与要求设计一个计数或频率计。其频率测量范围为10HZ1MHZ,测量结果用6只数码显示。有一个按钮开关用来频率计复位。有两

3、只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。数字频率计的相关技术指标如下:1、位数:测量频率通过LED数码管为六位十进制数显示。2、测试频率范围为:1HZ-1MHZ。3、计数器溢出时要有溢出标志over。4、需要有闸门标志gate。5、显示工作方式:a、用BCD七段共阳极数码管显示读数,只有在读数不发生跳变时才是正确的结果。b、采用记忆显示方法,即在一次测试结束时,显示测试结果,此显示值一直保留到下次测量显示数到来,才将上次显示更新。用第二次测试结果,更新显示值。c、实现对高位无意义零的消隐。6、要求被测输入信号应是符合数字电路要求的脉冲波。七、VHDL设计环境介绍VH

4、DL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言VHDL的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware Description Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA /CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有

5、硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL主要特点有:(1)功能强大、设计灵活(2)支持广泛、易于修改(3)强大的系统硬件描述能力(4)独立于器件的设计、与工艺无关(5)很强的移植能力(6)易于共享和复用VHD

6、L系统优势:(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。 (4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,

7、并自动的把VHDL描述设计转变成门级网表。 (5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。八、实验原理所谓“频率”,就是周期性信号在单位时间(1秒)内变化的次数。若在一定时间内计得这个周期信号变化的次数为N,则其频率可表达为: (1)电子技术器可以严格按公式(1)所表达的频率的定义进行测频,其原理方框图如图1所示:计数器闸门放大整形门控电路时基信号发生器 图1 测频原理图 首先,把被测信号(以正弦波为例)通过放大整形电路变成脉冲(实际上变成方波即可)其重复频率等于被测频率,然后将它加到闸门的一个输入端。闸门通过门控

8、信号来控制开、闭时间,只有在闸门开通时间T内,被计数的脉冲才能通过闸门,被送到十进制电子计数器进行计数。门控信号的时间T是非常准确的,以它作为时间基准,它由时基发生器提供。时基信号发生器由一个高稳定的石英振荡器和一系列数字分频器组成,由它输出的标准时间脉冲(时标)去控制门控电路形成门控信号。比如,时标信号的重复周期为1S,则加到闸门的门控信号作用时间T及闸门时间亦准确的等于1S,及闸门开通时间为1S,这时若计得10000个数,则有(1)式知,被测频率。从以上讨论可知,电子计数器的测频原理实质上以比较法为基础,它将和时基信号频率相比,两个频率相比的结果以数字的形式显示出来。九、设计过程1、原理框

9、图被测信号输入放大整形闸门计数器锁存器Over被测频率显示扫面显示控制子系统(包括显示译码和扫描控制)门控电路分频器石英振荡器GateGateclearLatch基准信号 图2 原理框图2、各模块功能及实现一、数字频率计由于要求频率计的显示为十进制六位,所以我们可以用6个模10计数器级联来完成。源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration

10、if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity m10_counter isport(clk,rst: in std_logic;carry_in: in std_logic;count_out: out std_logic_vector(3 downto 0);carry_out: out std_logic );end m10_counter;architecture Behavioral of m10_counter issign

11、al m10_counter:std_logic_vector(3 downto 0);beginprocess(rst,clk)beginifrst=1 then m10_counter=0000;elsifclkevent and clk=1 thenifcarry_in =1 thenif m10_counter1001 then m10_counter= m10_counter+1;else m10_counter=0000;end if;elsenull;end if;end if;end process;count_out=m10_counter;carry_out=1 when

12、carry_in=1 and m10_counter=1001else 0;end Behavioral;生成的m10_counter符号为:仿真结果如下:6个模10计数器级联的图如下:综合后可生成简单的电路符号,如右图其中clear是清零端,t_sign是计数信号输入端,c_in是门控信号,c0c5是计数结果输出,over是进位信号二、锁存器如果计数器输出直接与译码器相连,那么在计数过程中输出端则随输入脉冲数的增加而不断跳变,那么显示数码管则也会不断闪烁跳变,让人不能看到稳定的输出,加锁存器后,则不再跳变,便可清晰读出计数结果。由control控制模块产生的latch信号来提供锁存脉冲。其生

13、成的功能模块如下图所示:源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity latch isport(d1_in,d2_in,d3_in,d

14、4_in,d5_in,d6_in:in std_logic_vector(3 downto 0);over_in,gate: in std_logic; d0_out,d1_out,d2_out,d3_out,d4_out,d5_out,d6_out,d7_out:out std_logic_vector(3 downto 0);over_out: out std_logic );end latch;architecture Behavioral of latch issignal d0_in,d7_in:std_logic_vector(3 downto 0);begind0_in=1111

15、;d7_in=1111;process( gate)beginifgateevent and gate=1 thenover_out=over_in;d0_out=d0_in;d1_out=d1_in;d2_out=d2_in;d3_out=d3_in;d4_out=d4_in;d5_out=d5_in;d6_out=d6_in;d7_out0);beginclk_4Hz=m12M_counter(23);scan=m12M_counter(10);process(clk_48MHz)beginif clk_48MHzevent and clk_48MHz=1 thenif m12M_coun

16、ter=xb71aff thenm12M_counter0);elsem12M_counter=m12M_counter+1;end if;end if;end process;end Behavioral;仿真结果如下图:四、测频控制器测频控制器是控制整个频率计各模块进行时序工作的控制装置,它对输入的标准时钟信号进行变换,产生我们所需要的三个闸门信号GATE,锁存信号LATCH以及清零信号CLEAR。如果用一个低触发器处理1HZ的时钟信号,其Q端输出,即是脉宽1s计数器使能端的控制信号,而/Q输出即为脉宽1s的锁存器使能信号。计数清零信号也由测频控制器变换后输出,控制整个电路。测频控制器的计

17、数使能信号Gate能产生一个周期信号,并对频率计的每一计数器Carry_in使能端进行同步控制。当Gate为高电平时,允许计数,为低电平时停止计数,并保持其所计得脉冲数。在停止计数期间,首先需要一个锁存信号latch的上升沿将计数器在前一秒的计数值锁存进24位锁存器Latch中,并由外部的7段译码器译出,并稳定显示。锁存信号之后,必须有一清零信号clear对计数器清零,为下一秒的计数操作准备。其生成的元件符号如下图所示:源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_L

18、OGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entitycontroler isport(clk_4hz : in std_logic;Gate : out std_logic;Reset : out std_logic;latch : out std_logic);endcontroler;architecture B

19、ehavioral of controler issignalcnter:std_logic_vector(2 downto 0);beginprocess(clk_4hz)beginif clk_4hzevent and clk_4hz=1thenifcnter=x111 thencnter0);elsecnterReset=1;Gate=0;latchReset=0;Gate=0;latchReset=0;Gate=1;latchReset=0;Gate=1;latchReset=0;Gate=1;latchReset=0;Gate=1;latchReset=0;Gate=0;latchR

20、eset=0;Gate=0;latchReset=0;Gate=0;latch=0;end case;end process;end Behavioral;其仿真结果如下图:五、模8计数器24KHz的扫描信号scan通过模8计数器后,得到3KHz信号sel_out。生成模块如下图:源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if inst

21、antiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity m8 isport(scan:instd_logic;sel_out:outstd_logic_vector(2 downto 0) );end m8;architecture Behavioral of m8 issignal cnt8:std_logic_vector(2 downto 0);beginsel_out=cnt8;process(scan)beginifscanevent and sc

22、an=1 thenif cnt8=x111 thencnt80);elsecnt8data_outdata_outdata_outdata_outdata_outdata_outdata_outdata_outdata_out=1111;end case;end process;end Behavioral;七、7段译码显示控制系统六位十进制数的BCD码相继进入bcd_code,经7段译码输出,显示十进制数。生成模块:源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LO

23、GIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entityfre_s_decode isport(bcd_code:instd_logic_vector(3 downto 0);seg_out:outstd_logic_vector(6 downto 0);dot:outstd_logic);endfre_s_decode;

24、architecture Behavioral of fre_s_decode isbegindotseg_outseg_outseg_outseg_outseg_outseg_outseg_outseg_outseg_outseg_outseg_out=;end case;end process;end Behavioral;其仿真图如下:3、形成顶层原理图生成的各个模块按要求连线,形成顶层原理图,如下:4、分配引脚和下载实现根据XC3S200A I/O口对应管脚参考分配引脚。引脚分配完毕后双击“Generate programming”对所有程序进行综合,改正综合过程中提示的错误和警告,然

25、后运行“Configure Device”把程序下载到电路板上。 5、结果测试在成功下载并运行后,评估该设计系统的实际测量效果,作对比试验,选用频率可调的函数发生器生成测试信号。从1Hz起,到数字频率计溢出,合理设置间隔。测得结果如下:序号输入(Hz)输出(Hz)11121010 310001004100001000 5100006789101112131415161718190(溢出)十、误差分析由上表可以看出实验测量中存在误差,误差一方面来源于闸门时间T,另一方面来源于计数器计得的数。由计数器频率计算公式fx=N/T以及误差合成方法可得: (2)其中,第一项是数字化仪器所特有的误差,而第二

26、项是闸门时间的相对误差,这项误差决定于石英振荡器所提供的标准频率的准确度。(a)、1误差在测频时,主门的开启时刻与计数脉冲之间的时间关系是不相关的,所以它们在时间轴上的相对位置是随机的。这样,在相同的主门开启时间内,计数器所计得的数却不一定相同,当主门开启时间T接近甚至等于被测信号周期Tx的整数倍N时,此项的误差最大,如下图:NTxTTx(a)T0(b)T趋近于0 T趋近于0若主门开启时刻为,而第1个计数脉冲出现在,上图(a)中示出了的情况(),这时计数器计得N个数(图中N=5);现在再来看图(b),即趋近于0,这就有两种可能的计数结果:若第一个计数脉冲和第六个计数脉冲都能通过主门,则计数为N

27、+1=6个;也可能这两个脉冲都没有进入主门,则只能计得N1=4个数。由此可知,最大计数误差为个数。所以考虑到公式(1),可写成 (3) 式中T为闸门时间,为被测频率。由公式(3)可知,不管计数值N多少,其最大误差总是1个计数单位,故称“1个字误差”。而且fx一定时,增大闸门时间T。可减少1误差对测频误差影响。(b)、标准频率误差闸门时间T准不准,主要取决于有石英振荡器提供的标准频率的准确度,若石英振荡器的频率为fc,分频系数为K,则而所以可见,闸门时间的准确度在数值上等于标准频率的准确度。由以上公式可知:当输入频率值为HZ时,输出频率值为HZ,误差为:当输入频率值为HZ时,输出频率值为HZ,其

28、误差为:其余的相对误差计算方法一样,分析结果可见,误差都在0.001%左右,这个数很小,因此在一般精度的系统中,就可以应用该频率计来计数或测频。十一、实验结论:(1).通过ISE综合,ModelSim仿真,最终在XC3S200A上实现了10Hz1MHz频率计数器的设计,其误差在0.001%左右。(2).当频率计值达到999.999KHz时,这时输入频率值再继续增加,输出会清零,并且LED8会变亮表示计数器已经溢出。十二、总结及心得体会:通过频率计的设计试验,对频率计有了更深的认识,尤其是对频率计的工作原理以及各功能模块的实现有深入了解。此外,还熟悉了Xilinx ISE 9.1i软件的用法和VHDL/Verilog的编程环境,通过本次的设计培养自己的实验动手能力。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com