2007年12月2日 星期日

ESD

今天晚上玩了一下 那台Creator,我想這幾天都會摸一下這台玩意
對memory map I/O有些基礎認識( 果然從實做中學習是很棒的 )
FPGA <=> Creator <=> PXA270
slave bus master bus
FPGA有相對應的pin接上Creator的slot, 每個pin都有其相對應的功能
#define PS2_DATA (*(volatile unsigned short *)(FPGA_IO_BASE+(0x0100<<1)))
#define A2D_DATA (*(volatile unsigned short *)(FPGA_IO_BASE+(0x0200<<1)))
像這種用法常會出現在driver裡面
FPGA_IO_BASE是實體位址( 沒有在mmu的管轄下 )
FPGA的IO被map到這個位址, 當你對這區記憶體做存取時, 等於在透過slave bus對FPGA做存取
slave bus主要的部份為:ADDR, DATA , CONTROL
ex:
PS2_DATA = 2;
這一行c code藏的東西可多了
記憶體位置 =0x0100
資料 = 2
控制 = 寫入
當FPGA對這個寫入動作做判別時是利用記憶體位置, 例如0x100是要將資料做運算, 0x200是要將資料傳送出去 之類的
還有
int a;
a = PS2_DATA;
這個就比較玄, 他是送出讀取的控制, FPGA必須放資料然後由CPU讀取。
記憶體位置 = 0x0100
資料 =
控制 = 讀去
FPGA必須判斷記憶體位址,然後決定要放什麼資料到DATA中
我在猜DATA會mapped到記憶體位置下的連續位址
另外還有中斷處理
FPGA會透過另一個訊號 xInt中斷cpu, cpu受到中斷, 會檢查這個中斷有沒有register在table中
在尋找table的Interrupt Handler
..還在研究中

沒有留言: