999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

針對FPGA的IDL—Verilog編譯器的設計與實現

2017-07-25 16:00:18吳湛王玲吳宇
現代電子技術 2017年14期

吳湛+王玲+吳宇

摘 要: 軟件通信體系結構規范(SCA)規定采用CORBA中間件來實現運行在不同處理器上的波形組件之間的相互通信,然而目前缺少能夠有效支持FPGA上CORBA 中間件的IDL編譯器。為此設計實現了一種IDL?Verilog編譯器,該編譯器能夠支持用戶自定義的任意IDL文件,并根據FPGA波形組件功能需要,自動生成運行在FPGA上的ORB核心、FPGA組件框架代碼,從而真正實現FPGA組件與GPP組件的統一CORBA通信。介紹IDL?Verilog編譯器的整體結構,并對該編譯器的設計與實現進行詳細闡述,最后對編譯器進行測試。結果表明,該編譯器能夠正確解析IDL文件,并實現從IDL到Verilog語言的映射,自動生成的一系列目標文件使FPGA真正具備CORBA通信能力。

關鍵詞: 軟件通信體系結構; CORBA; FPGA; IDL編譯器

中圖分類號: TN915?34; TP314 文獻標識碼: A 文章編號: 1004?373X(2017)14?0018?05

Abstract: The software communications architecture (SCA) norm stipulates that the CORBA middleware should be used to realize intercommunication between the waveform components running in the different processors, but there is no IDL compiler which can support the CORBA middleware on FPGA effectively. Therefore, an IDL?Verilog compiler was designed, which can support any IDL files defined by users themselves, and generate the ORB core and FPGA component framework code running on FPGA automatically according to the functional requirements of FPGA components, so as to realize the CORBA communication between FPGA components and GPP components. The whole structure of IDL?Verilog compiler is introduced. The design and implementation of the compiler are expounded in detail. Some tests for the compiler were carried out. The results show that the IDL?Verilog compiler can parse the IDL files correctly, implement the mapping from IDL to Verilog language, and generate the target files automatically to make FPGA really have the ability of CORBA communication.

Keywords: software communication architecture; CORBA; FPGA; IDL compiler

0 引 言

軟件無線電(Software Defined Radio,SDR)是一種基于通用硬件平臺依靠軟件實現其功能的無線電通信技術,其體系結構是通過軟件通信體系架構(Software Communication Architecture,SCA)來定義的[1?2]。SCA采用CORBA中間件來實現其所需的分布式計算環境[3?4],其硬件平臺通常包含通用處理器(GPP)、數字信號處理器(DSP)、可編程門陣列(FPGA)等。雖然CORBA(公共對象請求代理體系結構)中間件技術在GPP上已經廣泛應用,但在DSP,FPGA等專用處理器上實現起來較為困難,目前只有OIS公司開發的ORBexpress FPGA[5]和Prismtech公司開發的集成電路ORB(ICO)[6]實現了FPGA上的CORBA通信,但考慮到國防安全問題,不允許在我國軍事領域中使用[7]。基于以上考慮,為了實現FPGA上的CORBA通信,研發了支持FPGA處理器的CORBA中間件產品FPGA?ORB。

FPGA?ORB中間件主要包括運行在FPGA處理器上的ORB核心、客戶端樁和服務器框架以及運行在PC機上的IDL?Verilog編譯器,其體系結構如圖1所示。其中,ORB核心用于實現客戶端請求和服務器對象之間的連接,客戶端的ORB核心接收被調用操作的參數并將其組碼為網絡可接收的格式,服務器的ORB核心將來自網絡的操作參數解組,然后送給服務器來執行所調用的操作。客戶端樁用于將客戶端的請求編碼,通過客戶端的ORB發送到服務器,并把返回的結果解碼后送給客戶端。服務器框架負責把客戶端通過ORB發過來的請求解碼,通過對象操作實現,然后把結果編碼后通過服務器ORB發送給客戶端。客戶端調用的接口和服務器實現的接口是通過接口描述語言(Interface Definition Language,IDL)來定義的,但是與某一種具體編程語言不同,IDL 是一種純說明性語言,它只能夠給出該接口的定義和每個操作要求的參數而不牽涉到具體的實現[8?9],因此要用IDL?Verilog編譯器對IDL文件進行編譯,然后根據解析得到的IDL文件信息修改模板文件代碼,最后生成Verilog語言實現的ORB核心、客戶端樁和服務器框架。可見,IDL?Verilog編譯器是FPGA?ORB的關鍵模塊,本文主要論述IDL?Verilog編譯器的設計與實現。

1 IDL?Verilog編譯器的設計與實現

本文設計的IDL?Verilog編譯器劃分為三個子系統:參數解析子系統、編譯前端子系統、編譯后端子系統,其具體結構如圖2所示。其中,參數解析子系統用于完成對用戶編譯命令的解析,存儲編譯器控制信息;編譯前端子系統用于完成對輸入IDL文件的解析,并生成一棵抽象語法樹;編譯器后端子系統用于完成對編譯前端子系統生成的抽象語法樹的遍歷,并提取相關信息完成對輸入模板文件的修改,然后生成目標文件。這種設計方式帶來的好處是,可以保持參數解析子系統和編譯前端子系統的代碼不變,僅僅通過改變編譯后端子系統的代碼就可以實現針對不同處理器和開發語言的IDL編譯器,這樣就大大增強了IDL編譯器的通用性。下面分別對三個子系統進行詳細的闡述。

1.1 參數解析子系統

參數解析子系統的作用是通過解析處理用戶輸入的命令參數以獲取控制命令信息來實現對編譯器的控制。文中設計的IDL?Verilog編譯器需要輸入的命令參數包括:源文件名、包含文件路徑、輸出目標代碼文件路徑、模板文件路徑、參數傳遞文件路徑以及幫助查詢命令。

1.2 編譯前端子系統

編譯器前端子系統主要由預處理模塊、詞法分析模塊和語法分析模塊組成。下面分別對三個模塊進行詳細的闡述。

1.2.1 預處理模塊

預處理模塊的主要作用是對輸入的IDL文件進行預處理,以方便詞法分析模塊、語法分析模塊進行后續處理。其主要功能子模塊包括:源文件包含處理子模塊、宏定義處理子模塊和條件編譯處理子模塊。

(1) 源文件包含處理子模塊。源文件包含處理子模塊用來對源文件當中的“#include”語句進行解析,提取輸入源文件中的包含文件;然后以包含文件的絕對路徑作為輸入文件遞歸調用預處理模塊;最后按由外向內和由前向后的原則存儲包含文件的絕對路徑。IDL?Verilog編譯器將按照存儲的包含文件的絕對路徑的先后順序對相關文件逐一進行解析處理。

(2) 宏定義處理子模塊。宏定義處理子模塊用來對源文件和包含文件當中的“#define”語句進行解析,將宏定義中的宏名存儲,用于預處理模塊當中條件編譯的判斷處理,而并不進行宏定義替換。在語法解析模塊中,則會提取完整的宏定義信息,然后將基本數據類型的標識符和已存儲的有效宏名進行匹配,如果匹配成功,則將該標識符替換為宏定義的字符串。

(3) 條件編譯處理子模塊。條件編譯處理子模塊用來對源文件和包含文件當中的“#ifdef”,“#if defined”等語句進行解析,具體方法就是將參數解析模塊存儲的預定義變量名和預處理模塊存儲的宏名作為依據,對條件編譯語句進行判斷,找出需要編譯的語句。

為了確保源文件和包含文件內容的不變性,預處理模塊為每個源文件和包含文件都新建一個與之對應的臨時文件。將預處理之后的源文件和包含文件存入與之對應的臨時文件。詞法分析模塊、語法分析模塊對源文件和包含文件的后續處理就轉化為對臨時文件的解析。當所有解析處理結束之后,IDL?Verilog編譯器會刪除預處理模塊生成的臨時文件。

預處理模塊具體執行流程圖如圖3所示。

1.2.2 詞法分析模塊

詞法分析模塊是 IDL?Verilog 編譯器前端子系統的關鍵模塊之一。該模塊按從左往右的順序對源文件進行掃描,在掃描的過程中會跳過空格和換行符并刪除注釋,將若干連續字符拼接成一個符合IDL語言的構詞規則的標識符并提取,然后將提取的標識符交給語法分析模塊進行后續處理,其具體過程如圖4所示。

1.2.3 語法分析模塊

語法分析模塊采用“邊檢查、邊存儲、邊轉換”的方式來對輸入文件進行語法解析:每當語法分析模塊從輸入文件中檢查到一種語法成分時,則調用相對應的語法解析函數對該語法成分進行解析;接著按照IDL語言的語法規則來對語法成分進行解析和檢查,并在解析和檢查過程中,將該語法成分的信息存儲;將Verilog語言不支持的函數參數類型轉換為基本數據類型,當函數參數類型為結構體時,則將其按結構體成員的數量拆分為基本數據類型,當函數參數類型為別名時,則將其與存儲的別名信息對比,找出其原始基本數據類型。其具體執行流程圖如圖5所示。最終,一個IDL文件經預處理模塊、詞法分析模塊和語法分析模塊會生成一棵抽象語法樹,該抽象語法樹存儲了完整的IDL文件信息[10]。每棵抽象語法樹可能包含十棵子樹,這十棵子樹分別存儲:包含文件信息、宏定義信息、常量信息、結構體信息、別名信息、異常信息、枚舉信息、聯合信息、接口信息、模塊信息。

語法分析流程如下:

(1) 判斷文件是否結束,如果是則執行第(6)步,否則繼續執行第(2)步。

(2) 從文件中讀取一個字符串。

(3) 判斷該字符串是否為合法字符串,如果為合法字符串,則執行第(4)步,否則執行第(5)步。

(4) 判斷字符串,如果字符串為函數,則調用函數解析接口進行函數信息提取和存儲,并將函數參數的數據類型轉換為基本數據類型存儲,然后返回第(1)步繼續執行;如果字符串為文件包含、屬性、異常和用戶定義的數據類型(宏定義、別名、常量、結構、枚舉、聯合),則調用相應的解析函數,完成相應信息的提取和存儲,然后返回第(1)步繼續執行;如果字符串為接口,則提取接口名和繼承接口信息并存儲,然后返回第(1)步繼續執行;如果字符串為模塊,則提取并存儲模塊名,然后返回第(1)步繼續執行;如果字符串不是上面提到的任一字符串,則返回第(1)步繼續執行。

(5) 報告錯誤文件名字、錯誤行數和錯誤類型。

(6) 結束。

1.3 編譯后端子系統

編譯后端子系統主要包括目標代碼生成模塊。目標代碼生成模塊是IDL?Verilog編譯器最后一個關鍵模塊。這一模塊的主要作用是通過遍歷語法分析模塊生成的抽象語法樹來提取接口信息,然后根據提取的信息完成對模板文件的修改來生成目標文件。

為了方便生成目標代碼,本文為每一個需要更改的FPGA?ORB模板文件內容都做了注釋標記,目標文件生成函數會從抽象語法樹中提取相應信息對模板文件中的標記內容進行修改,并生成目標文件,這樣就大大減少了目標代碼生成模塊的工作量。生成的目標文件按功能可以劃分為:ORB模塊、IOR解析模塊、選擇器模塊、客戶端樁模塊、服務器框架模塊、組件接口模塊,其結構如圖6所示。

(1) ORB模塊。該模塊主要用于GIOP報文頭、請求報文頭、應答報文頭的解析和封裝。

(2) IOR解析模塊。該模塊用于解析應答報文中的對象引用(IOR),獲取相應的對象密鑰(objectkey)。

(3) 選擇器模塊。該模塊為選擇器模塊,用于報文發送和接收選擇。

(4) 客戶端樁模塊。該模塊包含多個客戶端樁子模塊,其數量與組件端口數量相同,其主要作用是對請求報文中的函數參數進行封裝以及對應答報文中的函數參數進行解析。

(5) 服務器框架模塊。該模塊包含多個服務器框架模子模塊,其數量與組件端口數量相同,其主要作用是對請求報文中的函數參數進行解析以及對應答報文中的函數參數進行封裝。

(6) 組件接口模塊。該模塊采用硬件抽象層(HAL)的接口規范[11],其主要作用是實現FPGA組件端口和FPGA?ORB之間的數據傳遞。

2 IDL?Verilog編譯器測試

本文對IDL?Verilog編譯器的測試主要分為本地測試和CORBA通信測試兩個方面。

(1) IDL?Verilog編譯器本地測試。IDL?Verilog編譯器本地測試主要是測試IDL?Verilog編譯器對IDL文件的解析處理能力。因為輸入的IDL文件是無法窮舉的,本文采用了等價類測試的方法來測試[12]。通過將輸入的文件中的語句劃分成能夠覆蓋IDL語法各種情況的等價類,并對每個等價類完成了測試。由于各等價類的測試步驟相同,本文僅選用了一個測試用例來介紹本地測試的過程。測試的IDL文件test.idl如圖7所示,該IDL文件經IDL?Verilog編譯器編譯之后生成的目標文件如表1所示。測試表明,IDL?Verilog編譯器能夠實現對輸入IDL文件的正確解析,并成功生成目標文件。

(2) CORBA通信測試。CORBA通信測試主要是測試表1中的目標文件能否配合的FPGA?ORB實現FPGA上的CORBA通信。

立足于實驗室的測試條件,搭建一個如圖8所示的測試平臺。該測試平臺主要由GPP和FPGA組成,其中,GPP主要用來運行核心框架和GPP波形組件A,FPGA用來運行FPGA波形組件B。GPP采用 TAO進行CORBA通信,FPGA采用表1中目標文件組成的FPGA?ORB進行CORBA通信,GPP ORB與FPGA ORB之間實際通過ELBC總線相連。

測試平臺的通信過程如圖9所示,上電之后,FPGA組件B也能像GPP組件A一樣通過FPGA?ORB向核心框架中的域管理器進行注冊,然后域管理器對組件A進行初始化、端口連接和參數配置以完成整個波形組件的初始化;最后組件A和組件B可以通過各自的中間件向對方發送函數調用請求,并返回調用結果。測試表明,IDL?Verilog編譯器生成的目標文件成功地實現了FPGA與GPP之間的CORBA通信。

3 結 語

本文根據IDL語言的語法規則,使用C語言實現了IDL?Verilog編譯器。該編譯器采用模塊化的設計方法,將整個編譯器按功能劃分為不同的子模塊,可以通過改變其子模塊實現不同的語言映射,大大提高了IDL編譯器的通用性。同時該編譯器生成的目標文件能夠正確完成IDL語言到Verilog語言的映射。IDL?Verilog編譯器目前已經調試通過,并作為FPGA?ORB重要組成部分實現了FPGA上CORBA通信。

參考文獻

[1] JOHNSON C R, Jr, SETHARES W A.軟件無線電[M].北京:機械工業出版社,2008.

[2] 粟欣,許希斌.軟件無線電原理與技術[M].北京:人民郵電出版社,2010.

[3] 崔小鵬,胡中豫,張豪.SCA中CORBA與硬件抽象層技術研究[J].現代電子技術,2011,34(6):32?35.

[4] 李雅萍,楊尚森,李陽.CORBA技術在SCA系統中的應用[J].計算機工程與設計,2008,29(16):4200?4203.

[5] BECKWITH W, DELLER S, GTHOMPSON J. Hardware communications infrastructure supporting location transparency and dynamic partial reconfiguration: US 2008/0229326 A1 [P]. 2008?09?18.

[6] Prismtech. Prismtech openfusion CORBA products [EB/OL]. [2013?12?10]. http://www.prismtech.com/sectionitem.

[7] 高宏偉.SCA系統中針對FPGA處理器的中間件關鍵技術研究與實現[D].長沙:國防科技大學,2011.

[8] HENNING Michi, VINOSKI Steve.基于C++ CORBA高級編程[M].北京:清華大學出版社,2007.

[9] 韋樂平.CORBA語言映射[M].北京:電子工業出版社,2001.

[10] AHO A V.編譯原理[M].北京:機械工業出版社,2009.

[11] 王金波.基于SCA的硬件抽象層連接設計及其在DSP/FPGA上的實現[D].長沙:國防科技大學,2005.

[12] 李穎,胡明.基于C語言實現的IDL編譯器[J].計算機技術與發展,2013,23(3):5?9.

主站蜘蛛池模板: 91亚洲影院| 好吊色妇女免费视频免费| 蜜臀AV在线播放| 国产午夜小视频| 久久精品波多野结衣| 国产老女人精品免费视频| 亚洲啪啪网| 国产99在线观看| 亚洲国语自产一区第二页| 日韩在线欧美在线| 一本色道久久88综合日韩精品| 成人福利在线看| 欧美在线精品怡红院| 日本人妻一区二区三区不卡影院 | 最新亚洲av女人的天堂| 成年人久久黄色网站| 成年免费在线观看| 免费A∨中文乱码专区| 欧美国产菊爆免费观看| 又黄又湿又爽的视频| 日韩精品无码免费一区二区三区 | 国产精品微拍| 精品黑人一区二区三区| 久久99蜜桃精品久久久久小说| 精品国产亚洲人成在线| www.亚洲一区| 国产乱子伦一区二区=| 日韩免费无码人妻系列| 亚洲精品视频在线观看视频| 天堂在线www网亚洲| 欧美激情视频二区| lhav亚洲精品| 夜精品a一区二区三区| 青草视频免费在线观看| 91精品国产丝袜| 午夜精品区| 国内精品视频区在线2021| 又粗又大又爽又紧免费视频| 综合久久久久久久综合网| 热99精品视频| 99久视频| 亚洲无码熟妇人妻AV在线| 日韩无码一二三区| 欧美亚洲一区二区三区导航| 日韩免费毛片| 视频一区视频二区日韩专区| 日本成人精品视频| 一级福利视频| 伊人成人在线| 亚洲AV免费一区二区三区| 久久黄色小视频| 99精品视频九九精品| 国产高清不卡视频| 在线观看无码av免费不卡网站| 国产h视频在线观看视频| 成人一级免费视频| 国产成人久久综合777777麻豆| 国产农村1级毛片| 亚洲水蜜桃久久综合网站| 2024av在线无码中文最新| 成人综合网址| 国产美女无遮挡免费视频| 啊嗯不日本网站| 国产成人欧美| 无码专区在线观看| 99精品热视频这里只有精品7| 国产精品99久久久| 国产欧美日韩91| 国产原创自拍不卡第一页| 亚洲性影院| 亚洲最大情网站在线观看| 99久久亚洲综合精品TS| 国产后式a一视频| 国产a在视频线精品视频下载| 亚洲一区色| 亚洲香蕉久久| 青青久久91| 国产欧美日韩综合在线第一| 欧美精品不卡| www.99精品视频在线播放| 福利在线免费视频| 精品91视频|