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

        ?

        Verilog到Java在線翻譯器Verilog2Java的設計與實現

        2017-03-01 04:26:12劉有耀楊鵬程
        計算機應用與軟件 2017年1期
        關鍵詞:數據表賦值調用

        劉有耀 楊鵬程

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

        Verilog到Java在線翻譯器Verilog2Java的設計與實現

        劉有耀 楊鵬程

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

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

        Verilog Java 在線翻譯器 協同設計

        0 引 言

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

        1 Verilog2Java在線翻譯器設計思路

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

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

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

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

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

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

        圖1 Verilog2Java總體設計

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

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

        2.1 模塊的調用與端口的翻譯

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

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

        表1 Verilog模塊及其對應的Java類

        從該實例中可以更加明顯看出,Verilog對于模塊的調用對應轉換為Java中方法的調用。而Verilog中的端口列表則與Java定義的DataType類中的參數一一對應。

        2.2 數據類型的翻譯

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

        2.3 結構說明語句的翻譯

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

        表2 initial語句和always語句對應的翻譯方法

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

        2.4 過程賦值語句的翻譯

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

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

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

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

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

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

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

        表4 阻塞賦值語句的轉換實例

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

        2.5 行為描述語句的翻譯

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

        表5 行為描述語句的翻譯

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

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

        在線翻譯頁面的設計中有兩個文本域TextArea,上面的文本域用于輸入待翻譯的句子,輸入內容的格式為Verilog文件形式。下面的文本域用于顯示服務器的翻譯結果,當點擊在線翻譯按鈕時,去數據庫中查詢相關的信息,進行翻譯。然后將翻譯之后的結果顯示出來。

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

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

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

        index.html

        about.html

        login.jsp

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

        4 設計實例

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

        圖2 設計實例展示

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

        5 結 語

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

        [1] 周海芳, 陳虎, 楊學軍. 嵌入式系統軟硬件聯合設計方法研究[J]. 計算機工程與科學, 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的設計與實現[J].計算機應用與軟件, 2011, 28(8):184-186.

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

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

        [6] 考持坤. 基于J2EE的Web數據庫應用技術[D].南京:南京理工大學, 2004.

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

        [8] 尼瑪扎西. 漢藏在線翻譯多媒體電子詞典設計研究與實現[D].拉薩:西藏大學,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。劉有耀,副教授,主研領域:專用集成電路設計。楊鵬程,碩士生。

        TP311

        A

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

        猜你喜歡
        數據表賦值調用
        關于1 1/2 … 1/n的一類初等對稱函數的2-adic賦值
        L-代數上的賦值
        湖北省新冠肺炎疫情數據表
        黨員生活(2020年2期)2020-04-17 09:56:30
        核電項目物項調用管理的應用研究
        LabWindows/CVI下基于ActiveX技術的Excel調用
        測控技術(2018年5期)2018-12-09 09:04:46
        基于列控工程數據表建立線路拓撲關系的研究
        強賦值幺半群上的加權Mealy機與加權Moore機的關系*
        基于系統調用的惡意軟件檢測技術研究
        利用賦值法解決抽象函數相關問題オ
        圖表
        国产高清自产拍av在线| 欧美性videos高清精品| 久久人妻AV无码一区二区| 人妻少妇无乱码中文字幕| 亚洲视频免费一区二区 | 日本在线 | 中文| 狠狠色丁香久久婷婷综合蜜芽五月 | 男人的天堂中文字幕熟女人妻| 色狠狠av老熟女| 日本精品免费一区二区三区| 亚洲一区二区三区福利久久蜜桃| 人人妻人人澡人人爽人人精品av| 久久亚洲精品成人av| 国产精品白浆无码流出| 日本在线免费不卡一区二区三区| 天天摸天天做天天爽水多| 欧美性性性性性色大片免费的| 日本高清在线播放一区二区三区| 在线亚洲日本一区二区| 精品人妻av区乱码| 亚洲不卡av不卡一区二区| 久久熟女乱一区二区三区四区| 偷拍色图一区二区三区| 色噜噜狠狠狠综合曰曰曰| 一本大道香蕉视频在线观看| 国产大学生自拍三级视频| 国产精品国产三级第一集| 中文无码一区二区不卡αv| 日韩久久久黄色一级av| 蜜桃在线高清视频免费观看网址| 少妇性俱乐部纵欲狂欢电影| 无码丰满少妇2在线观看| 国产毛片一区二区日韩| 国产毛片黄片一区二区三区| 亚洲国产精品成人无码区| 亚洲色www无码| 沐浴偷拍一区二区视频| 一本一道久久综合久久| 欧美精品AⅤ在线视频| 在线不卡精品免费视频| 日本成本人片免费网站|