針對(duì)微控制器應(yīng)用的采用FPGA的嵌入式應(yīng)用
導(dǎo)航系統(tǒng)采用微控制器調(diào)整系統(tǒng)的圖像顯示器,根據(jù)微控制器的輸入提高或降低分辨率。
圖3中的設(shè)計(jì)展示了一個(gè)片上系統(tǒng)的實(shí)現(xiàn),包括微控制器、外圍總線和幾種外設(shè)功能,以及用于顯示寄存器文檔、暫存存儲(chǔ)器、調(diào)用棧、程序計(jì)數(shù)器、標(biāo)記和跟蹤列表的硬件跟蹤調(diào)試器。同時(shí)還支持微控制器的單步、多步和斷點(diǎn)功能。
片上系統(tǒng)的例子可用來說明設(shè)計(jì)工具流程和實(shí)現(xiàn)(圖4)。
圖4:片上系統(tǒng)的軟件開發(fā)流程及硬件開發(fā)流程
微控制器工具和實(shí)現(xiàn)
FPGA微控制器的高效率和緊湊實(shí)現(xiàn)使得2280 LUT MachXO器件可用于說明圖3中片上系統(tǒng)的設(shè)計(jì)。
啟動(dòng)該設(shè)計(jì)的最簡(jiǎn)單方法是參考“快速啟動(dòng)指南”或項(xiàng)目向?qū)б徊揭徊降卦O(shè)計(jì)FPGA。一旦設(shè)計(jì)項(xiàng)目創(chuàng)建好,下一步就是編寫微控制器程序。C或匯編語言是目前最流行的MCU編程語言。圖5顯示了用匯編語言編寫的I2C Slave程序塊。
圖5:匯編代碼實(shí)例
必須對(duì)微控制器的每個(gè)單元進(jìn)行分析以決定要執(zhí)行的操作。如代碼實(shí)例所示,I2C寫循環(huán)具有5種操作:讀狀態(tài)、寫器件地址、寫數(shù)據(jù)、寫字地址及返回。請(qǐng)注意代碼都加上了注釋。
雖然匯編語言的規(guī)范在各種MCU上大多是一致的,但設(shè)計(jì)者還是應(yīng)該查閱供應(yīng)商的MCU指令集文檔,以了解哪些操作是得到支持的。將匯編源代碼轉(zhuǎn)換到ROM初始化文件的匯編程序是由命令行驅(qū)動(dòng)的,和指令集仿真器一樣,這可以通過匯編器供應(yīng)商工具套件獲得或者從網(wǎng)上下載。其中有些工具是作為開放源代碼工具提供。例如,LatticeMico8微控制器IP(知識(shí)產(chǎn)權(quán))就是作為開放源代碼提供,這是實(shí)現(xiàn)嵌入式微控制器的一種獨(dú)特有效途徑,可使用戶擁有最大的靈活性。
嵌入式微控制器IP可以描述整個(gè)設(shè)計(jì),或者作為一個(gè)大型設(shè)計(jì)的一部分與附加代碼結(jié)合在一起。尋找一種有助于設(shè)計(jì)HDL調(diào)試和規(guī)則檢查的工具是非常明智的。這種工具會(huì)生成該設(shè)計(jì)的分層結(jié)構(gòu)和互連性的圖形表示。用戶可以通過各種圖形和分層結(jié)構(gòu)來觀察設(shè)計(jì),并利用智能工具交互探測(cè)視圖以發(fā)現(xiàn)各種問題。
圖6:設(shè)計(jì)視圖—HDL調(diào)試工具
這對(duì)于IP集成的維護(hù)和復(fù)雜FPGAHDL設(shè)計(jì)的重設(shè)計(jì)都是很有用的,IP集成需要全面深入的途徑進(jìn)行設(shè)計(jì)分析和管理。相比傳統(tǒng)仿真器或綜合工具,這種工具可以實(shí)現(xiàn)設(shè)計(jì)結(jié)構(gòu)的更高層抽象。這有助于創(chuàng)建并管理文檔以及分析設(shè)計(jì)結(jié)構(gòu),從而極大地減少了花費(fèi)在這些項(xiàng)目上的設(shè)計(jì)時(shí)間。
功能仿真
功能仿真首先創(chuàng)建一個(gè)工作庫,設(shè)計(jì)被編譯到該工作庫中。仿真器通過圖形用戶接口、菜單或命令行使該過程更加順利。這其中包含了設(shè)計(jì)文檔和測(cè)試向量(test bench)。測(cè)試向量實(shí)例化該設(shè)計(jì),并將數(shù)據(jù)加載到輸入端。當(dāng)運(yùn)行設(shè)計(jì)時(shí),測(cè)試向量被應(yīng)用于該設(shè)計(jì)并顯示結(jié)果(通常以波形的形式)進(jìn)行分析。
可利用各種仿真器實(shí)現(xiàn)設(shè)計(jì)的功能仿真。如果已對(duì)整個(gè)系統(tǒng)建模,則可以在系統(tǒng)級(jí)進(jìn)行功能仿真,或者對(duì)單個(gè)設(shè)計(jì)單元進(jìn)行仿真以確保正確的語法和功能已在RTL級(jí)建模。在這種特殊情況下,有兩家OEM的仿真器可供選擇。Aldec公司的Active-HDL Lattice Designer Edition Lite是一種附加的仿真環(huán)境。它不但提供混合語言VHDL和Verilog仿真,還可提供面向FPGA設(shè)計(jì)的可選設(shè)計(jì)流程。另一種選擇是MentorGraphics的ModelSim,它能夠提供VHDL和Verilog語言以及門級(jí)時(shí)序仿真,以對(duì)設(shè)計(jì)
進(jìn)行完整的仿真和分析。
綜合
一旦完成功能仿真,下一步就是綜合。綜合可以用獨(dú)立的方式完成,或者在供應(yīng)商的項(xiàng)目導(dǎo)航工具中作為后臺(tái)函數(shù)運(yùn)行。綜合獲取設(shè)計(jì)、進(jìn)行邏輯優(yōu)化并實(shí)現(xiàn)工藝映射。獨(dú)立模式綜合的步驟包括建立項(xiàng)目、加入源文件、設(shè)置約束、運(yùn)行設(shè)計(jì)和分析結(jié)果。約束是綜合的實(shí)現(xiàn)選項(xiàng),例如扇出限制、使用全局置位/復(fù)位。屬性則附屬于對(duì)象,以控制其依附的特定對(duì)象的優(yōu)化、映射和分析。目前可提供兩種領(lǐng)先的綜合工具。
Precision RTL綜合工具是Mentor Graphics公司的重要RTL綜合解決方案。利用Precision RTL界面可以很容易地獲取有用的特性和工具,例如示意圖(RTL/工藝)觀察器、約束分析器、PreciseTime(用于高級(jí)時(shí)序分析)、支持時(shí)序調(diào)整(re-timing)等等。這些高級(jí)工具有助于改進(jìn)效率并最終優(yōu)化結(jié)果。
Synplicity公司的Synplify綜合工具是一款高性能、復(fù)雜的邏輯綜合引擎,它利用專有的行為提取綜合技術(shù)(Behavior Extracting Synthesis Technology)提供快速、高效的FPGA和CPLD設(shè)計(jì)。簡(jiǎn)單的用戶接口和強(qiáng)大的綜合引擎結(jié)合在一起能迅速提供優(yōu)化的結(jié)果。
評(píng)論