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