电子测量技术实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 等精度同步测频
一、实验目的
1、 掌握等精度同步测频的工作原理。
2、 掌握VHDL 和Verilog 硬件描述语言的用法。
3、 掌握用硬件描述语言实现自己设计方案的方法。
4、 了解Quartus II 或是Maxplus II 的使用方法。
5、 学习用仿真工具调试硬件模块的方法以及用单片机访问FPGA 的方法。
二、实验仪器
1、PC 机一台。
2、函数发生器一台。
3、FPGA 开发板一块。
4、JTAG 下载线一条。
5、安装Quartus II 或是Maxplus II 软件。
三、实验电路及原理说明 1.实验原理图
f o
主门N x
1
主门N 0
2
计数器
1
计数器
2
同步闸门(D 触发器)
预置闸门脉冲
晶振1MHz
单
片
机
f x
CP
D
T
N O
图2-1 多周期同步测频的原理方框图
2.工作波形图
≈1s
f x (CP)
T
N x T x
N O T O
D
T
N x
f O
N O
T O
图2-2 多周期同步测频的工作波形图
3.工作原理
1、工作原理
图2-1给出了多周期同步测频率的原理方框图,图2-2是对应的工作波形图。
其工作过程是:单片机预置一定宽度(如1s )的闸门脉冲信号,加至D 触发器以形成同步闸门信号T ;被测信号频率x f 分两路加入,一路加至D 触发器作为CP 时钟,和预置
闸门一起作用,在Q 端形成同步闸门[见图2-2中T 的波形],并分别加到主门1和主门2上,将主门1、2同时打开;这时,被测频率x f 通过主门1进入计数器1,对进入的x f 周期数进行计数,得计数值x N ;同时,晶振标准频率o f 通过主门2进入计数器,得计数值o N ,其波形如图2-2所示,由图可得:o o x x T N T N =
因此: o o
x
x f N N f ⨯=
2、误差分析
由以上工作过程和波形图可以看出,x N 对被测信号x T 的计数是与闸门同步的,故不存在量化(1±)误差。这样,用该计数器测频,不管频率高低,其精度是相同的。这时,误差仅发生在计数器2对o f 的计数值o N 上,因为主门2与o f 之间并无同步关系,故仍存在量化误差。不过,通常x o f f >>,故1±误差相对小得多。
多周期同步计数器测频的1±误差为:
N
N 1±=∆,N 为T 时间内晶振震荡的次数。 3、系统整体框图
波形变换
器等精度测
频
CPU
显示设备
按键模块
输入信号
图2-3 等精度测频的系统总体框图
4、框图解释:
1、波形变换器用来将待测正弦波变换成同频率的方波,以便于后面的数字电路的处理,通常使用比较器或是施密特触发器来完成。
2、等精度测频器即是我们设计的核心单元,主要用来数出待测信号以及CLK_50M 在一秒的定时内震荡的次数;里面包括两个32位的寄存器,这两个寄存器共用一组地址、读写、片选、数据总线,CPU 可以通过这组总线来访问两个寄存器,从而便于CPU 读取并计算出待测信号的频率。
5、显示设备可由led 或是12864等简单、便宜的显示设备组成,通过CPU 的控制把测得的数据(两个计数其中的值或是被测信号的频率)显示出来。
4)采用Verilog 或者VHDL 实现等精度测频的模块
等精度测频模块是本实验的核心模块,也是我们实验的主要内容,要求同学们用VHDL 或是Verilog 语言中的至少一种写出其功能,并用仿真工具进行时序仿真,验证模块的正确性。有条件的可以采用任一款式的单片机访问该等精度的测频模块,直接使用函数发生器产生的方波作为待测信号,从而验证该模块的正确性。
等精度测频模块是由三个更小的子模块组成的,分别是:异步秒脉冲模块、同步秒脉冲模块、计数器模块。
这三个模块的符号图如下所示:
异步秒脉冲模块同步秒脉冲模块计数器模块
三个模块作用简介
1、异步秒脉冲模块:用来产生接近一秒的正电平,系统正是通过计算这一秒内待测信号的振动次数以及CLK_50M的振动次数,再通过这两个次数算出待测信号的频率的。之所以说是“异步秒脉冲”,这里的“异步”是相对于待测信号的步调的,也就是说,不与待测信号的上升沿或是下降沿同步,那么就是“异步的”。
2、计数器模块:用来数出同步秒脉冲的时间内CLK_50M震动的次数,比如说N1,同时也可以数出同步秒脉冲时间内待测信号的振动次数,比如说N2,那么待测信号的频率将会是:N2/N1×50000000。该模块的内部有两个计数器,分别是CNTR1_CLK50M和CNTR2_SigX,其中前者对50M的CLK进行计数,后者对待测信号X进行计数,具体程序见后面附录Counters.V中的内容。一秒结束后计数的最终结果存放在reg_CLK50M_N和reg_SigX_N中。
该模块有4个以CPU打头的信号线:CPU_CS,CPU_RD,CPU_Addr和CPU_RD_Data,它们正好和任何一款CPU的片选、读、地址和读数据总线连接起来,用来读取reg_CLK50M_N和reg_SigX_N这两个寄存器中的数据。当CPU读出这两个寄存器中的数据之后就可以统计简单的计算得到待测信号的频率,并显示之。具体程序见后面附录Counters.V中的内容。
三个模块之间的连接
上文所讲的三个模块必须通过的正确的连接,产生一个更大的顶层模块才能完成等精度测频的任务。具体连接方式见附录。
四、实验过程
1、在电脑上安装Quartus II或Maxplus II,最好是安装Quartus II。
2、读懂本文所附的参考程序,在Quartus II中为每一个模块建立仿真激励文件,分别给三个子模块仿真,再对顶层模块进行仿真。