FPGA的RTL级几种状态控制的分析总结

FPGA实现算法中的逻辑,执行不同状态的切换是关键。现对近期实现的几个功能中用到状态控制的部分进行总结。

1.外部触发信号到来后,执行若干步骤,步骤由计数器控制。(这里的计数器可计数为0-127)。故触发信号高电平使能计数器使能信号(用组合逻辑实现)。仅计数器记到127后,或者复位信号到来,计数器使能归0.使能一旦归零,计数器恢复0.

always @(trg or count or rst)
    if(trg)
         cn_en =  1'b1;//数据长度为128,可更改
    else if((count==127)||(!rst))
         cn_en = 1'b0;
         else
         cn_en = cn_en;

always @(posedge clk or negedge rst)
    if((!rst)||(trg))//复位或者有触发信号到来后,计数器置零
    begin
       count <= 7'b0;
    end
    else if(cn_en)
        count <= count + 1;
         else
        count <= 7'b0;

2.不同于1,触发信号到来后进行操作,但是会在不定次数后,完成操作而停止。故可在完成操作的模块中加入完成告知信号d_req,这样,完成使能信号,能够使得N_state置0,从而达到目标。

always @(trg or d_req)          
    if(trg)
       N_state = 1'b1;
    else
       N_state =  (~d_req)? N_state:1'b0;

3.而对于可以抽象成多种操作的状态机的,则用状态机来描述,更加简便。

你可能感兴趣的:(FPGA-Verilog语言,电子学)