基于CPLD的單片機PCI接口設計
2 PCI設計接口實(shí)現
2.1 CPLD ABEL HDL程序設計
我們針對8位單片機控制PCI以太網(wǎng)卡進(jìn)行了程序設計,CPLD器件選用ALTERA的MAX7000系列。針對以太網(wǎng)卡的特點(diǎn)在邏輯上進(jìn)行了再次簡(jiǎn)化,最張程序將適配進(jìn)EPM7128芯片中,并在實(shí)踐中檢驗通過(guò)。
以太網(wǎng)卡僅支持對配置空間和I/O空間的讀寫(xiě)操作,而且這兩個(gè)空間的地址都可以設置在0xFF以?xún)?,所以可以只用一個(gè)pci_address0寄存器,其它地址都直接設為“0”;如果再限制,每次只往網(wǎng)卡寫(xiě)入一個(gè)字節數據,則可以只用一個(gè)pci_datas0寄存器,其它數值在具體操作時(shí)設成與pci_datas0寄存器的一樣即可。
以下是ABEL HDL主要源碼。其中16dmux是4~16位譯碼器,用于地址譯碼,選通CPLD內的寄存器;8dffe是8位的DFFE;abelcounter是8位移位計數器;mylatch8與mylatch1分別為8位與1位鎖存器,而mylatchc是帶清零1位鎖存器;其它以“my”開(kāi)始的變量都是三態(tài)緩沖器,以“out”開(kāi)始的變量是三態(tài)節點(diǎn),以“e”開(kāi)始的變量是普通節點(diǎn)。這此在程序中不再聲明。
SUBDESIGN abelpci
(
P2[7..3] : INPUT;
READ0 : INPUT
WRITE0 : INPUT;
P0[7..0] : BIDIR;
CLK : INPUT;
TRDY0 : INPUT;
AD[31..] : BIDIR;
CBE[3..0] : BIDIR;
IRDY0 : OUTPUT;
FRAME0 : OUTPUT;
)
VARIABLE
decoder : 16dmux;
mycounter : abelcounter;
pci_c
評論