fsm 설계 예제

도 7.3에서, `레벨`이 1로 가는 즉시 Mealy 검출기의 출력 틱이 생성되는 것을 알 수 있지만 무어 디자인은 1 클럭 주기 후에 진드기를 생성합니다. 이 두 틱은 그림의 두 빨간색 커서의 도움으로 표시됩니다. 때문에, Mealy 디자인의 출력은 즉시 사용할 수 있으므로 동기 설계에 대한 것이 바람직하다. 도 7.2 및 도 7.1은 각각 밀리 및 무어 디자인에 대한 상태 도면이다. 도 7.2에서, 시스템의 출력은 시스템이 `0` 상태이고 입력 신호 `레벨`의 값이 1일 때마다 1로 설정됩니다. 즉, 출력은 상태와 입력 모두에 따라 달라집니다. 도 7.1에서 출력은 시스템이 `에지` 상태일 때마다 1로 설정되는 반면, 즉 출력은 시스템의 상태에 따라 달라집니다. 다음 단계는 상태 다이어그램을 디자인하는 것입니다. 이것은 원과 화살표로 만들어지고 우리의 회로의 동작을 시각적으로 설명하는 다이어그램입니다. 수학 용어로, 우리의 순차 회로의 동작을 설명하는이 다이어그램은 유한 상태 기계입니다. 도 7.4를 나열하는 것은 도 7.7에 도시된 바와 같이 디자인에서 결함의 또 다른 예이다.

여기서, 글리치는 연속즉, 신호 `din`의 모든 변화에서 발생한다. 이러한 결함은 섹션 7.4.3에 표시된 대로 D-플립 플롭을 사용하여 제거됩니다. 맨체스터 코드의 출력은 시계의 양 가장자리에 따라 달라지므로 (즉, +ve 가장자리에서 출력의 절반은 변경되고 -ve edge에서 다른 절반은 변경됨) 따라서 이러한 결함은 고칠 수 없습니다. Verilog에서와 같이 두 가장자리는 하나의 D 플립 플롭에 연결할 수 없습니다. 이는 간단한 단계로 설명할 수 없기 때문에 디자인 절차에서 가장 어려운 부분일 수 있습니다. 상태 다이어그램을 설정하려면 신중하고 날카로운 생각이 필요하지만 나머지는 미리 결정된 단계 집합일 뿐입니다. 이 표는 상태 Q에서 상태 Qnext로 이동하려면 각 터미널에 대한 특정 입력을 사용해야 한다고 말합니다. 예를 들어 0에서 1로 이동하려면 J에게 1을 공급해야 하며 입력 신호가 0에서 1로 변경될 때마다 한 클럭 주기 동안 틱을 생성하는 터미널 K. Rising edge 검출기에 공급하는 입력은 상관없습니다.

이 섹션에서는 Mealy 및 무어 설계에 대한 상승 에지 검출기의 상태 다이어그램이 표시됩니다. 그런 다음 상승 에지 검출기는 Verilog 코드를 사용하여 구현됩니다. 또한 이 두 디자인의 출력을 비교합니다. 이 장에서는 밀리와 무어의 디자인에 대해 설명합니다. 또한, `에지 검출기`는 Mealy 및 Moore 디자인을 사용하여 구현됩니다. 이 예제에서는 밀리 디자인이 무어 디자인보다 더 적은 주를 필요로 한다는 것을 보여 주며, 또한, Mealy 디자인은 상승 가장자리가 감지되는 즉시 출력 틱을 생성합니다. 무어 설계는 한 클럭 주기의 지연 후 출력 틱을 생성합니다. 따라서 동기 설계에는 Mealy 디자인이 선호됩니다. 목록 6.4에 표시된 것처럼 7.15 목록과 같이 FSM 을 사용하여 모든 설계를 구현하는 것은 좋지 않습니다. FSM 설계의 올바른 사용을 과소 평가하려면 섹션 7.8을 참조하십시오. 밀리 디자인과 무어 디자인은 모두 리스팅 7.1에서 구현됩니다. 리스팅은 두 부분으로 볼 수 있습니다, 즉, 밀리 디자인 (라인 37-55) 및 무어 디자인 (라인 57-80).

코드에 대한 완전한 이해를 위해 주석을 읽어보시기 바랍니다. 시뮬레이션 파형 즉, 도 7.3은 다음 섹션에서 논의된다. 이전 섹션에서는 FSM 설계에 대한 상태 다이어그램이 있으면 Verilog 설계가 간단한 프로세스라는 것을 알았습니다.