关于FPGA中“打一拍”的含义,我们可以理解为把某个信号延迟了一个时钟周期,推而广之:“打两拍”就是延迟两个时钟周期,“打n拍”就是延迟n个时钟周期。
“打一拍”的目的很简单,就是为了FPGA中时序的正确性!!!!(了保证FPGA输入输出接口的时序,一般会要求将输入管脚首先打一拍再使用,输出接口也要打一拍再输出FPGA。将信号打一拍的方法是将信号通过一次寄存器,而且必须在IOB里面的寄存器中打一拍。因为,从FPGA的PAD到IOB里面的寄存器是有专用布线资源的,而到内部其他寄存器没有专用的布线资源。使用IOB里面的寄存器可以保证每次实现的结果都一样,使用内部其他寄存器就无法保证每次用的都是同一个寄存器且采用同样的布线。同时,为了使用输入输出延迟功能(Input / Output delay),也必须要求信号使用IOB里面的寄存器。)
“打一拍”具体是怎么通过FPGA实现的呢?如下
always @ (posedge Clk) //对输入信号打三拍
begin
inputs_reg1 <= inputs;
inputs_reg2 <= inputs_reg1;
inputs_reg3 <= inputs_reg2;
if (inputs_reg2 == 1'b1 &