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