VC5402與外部存儲器的接口設計
對FLASH 空間的某一地址進行訪問時,應分為以下幾步:
首先,解析該地址,進行地址分割,低15 位為頁內地址,高3 位作為頁選擇地址;
其次,把頁選擇地址用PORTW 命令送到所分配的I/ O空間PA 中,等選通信號使能后,頁地址就在所選存儲器的高端地址線上;
最后,使用訪問數據的指令。由于VC5402 的數據是16 位的,因此在調用數據指令時,需要16 位的數據。這里,低15 位來自所要訪問的地址的低15 位,最高位補零。
要對Flash 存儲器的高端進行訪問,必須先對CPLD送數。如要尋址70000 H 存儲單元時,假定AR3 輔助寄存器指向某一存儲單元,CPLD 映射在VC5402 I/ O 空間的地址為PA ,其大致操作如下:
ST # 07H , *AR3
PORTW * AR3 ,PA
這樣,CPLD 充當的鎖存器將111 這3 位數給鎖存住,在選通FLASH 時,將數據111 送至FLASH 的A15~A17端,然后再對DSP 存儲器的地址0000 H 進行讀寫操作即可。
DSP 的擴展I/ O 端口
VC5402 僅有這2 個通用I/ O 引腳往往是不夠的,DSP 為了一些特殊的需要提供了多個片上設備,比如3 個多功能串口、HPI 接口等。這些片上設備在系統(tǒng)中并沒有用上,因此可以利用DSP 的擴展功能將這些設備的管腳擴展為通用I/ O 端口供系統(tǒng)使用。比如將HPI 端口的8 位并行數據線擴展為8 位I/ O 端口,用來和CPLD 進行通信,這些I/ O 口的擴展是通過對DSP 的相關寄存器進行相應的設置來實現的。
為了實現DSP 和CPLD 之間的交互,將HPI 的數據線用作通用I/ O 端口實現了VC5402 I/ O 口的擴展。HPI數據線擴展為通用I/ O 口的具體方法:在HPI 接口不允許,即在復位時HPIENA 引腳為低電平的情況下,使用2 個存儲器映射寄存器(通用I/ O 控制寄存器GPIOCR 和通用I/ O 狀態(tài)寄存器GPIOSR) 來控制HPI 數據引腳的輸入輸出。GPIOCR 和GPIOSR 在DSP 的物理地址分別是003CH 和003DH。
如要從擴展的HPI 口輸出數據40 H ,需要進行以下3 步操作:
第一步:在復位時,將HPIENA 引腳置為低電平;
第二步:將通用I/ O 控制寄存器GPIOCR 的值設置為0x00FF ;
第三步:將通用I/ O 狀態(tài)寄存器GPIOSR 的相應位設置為01000000 ,即40 H。
實現的程序代碼如下:
STM # 0x003C ,AR3 ; 選中控制寄存器
ST # 0x00FF , *AR3 ; 將HPI數據端置為輸出狀態(tài)
STM # 0x003D ,AR3 ; 選中狀態(tài)寄存器
ST # 0x0040 , *AR3 ; 輸出數據40H
結 語
利用CPLD 實現VC5402 的存儲器空間擴展,大大簡化了硬件電路的設計,編程靈活;調試時,只需對CPLD 電路進行調試,簡單方便,此方案可以推廣到其他便攜式圖像采集處理系統(tǒng)的存儲器擴展中。
評論