[an error occurred while processing this directive]
|
В учебниках и мануалах приводится следующий стиль описания конечных автоматов: комбинационная часть отдельно, последовательнастная - отдельно. Т.е. нечто вроде:
//-----------------------------------
reg [2:0] StateMachine;
reg [2:0] NextState;localparam stS1 = 3'b001;
localparam stS2 = 3'b010;
localparam stS3 = 3'b100;
always @(*)
begin
case(StateMachine)
stS1:
if(...) NextState <= ...;stS2:
NextState <= ...;
...end
always @(posedge clk)
StateMachine <= NextState;//-----------------------------------
Но мне такой стиль при всей его простоте не кажется всегда удобным. Более того, у меня чаще получается совсем не так - комбинационная часть идет вместе с последовательноснтной в одном always @(posedge clk ...) блоке. Там получается большой case блок, где все и разруливается - еще много всякой сопутствующей логики (из-за чего, кстати, и удобство этого стиля). Так оно представляется более наглядно - видно, как по состояниям логика меняется.
По реализации, я понял, разницы никакой нет. Может есеть какие-то нюансы. Кто что думает?
E-mail: info@telesys.ru