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

基于Verilog HDL的電子電路設(shè)計(jì)圖的一種可視化編程方法

2014-11-19 16:25:23鄧凱升趙宇晴
卷宗 2014年10期
關(guān)鍵詞:信息

鄧凱升 趙宇晴

隨著計(jì)算機(jī)軟件工程技術(shù)的迅速發(fā)展,可視化編程技術(shù)已經(jīng)成為當(dāng)今軟件開發(fā)最重要的工具和手段。尤其是Power Builder、Visual C++等開發(fā)工具的出現(xiàn),大大推動(dòng)了可視化編程技術(shù)的發(fā)展。本文旨在探索可視化編程技術(shù)在基于硬件描述語(yǔ)言的電子電路設(shè)計(jì)領(lǐng)域的實(shí)現(xiàn),介紹一種將電路設(shè)計(jì)圖自動(dòng)轉(zhuǎn)換成硬件描述語(yǔ)言(Verilog HDL)的方法。

1.設(shè)計(jì)思想及實(shí)現(xiàn)方法

1.1.電路圖的處理思想

電路圖的處理是指將電路設(shè)計(jì)圖的信息轉(zhuǎn)換成可處理的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)結(jié)構(gòu)中的過(guò)程。在電子電路圖設(shè)計(jì)者完成畫圖后,將電路圖的圖形信息轉(zhuǎn)化成數(shù)據(jù)結(jié)構(gòu)信息進(jìn)行存儲(chǔ),方便進(jìn)行接下來(lái)硬件描述語(yǔ)言的自動(dòng)生成。我們選擇在電路圖完成后統(tǒng)一進(jìn)行信息轉(zhuǎn)換,這樣不容易出錯(cuò),而且實(shí)時(shí)轉(zhuǎn)換可能會(huì)造成轉(zhuǎn)換信息的反復(fù)更新重寫,增加了轉(zhuǎn)換過(guò)程的設(shè)計(jì)負(fù)擔(dān)、降低了效率。具體的數(shù)據(jù)結(jié)構(gòu)描述見1.2。

1.2 主要數(shù)據(jù)結(jié)構(gòu)

每個(gè)電路圖都由一個(gè)類對(duì)象存儲(chǔ),類對(duì)象的定義如下:

struct mycircuit

{

gate[];//gate類數(shù)組,記錄門信息

ngate; //整型變量,記錄電路中門的個(gè)數(shù)

pin[]; //pin類數(shù)組,記錄端口詳細(xì)信息

npin; //整型變量,記錄電路中端口的個(gè)數(shù)

wire[]; //wire類數(shù)組,記錄線路信息

nwire; //整型變量,記錄電路中連線的條數(shù)

}此處引入一個(gè)新的概念——電路信息表,是在邏輯上存儲(chǔ)電路連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)。和路由器維護(hù)的路由表原理相似,電路圖中的每個(gè)元件都會(huì)維護(hù)一張電路信息表,這張表記錄了該元件的位置,該元件的種類,以及該元件的連線情況。

下面以組合邏輯電路為例建立示范電路信息表:

struct position /* Position類,記錄元器件所在位置的坐標(biāo)*/ {x;y;};

struct gate/* gate類,記錄門信息*/ {

inwrie[];//整型數(shù)組,輸入線路編號(hào)

nwin;//整型變量,輸入線路數(shù)量

outwrie[];//整型數(shù)組,輸出線路編號(hào)

nwrout;//整型變量,輸出線路數(shù)量

psi;//position類對(duì)象,門的位置信息

type;//整型標(biāo)志位,區(qū)分電路中門類型

};

struct pin/* pin類,記錄輸出輸出端口信息*/ {

psi;//position類對(duì)象,記錄端口位置

type;//整型變量,標(biāo)志位,0為輸入端口,1為輸出端口

iowire;//整型變量,記錄與該端口連接的線路編號(hào)

};

struct wire/*wire類,存儲(chǔ)連線相關(guān)的信息*/ {

start;//position類對(duì)象,線頭位置

end;//position類對(duì)象,線尾位置

endgate;//整型變量,起點(diǎn)連接的門編號(hào)

startgate;//整型變量,終點(diǎn)連接的門編號(hào)

endpin;//整型變量,起點(diǎn)連接的端口編號(hào)

startpin;/整型變量,終點(diǎn)連接的端口編號(hào)

status;//整形變量,生成硬件描述語(yǔ)言過(guò)程中的狀態(tài)位,當(dāng)前算法生成過(guò)程只需一次掃描

};

為了提高效率,電路信息表中對(duì)其他類的保存均由整型數(shù)組記錄其編號(hào),編號(hào)是自動(dòng)分配的,具體分配方法見1.3。

電路信息表亦可設(shè)置為在每個(gè)gate類對(duì)象與pin類對(duì)象中記錄其上游器件和下游器件,這樣則不用設(shè)置wire類,但生成硬件描述語(yǔ)言時(shí)需要對(duì)電路進(jìn)行深度優(yōu)先遍歷,增加了時(shí)間復(fù)雜度,本文采用的記錄方法,只需對(duì)每個(gè)門生成對(duì)應(yīng)賦值語(yǔ)句,不用考慮遍歷順序,詳細(xì)算法見1.4.2。

1.3.生成電路信息表

生成電路信息表的過(guò)程主要包括對(duì)預(yù)處理得到的關(guān)鍵字段的處理和電路連接關(guān)系的判斷。其中關(guān)鍵字段的處理主要包括:連線信息處理、輸入輸出端口以及門信息處理。

其中連線信息處理包括線路信息提取、拐線合并和線路排序。為了方便存儲(chǔ),我們并不存儲(chǔ)完整的拐線,而是將其分割為相連接的直線,故一條完整的拐線由若干條直線連接而成,記錄每條wire的坐標(biāo)時(shí)按照從上到下,從左到右的順序區(qū)分起點(diǎn)和終點(diǎn)。

考慮到硬件描述語(yǔ)言的連續(xù)賦值語(yǔ)句中會(huì)出現(xiàn)線路編號(hào),為了增加交互性和可讀性,我們這里按照線路起點(diǎn)的橫坐標(biāo)由小到大、縱坐標(biāo)從小到大進(jìn)行排序,自動(dòng)匹配編號(hào),方便用戶對(duì)應(yīng)位置來(lái)理解、檢查電路。

輸入輸出端口編號(hào)也會(huì)出現(xiàn)在最終生成的Verilog 硬件描述語(yǔ)言中,因此需要也根據(jù)端口位置信息進(jìn)行一次排序處理。

通過(guò)以上操作,我們已經(jīng)將電路設(shè)計(jì)圖的元件位置信息以及元件編號(hào)都存到了相應(yīng)的數(shù)據(jù)結(jié)構(gòu)中,接下來(lái)的電路的邏輯連接關(guān)系判斷正是基于坐標(biāo)信息實(shí)現(xiàn)的。判斷一條連線是否連接到端口或門,是通過(guò)連線的起點(diǎn)、終點(diǎn)坐標(biāo)和端口或門的尺寸大小及坐標(biāo)等信息來(lái)判定的。在這一結(jié)論的基礎(chǔ)上,我們可以對(duì)電路信息表中的各字段進(jìn)行賦值從而完成電路信息表的構(gòu)建。

1.4.生成數(shù)據(jù)流描述的Verilog HDL硬件描述語(yǔ)言

1.4.1模塊及聲明

Verilog HDL中,需要在模塊開始就聲明所有端口和模塊名,算法如下:先輸出固定字符“module test(”,然后在括號(hào)內(nèi)執(zhí)行:

for(1;i<=pin的個(gè)數(shù);i++){

輸出“pin_i”;

if(i不等于pin的個(gè)數(shù)){

輸出“,”;

}

else 輸出“);”

}

然后進(jìn)行端口指定,即聲明端口的輸入輸出屬性,算法如下:

for(i=1;i<=pin的個(gè)數(shù);i++){

if(pin[i].type = 0)

輸出“input pin_i”;

else if(pin[i].type = 1)

輸出“output pin_i”;

}

接下來(lái)聲明wire型變量,需要注意的是,如果連線的一端有輸入輸出端口,則在連續(xù)賦值語(yǔ)句中不會(huì)出現(xiàn)該線路而是由相應(yīng)的輸入輸出端口替代,相應(yīng)實(shí)現(xiàn)過(guò)程算法為:

for(i=1;i<=wire的個(gè)數(shù);i++)

if(wire[i]的首尾均是gate)

輸出“wire W_i;”

1.4.2連續(xù)賦值語(yǔ)句

由于數(shù)據(jù)流描述的模塊是連線與端口的邏輯運(yùn)算的描述,即有多少個(gè)門就有多少連續(xù)賦值語(yǔ)句,所以只需要對(duì)門進(jìn)行一次遍歷。

生成算法為:

for (gate[i]){

輸出“gate[i]的輸出線路 or該線路終點(diǎn)連接的端口”;//賦值表達(dá)式左端

輸出 “=”; //賦值運(yùn)算符

for(gate[i]的每個(gè)輸入線路j) //賦值表達(dá)式右端{(lán)

輸出“j or j起點(diǎn)連接的端口”;

if(j不是最后一條線路)

輸出“gate[i].type對(duì)應(yīng)的邏輯運(yùn)算符”;

}

}

上述算法中,若連線的一端連接端口,則在生成過(guò)程中用端口名替換線路名。

以這種方法對(duì)每個(gè)門進(jìn)行掃描,最后加上“endmodule”即完成了數(shù)據(jù)流的模塊硬件語(yǔ)言描述轉(zhuǎn)換。

1.5.結(jié)構(gòu)化模塊調(diào)用

結(jié)構(gòu)化模塊調(diào)用是Verilog HDL普遍使用的一種描述方法:對(duì)于用戶已經(jīng)連接好的模塊,進(jìn)行封裝保存,記錄該模塊的名稱、輸入輸出接口和對(duì)應(yīng)的Verilog HDL代碼。當(dāng)用戶在圖形化界面中調(diào)用自定義模塊時(shí),先是生成自定義模塊的實(shí)例化代碼,保存為單獨(dú)的用戶自定義Verilog文件,然后將該模塊視作一個(gè)封裝起來(lái)的元件,用基于位置的連接判斷方法確定每個(gè)接口與當(dāng)前電路中wire的連接關(guān)系。然后在頂層模塊生成過(guò)程中,根據(jù)用戶指定的函數(shù)名稱和判斷得到的端口信息來(lái)調(diào)用該模塊。

本文以組合邏輯電路為例,介紹了一種將電子電路設(shè)計(jì)圖自動(dòng)轉(zhuǎn)化為Verilog HDL硬件描述語(yǔ)言的方法,若再進(jìn)行引腳分配,將生成的硬件描述語(yǔ)言下載到現(xiàn)場(chǎng)可編程邏輯陣列中,就可以完成整個(gè)EDA的設(shè)計(jì)。該方法可以作為可視化編程工具的原型進(jìn)行學(xué)習(xí)、使用和進(jìn)一步開發(fā)。

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會(huì)信息
信息超市
展會(huì)信息
展會(huì)信息
展會(huì)信息
展會(huì)信息
展會(huì)信息
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 丁香五月婷婷激情基地| 狠狠综合久久| 一级毛片免费观看久| 人妻少妇乱子伦精品无码专区毛片| 免费看av在线网站网址| 在线中文字幕日韩| 亚洲乱码在线播放| 91丝袜乱伦| 久久久无码人妻精品无码| 欧美成人午夜视频免看| www.99精品视频在线播放| 欧美69视频在线| 午夜福利视频一区| 亚洲色图综合在线| 91色综合综合热五月激情| 亚洲美女视频一区| 国产成人综合网在线观看| 亚洲综合第一区| 国产欧美日韩免费| 亚洲欧美自拍视频| a亚洲天堂| 久久久久亚洲av成人网人人软件| 国产白浆一区二区三区视频在线| 好吊色妇女免费视频免费| 久久精品中文字幕少妇| 扒开粉嫩的小缝隙喷白浆视频| 亚洲综合色区在线播放2019| 亚洲av无码久久无遮挡| 欧美一级高清视频在线播放| 国产午夜人做人免费视频中文| 国产欧美日韩视频怡春院| 777午夜精品电影免费看| 国产91视频免费| 无码日韩精品91超碰| 国产欧美亚洲精品第3页在线| 日本黄色不卡视频| 26uuu国产精品视频| 精品国产一区二区三区在线观看| 日韩精品亚洲精品第一页| 最新亚洲人成无码网站欣赏网| 亚洲美女AV免费一区| 亚洲欧美日韩高清综合678| 久久免费视频播放| 伊人成色综合网| 啪啪国产视频| 久久伊人操| 一级黄色片网| 19国产精品麻豆免费观看| 亚洲91精品视频| 自慰高潮喷白浆在线观看| 国产永久无码观看在线| 亚洲有无码中文网| 高清国产在线| 99精品在线看| 国产资源免费观看| 欧美中文字幕在线视频| 亚洲日韩精品欧美中文字幕| 欧美国产日本高清不卡| 香蕉在线视频网站| 99无码熟妇丰满人妻啪啪| 成人免费黄色小视频| 黄色网页在线观看| 欧美成人精品在线| 久草性视频| 国内精品视频| 99久久国产自偷自偷免费一区| 丰满少妇αⅴ无码区| 青青久久91| 波多野结衣AV无码久久一区| 色婷婷天天综合在线| 亚洲精品麻豆| 99热这里只有精品免费| 国产视频a| 精品午夜国产福利观看| 亚洲无码91视频| 欧美中文字幕一区| 久久久久久久久久国产精品| 欧美日韩免费观看| 精品少妇人妻无码久久| 午夜国产小视频| 在线观看欧美国产| 香蕉视频在线观看www|