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. 而对于可以抽象成多种操作的状态机的,则用状态机来描述,更加简便。
版权声明:本文为CSDN博主「EE2BSP」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_25902709/article/details/87256499