SPI로더를 다 만들었습니다. 테스트벤치는 기존 거 고대로 쓰면 됩니다.
우선 SPI데이터 수신 말고 다른 작업을 할 수 있는 클럭 엣지를 벌기 위해 48MHz 마스터 클럭을 24MHz로 반으로 쪼갰습니다. SPI 플래쉬에 쉬프트 레지스터로 커맨드를 쏘고, SPI 플래쉬로부터 들어오는 데이터를 실시간으로 버퍼로 쓰는 듀얼 포트 램에 적재합니다. 그리고 이 버퍼의 데이터를 천천히 내보내지요.
그런데 파형을 시각적으로 보니까 차이가 엄청나더라구요.
위는 128바이트 분량의 데이터를 200kbps로 버블 메모리에서 뽑아내는 파형입니다. 약 5.5ms고, 이것저것 포함한 전체 버블 메모리 액세스 시간은 7.05ms입니다.
왼쪽 밑은 24MHz 클럭에서 Standard SPI 연속 읽기로 128바이트를 뽑아내는 모습입니다. 자기 버블이 5칸을 이동할 시간, 50us(5비트 전송)에 128바이트가 모두 뽑혔습니다.
버블 메모리가 빠르게 버려진 이유가 실감이 갑니다.