2013-02-04 1 views
-2

1 mealy fsm에 대한 Verilog 프로그램을 작성해야합니다. 그것을 쓰는 많은 기술이 있습니다. 나는 당신에게 1을 보여주지 그리고 난 여기가 너무 작동하지 않는 경우 (다른 기술을 언급 할 필요, 즉 작동 여부 및 이유 경우 단지 말을!) 알고 싶어Verilog Mealy FSM (모듈 1 개 포함)

module MealyFsm(out,in,clk,rst); 
    output out; 
    input in,clk,rst; 

    reg [1:0] q; 

    always @(posedge clk or negedge rst) begin 
    if (~rst) 
     q<=2'b00; 
    else 
     begin 
     q[0]<=~q[0] & q[1] & x | ~q[0] & x | q[1] & x; 
     q[1]<= q[1] & ~q[0] & ~x | ~q[1] & q[0] | q[0] & ~x; 
     end 
    end 

    assign y = ~x & q[0] & ~q[1]; 

endmodule 

PS합니다. 단지이 기술에 대한 관심이 임, 그 잘못된 시도하십시오이

+0

시뮬레이터를 사용하여 프로그램을 디버깅하십시오. – Tim

+0

음, 나는 fsm의 이론적 인 관점에서 Verilog를 사용하고 있습니다 ... 나는 운동을하는 속임수에 대한 답이나 그와 비슷한 것이 필요하지 않습니다. 다른 기술을 사용하여 쉽게 다시 쓸 수 있습니다. 나는 이것에 대해서 궁금해서 Verilog 튜토리얼, 디지털 디자인 서적 또는 인터넷 예제와 관련있는 것을 발견 할 수 없다. 만약 당신이 내 질문을 asnwer 수 있습니다 .. 추신 인스턴트 메신저 카페에서 일하는 나는 컴파일러와 시뮬레이터를 다운로드 할 수 없습니다 .. – user2040678

답변

0

계산의 이론에서 Wikipedia

에서 해결하기 위해 무슨 잘못을 말해하는 반점이 기계는 그 유한 상태 기계입니다 출력값은 현재 상태 인 과 현재 입력 값에 의해 결정됩니다.

모듈이 정의를 충족 않는 다음, 입력 in는, 코드에 x로 typoed되었다고 가정하면?

일부 상태는 q입니다. 일부 출력은 y입니다. 귀하의 입력 in or x은 직접 결과를 출력합니다. 따라서 Mealy Machine의 정의를 충족시킵니다.

NB : 논리는 따라 가기 힘들고 상태의 기능과 흐름은보기 힘들다. FSM을 작성하는 가장 좋은 방법은 대부분 단일 모듈에서 수행된다.

+0

잘 '에 대한'(이 예제에서 x는, 나는 그것을 빨리 썼다 및 이름을 didnt 통지 그것은 안에있다 : p). 질문에 관해서는 그 기술이 정확하다면 나는 단지 호기심을 가졌습니다. D- 플립 플립의 다음 상태에 대한 방정식이있을 때 쓰기가 너무 쉽기 때문입니다. 그렇지 않으면 내가 D 조 플립 플롭 정의에 대한 +1 모듈을 작성하거나 (상태에 대한) 몇 가지 매개 변수 변수를 정의하고 입력 블록 및 기타 등 기타 기법을 기반으로 통계를 변경하는 항상 블록에서 그들을 사용해야 할 것입니다. – user2040678

+0

어쨌든 나는 그것을 올바르게 이해하고 있지만 최선의 방법은 이해하기가 어렵 기 때문에 (통계 사이의 연결을 찾는 것) 상태 변환 그래프를 만드는 것이 더 어렵습니다. 응답을위한 타이 – user2040678