8位單片機(jī)與以太網(wǎng)控制器RTL8029接口的VHDL設(shè)計(jì)
發(fā)布時(shí)間:2007/4/23 0:00:00 訪問(wèn)次數(shù):561
51系列單片機(jī)是當(dāng)前使用最為廣泛的8位單片機(jī)系列,其豐富的開(kāi)發(fā)資源和較低的開(kāi)發(fā)成本,使51系列單片機(jī)現(xiàn)在以至將來(lái)都仍會(huì)有強(qiáng)大的生命力。在網(wǎng)絡(luò)技術(shù)飛速發(fā)展的今天,實(shí)際工作中有將51系列單片機(jī)系統(tǒng)接入網(wǎng)絡(luò)的需求。由于5 1系列單片機(jī)沒(méi)有集成以太網(wǎng)接口,因此,如何將51系列單片機(jī)系統(tǒng)接入網(wǎng)路是一個(gè)值得探討的課題,其關(guān)鍵就是在硬件上如何實(shí)現(xiàn)單片機(jī)與以太網(wǎng)控制器的接口。本文將討論這一課題。
1 以太網(wǎng)控制器
臺(tái)灣Realtek公司的以太網(wǎng)控制器是一種符合IEEE802.3以太網(wǎng)標(biāo)準(zhǔn)的控制器,有RTL8019、RTL8029和RTL8139等系列。其中RTL8019是ISA總線的,較易與8位MCU實(shí)現(xiàn)接口。RTL8029和RTL8139是PCI總線的,不能直接與8位的MCU接口,需要一個(gè)PCI接口進(jìn)行轉(zhuǎn)接。考慮到目前RTL8029在市場(chǎng)上較容易購(gòu)買(mǎi),故采用RTL8029以太網(wǎng)控制器作為網(wǎng)絡(luò)接口。
RTL8029內(nèi)部已經(jīng)包含有整個(gè)網(wǎng)絡(luò)接口層的協(xié)議 (PHY層和MAC層協(xié)議),因此應(yīng)用起來(lái)較簡(jiǎn)單。用戶不必考慮鏈路控制問(wèn)題,而只需考慮單片機(jī)如何從RTL8029中去讀TCP/IP協(xié)議的數(shù)據(jù)即可。
PCI總線信號(hào)有3.3V標(biāo)準(zhǔn)和5V標(biāo)準(zhǔn),信號(hào)線眾多,但是并不是所有的PCI設(shè)備都使用全部的PCI接口信號(hào),實(shí)際上只使用它們需要的即可。RTL8029AS以太網(wǎng)控制器遵循5V標(biāo)準(zhǔn),并且只使用了PCI總線信號(hào)中的以下部分:
AD[31:0]——數(shù)據(jù)信號(hào)復(fù)用總線。
FRAME——幀周期信號(hào),由當(dāng)前主設(shè)備驅(qū)動(dòng),表示一次訪問(wèn)的開(kāi)始和持續(xù)時(shí)間。
IRDY——主設(shè)備準(zhǔn)備好信號(hào)。
TRDY——從設(shè)備準(zhǔn)備好信號(hào)。
C/BE——總線命令和字節(jié)使能復(fù)用信號(hào)。地址期是總線命令,數(shù)據(jù)期是字節(jié)使能。
IDSEL——初始化設(shè)備選擇信號(hào)。在參數(shù)配置讀寫(xiě)傳輸期間,用作片選。對(duì)于只有一個(gè)PCI設(shè)備的情況,它可以總接高電平。
RST——復(fù)位信號(hào)。
CLK——系統(tǒng)時(shí)鐘信號(hào),頻率范圍DC~33MHz。以上信號(hào)都在CLK的上升沿有效。
INTA——中斷請(qǐng)求信號(hào),RTL8029數(shù)據(jù)準(zhǔn)備好后可以用來(lái)向主控制器發(fā)出中斷。
DEVSEL——設(shè)備選擇信號(hào),表明驅(qū)動(dòng)它的設(shè)備已成當(dāng)前訪問(wèn)的設(shè)備,由于在單片機(jī)系統(tǒng)中,RTL8029是單一的PCI設(shè)備,因此該信號(hào)可以不用。
2 PCI接口設(shè)計(jì)
在以太網(wǎng)控制器的接口信號(hào)中,除地址數(shù)據(jù)總線是雙向的外,TRDY信號(hào)由以太網(wǎng)控制器產(chǎn)生,方向?yàn)閺囊蕴W(wǎng)控制器至PCI接口;其余信號(hào)都由接口部分產(chǎn)生,方向是從PCI接口至以太網(wǎng)控制器。
接口設(shè)計(jì)的思路是:可將PCI接口當(dāng)作單片機(jī)的外部存儲(chǔ)器看待,單片機(jī)以讀寫(xiě)外部存儲(chǔ)器的時(shí)序?qū)CI接口進(jìn)行讀寫(xiě),再由PCI接口將這種讀寫(xiě)操作時(shí)序轉(zhuǎn)換成PCI時(shí)序?qū)σ蕴W(wǎng)控制器進(jìn)行操作。
單片機(jī)在進(jìn)行外部存儲(chǔ)器操作時(shí)用到的信號(hào)有PO口、P2口、ALE以及RD和WR信號(hào)。其中,P0口為地址(低8位)/數(shù)據(jù)復(fù)用,P2口為高8位地址信號(hào);ALE為地址鎖存信號(hào),為高電平時(shí)將P0口的值鎖存到低8位數(shù)據(jù)線上;RD和WR為讀寫(xiě)有效信號(hào),低電平有效。因此,PCI接口實(shí)際上是起到一個(gè)從8位單片機(jī)讀寫(xiě)時(shí)序到32位PCI讀寫(xiě)時(shí)序轉(zhuǎn)換的作用,原理框圖如圖1所示,訪目時(shí)序如圖2所示。
在圖2中,可以完成對(duì)PCI設(shè)備的配置訪問(wèn)與I/O讀寫(xiě)訪問(wèn),只要有這兩種訪問(wèn)就完全可以實(shí)現(xiàn)單片機(jī)對(duì)RTL8029的操作。IDSEL信號(hào)只是在配置訪問(wèn)中才起作月,在I/O訪問(wèn)中不使用該信號(hào)。
FRAME有效后的第一個(gè)時(shí)鐘前沿是地址期的開(kāi)始。此時(shí)在AD總線上傳送地址,在C/BE總線上傳送命令。IRDY有效后即為數(shù)據(jù)期,此時(shí)在AD總線上傳送數(shù)據(jù),在C/BE總線上傳送字節(jié)使能。但數(shù)據(jù)的傳輸是在IRDY和TRDY同時(shí)有效的時(shí)鐘前沿進(jìn)行。字節(jié)使能指明此時(shí)32位數(shù)據(jù)線上的數(shù)據(jù)中哪一個(gè)數(shù)據(jù)字節(jié)是有效的。
讀配置的過(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)中可以不
51系列單片機(jī)是當(dāng)前使用最為廣泛的8位單片機(jī)系列,其豐富的開(kāi)發(fā)資源和較低的開(kāi)發(fā)成本,使51系列單片機(jī)現(xiàn)在以至將來(lái)都仍會(huì)有強(qiáng)大的生命力。在網(wǎng)絡(luò)技術(shù)飛速發(fā)展的今天,實(shí)際工作中有將51系列單片機(jī)系統(tǒng)接入網(wǎng)絡(luò)的需求。由于5 1系列單片機(jī)沒(méi)有集成以太網(wǎng)接口,因此,如何將51系列單片機(jī)系統(tǒng)接入網(wǎng)路是一個(gè)值得探討的課題,其關(guān)鍵就是在硬件上如何實(shí)現(xiàn)單片機(jī)與以太網(wǎng)控制器的接口。本文將討論這一課題。
1 以太網(wǎng)控制器
臺(tái)灣Realtek公司的以太網(wǎng)控制器是一種符合IEEE802.3以太網(wǎng)標(biāo)準(zhǔn)的控制器,有RTL8019、RTL8029和RTL8139等系列。其中RTL8019是ISA總線的,較易與8位MCU實(shí)現(xiàn)接口。RTL8029和RTL8139是PCI總線的,不能直接與8位的MCU接口,需要一個(gè)PCI接口進(jìn)行轉(zhuǎn)接?紤]到目前RTL8029在市場(chǎng)上較容易購(gòu)買(mǎi),故采用RTL8029以太網(wǎng)控制器作為網(wǎng)絡(luò)接口。
RTL8029內(nèi)部已經(jīng)包含有整個(gè)網(wǎng)絡(luò)接口層的協(xié)議 (PHY層和MAC層協(xié)議),因此應(yīng)用起來(lái)較簡(jiǎn)單。用戶不必考慮鏈路控制問(wèn)題,而只需考慮單片機(jī)如何從RTL8029中去讀TCP/IP協(xié)議的數(shù)據(jù)即可。
PCI總線信號(hào)有3.3V標(biāo)準(zhǔn)和5V標(biāo)準(zhǔn),信號(hào)線眾多,但是并不是所有的PCI設(shè)備都使用全部的PCI接口信號(hào),實(shí)際上只使用它們需要的即可。RTL8029AS以太網(wǎng)控制器遵循5V標(biāo)準(zhǔn),并且只使用了PCI總線信號(hào)中的以下部分:
AD[31:0]——數(shù)據(jù)信號(hào)復(fù)用總線。
FRAME——幀周期信號(hào),由當(dāng)前主設(shè)備驅(qū)動(dòng),表示一次訪問(wèn)的開(kāi)始和持續(xù)時(shí)間。
IRDY——主設(shè)備準(zhǔn)備好信號(hào)。
TRDY——從設(shè)備準(zhǔn)備好信號(hào)。
C/BE——總線命令和字節(jié)使能復(fù)用信號(hào)。地址期是總線命令,數(shù)據(jù)期是字節(jié)使能。
IDSEL——初始化設(shè)備選擇信號(hào)。在參數(shù)配置讀寫(xiě)傳輸期間,用作片選。對(duì)于只有一個(gè)PCI設(shè)備的情況,它可以總接高電平。
RST——復(fù)位信號(hào)。
CLK——系統(tǒng)時(shí)鐘信號(hào),頻率范圍DC~33MHz。以上信號(hào)都在CLK的上升沿有效。
INTA——中斷請(qǐng)求信號(hào),RTL8029數(shù)據(jù)準(zhǔn)備好后可以用來(lái)向主控制器發(fā)出中斷。
DEVSEL——設(shè)備選擇信號(hào),表明驅(qū)動(dòng)它的設(shè)備已成當(dāng)前訪問(wèn)的設(shè)備,由于在單片機(jī)系統(tǒng)中,RTL8029是單一的PCI設(shè)備,因此該信號(hào)可以不用。
2 PCI接口設(shè)計(jì)
在以太網(wǎng)控制器的接口信號(hào)中,除地址數(shù)據(jù)總線是雙向的外,TRDY信號(hào)由以太網(wǎng)控制器產(chǎn)生,方向?yàn)閺囊蕴W(wǎng)控制器至PCI接口;其余信號(hào)都由接口部分產(chǎn)生,方向是從PCI接口至以太網(wǎng)控制器。
接口設(shè)計(jì)的思路是:可將PCI接口當(dāng)作單片機(jī)的外部存儲(chǔ)器看待,單片機(jī)以讀寫(xiě)外部存儲(chǔ)器的時(shí)序?qū)CI接口進(jìn)行讀寫(xiě),再由PCI接口將這種讀寫(xiě)操作時(shí)序轉(zhuǎn)換成PCI時(shí)序?qū)σ蕴W(wǎng)控制器進(jìn)行操作。
單片機(jī)在進(jìn)行外部存儲(chǔ)器操作時(shí)用到的信號(hào)有PO口、P2口、ALE以及RD和WR信號(hào)。其中,P0口為地址(低8位)/數(shù)據(jù)復(fù)用,P2口為高8位地址信號(hào);ALE為地址鎖存信號(hào),為高電平時(shí)將P0口的值鎖存到低8位數(shù)據(jù)線上;RD和WR為讀寫(xiě)有效信號(hào),低電平有效。因此,PCI接口實(shí)際上是起到一個(gè)從8位單片機(jī)讀寫(xiě)時(shí)序到32位PCI讀寫(xiě)時(shí)序轉(zhuǎn)換的作用,原理框圖如圖1所示,訪目時(shí)序如圖2所示。
在圖2中,可以完成對(duì)PCI設(shè)備的配置訪問(wèn)與I/O讀寫(xiě)訪問(wèn),只要有這兩種訪問(wèn)就完全可以實(shí)現(xiàn)單片機(jī)對(duì)RTL8029的操作。IDSEL信號(hào)只是在配置訪問(wèn)中才起作月,在I/O訪問(wèn)中不使用該信號(hào)。
FRAME有效后的第一個(gè)時(shí)鐘前沿是地址期的開(kāi)始。此時(shí)在AD總線上傳送地址,在C/BE總線上傳送命令。IRDY有效后即為數(shù)據(jù)期,此時(shí)在AD總線上傳送數(shù)據(jù),在C/BE總線上傳送字節(jié)使能。但數(shù)據(jù)的傳輸是在IRDY和TRDY同時(shí)有效的時(shí)鐘前沿進(jìn)行。字節(jié)使能指明此時(shí)32位數(shù)據(jù)線上的數(shù)據(jù)中哪一個(gè)數(shù)據(jù)字節(jié)是有效的。
讀配置的過(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)中可以不
熱門(mén)點(diǎn)擊
- 通用串行總線(USB)原理及接口設(shè)計(jì)
- 零延時(shí)RS一485接口電路的設(shè)計(jì)與應(yīng)用
- USB-GPIB控制器的硬件電路設(shè)計(jì)
- 32段LCD驅(qū)動(dòng)器AY0438及其與單片機(jī)的
- DVB-C視頻傳輸接口ASI的實(shí)現(xiàn)
- 數(shù)字傳感器MPXY8020A與MSP430的
- 利用FPGA平臺(tái)解決接口的總線速度瓶頸
- 藍(lán)牙模塊和OMAP5910的接口技術(shù)
- 智能儀表的CAN接口設(shè)計(jì)
- 一種基于CPLD的單片機(jī)與PCI接口設(shè)計(jì)解決
推薦技術(shù)資料
- CV/CC InnoSwitch3-AQ 開(kāi)
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門(mén)信號(hào)調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究