2014-10-28 6 views
7

FSL (유한 상태 기계)을 VHDL로 코딩하는 방법에 대한 논란이 많이있는 것처럼 보입니다. 사람들은 1 프로세스, 2 프로세스 또는 3 프로세스 FSM에 대해 모든 사람들이 정확히 무엇을 의미하는지, 각 프로세스가 무엇을하는지 잘 알고있는 것처럼 말합니다. 그러나 나는 정확한 정의를 찾을 수 없었고, 존재하는 예는 모순 된 것처럼 보인다.VHDL에서 FSM의 1, 2 또는 3 프로세스 의미는 무엇입니까?

이것은 객관적인 질문입니다. 각 FSM 스타일 (1-process, 2-process, 3-process)에 대한 코드 측면에서의 차이점은 무엇입니까? 나는 개인적인 취향의 요소가 있음을 이해하지만 객관적으로 질문에 대답하고 각 접근법의 장점을 열거 할 수 있음은 분명하다.

덕분에,

+2

Xilinx의 XST PDF는 1,2 프로세스 FSM의 예를 보여줍니다 (이상하게도 2 프로세스의 두 변형 중 하나만). 그것은 부분적으로 Mealy-Moore 이슈이고 대부분 개인적인 취향이나 암기 식 학습입니다. 분석적으로 구부러진 사람들은 민감성 목록에있는 요소의 의미에주의를 기울일 수 있습니다. – user1155120

+0

@DavidKoontz 2- 프로세스 FSM의 두 번째 변형은 무엇입니까? 상태 레지스터에 대한 하나의 프로세스와 다른 모든 프로세스에 대한? – rick

+0

XST pdf는 훌륭한 참고 자료입니다. 감사합니다. @DavidKoontz –

답변

1

나는 그것이 어려운 경우도 대답하려고하기 때문에 자신이 좋아하는 방법 모든 사람이 코드를 하드웨어가 작동하는 조건의 함수 (주파수, 외부 경로, ...). 상태 기계

일부 요소가 :

  • 입력
  • 출력을
  • 현재 상태

다음 상태는 현재 상태에서 의존 다음 상태 및 입력. 결합 루프를 가지지 않으려면 클럭 신호가 발생할 때 다음 상태를 샘플링하여 현재 상태가되도록해야합니다. 따라서 상태에 맞는 플립 플롭을 생성하려면 VHDL 프로세스가 필요합니다. 이 과정에서 다음 상태를 계산하는 데 필요한 모든 논리를 넣을 수 있습니다. 귀하의 산출물이 주에서만 의존하는 경우 다른 사람이 처리 할 필요가 없습니다.

로직이 매우 쉽지 않을 때 같은 프로세스 결합 로직을 넣는 것을 좋아하지 않습니다. (그렇지만 필수는 아닙니다!) 그래서 일반적으로 두 프로세스에서 FSM을 분할합니다. 다음 상태를 샘플링하여 현재 상태를 샘플링하는 프로세스 및 입력 및 현재 상태의 함수로서 모든 출력 및 다음 상태를 계산하는 하나의 결합 프로세스.

동일한 경우 출력을 샘플링해야합니다 (예 : 빈번한 주파수 문제의 경우 외부 경로와 내부 경로를 분리해야하거나 출력에 큰 부하가있을 때). 이 경우 다음 상태를 샘플링하거나 하나 이상의 전용 프로세스를 만드는 첫 번째 프로세스에 필요한 모든 플립 플롭을 추가 할 수 있습니다.

당신은 프로세스의 수로서 많은 변형을 가질 수 있습니다 : 나는 모든 신호가 전용 프로세스에서 계산되는 코드에서 작업했기 때문에 결과 상태 머신은 20/30 프로세스를가집니다.