1、2011 年电子技术实验实验报告频率计一、概述数字频率计是使用领域非常广泛的测量仪器,在计算机、通讯设备、音频视频等科研生产领域不可缺少。通过十进制数字显示被测信号频率,具有测量迅速,精度高,显示直观等诸多优点。本实验中,我们使用 VHDL 开发 FPGA 的一般流程,采用频率计开发的基本原理和相应的测量方案,在 FPGA 实验开发板进行数字频率计的设计和实现。数字频率计是数字电路中的一个典型应用,随着复杂可编程逻辑器件(CPLD)的广泛应用,以 EDA 工具作为开发手段,运用 VHDL 语言,将使整个系统大大简化,提高整体的性能和可靠性。本次的频率计设计主要是顶层设计,通过各个模块综合使用,
2、学习常用的数字系统设计方法。采用 VDHL 编程设计实现的数字频率计,除被测信号的整形部分、键输入部分以外,其余全部在一片 FPGA 芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。该数字频率计具有高速、精确、可靠、抗干扰性强和现场可编程等优点。本实验,我采用硬件描述语言 VHDL,在软件开发平台 ISE 上完成,该设计的频率计能准确的测量频率在 10Hz 到 100MHz 之间的信号。使用 ModelSim仿真软件对 VHDL 程序做了仿真,并完成了综合布局布线,最终下载到 FPGA上。 VHDL 主要用于描述
3、数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL 的语言形式,描述风格以及句法十分类似于一般的计算机高级语言。VHDL 的程序结构特点是将一项工程设计,或称为设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(又称为可视部分,即端口)和内部(又称为不可视部分) ,即设计实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其它的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是 VHDL系统设计的基本点。应用 VHDL 进行工程设计的优点是多方面的,具体如下:1、与其它的硬件描述语言相比,VHDL 具有更强的行为描
4、述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的 EDA 工具和 VHDL 综合器而言,将基于抽象的行为描述风格的 VHDL程序综合成为具体的 FPGA 和 CPLD 等目标器件的网表文件已不成问题,只是在综合与优化效率上略有差异。2、VHDL 最初是作为一种仿真标准格式出现的,因此 VHDL 既是一种硬件电路描述和设计语言,也是一种标准的网表格式,还是一种仿真语言。其丰富的仿真语句和库函数,使得在任何大系统的设计早期(即尚未完成) ,就能用于查验设计系统的功能可行性,随时可对设计进行仿
5、真模拟。即在远离门级的高层次上进行模拟,使设计者对整个工程设计的结构和功能的可行性做出决策。3、VHDL 语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能,符合市场所需求的,大规模系统高效、高速的完成必须由多人甚至多个开发组共同并行工作才能实现的特点。VHDL 中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有力的支持。4、对于用 VHDL 完成的一个确定的设计,可以利用 EDA 工具进行逻辑综合和优化,并自动地把 VHDL 描述设计转变成为门级网表。这种方式突破了门级电路设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开
6、发成本。应用 EDA 工具的逻辑优化功能,可以自动地把一个综合后的设计变成一个更高效、更高速的电路系统。反过来,设计者还可以容易地从综合和优化后的电路获得设计信息,返回去更新修改 VHDL 设计描述,使之更为完善。5、VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。正因为 VHDL 硬件描述与具体的工艺技术和硬件结构无关,VHDL 设计程序的硬件实现目标器件有广阔的选择范围,其中包括各系列的 CPLD、 FPGA 及各种门阵列实现目标。6、由于 VHDL 具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序
7、的条件下,只需要改变端口类属参量或函数,就能轻易地改变设计的规模和结构。现场可编程门阵列(FPGA)器件是八十年代中期出现的新产品,它的应用大大地方便了 IC 的设计,因而随着数字技术日益广泛的应用,以 FPGA 为代表的 ASIC 器件得到了迅速的普及和发展,器件集成度和速度都在高速增长。传统的电路设计过程是:先画原理图、把原理图绘制成印制电路板图、再制版、安装、调试。有了 FPGA,我们只需要在计算机上绘出原理图,再运行相应的软件,就可把所设计的逻辑电路在 FPGA 中实现。所有步骤均可自动完成。电子设计工程师自己设计专用集成电路成为了一件很容易的事情。FPGA 作为专用集成电路(ASIC
8、 )概念上的一个新型范畴和门类,以其高度灵活的用户现场编程方式,现场定义高容量数字单片系统的能力,能够重复定义、反复改写的新颖功能,为复杂数字系统设计、研制以及产品开发提供了有效的技术手段。电子应用设计工程师应用 FPGA 技术不仅可避免通常 ASIC单片系统设计周期长,前期投资风险大的弱点,而且克服了过去板级通用数字电路应用设计的落后,繁琐和不可靠性。目前 FPGA 的两个重要发展与突破是,大多数厂商在其高端器件上都提供了片上的处理器(如 CPU、DSP)等硬核(Hard Core)或固化核(Fixed Core) 。比如 Xilinx 的 Virtex II Pro 芯片可以提供 Powe
9、r PC,而 Altera 的Stratix、 Excalibur 等系列芯片可以提供 Nios、DSP 和 Arm 等模块。在 FPGA 上集成微处理器,使 SOPC 设计更加便利与强大。另一个发展是在不同器件商推出的高端芯片上大都集成了高速串行收发器,一般能够达到 3Gb/s 以上的数据处理能力,在 Xilinx、Altera 、Lattice 都有相应的器件型号提供该功能。这些新功能使 FPGA 的数据吞吐能力大幅度增强。对于目标器件为 FPGA 和 CPLD 的 HDL 设计,其工程设计的基本流程如图 2-1 所示。现具体说明如下。图 2-1 EDA 设计流程1、文本编辑用任何文本编辑
10、器都可以进行,通常 VHDL 文件保存为 vhd 文件,Verilog文件保存为 v 文件。2、使用编译工具编译源文件HDL 的编译器有很多,ACTIVE 公司,MODELSIM 公司,SYNPLICITY公司,SYNOPSYS 公司, VERIBEST 公司等都有自己的编译器。3、逻辑综合将源文件调入逻辑综合软件进行综合。综合的目的是在于将设计的源文件由语言转换为实际的电路。但是此时还没有在芯片中形成真正的电路。这一步的最终目的是生成门电路级的网表(Netlist)。4、布局、布线将第 3 步生成的网表文件调入 PLD 厂家提供的软件中进行布线,即把设计好的逻辑安放到 CPLD FPGA 内
11、。这一步的目的是生成用于下载(编程Programming)的编程文件。在这一步,将用到第 3 步生成的网表,并根据CPLDFPGA 厂商的器件容量,结构等进行布局、布线。这就好像在设计 PCB时的布局布线一样。先将各个设计中的门根据网表的内容和器件的结构放在器件的特定部位。然后,在根据网表中提供的各门的连接,把各个门的输入输出连接起来。最后,生成一个供编程的文件。这一步同时还会加一些时序信息(Timing)到你的设计项目中去,以便于你做后仿真。5、后仿真利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。(也叫布局布线仿真或时序仿真)。这一步主要是为了确定你的设计在经过布局布线之后,是不
12、是还满足你的设计要求。6、编程,下载如果前几步都没有发生错误,并且符合设计要求,这一步就可以将由适配器等产生的配置或下载文件通过编程器或下载电缆下载到目标芯片中。7、硬件测试硬件测试的目的是为了在更真实的环境中检验 HDL 设计的运行情况,特别是对于 HDL 程序设计上不是十分规范,语义上含有一定歧义的程序。本次试验我们采用 XILINX EDA 教学实验开发板(XILINX EDA EXPERIMENTAL BOARD)设计综述:本学生 EDA 实验开发板为本校电子工程学院电子实验中心为完善学生 EDA 实验种类,提高学生在可编程逻辑方面的实践能力而研发的 FPGA实验板。本实验板在设计研发
13、的过程中,充分吸收了实验中心几位资深教师长期在一线课堂积累的经验,相对于众多世面上销售的较高成本,繁多功能的开发板而言,本设计则是更有针对性的在 FPGA 外围功能上侧重基础方面应用。完整的功能使得本开发板既能够很好的满足教师实验课程的内容,低廉的价格又能够成为学生学习可编程逻辑起步以及基础应用最合适自学平台。功能特点:实验板主要功能特色:实验板核心 FPGA 芯片选用 XILINX 公司当前低端主流芯片XC3S200A,该系列在之前的 3E 系列上更加强了用户 IO 的电平兼容能力以及支持热拔插。非常适合用于实验连接,可以有效的防止在学生试验中由于错误连接导致的芯片损坏。选用的 FTG256
14、 的 BGA 封装不仅能够在最低成本的前提下保证信号传输的稳定性,同时也能完全兼容同系列更多逻辑门的XC3S400A( 40 万门)芯片的替换,为之后实验板高级实验扩展提供了准备。电源设计选用了两级级联的方式,以扩展更广的输入电压范围(7.515V)兼容以及更安全的系统供电方式。配置方式选用最常规的 JTAG 接口+主动配置模式,最大程度简化设计风险以及调试难度,便于初学者入门学习。实验板外围功能包括:8 个按钮开关、2 个 8 位拨动开关、8 位共阳数码管、16X16 LED 点阵、8 个 LED 显示、一个蜂鸣器、温度传感器、 AD 电压转器、RS232 接口转换器以及外置 48MHz 有
15、源晶振。同时,为了软核在 SOPC 嵌入式方面的扩展,板上还增加设计了 NOR FLASH 存储器。为了便于外接逻辑分析仪以及扩展使用,实验板上增设了 33 个外扩 IO口,以满足扩展功能需要。实验板外围配套了一个 128 X 64 的点阵液晶显示器,通过实验板的预留接口连接。以完善实验板综合功能。系统设置了复位按钮开关以及悬挂开关,可以实现系统不断电情况下的软复位以及睡眠状态。二、设计要求设计一个数字频率计,其指标要求如下:1、被测输入信号:方波2、测试频率范围为:10Hz100MHz 3、量程分为三档:第一档:闸门时间为 1S 时,最大读数为 999.999KHz第二档:闸门时间为 0.1
16、S 时,最大读数为9999.99KHz 第三档: 闸门时间为 0.01S 时,最大读数为99999.9KHz。4、显示工作方式:a 、用六位 BCD 七段数码管显示读数。b、采用记忆显示方法c、实现对高位无意义零的消隐。 三、系统工作原理在电子技术领域内,频率是一个最基本的参数,频率与其它许多电参量的测量方案、测量结果都有十分密切的关系。因此,频率的测量就显得更为重要.而且,目前在电子测量中,频率的测量精确度是最高的。所谓“频率” ,就是周期性信号在单位时间(1 秒)内变化的次数。若在一定的时间间隔 T 内计数,计得某周期性信号的重复变化次数为 N,则该信号的频率可表达为:f = N / T
17、公式 1其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率 f。时间基准信号发生器提供标准的时间脉冲信号,若其周期为 1s,则门控电路的输出信号持续时间亦准确地等于 1s。闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数 N是在 1 秒时间内的累计数,所以被测频率 f=NHz。比如,时标信号的重复周期为 1S,则加到闸门的门控信号作用时间 T 即闸门时间亦准确地等于 1s,即闸门开通时间为 1s,这时若计得 10 000 个数,则按式一,被测频率 =10.000Hz
18、,若计数器上单位显示为“kHz” ,则显示xf10.000kHz,即小数点定位在第三位。不难设想,若闸门时间改为 T=0.1s,则计数值为 1 000,这个数乘以 10 就等于 1s 的计数值,即Hz。实际上,当改变闸门时间 T 时,显示器上的小数点00xf也随着往右移一位(自动定位),即显示 10.000kHz。下面我们来分析计数器测频的测量误差。从公式一可知,上述测频方法的测量误差,一方面决定于闸门时间 T 准不准,另一方面决定于计数器计得的数准不准。根据误差合成方法,从公式可得:公式二公式二中第一项 是数字化仪器所特有的误差,而第二项 是闸门时间NT的相对误差,这项误差决定于石英振荡器所
19、提供的标准频率的准确度。现分述如下。1 误差在测频时,主门的开启时刻与计数脉冲之间的时间关系是不相关的,所以它们在时间轴上的相对位置是随机的。这样,在相同的主门开启时间内,计数器所计得的数却不一定相同,当主门开启时间 T 接近甚至等于被测信号周期xf的整数倍 N 倍时,此项误差为最大,下图画出的就是这种情况。xT若主门开启时刻为 ,而第 1 个计数脉冲出现在 ,图 4-2 (a)中示出了 0TxTxT0 的情况 ( ),这时计数器计得 N 个数(图中 N=6);现在再来看图 0Tx4-2 (b)情况,即 趋近于 0,这就有两种可能的计数结果:若第 1 个计数脉冲和第 7 个计数脉冲都能通过主门
20、,则可计得 N+1=7 个数;也可能这两个脉冲都没有能进入主门,则只能计得 N-1=5 个数。由此可知,最大的计数误差为个数。所以考虑到公式一),可写成1N公式三xTfN1式中 T 为闸门时间, 为被测频率。从公式三可知,不管计数值 N 多少,xf其最大误差总是1 个计数单位,故称“1 个字误差” ,简称“1 误差” 。而且 一定时,增大闸门时间 T,可减小1 误差对测频误差的影响。当 T 选定xf后, 越低,则由1 误差产生的测频误差越大。闸门时间 T 准不准,主要决定于由石英振荡器提供的标准频率的准确度,若石英振荡器的频率为 ,分频系数为 k,则cf cfT而 2cfk所以(4-4)cfT
21、可见,闸门时间的准确度在数值上等于标准频率的准确度,式中负号表示由 引起的闸门时间的误差为 。cf通常,对标准频率准确度 的要求是根据所要求的测频准确度提出来的,cf例如,当测量方案的最小计数单位为 1Hz,而 = Hz,在 T=1s 时的测量准xf610确度为 (只考虑 误差),为了使标准频率误差不对测量结果表明产生6101影响,石英振荡器的输出频率准确度 应优于 ,即比 误差引起的测cf7101频误差小一个量级。综上所述,可得如下结论:1、计数器直接测频的误差主要有两项:即 误差和标准频率误差。一般,1总误差可采用分项误差绝对值合成,即公式五)1(cxxfTf可把公式五画成下图所示的曲线,
22、即 与 T, 以及 的关系曲xxfcf线。误差曲线从图可知, 一定时,闸门时间 T 选得越长,测量准确度就越高。而当 Txf选定后, 越高,则由于 误差对测量结果的影响越小,测量准确度就越高。xf1但是,随着 误差的减小,标准频率误差 将对测量结果产生影响,并以1cf(图中以 为例 )为极限,即测量准确度不可能优于 。cf905 91052、测量低频时,由于 误差产生的测频误差大得惊人,例如, 为xf10Hz,T=1s ,则由 误差引起的测频误差可达到 10%,所以,测量低频时不宜采用直接测频方法。四、单元电路的划分通过对实验要求的分析,我们可以将数字频率计的单元电路划分为一下部分。1、 分频
23、器分频器的功能是提供标准闸门时间控制信号以精确控制计数器的开闭。由于闸门时间只有 1S,0.1S,0.01S 三档,由 FPGA 提供的标准时间信号源是48MHz,为此,我们采用计数器实现计数循环。比如需要产生 1hz 的信号,我们使用循环计数,当数值达到 24000000 时,clk_1hz 的信号取反,对计数回复到 1,如此循环。再如产生 10hz 的信号,计数数值就需达到 2400000,产生100hz 的信号,计数数值需达到 240000,产生 1khz 的信号,计数数值达到240000。这样就可以实现分频器的功能。分频器模块:分频器源程序:library IEEE;use IEEE.
24、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 Fdiv isPort ( clk : in STD_LOGIC;clk1 : out STD_LOGIC;clk10 : out STD_
25、LOGIC;clk100 : out STD_LOGIC;clk1k : out STD_LOGIC);end Fdiv;architecture Behavioral of Fdiv issignal clk1_temp:std_logic;signal clk10_temp:std_logic;signal clk100_temp:std_logic;signal clk1k_temp:std_logic;signal cnt1:integer range 1 to 24000000:=1;signal cnt10:integer range 1 to 2400000:=1;signal
26、cnt100:integer range 1 to 240000:=1;signal cnt1k:integer range 1 to 24000:=1;beginp1:process(clk)beginif rising_edge(clk) thenif cnt1 = 24000000 thencnt1 fref_temp fref_temp fref_temp fref_temp data data data data data data data led led led led led led led led led led led if freq_value5 = “0000“ the
27、nif freq_value4 = “0000“ thenhide if freq_value5 = “0000“ thenif freq_value4 = “0000“ thenif freq_value3 = “0000“ thenhide if freq_value5 = “0000“ thenif freq_value4 = “0000“ thenif freq_value3 = “0000“ thenif freq_value2 = “0000“ thenhide hide if hide(0) = 1 then ledout if hide(1) = 1 then ledout i
28、f hide(2) = 1 then ledout if hide(3) = 1 then ledout if hide(4) = 1 then ledout if hide(5) = 1 then ledout ledout “ LOC = F8;NET “choose“ LOC = D8;NET “choose“ LOC = E7;NET “clk“ LOC = T8;NET “clk_in“ LOC = A14;NET “dp“ LOC = C11;NET “g“ LOC = D7;NET “ledout“ LOC = B14;NET “ledout“ LOC = A13;NET “le
29、dout“ LOC = C13;NET “ledout“ LOC = C12;NET “ledout“ LOC = A12;NET “ledout“ LOC = B12;NET “ledout“ LOC = A11;NET “over_out“ LOC = C10;NET “sele“ LOC = N5;NET “sele“ LOC = L6;全部仿真通过后,就运行 ISE 的设计实现,然后再打开 XILINX PACE,在里面分配引脚,即实现设计的输入输出端口与实际芯片的输入输出端口的对应连接。比如七段 LED 管的控制信号就连接到实际电路的七个引脚。需要注意的是一些端口是固定的,不能胡乱的
30、连接。比如时基信号即石英振荡器所提供的信号就只能由 T8 输入。同时还要考虑内部的可配制逻辑块 CLB 的数量是否够满足程序的综合要求。一切都准备就绪后就可以运行 Configure Device,选择要下载的位文件(.bit)便可开始下载了。六、结果测试在成功下载并运行后,为评估该设计系统的实际测量效果,做了一次对比实验,选用频率可调的函数发生器,同时用示波器做同步的跟踪。经过试验验证,测得的数据很精确,跟函数发生器以及示波器的显示全吻合。最低频率可以测到 10Hz,不过要求输入信号很稳定且为方波,因为芯片输入端口自带的整形电路能力毕竟有限。结果表明该设计的确能测量到 100MHz,测量结果
31、表明该设计达到了最初的提出的所有设计要求。当输入信号发生溢出情况时,指示灯 LED1 点亮,从而产生信号溢出指示。七、实验结论本实验主要是利用 VHDL 语言完成基于 FPGA 的数字频率计的设计与实现。详细介绍了测量原理,设计方案以及各模块的设计过程及其实现的功能,并对设计中遇到的问题作了分析和处理;利用 ISE 和 ModelSim 对设计进行了仿真,分析,综合,并最终下载到 FPGA 芯片中,实现了对频率的测量。传统数字频率计由于在高频段受基准时钟频率的限制,其测频精度受到很大的限制.本设计应用 EDA 技术,很好的解决了这一问题.在设计完成后,为评估系统的实际测量效果,做了一次对比实验,测量结果表明测量精度基本能达到 ,可满足一般测量精度的要求。但当被测信号频率较低时,测试精度较低,810误差变大。究其原因,除了数字测量本身的正负 误差和标准信号引起的误差1外,还发现低频信号的上升沿和下降沿的变化较缓慢,影响了计数器的计数值,造成了测量精度的下降。通过改进频率计的控制模块,使信号的输出变化更加迅速,优化了频率计的性能。在实验过程中,学习到了许多有用的知识,特别是 VHDL 语言的应用和程序的仿真方法。