如何在组合块verilog中给出1个时钟周期的延迟

如何在组合块verilog中给出1个时钟周期的延迟,verilog,fpga,xilinx,Verilog,Fpga,Xilinx,我有一个组合代码,在这个代码中,我想在1个时钟周期后关闭一个信号,也就是说,最初它是1,在一个时钟周期后它应该是0。是否有任何方法可以做到这一点,如果可能的话,它应该能够在FPGA上合成。 代码如下: always@(ao or bo or co or dod or eo or fo or go or ho) begin temp_out = {ho,go,fo,eo,dod,co,bo,ao}; out_flag = 1; //after one clock c

我有一个组合代码,在这个代码中,我想在1个时钟周期后关闭一个信号,也就是说,最初它是1,在一个时钟周期后它应该是0。是否有任何方法可以做到这一点,如果可能的话,它应该能够在FPGA上合成。 代码如下:

always@(ao or bo or co or dod or eo or fo or go or ho)
    begin
    temp_out = {ho,go,fo,eo,dod,co,bo,ao};
    out_flag = 1;
    //after one clock cycle it should go to 0 ;
    //help is required over here
    out_flag = 0;
    end

你不能用一种纯粹的组合合成方式。您需要一个触发器(可合成)和一个复位来将信号设置为已知值,比如0。因此,您可以在复位后延迟1个时钟周期,如下所示:

always @(posedge clk) begin 
    if (reset)
        out_flag <= 0;
    else 
        out_flag <= 1;
end
始终@(posedge clk)开始
如果(重置)
外旗