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

下載本文檔

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

文檔簡介

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

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

答:EDA(ElectronicDesignAutomation,電子設(shè)計自動化)

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

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

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

合能力。

2.可編程邏輯器件有什么特點?有哪些可編程資源?

答:可編程邏輯器件的主要特點

1.縮短研制周期

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

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

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

LELABPIAEAB

答:LE:邏輯單元

LAB:邏輯陣列塊

PIA:可編程連線陣列

EAB:嵌入式陣列塊

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

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

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

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

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

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

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

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

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

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

設(shè)計校驗和編程下載4個步驟。

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

答:1)原理圖輸入

原理圖是圖形化的表達方式,它是利用軟件中所提供的元件符號

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

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

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

2)硬件描述語言輸入

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

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

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

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

優(yōu)化的電路。

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

答:1)SynpIify

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

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

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

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

以進行功能級仿真。

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

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

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

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

2)Synopsys

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

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

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

滿足的設(shè)計要求,如最大延時、最大功耗、最大扇出數(shù)目、驅(qū)動強度

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

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

佳。

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

庫中包含許多現(xiàn)成的實現(xiàn)方案,調(diào)用非常方便。正是因為這些突出的

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

3)ispDesignEXPERT

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

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

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

真與時序分析、編程下載等。

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

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

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

能全面。

4)MAX+plusll

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

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

5)QuartusII

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

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

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

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

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

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

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

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

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

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

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

2)映射

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

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

3)布局和布線

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

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

各功能塊之間和反饋信號的連接。

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

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

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

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

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

答:

1.為本項工程設(shè)計建立文件夾

2.建立工程

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

4.檢查設(shè)計

5.鎖定引腳并編譯

6.功能仿真

7.下載

單元三硬件描述語言

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

答:一般的硬件描述語言可在三個層次上進行電路描述,其層次

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

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

描述。因此,與VerilogHDL相比,VHDL是一種高級描述語言,適用

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

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

一種低級的描述語言,最適合于描述門級電路,易于控制電路資源。

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

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

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

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

本表7r方式。

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

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

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

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

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

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

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

是。或1。

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

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

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

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

BUFFER也可以輸出實體信號到外部,但作為輸入時,信號不是由外

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

在信號輸出實體的同時,也可以被實體本身讀入。

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

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

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

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

庫、STD庫和WORK庫。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

常用的順序語句有賦值語句、IF語句、CASE語句、LOOP語句和

NULL語句。

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

答:(1)信號是全局量,是一個實體內(nèi)部各部分之間進行通信的

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

把變量值帶出進程時,變量須首先賦給信號,然后由信號將其值帶出。

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

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

變量。

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

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

進程中的信號賦值語句,該語句雖然已被執(zhí)行,但新的信號值并沒有

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

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

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

編譯器將給出錯誤報告,指出該信號出現(xiàn)了兩個驅(qū)動源。在進程中,

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

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

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

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

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

然。但對相同的邏輯功能描述,綜合后,用CASE語句描述比IF描述

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

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

9.畫出與下例實體描述相對應(yīng)的原理圖符號。

(1)實體一

ENTITYbuf3sIS

PORT(input:INSTD_LOGIC;

enable:INSTD_LOGIC;

output:OUTSTD_LOGIC);

ENDbuf3s;

BUF3s

INPUTX-INPUTOUTPUT-XOUTPUT

ENRBLEX-ENABLE

(2)實體二

ENTITYmux21IS

PORT(inO,in1,sel:INSTD_LOGIC;

output:OUTSTD_LOGIC);

ENDmux21;

Muxei

XNOX-INO

INXX—IHXOUTPUT-XOUTPUT

SELASEL

10.修改下列程序中的錯誤。

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.修改下列語句中的錯誤。

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是一個含有上升沿觸發(fā)D觸發(fā)器的時序電路,試寫出

此電路的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、時序電路

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è)計

1.試設(shè)計一個將芯片內(nèi)的兩個節(jié)點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è)計一個4位并行奇校驗電路,設(shè)輸出為p。當(dāng)各輸入信號

同時輸入的邏輯'1'的個數(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è)計一個8位數(shù)補碼生成電路,設(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è)計一個5人表決器。(提示:設(shè)置5個輸入,1個輸出。

輸入變量為'1'時表示表決者贊同,反之表示反對。輸出變量為'1'

時表示表決通過,通過的條件是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è)計一個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è)計一個6位加法器,用于實現(xiàn)對兩個6位數(shù)的加法運算,

其功能見表474。

表4746位加法器功能表

輸入輸出

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

aba+b進位

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è)計一個具有異步置位/復(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è)計一個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è)計一個4位二進制數(shù)的可逆計數(shù)器,時鐘端為elk,計

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

計數(shù),當(dāng)dire=0時做減法計數(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描述同步十進制加法計數(shù)器芯片74LS160的功能,時

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

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

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

表47674LS160功能表

cIkclrIdepet工作狀態(tài)

X0XXX置零

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

X1101保持

X11X0保持(c=0)

X1111計數(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è)計一個60進制的同步加法計數(shù)器,時鐘端為elk,計數(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è)計一個128進制的同步加法計數(shù)器,時鐘端為elk,計

數(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è)計實例

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

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

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

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

最新文檔

評論

0/150

提交評論