王 瓊,胡 偉,夏 光
(1.合肥工業(yè)大學 計算機與信息學院,安徽 合肥230009;2.合肥工業(yè)大學 汽車工程技術研究院,安徽 合肥230009)
隨著現(xiàn)代汽車電子技術的發(fā)展,車身電子控制器件數(shù)目不斷增加,整車控制系統(tǒng)的復雜度與生產成本不斷提高,簡化車載電子連接線束與降低汽車設計成本的要求促使副總線技術(LIN總線)應運而生。常見的LIN總線節(jié)點控制器是基于微控制器技術實現(xiàn)的,通過專屬LIN總線收發(fā)器實現(xiàn)節(jié)點間數(shù)據(jù)通信。但是基于此技術設計的方案,其硬件成品體積較大,設計出的產品功耗值較高,同時,配套接口電路復雜,產品的后期深度應用與擴展受到局限。
本文提出一種基于FPGA芯片的LIN總線節(jié)點控制器IP核設計方法?;贔PGA技術的設計具有開發(fā)周期短、研發(fā)成本低的特點。另外,F(xiàn)PGA技術支持動態(tài)化下的可重構性應用,同時,大量已成熟的可應用FPGA資源,更便于廣大汽車生產商將FPGA資源與其技術應用于最終產品上。
本設計基于Xilinx Spartan3S400芯片開發(fā)板,采用Verilog HDL設計語言進行設計功能描述,遵從LIN 2.0通信協(xié)議要求,最終實現(xiàn)片內可集成的LIN控制器IP核,將多個總線控制器IP核集成在單芯片內,實現(xiàn)單芯片下對多條LIN總線工作的控制。單功能核可實現(xiàn)總線主/從節(jié)點間信號收發(fā)、數(shù)據(jù)過濾、總線超時監(jiān)測、幀結構的監(jiān)測、ID位的校驗、格式數(shù)據(jù)包提取、幀格式校驗和計算等通信功能[1]。
在硬件實現(xiàn)方面,本設計方案很好地改善了傳統(tǒng)芯片應用上的局限性,使車身控制網(wǎng)系統(tǒng)更加緊湊、穩(wěn)定、可靠。采用的IP核設計技術在可縮放性、低功耗工作特點以及重構性等方面的優(yōu)點,也是傳統(tǒng)汽車硬件解決方案所不具備的。
本設計選用賽靈思(Xilinx)公司的FPGA Spartan3-S400(IC SPARTAN-3 FPGA 400K 208-PQFP)芯片。 該款芯片具有低成本、強大的防克隆技術、低功耗等特性;芯片工藝在Spartan-ⅡE系列芯片設計工藝基礎上,增加了邏輯設計單元、強化內RAM功能以及擴展I/O口;芯片還具有Virtex-Ⅱ架構內嵌硬乘法器和數(shù)字時鐘管理模塊。因此該芯片足以滿足高容量設計需求。Spartan3S400芯片的特性如表1所示。
表1 Spartan3S400芯片特性
LIN總線技術廣泛應用于車身非安全性節(jié)點間的組網(wǎng)[2],圖 1為基于Spartan-3S400設計的LIN總線拓撲網(wǎng)絡結構圖,將多個具有LIN總線控制器功能的IP核集成在單一芯片內,實現(xiàn)車身主要非安全性節(jié)點的LIN總線控制,可改善因車身電子器件數(shù)目增加而帶來硬件電路芯片數(shù)目過多的現(xiàn)狀。
系統(tǒng)設計思路:采用基于IP核的內嵌實現(xiàn)總線協(xié)議功能,有效縮短產品開發(fā)周期并大幅降低設計成本,通過對設計的內核參數(shù)進行修改調整,進一步對設計產品進行深度開發(fā)。
LIN控制器整體系統(tǒng)的設計分為:Spartan3S400芯片工作環(huán)境的硬件支撐部分設計、LIN總線通信協(xié)議的IP核軟件部分設計與實現(xiàn)。
Spartan3S400芯片的硬件電路設計主要包括電源管理模塊、時鐘、復位與下載調試接口幾個部分。電源管理模塊將5 V的Vcc轉換為芯片工作時所需的內核電壓(Vccin)1.2 V、Bank電壓(Vcco)3.3 V和輔助電壓(Vccau)2.5 V,設計采用 AS2830AT0812、AS2830AT3.30810和 AS2830-AT2.50920芯片依次進行電壓值的轉換,圖2為3.3 V電壓轉換實現(xiàn)電路圖[3]。
圖2 3.3 V電壓轉換實現(xiàn)電路圖
時鐘源采用50 MHz外部時鐘接入,下載調試接口采用XCF02S芯片配合Spartan3S400芯片進行PROMs方式下載,同時兼容JTAG方式下載。
控制器的軟件設計采用自頂而下的設計思想,將控制器的功能劃分為四大類:寄存器管理模塊、時鐘管理模塊、收(發(fā))轉移寄存器模塊和狀態(tài)(收/發(fā))模塊[4]。在功能的整體實現(xiàn)過程,將底層子功能模塊設計為:checksum_generator、configuration_registers、frame_state_machine、divider、majority_sampler、parity_generator、receiver和 transmitter,最后再經由頂層設計模塊lin_module將各個子功能模塊整合。開發(fā)工具是基于ISE的軟件設計平臺與CORE Generator的IP核設計平臺,圖3為控制器模塊功能結構框圖。
2.2.1 寄存器管理模塊設計
在控制器管理模塊設計中定義了不同功能的寄存器子模塊,通過對寄存器的操作實現(xiàn)不同的控制功能。外界MCU通過對寄存器的讀、寫操作,實現(xiàn)寄存器數(shù)據(jù)的清除或設置,從而實現(xiàn)對LIN控制器的控制和狀態(tài)檢測。表2為寄存器配置模塊中控制位的設置。
2.2.2 時鐘管理模塊設計
設計中引入一個除數(shù)因子divisor,設定divisor滿足式(1),其中 CLK是外部給定的 50 MHz時鐘,除數(shù)因子的高位存儲在寄存器CLKDIV1中,除數(shù)因子的低位存儲在寄存器CLKDIV2中。本次串口傳輸速率為9 600 b/s,根據(jù)公式可得出:divisor=(50 000 000/16)×9 600=(325)10=(0145)16,所以,設置時鐘寄存器CLKDIV1=(01)16和CLKDIV2=(45)16。計算所得內部時鐘再16分頻形成一個新的“bitclk”時鐘信號,以供接收模塊端使用,接收模塊端使用16倍于發(fā)送模塊端的時鐘信號,同時,接收計數(shù)器cnt=8時插入抽樣分析點,抽樣點在每位數(shù)據(jù)脈沖的中點位置,可提高抽樣分析數(shù)值的準確性。
2.2.3 幀狀態(tài)管理模塊設計
該模塊設計目的是通過對各種寄存器的設置來控制總線上所有位時序操作。由兩部分組成:主機節(jié)點工作進程和從機節(jié)點工作進程。主機任務負責報文的調度表和發(fā)送正確幀頭,并按照調度表維護幀間的正確時間間隔,在滿足發(fā)送條件時,主機節(jié)點依次發(fā)送間隔場、同步場和標識符場[3],從機節(jié)點提供幀響應。主機節(jié)點軟件流程圖如圖4所示。
表2 控制位的設置
2.2.4 收/發(fā)模塊設計
將采集到的經駕駛員操作按鍵而產生的開關信號傳至發(fā)送端幀處理模塊,對信號進行總線相應傳輸數(shù)據(jù)格式處理,處理后的信號數(shù)據(jù)發(fā)送至總線上傳輸。通對接收端接口掃描,可檢測總線信號變化,對總線上信號接收并對接收幀分析,正確接收到的數(shù)據(jù)信息送至相應寄存器模塊處理。發(fā)送與接收模塊是對外交流的窗口,在這兩個功能模塊中體現(xiàn)了LIN2.0協(xié)議傳輸中的接收與發(fā)送要求[4]。
圖4 主機節(jié)點軟件設計流程圖
將設計完成的軟件系統(tǒng)進行產品前測試[5],測試主要針對LIN2.0協(xié)議內容與功能實現(xiàn)的驗證。測試實驗分為兩部分:(1)單節(jié)點功能測試,包括單節(jié)點對數(shù)據(jù)信號的接收與回彈反饋驗證;(2)節(jié)點間組網(wǎng)通信測試,包括一個節(jié)點A(模擬總線主節(jié)點)對另一個節(jié)點B(模擬總線任一從節(jié)點)信號的發(fā)送與接收。因本次設計不涉及到其他數(shù)據(jù)信號的沖突,所以測試中不包含對外來信號的沖突糾錯處理,也不針對總線平均負載與總線峰值負載方面的測試。
LIN的傳輸格式是基于UART的工作原理延伸而來的,基于FPGA的UART功能測試仿真圖如圖5所示。
單節(jié)點工作性能的測試實驗在仿真軟件Model-sim6.4b版本下進行,將通過XST后的lin.ise工程源文件lin.v與另外編寫的測試程序 lin_test_testbench.v,經仿真軟件編譯后形成測試仿真波形,圖6所示為lin_test測試的時序仿真圖。
測試結果表明[6],總線上節(jié)點工作狀況符合LIN總線協(xié)議要求。
測試模塊是利用Verilog HDL語言編寫,測試架構包含兩個節(jié)點的LIN總線通信,測試內容包括對發(fā)送寄存器的寫、等待中斷和響應中斷操作,以及對接收寄存器的讀取和寄存器的檢查。部分子程序如下:
write_register1(REG_TRANSMIT,x”10”);
wait until(int2=’1’and int=’1’);
read_register1(REG_RECEIVE,date_read1);
read_register2(REG_RECEIVE,date_read2);
測試中通過對接收端的繼電器工作吸合狀態(tài)判定信號的傳輸與節(jié)點的正確接收。
對單節(jié)點和兩節(jié)點間通信測試結果的分析表明,此設計是合理的,總線上節(jié)點的設計滿足LIN總線傳輸協(xié)議要求。ISE生成的片內資源占用情況如表3所示。
本文將FPGA設計技術與汽車LIN總線應用技術結合,提出了基于LIN總線控制器IP核實現(xiàn)LIN 2.0總線協(xié)議傳輸?shù)姆桨?,為IP技術的產品化以及產品在車載電器通信網(wǎng)絡上的應用奠定了基礎。經測試,系統(tǒng)運行穩(wěn)定可靠,與使用通用單片機設計相比,本設計占用硬件資源少,硬件電路體積小,成本和產品功耗以及集成度方面都有明顯改善。在未來能源車上將會有更廣闊的應用空間。
表3 片內資源利用
[1]LIN Specification Package-revision 2.0.[2003-09-23].http://www.linsubbus.org.
[2]汪淼.基于LIN總線的車身控制系統(tǒng)設計[J].合肥工業(yè)大學學報(自然科學版),2009,32:93-96.
[3]Li Hongqiang,Miao Changyun,Wang Huaping.An integrated approach to car body control using SoPC technology[C].International Conference on Computer Science and Information Technology 2008:259-263.
[4]DESHPANDE A.Verification of IP-core based SoC’s[C].9thInternational Symposium on Quality Electronic Design,2008:433-436.
[5]黃銳,宋強.LIN總線控制器的關鍵技術研究與實現(xiàn).航空計算技術,2007,37(1):114-116.
[6]DAS S R,HOSSAIN A,LI J F.Further studies on improved test efficiency in cores-based System-on-Chips using modelSim verification tool[C].Instrumentation and Measurement Technology Conference,2009(I2MTC′09.IEEE):1132-1137.