模型驅(qū)動(dòng)設(shè)計(jì)和統(tǒng)一建模語(yǔ)言有什么作用
近年來(lái),模型驅(qū)動(dòng)設(shè)計(jì)和統(tǒng)一建模語(yǔ)言(UML :Unified Modeling Language)作為一種與平臺(tái)無(wú)關(guān)的建模方法,在電子系統(tǒng)設(shè)計(jì)中得到了廣泛的關(guān)注?,F(xiàn)存的幾種UML配置文件在UML級(jí)別建模硬件組件,并自動(dòng)生成代碼。其中實(shí)時(shí)和嵌入式系統(tǒng)的建模和分析[15](MARTE:Modeling and Analysis of Real-time and Embedded Systems),在UML圖中使用了時(shí)序的屬性。在實(shí)時(shí)嵌入式系統(tǒng)建模中最常用的UML圖之一是序列圖。序列圖表示應(yīng)用程序功能、不同組件之間的交互,并允許指定“時(shí)間不變量”。圖3-2中為基于UML/MARTE建模、驗(yàn)證和代碼生成流程。
Simulink是建立在Matlab之上的系統(tǒng)級(jí)建模仿真基本環(huán)境,是一個(gè)圖形化的建模工具,從某種意義上講,凡是能夠用數(shù)學(xué)方式描述的系統(tǒng),都可以用Simulink建模,容易搭建的包括:通信系統(tǒng)物理層和數(shù)據(jù)鏈路層,控制系統(tǒng),數(shù)字信號(hào)處理系統(tǒng),動(dòng)力學(xué)系統(tǒng)。Real-Time Workshop(RTW)是基于Simulink的目標(biāo)代碼生成工具。HDL Verifier是用于驗(yàn)證的工具套件,提供的驗(yàn)證功能主要關(guān)注在模型仿真與生成HDL代碼的仿真結(jié)果一致性比對(duì)。在MATLAB開(kāi)發(fā)環(huán)境中,要自動(dòng)生成面向FPGA的目標(biāo)代碼,需要使用simulink搭建算法或者系統(tǒng)的模型,然后通過(guò)RTW或者RTW提供給第三方代碼自動(dòng)生成工具(如HDL Coder、Xilinx System Generator、Altera DSP Builder等)的開(kāi)放接口。
起點(diǎn)是UML/MARTE序列圖,它描述了系統(tǒng)的行為(在組件之間的數(shù)據(jù)交換)和時(shí)序約束。從這個(gè)描述中,生成了SystemC/TLM和VHDL模型,包含檢查約束的斷言調(diào)用。因?yàn)樾蛄袌D指定實(shí)體之間的數(shù)據(jù)交換,但不指定實(shí)體內(nèi)部的處理代碼;因此,生成的代碼要用于仿真還需要鏈接到可用的知識(shí)產(chǎn)權(quán)(IP)核心庫(kù)。仿真輸入一組合適的測(cè)試臺(tái),并生成一個(gè)約束報(bào)告。驗(yàn)證過(guò)程產(chǎn)生的結(jié)果,一方面,將仿真中獲得的新的信息反饋,用于細(xì)化UML模型及其約束。另一方面,將生成的VHDL代碼合成為硬件組件(如FPGA),從而獲得UML應(yīng)用的實(shí)際實(shí)現(xiàn)。GenERTiCA工具支持從UML模型自動(dòng)生成VHDL代碼。

圖3-2 基于UML/MARTE建模、驗(yàn)證和代碼生成流程
Matlab/Simulink是目前在對(duì)全流程支持最完整的一套工具,能夠提供高性能動(dòng)態(tài)系統(tǒng)的仿真、分析和測(cè)試,并能夠完成從模型到代碼的轉(zhuǎn)換。通過(guò)圖形界面和基于語(yǔ)言的方法,使系統(tǒng)設(shè)計(jì)變得靈活易懂,易于開(kāi)發(fā)和測(cè)試人員設(shè)計(jì)和調(diào)試,在國(guó)內(nèi)也有大量的技術(shù)支持并提供解決方案,因此本章節(jié)重點(diǎn)介紹基于Matlab/Simulink的建模和HDL代碼自動(dòng)生成應(yīng)用技術(shù)。目前,基于Matlab/Simulink的模型驅(qū)動(dòng)開(kāi)發(fā)和HDL代碼生成技術(shù)已成功應(yīng)用于航天、航空、航海、醫(yī)療、電力、紅外成像、固態(tài)存儲(chǔ)、機(jī)器人控制等眾多領(lǐng)域,具體應(yīng)用包括無(wú)線數(shù)字收發(fā)器、音視頻處理、編解碼器、雷達(dá)信號(hào)處理、閃存控制器等,從原型設(shè)計(jì)到代碼實(shí)現(xiàn)平均開(kāi)發(fā)時(shí)間縮短50%,典型的成功應(yīng)用情況如下:
1) Reutech 雷達(dá)系統(tǒng)公司采用基于模型的設(shè)計(jì)流程,開(kāi)發(fā)艦載海空搜索雷達(dá)核心信號(hào)處理子系統(tǒng),完成系統(tǒng)級(jí)的仿真,自動(dòng)生成75,000多行HDL代碼,節(jié)省了兩個(gè)工程師人年,該雷達(dá)系統(tǒng)最后完成了探索性的海上試驗(yàn)。
2)美國(guó)的紅外熱成像技術(shù)領(lǐng)導(dǎo)企業(yè)FLIR在紅外攝像機(jī)的熱成像算法中應(yīng)用了模型驅(qū)動(dòng)開(kāi)發(fā)的方法,從概念到現(xiàn)場(chǎng)可測(cè)試原型的時(shí)間減少了60%,重大算法更改從重新部署到代碼實(shí)現(xiàn),由幾周縮短為幾小時(shí),HDL代碼重用從零增加到30%。
3) Semtech通過(guò)基于模型的設(shè)計(jì)生成VHDL代碼,加快了無(wú)線RF設(shè)備優(yōu)化的數(shù)字接收器鏈的開(kāi)發(fā),驗(yàn)證時(shí)間從數(shù)周縮短為幾天,并且最終交付的代碼性能更佳。
4)日本半導(dǎo)體生產(chǎn)商Siglead使用HDL Coder從定點(diǎn)Simulink模型生成VHDL代碼,并將其部署在Xilinx Spartan-6FPGA上,開(kāi)發(fā)時(shí)間由4個(gè)月變?yōu)?個(gè)月,縮短了75%,設(shè)計(jì)迭代修改從三天變?yōu)槿齻€(gè)多小時(shí),設(shè)計(jì)人員能夠把更多的時(shí)間花在富有成效的算法開(kāi)發(fā)和探索優(yōu)化設(shè)計(jì)上。
5)為了幫助心臟病學(xué)家檢測(cè)脂質(zhì)核心斑塊LCP(患有LCP更容易罹患冠心病),紅外線公司開(kāi)發(fā)了TVC成像系統(tǒng)。美國(guó)的Infraredx使用Matlab/Simulink和HDL編碼器加速TVC成像系統(tǒng)中IVUS信號(hào)和圖像處理算法的開(kāi)發(fā)和FPGA實(shí)現(xiàn),自動(dòng)生成的代碼與手寫(xiě)的代碼使用了相同數(shù)量的乘法器,同時(shí)使用的邏輯減少了9%,使用的內(nèi)存減少了3%。
6) Philips Healthcare的工程師使用Simulink來(lái)建模由數(shù)字RF接收機(jī)、比較器、RF波形發(fā)生器和放大器組成的架構(gòu)。引入基于模型的設(shè)計(jì)方案后,使設(shè)計(jì)問(wèn)題能夠早發(fā)現(xiàn)早解決,由于HDL Coder生成代碼具有很好的規(guī)范性,使代碼生成相對(duì)于手工編寫(xiě)代碼的不一致性風(fēng)險(xiǎn)降低。
7)Renesas半導(dǎo)體的工程師為圖像處理算法開(kāi)發(fā)和實(shí)施采用了基于模型的設(shè)計(jì),探索了多個(gè)設(shè)計(jì)優(yōu)化和替代方案并生成了高效的HDL代碼,該公司的工程師稱(chēng):“在進(jìn)行優(yōu)化后,自動(dòng)生成的代碼與我們最好的手工編寫(xiě)代碼相比,基本上具有相同的區(qū)域和速度特性。由 HDL Coder生成的HDL代碼與手工編寫(xiě)的同等HDL代碼相比,在120 MHz和275 MHz目標(biāo)時(shí)鐘頻率上使用的資源稍微少一些。并且,通過(guò)使用Simulink和HDL Coder,早前沒(méi)有硬件經(jīng)驗(yàn)的工程師在大概六個(gè)月內(nèi)學(xué)會(huì)了RTL設(shè)計(jì)?!?