一種快速可重構的mcu仿真方法
【技術領域】
[0001] 本發明屬于仿真器的技術領域,特別涉及基于現場可編程陣列(FPGA)應用的MCU 仿真器的方法。
【背景技術】
[0002] MCU仿真器屬于交叉編譯調試系統的重要組成部分。由于MCU復雜多樣,指令集千 變萬化,其中主流8位指令集有CISC類型的51指令集,RISC類型的AVR指令集、PIC指令 集等。隨之的仿真器設計技術包含B0ND0UT專用仿真芯片技術、HOOKSI/O復用的仿真技 術、JTAG仿真技術等。
[0003] 隨著片上系統(SystemOnChip)技術的日益成熟,低端8位MCU的片上資源甚至 是指令數也越來越多樣化。傳統的B0ND0UT專用仿真芯片技術由于其需要額外負擔高昂的 芯片流片費用,已經適應市場快速迭代的需求。HOOKSI/O復用的仿真技術雖然單獨流片, 但使用該技術的MCU需要足夠的1/0資源,也不適應當前市場MCU專用化和高度性價比的 需求。而其他諸如JTAG、SWD等芯片內置仿真監控模塊的方案,由于會占用大量的邏輯,并 不適用于低端市場。
[0004] 因而采用FPGA設計仿真器的方式成為了低端MCU廠商的首選。這類方案通常是 在MCU的內核基礎上增加仿真調試功能,再通過綜合工具重新綜合并配置到FPGA中,以實 現仿真器類型動態切換和更新。然而,目前市場上已有的仿真器升級或重構的方式,均無法 滿足嵌入式IDE(IntegratedDeviceElectronics集成設備電路)需要頻繁升級仿真器的 需要,也無法滿足用戶需要經常切換型號的需求。
[0005] 影響重構速度的第一大因素是FPGA的配置方式。目前都是采用外置存儲器,如專 利申請201210595918. 6所描述的一種支持多芯片配置功能的仿真器,其中包括仿真器配 置模塊和仿真器硬件。仿真器配置模塊負責芯片仿真配置文件的選擇、下載、及配置信息的 設置;仿真器硬件通過下載配置模塊和數據通路選擇模塊,把仿真器配置模塊下傳的數據 寫到存儲器模塊對應的芯片仿真配置文件區和配置信息區。下載完成后,控制模塊依據當 前配置信息區的內容,完成對芯片仿真模塊的配置,實現芯片的仿真功能。仿真器配置模塊 可以靈活下載芯片配置文件區,讀取當前仿真器硬件版本信息。但是只要存在非易失性存 儲器,就必然無法做到快速重構。因為FPGA所支持配置存儲器都存在很長的擦除或寫入時 間。
[0006] 硬件架構中,影響重構的第二大因素是配置控制器的選擇。配置控制器無非時兩 類,MCU或CPLD。如專利申請201410351303. 8所公開的一種可重構的8位RISC單片機仿 真器,其包括仿真監控芯片、仿真芯片以及存儲器。仿真監控芯片通過USB接口與上位機通 信,上位機通過USB接口可方便更新仿真監控芯片內的仿真固件,通過仿真監控芯片,能自 動把仿真芯片配置成用戶需要的目標單片機,并能將用戶代碼下載到存儲器內,仿真芯片 讀取存儲器內的用戶代碼并執行代碼。仿真監控芯片通過USB接口,隨時接收上位機的各 項命令,控制仿真芯片的仿真,同時隨時向上位機返回仿真器的各種狀態。即便采用的是 ARM類型的MCU,其配置速度也無法與CPLD相比。因為CPLD的并行處理能力能做到RBF數 據從USB到CPLD的實時傳輸。理論USB轉接芯片的速度有多高,重構速度就能做到多高。
[0007] 硬件架構中,影響重構的第三大因素是USB接口芯片的選擇。這部分的方案比較 靈活。如可以選用支持多種轉換接口的USB芯片,一路給CPLD用,一路給FPGA用。但接口 多意味著成本高,并且重構速度和仿真器的通信速率都需要得到保證。
【發明內容】
[0008] 為解決上述問題,本發明的目的在于提供一種快速可重構的MCU仿真方法,該方 法通過上位機控制方式的配置實現快速重構,每次在打開IDE和切換型號的過程中,都不 用等待仿真器設備就緒,有效的提高了用戶的工作效率。
[0009] 為實現上述目的,本發明的技術方案如下。
[0010] -種快速可重構的MCU仿真方法,其特征在于該方法采用被動配置接口作為FPGA 的配置模式,即FPGA的配置過程由其他器件控制完成;USB口作為上位機編譯調試器與下 位機仿真器主板的通信接口,FIF0(FirstInputFirstOutput)總線接口作為上位機編譯 調試器與FPGA和配置控制器的總線復用接口,CPLD(ComplexProgrammableLogicDevice 復雜可編程邏輯器件)器件作為配置控制器,配置步驟包括:
[0011] 101、接收命令行參數;
[0012] 102、讀取RBF文件版本;
[0013] 103、讀取仿真器版本;
[0014] 104、型號一致、版本一致,則直接打印輸出;型號不一致、版本不一致則讀取CPLD 版本,發送RBF數據文件進行配置。
[0015] 本發明采用USB口作為上位機編譯調試器與下位機仿真器主板的通信接口,該 接口屬于所有PC機的標配接口,且具備熱插拔特性,體積下,方便攜帶,通信速率高;采用 FIFO總線接口作為上位機編譯調試器與FPGA和配置控制器的總線復用接口,該接口具備 較高的數據吞吐率,有助于配置控制器快速的將配置文件數據從PC機傳送到FPGA中;采 用CPLD(ComplexProgrammableLogicDevice復雜可編程邏輯器件)器件作為配置控制 器。該類器件可以實現高速USB傳輸,將配置文件通過配置模式接口,實時的將配置文件數 據寫入到FPGA中。而且,通過總線復用,仿真協議解析模塊可以靈活的將IDE編譯生成的 ffiX文件寫入到程序區內,也可以靈活的將數據區的內容和片上外設的寄存器信息返回到 PC機并顯示在窗口當中。
[0016] 被動串行(PassiveSlave,簡稱PS)模式作為FPGA的配置模式,只要配置控制器 能滿足FPGA具體型號給出的配置時序協議,就能將RBF文件以串行數據流的方式配置到 FPGA當中。
[0017] 因為仿真器RBF文件時存放在PC機中的,配置控制器在快速的配置FPGA同時,必 須要同步的接收PC機的傳輸的RBF文件數據,此時的USB數據包格式為:命令包固定4個 字節,每次發送1個Byte的命令,附帶1個Byte的數據,命令包主要用于實現PC對CPLD 的控制,主要包含上行命令、下行命令以及錯誤碼。
[0018] 進一步,RBF數據包也是固定長度的數據包,但僅僅包含RBF文件數據,一個包大 小為128Bytes,壓縮類型的RBF文件大小為200KB左右,包個數N= 2048*100/128 = 1600。
[0019] 所述的CPLD,其狀態如下:
[0020] 在接收狀態,CPLD識別PC機發送的命令包,并對其響應;如果命令合法,在完成相 應操作后,跳轉到發送狀態,發送響應命令到PC機;
[0021] 在發送狀態,如果是握手命令,則發送響應后,立即進入到配置狀態,開始接收PC 機下傳的RBF文件數據,并寫入到FPGA當中;
[0022] 在配置狀態,CPLD按照PS配置時序依此打開控制信號并判斷狀態信號;如果在檢 測時刻點狀態信號非法,則立即跳轉到發送狀態,發送響應的錯誤碼到PC機;如果一切正 常,則在配置完成后跳轉到釋放狀態,以釋放FIFO總線;
[0023] 在釋放狀態,CPLD首先檢測FPGA是否啟動;如FPGA啟動失敗,則返回到發送狀態 發送啟動失敗錯誤碼。如果啟動正常則釋放FIFO總線,并停留在該狀態;如果檢測到FPGA 掛起,則重新獲取FIFO總線并返回到接收狀態。
[0024] 本發明通過對上位機配置方式等的改進,實現了快速重構,通過選擇合適型號的 器件,理論最高可達到Is以內的配置速度,這樣用戶在使用IDE調試程序時,每次在打開 IDE和切換型號的過程中,都不用等待仿真器設備就緒,有效的提高了用戶的工作效率。
【附圖說明】
[0025] 圖1是本發明所實施的硬件結構框圖。
[0026] 圖2是本發明所實施的CPLD的狀態圖。
[0027] 圖3是本發明所實施的配置控制流程圖。
【具體實施方式】
[0028] 為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對 本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并 不用于限定本發明。
[0029] 請參照圖1所示,本發明所實現的快速重構所采樣的硬件結構框架圖,如圖