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