关于一段式状态机的比较,欢迎各位讨论各自代码风格。
最近在学习状态机,从我入门的特权同学和黑金开发板入手,对比了一下两种代码风格。。。。特权同学的一段式状态机:
module state_machine(
clk,
rst_n,
cmd,
wr_req,
rd_req
);
input clk;
input rst_n;
output cmd;
input rd_req;
input wr_req;
reg cmd;
reg cstate;
parameter IDLE = 0,
WR_S1 = 1,
WR_S2 = 2,
RD_S1 = 3,
RD_S2 = 4;
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin
cstate <= IDLE;
cmd <= 3'b111;
end
else
case(cstate)
IDLE:
if(wr_req) begin
cstate <= WR_S1;
cmd <= 3'b011;
end
else if(rd_req)begin
cstate <= RD_S1;
cmd <= 3'b011;
end
else begin
cstate <= IDLE;
cmd <= 3'b111;
end
WR_S1:begin
cstate <= WR_S2;
cmd <= 3'b101;
end
WR_S2:begin
cstate <= IDLE;
cmd <= 3'b111;
end
RD_S1:
if(wr_req) begin
cstate <= WR_S2;
cmd <= 3'b101;
end
else begin
cstate <= RD_S2;
cmd <= 3'b110;
end
RD_S2:
if(wr_req) begin
cstate <= WR_S1;
cmd <= 3'b011;
end
else begin
cstate <= IDLE;
cmd <= 3'b111;
end
default: cstate <= IDLE;
endcase
end
endmodule
下面是黑金开发板提供的类状态机写法:
module state_machine(
clk,
rst_n,
cmd,
wr_req,
rd_req
);
input clk;
input rst_n;
output cmd;
input rd_req;
input wr_req;
reg cmd;
reg i;
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin
i <= 4'd0;
cmd <= 3'b111;
end
else
case(i)
4'd0:
if(wr_req) begin
i <= i + 1'd1;
cmd <= 3'b011;
end
else if(rd_req)begin
i <= 4'd3;
cmd <= 3'b011;
end
else begin
i <= 4'd0;
cmd <= 3'b111;
end
4'd1:begin
i <= i + 1'd1;
cmd <= 3'b101;
end
4'd2:begin
i <= 4'd0;
cmd <= 3'b111;
end
4'd3:
if(wr_req) begin
i <= 4'd1;
cmd <= 3'b101;
end
else begin
i <= i +1'd1;
cmd <= 3'b110;
end
4'd4:
if(wr_req) begin
i <= 4'd1;
cmd <= 3'b011;
end
else begin
i <= 4'd0;
cmd <= 3'b111;
end
default: i <= 4'd0;
endcase
end
endmodule
下面是占用的资源对比: 这两段代码的差异无非就是一个状态机的参数使用parameter,另一个直接用数值
猜测的结果可能是使用parameter时,综合的时候可能parameter指定的值有综合器重新优化指定(完全是猜想)
另外,黑金的代码风格简直就是一坨屎 wangjun403 发表于 2013-9-26 14:43 static/image/common/back.gif
这两段代码的差异无非就是一个状态机的参数使用parameter,另一个直接用数值
猜测的结果可能是使用paramet ...
我前期收黑金的影响甚大,现在正在一点点修正。。。。。。。。 深海烟花 发表于 2013-9-26 23:13 static/image/common/back.gif
我前期收黑金的影响甚大,现在正在一点点修正。。。。。。。。
我现在也在通过黑金学习FPGA的一些基础代码,请问关于这个“影响”到底是好是坏? 前期的代码风格对后来的项目研发应该会影响很大,请指点一二应该通过哪些教程去入门FPGA的学习? 代码风格要有自己的特色一看就是你写的同时也能吸收别人的长处让别人看你的代码也能看到别人的影子
我会告诉你我是来秀头像的吗? ALTERA_WLB 发表于 2013-9-27 08:54 static/image/common/back.gif
我现在也在通过黑金学习FPGA的一些基础代码,请问关于这个“影响”到底是好是坏? 前期的代码风格对后来 ...
我前段时间接触了官网的一些示例代码,非常工整。。。。。 开发板的代码能写的很好,还真没见过,大部分就是应付。
要想写的好,就得多学习了。
这两段代码都不怎样
没见过黑金的代码不好评论
建议用二段式状态机,逻辑与时序分开
页:
[1]