欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于fpga的powerlink從站幀緩存管理系統(tǒng)的制作方法

文檔序號(hào):8945762閱讀:383來(lái)源:國(guó)知局
一種基于fpga的powerlink從站幀緩存管理系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,更具體地,涉及一種基于FPGA的P0WERLINK從站 幀緩存管理系統(tǒng)。
【背景技術(shù)】
[0002]P0WERLINK通信行規(guī)中包含7種類型的以太網(wǎng)數(shù)據(jù)幀,分別是SoC、PReq、PRes、SoA、ASnd、AMNI、AInv0
[0003] POWERLINK通信行規(guī)中,包含應(yīng)用層數(shù)據(jù)的幀為Preq、Pres、Asnd中的SDO,其余類 型數(shù)據(jù)幀用于網(wǎng)絡(luò)管理。其中Preq、SDO幀屬于單播幀,Pres幀屬于廣播幀。
[0004] 如圖1所示,在POWERLINK通信行規(guī)下有兩種工作模式,在Powerlink模式下,通 信周期細(xì)分為等時(shí)同步階段和異步階段,和空閑階段。其中SoC幀的發(fā)送作為等時(shí)同步階 段的起點(diǎn),接著重復(fù)進(jìn)行Preq幀/Pres幀過程。SoA幀的發(fā)送作為等時(shí)同步階段的結(jié)束和 異步階段的開始,在異步階段,可以進(jìn)行SDO通信??臻e階段是一個(gè)周期之中同步階段和異 步階段結(jié)束之后的通信空閑階段,該階段沒有任何數(shù)據(jù)幀的傳輸。
[0005] 網(wǎng)絡(luò)管理數(shù)據(jù)幀要求從站在接收到之后立即進(jìn)行處理并且應(yīng)當(dāng)在接收到下一幀 之前處理完畢。過程數(shù)據(jù)幀Preq和Pres要求從站在一個(gè)通信周期內(nèi)處理完畢。
[0006] SDO通信屬于異步通信,從站對(duì)于接收到的SDO幀不必立即進(jìn)行處理,只要在主站 限定的時(shí)間之內(nèi)處理完畢即可,而這個(gè)限定時(shí)間通常大于2個(gè)通信周期。
[0007] 根據(jù)當(dāng)前POWERLINK的解決方案,對(duì)幀的接收緩存處理有兩種途徑:
[0008] 1、使用MAC芯片,所有數(shù)據(jù)幀按照先后到達(dá)的順序全部存入MAC的緩存區(qū)中,由 CPU調(diào)用緩存區(qū)中的內(nèi)容。
[0009] 2、使用可編程器件,如FPGA,調(diào)用0PENMACIP核,0PENMAC將接收緩存DPRAM分成 若干個(gè)區(qū)域,組成存儲(chǔ)緩存隊(duì)列,經(jīng)過0PENMAC過濾的POWERLINK數(shù)據(jù)幀按照先后到達(dá)的順 序依次存放在存儲(chǔ)隊(duì)列中,當(dāng)隊(duì)列排滿后,新的數(shù)據(jù)幀放在隊(duì)列的起點(diǎn)。
[0010] 第一種方案,MAC對(duì)于所有的數(shù)據(jù)幀不加分辨都接收,當(dāng)網(wǎng)絡(luò)中的從站數(shù)量增加之 后,其中某一從站必將收到大量不屬于本從站的數(shù)據(jù)幀,如果從站沒有及時(shí)處理數(shù)據(jù),當(dāng)緩 存區(qū)滿后,必然出現(xiàn)數(shù)據(jù)被覆蓋的情況,造成數(shù)據(jù)的丟失。
[0011] 第二種方案,0PENMAC可以過濾掉不屬于本從站的數(shù)據(jù)幀,但是該方法仍然存在 問題,如前所述,SDO通信屬于異步通信,SDO數(shù)據(jù)幀的處理不要求立即進(jìn)行,受限于隊(duì)列長(zhǎng) 度,SDO數(shù)據(jù)幀仍然可能在被處理之前就被覆蓋掉。
[0012] 對(duì)于上述問題,通常采取的措施是增加通信周期,或者增加緩存區(qū)的長(zhǎng)度,以提供 更多的時(shí)間供從站處理數(shù)據(jù)幀。但是前者將影響通信性能,后者受限于緩存區(qū)的長(zhǎng)度,不可 能無(wú)限增加緩存區(qū)的長(zhǎng)度,同時(shí)兩種措施都不能從根本上解決問題。

【發(fā)明內(nèi)容】

[0013] 本發(fā)明的主要目的旨在解決上述問題,通過對(duì)幀緩存結(jié)構(gòu)進(jìn)行動(dòng)態(tài)規(guī)劃,避免了 有效數(shù)據(jù)由于處理不及時(shí)而被覆蓋的問題。
[0014] 為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于FPGA的P0WERLINK從站幀緩存管理 系統(tǒng),在FPGA內(nèi)部實(shí)現(xiàn)數(shù)據(jù)幀類型檢測(cè)模塊、數(shù)據(jù)幀緩存管理模塊,使用FPGA內(nèi)部塊RAM 作為幀緩存區(qū),在數(shù)據(jù)幀接收過程中由數(shù)據(jù)幀類型檢測(cè)模塊對(duì)當(dāng)前幀的幀類型進(jìn)行識(shí)別, 并將幀類型識(shí)別結(jié)果傳遞給數(shù)據(jù)幀緩存管理模塊,數(shù)據(jù)幀緩存管理模塊根據(jù)幀類型識(shí)別結(jié) 果決定存儲(chǔ)下一個(gè)幀的緩存區(qū)序列號(hào),并且緩存區(qū)序列號(hào)將當(dāng)前數(shù)據(jù)幀存入相應(yīng)的緩存區(qū) 中,其中:數(shù)據(jù)幀類型檢測(cè)模塊和數(shù)據(jù)幀緩存管理模塊使用VHDL語(yǔ)言編寫,在FPGA內(nèi)部以 硬件邏輯門的形式實(shí)現(xiàn),幀緩存區(qū)域使用FPGA內(nèi)部提供的RAM存儲(chǔ)塊,模塊之間通過FPGA 內(nèi)部的導(dǎo)線資源進(jìn)行信息的傳遞,數(shù)據(jù)幀類型檢測(cè)模塊向數(shù)據(jù)幀緩存管理模塊提供幀類型 fg息。
[0015] 在本發(fā)明的一個(gè)實(shí)施例中,所述數(shù)據(jù)幀類型檢測(cè)模塊具體用于:
[0016] 首先對(duì)目的地址進(jìn)行檢測(cè),C_DLL_MULTICAST_ASND和C_DLL_MULTICAST_PRES分 別為P0WERLINK通信行規(guī)規(guī)定的SDO幀和Pres幀應(yīng)具有的目的地址,如果數(shù)據(jù)幀的目的地 址與這兩者中的某一個(gè)相同,則進(jìn)繼續(xù)判斷這個(gè)數(shù)據(jù)幀的具體類型;如果幀的目的地址與 從站的本地MAC地址相同,則進(jìn)行接下來(lái)的檢測(cè)判斷該幀是否為Preq幀;
[0017] 對(duì)于通過目的地址檢測(cè)的數(shù)據(jù)幀,進(jìn)行以太網(wǎng)類型的檢測(cè),P0WERLINK通信行規(guī)規(guī) 定的以太網(wǎng)類型的數(shù)值為C_DLL_ETHERTYPE_EPL,符合要求的數(shù)據(jù)幀繼續(xù)對(duì)其目的進(jìn)行檢 測(cè);
[0018] 目的等于本地NODEID的數(shù)據(jù)幀,認(rèn)為是Sdo幀或者Preq幀;接下來(lái)對(duì)這兩 種幀的源進(jìn)行檢測(cè),如果源的數(shù)值等于C_ADR_MN_DEF_NODE_ID,則目的地址為C_DLL_ MULTICAST_ASND的為SDO幀,目的地址為本地MAC地址的為Preq幀;
[0019] 目的等于C_ADR_BROADCAST的數(shù)據(jù)幀,對(duì)其源進(jìn)行檢測(cè),如果源的數(shù)值為交叉通 信從站ID,即與該從站進(jìn)行交叉通信的從站的ID,則認(rèn)為該幀的類型為Pres。
[0020] 在本發(fā)明的一個(gè)實(shí)施例中,所述數(shù)據(jù)幀緩存管理模塊具體包括5個(gè)寄存器,其 中,寄存器CurRxBufReg用于保存當(dāng)前幀所在緩存區(qū)的區(qū)號(hào),寄存器NextRxBufReg保存 下一個(gè)數(shù)據(jù)幀應(yīng)當(dāng)處于的緩存區(qū)的區(qū)號(hào),寄存器PreqBufReg、寄存器PresBufReg、寄存器 SdoBufReg分別用于保存當(dāng)前Preq幀、Pres幀、SDO幀所在的緩存區(qū)區(qū)號(hào)。
[0021] 在本發(fā)明的一個(gè)實(shí)施例中,所述數(shù)據(jù)幀緩存管理模塊具體用于:
[0022] 當(dāng)系統(tǒng)復(fù)位或者最近數(shù)據(jù)幀接收完畢之后,首先將NextRxBufReg的值賦給 CurRxBufReg;
[0023] 根據(jù)數(shù)據(jù)幀類型檢測(cè)模塊提供的結(jié)果,更新PreqBufReg,PresBufReg,SdoBufReg 中的數(shù)值:如果幀類型為Preq,則將CurRxBufReg的值賦給CurRxBufReg;如果幀類型為 Pres,則將CurRxBufReg的值賦給PresBufReg;如果幀類型為Sdo,則將CurRxBufReg的 值賦給SdoBufReg;如果幀類型不屬于上述三種類型的任意一種,則不進(jìn)行PreqBufReg, PresBufReg,SdoBufReg的更新;
[0024] 在上述三種寄存器的值更新完成之后,更新NextRxBufReg中的數(shù)值, NextRxBufReg的取值為所有的幀緩存區(qū)區(qū)號(hào)當(dāng)中,不存在于PreqBufReg,PresBufReg, SdoBufReg三個(gè)緩存區(qū)中的所有區(qū)號(hào)中,數(shù)值最小的區(qū)號(hào)。
[0025] 在本發(fā)明的一個(gè)實(shí)施例中,RAM被分為若干個(gè)幀緩存區(qū),每個(gè)緩存區(qū)有兩種狀態(tài), 鎖定和解鎖,處于鎖定狀態(tài)的緩存區(qū)無(wú)法接收數(shù)據(jù)幀,只能被讀??;處于解鎖狀態(tài)的緩存區(qū) 可以被任意讀寫,緩存區(qū)的狀態(tài)由數(shù)據(jù)幀緩存管理模塊確定,系統(tǒng)復(fù)位之后,所有緩存區(qū)的 狀態(tài)均為解鎖狀態(tài)。
[0026] 在本發(fā)明的一個(gè)實(shí)施例中,PreqBufReg、PresBufReg、SdoBufReg中保存的是當(dāng)前 被鎖定的緩存區(qū)的序號(hào),如果為〇,表示當(dāng)前沒有緩存區(qū)被鎖定,如果某一緩存區(qū)的序號(hào)不 在這三個(gè)寄存器當(dāng)中,表明該緩存區(qū)沒有被鎖定,系統(tǒng)復(fù)位后,CurRxBufReg中的值為1, NextRxBufReg中的值為 1,PreqBufReg、PresBufReg、SdoBufReg中的值為 0。
[0027] 在本發(fā)明的一個(gè)實(shí)施例中,在系統(tǒng)復(fù)位之后,第一次接收到的數(shù)據(jù)幀存放在緩存 區(qū)1,之后接收到的數(shù)據(jù)幀的存儲(chǔ)位置由數(shù)據(jù)幀緩存管理模塊決定,。如果當(dāng)前接收到的 數(shù)據(jù)幀的類型為Preq幀,或者Pres幀,或者Sdo幀,則相應(yīng)的,PreqBufReg,PresBufReg, SdoBufReg中的值變?yōu)楫?dāng)前數(shù)據(jù)幀緩存區(qū)的值,同時(shí)NextRxBufReg中的值為為所有未被鎖 定的緩存區(qū)中,序號(hào)最小的緩存區(qū)的序號(hào),下一個(gè)數(shù)據(jù)幀的存儲(chǔ)位置,即為NextRxBufReg 中的數(shù)值所代表的緩存區(qū)。
[0028] 在本發(fā)明的一個(gè)實(shí)施例中,緩存區(qū)的總數(shù)
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
海口市| 历史| 浦江县| 通化县| 故城县| 兴城市| 闻喜县| 青海省| 鲁山县| 沁阳市| 三门县| 乐清市| 定边县| 安多县| 睢宁县| 五台县| 眉山市| 正定县| 英超| 永川市| 科尔| 章丘市| 富平县| 奉贤区| 桂林市| 佛冈县| 年辖:市辖区| 安义县| 浮梁县| 故城县| 常德市| 兴化市| 唐海县| 远安县| 克东县| 米易县| 盱眙县| 抚松县| 广汉市| 红桥区| 额敏县|