本發(fā)明屬于總線通信技術(shù)領(lǐng)域,更具體的說,尤其涉及一種基于FPGA的總線通信控制器及總線通信控制方法。
背景技術(shù):
如同大多數(shù)網(wǎng)絡(luò)通信一樣,F(xiàn)F(Foudation Field,基金會現(xiàn)場)總線通信在數(shù)據(jù)鏈路層及物理層所需要的總線驅(qū)動、數(shù)據(jù)編碼、時鐘同步和幀檢驗等工作需要通過軟硬件結(jié)合來完成。
目前控制FF現(xiàn)場總線通信的方式有:在MCU(Micro Control Unit,微控制器)中集成總線數(shù)據(jù)的通信模塊來實現(xiàn)對FF現(xiàn)場總線通信的控制,但是若使用MCU編寫軟件來控制FF現(xiàn)場總線通信的話,會在MCU中加入FF總線上數(shù)據(jù)的收發(fā)功能,而這一功能會影響MCU對接收到的數(shù)據(jù)進(jìn)行處理的效率,進(jìn)而為提高數(shù)據(jù)處理效率,需要采用核心頻率較高的MCU,而這一方式又會增加芯片成本。
又或者使用中國科學(xué)院沈陽自動化研究所的專利《FF總線幀類型識別器》來控制FF現(xiàn)場總線通信,F(xiàn)F總線幀類型識別器可以在接收到幀信號后,對幀信號的類型進(jìn)行識別存儲和上送,但是FF總線幀類型識別器并不是一款底層的通信控制芯片,不能對FF現(xiàn)場總線的收發(fā)進(jìn)行調(diào)度。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種基于FPGA的總線通信控制器及總線通信控制方法,用于降低芯片成本且實現(xiàn)對FF總線的數(shù)據(jù)收發(fā)進(jìn)行調(diào)度。技術(shù)方案如下:
本發(fā)明提供一種基于現(xiàn)場可編程門陣列FPGA的總線通信控制器,所述總線通信控制器包括:寄存器管理模塊、中斷管理模塊、控制模塊、現(xiàn)場總線信號控制模塊和接口模塊;
所述寄存器管理模塊中有多種類型的寄存器,且所述寄存器管理模塊與微控制器相連,用于通過所述微控制器控制多種類型的寄存器的取值,以使所述微控制器基于多種類型的寄存器的取值監(jiān)控所述總線通信控制器的工作過程;
中斷管理模塊,用于將基金會現(xiàn)場FF總線上數(shù)據(jù)的收發(fā)情況反饋給所述微控制器;
所述控制模塊,用于當(dāng)所述寄存器管理模塊中多種類型的寄存器的取值指示所述總線通信控制器處于數(shù)據(jù)發(fā)送狀態(tài)時,控制所述現(xiàn)場總線信號控制模塊對將要發(fā)送的數(shù)據(jù)進(jìn)行處理,以及用于當(dāng)所述寄存器管理模塊中多種類型的寄存器的取值指示所述總線通信控制器處于數(shù)據(jù)接收狀態(tài)時,控制所述現(xiàn)場總線信號控制模塊對接收的總線數(shù)據(jù)進(jìn)行處理;
所述現(xiàn)場總線信號控制模塊,用于通過FF總線協(xié)議對所述將要發(fā)送的數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換,得到符合FF總線協(xié)議格式的信號,并通過所述接口模塊發(fā)送到FF總線上,以及用于通過所述接口模塊接收總線數(shù)據(jù),對所述總線數(shù)據(jù)進(jìn)行數(shù)據(jù)采樣、數(shù)據(jù)解碼和數(shù)據(jù)校驗,并保存校驗正確的所述總線數(shù)據(jù)。
優(yōu)選地,所述總線通信控制器還包括:第一存儲器和第二存儲器;
所述第一存儲器,用于存儲所述將要發(fā)送的數(shù)據(jù),且所述現(xiàn)場總線信號控制模塊,用于在接收到所述微控制器指示的所述將要發(fā)送的數(shù)據(jù)的長度后,從所述第一存儲器中獲取與所述長度相對應(yīng)的數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換;
所述第二存儲器,用于存儲所述校驗正確的所述總線數(shù)據(jù)。
優(yōu)選地,所述現(xiàn)場總線信號控制模塊,用于采用第一時鐘進(jìn)行編碼轉(zhuǎn)換,并采用第二時鐘進(jìn)行發(fā)送,其中所述第一時鐘高于所述第二時鐘。
優(yōu)選地,所述現(xiàn)場總線信號控制模塊,用于通過查找信號跳變端取中間值的方法進(jìn)行數(shù)據(jù)采樣。
優(yōu)選地,所述總線通信控制器還包括:重配置模塊,所述重配置模塊具備在線燒寫功能,用于通過所述在線燒寫功能對所述總線通信控制器中的各個模塊進(jìn)行在線升級。
優(yōu)選地,所述總線通信控制器的管腳至少包括:與所述微控制器連接相關(guān)的第一管腳、與外部的閃存連接相關(guān)的第二管腳和與FF總線連接相關(guān)的第三管腳:
所述第一管腳,用于使所述總線通信控制器與所述微控制器進(jìn)行通信,且所述第一管腳至少包括:讀寫使能端、多路數(shù)據(jù)線、多路地址線和中斷輸出端,所述讀寫使能端用于控制所述總線通信控制器與所述微控制器之間的讀寫操作,所述中斷輸出端,用于連接所述微控制器的中斷輸入端,以向所述微控制器發(fā)送中斷信號,所述中斷信號用于指示所述總線通信控制器的工作狀態(tài),所述工作狀態(tài)為數(shù)據(jù)發(fā)送狀態(tài)或數(shù)據(jù)接收狀態(tài);
所述第二管腳,用于通過介質(zhì)連接單元MAU與FF總線相連接,且所述第二管腳至少包括:一個輸入端、一個輸出端和一個使能控制端,所述使能控制端用于對所述輸出端的對外輸出進(jìn)行使能控制;
所述第三管腳,用于與外部的閃存連接,通過所述重配置模塊對所述閃存中內(nèi)部數(shù)據(jù)的修改來在線升級所述總線通信控制器中的各個模塊。
優(yōu)選地,所述第一管腳還包括片選端,用于對所述多路地址線和多路數(shù)據(jù)線進(jìn)行復(fù)用,以實現(xiàn)對不同F(xiàn)F總線的選擇。
優(yōu)選地,所述接口模塊,用于將接收到的信號轉(zhuǎn)換為所述總線通信控制器可使用的信號,以及用于根據(jù)所述片選端的取值來調(diào)用對應(yīng)的所述現(xiàn)場總線信號控制模塊。
優(yōu)選地,所述寄存器管理模塊包括:地址識別子模塊、寄存器寫入子模塊和寄存器輸出子模塊;
所述地址識別子模塊,用于識別所述微控制器的當(dāng)前操作對應(yīng)的地址,并基于所述微控制器的當(dāng)前操作對應(yīng)的地址,查找對應(yīng)的寄存器;
所述寄存器寫入子模塊,用于當(dāng)所述微控制器的當(dāng)前操作為寫入操作時,將所述微控制器輸入的值寫入到對應(yīng)的寄存器中;
所述寄存器輸出子模塊,用于當(dāng)所述微控制器的當(dāng)前操作為讀取操作時,將對應(yīng)的寄存器的取值發(fā)送給所述微控制器,以實現(xiàn)對所述總線通信控制器的工作過程的監(jiān)控。
本發(fā)明還提供一種總線通信控制方法,所述方法應(yīng)用于上述總線通信控制器中,所述方法包括:
在所述總線通信控制器的片選端使能后,接收微控制器在所述總線通信控制器的多路地址線上傳輸?shù)男盘枺?/p>
從所述多路地址線上傳輸?shù)男盘栔凶R別出微控制器的當(dāng)前操作指向的地址;
接收微控制器在所述總線通信控制器的多路數(shù)據(jù)線上傳輸?shù)臄?shù)據(jù),并將所述多路數(shù)據(jù)線上傳輸?shù)臄?shù)據(jù)寫入到對應(yīng)的地址,以改變所述總線通信控制器中多種類型的寄存器的取值;
當(dāng)基于所述多種類型的寄存器的取值指示所述總線通信控制器的工作狀態(tài)為數(shù)據(jù)發(fā)送狀態(tài)時,控制所述總線通信控制器通過所述多路數(shù)據(jù)線接收所述微控制器傳輸?shù)膶⒁l(fā)送的數(shù)據(jù);
對所述將要發(fā)送的數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換,得到符合基金會現(xiàn)場FF總線協(xié)議格式的信號,并將符合FF總線協(xié)議格式的信號發(fā)送到FF總線上;
當(dāng)基于所述多種類型的寄存器的取值指示所述總線通信控制器的工作狀態(tài)為數(shù)據(jù)接收狀態(tài)時,接收FF總線上發(fā)送的總線數(shù)據(jù);
對所述總線數(shù)據(jù)進(jìn)行數(shù)據(jù)采樣、數(shù)據(jù)解碼和數(shù)據(jù)校驗,并保存校驗正確的所述總線數(shù)據(jù),以使所述微控制器從所述總線通信控制器中獲取到校驗正確的所述總線數(shù)據(jù)。
與現(xiàn)有技術(shù)相比,本發(fā)明提供的上述技術(shù)方案具有如下優(yōu)點:
從上述技術(shù)方案可知,本發(fā)明提供的技術(shù)方案可以基于寄存器管理模塊中多種類型的寄存器的取值指示總線通信控制器處于數(shù)據(jù)發(fā)送狀態(tài)或者數(shù)據(jù)接收狀態(tài)時,由控制模塊來控制現(xiàn)場總線信號控制模塊執(zhí)行對應(yīng)的操作,實現(xiàn)對FF總線上數(shù)據(jù)發(fā)送和數(shù)據(jù)接收的調(diào)度,即實現(xiàn)對FF總線的數(shù)據(jù)收發(fā)調(diào)度。并且從本發(fā)明提供的技術(shù)方案可知,MCU并未參與FF總線上數(shù)據(jù)發(fā)送和數(shù)據(jù)接收的處理過程,因此無需在MCU中加入處理算法,這樣MCU就無需采用核心頻率較高的MCU,降低成本。并且上述總線通信控制器可以基于FPGA實現(xiàn),降低總線通信控制器對國外芯片的依賴性,進(jìn)一步降低成本。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的基于FPGA的總線通信控制器的一種結(jié)構(gòu)示意圖;
圖2是圖1中寄存器管理模塊的結(jié)構(gòu)示意圖;
圖3是圖1所示基于FPGA的總線通信控制器的流程圖;
圖4是FF總線上發(fā)送的報文幀的結(jié)構(gòu)圖;
圖5是本發(fā)明實施例提供的基于FPGA的總線通信控制器的另一種結(jié)構(gòu)示意圖;
圖6是本發(fā)明實施例提供的基于FPGA的總線通信控制器的再一種結(jié)構(gòu)示意圖;
圖7是本發(fā)明實施例提供的基于FPGA的總線通信控制器中各個管腳的示意圖;
圖8是本發(fā)明實施例提供的基于FPGA的總線通信控制器判定當(dāng)前操作的流程圖;
圖9是本發(fā)明實施例的總線通信控制方法的流程圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
請參閱圖1,其示出了本發(fā)明實施例提供的基于現(xiàn)場可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)的總線通信控制器的結(jié)構(gòu)示意圖,用于基于FPGA實現(xiàn)對不同F(xiàn)F總線上數(shù)據(jù)發(fā)送和數(shù)據(jù)接收的調(diào)度,以降低成本。具體地,上述圖1所示的基于FPGA的總線通信控制器可以包括:寄存器管理模塊11、中斷管理模塊12、控制模塊13、現(xiàn)場總線信號控制模塊14和接口模塊15。
其中寄存器管理模塊11中有多種類型的寄存器,且寄存器管理模塊11與MCU相連,用于通過MCU控制多種類型的寄存器的取值,以使MCU基于多種類型的寄存器的取值監(jiān)控總線通信控制器的工作過程。
在本發(fā)明實施例中,寄存器管理模塊11是總線通信控制器的中心,具體地,位于總線通信控制器外部的MCU只能連接到寄存器管理模塊,而無法直接去調(diào)度總線通信控制器中的其他模塊,若MCU需要調(diào)度總線通信控制器中的其他模塊,則需要控制寄存器管理模塊11中的多種類型的寄存器的取值來控制總線通信控制器中各個模塊,以實現(xiàn)監(jiān)控總線通信控制器的工作過程。
為實現(xiàn)對寄存器管理模塊11中多種類型的寄存器的取值進(jìn)行控制,本發(fā)明實施例為每種寄存器分配一個地址,這樣MCU就可以基于每種寄存器的地址來向寄存器寫入對應(yīng)的值或者基于地址讀取寄存器的取值。為此本發(fā)明實施例提供的寄存器管理模塊11的結(jié)構(gòu)如圖2所示,可以包括:地址識別子模塊111、寄存器寫入子模塊112和寄存器輸出子模塊113。
地址識別子模塊111,用于識別MCU的當(dāng)前操作對應(yīng)的地址,并基于MCU的當(dāng)前操作對應(yīng)的地址,查找對應(yīng)的寄存器。
寄存器寫入子模塊112,用于當(dāng)MCU的當(dāng)前操作為寫入操作時,將MCU輸入的值寫入到對應(yīng)的寄存器中。
寄存器輸出子模塊113,用于當(dāng)MCU的當(dāng)前操作為讀取操作時,將對應(yīng)的寄存器的取值發(fā)送給MCU,以實現(xiàn)對總線通信控制器的工作過程的監(jiān)控。
中斷管理模塊12,用于將FF總線上數(shù)據(jù)的收發(fā)情況反饋給MCU,并且中斷管理模塊12在產(chǎn)生中斷信號時對各種類型的寄存器的操作是完全并行的,且中斷寄存器的取值在讀取后會馬上被清除,具體地,向下由總線通信控制器內(nèi)所存在的狀態(tài)寄存器決定中斷產(chǎn)生的必要性,向上由MCU控制中斷使能寄存器來管理中斷產(chǎn)生的前提條件,使得只有當(dāng)MCU開啟中斷功能且總線通信控制器的內(nèi)部達(dá)到中斷產(chǎn)生的條件后才會有中斷產(chǎn)生,而MCU也是通過改寫中斷使能寄存器的值來控制中斷,防止中斷的不必要產(chǎn)生。其中中斷使能寄存器管理所有中斷可否產(chǎn)生,MCU通過中斷使能寄存器保證在接收過程中不會再次產(chǎn)生重復(fù)的接收中斷等可能操作。
在本發(fā)明實施例中,中斷管理模塊12的操作機(jī)制如下:
1)中斷管理模塊12產(chǎn)生中斷信號給MCU,其中中斷信號包括兩個信號,一個總中斷信號表示中斷,一個副中斷信號表示哪一個現(xiàn)場總線信號控制模塊14;
2)MCU接收到總中斷信號,進(jìn)入中斷請求0(Interrupt Request,IRQ)的中斷程序;
3)MCU根據(jù)副中斷信號判別調(diào)用哪一路中斷函數(shù),其中中斷函數(shù)的作用是反饋信號至MCU使得MCU知道產(chǎn)生哪種中斷,如接收到前導(dǎo)碼中斷,接收完成中斷,發(fā)送完成中斷、時鐘定時中斷等。;
4)中斷管理模塊12等待MCU讀取總線通信控制器來中斷狀態(tài)寄存器0(對應(yīng)數(shù)據(jù)接收和數(shù)據(jù)發(fā)送)、中斷狀態(tài)寄存器2(對應(yīng)時鐘),并根據(jù)中斷狀態(tài)寄存器對應(yīng)的中斷位是否被置1來判斷產(chǎn)生哪一個中斷(數(shù)據(jù)接收還是數(shù)據(jù)發(fā)送);
5)置該中斷操作標(biāo)志,同時清空該中斷位;
在本發(fā)明實施例中中斷寄存器有兩種,分別是中斷狀態(tài)寄存器和中斷使能寄存器,當(dāng)中斷狀態(tài)寄存器被下位機(jī)置值而中斷使能寄存器被MCU置值后才會在中斷引腳上產(chǎn)生指示FF總線上數(shù)據(jù)的收發(fā)情況的中斷信號。相應(yīng)的中斷管理模塊12通過操作機(jī)制中的步驟5)來讀寫寄存器管理模塊中的中斷狀態(tài)寄存器的取值來工作的。
6)總線通信控制器等待下一次中斷操作標(biāo)志被置位再開啟相應(yīng)的中斷產(chǎn)生操作。
控制模塊13,用于當(dāng)寄存器管理模塊11中多種類型的寄存器的取值指示總線通信控制器處于數(shù)據(jù)發(fā)送狀態(tài)時,控制現(xiàn)場總線控制模塊14對將要發(fā)送的數(shù)據(jù)進(jìn)行處理,以及用于當(dāng)寄存器管理模塊11中多種類型的寄存器的取值指示總線通信控制器處于數(shù)據(jù)接收狀態(tài)時,控制現(xiàn)場總線信號控制模塊14對接收的總線數(shù)據(jù)進(jìn)行處理。
其中寄存器管理模塊11中至少包括控制寄存器以及中斷狀態(tài)寄存器,通過至少這兩個寄存器的取值來管理整個收發(fā)過程的調(diào)度工作,整個機(jī)制分為接收和發(fā)送兩塊,不再數(shù)據(jù)發(fā)送狀態(tài)下都會自動跳轉(zhuǎn)回數(shù)據(jù)接收狀態(tài)等待數(shù)據(jù)的接收,具體如下所述:
數(shù)據(jù)發(fā)送機(jī)制:
1)MCU判斷FF總線未處于數(shù)據(jù)接收狀態(tài)時,則等待數(shù)據(jù)接收狀態(tài);
2)MCU清空控制寄存器的取值為0;
3)MCU清空中斷狀態(tài)寄存器0的發(fā)送完成位;
4)MCU開啟發(fā)送中斷,關(guān)閉接收中斷(寫寄存器);
5)MCU先后寫控制寄存器0和控制寄存器1的取值;
6)MCU寫發(fā)送緩沖區(qū)地址(無用);
7)MCU寫發(fā)送數(shù)據(jù)長度高低字節(jié);
8)MCU寫發(fā)送使能;
9)FPGA根據(jù)控制寄存器0、控制寄存器1和發(fā)送使能來開啟數(shù)據(jù)發(fā)送;
10)數(shù)據(jù)發(fā)送完成則返回完成中斷。
數(shù)據(jù)接收機(jī)制:
1)MCU清空中斷狀態(tài)寄存器0值;
2)MCU開啟接收部分中斷,關(guān)閉發(fā)送中斷(寫寄存器);
3)MCU先后寫控制寄存器0和控制寄存器1的取值;
4)現(xiàn)場總線控制器通過控制寄存器0和控制寄存器1的取值開啟接收;
5)在數(shù)據(jù)接收過程中,現(xiàn)場總線控制器會返回接收到前導(dǎo)碼中斷和接收到完成中斷(收到幀尾,校驗結(jié)束);
6)MCU接收到前導(dǎo)碼中斷后開始等待;
7)MCU等待到接收完成中斷后讀取接收狀態(tài)寄存器值,判斷是否收到幀頭、幀尾以及校驗是否正確;
8)當(dāng)MCU確定接收狀態(tài)寄存器的取值正確后,更新用于數(shù)據(jù)接收的RAM的地址,并讀取相關(guān)數(shù)據(jù);當(dāng)反饋接收完成的中斷信號后,實際數(shù)據(jù)解析可能發(fā)現(xiàn)校驗錯誤,字節(jié)不對齊等錯誤,就會將狀態(tài)寫在接收狀態(tài)寄存器中,MCU讀取接收狀態(tài)寄存器的取值,若取值指示數(shù)據(jù)沒有錯誤則說明數(shù)據(jù)是可用的;在本發(fā)明實施例中寄存器管理模塊11中還包括發(fā)送狀態(tài)寄存器,用于指示數(shù)據(jù)發(fā)送情況,而接收狀態(tài)寄存器和發(fā)送狀態(tài)寄存器隸屬于狀態(tài)寄存器。
9)當(dāng)MCU確定接收狀態(tài)寄存器的取值錯誤則不進(jìn)行地址更新,忽略這一次獲取的數(shù)據(jù)。
現(xiàn)場總線信號控制模塊14,用于通過FF總線協(xié)議對將要發(fā)送的數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換,得到符合FF總線協(xié)議格式的信號,并通過接口模塊15發(fā)送到FF總線上,以及用于通過接口模塊15接收總線數(shù)據(jù),對總線數(shù)據(jù)進(jìn)行數(shù)據(jù)采樣、數(shù)據(jù)解碼和數(shù)據(jù)校驗,并保存校驗正確的總線數(shù)據(jù)。
在本發(fā)明實施例中,現(xiàn)場總線信號控制模塊14,用于通過查找信號跳變端取中間值的方法進(jìn)行數(shù)據(jù)采樣。即通過檢測信號的跳變,即上升沿或者下降沿,當(dāng)檢測到后則開始計數(shù),如每一個高或低電平持續(xù)16us,當(dāng)?shù)竭_(dá)8us中間值和23us持續(xù)電平中間值時進(jìn)行一次采樣,若在對數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換時按照曼徹斯特編碼特性有可能有兩個連續(xù)的電平,現(xiàn)場總線信號控制模塊14采樣兩次。對應(yīng)的在進(jìn)行數(shù)據(jù)解碼和數(shù)據(jù)校驗時可以采用曼徹斯特解碼和CRC校驗,其中CRC校驗為16位CRC編碼,而曼徹斯特編碼可以采用反演編碼方式,使用一個一個線性反饋寄存器LFSR實現(xiàn)。
基于本發(fā)明實施例提供的總線通信控制器,其對應(yīng)的流程圖如圖3所示,可以包括以下步驟:
當(dāng)總線通信控制器上電后會重置自身內(nèi)部的所有寄存器的取值,使得自身置于一個不工作的空閑等待狀態(tài),以完成MCU啟動。
當(dāng)MCU啟動完成后對總線通信控制器進(jìn)行一個初始化工作,具體則是將總線通信控制器從空閑狀態(tài)轉(zhuǎn)移進(jìn)入一個工作的狀態(tài),此時總線通信控制器就可以自我調(diào)度完成對總線數(shù)據(jù)的監(jiān)控工作。
MCU在初始化時開啟總線通信控制器中所需要的中斷操作(通過寫入控制寄存器和中斷狀態(tài)寄存器的取值),于是總線通信控制器就會在監(jiān)控總線數(shù)據(jù)時將對應(yīng)的狀態(tài)以中斷信號的形式返回給MCU。
當(dāng)開啟了數(shù)據(jù)接收狀態(tài)后,控制現(xiàn)場總線信號控制模塊進(jìn)行數(shù)據(jù)接收,注意如果現(xiàn)場總線信號控制模塊以前處于數(shù)據(jù)發(fā)送狀態(tài)且未完成時,總線通信控制器在開啟數(shù)據(jù)接收狀態(tài)后依然會中斷當(dāng)前的數(shù)據(jù)發(fā)送狀態(tài),直接跳轉(zhuǎn)回數(shù)據(jù)接收狀態(tài)的接收等待狀態(tài)。
進(jìn)入到接收等待狀態(tài)后,總線通信控制器開始對總線數(shù)據(jù)進(jìn)行根據(jù)跳變中間值實現(xiàn)的數(shù)據(jù)采樣,并會一直等待符合前導(dǎo)碼數(shù)據(jù)格式的信號,即曼徹斯特編碼100110011001,在沒有等到該信號前若收到數(shù)據(jù)發(fā)送需求信號仍可以直接從數(shù)據(jù)接收狀態(tài)跳轉(zhuǎn)到數(shù)據(jù)發(fā)送狀態(tài)。
當(dāng)接收到符合前導(dǎo)碼格式的信號后,接收狀態(tài)機(jī)(指示數(shù)據(jù)接收狀態(tài)過程中所處階段)跳轉(zhuǎn),開始等待幀頭信號,同時會產(chǎn)生一個數(shù)據(jù)接收開始的中斷信號給MCU。
開始等待幀頭信號后,若等待到一個連續(xù)6字節(jié)以上的持續(xù)電平,則判斷本次接收失敗,返回給MCU一個接收失敗的中斷信號并回到等待前導(dǎo)碼的狀態(tài);若等待到幀頭信號,則置相應(yīng)的數(shù)據(jù)接收狀態(tài)位為接收幀頭完成,之后接收到的為數(shù)據(jù)區(qū)數(shù)據(jù),并開始解碼以及校驗過程(例如曼徹斯特解碼以及CRC校驗),在進(jìn)行解碼以及校驗過程的同時,根據(jù)幀頭的格式不同判斷整個數(shù)據(jù)幀格式是原碼還是反碼,若是反碼則對之后的數(shù)據(jù)進(jìn)行取反的操作。在剛進(jìn)入數(shù)據(jù)處理狀態(tài)時,現(xiàn)場總線信號控制模塊會鎖存接收到的第一個數(shù)據(jù)字節(jié)的信息,該信息為幀類型碼的取值,通過判斷幀類型碼的取值,將鎖存一個幀類型的信號給MCU。
在數(shù)據(jù)處理狀態(tài)內(nèi),若在解碼過程中發(fā)現(xiàn)數(shù)據(jù)格式不符合現(xiàn)場總線信號控制模塊預(yù)設(shè)的編碼規(guī)則,則判斷本次接收失敗,返回給MCU一個接收失敗的中斷信號并回到等待前導(dǎo)碼的狀態(tài),正確的情況下存儲轉(zhuǎn)換得到的數(shù)據(jù)。比如在本發(fā)明實施例中采用曼徹斯特解碼,若數(shù)據(jù)格式不符合曼徹斯特編碼規(guī)則則判斷本次接收失敗。在本發(fā)明實施例中,數(shù)據(jù)接收狀態(tài)下現(xiàn)場總線信號控制模塊的工作時鐘高于數(shù)據(jù)發(fā)送狀態(tài)下現(xiàn)場總線信號控制模塊的工作時鐘,以便在數(shù)據(jù)處理的開始和結(jié)尾時可以無等待的進(jìn)行之后的狀態(tài)切換以及處理工作。并且在數(shù)據(jù)處理狀態(tài)內(nèi),解碼和校驗都是以16字節(jié)為單位進(jìn)行,在數(shù)據(jù)接收過程中首先判斷數(shù)據(jù)格式是否符合幀尾的格式,若檢測到符合,則數(shù)據(jù)并不會被解碼以及校驗,并提取校驗結(jié)果值,與現(xiàn)場總線信號控制模塊中預(yù)留的期望值進(jìn)行比較,若比較符合則接收完成,返回接收完成信號,并置校驗結(jié)果值對應(yīng)的寄存器的取值為1,并更新用于接收數(shù)據(jù)的RAM的地址;若是校驗不通過,依舊返回接收完成信號,但是置校驗結(jié)果值對應(yīng)的寄存器的取值為0,不更新接收數(shù)據(jù)的RAM的地址,下次接收會重新從原地址覆蓋寫入接收到的值。
在接收完成后接收狀態(tài)機(jī)自動跳回最初的等待接收前導(dǎo)碼的狀態(tài),此時總線通信控制器可以接收發(fā)送信號的請求,若是有發(fā)送信號的需求,則跳轉(zhuǎn)進(jìn)入數(shù)據(jù)發(fā)送狀態(tài)開始數(shù)據(jù)的發(fā)送。
開始數(shù)據(jù)發(fā)送后現(xiàn)場總線信號控制模塊會按照16us一位的速率先發(fā)送2字節(jié)前導(dǎo)碼,完畢后再發(fā)送2字節(jié)的幀頭信號,并對數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換,例如現(xiàn)場總線信號控制模塊中可以包括曼徹斯特編碼子模塊和CRC數(shù)據(jù)編碼子模塊,通過這兩個編碼子模塊進(jìn)行數(shù)據(jù)的編碼轉(zhuǎn)換操作。編碼轉(zhuǎn)換操作以16字節(jié)為單位,編碼轉(zhuǎn)換完成后的數(shù)據(jù)以16us一位的速率進(jìn)行發(fā)送,當(dāng)發(fā)送數(shù)據(jù)長度達(dá)到需發(fā)送的數(shù)據(jù)長度后,提取CRC數(shù)據(jù)編碼子模塊的結(jié)果值,并以同樣的方法進(jìn)行發(fā)送。
最后再發(fā)送2字節(jié)幀尾,數(shù)據(jù)發(fā)送完成后回復(fù)MCU一個發(fā)送完成中斷,接收狀態(tài)機(jī)跳轉(zhuǎn)回等待接收前導(dǎo)碼的狀態(tài)。
從上述圖3所示流程圖,可知在FF總線上發(fā)送的報文幀結(jié)構(gòu)如圖4所示,其中報文幀由6部分組成,其中前導(dǎo)碼最低為2個字節(jié),高的能有8個字節(jié),我們發(fā)送的幀為前4個字節(jié);
幀前定解碼長2個字節(jié),緊跟前導(dǎo)碼;
幀類型碼長1個字節(jié),實際為數(shù)據(jù)區(qū)第一個字節(jié),表示這一幀的類型;
數(shù)據(jù)區(qū)長度不一定,總幀長度一般不超過256字節(jié);
數(shù)據(jù)區(qū)后接2個字節(jié)長度的CRC校驗碼;
校驗碼結(jié)束為幀尾,長度也為2字節(jié)。
從上述技術(shù)方案可知,本發(fā)明提供的技術(shù)方案可以基于寄存器管理模塊中多種類型的寄存器的取值產(chǎn)生中斷信號,并當(dāng)中斷信號指示總線通信控制器處于數(shù)據(jù)發(fā)送狀態(tài)或者數(shù)據(jù)接收狀態(tài)時,由控制模塊來控制現(xiàn)場總線信號控制模塊執(zhí)行對應(yīng)的操作,實現(xiàn)對FF總線上數(shù)據(jù)發(fā)送和數(shù)據(jù)接收的調(diào)度,即實現(xiàn)對FF總線的數(shù)據(jù)收發(fā)調(diào)度。并且從本發(fā)明提供的技術(shù)方案可知,MCU并未參與FF總線上數(shù)據(jù)發(fā)送和數(shù)據(jù)接收的處理過程,因此無需在MCU中加入處理算法,這樣MCU就無需采用核心頻率較高的MCU,降低成本。并且上述總線通信控制器可以基于FPGA實現(xiàn),降低總線通信控制器對國外芯片的依賴性,進(jìn)一步降低成本。
而MCU通過控制寄存器管理模塊11中諸如控制寄存器和中斷使能寄存器在內(nèi)的各類寄存器來實現(xiàn)對整個通信控制器的數(shù)據(jù)收發(fā)狀態(tài)的控制,基于FPGA的總線通信控制器通過狀態(tài)寄存器、中斷寄存器在內(nèi)的各類寄存器實現(xiàn)向MCU反饋中斷信號。
此外,在本發(fā)明實施例中,現(xiàn)場總線信號控制模塊14可以為數(shù)據(jù)發(fā)送狀態(tài)和數(shù)據(jù)接收狀態(tài)分別設(shè)置對應(yīng)的結(jié)構(gòu),如圖5所示。相對應(yīng)的,總線通信控制器還包括:第一存儲器16和第二存儲器17。第一存儲器16,用于存儲將要發(fā)送的數(shù)據(jù),且現(xiàn)場總線信號控制模塊14用于在接收到MCU指示的將要發(fā)送的數(shù)據(jù)的長度后,從第一存儲器16中獲取與長度相對應(yīng)的數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換。
也就是說,第一存儲器16對應(yīng)現(xiàn)場總線信號控制模塊14的數(shù)據(jù)發(fā)送狀態(tài),作為數(shù)據(jù)發(fā)送的RAM存儲將要發(fā)送的數(shù)據(jù),在接收到指示的將要發(fā)送的數(shù)據(jù)的長度后從第一存儲器16中獲取與長度相對應(yīng)的數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換,如經(jīng)過CRC編碼子模塊和曼徹斯特編碼子模塊進(jìn)行編碼轉(zhuǎn)換。
而第二存儲器17用于存儲校驗正確的總線數(shù)據(jù),即第二存儲器17可以作為數(shù)據(jù)接收的RAM,在經(jīng)過曼徹斯特解碼子模塊和CRC校驗子模塊后,將正確的數(shù)據(jù)存儲到第二存儲器17中。
在本發(fā)明實施例中,現(xiàn)場總線信號控制模塊14,用于采用第一時鐘進(jìn)行編碼轉(zhuǎn)換,并采用第二時鐘進(jìn)行發(fā)送,其中第一時鐘高于第二時鐘,也就是在進(jìn)入數(shù)據(jù)發(fā)送狀態(tài),需要MCU傳遞一個發(fā)送數(shù)據(jù)的長度,由現(xiàn)場總線信號控制模塊直接從第一存儲器中讀取數(shù)據(jù),并對其進(jìn)行編碼和發(fā)送,且現(xiàn)場總線信號控制模塊14采用高時鐘計算低時鐘發(fā)送方式,保證編碼過程不會拖慢數(shù)據(jù)的發(fā)送。并且數(shù)據(jù)接收狀態(tài)下現(xiàn)場總線信號控制模塊的工作時鐘高于數(shù)據(jù)發(fā)送狀態(tài)下現(xiàn)場總線信號控制模塊的工作時鐘,以便在數(shù)據(jù)處理的開始和結(jié)尾時可以無等待的進(jìn)行之后的狀態(tài)切換以及處理工作。
基于上述總線通信控制器,可以在總線通信控制器中集成多個現(xiàn)場總線信號控制模塊14,以使得每個現(xiàn)場總線信號控制模塊14對應(yīng)一路FF總線,這樣當(dāng)上述各個模塊集成到FPGA時,可以通過一個FPGA實現(xiàn)對多路FF總線的數(shù)據(jù)收發(fā)調(diào)度。并且整個接收和發(fā)送數(shù)據(jù)的獲得和寫入通過FPGA內(nèi)部的兩個存儲器實現(xiàn),而不需要外置的存儲器,而MCU直接將要發(fā)送數(shù)據(jù)的長度輸入到FPGA中,由FPGA自主通過FF總線協(xié)議對數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換,變成符合協(xié)議格式的信號發(fā)送到FF總線上;對于接收到的總線數(shù)據(jù),F(xiàn)PGA自身將其進(jìn)行解碼校驗,將校驗正確的數(shù)據(jù)存入第二存儲器18中,MCU只需要直接讀取數(shù)據(jù)就可以使用,并不需要關(guān)心底層的操作步驟。
請參閱圖6,其示出了本發(fā)明實施例提供的基于FPGA的總線通信控制器的再一種結(jié)構(gòu)示意圖,在圖1基礎(chǔ)上還可以包括:重配置模塊18,其中重配置模塊18具備在線燒寫功能,用于通過在線燒寫功能對總線通信控制器中的各個模塊進(jìn)行在線升級,使得總線通信控制器具有在線燒寫模式和JTAG下載模式,在線燒寫模式實現(xiàn)在線升級,即不需要打開硬件來用JTAG修改代碼的方式進(jìn)行升級,JTAG下載模式則是通過JTAG接口下載升級代碼的方式來升級總線通信控制器中的各個模塊。
其中,重配置模塊18包括:重配置寄存器操作子模塊、重配置控制調(diào)度子模塊和緩存RAM,MCU用于對重配置寄存器操作子模塊中相關(guān)寄存器進(jìn)行讀寫控制,重配置控制調(diào)度子模塊則根據(jù)重配置寄存器操作子模塊中相關(guān)寄存器的取值來實現(xiàn)對外部的閃存(FLASH)的相關(guān)操作,具體過程則是:
1)MCU向緩存RAM寫入數(shù)據(jù);
2)MCU寫命令長度的高字節(jié)和低字節(jié),并啟動對FLASH的相關(guān)操作;
3)總線通信控制器收到命令后開始發(fā)送數(shù)據(jù)到FLASH;
4)總線通信控制器產(chǎn)生時鐘信號,并根據(jù)時鐘信號的上升沿更新的原則發(fā)送數(shù)據(jù);
5)數(shù)據(jù)發(fā)送完成后總線通信控制器置重配置寄存器操作子模塊中相關(guān)寄存器的取值以示數(shù)據(jù)發(fā)送完成;
6)在數(shù)據(jù)發(fā)送過程中MCU以1ms的間隔讀取重配置寄存器操作子模塊中相關(guān)寄存器的取值進(jìn)行監(jiān)測;
7)MCU讀取到正確的寄存器的取值后完成本次操作,并清空寄存器的取值;
8)總線通信控制器等待下一次命令;
9)等完成所有的數(shù)據(jù)傳輸后MCU發(fā)送重啟命令使總線通信控制器從FLASH中獲取用于在線升級各個模塊的代碼進(jìn)行重載操作,以實現(xiàn)在線升級。
相應(yīng)的,為實現(xiàn)總線通信控制器中各個模塊與外部的通信,總線通信控制器的管理至少包括:與MCU連接相關(guān)的第一管腳、與FF總線連接相關(guān)的第二管腳和與外部的FLASH連接相關(guān)的第三管腳,如圖7所示。
其中第一管腳,用于使總線通信控制器與MCU進(jìn)行通信,且第一管腳至少包括:讀寫使能端、多路數(shù)據(jù)線、多路地址線和中斷輸出端,讀寫使能端用于控制總線通信控制器與MCU之間的讀寫操作,中斷輸出端,用于連接MCU的中斷輸入端,以向MCU發(fā)送中斷信號,中斷信號用于指示總線通信控制器的工作狀態(tài),工作狀態(tài)為數(shù)據(jù)發(fā)送狀態(tài)或數(shù)據(jù)接收狀態(tài)。
比如在圖7中,包括8路的雙向數(shù)據(jù)線管理數(shù)據(jù)的雙向通信,即8路的雙向數(shù)據(jù)線負(fù)責(zé)將總線通信控制器中狀態(tài)寄存器的取值、第二存儲器中的數(shù)據(jù)等傳遞到MCU的指定地址中,或者由MCU對總線通信控制器中控制寄存器的取值、第一存儲器中的數(shù)據(jù)進(jìn)行修改的操作。而讀或?qū)懙呐袆e則由WR/RD這兩個讀寫使能端來決定。
總線通信控制器在數(shù)據(jù)接收和數(shù)據(jù)發(fā)送中不同狀態(tài)的轉(zhuǎn)換會反饋到相應(yīng)的狀態(tài)寄存器中,并產(chǎn)生相應(yīng)的中斷信號,而MCU在接收到中斷信號后通過讀取相應(yīng)的狀態(tài)寄存器的取值來了解當(dāng)前總線通信控制器的工作狀態(tài),并進(jìn)行相應(yīng)的操作,中斷輸出端即是實現(xiàn)這一功能的管腳,與MCU上對應(yīng)的中斷輸入端相連。
第二管腳,用于通過MAU與FF總線相連,且第二管腳至少包括一個輸入端(如圖7中的總線端口2)、一個輸出端(如圖7中的總線端口1)和一個使能控制端,使能控制端用于對輸出端的外部輸出進(jìn)行使能控制,如圖7中的PO_TACTB,且PO_TACTB的取值由中斷使能寄存器管理。其中MAU負(fù)責(zé)為總線通信控制器提供相關(guān)電壓信號的穩(wěn)壓濾波等功能,當(dāng)對外輸出口使能之后輸出端上的數(shù)據(jù)才能被正確的傳輸出去,否則輸出端會被強(qiáng)制保持在一個電平上。
第三管腳,用于與外部的FLASH連接,通過重配置模塊18對FLASH中內(nèi)部數(shù)據(jù)的修改來在線升級總線通信控制器中的各個模塊,在對FLASH中內(nèi)部數(shù)據(jù)進(jìn)行修改后,當(dāng)總線通信控制器重啟后會通過與FLASH相連的第三管腳將修改后的數(shù)據(jù)(可以是升級代碼)寫入到總線通信控制器,完成升級總線通信控制器中的各個模塊的在線升級。
此外,本發(fā)明實施例提供的總線通信控制器可以集成在一塊FPGA實現(xiàn)多路的FF總線的控制,但是FPGA與MCU之間的地址線和數(shù)據(jù)線卻是復(fù)用的,因此第一管腳還包括多個片選端(如圖7中的CS1和CS2),用于對多路地址線和多路數(shù)據(jù)線進(jìn)行復(fù)用來實現(xiàn)對不同路FF總線的選擇。
上述各個管腳可以集成到接口模塊15中,接口模塊通過對地址的判別和片選端上傳輸?shù)男盘柕呐袆e來決定當(dāng)前操作時對應(yīng)于重配置模塊還是哪一路的FF總線(每路FF總線對應(yīng)一個現(xiàn)場總線信號控制模塊14),如果需要增減多路的復(fù)用,只需要增加一個片選端,其余都不用變化;若是管腳不夠用,也可以像識別重配置模塊一樣,用識別地址線高位的辦法來判斷開啟哪一路的FF總線對應(yīng)的現(xiàn)場總線信號控制模塊,而在反饋中斷信號時可以使用同一中斷輸出端進(jìn)行反饋,MCU在收到中斷信號后通過讀取相應(yīng)的寄存器來知道中斷來源于哪些現(xiàn)場總線信號控制模塊,再一一進(jìn)行處理,當(dāng)然如果管腳多余可以使用多個中斷輸出端,省去寄存器的識別操作,更快捷。
通過對地址的判別和片選端上傳輸?shù)男盘柕呐袆e來決定當(dāng)前操作時對應(yīng)于重配置模塊還是哪一路的FF總線的過程如圖8所示,可以包括以下步驟:
1)對外部信號進(jìn)行同步,以通過內(nèi)部時鐘對數(shù)據(jù)線和地址線的值進(jìn)行同步的采樣,來保證同步性和可靠性;
2)判斷地址高位是否有效,如果無效輸出高阻態(tài),如果有效則判斷是否符合重配置模塊的地址;
地址線提供地址的取值,15根地址線高電平則為1,低電平則為0,表示長度15位的地址值,在本發(fā)明實施例中規(guī)定了一定范圍內(nèi)的地址值,當(dāng)?shù)刂肪€上傳輸?shù)臄?shù)據(jù)指示的地址值在所規(guī)定范圍內(nèi)時才是有效的,比如以內(nèi)部64M時鐘采樣獲得數(shù)據(jù)后判斷地址值是否在規(guī)定范圍內(nèi),比如0x2000-0x4000有效,則二進(jìn)制只需判斷13和14位的值即可。
由于地址線是通用的,連接到除了集成總線通信控制器的FPGA之外還有許多外部的芯片上,而每個芯片都有自己的地址可用范圍,F(xiàn)PGA只使用其中一部分地址,重配置模塊使用這部分中的部分,需要根據(jù)地址值的不同判斷運行哪一個模塊。比如0x2000-0x2020是各個寄存器,0x3000到0x4000是重配置模塊,其余地址中有512字節(jié)給RAM。
3)如果符合,運行重配置模塊;如果不符合,則判斷片選端,以確定哪路FF總線后,獲取和控制所確定的FF總線對應(yīng)的總線通信控制器;
4)向MCU進(jìn)行中斷反饋,MCU通過寄存器的取值來判斷中斷信號的來源。
從上述技術(shù)方案可知,接口模塊15還可以將接收到的信號轉(zhuǎn)換為總線通信控制器可使用的信號,以及根據(jù)片選端的取值來調(diào)用對應(yīng)的現(xiàn)場總線信號控制模塊14。如為MCU讀寫寄存器以及緩存提供邏輯轉(zhuǎn)換,并對異步的外部信號進(jìn)行同步的轉(zhuǎn)換輸入給總線通信控制器中的各個子模塊使用,以及根據(jù)獲取的片選端的取值,對多個現(xiàn)場總線信號控制模塊進(jìn)行選擇性的調(diào)度操作,具體則是哪個CS端使能則調(diào)用哪個現(xiàn)場總線信號控制模塊。
在這里需要說明的一點是:圖5和圖6中CRC編碼子模塊、曼徹斯特編碼子模塊、曼徹斯特解碼子模塊和CRC校驗子模塊為現(xiàn)場總線信號控制模塊14中對數(shù)據(jù)進(jìn)行處理的子模塊,且在圖5和圖6中以一個FPGA中集成兩套對FF總線進(jìn)行控制的模塊,集成的兩套模塊采用同一個接口模塊通信為例進(jìn)行說明,當(dāng)然在本發(fā)明實施例中一個FPGA中還可以集成更多的模塊來對FF總線進(jìn)行控制。
此外,上述總線通信控制器可以使用外部的晶振單元所產(chǎn)生的時鐘信號進(jìn)行工作,而內(nèi)部鎖相環(huán)會對輸入的時鐘信號進(jìn)行處理提供給對應(yīng)的各個模塊,如外部的晶振單元產(chǎn)生18M的時鐘信號,而內(nèi)部鎖相環(huán)將其倍化為32M、64M以及降為1M的時鐘信號提供給各個模塊使用。
在總線通信控制器中則會配置一個計時模塊,其負(fù)責(zé)產(chǎn)生一個以1/32ms為單位的時鐘計時器,若MCU開啟計時中斷,總線通信控制器則會根據(jù)時鐘計時器的計時值定時產(chǎn)生定時中斷以完成鏈路層的計算工作,并可以根據(jù)計時值完成獨立的定時工作,具體定時過程如下:
1)MCU讀取當(dāng)前時鐘計時器的計時值(先高后低,有鎖存);
2)MCU禁止定時中斷(寫寄存器);
3)MCU輸入定時時間(先高后低);
4)MCU開啟定時中斷(寫寄存器);
5)FPGA回復(fù)定時中斷;
6)MCU收到定時中斷;
7)MCU禁止定時中斷(寫寄存器)。
與上述裝置實施例相對應(yīng)的,本發(fā)明實施例還提供一種總線通信控制方法,應(yīng)用于上述總線通信控制器中,如圖9所示,可以包括以下步驟:
901:在總線通信控制器的片選端使能后,接收MCU在總線通信控制器的多路地址線上傳輸?shù)男盘枴?/p>
902:從多路地址線上傳輸?shù)男盘栔凶R別出微控制的當(dāng)前操作指向的地址。
903:接收MCU在總線通信控制器的多路數(shù)據(jù)線上傳輸?shù)臄?shù)據(jù),并將多路數(shù)據(jù)線上傳輸?shù)臄?shù)據(jù)寫入到對應(yīng)的地址,以改變總線通信控制器中多種類型的寄存器的取值。
904:當(dāng)基于多種類型的寄存器的取值指示總線通信控制器的工作狀態(tài)為數(shù)據(jù)發(fā)送狀態(tài)時,控制總線通信控制器通過多路數(shù)據(jù)線接收MCU傳輸?shù)膶⒁l(fā)送的數(shù)據(jù)。
905:對將要發(fā)送的數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換,得到符合FF總線協(xié)議格式的信號,并將符合FF總線協(xié)議格式的信號發(fā)送到FF總線上。
906:當(dāng)基于多種類型的寄存器的取值指示總線通信控制器的工作狀態(tài)為數(shù)據(jù)接收狀態(tài)時,接收FF總線上發(fā)送的總線數(shù)據(jù)。
907:對總線數(shù)據(jù)進(jìn)行數(shù)據(jù)采樣、數(shù)據(jù)解碼和數(shù)據(jù)校驗,并保存校驗正確的總線數(shù)據(jù),以使MCU從總線通信控制器中獲取到校驗正確的總線數(shù)據(jù)。
上述各個步驟的具體過程可以參閱上述裝置實施例中的相關(guān)說明,對此本方法實施例不再闡述。
需要說明的是,本說明書中的各個實施例均采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于方法實施例而言,由于其與裝置實施例基本相似,所以描述的比較簡單,相關(guān)之處參見裝置實施例的部分說明即可。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。