位單片機(jī)與以太網(wǎng)控制器RTL8029接口的VHDL設(shè)計(jì)
讀配置的過(guò)程:首先送地址,送命令(命令值為1010B)和字節(jié)使能,再讀配置空間中的內(nèi)容。
寫(xiě)配置的過(guò)程:首先送地址,送命令(命令值為101lB)和字節(jié)使能,再送配置數(shù)據(jù)。
讀I/O的過(guò)程:首先送地址,送命令(命令值為0010B)和字節(jié)使能,再讀I/O空間中的內(nèi)容。
寫(xiě)I/O的過(guò)程:首先送地址,送命令(命令值為001lB)和字節(jié)使能,再送數(shù)據(jù)。
在I/O訪問(wèn)中,AD[1:O]兩位有特殊要求,需要與C/BE[3:0]相配合。當(dāng)C/BEO有效時(shí),AD[1:O]必須為00,當(dāng)C/BE3有效時(shí),AD[1:0]必須為11。在具體訪問(wèn)中,每當(dāng)一個(gè)設(shè)備地址譯碼選中后,便要檢查字節(jié)使能信號(hào)是否與AD[1:0]相符。如果二者矛盾,則整個(gè)訪問(wèn)將無(wú)法完成。因此,寫(xiě)單片機(jī)軟件需要參考PCI總線協(xié)議中關(guān)于這一部分的內(nèi)容,才能正確操作以太網(wǎng)控制器。
總線命令/字節(jié)使能(C/BE)寄存器的地址有效后的一個(gè)時(shí)鐘周期內(nèi),F(xiàn)RAME信號(hào)應(yīng)該有效,表示地址期開(kāi)始,C/BE[3:0]總線上為總線命令,地址期可以只持續(xù)一個(gè)周期,然后立即進(jìn)入數(shù)據(jù)期。在單片機(jī)系統(tǒng)中可以不考慮去支持復(fù)雜的PCI數(shù)據(jù)連發(fā),進(jìn)入數(shù)據(jù)期后,F(xiàn)RAME信號(hào)應(yīng)立即拉回高電平,此時(shí)C/BE[3:0]總線上為字節(jié)使能。因此FRAME信號(hào)可以用總線命令/字節(jié)使能寄存器的地址信號(hào)來(lái)產(chǎn)生。
IRDY信號(hào)在數(shù)據(jù)期才有效,因此IRDY也可以由總線命令/字節(jié)使能寄存器的地址信號(hào)來(lái)產(chǎn)生或由FRAME信號(hào)來(lái)產(chǎn)生。
IDSEL信號(hào)只與配置訪問(wèn)有關(guān),因此可以通過(guò)總線命令的命令字來(lái)產(chǎn)生。在I/O訪問(wèn)時(shí)。命令字的最高位bit3為O;在配置訪問(wèn)時(shí)。命令字的最高位bit3為l。因此,可以用該位來(lái)產(chǎn)生IDSEL信號(hào)。
另外前面已說(shuō)明,可將PCI接口當(dāng)作外部存儲(chǔ)器來(lái)訪問(wèn),因此,要從8位數(shù)據(jù)轉(zhuǎn)換成32位的數(shù)據(jù)。PCI接口中需要設(shè)計(jì)以下寄存器:
寄存器0,對(duì)應(yīng)于32位數(shù)據(jù)/地址總線的AD[7:0],用于寫(xiě);
寄存器1,對(duì)應(yīng)于32位數(shù)據(jù)/地址總線的AD[15:8],用于寫(xiě);
寄存器2,對(duì)應(yīng)于32位數(shù)據(jù)/地址總線的AD[23:16],用于寫(xiě);
寄存器3,對(duì)應(yīng)于32位數(shù)據(jù)/地址總線的AD[31:24],用于寫(xiě):
寄存器4,對(duì)應(yīng)于32位數(shù)據(jù)/地址總線的AD[7:O],用于讀;
寄存器5,對(duì)應(yīng)于32位數(shù)據(jù)/地址總線的.AD[1 5:8],用于讀;
寄存器6,對(duì)應(yīng)于32位數(shù)據(jù)/地址總線的AD[23:16],用于讀;
寄存器7,對(duì)應(yīng)于32位數(shù)據(jù)/地址總線的AD[31:24],用于讀;
總線命令/字節(jié)使能寄存器,對(duì)應(yīng)于C/BE[3:0];
復(fù)位寄存器,用于對(duì)RTL8029AS的硬件復(fù)位操作。
根據(jù)以上分析,得PCI接口原理框圖,如圖3所示。
3 接口的VHDL實(shí)現(xiàn)
PCI接口的VHDL代碼見(jiàn)本刊網(wǎng)站:www.dpj.com.cn。
以上代碼在Qaartus II下編譯并綜合,占用149個(gè)宏單元的資源,可選用CPLD器件MAx7l60來(lái)完成。
4 結(jié)語(yǔ)
本文所闡述的設(shè)計(jì)方法,已成功應(yīng)用在無(wú)線電監(jiān)測(cè)系統(tǒng)的遠(yuǎn)程控制中,通過(guò)5l單片機(jī)系統(tǒng)接入以太網(wǎng),實(shí)現(xiàn)了在網(wǎng)絡(luò)上對(duì)遠(yuǎn)程機(jī)房設(shè)備的無(wú)人監(jiān)控。
評(píng)論