總體介紹
它有一個一般處理接口,一個10/100M自適應的PHY和4K DWORD值的SRAM。它的目的是在低功耗和高性能進程的3.3V與5V的支持寬容,DM9000還提供了介質無關的接口,來連線所有提供支持介質無關接口功能的家用電話線網路設備或其他收發器。該DM9000支持8位,16位和32 -位接口訪問內部存儲器,以支持不同的處理器。DM9000物理協定層接口完全支持使用10MBps下3類、4類、5類非禁止雙絞線和100MBps下5類非禁止雙絞線。這是完全符合IEEE 802.3u規格。它的自動協調功能將自動完成配置以最大限度地適合其線路頻寬。還支持IEEE 802.3x全雙工流量控制。這個工作裡面DM9000是非常簡單的,所以用戶可以容易的移植任何系統下的連線埠驅動程式。
特點
支持處理器讀寫內部存儲器的數據操作命令以 位元組/ 字/ 雙字的長度進行
集成10/100M自適應收發器
支持介質無關接口
支持背壓模式半雙工流量控制模式
IEEE802.3x流量控制的全雙工模式
支持喚醒幀,鏈路狀態改變和遠程的喚醒
4K雙字SRAM
支持自動載入EEPROM裡面生產商ID和產品ID
支持4個通用輸入輸出口
超低功耗模式
功率降低模式
電源故障模式
可選擇1:1 YL18-2050S,YT37-1107S 或5:4變壓比例的變壓器降低格外功率
兼容3.3v和5.0v輸入輸出電壓
100腳CMOS LQFP封裝工藝
引腳描述
I=輸入 O=輸出 I/O=輸入/輸出 O/D=漏極開路 P=電源 LI=復位鎖存輸入 #=普遍低電位
介質無關接口引腳
引腳號 | 引腳名 | I/O | 功能描述 |
37 | LINK_I | I | 外部介質無關接口器件連線狀態 |
38、39、40、41 | RXD [3:0] | I | 外部介質無關接口接收數據 4位 半位元組輸入(同步於接收時鐘) |
43 | CRS | I/O | 外部介質無關接口的載波檢測 |
44 | COL | I/O | 外部介質無關接口的衝突檢測,輸出到外部設備 |
45 | RX_DV | I | 外部介質無關接口數據有效信號 |
46 | RX_ER | I | 外部介質無關接口接收錯誤 |
47 | RX_CLK | I | 外部介質無關接口接收時鐘 |
49 | TX_CLK | I/O | 外部介質無關接口傳送時鐘 |
50~53 | TXD[3:0] | O | 外部介質無關接口傳送數據低4位輸出 TXD[2:0]決定內部存儲空間基址:TXD [2:0]) * 10H + 300H |
54 | MDIO | I/O | 外部介質無關接口串列數據通信 |
57 | MDC | O | 外部介質無關串列數據通信口時鐘,且與中斷引腳有關 該引腳高電平時候,中斷引腳低電平有效;否則高有效 |
注意:以上介質無關連線埠都內部自帶60K 歐姆的下拉電阻
處理器接口引腳
1 | IOR# | I | 處理器讀命令 低電平有效,極性能夠被EEPROM修改,詳細請參考對EEPROM內容的描述 |
2 | IOW# | I | 處理器寫命令 低電平有效,同樣能修改極性 |
3 | AEN# | I | 晶片選擇,低電平有效 |
4 | IOWAIT | O | 處理器命令就緒 當上一指令沒有結束,該引腳電平拉低表示當前指令需要等待 |
14 | RST | I | 硬體復位信號,高電平有效復位 |
1~6 82~89 | SD0~15 | I/O | 0~15位的數據地址復用匯流排,由CMD引腳決定當期訪問類型 |
93~98 | SA4~9 | I | 地址線4~9;僅作晶片選擇信號 (SA4~9:TXD0~2 ,011)被選中 |
92 | CMD | I | 訪問類型 高電平是訪問數據連線埠;低電平是訪問地址連線埠 |
91 | IO16 | O | 字命令標誌,默認低電平有效 當訪問外部數據存儲器是字或雙字寬度時,被置位 |
100 | INT | O | 中斷請求信號 高電平有效,極性能修改 |
37~53 56 | SD31~16 | I/O | 雙字模式,高16位數據引腳 |
57 | IO32 | O | 雙字命令標誌,默認低電平有效 |
注意:以上引腳除去SD8,SD9和IO16,都內部自帶60K 歐姆的下拉電阻
EEPROM引腳
64 | EEDI | I | 數據輸入引腳 |
65 | EEDO | I/O | EEPROM數據引腳 與WAKEUP引腳一起定義訪問數據存儲器的匯流排寬度 WAKEUP EEDO 匯流排寬度 0 0 16位 0 1 32位 1 0 8位 1 1 未定義 |
66 | EECK | I | 時鐘信號 |
67 | EECS | I/O | 片選 也做LED模式選擇引腳 高電平時,LED模式1,否則模式0 |
注意: EECS EECK EEDO 引腳都內部自帶 60K歐姆下拉電阻
時鐘引腳
21 | X2_25M | O | 25M晶振輸出 |
22 | X1_25M | I | 25M晶振輸入 |
59 | CLK20MO | O | 20M晶振再生輸出給外部介質無關設備,自帶60K歐姆下拉電阻 |
LED引腳
60 | SPEED100# | O | 低電平指示100M頻寬指示,高電平指示10M頻寬 |
61 | DUP# | O | 全雙工指示LED LED模式0時,低電平顯示工作在10M頻寬,或在100M頻寬浮動 |
62 | LINK&ACT# | O | 連線LED,在模式0時,只作物理層的載波監聽檢測連線狀態 |
10/100 物理層與光纖接口
24 | SD | I | 光纖信號檢測 PECL電平信號,顯示光纖接收是否有效 |
25 | DGGND | P | 帶隙地信號線 |
26 | BGRES | I/O | 帶隙引腳 |
27 | AVDD | P | 帶隙與電源保護環 |
28 | AVDD | P | 接收連線埠電源 |
29 | RXI+ | I | 物理層接收端的正極 |
30 | RXI- | I | 物理層接收端的負極 |
31 | AGND | P | 接收連線埠地 |
32 | AGND | P | 傳送連線埠地 |
33 | TXO+ | O | 物理層傳送連線埠正極 |
34 | TXO- | O | 傳送連線埠負極 |
35 | AVDD | P | 物理層傳送連線埠負極 |
各種其他功能引腳
16~19 | TEST1~4 | I | 工作模式 Test1~4(1,1,0,0)正常工作狀態 |
48 | TEST5 | I | 必須接地 |
68~69 | GPIO0~3 | I/O | 通用I/O連線埠 通用連線埠控制暫存器和通用連線埠暫存器能編程該系列引腳 GPIO0默認輸出為高來關閉物理層和其他外部介質無關器件 GPIO1~3默認為輸入引腳 |
78 | LINK_O | O | 電纜連線狀態顯示輸出,高電平有效 |
79 | WAKEUP | O | 流出一個喚醒信號當喚醒事件發生 內置60K歐姆的下拉電阻 |
80 | PW_RST# | I | 上電復位 低電平激活DM9000的重新初始化,5us後初始化當該引腳測試到電平變化 |
74,75,77 | NC | 無用 |
電源引腳
5,20,36,55, 72,90,73 | DVDD | P | 數字電源 |
15,23,42,58 63,81,99,76 | DGND | P | 數字地 |
內部暫存器
DM9000(A)包含一系列可被訪問的控制狀態暫存器,這些暫存器是位元組對齊的,他們在硬體或軟體復位時被設定成初始值。
以下為DM9000的暫存器功能詳解:
NCR (00H):網路控制暫存器(Network Control Register )
7:EXT_PHY:1選擇外部PHY,0選擇內部PHY,不受軟體復位影響。
6:WAKEEN:事件喚醒使能,1使能,0禁止並清除事件喚醒狀態,不受軟體復位影響。
5:保留。
4:FCOL:1強制衝突模式,用於用戶測試。
3:FDX:全雙工模式。內部PHY模式下唯讀,外部PHY下可讀寫。
2-1:LBK:迴環模式(Loopback)00通常,01MAC內部迴環,10內部PHY 100M模式數字迴環,11保留。
0:RST:1軟體復位,10us後自動清零。
NSR (01H):網路狀態暫存器(Network Status Register )
7:SPEED:媒介速度,在內部PHY模式下,0為100Mbps,1為10Mbps。當LINKST=0時,此位不用。
6:LINKST:連線狀態,在內部PHY模式下,0為連線失敗,1為已連線。
5:WAKEST:喚醒事件狀態。讀取或寫1將清零該位。不受軟體復位影響。
4:保留。
3:TX2END:TX(傳送)數據包2完成標誌,讀取或寫1將清零該位。數據包指針2傳輸完成。
2:TX2END:TX(傳送)數據包1完成標誌,讀取或寫1將清零該位。數據包指針1傳輸完成。
1:RXOV:RX(接收)FIFO(先進先出快取)溢出標誌。
0:保留。
TCR (02H):傳送控制暫存器(TX Control Register)
7:保留。
6:TJDIS:Jabber傳輸使能。1使能Jabber傳輸定時器(2048位元組),0禁止。
注釋:Jabber是一個有CRC錯誤的長幀(大於1518byte而小於6000byte)或是數據包重組錯誤。原因:它可能導致網路丟包。多是由於作站有硬體或軟體錯誤。
5:EXCECM:額外衝突模式控制。0當額外的衝突計數多於15則終止本次數據包,1始終嘗試發傳送本次數據包。
4:PAD_DIS2:禁止為數據包指針2添加PAD。
3:CRC_DIS2:禁止為數據包指針2添加CRC校驗。
2:PAD_DIS2:禁止為數據包指針1添加PAD。
1:CRC_DIS2:禁止為數據包指針1添加CRC校驗。
0:TXREQ:TX(傳送)請求。傳送完成後自動清零該位。
TSR_I (03H):數據包指針1的傳送狀態暫存器1(TX Status Register I)
7:TJTO:Jabber傳輸逾時。該位置位表示由於多於2048位元組數據被傳輸而導致數據幀被截掉。
6:LC:載波信號丟失。該位置位表示在幀傳輸時發生紅載波信號丟失。在內部迴環模式下該位無效。
5:NC:無載波信號。該位置位表示在幀傳輸時無載波信號。在內部迴環模式下該位無效。
4:LC:衝突延遲。該位置位表示在64位元組的衝突視窗後又發生衝突。
3:COL:數據包衝突。該位置位表示傳輸過程中發生衝突。
2:EC:額外衝突。該位置位表示由於發生了第16次衝突(即額外衝突)後,傳送被終止。
1-0:保留。
TSR_II (04H):數據包指針2的傳送狀態暫存器2(TX Status Register II)
同TSR_I
略。
RCR (05H):接收控制暫存器(RX Control Register )
7:保留。
6:WTDIS:看門狗定時器禁止。1禁止,0使能。
5:DIS_LONG:丟棄長數據包。1為丟棄數據包長度超過1522位元組的數據包。
4:DIS_CRC:丟棄CRC校驗錯誤的數據包。
3:ALL:忽略所有多點傳送。
2:RUNT:忽略不完整的數據包。
1:PRMSC:混雜模式(Promiscuous Mode)
0:RXEN:接收使能。
RSR (06H):接收狀態暫存器(RX Status Register )
7:RF:不完整數據幀。該位置位表示接收到小於64位元組的幀。
6:MF:多點傳送幀。該位置位表示接收到幀包含多點傳送地址。
5:LCS:衝突延遲。該位置位表示在幀接收過程中發生衝突延遲。
4:RWTO:接收看門狗定時溢出。該位置位表示接收到大於2048位元組數據幀。
3:PLE:物理層錯誤。該位置位表示在幀接收過程中發生物理層錯誤。
2:AE:對齊錯誤(Alignment)。該位置位表示接收到的幀結尾處不是位元組對齊,即不是以位元組為邊界對齊。
1:CE:CRC校驗錯誤。該位置位表示接收到的幀CRC校驗錯誤。
0:FOE:接收FIFO快取溢出。該位置位表示在幀接收時發生FIFO溢出。
ROCR (07H):接收溢出計數暫存器(Receive Overflow Counter Register)
7:RXFU:接收溢出計數器溢出。該位置位表示ROC(接收溢出計數器)發生溢出。
6-0:ROC:接收溢出計數器。該計數器為靜態計數器,指示FIFO溢出後,當前接收溢出包的個數。
BPTR (08H):背壓門限暫存器(Back Pressure Threshold Register)
7-4:BPHW:背壓門限最高值。當接收SRAM空閒空間低於該門限值,則MAC將產生一個擁擠狀態。1=1K位元組。默認值為3H,即3K位元組空閒空間。不要超過SRAM大小。
3-0:JPT:擁擠狀態時間。默認為200us。0000 為5us,0001為10us,0010為15us,0011為25us,0100為50us,0101為100us,0110為150us,0111為 200us,1000為250us,1001為300us,1010為350us,1011為400us,1100為450us,1101為500us, 1110為550us,1111為600us。
FCTR (09H):溢出控制門限暫存器(Flow Control Threshold Register)
7-4:HWOT:接收FIFO快取溢出門限最高值。當接收SRAM空閒空間小於該門限值,則傳送一個暫停時間(pause_time)為FFFFH的暫停包。若該值為0,則無接收空閒空間。1=1K位元組。默認值為3H,即3K位元組空閒空間。不要超過SRAM大小。
3-0:LWOT:接收FIFO快取溢出門限最低值。當接收SRAM空閒空間大於該門限值,則傳送一個暫停時間(pause_time)為0000H的暫停包。當溢出門限最高值的暫停包傳送之後,溢出門限最低值的暫停包才有效。默認值為8K位元組。不要超過SRAM大小。
RTFCR (0AH):接收/傳送溢出控制暫存器(RX/TX Flow Control Register)
7:TXP0:1傳送暫停包。傳送完成後自動清零,並設定TX暫停包時間為0000H。
6:TXPF:1傳送暫停包。傳送完成後自動清零,並設定TX暫停包時間為FFFFH。
5:TXPEN:強制傳送暫停包使能。按溢出門限最高值使能傳送暫停包。
4:BKPA:背壓模式。該模式僅在半雙工模式下有效。當接收SRAM超過BPHW並且接收新數據包時,產生一個擁擠狀態。
3:BKPM:背壓模式。該模式僅在半雙工模式下有效。當接收SRAM超過BPHW並數據包DA匹配時,產生一個擁擠狀態。
2:RXPS:接收暫停包狀態。唯讀清零允許。
1:RXPCS:接收暫停包當前狀態。
0:FLCE:溢出控制使能。1設定使能溢出控制模式。
EPCR/PHY_CR (0BH):EEPROM和PHY控制暫存器(EEPROM & PHY Control Register)
7-6:保留。
5:REEP:重新載入EEPROM。驅動程式需要在該操作完成後清零該位。
4:WEP:EEPROM寫使能。
3:EPOS:EEPROM或PHY操作選擇位。0選擇EEPROM,1選擇PHY。
2:ERPRR:EEPROM讀,或PHY暫存器讀命令。驅動程式需要在該操作完成後清零該位。
1:ERPRW:EEPROM寫,或PHY暫存器寫命令。驅動程式需要在該操作完成後清零該位。
0:ERRE:EEPROM或PHY的訪問狀態。1表示EEPROM或PHY正在被訪問。
EPAR/PHY_AR (0CH):EEPROM或PHY地址暫存器(EEPROM & PHY Address Register)
7-6:PHY_ADR:PHY地址的低兩位(bit1,bit0),而PHY地址的bit[4:2]強制為000。如果要選擇內部PHY,那么此2位強制為01,實際套用中要強制為01。
5-0:EROA:EEPROM字地址或PHY暫存器地址。
EPDRL/PHY_DRL (0DH):EEPROM或PHY數據暫存器低半位元組(EEPROM & PHY Low Byte Data Register)
7-0:EE_PHY_L
EPDRL/PHY_DRH (0EH):EEPROM或PHY數據暫存器高半位元組(EEPROM & PHY High Byte Data Register)
7-0:EE_PHY_H
WUCR (0FH):喚醒控制暫存器(Wake Up Control Register)
7-6:保留。
5:LINKEN:1使能“連線狀態改變”喚醒事件。該位不受軟體復位影響。
4:SAMPLEEN:1使能“Sample幀”喚醒事件。該位不受軟體復位影響。
3:MAGICEN:1使能“Magic Packet”喚醒事件。該位不受軟體復位影響。
2:LINKST:1表示發生了連線改變事件和連線狀態改變事件。該位不受軟體復位影響。
1:SAMPLEST:1表示接收到“Sample幀”和發生了“Sample幀”事件。該位不受軟體復位影響。
0:MAGICST:1表示接收到“Magic Packet”和發生了“Magic Packet”事件。該位不受軟體復位影響。
PAR (10H -- 15H):物理地址(MAC)暫存器(Physical Address Register)
7-0:PAD0 -- PAD5:物理地址位元組0 -- 位元組5(10H -- 15H)。用來保存6個位元組的MAC地址。
MAR (16H -- 1DH):多點傳送地址暫存器(Multicast Address Register )
7-0:MAB0 -- MAB7:多點傳送地址位元組0 -- 位元組7(16H --1DH)。
GPCR (1FH):GPIO控制暫存器(General Purpose Control Register)
7-4:保留。
3-0:GEP_CNTL:GPIO控制。定義GPIO的輸入輸出方向。1為輸出,0為輸入。GPIO0默認為輸出做POWER_DOWN功能。其它默認為輸入。因此默認值為0001。
GPR (1FH):GPIO暫存器(General Purpose Register)
7-4:保留。
3-1:GEPIO3-1:GPIO為輸出時,相關位控制對應GPIO連線埠狀態,GPIO為輸入時,相關位反映對應GPIO連線埠狀態。(類似於單片機對IO連線埠的控制)。
0:GEPIO0:功能同上。該位默認為輸出1到POWER_DEWN內部PHY。若希望啟用PHY,則驅動程式需要通過寫“0”將PWER_DOWN信號清零。該位默認值可通過EEPROM編程得到。參考EEPROM相關描述。
TRPAL (22H):傳送SRAM讀指針地址低半位元組(TX SRAM Read Pointer Address Low Byte)
7-0:TRPAL
TRPAH (23H):傳送SRAM讀指針地址高半位元組(TX SRAM Read Pointer Address High Byte )
7-0:TRPAH
RWPAL (24H):接收SRAM指針地址低半位元組(RX SRAM Write Pointer Address Low Byte)
7-0:RWPAL
RWPAH (25H):接收SRAM指針地址高半位元組(RX SRAM Write Pointer Address High Byte)
7-0:RWPAH
VID (28H -- 29H):生產廠家序列號(Vendor ID)
7-0:VIDL:低半位元組(28H),唯讀,默認46H。
7-0:VIDH:高半位元組(29H),唯讀,默認0AH。
PID (2AH --2BH):產品序列號(Product ID)
7-0:PIDL:低半位元組(2AH),唯讀,默認00H。
7-0:PIDH:高半位元組(2BH),唯讀,默認90H。
CHIPR (2CH):晶片修訂版本(CHIP Revision)
7-0:PIDH:唯讀,默認00H。
TCR2 (2DH):傳輸控制暫存器2(TX Control Register 2)
7:LED:LED模式。1設定LED引腳為模式1,0設定LED引腳為模式0或根據EEPROM的設定。
6:RLCP:1重新傳送有衝突延遲的數據包。
5:DTU:1禁止重新傳送“underruned”數據包。
4:ONEPM:單包模式。1傳送完成前傳送一個數據包的命令能被執行,0傳送完成前傳送兩個以上數據包的命令能被執行。
3-0:IFGS:幀間間隔設定。0XXX為96bit,1000為64bit,1001為72bit,1010為80bit,1011為88bit,1100為96bit,1101為104bit,1110為112bit,1111為120bit。
OCR (2EH):操作測試控制暫存器(Operation Control Register)
7-6:SCC:設定內部系統時鐘。00為50MHz,01為20MHz,10為100MHz,11保留。
5:保留。
4:SOE:內部SRAM輸出使能始終開啟。
3:SCS:內部SRAM片選始終開啟。
2-0:PHYOP:為測試用內部PHY操作模式。
SMCR (2FH):特殊模式控制暫存器(Special Mode Control Register)
7:SM_EN:特殊模式使能。
6-3:保留。
2:FLC:強制衝突延遲。
1:FB1:強制最長“Back-off”時間。
0:FB0:強制最短“Back-off”時間。
ETXCSR (30H):傳輸前(Early)控制、狀態暫存器(Early Transmit Control/Status Register)
7:ETE:傳輸前使能。
6:ETS2:傳輸前狀態2。
5:ETS1:傳輸前狀態1。
4-2:保留。
1-0:ETT:傳輸前門限。當寫到傳送FIFO快取里的數據位元組數達到該門限,則開始傳輸。00為12.5%,01為25%,10為50%,11為75%。
TCSCR (31H):傳輸校驗和控制暫存器(Transmit Check Sum Control Register)
7-3:保留。
2:UDPCSE:UDP校驗和產生使能。
1:TCPCSE:TCP檢驗和產生使能。
0:IPCSE:IP校驗和產生使能。
RCSCSR (32H):接收校驗和控制狀態暫存器(Receive Check Sum Control Status Register )
7:UDPS:UDP校驗和狀態。1表示UDP數據包校驗失敗。
6:TCPS:TCP校驗和狀態。1表示TCP數據包校驗失敗。
5:IPS:IP校驗和狀態。1表示IP數據包校驗失敗。
4:UDPP:1表示UDP數據包。
3:TCPP:1表示TCP數據包。
2:IPP:1表示IP數據包。
1:RCSEN:接收檢驗和檢驗使能。1使能校驗和校驗,將校驗和狀態位(bit7-2)存儲到數據包的各自的報文頭的第一個位元組。
0:DCSE:丟棄校驗和錯誤的數據包。1使能丟棄校驗和錯誤的數據包,若IP/TCP/UDP的校驗和域錯誤,則丟棄該數據包。
MRCMDX (F0H):存儲器地址不變的讀數據命令(Memory Data Pre-Fetch Read Command Without Address Increment Register)
7-0:MRCMDX:從接收SRAM中讀數據,讀取之後,指向內部SRAM的讀指針不變。
MRCMDX1 (F1H):存儲器讀地址不變的讀數據命令(Memory Data Read Command With Address Increment Register
同上。
MRCMD (F2H):存儲器讀地址自動增加的讀數據命令(Memory Data Read Command With Address Increment Register)
7-0:MRCMD:從接收SRAM中讀數據,讀取之後,指向內部SRAM的讀指針自動增加1、2或4,根據處理器的操作模式而定(8位、16位或32位)。
MRRL (F4H):存儲器讀地址暫存器低半位元組(Memory Data Read_ address Register Low Byte)
7-0:MDRAL
MRRH (F5H):存儲器讀地址暫存器高半位元組Memory Data Read_ address Register High Byte
7-0:MDRAH:若IMR的bit7=1,則該暫存器設定為0CH。
MWCMDX (F6H):存儲器讀地址不變的讀數據命令(Memory Data Write Command Without Address Increment Register)
7-0:MWCMDX:寫數據到傳送SRAM中,之後指向內部SRAM的寫地址指針不變。
MWCMD (F8H):存儲器讀地址自動增加的讀數據命令(Memory Data Write Command With Address Increment Register)
7-0:MWCMD:寫數據到傳送SRAM中,之後指向內部SRAM的讀指針自動增加1、2或4,根據處理器的操作模式而定(8位、16位或32位)。
MWRL (FAH):存儲器寫地址暫存器低半位元組(Memory Data Write_ address Register Low Byte)
7-0:MDRAL
MWRH (FBH):存儲器寫地址暫存器高半位元組(Memory Data Write _ address Register High Byte)
7-0:MDRAH
TXPLL (FCH):傳送數據包長度暫存器低半位元組(TX Packet Length Low Byte Register)
7-0:TXPLL
TXPLH (FDH):傳送數據包長度暫存器高半位元組(TX Packet Length High Byte Register)
7-0:TXPLH
ISR (FEH):中斷狀態暫存器(Interrupt Status Register)
7-6:IOMODE:處理器模式。00為16位模式,01為32位模式,10為8位模式,00保留。
5:LNKCHG:連線狀態改變。
4:UDRUN:傳輸“Underrun”
3:ROOS:接收溢出計數器溢出。
2:ROS:接收溢出。
1:PTS:數據包傳輸。
0:PRS:數據包接收。
ISR 暫存器各狀態寫1清除
IMR (FFH):終端禁止暫存器(Interrupt Mask Register)
7:PAR:1使能指針自動跳回。當SRAM的讀、寫指針超過SRAM的大小時,指針自動跳回起始位置。需要驅動程式設定該位,若設定則REG_F5(MDRAH)將自動位0CH。
6:保留。
5:LNKCHGI:1使能連線狀態改變中斷。
4:UDRUNI:1使能傳輸“Underrun”中斷。
3:ROOI:1使能接收溢出計數器溢出中斷。
2:ROI:1使能接收溢出中斷。
1:PTI:1使能數據包傳輸終端。
0:PRI:1使能數據包接收中斷。
注釋:表示在DM9000初始化中要用到的暫存器。
訪問以上暫存器的方法是通過匯流排驅動的方式,即通過對IOR、IOW、AEN、CMD以及SD0--SD15等相關引腳的操作來實現。其中CMD引腳為高 電平時為寫暫存器地址,為低電平時為寫數據到指定地址的暫存器中。詳細過程請參考數據手冊中“讀寫時序”部分。
在DM9000(A)中,還有一些PHY暫存器,也稱之為介質無關接口MII暫存器,需要我們去訪問。這些暫存器是字對齊的,即16位寬。下面列出三個常用的PHY暫存器。
BMCR (00H):基本模式控制暫存器(Basic Mode Control Register)
15:reset:1PHY軟體復位,0正常操作。復位操作使PHY暫存器的值為默認值。復位操作完成後,該位自動清零。
14:loopback:1Loop-back使能,0正常操作。
13:speed selection:1為100Mbps,0為10Mbps。連線速度即可以根據該位選擇,也可以根據第12位,即自動協商選擇。當自動協商使能時,即第12位為1,該位將會返回自動協商後的速度值。
12:auto-negotiation enable:1自動協商使能。使得第13位和第8位的值反應自動協商後的狀態。
11:power down:POWER_DOWN模式。1為POWER_DOWN,0為正常操作。在POWER_DOWN狀態下,PHY應當回響操作處理。在轉變到POWER_DOWN狀態或已經運行在POWER_DOWN狀態下時,PHY不會在MII上產生虛假信號。
10:isolate:1除了一些操作外,PHY將從MII中隔離,0為正常操作。當該位置位,PHY不會回響TXD[3:0],TX_EN和TX_ER輸入,並且在TX_CLK,RX_CLK,RX_DV,RX_ER,RXD[3:0], COL和CRS輸出上為高阻態。當PHY被隔離,則它將回響操作處理。
9:restart auto-aegotiation:1重新初始化自動協商協定,0為正常操作。當第12位禁止該功能,則該位無效。初始化後該位自動清零。
8:duplex mode:1為全雙工操作,0為正常操作。當第12位被禁止(置0)時該位被置位,若第12位被置位,則該位反應自動協商後的狀態。
7:collision test:1為衝突測試使能,0為正常操作。若該位置位,聲明TX_EN將引起COL信號被聲明。
6-0:保留。
ANAR (04H):自動協商廣告暫存器(Auto-negotiationAdvertisement Register)
15:NP:0表示無有效的下一頁,1表示下一頁有效。PHY沒有下一頁,所以該位始終為0。
14:ACK:1表示連線對象數據接收認證,0表示無認證。PHY的自動協商狀態機會自動控制該位。
13:RF:1表示本地設備處於錯誤狀態,0為無錯誤檢驗。
12-11:保留。
10:FCS:1表示處理器支持溢出控制能力,0表示不支持。
9:T4:1表示本地設備支持100BASE-T4,0表示不支持。PHY不支持100BASE-T4,所以該位永遠是0。
8:TX_FDX:1為本地設備支持100BASE-TX全雙工模式,0為不支持。
7:TX_HDX:1為本地設備支持100BASE-TX,0為不支持。
6:10_FDX:1為本地設備支持100BASE-T全雙工模式,0為不支持。
5:10_HDX:1為本地設備支持100BASE-T,0為不支持。
4-0:selecter:協定選擇位,00001為默認值,表示設備支持IEEE802.3CSMA/CD,不用修改。
DSCR (16H):DAVICOM詳細配置暫存器(DAVICOM Specified Configuration Register)
15:BP_4B5B:1為繞過4B5B編碼和5B4B解碼功能,0為正草4B5B和5B4B功能。
14:BP_SCR:1為繞過擾頻和解擾功能,0為正常操作。
13:BP_ALIGN:1為繞過接收時的解擾、符號佇列、解碼功能和傳送時的符號編碼、擾頻功能,0正常操作。
12:BP_ADPOK:1為強制信號探測功能使能,0為正常操作。該位僅為調試使用
11:保留。
10:TX:1表示100BASE-TX操作,0保留。
9-8:保留。
7:F_LINK_100:0為正常100Mbps,1為強制100Mbps良好連線狀態。
6-5:保留,強制為0.
4:RPDCTR-EN:1為使能自動簡化POWER_DOWN,0為禁止。
3:SMRST:1為重新初始化PHY的狀態機,初始化後該位自動清零。
2:MFPSC:1表示MII幀引導抑制開啟,0表示關閉。
1:SLEEP:睡眠模式。該位置位將導致PHY進入睡眠模式,通過將該位清零喚醒睡眠模式,其中配置將還原為睡眠模式之前的狀態,但狀態機將重新初始化。
0:RLOUT:該位置位將使接收到的數據放入傳送通道中。
訪問PHY暫存器的方法是:
(1)暫存器地址寫到 EPAR/PHY_AR (0CH)暫存器中,注意將暫存器地址的第6位置1(地址與0x40或運算即可),以表明寫的是PHY地址,而不是EEPROM地址。
(2)將數據高位元組寫到 PHY_DRH (0EH)暫存器中。
(3)將數據低位元組寫到 PHY_DRL (0DH)暫存器中。
(4)傳送PHY命令(0x0a)到 EPCR/PHY_CR (0BH)暫存器中。
(5)延時5us,傳送命令0x08到 EPCR/PHY_CR (0BH)暫存器中,清除PHY寫操作。
以上為DM9000(A)常用暫存器功能的詳細介紹,通過對這些暫存器的操作訪問,我們便可以實現對DM9000的初始化、數據傳送、接收等相關操作。而要實現ARP、IP、TCP等功能,則需要對相關協定的理解,由編寫相關協定或移植協定棧來實現。
功能描述
1、匯流排
匯流排是ISA匯流排兼容模式,8個IO基址,分別是300H, 310H,320H, 330H, 340H, 350H, 360H, 370H。IO基址與設定引腳或內部EEPROM的共同選定
訪問晶片有兩個地址連線埠,分別是地址連線埠和數據連線埠。當引腳CMD接地時,為地址連線埠;當引腳CMD接高電平時,為數據連線埠。在訪問任何暫存器前,地址連線埠輸入的是數據連線埠的暫存器地址,暫存器的地址必須保存在地址連線埠。
2、存儲器直接訪問控制
DM9000提供DMA(直接存取技術)來簡化對內部存儲器的訪問。在對內部存儲器起始地址完成編程後,然後發出偽讀寫命令就可以載入當期數據到內部數據緩衝區,可以通過讀寫命令暫存器來定位內部存儲區地址。根據當前匯流排模式的字長使存儲地址自動加1,下一個地址數據將會自動載入到內部數據緩衝區。要注意的是在連續突髮式的第一次訪問是讀寫命令的內容。
內部存儲器空間大小為16K位元組。低3K位元組單元用作傳送包的緩衝區,其他13K位元組用作接收包的緩衝區。所以在寫傳送包存儲區的時候,當存儲器地址越界後,自動跳回0地址並置位IMR第七位。同樣在讀接收包存儲器的時候,當存儲器地址越界後,自動跳回起始地址0x0c00。
3、包的傳送
有兩個指數,順序命名為指針1和指針2,能同時存儲在傳送包緩衝區。傳送控制暫存器(02H)控制冗餘校驗碼和填充的插入,其狀態分別記錄在傳送狀態暫存器1(03H)和傳送狀態2(04H)
傳送器的起始地址是0x00H,軟體或硬體復位後默認是指針1,先通過DMA連線埠寫數據到傳送包緩衝區,然後寫位元組計數長度到位元組計數暫存器