오늘 SOC설계 시간에 배운 FSM입니다. 교수님이 그려주신 그림에 따라 설계하고 코드를 작성했습니다.
VerilogHDL 실력이 날이 갈 수록 늘어나고 있습니다. ㅋㅋ
기분이 좋군요. ㅋㅋ


위 그림이 기본 그림입니다. 괄호 안의 숫자들은 제가 사용하는 Spartan3의 포트 번호인데요. 이 코드를 갖고 ISE에서 Synthsesize 하면 됩니다. ㅋㅋ


위 그림이 기본 알고리즘인데요. 굉장히 간단하게 생겼습니다.
Accelerate와 Brake를 보고 상태에 따라 속도를 올리거나 줄이게 됩니다.




이 코드에서 가장 중요한 것은 OneShot Signal 인데요. 만약 사용자가 버튼을 클릭하게 되면 그 시간은 몇초 정도 되겠죠. ns로 따지면 엄청난 시간입니다. 그것을 단 한클럭만 하게 바꾸는 것이 OneShot Signal 이구요.


위 그림이 OneShot Signal을 나타내는데요. Acc를 버튼으로 가정하면 됩니다. 지금 클럭에 비해 굉장히 길게 입력이 되고 있죠?? 하지만 AccOneShot은 딱 한 클럭 만큼만 나타나고 있는데요. 그걸 가능하게 하는 것이 Acc_1과 Acc_2입니다. 이것들이 버퍼로 작동하는데 Propagal Delay(스펠링맞나??;;;)에 따라 한클럭 뒤에 값이 나오게 되죠. 이 값들을 저장해서 나중에 AND 연산을 취하게 됩니다.(아래 소스가 있습니다.) 그러면 위와 같이 AccOneShot Signal이 딱 튀어 나오게 되죠. ㅋㅋ 어렵습니다;;




위 소스가 OneShot Signal을 만드는 소스입니다. 자 공부 합시다. 공부 공부ㅋㅋㅋ


Bloger: moltak.net

+ Recent posts