-
[SRC 설계] 프로그램 시뮬레이션 및 SRC Simulator 검증Digital Processor Design 2013. 6. 27. 16:39반응형
4. 프로그램 실행 시뮬레이션
4.1 test_pro_add.mif (1부터 10까지 더하는 프로그램)
4.1.1 Maxplus 2 시뮬레이션 파형
test_pro_add.mif 파일에 프로그램을 넣고 실행한 결과이다. 0x37 = 55값이 잘 저장되는 것을 확인하였다.
4.1.2 SRC Simulator Tool 사용
SRC 시뮬레이션 툴을 이용해서 값을 확인한 그림이다. 좌측에 사용한 프로그램의 assembly 언어표현, 기계어 표현으로 나타내주는 창이 있고 이 값을 통해서 시뮬레이션을 마친 결과가 우측에 있다. 마지막 instruction에서 st r2, 64(r0)를 통해 r2에 저장되어있던 값이 0x0000_0040번지에 잘 저장되는 것을 확인하였다.
4.2 test_pro.mif (계산하는 프로그램. 등비수열의 합)
4.2.1 Maxplus 2 시뮬레이션 파형
4.2.2 SRC Simulator Tool 사용
위 프로그램은 을 계산하는 프로그램이다.
위 값을 계산하면 십진수로 값이 나온다. 이 2046이라는 값은 16진수로
이다. 이 값이 SRC Simulator를 통해 정확하게 나오는 것을 확인하였다. 그리고 위의 프로그램과 달리 이번에는 64번지가 아닌 80번지에 저장을 했으며 따라서 0x0000_0050번지에 0x0000_07fe 값이 잘 저장되는 것을 확인하였다.
프로그램 동작 순서는 다음과 같다.
우선 r1에 2를, r2에 0을, r10에 10을, r11에 24를, r3에 1을, r4에 1을 저장한다.
우선 r1과 r2를 더해서 r2에 저장하면 r2의 값은 2가 된다. 그리고 r1의 값은 왼쪽으로 1번 shift한다. 따라서 r1의 값은 4가 된다. 그리고 카운트를 담당하는 레지스터 r10의 값을 1 감소시키고 jump를 위해 r10의 값이 0인지 검사한다. 0이 아니므로 r11에 저장된 값 24번지로 jump를 하고 위의 동작을 계속해서 반복한다.
만일 r10의 값이 계속 감소하다가 0이 되면 더 이상 jump가 일어나지 않고 80번지에 r2에 저장되어있는 값을 저장하고 Stop명령어를 통해 프로그램을 종료한다.
4.3 test_pro2.mif (1부터 50까지 홀수의 합을 계산 -> )
4.3.1 Maxplus 2 시뮬레이션 파형
4.3.2 SRC Simulator 사용
이번 프로그램은 을 계산하는 프로그램이다.
을 통해 쉽게 계산할 수 있지만 이 프로그램에서는 loop를 사용해서 1부터 50까지의 홀수만 더하는 프로그램을 작성하였다.
이고, SRC 시뮬레이션 툴을 통해 r2에 0x0000_09C4 값이 잘 저장되는 것을 확인하였다. 이번에는 첫 번째 프로그램에서와 같이 64번지에 저장했고 값이 잘 들어가는 것을 확인하였다.
프로그램 작동 원리는 다음과 같다.
r1 레지스터에 1을, r2에는 0을, r10에는 50을, r11에는 24를, r3에는 1을, r4에는 2를 저장한다.
r2와 r1을 더해서 r2에 저장하면 r2에는 1의 값이 저장된다. 그리고 r1값을 r4만큼 더해서 r1에 저장하면 r1값은 3 이 된다. 그리고 카운트를 담당하는 r3레지스터의 값을 1 감소시키고 branch 조건을 검사한다. 아직 0이 아니기 때문에 24번지로 jump해서 계속해서 덧셈을 수행한다. r3의 값이 0이 되면 branch하지 않고 64번지에 r2에 저장되어있는 값을 저장하고 stop명령어를 통해 프로그램을 종료한다.
반응형'Digital Processor Design' 카테고리의 다른 글
[SRC 설계] Control Unit 검증 및 시뮬레이션 (0) 2013.06.27 [SRC 설계] Data Path 검증 및 시뮬레이션 (0) 2013.06.27 [SRC 설계] 1BUS 구조 SRC 설계 및 구현 (0) 2013.06.27 [SRC 설계] Control Unit 설계 및 구현 (0) 2013.06.27 [SRC 설계] Data Path 설계 및 구현 (2) (0) 2013.06.27