SM 챠트를 이용한 디지털 설계 상태 machine chart : State Machine의 동작을 기술하기 위한 흐름도 1. 상태도 보다 디지털 시스템의 동작을 이해하기 쉽다. 2. 폼으로부터 하드웨어의 구현에 적절하다. 3. Boolean 표현을 조건에 사용할 수 있다. 출력 :시스템의 상태 와 입력으로 결정 상태박스 결정박스 조건부출력박스
SM 챠트를 이용한 디지털 설계 SM 블록의 예> 상태1로 들어왔을 때 ; Z1, Z2 = 1 X1 = 0, Z3, Z4 = 1 X1, X2=0 exit path =1을 거쳐 다음 상태로 간다. X1=1, X3=0 이면 Z5=1 이고 exit path 3을 거쳐 다음 상태로 간다. (이 경우 Z3, Z4 = 0 )
같은 동작을 수행하는 SM chart X1=0일 때 Z2 = 1, X2=1 이면 다음 상태는 S3 이다. X1=1, X2=0 인 경우 다음 상태는 ?
조합회로의 SM chart Z1=A+A’BC = A+BC A+BC = 1 인 경우 Z1=1 이고 다음상태는 S0 이다.
피드백을 가지는 블록의 표현 SM 블록의 내부 피드백은 허용 되지 않는다.
병렬형식, 직렬형식의 SM 블록 X1=X2=X3=0 일 때 Z2,Z3,Z4=0 으로 결과는 동일.
상태그래프의 SM 차트 구현 Mealy 출력 Mealy, Moore 의 동시 표현 Moore 출력 S0=00, S1=01, S2=11 하나의 입력 변수 X 에 대한 상태 변화
Timing chart S0 상태로 부터 X= 1,1,1,0,0,0 으로 주어진 경우 출력을 나타낸 표
Binary Multiplier Controller 의 SM Chart
주사위 게임 게임의 법칙 : (2개의 주사위를 굴린다.) 주사위의 첫 번째 굴리기 후에 그 합이 7 혹은 11인 선수가 이긴다. 만약에 그 합이 2, 3, 또는 12 이면 진다. 위의 5가지 경우가 아니라면 첫 번째 굴리기 합이 점수가 되고 주사위를 한번 더 던진다. 두 번째 굴리기에서 합이 첫 번째 점수와 같으면 선수가 승리하고 그렇지 않고 합이 7이면 지게 된다. 5. 그렇지 않을 경우 계속 굴린다.
주사위 게임기 블록 다이어그램 1,2,3,4,5,6,1,2,3—순서로 카운트 Rb: 굴리기, Roll=1, 0., Reset: 다시 시작 SP : Sum을 Point register에 저장하라. 게임 흐름도
주사위 게임을 위한 SM Chart Rb: 굴리기, Roll=1, 0., Reset: 다시 시작 SP : Sum을 Point register에 저장하라.
주사위 게임 동작표현 VHDL
주사위 게임 동작표현 VHDL
SM 차트의 구현 SM chart – 조합회로와 FF의 구성으로 구현. 상태할당 : 상태에 대한 코드의 할당 S0 =00, S1=01, S2=10, S3=11 (각 bit 는 FF A,B) Za 는 상태 S0 에서 1이므로 Za = A’B’ 으로 표현이 가능. Zb=A’B, Zc=AB 이다. 조건부 출력 Z1은 S2 상태와 입력 X=0 으로 결정 Z1=A’B’X 이다. Z2=A’B’X’ B의 다음상태를 구하기 위하여서는 B=1로 끝나는 경로 (그림에서 link 1,2,3) 를 구하고, 각 경로상의 시작상태와 입력의 곱으로 링크를 표현하고 이들 링크 의 합으로 다음상태를 표현한다. B+ = A’B’X + A’BX + ABX (경로1, 경로2, 경로3) A+ = A’BX + ABX (경로2, 경로3)
주사위 게임을 위한 SM Chart
주사위 게임의 하드웨어 구현 5개의 상태와 9개의 입력 (상태 ABC포함) 7개의 출력을 가진다. 상태표시를 위한 3개의 FF 과 조합회로로써 구성할 수 있다. 입력: Rb (굴리기명령), Reset D711 (합이 7, 11) D7 (2번째 합이 7) D2312(합이 2,3,12) Eq (이전 굴리기 합과 동일) ABC (상태표시 코드) 출력 : Win(승), Lose(패), Roll(주사위카운터동작), Sp (Sum을 레지스터 저장) ABC(상태코드표시)
주사위 게임 제어기의 PLA 표 S0 S1 S2 S3 S4 S5 S0: 2개, S1: 4개, S2: 2개, S3: 2개, S4:2개, S5: 4개의 경로를 가진다. 상태코드 110, 111은 상태지정이 안되어 don’t care로 처리 A+는 번호 4, 11, 12,13,16 번 가로 열에서 상태와 입력에 따라 1을 출력한다. => 상태식 표현
PLA에서 유도된 MAP과 방정식 A+ B+ Win A+= A’B’CRb’D’711D’2312 + AC’ + ARb + AD’7Eq’ B+= A’B’CRb’(D711+D2312) + BReset’ + ACRb’(Eq+D7) C+= B’Rb + A’B’CD’711D2312 + BCReset’ + ACD7Eq’ Win = BC’ Lose = BC Roll = B’CRb Sp = A’B’CRb’D’711D’2312
다른 예> 곱셈제어를 위한 SM 차트 00 S0=00, S1=01, S2=10, S3=11 4가지 상태 존재 조합회로 와 2개의 플립플롭의 구성 조합회로는 (PLD : ROM, PLA, PAL로 구현 가능) 제어기는 5 입력과 6개의 출력을 가진다. 입력 : A, B, St, M, K 출력 : A+, B+, Load, Sh, Ad, Done A,B는 상태, st는 시작, M은 승수의 값, K는 완료신호 A+,B+ 다음상태, load 는 승수, 피승수값 입력 Ad: 더하기 명령, Sh : 쉬프트 명령 , done : 종료 A+ = 1을 만드는 경로를 모아서 A+ 상태식을 만들 수 있다. (상태 S2, S3) A+ = A’BM + A’BM’K+AB’K 01 10 11
카운터를 포함한 곱셈기 제어 제어는 : Ad, Sh 를 내보내는 것과 Sh 의 수를 count 하는 것 만일 bit 수가 매우 크다면 Sh counter를 따로 두는 것이 좋다. K: 완료 신호 K=1 이면 마지막 Shift 신호를 내보내고 종료 단계인 S3 상태로 간다. K=0, M=0 일 때 Shift 동작 K=1, M=0 일 때 Shift 동작 K=1일 때 Shift 동작
곱셈제어기를 위한 PLA 표 입 력 변 수 출 력 변 수 상 태 상 태 표에서 각행은 연결 경로를 의미한다 : S0 는 2개의 연결 경로를 가진다. 해석 예) S0 에서 St=1 이면 다음상태는 S1 상태로 가고, Load만 1이 된다. S3 상태에서는 done=1 을 출력하고 S0 상태로 간다.
곱셈제어기를 위한 상태식과 출력식
연결된 상태 머신 복잡한 머신을 몇 개의 서브 머신으로 분할 하고 호출에 의해 서로 교신한다. -- 프로그램의 프로시듀어(procedure)과 유사하다. Machine A 가 동작하다 SA 상태로 가면 출력 ZA=1 로 되고 머신 B를 호출한다. Machine B는 ZA=1 입력을 기다리다, ZA=1 이 되면 other states로 가고 이후 상태 SB에 도달한다. SB에서 ZB=1이 되고 다시 Machine A를 호출 한다. Machine A는 ZB=1의 입력을 기다리다 ZB=1이 되면 Other states 로 간다.
예제회로설계 Q1) schematic 화면에서 symbol tool을 이용하여 다음을 설계하고 시뮬레이션 libraries-> megafunctions –> arithmetic 디렉토리 가) parallel adder : 4bit 입출력, 입출력을 unsigned와 signed로 한 경우 비교. 나) lpm_mult : 4bit 입력, 출력은 auto 입출력을 unsigned와 signed로 한 경우 비교 다) lpm_add_sub : 4bit 감산, 가산기, unsigned, carry는 모두 무시 라) lpm_compare : 4bit 비교기, a=b, a<>b, a>b, a<b의 경우에 출력결과 분석 unsigned type의 경우만 하시오. Q2) schematic 화면에서 symbol tool을 이용하여 다음을 설계하고 시뮬레이션 libraries-> megafunctions –> storage 디렉토리 가) lpm_shiftreg: serial shift data input, serial shift data output 만 지정하고 shift 방향을 left로 지정하고. 5ns 간격으로 101100…입력 후 결과분석 나) 위의 경우에서 입력을 data input(load)으로 지정하고 (serial shift data input은 해제), 초기 입력값을 8bit (11100011)로 지정한다음 출력결과 분석
예제회로설계 Q3) 4bit shift register A, B 로부터 0011, 0101의 값을 입력받아 이를 매 클럭마다 shift 하여 더한 후 sum 의 값을 shift register A에 다시 입력하는 직렬 덧셈기 회로를 꾸미고 시뮬레이션 하시오. (control circuit의 Sh는 clock enable input 입력포트로, clock은 입력포트로 대체) Shift-register