]所述傳輸模塊,進(jìn)一步用于所述幀攜帶的操作碼包含第一地址碼時(shí),指示寫操作的第一寄存器地址;所述幀攜帶的操作碼包含第一寫操作碼時(shí),指示需寫入的第一寄存器數(shù)據(jù);
[0045]所述校驗(yàn)及決策模塊,進(jìn)一步用于指示需寫入的第一寄存器數(shù)據(jù);在光模塊側(cè)根據(jù)所述第一寄存器地址和所述第一寄存器數(shù)據(jù)計(jì)算校驗(yàn)值;
[0046]所述傳輸模塊,還用于所述幀攜帶的操作碼包含第二地址碼時(shí),指示第二寄存器地址,所述第二寄存器地址為主機(jī)計(jì)算得到校驗(yàn)值存放的寄存器地址;所述幀攜帶的操作碼包含第二寫操作碼時(shí),指示將主機(jī)計(jì)算得到校驗(yàn)值寫入第二寄存器地址中;
[0047]所述校驗(yàn)及決策模塊,還用于在光模塊側(cè)將其計(jì)算的校驗(yàn)值與從所述第二寄存器地址讀取的校驗(yàn)值進(jìn)行校驗(yàn)值比對(duì),如果校驗(yàn)值一致,結(jié)束當(dāng)前流程,否則,傳輸有誤,需重復(fù)所述寫數(shù)據(jù)操作。
[0048]本發(fā)明的方法是發(fā)送至少一個(gè)幀,主機(jī)根據(jù)所述幀攜帶的操作碼來指示對(duì)光模塊執(zhí)行讀數(shù)據(jù)操作或連續(xù)讀數(shù)據(jù)操作或?qū)憯?shù)據(jù)操作;所述幀用于校驗(yàn)時(shí)在所述主機(jī)和所述光模塊側(cè)分別計(jì)算校驗(yàn)值,根據(jù)校驗(yàn)值比對(duì)的結(jié)果判斷校驗(yàn)值的正確與否,決定是否需要進(jìn)行重復(fù)所述讀數(shù)據(jù)操作或連續(xù)讀數(shù)據(jù)操作或?qū)憯?shù)據(jù)操作。采用本發(fā)明的方法,由于存在校驗(yàn)機(jī)制,因此,至少解決了主機(jī)與光模塊間出現(xiàn)傳輸錯(cuò)誤也無法及時(shí)糾正的問題,提高了通訊可靠性。
【附圖說明】
[0049]圖1為現(xiàn)有MD1幀的幀結(jié)構(gòu)示意圖;
[0050]圖2為本發(fā)明方法原理的流程圖;
[0051]圖3為本發(fā)明系統(tǒng)的基本組成結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0052]下面結(jié)合附圖對(duì)技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。
[0053]本發(fā)明實(shí)施例的方法為采用CFP MD1 MSA通訊協(xié)議的傳輸校驗(yàn)方案,能提高通訊可靠性,提高了數(shù)據(jù)傳輸?shù)恼_性和可靠性,防止報(bào)文丟失和出錯(cuò)。本實(shí)施例是主機(jī)和光模塊之間配合操作來實(shí)現(xiàn)的,主機(jī)作為發(fā)送方,發(fā)送幀并攜帶控制指令(如操作碼實(shí)現(xiàn)的控制指令),光模塊作為接收方,接收幀,根據(jù)讀取的控制指令(如操作碼實(shí)現(xiàn)的控制指令)執(zhí)行對(duì)應(yīng)的操作。而且,幀中包括校驗(yàn)幀,主機(jī)和光模塊基于校驗(yàn)幀是基于一樣的數(shù)據(jù)和校驗(yàn)算法所做的校驗(yàn)計(jì)算,以便進(jìn)行主機(jī)和光模塊分別計(jì)算得到的校驗(yàn)值的比對(duì),如果校驗(yàn)值一致,則結(jié)束當(dāng)前校驗(yàn)操作,否則,繼續(xù)執(zhí)行校驗(yàn)操作。
[0054]具體地,例如可以針對(duì)16-bit地址和數(shù)據(jù),進(jìn)行地址和數(shù)據(jù)內(nèi)容校驗(yàn)、或僅對(duì)數(shù)據(jù)內(nèi)容校驗(yàn)、或?qū)ν暾?2-bit的幀進(jìn)行前兩種校驗(yàn)。在完成標(biāo)準(zhǔn)讀、或標(biāo)準(zhǔn)寫、或連續(xù)讀操作后,增加一校驗(yàn)幀,并根據(jù)校驗(yàn)值的正確與否,決定是否需要進(jìn)行重復(fù)前一操作,其流程如圖2所示,加校驗(yàn)的讀或?qū)懟蜻B續(xù)讀操作流程圖包括以下步驟:
[0055]步驟101、主機(jī)開始對(duì)光模塊執(zhí)行讀數(shù)據(jù)操作或連續(xù)讀數(shù)據(jù)操作或?qū)憯?shù)據(jù)操作,發(fā)送對(duì)應(yīng)的巾貞給光模塊。
[0056]步驟102、接收對(duì)應(yīng)幀,根據(jù)操作碼實(shí)現(xiàn)的控制指令執(zhí)行對(duì)應(yīng)的操作,幀用于校驗(yàn)時(shí)進(jìn)行校驗(yàn)操作。
[0057]步驟103、比對(duì)在主機(jī)側(cè)和光模塊側(cè)分別計(jì)算得到的校驗(yàn)值是否匹配,如果校驗(yàn)值一致,說明校驗(yàn)值正確,結(jié)束當(dāng)前校驗(yàn)流程,否則,校驗(yàn)值不一致,說明校驗(yàn)值不正確,轉(zhuǎn)入執(zhí)行步驟101,繼續(xù)當(dāng)前讀數(shù)據(jù)操作或連續(xù)讀數(shù)據(jù)操作或?qū)憯?shù)據(jù)操作。
[0058]以下分本發(fā)明實(shí)施例的各個(gè)具體應(yīng)用場(chǎng)景分別闡述如下:
[0059]應(yīng)用場(chǎng)景一:讀數(shù)據(jù)操作的情況。
[0060]讀數(shù)據(jù)操作的情況下:加校驗(yàn)的讀操作是由4個(gè)幀組成,幀用于校驗(yàn)時(shí)在主機(jī)和光模塊分別計(jì)算校驗(yàn)值以進(jìn)行校驗(yàn)操作。主機(jī)先發(fā)送幀給光模塊,前2幀同標(biāo)準(zhǔn)的讀操作,即:第I幀操作碼OP為地址(ObOO),為了描述方便及便于區(qū)分,也可以稱為第一地址碼,數(shù)據(jù)凈荷為讀操作的寄存器地址,為了描述方便及便于區(qū)分,也可以稱為讀操作的第一寄存器地址;第2幀的操作碼OP為讀操作碼(Obll),為了描述方便及便于區(qū)分,也可以稱為第一讀操作碼,讀出寄存器數(shù)據(jù)。光模塊通過對(duì)讀取的16-bit地址和數(shù)據(jù),進(jìn)行校驗(yàn)值計(jì)算,并將計(jì)算的校驗(yàn)值寫入寄存器83FFh,為了描述方便及便于區(qū)分,也可以稱為讀操作的第二寄存器地址,同時(shí),主機(jī)也計(jì)算出校驗(yàn)值。第3幀操作碼OP為地址(ObOO),為了描述方便及便于區(qū)分,也可以稱為第二地址碼,數(shù)據(jù)凈荷為寄存器地址83FFh,為了描述方便及便于區(qū)分,也可以稱為讀操作的第二寄存器地址;第4幀的操作碼OP為讀操作碼(Obll),為了描述方便及便于區(qū)分,也可以稱為第二讀操作碼,讀出寄存器83FFh的數(shù)據(jù),即光模塊計(jì)算得到的且寫入寄存器83FFh的上述校驗(yàn)值,主機(jī)將其計(jì)算出的校驗(yàn)值,與其所讀取的寄存器83FFh的校驗(yàn)值進(jìn)行比較。如果校驗(yàn)值不相等,說明校驗(yàn)值錯(cuò)誤,數(shù)據(jù)傳輸有誤,需要糾正,則主機(jī)重新進(jìn)行讀數(shù)據(jù)操作。
[0061]在實(shí)際應(yīng)用中,H指代主機(jī)(host), M指代光模塊(optical module),讀數(shù)據(jù)操作的示例參數(shù)為:
[0062]讀取9000h起始的模塊參數(shù),可以分解為下列內(nèi)容:
[0063]1、發(fā)送地址幀9000h
[0064]第I 幀
[0065]I H->M
[0066]<IdleX32-bit PreambleXOOXOOXAAAAAXOOOOlXlOXlOOl 0000 0000OOOOXidle〉
[0067]2、讀地址9000h寄存器的數(shù)據(jù)
[0068]第2 幀
[0069]I H->MI I M->H
[0070]<IdleX32-bit PreambleXOOXllXAAAAAXOOOOlXZOXDDDD DDDD DDDDDDDDXidle〉
[0071]3、發(fā)送83FFh寄存器的地址幀
[0072]第3 幀
[0073]I H->MI I M->H
[0074]<IdleX32-bit PreambleXOOXOOXAAAAAXOOOOlXlOXlOlI 0110 1111llllXIdle〉
[0075]4、讀地址83FFh寄存器的數(shù)據(jù)
[0076]第4 幀
[0077]I H->MI I M->H
[0078]<IdleX32-bit PreambleXOOXllXAAAAAXOOOOlXZOXDDDD DDDD DDDDDDDDXidle〉
[0079]本次操作結(jié)束。
[0080]應(yīng)用場(chǎng)景二:連續(xù)讀數(shù)據(jù)操作的情況。
[0081]連續(xù)讀數(shù)據(jù)操作的情況下:加校驗(yàn)的連續(xù)讀操作。幀為至少一個(gè),幀用于校驗(yàn)時(shí)在主機(jī)和光模塊分別計(jì)算校驗(yàn)值以進(jìn)行校驗(yàn)操作。主機(jī)先發(fā)送幀給光模塊,第I幀同標(biāo)準(zhǔn)讀操作,數(shù)據(jù)凈荷為讀操作的寄存器地址;第2幀的操作碼為連續(xù)讀操作碼(OblO),讀出對(duì)應(yīng)寄存器的內(nèi)容數(shù)據(jù),同時(shí)光模塊內(nèi)部將下一個(gè)寄存器地址處的數(shù)據(jù)放到緩沖區(qū)中,等待下一幀來被讀?。坏?幀主機(jī)直接讀取寄存器數(shù)據(jù);以此類推,直到幀操作碼不為連續(xù)讀操作碼(OblO)為止。光模塊在主機(jī)連續(xù)讀操作的同時(shí)連續(xù)計(jì)算校驗(yàn)值,每完成一幀讀,就將計(jì)算出的校驗(yàn)寫入83FFh。主機(jī)連續(xù)讀操作結(jié)束后,讀取該寄存器(操作方式與讀操作同),主機(jī)根據(jù)算出的校驗(yàn)值和讀到的校驗(yàn)值進(jìn)行比較,如果有誤進(jìn)行重讀。
[0082]在實(shí)際應(yīng)用中,H指代主機(jī)(host), M指代光模塊(optical module),連續(xù)讀數(shù)據(jù)操作的示例參數(shù)為:
[0083]讀取SOOOh起始的模塊參數(shù),可以分解為下列內(nèi)容:
[0084]1、發(fā)送地址幀8OOOh
[0085]第I 幀
[0086]I H->M
[0087]<IdleX32-bit PreambleXOOXOOXAAAAAXOOOOlXlOXlOOO 0000 0000OOOOXidle〉
[0088]2、讀地址8000h寄存器的數(shù)據(jù)
[0089]第2 幀
[0090]I H->MI I M->H
[0091]<IdleX32-bit PreambleXOOXlOXAAAAAXOOOOlXZOXDDDD DDDD DDDDDDDDXidle〉
[0092]3、讀地址800 Ih寄存器的數(shù)據(jù)
[0093]第3 幀
[0