天气: 晴朗
心情: 平静
分析思路:首先考虑输入输出,作为分频电路,有一个时钟输入端,clk,输出端div3,再加一个复位端(这里不加也可)
所以输入 clk,rst
输出 div3
再考虑状态转换的问题
既然是3分频,应该有3种状态,0、0、1 or 1、1、0(0、1、1)
在时钟的作用下,应该不停的在这三种状态下转换,并且输出仅仅依赖于当前的状态,所有的整数分频器都可以按照次方法来实现。
代码如下://Moore fsm// from www.edacn.netmodule div_fsm (clk,rst,div3);
input clk,rst;
output div3;
reg div3;
parameter[1:0] S0=2'd0,
S1=2'd1,
S2=2'd2;
reg[1:0] state,next_state;
always @ (posedge clk)
begin
if(!rst) state<=S0;
else state<=#1 next_state;
end
always @ (state)
begin
//default values
next_state=S0;
case (state)
S0: begin
next_state=S1;
div3=0;
end
S1: begin
next_state=S2;
div3=0;
end
S2: begin
next_state=S0;
div3=1;
end
endcase
end
endmodule
// test benchesmodule div_fsm_t;
reg clk,rst;
wire div3;
div_fsm U1(clk,rst,div3);
initial begin
clk=0; rst=0;
#300 rst=1;
end
always #50 clk=~clk;
endmodule