




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