羅敏,王晨旭,喻明艷
嵌入式系統(tǒng)是微電子技術(shù)和計算機兩大領(lǐng)域相結(jié)合的產(chǎn)品,隨著嵌入式系統(tǒng)的各個領(lǐng)域應(yīng)用需求的多樣化,嵌入式系統(tǒng)的芯片設(shè)計技術(shù)也在經(jīng)歷著一次又一次的技術(shù)更新,一方面,雖然ASIC的成本很低,但設(shè)計周期長,投入費用高,風(fēng)險大;另一方面,隨著現(xiàn)場可編程門陣列(FPGA)集成度和速度不斷提高,功能不斷增強,再加上可編程邏輯器件的設(shè)計靈活性,這又使得高復(fù)雜度、高成本的嵌入式系統(tǒng)根據(jù)產(chǎn)品的特定要求在短時間內(nèi)設(shè)計出性能價格比高的片上系統(tǒng)已成為可能,事實上,目前以FPGA為核心的嵌入式系統(tǒng)設(shè)計領(lǐng)域,已占據(jù)著越來越重要的的地位。
本文首先介紹了FastPRO平臺的構(gòu)成和特點,SOPC的技術(shù),然后借助 FastPRO平臺迅速搭建了一個基于ARM7TDMI的車載微控制器硬件系統(tǒng),最后利用FastPRO評估開發(fā)板對所搭建的硬件系統(tǒng)進行了原型驗證,并基于此原型系統(tǒng)進行了驗證程序的開發(fā)和 μCOSII操作系統(tǒng)的移植。
SOPC技術(shù)最早是由美國Altera公司于2000年提出的一種靈活、高效的片上系統(tǒng)設(shè)計方案。它的實質(zhì)是 SOC(System on Chip)設(shè)計技術(shù),與其他SOC設(shè)計技術(shù)相比,它的主要特點在于其可編程性,也即它利用PLD的可編程性來進行SOC設(shè)計,將處理器、存儲器及系統(tǒng)外設(shè)集成到一個可編程邏輯器件中。
SOPC技術(shù)的目標(biāo)是將盡可能大而完整的電子系統(tǒng)在一塊FPGA中實現(xiàn),然而,在上市時間的壓力下,必須要求縮短產(chǎn)品的設(shè)計與生產(chǎn)時間。為了快速設(shè)計生產(chǎn)出產(chǎn)品,設(shè)計人員必須利用預(yù)先定義并驗證好的 IP(Intellectual Property)核,事實上,IP 核已經(jīng)成為SOC或SOPC設(shè)計的關(guān)鍵技術(shù)之一。SOPC的主要思想就是利用所提供的 IP庫,用戶從IP庫中選擇組件來快速組裝一個硬件系統(tǒng)。
通常FPGA供應(yīng)商為了推廣其PLD產(chǎn)品和開發(fā)軟件,會向終端用戶提供一些簡單的 IP,很多情況下其提供的 IP庫中的組件不能滿足用戶需求,這時就需要用戶自定義邏輯來實現(xiàn)這些功能,而這又勢必會使產(chǎn)品的開發(fā)周期變長。FastPRO平臺通過提供大量的IP核網(wǎng)表資源庫,借助強大的評估系統(tǒng)可以快速形成一個SOC的FPGA原型,如圖1所示。
圖1 FastPRO平臺的構(gòu)成
FastPRO平臺的核心不僅包括大量的經(jīng)過充分驗證的IP核網(wǎng)表資源庫,還包括一個完善的評估系統(tǒng),此評估系統(tǒng)的主要目標(biāo)器件采用Xilinx公司的VirtexTM-II系列可編程FPGA器件,最大可包含800萬系統(tǒng)門,可以滿足大多數(shù)SoC開發(fā)的需要,F(xiàn)astPRO評估系統(tǒng)的拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖2 FastPRO平臺評估系統(tǒng)的拓?fù)浣Y(jié)構(gòu)
在傳統(tǒng)的SOC設(shè)計流程中,軟件的開發(fā)和調(diào)試要占整個設(shè)計工作量的60%左右,然而要實現(xiàn)一個復(fù)雜的設(shè)計的完整RTL描述所花費的時間常常達數(shù)月,一直要等到硬件設(shè)計全部完成之后,才能在硬件上運行軟件程序以驗證和調(diào)試軟件,這就使得硬件和軟件的調(diào)試工作只能按時間順序進行,這種按序調(diào)試的方法成為了SOC設(shè)計周期的瓶頸,因此,為了加快產(chǎn)品上市就必須縮短硬件設(shè)計的周期,快速形成SOC的硬件原型,使軟件隊伍能夠較早地進行OS的移植和應(yīng)用軟件的開發(fā)。圖3是傳統(tǒng)片上系統(tǒng)的設(shè)計流程。
圖3 傳統(tǒng)SOC的設(shè)計流程
在SOC設(shè)計中,系統(tǒng)設(shè)計人員總是期望在做硬件設(shè)計和開發(fā)的同時,就能著手于軟件程序的開發(fā),使軟件的開發(fā)盡可能的早, FastPRO平臺SOPC技術(shù)借助所提供的IP核網(wǎng)表資源庫,可以快速形成該SOC的FPGA原型比特流,使較早的進行軟件開發(fā)成為可能,圖4給出了FastPRO平臺在SOC設(shè)計中的應(yīng)用。
圖4 FastPRO平臺在SOC設(shè)計中的應(yīng)用
車載微控制器除具有通用微控制器的特點外,通常還包括CAN總線或LIN總線等現(xiàn)場總線技術(shù),對于行駛記錄儀等要求有數(shù)據(jù)存儲轉(zhuǎn)移的微控制器,可能還需要有USB控制器接口邏輯,基于 ARM7的車載微控制器的解決方案如圖5框圖所示。
圖5 基于ARM7的車載微控制器的結(jié)構(gòu)框圖
在圖 5中的解決方案中,由于應(yīng)用對性能要求不是很高,所以在系統(tǒng)中并沒有加入DMA控制器,并且只采用了一層AHB總線。
在確定好結(jié)構(gòu)框圖后,就可以使用FastPRO平臺IP核網(wǎng)表資源庫所提供的相關(guān)IP去搭建此微控制器的頂層文件了,之后還必須根據(jù)傳統(tǒng)SOC設(shè)計的流程對此頂層模型進行模擬驗證,由于這里所采用的各個功能模塊均為IP的網(wǎng)表,其正確性已經(jīng)經(jīng)過充分驗證,所以這里的模擬驗證周期不會很長,主要是克服搭建頂層模型時所可能引入的錯誤,驗證各個子模塊在整個系統(tǒng)中能否正常工作。由于系統(tǒng)中集成了處理器核,所以所有的驗證操作可以通過處理器來執(zhí)行。這樣驗證子模塊在系統(tǒng)中的功能正確,也間接的驗證了集成的處理器核在系統(tǒng)中的功能正確。在系統(tǒng)驗證時,對驗證代碼的描述采用C語言來編寫,由于C語言比較靈活,可以比較方便和更加完全的描述所有的子模塊功能驗證點。C測試代碼通過編譯器編譯成處理器識別的二進制的機器碼。在驗證平臺中將編譯生成的機器碼通過系統(tǒng)任務(wù)$readmemb讀入Flash存儲器模型中。上電復(fù)位后,通過Flash啟動系統(tǒng)和執(zhí)行機器碼,即處理器指令產(chǎn)生對被驗證的子模塊的操作來實現(xiàn)對各個子單元進行驗證。在進行系統(tǒng)級功能驗證時,使用仿真器VCS進行驗證。
(1)驗證平臺的搭建
驗證平臺是用Verilog語言編寫模塊來實現(xiàn)的,該模塊由所需要驗證的系統(tǒng)Pine、用來實現(xiàn)對某些子模塊的驗證的仿真模型、監(jiān)視驗證結(jié)果的模塊以及初始化任務(wù)和向待測模塊輸入的激勵構(gòu)成。在驗證平臺之外,既不需要任何的輸入,也不會有任何的輸出,所以驗證平臺是一個全封閉系統(tǒng),進行系統(tǒng)級驗證的測試平臺如圖6所示。
圖6 基于ARM7的車載微控制器的驗證平臺
在所設(shè)計的系統(tǒng)中有四個與片外通信的控制器,UART、CAN、USB和I2C,由于UART和CAN控制器在系統(tǒng)中集成了兩個,所以在驗證接收發(fā)送時可以在測試平臺簡單相連來驗證,比如通過UART0向UART1發(fā)送數(shù)據(jù),同時UART1接收數(shù)據(jù)來驗證UART0的發(fā)送功能和UART1的接收功能。而只有一個USB控制器和一個I2C控制器,而且沒有USB的物理模型,所以為了驗證USB-OTG的功能時需要在測試平臺上例化一個物理模型和一個用于驗證的USB系統(tǒng),該驗證USB系統(tǒng)由USB核、物理模型和存儲器構(gòu)成,和Pine系統(tǒng)AMBA總線以及PHY相連來進行驗證。而為了驗證I2C的功能,也需要例化一個用于驗證的I2C控制器,和Pine系統(tǒng)AMBA總線以及系統(tǒng)內(nèi)的I2C相連來進行驗證。其它的子模塊測試可以通過處理器讀寫相應(yīng)的寄存器來測試,在測試代碼中控制輸出測試結(jié)果信息。圖7是系統(tǒng)級驗證的部分波形圖。
圖7 對所搭建的SOC的UART進行模擬驗證
(2)利用驗證平臺監(jiān)視結(jié)果
在自動化驗證過程中,為了監(jiān)視驗證結(jié)果是否正確,需要在驗證的過程中打印能夠表明該測試項正確與否的打印信息。在本系統(tǒng)功能驗證中,各個測試項的打印信息一般在各個測試項中編寫,然后通過編譯器編譯成二進制機器碼。由于用C語言編寫的打印函數(shù)編譯后無法在VCS仿真器中運行,所以構(gòu)造DEBUG模塊調(diào)用系統(tǒng)函數(shù)$display將測試信息打印出來。
在利用DEBUG模塊在VCS仿真器中打印信息時,需要在C語言測試代碼中,調(diào)用一些向DEBUG模塊提供測試信息的函數(shù)。這些測試信息函數(shù),使用指針指向的方式,通過編譯器編譯成向DEBUG模塊的APB接口寫操作的指令,DEBUG模塊通過接口上的地址總線上的偏移地址的譯碼和寫總線等來選擇打印驗證提示信息。
在完成系統(tǒng)驗證后,需要對整個設(shè)計進行FPGA實現(xiàn)。布局布線的過程中,使用Xilinx的FPGA實現(xiàn)工具(這里采用的是ISE 7.1)得到供下載的比特流,而后經(jīng)FastPRO評估板上的JTAG口(這里選擇的是邊界掃描模式)下載到FPGA器件中。
需要說明的是,圖5中有關(guān)片上SRAM的實現(xiàn)采用的是ISE集成軟件環(huán)境中的CORE Generator,由于VirtexTM-II系列FPGA器件中,并沒有內(nèi)置FLASH工藝,而且此處僅僅是為了做此微控制器的原型功能性驗證,因此這里采用SRAM代替FLASH的方式。
布局布線是兩個獨立而又互相聯(lián)系的過程。所謂布局,就是放置元件到分區(qū)規(guī)劃所映射的 FPGA的相應(yīng)的可編程邏輯塊(CLB)和輸入/輸出塊(IOB)結(jié)構(gòu)中。若對特定的元件上放置延時約束,那么布局布線器將試圖按那些約束要求對相應(yīng)邏輯塊的布局進行修正。布線是在FPGA上邏輯塊按原電路的邏輯要求被相互指定連接。布局布線過程是由PAR運行完成。
將布局布線后的設(shè)計生成一個Verilog的仿真模型,以驗證所實現(xiàn)的設(shè)計最后是否能在實際的 FPGA器件上正確編程、正確運行來進行驗證。
布局布線后的時序仿真需要加入 Xilinx的仿真庫應(yīng)該為Simprim庫。時序仿真是反標(biāo)帶有邏輯單元延時和連線延時的sdf文件到設(shè)計而進行的仿真,它具有和所實現(xiàn)的設(shè)計在FPGA器件上運行時基本一致的信息,所以可以驗證最后設(shè)計的實現(xiàn)是否可以在FPGA器件上正確運行。由于FPGA實現(xiàn)后設(shè)計的層次不像原來那樣清晰,內(nèi)部信號的命名也已經(jīng)改變,原有驗證平臺的監(jiān)視器不能使用,這時應(yīng)該修改testcase,使得testcase 運行的中間數(shù)據(jù)保存在外部SDRAM內(nèi),這樣通過一個memory 監(jiān)視器可以監(jiān)視并查看testcase的運行情況,并據(jù)此判斷testcase 的運行是否正確。
在完成FPGA實現(xiàn)后,經(jīng)查看時序報告分析,結(jié)果沒有時序違反,也沒有錯誤以及嚴(yán)重的警告信息。整個設(shè)計占用LUT單元數(shù)23764個,觸發(fā)器為9901個,沒有鎖存器生成。
(1)調(diào)試系統(tǒng)的構(gòu)成
為敘述方便,下文稱上述車載微控制器為 Pine。由于Pine是基于ARM7的,所以調(diào)試系統(tǒng)的構(gòu)成與傳統(tǒng)的ARM微處理器的調(diào)試系統(tǒng)大致相同,如圖8所示,所采用的可視化調(diào)試硬件為Multi-ICE,軟件調(diào)試器為ADS1.2。
圖8 Pine原型驗證調(diào)試系統(tǒng)組成
(2)串口調(diào)試和利用串口調(diào)試
在諸多微控制器資源調(diào)試中,串口的調(diào)試通常是在驗證CPU核和存儲器正常之后所面臨的首當(dāng)其沖的問題,這里對串口主要作了如下驗證和調(diào)試。
① 通過Pine的串口0向PC發(fā)送字符串“Hello World”,PC通過運行串口調(diào)試程序(如串口調(diào)試助手等)來監(jiān)視PC的COM2是否接收到字符串“Hello World”
② 通過PC的COM2向Pine的串口0發(fā)送字符串,當(dāng)Pine接收到這些字符串后再通過Pine的串口0發(fā)送回PC的COM2
③ 通過PC的COM2向Pine的串口0發(fā)送字符串,當(dāng)Pine接收到這些字符串后再通過Pine的串口1發(fā)送回PC的COM1
當(dāng)然,還有其他的一些調(diào)試,比如寄存器調(diào)試、中斷、波特率、Modem的調(diào)試、pine的兩個串口相互傳送等等,這里不再一一列舉。
當(dāng) Pine的串口調(diào)試通過之后,就可以任意的通過串口發(fā)送任意的字符串了,串口也就成了 Pine系統(tǒng)的輸出設(shè)備“顯示器”了,事實上,在LCD調(diào)試完畢之前一直在利用串口的顯示功能調(diào)試其它外設(shè)和軟件,畢竟串口使用起來比較方便。
(3)其它外設(shè)的調(diào)試
由于Pine系統(tǒng)的外設(shè)比較多,這里僅以CAN總線控制器的調(diào)試做以簡要說明。
Pine系統(tǒng)中包含了兩個符合CAN 2.0A和2.0B的CAN總線控制器,這里的調(diào)試包括CAN總線控制器寄存器、中斷、波特率、睡眠模式、自檢測模式、只聽模式、濾波、溢出和數(shù)據(jù)傳送等。在數(shù)據(jù)傳送調(diào)試中,不僅在本系統(tǒng)中的CAN0和CAN1之間完成了數(shù)據(jù)傳送,而且與ST72F561中的CAN節(jié)點組成了一個3節(jié)點的CAN網(wǎng)絡(luò),實現(xiàn)了一發(fā)多收且在兩個節(jié)點同時發(fā)送時驗證了總線仲裁功能。
(4)μC/OS-II的移植
μC/OS-II 是一種源代碼公開、結(jié)構(gòu)小巧的實時操作系統(tǒng),其內(nèi)核提供任務(wù)調(diào)度與管理、時間管理、任務(wù)間同步與通信、內(nèi)存管理和中斷服務(wù)等功能。它比較適用于小型控制系統(tǒng),具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良和可擴展性強等特點,現(xiàn)已被廣泛應(yīng)用在航空、醫(yī)療器械、工業(yè)控制等領(lǐng)域。同時,μC/OS-II的95%代碼是由ANSI C寫成的,并充分考慮到在不同平臺上移植的需求,將與平臺相關(guān)的部分局限在一個很小的范圍內(nèi),因此μC/OS-II具有很好的移植性?;谏鲜鎏攸c,考慮用 μC/OS-II作為本文工作中Pine微控制器開發(fā)移植的第一個操作系統(tǒng)。
在移植過程中,選擇外設(shè)RTC(Real Timer Controller)模塊的中斷作為μC/OS-II的時鐘,以此時鐘來實現(xiàn)對多任務(wù)的調(diào)度。μC/OS-II操作系統(tǒng)在Pine上移植成功后所作的第一個驗證如圖9,在此驗證中采用了兩個任務(wù)。
圖 9 Pine中 μC/OS-II對任務(wù)的調(diào)度
隨著可編程邏輯器件規(guī)模的逐漸增大和性能的日益提高,片上可編程系統(tǒng)SOPC以其靈活的設(shè)計方式、高效的開發(fā)手段以及廉價的設(shè)計成本必將得到廣泛的應(yīng)用,而SOPC的重要技術(shù)則是 IP核的復(fù)用技術(shù)和完善的評估系統(tǒng),F(xiàn)astPRO平臺SOPC技術(shù)通過提供評估系統(tǒng)和大量已經(jīng)充分驗證過的IP核網(wǎng)表資源庫,使用戶可以根據(jù)需求選取相關(guān)功能模塊快速組建一個實用的處理器系統(tǒng),這也必將使軟件開發(fā)能夠較早進行從而贏取更早的產(chǎn)品上市時間。
[1] 汪洋.基于 SOPC 的嵌入式系統(tǒng)設(shè)計[J] .儀器儀表用戶,2008,(02):59-61.
[2] 杜春雷.ARM 體系結(jié)構(gòu)與編程[M] .北京:清華大學(xué)出版社,2003.
[3] 何慧珠,秦麗,張會新.基于FPGA的UART IP核設(shè)計與實現(xiàn)[J] .微計算機信息, 2008,(02): 223-224,114.
[4] 解峰. SOPC的技術(shù)研究[D] .天津理工大學(xué), 2007.
[5] 蔣宏旭.基于片上系統(tǒng)(SOPC)的嵌入式平臺開發(fā)及其在電力設(shè)備檢測中的應(yīng)用[D] .西安電子科技大學(xué), 2007.
[6] 方茁,陳澤文,彭澄廉.SOPC設(shè)計中的用戶自定義邏輯[J] .計算機工程, 2004,(17).