關(guān)鍵詞:EDA;原理圖輸入;全加器;補(bǔ)碼加法器;溢出
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2025)03-0046-03 開放科學(xué)(資源服務(wù)) 標(biāo)識碼(OSID) :
0引言
電子設(shè)計自動化EDA(Electronic Design Automa?tion) 是一種利用計算機(jī)輔助設(shè)計CAD(ComputerAided Design) 軟件,來完成電子電路功能設(shè)計、綜合、仿真驗(yàn)證等流程,完成PCB電路板設(shè)計驗(yàn)證,以及完成超大規(guī)模集成電路(VLSI) 芯片的功能設(shè)計、綜合、驗(yàn)證、物理設(shè)計等流程的設(shè)計方式。依賴于計算機(jī)工作平臺,以及各種電子設(shè)計軟件工具,EDA技術(shù)極大地提高了設(shè)計效率。EDA技術(shù)用計算機(jī)平臺及相應(yīng)的工具軟件,來進(jìn)行設(shè)計模擬、仿真、檢驗(yàn)、布圖和測試,不但提高了設(shè)計效率,加快了設(shè)計進(jìn)度,提高了設(shè)計的可靠性,而且在設(shè)計階段就可以進(jìn)行所有部件直至整個系統(tǒng)的仿真、測試、方案比較、參數(shù)優(yōu)選,從而極大地提高了設(shè)計質(zhì)量。從發(fā)展歷程來看,因?yàn)樵缙谟嬎銠C(jī)的運(yùn)行速度慢,內(nèi)存儲器的存儲容量很低,導(dǎo)致計算機(jī)的圖形處理能力很低,因此這個階段誕生了一些功能相對簡單的CAD程序。這些早期的程序在電子電路邏輯功能設(shè)計、仿真、印刷電路板布局布線,以及集成電路版圖設(shè)計等方面代替了設(shè)計人員的工作,提高了電子電路設(shè)計、系統(tǒng)設(shè)計,以及集成電路設(shè)計的效率。到了20世紀(jì)80到90年代,計算機(jī)技術(shù)、集成電路技術(shù)得到快速發(fā)展,計算機(jī)的運(yùn)行速度加快,內(nèi)存儲器容量越來越大,圖形處理能力進(jìn)一步增強(qiáng),各種CAD程序功能越來越強(qiáng)。這些CAD程序被逐漸集成,形成功能強(qiáng)大的EDA軟件系統(tǒng)。這些軟件采用圖形界面,可以直接將電子電路原理圖作為輸入,對電路的功能進(jìn)行仿真和模擬,并有自己的元件庫,用戶使用時,可以調(diào)用庫中的元件進(jìn)行電子電路的設(shè)計和繪圖工作,進(jìn)一步提高了設(shè)計效率[1]。
隨著集成電路技術(shù)和計算機(jī)技術(shù)的發(fā)展,EDA技術(shù)得到了飛速發(fā)展。尤其是隨著微電子技術(shù)的發(fā)展,用戶對電子系統(tǒng)提出了更高的要求,包括多功能、高速度、智能化等方面的要求,而這些對集成電路的容量、速度都有著更高的要求。這些都要求EDA軟件進(jìn)一步演化升級,以滿足日益高漲的設(shè)計要求。同時,隨著集成度的提高,甚至可以把一個復(fù)雜的電子系統(tǒng)集成在一塊芯片上實(shí)現(xiàn),而這又要求EDA軟件不僅能夠描述電子系統(tǒng)的功能和行為,能夠根據(jù)功能要求設(shè)計邏輯電路,還必須能夠?qū)⒃O(shè)計的系統(tǒng)映射為集成電路版圖,以便制造出系統(tǒng)芯片。這個階段開始,EDA 系統(tǒng)真正具備了自動化設(shè)計能力,能夠根據(jù)系統(tǒng)功能設(shè)計要求,設(shè)計出電子系統(tǒng),對電路結(jié)構(gòu)和參數(shù)進(jìn)行處理和優(yōu)化,并轉(zhuǎn)化為集成電路芯片版圖,從而制造出系統(tǒng)芯片。綜上所述,EDA技術(shù)已經(jīng)不是一個學(xué)科的分支,而是一門綜合性學(xué)科[2]。
Quartus II是一個集成開發(fā)平臺,采用可視化技術(shù),并引入了標(biāo)準(zhǔn)的EDA工具接口,方便了硬件電路設(shè)計,提高了設(shè)計和仿真效率。在Quartus II平臺進(jìn)行EDA設(shè)計時,可以采用多種設(shè)計輸入的方式,如原理圖輸入、硬件描述語言HDL(Hardware DescriptionLanguage) 文本輸入,網(wǎng)表輸入以及波形圖輸入等,提高了設(shè)計效率。硬件描述語言HDL是一種程序設(shè)計語言,主要用于描述數(shù)字電路和設(shè)計數(shù)字系統(tǒng),描述數(shù)字電路的功能、信號連接關(guān)系,以及時序關(guān)系等。目前,比較常用的硬件描述語言主要有Verilog HDL 和VHDL(Very High Speed Integrated Circuit Hardware Description Language)兩種[3]。
為了更好地理解和應(yīng)用EDA 技術(shù),本文利用Quartus II平臺,采用原理圖輸入的方式,首先設(shè)計一個全加器,然后在此基礎(chǔ)上設(shè)計實(shí)現(xiàn)三位補(bǔ)碼加法器。
1 一位加法器設(shè)計
一位加法器分為半加器和全加器,半加器把兩個一位二進(jìn)制數(shù)相加,一個是被加數(shù),另一個是加數(shù),不考慮低一位鄰位送來的進(jìn)位[4]。
全加器把三個一位二進(jìn)制數(shù)相加,一個是被加數(shù),一個是加數(shù),以及低一位鄰位送來的進(jìn)位。如果兩個多位二進(jìn)制數(shù)據(jù)相加,每一位都要考慮低一位鄰位送來的進(jìn)位,所以要構(gòu)造多位加法器,一般采用全加器,不采用半加器。
以a表示被加數(shù),b表示加數(shù),ci表示低一位鄰位送來的進(jìn)位,so表示和,co表示向高一位鄰位的進(jìn)位。根據(jù)二進(jìn)制數(shù)加法規(guī)則,可以列出全加器真值表如表1所示。
根據(jù)上述真值表,可以寫出輸出邏輯量的函數(shù)表達(dá)式:
so=a⊕b⊕ci,co=aamp;b+aamp;ci+bamp;ci
根據(jù)上述公式,在Quartus II平臺畫出全加器的原理圖如圖1所示。
仿真結(jié)果如圖2所示。
2多位補(bǔ)碼加法器設(shè)計及溢出判斷
2.1多位補(bǔ)碼加法器設(shè)計
由一位全加器構(gòu)成多位加法器,采用串行進(jìn)位的方式。補(bǔ)碼在數(shù)字系統(tǒng)中,特別是計算機(jī)中應(yīng)用廣泛,現(xiàn)代計算機(jī)中都采用補(bǔ)碼作加減法運(yùn)算,而且通常把減法運(yùn)算轉(zhuǎn)化為加法。假設(shè)加法器的兩個操作數(shù),即被加數(shù)和加數(shù)都是補(bǔ)碼,最高位是符號位,其余位是數(shù)值位。
無論是整數(shù)還是小數(shù),都有下式:[5]
與圖1相比,多了一個輸入端“sub”,該輸入量與加數(shù)b輸入一個異或門,異或門輸出x相當(dāng)于圖1的加數(shù)b,x=sub⊕b。
如果sub=0,則x=sub⊕b=0⊕b=b,此時完成加法運(yùn)算。如果sub=1,則x=sub⊕b=1⊕b=/b(b取反),此時完成減法運(yùn)算。選擇菜單File→Create/Update→Cre?ate Symbol Files for Current File,將這個一位補(bǔ)碼加減運(yùn)算器生成為一個元件符號“add_sub”,供下面的設(shè)計調(diào)用。
3仿真結(jié)果
在QuartusII平臺進(jìn)行功能仿真,得到結(jié)果如圖5 所示。
從圖5可見,sub=0完成加法運(yùn)算。被加數(shù)a=010 時,若加數(shù)b=001,兩者真值都是正數(shù),它們之和為s=011,ovf=0,沒有溢出;而若加數(shù)b=011,兩者同樣都是正數(shù),它們之和為s=101,ovf=1,溢出,由于兩者之和是補(bǔ)碼,其符號位是1,說明其真值是一個負(fù)數(shù),這個結(jié)果是錯的。因?yàn)榻Y(jié)果溢出了,超出了表示范圍。若加數(shù)b=101,其真值是負(fù)數(shù),它們之和為s=111,其真值同樣是負(fù)數(shù),ovf=0,沒有溢出。
被加數(shù)a=101時,若加數(shù)b=101,兩者真值都是負(fù)數(shù),它們之和為s=010,符號位的進(jìn)位1被自然丟掉,這個和的真值是正數(shù),結(jié)果是錯的,因?yàn)橐绯隽?,故ovf=1;而若加數(shù)b=111,兩者同樣真值都是負(fù)數(shù),它們之和為s=100,這個結(jié)果是正確的,ovf=0,沒有溢出;若加數(shù)b=011,其真值是正數(shù),它們之和為s=000,這個結(jié)果同樣是正確的,ovf=0,沒有溢出。
4結(jié)束語
算術(shù)邏輯運(yùn)算是數(shù)字系統(tǒng)的基本功能之一,是數(shù)字計算機(jī)中不可缺少的功能,其中的算術(shù)運(yùn)算完成基本的二進(jìn)制四則運(yùn)算。在計算機(jī)中,多采用補(bǔ)碼進(jìn)行算術(shù)運(yùn)算,進(jìn)行二進(jìn)制數(shù)據(jù)的加、減運(yùn)算時,轉(zhuǎn)換為加法運(yùn)算。對乘除運(yùn)算,則轉(zhuǎn)換為加法和移位運(yùn)算。所以,加法器是必不可少的元件。
本文在全加器的基礎(chǔ)上,實(shí)現(xiàn)三位補(bǔ)碼數(shù)據(jù)的加、減法運(yùn)算,該方法簡單易于實(shí)現(xiàn),且容易推廣到任意多位數(shù)據(jù)的加減運(yùn)算,不足之處是采用串行進(jìn)位的加法器,速度比較慢,這個可以通過并行進(jìn)位加以改進(jìn)。