EDA技術實用教程課后答案-潘松版_第1頁
EDA技術實用教程課后答案-潘松版_第2頁
EDA技術實用教程課后答案-潘松版_第3頁
EDA技術實用教程課后答案-潘松版_第4頁
EDA技術實用教程課后答案-潘松版_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

/-—---—---——--————--Page1-—---——----—-—-—--—----第一章1-1EDA技術與ASIC設計和FPGA開發(fā)有什么關系?P3~4

答:利用EDA技術進行電子系統(tǒng)設計的最后目標是完成專用集成電路ASIC的設計和實現(xiàn);FPGA和CPLD是實現(xiàn)

這一途徑的主流器件。FPGA和CPLD通常也被稱為可編程專用IC,或可編程ASIC。FPGA和CPLD的應用是EDA技術?

有機融合軟硬件電子設計技術、SoC(片上系統(tǒng))和ASIC設計,以及對自動設計與自動實現(xiàn)最典型的詮釋。

1-2與軟件描述語言相比,VHDL有什么特點?P6

答:編譯器將軟件程序翻譯成基于某種特定CPU的機器代碼,這種代碼僅限于這種CPU而不能移植,并且機器?

代碼不代表硬件結構,更不能改變CPU的硬件結構,只能被動地為其特定的硬件電路結構所利用.綜合器將VHDL?程序轉化的目標是底層的電路結構網表文件,這種滿足VHDL設計程序功能描述的電路結構,不依賴于任何特定硬?

件環(huán)境;具有相對獨立性。綜合器在將VHDL(硬件描述語言)表達的電路功能轉化成具體的電路結構網表過程中,具?

有明顯的能動性和創(chuàng)造性,它不是機械的一一對應式的“翻譯”,而是根據(jù)設計庫、工藝庫以及預先設置的各類約

束條件,選擇最優(yōu)的方式完成電路結構的設計.

l-3什么是綜合?有哪些類型?綜合在電子設計自動化中的地位是什么?P5

什么是綜合?答:在電子設計領域中綜合的概念可以表示為:將用行為和功能層次表達的電子系統(tǒng)轉換為低層

次的便于具體實現(xiàn)的模塊組合裝配的過程。

有哪些類型?答:(1)從自然語言轉換到VHDL語言算法表示,即自然語言綜合。(2)從算法表示轉換到寄存器

?傳輸級(RegisterTransportLevel,RTL),即從行為域到結構域的綜合,即行為綜合.(3)從RTL級表示轉換到邏

輯門(包括觸發(fā)器)的表示,即邏輯綜合.(4)從邏輯門表示轉換到版圖表示(ASIC設計),或轉換到FPGA的配置網表?文件,可稱為版圖綜合或結構綜合。

?綜合在電子設計自動化中的地位是什么?答:是核心地位(見圖1-3).綜合器具有更復雜的工作環(huán)境,綜合器?

在接受VHDL程序并準備對其綜合前,必須獲得與最終實現(xiàn)設計電路硬件特征相關的工藝庫信息,以及獲得優(yōu)化綜

?合的諸多約束條件信息;根據(jù)工藝庫和約束條件信息,將VHDL程序轉化成電路實現(xiàn)的相關信息.??1—4在EDA技術中,自頂向下的設計方法的重要意義是什么?P7~10

答:在EDA技術應用中,自頂向下的設計方法,就是在整個設計流程中各設計環(huán)節(jié)逐步求精的過程。?

1-5IP在EDA技術的應用和發(fā)展中的意義是什么?P11~12

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

第二章??2-1敘述EDA的FPGA/CPLD設計流程。P13~16

?答:1。設計輸入(原理圖/HDL文本編輯);2。綜合;3.適配;4。時序仿真與功能仿真;5.編程下載;6.硬件測試。

?2-2IP是什么?IP與EDA技術的關系是什么?P24~26

?IP是什么?答:IP是知識產權核或知識產權模塊,用于ASIC或FPGA/CPLD中的預先設計好的電路功能模塊。

IP與EDA技術的關系是什么?答:IP在EDA技術開發(fā)中具有十分重要的地位;與EDA技術的關系分有軟IP、??固IP、硬IP:軟IP是用VHDL等硬件描述語言描述的功能塊,并不涉及用什么具體電路元件實現(xiàn)這些功能;軟IP

?通常是以硬件描述語言HDL源文件的形式出現(xiàn)。固IP是完成了綜合的功能塊,具有較大的設計深度,以網表文件

?的形式提交客戶使用.硬IP提供設計的最終階段產品:掩模.?

2—3敘述ASIC的設計方法.P18~19

答:ASIC設計方法,按版圖結構及制造方法分有半定制(Semi-custom)和全定制(Full-custom)兩種實現(xiàn)方法。?

全定制方法是一種基于晶體管級的,手工設計版圖的制造方法.

半定制法是一種約束性設計方式,約束的目的是簡化設計,縮短設計周期,降低設計成本,提高設計正確率.

?半定制法按邏輯實現(xiàn)的方式不同,可再分為門陣列法、標準單元法和可編程邏輯器件法.

2-4FPGA/CPLD在ASIC設計中有什么用途?P16,18

答:FPGA/CPLD在ASIC設計中,屬于可編程ASIC的邏輯器件;使設計效率大為提高,上市的時間大為縮短。?

2-5簡述在基于FPGA/CPLD的EDA設計流程中所涉及的EDA工具,及其在整個流程中的作用.P19~23?

答:基于FPGA/CPLD的EDA設計流程中所涉及的EDA工具有:設計輸入編輯器(作用:接受不同的設計輸?—-—---------—--———--Page2--——-—-----—--—---—入表達方式,如原理圖輸入方式、狀態(tài)圖輸入方式、波形輸入方式以及HDL的文本輸入方式。);HDL綜合器(作用:?

HDL綜合器根據(jù)工藝庫和約束條件信息,將設計輸入編輯器提供的信息轉化為目標器件硬件結構細節(jié)的信息,并在

數(shù)字電路設計技術、化簡優(yōu)化算法以及計算機軟件等復雜結體進行優(yōu)化處理);仿真器(作用:行為模型的表達、

電子系統(tǒng)的建模、邏輯電路的驗證及門級系統(tǒng)的測試);適配器(作用:完成目標系統(tǒng)在器件上的布局和布線);下?

載器(作用:把設計結果信息下載到對應的實際器件,實現(xiàn)硬件設計)。

?第三章?

3-1OLMC(輸出邏輯宏單元)有何功能?說明GAL是怎樣實現(xiàn)可編程組合電路與時序電路的。P34~36

OLMC有何功能?答:OLMC單元設有多種組態(tài),可配置成專用組合輸出、專用輸入、組合輸出雙向口、寄存器

輸出、寄存器輸出雙向口等.

說明GAL是怎樣實現(xiàn)可編程組合電路與時序電路的?答:GAL(通用陣列邏輯器件)是通過對其中的OLMC

(輸出邏輯宏單元)的編程和三種模式配置(寄存器模式、復合模式、簡單模式),實現(xiàn)組合電路與時序電路設計

的。?

3—2什么是基于乘積項的可編程邏輯結構?P33~34,40

答:GAL、CPLD之類都是基于乘積項的可編程結構;即包含有可編程與陣列和固定的或陣列的PAL(可編程陣??列邏輯)器件構成.

?3-3什么是基于查找表的可編程邏輯結構?P40~41?

答:FPGA(現(xiàn)場可編程門陣列)是基于查找表的可編程邏輯結構.

3-4FPGA系列器件中的LAB有何作用?P43~45

答:FPGA(Cyclone/CycloneII)系列器件主要由邏輯陣列塊LAB、嵌入式存儲器塊(EAB)、I/O單元、嵌入??式硬件乘法器和PLL等模塊構成;其中LAB(邏輯陣列塊)由一系列相鄰的LE(邏輯單元)構成的;FPGA可編程?

資源主要來自邏輯陣列塊LAB。?

3-5與傳統(tǒng)的測試技術相比,邊界掃描技術有何優(yōu)點?P47~50

答:使用BST(邊界掃描測試)規(guī)范測試,不必使用物理探針,可在器件正常工作時在系統(tǒng)捕獲測量的功能數(shù)

據(jù)??朔鹘y(tǒng)的外探針測試法和“針床”夾具測試法來無法對IC內部節(jié)點無法測試的難題。

?3-6解釋編程與配置這兩個概念。P58

?答:編程:基于電可擦除存儲單元的EEPROM或Flash技術。CPLD一股使用此技術進行編程。CPLD被編程后改??變了電可擦除存儲單元中的信息,掉電后可保存。電可擦除編程工藝的優(yōu)點是編程后信息不會因掉電而丟失,但編

程次數(shù)有限,編程的速度不快。?配置:基于SRAM查找表的編程單元.編程信息是保存在SRAM中的,SRAM在掉電后編程信息立即丟失,在??下次上電后,還需要重新載入編程信息。大部分FPGA采用該種編程工藝。該類器件的編程一般稱為配置。對于SRAM?

型FPGA來說,配置次數(shù)無限,且速度快;在加電時可隨時更改邏輯;下載信息的保密性也不如電可擦除的編程。?

3-7請參閱相關資料,并回答問題:按本章給出的歸類方式,將基于乘積項的可編程邏輯結構的PLD器件歸類為

CPLD;將基于查找表的可編程邏輯結構的PLD器什歸類為FPGA,那么,APEX系列屬于什么類型PLD器件?MAX

II系列又屬于什么類型的PLD器件?為什么?P54~56?

答:APEX(AdvancedLogicElementMatrix)系列屬于FPGA類型PLD器件;編程信息存于SRAM中。MAXII

系列屬于CPLD類型的PLD器件;編程信息存于EEPROM中。?

第四章

?4-1:畫出與下例實體描述對應的原理圖符號元件:

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

PORT(input:INSTD_LOGIC;--輸入端?enable:INSTD_LOGIC;—-使能端?

output:OUTSTD_LOGIC);—-輸出端?

ENDbuf3x;?———-—-—--—----—-——-Page3——------—--—----—--—ENTITYmux21IS—-實體2:2選1多路選擇器

?PORT(in0,in1,sel:INSTD_LOGIC;

?output:OUTSTD_LOGIC);

?4-1。答案

4-2.圖3-30所示的是4選1多路選擇器,試分別用IF_THEN語句和CASE語句的表達方式寫出此電路的VHDL程序.

選擇控制的信號s1和s0的數(shù)據(jù)類型為STD_LOGIC_VECTOR;當s1='0',s0='0';s1='0’,s0='1';s1='1',s0='0'?

和s1=’1’,s0=’1'分別執(zhí)行y〈=a、y<=b、y<=c、y<=d。

?4-2。答案

LIBRARYIEEE;?

USEIEEE.STD_LOGIC_1164。ALL;

ENTITYMUX41IS??PORT(s:INSTD_LOGIC_VECTOR(1DOWNTO0);--輸入選擇信號?

a,b,c,d:INSTD_LOGIC;—-輸入信號

?y:OUTSTD_LOGIC);--輸出端

ENDENTITY;?ARCHITECTUREARTOFMUX41IS

BEGIN??PROCESS(s)?

BEGIN??IF(S="00")THENy<=a;?ELSIF(S="01”)THENy<=b;

?ELSIF(S="10")THENy<=c;

ELSIF(S="11”)THENy<=d;??ELSEy〈=NULL;

?ENDIF;

EDNPROCESS;

ENDART;

?LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;??ENTITYMUX41IS

PORT(s:INSTD_LOGIC_VECTOR(1DOWNTO0);—-輸入選擇信號?

a,b,c,d:INSTD_LOGIC;—-輸入信號

?y:OUTSTD_LOGIC);—-輸出端

?ENDMUX41;?

ARCHITECTUREARTOFMUX41IS

BEGIN

PROCESS(s)??BEGIN??CASEsIS

-—-—---—-—-——--—-—-——-—Page4-—----—-———-----—-—--——WHEN“00"=>y<=a;

?WHEN“01”=>y<=b;

?WHEN“10”=>y<=c;

WHEN“11”=>y<=d;?

WHENOTHERS=〉NULL;?ENDCASE;?

ENDPROCESS;

ENDART;

4-3.圖3—31所示的是雙2選1多路選擇器構成的電路MUXK,對于其中MUX21A,當s='0'和'1'時,分別有y<=’a'

和y<=’b'。試在一個結構體中用兩個進程來表達此電路,每個進程中用CASE語句描述一個2選1多路選擇器MUX21A.

?4—3。答案??LIBRARYIEEE;??USEIEEE。STD_LOGIC_1164。ALL;?ENTITYMUX221IS

?PORT(a1,a2,a3:INSTD_LOGIC_VECTOR(1DOWNTO0);--輸入信號

s0,s1:INSTD_LOGIC;?

outy:OUTSTD_LOGIC);——輸出端

ENDENTITY;?ARCHITECTUREONEOFMUX221IS??SIGNALtmp:STD_LOGIC;?

BEGIN

?PR01:PROCESS(s0)

BEGIN?IFs0=”0”THENtmp<=a2;??ELSEtmp<=a3;??ENDIF;

ENDPROCESS;

PR02:PROCESS(s1)

BEGIN

IFs1=”0”THENouty<=a1;

ELSEouty<=tmp;?

ENDIF;??ENDPROCESS;?ENDARCHITECTUREONE;??ENDCASE;

4-4。下圖是一個含有上升沿觸發(fā)的D觸發(fā)器的時序電路,試寫出此電路的VHDL設計文件.??4—4.答案?LIBRARYIEEE;??USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMULTIIS??PORT(CL:INSTD_LOGIC;—-輸入選擇信號

?CLK0:INSTD_LOGIC;--輸入信號

OUT1:OUTSTD_LOGIC);—-輸出端

ENDENTITY;?

ARCHITECTUREONEOFMULTIIS?

SIGNALQ:STD_LOGIC;

—---—--————--Page5-----———————-—-—----—--BEGIN?

PR01:PROCESS(CLK0)?

BEGIN

?IFCLK‘EVENTANDCLK=’1’??THENQ<=NOT(CLORQ);ELSE?ENDIF;?

ENDPROCESS;??PR02:PROCESS(CLK0)

?BEGIN?

OUT1〈=Q;?ENDPROCESS;

?ENDARCHITECTUREONE;

ENDPROCESS;

?4-5。給出1位全減器的VHDL描述。要求:

?(1)首先設計1位半減器,然后用例化語句將它們連接起來,圖3—32中h_suber是半減器,diff是輸出差,

s_out是借位輸出,sub_in是借位輸入。

?(2)以1位全減器為基本硬件,構成串行借位的8位減法器,要求用例化語句來完成此項設計(減法運算是x–??y—sun_in=diffr)?

4—5.答案

?底層文件1:or2a.VHD實現(xiàn)或門操作?LIBRARYIEEE;

?USEIEEE。STD_LOGIC_1164.ALL;

?USEIEEE.STD_LOGIC_UNSIGNED.ALL;

?ENTITYor2aIS

?PORT(a,b:INSTD_LOGIC;?c:OUTSTD_LOGIC);

?ENDENTITYor2a;

?ARCHITECTUREoneOFor2aIS

?BEGIN??c<=aORb;?ENDARCHITECTUREone;

底層文件2:h_subber.VHD實現(xiàn)一位半減器??LIBRARYIEEE;

?USEIEEE。STD_LOGIC_1164.ALL;

USEIEEE。STD_LOGIC_UNSIGNED。ALL;?ENTITYh_subberIS

?PORT(x,y:INSTD_LOGIC;?

diff,s_out::OUTSTD_LOGIC);??ENDENTITYh_subber;

?ARCHITECTUREONEOFh_subberIS

SIGNALxyz:STD_LOGIC_VECTOR(1DOWNTO0);??BEGIN??xyz〈=x&y;??PROCESS(xyz)

BEGIN?CASExyzIS

WHEN"00"=〉diff〈='0';s_out<=’0';

WHEN"01”=>diff〈=’1’;s_out〈=’1’;??WHEN"10"=〉diff<='1';s_out<=’0’;

---—---—--——-—--—-Page6—---——-—-—--—-----——WHEN”11"=〉diff<='0';s_out〈=’0';??WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

?ENDARCHITECTUREONE;

頂層文件:f_subber。VHD實現(xiàn)一位全減器?

LIBRARYIEEE;

?USEIEEE.STD_LOGIC_1164。ALL;

?USEIEEE.STD_LOGIC_UNSIGNED。ALL;?

ENTITYf_subberIS?PORT(x,y,sub_in:INSTD_LOGIC;

?diffr,sub_out:OUTSTD_LOGIC);

?ENDENTITYf_subber;

?ARCHITECTUREONEOFf_subberIS

?COMPONENTh_subber

PORT(x,y:INSTD_LOGIC;??diff,S_out:OUTSTD_LOGIC);??ENDCOMPONENT;?

COMPONENTor2a

PORT(a,b:INSTD_LOGIC;

c:OUTSTD_LOGIC);

?ENDCOMPONENT;??SIGNALd,e,f:STD_LOGIC;?

BEGIN

u1:h_subberPORTMAP(x=〉x,y=>y,diff=>d,s_out=>e);?u2:h_subberPORTMAP(x=〉d,y=〉sub_in,diff=>diffr,s_out=>f);

?u3:or2aPORTMAP(a=>f,b=>e,c=>sub_out);?

ENDARCHITECTUREONE;

ENDARCHITECTUREART;??4-6。根據(jù)下圖,寫出頂層文件MX3256.VHD的VHDL設計文件。

4—6.答案?

MAX3256頂層文件??LIBRARYIEEE;

USEIEEE。STD_LOGIC_1164。ALL;?USEIEEE。STD_LOGIC_UNSIGNED。ALL;

ENTITYMAX3256IS?

PORT(INA,INB,INCK:INSTD_LOGIC;?

INC:INSTD_LOGIC;?

E,OUT:OUTSTD_LOGIC);?ENDENTITYMAX3256;??ARCHITECTUREONEOFMAX3256IS?

COMPONENTLK35—-調用LK35聲明語句

PORT(A1,A2:INSTD_LOGIC;

?CLK:INSTD_LOGIC;

Q1,Q2:OUTSTD_LOGIC);

?ENDCOMPONENT;

COMPONENTD——調用D觸發(fā)器聲明語句

PORT(D,C:INSTD_LOGIC;?—---——------——--—-—--——Page7—--—---—-———-—-——--—-—-CLK:INSTD_LOGIC;

?Q:OUTSTD_LOGIC);??ENDCOMPONENT;

COMPONENTMUX21-—調用二選一選擇器聲明語句??PORT(B,A:INSTD_LOGIC;

S:INSTD_LOGIC;

C:OUTSTD_LOGIC);?

ENDCOMPONENT;??SIGNALAA,BB,CC,DD:STD_LOGIC;

BEGIN

u1:LK35PORTMAP(A1=〉INA,A2=>INB,CLK=INCK,Q1=〉AA,Q2=〉BB);

u2:DPORTMAP(D=>BB;CLK=〉INCK,C=>INC,Q=>CC);?

u3:LK35PORTMAP(A1=>BB,A2=>CC,CLK=INCK,Q1=〉DD,Q2=〉OUT1);

?u4:MUX21PORTMAP(B=>AA,A=〉DD,S=>BB,C=〉E);

?ENDARCHITECTUREONE;?設計含有異步清零和計數(shù)使能的16位二進制加減可控計數(shù)器。

?4-7.答案:?

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE。STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT16IS?

PORT(CLK,RST,EN:INSTD_LOGIC;

?CHOOSE:INBIT;

?SETDATA:BUFFERINTEGERRANCE65535DOWNTO0;?

COUT:BUFFERINTEGERRANCE65535DOWNTO0);?ENDCNT16;??ARCHITECTUREONEOFCNT16IS

BEGIN

?PROCESS(CLK,RST,SDATA)??VARIABLEQI:STD_LOGIC_VECTOR(65535DOWNTO0);

BEGIN??IFRST=’1’THEN—-計數(shù)器異步復位?

QI:=(OTHERS=〉'0');?

ELSIFSET=’1'THEN-—計數(shù)器一步置位

?QI:=SETDATA;?ELSIFCLK'EVENTANDCLK=’1'THEN--檢測時鐘上升沿

?IFEN=’1’THEN–檢測是否允許計數(shù)?

IFCHOOSE=’1'THEN--選擇加法計數(shù)

QI:=QI+1;-—計數(shù)器加一??ELSEQI=QI-1;—-計數(shù)器加一

ENDIF;?

ENDIF;??ENDIF;??COUT<=QI;—-將計數(shù)值向端口輸出

ENDPROCESS;?ENDONE;

---———-—----—--—-------Page8—----—--—----—-——-——第五章??5-1歸納利用QuartusII進行VHDL文本輸入設計的流程:從文件輸入一直到SignalTapII測試.P95~P115

答:1建立工作庫文件夾和編輯設計文件;2創(chuàng)建工程;3編譯前設置;4全程編譯;5時序仿真;6引?

腳鎖定;7配置文件下載;8打開SignalTapII編輯窗口;9調入SignalTapII的待測信號;10SignalTapII

?參數(shù)設置;11SignalTapII參數(shù)設置文件存盤;12帶有SignalTapII測試信息的編譯下載;13啟動SignalTap

II進行采樣與分析;14SignalTapII的其他設置和控制方法。??5。6?

5.7

----—-——----——------Page9—--—-——--—-—-——----—---5.8

5.9

----—--—--—--———----—-—Page10--—-——-—-—————--———-5。10

-—--——---———---—-—--Page11-—-—--——-—-—---————--—-5.12

5。13?

5.14

—--——-——-—----—-—-—Page12-————----—--——--—------第六章?

6-1什么是固有延時?什么是慣性延時?P150~151??答:固有延時(InertialDelay)也稱為慣性延時,固有延時的主要物理機制是分布電容效應。?6—2δ是什么?在VHDL中,δ有什么用處?P152

?δ是什么?答:在VHDL仿真和綜合器中,默認的固有延時量(它在數(shù)學上是一個無窮小量),被稱為δ延時。

?在VHDL中,δ有什么用處?答:在VHDL信號賦值中未給出固有延時情況下,VHDL仿真器和綜合器將自動為??系統(tǒng)中的信號賦值配置一足夠小而又能滿足邏輯排序的延時量δ;使并行語句和順序語句中的并列賦值邏輯得以正

?確執(zhí)行.?6—4說明信號和變量的功能特點,以及應用上的異同點。P128~P129??答:變量:變量是一個局部量,只能在進程和子程序中使用。變量不能將信息帶出對它做出定義的當前結構。??變量的賦值是一種理想化的數(shù)據(jù)傳輸,是立即發(fā)生的,不存在任何延時行為.變量的主要作用是在進程中作為臨時

?的數(shù)據(jù)存儲單元。?

信號:信號是描述硬件系統(tǒng)的基本數(shù)據(jù)對象,其性質類似于連接線;可作為設計實體中并行語句模塊間的?信息交流通道。信號不但可以容納當前值,也可以保持歷史值;與觸發(fā)器的記憶功能有很好的對應關系。?

6-5在VHDL設計中,給時序電路清零(復位)有兩種力方法,它們是什么?

?解:設Q定義成信號,一種方法:Q〈=“000…000”;其中“000…000”反映出信號Q的位寬度。第二種方

法:Q〈=(OTHERS=>‘0’);其中OTHERS=〉‘0’不需要給出信號Q的位寬度,即可對Q清零。

6-6哪一種復位方法必須將復位信號放在敏感信號表中?給出這兩種電路的VHDL描述。

解:邊沿觸發(fā)復位信號要將復位信號放在進程的敏感信號表中.

?(1)邊沿觸發(fā)復位信號

?…….

ARCHITECTUREbhv0FDFF3IS??SIGNALQQ:STD_LOGIC;?BEGIN

?PROCESS(RST)??BEGIN??IFRST'EVENTANDRST=‘1’THEN

——----—-—-——---————---—Page13——--—--——--—-——-—QQ〈=(OTHERS=>‘0’);

?ENDIF;?

ENDPROCESS;??Q1〈=QQ;

?END;

………

?(2)電平觸發(fā)復位信號

?……。?

ARCHITECTUREbhv0FDFF3IS??SIGNALQQ:STD_LOGIC;?BEGIN

?PROCESS(CLK)

BEGIN

?IFRST=‘1’THEN?

QQ〈=(OTHERS=>‘0’);?ENDIF;

ENDPROCESS;

?Q1<=QQ;

END;?

………

6-7什么是重載函數(shù)?重載算符有何用處?如何調用重載算符函數(shù)???答:(1)什么是重載函數(shù)?根據(jù)操作對象變換處理功能。??(2)重載算符有何用處?用于兩個不同類型的操作數(shù)據(jù)自動轉換成同種數(shù)據(jù)類型,并進行運算處理。

?(3)如何調用重載算符函數(shù)?采用隱式方式調用,無需事先聲明。?

6—8判斷下面三個程序中是否有錯誤,若有則指出錯誤所在,并給出完整程序。?程序1:??SignalA,EN:std_logic;

?…?

Process(A,EN)

?VariableB:std_logic;

Begin??ifEN=lthenB<=A;endif;—-將“B〈=A”改成“B:=A”??endprocess;

?程序2:

?Architectureoneofsampleis?variablea,b,c:integer;

begin

?c<=a+b;—-將“c〈=a+b”改成“c:=a+b”

?end;

程序3:

libraryieee;

?useieee.std_logic_1164。all;

entitymux21is??PORT(a,b:instd_logic;sel:instd_loglc;c:outstd_logle;);--將“;)”改成“)”??endsam2;——將“sam2”改成“entitymux21”?architectureoneofmux2lis

?begin??—-增加“process(a,b,sel)begin"?

ifsel='0'thenc:=a;elsec:=b;endif;-—應改成“ifsel='0'thenc〈=a;elsec〈=b;endif;”?-——----—-—---—--——--—-—-———-----—-——----——--—-增加“endprocess;”

endtwo;—-將“two”改成“architectureone”

?7-2LPM_ROM、LPM_RAM、LPM_FIFO等模塊與FPGA中嵌入的EAB、ESB、M4K有怎樣的聯(lián)系?

答:ACEXlK系列為EAB;APEX20K系列為ESB;Cyclone系列為M4K?

第八章??8-1仿照例8-1,將例8-4單進程用兩個進程,即一個時序進程,一個組合進程表達出來.

?——解:【例8-4】的改寫如下:

?LIBRARYIEEE;?

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMOORE1IS

PORT(DATAIN:INSTD_LOGIC_VECTOR(1DOWNTO0);

?CLK,RST:INSTD_LOGIC;?

Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));

?ENDMOORE1;?

ARCHITECTUREbehavOFMOORE1IS?TYPEST_TYPEIS(ST0,ST1,ST2,ST3,ST4);??SIGNALC_ST,N_ST:ST_TYPE;?

BEGIN?

REG:PROCESS(CLK,RST)

?BEGIN

IFRST=’1'THENC_ST<=ST0;——Q<="0000”;

ELSIFCLK'EVENTANDCLK=’1'THEN

C_ST〈=N_ST;

ENDIF;?

ENDPROCESSREG;?COM:PROCESS(C_ST,DATAIN)?

BEGIN??CASEC_STIS

WHENST0=>IFDATAIN=”10"THENN_ST<=ST1;

?ELSEN_ST〈=ST0;ENDIF;?Q<="1001";

WHENST1=>IFDATAIN="11”THENN_ST<=ST2;

?ELSEN_ST<=ST1;ENDIF;

Q<="0101";

?WHENST2=>IFDATAIN="01"THENN_ST<=ST3;

ELSEN_ST〈=ST0;ENDIF;?

Q<="1100";??WHENST3=>IFDATAIN="00”THENN_ST<=ST4;??ELSEN_ST<=ST2;ENDIF;

Q〈="0010";

WHENST4=〉IFDATAIN="11"THENN_ST〈=ST0;

ELSEN_ST<=ST3;ENDIF;?

Q<="1001";

?WHENOTHERS=>N_ST<=ST0;?-——--—------—-———--—---Page15—------——---——----ENDCASE;

?ENDPROCESSCOM;?

ENDbehav;

?8-2為確保例8-5(2進程Mealy型狀態(tài)機)的狀態(tài)機輸出信號沒有毛刺,試用例8—4的方式構成一個單進程狀態(tài),?使輸出信號得到可靠鎖存,在相同輸入信號條件下,給出兩程序的仿真波形。?

—-解:【例8—5】改寫如下:??LIBRARYIEEE;?

USEIEEE.STD_LOGIC_1164。ALL;

?ENTITYMEALY1IS

PORT(CLK,DATAIN,RESET:INSTD_LOGIC;??Q:OUTSTD_LOGIC_VECTOR(4DOWNTO0));

ENDMEALY1;??ARCHITECTUREbehavOFMEALY1IS

TYPEstatesIS(st0,st1,st2,st3,st4);?SIGNALSTX:states;

BEGIN??PROCESS(CLK,RESET)—-單一進程?

BEGIN??IFRESET='1'THENSTX<=ST0;?ELSIFCLK'EVENTANDCLK=’1'THEN??CASESTXIS?

WHENst0=>IFDATAIN='1'THENSTX〈=st1;ENDIF;

IFDATAIN=’1’THENQ〈="10000”;?

ELSEQ<="01010";ENDIF;?WHENst1=>IFDATAIN='0’THENSTX〈=st2;ENDIF;

?IFDATAIN='0'THENQ〈=”10111";??ELSEQ<=”10100";ENDIF;

?WHENst2=>IFDATAIN=’1'THENSTX<=st3;ENDIF;??IFDATAIN='1'THENQ<=”10101”;?ELSEQ<=”10011";ENDIF;??WHENst3=>IFDATAIN='0'THENSTX〈=st4;ENDIF;?

IFDATAIN=’0'THENQ<="11011";

ELSEQ〈="01001”;ENDIF;??WHENst4=>IFDATAIN='1'THENSTX<=st0;ENDIF;?IFDATAIN='1’THENQ<=”11101";??ELSEQ<=”01101";ENDIF;?

WHENOTHERS=>STX〈=st0;Q〈="00000";??ENDCASE;

ENDIF;?ENDPROCESS;

ENDbehav;

-—-—--—-—-——-———-—-————Page16-—-------——-—---—-—-圖8-6控制ADC0809采樣狀態(tài)圖??—-【例8—2】根據(jù)圖8—6狀態(tài)圖,采用Moore型狀態(tài)機,設計ADC0809采樣控制器。??LIBRARYIEEE;

?USEIEEE.STD_LOGIC_1164.ALL;

ENTITYADCINTIS

PORT(D:INSTD_LOGIC_VECTOR(7DOWNTO0);-—來自0809轉換好的8位數(shù)據(jù)?

CLK:INSTD_LOGIC;--狀態(tài)機工作時鐘

?EOC:INSTD_LOGIC;-—轉換狀態(tài)指示,低電平表示正在轉換

ALE:OUTSTD_LOGIC;——8個模擬信號通道地址鎖存信號??START:OUTSTD_LOGIC;--轉換開始信號

OE:OUTSTD_LOGIC;—-數(shù)據(jù)輸出三態(tài)控制信號?

ADDA:OUTSTD_LOGIC;——信號通道最低位控制信號

?LOCK0:OUTSTD_LOGIC;--觀察數(shù)據(jù)鎖存時鐘

Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));—-8位數(shù)據(jù)輸出

ENDADCINT;?ARCHITECTUREbehavOFADCINTIS

?TYPEstatesIS(st0,st1,St2,st3,st4);-—定義各狀態(tài)子類型

?SIGNALcurrent_state,next_state:states:=st0;

SIGNALREGL:STD_LOGIC_VECTOR(7DOWNTO0);?

SIGNALLOCK:STD_LOGIC;-—轉換后數(shù)據(jù)輸出鎖存時鐘信號?BEGIN

?ADDA〈=’1';—-當ADDA<='0’,模擬信號進入通道IN0;當ADDA<=’1’,則進入通道INI??Q<=REGL;LOCK0<=LOCK;?

COM:PROCESS(current_state,EOC)BEGIN——規(guī)定各狀態(tài)轉換方式?

CASEcurrent_stateIS

WHENst0=〉ALE<=’0';START<=’0’;LOCK〈='0';OE<='0';??next_state〈=st1;-—0809初始化

?WHENst1=〉ALE<=’1';START〈=’1';LOCK〈='0';OE<='0';?

next_state<=st2;—-啟動采樣

WHENst2=>ALE<=’0’;START<=’0';LOCK<='0’;OE〈=’0’;

IF(EOC='1')THENnext_state〈=st3;--EOC=1表明轉換結束

ELSEnext_state<=st2;ENDIF;—-轉換未結束,繼續(xù)等待?

WHENst3=>ALE<='0';START<='0';LOCK〈='0';OE<=’1’;??next_stat(yī)e<=st4;—-開啟OE,輸出轉換好的數(shù)據(jù)?———-——-—---————-—------Page17—-——--——-—-———-————WHENst4=>ALE〈='0';START<='0';LOCK〈='1’;OE<='1';next_state<=st0;

WHENOTHERS=〉next_state〈=st0;

ENDCASE;??ENDPROCESSCOM;??REG:PROCESS(CLK)

BEGIN?

IF(CLK'EVENTANDCLK=’1’)THENcurrent_state<=next_stat(yī)e;ENDIF;?

ENDPROCESSREG;--由信號current_state將當前狀態(tài)值帶出此進程:REG

?LATCH1:PROCESS(LOCK)——此進程中,在LOCK的上升沿,將轉換好的數(shù)據(jù)鎖入

?BEGIN?IFLOCK=’1’ANDLOCK'EVENTTHENREGL〈=D;ENDIF;?

ENDPROCESSLATCH1;

ENDbehav;?

8-5在不改變原代碼功能的條件下用兩種方法改寫例8-2,使其輸出的控制信號(ALE、START、OE、LOCK)沒有毛?刺。方法1:將輸出信號鎖存后輸出;方法2:使用狀態(tài)碼直接輸出型狀態(tài)機,并比較這三種狀態(tài)機的特點.

?-—解:"【例8-2】根據(jù)圖8-6狀態(tài)圖,采用Moore型狀態(tài)機,設計ADC0809采樣控制器”方法1(將輸出控制

信號鎖存后輸出)的VHDL程序代碼如下:??LIBRARYIEEE;??USEIEEE.STD_LOGIC_1164.ALL;?ENTITYADCINTIS?

PORT(D:INSTD_LOGIC_VECTOR(7DOWNTO0);-—來自0809轉換好的8位數(shù)據(jù)

?CLK:INSTD_LOGIC;--狀態(tài)機工作時鐘

?EOC:INSTD_LOGIC;-—轉換狀態(tài)指示,低電平表示正在轉換

ALE:OUTSTD_LOGIC;--8個模擬信號通道地址鎖存信號

START:OUTSTD_LOGIC;—-轉換開始信號??OE:OUTSTD_LOGIC;—-數(shù)據(jù)輸出三態(tài)控制信號

ADDA:OUTSTD_LOGIC;——信號通道最低位控制信號?

LOCK0:OUTSTD_LOGIC;-—觀察數(shù)據(jù)鎖存時鐘??Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));—-8位數(shù)據(jù)輸出?ENDADCINT;??ARCHITECTUREbehavOFADCINTIS?

TYPEstatesIS(st0,st1,St2,st3,st4);--定義各狀態(tài)子類型

?SIGNALcurrent_state,next_state:stat(yī)es:=st0;??SIGNALREGL:STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALLOCK:STD_LOGIC;—-轉換后數(shù)據(jù)輸出鎖存時鐘信號

?SIGNALALE0:STD_LOGIC;--8個模擬信號通道地址鎖存信號

?SIGNALSTART0:STD_LOGIC;--轉換開始信號

?SIGNALOE0:STD_LOGIC;--數(shù)據(jù)輸出三態(tài)控制信號?

BEGIN

ADDA〈='1';--當ADDA<=’0’,模擬信號進入通道IN0;當ADDA〈='1',則進入通道INI

Q<=REGL;—-LOCK0〈=LOCK;

?COM:PROCESS(current_state,EOC,CLK)BEGIN-—規(guī)定各狀態(tài)轉換方式

CASEcurrent_stateIS?

WHENst0=>ALE0<='0’;START0〈='0';LOCK<='0';OE0<=’0’;?next_state<=st1;—-0809初始化??WHENst1=〉ALE0<='1’;START0〈=’1';LOCK<='0';OE0〈='0';?

next_state〈=st2;-—啟動采樣?

WHENst2=〉ALE0〈=’0’;START0<='0';LOCK<=’0';OE0〈='0';

---———---——-Page18—---——-—--—------—-—---IF(EOC='1')THENnext_state〈=st3;-—EOC=1表明轉換結束??ELSEnext_state<=st2;ENDIF;--轉換未結束,繼續(xù)等待?

WHENst3=>ALE0<='0';START0<=’0’;LOCK〈='0’;OE0<=’1’;

next_state〈=st4;--開啟OE,輸出轉換好的數(shù)據(jù)?

WHENst4=>ALE0〈=’0’;START0〈='0';LOCK<='1’;OE0<='1';next_st

溫馨提示

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

評論

0/150

提交評論