3
제 1 항에 있어서, 상기 제 2 과정은 MPC860이 DPRAM의 RX 영역의 플래그를 검사한 후 "0"인 부분이 있으면 정상적으로 메시지를 쓸 준비를 하는 제 1 단계와; 상기 MPC860이 CS4*, WE[3:0]*, 어드레스(MA[31:0]), 데이터(MD[31:0])를 드라이브하여, 쓰기 전송이 되고, MD[31:0]는 MPC860의 출력이 되는 제 2 단계와; DPRAM 중재기는 상기 CS4*를 감지하여 MPC860이 DPRAM을 어세스하도록 허락하는 제 3 단계와; DPRAM 디코더는 상기 MPC860의 MA[31:0], WE[3:0]*를 디코딩하며, SRAM 제어기는 SRAM의 칩 인에이블(DPCE[3:0]*), SRAM의 쓰기 인에이블(DPWE*)을 SRAM으로 드라이브하는 제 4 단계와; 버퍼 제어기는 상기 MPC860이 쓰기 전송을 할 수 있도록 버퍼 인에이블(MWIN), 버퍼 방향선택(MDIR)을 드라이브하는 제 5 단계와; TA/ACK 발생기는 상기 SRAM의 어세스 시간 후에 MPC860으로 TA*를 드라이브하여 전송을 종료하는 제 6 단계와; 상기 MPC860이 DPRAM의 RX 영역의 해당 플래그를 "1"로 세팅한 후, 일정 시간동안 MPC860이 쓸 메시지가 더 있다면 상기 MPC860이 DPRAM의 RX 영역의 플래그 검사에서부터 MPC860이 DPRAM의 RX 영역의 해당 플래그를 "1"로 세팅하는 것까지를 반복하는 제 7 단계와; 일정 시간 후에 MPC860은 RX_Header 영역에 SBus가 읽어야 할 RX 영역의 시작 어드레스 및 오프셋을 쓸 준비를 한 후, 상기 MPC860이 CS4*, WE[3:0]*, 어드레스(MA[31:0])), 데이터(MD[31:0])를 드라이브하여, 쓰기 전송이 되는 제 8 단계와; 상기 MD[31:0]은 MPC860의 출력이 되는 것에서부터 상기 TA/ACK 발생기는 상기 SRAM의 어세스 시간 후에 MPC860으로 TA*를 드라이브하여 전송을 종료하는 것까지를 반복하여 RX_Header 영역을 어세스하는 제 9 단계와; 상기 MPC860은 SBus로 RX_EN 인터럽트를 요구할 준비를 한 후 CS6*, WE[3:0]*, MA[31:0], MD[31:0]을 드라이브하여 RX 영역에 SBus가 읽어가야할 메시지가 있다는 것을 의미하는 RX_EN 인터럽트 벡터를 벡터 레지스터에 쓰는 제 10 단계와; 상기 WE[3:0]*가 드라이브되어 쓰기 전송이 되고, MD[31:0]은 MPC860의 출력이 되는 제 11 단계와; 상기 벡터 레지스터는 SBus로 SIRQ4*를 드라이브하여 RX_EN에 대한 인터럽트를 요구한 후 인터럽트를 접수하고, 벡터 레지스터의 인터럽트 벡터를 읽는 동작인 인터럽트 서비스 루틴 1을 시작할 준비를 하는 제 12 단계와; SBus가 SEL*, AS*, SIZ[2:0], 어드레스(SA[0:27]), 데이터(SD[0:31])를 드라이브한 후, Rd가 "1"이 되어 읽기 전송이 되고, SD[0:31]는 SBus의 입력이 되는 제 13 단계와; 상기 DPRAM 중재기는 SEL*와 AS*를 감지하여 SBus가 DPRAM을 어세스하도록 하며, DPRAM 디코더는 SBus의 SA[0:27], SIZ[2:0], Rd를 디코딩하는 제 14 단계와; 상기 SRAM 제어기는 SRAM의 칩 인에이블인 DPCE[3:0]*, SRAM의 읽기 인에이블인 DPOE*를 SRAM으로 드라이브하는 제 15 단계와; 버퍼 제어기는 SBus가 읽기 전송을 할 수 있도록 버퍼 인에이블(SWIN), 버퍼 방향선택(SDIR)을 드라이브하는 제 16 단계와; 상기 TA/ACK 발생기는 상기 SRAM의 어세스 시간 후에 SBus로 ACK[2:0]*를 드라이브하여 전송을 종료하는 제 17 단계와; 상기 SBus가 벡터 레지스터를 클리어하여 인터럽트 서비스 루틴 1을 종료하는 제 18 단계와; SBus는 상기 SBus가 SEL*, AS*, SIZ[2:0], 어드레스(SA[0:27]), 데이터(SD[0:31])를 드라이브하고, Rd가 "1"이 되어 읽기 전송이 되고, SD[0:31]는 SBus의 입력이 되는 것에서부터 상기 SBus가 벡터 레지스터를 클리어하여 인터럽트 서비스 루틴 1을 종료하는 것까지의 과정으로 읽은 인터럽트 벡터의 소스가 RX_EN임을 확인하고, RX_Header 영역의 시작 어드레스 및 오프셋을 읽는 동작인 인터럽트 서비스 루틴 2를 시작할 준비를 하는 제 19 단계와; SBus는 상기 SBus가 SEL*, AS*, SIZ[2:0], 어드레스(SA[0:27]), 데이터(SD[0:31])를 드라이브하고, Rd가 "1"이 되어 읽기 전송이 되고, SD[0:31]는 SBus의 입력이 되는 것에서부터 TA/ACK 발생기는 상기 SRAM의 어세스 시간 후에 SBus로 ACK[2:0]*를 드라이브하여 전송을 종료하는 것까지를 반복하여 인터럽트 서비스 루틴 2를 완료하는 제 20 단계와; 상기 과정의 결과 SBus는 읽어가야 할 메시지가 있는 RX 영역의 시작 어드레스와 오프셋을 얻는 제 21 단계와; SBus는 RX 영역의 주어진 시작 어드레스로부터 오프셋을 더한 어드레스까지 상기 SBus가 SEL*, AS*, SIZ[2:0], 어드레스(SA[0:27]), 데이터(SD{0:31])을 드라이브하고, Rd가 "1"이 되어 읽기 전송이 되고, SD[0:31]는 SBus의 입력이 되는 것에서부터 TA/ACK 발생기는 상기 SRAM의 어세스 시간 후에 SBus로 ACK[2:0]*를 드라이브하여 전송을 종료하는 것까지를 반복하여 메시지를 읽고 해당 플래그를 "0"으로 클리어하는 제 22 단계와; 상기 MPC860이 DPRAM의 RX 영역의 플래그 검사에서 플래그가 "0"인 부분이 없으면, MPC860은 벡터 레지스터를 어세스하여 SBus로 RX_FULL 인터럽트를 요구할 준비를 하는 23 단계와; MPC860이 CS6*, WE[3:0]*, MA[31:0](어드레스), MD[31:0](데이터)을 드라이브하여 벡터 레지스터에 RX_FULL 인터럽트를 쓴 후, 상기 WE[3:0]*를 드라이브시켜 쓰기 전송으로 하고, MD[31:0]는 MPC860의 출력으로 하는 제 24 단계와; 상기 벡터 레지스터는 SBus로 SIRQ4*를 드라이브하여 RX_FULL에 대한 인터럽트를 요구한 후 인터럽트를 접수하고, 벡터 레지스터의 인터럽트 벡터를 읽는 동작의 인터럽트 서비스 루틴 1을 시작할 준비를 하는 제 25 단계와; 상기 SBus가 SEL*, AS*, SIZ[2:0], 어드레스(SA[0:27]), 데이터(SD[0:31])를 드라이브하고, Rd가 "1"이 되어 읽기 전송이 되고, SD[0:31]은 SBus의 입력이 되는 것에서부터 상기 SBus가 벡터 레지스터를 클리어하여 인터럽트 서비스 루틴 1을 종료하는 것까지의 과정으로 읽은 인터럽트 벡터의 소스가 RX_FULL임을 확인하는 제 26 단계와; 인터럽트 벡터의 소스가 RX_FULL임을 확인한 후 메시지 읽기를 빨리 수행하여 DPRAM의 RX 영역의 해당 플래그를 "0"으로 클리어한 후 상기 MPC860이 DPRAM의 RX 영역의 플래그 검사로 돌아가는 제 27 단계로 이루어지는 것을 특징으로 하는 측정가능 프로세서 구조 계열의 에스버스와 엠피시860의 통신장치 구현방법
|