亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Verilog到Java在線翻譯器Verilog2Java的設(shè)計與實現(xiàn)

        2017-03-01 04:26:12劉有耀楊鵬程
        計算機(jī)應(yīng)用與軟件 2017年1期
        關(guān)鍵詞:數(shù)據(jù)表賦值調(diào)用

        劉有耀 楊鵬程

        (西安郵電大學(xué)研究生院 陜西 西安 710121)

        Verilog到Java在線翻譯器Verilog2Java的設(shè)計與實現(xiàn)

        劉有耀 楊鵬程

        (西安郵電大學(xué)研究生院 陜西 西安 710121)

        為實現(xiàn)Verilog語言的跨平臺操作,完成軟硬件之間的協(xié)同設(shè)計驗證,提出了在線翻譯器Verilog2Java的設(shè)計思路。通過對Verilog和Java語言的比較,首先設(shè)計出一組從Verilog到Java的翻譯規(guī)則,然后采用B/S結(jié)構(gòu),將已定義的規(guī)則加載到配置好的Eclipse工作環(huán)境下,再到數(shù)據(jù)庫中執(zhí)行相應(yīng)的查詢操作,最終生成功能等價的Java目標(biāo)代碼。結(jié)果表明:該翻譯器經(jīng)多次實例驗證,可完成預(yù)期的設(shè)計功能。

        Verilog Java 在線翻譯器 協(xié)同設(shè)計

        0 引 言

        Verilog因其具有很強(qiáng)的靈活性,語法簡單,容易理解等優(yōu)點(diǎn)而成為目前應(yīng)用最為廣泛的硬件描述語言之一。而Java語言也因其平臺無關(guān)性和“一次編譯,隨處運(yùn)行”的特點(diǎn)逐漸成為一種系統(tǒng)設(shè)計和開發(fā)的高級程序設(shè)計語言。隨著專用集成電路ASIC發(fā)展速度的加快和集成度的不斷提高,設(shè)計人員急需一種軟硬件協(xié)同設(shè)計模式來替代其繁瑣的跨平臺操作。而Verilog2Java在線翻譯器正好提供了這樣的功能。通過在Eclipse工作平臺下的配置和Tomcat服務(wù)器上的部署,把硬件語言描述的功能轉(zhuǎn)換為軟件實現(xiàn)的方法,再經(jīng)過預(yù)定義的翻譯規(guī)則,將軟件模塊對硬件功能的調(diào)用轉(zhuǎn)化為同種語言之間的相互調(diào)用,從而完成軟硬件之間的協(xié)同設(shè)計[1,2]驗證,為Verilog語言的跨平臺應(yīng)用提供了一種全新的實現(xiàn)方法。

        1 Verilog2Java在線翻譯器設(shè)計思路

        本文所采用的B/S體系結(jié)構(gòu)主要是利用Web技術(shù)與瀏覽器JavaScript相互結(jié)合,再處理瀏覽器提出的請求。用戶在使用在線翻譯器軟件的過程中,只需通過瀏覽器就可隨時隨地實現(xiàn)翻譯功能。

        本文的主要工作是在B/S架構(gòu)上設(shè)計一個由Verilog向Java轉(zhuǎn)換的在線翻譯器,其設(shè)計思路是通過對兩種語言的對比后得出的。從語言的語法特點(diǎn)上來看,兩種語言在許多方面都具有共性,可以將這些共性提取出來,重新定義為一種新的概念,并對這些新概念進(jìn)行數(shù)據(jù)化的表示,以保證實現(xiàn)二者之間的翻譯[3]功能。這些共性主要在以下幾個方面上體現(xiàn):

        (1) Verilog語言中的模塊化思想與Java中的封裝類實現(xiàn)的功能相同。對于Verilog中的模塊,可以將其轉(zhuǎn)換為Java中的一個封裝類來實現(xiàn)。Verilog有時在實現(xiàn)某些復(fù)雜的功能時,需要使用一個模塊去調(diào)用另一個模塊的實例元件來實現(xiàn),轉(zhuǎn)換為Java語言時,就相當(dāng)于實現(xiàn)一個難度較大的方法需調(diào)用已定義的方法類提供特定的功能來實現(xiàn)。

        (2) Verilog中的任務(wù)task和函數(shù)function語句的實現(xiàn)在Java語言中可以用外部定義一個特定的方法類來進(jìn)行具體的描述和轉(zhuǎn)換。

        (3) Verilog中的行為描述語句如if條件語句,while循環(huán)語句和for語句以及case生成語句等,在Java中都有相似的語法來實現(xiàn)它們之間的轉(zhuǎn)換。

        根據(jù)這些相似性,給出Verilog2Java的總體設(shè)計思路:首先將Verilog源文件經(jīng)過預(yù)處理模塊后保存到Verilog數(shù)據(jù)表中。然后再利用在線翻譯器(需事先將運(yùn)行平臺和服務(wù)器都設(shè)置完成)中預(yù)先定義好的翻譯規(guī)則,在Verilog數(shù)據(jù)表和預(yù)先定義好的Java數(shù)據(jù)表中進(jìn)行查詢,完成兩者之間的轉(zhuǎn)換,最后生成Java目標(biāo)代碼。整個Verilog2Java的設(shè)計如圖1所示。

        圖1 Verilog2Java總體設(shè)計

        2 Verilog2Java在線翻譯器的翻譯規(guī)則

        在Verilog轉(zhuǎn)換為Java的過程中,需要事先定義Verilog元素轉(zhuǎn)換為Java語言的翻譯規(guī)則,下面是一些主要的翻譯規(guī)則。

        2.1 模塊的調(diào)用與端口的翻譯

        Verilog設(shè)計中的基本功能塊就是模塊。模塊[4]由描述接口和實現(xiàn)邏輯功能兩部分組成。模塊描述的接口即是端口,它是模塊與外界交互的界面,它代表的是模塊的輸入和輸出口名,也是與別的模塊聯(lián)系的端口的標(biāo)識?;谶@些方面,可將其轉(zhuǎn)換為Java語言方法,因為Java中的方法定義了對象提供的服務(wù),也定義了對象與使用對象程序之間的接口。這樣做的優(yōu)勢在于可以比較自然地將Verilog定義的端口作為Java方法中的參數(shù)傳入,來實現(xiàn)翻譯的功能。當(dāng)一個模塊功能的實現(xiàn)需要調(diào)用另一個模塊來完成時,只需對該模塊的元件實例進(jìn)行調(diào)用即可。這種模塊的調(diào)用映射為Java語言時,可以在Java中提前定義好一個類,當(dāng)需要使用時,另一個方法調(diào)用該事先定義好的類即可實現(xiàn)Verilog所描述的功能。

        接下來通過一個具體的實例來說明模塊之間的轉(zhuǎn)換,如表1所示。

        表1 Verilog模塊及其對應(yīng)的Java類

        從該實例中可以更加明顯看出,Verilog對于模塊的調(diào)用對應(yīng)轉(zhuǎn)換為Java中方法的調(diào)用。而Verilog中的端口列表則與Java定義的DataType類中的參數(shù)一一對應(yīng)。

        2.2 數(shù)據(jù)類型的翻譯

        Verilog中最基本的數(shù)據(jù)類型:reg型、wire型、integer型和parameter型。在進(jìn)行轉(zhuǎn)換時,需要事先使用Java定義類的方法在Java代碼中定義一個新的數(shù)據(jù)類型DataType類。該類的主要作用是處理Verilog中所有與數(shù)值有關(guān)的語句。包括Verilog中各個賦值數(shù)據(jù)的當(dāng)前值CurrentValue和在賦值過程中所記錄的值HistoryValue,以及判斷某個變量是否滿足上升沿RisingEdge()或下降沿FallingEdge()條件的方法,這兩種方法均返回boolean類型的結(jié)果。當(dāng)Verilog模塊的行為描述語句需要明確事件是否滿足觸發(fā)條件時,Java語言可以調(diào)用該類對象的成員方法進(jìn)行相應(yīng)的翻譯去判斷,這樣做可以減小翻譯出現(xiàn)的錯誤率,方便之后的校正。

        2.3 結(jié)構(gòu)說明語句的翻譯

        Verilog中主要包括4種結(jié)構(gòu)說明語句:initial、always、task和function。initial和always語句在程序運(yùn)行時就開始執(zhí)行。每個initial語句代碼只運(yùn)行一次,其表現(xiàn)形式為initial……,將其翻譯為Java語句時,只需給變量賦初值即可。而always語句則是只要滿足觸發(fā)條件就不斷地重復(fù)進(jìn)行,直到模塊運(yùn)行結(jié)束。其表現(xiàn)形式為always @(事件表達(dá)式)begin……end,將其翻譯為Java語言時,需要用到Java語言中的if語句來判斷其觸發(fā)條件是否成立,若成立,則繼續(xù)執(zhí)行下面的語句。而begin……end中的數(shù)據(jù)在翻譯時就需要比較變量的當(dāng)前值和歷史所記錄的值。上一次賦值后所保存的值存放于歷史記錄值HistoryValue中,而變量當(dāng)前的值則存放于CurrentValue中。每當(dāng)語句執(zhí)行結(jié)束后,需將每個變量的當(dāng)前值CurrentValue賦給各自的歷史值HistoryValue,此時可以在DataType類中新添加一個成員類的方法FinalNumber(),該方法返回的是void類型。其中的事件表達(dá)式可以調(diào)用數(shù)據(jù)類型翻譯時定義的DataType類中的上升沿RisingEdge()方法和下降沿FallingEdge()方法來實現(xiàn)。接下來通過一個實例來具體地闡述這兩種說明語句塊的翻譯。如表2所示。

        表2 initial語句和always語句對應(yīng)的翻譯方法

        task和function語句分別用來對任務(wù)和函數(shù)進(jìn)行定義,當(dāng)編寫一個較大的程序模塊代碼時,往往需要將其分解為許多較小的任務(wù)和函數(shù)來進(jìn)行編寫和調(diào)試。在翻譯為Java語言時,可以首先定義一個外部的方法類Method,當(dāng)Verilog需要某項功能翻譯為Java語言時,可以直接調(diào)用Method類中定義的內(nèi)容來實現(xiàn)我們所要的功能,這樣方便代碼的重構(gòu)。

        2.4 過程賦值語句的翻譯

        Verilog包括兩種類型的過程賦值語句:非阻塞賦值和阻塞賦值[5]。

        (1) 非阻塞賦值語句(如y <= x)

        非阻塞的賦值方式在Verilog語句塊中使用時,上面語句所賦的變量值不能立即就為下面的語句所用;塊結(jié)束后才能完成這次賦值操作,而所賦的變量值是上一次賦值所得到的。非阻塞賦值的最大特點(diǎn)在于語句執(zhí)行的并行性,可以有效地避免競爭現(xiàn)象的發(fā)生。針對此特點(diǎn),在翻譯為Java代碼時,可以將等號右邊變量的歷史記錄值HistoryValue賦給左邊變量的當(dāng)前值CurrentValue,因為歷史記錄的值中保存的正是上一個時鐘周期該變量的值。具體的實例如表3所示。

        表3 非阻塞賦值語句的翻譯

        從表3中可以看出,對于非阻塞賦值,由于代碼的執(zhí)行方式是并行的,因此,每次執(zhí)行完成后,z的值是上一個時鐘周期時y的值。

        (2) 阻塞賦值語句(如y = x)

        對于阻塞賦值語句,在該語句執(zhí)行結(jié)束時,y的值就會立刻變?yōu)閤所表示的值。當(dāng)翻譯為Java語言時,只需將等號右邊變量的當(dāng)前值賦給等號左邊的變量,然后再調(diào)用FinalNumber()方法將各個變量的當(dāng)前值保存起來即可。具體的轉(zhuǎn)換如表4所示。

        表4 阻塞賦值語句的轉(zhuǎn)換實例

        從表4中可以看出,這種賦值方式是立即執(zhí)行的,也就是說在執(zhí)行下一條語句時,y的值已和x的值保持一致,即在同一個時鐘周期內(nèi),兩個變量的值可能是相同的。

        2.5 行為描述語句的翻譯

        行為描述語句中的條件語句用于根據(jù)某個條件來確定是否執(zhí)行其后的語句,關(guān)鍵字if和else用于表示條件語句。執(zhí)行過程為:首先判斷其條件表達(dá)式是否成立,再根據(jù)成立與否判斷執(zhí)行哪一條語句。在翻譯為Java語言時,比較簡單,只需在判斷條件處做一些微小的改動即可。Verilog的循環(huán)語句while和for語句的執(zhí)行過程和Java語言執(zhí)行此功能的代碼相同,翻譯時可直接翻譯。而對于case生成語句,它的執(zhí)行過程為:首先計算條件表達(dá)式的值,然后按照順序?qū)⑺透鱾€候選項進(jìn)行比較:若等于第一個候選項,則執(zhí)行其對應(yīng)的語句,若和全部候選項都不相等,則執(zhí)行default語句。而將其翻譯為Java語句時,需要用到switch(表達(dá)式){case子句},switch語句計算初始表達(dá)式的值,并將其值和每個case子句中表達(dá)式的值進(jìn)行匹配。程序?qū)?zhí)行匹配的case子句中的語句塊。如果沒有匹配的case子句,程序?qū)?zhí)行可選的default(默認(rèn))子句。表5展示了行為描述語句的具體翻譯過程。

        表5 行為描述語句的翻譯

        3 開發(fā)平臺及具體實現(xiàn)

        本文采用Eclipse與Dreamweaver8的相互作用進(jìn)行頁面的設(shè)計開發(fā)。Web服務(wù)器的操作系統(tǒng)為Windows Server 2003、用Tomcat6.0作為Java的運(yùn)行環(huán)境和對外提供Web服務(wù),用SQL Server 2005作為數(shù)據(jù)庫[6]服務(wù)。

        在線翻譯頁面的設(shè)計中有兩個文本域TextArea,上面的文本域用于輸入待翻譯的句子,輸入內(nèi)容的格式為Verilog文件形式。下面的文本域用于顯示服務(wù)器的翻譯結(jié)果,當(dāng)點(diǎn)擊在線翻譯按鈕時,去數(shù)據(jù)庫中查詢相關(guān)的信息,進(jìn)行翻譯。然后將翻譯之后的結(jié)果顯示出來。

        數(shù)據(jù)庫SQL Server中有兩個數(shù)據(jù)表,一個是存儲Verilog數(shù)據(jù)表,由于Verilog語言具有自己的語法特點(diǎn)[7],不可能把Verilog的所有模塊以及語法格式都翻譯成Java。所以首先在Verilog的預(yù)處理模塊中,對Verilog某些不可翻譯的語法成分做一些細(xì)微的改變,進(jìn)而對翻譯器的實現(xiàn)進(jìn)行了簡化。然后將改動后的部分添加到Verilog數(shù)據(jù)表中。對于Verilog中的一些專用元素,Java中沒有元素能夠與其相對應(yīng),必須設(shè)計另一個預(yù)先設(shè)計好的Java數(shù)據(jù)表。

        下面來詳細(xì)的分析其執(zhí)行過程[8]:

        用戶登錄到Verilog2Java在線翻譯器的頁面中,按照Verilog的語法規(guī)則輸入要翻譯的內(nèi)容,然后點(diǎn)擊翻譯按鈕將請求發(fā)送到Tomcat服務(wù)器端,服務(wù)器根據(jù)資源的配置文件web.xml對接受到的請求進(jìn)行深入的分析,再根據(jù)配置文件中的信息:

        index.html

        about.html

        login.jsp

        可知提交的請求是將Verilog轉(zhuǎn)換為Java語言,然后調(diào)用服務(wù)層servlet中的com.ypc.servlet.Translator執(zhí)行該請求。在Translator中的public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{}方法中獲得頁面中輸入的全部信息;然后創(chuàng)建實現(xiàn)翻譯的會話層接口TranslatorDao與數(shù)據(jù)庫進(jìn)行連接,之后調(diào)用public void search(String id, String name)方法執(zhí)行查詢操作;最終經(jīng)過兩個數(shù)據(jù)表的比較之后,對數(shù)據(jù)庫進(jìn)行更新操作,調(diào)用數(shù)據(jù)庫實現(xiàn)層com.ypc.dao.implement的public int update(String sqls)方法來實現(xiàn),之后調(diào)用Translator類中的方法將更新之后的數(shù)據(jù)顯示在頁面上。

        4 設(shè)計實例

        一個在Verilog2Java在線翻譯器平臺上運(yùn)行的四位脈動進(jìn)位計數(shù)器的Verilog源代碼描述以及翻譯之后的Java目標(biāo)代碼的顯示實例,如圖2所示。

        圖2 設(shè)計實例展示

        經(jīng)過Verilog2Java翻譯器部署在Tomcat 6.0服務(wù)器上的驗證,可以看出基本符合文中所定義的翻譯規(guī)則,從而驗證了Verilog2Java在線翻譯器的可實現(xiàn)性和正確性。

        5 結(jié) 語

        本文介紹了以Java為目標(biāo)語言的Verilog2Java的在線翻譯器,通過比較Verilog和Java語法的差別和共同點(diǎn),有針對性地設(shè)計翻譯模式。在轉(zhuǎn)換的過程中,充分利用Java對象來封裝Verilog程序中的一些信息。Verilog2Java翻譯器采用B/S結(jié)構(gòu)、Java EE架構(gòu)和SQL數(shù)據(jù)存儲技術(shù),在Eclipse配置的環(huán)境下結(jié)合Tomcat服務(wù)器完成了一個基礎(chǔ)的功能模塊,經(jīng)過多次測試,運(yùn)行基本正常,運(yùn)行結(jié)果也基本符合所定義的規(guī)律。接下來的工作是,實現(xiàn)Verilog和Java之間的相互翻譯,并且充分利用Java語言的特點(diǎn),使得Verilog2Java在線翻譯器性能更加穩(wěn)定。

        [1] 周海芳, 陳虎, 楊學(xué)軍. 嵌入式系統(tǒng)軟硬件聯(lián)合設(shè)計方法研究[J]. 計算機(jī)工程與科學(xué), 2001, 23(6):98-101.

        [2] Ohana E, Luca C. RTL modeling and simulation using JAVA[C]//2012 13th International Conference on Optimization of Electrical and Electronic Equipment, 2012:1253-1258.

        [3] 張紅艷, 李茵茵, 蔡潔云. KRL到Java翻譯器KtoJ的設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件, 2011, 28(8):184-186.

        [4] 安健, 吳悅, 楊洪斌, 等. Verilog到VHDL翻譯器的設(shè)計與實現(xiàn)[J]. 計算機(jī)工程與設(shè)計, 2005, 26(10):2695-2697.

        [5] 董鑫, 宋國新. Verilog到Java翻譯器VtoJ的設(shè)計與實現(xiàn)[J].計算機(jī)與數(shù)字工程, 2005, 33(7):100-103.

        [6] 考持坤. 基于J2EE的Web數(shù)據(jù)庫應(yīng)用技術(shù)[D].南京:南京理工大學(xué), 2004.

        [7] 胡燕翔. Verilog語義的ASM表示方法研究[J].計算機(jī)工程, 2006, 32(21):1-2,21.

        [8] 尼瑪扎西. 漢藏在線翻譯多媒體電子詞典設(shè)計研究與實現(xiàn)[D].拉薩:西藏大學(xué),2008.

        DESIGN AND REALIZATION OF VERILOG2JAVA ONLINE TRANSLATOR THAT TRANSLATES FROM VERILOG TO JAVA

        Liu Youyao Yang Pengcheng

        (GraduateSchoolofXi’anUniversityofPostsandTelecommunications,Xi’an710121,Shaanxi,China)

        A design thinking that translates from Verilog to Java is proposed to achieve cross-platform operation of Verilog language and complete collaborative design and verification between hardware and software. By comparing the similarities between Verilog and Java language, a set of conversion rules for the translation from Verilog to Java is designed. Then the B/S structure is adopted to load the defined rules to configure Eclipse working environment, and then execute the search operation in the database. Finally, a functional equivalent of the Java language is generated. The results show that the translator is able to complete the expected design function.

        Verilog Java Online translator Collaborative design

        2015-12-10。劉有耀,副教授,主研領(lǐng)域:專用集成電路設(shè)計。楊鵬程,碩士生。

        TP311

        A

        10.3969/j.issn.1000-386x.2017.01.019

        猜你喜歡
        數(shù)據(jù)表賦值調(diào)用
        關(guān)于1 1/2 … 1/n的一類初等對稱函數(shù)的2-adic賦值
        L-代數(shù)上的賦值
        湖北省新冠肺炎疫情數(shù)據(jù)表
        黨員生活(2020年2期)2020-04-17 09:56:30
        核電項目物項調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
        強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        利用賦值法解決抽象函數(shù)相關(guān)問題オ
        圖表
        国产成人亚洲综合一区| av一区二区三区人妻少妇| 亚洲欧洲日产国码无码久久99| 亚洲国产精品久久九色| 久久精品国产亚洲av专区| 无套内谢孕妇毛片免费看| 变态 另类 欧美 大码 日韩| 国模无码视频专区一区| 天堂av一区二区麻豆| 国产精品一区二区久久国产| 西西人体444www大胆无码视频| 一本久道久久综合五月丁香| 亚洲成av人片在久久性色av| 99久久免费视频色老| 国产午夜精品一区二区三区软件| 国产精品亚洲专区在线播放| 亚洲av网站在线免费观看| 亚洲国产日韩a在线乱码| 亚洲av纯肉无码精品动漫| 韩国主播av福利一区二区| 青青草视频在线观看绿色| 国产在线精品一区二区三区直播| 人体内射精一区二区三区| 国产一区二区三区四区色| 产美女被爽到高潮免费a| 狠狠色噜噜狠狠狠狠7777米奇| 亚洲熟妇网| 男人一插就想射的原因| 欧美人与动性xxxxx杂性| 亚洲日韩国产精品第一页一区| 国内精品视频成人一区二区| 免费在线视频亚洲色图| 成年女人免费视频播放体验区| 日日摸夜夜欧美一区二区| 国产免费一区二区三区在线观看 | 久久99热只有频精品8国语| 国产人妻久久精品二区三区老狼| 国产精品美女久久久久久大全| 免费蜜桃视频在线观看| 久久狠狠爱亚洲综合影院| 欧美午夜刺激影院|