利用FPGA进行高速可变周期脉冲发生器设计
时间:11-09
来源:互联网
点击:
1 概括
要求改变脉冲周期和输出脉冲个数的脉冲输出电路模块在许多工业领域都有运用。采用数字器件设计周期和输出个数可调节的脉冲发生模块是方便可行的。为了使之具有高速、灵活的优点,本文采用atelra公司的可编程芯片FPGA设计了一款周期和输出个数可变的脉冲发生器。经过板级调试获得良好的运行效果。
2 总体设计思路
脉冲的周期由高电平持续时间与低电平持续时间共同构成,为了改变周期,采用两个计数器来分别控制高电平持续时间和低电平持续时间。计数器采用可并行加载初始值的n位减法计数器。设定:当要求的高电平时间以初始值加载到第一个减法器中后,减法器开始减计数,计数到零时自动停止,同时启动第二个记录低电平持续时间的计数器计时。当第二个减法计数器也减计到零时,计数器自动停止。这样就完成一个脉冲的输出,而这个脉冲的周期控制完全可以在计数器的初始值中进行有效的设定.以达到脉冲周期可调的目的。为了控制脉冲个数的输出,在脉冲输出通道上设计一个数量控制计数器,对脉冲个数进行计数,当计到要求输出的个数时.完成输出并给出一个done信号作为该模块工作完成的标志信号。封装好的脉冲发生器设计 框图如图l所示。
引脚信号说明:
start信号:启动信号。
reset,信号:系统复位信号。
clock信号:系统时钟信号。
high信号:高电平持续时间初值。
low信号:低电平持续时间初值。
num信号:个数控制寄存器初始值。
output信号:脉冲输出信号。初始化时为低。
done信号:脉冲输出完的标志信号。
3 高低电平计时器设计
3.1 设计方法
为了产生所需要时间的高电平,可以利用一个可预置数的减法计数器来达到目的,计数器设计分为两个部分,一部分是可预置数的自控制减法计数器:另一部分是减法计数器工作完成后的检测系统,检测到计数器工作完成后输出一个时钟周期宽的脉冲作为该计数器工作完成信号,并可作为下一个计数器工作的启动信号。原理框图如图2所示。
3.2 工作原理
首先.外部的复位信号reset给出一个时钟周期宽的脉冲,复位内部各个信号及触发器。
然后,在下一个有效时钟时刻,外部start信号给出一个时钟周期宽度的脉冲,用来启动计数器的工作。在设计中,当start信号有效时(设计为高有效),外部数据high加载到q,当q不为零时,输出信号pulse将跳变为高电平,当q减到零的时候,pulse信号再跳变回低电平。这个脉冲信号的后沿将被后面的由两个d触发器构成的检测单元捕获,并在pulse信号的下降沿后产生一个时钟周期宽的脉冲,定义为done信号,表示该信号完成输出。
低电平计时器的设计与高电平计时器完全一样。
3.3 时序仿真
在quartusⅱ4.1开发平台上模拟该模块两个输出信号,时序仿真如图3所示。
从图中可以看出,done信号在pulse信号输出完成后输出一个时钟周期宽度。把这个完成信号done加到下一级类似的减法计数器的start信号上。将会启动下一级计数器的工作。如果将下一级的完成信号done加载给本级的start信号。将会重启一个脉冲的生成。如此将会自动循环以达到不间断输出一定周期脉冲的目的。
4 数量控制计数器设计
4.1 设计方法
数量控制计数器设计与高低电平计数器类似.不同之处在于,减法计数器的时钟输入端接脉冲的输出信号,当要求输出脉冲的个数到达时,输出一个门控信号door,后面的两个d触发器仍然用来捕获门控信号door的后沿。一旦输出个数到达,done信号立即输出一个时钟周期宽度的脉冲作为标志。具体设计框图如图4所示。
4.2 时序仿真
在quartusⅱ4.1开发平台上软仿真,把脉冲发生器中产生的每个脉冲的start信号作为数量控制器的输入信号,仿真结果如图5所示。
每次输出任务完成后。由总体模块输出一个ov信号标志该批次任务结束。ov信号可再次加载到总的reset信号上,即该批次输出完成可复位进入下一批次任务的输出。图5中的door信号出现了很窄的毛刺,这是由于内部计数器的翻转不同步造成的。加同步电路可以消除,但会影响电路的工作频率。由于毛刺很窄,对整个电路工作无任何影响。所以,该模块设计中并未处理。
5 内部信号连接及工作方式
根据各个模块的功能和逻辑关系,由高电平计时器、低电平计时器和数量控制计数器可以搭建整个周期脉冲发生器.其内部电路按照图6的方式连接。
首先,在时钟信号上升沿给出一个时钟周期宽度的reset信号以复位整个电路的触发器和各个输出信号。当一个启动信号start在时钟的上升沿被检测到时,高电平开始计时,计时长度等于high数值与时钟周期之积。当计时到达时,高电平计时器停止工作,高电平计时器输出一个完成信号,该信号接在低电平计时器的start信号脚上,以启动低电平计时器,低电平计时器计时完成时,低电平计时器停止工作,并输出一个完成信号,该信号通过或门接在高电平计时器的start信号脚,再次启动高电平计时器,开始第二个脉冲高电平的输出。由于低电平计时器的完成信号也连接在数量控制计数器的start引脚上.所以,与此同时,数量控制计数器开始对其输入脉冲s_input进行数量监测。在脉冲输出数量未达到预定个数(数量控制计数器中的初始值)时,门控信号door一直输出"高",以允许脉冲通过。一旦脉冲输出的数量达到预定个数时,门控信号door输出变为"低",关闭输出通道,并输出一个任务完成的标志信号done。done又通过或门连接在全局复位信号reset上,所以,系统完成后即可复位到原状以等待下一次启动信号来临。
周期脉冲发生器模块整体时序仿真如图7所示。
图7模拟了两路脉冲的输出,第一路输出两个脉冲,第二路输出一个脉冲,当两路脉冲都输出完成时,系统恢复到初始状态。而当start信号再次给出一个启动脉冲后,将再执行一次任务。
要求改变脉冲周期和输出脉冲个数的脉冲输出电路模块在许多工业领域都有运用。采用数字器件设计周期和输出个数可调节的脉冲发生模块是方便可行的。为了使之具有高速、灵活的优点,本文采用atelra公司的可编程芯片FPGA设计了一款周期和输出个数可变的脉冲发生器。经过板级调试获得良好的运行效果。
2 总体设计思路
脉冲的周期由高电平持续时间与低电平持续时间共同构成,为了改变周期,采用两个计数器来分别控制高电平持续时间和低电平持续时间。计数器采用可并行加载初始值的n位减法计数器。设定:当要求的高电平时间以初始值加载到第一个减法器中后,减法器开始减计数,计数到零时自动停止,同时启动第二个记录低电平持续时间的计数器计时。当第二个减法计数器也减计到零时,计数器自动停止。这样就完成一个脉冲的输出,而这个脉冲的周期控制完全可以在计数器的初始值中进行有效的设定.以达到脉冲周期可调的目的。为了控制脉冲个数的输出,在脉冲输出通道上设计一个数量控制计数器,对脉冲个数进行计数,当计到要求输出的个数时.完成输出并给出一个done信号作为该模块工作完成的标志信号。封装好的脉冲发生器设计 框图如图l所示。
引脚信号说明:
start信号:启动信号。
reset,信号:系统复位信号。
clock信号:系统时钟信号。
high信号:高电平持续时间初值。
low信号:低电平持续时间初值。
num信号:个数控制寄存器初始值。
output信号:脉冲输出信号。初始化时为低。
done信号:脉冲输出完的标志信号。
3 高低电平计时器设计
3.1 设计方法
为了产生所需要时间的高电平,可以利用一个可预置数的减法计数器来达到目的,计数器设计分为两个部分,一部分是可预置数的自控制减法计数器:另一部分是减法计数器工作完成后的检测系统,检测到计数器工作完成后输出一个时钟周期宽的脉冲作为该计数器工作完成信号,并可作为下一个计数器工作的启动信号。原理框图如图2所示。
3.2 工作原理
首先.外部的复位信号reset给出一个时钟周期宽的脉冲,复位内部各个信号及触发器。
然后,在下一个有效时钟时刻,外部start信号给出一个时钟周期宽度的脉冲,用来启动计数器的工作。在设计中,当start信号有效时(设计为高有效),外部数据high加载到q,当q不为零时,输出信号pulse将跳变为高电平,当q减到零的时候,pulse信号再跳变回低电平。这个脉冲信号的后沿将被后面的由两个d触发器构成的检测单元捕获,并在pulse信号的下降沿后产生一个时钟周期宽的脉冲,定义为done信号,表示该信号完成输出。
低电平计时器的设计与高电平计时器完全一样。
3.3 时序仿真
在quartusⅱ4.1开发平台上模拟该模块两个输出信号,时序仿真如图3所示。
从图中可以看出,done信号在pulse信号输出完成后输出一个时钟周期宽度。把这个完成信号done加到下一级类似的减法计数器的start信号上。将会启动下一级计数器的工作。如果将下一级的完成信号done加载给本级的start信号。将会重启一个脉冲的生成。如此将会自动循环以达到不间断输出一定周期脉冲的目的。
4 数量控制计数器设计
4.1 设计方法
数量控制计数器设计与高低电平计数器类似.不同之处在于,减法计数器的时钟输入端接脉冲的输出信号,当要求输出脉冲的个数到达时,输出一个门控信号door,后面的两个d触发器仍然用来捕获门控信号door的后沿。一旦输出个数到达,done信号立即输出一个时钟周期宽度的脉冲作为标志。具体设计框图如图4所示。
4.2 时序仿真
在quartusⅱ4.1开发平台上软仿真,把脉冲发生器中产生的每个脉冲的start信号作为数量控制器的输入信号,仿真结果如图5所示。
每次输出任务完成后。由总体模块输出一个ov信号标志该批次任务结束。ov信号可再次加载到总的reset信号上,即该批次输出完成可复位进入下一批次任务的输出。图5中的door信号出现了很窄的毛刺,这是由于内部计数器的翻转不同步造成的。加同步电路可以消除,但会影响电路的工作频率。由于毛刺很窄,对整个电路工作无任何影响。所以,该模块设计中并未处理。
5 内部信号连接及工作方式
根据各个模块的功能和逻辑关系,由高电平计时器、低电平计时器和数量控制计数器可以搭建整个周期脉冲发生器.其内部电路按照图6的方式连接。
首先,在时钟信号上升沿给出一个时钟周期宽度的reset信号以复位整个电路的触发器和各个输出信号。当一个启动信号start在时钟的上升沿被检测到时,高电平开始计时,计时长度等于high数值与时钟周期之积。当计时到达时,高电平计时器停止工作,高电平计时器输出一个完成信号,该信号接在低电平计时器的start信号脚上,以启动低电平计时器,低电平计时器计时完成时,低电平计时器停止工作,并输出一个完成信号,该信号通过或门接在高电平计时器的start信号脚,再次启动高电平计时器,开始第二个脉冲高电平的输出。由于低电平计时器的完成信号也连接在数量控制计数器的start引脚上.所以,与此同时,数量控制计数器开始对其输入脉冲s_input进行数量监测。在脉冲输出数量未达到预定个数(数量控制计数器中的初始值)时,门控信号door一直输出"高",以允许脉冲通过。一旦脉冲输出的数量达到预定个数时,门控信号door输出变为"低",关闭输出通道,并输出一个任务完成的标志信号done。done又通过或门连接在全局复位信号reset上,所以,系统完成后即可复位到原状以等待下一次启动信号来临。
周期脉冲发生器模块整体时序仿真如图7所示。
图7模拟了两路脉冲的输出,第一路输出两个脉冲,第二路输出一个脉冲,当两路脉冲都输出完成时,系统恢复到初始状态。而当start信号再次给出一个启动脉冲后,将再执行一次任务。
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 基于PLB总线的H.264整数变换量化软核的设计(03-20)
- FPGA按键模式的研究与设计(03-24)
- 周立功:如何兼顾学习ARM与FPGA(05-23)