1、德 州 学 院 物 理 系 2008 届 电 子 信 息 工 程 专 业 毕 业 论 文1频率与相位测量系统控制电路的 VHDL 设计韩元元(德州学院物理系 山东德州 253023)摘 要 本文利用 VHDL 语言对数据采集控制系统电路进行了设计和硬件仿真,首先根据设计要求,通过对整个控制系统进行分析,将整个系统划分为五个子模块:信号分频模块、控制信号产生模块、时间检测模块、数据锁存模块和输出选择模块,并对各个模块进行了VHDL 设计与波形仿真,最后完成总体系统的设计和波形仿真。通过对仿真波形图进行分析,所设计的电路系统符合给定的设计要求。关键词 VHDL; CPLD;数据采集1 引言在电子测
2、量技术中,测频测相是最基本的测量之一。频率测量相对简单,但相位测量则困难得多。相位测量最初是测量信号一个周期的参数,精度在低频时利用锁相技术尚可,随着大规模可编程逻辑器件的开发应用,因其工作频率高,采集速度快,具有现场可编程特性,外扩的器件少等优点,人们在电子系统设计时,逐渐将过去硬件难以实现的部分交给了 FPGA 处理实现。本文采用 FPGA/CPLD 技术,主要负责数据采集,具有高速而可靠的测控能力,具有比较强的数据处理能力,键盘输入及显示控制比较灵活,系统可扩展性能比较好,整个系统性能价格比比较好。采用 VHDL 语言进行软件编程,利用 MAX+PLUSII 软件平台进行设计输入、项目处
3、理、项目校验及器件编程等。设计输入可采用原理图输入、文本输入、波形输入或第三方 EDA 工具生成的设计网表文件等输入方法;设计校验包括功能仿真、时序仿真和定时分析;器件编程是用经过仿真确认的配置文件配置CPLD 器件;在线校验是对编程后的 CPLD 器件加入实际的激励信号进行测试,检查是否可完成预定功能;最后完成整个系统设计。德 州 学 院 系 届 专 业 毕 业 论 文德 州 学 院 物 理 系 2008 届 电 子 信 息 工 程 专 业 毕 业 论 文22 系统的总体设计方案2.1 系统的设计要求设计并制作一个频率与相位测量系统控制电路,其设计要求如下: (1) 频率范围:20Hz20k
4、Hz。(2) 允许两路输入正弦信号峰-峰值可分别在 15V 范围内变化。 (3) 相位测量绝对误差2.(4) 具有频率测量及数字显示功能。(5) 相位数字显示:相位读数 0359.9,分辨力为 0.1。频率与相位测量系统电路系统按功能可分为三大基本组成部分:数据采集控制电路、数据运算控制电路和数据显示电路。数据采集控制电路由FPGA/CPLD 实现,主要负责采集两个同频待测正弦信号的频率和相位差所对应的时间差,数据运算控制电路由单片机完成,负责读取 FPGA/CPLD 采集到的数据,并根据这些数据计算待测正弦信号的频率及两路同频正弦信号之间的相位差,并通过功能键切换控制显示待测信号的频率和相位
5、差。其系统框图如图2.1: FPGA或CPLD数据采集电路单片机数据运算控制电路数据显示电路图 2.1 系统框图德 州 学 院 物 理 系 2008 届 电 子 信 息 工 程 专 业 毕 业 论 文32.2 系统的设计方案频率与相位测量系统控制电路的 VHDL 设计主要是设计数据采集控制电路,并由 FPGA 实现,按照数据采集控制电路系统的功能,可分成信号分频、控制信号产生、时间检测、数据锁存和输出选择 5 个模块。FPGA 数据采集电路系统组成原理图如图 2.2:CLK CLKF CLKF ENABL DA18.0CLEARCLK1 ENABLCLEARCLK2 LOADCLEAB DA1
6、8.0 DATA118.0LOAD DATA218.0CLEABRESELENABLDATA318.0CLKFPGA 数据采集电路的功能是实现将待测正弦信号的周期、相位差转变为19 位的数字量。根据系统的总体设计方案,FPGA 数据采集的输入信号有:CLK系统工作用时钟信号输入端;CLK1,CLK2两路被测信号输入端;ENABL单片机发出的传送数据使能信号,在 ENABL 的上升沿,FPGA 向单片机传送数据;RSEL单片机发出的传送数据类型信号,当 RSEL=0 时,FPGA 向单片机传送被测信号频率数据,当 RSEL=1 时,FPGA 向单片机传送被测信号相位差数据。FPGA 数据采集电路
7、的输出信号有:DATA318.0 FPGA 到单片机的数据输出口,由输出控制信号 EN 和 RSEL 控制。其应实现的功能就是负责对被测信号频率数据的实时测量。DATA118.0DATA218.0RSELENABL DATA18.0德 州 学 院 物 理 系 2008 届 电 子 信 息 工 程 专 业 毕 业 论 文4FPGA 数据采集电路可设计成五个模块,其中时钟信号分频模块 FPQ 的作用是:将输入的 40MHz 的信号分频成 10MHz 的测控基准时钟信号 CLKF。测量控制信号发生模块 KZXH 的作用是:根据两路被测信号整形后的方波信号 CLK1 和CLK2,产生有关测控信号,包括
8、时间检测时能信号 ENABL,时间检测清零信号CLEAR,锁存频率数据控制信号 LOAD,锁存两被测信号相位差数据控制信号CLEAR。被测信号频率和相位差数据检测模块 SJJC 的作用是:在控制信号ENABL 和 CLEAR 的控制下,对测控基准时钟信号 CLKF 进行计数和清零,以便获取有关频率和相位差数据。数据锁存模块 SJSC 的作用是:在 LOAD 的上升沿将频率数据锁存在 DATA1 中,在 CLEAB 的下降沿时将相位差数据锁存在 DATA2 中。输出选择模块 SCXZ 的作用是:根据单片机发出的控制信号数据传送使能信号ENABL 和输出数据类型选择信号 RSEL,将被测信号频率数
9、据或相位差数据输出。3 数据采集电路原理FPGA 数据采集电路测量正弦波信号频率的原理是:在正弦波信号整形后得到的方波信号的一个周期内对周期为 Tc 秒的数据采样信号进行计数,其计算结果乘以 1/Tc,就是被测正弦波信号的频率,单位为 Hz。测量正弦信号周期原理是:在正弦波信号整形后得到的方波信号的一个周期内对周期为 Tc 秒的数据采样信号进行计数,其计数结果乘以 Tc 秒,就是被测正弦波信号的周期,单位为秒。测量两个同频正弦波信号的相位差,关键是要测出两个同频正弦波信号起点之间的时间差t,若t 测出,则根据=t*360/t 即可求出相位差,因此其测量原理与测量正弦波信号周期的原理相似。本设计
10、的要求是测试并显示输入信号频率范围在 20Hz20kHz,测试并显示信号 a、b 的相位差,相位差的变化范围为 =0359.9,相位差的显示分辨力为 0.1,要求测量相位的绝对误差2。由此可知:fmin=20Hz, Tmax=1/fmin=50ms, tTmaxfmin=20kH Tmin=1/fmax=50s2即t=2/360*50s=0.27s由以上分析可知,要保证系统要求的精度,必须采用低于德 州 学 院 物 理 系 2008 届 电 子 信 息 工 程 专 业 毕 业 论 文51/0.27s=3.7MHz 的采集速度对信号周期进行计数,为进一步提高测量精度,同时便于计算,我们采用了 1
11、0MHz 方波信号作为 FPGA 数据采集信号,FPGA 在10MHz 时钟信号作用下对待测信号周期计数,并对两个同频正弦信号的相位差所对应的时间差进行计数,分别得到 19 位数字量,19 位数字量的物理单位是0.1s。本设计采用 40MHz 的高频晶体震荡源,由 FPGA 内部的分频模块对40MHz 信号进行四分频,得到 10MHz 的数据采样信号,其采样周期为 0.1s。为了实现中低频测量精度的要求,我们可采用 10MHz 的信号来循环计数被测信号的周期和两个同频正弦波信号的相位差所对应的时间差值,时间单位为 0.1s。也就是说,计数周期和相位差所对应的时间差值的精度是 0.1s。利用被测
12、信号来刷新采样计数,在 20Hz 时,刷新频率可以精确到 10Hz,20kHz时达到 10kHz,可以实现高频多测量,低频少测量的效果,时间计数精确可靠,为后面单片机的数据处理提供了稳定、可靠的数据源。为了达到系统所要求的精度,必须保证数据计算处理时不丢失数据,我们采用了扩大数据倍数,定点取数的方法,在计算频率 f 和相位差 时,f 和 分别扩到了 10 000 000 倍和 10 倍,即 f=10000000/t, =360*10*t/t,然后定点取数。3.1 信号分频模块 FPQ时钟信号分频模块 FPQ 的作用是:将输入的 40MHz 的信号分频成 10MHz的测控基准时钟信号 CLKF。
13、其 VHDL 编程如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY HANYUANYUAN_1 ISPORT(CLK:IN STD_LOGIC;CLKF:OUT STD_LOGIC);END ENTITY HANYUANYUAN_1;ARCHITECTURE ART OF HANYUANYUAN_1 IS德 州 学 院 物 理 系 2008 届 电 子 信 息 工 程 专 业 毕 业 论 文6BEGINPROCESS(CLK)ISVARIABLE TEMP:INTEGER RAN
14、GE 0 TO 4;VARIABLE CL: STD_LOGIC;BEGINIF CLKEVENT AND CLK=1THENIF TEMP=3 THENTEMP:=0;CL:=1;ELSETEMP:=0;CL:=1;ELSETEMP:=TEMP+1;CL:=0;END IF;END IF;CLKF=CL;END PROCESS;END ARCHITECTURE ART;其仿真波形如下:通过实验仿真后可以观察出:输入信号 CLK 的 40MHZ 信号分频成10MHZ 的测控基准时钟信号 CLKF,实现了模块 FPQ 的功能,与设计要求一致,因此模块 HANYUANYUAN-1 的源程序设计是正
15、确的。德 州 学 院 物 理 系 2008 届 电 子 信 息 工 程 专 业 毕 业 论 文73.2 测量控制信号发生模块 KZXH测量控制信号发生模块 KZXH 的作用是:根据两路被测信号整形后的方波信号 CLK1 和 CLK2,产生有关测控信号,包括时间检测时能信号 ENABL,时间检测清零信号 CLEAR,锁存频率数据控制信号 LOAD,锁存两被测信号相位差数据控制信号 CLEAR。其 VHDL 源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY HANYUANYUA
16、N_2 ISPORT(CLK1: IN STD_LOGIC;CLK2: IN STD_LOGIC;ENABL:OUT STD_LOGIC;CLEAR: OUT STD_LOGIC;LOAD: OUT STD_LOGIC;CLEAB: OUT STD_LOGIC);END ENTITY HANYUANYUAN_2;ARCHITECTURE ART OF HANYUANYUAN_2 ISSIGNAL CLK1A,CLK2B,CLA,CLB:STD_LOGIC;BEGINCLK1A=NOT CLK1;CLK2B=NOT CLK2;PROCESS(CLK1A)IS BEGINIF CLK1AEVENT
17、 AND CLK1A=1 THENCLA=NOT CLA;END IF;ENABL=CLA;LOAD=NOT CLA;END PROCESS;PROCESS(CLK2B)IS BEGINIF CLK2BEVENT AND CLK2B=1 THENCLB=NOT CLB;END IF;ENABL=CLB;德 州 学 院 物 理 系 2008 届 电 子 信 息 工 程 专 业 毕 业 论 文8END PROCESS;PROCESS(CLK1A,CLA)IS BEGINIF CLK1A=0 AND CLA=0 THENCLEAR=1;ELSECLEAR=0;END IF;END PROCESS;E
18、ND ARCHITECTURE ART;其仿真波形如下:通过实验仿真后可以观察出:输入两路同频被测信号 CLK1,CLK2,系统产生有关测控信号,包括时间检测使能信号 ENABL,时间检测清零信号 CLEAR,锁存频率数据控制信号 LOAD,锁存两被测信号相位差数据控制信号 CLEAB.实现了模块 KZXH 的功能, 与设计要求一致,因此模块 HANYUANYUAN_2 的源程序设计是正确的。3.3 被测信号有关时间检测模块 SJJC被测信号频率和相位差数据检测模块 SJJC 的作用是:在控制信号 ENABL和 CLEAR 的控制下,对测控基准时钟信号 CLKF 进行计数和清零,以便获取有关频
19、率和相位差数据。其 VHDL 源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY HANYUANYUAN_3 IS德 州 学 院 物 理 系 2008 届 电 子 信 息 工 程 专 业 毕 业 论 文9PORT(CLKF:IN STD_LOGIC;ENABL: IN STD_LOGIC;CLEAR: IN STD_LOGIC;DAC:OUT STD_LOGIC_VECYOR(18 DOWNTO 0);END ENTITY HANYUANYUAN_3;ARCHITECTURE
20、 ART OF HANYUANYUAN_3 ISSIGNAL DA: STD_LOGIC_VECYOR(18 DOWNTO 0);BEGINPROCESS(ENABL,CLEAR,CLKF)ISBEGINIF CLEAR=1THENDA=”0000000000000000000”;ELSIF CLKFEVENT AND CLKF=1THENIF ENABL=1THENDA=DA+1;END IF;END IF;DAC=DA;END PROCESS;END ARCHITECTURE ART;其仿真波形如下:通过实验仿真后可以观察出:在 ENABL 上升沿到来时,系统开始对CLKF 进行计数, C
21、LEAR 高电平有效,对 CLKF 进行清零,通过 ENABL 和CLEAR 的控制,以便获取有关频率和相位差数据,实现了模块 SJJC 的功能,德 州 学 院 物 理 系 2008 届 电 子 信 息 工 程 专 业 毕 业 论 文10与设计要求一致,因此模块 HANYUANYUAN_3 的源程序设计是正确的。3.4 数据锁存模块 SJSC数据锁存模块 SJSC 的作用是:在 LOAD 的上升沿将频率数据锁存在 DATA1中,在 CLEAB 的下降沿时将相位差数据锁存在 DATA2 中。其 VHDL 源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL
22、;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY HANYUANYUAN_4 ISPORT(DA:IN STD_LOGIC_VECYOR(18 DOWNTO 0);LOAD: IN STD_LOGIC;CLEAB: IN STD_LOGICDATA1:OUT STD_LOGIC_VECYOR(18 DOWNTO 0);DATA2: OUT STD_LOGIC_VECYOR(18 DOWNTO 0);END ENTITY HANYUANYUAN_4;ARCHITECTURE ART OF HANYUANYUAN_4 ISSIGNAL DATA1A,DATA2B: STD_LOGIC_VECYOR(18 DOWNTO 0);BEGINPROCESS(CLEAB)ISBEGINIF CLEABEVENT AND CLEAB=0THENDATA2=DA;END IF;END PROCESS;PROCESS(LOAD)ISBEGINIF LOADEVENT AND LOAD=0THENDATA1=DA;