常玉琪,胡黃水,2*,王宏志,王 瑩
(1.長(zhǎng)春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,吉林 長(zhǎng)春 130012;2.吉林大學(xué) 通信工程學(xué)院,吉林 長(zhǎng)春 130022)
?
MVB控制器校驗(yàn)序列FPGA設(shè)計(jì)
常玉琪1,胡黃水1,2*,王宏志1,王 瑩1
(1.長(zhǎng)春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,吉林 長(zhǎng)春 130012;2.吉林大學(xué) 通信工程學(xué)院,吉林 長(zhǎng)春 130022)
分析了多功能車輛總線控制器的校驗(yàn)序列,基于MVB控制器CRC循環(huán)冗余校驗(yàn)和偶校驗(yàn)基本原理,設(shè)計(jì)了一個(gè)串行CRC校驗(yàn)?zāi)K。以Quartus II軟件作為開(kāi)發(fā)平臺(tái),采用VHDL硬件語(yǔ)言進(jìn)行編程,在FPGA中成功實(shí)現(xiàn)了CRC編碼設(shè)計(jì),并得出了校驗(yàn)序列的正確仿真波形。
多功能車輛總線;CRC;FPGA;可靠性
多功能車輛總線(Multifunction Vehicle Bus,MVB)是一種高可靠性的實(shí)時(shí)通信總線,主要用于車輛電氣設(shè)備互聯(lián)通信。為滿足通信的準(zhǔn)確性和可靠性,在總線中設(shè)計(jì)一個(gè)具有很強(qiáng)檢錯(cuò)糾錯(cuò)能力的校驗(yàn)序列顯得尤為重要[1-2]。
目前,國(guó)內(nèi)外學(xué)者已對(duì)CRC校驗(yàn)進(jìn)行了許多研究,文獻(xiàn)[3]根據(jù)MVB標(biāo)準(zhǔn)選擇串行計(jì)算方法設(shè)計(jì)了由一組移位寄存器和異或單元組成的CRC發(fā)生電路;文獻(xiàn)[4]提出了一種簡(jiǎn)單通用的CRC并行計(jì)算實(shí)現(xiàn)方法,適用于各種不同的CRC生成多項(xiàng)式和各種不同的信息碼寬度;文獻(xiàn)[5]介紹了串行CRC檢驗(yàn)原理和并行CRC檢驗(yàn)原理,并對(duì)兩種實(shí)現(xiàn)方式進(jìn)行了性能對(duì)比。
目前MVB控制器校驗(yàn)序列的研究比較單一,通常是研究在列車通信網(wǎng)絡(luò)(Train Communication Network,TCN)協(xié)議的基礎(chǔ)上設(shè)計(jì)的串行或并行CRC校驗(yàn)方法。文中提出的串行CRC校驗(yàn)方法,既能夠在較高的時(shí)鐘頻率下進(jìn)行CRC校驗(yàn)碼的計(jì)算,又可以提高生成CRC校驗(yàn)碼的速度。用VHDL硬件語(yǔ)言在FPGA中實(shí)現(xiàn)了MVB控制器校驗(yàn)序列的生成,并通過(guò)仿真分析驗(yàn)證了該方法的可行性。
MVB總線能夠傳輸兩種類型的幀,一種是由總線主發(fā)送的主幀,另一種是從設(shè)備響應(yīng)主幀而發(fā)送的從幀。主幀是以主起始分界符開(kāi)始,其后是16位的幀數(shù)據(jù),緊接著是8位校驗(yàn)序列,最后以終止分界標(biāo)識(shí)符結(jié)束,如圖1所示。
圖1 主幀格式
從幀是以從起始分界符開(kāi)始,接著為16、32、64、128或256位幀數(shù)據(jù),在每64個(gè)數(shù)據(jù)位后包含一個(gè)8位的校驗(yàn)序列,或當(dāng)幀數(shù)據(jù)只有16或32位時(shí),將一個(gè)8位的校驗(yàn)序列附加其后,最后以終止分界符結(jié)束,如圖2所示。
圖2 從幀格式
幀數(shù)據(jù)應(yīng)用一個(gè)或者更多的8位校驗(yàn)序列來(lái)保護(hù),校驗(yàn)序列用于被其保護(hù)的16、32或64位數(shù)據(jù)的循環(huán)冗余校驗(yàn)(CRC)。校驗(yàn)序列應(yīng)按如下的多項(xiàng)式公式計(jì)算[6]:
G(x)=x7+x6+x5+x2+1
7位余數(shù)結(jié)果應(yīng)用一個(gè)偶校驗(yàn)位擴(kuò)展,最后將所有的8位數(shù)據(jù)反向發(fā)送。
校驗(yàn)?zāi)K的設(shè)計(jì)采用VHDL硬件描述語(yǔ)言,選用Altera公司生產(chǎn)的FPGA芯片,例如Cyclone IV系列芯片,并且利用Quartus II和ModelSim開(kāi)發(fā)軟件進(jìn)行開(kāi)發(fā)和仿真CRC的串行處理算法。CRC串行校驗(yàn)?zāi)K主要由復(fù)位(RESET_IN)、時(shí)鐘(CLOCK_IN)、串行數(shù)據(jù)輸入(SDATA_IN)、幀長(zhǎng)(FRAME_L)、發(fā)送CRC命令位(SEND_CRC)這5個(gè)輸入以及CRC串行數(shù)據(jù)輸出(CRC_OUT)組成。CRC串行算法流程如圖3所示。
圖3 CRC模塊程序設(shè)計(jì)流程
FRAME_L的值有000、001、010、011、100,分別對(duì)應(yīng)數(shù)據(jù)幀長(zhǎng)為16、32、64、128、256位,相應(yīng)的字計(jì)數(shù)器WORD_COUNTER的值分別對(duì)應(yīng)為1、2、4、8、16。
以發(fā)送一個(gè)16位幀數(shù)據(jù)為例,SDATA_IN=“0111111011000011”,CRC生成多項(xiàng)式為11100101,所得余數(shù)0010001經(jīng)過(guò)偶校驗(yàn)位擴(kuò)展成00100010,由此可得8位反向校驗(yàn)序列CS=11011101。按照上述設(shè)計(jì)過(guò)程,采用VHDL語(yǔ)言編程。設(shè)計(jì)中程序的主過(guò)程代碼如下:
IF RESET_IN='0' THEN
CN:=15;
CHECK_EVEN:='0';
CRC_END:='0';
SCRC_OUT<="00000000";
CRC_EN:='1';
CRC_POLY:="11100101";--生成多項(xiàng)式為x^7+x^6+x^5+x^2+1
SBUFF_OUT<="0000000000000000";
ELSIF RISING_EDGE(CLOCK_IN) THEN
IF CRC_EN='1' THEN
DATA_BUFFER(CN):=SDATA_IN;
--先存高位
IF CN=0 THEN
接收16位數(shù)據(jù)結(jié)束
CN:=15;
CRC_END:='1';
CRC_EN:='0';
END IF;
CN:=CN-1;
SBUFF_OUT<=DATA_BUFFER;
END IF;
END IF;
IF CRC_END='1' THEN
CRC_BUFFER:=DATA_BUFFER(15 DOWNTO 8);
FOR I IN 15 DOWNTO 0 LOOP
IF CRC_BUFFER(7)='1' THEN
--最高位為1才異或
CRC_BUFFER(7 DOWNTO 0):=CRC_BUFFER(7 DOWNTO 0) XOR CRC_POLY(7 DOWNTO 0);
--按位異或
END IF;
CRC_BUFFER(7 DOWNTO 0):=CRC_BUFFER(6 DOWNTO 0) & DATA_BUFFER(7);
--左移1位
DATA_BUFFER(15 DOWNTO 0):=DATA_BUFFER(14 DOWNTO 0) & '0';
--左移1位
END LOOP;
CRC_BUFFER(0):='0';
FOR I IN 7 DOWNTO 1 LOOP
CHECK_EVEN:=CHECK_EVEN XOR CRC_BUFFER(I);
--偶校驗(yàn)
END LOOP;
CRC_BUFFER(0):=CHECK_EVEN;
CRC_BUFFER(7 DOWNTO 0):=NOT CRC_BUFFER(7 DOWNTO 0);
--取反即為最終的校驗(yàn)值 (7位CRC,加上1位偶校驗(yàn),再取反)
SCRC_OUT<=CRC_BUFFER;
CHECK_EVEN:='0';
CRC_END:='0';
END IF;
本設(shè)計(jì)使用Quartus II調(diào)用ModelSim進(jìn)行時(shí)序仿真,系統(tǒng)仿真波形如圖4所示[7]。
圖4 CRC仿真結(jié)果
仿真中采用的待校驗(yàn)數(shù)據(jù)為16位數(shù)據(jù)(0111111011000011)[8],可以看到最后輸出的CRC校驗(yàn)序列的值為11011101,與理論值相符。由此看出,該設(shè)計(jì)能正確實(shí)現(xiàn)MVB幀中CRC編碼功能。
在遵從網(wǎng)絡(luò)協(xié)議的基礎(chǔ)上[9],分析了MVB幀的構(gòu)成和CRC編碼原理后,用VHDL硬件描述語(yǔ)言實(shí)現(xiàn)了對(duì)MVB幀格式中CRC校驗(yàn)碼的設(shè)計(jì),同時(shí)給出了串行CRC的設(shè)計(jì)流程,最后對(duì)MVB幀中CRC檢驗(yàn)碼的生成過(guò)程進(jìn)行了仿真,仿真波形證明了設(shè)計(jì)的正確性。CRC編碼模塊的成功實(shí)現(xiàn)為MVB總線在國(guó)內(nèi)機(jī)車上的應(yīng)用提供了基礎(chǔ)。
[1] 幸柒榮,林知明,溫小旭.MVB總線中校驗(yàn)序列的編碼設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2009(9):59-60.
[2] 李中奇,楊豐萍,郭萬(wàn)嶺,等.多功能車輛總線控制器編碼器設(shè)計(jì)[J].華東交通大學(xué)學(xué)報(bào),2009,26(6):52-56.
[3] 魏耀南,林品,唐允寶.MVB幀收發(fā)模塊設(shè)計(jì)[J].機(jī)車電傳動(dòng),2010(3):26-29.
[4] 王海光.并行CRC算法硬件實(shí)現(xiàn)研究與VHDL設(shè)計(jì)[J].漳州師范學(xué)院學(xué)報(bào):自然科學(xué)版,2007,20(4):51-56.
[5] 谷小剛,陳長(zhǎng)齡,楊戰(zhàn)平.CAN協(xié)議中CRC編碼的硬件實(shí)現(xiàn)[J].計(jì)算機(jī)與信息技術(shù),2006(5):60-61.
[6] [Anon]. IEC.IEC61375-1-1999 Electric railway equipment-train bus-part 1:train communication network[S].Genva:IEC,1999.
[7] 陳玉泉.一種并行CRC算法的實(shí)現(xiàn)方法[J].現(xiàn)代電子技術(shù),2005,28(22):21-23.
[8] 徐士強(qiáng).MVB通信協(xié)議可配置冗余碼校驗(yàn)電路的FPGA實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2015(19):48-51.
[9] 胡遠(yuǎn)朋,王宏志,胡黃水.基于FPGA全功能MVB網(wǎng)絡(luò)從設(shè)備鏈路層IP核設(shè)計(jì)[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào),2016,37(1):20-24.
FPGA based MVB controller check sequence design
CHANG Yuqi1,HU Huangshui1,2*,WANG Hongzhi1,WANG Ying1
(1.School of Electrical & Electronic Engineering,Changchun University of Technology,Changchun 130012,China;2.Department of Communication Engineerings,Jilin University,Changchun 130022,China)
By analyzing the check sequence of Multifunction Vehicle Bus (MVB) controller,a CRC check module is designed based on MVB cycle redundancy and odd-even test principle. With Quartus II as platform,we implement CRC code in FPGA with VHDL hardware language and verify the waveform of check sequence.
Multifunction Vehicle Bus (MVB); CRC; FPGA; reliability.
2016-03-14
吉林省發(fā)改委經(jīng)濟(jì)結(jié)構(gòu)戰(zhàn)略調(diào)整引導(dǎo)資金專項(xiàng)項(xiàng)目(2014Y125);吉林省教育廳“十二五”科學(xué)技術(shù)研究項(xiàng)目(吉教科合字(2015)第100號(hào));吉林省科技廳科技攻關(guān)計(jì)劃項(xiàng)目(20140204037GX)
常玉琪(1992-),女,漢族,河南洛陽(yáng)人,長(zhǎng)春工業(yè)大學(xué)碩士研究生,主要從事列車網(wǎng)絡(luò)通信技術(shù)方向研究,E-mail:yuqi.chang@outlook.com. *通訊作者:胡黃水(1974-),男,漢族,湖南隆回人,長(zhǎng)春工業(yè)大學(xué)副教授,博士,主要從事無(wú)線傳感器網(wǎng)絡(luò)和軌道車輛動(dòng)力學(xué)方向研究,E-mail:huhs08@163.com.
10.15923/j.cnki.cn22-1382/t.2016.5.11
U 285.5
A
1674-1374(2016)05-0470-04