前言
傳統(tǒng)的嵌入式系統(tǒng)中,,設計周期,、硬件和軟件的開發(fā)是分開進行的,,并在硬件完成后才將系統(tǒng)集成在一起,,很多情況下,,硬件完成后才開始進行實時軟件和整體調試,。軟硬件聯(lián)合仿真" title="聯(lián)合仿真">聯(lián)合仿真是一種在物理原型可用前,,能盡早開始調試程序的技術。
軟硬件聯(lián)合仿真有可能使軟件設計工程師在設計早期著手調試,,而采用傳統(tǒng)的方法,,設計工程師直到硬件設計完成才能進行除錯處理。有些軟件可在沒有硬件支持的情況下完成任務的編碼,,如不涉及到硬件的算法,。與硬件相互作用的編碼在獲得硬件之前編寫,但只有在硬件上運行后,,才能真正對編碼進行調試,。通過采用軟硬件聯(lián)合仿真技術,可在設計早期開始這一設計調試過程,。由于軟件的開發(fā)通常在系統(tǒng)開發(fā)的后段完成,,在設計周期中較早的開始調試有可能將使這一項目提早完成,該技術會降低首次將硬件和軟件連接在一起時出現(xiàn)意外而致使項目延期完成所造成的風險,。
在取得物理原型前,,采用軟硬件聯(lián)合仿真技術對硬件和軟件之間的接口進行驗證,將使你不會花太多的時間在后期系統(tǒng)調試上,。當你確實拿到物理原型開始在上面跑軟件的時候,,你會發(fā)現(xiàn)經過測試的軟件部分將會正常工作,這會節(jié)省項目后期的大量時間及努力,。
軟硬件聯(lián)合仿真系統(tǒng)由一個硬件執(zhí)行環(huán)境和一個軟件執(zhí)行環(huán)境組成,,通常軟件環(huán)境和硬件環(huán)境都有自己的除錯和控制界面,軟件通過一系列由處理器啟動的總線周期與硬件的交互作用,。本文以一個Mini Web卡的開發(fā)介紹一種軟硬件聯(lián)合仿真系統(tǒng),。
該方案的核心是采用一個51單片機" title="單片機">單片機仿真引擎GoldBull ISS" title="ISS">ISS51(以下簡稱ISS51),ISS51是51單片機開發(fā)環(huán)境Keil uVision2的一個插件,,ISS51具有連接Keil和硬件仿真環(huán)境Modelsim" title="Modelsim">Modelsim的接口,,可以實現(xiàn)軟硬件同步仿真,。在該系統(tǒng)中,Keil作為軟件調試界面,,Modelsim作為硬件仿真和調試界面,,ISS51負責軟件執(zhí)行、監(jiān)控軟件斷點,、單步執(zhí)行,、內存和寄存器數(shù)據(jù)返回給Keil、CPU總線時序產生和捕獲,、內部功能模塊(如定時器,,串口)的運行等功能。
Mini Web卡介紹
Mini Web卡是一個運行在單片機上的Web服務器,,提供網口連接,,有大容量文件系統(tǒng),提供TFTP和HTTP服務,。盡管軟件系統(tǒng)比較復雜,,但優(yōu)化編譯后,執(zhí)行代碼還不足25K,,為后續(xù)升級留下了足夠空間,。
51CPU采用SST89系列,這種CPU具有ISP功能,,可以通過RS232串口,,直接將目標碼下載到CPU。
DMA控制邏輯是一個可編程邏輯器件,,采用的是ALTERA的CPLD EPM240,,主要功能是實現(xiàn)外圍器件之間的DMA傳遞。因為51CPU進行IO訪問是很低效的,,需要24個時鐘周期才能進行一次IO訪問,在外圍設備之間轉移數(shù)據(jù)則需要更多的時鐘周期,,使用DMA控制邏輯可以達到3個時鐘周期就能轉移一個字節(jié),。本系統(tǒng)中處理多種網絡協(xié)議,需要大量報文收發(fā)和文件系統(tǒng)訪問,,采用DMA可以極大地提高51單片機的數(shù)據(jù)處理速度,。DMA通道主要有MAC芯片與RAM之間的數(shù)據(jù)塊轉移,SMART MEDIA和RAM之間的數(shù)據(jù)塊轉移,。
網卡芯片采用的是AX88796,,主要的優(yōu)點是可以和51CPU方便地接口;支持100M以太網,,速度高,;有較大的接收報文緩存,,能夠平滑網絡流量,減少因51CPU處理速度慢導致的報文丟棄和重發(fā),。
SMART MEDIA是一個移動存儲卡,,主要用于存儲文件,Mini Web卡支持8M到256M的SMD卡,。
文件系統(tǒng)是Mini Web卡的新開發(fā)模塊,,文件系統(tǒng)的測試主要通過TFTP來進行,為此Mini Web卡上的TFTP服務程序進行了特殊設計,,支持格式化SMART MEDIA,,獲取剩余空間,獲取文件名列表,,上傳,、下載和刪除文件。
軟硬件聯(lián)合仿真的必要性:
Mini Web卡軟件模塊多,,軟件開發(fā)風險較大,。軟件對硬件的依賴較強,F(xiàn)LASH存儲器的訪問驅動,、網卡驅動,、DMA驅動,需要軟硬件協(xié)同調試,。
文件系統(tǒng)的開發(fā),,在仿真環(huán)境下更容易和快捷。比如在仿真結束時,,可以將SMART MEDIA仿真模型中的數(shù)據(jù)倒換到磁盤文件中,,在仿真開始時,將磁盤文件中的數(shù)據(jù)加載到SMART MEDIA仿真模型中,,在定位文件系統(tǒng)的問題時,,這一個功能很有用。
采用軟硬件聯(lián)合仿真,,便于系統(tǒng)前期設計,。51單片機的外部RAM訪問效率較低,內存拷貝,、外部器件之間的數(shù)據(jù)塊轉移很浪費時間,。將大量數(shù)據(jù)的拷貝操作或數(shù)據(jù)塊校驗、比較操作在CPLD內實現(xiàn),,可以大大改進51單片機處理數(shù)據(jù)的能力,。通過軟硬件聯(lián)合仿真,可以評估CPLD處理數(shù)據(jù)對性能的改進。
Mini Web卡軟硬件聯(lián)合仿真系統(tǒng):
軟硬件聯(lián)合仿真主要解決的問題是系統(tǒng)功能設計與驗證,,它不解決電源,、濾波電容、總線電平兼容問題,。
做系統(tǒng)仿真,,首先要對硬件系統(tǒng)建模。我們關注的是系統(tǒng)設計的正確性和可執(zhí)行性,。
系統(tǒng)中的串口只是用來支持ISP下載軟件,,軟件部分沒有對串口做任何操作,所以系統(tǒng)仿真可以不必考慮,。
網卡芯片AX88796,,廠商沒有提供仿真模型。它與CPU的接口符合ISA接口標準,,軟件對AX88796的操作是根據(jù)NE2000標準網卡芯片設計的,,由此我們建立了一個網卡芯片的仿真模型。我們設計了一個MAC BFM來仿真網卡芯片的ISA接口,,NE2000定義的寄存器在C模型中實現(xiàn),,MAC BFM與NE2000寄存器C模型通過PLI接*換數(shù)據(jù)。
SRAM仿真模型是很容易獲取的,,很多器件生產商都提供Verilog仿真模型,,但器件生產商提供的Verilog仿真模型都包含復雜的延時控制代碼,這會影響仿真速度,。根據(jù)經驗,,我們可以確保SRAM在單板設計中被正確應用,不會產生時序問題,,所以我們可以采用一個簡化的SRAM仿真模型,,這是我們自己設計的,有效代碼只有十幾行,。
51CPU BFM 負責單片機管腳時序的產生和捕獲,。51CPU BFM是與ISS51緊密捆綁的,由ISS51安裝程序提供,。
SMART MEDIA是三星公司提供的仿真模型,,我們使用的也是三星公司的同類型存儲卡。該模型可以用于驗證軟件操作SMART MEDIA的正確性和DMA Controller的接口時序,。
DMA Controller是Mini Web卡硬件開發(fā)的一部分,將邏輯設計代碼應用于仿真,,既能檢測邏輯設計的正確性,,又能使整個仿真系統(tǒng)得以正常運轉。
將上述硬件模型連接起來,產生下圖所示硬件系統(tǒng)模型圖:
圖2. Mini Web卡硬件模塊電路圖
圖2中U11為SMART MEDIA仿真模型,,U4為DMA Controller模型,。
虛擬網卡
做系統(tǒng)仿真,必須輸入來自真實世界的激勵,,并將仿真系統(tǒng)的輸出傳遞到真實世界,。即便是不能連接到真實世界,也應該提供模擬真實世界的輸入,,并對仿真系統(tǒng)的輸出進行檢測和分析,。
對于Mini Web卡來說,它和真實環(huán)境是通過網口連接的,。使用虛擬網卡技術,,能夠將圖3中的MAC C Model與虛擬網卡進行通訊。
對于運行在Windows系統(tǒng)上的應用程序來說,,它并不知道網卡是虛擬的還是真實的,,應用程序通過虛擬網卡收發(fā)數(shù)據(jù),事實上是與仿真系統(tǒng)在進行網絡通信,。
這樣就可以使用TFTP向Mini Web卡仿真系統(tǒng)傳遞網頁文件,,使用IE瀏覽Mini Web卡仿真系統(tǒng)中的網頁,Mini Web卡的所有功能都能夠被檢驗,。
使用網絡臭探器Sniffer可以監(jiān)控虛擬網卡的報文流,,方便協(xié)議調試。
仿真加速技術
軟硬件聯(lián)合仿真,,影響仿真速度的瓶頸在HDL代碼部分的仿真,。如果不設法提高HDL代碼部分的仿真速度,軟件調試就非常低效,。
提高硬件仿真速度的方法之一是軟件硬件仿真采用事件同步,,只在CPU訪問IO時保持軟件和硬件是同步的。
仿真加速方法之二是硬件仿真系統(tǒng)時鐘休眠,。對于Mini Web卡來說,,只有DMA Controller是受時鐘控制的,軟件沒有操作DMA Controller的期間,,DMA Controller的運作是毫無意義的,,所以可以在非DMA操作期間,對時鐘進行休眠,;ISS51在每次IO訪問時,,給出與上次IO訪問的時間差,這個時間差經過處理可以作為時鐘休眠的時間段,。如果ISS51連續(xù)進行IO訪問,,就不會產生時鐘休眠了。DMA Controller工作于查詢方式,可以采用時鐘休眠技術,,而不會導致仿真與真實結果的不一致,。
方法之三是,縮短SMART MEDIA仿真模型中的一些長延時的時間參數(shù),。因為在等待SMART MEDIA進入就緒狀態(tài)時,,CPU必須連續(xù)查詢IO,影響仿真速度,。我們主要用于軟件功能驗證,,這種修改也是可以接受的。
方法之四,,在軟件設計上,,謹慎使用外部中斷,因為一旦中斷啟動,,ISS51需要在每個機器周期查詢是否有中斷信號,,導致軟件仿真和硬件仿真在每個指令上都進行同步,影響仿真速度,。如果一定要使用外部中斷,,建議用C模型代替Verilog模型,這樣可不影響仿真速度,;或者由用戶根據(jù)外部模塊產生外部中斷的時機,,使用ISS51的控制命令,在恰當時刻使能ISS51的中斷模塊,。
在一個普通PC (CPU為AMD速龍1000,,SDRM512M 133),運行Mini Web卡仿真系統(tǒng),,使用PING命令測試Mini Web卡仿真系統(tǒng)的響應速度:
Reply from 10.10.112.76: bytes=32 time=64ms TTL=128
使用IE打開Mini Web卡仿真系統(tǒng)中的網頁文件,,感覺和撥號上網的速度差不太多。創(chuàng)建多個TFTP連接,,同時向仿真系統(tǒng)傳遞或下載網頁文件,,同時使用IE進行網頁瀏覽,都無響應中斷現(xiàn)象出現(xiàn),。
總結
使用軟硬件聯(lián)合仿真,,Mini Web卡不需要硬件就能進行全部功能的仿真,增強了系統(tǒng)設計成功的信心,。軟硬件聯(lián)合仿真方便系統(tǒng)設計調整,,可以在設計前期*估性能,方便軟件和硬件的 debug,,是一個值得推廣的技術,。