版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.目錄1引言51.1編寫(xiě)目的51.2定義51.3參考資料52W5300控制器的實(shí)現(xiàn)流程62.1實(shí)現(xiàn)流程圖62.2流程簡(jiǎn)要說(shuō)明63流程控制73.1W5300 RESET73.2W5300初始化73.2.1數(shù)據(jù)位寬設(shè)置73.2.2主機(jī)接口模式和時(shí)序設(shè)置73.2.3host主機(jī)中斷設(shè)置93.2.4基本網(wǎng)絡(luò)信息設(shè)置103.2.5重新發(fā)送參數(shù)設(shè)置113.2.6SOCKETn 的內(nèi)部TX/RX 存儲(chǔ)器空間分配設(shè)置113.3數(shù)據(jù)通信123.3.1SOCKET初始化133.3.2SOCKET建鏈153.3.3SOCKET數(shù)據(jù)通信183.3.4SOCKET關(guān)閉194邏輯實(shí)現(xiàn)方案194.1邏輯架構(gòu)194.2接口控
2、制模塊204.2.1讀時(shí)序?qū)崿F(xiàn)204.2.2寫(xiě)時(shí)序?qū)崿F(xiàn)214.2.3實(shí)現(xiàn)狀態(tài)機(jī)224.2.4接口定義234.3主控制模塊234.3.1實(shí)現(xiàn)狀態(tài)機(jī)234.3.2接口定義244.4初始化配置模塊244.4.1實(shí)現(xiàn)狀態(tài)機(jī)244.4.2接口定義254.5SOCKET驅(qū)動(dòng)模塊254.5.1實(shí)現(xiàn)狀態(tài)機(jī)254.5.2接口定義265性能指標(biāo)265.1支持SOCKET數(shù)以及協(xié)議265.2網(wǎng)絡(luò)延時(shí)265.3傳輸帶寬266使用指南276.1接口說(shuō)明276.2配置參數(shù)說(shuō)明296.3關(guān)鍵時(shí)序296.4狀態(tài)寄存器291 引言1.1 編寫(xiě)目的1.2 定義1.3 參考資料 High-performance_Internet_
3、Connectivity_Solution_W5300_V1.2.3 W5300中文用戶數(shù)據(jù)手冊(cè)_V1.2.22 W5300控制器的實(shí)現(xiàn)流程本W(wǎng)5300控制器在16位數(shù)據(jù)的直接模式地址方式的基礎(chǔ)上實(shí)現(xiàn)。2.1 實(shí)現(xiàn)流程圖2.2 流程簡(jiǎn)要說(shuō)明1. W5300 reset:W5300工作之前,需要對(duì)其進(jìn)行復(fù)位,復(fù)位低電平有效,并且至少保持2us(W5300不支持上電復(fù)位,必須通過(guò)/reset接口對(duì)其進(jìn)行復(fù)位)。2. Wait for at least 10ms:W5300復(fù)位后,需要等待至少10ms使得W500內(nèi)部鎖相環(huán)穩(wěn)定后,才能進(jìn)行W5300初始化操作。3. W5300 initializat
4、ion:初始化W5300就是將相應(yīng)的參數(shù)按照寫(xiě)時(shí)序要求寫(xiě)入寄存器。初始化分為3個(gè)步驟:1) 主機(jī)接口配置:設(shè)置主機(jī)接口模式和時(shí)序,設(shè)置數(shù)據(jù)位寬,設(shè)置主機(jī)中斷。2) 設(shè)置網(wǎng)絡(luò)信息:設(shè)置數(shù)據(jù)通信的基本信息(SHAR、GAS、SBUS和SIPR);設(shè)置重新發(fā)送的時(shí)間間隔和重發(fā)次數(shù)。3) 內(nèi)部TX/RX存儲(chǔ)器分配:定義內(nèi)部TX/RX存儲(chǔ)器大小及SOCKTEn的TX/RX存儲(chǔ)器大小。4. Data communicate:對(duì)使用的COCKETn初始化,進(jìn)行發(fā)送、接收數(shù)據(jù)及相關(guān)配置。3 流程控制3.1 W5300 RESET通過(guò)W5300芯片的/RESET接口對(duì)芯片進(jìn)行復(fù)位,低電平有效。RESET信號(hào)低電
5、平至少持續(xù)2us ,為了使鎖相環(huán)邏輯穩(wěn)定,復(fù)位信號(hào)恢復(fù)高電平后至少等待10ms,見(jiàn)圖3.1-1。W5300不支持上電復(fù)位。因此必須由外部系統(tǒng)給出復(fù)位信號(hào)。在復(fù)位信號(hào)有效的2us期間,需要對(duì)BIT16EN接口進(jìn)行配置。BIT16EN為 16/8 位數(shù)據(jù)位選擇,它確定W5300的數(shù)據(jù)位的寬度:高電平選擇16位數(shù)據(jù)位,低電平選擇8位數(shù)據(jù)位。在復(fù)位期間,它被鎖存在模式寄存器(MR)的第15位,復(fù)位后它的改變不會(huì)產(chǎn)生影響。即數(shù)據(jù)位的寬度在復(fù)位后不會(huì)發(fā)生改變。圖3.1-1 W5300復(fù)位初始化3.2 W5300初始化3.2.1 數(shù)據(jù)位寬設(shè)置數(shù)據(jù)位寬的設(shè)置可參見(jiàn)3.1節(jié),根據(jù)實(shí)際使用,BIT16EN接口信號(hào)
6、可以始終配置為1。3.2.2 主機(jī)接口模式和時(shí)序設(shè)置主機(jī)的接口模式和時(shí)序設(shè)置即為對(duì)W5300的模式(MR)寄存器進(jìn)行配置: MR寄存器地址:0x000 MR基礎(chǔ)器配置值:0xB800下表3.2.2-1為MR寄存器的配置說(shuō)明:表3.2.2-1 MR寄存器位符號(hào)說(shuō)明MR15DBW數(shù)據(jù)總線寬度 0 :8 位數(shù)據(jù)總線寬度 1 :16位數(shù)據(jù)總線寬度 在W5300復(fù)位期間,這個(gè)值由BIT16EN引腳的電平確定。復(fù)位后,這個(gè)值不改變 。MR14MPFMAC層終止數(shù)據(jù)報(bào)文 0 :正常報(bào)文 1 :終止報(bào)文 當(dāng)從路由器或交換機(jī)收到終止報(bào)文時(shí),該位置1 。當(dāng)設(shè)置為1 時(shí),將停止數(shù)據(jù)傳輸,直到該位為0MR13WDF2
7、寫(xiě)數(shù)據(jù)訪問(wèn)時(shí)間 當(dāng)寫(xiě)數(shù)據(jù)操作時(shí),/CS為低電平后,W5300在WDFPLL_CLK時(shí)間后取寫(xiě)入的數(shù)據(jù),如果主機(jī)寫(xiě)操作在WDFPLL_CLK完成(/CS 恢復(fù)為高電平),寫(xiě)入的數(shù)據(jù)在/CS為高電平時(shí)取走M(jìn)R12WDF1MR11WDF0MR10RDH讀數(shù)據(jù)保持時(shí)間 0 :沒(méi)有數(shù)據(jù)保持時(shí)間 1 :數(shù)據(jù)保持時(shí)間為2PLL_CLK 在主機(jī)進(jìn)行讀操作時(shí),當(dāng)主機(jī)的讀操作完成(/CS 恢復(fù)高電平)后,W5300在2PLL_CLK時(shí)間之內(nèi)保持讀取的數(shù)據(jù)。在這種情況下,注意數(shù)據(jù)總線上的數(shù)據(jù)沖突MR9-保留MR8FSFIFO交換 0 :禁止交換 1 :允許交換 它用于高字節(jié)和低字節(jié)的交換。W5300的字節(jié)一般采用大
8、端模式。如果主機(jī)系統(tǒng)采用小端模式,那么將該位置1 ,將Sn_TX_FIFOR 和Sn_RX_FIFOR 的字節(jié)順序交換,使用效果與小端模式相同MR7RST軟件復(fù)位 該位置1 ,對(duì)W5300軟件復(fù)位。復(fù)位結(jié)束后自動(dòng)清0 MR6-保留MR5MT存儲(chǔ)器測(cè)試 0 :禁止內(nèi)部RX/TX 存儲(chǔ)器測(cè)試 1 :允許內(nèi)部存儲(chǔ)器測(cè)試 一般來(lái)講,W5300內(nèi)部TX存儲(chǔ)器支持主機(jī)通過(guò)Sn_TX_FIFOR寄存器的寫(xiě)操作,而內(nèi)部RX存儲(chǔ)器只支持主機(jī)通過(guò)Sn_RX_FIFOR 寄存器的讀操作。如果該位置1,內(nèi)部RX/TX 存儲(chǔ)器同時(shí)支出通過(guò)Sn_TX_FIFOR和Sn_RX_FIFOR 的讀寫(xiě)操作,從而校驗(yàn)內(nèi)部TX/RX
9、 存儲(chǔ)器。測(cè)試W5300內(nèi)部TX/RX 完成后,需要對(duì)系統(tǒng)重新復(fù)位或關(guān)閉端口。MR4PBPing 功能阻止模式 0 :允許Ping 1 :禁止Ping 自動(dòng)Ping應(yīng)答支持最多119 個(gè)字節(jié)。Ping功能阻止模式還需要考慮Sn_MR和Sn_PROTOR的設(shè)置。MR3PPPoEPPPoE模式 0 :禁止PPPoE模式 1 :?jiǎn)?dòng)PPPoE模式MR2DBS數(shù)據(jù)總線交換 0 :禁止交換 1 :允許交換 DBS位只交換Sn_TX_FIFOR/Sn_RX_FIFOR的高字節(jié)和低字節(jié)。然而該位交換所有寄存器的高字節(jié)和低字節(jié),包括Sn_TX_FIFOR/ Sn_RX_FIFOR 寄存器。該位只有DBW為1時(shí)
10、有效。MR1-保留MR0IND間接總線模式 0 :直接總線模式 1 :間接總線模式 它設(shè)置W5300與主機(jī)的接口模式3.2.3 host主機(jī)中斷設(shè)置主機(jī)中斷設(shè)置即為對(duì)中斷屏蔽寄存器進(jìn)行配置,它配置W5300的中斷并報(bào)告給主機(jī)。IMR 的每一個(gè)中斷屏蔽位對(duì)應(yīng)IR的每一個(gè)中斷位。當(dāng)IR的任何一個(gè)位為1且相應(yīng)的IMR 位也為1時(shí),將向主機(jī)產(chǎn)生中斷(/INT 輸出低電平)。如果相應(yīng)的IMR位為0,將不產(chǎn)生中斷(/INT 保持高電平),即使IR位為1。 IMR寄存器地址:0x004 IMR基礎(chǔ)器配置值:0x80FF下表2.2.3-1為IR寄存器的位說(shuō)明,可以根據(jù)IR寄存器對(duì)IMR寄存器進(jìn)行配置:表3.2
11、.3-1 IR寄存器位符號(hào)說(shuō)明IR15IPCFIP 沖突 當(dāng)IP 地址產(chǎn)生沖突時(shí),該位置1時(shí)(當(dāng)接收到ARP請(qǐng)求數(shù)據(jù)包的IP 地址與W5300本機(jī)IP地址相同)。當(dāng)它置1時(shí),網(wǎng)絡(luò)中的另外一個(gè)設(shè)備使用了相同的IP 地址,將造成通信錯(cuò)誤。因此需要盡快采取措施解決這個(gè)問(wèn)題。IR14DPUR目標(biāo)端口無(wú)法到達(dá) 當(dāng)收到ICMP (目的端口無(wú)法到達(dá))數(shù)據(jù)包時(shí),該位置1 。該中斷用于UDP協(xié)議傳輸。IR13PPPTPPPoE中止 在PPPoE模式,當(dāng)與服務(wù)器連接關(guān)閉時(shí),該位置1。IR12FMTU分片最大傳輸單元(MTU) 當(dāng)收到ICMP (分片最大傳輸單元)數(shù)據(jù)包時(shí),該位置1 。在基于UDP協(xié)議傳輸時(shí),需要考
12、慮。TCP協(xié)議下可以不需要考慮。IR11:8-保留IR7S7_INTSOCKET7中斷 當(dāng)SOCKET7產(chǎn)生中斷時(shí),該位置1。該中斷信息對(duì)應(yīng)于S7_IR1。當(dāng)S7_IR1被主機(jī)清0后,該位自動(dòng)清0。IR6S6_INTSOCKET6中斷 當(dāng)SOCKET6產(chǎn)生中斷時(shí),該位置1。該中斷信息對(duì)應(yīng)于S6_IR1。當(dāng)S6_IR1被主機(jī)清0后,該位自動(dòng)清0。IR5S5_INTSOCKET5中斷 當(dāng)SOCKET5產(chǎn)生中斷時(shí),該位置1。該中斷信息對(duì)應(yīng)于S5_IR1。當(dāng)S5_IR1被主機(jī)清0后,該位自動(dòng)清0。IR4S4_INTSOCKET4中斷 當(dāng)SOCKET4產(chǎn)生中斷時(shí),該位置1。該中斷信息對(duì)應(yīng)于S4_IR1。
13、當(dāng)S4_IR1被主機(jī)清0后,該位自動(dòng)清0。IR3S3_INTSOCKET3中斷 當(dāng)SOCKET3產(chǎn)生中斷時(shí),該位置1。該中斷信息對(duì)應(yīng)于S3_IR1。當(dāng)S3_IR1被主機(jī)清0后,該位自動(dòng)清0。IR2S2_INTSOCKET2中斷 當(dāng)SOCKET2產(chǎn)生中斷時(shí),該位置1。該中斷信息對(duì)應(yīng)于S2_IR1。當(dāng)S2_IR1被主機(jī)清0后,該位自動(dòng)清0。IR1S1_INTSOCKET1中斷 當(dāng)SOCKET1產(chǎn)生中斷時(shí),該位置1。該中斷信息對(duì)應(yīng)于S1_IR1。當(dāng)S1_IR1被主機(jī)清0后,該位自動(dòng)清0。IR0S0_INTSOCKET0中斷 當(dāng)SOCKET0產(chǎn)生中斷時(shí),該位置1。該中斷信息對(duì)應(yīng)于S0_IR1。當(dāng)S0_
14、IR1被主機(jī)清0后,該位自動(dòng)清0。3.2.4 基本網(wǎng)絡(luò)信息設(shè)置基本網(wǎng)絡(luò)信息設(shè)置,即為對(duì)W5300的本機(jī)硬件地址(MAC)寄存器(SHAR)、網(wǎng)關(guān)IP地址寄存器(GAR)、子網(wǎng)掩碼寄存器(SUBR)和本機(jī)IP地址寄存器(SIPR)進(jìn)行配置。1) 本機(jī)硬件地址(MAC)寄存器(SHAR)配置: SHAR0寄存器地址:0x008 SHAR0寄存器配置值:MAC47:32 SHAR2寄存器地址:0x00A SHAR2寄存器配置值:MAC31:16 SHAR4寄存器地址:0x00C SHAR4寄存器配置值:MAC15:02) 網(wǎng)關(guān)IP地址寄存器(GAR)配置: GAR0寄存器地址:0x010 GAR0寄
15、存器配置值:GAR31:16 GAR1寄存器地址:0x012 GAR1寄存器配置值:GAR15:03) 子網(wǎng)掩碼寄存器(SUBR)配置: SUBR0寄存器地址:0x014 SUBR0寄存器配置值:SUBR 31:16 SUBR1寄存器地址:0x016 SUBR1寄存器配置值:SUBR 15:04) 本機(jī)IP地址寄存器(SIPR) SIPR0寄存器地址:0x014 SIPR0寄存器配置值:SUBR 31:16 SIPR1寄存器地址:0x016 SIPR1寄存器配置值:SUBR 15:03.2.5 重新發(fā)送參數(shù)設(shè)置重新發(fā)送參數(shù)設(shè)置,即為對(duì)W5300的重復(fù)發(fā)送超時(shí)寄存器(RTR)和重復(fù)發(fā)送計(jì)數(shù)寄存器
16、(RCR)進(jìn)行配置。1) 重復(fù)發(fā)送超時(shí)寄存器(RTR)用于配置重復(fù)發(fā)送超時(shí)周期的值。RTR的標(biāo)準(zhǔn)單位是100us ,RTR初始化設(shè)置為2000(0x7D0 ),超時(shí)的時(shí)間周期為200ms。 RTR寄存器地址:0x01C RTR寄存器配置值:0x07D0(200ms)2) 重復(fù)發(fā)送計(jì)數(shù)寄存器(RCR)用于配置重復(fù)發(fā)送的次數(shù)。當(dāng)重復(fù)發(fā)送的次數(shù)達(dá)到RCR+1時(shí),將產(chǎn)生超時(shí)中斷(Sn_IR 的TIMEOUT位置1)。 RCR寄存器地址:0x01E RCR寄存器配置值:0x3(3次)APP和TCP的超時(shí)計(jì)算可參見(jiàn)W5300的數(shù)據(jù)手冊(cè)。3.2.6 SOCKETn 的內(nèi)部TX/RX 存儲(chǔ)器空間分配設(shè)置W53
17、00內(nèi)部包含16個(gè)8K字節(jié)的存儲(chǔ)單元。這些存儲(chǔ)單元依次映射在128K字節(jié)的存儲(chǔ)器空間。128K存儲(chǔ)器分為發(fā)送存儲(chǔ)器(TX)和接收存儲(chǔ)器(RX)。內(nèi)部TX和RX存儲(chǔ)器以8K字節(jié)為單元分布在128K字節(jié)空間。內(nèi)部TX/RX 存儲(chǔ)器可以在064K 字節(jié)空間以1K字節(jié)為單元從新分配給每個(gè)SOCKET。1) 定義內(nèi)部TX/RX 存儲(chǔ)器大小可以在存儲(chǔ)器單元類型寄存器(MYTPER)中配置,每個(gè)8K字節(jié)的存儲(chǔ)單元對(duì)應(yīng)MTYPER的一個(gè)位。當(dāng)該位為1時(shí),它用于TX存儲(chǔ)器,當(dāng)該位為0時(shí),它用于RX存儲(chǔ)器。MTYPER的低位都配置為T(mén)X存儲(chǔ)器。其余沒(méi)有配置為T(mén)X存儲(chǔ)器的都應(yīng)該設(shè)置為0。 MYTPER寄存器地址:0
18、x030 MYTPER寄存器配置值:0x00FF(平均分配)2) 每個(gè)SOCKET的內(nèi)部TX存儲(chǔ)器的大小由TX存儲(chǔ)器大小配置寄存器(TMSR)配置。每個(gè)SOCKET在復(fù)位后自動(dòng)分配8K字節(jié)的TX存儲(chǔ)空間。 TMS01R寄存器地址:0x020 TMS01R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x190E) TMS23R寄存器地址:0x022 TMS23R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x1900) TMS45R寄存器地址:0x024 TMS45R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCK
19、ET1的配置值(0x0000) TMS67R寄存器地址:0x026 TMS67R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x0000)3) 每個(gè)SOCKET的內(nèi)部RX存儲(chǔ)器的大小由RX存儲(chǔ)器大小配置寄存器(RMSR)配置。每個(gè)SOCKET在復(fù)位后自動(dòng)分配8K字節(jié)的RX存儲(chǔ)空間。 RMS01R寄存器地址:0x028 RMS01R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x190E) RMS23R寄存器地址:0x02A RMS23R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x1900)
20、 RMS45R寄存器地址:0x02C RMS45R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x0000) RMS67R寄存器地址:0x02E RMS67R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x0000)3.3 數(shù)據(jù)通信完成初始化設(shè)置以后,W5300可以以TCP 、UDP、IPRAW 或MACRAW的方式打開(kāi)SOCKET發(fā)送或接收數(shù)據(jù)。根據(jù)實(shí)際使用,在此只描述基于TCP協(xié)議的W5300工作方法。在TCP 模式,首先要根據(jù)IP 地址和端口號(hào)與對(duì)端建立SOCKET連接。通過(guò)連接的SOCKET發(fā)送和接收數(shù)據(jù)。建立SOCK
21、ET的連接有“TCP 服務(wù)器”和“TCP 客戶端”之分。區(qū)分它們的方法是誰(shuí)首先發(fā)送連接請(qǐng)求(SYS數(shù)據(jù)包)?!癟CP 服務(wù)器”等待對(duì)端的連接請(qǐng)求,當(dāng)收到連接請(qǐng)求時(shí)建立SOCKET連接(被動(dòng)打開(kāi))?!癟CP 客戶端”主動(dòng)發(fā)出連接請(qǐng)求,與對(duì)端建立連接(主動(dòng)打開(kāi))。下圖3.3-1為W5300在TCP模式下數(shù)據(jù)通信的工作流程:圖3.3-1 TCP模式下數(shù)據(jù)通信工作流程3.3.1 SOCKET初始化為了實(shí)現(xiàn)TCP 通信,需要對(duì)SOCKET進(jìn)行初始化設(shè)置并打開(kāi)SOCKET。為了打開(kāi)SOCKET,選擇其中的一個(gè)SOCKET(被選擇的SOCKET稱之為SOCKETn), 通過(guò)SOCKETn 模式寄存器(Sn_
22、MR) 和SOCKETn源端口號(hào)寄存器(Sn_PORTR)分別設(shè)置通信協(xié)議和本機(jī)端口號(hào)(在TCP 服務(wù)器模式,稱之為偵聽(tīng)端口號(hào)),然后執(zhí)行OPEN 命令。執(zhí)行完OPEN 命令后,如果Sn_SSR 改變?yōu)镾OCK_INIT,則SOCKET的初始化設(shè)置完成。3.3.1.1 SOCKETn 模式寄存器設(shè)置SOCKETn模式寄存器(Sn_MR)用于配置SOCKET的協(xié)議類型及相關(guān)一些選項(xiàng)。 Sn_MR寄存器地址:0x200(0x240、0x280) Sn_MR寄存器配置值:0x0121(隊(duì)列對(duì)齊、允許無(wú)延時(shí)響應(yīng)、TCP模式)下表2.3.1.1-1為SOCKETn模式寄存器(Sn_MR)的配置位說(shuō)明:表
23、3.3.1.1-1 Sn_MR寄存器位符號(hào)說(shuō)明Sn_MR15:9-保留Sn_MR8ALIGN隊(duì)列對(duì)齊 0:不使用對(duì)齊 1:使用對(duì)齊 只有在TCP 模式下有效,在TCP 通信過(guò)程中,當(dāng)每次收到的數(shù)據(jù)包的字節(jié)數(shù)為偶數(shù)且該位置為1時(shí),接收數(shù)據(jù)可直接刪去附在接收數(shù)據(jù)包中的PACKET-INFO(數(shù)據(jù)的字節(jié)數(shù)),使讀取數(shù)據(jù)的操作大大增強(qiáng)。Sn_MR7MULTI多播 0:禁止多播 1:允許多播 只有在UDP模式下有效 Sn_MR6MFMAC地址過(guò)濾 0:禁止MAC地址過(guò)濾 1:允許MAC地址過(guò)濾 只有在MACRAW模式下有效Sn_MR5ND使用無(wú)延時(shí)的ACK 0:禁止延時(shí)ACK選項(xiàng) 1:允許延時(shí)ACK選項(xiàng)
24、 只有在TCP 模式下有效,當(dāng)該位置1,收到對(duì)端的數(shù)據(jù)包后立即發(fā)送ACK數(shù)據(jù)包響應(yīng)。建議將該位置1,以提高TCP 通信的性能。Sn_MR4-保留Sn_MR3:0P3:0協(xié)議類型。它用于配置每個(gè)SOCKET的通信協(xié)議(TCP、UDP、IPRAW,MACRAW等)或PPPoE SOCKET與PPPoE服務(wù)器之間的操作。4b0000 : SOCKET Closed;4b0001 : TCP;4bxxx0 :其它3.3.1.2 SOCKETn中斷屏蔽寄存器設(shè)置SOCKETn中斷屏蔽寄存器(Sn_IMR)配置SOCKETn 向主機(jī)產(chǎn)生的中斷,Sn_IMR的中斷屏蔽位與SOCKETn中斷寄存器(Sn_IR
25、)是對(duì)應(yīng)的。參考2.2.3主機(jī)中斷設(shè)置。 Sn_IMR寄存器地址:0x204(0x244、0x284) Sn_IMR寄存器配置值:0x001B(send_OK、timeout、discon、con)下表3.3.1.2-1為Sn_IR寄存器的位說(shuō)明,可以根據(jù)Sn_IR寄存器對(duì)Sn_IMR寄存器進(jìn)行配置:表3.3.1.2-1 IR寄存器位符號(hào)說(shuō)明Sn_IR7PRECVPPP接收中斷接收到不支持的可選數(shù)據(jù)(Option Data)時(shí),該位置位。Sn_IR6PFAILPPP失敗中斷PAP認(rèn)證失敗時(shí)該位置位Sn_IR5PNEXTPPP下一過(guò)程中斷 在PPPoE連接過(guò)程中,該過(guò)程改變時(shí)置位Sn_IR4SE
26、NDOK發(fā)送完成中斷 SEND 命令完成后置位Sn_IR 3TIMEOUT超時(shí)中斷 在ARP和TCP 過(guò)程中超時(shí)置位Sn_IR 2RECV接收數(shù)據(jù)中斷端口從對(duì)端接收到數(shù)據(jù)時(shí)置位Sn_IR 1DISCON斷開(kāi)連接中斷接收到從對(duì)端來(lái)的FIN或FIN/ACK 數(shù)據(jù)包時(shí)置位Sn_IR0CON連接中斷與對(duì)端成功建立連接時(shí)置位3.3.1.3 SOCKETn目的IP 地址寄存器在TCP 客戶端模式下,運(yùn)行CONNECT 命令之前,必須將SOCKETn目的IP 地址寄存器(Sn_DIPR)設(shè)置為T(mén)CP 服務(wù)器的IP 地址。而在TCP 服務(wù)器模式,當(dāng)成功建立連接以后,它被W5300自動(dòng)配置為T(mén)CP 客戶端的IP
27、 地址。 Sn_DIPR 0寄存器地址:0x214(0x254、0x294) Sn_DIPR 0寄存器配置值:DIPR 31:16 Sn_DIPR 1寄存器地址:0x216(0x256、0x296) Sn_DIPR 1寄存器配置值:DIPR 15:03.3.1.4 端口號(hào)寄存器設(shè)置端口號(hào)寄存器設(shè)置包括對(duì)SOCKETn源端口號(hào)寄存器(Sn_PORTR)和SOCKETn目的端口號(hào)寄存器(Sn_DPORTR)的配置。1) SOCKETn源端口號(hào)寄存器(Sn_PORTR)用于配置源端口的端口號(hào),必須在OPEN 命令之前設(shè)置。 Sn_PORTR寄存器地址: 0x20A(0x24A、0x28A) Sn_P
28、ORTR寄存器配置值: 2) SOCKETn目的端口號(hào)寄存器(Sn_DPORTR)用于設(shè)置SOCKETn 的目的端口號(hào)。在TCP 客戶端模式下運(yùn)行CONNECT 命令之前,需要將它設(shè)置為處于TCP 服務(wù)器模式下的偵聽(tīng)端口的端口號(hào)。而在TCP 服務(wù)器模式,當(dāng)成功建立連接以后,它被W5300自動(dòng)配置為T(mén)CP 客戶端的端口號(hào)。 Sn_DPORTR寄存器地址:0x212(0x252、0x252) Sn_DPORTR寄存器配置值:3.3.2 SOCKET建鏈基于TCP模式的SOCKET建鏈,建鏈過(guò)程中需要配置及查詢SOCKETn命令寄存器(Sn_CR)、SOCKETn中斷寄存器(Sn_IR)和SOCKE
29、Tn 狀態(tài)寄存器(Sn_SSR)。 SOCKETn命令寄存器地址:0x202(0x242、0x282) SOCKETn中斷寄存器地址:0x206(0x246、0x286) SOCKETn 狀態(tài)寄存器地址:0x208(0x248、0x288)下表3.3.2-1為SOCKETn命令寄存器說(shuō)明:表3.3.2-1 SOCKETn命令寄存器值命令說(shuō)明0x01打開(kāi)端口 OPEN它根據(jù)Sn_MR(P3P0)所定義的協(xié)議類型初始化端口并打開(kāi)端口0x02偵聽(tīng) LISTEN只有在TCP 模式下有效(Sn_MR(P3:P0)=Sn_MR _TCP) 它將SOCKETn 設(shè)置為T(mén)CP 服務(wù)器模式。它將改變Sn_SSR
30、 寄存器的SOCK_INIT為SOCK_LISTEN,以等待其它TCP 客戶端的連接請(qǐng)求(SYN數(shù)據(jù)包) 當(dāng)Sn_SSR 為SOCK_LISTEN 且成功處理了其它TCP 客戶端的連接請(qǐng)求時(shí),Sn_IR(0)將置1 ,而Sn_SSR 變?yōu)镾OCK_ESTABLISHED。如果沒(méi)有處理連接請(qǐng)求(SYN/ACK 傳輸失敗),TCP 產(chǎn)生超時(shí)(Sn_IR(3)=1)且Sn_SSR 變?yōu)镾OCK_CLOSED0x04連接 CONNECT它將端口設(shè)置為T(mén)CP 客戶端模式 它發(fā)送連接請(qǐng)求到由Sn_DIPR和Sn_DPORTR 指定的TCP 服務(wù)器。 當(dāng)連接請(qǐng)求被成功處理(收到SYN/ACK數(shù)據(jù)包),Sn_
31、IR(0) 置1,且Sn_SSR的狀態(tài)變?yōu)镾OCK_ESTABLISHED 。如果連接失敗,可能有三種情況 1 ARP 產(chǎn)生超時(shí),因?yàn)槟繕?biāo)硬件地址無(wú)法獲得 2 沒(méi)有收到SYN/ACK數(shù)據(jù)包而產(chǎn)生超時(shí)(Sn_IR(3)=1) 3 收到RST 數(shù)據(jù)包而不是SYN/ACK數(shù)據(jù)包 以上三種情況Sn_SSR 都將變?yōu)镾OCK_CLOSED狀態(tài)0x08斷開(kāi)連接 DISCON不論是TCP 服務(wù)器還是客戶端,它都將執(zhí)行斷開(kāi)連接的處理。 1 主動(dòng)關(guān)閉:它發(fā)送斷開(kāi)連接的請(qǐng)求(FIN 數(shù)據(jù)包)到連接的對(duì)端 2 被動(dòng)關(guān)閉:當(dāng)收到對(duì)端的斷開(kāi)連接請(qǐng)求(FIN 數(shù)據(jù)包)時(shí),它發(fā)送FIN數(shù)據(jù)包。如果斷開(kāi)連接成功( 收到對(duì)端的
32、FIN/ACK 數(shù)據(jù)包) ,Sn_SSR 的狀態(tài)將變?yōu)镾OCK_CLOSED。 如果斷開(kāi)連接失敗,產(chǎn)生TCP 超時(shí)(Sn_IR(3)=1) 且Sn_SSR 的狀態(tài)變?yōu)镾OCK_CLOSED。另外,如果直接使用CLOSE命令而不是DISCON 命令,只有Sn_SSR 的狀態(tài)變?yōu)镾OCK_CLOSED,不產(chǎn)生斷開(kāi)連接的處理(斷開(kāi)連接的請(qǐng)求)。如果在通信過(guò)程中收到對(duì)端發(fā)送來(lái)的RST 數(shù)據(jù)包,Sn_SSR 無(wú)條件變?yōu)镾OCK_CLOSED狀態(tài)。0x10端口關(guān)閉 CLOSE關(guān)閉端口,Sn_SSR 的狀態(tài)變?yōu)镾OCK_CLOSED。0x20發(fā)送數(shù)據(jù) SEND啟動(dòng)數(shù)據(jù)發(fā)送,發(fā)送的字節(jié)長(zhǎng)度由Sn_TX_WRS
33、R確定。當(dāng)發(fā)送過(guò)程結(jié)束,Sn_IR(SENDOK)將置1,主機(jī)檢測(cè)到Sn_IR(SENDOK)=1 后,可以進(jìn)行下一次的傳輸。 如果通過(guò)SEND 命令數(shù)據(jù)包成功傳輸?shù)綄?duì)端(當(dāng)收到對(duì)端的DATA/ACK數(shù)據(jù)包),Sn_TX_FSR根據(jù)傳輸?shù)臄?shù)據(jù)長(zhǎng)度自動(dòng)增加。如果沒(méi)有傳輸成功(沒(méi)有收到DATA/ACK 的數(shù)據(jù)包),將產(chǎn)生超時(shí)(Sn_IR(3)=1),且Sn_SSR 進(jìn)入SOCK_CLOSED狀態(tài)。另外,主機(jī)在使用SEND 命令發(fā)送數(shù)據(jù)之前,首先通過(guò)Sn_TX_FIFOR寄存器將數(shù)據(jù)寫(xiě)入到TX存儲(chǔ)器,然后寫(xiě)入要發(fā)送數(shù)據(jù)的字節(jié)數(shù)到Sn_TX_WRSR。0x40接收數(shù)據(jù) RECV它表示主機(jī)接收到SOCK
34、ETn 的數(shù)據(jù) 在使用RECV 命令前,主機(jī)需要通過(guò)Sn_RX_FIFOR 寄存器從RX存儲(chǔ)器讀取接收的數(shù)據(jù)。下表3.3.2-2為SOCKETn狀態(tài)寄存器中與TCP模式相關(guān)的說(shuō)明:表3.3.2-2 SOCKETn狀態(tài)寄存器值符號(hào)說(shuō)明0x00SOCK_CLOSEDSOCKETn 端口資源釋放狀態(tài) 當(dāng)執(zhí)行DISCON 或CLOSE命令,或產(chǎn)生ARP、TCP 超時(shí),不管以前是什么狀態(tài),此時(shí)它都變?yōu)镾OCK_CLOSED狀態(tài)0x13SOCK_INITSOCKETn 以TCP 模式打開(kāi)時(shí)的狀態(tài) 當(dāng)Sn_MR(P3P0)為Sn_MR_TCP 且執(zhí)行OPEN 命令時(shí),它變?yōu)镾OCK_INIT狀態(tài)。它是建立T
35、CP 連接的第一步。 這時(shí)可以使用LISTEN命令設(shè)置TCP 服務(wù)器模式,或CONNECT 命令設(shè)置TCP客戶端模式0x14SOCK_LISTEN它是SOCKETn 在TCP 服務(wù)器狀態(tài)等待TCP 客戶端的連接請(qǐng)求(SYN 數(shù)據(jù)包)當(dāng)運(yùn)行LISTEN命令時(shí),它改變?yōu)镾OCK_LISTEN 狀態(tài)。當(dāng)成功處理了TCP 客戶端的連接請(qǐng)求(SYN 數(shù)據(jù)包) ,SOCK_LISTEN 變?yōu)镾OCK_ESTABLISHED。如果失敗,將產(chǎn)生超時(shí)中斷(Sn_IR(TIMEOUT)= 1) ,且狀態(tài)改變?yōu)镾OCK_CLOSED0x17SOCK_ESTABLISHED它是TCP 建立連接的狀態(tài) 在SOCK_LI
36、STEN 狀態(tài),收到TCP 客戶端SYN數(shù)據(jù)包并成功處理,它將變成SOCK_ESTABLISHED,或CONNECT命令成功運(yùn)行。在這種狀態(tài),可以進(jìn)行數(shù)據(jù)傳輸,即可以運(yùn)行SEND 或RECV 命令。0x1CSOCK_CLOSE_WAIT該狀態(tài)是收到對(duì)端斷開(kāi)連接請(qǐng)求(FIN 數(shù)據(jù)包) 由于TCP 連接處于半關(guān)閉狀態(tài),但可以進(jìn)行數(shù)據(jù)傳輸。為了徹底斷開(kāi)TCP 連接,必須執(zhí)行DISCON 命令。如果關(guān)閉SOCKEn而沒(méi)有斷開(kāi)連接的處理,可以只運(yùn)行CLOSE命令0x15SOCK_SYNSENT該狀態(tài)表示連接請(qǐng)求(SYN 數(shù)據(jù)包)發(fā)送到TCP 服務(wù)器 該狀態(tài)顯示CONNECT 命令從SOCK_INIT到S
37、OCK_ESTABLISHED的狀態(tài)改變過(guò)程 在這種狀態(tài),如果收到TCP服務(wù)器允許連接信息(SYN/ACK 數(shù)據(jù)包) ,狀態(tài)自動(dòng)轉(zhuǎn)換為SOCK_ESTABLISHED 。如果在產(chǎn)生TCP 超時(shí)(Sn_IR(TIMEOUT)=1)之前沒(méi)有收到TCP 服務(wù)器的SYN/ACK數(shù)據(jù)包,那么它自動(dòng)轉(zhuǎn)變?yōu)镾OCK_CLOSED0x16SOCK_SYNRECV該狀態(tài)表示收到TCP 客戶端的連接請(qǐng)求(SYN 數(shù)據(jù)包) 當(dāng)W5300向TCP 客戶端發(fā)出允許連接(SYN/ACK 數(shù)據(jù)包)信息后,它自動(dòng)變換為SOCK_ESTABLISHED。如果失敗,將產(chǎn)生超時(shí) (Sn_IR(TIMEOUT)=1),且改變?yōu)镾OC
38、K_CLOSED0x18SOCK_FIN_WAITSOCKETn 被關(guān)閉的狀態(tài) 當(dāng)SOCKET完成主動(dòng)關(guān)閉或被動(dòng)關(guān)閉的斷開(kāi)連接處理時(shí)出現(xiàn)這種狀態(tài)。當(dāng)成斷開(kāi)連接處理或TCP 超時(shí)(Sn_IR (TIMEOUT)=1),它的狀態(tài)將改變?yōu)镾OCK_CLOSED0X1BSOCK_TIME _WAIT0X1DSOCK_LAST_ACK3.3.2.1 SOCKET打開(kāi)運(yùn)行OPEN命令將所操作的SOCKET打開(kāi)。1) 打開(kāi)設(shè)置向SOCKETn命令寄存器(Sn_CR)寫(xiě)入OPEN命令:0x01;2) 打開(kāi)狀態(tài)查詢讀取SOCKETn 狀態(tài)寄存器(Sn_SSR),如果寄存器值為0x13(SOCK_LISTEN),
39、 SOCKET即處于打開(kāi)狀態(tài)。3.3.2.2 SOCKET偵聽(tīng)運(yùn)行LISTEN命令將W5300設(shè)置為T(mén)CP 服務(wù)器模式。1) 偵聽(tīng)設(shè)置向SOCKETn命令寄存器(Sn_CR)寫(xiě)入LISTEN命令:0x02;2) 偵聽(tīng)狀態(tài)查詢讀取SOCKETn 狀態(tài)寄存器(Sn_SSR),如果寄存器值為0x14(SOCK_LISTEN),SOCKET即處于偵聽(tīng)狀態(tài)。3.3.2.3 SOCKET鏈接運(yùn)行CONNECT命令將W5300設(shè)置為T(mén)CP 服務(wù)器模式。1) 鏈接設(shè)置向SOCKETn命令寄存器(Sn_CR)寫(xiě)入CONNECT命令:0x03;2) 鏈接狀態(tài)查詢讀取SOCKETn 狀態(tài)寄存器(Sn_SSR),如果
40、寄存器值為0x17(SOCK_ESTABLISHED),或者檢測(cè)到SOCKETn中斷寄存器Sn_IR0被置為1,則SOCKET即處于鏈接狀態(tài)。鏈接成功后,需要將Sn_IR0的中斷標(biāo)識(shí)清除。3.3.3 SOCKET數(shù)據(jù)通信3.3.3.1 接收數(shù)據(jù)檢測(cè)是否接收到對(duì)端發(fā)送過(guò)來(lái)的數(shù)據(jù),并做相應(yīng)處理。1) 檢測(cè)是否接收到數(shù)據(jù)方法一:檢測(cè)SOCKETn中斷寄存器Sn_IR2是否被置為1,如果為1,則確認(rèn)為接收到對(duì)端發(fā)送過(guò)來(lái)的數(shù)據(jù)。方法二:檢測(cè)OCKETn接收數(shù)據(jù)的字節(jié)長(zhǎng)度寄存器(Sn_RX_RSR)是否等于零,如果不等于零,則確認(rèn)為接收到對(duì)端發(fā)送過(guò)來(lái)的數(shù)據(jù)。 Sn_RX_RSR寄存器地址:2) 接收數(shù)據(jù)處
41、理步驟一:讀取OCKETn接收數(shù)據(jù)的字節(jié)長(zhǎng)度寄存器(Sn_RX_RSR),獲取當(dāng)前RX memory中的數(shù)據(jù)長(zhǎng)度。步驟二:根據(jù)步驟一中獲取的數(shù)據(jù)長(zhǎng)度,通過(guò)SOCKETn RX FIFO寄存器(Sn_RX_FIFOR)獲取RX memory中的數(shù)據(jù)。 Sn_RX_FIFOR寄存器地址:步驟三:向SOCKETn命令寄存器(Sn_CR)寫(xiě)入RECV命令:0x40;3) 是否清楚接收中斷接收數(shù)據(jù)處理完成后,再次檢查OCKETn接收數(shù)據(jù)的字節(jié)長(zhǎng)度寄存器(Sn_RX_RSR)是否等于零,如果為零,則清除SOCKETn中斷寄存器Sn_IR2的中斷,否則不清除。3.3.3.2 發(fā)送數(shù)據(jù)將數(shù)據(jù)通過(guò)Sn_TX_F
42、IFOR寫(xiě)入到內(nèi)部TX存儲(chǔ)器后,W5300將試著把數(shù)據(jù)發(fā)送到對(duì)端。發(fā)送數(shù)據(jù)的大小不能比分配給該SOCKETn 的內(nèi)部TX存儲(chǔ)器空間大。為了下一次數(shù)據(jù)的發(fā)送,主機(jī)必須檢查上次SEND 命令是否執(zhí)行完畢。如果上一次的SEND 命令還沒(méi)有執(zhí)行完而又開(kāi)始下一次的SEND 命令,將可能產(chǎn)生各種各樣的錯(cuò)誤。數(shù)據(jù)越大,執(zhí)行SEND 命令所需要的時(shí)間就會(huì)越長(zhǎng)。所以要想提高發(fā)送效率,適當(dāng)將數(shù)據(jù)分為合適的大小發(fā)送。1) 在檢測(cè)到有數(shù)據(jù)發(fā)送請(qǐng)求后,需要獲取SOCKETn剩余存儲(chǔ)空間寄存器(Sn_TX_FSR)和SOCKETn中斷寄存器(Sn_IR)。當(dāng)Sn_IR0等于1,且Sn_IR4等于1時(shí)(第一次發(fā)送數(shù)據(jù)除外)
43、,讀取SOCKETn剩余存儲(chǔ)空間寄存器(Sn_TX_FSR)中的剩余存儲(chǔ)空間,并清除Sn_IR4的中斷(第一次發(fā)送數(shù)據(jù)除外)。 Sn_TX_FSR寄存器地址:2) 通過(guò)SOCKETn TX FIFO寄存器(Sn_TX_FIFOR)發(fā)送待發(fā)數(shù)據(jù),發(fā)送的數(shù)據(jù)量不能超過(guò)Sn_TX_FSR中的剩余存儲(chǔ)空間。3) 待發(fā)數(shù)據(jù)寫(xiě)入TX memory后,向SOCKETn命令寄存器(Sn_CR)寫(xiě)入SEND命令:0x20;3.3.4 SOCKET關(guān)閉3.3.4.1 斷開(kāi)鏈接處理當(dāng)接收到有對(duì)端的斷開(kāi)連接的請(qǐng)求(接收到FIN數(shù)據(jù)包),或者接收到上層應(yīng)用的斷鏈請(qǐng)求后,需要做斷開(kāi)鏈接處理。1) 檢測(cè)到SOCKETn中斷
44、寄存器(Sn_IR)的Sn_IR1等于1時(shí),確認(rèn)為接收到接收到對(duì)端的FIN數(shù)據(jù)包或者接收到對(duì)端的FIN/ACK 數(shù)據(jù)包,可以進(jìn)行斷開(kāi)鏈接處理,并將中斷標(biāo)志清除。2) 向SOCKETn命令寄存器(Sn_CR)寫(xiě)入DISCON命令,進(jìn)行斷開(kāi)鏈接處理。3.3.4.2 超時(shí)超時(shí)可能發(fā)生在TCP 數(shù)據(jù)包傳輸過(guò)程中,如連接請(qǐng)求(SYN數(shù)據(jù)包)或其響應(yīng)數(shù)據(jù)包(SYN/ACK數(shù)據(jù)包)、數(shù)據(jù)(DATA數(shù)據(jù)包)或其響應(yīng)數(shù)據(jù)包(DATA/ACK 數(shù)據(jù)包)、斷開(kāi)連接請(qǐng)求(FIN數(shù)據(jù)包)或其響應(yīng)數(shù)據(jù)包(FIN/ACK 數(shù)據(jù)包)等等。如果以上的數(shù)據(jù)包在RTR和RCR設(shè)定的時(shí)間內(nèi)沒(méi)有發(fā)送出去,那么將產(chǎn)生TCP 超時(shí),且Sn
45、_SSR 將改變?yōu)镾OCK_CLOSED狀態(tài)。當(dāng)檢測(cè)到SOCKETn中斷寄存器(Sn_IR)的Sn_IR3等于1時(shí),既可以確認(rèn)為數(shù)據(jù)通信產(chǎn)生了超時(shí)。3.3.4.3 端口關(guān)閉當(dāng)接收到上層應(yīng)用的關(guān)閉(復(fù)位)請(qǐng)求后,做SOCKET關(guān)閉處理。1) 初始化Sn_IR,即向Sn_IR寫(xiě)入初始值(為中斷屏蔽寄存器的初始值)。2) 向SOCKETn命令寄存器(Sn_CR)寫(xiě)入CLOSE命令,進(jìn)行端口關(guān)閉處理4 邏輯實(shí)現(xiàn)方案根據(jù)上述的流程控制,及實(shí)際的應(yīng)用要求,基于純邏輯的W5300控制器的實(shí)現(xiàn)方案。4.1 邏輯架構(gòu)如下圖4.1-1所示,整個(gè)實(shí)現(xiàn)邏輯可分為4模塊:接口控制模塊(Interface Control
46、)、網(wǎng)絡(luò)主控模塊(Ethernet Main Control)、初始化配置模塊(Initial Config)和端口驅(qū)動(dòng)模塊(SOCKETn Driver)。圖4.1-1 邏輯實(shí)現(xiàn)架構(gòu)圖4.2 接口控制模塊接口控制模塊,Interface Control 主要完成對(duì)控制器讀寫(xiě)W5300的操作信號(hào)進(jìn)行時(shí)序轉(zhuǎn)換,以滿足W5300的讀寫(xiě)時(shí)序要求。4.2.1 讀時(shí)序?qū)崿F(xiàn)4.2.1.1 時(shí)序要求下圖4.2.1.1-1為W5300讀時(shí)序圖:圖4.2.1.1-1 W5300讀時(shí)序圖下表為讀時(shí)序要求說(shuō)明:表4.2.1.1-1 W5300讀時(shí)序要求名稱說(shuō)明最小最大tADDRsAddress Setup Time
47、 after /CS and /RD low -7 nstADDRhAddress Hold Time after /CS or /RD high -tCS/CS Low Time 65 ns-tCSn/CS Next Assert Time 28 ns-tRD/RC Low Time 65 ns-tDATAsDATA Setup Time after /RD low 42 n s-tDATAhDATA Hold Time after /RD and /CS high -7 nstDATAheDATA Hold Extension Time after /CS high -2XPLL_CLK4
48、.2.1.2 邏輯實(shí)現(xiàn)時(shí)序下圖4.2.1.2-1為接口控制模塊在邏輯中實(shí)現(xiàn)讀時(shí)序(通過(guò)100M時(shí)鐘實(shí)現(xiàn)): 圖4.2.1.2-1 W5300讀時(shí)序?qū)崿F(xiàn)圖4.2.2 寫(xiě)時(shí)序?qū)崿F(xiàn)4.2.2.1 時(shí)序要求下圖4.2.2.1-1為W5300寫(xiě)時(shí)序圖:圖4.2.2.1-1 W5300寫(xiě)時(shí)序圖下表為寫(xiě)時(shí)序要求說(shuō)明:表4.2.2.1-1 W5300寫(xiě)時(shí)序要求名稱說(shuō)明最小最大tADDRsAddress Setup Time after /CS and /WR low -7 nstADDRhAddress Hold Time after /CS or /WR high -tCS/CS Low Time 50 n
49、s-tCSn/CS Next Assert Time 28 nstWR/WR low time 50 nstDATAsDATA Setup Time after /WR low 7 ns7ns+7XPLL_CLKtDATAfData Fetch Time 14 nstWR - tDATAstDATAhData Hold Time after /WR high 7 ns-4.2.2.2 邏輯實(shí)現(xiàn)時(shí)序下圖4.2.2.2-1為接口控制模塊在邏輯中實(shí)現(xiàn)寫(xiě)時(shí)序(通過(guò)100M時(shí)鐘實(shí)現(xiàn)):圖4.2.2.2-1 W5300寫(xiě)時(shí)序圖4.2.3 實(shí)現(xiàn)狀態(tài)機(jī)接口控制模塊的實(shí)現(xiàn)狀態(tài)機(jī)如下圖:圖4.2.3-1 接口控制
50、模塊的實(shí)現(xiàn)狀態(tài)機(jī)狀態(tài)機(jī)各狀態(tài)說(shuō)明:1. timing_idle:狀態(tài)機(jī)初始化,復(fù)位后后進(jìn)入的狀態(tài),160ns后跳出。2. CMD_rdfifo_judge:判斷需要寫(xiě)入W5300的數(shù)據(jù)緩存fifo是否有數(shù)據(jù),并寄存當(dāng)前fifo中的數(shù)據(jù)量。3. rd_CMD_fifo:讀取數(shù)據(jù)緩存fifo中的數(shù)據(jù),該狀態(tài)維持時(shí)間需要滿足tCSn的時(shí)間(如果時(shí)鐘為100M,則該狀態(tài)需要維持時(shí)間必須為30ns)。4. CMD_wr_rd_out:在該狀態(tài)需要判斷rd_CMD_fifo讀出來(lái)的數(shù)據(jù)是讀W5300還是寫(xiě)W5300,并根據(jù)判斷的結(jié)果對(duì)W5300進(jìn)行讀寫(xiě)操作。4.2.4 接口定義4.3 主控制模塊主控制模塊
51、,eth main control 主要對(duì)初始化配置模塊、SOCKETn驅(qū)動(dòng)模塊的分時(shí)控制。4.3.1 實(shí)現(xiàn)狀態(tài)機(jī)下圖4.3.1-1為主控制模塊的實(shí)現(xiàn)狀態(tài)機(jī):圖4.3.1-1 主控制模塊的實(shí)現(xiàn)狀態(tài)機(jī)狀態(tài)機(jī)各狀態(tài)說(shuō)明:1. mc_idle : 狀態(tài)機(jī)初始化,復(fù)位后后進(jìn)入的狀態(tài),160ns后跳出。2. host_reset:在該狀態(tài)對(duì)W5300硬件復(fù)位,復(fù)位時(shí)間為為65536ns。3. reset_wait:W5300復(fù)位后的等待狀態(tài),維持時(shí)間是1ms。4. host_config:產(chǎn)生控制信號(hào),驅(qū)動(dòng)初始化配置模塊對(duì)W5300進(jìn)行參數(shù)配置。5. host_reg_gain:W5300的相關(guān)寄存器的
52、獲取模塊,獲取W5300的中斷寄存器和各SOCKET的RSR寄存器。6. host_ir_detect:對(duì)W5300中斷寄存器的IPCF位判斷。7. ip_conflict:如果W5300中斷寄存器的IPCF位置1,則狀態(tài)機(jī)跳入該狀態(tài),表明有網(wǎng)絡(luò)中存在IP沖突。8. app_req_proc:對(duì)后端應(yīng)用的請(qǐng)求做處理,產(chǎn)生各個(gè)SOCKET的mark寄存器,如下表: 表4.3.1-1 Sn_MR寄存器Sn_prc_mark6:0名稱說(shuō)明bit0Ir_reqW5300的SOCKETn有中斷標(biāo)識(shí)bit1moni_ req后端應(yīng)用的監(jiān)聽(tīng)請(qǐng)求bit2Link_req后端應(yīng)用的鏈接請(qǐng)求bit3Discon_
53、req后端應(yīng)用的斷鏈請(qǐng)求bit4Close_req后端應(yīng)用的關(guān)閉請(qǐng)求bit5send_req后端應(yīng)用的數(shù)據(jù)發(fā)送請(qǐng)求bit6Recv_reqW5300中有數(shù)據(jù)接收請(qǐng)求9. Sn_proc_judge:對(duì)mark寄存器判斷,如果不為0,則進(jìn)入Sn_driver_proc狀態(tài)。10. Sn_driver_proc:產(chǎn)生控制信號(hào),驅(qū)動(dòng)SOCKET啟動(dòng)模塊對(duì)mark寄存器中的請(qǐng)求做相應(yīng)處理。4.3.2 接口定義4.4 初始化配置模塊初始化配置模塊,initial config 主要完成W5300的初始化參數(shù)的配置:本端IP、對(duì)端IP,子網(wǎng)掩碼等,具體參數(shù)可參見(jiàn)2.2節(jié)。4.4.1 實(shí)現(xiàn)狀態(tài)機(jī)下圖4.4.1-1為初始化配置模塊的實(shí)現(xiàn)狀態(tài)機(jī):圖4.4.1-1 初始化配置模塊的實(shí)現(xiàn)狀態(tài)機(jī)狀態(tài)機(jī)各狀態(tài)說(shuō)明:1. config_idle:初始狀態(tài),等待主控模塊的啟動(dòng)。2. overall_config、socket0_config、socket1_config、socket2_conf
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版紅酒貨物運(yùn)輸倉(cāng)儲(chǔ)合同
- 2025年度手汽車二手市場(chǎng)一手買賣合同2篇
- 2025年度土地征收拆遷房屋補(bǔ)償轉(zhuǎn)讓合同書(shū)3篇
- 2025年度農(nóng)業(yè)作業(yè)掛車購(gòu)置及補(bǔ)貼合同協(xié)議3篇
- 2025年度種羊遺傳資源保護(hù)與購(gòu)銷合同3篇
- 2025年度綠色建筑示范項(xiàng)目勞務(wù)承包合同3篇
- 二零二五年度護(hù)理機(jī)構(gòu)與護(hù)士就業(yè)合同模板3篇
- 2024年銷售返利合同標(biāo)準(zhǔn)范本版B版
- 2025年度房屋中介合同效力鑒定與合同履行監(jiān)督機(jī)制3篇
- 2025年手車銷售合同電子版專業(yè)版含售后服務(wù)體系3篇
- 道路運(yùn)輸企業(yè)安全生產(chǎn)管理人員安全考核試題題庫(kù)與答案
- 年終抖音運(yùn)營(yíng)述職報(bào)告
- 車間修繕合同模板
- 腦梗死患者的護(hù)理常規(guī)
- 2024年7月國(guó)家開(kāi)放大學(xué)法律事務(wù)專科《法律咨詢與調(diào)解》期末紙質(zhì)考試試題及答案
- 護(hù)士條例解讀
- 醫(yī)務(wù)人員崗前培訓(xùn)課件
- SQE年終總結(jié)報(bào)告
- 檢修工(題庫(kù))附答案
- 2025屆高考語(yǔ)文一輪復(fù)習(xí):小說(shuō)情節(jié)結(jié)構(gòu)之伏筆 練習(xí)題(含答案)
- 《化學(xué)實(shí)驗(yàn)室安全》課程教學(xué)大綱
評(píng)論
0/150
提交評(píng)論