带同步端可变脉宽通用偶数分频器的VHDL设计

时间:2022-10-23 10:42:08

带同步端可变脉宽通用偶数分频器的VHDL设计

【摘要】为了实现按Top-down方法为时间统一终端设计[1]同步脉冲信号数字逻辑电路,采用VHDL电路设计语言设计了通用分频器。通过设置通用分频器的generic类属说明参数m1和n1、输入同步信号clr,就可以输出不同脉宽且信号前沿与clr信号前沿完全同步的同步脉冲信号。仿真结果表明结果正确,工程实践测量同步误差

【关键词】VHDL;通用;分频器;同步

Designt of even-divider with synchronous terminal which pulse width modulation in VHDL

Wang Liqiu1

(ChangChun Institute of Optics,Fine Mechanics and Physics,Chinese Academy of Science,ChangChun 130033)

Abstract:In order to realize by Top-down method as time system design of synchronous pulse signal digital logic circuits,circuit design using VHDL language design a universal divider.By setting the universal divider of the generic generic description of the parameters M1 and N1,CLR input synchronous signal,you can output different pulse width and signal leading edge and CLR signal forward fully synchronous synchronous pulse signal.The simulation results show that the result is correct,the engineering practice the synchronous error in the measurement of

Keywords:photo-electronic measure;time system;FPGA;VHDL

1.引言

时统统一终端[1]除了为测控设备[2]提供基于UTC标准或GPS标准的绝对时间信息外,还要对外提供各种在时间起点上与输入标准秒信号完全同步的同步脉冲信号。随着可编程逻辑器件工艺和开发工具的快速发展,可编程逻辑器件(FPGA)已经逐渐成为数字电路的主流电子元件,利用EDA工具实现硬件数字逻辑电路,使得硬件电路可以在不更改PCB的基础上进行修改和升级,因此成为目前硬件电路的首选。标准化硬件描述语言VHDL由于符合EDA电路自动化设计的要求,使得传统人工设计方法逐渐被取代,目前已成为EDA工具和集成电路厂商的普遍首先。

为了FPGA芯片[3]中实现各路脉宽和频率不同的独立同步信号输出的目的,利用VHDL语言的优点,设计一个通用的带有同步端口且参数可调的分频器,通过调用和设置不同的分频器模块,按Top-down设计方法实现主电路的设计。

2.带同步端可变脉宽通用偶数分频器

分频器[5]是对较高频率的时钟信号进行分频操作,从而得到较低频率的信号。带同步端可变脉宽通用偶数分频器,要求具有脉宽和频率可调,并且输出信号与输入同步信号clr同步的功能。

设计一个有三个输入信号和一个输出信号的通用分频器,clkin为输入的时钟信号,分频器对此信号进行分频,clr为输入同步信号,最为内部计数器的清零端,实现输出与输入信号同步,reset为复位信号。

3.VHDL语言设计

上述通用分频器的VHDL[4]语言实现如下:

library ieee;

use ieee.std_logic_1164.all;

entity fenpin_e_clr_h is

generic (

n1:integer:=2; --n1为分频倍数;

m1:integer:=1;--m1为脉宽计数;

);

port(

clkin:in std_logic; --时钟信号(5Mhz)

reset:in std_logic; --复位信号

clkout:out std_logic; --输出信号

clr :in std_logic --清零信号

);

end fenpin_e_clr_h;

architecture rtl of fenpin_e_clr_h is

signal temp:integer range n1-1 downto 0;

signal s,clear:std_logic;设两级锁存器

begin

process(clr,clear) ;

begin

if clear='1'then

s

elsif rising_edge(clr)then

s

end if;

end process;

process(clkin)—temp对时钟clkin计数并在clr信号到来时同步清零实现同步。

begin

if(s='1')then

temp

clear

else

clear

if(clkin'event and clkin='1') then

if temp=n1-1 then

temp

else

temp

end if;

end if;

end if;

end process;

process(temp,reset)

begin

if reset='1'then

--输出信号脉宽

If temp

clkout

else

clkout

end if;

else clkout

end if;

end process;

先描述一个分频计数器电路,通过计数器对时钟进行计数,然后通过计数值来控制输出时钟高低电平的时间;用电路的并行输出信号来控制输出时钟的高低电平;输入同步信号clr做计数器的清零信号,利用时钟和clr信号对输出信号经过两次锁存器[6](s,clear)控制采样,完成数据输出的同步化,并可有效防止亚稳态。

上述电路中,参数n1用于调节分频倍数,m1用于控制输出脉宽,设置n1,m1为generic类属说明,通过从外部对类属参量的重新设定,改变元件内部结构和功能。n1/m1=占空比,选频标为5Mhz,则t=1/f=200ns,则输出信号的脉宽为Pulse=200ns*m1。

4.实际应用电路

采用5Mhz时钟晶振,输入同步信号clr为1hz时,利用通用模块设计一个输出脉宽为5us的100hz窄脉冲和50hz方波的电路如图1所示。

采用f=5Mhz=5*106hz时钟晶振,Inst1对其进行n1=100000分频,对时钟clk信号进行m1=50000次计数,得到50hz的与clr同步的方波输出信号,即占空比为m1/n1=1/2。Inst2对时钟clk进行n1=500000次分频,对时钟m1=25次计数,得到脉宽为25/(5*106)S=5uS,频率为100hz的同步输出信号。

5.仿真结果

采用Quartus II[7]仿真,结果如图2所示。

从波形图可以看出,输出50hz信号为方波信号,输出100hz信号为窄脉冲信号,两个信号的信号前沿在清零信号clk到来时刻与clr信号同步。

6.结论

设计通用的输入端口参数可调的VHDL语言模块,在进行数字电路顶层设计时,只需要简单的参数设置就可以完成同步分频模块阵列的设计和直流码编码输出,使得顶层设计简单。该电路在工程实践中的测量结果为同步精度

参考文献

[1]本社编.时间统一技术[M].国防国内工业出版社,2004,9.

[2]何照才等.导弹航天测量控制系统光电测量[M].国防工业出版社,2002,10.

[3]刘延飞等.基于Altera FPGA/CPLD的电子系统设计及工程实践[M].人民邮电出版社,2009,9.

[4]王金明等.数字系统设计与VHDL[M].电子工业出版社,2010,.5.

[5]李仁发等.数字逻辑设计(第四版)[M].人民邮电出版社,2006.

[6]曾繁泰等.VHDL程序设计[M].清华大学出版社,2000.

[7]周润景等.基于Quartus II的FPGA/CPLD数字系统设计[M].电子工业出版社,2007.

上一篇:夕阳下的生命之舞 下一篇:“秋冻”要适度乱来会伤身