《EDA技術(shù)實(shí) 用教程(第五版)》習(xí)題_第1頁(yè)
《EDA技術(shù)實(shí) 用教程(第五版)》習(xí)題_第2頁(yè)
《EDA技術(shù)實(shí) 用教程(第五版)》習(xí)題_第3頁(yè)
《EDA技術(shù)實(shí) 用教程(第五版)》習(xí)題_第4頁(yè)
《EDA技術(shù)實(shí) 用教程(第五版)》習(xí)題_第5頁(yè)
已閱讀5頁(yè),還剩106頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《EDA技術(shù)實(shí)用教程(第五版)》習(xí)題

1習(xí)題

1-1EDA技術(shù)與ASIC設(shè)計(jì)和FPGA開(kāi)發(fā)有什么關(guān)系?FPGA在ASIC設(shè)計(jì)中有什么用

途?P3~4

EDA技術(shù)與ASIC設(shè)計(jì)和FPGA開(kāi)發(fā)有什么關(guān)系?答:利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)

計(jì)的最后目標(biāo)是完成專(zhuān)用集成電路ASIC的設(shè)計(jì)和實(shí)現(xiàn);FPGA和CPLD是實(shí)現(xiàn)這一途仔的主

流器件。FPGA和CPLD的應(yīng)用是EDA技術(shù)有機(jī)融合軟硬件電子設(shè)計(jì)技術(shù)、SoC(片上系統(tǒng))

和ASIC設(shè)計(jì),以及對(duì)自助設(shè)計(jì)與自動(dòng)實(shí)現(xiàn)最典型的詮釋。

FPGA在AS1C設(shè)計(jì)中有什么用途?答:卜FGA和CPLD通常也被稱(chēng)為可編程專(zhuān)用1C,或

可編程ASICoFPGA實(shí)現(xiàn)ASIC設(shè)計(jì)的現(xiàn)場(chǎng)可編程器件。

1-2與軟件描述語(yǔ)言相比,VHDL有什么特點(diǎn)?P4~6

答:編譯器將軟件程序翻譯成基于某種特定CPU的機(jī)器代碼,這種代碼僅限于這種CPU

而不能移植,并且機(jī)器代碼不代表硬件結(jié)構(gòu),更不能改變CPU的硬件結(jié)構(gòu),只能被動(dòng)地為其

特定的硬件電路結(jié)構(gòu)所利用。

綜合器將VHDL程序轉(zhuǎn)化的目標(biāo)是底層的電路結(jié)構(gòu)網(wǎng)表文件,這種滿足VHDL設(shè)計(jì)程

序功能描述的電路結(jié)構(gòu),不依賴于任何特定硬件環(huán)境;具有相對(duì)獨(dú)立性。綜合器在將VHDL(硬

件描述語(yǔ)言)表達(dá)的電路功能轉(zhuǎn)化成具體的電路結(jié)構(gòu)網(wǎng)表過(guò)程中,具有明顯的能動(dòng)性和創(chuàng)造

性,它不是機(jī)械的一一對(duì)應(yīng)式的''翻譯",而是根據(jù)設(shè)計(jì)庫(kù)、工藝庫(kù)以及預(yù)先設(shè)置的各類(lèi)約

束條件,選擇最優(yōu)的方式完成電路結(jié)構(gòu)的設(shè)計(jì)。

1-3什么是綜合?有哪必類(lèi)型?綜合在電子設(shè)計(jì)自動(dòng)化中的地位是什么?P6

什么是綜合?答:在電子設(shè)計(jì)領(lǐng)域中綜合的概念可以表示為:將用行為和功能層次表達(dá)

的電子系統(tǒng)轉(zhuǎn)換為低層次的便于具體實(shí)現(xiàn)的模塊組合裝配的過(guò)程。

有哪些類(lèi)型?答:(1)從自然語(yǔ)言轉(zhuǎn)換到VHDL語(yǔ)言算法表示,即自然語(yǔ)言綜合。(2)從

算法表示轉(zhuǎn)換到寄存器傳輸級(jí)(RegisterTransportLevel,RTL),即從行為域到結(jié)構(gòu)域的綜

合,即行為綜合。(3)從RTL級(jí)表示轉(zhuǎn)換到邏輯門(mén)(包括觸發(fā)器)的表示,即邏輯綜合。(4)

從邏輯門(mén)表示轉(zhuǎn)換到版圖表示(ASIC設(shè)計(jì)),或轉(zhuǎn)換到FPGA的配置網(wǎng)表文件,可稱(chēng)為版圖綜

合或結(jié)構(gòu)綜合。

綜合在電子設(shè)計(jì)自動(dòng)化中的地位是什么?答:是核心地位(見(jiàn)圖「3)。綜合器具有更

復(fù)雜的工作環(huán)境,綜合器在接受VHDL程序并準(zhǔn)備對(duì)其綜合前,必須獲得與最終實(shí)現(xiàn)設(shè)計(jì)電

路硬件掙征相關(guān)的上2摩信息,以及獲得優(yōu)化綜合的諸多約束條件信息;根據(jù)工々庫(kù)和約束

條件信息,將VHDL程序轉(zhuǎn)化成電路實(shí)現(xiàn)的相關(guān)信息。

1-4在EDA技術(shù)中,自頂向下的設(shè)計(jì)方法的重要意義是什么?P8-10

答:在EDA技術(shù)應(yīng)用中,自頂向下的設(shè)計(jì)方法,就是在整個(gè)設(shè)計(jì)流程中各設(shè)計(jì)環(huán)節(jié)逐步

求精的過(guò)程。

1-5IP在EDA技術(shù)的應(yīng)用和發(fā)展中的意義是什么?P23-25

答:IP核具有規(guī)范的接口協(xié)議,良好的可移植與可測(cè)試性,為系統(tǒng)開(kāi)發(fā)提供了可靠的

保證。

1-6敘述EDA的FPGA/CPLD設(shè)計(jì)流程,以及涉及的EDA工具及其在整個(gè)流程中的作

用。(P12-14)

答:1.設(shè)計(jì)輸入(原理圖/HDL文本編輯)(EDA設(shè)計(jì)輸入器將電路系統(tǒng)以一定的表達(dá)方

式輸入計(jì)算機(jī));2.綜合(EDA綜合器就是將電路的高級(jí)語(yǔ)言(如行為描述)轉(zhuǎn)換成低級(jí)的,

可與FPGA/CPU)的基本結(jié)構(gòu)相映射的網(wǎng)表文件或程序。);3,適配(EDA適配器的功能是將

由綜合器產(chǎn)生的網(wǎng)表文件配置于指定的目標(biāo)器件中,使之產(chǎn)生最終的下載文件,如JEDEC、

JAM格式的文件。);4.時(shí)序仿真(EDA時(shí)序仿真器就是接近真實(shí)器件運(yùn)行特性的仿真,仿真

文件中已包含了器件硬件特性參數(shù),因而,仿真精度高,)與功能仿真(EDA功能仿真器直

接對(duì)VHDL、原理圖描述或其他描述形式的邏輯功能進(jìn)行測(cè)試模擬,以了解其實(shí)現(xiàn)的功能是

否滿足原設(shè)計(jì)的要求,仿真過(guò)程不涉及任何具體器件的硬件特性。);5.編程下載(EDA編

程下載把適配后生成的下載或配置文件,通過(guò)編程器或編程電纜向FPGA或CPLD下載,以便

進(jìn)行硬件調(diào)試和驗(yàn)證(HardwareDebugging)o);6.硬件測(cè)試(最后是將含有載入了設(shè)計(jì)的

FPGA或CPLD的硬件系統(tǒng)進(jìn)行統(tǒng)一測(cè)試,以便最終驗(yàn)證設(shè)計(jì)項(xiàng)目在目標(biāo)系統(tǒng)上的實(shí)際工作情

況,以排除錯(cuò)誤,改進(jìn)設(shè)計(jì)。具中EDA的嵌入式邏輯分析儀是將含有載入了設(shè)計(jì)的bPGA

的硬件系統(tǒng)進(jìn)行統(tǒng)一測(cè)試,并將測(cè)試波形在PC機(jī)上顯示、觀察和分析。)。

2習(xí)題

2-1OLMC(輸出邏輯宏單元)有何功能?說(shuō)明GAL是怎樣實(shí)現(xiàn)可編程組合電路與時(shí)序

電路的。P34~36

OLMC有何功能?答:OLMC單元設(shè)有多種組態(tài),匕配置成專(zhuān)用組合輸出、專(zhuān)用輸入、

組合輸出雙向口、寄存器輸出、寄存器輸出雙向口等。

說(shuō)明GAL是怎樣實(shí)現(xiàn)可編程組合電路與時(shí)序電路的?答:GAL(通用陣列邏輯器件)

是通過(guò)對(duì)其中的OLMC(邏輯宏單元)的編程和三種模式配置(寄存器模式、復(fù)合模式、

簡(jiǎn)單模式),實(shí)現(xiàn)組合電路與時(shí)序電路設(shè)計(jì)的。

2-2什么是基于乘積項(xiàng)的可編程邏輯結(jié)構(gòu)?P33~34,40什么是基于查找表的可編程邏

輯結(jié)構(gòu)?P40-42

什么是基于乘積項(xiàng)的可編程邏輯結(jié)構(gòu)?答:GAL.CPLD之類(lèi)都是基于乘積項(xiàng)的可編程結(jié)

構(gòu);即包含有可編程與陣列和固定的或陣列的PAL(可編程陣列邏輯)器件構(gòu)成。

什么是基于查找表的可編程邏輯結(jié)構(gòu)?答:FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)是基于查找表的

可編程邏輯結(jié)構(gòu)。

2-3FPGA系列器件中的LAB有何作用?P42?44

答:FPGA(Cyclone/CycloneII)系列器件主要由邏輯陣列塊LAB、嵌入式存儲(chǔ)器塊

(EAB)、I/O單元、嵌入式硬件乘法器和PLL等模塊構(gòu)成:其中LAB(邏輯陣列塊)由一系

列相鄰的LE(邏輯單元)構(gòu)成的;FPGA可編程資源主要來(lái)自邏輯陣列塊LAB。

2-4與傳統(tǒng)的測(cè)試技術(shù)相比,邊界掃描技術(shù)有何優(yōu)點(diǎn)?P47?50

答:使用BST(邊界掃描測(cè)試)規(guī)范測(cè)試,不必使用物埋探針,可在器件正常作時(shí)在

系統(tǒng)捕獲測(cè)量的功能數(shù)據(jù),克服傳統(tǒng)的外探針測(cè)試法和“針床”夾具測(cè)試法來(lái)無(wú)法對(duì)IC內(nèi)

部節(jié)點(diǎn)無(wú)法測(cè)試的難題。

2-5解釋編程與配置這兩個(gè)概念。P51~56

答:編程:基于電可擦除存儲(chǔ)單元的EEPROM或Flash技術(shù)。CPLD一股使用此技術(shù)進(jìn)行

編程。CPLD被編程后改變了電可擦除存儲(chǔ)單元中的信息,掉電后可保存。電可擦除編程工

藝的優(yōu)點(diǎn)是編程后信息不會(huì)因掉電而丟失,但編程次數(shù)有限,編程的速度不快。

配置:基于SRAY查找表的編程單元。編程信息是保存在SRAM中的,SRAM在掉電

后編程信息立即丟失,在下次上電后,還需要重新載入編程信息。大部分FPGA采用該種編

程工藝。該類(lèi)器件的編程一般稱(chēng)為配置。對(duì)于SRAM型FPGA來(lái)說(shuō),配置次數(shù)無(wú)限,且速度快;

在加電時(shí)可隨時(shí)更改邏輯;下載信息的保密性也不如電可擦除的編程。

2-6請(qǐng)參閱相關(guān)資料,并回答問(wèn)題:按本章給出的歸類(lèi)方式,將基于乘積項(xiàng)的可編程邏

輯結(jié)構(gòu)的PLD器件歸類(lèi)為CPLD;將基于查找表的可編程邏輯結(jié)構(gòu)的PLD器什歸類(lèi)為

FPGA,那么,APEX系列屬于什么類(lèi)型PLD器件?MAXII系列又屬于什么類(lèi)型的PLD器

件?為什么?P47~51

答:APEX(AdvancedLogicElementMatrix)系列屬于FPGA類(lèi)型PLD器件;編程信息

存于SRAM中。MAXH系列屬于CPLD類(lèi)型的PLD器件;編程信息存于EEPROM中。

3習(xí)題

3-1說(shuō)明端口模式INOUT和BUFFER有何異同點(diǎn)。P60

INOUT:具有三態(tài)控制的雙向傳送端口

BUFFER:具有輸出反饋的單向東湖出口。

3-2畫(huà)出與以下實(shí)體描述對(duì)應(yīng)的原理圖符號(hào)元件:

ENTITYbuf3sIS-實(shí)體1:三態(tài)緩沖器

PORT(input:INSTD.LOGIC;一輸入端

enable:INSTD_LOGIC;一使能端

output:OUTSTDLOGIC);一輸出端

ENDbuf3s;

ENTITYmux21IS-實(shí)體2:2選1多路選擇器

PORT(inO,ini,sei:INSTD.LOGIC;

output:OUTSTD_LOGIC);

mux21

inO

3-3試分別用IF_THEN語(yǔ)句和CASE語(yǔ)句的表達(dá)方式寫(xiě)出此電路的VHDL程序,選擇控

制信號(hào)si和sO的數(shù)據(jù)類(lèi)型為STD_LOGIC_VECTOR;Ssl='O',sO='O';sl='O',sO=T;

sl="\sO=XT和sl="\sO=T時(shí),分別執(zhí)行yv=a、y<=b、yv=c、y〈=d。

-解I:用IF_THEN語(yǔ)句實(shí)現(xiàn)4選1多路選擇器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux41IS

PORT(a,b,c,d:INSTD_LOGIC;

sO:INSTD.LOGIC;

si:INSTD_LOGIC;

y:OUTSTD_LOGIC);

ENDENTITYmux4l;

ARCHITECTUREiCmux41OFmux41IS

SIGNALsOsI:STD_LOGIC_VECTOR(IDOWNTO());-定義標(biāo)準(zhǔn)邏輯位矢量數(shù)據(jù)

BEGIN

s()sl<=sl&sO;-si相并sO,即si與sO并置操作

PR()CESS(s()sl,a,b,c,d)

BEGIN

IFsOsl="OO1'THENy<=a;

ELSIFsOsl="01"THENy<=b;

ELSIFsOsl="10"THENy<=c;

ELSEy<=d;

ENDIF;

ENDPROCESS;

ENDARCHITECTUREif_mux41;

一解2:用CASE語(yǔ)句實(shí)現(xiàn)4選1多路選擇器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_i164.ALL;

ENTITYmux41IS

PORT(a.b,c,d:INSTDLOGIC;

sO:INSTD.LOGIC;

si:INSTD.LOGIC;

y:OUTSTD.LOGIC);

ENDENTITYmux41;

ARCHITECTUREcase_mux41OFmux41IS

SIGNALsOsl:STD_LOGIC_VECTOR(1DOWNTO0);-定義標(biāo)準(zhǔn)邏輯位矢量數(shù)據(jù)類(lèi)型

BEGIN

sOsl<=sl&sO;-si相并s0,即si與sO并置操作

PROCESS(sOsl,a,b,c,d)

BEGIN

CASEsOslIS--類(lèi)似于真值表的case語(yǔ)句

WHEN"00"y<=a;

WHEN"Ol"=>y<=b;

WHENM10"y

WHEN"11"yd;

WHENOTHERS=>NULL

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREcase_mux41;

3-4給出1位全減器的VHDL描述;最終實(shí)現(xiàn)8位全減器。要求:

1)首先-1位半減器,然后用例化語(yǔ)句將它們連接起來(lái)、圖4-20中hsuber是半減器.diff是

vi?nU

3c輸出差(diff二x?y),s_out是借位輸出(s_out=l,x<y),sub_in是借位輸入。

X

y

sub

圖3-18全減器結(jié)構(gòu)圖

一解(1.1):實(shí)現(xiàn)1位半減器h_suber(diff二x-y;s_out=1,x<y)

LIBRARYIEEE;一半減器描述(1):布爾方程描述方法

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYh_suberIS

PORT(x,y:INSTD.LOGIC;

diff,s_out:OUTSTD.LOGIC);

ENDENTITYh_suber;

ARCHITECTUREhs1OFh.suberIS

BEGIN

Diff<=xXOR(NOTy);

s_out<=(NOTx)ANDy;

ENDARCHITECTUREhsl;

-解(1.2):采用例化實(shí)現(xiàn)圖4-20的1位全減器

LIBRARYIEEE;位二進(jìn)制全減器順層設(shè)計(jì)描述

USEIEEE.STD_LOG1C_1164.ALL;

ENTITYf_subcrIS

PORT(xin,yin,sub_in:INSTD_LOGIC;

sub_out,difLout:OUTSTD_LOGIC);

ENDENTITYLsubcr;

ARCHITECTUREfslOFf_subcrIS

COMPONENTh_subcr-調(diào)用半減器聲明語(yǔ)句

PORT(x,y:INSTD.LOGIC;

diff,s_out:OUTSTD_LOGIC);

ENDCOMPONENT;

SIGNALa,b,c:STD_LOGIC;一定義1個(gè)信號(hào)作為內(nèi)部的連接線。

BEGIN

ill:h_subcrPORTMAP(x=>xin,y=>yin,diff=>a,s_out=>b);

u2:h_suberPORTMAP(x=>a,y=>sub_in,diff=>diff_out,s_out=>c);

sub_out<=cORb;

ENDARCHITECTUREfs1;

(2)以I位全減器為基本硬件,構(gòu)成串行借位的8位減法器,要求用例化語(yǔ)句來(lái)完成此項(xiàng)設(shè)

計(jì)(減法運(yùn)算是x-y-sun_in=difft)?

串行借位的8位減法器

-解(2):采用例化方法,以1位全減器為基本硬件:實(shí)現(xiàn)串行借位的8位減法器(上圖所示)。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYsuber_8IS

PORT(xO,xI,x2,x3,x4.x5,x6,x7:INSTD.LOGIC;

yO,y1,y2,y3,y4,y5,y6.y7,sin:INSTD_LOGIC;

diffO,diffl.dift2,diff3:OUTSTD_LOGIC;

diff4,diff5,diff6,diff7,sout:OUTSTD_LOGIC);

ENDENTITYsubcr_8;

ARCHITECTUREs8OFsubcr_8IS

COMPONENTf.subcr-調(diào)用全減器聲明語(yǔ)句

PORT(xin,yin,sub_in:INSTD.LOGIC;

sub_out,difLout:OUTSTD.LOGIC);

ENDCOMPONENT;

SIGNALaO,aI,a2,a3,a4,a5,a6:STD_LOG1C;一定義1個(gè)信號(hào)作為內(nèi)部的連接線。

BEGIN

uO:LsuberPORTMAP(xin=>xO,yin=>yOJiff_out=>diffO,sub_in=>sin,sub_out=>aO);

ul:LsuberPORTMAP(xin=>x1,yin=>y1,diff_out=>diffl,sub_in=>aO,sub_out=>a1);

u2:f_suberPORTMAP(xin=>x2,yin=>y2,diff_out=>diff2,sub_in=>al,sub_out=>a2);

u3:fsuberPORTMAP(xin=>x3.yin=>y3,diffout=>diff3,subin=>a2.subout=>a3):

u4:LsuberPORTMAP(xin=>x4,yin=>y4,diff_out=>diff4,sub_in=>a3,sub_out=>a4);

u5:f_suberPORTMAP(xin=>x5,yin=>y5,diff_out=>diff5,sub_in=>a4,sub_out=>a5);

u6:f_suberPORTMAP(xin=>x6,yin=>y6,diff_out=>diff6,sub_in=>a5,sub_out=>a6);

u7:f_suberPORTMAP(xin=>x7,yin=>y7,diff_out=>diff7,sub_in=>a6,sub_out=>sout);

ENDARCHITECTUREs8;

3-5用VHDL設(shè)計(jì)一個(gè)3-8譯碼器,要求分別用(條件)賦值語(yǔ)句、case語(yǔ)句、ifelse語(yǔ)句

或移位操作符來(lái)完成。比較這4種方式中,哪一種最節(jié)省邏輯資源。

解(1):條件賦值語(yǔ)句

-3-53到8譯碼器設(shè)計(jì)(條件賦值語(yǔ)句實(shí)現(xiàn))

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;一為使用類(lèi)型轉(zhuǎn)換函數(shù),打開(kāi)此程序包。

ENTITYdecoder3t08IS

port(DIN:INSTD_LOGIC_VECTOR(2D0WNT00);

DOUT:OUTBIT_VECTOR(7DOWNTOO));

ENDdccoder3to8;

ARCHUECIUREbehaveObdecoder3to8IS

BEGIN

WITHCONVJNTEGER(DIN)SELECT

DOUT<="00000001"WHEN0,

"00000010"WHEN1.

"00000100"WHEN2,

"00001000"WHEN3,

"00010000"WHEN4,

"00100000"WHEN5,

"01000000"WHEN6,

"10000000"WHEN7,

UNAFFECTEDWHENOTHERS;

ENDbehave;

解(2):case語(yǔ)句

-3-53到8譯碼器設(shè)計(jì)(case語(yǔ)句實(shí)現(xiàn))

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOG1C_UNSIGNED.ALL;-為使用類(lèi)型轉(zhuǎn)換函數(shù),打開(kāi)此程序包。

ENTITYdecoder3t08IS

port(DIN:INSTD_LOGIC_VECTOR(2D0WNT00);

DOUT:OUTB1T_VECTOR(7DOWNTOO));

ENDdecoder3to8;

ARCHITECTUREbehaveOFdecoder3t08IS

BEGIN

PROCESS(DIN)

BEGIN

CASECONVJNTEGER(DIN)IS

WHEN0=>DOUTvFOOOOOOOl”;

WHEN1=>DOUT<="00000010";

WHEN2=>DOUT<="00000100";

WHEN3=>DOUTvFOOOOlOOO”;

WHEN4=>DOUT<="00010000";

WHEN5=>DOUT<="00100000";

WHEN6=>DOUT<="Oi000000";

WHEN7=>D()UT<="100(X)000";

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDbehave;

解(3):if_else語(yǔ)句

-3-53到8譯碼器設(shè)計(jì)(if_clse語(yǔ)句實(shí)現(xiàn))

LIBRARYIEEE;

USE1EEE.S1D_LOG1C_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;--為使用類(lèi)型轉(zhuǎn)換函數(shù),打開(kāi)此程序包。

ENTITYdecoder3t08IS

port(DIN:INSTD_LOGIC_VECTOR(2DOWNTO0);

DOUT:OUTBITVECTOR(7DOWNTO0)):

ENDdecoder3t08;

ARCHITECTUREbehaveOFdecoder3to8IS

BEGIN

PROCESS(DIN)

BEGIN

IFCONVJNTEGER(DIN)=0THENDOUT<="00000001";

ELSIFCONVJNTEGER(DIN)=1THENDOUT<=-00000010";

ELSIFCONVJNTEGER(DIN)=2THENDOUT<='00000100";

ELSIFCONV」NTEGER(DIN)=3THENDOUT<='()0001000";

ELSIFC0NV」NTEGER(DIN)=4THENDOUT<="()()()10000”;

ELSIFCONV」NTEGER(DIN)=5THENDOUTVOO100000”;

ELSIFCONV」NTEGER(DIN)=6THENDOUT<='0100000()";

ELSIFCONV」NTEGER(DIN)=7THENDOUT<='10000000";

ENDIF;

ENDPROCESS;

ENDbehave;

解(4):移位操作符

-3-53到8譯碼器設(shè)計(jì)(移位操作實(shí)現(xiàn))

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STDLOGICUNSIGNED.ALL:--為使用類(lèi)型轉(zhuǎn)換函數(shù),打開(kāi)此程序包。

ENTITYdecoder3t08IS

port(DIN:INSTD_LOGIC_VECTOR(2DOWNTO0);

DOUT:OUTBIT_VECTOR(7DOWNTO0));

ENDdecoder3t08;

ARCHITECTUREbehaveOFdecoder3to8IS

BEGIN

DOUT<="00000001"SLLCONV」NTEGER(DIN);-被移位部分是常數(shù)

ENDbehave;

3-6設(shè)計(jì)一個(gè)比較電路,當(dāng)輸入的8421BCD碼大于5時(shí)輸出1,否則輸出0。

-解:3-6設(shè)計(jì)一個(gè)比較電路,當(dāng)輸入的8421BCD碼大于5時(shí)輸出1,否則輸出0。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOG1C_UNSIGNED.ALL;

ENTITYg_5_cmpIS

PORT(d_in:INSTD_LOGIC_VECTOR(3DOWNTO0);一輸入數(shù)據(jù)

cmp.out:OUTSTD.LOGIC);一比較輸出(1:輸入數(shù)據(jù)>5)

ENDg_5_cmp;

ARCHITECTUREBHVOFg_5_cmpIS

BEGIN

PROCESS(dJn)

BEGIN

IF(d_in>"0101")THEN

cmp_outv=T;一輸入數(shù)據(jù)大于5,比較輸出U

else

cmp_out<='0,;-輸入數(shù)據(jù)小于等于5,比較輸出Oo

ENDIF;

ENDPROCESS;

ENDBHV;

3-7利用if語(yǔ)句設(shè)計(jì)一個(gè)全加器。

-3-7利用if語(yǔ)句設(shè)計(jì)一個(gè)全加器

LIBRARYIEEE;-I位二進(jìn)制全加器頂層設(shè)計(jì)描述

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYLadderIS

PORT(ain,bin,cin:INSTD.LOGIC;

cout,sum:OUTSTD_LOGIC);

ENDENTITYLadder;

ARCHITECTUREtdlOhLadderIS

BEGIN

PROCESS(ain,bin,cin)

BEGIN

IFain='1'XORbin='1'XORcin='1'THENsum<='1':ELSEsum<='0':ENDIF:

IF(ain=TANDbin='r)OR(ain='l'ANDcin=T)OR(bin=TANDcin=T)OR(ain=TAND

bin-1'ANDcin=T)

THENcout<='l';

ELSEcoutv='O';

ENDIF:

ENDPROCESS;

ENDARCHITECTUREfd1;

3-8設(shè)計(jì)一個(gè)求補(bǔ)碼的程序,輸入數(shù)據(jù)是一個(gè)有符號(hào)的8位二進(jìn)制數(shù)。

-解:3-8設(shè)計(jì)一個(gè)求補(bǔ)碼的程序,輸入數(shù)據(jù)是一個(gè)有符號(hào)的8位二進(jìn)制數(shù)。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYorg_patchIS

P0RT(org_data:INSTD_LOGIC_VECTOR(7D0WNT00);一原碼輸入

patch_data:OUTSTD_L0GIC_VECT0R(7DOWNTO0));一補(bǔ)碼輸出

ENDorg_patch;

ARCHUECIUREBHVOForg_patchIS

BEGIN

PROCESS(org_data)

BEGIN

IF(orgdata(7)='O')THEN

patch_data<=org_data;-org_data>=0,補(bǔ)碼=原碼。

else

patch_data<=org_data(7)&(notorg_data(6DOWNTO0))+1;-org_data<0,補(bǔ)碼=|原

碼I取反+1。

ENDIF;

ENDPROCESS;

ENDBHV;

3-9設(shè)計(jì)一個(gè)格雷碼至二進(jìn)制數(shù)的轉(zhuǎn)換器。

-3-9設(shè)計(jì)一個(gè)格雷碼至二進(jìn)制數(shù)的轉(zhuǎn)換器。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;一為使用類(lèi)型轉(zhuǎn)換函數(shù),打開(kāi)此程序包。

ENTITYgrayTObinaryIS

port(DIN:INSTD_LOGIC_VECTOR(3D0WNT00);

DOUT:OUTBIT_VECTOR(3DOWNTOO));

ENDgrayTObinary;

ARCHUECIUREbehaveObgrayiObinaryIS

BEGIN

PROCESS(DIN)

BEGIN

CASEDINIS

WHEN"0000"=>DOUT<=,,0000";

WHEN"0001"=>DOUTv="0001”;

WHEN"0011"=>DOUT<="0010";

WHEN"0010"=>DOUT<="00H";

WHEN"0110"=>DOUTv="0100”;

WHEN"0111"=>DOUT<="0101";

WHEN"0101"=>DOUT<="OHO";

WHEN"0100"=>DOUT<="0111";

WHEN"1100"=>DOUTblOOO";

WHEN“1101"=>DOUT<="1001

WHEN"1111"=>DOUT<="1010";

WHEN"1110°=>DOUT<="1()11";

WHEN"1010"=>DOUT<=,,UOO,*;

WHEN"1011"=>DOUT<="1101”;

WHEN"1001"=>DOUT<="1110";

WHEN"1000"=>DOUT<="llir';

WHENO1HERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDbehave;

3-10利用if語(yǔ)句設(shè)計(jì)一個(gè)3位二進(jìn)制數(shù)A[2..0]、B[2..0]的比較器電路。對(duì)于比較(A<B)、

(A>B)、(A=B)的結(jié)果分別給出輸出信號(hào)LT=1、GT=kEQ=lo

-3-10利用if語(yǔ)句設(shè)計(jì)一個(gè)3位二進(jìn)制數(shù)A[2..0]、B[2..O]的比較器電路。

一對(duì)于比較(AvB)、(A>B)、(A=B)的結(jié)果分別給出輸出信號(hào)LT=1、GT=1>EQ=L

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCOMPIS

PORT(A.B:INSTD_L0GIC_VECT0R(2DOWNTO0);--兩個(gè)3位輸入

Ur:OUTSTD_LOG1C;一小于輸出

GT:OUTSTD_LOGIC;一大于輸出

EQ:OUTSTD.LOGIC);一等于輸出

ENDENTITYCOMP:

ARCHITECTUREONEOFCOMPIS

BEGIN

PROCESS(A,B)

BEGIN

IF(A<B)THENLl'<=liELSELr<='O';ENDIF;

IF(A>B)THENGT<='1';ELSEGT<='0';ENDIF;

IF(A=B)THENEQ<='1';ELSEEQ<='0';ENDIF;

ENDPROCESS;

-LT<=(AvB):--小于

-GTv=(A>B);--大于

—EQ<=(A=B);--筆于

ENDARCHITECTUREONE;

3-11利用8個(gè)全加器,可以構(gòu)成一個(gè)8位加法器。利用循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)這項(xiàng)設(shè)計(jì)。并以

此項(xiàng)設(shè)計(jì)為例,使用GENERIC參數(shù)傳遞的功能,設(shè)計(jì)一個(gè)32位加法器。

-3-11利用GENERIC參數(shù)和循環(huán)語(yǔ)句將8個(gè)全加器構(gòu)成成8位加法器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOG1C_ARITH.ALL;

ENTITYADDER8BIS

GENERIC(S:INTEGER:=8);一定義參數(shù)S為整數(shù)類(lèi)型,且等于4

P0RT(A,B:INSTD_LOG1C_VECTOR(S-1DOWNTO0);

CIN:INSTD.LOGIC;

SUM:OUTSTD_LOGIC_VECTOR(S-1DOWNTO0);

COUT:OUTSTD_LOGIC);

ENDENTITYADDER8B;

ARCHITECTUREONE0FADDER8BIS

BEGIN

PROCESS(A,B,CIN)

VARIABLESI:STDLOGICVECTOR(S-1DOWNTO0):

VARIABLECl:STD_LOGIC;-_VECTOR(SDOWNTO0);

BEGIN

C1:=CIN;

-C1(O):=CIN;

FORiIN1TOSLOOP

IFA(i-1)=TXORB(i-1)=TXORC1=TTHENSl(i-1):=T;ELSESl(i-1i:='O';

ENDIF;

IF(A(i-l)='l'ANDB(i-l)=T)OR(A(i-l)=TANDCl='r)OR(B(i-l)='rAND

Cl='r)OR(A(i-l)='rANDB(i-1)=TANDCl='l')

THENC1:=T;

ELSECl

ENDIF;

ENDLOOP;

SUM<=S1;COUT<=C1;

ENDPROCESS;

ENDARCHITECTUREONE;

3-12設(shè)計(jì)一個(gè)2位BCD碼減法器。注意可以利用BCD碼加法器來(lái)實(shí)現(xiàn)。因?yàn)闇p去一個(gè)

二進(jìn)制數(shù),等于加上這個(gè)數(shù)的補(bǔ)碼。只是需要注意,作為十進(jìn)制的BCD碼的補(bǔ)碼獲取方式

與普通二進(jìn)制數(shù)稍有不同,我們知道二進(jìn)制數(shù)的補(bǔ)碼是這個(gè)數(shù)的取反加1。假設(shè)有一個(gè)4位

二進(jìn)制數(shù)是0011,其取補(bǔ)實(shí)際上是用1111減去0011,再加上1。相類(lèi)似,以4位二進(jìn)制表

達(dá)的BCD碼的取補(bǔ)則是用9(1001)減去這個(gè)數(shù)再加上U

-3-12設(shè)計(jì)2位BCD碼減法器(利用減去數(shù)等于加上該數(shù)補(bǔ)碼方法)(a-b=a+[-b]補(bǔ)碼)

LIBRARYIEEE;■待例化元件

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_arith.ALL;

USEIEEE.STD_LOGIC_unsigned.ALL;

ENTITYSUB2BCDIS

PORT(a,b:INSTD_LOGIC_VECTOR(7DOWNTO0);

diff:outSTD_LOGIC_VECTOR(7DOWNTO0);

sout:OUTSTD_LOGIC);

ENDSUB2BCD;

ARCHITECTUREbehaveOFSUB2BCDIS

BEGIN

PROCESS(a.b)

VARIABLEcc:STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

IFa<bTHENsout〈=T;ELSEsout<='0';ENDIF;

cc:="10011010,r-b;

IFcc(3DOWNTO0)>"l001"THENcc:=cc+"00000110";ENDIF;

IFcc(7DOWNTO4)>,,1001"THENcc:=cc+"01100000";ENDIF;

cc:=a+cc;

IFcc(3DOWNTO0)>"1001"THENcc:=cc+"00000110";ENDIF;

IFcc(7DOWNTO4)>"1001"THENcc:=cc+"01100000";ENDIF;

IFa<bTHEN

cc:=,,10011010"-cc;

IFcc(3DOWNTO0)>,,1001"THENcc:=cc+"00000110";ENDIF;

IFcc(7DOWNTO4)>01001"THENcc:=cc+"01100000";ENDIF;

ENDIF;

diff<=cc;

ENDPROCESS;

ENDbehave;

3-13設(shè)計(jì)一個(gè)4位乘法器,為此首先設(shè)計(jì)一個(gè)加法器,用例化語(yǔ)句調(diào)用這個(gè)加法器,用

移位相加的方式完成乘法s并以此項(xiàng)設(shè)計(jì)為基礎(chǔ),使用GENERIC參數(shù)傳遞的功能,設(shè)計(jì)一

個(gè)16位乘法器。

-3-134位移位相加型乘法器設(shè)計(jì)(例化調(diào)用加法器)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_i164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STDLOGICARITH.ALL:

ENTITYMULT4BIS

GENERIC(S:INTEGER:=4);-定義參數(shù)S為整數(shù)類(lèi)型,旦等于4

PORT(R:OUTSTD_LOGIC_VECTOR(2*S-1DOWNTO0);

A,B:INSTD_LOGIC_VECTOR(S-1DOWNTO0));

ENDENTITYMULT4B;

ARCHITECTUREONEOFMULT4BIS

COMPONENTaddemIS

PORT(a,b:INSTD_LOGIC_VECTOR;

result:outSTD_LOGIC_VECTOR);

ENDCOMPONENT;

SIGNALAO:STD_LOGIC_VECTOR(2*S-1DOWNTO0);

SIGNALRR3,RR2,RR1,RR0,ZZ1,ZZ0:STD_LOGIC_VECTOR(2*S-1DOWNTO0);

BEGIN

AO<=CONV_STD_LOGIC_VECTOR(0,S)&A;

PROCESS(A,B)

BEGIN

lF(B(O)='r)THENRRO<=TO_STDL(XiICVECTOR(TO_BITVECrOR(AO)SLL0):ELSERR(R=(OTHERS=>'0'):ENDIF:

IF(B(l)='r)THENRR1<=TO_STDLOGICVECTOR(TO_BITVECrOR(AO)SLL1):ELSERR1<=(OTHERS=>0'):ENDIF:

IF(B(2)='r)THENRR2<=TO_STDLOGICVECTOR(TO_BITVECrOR(AO)SLL2):ELSERR2<=(OTHERS=>'0'):ENDIF:

IF(B(3)='r)THENRR3<=TO_SIDLOGICVECTORCTO_BITVECrOR(AO)SLL3):ELSERR3<=(OrHERS=>'0'):ENDIF:

ENDPROCESS;

uO:addernPORTMAP(a=>RR0,b=>RR1,result=>ZZO);

ul:addernPORTMAP(a=>ZZ0,b=>RR2,result=>ZZl);

u2:addernPORTMAP(a=>ZZ1,b=>RR3,result=>R);

ENDARCHITECTUREONE;

-3-13a16位乘法器(通過(guò)底層3-13_MULTSB和頂層GENERIC參數(shù)和傳遞例化語(yǔ)句實(shí)

現(xiàn))

LIBRARYIEEE:

USEIEEE.STD_LOG1C_1164.ALL;

ENTITYMULT16BIS

PORT(D),D2:INSTD_LOGIC_VECTOR(15DOWNTO0);

Q:OUTSTD_LOGIC_VECTOR(31DOWNTO0));

END;

ARCHITECTUREBHVOFMULT16BIS

COMPONENTMULTSB-MULTS8模塊的調(diào)用聲明

GENERIC(S:integer);一照抄MULTSB實(shí)體中關(guān)于參數(shù)“端M”定義的語(yǔ)句

PORIXR:OUTstd_logic_vector(2*S-lDOWNTO0);

A,B:INstd_logic_vector(S-1DOWNTO0));

ENDCOMPONENT;

BEGIN

ul:MULTSBGENERICMAP(S=>I6)PORTMAP(R=>Q.A=>D1.B=>D2):

END;

3-14用循環(huán)語(yǔ)句設(shè)計(jì)一個(gè)7人投票表決器。

-解:3-14用循環(huán)語(yǔ)句設(shè)計(jì)一個(gè)7人投票表決器,及一個(gè)4位4輸出最大數(shù)值檢測(cè)電路。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYvote_7IS

I?ORT(DIN:INSlD_LOGlC_VECrOR(6DOWNTO0):-7位表決輸入(I:同意,0:不同意)

G_4:OUTSTD.LOGIC;-超過(guò)半數(shù)指示

CNTH:OUTSTD_LOGIC_VECTOR(2DOWNTO0));一表決結(jié)果統(tǒng)計(jì)數(shù)

ENDvote_7;

ARCHITECTUREBHVOFvote_7IS

BEGIN

PROCESS(DIN)

VARIABLEQ:STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN

Q:="0(X)";

FORnIN0TO6LOOP-n是LOOP的循環(huán)變量

IF(DIN(n)='r)THENQ:=Q+1;ENDIF;

ENDLOOP;

CNTHv=Q;

IFQ>=4THENG_4v=T;ELSEG_4<='0';ENDIF;

ENDPROCESS;

ENDBHV;

3-15設(shè)計(jì)一個(gè)4位4輸入最大數(shù)值檢測(cè)電路。

-3-15設(shè)計(jì)一個(gè)4位4輸入最大數(shù)值檢測(cè)電路。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL:

ENTITYMAXDM'AIS

P0RT(A:INSTD_LOGIC_VECTOR(3D0WNT00);

MAXOUT:OUTSTD.LOGIC);

ENDENTITYMAXDATA;

ARCHITECTUREONEOFMAXDATAIS

BEGIN

PROCESS(A)

BEGIN

IFA="llll"THENMAXOUT<=T;ELSEMAXOUT<='0';ENDIF;

ENDPROCESS;

ENDARCHITECTUREONE;

3-16設(shè)計(jì)VHDL程序,實(shí)現(xiàn)兩個(gè)8位二進(jìn)制數(shù)相加,然后將和左移或右移4位,并分別

將移位后的值存入變量AA和BB中。

-3-16設(shè)計(jì)VHDL程序,實(shí)現(xiàn)兩個(gè)8位二進(jìn)制數(shù)相加,然后將和左移或右移4位,并分別

將移位后的值存入變量A和B中。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYADDER8BIS

GENERIC(S:INTEGER:=8);-定義參數(shù)S為整數(shù)類(lèi)型,且等于4

PORT(A,B:INSTD_LOGIC_VECTOR(S-1DOWNTO0);

CIN:INSTD.LOGIC;

SUM:OUTSTD_LOGIC_VECTOR(S-1DOWNTO0);

COUT:OUTSTD.LOGIC;

AA,BB:OUTSTD_LOGIC_VECTOR(S-1+4DOWNTO0));

ENDENTITYADDER8B;

ARCHITECTUREONEOFADDER8BIS

BEGIN

PROCESS(A.B,CIN)

VARIABLES!:STD_LOGIC_VECTOR(S-1DOWNTO0);

VARIABLECl:STD_LOGIC;

VARIABLEAB:STDLOGICVECTOR(S-I+4DOWNTO0):

BEGIN

CI:=CIN;

FORiIN1TOSLOOP

IFA(i-l)=(rXORB(i-l)='rXORC1=TTHENSl(i-1):=T;ELSESl(i-11:='0';

ENDIF;

IF(A(i/)=TANDB(i-l)=T)OR(A(i-l)=TANDCl=T)OR(B(i-l)=TAND

Cl='r)OR(A(i-l)='rANDB(i-1)=TANDC1=T)

THENCl

ELSEC1:='O';

ENDIF;

ENDLOOP;

SUM<=S1;COUT<=C1;

AA<=TO_STDLOGICVECTOR(TO_BITVECTOR("0000"&S1)SLL4);

BB<=TO_STDLOGICVECTOR(TO_BITVECTOR("0000"&S1)SRL4);

ENDPROCESS;

ENDARCHITECTUREONE;

3-17舉例說(shuō)明GENERIC說(shuō)明語(yǔ)句(在實(shí)體定義語(yǔ)句中定義類(lèi)屬常數(shù))和GENERIC映射

語(yǔ)句(在例化語(yǔ)句中將類(lèi)屬常數(shù)賦予新值)有何用處。P82

3-18表達(dá)式C<=A+B中,A、B和C的數(shù)據(jù)類(lèi)型都是STD_LOGIC_VECTOR,是否能直

接進(jìn)行加法運(yùn)算?說(shuō)明原因和解決方法。能(第一種將A、B轉(zhuǎn)換成整型數(shù)相加結(jié)果再轉(zhuǎn)換

成邏輯位矢后送CP89;第二種使用USEIEEE.SDTLOGICUNSIGNED.ALL語(yǔ)句打開(kāi)重載

運(yùn)算符程序包。P70,P130)

3-19VHDL中有哪三種數(shù)據(jù)對(duì)象?詳細(xì)說(shuō)明它們的功能特點(diǎn)以及使用方法,舉例說(shuō)明數(shù)據(jù)

對(duì)象與數(shù)據(jù)類(lèi)型的關(guān)系。信號(hào),變量,常量P71

3-20能把任意一種進(jìn)制的值向一整數(shù)類(lèi)型的數(shù)據(jù)對(duì)象賦值嗎?如果能,怎樣做?能(若

A,B,C,D是信號(hào)整數(shù)類(lèi)型,A<=16#df#;B<=8#23#;C<=2#01#;D<=10)P83

3-21回答有關(guān)BIT和BOOLEAN數(shù)據(jù)類(lèi)型的問(wèn)題:P59

(1)解釋BIT(B「T)和BOOLEAN(“TRUE”,“FALSE”)類(lèi)型的區(qū)別。

(2)對(duì)于邏輯操作應(yīng)使用哪種類(lèi)型?BIT

(3)關(guān)系操作的結(jié)果為哪種類(lèi)型?BOOLEAN

(4)IF語(yǔ)句測(cè)試的表達(dá)式是哪種類(lèi)型?BOOLEAN

3-22用兩種方法設(shè)計(jì)8位比較器,比較器的輸入是兩個(gè)待比較的8位數(shù)A=[A7.

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論