全文 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信号再次给出一个启动脉冲后,将再执行一次任务。
6 结束语
从模拟结果看出,本文给出的设 计完全可以达到设计要求。由于FPGA的运行速度最高可以达到100 mhz量级,输出的脉冲调节步长和最小宽度都可以到ns量级。在此基础上,笔者设计了一个多路可调脉冲周期的时序电路,并运用在团簇粒子的核物理实验中。收到满意效果。