取的上升沿触发计数模块锁存计数值,锁存后
清零计数模块计数值,进行下一轮计数。高精
度计数模块对输入信号的每一个周期都进行计
数和刷新计数值,保证了计数值的实时性。
2.3.2 32 位除法器模块
32 位除法器模块用以获得倍频输出信号
Fout 的周期,该模块可进行32 位二进制数的
除法运算,以保障运算的精度。运算结果包括
商和余数两部分。除数通过接口控制模块设
置成倍频值Z 的两倍,即2Z,被除数为输入
信号的计数值N1 加上计数补偿模块的补偿值
△ N,运算结果为商M 和余数M0,整个除法
器完成的数学计算为:
(N1 + △ N) /2Z = M……M0 (1)
其中M 和M0 输入到后级的倍频信号发
生器,控制倍频信号的产生。
倍频信号发生器用于控制倍频信号的产
生。检测到输入信号的上升沿时倍频信号个数
计数器CN 清零,CN 小于M0 时,倍频信号
以M+1 为翻转周期,每翻转一次CN 加1,
CN 不小于M0 时,倍频信号以M为翻转周期。
在一个输入信号周期内,倍频信号发生器产
生M0/2 个翻转周期为M+1 的方波信号和(ZM0/
2) 个翻转周期为M 的方波。Z 个方波信号
的总计数周期为:
M 0 / 2 * 2 ( M + 1 ) + ( Z -
M0/2)*
1+ △N (2)
信号分频器用于对倍频信号进行Z 分频。
由式(2) 可知,Z 个倍频信号的总计数周期为
N1+ △ N,所以对倍频信号Z 分频后得到的信
号计数周期为N1+ △ N,即后级的高精度计
数模块计数值N2 为N1+ △ N。
计数补偿模块用以跟踪输入信号Fin 的周
期,计数补偿模块是整个环路的最重要的一
环,其功能是实时追踪输入信号Fin 的计数周
期N1 和输出信号Fout1 的计数周期N2 是否
相等,如果不相等,调节△ N 的值,使两者
相等,△ N 检测到输入信号上升沿完成刷新,
即一个输入信号周期完成一次补偿。从而完成
频率跟踪。
接口控制模块可实现三种方式的倍频值
设定。分别为8 位并口总线传输,SPI 三线传输,
16 位硬件电路固定值传输。三种方式设置方
式使倍频模块应用更加方便、灵活。
3 系统实现
该系统采用Altera 公司的FPGA 芯片
EP
模块的代码由硬件描述语言Verilog 编写,再
由软件模块化,顶层文件调用各个模块,组成
整个系统。运用仿真软件Modelsim 对该系统
进行仿真,对于无法通过直接设置FPGA 内的
锁相环获得所需的时钟的情况,可采用倍频的
方案实现,其仿真波形如图5 所示。
在图5 中,CLK 是系统时钟信号,IN_
CLK 是输入信号,fen 是输出的锁相信号,
OUT_CLK 是倍频信号。在该仿真中,设置的
倍频值为10,锁相角度为90°,如图6 所示,
输出的锁相信号经过两个周期的跟踪,相位被
锁定,说明IN_CLK 输入信号与OUT_CLK 输
出信号满足10 倍频的关系。
以Altera 公司的FPGA 芯片EP1C3T100
为载体,对所设计的系统进行了实物性能测试,
系统时钟频率为10MHz。在10MHz 系统时钟
工作下,能够实现对0.1Hz~1MHz 输入方波信
号。进行倍频。在倍频信号最大输出频率内,
最大倍频值可以达到65535 倍,图6 显示了设
定不同倍频值下最大的输入信号频率。
4 结论
通过软件仿真和基于EP1C3T100 芯片的
实物测试,证明了本文提供的基于10MHz 恒
温晶振和FPGA 芯片实现任意频率的高精度、
高稳定度的时钟信号源方法,是正确的和可实
现的。所获得的时钟的精度和稳定度与恒温晶
振完全一致,是一种低成本实现高精度、高稳
定度的时钟信号有效方法。
参考文献
[1] 沈维聪, 肖伟翔, 朱亮. 基于CPLD 的单
片方波信号倍频器及输出任意倍频信号的
方法[P]. 发明专利:201410514131.1, 武
汉理工大学,2014(09).
[2] 沈维聪,朱亮,刘青霞等. 一种基于FPGA
和10MHz 恒温晶振的脉冲信号源[P]. 实
用新型专:201521018194.4, 武汉理工大
学,2015(12).
作者简介
沈增帧(1987-),女,硕士研究生,现为武
汉理工大学信息工程学院助理实验师,现从事
单片机的实验与应用,曾带队参加2015 年全
国大学生电子设计竞赛取得全国一等奖。
作者单位
武汉理工大学信息工程学院 湖北省武汉市
430000
图5:倍频信号输出仿真波形
图6:不同倍频值下最大的输入信号频率