fpga数字频率计.docx_第1页
fpga数字频率计.docx_第2页
fpga数字频率计.docx_第3页
fpga数字频率计.docx_第4页
fpga数字频率计.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

现代电子技术综合实验(数字频率计)实验报告姓名肖骏学号2805402009 时间2011年4月30日 摘要 本次试验通过对数字频率计原理的掌握,利用已有的数字电路设计知识,配合相应的软件,如ISE软件的使用(设计输入、仿真、实现),了解可编程逻辑器件(FPGA)的一般情况,通过verilog语言的描述来设计满足要求的数字频率计。并根据实验结果对误差的来源进行分析和计算。一、实验名称数字频率计的设计二、实验地点211科研楼308三、实验目的和任务(1) 了解数字电路设计的基本特点 (2) 了解数字频率计电路的基本原理 (3) 基本掌握 ISE 软件的使用(设计输入、仿真、实现) (4) 了解可编程逻辑器件( FPGA )的一般情况 (5) 基本掌握 HDL 的使用四、实验内容(1) 设计出符合设计要求的解决方案 (2) 设计出单元电路 (3) 利用 EDA 软件对各单元电路及整体电路进行仿真 (4)利用 EDA 软件在 ELB 电子课程设计实验板实现设计 (5) 观察实验结果五、项目需用仪器设备名称以及所需主要元器件PC 机、EDA教学实验系统一台,带有(SPARNTA N XC2S100芯片 ,LED 管 , 七段数码管 等)的实验板一块 , 跳线、下载电缆一根(已接好)六、实验任务与要求设计一个计数或频率计。其频率测量范围为10HZ1MHZ,测量结果用6只数码显示。有一个按钮开关用来频率计复位。有两只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。数字频率计的相关技术指标如下:1、位数:测量频率通过LED数码管为六位十进制数显示。2、测试频率范围为:1HZ-1MHZ。3、计数器溢出时要有溢出标志over。4、需要有闸门标志gate。5、显示工作方式:a、用BCD七段共阳极数码管显示读数,只有在读数不发生跳变时才是正确的结果。b、采用记忆显示方法,即在一次测试结束时,显示测试结果,此显示值一直保留到下次测量显示数到来,才将上次显示更新。用第二次测试结果,更新显示值。c、实现对高位无意义零的消隐。6、要求被测输入信号应是符合数字电路要求的脉冲波。七、VHDL设计环境介绍VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言VHDL的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware Description Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA /CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL主要特点有:(1)功能强大、设计灵活(2)支持广泛、易于修改(3)强大的系统硬件描述能力(4)独立于器件的设计、与工艺无关(5)很强的移植能力(6)易于共享和复用VHDL系统优势:(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。 (4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。 (5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。八、实验原理所谓“频率”,就是周期性信号在单位时间(1秒)内变化的次数。若在一定时间内计得这个周期信号变化的次数为N,则其频率可表达为: (1)电子技术器可以严格按公式(1)所表达的频率的定义进行测频,其原理方框图如图1所示:计数器闸门放大整形门控电路时基信号发生器 图1 测频原理图 首先,把被测信号(以正弦波为例)通过放大整形电路变成脉冲(实际上变成方波即可)其重复频率等于被测频率,然后将它加到闸门的一个输入端。闸门通过门控信号来控制开、闭时间,只有在闸门开通时间T内,被计数的脉冲才能通过闸门,被送到十进制电子计数器进行计数。门控信号的时间T是非常准确的,以它作为时间基准,它由时基发生器提供。时基信号发生器由一个高稳定的石英振荡器和一系列数字分频器组成,由它输出的标准时间脉冲(时标)去控制门控电路形成门控信号。比如,时标信号的重复周期为1S,则加到闸门的门控信号作用时间T及闸门时间亦准确的等于1S,及闸门开通时间为1S,这时若计得10000个数,则有(1)式知,被测频率。从以上讨论可知,电子计数器的测频原理实质上以比较法为基础,它将和时基信号频率相比,两个频率相比的结果以数字的形式显示出来。九、设计过程1、原理框图被测信号输入放大整形闸门计数器锁存器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 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 issignal 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 carry_in=1 and m10_counter=1001else 0;end Behavioral;生成的m10_counter符号为:仿真结果如下:6个模10计数器级联的图如下:综合后可生成简单的电路符号,如右图其中clear是清零端,t_sign是计数信号输入端,c_in是门控信号,c0c5是计数结果输出,over是进位信号二、锁存器如果计数器输出直接与译码器相连,那么在计数过程中输出端则随输入脉冲数的增加而不断跳变,那么显示数码管则也会不断闪烁跳变,让人不能看到稳定的输出,加锁存器后,则不再跳变,便可清晰读出计数结果。由control控制模块产生的latch信号来提供锁存脉冲。其生成的功能模块如下图所示:源程序: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,d4_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;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_counter=xb71aff thenm12M_counter0);elsem12M_counter=m12M_counter+1;end if;end if;end process;end Behavioral;仿真结果如下图:四、测频控制器测频控制器是控制整个频率计各模块进行时序工作的控制装置,它对输入的标准时钟信号进行变换,产生我们所需要的三个闸门信号GATE,锁存信号LATCH以及清零信号CLEAR。如果用一个低触发器处理1HZ的时钟信号,其Q端输出,即是脉宽1s计数器使能端的控制信号,而/Q输出即为脉宽1s的锁存器使能信号。计数清零信号也由测频控制器变换后输出,控制整个电路。测频控制器的计数使能信号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_LOGIC_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 Behavioral 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;latchReset=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 instantiating- 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 scan=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_LOGIC_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;architecture Behavioral of fre_s_decode isbegindotseg_outseg_outseg_outseg_outseg_outseg_outseg_outseg_outseg_outseg_outseg_out=1111111;end case;end process;end Behavioral;其仿真图如下:3、形成顶层原理图生成的各个模块按要求连线,形成顶层原理图,如下:4、分配引脚和下载实现根据XC3S200A I/O口对应管脚参考分配引脚。引脚分配完毕后双击“Generate programming”对所有程序进行综合,改正综合过程中提示的错误和警告,然后运行“Configure Device”把程序下载到电路板上。 5、结果测试在成功下载并运行后,评估该设计系统的实际测量效果,作对比试验,选用频率可调的函数发生器生成测试信号。从1Hz起,到数字频率计溢出,合理设置间隔。测得结果如下:序号输入(Hz)输出(Hz)11121010 310001004100001000 5100000100006100000100000720000020000083000003000009400000400000105000005000001160000060000012700000700000138000008000001490000089999515920000919994169600009599951710000009999961810000089999991910000170(溢出)十、误差分析由上表可以看出实验测量中存在误差,误差一方面来源于闸门时间T,另一方面来源于计数器计得的数。由计数器频率计算公式fx=N/T以及误差合成方法可得: (2)其中,第一项是数字化仪器所特有的误差,而第二项是闸门时间的相对误差,这项误差决定于石英振荡器所提供的标准频率的准确度。(a)、1误差在测频时,主门的开启时刻与计数脉冲之间的时间关系是不相关的,所以它们在时间轴上的相对位置是随机的。这样,在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论