《EDA技術(shù)及應(yīng)用》課后題解_第1頁(yè)
《EDA技術(shù)及應(yīng)用》課后題解_第2頁(yè)
《EDA技術(shù)及應(yīng)用》課后題解_第3頁(yè)
《EDA技術(shù)及應(yīng)用》課后題解_第4頁(yè)
《EDA技術(shù)及應(yīng)用》課后題解_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單元一EDA技術(shù)概述

1.什么是EDA技術(shù)?EDA技術(shù)的基本特征是什么?

答:EDA(ElectronicDesignAutomation,電子設(shè)計(jì)自動(dòng)化)

技術(shù)是電子設(shè)計(jì)工程師在計(jì)算機(jī)上完成電路的功能設(shè)計(jì)、邏輯設(shè)計(jì)、

性能分析、時(shí)序測(cè)試直至PCB(印制電路板)的自動(dòng)設(shè)計(jì)等。

EDA技術(shù)的基本特征是采用高級(jí)語(yǔ)言描述,具有系統(tǒng)級(jí)仿真和綜

合能力。

2.可編程邏輯器件有什么特點(diǎn)?有哪些可編程資源?

答:可編程邏輯器件的主要特點(diǎn)

1.縮短研制周期

2.降低設(shè)計(jì)成本

3.提高設(shè)計(jì)靈活性

3.寫出Altera器件中的下列英文縮寫的中文含義。

LELABPIAEAB

答:LE:邏輯單元

LAB:邏輯陣列塊

PIA:可編程連線陣列

EAB:嵌入式陣列塊

4.簡(jiǎn)述可編程邏輯器件的發(fā)展趨勢(shì)。

答:可編程邏輯器件未來的發(fā)展將呈現(xiàn)以下幾個(gè)方面的趨勢(shì):

1)向高密度、大規(guī)模的方向發(fā)展

2)向系統(tǒng)內(nèi)可重構(gòu)的方向發(fā)展

3)向低電壓、低功耗的方向發(fā)展

4)向高速可預(yù)測(cè)延時(shí)器件的方向發(fā)展

5)向混合可編程技術(shù)方向發(fā)展

單元二可編程邏輯器件的設(shè)計(jì)與開發(fā)

1.簡(jiǎn)述可編程邏輯器件的一般設(shè)計(jì)過程。

答:CPLD/FPGA器件的設(shè)計(jì)流程一般分為設(shè)計(jì)輸入、設(shè)計(jì)實(shí)現(xiàn)、

設(shè)計(jì)校驗(yàn)和編程下載4個(gè)步驟。

2.試比較可編程邏輯器件設(shè)計(jì)的常用輸入方式。

答:1)原理圖輸入

原理圖是圖形化的表達(dá)方式,它是利用軟件中所提供的元件符號(hào)

和連線來描述設(shè)計(jì)。其特點(diǎn)是比較直觀,便于進(jìn)行接口設(shè)計(jì)和引腳鎖

定,容易實(shí)現(xiàn)仿真,便于信號(hào)的觀察和電路的調(diào)整,系統(tǒng)運(yùn)行速率較

高,但當(dāng)描述復(fù)雜電路時(shí)則比較煩瑣。

2)硬件描述語(yǔ)言輸入

硬件描述語(yǔ)言輸入是采用文本方式描述設(shè)計(jì),這種方式的描述范

圍較寬,從簡(jiǎn)單的門電路到復(fù)雜的數(shù)字系統(tǒng)均可描述。特別是在描述

復(fù)雜設(shè)計(jì)時(shí),非常簡(jiǎn)潔。但這種描述方式不適合描述接口和連接關(guān)系,

并且該輸入方式必須依賴綜合器,只有好的綜合器才能把語(yǔ)言綜合成

優(yōu)化的電路。

3.列舉常用的EDA工具軟件,并比較各有什么特點(diǎn)。

答:1)SynpIify

該軟件是由SynpIicity公司專為FPGA和CPLD開發(fā)設(shè)計(jì)的邏輯

綜合工具。它在綜合優(yōu)化方面的優(yōu)點(diǎn)非常突出,得到了廣大用戶的好

評(píng)。它支持用Verilog和VHDL硬件描述語(yǔ)言描述的系統(tǒng)級(jí)設(shè)計(jì),具

有強(qiáng)大的行為及綜合能力。綜合后,能生成Verilog或VHDL網(wǎng)表,

以進(jìn)行功能級(jí)仿真。

Synplify的綜合過程分為三步:首先是語(yǔ)言綜合,將硬件描述

語(yǔ)言的設(shè)計(jì)編譯成結(jié)構(gòu)單元。接下來采用優(yōu)化算法對(duì)設(shè)計(jì)進(jìn)行優(yōu)化,

除去冗余項(xiàng),提高可靠性與速度。第三步是工藝映射,將設(shè)計(jì)映射為

相應(yīng)PLD的網(wǎng)表文件。

2)Synopsys

該軟件是另一種系統(tǒng)綜合軟件,它因綜合功能強(qiáng)大而被廣泛使

用。Synopsys綜合器的綜合效果比較理想,系統(tǒng)速度快,消耗資源

少。對(duì)系統(tǒng)的優(yōu)化過程大致分為兩步:第一步是設(shè)計(jì)規(guī)則,提出必須

滿足的設(shè)計(jì)要求,如最大延時(shí)、最大功耗、最大扇出數(shù)目、驅(qū)動(dòng)強(qiáng)度

等;第二步是提出各種設(shè)計(jì)約束,一般有反應(yīng)時(shí)間約束、芯片面積約

束等。綜合器根據(jù)設(shè)計(jì)要求,采用相應(yīng)算法,力爭(zhēng)使綜合效果達(dá)到最

佳。

Synopsys支持完整的VHDL和VeriIog語(yǔ)言子集,另外它的元件

庫(kù)中包含許多現(xiàn)成的實(shí)現(xiàn)方案,調(diào)用非常方便。正是因?yàn)檫@些突出的

優(yōu)點(diǎn),Synopsys逐漸成為設(shè)計(jì)人員普遍接受的標(biāo)準(zhǔn)工具。

3)ispDesignEXPERT

該軟件是Lattice公司專為本公司的PLD芯片開發(fā)設(shè)計(jì)的軟件,

它的前身是該公司的Synari。、ispEXPERT。ispDesignEXPERT是完備

的EDA軟件,支持系統(tǒng)開發(fā)的全過程,包括設(shè)計(jì)輸入、設(shè)計(jì)實(shí)現(xiàn)、仿

真與時(shí)序分析、編程下載等。

ispDesignEXPERT包括三個(gè)版本。Starter版適合初學(xué)者學(xué)習(xí),

可以免費(fèi)下載。Base版為試用版。它們的設(shè)計(jì)規(guī)模都低于600個(gè)宏

單元。Advanced版是專業(yè)設(shè)計(jì)版,支持該公司的各種系列器件,功

能全面。

4)MAX+plusll

該軟件是Altera公司專為本公司的PLD芯片開發(fā)設(shè)計(jì)的軟件。

其功能齊全,使用方便,易懂好學(xué),是最廣為接受的EDA工具之一。

5)QuartusII

該軟件也是Altera公司為本公司的PLD芯片開發(fā)設(shè)計(jì)的軟件。

它比MAX+pIusII支持的器件更全面,特另包括Altera公司的超高密

度的芯片系列——APEX系列器件。QuartusII可開發(fā)的單器件門數(shù)達(dá)

到了260萬門,特別適合高集成的大型系統(tǒng)的開發(fā)設(shè)計(jì)。本書介紹的

設(shè)計(jì)就是采用的該軟件。

4.EDA開發(fā)工具在“設(shè)計(jì)實(shí)現(xiàn)”過程中主要完成哪些工作?

答:EDA開發(fā)工具進(jìn)行設(shè)計(jì)實(shí)現(xiàn)時(shí)主要完成以下4個(gè)相關(guān)任務(wù)。

1)優(yōu)化和合并

優(yōu)化是指進(jìn)行邏輯化簡(jiǎn),把邏輯描述轉(zhuǎn)變?yōu)樽钸m合在器件中實(shí)現(xiàn)

的形式;合并是將模塊化設(shè)計(jì)產(chǎn)生的多個(gè)文件合并成一個(gè)網(wǎng)表文件,

并使層次設(shè)計(jì)平面化。

2)映射

映射是根據(jù)所選擇的PLD型號(hào),把設(shè)計(jì)分割為多個(gè)適合器件內(nèi)部

邏輯資源實(shí)現(xiàn)的邏輯小塊形式。

3)布局和布線

布局是將已分割的邏輯小塊放到器件內(nèi)部邏輯資源的具體位置,

并使它們易于連線,且連線最少;布線是利用器件內(nèi)的布線資源完成

各功能塊之間和反饋信號(hào)的連接。

4)產(chǎn)生編程文件

設(shè)計(jì)實(shí)現(xiàn)的最后一步是產(chǎn)生可供器件編程使用的數(shù)據(jù)文件。對(duì)

CPLD而言,產(chǎn)生的是熔絲圖文件(*.JEDEC);對(duì)FPGA器件,則產(chǎn)生

位數(shù)據(jù)流文件Bitstream。

5.簡(jiǎn)述QuartusII進(jìn)行EDA設(shè)計(jì)的一般步驟。

答:

1.為本項(xiàng)工程設(shè)計(jì)建立文件夾

2.建立工程

3.添加設(shè)計(jì)文件并保存

4.檢查設(shè)計(jì)

5.鎖定引腳并編譯

6.功能仿真

7.下載

單元三硬件描述語(yǔ)言

1.VHDL與VeriIlogHDL各有何特點(diǎn)?試比較各自的應(yīng)用場(chǎng)合。

答:一般的硬件描述語(yǔ)言可在三個(gè)層次上進(jìn)行電路描述,其層次

由高到低依次可分為行為級(jí)、RTL級(jí)和門電路級(jí)。VHDL通常更適合行

為級(jí)和RTL級(jí)的描述;VerilogHDL通常只適合RTL級(jí)和門電路級(jí)的

描述。因此,與VerilogHDL相比,VHDL是一種高級(jí)描述語(yǔ)言,適用

于電路的高級(jí)建模,最適合描述電路的行為,即描述電路的功能,但

它幾乎不能直接控制門電路,即控制電路的資源;VerilogHDL則是

一種低級(jí)的描述語(yǔ)言,最適合于描述門級(jí)電路,易于控制電路資源。

VHDL和VerilogHDL主要區(qū)別在于邏輯表達(dá)的描述級(jí)別。VHDL雖

然也可以直接描述門電路,但這方面的能力卻不如VerilogHDL;相

反,VerilogHDL在高級(jí)建模描述方面不如VHDL。VeriIogHDL的描述

風(fēng)格接近于電路原理圖,從某種意義上說,它是電路原理圖的高級(jí)文

本表7r方式。

2.VHDL程序有哪些基本的部分?各部分起什么作用?

答:VHDL程序可以分為兩部分。第一部分主要用于描述電路的

“外部端口”,包括器件名稱、端口的名稱、數(shù)據(jù)類型等,稱為“實(shí)

體說明”;第二部分主要用于描述電路的內(nèi)部結(jié)構(gòu)、功能及其實(shí)現(xiàn)的

算法,稱為“結(jié)構(gòu)體”。

3.BIT數(shù)據(jù)類型和STD_L0GIC數(shù)據(jù)類型有何區(qū)別?

答:BIT是二進(jìn)制位類型,其取值是一個(gè)1位的二進(jìn)制數(shù),只能

是?;?。

STD_L0GIC是工業(yè)標(biāo)準(zhǔn)邏輯類型,取值有0、1、Z(高阻)、X(未

知)等9種,該數(shù)據(jù)類型由IEEE庫(kù)中的STD_L0GIC_1164程序包定義。

4.端口模式BUFFER與INOUT有何區(qū)別?

答:INOUT是雙向端口,既可以輸入信號(hào),也可以輸出信號(hào);而

BUFFER也可以輸出實(shí)體信號(hào)到外部,但作為輸入時(shí),信號(hào)不是由外

部輸入,而是在實(shí)體內(nèi)由輸出信號(hào)反饋得到,即BUFFER模式的端口

在信號(hào)輸出實(shí)體的同時(shí),也可以被實(shí)體本身讀入。

5.什么是庫(kù)和程序包?常用的庫(kù)和程序包有哪些?

答:在利用VHDL進(jìn)行工程設(shè)計(jì)時(shí),為了提高設(shè)計(jì)效率以及使設(shè)

計(jì)遵循某些統(tǒng)一的語(yǔ)言標(biāo)準(zhǔn)或數(shù)據(jù)格式,有必要將一些有用的信息匯

集在一個(gè)或幾個(gè)庫(kù)(LIBRARY)中,以供VHDL調(diào)用。常用的庫(kù)有IEEE

庫(kù)、STD庫(kù)和WORK庫(kù)。

6.什么是并行語(yǔ)句?什么是順序語(yǔ)句?二者有何區(qū)別?

答:在VHDL中,并行語(yǔ)句有多種語(yǔ)句格式,各種并行語(yǔ)句在結(jié)

構(gòu)體中的執(zhí)行都是同步進(jìn)行的,或者說是并行運(yùn)行的,其執(zhí)行的方式

與書寫的順序無關(guān)。這種并行性是由硬件本身的并行性決定的,即一

旦電路接通電源,它的各部分就會(huì)按照事先設(shè)計(jì)好的方案同時(shí)工作。

并行語(yǔ)句在執(zhí)行時(shí),各并行語(yǔ)句之間可以有信息來往,也可以互為獨(dú)

立、互不相關(guān)。另外,每一并行語(yǔ)句內(nèi)部的語(yǔ)句可以有兩種不同的運(yùn)

行方式,即并行執(zhí)行方式(如塊語(yǔ)句)和順序執(zhí)行方式(如進(jìn)程語(yǔ)句)。

順序語(yǔ)句主要指的是語(yǔ)句的執(zhí)行(指仿真執(zhí)行)順序與其書寫順

序基本一致。但應(yīng)注意的是,這里的順序是對(duì)仿真軟件的運(yùn)行或順應(yīng)

VHDL語(yǔ)法的編程思路而言的,其相應(yīng)的硬件邏輯工作方式未必如此。

順序語(yǔ)句只能出現(xiàn)在進(jìn)程(PROCESS)中,而進(jìn)程本身屬于并行

語(yǔ)句,這就是說在同一設(shè)計(jì)實(shí)體中,所有的進(jìn)程都是并行執(zhí)行的,而

每一個(gè)進(jìn)程內(nèi)部的語(yǔ)句是順序執(zhí)行的。

常用的順序語(yǔ)句有賦值語(yǔ)句、IF語(yǔ)句、CASE語(yǔ)句、LOOP語(yǔ)句和

NULL語(yǔ)句。

7.信號(hào)和變量有何區(qū)別?

答:(1)信號(hào)是全局量,是一個(gè)實(shí)體內(nèi)部各部分之間進(jìn)行通信的

手段;而變量是局部量,只允許定義并作用于進(jìn)程和子程序中。當(dāng)欲

把變量值帶出進(jìn)程時(shí),變量須首先賦給信號(hào),然后由信號(hào)將其值帶出。

(2)信號(hào)的賦值采用符號(hào)“<二",而變量的賦值符號(hào)為“:二”。

(3)通常,變量的值可以傳遞給信號(hào),而信號(hào)的值卻不能傳遞給

變量。

(4)在進(jìn)程中,變量的賦值語(yǔ)句一旦被執(zhí)行,變量值立刻就被賦

予新值,在執(zhí)行下一條語(yǔ)句時(shí),該變量就用新賦的值參與運(yùn)算;而在

進(jìn)程中的信號(hào)賦值語(yǔ)句,該語(yǔ)句雖然已被執(zhí)行,但新的信號(hào)值并沒有

被立即代入,因而在執(zhí)行下一條語(yǔ)句時(shí),仍使用原來的信號(hào)值,直到

進(jìn)程結(jié)束時(shí),信號(hào)才根據(jù)最后一次的賦值被賦予新值。

(5)在結(jié)構(gòu)體的并行語(yǔ)句部分,若同一信號(hào)被賦值一次以上,則

編譯器將給出錯(cuò)誤報(bào)告,指出該信號(hào)出現(xiàn)了兩個(gè)驅(qū)動(dòng)源。在進(jìn)程中,

若同一信號(hào)被賦值一次以上,則編譯器將給出警告,指出只有最后一

次賦值有效,而變量的賦值是立即發(fā)生的。

8.IF語(yǔ)句和CASE語(yǔ)句的使用效果有何不同?

答:與IF語(yǔ)句相比,CASE語(yǔ)句組的程序可讀性比較好,這是因

為它把條件中“表達(dá)式”的所有取值都列了出來,可執(zhí)行條件一目了

然。但對(duì)相同的邏輯功能描述,綜合后,用CASE語(yǔ)句描述比IF描述

耗用更多的硬件資源。因此,對(duì)本身就具有優(yōu)先邏輯關(guān)系的描述(如

優(yōu)先編碼器),采用IF語(yǔ)句比CASE語(yǔ)句更合適。

9.畫出與下例實(shí)體描述相對(duì)應(yīng)的原理圖符號(hào)。

(1)實(shí)體一

ENTITYbuf3sIS

PORT(input:INSTD_LOGIC;

enable:INSTD_LOGIC;

output:OUTSTD_LOGIC);

ENDbuf3s;

BUF3s

INPUTX-INPUTOUTPUT-XOUTPUT

ENRBLEX-ENABLE

(2)實(shí)體二

ENTITYmux21IS

PORT(inO,in1,sel:INSTD_LOGIC;

output:OUTSTD_LOGIC);

ENDmux21;

Muxei

XNOX-INO

INXX—IHXOUTPUT-XOUTPUT

SELASEL

10.修改下列程序中的錯(cuò)誤。

ENTITYcountIS

PORT(elk:INBIT;

q:OUTBIT_VECTOR(7DOWNTO0););

ENDcount;

ARCHITECTUREaOFcount

BEGIN

PROCESS(elk)

IFelk'eventANDclk='1'THEN

q〈=q+1;

ENDPROCESS;

ENDa;

正確的:

ENTITYcountIS

PORT(clk:INBIT;

q:OUTBIT_VECTOR(7DOWNTO0));

ENDcount;

ARCHITECTUREaOFcount

BEGIN

PROCESS(elk)

IFclk,eventANDclk='1'THEN

q<=q+1;

ENDPROCESS;

ENDa;

11.修改下列語(yǔ)句中的錯(cuò)誤。

SIGNALinvalue:ININTEGERRANGE0TO15;

SIGNALoutvalue:OUTSTD_LOGIC;

CASEinvaIueIS

WHEN0=>outvalued'1';

WHEN1=>outvalue<='O';

ENDCASE;

正確的:....

SIGNALinvalue:ININTEGERRANGE0TO15;

SIGNALoutvalue:OUTSTD_LOGIC;

CASEinvaIueIS

WHEN0=>outvalue*'1

WHENothers=>outvaIue<='O';

ENDCASE;

12.圖3-25是一個(gè)含有上升沿觸發(fā)D觸發(fā)器的時(shí)序電路,試寫出

此電路的VHDL程序。

答:1、與非門

Iibraryieee;

useieee.std_Iogic_1164.aII;

entitynandsis

port(a,b:instd_logic;

q:outstd_logic);

endnands;

architectureaofnandsis

begin

q<=not(aandb);

enda;

2、觸發(fā)器

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityd1is

port(d,cIk:instd_logic;

q:outstd_logic);

endd1;

architectureaofd1is

begin

Process(cIk)

begin

ifelk'eventandcIk='1'then

q<=d;

endif;

endprocess;

enda;

3、非門

Iibraryieee;

useieee.std_Iogic_1164.aII;

entitynotsis

port(a:instd_logic;

q:outstd_logic);

endnots;

architectureaofnotsis

begin

q<=nota;

enda;

4、時(shí)序電路

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityd2is

port(cI,cIk:instd_logic;

out1:outstd_logic);

endd2;

architectureaofd2is

componentnands

port(a,b:instd_logic;

q:outstd_logic);

endcomponent;

componentd1

port(d,cIk:instd_logic;

q:outstd_logic);

endcomponent;

componentnots

port(a:instd_logic;

q:outstd_logic);

endcomponent;

signaItempi,temp2:std_logic;

begin

u1:nandsportmap(temp2,cI,tempi);

u2:d1portmap(tempi,cIk,temp2);

u3:notsportmap(temp2,out1);

enda;

單元四常用數(shù)字電路的設(shè)計(jì)

1.試設(shè)計(jì)一個(gè)將芯片內(nèi)的兩個(gè)節(jié)點(diǎn)a和b相接的VHDL程序。

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt1is

port(a:instd_logic;

b:outstd_logic);

endt1;

architectureaoft1is

begin

b<=a;

enda;

2.試設(shè)計(jì)一個(gè)4位并行奇校驗(yàn)電路,設(shè)輸出為p。當(dāng)各輸入信號(hào)

同時(shí)輸入的邏輯'1'的個(gè)數(shù)為奇數(shù)時(shí),輸出p=1,否則p=0。

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt2is

port(a:instd_Iogic_vector(3downto0);

p:outstd_logic);

endt2;

architectureaoft2is

begin

process(a)

begin

ifa="0001"ora="0010"ora="0100"ora="1000"

ora="0111"ora="1011"ora="1101"ora="1110"

then

P<='「;

eIse

P<=T;

endif;

endprocess;

enda;

3.設(shè)計(jì)一個(gè)8位數(shù)補(bǔ)碼生成電路,設(shè)輸入為d[7.,O],輸出為

p[7..0]o

Iibraryieee;

useieee.std_Iogic_1164.all;

useieee.std_Iogic_unsigned.all;

entityt3is

port(d:instd_Iogic_vector(7downto0);

p:outstd_Iogic_vector(7downto0));

endt3;

architectureaoft3is

begin

p<二(notD)+1;

enda;

4.試設(shè)計(jì)一個(gè)5人表決器。(提示:設(shè)置5個(gè)輸入,1個(gè)輸出。

輸入變量為'1'時(shí)表示表決者贊同,反之表示反對(duì)。輸出變量為'1'

時(shí)表示表決通過,通過的條件是5人中至少有3人同意。)

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt4is

port(a,b,c,d,e:instd_logic;

y:outstd_logic);

endt4;

architectureaoft4is

begin

y<二(aandbandc)or(aandcandd)or(aanddande)or

(bandcandd)or(banddande)or(canddande)or

(dandaandb)or(eandbandc);

enda;

5.試用VHDL描述芯片74LS138(3-8線譯碼器)的功能。74LS138

的功能見表472,s1、s2、s3為使能端,a2、a1、aO為地址選擇端,

y[0..7]為輸出端。

表47274LS138功能表

輸入輸出

s1s1+s2a2a1aOy[0..7]

0XXXX11111111

X1XXX11111111

1000001111111

1000110111111

1001011011111

1001111101111

1010011110111

1010111111011

1011011111101

1011111111110

LIBRARYIEEE;

USEIEEE.STD_L0GIC_1164.ALL;

ENTITYdecoder3_8IS

PORT(s1,s2,s3:inbit;

a:INBIT_VECTOR(2DOWNTO0);

y:OUTBIT_VECTOR(7DOWNTO0));

ENDdecoder3_8;

ARCHITECTUREbehOFdecoder3_8IS

BEGIN

process(s1,s2,s3)

begin

ifs1='O'then

y<="111111H";

eIsifs1='1'ors2='1'then

y<="111111H";

eIse

caseais

WHEN"000"=>y<="11111110";

WHEN"00r,=>y<="1111110r,;

WHEN"010"=>y<="11111011";

WHEN"0H"=>y<="111101H";

WHEN"100"=>y<="11101111";

WHEN"10r,=>y<="110111H";

WHEN"110"=>y<="10111111";

WHEN"1H"=>y<="011111H";

endcase;

endif;

endprocess;

ENDbeh;

6.試設(shè)計(jì)一個(gè)4位組合移位器,功能見表4-13,d[3..0]為輸入,

控制位為kz[1..0],輸出為

表4-134位組合移位器功能表

控制位kz[1..0]輸出f[3..0]功能

00d3d2d1d0不移位

01d2d1d0d3循環(huán)左移1位

10d1d0d3d2循環(huán)左移2位

11dOd3d2dl循環(huán)左移3位

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt6is

port(d:instd_Iogic_vector(3downto0);

KZ:instd_Iogic_vector(1downto0);

f:outstd_Iogic_vector(3downto0));

endt6;

architectureaoft6is

signaIq:std_Iogic_vector(3downto0);

begin

process(KZ)

begin

ifKZ="01"then

q(3downto1)<=d(2downto0);

q(0)<=d(3);

elsifKZ="10"then

q(3downto2)<=d(1downto0);

q(1)<=d(3);

q(O)〈=d(2);

elsifKZ="11"then

q(3)<=d(0);

q(0)<=d(1);

q(1)<=d(2);

q⑵<=d(3);

eIse

q<=d;

endif;

endprocess;

f〈二q;

enda;

7.試設(shè)計(jì)一個(gè)6位加法器,用于實(shí)現(xiàn)對(duì)兩個(gè)6位數(shù)的加法運(yùn)算,

其功能見表474。

表4746位加法器功能表

輸入輸出

a[5..0]b[5..0]s[5..0]c

aba+b進(jìn)位

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_logic_unsigned.all;

entityt7is

port(a,b:instd_Iogic_vector(5downto0);

s:outstd_Iogic_vector(5downto0);

c:outstd_logic);

endt7;

architectureaoft7is

signaIm:std_logic_vector(6downto0);

begin

m<=a+('0'&b);

s<=m(5downto0);

c<=m(6);

enda;

8.設(shè)計(jì)一個(gè)具有異步置位/復(fù)位功能的JK觸發(fā)器。功能見表

4-15o

表4T4JK觸發(fā)器功能表

輸入輸出

enaprnclrcIkJKqqb

101XXX10

110XXX01

100XXXXX

111T00不變不變

111T0101

111t1010

111T11翻轉(zhuǎn)翻轉(zhuǎn)

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt8is

port(ena,prn,cIr,cIk,j,k:instd_logic;

q,qb:outstd_logic);

endt8;

architectureaoft8is

signaIm,mb:std_logic;

begin

process(ena,prn,cIr,cIk)

begin

ifprn='O'then

m<=T;

mb<='0';

eIsifcIr=,O'then

m<='O';

mb<='「;

eIsifelk'eventandcIk='1'then

m<二(jand(notm))or((notk)andm);

mb<=notm;

endif;

endprocess;

q<=m;

qb<=mb;

enda;

9.設(shè)計(jì)一個(gè)RS觸發(fā)器,功能見表4-15。

表475RS觸發(fā)器功能表

輸入輸出

RSQ

00不變

011

100

11不定

Iibraryieee;

useieee.std_Iogic_1164.aII;

entityt9is

port(cIk,R,s:instd_logic;

q:outstd_logic);

endt9;

architectureaoft9is

signaIm:std_logic;

begin

process(cIk)

begin

ifelk'eventandcIk='1'then

ifr='O'ands='0'then

m<=m;

eIsifr='O'ands='1'then

m<=T;

eIsifr='1'ands='O'then

m<='0';

elseNULL;

endif;

endif;

endprocess;

q<=m;

enda;

10.試設(shè)計(jì)一個(gè)4位二進(jìn)制數(shù)的可逆計(jì)數(shù)器,時(shí)鐘端為elk,計(jì)

數(shù)輸出端為q[3..O],計(jì)數(shù)方向控制端為dire。當(dāng)dire=1時(shí)做加法

計(jì)數(shù),當(dāng)dire=0時(shí)做減法計(jì)數(shù)。

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_Iogic_unsigned.all;

entityt10is

port(cIk,dire:instd_logic;

q:outstd_Iogic_vector(3downto0));

endt10;

architectureaoft10is

signaIm:std_logic_vector(3downto0);

begin

process(cIk,dire)

begin

ifelk'eventandcIk='1'then

ifdire='1"then

m<=m+1;

eIse

m<=m-1;

endif;

endif;

endprocess;

q<=m;

enda;

11.用VHDL描述同步十進(jìn)制加法計(jì)數(shù)器芯片74LS160的功能,時(shí)

鐘端為elk,清零端為clr,預(yù)置數(shù)輸入端為d[3..0],預(yù)置數(shù)控制

端為Id,功能控制端為ep和et,計(jì)數(shù)輸出端為q[3..O],進(jìn)位輸出

端為c。74LS160功能見表4-16。

表47674LS160功能表

cIkclrIdepet工作狀態(tài)

X0XXX置零

T10XX預(yù)置數(shù)

X1101保持

X11X0保持(c=0)

X1111計(jì)數(shù)

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_logic_unsigned.all;

entityt11is

port(cIk,cIr,Id,ep,et:instd_logic;

d:instd_Iogic_vector(3downto0);

q:outstd_Iogic_vector(3downto0);

c:outstd_logic);

endt11;

architectureaoft11is

signaIm:std_logic_vector(3downto0);

begin

process(cIr,cIk)

begin

ifcIr='O'then

m<="0000";

eIsifelk'eventandcIk='1'then

ifld='O'then

m<=d;

eIsifep='1'andet='1'then

m<=m+1;

eIsifep='O'andet='1'then

m<=m;

eIsifet='O'then

m<=m;

c<='0';

endif;

endif;

endprocess;

q<=m;

enda;

12.試設(shè)計(jì)一個(gè)60進(jìn)制的同步加法計(jì)數(shù)器,時(shí)鐘端為elk,計(jì)數(shù)

輸出端為q。

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_Iogic_unsigned.all;

entityt12is

port(elk:instd_logic;

q:outstd_Iogic_vector(5downto0));

endt12;

architectureaoft12is

signaIm:std_logic_vector(5downto0);

begin

process(cIk)

begin

ifelk'eventandcIk='1'then

ifrTF"1110U"then

m<="000000";

eIse

m<=m+1;

endif;

endif;

endprocess;

q〈二m;

enda;

13.試設(shè)計(jì)一個(gè)128進(jìn)制的同步加法計(jì)數(shù)器,時(shí)鐘端為elk,計(jì)

數(shù)輸出端為q0

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_Iogic_unsigned.all;

entityt13is

port(elk:instd_logic;

q2,q1,qO:outstd_Iogic_vector(3downto0));

endt13;

architectureaoft13is

signaIb,s,g:std_Iogic_vector(3downto0);

begin

process(cIk)

begin

ifelk'eventandcIk='1'then

ifb>"0000"then

ifs>"0001"then

ifg>"0111"then

g<="0000";

b<="0000";

s<="0000";

eIse

g<=g+1;

endif;

eIse

ifg="1001"then

s<=s+1;

g<="0000";

eIse

s<=S;

g〈=g+1;

endif;

endif;

eIse

ifs="1001"then

b<=b+1;

s<="0000";

eIse

ifg="1001"then

s<=s+1;

g<="0000";

else

s<=S;

g<=g+1;

endif;

endif;

endif;

endif;

endprocess;

q2<=b;qK=s;qO<=g;

enda;

單元五數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例

1.設(shè)計(jì)一個(gè)8X8發(fā)光點(diǎn)矩陣逐點(diǎn)掃描顯示控制電路,要求如下。

(1)光點(diǎn)從屏左上角像素點(diǎn)向右開始逐點(diǎn)逐行掃描,終止于右下

角像素點(diǎn),然后重復(fù)上述過程;

(2)掃描一幀所需時(shí)間為13so

Iibraryieee;

useieee.std_Iogic_1164.aII;

useieee.std_logic_unsigned.all;

entitydzis

port(elk:instd_logic;

row,lie:outstd_Iogic_vector(7downto0));

enddz;

architectureaofdzis

signaIcountr,countI:std_Iogic_vector(2downto0);

signaIc:std_logic;

begin

p1:process(cIk)

begin

ifelk'eventandcIk='1'then

ifcountl="111"then

c<=T;

countI<="000";

eIse

c<='0';

countI<=countI+1;

endif;

endif;

endprocessp1;

p2:process(c)

begin

ifc'eventandc='1'then

countr<=countr+1;

endif;

endprocessp2;

p3:process(countI,countr)

begin

casecountris

when"000"=>row<="01111111";一第一行顯示

ifcountl="000"then

Iie<="10000000";一第一歹“

eIsifcountI="001"then

Iie<="01000000";一第二列

eIsifcountl="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountI="100"then

Iie<="00001000";

eIsifcountI="101"then

Iie<="00000100";

eIsifcountI="110"then

Iie<="00000010";

eIsifcountI="111"then

Iie<="00000001";

endif;

when"001"=>row<="10111111";一第二行顯示

ifcountl="OOO"then

Iie<="10000000";

eIsifcountI="001"then

Iie<="01000000";

eIsifcountl="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountl="100"then

Iie<="00001000";

eIsifcountI="101"then

Iie<="00000100";

elsifcountl="110"then

Iie<="00000010";

elsifcountI="111"then

Iie<="00000001";

endif;

when"010"=>row<="11011111";

ifcountl="000"then

Iie<="10000000";

elsifcountI="001"then

Iie<="01000000";

eIsifcountI="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountl="100"then

Iie<="00001000";

eIsifcountI="101"then

Iie<="00000100";

eIsifcountl="110"then

Iie<="00000010";

eIsifcountI="111"then

Iie<="00000001";

endif;

when"0H"=>row<="11101111";

ifcountI="000"then

Iie<="10000000";

eIsifcountI="001"then

Iie<="01000000";

eIsifcountl="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountl="100"then

Iie<="00001000";

eIsifcountl="101"then

Iie<="00000100";

eIsifcountl="110"then

Iie<="00000010";

eIsifcountI="111"then

Iie<="00000001";

endif;

when"100"=>row<="11110111";

ifcountl="000"then

Iie<="10000000";

eIsifcountI="001"then

Iie<="01000000";

eIsifcountl="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000":

eIsifcountl="100"then

Iie<="00001000";

eIsifcountl="101"then

Iie<="00000100";

eIsifcountI="110"then

Iie<="00000010";

eIsifcountl="111"then

Iie<="00000001";

endif;

when"10r,=>row<="11111011";

ifcountl="000"then

Iie<="10000000";

eIsifcountI="001"then

Iie<="01000000";

eIsifcountI="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountl="100"then

Iie<="00001000";

eIsifcountI="101"then

Iie<="00000100";

eIsifcountl="110"then

Iie<="00000010";

eIsifcountl="111"then

Iie<="00000001";

endif;

when"110"=>row<="11111101";

ifcountl="000"then

Iie<="10000000";

eIsifcountI="001"then

Iie<="01000000";

eIsifcountI="010"then

Iie<="00100000";

eIsifcountI="011"then

Iie<="00010000";

eIsifcountl="100"then

Iie<="00001000";

eIsifcountI="101"then

Iie<="00000100";

eIsifcountI="110"then

Iie<="00000010";

eIsifcountl="111"then

Iie<="00000001";

endif;

whenothers=>row<="11111110";

ifcountl="000"then

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論