第2章計算機硬件基礎_第1頁
第2章計算機硬件基礎_第2頁
第2章計算機硬件基礎_第3頁
第2章計算機硬件基礎_第4頁
第2章計算機硬件基礎_第5頁
已閱讀5頁,還剩123頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第2章計算機硬件基礎第一頁,共128頁。2.1半導體器件的開關(guān)特性數(shù)字電路中主要使用半導體器件二極管、三極管、電容器等。數(shù)字電路二極管、三極管主要當做電開關(guān)使用,即讓其工作在開關(guān)狀態(tài)。2.1.1二極管的開關(guān)特性二極管在正向電壓作用下電阻很小,處于導通狀態(tài),相當于一只接通的開關(guān);在反向電壓作用下,電阻很大,處于截止狀態(tài),如同一只斷開的開關(guān)。利用二極管的開關(guān)特性,可以組成各種邏輯電路。21第二頁,共128頁。2.1.1二極管1、二極管的開關(guān)特性二極管在正向電壓作用下電阻很小,處于導通狀態(tài),相當于一只接通的開關(guān);

二極管在反向電壓作用下,電阻很大,處于截止狀態(tài),如同一只斷開的開關(guān)。

利用二極管的開關(guān)特性,可以組成各種邏輯電路(P32二極管與門、或門等)。例:二極管與門電路當A、B都置為高電平時,二極管截止,Y輸出為高電平;當A、B中最少有一個置為低電平時,二極管導通,就會通過DA或DB把Y點的電平拉低,所以Y輸出低電平。這樣A、B兩個輸入端和輸出端Y之間就形成了與門的邏輯關(guān)系。第三頁,共128頁。2.1.2三極管半導體三極管是電子電路中最重要的器件,它最主要的功能是電流放大和開關(guān)作用。在模擬電路中三極管可以構(gòu)成放大器,用來放大電流;在數(shù)字電路中三極管作為開關(guān)元件。三極管顧名思義具有三個電極。二極管是由一個PN結(jié)構(gòu)成的,而三極管由兩個PN結(jié)構(gòu)成,共用的一個電極成為三極管的基極(用字母b表示),其他的兩個電極成為集電極(用字母c表示)和發(fā)射極(用字母e表示)。水龍頭有三個點:進水、閥門、出水,相當于三極管的發(fā)射極e、基極b、集電極c在數(shù)字電路中三極管可以組成邏輯電路中的“與非門”、“或非門”等。(P33頁)第四頁,共128頁。2.2基本邏輯運算和基本門電路基本邏輯運算:與、或、非基本門電路:與門、或門、非門;與非門、或非門、三態(tài)門等三態(tài)門三態(tài)門由三種狀態(tài):導通時的0、1兩狀態(tài)和不導通時的禁止態(tài)。

當E=1時,三態(tài)門導通,其輸出L等于輸入D,(D=0,L=0;D=1,L=1);當E=0時,三態(tài)門不導通,輸出與輸入呈現(xiàn)高電阻隔離。三態(tài)門在計算機中常用在部件與總線連接上,用三態(tài)門來控制部件與總線間的傳輸控制。DELD——輸入端L——輸出端E——使能端(門開關(guān))第五頁,共128頁。2.3計算機中常用的邏輯部件2.3.1加法器

2.3.2算術(shù)邏輯單元(簡稱ALU)2.3.3譯碼器2.3.4數(shù)據(jù)選擇器2.3.5數(shù)據(jù)分配器組合邏輯電路由門電路組成,沒有記憶作用,特點是輸出信號隨輸入信號變化而變化。在計算機設計中,組合邏輯電路常作為控制器電路,其輸入往往是指令的操作碼或狀態(tài)信號,而輸出往往輸出到寄存器中或加到三態(tài)門的控制端。第六頁,共128頁。Cn=XnYnCn-1+XnYnCn-1+XnYnCn-1+XnYnCn-1Fn=XnYnCn-1+XnYnCn-1+XnYnCn-1+XnYnCn-12.3.1加法器

不考慮進位輸入時,兩數(shù)碼Xn、Yn相加稱為半加器;若考慮低位進位輸入Cn-1相加,則稱為全加器。全加和Fn與進位輸出Cn的表示式為:其邏輯電路圖詳見教材42頁圖2.17,2.18所示。有關(guān)半加器和全加器的功能表及邏輯圖如教材中圖2.5和圖2.6第七頁,共128頁。

XnYnCn-1FnCn0000000110010100110110010101011100111111

一位全加器真值表如下:其中Xn為被加數(shù),Yn為加數(shù),Cn-1為低級進位信號,F(xiàn)n為和,Cn為本級向上進位信號。第八頁,共128頁。簡單4位串行全加器如下圖所示:

(教材圖2-20四位串行加法器)第九頁,共128頁。

將4個全加器相連可得4位加法器(如上圖),其加法所需時間較長。

這是因為其位間進位是串行傳送的,本位全加和Fi必須等低位進位Ci-1來到后才能進行,加法時間與位數(shù)有關(guān)。

只有改變進位逐位傳送的路徑,才能提高加法器工作速度。解決辦法之一是采用“超前進位產(chǎn)生電路”來同時形成各位進位,從而實行快速加法,我們稱這種加法器為超前進位加法器。

超前進位產(chǎn)生電路在隨后運算器章節(jié)會有介紹。第十頁,共128頁。2.3.2算術(shù)邏輯單元(簡稱ALU)

ALU是一種功能較強的組合邏輯電路,它能進行多種算術(shù)運算和邏輯運算。例:SN74181型四位ALU中規(guī)模集成電路

SN74181能執(zhí)行16種算術(shù)運算和16種邏輯運算

真值表見P23頁表2.5所示。在圖2.5中功能表中,“加”表示算術(shù)加,“+”表示邏輯加。M是狀態(tài)控制端:M=H,執(zhí)行邏輯運算;M=L執(zhí)行算術(shù)運算。S0~S3是運算選擇端,它決定電路執(zhí)行哪種算術(shù)運算或邏輯運算。第十一頁,共128頁。第十二頁,共128頁。S0S1S2S3LLLLLLLHLLHLLLHHLHLLLHLHLHHLLHHHHLLLHLLHHLHLHLHHHHLLHHLHHHHLHHHHAA+BA?B“0”A?BBABA?BA+BABBA?B“1”A+BA+BAAA+BA+B減1A加(A?B)(A?B)加(A+B)A減B減1(A?B)減1A加(A?B)A加B(A?B)加(A+B)(A?B)減1A加AA加(A+B)A加(A+B)A減1A+1(A+B)加1(A+B)加1“0”A加(A?B)加1(A?B)加(A+B)加1A減BA?BA加(A?B)加1A加B加1(A?B)加(A+B)加1(A?B)A加A加1A加(A+B)加1A加(A+B)加1A正邏輯M=H邏輯運算M=L算術(shù)運算Cn=1Cn=0表2.574LS181ALU功能表第十三頁,共128頁。第十四頁,共128頁。74L181邏輯電路圖演示第十五頁,共128頁。

用四片74181電路可組成16位ALU,如圖2.10片內(nèi)進位是快速并行的,但片間進位是逐片串行傳遞的,因此總的形成時間還是是比較長的,可以采用并行進位電路74LS182讓片間進位同時產(chǎn)生來加快執(zhí)行速度。圖2.10

第十六頁,共128頁。圖2.11與74181型ALU連用的超前進位產(chǎn)生電路第十七頁,共128頁。第十八頁,共128頁。

用兩個16位全先行進位部件(74182)和八個74181可級連組成的32位ALU電路

用四個16位全先行進位部件(74182)和十六個74181可級連組成的64位ALU電路

由于集成器件的集成度的提高,允許更多位的ALU集成在一個芯片內(nèi)。例如AMD公司的AM29332為32位ALU,而在Intel公司的Pentium處理器中,32位ALU僅是芯片內(nèi)的一部分電路。盡管器件不同,但基本電路原理還是相似的。第十九頁,共128頁。2.3.3譯碼器

譯碼:把某組編碼翻譯為唯一的輸出。計算機應用中要用到的有地址譯碼器和指令譯碼器。

譯碼器:有2-4譯碼器、3-8譯碼器(8選1譯碼器)和4-16譯碼器(即16選1譯碼器)等多種。書中介紹的是2-4譯碼器的組成及應用

例如:3-8譯碼器,即8選1譯碼器的輸入信號有三個:C、B、A(A為低位),三位二進制數(shù)可組成8個不同數(shù)字,因此可分別選中輸出Y0

到Y(jié)7的某一個輸出故稱為8選1譯碼器。在資料手冊中的型號為74138。第二十頁,共128頁。Y0Y1Y2Y3Y4Y5Y6Y7G1G2AG2BCBA下圖分別為譯碼器引腳圖和輸入輸出真值表其中:G1、G2A、G2B為芯片選擇端,G1高電平有效,而G2A、G2B為低電平有效。輸入 輸出 CBAY7Y6Y5Y4Y3Y2Y1Y00000111100110011010101011111111011111101111101111110111111011111101111110111111174LS138第二十一頁,共128頁。2.3.4數(shù)據(jù)選擇器

FD0D1D2D3A1A0地址A1A0輸出F00D001D110D211D3

在地址選擇信號的控制下,從多路數(shù)據(jù)中選擇一路作為輸出信號。又稱多路開關(guān)或多路選擇器。

以四選一選擇器為例:第二十二頁,共128頁。

數(shù)據(jù)傳輸過程中,常常需要將一路數(shù)據(jù)分配到多路裝置中指定的某一路中,執(zhí)行這種功能的電路叫數(shù)據(jù)分配器。下面以四路數(shù)據(jù)分配器為例進行說明:DA1A0SW0W1W2W3A0A1DW00DW0=D01DW1=D10DW2=D11DW3=D2.4.5數(shù)據(jù)分配器第二十三頁,共128頁。

2.4時序電路2.4.1觸發(fā)器2.4.2寄存器2.4.3四級二進制并行計數(shù)器第二十四頁,共128頁。DSQCLKCLRQ輸入輸出SCLRCLKDQ0011000010XX101XX0D觸發(fā)器功能表:正跳變觸發(fā)有效。2.4.1觸發(fā)器(1)D觸發(fā)器電路符號:D為數(shù)據(jù)輸入端;CLK為時鐘信號;S為置位信號端;CLR復位信號端;Q為輸出信號端。第二十五頁,共128頁。電路符號:

JK為控制輸入端;CLK為時鐘信號;S為置位信號端;CLR復位信號端;Q為輸出信號端。(2)J-K觸發(fā)器輸入輸出SCLRCLKJKQ0000不變00101000100011翻轉(zhuǎn)01XXX010XXX1JSQCLKKCLRQ第二十六頁,共128頁。1寄存器:用于暫存二進制信息。

計算機中常用部件,寄存器可由多個觸發(fā)器組成。每個觸發(fā)器存1Bit,N個觸發(fā)器儲存N位二進制數(shù)據(jù)。

Q3D3CLKX3

Q2D2CLKX2

Q1D1CLKX1

Q0D0CLKX0控制端

下圖為由4個D觸發(fā)器組成的四位緩沖寄存器。教材P53圖2.32為74LS273為8位寄存器。有清零控制信號MR,有存儲控制脈沖信號CP(上升沿寫入)2.4.2寄存器第二十七頁,共128頁。2移位寄存器

移位寄存器不僅具有存儲數(shù)據(jù)的功能,而且還具有移位功能(左移和右移)。

移位功能就是將移位寄存器中所存的數(shù)據(jù),在移位脈沖信號的作用下,按要求逐次向左、右方進行移動。

電路連接上,一個觸發(fā)器的的輸出端Q接到另一個觸發(fā)器的輸入端D。從信號輸入上分有串行輸入和并行輸入從信號輸出上分有串行輸出和并行輸出下面以串行輸入并行輸出右移位寄存器為例進行說明:第二十八頁,共128頁。

X1X2X3X4移位脈沖CLKD1Q1F1CLKD2Q2F2CLKD3Q3F3CLKD4Q4F4CLK串行輸入信號DINDINCLKX1X2X3X41011010110101110110串行輸入并行輸出右移位寄存器波形圖第二十九頁,共128頁。2.4.3計數(shù)器功能:為統(tǒng)計脈沖個數(shù),在觸發(fā)器上記錄下來。分類:1.異步計數(shù)器:高位觸發(fā)器時鐘信號由低位觸發(fā)器輸出提供,各個觸發(fā)器串行翻轉(zhuǎn),所以也稱串行計數(shù)器。2.同步計數(shù)器:各個觸發(fā)器時鐘接以統(tǒng)一的時鐘信號,從而各觸發(fā)器同事翻轉(zhuǎn)。還有加法計數(shù)器、減法計數(shù)器、可逆計數(shù)器(加減)、二進制計數(shù)器、十進制計數(shù)器、任意進制計數(shù)器等。

計數(shù)器通常有“清零、置初始數(shù)據(jù)、計數(shù)”功能。

清零在清零CLR#信號控制下將各觸發(fā)器清零;

置數(shù)在置數(shù)LOAD#信號控制下將計數(shù)初值D3..D0寫入觸發(fā)器。

計數(shù)過程由計數(shù)控制信號ENP、ENT控制啟動計數(shù)和結(jié)束計數(shù)。第三十頁,共128頁。2.4.3四級二進制并行計數(shù)器

JQCLKKCLR

JQCLKKCLRQ0Q1Q2Q3清0端控制端計數(shù)端

JQCLKKCLR

JQCLKKCLRCLKQ0Q1Q2Q312345678910111213141516第三十一頁,共128頁。2.5可編程邏輯器件設計基礎2.5.1可編程邏輯器件簡介2.5.2硬件描述語言(VHDL)介紹2.5.3可編程邏輯器件設計語言ABEL第三十二頁,共128頁。2.5.1可編程邏輯器件簡介

目前,數(shù)字集成電路得到了廣泛的應用,其本身也在不斷地進行更新?lián)Q代。隨著微電子技術(shù)的發(fā)展,設計與制造集成電路的任務已不可能全由半導體廠商來獨立承擔,出現(xiàn)了可編程邏輯器件(PLD),其中應用最廣泛的是現(xiàn)場可編程門陣列(FPGA)和復雜可編程邏輯器件(CPLD)??删幊踢壿嬈骷缤粡埌准埢蚴且欢逊e木。它能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡單組合邏輯(如74系列元器件)

,都可以用它來實現(xiàn)?,F(xiàn)在的可編程邏輯器件已經(jīng)能夠容納幾個32位的CPU同時工作,實現(xiàn)復雜嵌入式系統(tǒng)。可編程邏輯器件是電子設計領(lǐng)域中最具活力和發(fā)展前途的一項技術(shù)。第三十三頁,共128頁。1)FPGA和CPLDCPLD是復雜可編程邏輯器件(ComplexProgramableLogicDevice)的簡稱。FPGA是現(xiàn)場可編程門陣列(FieldProgramableGateArray)的簡稱。

兩者的功能基本相同,只是實現(xiàn)的原理有所不同。FPGA與CPLD的主要區(qū)別在編程方式上,CPLD主要是基于EEPROM或FLASH存儲器編程,編程次數(shù)可達1萬次,其優(yōu)點是系統(tǒng)斷電時編程信息也不丟失。

FPGA大部分是基于SRAM編程,編程信息在系統(tǒng)斷電時丟失,所以每次上電時須將編程數(shù)據(jù)從外部配置芯片重新寫入SRAM中,其優(yōu)點是可以編程任意次,可在工作中快速編程,從而實現(xiàn)板級和系統(tǒng)級的動態(tài)配置。但FPGA的制造工藝確定了FPGA芯片中包含的LUT和觸發(fā)器的數(shù)量要比CPLD豐富得多,更適合完成復雜的時序邏輯。CPLD由于其宏單元的分解組合邏輯功能強大,適合于觸發(fā)器有限而乘積項豐富的組合邏輯。第三十四頁,共128頁。為什么要使用CPLD/FPGA

搞過硬件電路設計的工程師可能明白:使用通用的標準邏輯集成器件(如74系列元器件)組合設計一塊具有特定邏輯功能的電路板是很麻煩的。需要進行邏輯電路設計,然后再進行印刷電路板設計、最后還有焊接工序。這期間的調(diào)試工作很多都牽涉到各器件之間的阻抗匹配、信號完整性等。這就是說,各邏輯器件并不像在邏輯設計階段那么理想了,還需要考慮其實際情況。一個小錯誤都可能使得PCB報廢,須重新制板。系統(tǒng)的調(diào)試只有在硬件PCB板制造、焊接完成后才能進行。若發(fā)現(xiàn)錯誤,調(diào)試也只能等下一次PCB修改后才能繼續(xù)。這樣一來,整個開發(fā)周期就變得很長了,電路板的體積功耗都變大,可靠性降低。而且邏輯設計人員不能專注于邏輯功能的設計,效率大打折扣??删幊踢壿嬈骷閿?shù)字系統(tǒng)的開發(fā)帶來革命性的突破,簡化了系統(tǒng)的設計。只要邏輯門數(shù)足夠,一片可編程邏輯器件就可以容納傳統(tǒng)設計所需要的通用標準邏輯器件?!捌骷保ú⒎钦嬲钠骷莾?nèi)部邏輯關(guān)系)之間的連接和可靠性完全由芯片制造商來保證。第三十五頁,共128頁。

另外,通過邏輯設計或者修改模塊參數(shù),還可以“自制”原來所沒有的器件,這一點很重要。通過購買第三方的IPIntellectualProperty,知識產(chǎn)權(quán))核,使系統(tǒng)設計大為簡化,具有很高的集成度。由于可編程邏輯器件的大部分引腳均為普通I/O引腳,可以設置為輸入、輸出、雙向或高阻。所以在器件型號選定后,根據(jù)系統(tǒng)的要求,可編程器件的輸入輸出關(guān)系及其所使用的引腳就可以確定下來了。另外由于可編程邏輯器件的內(nèi)部邏輯設計與硬件PCB繪制同時進行,大大縮短了系統(tǒng)設計周期。在PCB完成以后,還可以利用可編程邏輯器件的在線修改能力,隨時修改設計,而不必改動硬件電路。可以說,這就是“可編程”的魅力!總之,使用可編程邏輯器件來開發(fā)數(shù)字電路,可以大大縮短設計時間,減少PCB面積,提高系統(tǒng)的可靠性。

可編程邏輯器件的這些優(yōu)點使得PLD技術(shù)在20世紀90年以后得到飛速的發(fā)展,同時也大大推動了EDA軟件和硬件描述語言(HDL)的進步。第三十六頁,共128頁。2.4.2硬件描述語言(VHDL)

隨著EDA技術(shù)的發(fā)展,使用硬件描述語言(HardwareDescriptionLanguage)設計CPLD/FPGA稱為一種趨勢為什么要使用硬件描述語言呢?它跟原理圖輸入又有什么區(qū)別?傳統(tǒng)的原理圖輸入其實就相當于物理器件的焊接,其輸入的可靠性好、效率高、比較直觀,但設計大規(guī)模PLD/FPGA時顯得很煩瑣、移植性差。硬件描述語言和傳統(tǒng)原理圖輸入方法的關(guān)系就好比是高級語言和匯編語言的關(guān)系。HDL的可移植性好,使用方便,但效率不如原理圖高。在真正的CPLD/FPGA設計中,通常建議采用原理圖和HDL結(jié)合的方法來設計。在最短的時間內(nèi),用自己最熟悉的工具設計出高效、穩(wěn)定、符合設計要求的電路才是我們的最終目的。

第三十七頁,共128頁。VHDL特點

VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,誕生于1982年。1987年底,VHDL被IEEE和美國國防部確認為標準硬件描述語言。VHDL的程序結(jié)構(gòu)特點是將一項工程設計,或稱設計實體(可以是一個元件、一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,即端口)和內(nèi)部(或稱不可視部分,即涉及實體的內(nèi)部功能實現(xiàn)部分)。在完成了對一個涉及實體開發(fā)后,其他的設計就可以直接調(diào)用這個模塊。這種將設計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設計的基本點。

目前主要的硬件描述語言是VHDL和VerilogHDL。VHDL發(fā)展較早,語法嚴格,而VerilogHDL是在C語言基礎上發(fā)展起來的一種硬件描述語言,語法比較自由。兩者相比,VHDL書寫規(guī)則比erilog煩瑣一些,但Verilog自由的語法也容易讓初學者出錯。其實兩種語言的差別并不大,它們的描述能力也是相似的。掌握其中一種語言以后,通過短期的學習,可以較快的學會另一種語言。這里簡要介紹一下VHDL語言。第三十八頁,共128頁。VHDL是美國國防部頒布的超高速集成電路(VHSIC)計劃所確定的硬件描述語言,并于1987年被IEEE批準為標準設計語言,命名為IEEE-1076-1987。美國國防部鼓勵設計語言格式標準化,它要求所有與政府項目有關(guān)的ASIC設計必須符合IEEE-1076標準。設計者用VHDL可對整個ASIC進行從系統(tǒng)級(對電路結(jié)構(gòu)的高層次抽象)到門級硬件的描述。對被模擬系統(tǒng)的模型可混合使用高層次行為描述和低層次(邏輯和門)的詳細描述。

使用任何文本編輯器都可進行VHDL語言的編寫,也可以用專門的HDL編輯環(huán)境。通常將VHDL文件保存為.vhd文件。VHDL的語言形式、描述風格及句法有點類似于一般的計算機高級語言,但是要注意的是,硬件描述語言與平常的計算機描述語言并不相同,它描述的是硬件電路。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,與原理圖有對應的關(guān)系第三十九頁,共128頁。VHDL是一種標準語言,VHDL模型可以在與此標準相一致的任一計算機系統(tǒng)上運行,并產(chǎn)生相同的模擬結(jié)果。

VHDL模型以使用離散值的“激勵一響應”形式為基礎。對一個器件,常常會問兩個最基本的問題:它由什么組成?它如何工作?這兩個問題提出了硬件描述的基本方面:結(jié)構(gòu)與行為。VHDL描述的對象是數(shù)字設備,是離散系統(tǒng)。即將離散的輸入值(激勵)進行一系列計算和轉(zhuǎn)換,最后產(chǎn)生離散的輸出值(響應)。從某輸入點數(shù)值的變化(從“0”到“1”或從“1”到“0”)到輸出端得到響應,總存在一定的時間延遲。

第四十頁,共128頁。

定義電路的端口(輸入端、輸出端),端口是電路與外界的連接點。電路的行為描述和結(jié)構(gòu)描述。編寫對電路進行激勵模擬的命令文件,進行邏輯模擬。(1)電路的VHDL描述在VHDL中,被模擬的電路由實體定義,實體由說明部分與結(jié)構(gòu)部分組成。今將半加器的VHDL描述作一介紹(其中“--”為注釋符,一行中“--”后面的任何字符都為注釋,在程序中不起作用)。描述工具是Viewlogic公司提供的Workview軟件。

--下面是半加器的實體說明

ENTITYhalf_adderisport(X:invlbit;Y:invlbit;Sum:outvlbit;Carry:outvlbit);endhalf_adder;--端口定義結(jié)束,in表示輸入數(shù)據(jù),out表示輸出數(shù)據(jù)。在對電路進行邏輯模擬時,一般要經(jīng)歷以下步驟:第四十一頁,共128頁。--VHDL有三種基本數(shù)據(jù)類型:整數(shù)、浮點數(shù)和枚舉類型,vlbit為枚舉類型二值(0,1)。

--X、Y是半加器的輸入,Sum為和(輸出),Carry為進位(輸出)。

--下面為結(jié)構(gòu)體描述

ARCHITECTUREbehavioral_descriptionofhalf-adderisbeginprocessbeginSum<=XxorYafter5ns;Carry<=XandYafter5ns;WaitonX,Y;endprocess;

--進程描述結(jié)束

endbehavioral_description;

--結(jié)構(gòu)體描述結(jié)束第四十二頁,共128頁。

現(xiàn)將結(jié)構(gòu)體描述簡單說明如下:在VHDL中,常用進程Process進行行為描述。在該進程中,表示Sum和Carry的值要比信號X,Y延遲5ns時間才能形成。Wait語句將進程掛起,直到信號X或Y中的任一個發(fā)生了變化,進程就從進程語句的頂端開始重新執(zhí)行一遭,也可將進程改寫如下,此時不再需要Walt語句,而作用與有Wall語句的進程相同。

process(X,Y)beginSum<=XxorYafter5ns;Carry<=XandYafter5ns;endprocess;第四十三頁,共128頁。

例1、舉一個移位器的例子。該移位器可對32位數(shù)據(jù)A<31:0>進行任意位(31位~0位)移位,移位次數(shù)由<4:0>給出,移位器的功能由5級門完成,在B(i)控制下數(shù)據(jù)經(jīng)過每級門有兩種操作可供選擇:直接送出(B(i)=0不移位)或移固定位數(shù)(B(i)=1),其中第1級可移1位;第2級可移2位;第3級可移4位;第4級可移8位;第5級可移16位。另外該移位器可進行邏輯左移、邏輯右移、算術(shù)左移和算術(shù)右移四種操作。邏輯左移和算術(shù)左移,空出來的低位補0;所以這兩種操作沒有區(qū)別,統(tǒng)稱為左移;邏輯右移空出的高位補0;算術(shù)右移,空出的高位全部補入原符號位。SR為移位結(jié)果。在本例中,首先對移位器進行行為描述,定義了三個函數(shù)(function):左移shiftl,邏輯右移shiftr-logic,算術(shù)右移shiftrmaths,并一起歸入Extend.Vhd程序包中。第四十四頁,共128頁。

左移的VHDL描述:

functionshiftl(A:vlbit_ld(31downto0);i:integer)returnvlbit_ldisvariableSR:vlbit_ld(31dowmo0);

beginSR(31+idowntoi):=A;forjini-ldownto0loopSR(j):='0';endloopreturnSR(31downto0);

cndI;

程序中的vlbit_ld表示一維數(shù)組。在VHDL中有兩種賦值符號“<=”和“:=”。前者表示賦值需經(jīng)過一段延遲時間才能完成;后者則可立即賦值。當給變量置初始化值或給常量賦值時使用“:=”符號。第四十五頁,共128頁。邏輯右移的VHDL描述;

functionshiftr_logic(A:vlbit_ld(31downto0);i:integer)returnvlbit_ldisvariableSR:vlbit_ld(31downto0);beginforjin31downto32-iloopSR(j):='0';endloopSR(31-idownto-i):=AreturnSR(31downto0);end;

算術(shù)右移的VHDL描述請讀者自行寫出。第四十六頁,共128頁。

下面給出移位器的實體說明與結(jié)構(gòu)體描述。文件名:shifter.vhdusework.extend.all;--use語句允許本實體引用。extend.vhd程序包,內(nèi)有3個移位函數(shù)

ENTITYshifterisgeneric(SR_DELAY:time:=10ns);--屬性定義,從輸入A、B到輸出SR的延遲

port(A:invlbit_ld(31downto00);B:invlbit_ld(4downto0);SR:outvlbit_ld(31downto00);Clr,Cal:invlbit);--端口定義,A為32位一維向量,B為5位一維向量。

--Clr為左右移控制信號,Clr="0"為左移,Clr="1",為右移

--Cal為算術(shù)移位和邏輯移位的控制信號,Cal=“0”為算術(shù)移位,Cal="1"為邏輯移位.

endshifter;第四十七頁,共128頁。

實體說明結(jié)束,以下為結(jié)構(gòu)體描述

ARCHITECTUREbehaviorOFshifterISbeginprocess(A,B,Clr,Cal)variabletmp1,tmp2,tmp3,tmp4,tmp5:vlbit_ld(31downto00)beginifB(0)='0'thentmp1:=A;elsifClr='0'thentmp1=(shiftl(A,1));elsifCal='0'thentmp1:=(shiftr_maths(A,1));elsetmp1:=(shiftr_logic(A,1));第四十八頁,共128頁。

endif;

--shiftl,shiftr_logic及shiftr_maths在extend.vhd中定義

ifB(1)='0'then..endif--得出tmp2ifB(2):='0'then..endififB(3)='0'then..endif--得出tmp3,tmp4第四十九頁,共128頁。ifB(4)='0'thentmp5:=(tmp4)elsifClr='0'thentmp5:=(shiftl(tmp4,16));

elsifCar=0thentmp5:=(shiflr_maths(tmp4,16));elsetmp5:=(shiftr_logic(tmp4,16));endifSR<=tmp5afterSR_DELAY;--輸出結(jié)果SRendprocess;--進程描述結(jié)束

endbehavior;第五十頁,共128頁。

例2、這里舉一個簡單的VHDL例子,讓大家有一個入門的認識。例子的功能是實現(xiàn)一個12位的寄存器。ENTITYREG12IS--外部端口定義:數(shù)據(jù),時鐘,輸出

PORT(d:INBIT_VECTOR(11DOWNTO0);clk:INBIT;q:OUTBIT_VECTOR(11DOWNTO0);EDNREG12;--內(nèi)部實體邏輯

ARCHITECTUREaOFREG12ISBEGINPROCESSBEGINWAITUNTILLclk=’1’;--等待時鐘上升沿

q<=d;ENDPROCESS;ENDa;第五十一頁,共128頁。

這里例子十分簡單,就是在時鐘的上升沿把輸入的數(shù)據(jù)鎖存起來。當然,用原理圖的方法也可以實現(xiàn),用12位的D觸發(fā)器就可以了。例子雖然簡單,但已經(jīng)具有以上所說的VHDL語言特點了,請仔細推敲。

第五十二頁,共128頁。

(2)邏輯模擬及驗證如何證明用VHDL描述的ASIC在邏輯上和時序上的正確性?這便是邏輯模擬的目的。在workview環(huán)境下,邏輯模擬可根據(jù)屏幕提示和菜單進行操作。下面以shifter的模擬過程為例進行說明。第一步,把VHDL的邏輯描述(shifter.VHD)轉(zhuǎn)換為網(wǎng)表文件,這是因為模擬器只能對網(wǎng)表進行模擬,用命令

C2>VHDLshifter-v可生成shifter.VLI及shifter.VSM網(wǎng)表文件(其中VHDL為編譯命令,-v為命令的參數(shù),表示需要生成網(wǎng)表文件)。第二步,進入模擬器,并把模擬對象的網(wǎng)表文件加載到模擬器中。在workview集成環(huán)境中,模擬器為viewsim。進入viewsim中后,模擬器會問用戶加載網(wǎng)表的名稱,輸入shifter即可(關(guān)于workview的具體使用,可參看其使用說明書)。第五十三頁,共128頁。

第三步,對輸入端口施加激勵并進行模擬。所謂激勵,對應于實際電路的輸入端輸入信號,一般通過邏輯值1和0的組合來表達。在shifter中,輸入端口有A<31:0>,B<A:0>,Clr及Cal為這些輸入端口設計激勵時,要注意盡可能全面地測試移位器的功能。第四步,顯示模擬結(jié)果,設計簡單的列表方式及圖形顯示方式等。第五十四頁,共128頁。2.6.3可編程邏輯器件設計語言ABEL

(用于計算機組成原理實驗)前言1ABEL-HDL語言的基本語法2ABEL-HDL語言源文件的基本結(jié)構(gòu)3邏輯描述第五十五頁,共128頁。

開發(fā)使用PLD的系統(tǒng)時,應使用語言或邏輯圖來描述該PLD的功能,并通過編譯、連接、適配,產(chǎn)生可對芯片進行編程的目標文件(如標準的JED文件),然后再下載并寫入芯片中。常用的可編程邏輯器件設計語言為ABEL-HDL(ABEL硬件描述語言),它是DATAI/O公司開發(fā)的一種可編程邏輯器件設計語言,它可支持絕大多數(shù)可編程邏輯器件。

前言第五十六頁,共128頁。1、ABEL源文件構(gòu)成在用ABEL-HDL進行邏輯設計時,描述邏輯功能的源文件必須是符合ABEL-HDL語言語法規(guī)定的ASII碼文件。

ABEL-HDL源文件是由各種語句組成的,這些語句是由ABEL-HDL語言的基本符號構(gòu)成的,這些符號必須滿足一定的格式才能正確描述邏輯功能。語句的每一行最長為150個字符。在源文件的語句中標識符、關(guān)鍵字、數(shù)字之間至少必須有一個空格,以便將它們分隔開來。但在標識符列表中標識符以逗號分隔。在表達式中,標識符和數(shù)字用操作符或括號分隔。空格、點號不能夾在標識符、關(guān)鍵字、數(shù)字之間。如空格夾在標識符、數(shù)字之間將會被看作兩個標識符或兩個數(shù)字。以大寫、小寫或大小寫混合寫的關(guān)鍵字被看作同一個關(guān)鍵字(關(guān)鍵字不區(qū)分大小寫),而以大寫、小寫或大小寫混合寫寫的標識符將被看作不同的標識符(標識符區(qū)分大小寫)。1ABEL-HDL語言的基本語法第五十七頁,共128頁。第五十八頁,共128頁。第五十九頁,共128頁。第六十頁,共128頁。第六十一頁,共128頁。

在ABEL-HDL語言中,其合法的ASCII字符除了數(shù)字0-9,大小寫的英文字母外,還包括空格符及下述符號:!@#$?+&*()[];:‘“–,.<>/^%2、ASCII字符第六十二頁,共128頁。

標識符是用合法的ASCII字符按次序排列定義的名字,其作用是標識器件、管腳、節(jié)點、集合、輸入輸出信號、常量、宏以及變量。所有的標識符必須符合下述規(guī)定:

標識符的長度不超過31個字符;2.標識符必須以字母或下劃線開始;3.標識符其他的宇母可采用大、小寫字母、數(shù)字及下劃線;4.標識符中不能包括空格符;5.除保留標識符(即關(guān)鍵宇)外,標識符中同一個字母的大、小寫表示不同的含義;6.除了合法的點擴展外,標識符中同一個字母的大、小寫表示不同的含義。在ABEL-HDL中保留的標識符稱為關(guān)鍵字,關(guān)鍵字不能用于命名器件、管腳、節(jié)點、集合、宏或信號,而代表了這個字所特指的功能。3、標識符第六十三頁,共128頁。第六十四頁,共128頁。

在ABEL-HDL語言的邏輯描述中,常量用于賦值語句、真值表和測試向量的表達,有時也用于給某些標識符賦值,以使該標識符在整個模塊的邏輯描述中代表該常量的值。常量可以是數(shù)值常量,也可以是非數(shù)值的特殊常量。4、常量第六十五頁,共128頁。第六十六頁,共128頁。

塊是包含在一對大括號中的文本,它用于宏和指令。括號中的文本內(nèi)容可以是一行,也可以是多行。塊可以嵌套,即塊中包含塊。如在塊的文本的字符中包含了大括號,則應在其之前加上反斜杠。例如:

{Thisisablock}

再如:

{Thisisalsoablock,anditspansmorethanoneline}

再如:

{A=B#CD=[0,1]&[1,0]}5、塊第六十七頁,共128頁。

注釋是對源文件的解釋,注釋以雙引號開始,以另一個雙引號或行結(jié)束符號結(jié)束,注釋不能用于關(guān)鍵字之間。例如:“declarationsection”moduleBasic_logic;”givesthemoduleaname(回車)6、注釋第六十八頁,共128頁。ABEL-HDL中的所有的數(shù)值運算精度都是32位,合法的數(shù)值范圍是0~232-1。數(shù)字可采用二進制、八進制、十進制或十六進制,它們分別以符號^b、^o、^d或^h表示,如不用符號則認為是十進制數(shù)。在ABEL-HDL中數(shù)字還可用字符表示,在字符之前加上單引號后,即以字母ASCII碼作為數(shù)值,例如‘a(chǎn)’=^h61,‘a(chǎn)b’=^h61627、數(shù)字

字符串用于標題、模塊及選項的表達,也用于管腳、節(jié)點和屬性的定義,它包含在一對單引號中。如字符串中有單引號或反斜杠則必須在它們之前再加一反斜杠。字符串可寫幾行,但不能超過324個字符。如:TITLE‘1to8linedemultiplexer’;DMI’P16L8’;8、字符串第六十九頁,共128頁。ABEL-HDL支持四類基本運算:邏輯運算、算術(shù)運算、關(guān)系運算及賦值運算。

1)邏輯運算

(1)非:!例!A(2)與:&例A&B(3)或:#例A#B(4)異或:$例A$B(5)同或:!$例A!$B·2)算術(shù)運算

(1)取負-例-A(2)加+例A+B(3)減-例A-B(4)乘(無符號整數(shù))*例A*B(5)除(無符號整數(shù))/例A/B(6)取模(無符號整數(shù))%例A%B(7)左移<<例A<<B(8)右移>>例A>>B9、運算符第七十頁,共128頁。

關(guān)系運算為無符號運算,其結(jié)果為位(布爾值)。

(1)等于:==例A==B(2)不等號:!=例A!=B(3)小于:<例A<B(4)小于等于:<=例A<=B(5)大于:>例A>B(6)大于等于:>=例A>=B

例如:2==3值為false3<5值為true-1>2值為false

4)賦值運算組合輸出為(非時鐘賦值)=

寄存器輸出為(時鐘賦值):=3)關(guān)系運算第七十一頁,共128頁。第七十二頁,共128頁。

表達式由標示符和運算符組成。在表達式中可出現(xiàn)任何邏輯、算術(shù)或關(guān)系運算,表達式中的運算次序按運算優(yōu)先級決定,也可加括號改變執(zhí)行次序。賦值運算僅用于等式,它將表達式的運算結(jié)果通過等式賦給輸出信號(包括組合賦值和時序(寄存器)賦值)。一個信號可以被多次賦值,而其最終結(jié)果是所有這些賦值的或,而不是最后一次的賦值。10、表達式和等式第七十三頁,共128頁。[WHEN條件THEN][!]……[ENABLE]元素=表達式;[ELSE方程]或者[WHEN條件THEN][!]……[ENABLE]元素:=表達式;[ELSE方程]式中:條件:任意合法表達式;元素:給一個或一組信號命名的標識符,或要被表達式賦值的集合表達式:由標識符和運算符組成的式子,求值后得出一個結(jié)果。例如:WHENBTHENA=B;ELSEA=CX=A&B;Y:=A&B;ENABLEY=C#D;若C#D為真,Y被使能(并不是Y輸出為Y=C#D)11、布爾方程語法第七十四頁,共128頁。1.三態(tài)允許端:.OE,它為1有效,僅適用于引腳。2.寄存器復位端:.RS,它為1有效3.寄存器置位端:.PR,它為1有效4.寄存器時鐘:.CLK,它為上跳觸發(fā)5.JK觸發(fā)器輸入端:.J和.K6.T觸發(fā)器輸入端:.T7.RS觸發(fā)器輸入端:.R和.S8.D觸發(fā)器輸入端:.D也可使用:=12、引腳和寄存器的特別說明第七十五頁,共128頁。

集合是作為一個獨立單元進行操作的一組信號或常量。它采用一個標識符,用方括號內(nèi)的一組信號或常量表示,其中的每一個信號或常量稱為集合的元素。

定義集合的方法有枚舉法、界限符法或它們的組合。例如:ADD=[A5,A4,A3,A2,A1,A0]為枚舉法

ADD=[A5..A0]為界限符法

ADD=[A5,A4,A3..A0]為兩種方法的組合集合可以進行邏輯、加、減、關(guān)系運算。

邏輯運算是對集合中每一個元素作相應的運算,因此如果需對兩個或兩個以上集合進行運算時,這些參與運算的集合的元素數(shù)目必須相同。但單個變量與集合進行邏輯運算為該變量與集合的每個元素進行邏輯運算。加、減、關(guān)系運算為對整個集合執(zhí)行該運算。13、集合第七十六頁,共128頁。

例:(ADD>=^h10)&(ADD<=^h2F)

等價于A5^A4VA5^A4

如:當ADDR為6位寄存器,

ADDR:=ADDR+l,為把寄存器A5~A0的值加1。

ABEL-HDL語言處理集合時,將它們作為二進制數(shù)來對待,二進制數(shù)中的每一位代表了集合中的每一個元素的取值。例如:[A0,A1,A2]=3

等效于A0=0,A1=1,A2=1。例1:用集合運算實現(xiàn)布爾方程

ChipSel=A15&A14&A13;

首先,定義一個包含A15,A14,A13的常量集合

Addr=[A15,A14,A13];

于是方程ChipSel=Addr=[1,0,1];第七十七頁,共128頁。

其邏輯功能等效于ChipSel=A15&A14&A13。因為如果Addr=[1,0,1],即A15=1,A14=0,A13=1,那么ChipSel為真。上述集合方程也可以寫成:

ChipSel=Addr=5;本例定義了一個包含16位地址線中高3位的一個集合,并用于集合運算中,也可用其他方法對全部地址進行效果相同的操作。例2:如果在定義段中定義了常量:

Addr=[A15..A0];X=.X.;

那么,下例兩種方法等效于地址線集合中只使用地址高三位的方法:方法1:ChipSel=Addr=[1,0,1,X,X,X,X,X,X,X,X,X,X,X,X,X]方法2:ChipSel=(Addr>=^hA000)&(Addr<=^hBFFF);第七十八頁,共128頁。

啞變量:在宏定義、模塊或指示字中可被真實變量替代的標識符;真實變量:用于宏定義、模塊或指示字中的變量。在需要用真實變量取代啞變量的地方,啞變量前要加一個問號“?”,以與其他標識符區(qū)分開來。如下面的宏定義

OR_EMMACRO(a,b,c){?a#?b#?c};中,a,b,c就是啞變量。下列方程式對OR_EM宏的宏引用D=OR_EM(X,Y,Z);其中X,Y,Z是真實變量。14、變量及變量代換第七十九頁,共128頁。ABEL-HDL語言源文件由一個或多個相互獨立的模塊構(gòu)成,每一個模塊包含了一個完整的邏輯描述。源文件中的所有模塊都可以被ABEL-HDL軟件同時處理。2ABEL-HDL語言源文件的基本結(jié)構(gòu)

1、引言第八十頁,共128頁。第八十一頁,共128頁。

模塊結(jié)構(gòu)必須遵從以下原則:

1.模塊開頭為module語句,結(jié)束必須用相應的end語句;

2.若使用flags語句,必須為module語句的第一條語句;

3.若使用title語句,必須為flags語句后的第一條語句;

4.一個模塊至少有一個定義段,模塊中可按需要以任意次序使用多個定義段。例1:設計一個模塊,要求以GAL6V8構(gòu)成一個兩輸入端的“與”門和一個兩輸入端的“異或門”,設輸入信號為A,B,輸出信號為X,Y,則X=A·B,Y=A⊕B。如在源文件中僅有一個這樣的模塊,其源文件如下所示:第八十二頁,共128頁。ModuleGATEOptions’_tracewave’Title’exampleofgate’DeclarationsgateDEVICE’GAL16V8’;A,BPIN1,2;X,YPIN18,17;EquationsX=A&B;Y=A$B;Test_vections([A,B]->[X,Y])[0,0]->[0,0][0,1]->[0,1][1,0]->[0,1][1,1]->[1,0];EndGATE第八十三頁,共128頁。

在這個模塊中有說明段、定義段、邏輯描述段、測試向量段及結(jié)束語句段五部分組成。在這五部分中,說明段為模塊的開始;定義段的定義部分指定或定義用于設計的器件、信號、常量宏和庫;邏輯描述段對所設計的邏輯進行功能描述;測試向量段寫出了測試向量,用以驗證所設計的邏輯;結(jié)束語句段表示一個模塊的結(jié)束。此外在模塊中還允許有選擇地加上一些指令。每一個模塊只能有一個說明段,它與結(jié)束語句段配對使用,而定義段、邏輯描述段、測試向量段則可以任意次序重復,定義語句必須緊跟標頭或定義段的關(guān)鍵字。

第八十四頁,共128頁。

在例1中說明段如下:ModuleGATEOptions’_tracewave’Title’exampleofgate’

說明段包括模塊語句、選項和標題三個元素組成。1)模塊語句模塊語句是必不可少的,其作用是命名模塊并標志模塊的開始,它與結(jié)束語句配對使用,同時也可指出是否利用啞元。2、說明段第八十五頁,共128頁。

模塊語句的關(guān)鍵字是Module,其格式為:Modulemodulename[(dummy_arg[,dummy_arg]…)]

其中modulename為命名模塊的合法標識符,在本例中為GATE。

dummy_arg是啞變量名稱,如不利用啞變量則可以略去。若模塊選用啞變量,則在使用語言處理程序處理模塊時,可將真實變量傳給模塊。啞變量可為模塊引用。模塊中,凡帶有“?”的啞變量,語法分析程序都用真實變量將其替代。例:modulemy_example(A,B)……C=?B+?A;……endmy_example第八十六頁,共128頁。2)選項

選項為可選語句。其作用是語言處理器控制源文件的處理。選項的關(guān)鍵字是Options,其格式為

Options’sting’string為選項字符串。3)標題標題為可選語句,其作用是給出模塊一個標題,此標題將作為語言處理程序所生的編程器下載文件及設計編制文件的題頭。標題的關(guān)鍵字是Title,其格式為:Title’string’string為標題字符串。第八十七頁,共128頁。

在例1中定義段如下:DeclarationsgateDEVICE’GAL16V8’;A,BPIN1,2;X,YPIN18,17;

定義段包括定義段關(guān)鍵字、器件定義、信號定義、常量定義、宏定義、庫定義等元素。定義段的關(guān)鍵字是Declarations,后面可跟任何合法的定義語句。定義段的關(guān)鍵字允許定義段可在源文件的任何一部分進行定義。如定義語句緊跟說明段,則可略去定義段關(guān)鍵字。3、定義段第八十八頁,共128頁。

器件定義是可選項,它的作用是將模塊中所使用的器件名與實際所采用的可編程邏輯器件聯(lián)系起來。器件定義的關(guān)鍵字是DEVICE,其格式為Device_idDEVICEreal_device;

此表達式中,device_id為模塊中所使用的器件名,在本例中為gate。real_device為實際際所使用的某一個特定可編程邏輯器件的型號,在本例中為GAL16V8。值得注意的是device_id必須是合法的文件名,因為編程器裝載文件的文件名由device_id加上擴展名“.jed”產(chǎn)生的2)信號定義

信號定義包括了管腳定義、節(jié)點定義及屬性定義。其作用是定義信號,并可選擇和管腳及節(jié)點相聯(lián)系。節(jié)點/管腳定義用于定義信號名,并將信號同具體的器件節(jié)點/管腳序數(shù)聯(lián)系起來。1)器件定義第八十九頁,共128頁。

屬性用于定義信號的特性,它既可用于器件的節(jié)點/管腳說明中,作為節(jié)點/管腳定義的一部分,也可設在器件的節(jié)點/管腳定義之后,作為一個獨立的定義部分。它們的關(guān)鍵字分別為PIN,NODE,ISTYPE。

(1)管腳定義管腳定義的格式為:[!]pin_id[,[!]pin_id…]PIN[pin#[,pin#][ISTYPE’attributes’];

其中[!]pin_id是邏輯設計中用于指示模塊中管腳的標識符,pin#為實際器件中的管腳(可為?,由系統(tǒng)分配),attributes為在節(jié)點可編程的器件中用于指明屬性的字符串,有以下幾種:第九十頁,共128頁。第九十一頁,共128頁。例:!Clock,Rest,SIpininU12,12,15,3;

這行代碼將器件U12的管腳12,15,3分別用標示符Clock,Rest,SI來表示。若模塊中不止定義一個器件,必須用語句中的in項來指明器件。例:管腳的屬性可由語句中的屬性項或ISTYPE語句定義,比如

FOpin13=‘neg,reg’; FOpin13ISTYPE‘neg,reg’;

(2)節(jié)點定義節(jié)點定義的格式為:[!]node_id[,[!]node_id…]NODE[node#[,node#][IETYPE’attributes’];

其中[!]node_id是邏輯設計中用于表示節(jié)點的標識符,node#為實際器件中的節(jié)點號,Attributes為在節(jié)點可編程的器件中用于指明屬性的字符串(同管腳定義)。關(guān)鍵字NODE并沒有把信號限制在器件上的內(nèi)部節(jié)點上,當一個信號用NODE定義后,也可能被器件裝配器分配給器件的I/O引腳上。第九十二頁,共128頁。(3)屬性定義屬性定義的格式為:signal[signal…][PINNODE[##S]]ISTYPE’attributes’[,attributes’];signal是管腳或節(jié)點的標識符,attributes為指明屬性的字符串。例:FO,Aistype‘neg,latch’;將FO和A定義為負極性鎖存信號。3)常量定義常量定義用于定義模塊中的常量,常量的關(guān)鍵字是=,其格式為:id[,id…]=expr[,expr…]。

id為模塊中所使用的常量的標識符。expr為定義常量值的表達式。例:A,B,C=5,[1,0],6;G=[1,2]+[3,4]第九十三頁,共128頁。

宏定義用于定義模塊中的宏。這個宏包含了源文件中的某一部分,這樣,用戶在建立文件時,不必每次書寫相同的內(nèi)容,而可以調(diào)用宏。宏定義的關(guān)鍵字是MACRO,其格式為:Macro_idMACRO(dummy_arg[,dummy_arg]…)block;Macro_id為表示宏的宏的標識符。dummy_arg為啞變量。block為塊。例:若定義了NAND3MACRO(A,B,C){!(?A&?B&?C};

則引用D=NAND3(Clock,Hello,Busy);

相當于D=!(Clock&Hello&Busy);

5)庫定義庫定義的關(guān)鍵字是Library,其格式為:Library’name’name為定義庫文件名的字符串,不含擴展名。庫定義使用戶指定的文件內(nèi)容從name.inc庫文件中抽取出來,并被插到源文件中。

4)宏定義第九十四頁,共128頁。

在例1中邏輯描述段如下:EquationsX=A&B;Y=A$B;ABEL-HDL語言描述邏輯的方式有方程、真值表、狀態(tài)圖、熔絲和異或因子,其中每一種描述方法均以關(guān)鍵字或符號開始,以引導某種描述的開始。1)方程的形式它以擴展的布爾方程來描述邏輯功能;方程語句表示與某個器件相關(guān)的一組方程的開始;方程語句的關(guān)鍵字是Epuations,其賦值符為=或:=,其中=為組合邏輯的賦值操作符,:=為時序邏輯的賦值操作符。4、邏輯描述段第九十五頁,共128頁。

在方程中允許使用WHEN-THEN-ELSE語句。方程的表達形式如下:Equations[WHENconditionTHEN][!]element=expression;[ELSEequations];

或者

[WHENconditionTHEN]equations;[ELSE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論