李 卿,惠 鋒,董志丹
(無錫中微億芯有限公司,江蘇無錫 214072)
隨著 FPGA(Field-Programmable Gate Array)的發(fā)展,芯片的性能越來越強、規(guī)模越來越大、開發(fā)周期越來越長,使得芯片設計面臨一系列新的問題,如設計質量難以控制,設計成本越來越高等,IP(Intelligence Property)技術則解決了芯片設計所面臨的難題。IP是指用來生成ASIC和PLD的邏輯功能塊,又稱IP核(IP Core)[1]。設計者可以重復使用已經設計并經過驗證的IP核,從而更專注于整個系統(tǒng)的設計,提高設計的效率和正確性,降低成本。因此,IP核在電子設計自動化(Electronic Design Automation,EDA)工具推廣和使用中扮演著舉足輕重的角色。該文重點講述IP核圖形用戶界面(GUI)的實現(xiàn)。
友好、易用的圖形用戶界面在產品推廣時起著至關重要的作用。目前,編程人員多使用VC++、JAVA、Qt等語言實現(xiàn)Windows下的GUI應用[2]。但是作者在程序開發(fā)過程中發(fā)現(xiàn),IP Core種類繁多,每個IP對應一個界面,功能雖類似但又有獨特性,且需進行文件處理,此時完全使用代碼編寫來實現(xiàn)GUI設計與開發(fā)并非明智之舉。一方面編程人員代碼編寫任務比較繁瑣,每個界面都需要大量代碼來實現(xiàn);另一方面,界面響應處理完全由代碼實現(xiàn),無論是修改界面外觀還是響應處理都需要重新編譯代碼再發(fā)布,不利于維護;此外,文件的處理并非上述編程語言的優(yōu)勢。因此,根據(jù)項目特點選擇合適的開發(fā)語言與實現(xiàn)方式是一個關鍵,有助于提高開發(fā)效率并減少維護成本。
本文采用工具命令語言(Tool Command Language,TCL)實現(xiàn)與Qt GUI的交互,將界面控件的狀態(tài)信息等放置在TCL文件中配置,當用戶想修改控件之間的邏輯關系時,只需修改TCL控制文件即可,不需要修改程序代碼,靈活方便,極大地減少了代碼維護工作,從而達到動態(tài)配置的效果。
TCL指工具命令語言,功能強大,基礎結構和語法非常簡單,易于學習和掌握,主要有如下特點[3]:(1)TCL是一種解釋執(zhí)行的腳本語言,支持變量、循環(huán)、過程等使用的編程元素;(2)TCL提供了豐富的C語言調用接口,可以很容易地嵌入至C語言程序中;(3)TCL是一個開放式的開發(fā)工具,提供了豐富的功能擴展函數(shù),允許用戶編寫新的命令解釋程序,加入TCL的解釋器中。
Qt是一個多平臺的C++圖形用戶界面應用程序框架,主要有如下特點[4]:(1)Qt提供了一組強大、容易理解的GUI類,運行得更快;(2)Qt特有的信號和槽機制構造了一個強大的部件編程機制,更易使用;(3)Qt圖形設計器(Qt Designer)是一個所見即所得的全方位GUI構造器,利用該設計器,開發(fā)者可以擺放各種Qt控件構造圖形用戶界面,而不需要編寫一行代碼。
由于TCL提供了與C的接口函數(shù),所以可以在Qt應用程序中調用TCL庫函數(shù),執(zhí)行TCL的命令或腳本,具體流程如圖1所示[5]。
圖1 TCL執(zhí)行流程
每個IP對應一個界面,因此,為達到設計的簡潔性與靈活性,摒棄傳統(tǒng)的編寫代碼實現(xiàn)界面功能的方式,采用Qt與TCL交互的方式來實現(xiàn)。每個IP設計對應的界面文件(.ui)和控制文件(.tcl),其中界面文件用于IP界面顯示,控制文件管理界面控件的屬性、邏輯關系、IP文件生成,它們之間通過Qt程序代碼進行管控,根據(jù)用戶需求執(zhí)行相應代碼文件。此種設計方式可以將文件設計與Qt代碼編寫相分離,分配給不同的工程師負責,術業(yè)有專攻,各司其職。當界面設計修改時只需修改界面文件和控制文件,無需修改程序代碼,方便快捷地響應用戶需求,從而將開發(fā)人員從繁瑣的編碼修改工作中解脫出來。Qt與各文件之間的關系如圖2所示。
圖2 Qt與各文件之間的關系
整個IP Core主要分為UI界面文件設計、TCL控制文件設計、Qt程序代碼,下面分模塊進行闡述。
UI文件采用Qt圖形設計器進行設計,它為用戶提供可視化的界面設計,簡單、方便、快捷,不需編寫代碼即可實現(xiàn)界面的設計,生成對應的.ui文件。若想修改外觀界面,直接更改該UI文件即可,不需更改程序代碼,達到動態(tài)配置的效果,極大地減少代碼的編程工作。
UI界面主要由兩部分組成:QStacked Widget和QTab Widget。QStacked Widget主要用于顯示控件界面,可以分多頁展示,設計師根據(jù)需要擺放控件;QTab Widget主要用于顯示IP模型圖和總結信息,模型圖在Qt代碼中進行繪制。此外,UI中控件通過名稱與TCL文件中控制信息進行關聯(lián),因此設計UI時控件名稱要與TCL文件中的一致。
為保證界面大小的自適應,所有控件放置在布局管理器中,如圖3所示(以DCM為例)。
圖3 UI設計界面
TCL是一個開放式的腳本語言,功能強大、可快速學習、快速開發(fā),因此控制文件采用TCL編寫,通過該文件可實現(xiàn)動態(tài)響應用戶配置、生成模塊代碼。每個IP核有自己對應的TCL控制文件,響應不同的IP即調用不同的控制文件。當用戶想修改控件之間的邏輯關系時,只需修改TCL控制文件即可,不需要修改程序代碼,靈活方便。
TCL控制文件與UI界面文件中的控件通過名稱進行關聯(lián),從而達到動態(tài)控制界面狀態(tài)的效果。TCL控制文件主要包括控件屬性設置、Pin屬性設置、控制函數(shù)、IP文件生成等。
(1)控件屬性設置,主要用于UI界面中控件屬性值的初始化,如設置控件的值、值類型、使能狀態(tài)、是否顯示、參數(shù)值列表等,格式如下:
(2)Pin屬性設置,主要用于繪制IP模型圖,屬性值主要包括Pin名稱、方向、類型、使能狀態(tài)、是否顯示、寬度范圍等,格式如下:
圖4 Qt代碼流程
(3)控制函數(shù),用于設置各控件值、控制UI界面各控件之間的邏輯關系等,從而達到動態(tài)控制界面狀態(tài)的效果。主要包括各控件的更新函數(shù)、校驗函數(shù)以及管腳更新函數(shù) (update_pins)、最終狀態(tài)函數(shù)(finalize)。
(4)IP文件生成,根據(jù)用戶配置生成對應的IP文件。
此外TCL文件還定義了控件的Get與Set方法,Get方法用于獲取界面控件值,Set方法用于設置界面控件值,從而實現(xiàn)TCL與界面的交互。
Qt代碼將UI界面文件和TCL控制文件有效地連通起來。Qt加載UI文件用于顯示UI界面,執(zhí)行TCL控制文件用于配置界面參數(shù)信息。所有的參數(shù)都在程序中集中管理,用戶操作UI界面時首先更改Qt的參數(shù)信息,然后執(zhí)行TCL中的函數(shù)更改相應參數(shù)值與邏輯關系,TCL文件中通過Get方法獲取參數(shù)數(shù)據(jù),而TCL文件中若更改參數(shù)信息,則通過Set方法與程序中的參數(shù)信息同步,最后更新UI界面,從而實現(xiàn)動態(tài)響應用戶配置參數(shù)。整體工作流程如圖4所示。
IP界面主要由兩部分組成,一部分為模型圖顯示,一部分為控件顯示。Qt程序加載設計好的UI文件,首先查找QTab Widget控件,若該控件存在則根據(jù)獲取的所有Pin信息繪制IP模型圖,若該控件不存在則不需繪制IP模型圖;其次根據(jù)TCL控制文件中各控件屬性值顯示與配置QStacked Widget控件,從而實現(xiàn)界面初始化,在更新TCL控制文件數(shù)據(jù)時,調用各控件的 update_xx、finalize_xx、validate_xx 函數(shù) (xx對應控件的名稱),以及update_pins、finalize函數(shù),界面顯示流程如圖5所示。
而當用戶操作UI界面時,控件響應用戶綁定的信號槽,更新參數(shù)數(shù)據(jù),并調用TCL函數(shù)更新數(shù)據(jù)與邏輯關系,最后重新繪制UI界面,如圖6所示。
圖5 界面顯示流程
圖6 響應用戶界面流程
Qt程序代碼設計完畢即可執(zhí)行該程序。用戶選擇要查看的IP,程序自動加載該IP的配置文件,即UI界面文件和TCL控制文件,并顯示該IP圖形界面。用戶根據(jù)需求配置該IP屬性并生成對應的IP核,程序執(zhí)行界面如圖7所示(以DCM為例)。
圖7 程序執(zhí)行界面
該文實現(xiàn)了一種Qt+TCL的界面實現(xiàn)方式,由于IP核種類繁多且又有獨特性,因此摒棄傳統(tǒng)編寫代碼實現(xiàn)的方式,采用配置文件的方式,每個IP設計對應的界面文件和控制文件,通過Qt代碼進行管控。當用戶想修改界面設計時,只需修改界面文件和控制文件即可,不需要修改與編譯程序代碼;此外,當擴展用戶IP時,也只需編寫對應的界面文件與控制文件,非常靈活方便,易于擴展與維護工作,從而達到動態(tài)配置的效果。
[1]P Chauhan,EM Clarke,Y Lu,D Wang.Verifying IP-core based system-on-chip designs[C].IEEE International Asic/soc Conference,1999:27-31.
[2]萬連文.基于XML的圖形用戶界面構建平臺的研究與實現(xiàn)[D].中國地質大學,2008.
[3]John K,Ousterhout Ken Jones.Tcl/Tk入門經典 (第2版)[M].北京:清華大學出版社,2010.
[4]蔡志明,盧傳富,李立夏.精通Qt4編程(第2版)[M].北京:電子工業(yè)出版社,2010.
[5]楊怡玲,王換招,管旭東.利用Tcl/Tk實現(xiàn)X Windows下的GUI[J].微電子學與計算機,1999,1.
[6]李杰.IP核驗收平臺搭建與圖形用戶界面開發(fā)[D].哈爾濱:哈爾濱工業(yè)大學,2015.