(1) 稳态和暂稳态两个不同的工作状态。
(2) 在外接触发脉冲作用下,从稳态翻转到暂稳态。在暂稳态维持一段时间后,再自动返回稳态。
(3) 暂稳态维持时间长短取决于电路的参数,与触发脉冲的宽度和幅度无关。
根据单稳态触发器的工作特点,利用FPGA器件中的D触发器,采用可编程逻辑模块模拟充放电电路实现单稳态触发电路的稳态与暂稳态之间的转换,就可以实现基于FPGA器件的单稳态脉冲展宽电路。
图为采用时钟计数方法把输入窄脉冲信号展宽成具有一定宽度和精度的宽脉冲信号的电路原理图。图中,iPulse为触发脉冲输入信号,iClk为计数时钟,D触发器的输出Q为展宽后的宽脉冲输出,定义为oPulsewidth。D触发器即是展宽脉冲的前沿产生电路,又是展宽脉冲宽度的形成电路。D触发器的置位端PRN和输入端D接高电平VCC,清零端CLRN低电平有效,计数器counter的输出信号oFeed通过非门与CLRN相连。时钟计数器counter是通过可编程语言Verilog HDL编译产生的,作用是控制展宽脉冲的宽度。iRst为计数器的复位端,高电平有效,有效时计数器counter取消对输入的计数时钟iClk计数,并置输出信号oFeed为低电平。iEn为计数器的使能端,高电平有效,iEn有效时计数器counter对计数时钟iClk进行计数。
电路的工作过程:稳态工作时,Q为低,复位端iRst为高,使能端iEn为低,计数器counter不对输入的计数时钟信号iClk计数,counter的输出信号oFeed为低,D触发器的清零端CLRN为高。当有触发脉冲输入时,Q变为高,复位端iRst变为低,使能端iEn为高,计数器counter开始对输入的计数时钟信号iClk计数,计数的次数
NUM = Wd/T
其中,Wd——展宽后脉冲的宽度;T ——为输入计数时钟iClk的周期。
计数期间,counter的输出信号oFeed为低,D触发器的清零端CLRN为高;当计数到NUM时,置oFeed为高,D触发器的清零端CLRN为低,Q被置为低,iRst有效,counter输出信号oFeed为低,清零端CLRN为高,电路返回稳态,电路完成一次脉冲展宽。仿真波形如图4.12所示,展宽脉冲的宽度为4个时钟周期。
module monostable (
iClk,
iPulse,
oPulsewidth
);
input iClk;
input iPulse;
output oPulsewidth;
wire Q1,Q2,Q3;
wire PR;
supply1 Vcc;
dff U1 (
.CLK(iPulse),
.D(Vcc),
.PRN(Vcc),
.CLRN(Q1),
.Q(Q2)
);
not U2 ( PR,Q2 );
counter U3 (
.RESET(PR),
.EN(Q2),
.CLK(iClk),
.FEED_OUT(Q3)
);
not U4 ( Q1,Q3 );
assign Pulsewidth = Q2 ;
endmodule
// Counter for pulse
module counter (RESET, EN, CLK, FEED_OUT);
input RESET;
input EN;
input CLK;
output FEED_OUT;
parameter NUM = 0;
reg FEED_OUT;
reg[NUM:0] q;
always @(posedge CLK)
begin
if (RESET == 1'b1)
begin
q = 0;
FEED_OUT <= 1'b0 ;
end
else if (EN == 1'b1)
begin
case (q)
NUM :
begin
FEED_OUT <= 1'b1 ;
end
default :
begin
end
endcase
q = q + 1'b1;
end
end
endmodule