国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于C、C++等高級編程語言開發(fā)電子系統(tǒng)設計自動化系統(tǒng)

2017-04-14 13:12成彧
軟件工程 2016年12期

成彧

摘 要:當前電子系統(tǒng)設計自動化技術(shù)已廣泛地應用于各個領域,隨著科技的發(fā)展,對電子系統(tǒng)設計自動化的要求越來越高。針對傳統(tǒng)電子系統(tǒng)設計自動化工具存在的一些缺陷,本研究通過高級編程語言實現(xiàn)了VHDL編程等工作的自動化,使用查找表存儲所有常用的VHDL關(guān)鍵字,通過特定的函數(shù)統(tǒng)一編寫所有VHDL程序的庫和實體部分,使用線性鏈表存儲系統(tǒng)中各個端口的屬性,程序自動編制設計流程圖,并將其通過特定的結(jié)構(gòu)存儲在計算機內(nèi)存中,從而實現(xiàn)了VHDL程序的自動編輯。

關(guān)鍵詞:電子系統(tǒng);VHDL;編程自動化;高級編程語言;接口軟件

中圖分類號:TP311.51 文獻標識碼:A

1 引言(Introduction)

EDA(Electronic Design Automation,電子設計自動化)是利用計算機軟件進行工作,綜合應用計算機技術(shù)、電子技術(shù)、信息處理和智能化等技術(shù),實現(xiàn)電子產(chǎn)品自動化設計的一項新技術(shù)。隨著科學技術(shù)的高速發(fā)展,電子系統(tǒng)的復雜性逐漸增加,對電子系統(tǒng)設計自動化程度的要求也越來越高。如何縮短電子產(chǎn)品設計周期、提高設計效率、提高系統(tǒng)性能、減少人力、物力支出、減少工作量、提高設計自動化水平是當前急需解決的問題。

EDA技術(shù)作為現(xiàn)代電子技術(shù)的核心,利用QuartusⅡ[1]、Max+PlusⅡ、NiosⅡ[2]、DSP Builder[3]等軟件工具通過硬件描述語言進行設計,自動進行邏輯編譯、邏輯化簡、邏輯綜合、仿真測試等,實現(xiàn)所設計的電子系統(tǒng)的功能。用于描述硬件電路的語言有多種,目前以VHDL[4]和Verilog HDL[5]為主。實現(xiàn)電子系統(tǒng)設計自動化要做的工作主要包括編輯輸入、綜合、適配、功能仿真、時序仿真、編程下載和硬件測試。傳統(tǒng)電子系統(tǒng)設計自動化工具主要用文本輸入、原理圖輸入、狀態(tài)圖輸入和波形圖輸入這幾種方法實現(xiàn)編輯輸入。本文針對電子系統(tǒng)設計的復雜性和傳統(tǒng)電子系統(tǒng)設計自動化工具存在的一些缺陷提出了幾種新的設計方法,主要通過接口軟件實現(xiàn)VHDL等硬件描述語言的自動編程和自動控制軟件工具進行操作。

2 電子系統(tǒng)設計自動化的傳統(tǒng)方法及其存在的缺

陷(The traditional method of electronic design

automation and its disadvantages)

傳統(tǒng)EDA設計的流程如圖1所示。開發(fā)者采用自頂向下的設計方案。設計時開發(fā)者首先要分析項目的設計需求,確定設計方案并進行細化,對各個模塊進行功能描述和結(jié)構(gòu)設計,然后用VHDL等硬件描述語言對頂層電路和模塊電路進行設計,再通過編譯器形成標準的VHDL文件,進行綜合產(chǎn)生網(wǎng)絡表,最后對產(chǎn)生的網(wǎng)絡表進行仿真、適配和編程下載轉(zhuǎn)化為硬件電路并進行測試。

在進行VHDL編程時,除了可以手動輸入程序代碼, 還可以采用DSP Bulider中的Signal Compiler模塊[6]、調(diào)用LPM元件或者使用IP核等方法自動編寫代碼,但這些方法存在一些缺陷。一方面,采用這些方法編寫的代碼結(jié)構(gòu)復雜而且結(jié)構(gòu)體部分一般沒有具體的進程語句,要打開所有被調(diào)用的設計實體可能比較困難,不利于分析元器件的工作原理,可能會給后續(xù)的設計及硬件測試帶來不利影響。另一方面,這些方法不能實現(xiàn)所有的功能模塊設計,編程不夠靈活。當進行一項新的模塊電路設計時,所設計的功能單元的結(jié)構(gòu)可能會因需求的變化發(fā)生變化,由于在不同的電路中該模塊的工作方式可能不同,其VHDL代碼可能有所變化[7]??紤]到在傳統(tǒng)的設計軟件中存儲可變的功能模塊設計方案具有一定難度,為了提高這些模塊的可重用性,使其適用于不同的系統(tǒng),需要將這些可變的設計方案包括可變的VHDL程序和各個元件之間的連接電路等以適當?shù)姆绞酱鎯υ谖募到y(tǒng)中,用高級編程語言進行編程從文件系統(tǒng)中讀取信息并控制電子系統(tǒng)設計軟件進行自動設計。除此以外,在進行VHDL編程時很有可能會出現(xiàn)一些重復的程序代碼,所有VHDL程序中ENTITY(實體說明)部分的格式幾乎都是一致的,而且一般情況下端口的模式和類型僅有“IN std_logic”“IN std_logic_vector”“OUT std_logic”和“OUT std_logic_vector”四種,程序中ARCHITECTURE(結(jié)構(gòu)體)部分中也有可能出現(xiàn)一些重復的代碼,舉一個簡單的例子:用VHDL程序設計一個10位十進制加法計數(shù)器,如果采用手動輸入的方式進行編程,則需要將IF語句進行10次嵌套,這樣做會使時間增加,降低開發(fā)效率,而且比較容易出錯;如果用C、C++等高級語言編程操作VHDL文件進行自動編程,僅用一個for循環(huán)就可以自動編寫出這些代碼,可以節(jié)省時間,從而提高開發(fā)效率。另外,在進行VHDL編程時還有可能涉及到一系列數(shù)值運算,如果采用手動輸入的方式則需要進行多次運算并將每次運算得到的結(jié)果寫入程序,為了提高編程效率,需要運用高級編程語言自動進行運算并將結(jié)果輸出到要編輯的程序中。

3 簡單的應用實例(A simple example)

3.1 設計需求

(1)設輸入系統(tǒng)時鐘為1000Hz,利用VHDL語言設計一個分頻器CNT1000,輸出基準時鐘為1Hz。

(2)設計一個四位十進制加法計數(shù)器CNT4D,具有同步使能和異步清零功能。

(3)設計一個四位七段數(shù)碼譯碼器DECL7S,將四位十進制加法計數(shù)器的計數(shù)結(jié)果用四位七段數(shù)碼管顯示。

(4)將以上三部分內(nèi)容結(jié)合,設計一個每秒加1的四位十進制計數(shù)器。

利用Visual Studio 2010開發(fā)環(huán)境用C語言自動編寫VHDL程序并進行電路連接和設計仿真。

3.2 VHDL自動編程的一些基本原理和主要算法

在前面已經(jīng)提到,VHDL程序中經(jīng)常含有一些重復的代碼。本實驗程序用函數(shù)void edit Library And Entity(FILE*、Port*、Char*)統(tǒng)一編寫所有VHDL程序的庫和實體部分。開發(fā)VHDL自動編程軟件時,需要考慮各個端口的一些屬性,包括端口名稱、端口類型、輸入提示信息等,由于進行自動化編程時端口信息可能需要動態(tài)地添加或刪除,可以使用一個鏈表對所有端口的屬性進行存儲,用結(jié)點存儲信息,可將端口信息的數(shù)據(jù)結(jié)構(gòu)定義如下:

3.3 實現(xiàn)VHDL自動編程的具體操作

首先打開QuartusⅡ 6.0軟件新建一個項目“Example1”,然后新建一個VHDL文件“CNT1000.vhd”并保存,接下來打開一個已編輯好的實現(xiàn)VHDL編程自動化的程序并運行,如圖2所示。

類似的也可以設計出四位七段數(shù)碼譯碼器DECL7S,方法不再贅述。

最后新建一個Block Diagram/Schematic File文件,將以上三部分內(nèi)容組合,如圖9所示。

3.4 仿真結(jié)果

如圖10所示,仿真結(jié)果表明所設計的功能與需求完全一致。當rest為高電平時計數(shù)清零;當en為高電平且rest為低電平時進行計數(shù),clk每經(jīng)過1000個上升沿計數(shù)器加1。

3.5 實驗結(jié)論及分析

以上實驗結(jié)果表明,使用高級語言編程軟件可以進行自動化VHDL編程,這種設計方法至少可以自動設計一些簡單的功能模塊,提高設計的效率。

通常采用手動輸入VHDL代碼的方式進行編程效率較低,以適當?shù)姆绞阶詣泳幊炭商岣呔幊绦?,縮短系統(tǒng)開發(fā)周期。

4 實現(xiàn)電子系統(tǒng)設計自動化的一些重要方法和編程

技術(shù)(The key methods and programming technics

to realize EDA)

4.1 用接口軟件自動設計電子系統(tǒng)的一般方法

為了提高電子系統(tǒng)設計的自動化水平,需要用軟件自動接口將手工作業(yè)部分變?yōu)樽詣樱瑥亩∪シ爆嵉挠布Z言編程等工作。用軟件自動接口實現(xiàn)電子系統(tǒng)自動化設計的流程如圖11所示。

進行系統(tǒng)設計時,首先要分析設計需求,理解設計項目的任務、要求、指標和系統(tǒng)的應用領域、基本功能、工作原理等,然后確定總體設計方案并進行細化[8]??梢杂糜嬎銠C模擬人的思維對設計需求進行分析,確定設計方案并編制頂層和各個模塊的設計流程圖,需要應用一些機器學習、數(shù)據(jù)分析等人工智能領域的方法。為了使VHDL編程方便、快捷,需要在VHDL自動化編程系統(tǒng)的定義部分建立一個查找表,用于存儲所有常用的VHDL關(guān)鍵字,程序代碼如下:

在解析設計流程圖中的信息時,可能需要應用一些人工智能技術(shù),可以使用Lex、Yacc等詞法分析工具輔助VHDL自動化編程系統(tǒng)對設計流程圖中的信息進行分析[9]。在進行VHDL自動化編程之前,需要將設計流程圖進行兩次掃描。進行第一次掃描時先確定程序的框架結(jié)構(gòu)和要設計的系統(tǒng)的端口信息、實體名、結(jié)構(gòu)體名等信息,第二次掃描時進行VHDL自動化編程。

在VHDL編程結(jié)束之后,一般還需要進行圖形輸入設計,將各個功能單元通過電路進行連接。進行圖形輸入設計時也可以通過接口軟件進行自動化設計,方法與VHDL自動化編程相似,程序自動打開Block Diagram/Schematic File文件修改內(nèi)容可以按正確的方法將各個功能單元通過電路自動連接。此外,在進行圖形輸入設計時之前編輯的VHDL程序可能還需要修改,設計時還有可能出現(xiàn)一些功能相似但不完全相同的模塊,例如需要進行計數(shù)并鎖存結(jié)果,系統(tǒng)中可能存在多個若干位的十進制計數(shù)器和鎖存器,這些計數(shù)器和鎖存器的位數(shù)可能因需求的不同而不同。這種情況下如果用傳統(tǒng)的設計工具則需要重新打開或新建多個VHDL程序文件,找到需要修改的所有代碼進行修改,然后重新編譯程序,再重新生成數(shù)字電路,操作很不方便。采用接口軟件可以做出改進,在接口軟件中可以用一個或多個界面模擬電子系統(tǒng)圖形輸入設計的環(huán)境并建立一個控制表,在控制表中顯示選中的功能模塊的信息,設計電路時可隨時進行修改,模擬圖形輸入設計環(huán)境的界面如圖12所示。

在模擬圖形輸入設計環(huán)境中,除了可以進行VHDL自動化編程、功能模塊之間連接線路等操作外,還可以通過修改控制表中的內(nèi)容自動修改VHDL程序,自動編譯程序并生成數(shù)字電路在原來的位置顯示。當檢測到控制表中的內(nèi)容發(fā)生變化時,調(diào)用fopen函數(shù)自動打開需要修改的VHDL程序文件,然后根據(jù)控制表中內(nèi)容修改的位置和修改后的內(nèi)容自動從VHDL程序中找出需要修改的代碼并進行修改,再自動執(zhí)行編譯程序等操作。

由于在VHDL語言中有些指令并不常用,可以設計一個功能精簡的編譯系統(tǒng)進行編譯,該系統(tǒng)是QuartusⅡ中VHDL編譯系統(tǒng)的子集,設計時使用詞法分析器對語法結(jié)構(gòu)進行翻譯,可使用哈希技術(shù)管理常用的VHDL指令集,并通過動態(tài)堆棧維護底層信息,縮小了編譯系統(tǒng)的體積并提高了編譯效率。

系統(tǒng)電路設計、編譯、仿真結(jié)束之后,需要將系統(tǒng)的輸入輸出信號鎖定在芯片的引腳上。為了提高開發(fā)效率,可將所有設計中常用的芯片及其各個引腳的信息存儲在計算機中,鎖定引腳時可以根據(jù)編譯結(jié)果自動將信號與芯片引腳對應。

4.2 實現(xiàn)電子系統(tǒng)設計自動化的系統(tǒng)環(huán)境及對系統(tǒng)中尚

未實現(xiàn)的功能的討論

眾所周知,進行電子系統(tǒng)自動化設計既可以使用如Windows系列的通用計算機操作系統(tǒng),也可以使用專用的操作系統(tǒng)。在進行程序編輯或電子系統(tǒng)設計時如果程序或系統(tǒng)的體積較大,可以在計算機上新建一個專用的啟動模式,當計算機開機時如果進入專用模式其他進程幾乎都不再運行,全部用于對程序進行編譯、鏈接、運行等操作,可提高程序的執(zhí)行效率。

在以上的電子系統(tǒng)自動化編程系統(tǒng)中還有幾個功能尚未實現(xiàn),例如如何在QuartusⅡ界面之外自動編譯VHDL程序并生成數(shù)字電路,這將在后續(xù)工作中繼續(xù)開發(fā)研究。

5 結(jié)論(Conclusion)

當前世界已進入信息化時代,EDA技術(shù)[10]已廣泛應用于電子、機械、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學、軍事等領域,對推動科學技術(shù)發(fā)展發(fā)揮著重要作用。實驗證明,通過高級編程語言開發(fā)接口軟件可以自動完成VHDL編程等工作,改善了硬件描述語言編程的復雜性,提高了電子系統(tǒng)設計的自動化水平。本文對此進行了初步探討,但該自動化設計軟件還存在一些未實現(xiàn)的功能和不完善的地方,需要通過進一步的研究提出一些新的設計方法。

參考文獻(References)

[1] LB Yao,XU Yong,M Pan.Design and Implementation of Taxi Billing System Based on FPGA[J].Electronic Design Engineering,

2011,27(6A):104-115.

[2] HJ Liu,et al.Development of Frequency Variable Inverter Based on SOPC and NiosII[J].IEEE Transactions on Industry Applications,2012,49(5):2237-2243.

[3] XL Hu,L Ding,ZG Zhang.The Design of Digital Filter Based on DSP Builder[J].Applied Mechanics & Materials,

2014:602-605;2641-2644.

[4] 夏莉莉.淺議VHDL語言在電子設計自動化中的應用[J].信息安全與技術(shù),2012(7):44-46.

[5] TS Tan,BA Rosdi.Verilog HDL Simulator Technology:A Survey[J].Journal of Electronic Testing,2014,30(3):255-269.

[6] 張志亮,趙剛,齊星剛.從Simulink模型自動生成VHDL代碼——基于DSPBuilder的FPGA設計流程[J].現(xiàn)代電子技術(shù),2004,23:4-6.

[7] 王彩鳳,李衛(wèi)兵,卞麗.VHDL語言在電子設計中的應用[J].實驗科學與技術(shù),2014(4):65-67.

[8] 朱新宇.電子設計自動化實驗系統(tǒng)的開發(fā)與應用[D].北京郵電大學工程碩士學位論文,2012.

[9] 齊星剛.VHDL編譯器設計研究技術(shù)[D].四川大學碩士學位論文,2005.

[10] 宋文斌.并行遺傳算法在器件模型參數(shù)提取中的應用.軟件

工程師,2012(4):45-47.

作者簡介:

成 彧(1994-),男,本科,初級工程師.研究領域:軟件開發(fā).