• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. EDA技術(shù)與應(yīng)用課后習(xí)題答案

        時(shí)間:2024-09-27 04:10:45 EDA技術(shù)培訓(xùn) 我要投稿

        EDA技術(shù)與應(yīng)用課后習(xí)題答案大全

          《EDA技術(shù)與應(yīng)用》為普通高等教育“十一五”國家級規(guī)劃教材,下面yjbys小編為大家提供的是本書的課后習(xí)題答案,希望能幫助到大家!

          主要內(nèi)容包括:EDA技術(shù);電路設(shè)計(jì)仿真軟件PSpice、Muhisim8的使用方法;可編程邏輯器件的工作原理、分類及應(yīng)用;硬件描述語言Verilog HDL的語法要點(diǎn)與設(shè)計(jì)實(shí)例;數(shù)字集成軟件Quartus n、仿真軟件ModelSim、綜合軟件SynplifyPro等的使用方法及設(shè)計(jì)流程;EDA技術(shù)綜合設(shè)計(jì)實(shí)例。 本書內(nèi)容全面,注重基礎(chǔ),理論聯(lián)系實(shí)際,突出實(shí)用性,并使用大量圖表說明問題,編寫簡明精煉、針對性強(qiáng),設(shè)計(jì)實(shí)例都通過了編譯,設(shè)計(jì)文件和參數(shù)選擇都經(jīng)過驗(yàn)證,便于讀者對內(nèi)容的理解和掌握。

          第一章

          1-1 EDA技術(shù)與ASIC設(shè)計(jì)和FPGA開發(fā)有什么關(guān)系? P3~4

          答:利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的最后目標(biāo)是完成專用集成電路ASIC的設(shè)計(jì)和實(shí)現(xiàn);FPGA和CPLD是實(shí)現(xiàn)這一途徑的主流器件。FPGA和CPLD通常也被稱為可編程專用IC,或可編程ASIC。FPGA和CPLD的應(yīng)用是EDA技術(shù)有機(jī)融合軟硬件電子設(shè)計(jì)技術(shù)、SoC(片上系統(tǒng))和ASIC設(shè)計(jì),以及對自動設(shè)計(jì)與自動實(shí)現(xiàn)最典型的詮釋。

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

          答:編譯器將軟件程序翻譯成基于某種特定CPU的機(jī)器代碼,這種代碼僅限于這種CPU而不能移植,并且機(jī)器代碼不代表硬件結(jié)構(gòu),更不能改變CPU的硬件結(jié)構(gòu),只能被動地為其特定的硬件電路結(jié)構(gòu)所利用。綜合器將VHDL程序轉(zhuǎn)化的目標(biāo)是底層的電路結(jié)構(gòu)網(wǎng)表文件,這種滿足VHDL設(shè)計(jì)程序功能描述的電路結(jié)構(gòu),不依賴于任何特定硬件環(huán)境;具有相對獨(dú)立性。綜合器在將VHDL(硬件描述語言)表達(dá)的電路功能轉(zhuǎn)化成具體的電路結(jié)構(gòu)網(wǎng)表過程中,具有明顯的能動性和創(chuàng)造性,它不是機(jī)械的一一對應(yīng)式的“翻譯”,而是根據(jù)設(shè)計(jì)庫、工藝庫以及預(yù)先設(shè)置的各類約束條件,選擇最優(yōu)的方式完成電路結(jié)構(gòu)的設(shè)計(jì)。

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

          什么是綜合? 答:在電子設(shè)計(jì)領(lǐng)域中綜合的概念可以表示為:將用行為和功能層次表達(dá)的電子系統(tǒng)轉(zhuǎn)換為低層次的便于具體實(shí)現(xiàn)的模塊組合裝配的過程。

          有哪些類型? 答:(1)從自然語言轉(zhuǎn)換到VHDL語言算法表示,即自然語言綜合。(2)從算法表示轉(zhuǎn)換到寄存器傳輸級(RegisterTransport Level,RTL),即從行為域到結(jié)構(gòu)域的綜合,即行為綜合。(3)從RTL級表示轉(zhuǎn)換到邏輯門(包括觸發(fā)器)的表示,即邏輯綜合。(4)從邏輯門表示轉(zhuǎn)換到版圖表示(ASIC設(shè)計(jì)),或轉(zhuǎn)換到FPGA的配置網(wǎng)表文件,可稱為版圖綜合或結(jié)構(gòu)綜合。

          綜合在電子設(shè)計(jì)自動化中的地位是什么? 答:是核心地位(見圖1-3)。綜合器具有更復(fù)雜的工作環(huán)境,綜合器在接受VHDL程序并準(zhǔn)備對其綜合前,必須獲得與最終實(shí)現(xiàn)設(shè)計(jì)電路硬件特征相關(guān)的工藝庫信息,以及獲得優(yōu)化綜合的諸多約束條件信息;根據(jù)工藝庫和約束條件信息,將VHDL程序轉(zhuǎn)化成電路實(shí)現(xiàn)的相關(guān)信息。

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

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

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

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

          第二章

          2-1 敘述EDA的FPGA/CPLD設(shè)計(jì)流程。 P13~16

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

          2-2 IP是什么?IP與EDA技術(shù)的關(guān)系是什么? P24~26

          IP是什么? 答:IP是知識產(chǎn)權(quán)核或知識產(chǎn)權(quán)模塊,用于ASIC或FPGA/CPLD中的預(yù)先設(shè)計(jì)好的電路功能模塊。

          IP與EDA技術(shù)的關(guān)系是什么? 答:IP在EDA技術(shù)開發(fā)中具有十分重要的地位;與EDA技術(shù)的關(guān)系分有軟IP、固IP、硬IP:軟IP是用VHDL等硬件描述語言描述的功能塊,并不涉及用什么具體電路元件實(shí)現(xiàn)這些功能;軟IP通常是以硬件描述語言HDL源文件的形式出現(xiàn)。固IP是完成了綜合的功能塊,具有較大的設(shè)計(jì)深度,以網(wǎng)表文件的形式提交客戶使用。硬IP提供設(shè)計(jì)的最終階段產(chǎn)品:掩模。

          2-3 敘述ASIC的設(shè)計(jì)方法。 P18~19

          答:ASIC設(shè)計(jì)方法,按版圖結(jié)構(gòu)及制造方法分有半定制(Semi-custom)和全定制(Full-custom)兩種實(shí)現(xiàn)方法。

          全定制方法是一種基于晶體管級的,手工設(shè)計(jì)版圖的制造方法。

          半定制法是一種約束性設(shè)計(jì)方式,約束的目的是簡化設(shè)計(jì),縮短設(shè)計(jì)周期,降低設(shè)計(jì)成本,提高設(shè)計(jì)正確率。半定制法按邏輯實(shí)現(xiàn)的方式不同,可再分為門陣列法、標(biāo)準(zhǔn)單元法和可編程邏輯器件法。

          2-4 FPGA/CPLD在ASIC設(shè)計(jì)中有什么用途? P16,18

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

          2-5 簡述在基于FPGA/CPLD的EDA設(shè)計(jì)流程中所涉及的EDA工具,及其在整個(gè)流程中的作用。 P19~23

          答:基于FPGA/CPLD的EDA設(shè)計(jì)流程中所涉及的EDA工具有:設(shè)計(jì)輸入編輯器(作用:接受不同的設(shè)計(jì)輸入表達(dá)方式,如原理圖輸入方式、狀態(tài)圖輸入方式、波形輸入方式以及HDL的文本輸入方式。);HDL綜合器(作用:HDL綜合器根據(jù)工藝庫和約束條件信息,將設(shè)計(jì)輸入編輯器提供的信息轉(zhuǎn)化為目標(biāo)器件硬件結(jié)構(gòu)細(xì)節(jié)的信息,并在數(shù)字電路設(shè)計(jì)技術(shù)、化簡優(yōu)化算法以及計(jì)算機(jī)軟件等復(fù)雜結(jié)體進(jìn)行優(yōu)化處理);仿真器(作用:行為模型的表達(dá)、電子系統(tǒng)的建模、邏輯電路的驗(yàn)證及門級系統(tǒng)的測試);適配器(作用:完成目標(biāo)系統(tǒng)在器件上的布局和布線);下載器(作用:把設(shè)計(jì)結(jié)果信息下載到對應(yīng)的實(shí)際器件,實(shí)現(xiàn)硬件設(shè)計(jì))。

          第三章

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

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

          說明GAL是怎樣實(shí)現(xiàn)可編程組合電路與時(shí)序電路的? 答:GAL(通用陣列邏輯器件)是通過對其中的OLMC(輸出邏輯宏單元)的編程和三種模式配置(寄存器模式、復(fù)合模式、簡單模式),實(shí)現(xiàn)組合電路與時(shí)序電路設(shè)計(jì)的。

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

          答:GAL、CPLD之類都是基于乘積項(xiàng)的可編程結(jié)構(gòu);即包含有可編程與陣列和固定的或陣列的PAL(可編程陣列邏輯)器件構(gòu)成。

          3-3 什么是基于查找表的可編程邏輯結(jié)構(gòu)? P40~41

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

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

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

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

          答:使用BST(邊界掃描測試)規(guī)范測試,不必使用物理探針,可在器件正常工作時(shí)在系統(tǒng)捕獲測量的功能數(shù)據(jù)。克服傳統(tǒng)的外探針測試法和“針床”夾具測試法來無法對IC內(nèi)部節(jié)點(diǎn)無法測試的難題。

          3-6 解釋編程與配置這兩個(gè)概念。 P58

          答:編程:基于電可擦除存儲單元的EEPROM或Flash技術(shù)。CPLD一股使用此技術(shù)進(jìn)行編程。CPLD被編程后改變了電可擦除存儲單元中的信息,掉電后可保存。電可擦除編程工藝的優(yōu)點(diǎn)是編程后信息不會因掉電而丟失,但編程次數(shù)有限,編程的速度不快。

          配置:基于SRAM查找表的編程單元。編程信息是保存在SRAM中的,SRAM在掉電后編程信息立即丟失,在下次上電后,還需要重新載入編程信息。大部分FPGA采用該種編程工藝。該類器件的編程一般稱為配置。對于SRAM型FPGA來說,配置次數(shù)無限,且速度快;在加電時(shí)可隨時(shí)更改邏輯;下載信息的保密性也不如電可擦除的編程。

          3-7 請參閱相關(guān)資料,并回答問題:按本章給出的歸類方式,將基于乘積項(xiàng)的可編程邏輯結(jié)構(gòu)的PLD器件歸類為CPLD;將基于查找表的可編程邏輯結(jié)構(gòu)的PLD器什歸類為FPGA,那么,APEX系列屬于什么類型PLD器件? MAX II系列又屬于什么類型的PLD器件?為什么? P54~56

          答:APEX(Advanced Logic Element Matrix)系列屬于FPGA類型PLD器件;編程信息存于SRAM中。MAX II系列屬于CPLD類型的PLD器件;編程信息存于EEPROM中。

          第四章

          4-1:畫出與下例實(shí)體描述對應(yīng)的原理圖符號元件:

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

          PORT (input : IN STD_LOGIC ; -- 輸入端

          enable : IN STD_LOGIC ; -- 使能端

          output : OUT STD_LOGIC ) ; -- 輸出端

          END buf3x ;

          ENTITY mux21 IS --實(shí)體2: 2選1多路選擇器

          PORT (in0, in1, sel : IN STD_LOGIC;

          output : OUT STD_LOGIC);

          4-1.答案

          4-2. 圖3-30所示的是4選1多路選擇器,試分別用IF_THEN語句和CASE語句的表達(dá)方式寫出此電路的VHDL程序。選擇控制的信號s1和s0的數(shù)據(jù)類型為STD_LOGIC_VECTOR;當(dāng)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.答案

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          ENTITY MUX41 IS

          PORT(s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --輸入選擇信號

          a,b,c,d:IN STD_LOGIC; --輸入信號

          y:OUT STD_LOGIC);--輸出端

          END ENTITY;

          ARCHITECTURE ART OF MUX41 IS

          BEGIN

          PROCESS(s)

          BEGIN

          IF (S="00") THEN y<=a;

          ELSIF (S="01") TH EN y<=b;

          ELSIF (S="10") TH EN y<=c;

          ELSIF (S="11") TH EN y<=d;

          ELSE y<=NULL;

          END IF;

          EDN PROCESS;

          END ART;

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          ENTITY MUX41 IS

          PORT(s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --輸入選擇信號

          a,b,c,d:IN STD_LOGIC; --輸入信號

          y:OUT STD_LOGIC);--輸出端

          END MUX41;

          ARCHITECTURE ART OF MUX41 IS

          BEGIN

          PROCESS(s)

          BEGIN

          CASE s IS

          WHEN “00” => y<=a;

          WHEN “01” => y<=b;

          WHEN “10” => y<=c;

          WHEN “11” => y<=d;

          WHEN OTHERS =>NULL;

          END CASE;

          END PROCESS;

          END ART;

          4-3. 圖3-31所示的是雙2選1多路選擇器構(gòu)成的電路MUXK,對于其中MUX21A,當(dāng)s='0'和'1'時(shí),分別有y<='a'和y<='b'。試在一個(gè)結(jié)構(gòu)體中用兩個(gè)進(jìn)程來表達(dá)此電路,每個(gè)進(jìn)程中用CASE語句描述一個(gè)2選1多路選擇器MUX21A。

          4-3.答案

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          ENTITY MUX221 IS

          PORT(a1,a2,a3:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --輸入信號

          s0,s1:IN STD_LOGIC;

          outy:OUT STD_LOGIC);--輸出端

          END ENTITY;

          ARCHITECTURE ONE OF MUX221 IS

          SIGNAL tmp : STD_LOGIC;

          BEGIN

          PR01:PROCESS(s0)

          BEGIN

          IF s0=”0” THEN tmp<=a2;

          ELSE tmp<=a3;

          END IF;

          END PROCESS;

          PR02:PROCESS(s1)

          BEGIN

          IF s1=”0” THEN outy<=a1;

          ELSE outy<=tmp;

          END IF;

          END PROCESS;

          END ARCHITECTURE ONE;

          END CASE;

          4-4.下圖是一個(gè)含有上升沿觸發(fā)的D觸發(fā)器的時(shí)序電路,試寫出此電路的VHDL設(shè)計(jì)文件。

          4-4.答案

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          ENTITY MULTI IS

          PORT(CL:IN STD_LOGIC; --輸入選擇信號

          CLK0:IN STD_LOGIC; --輸入信號

          OUT1:OUT STD_LOGIC);--輸出端

          END ENTITY;

          ARCHITECTURE ONE OF MULTI IS

          SIGNAL Q : STD_LOGIC;

          BEGIN

          PR01: PROCESS(CLK0)

          BEGIN

          IF CLK ‘EVENT AND CLK=’1’

          THEN Q<=NOT(CL OR Q);ELSE

          END IF;

          END PROCESS;

          PR02: PROCESS(CLK0)

          BEGIN

          OUT1<=Q;

          END PROCESS;

          END ARCHITECTURE ONE;

          END PROCESS;

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

          (1) 首先設(shè)計(jì)1位半減器,然后用例化語句將它們連接起來,圖3-32中h_suber是半減器,diff是輸出差,s_out是借位輸出,sub_in是借位輸入。

          (2) 以1位全減器為基本硬件,構(gòu)成串行借位的8位減法器,要求用例化語句來完成此項(xiàng)設(shè)計(jì)(減法運(yùn)算是 x – y - sun_in = diffr)

          4-5.答案

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

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          USE IEEE.STD_LOGIC_UNSIGNED.ALL;

          ENTITY or2a IS

          PORT(a,b:IN STD_LOGIC;

          c:OUT STD_LOGIC);

          END ENTITY or2a;

          ARCHITECTURE one OF or2a IS

          BEGIN

          c <= a OR b;

          END ARCHITECTURE one;

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

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          USE IEEE.STD_LOGIC_UNSIGNED.ALL;

          ENTITY h_subber IS

          PORT(x,y:IN STD_LOGIC;

          diff,s_out::OUT STD_LOGIC);

          END ENTITY h_subber;

          ARCHITECTURE ONE OF h_subber IS

          SIGNAL xyz: STD_LOGIC_VECTOR(1 DOWNTO 0);

          BEGIN

          xyz <= x & y;

          PROCESS(xyz)

          BEGIN

          CASE xyz IS

          WHEN "00" => diff<='0';s_out<='0';

          WHEN "01" => diff<='1';s_out<='1';

          WHEN "10" => diff<='1';s_out<='0';

          WHEN "11" => diff<='0';s_out<='0';

          WHEN OTHERS => NULL;

          END CASE;

          END PROCESS;

          END ARCHITECTURE ONE;

          頂層文件:f_subber.VHD實(shí)現(xiàn)一位全減器

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          USE IEEE.STD_LOGIC_UNSIGNED.ALL;

          ENTITY f_subber IS

          PORT(x,y,sub_in:IN STD_LOGIC;

          diffr,sub_out:OUT STD_LOGIC);

          END ENTITY f_subber;

          ARCHITECTURE ONE OF f_subber IS

          COMPONENT h_subber

          PORT(x,y:IN STD_LOGIC;

          diff,S_out:OUT STD_LOGIC);

          END COMPONENT;

          COMPONENT or2a

          PORT(a,b:IN STD_LOGIC;

          c:OUT STD_LOGIC);

          END COMPONENT;

          SIGNAL d,e,f: STD_LOGIC;

          BEGIN

          u1: h_subber PORT MAP(x=>x,y=>y,diff=>d,s_out=>e);

          u2: h_subber PORT MAP(x=>d,y=>sub_in,diff=>diffr,s_out=>f);

          u3: or2a PORT MAP(a=>f,b=>e,c=>sub_out);

          END ARCHITECTURE ONE;

          END ARCHITECTURE ART;

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

          4-6.答案

          MAX3256頂層文件

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          USE IEEE.STD_LOGIC_UNSIGNED.ALL;

          ENTITY MAX3256 IS

          PORT (INA,INB,INCK: IN STD_LOGIC;

          INC: IN STD_LOGIC;

          E,OUT:OUT STD_LOGIC);

          END ENTITY MAX3256;

          ARCHITECTURE ONE OF MAX3256 IS

          COMPONENT LK35 --調(diào)用LK35聲明語句

          PORT(A1,A2:IN STD_LOGIC;

          CLK:IN STD_LOGIC;

          Q1,Q2:OUT STD_LOGIC);

          END COMPONENT;

          COMPONENT D --調(diào)用D觸發(fā)器聲明語句

          PORT(D,C:IN STD_LOGIC;

          CLK:IN STD_LOGIC;

          Q:OUT STD_LOGIC);

          END COMPONENT;

          COMPONENT MUX21--調(diào)用二選一選擇器聲明語句

          PORT(B,A:IN STD_LOGIC;

          S:IN STD_LOGIC;

          C:OUT STD_LOGIC);

          END COMPONENT;

          SIGNAL AA,BB,CC,DD: STD_LOGIC;

          BEGIN

          u1: LK35 PORT MAP(A1=>INA,A2=>INB,CLK=INCK, Q1=>AA,Q2=>BB);

          u2: D PORT MAP(D=>BB;CLK=>INCK,C=>INC,Q=>CC);

          u3: LK35 PORT MAP (A1=>BB,A2=>CC,CLK=INCK, Q1=>DD,Q2=>OUT1);

          u4: MUX21 PORT MAP (B=>AA,A=>DD,S=>BB,C=>E);

          END ARCHITECTURE ONE;

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

          4-7.答案:

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          USE IEEE.STD_LOGIC_UNSIGNED.ALL;

          ENTITY CNT16 IS

          PORT(CLK,RST,EN:IN STD_LOGIC;

          CHOOSE:IN BIT;

          SETDATA:BUFFER INTEGER RANCE 65535 DOWNTO 0;

          COUT: BUFFER INTEGER RANCE 65535 DOWNTO 0);

          END CNT16;

          ARCHITECTURE ONE OF CNT16 IS

          BEGIN

          PROCESS(CLK,RST,SDATA)

          VARIABLE QI:STD_LOGIC_VECTOR(65535 DOWNTO 0);

          BEGIN

          IF RST='1' THEN --計(jì)數(shù)器異步復(fù)位

          QI:=(OTHERS=>'0');

          ELSIF SET=’1’ THEN--計(jì)數(shù)器一步置位

          QI:=SETDATA;

          ELSIF CLK'EVENT AND CLK='1' THEN --檢測時(shí)鐘上升沿

          IF EN=’1’ THEN –檢測是否允許計(jì)數(shù)

          IF CHOOSE=’1’ THEN --選擇加法計(jì)數(shù)

          QI:=QI+1; --計(jì)數(shù)器加一

          ELSE QI=QI-1; --計(jì)數(shù)器加一

          END IF;

          END IF;

          END IF;

          COUT<=QI;--將計(jì)數(shù)值向端口輸出

          END PROCESS;

          END ONE;

          第五章

          5-1 歸納利用Quartus II進(jìn)行VHDL文本輸入設(shè)計(jì)的流程:從文件輸入一直到SignalTap II測試。P95~P115

          答:1 建立工作庫文件夾和編輯設(shè)計(jì)文件;2 創(chuàng)建工程;3 編譯前設(shè)置;4 全程編譯;5 時(shí)序仿真;6 引腳鎖定;7 配置文件下載;8 打開SignalTap II編輯窗口;9 調(diào)入SignalTap II的待測信號;10 SignalTap II參數(shù)設(shè)置;11 SignalTap II參數(shù)設(shè)置文件存盤;12 帶有SignalTap II測試信息的編譯下載;13 啟動SignalTap II進(jìn)行采樣與分析;14 SignalTap II的其他設(shè)置和控制方法。

          第六章

          6-1 什么是固有延時(shí)?什么是慣性延時(shí)?P150~151

          答:固有延時(shí)(Inertial Delay)也稱為慣性延時(shí),固有延時(shí)的主要物理機(jī)制是分布電容效應(yīng)。

          6-2 δ是什么?在VHDL中,δ有什么用處?P152

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

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

          6-4 說明信號和變量的功能特點(diǎn),以及應(yīng)用上的異同點(diǎn)。P128~P129

          答:變量:變量是一個(gè)局部量,只能在進(jìn)程和子程序中使用。變量不能將信息帶出對它做出定義的當(dāng)前結(jié)構(gòu)。變量的賦值是一種理想化的數(shù)據(jù)傳輸,是立即發(fā)生的,不存在任何延時(shí)行為。變量的主要作用是在進(jìn)程中作為臨時(shí)的數(shù)據(jù)存儲單元。

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

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

          解:設(shè)Q定義成信號,一種方法:Q<=“000…000”; 其中“000…000”反映出信號Q的位寬度。第二種方法:Q<=(OTHERS=>‘0’);其中OTHERS=>‘0’不需要給出信號Q的位寬度,即可對Q清零。

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

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

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

          …………………….

          ARCHITECTURE bhv 0F DFF3 IS

          SIGNAL QQ:STD_LOGIC;

          BEGIN

          PROCESS(RST)

          BEGIN

          IF RST’EVENT AND RST=‘1' THEN

          QQ<=(Others=>‘0’);

          END IF;

          END PROCESS;

          Q1<=QQ;

          END;

          ………………………

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

          …………………….

          ARCHITECTURE bhv 0F DFF3 IS

          SIGNAL QQ:STD_LOGIC;

          BEGIN

          PROCESS(CLK)

          BEGIN

          IF RST=‘1' THEN

          QQ<=(Others=>‘0’);

          END IF;

          END PROCESS;

          Q1<=QQ;

          END;

          ………………………

          6-7 什么是重載函數(shù)?重載算符有何用處?如何調(diào)用重載算符函數(shù)?

          答:(1)什么是重載函數(shù)? 根據(jù)操作對象變換處理功能。

          (2)重載算符有何用處? 用于兩個(gè)不同類型的操作數(shù)據(jù)自動轉(zhuǎn)換成同種數(shù)據(jù)類型,并進(jìn)行運(yùn)算處理。

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

          6-8 判斷下面三個(gè)程序中是否有錯(cuò)誤,若有則指出錯(cuò)誤所在,并給出完整程序。

          程序1:

          Signal A,EN : std_logic;

          …………………

          Process(A, EN)

          Variable B: std_log ic;

          Begin

          if EN=l then B<=A; end if; --將“B<=A”改成“B:=A”

          end process;

          程序2:

          Architecture one of sample is

          variable a,b,c:integer;

          begin

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

          end;

          程序3:

          library ieee;

          use ieee.std_logic_1164.all;

          entity mux21 is

          PORT(a,b:in std_logic; sel:in std_loglc;c:out std_logle;); --將“;)”改成“)”

          end sam2; --將“sam2”改成“entity mux21”

          architecture one of mux2l is

          begin

          --增加“process(a,b,sel) begin”

          if sel= '0' then c:=a; else c:=b; end if; --應(yīng)改成“if sel= '0' then c<=a; else c<=b; end if;”

          --增加“end process;”

          end two; --將“two”改成“architecture one”

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

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

          第八章

          8-1仿照例8-1,將例8-4單進(jìn)程用兩個(gè)進(jìn)程,即一個(gè)時(shí)序進(jìn)程,一個(gè)組合進(jìn)程表達(dá)出來。

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

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          ENTITY MOORE1 IS

          PORT(DATAIN: IN STD_LOGIC_VECTOR(1 DOWNTO 0);

          CLK,RST: IN STD_LOGIC;

          Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

          END MOORE1;

          ARCHITECTURE behav OF MOORE1 IS

          TYPE ST_TYPE IS (ST0,ST1,ST2,ST3,ST4);

          SIGNAL C_ST,N_ST: ST_TYPE;

          BEGIN

          REG: PROCESS(CLK,RST)

          BEGIN

          IF RST='1' THEN C_ST<=ST0; -- Q<="0000";

          ELSIF CLK'EVENT AND CLK='1' THEN

          C_ST<=N_ST;

          END IF;

          END PROCESS REG;

          COM: PROCESS(C_ST,DATAIN)

          BEGIN

          CASE C_ST IS

          WHEN ST0=> IF DATAIN="10" THEN N_ST<=ST1;

          ELSE N_ST<=ST0; END IF;

          Q<="1001";

          WHEN ST1=> IF DATAIN="11" THEN N_ST<=ST2;

          ELSE N_ST<=ST1 ;END IF;

          Q<="0101";

          WHEN ST2=> IF DATAIN="01" THEN N_ST<=ST3;

          ELSE N_ST<=ST0 ;END IF;

          Q<="1100";

          WHEN ST3=> IF DATAIN="00" THEN N_ST<=ST4;

          ELSE N_ST<=ST2; END IF;

          Q<="0010";

          WHEN ST4=>IF DATAIN="11" THEN N_ST<=ST0;

          ELSE N_ST<=ST3 ;END IF;

          Q<="1001" ;

          WHEN OTHERS=> N_ST<=ST0;

          END CASE;

          END PROCESS COM;

          END behav;

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

          --解:【例8-5】改寫如下:

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          ENTITY MEALY1 IS

          PORT(CLK,DATAIN,RESET: IN STD_LOGIC;

          Q:OUT STD_LOGIC_VECTOR(4 DOWNTO 0));

          END MEALY1;

          ARCHITECTURE behav OF MEALY1 IS

          TYPE states IS (st0,st1,st2,st3,st4);

          SIGNAL STX: states;

          BEGIN

          PROCESS(CLK,RESET) --單一進(jìn)程

          BEGIN

          IF RESET='1' THEN STX<=ST0;

          ELSIF CLK'EVENT AND CLK='1' THEN

          CASE STX IS

          WHEN st0=> IF DATAIN='1' THEN STX<=st1; END IF;

          IF DATAIN='1' THEN Q<="10000";

          ELSE Q<="01010" ; END IF;

          WHEN st1=> IF DATAIN='0' THEN STX<=st2; END IF;

          IF DATAIN='0' THEN Q<="10111";

          ELSE Q<="10100" ; END IF;

          WHEN st2=> IF DATAIN='1' THEN STX<=st3; END IF;

          IF DATAIN='1' THEN Q<="10101";

          ELSE Q<="10011" ; END IF;

          WHEN st3=> IF DATAIN='0' THEN STX<=st4; END IF;

          IF DATAIN='0' THEN Q<="11011";

          ELSE Q<="01001"; END IF ;

          WHEN st4=> IF DATAIN='1' THEN STX<=st0; END IF;

          IF DATAIN='1' THEN Q<="11101";

          ELSE Q<="01101"; END IF;

          WHEN OTHERS=> STX<=st0; Q<="00000";

          END CASE;

          END IF;

          END PROCESS;

          END behav;

          圖8-6控制ADC0809采樣狀態(tài)圖

          -- 【例8-2】根據(jù)圖8-6狀態(tài)圖,采用Moore型狀態(tài)機(jī),設(shè)計(jì)ADC0809采樣控制器。

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          ENTITY ADCINT IS

          PORT(D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --來自0809轉(zhuǎn)換好的8位數(shù)據(jù)

          CLK: IN STD_LOGIC; --狀態(tài)機(jī)工作時(shí)鐘

          EOC: IN STD_LOGIC; --轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換

          ALE:OUT STD_LOGIC; --8個(gè)模擬信號通道地址鎖存信號

          START:OUT STD_LOGIC; --轉(zhuǎn)換開始信號

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

          ADDA:OUT STD_LOGIC; --信號通道最低位控制信號

          LOCK0:OUT STD_LOGIC; --觀察數(shù)據(jù)鎖存時(shí)鐘

          Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --8位數(shù)據(jù)輸出

          END ADCINT;

          ARCHITECTURE behav OF ADCINT IS

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

          SIGNAL current_state,next_state: states:=st0;

          SIGNAL REGL: STD_LOGIC_VECTOR(7 DOWNTO 0);

          SIGNAL LOCK: STD_LOGIC;--轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時(shí)鐘信號

          BEGIN

          ADDA<='1';--當(dāng)ADDA<='0',模擬信號進(jìn)入通道IN0;當(dāng)ADDA<='1',則進(jìn)入通道INI

          Q<=REGL;LOCK0<=LOCK;

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

          CASE current_state IS

          WHEN st0=> ALE<='0';START<='0';LOCK<='0';OE<='0';

          next_state<=st1; --0809初始化

          WHEN st1=> ALE<='1';START<='1';LOCK<='0';OE<='0';

          next_state<=st2 ;--啟動采樣

          WHEN st2=> ALE<='0';START<='0';LOCK<='0'; OE<='0';

          IF(EOC='1') THEN next_state<=st3;--EOC=1表明轉(zhuǎn)換結(jié)束

          ELSE next_state<=st2; END IF; --轉(zhuǎn)換未結(jié)束,繼續(xù)等待

          WHEN st3=> ALE<='0';START<='0';LOCK<='0';OE<='1';

          next_state<=st4;--開啟OE,輸出轉(zhuǎn)換好的數(shù)據(jù)

          WHEN st4=> ALE<='0';START<='0';LOCK<='1';OE<='1';next_state<=st0;

          WHEN OTHERS=>next_state<=st0;

          END CASE;

          END PROCESS COM;

          REG:PROCESS(CLK)

          BEGIN

          IF(CLK'EVENT AND CLK='1') THEN current_state<=next_state; END IF;

          END PROCESS REG; --由信號current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REG

          LATCH1: PROCESS(LOCK) --此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入

          BEGIN

          IF LOCK='1' AND LOCK'EVENT THEN REGL<=D; END IF;

          END PROCESS LATCH1;

          END behav;

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

          -- 解:"【例8-2】根據(jù)圖8-6狀態(tài)圖,采用Moore型狀態(tài)機(jī),設(shè)計(jì)ADC0809采樣控制器" 方法1(將輸出控制信號鎖存后輸出)的VHDL程序代碼如下:

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          ENTITY ADCINT IS

          PORT(D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --來自0809轉(zhuǎn)換好的8位數(shù)據(jù)

          CLK: IN STD_LOGIC; --狀態(tài)機(jī)工作時(shí)鐘

          EOC: IN STD_LOGIC; --轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換

          ALE: OUT STD_LOGIC; --8個(gè)模擬信號通道地址鎖存信號

          START: OUT STD_LOGIC; --轉(zhuǎn)換開始信號

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

          ADDA: OUT STD_LOGIC; --信號通道最低位控制信號

          LOCK0: OUT STD_LOGIC; --觀察數(shù)據(jù)鎖存時(shí)鐘

          Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --8位數(shù)據(jù)輸出

          END ADCINT;

          ARCHITECTURE behav OF ADCINT IS

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

          SIGNAL current_state,next_state: states:=st0;

          SIGNAL REGL: STD_LOGIC_VECTOR(7 DOWNTO 0);

          SIGNAL LOCK: STD_LOGIC;--轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時(shí)鐘信號

          SIGNAL ALE0: STD_LOGIC; --8個(gè)模擬信號通道地址鎖存信號

          SIGNAL START0: STD_LOGIC; --轉(zhuǎn)換開始信號

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

          BEGIN

          ADDA<='1';--當(dāng)ADDA<='0',模擬信號進(jìn)入通道IN0;當(dāng)ADDA<='1',則進(jìn)入通道INI

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

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

          CASE current_state IS

          WHEN st0=> ALE0<='0';START0<='0';LOCK<='0';OE0<='0';

          next_state<=st1; --0809初始化

          WHEN st1=> ALE0<='1';START0<='1';LOCK<='0';OE0<='0';

          next_state<=st2 ;--啟動采樣

          WHEN st2=> ALE0<='0';START0<='0';LOCK<='0'; OE0<='0';

          IF(EOC='1') THEN next_state<=st3;--EOC=1表明轉(zhuǎn)換結(jié)束

          ELSE next_state<=st2; END IF; --轉(zhuǎn)換未結(jié)束,繼續(xù)等待

          WHEN st3=> ALE0<='0';START0<='0';LOCK<='0';OE0<='1';

          next_state<=st4;--開啟OE,輸出轉(zhuǎn)換好的數(shù)據(jù)

          WHEN st4=> ALE0<='0';START0<='0';LOCK<='1';OE0<='1';next_state<=st0;

          WHEN OTHERS=>next_state<=st0;

          END CASE;

          IF CLK'EVENT AND CLK= '1' THEN

          ALE<=ALE0;START<=START0;LOCK0<=LOCK;OE<=OE0;--方法1:信號鎖存后輸出

          END IF;

          END PROCESS COM;

          REG:PROCESS(CLK)

          BEGIN

          IF(CLK'EVENT AND CLK='1') THEN current_state<=next_state; END IF;

          END PROCESS REG; --由信號current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REG

          LATCH1: PROCESS(LOCK) --此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入

          BEGIN

          IF LOCK='1' AND LOCK'EVENT THEN REGL<=D; END IF;

          END PROCESS LATCH1;

          END behav;

          -- 解:"【例8-2】根據(jù)圖8-6狀態(tài)圖,采用Moore型狀態(tài)機(jī),設(shè)計(jì)ADC0809采樣控制器" 方法2(使用狀態(tài)碼直接輸出型狀態(tài)機(jī))的VHDL程序代碼(【例8-7】的根據(jù)狀態(tài)編碼表8-1給出ADC0809數(shù)據(jù)采樣的狀態(tài)機(jī))如下:

          LIBRARY IEEE;

          USE IEEE.STD_LOGIC_1164.ALL;

          ENTITY AD0809 IS

          PORT( D: IN STD_LOGIC_VECTOR(7 DOWNTO 0);

          CLK,EOC: IN STD_LOGIC;

          ALE,START,OE,ADDA:OUT STD_LOGIC;

          c_state:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);

          Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

          END AD0809;

          ARCHITECTURE behav OF AD0809 IS

          SIGNAL current_state,next_state: STD_LOGIC_VECTOR(4 DOWNTO 0);

          CONSTANT st0: STD_LOGIC_VECTOR(4 DOWNTO 0):="00000";

          CONSTANT st1: STD_LOGIC_VECTOR(4 DOWNTO 0):="11000";

          CONSTANT st2: STD_LOGIC_VECTOR(4 DOWNTO 0):="00001";

          CONSTANT st3: STD_LOGIC_VECTOR(4 DOWNTO 0):="00100";

          CONSTANT st4: STD_LOGIC_VECTOR(4 DOWNTO 0):="00110";

          SIGNAL REGL: STD_LOGIC_VECTOR(7 DOWNTO 0);

          SIGNAL LOCK: STD_LOGIC;

          BEGIN

          ADDA<='1';Q<=REGL;START<=current_state(4);ALE<=current_state(3);

          OE<=current_state(2);LOCK<=current_state(1);c_state<=current_state;

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

          CASE current_state IS

          WHEN st0=> next_state<=st1; --0809初始化

          WHEN st1=> next_state<=st2; --啟動采樣

          WHEN st2=> IF(EOC='1') THEN next_state<=st3; --EOC=1表明轉(zhuǎn)換結(jié)束

          ELSE next_state<=st2; --轉(zhuǎn)換未結(jié)束,繼續(xù)等待

          END IF;

          WHEN st3=> next_state<=st4; --開啟OE,輸出轉(zhuǎn)換好的數(shù)據(jù)

          WHEN st4=> next_state<=st0;

          WHEN OTHERS=> next_state<=st0;

          END CASE;

          END PROCESS COM;

          REG: PROCESS(CLK)

          BEGIN

          IF (CLK'EVENT AND CLK='1') THEN current_state<=next_state;

          END IF;

          END PROCESS REG; --由信號current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REG

          LATCH1: PROCESS(LOCK)--此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入

          BEGIN

          IF LOCK='1' AND LOCK'EVENT THEN REGL<=D;

          END IF;

          END PROCESS LATCH1;

          END behav;

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【EDA技術(shù)與應(yīng)用課后習(xí)題答案】相關(guān)文章:

        EDA技術(shù)與應(yīng)用課后習(xí)題答案08-10

        EDA技術(shù)與應(yīng)用09-19

        EDA技術(shù)應(yīng)用與發(fā)展09-11

        EDA技術(shù)的發(fā)展與應(yīng)用09-13

        關(guān)于EDA技術(shù)的發(fā)展與應(yīng)用08-05

        2016年EDA技術(shù)的發(fā)展與應(yīng)用01-20

        EDA技術(shù)的應(yīng)用及發(fā)展趨勢09-12

        eda技術(shù)在生活中的應(yīng)用10-30

        EDA技術(shù)的發(fā)展08-17

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲午夜久久久久久噜噜噜 | 先锋国产资源不卡 | 香蕉大伊亚洲人在线观看 | 一区二区在线视频 | 色爱区综合激月婷婷视频 | 亚洲人成日韩中文字幕不卡 |

            EDA技術(shù)與應(yīng)用課后習(xí)題答案大全

              《EDA技術(shù)與應(yīng)用》為普通高等教育“十一五”國家級規(guī)劃教材,下面yjbys小編為大家提供的是本書的課后習(xí)題答案,希望能幫助到大家!

              主要內(nèi)容包括:EDA技術(shù);電路設(shè)計(jì)仿真軟件PSpice、Muhisim8的使用方法;可編程邏輯器件的工作原理、分類及應(yīng)用;硬件描述語言Verilog HDL的語法要點(diǎn)與設(shè)計(jì)實(shí)例;數(shù)字集成軟件Quartus n、仿真軟件ModelSim、綜合軟件SynplifyPro等的使用方法及設(shè)計(jì)流程;EDA技術(shù)綜合設(shè)計(jì)實(shí)例。 本書內(nèi)容全面,注重基礎(chǔ),理論聯(lián)系實(shí)際,突出實(shí)用性,并使用大量圖表說明問題,編寫簡明精煉、針對性強(qiáng),設(shè)計(jì)實(shí)例都通過了編譯,設(shè)計(jì)文件和參數(shù)選擇都經(jīng)過驗(yàn)證,便于讀者對內(nèi)容的理解和掌握。

              第一章

              1-1 EDA技術(shù)與ASIC設(shè)計(jì)和FPGA開發(fā)有什么關(guān)系? P3~4

              答:利用EDA技術(shù)進(jìn)行電子系統(tǒng)設(shè)計(jì)的最后目標(biāo)是完成專用集成電路ASIC的設(shè)計(jì)和實(shí)現(xiàn);FPGA和CPLD是實(shí)現(xiàn)這一途徑的主流器件。FPGA和CPLD通常也被稱為可編程專用IC,或可編程ASIC。FPGA和CPLD的應(yīng)用是EDA技術(shù)有機(jī)融合軟硬件電子設(shè)計(jì)技術(shù)、SoC(片上系統(tǒng))和ASIC設(shè)計(jì),以及對自動設(shè)計(jì)與自動實(shí)現(xiàn)最典型的詮釋。

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

              答:編譯器將軟件程序翻譯成基于某種特定CPU的機(jī)器代碼,這種代碼僅限于這種CPU而不能移植,并且機(jī)器代碼不代表硬件結(jié)構(gòu),更不能改變CPU的硬件結(jié)構(gòu),只能被動地為其特定的硬件電路結(jié)構(gòu)所利用。綜合器將VHDL程序轉(zhuǎn)化的目標(biāo)是底層的電路結(jié)構(gòu)網(wǎng)表文件,這種滿足VHDL設(shè)計(jì)程序功能描述的電路結(jié)構(gòu),不依賴于任何特定硬件環(huán)境;具有相對獨(dú)立性。綜合器在將VHDL(硬件描述語言)表達(dá)的電路功能轉(zhuǎn)化成具體的電路結(jié)構(gòu)網(wǎng)表過程中,具有明顯的能動性和創(chuàng)造性,它不是機(jī)械的一一對應(yīng)式的“翻譯”,而是根據(jù)設(shè)計(jì)庫、工藝庫以及預(yù)先設(shè)置的各類約束條件,選擇最優(yōu)的方式完成電路結(jié)構(gòu)的設(shè)計(jì)。

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

              什么是綜合? 答:在電子設(shè)計(jì)領(lǐng)域中綜合的概念可以表示為:將用行為和功能層次表達(dá)的電子系統(tǒng)轉(zhuǎn)換為低層次的便于具體實(shí)現(xiàn)的模塊組合裝配的過程。

              有哪些類型? 答:(1)從自然語言轉(zhuǎn)換到VHDL語言算法表示,即自然語言綜合。(2)從算法表示轉(zhuǎn)換到寄存器傳輸級(RegisterTransport Level,RTL),即從行為域到結(jié)構(gòu)域的綜合,即行為綜合。(3)從RTL級表示轉(zhuǎn)換到邏輯門(包括觸發(fā)器)的表示,即邏輯綜合。(4)從邏輯門表示轉(zhuǎn)換到版圖表示(ASIC設(shè)計(jì)),或轉(zhuǎn)換到FPGA的配置網(wǎng)表文件,可稱為版圖綜合或結(jié)構(gòu)綜合。

              綜合在電子設(shè)計(jì)自動化中的地位是什么? 答:是核心地位(見圖1-3)。綜合器具有更復(fù)雜的工作環(huán)境,綜合器在接受VHDL程序并準(zhǔn)備對其綜合前,必須獲得與最終實(shí)現(xiàn)設(shè)計(jì)電路硬件特征相關(guān)的工藝庫信息,以及獲得優(yōu)化綜合的諸多約束條件信息;根據(jù)工藝庫和約束條件信息,將VHDL程序轉(zhuǎn)化成電路實(shí)現(xiàn)的相關(guān)信息。

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

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

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

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

              第二章

              2-1 敘述EDA的FPGA/CPLD設(shè)計(jì)流程。 P13~16

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

              2-2 IP是什么?IP與EDA技術(shù)的關(guān)系是什么? P24~26

              IP是什么? 答:IP是知識產(chǎn)權(quán)核或知識產(chǎn)權(quán)模塊,用于ASIC或FPGA/CPLD中的預(yù)先設(shè)計(jì)好的電路功能模塊。

              IP與EDA技術(shù)的關(guān)系是什么? 答:IP在EDA技術(shù)開發(fā)中具有十分重要的地位;與EDA技術(shù)的關(guān)系分有軟IP、固IP、硬IP:軟IP是用VHDL等硬件描述語言描述的功能塊,并不涉及用什么具體電路元件實(shí)現(xiàn)這些功能;軟IP通常是以硬件描述語言HDL源文件的形式出現(xiàn)。固IP是完成了綜合的功能塊,具有較大的設(shè)計(jì)深度,以網(wǎng)表文件的形式提交客戶使用。硬IP提供設(shè)計(jì)的最終階段產(chǎn)品:掩模。

              2-3 敘述ASIC的設(shè)計(jì)方法。 P18~19

              答:ASIC設(shè)計(jì)方法,按版圖結(jié)構(gòu)及制造方法分有半定制(Semi-custom)和全定制(Full-custom)兩種實(shí)現(xiàn)方法。

              全定制方法是一種基于晶體管級的,手工設(shè)計(jì)版圖的制造方法。

              半定制法是一種約束性設(shè)計(jì)方式,約束的目的是簡化設(shè)計(jì),縮短設(shè)計(jì)周期,降低設(shè)計(jì)成本,提高設(shè)計(jì)正確率。半定制法按邏輯實(shí)現(xiàn)的方式不同,可再分為門陣列法、標(biāo)準(zhǔn)單元法和可編程邏輯器件法。

              2-4 FPGA/CPLD在ASIC設(shè)計(jì)中有什么用途? P16,18

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

              2-5 簡述在基于FPGA/CPLD的EDA設(shè)計(jì)流程中所涉及的EDA工具,及其在整個(gè)流程中的作用。 P19~23

              答:基于FPGA/CPLD的EDA設(shè)計(jì)流程中所涉及的EDA工具有:設(shè)計(jì)輸入編輯器(作用:接受不同的設(shè)計(jì)輸入表達(dá)方式,如原理圖輸入方式、狀態(tài)圖輸入方式、波形輸入方式以及HDL的文本輸入方式。);HDL綜合器(作用:HDL綜合器根據(jù)工藝庫和約束條件信息,將設(shè)計(jì)輸入編輯器提供的信息轉(zhuǎn)化為目標(biāo)器件硬件結(jié)構(gòu)細(xì)節(jié)的信息,并在數(shù)字電路設(shè)計(jì)技術(shù)、化簡優(yōu)化算法以及計(jì)算機(jī)軟件等復(fù)雜結(jié)體進(jìn)行優(yōu)化處理);仿真器(作用:行為模型的表達(dá)、電子系統(tǒng)的建模、邏輯電路的驗(yàn)證及門級系統(tǒng)的測試);適配器(作用:完成目標(biāo)系統(tǒng)在器件上的布局和布線);下載器(作用:把設(shè)計(jì)結(jié)果信息下載到對應(yīng)的實(shí)際器件,實(shí)現(xiàn)硬件設(shè)計(jì))。

              第三章

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

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

              說明GAL是怎樣實(shí)現(xiàn)可編程組合電路與時(shí)序電路的? 答:GAL(通用陣列邏輯器件)是通過對其中的OLMC(輸出邏輯宏單元)的編程和三種模式配置(寄存器模式、復(fù)合模式、簡單模式),實(shí)現(xiàn)組合電路與時(shí)序電路設(shè)計(jì)的。

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

              答:GAL、CPLD之類都是基于乘積項(xiàng)的可編程結(jié)構(gòu);即包含有可編程與陣列和固定的或陣列的PAL(可編程陣列邏輯)器件構(gòu)成。

              3-3 什么是基于查找表的可編程邏輯結(jié)構(gòu)? P40~41

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

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

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

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

              答:使用BST(邊界掃描測試)規(guī)范測試,不必使用物理探針,可在器件正常工作時(shí)在系統(tǒng)捕獲測量的功能數(shù)據(jù)。克服傳統(tǒng)的外探針測試法和“針床”夾具測試法來無法對IC內(nèi)部節(jié)點(diǎn)無法測試的難題。

              3-6 解釋編程與配置這兩個(gè)概念。 P58

              答:編程:基于電可擦除存儲單元的EEPROM或Flash技術(shù)。CPLD一股使用此技術(shù)進(jìn)行編程。CPLD被編程后改變了電可擦除存儲單元中的信息,掉電后可保存。電可擦除編程工藝的優(yōu)點(diǎn)是編程后信息不會因掉電而丟失,但編程次數(shù)有限,編程的速度不快。

              配置:基于SRAM查找表的編程單元。編程信息是保存在SRAM中的,SRAM在掉電后編程信息立即丟失,在下次上電后,還需要重新載入編程信息。大部分FPGA采用該種編程工藝。該類器件的編程一般稱為配置。對于SRAM型FPGA來說,配置次數(shù)無限,且速度快;在加電時(shí)可隨時(shí)更改邏輯;下載信息的保密性也不如電可擦除的編程。

              3-7 請參閱相關(guān)資料,并回答問題:按本章給出的歸類方式,將基于乘積項(xiàng)的可編程邏輯結(jié)構(gòu)的PLD器件歸類為CPLD;將基于查找表的可編程邏輯結(jié)構(gòu)的PLD器什歸類為FPGA,那么,APEX系列屬于什么類型PLD器件? MAX II系列又屬于什么類型的PLD器件?為什么? P54~56

              答:APEX(Advanced Logic Element Matrix)系列屬于FPGA類型PLD器件;編程信息存于SRAM中。MAX II系列屬于CPLD類型的PLD器件;編程信息存于EEPROM中。

              第四章

              4-1:畫出與下例實(shí)體描述對應(yīng)的原理圖符號元件:

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

              PORT (input : IN STD_LOGIC ; -- 輸入端

              enable : IN STD_LOGIC ; -- 使能端

              output : OUT STD_LOGIC ) ; -- 輸出端

              END buf3x ;

              ENTITY mux21 IS --實(shí)體2: 2選1多路選擇器

              PORT (in0, in1, sel : IN STD_LOGIC;

              output : OUT STD_LOGIC);

              4-1.答案

              4-2. 圖3-30所示的是4選1多路選擇器,試分別用IF_THEN語句和CASE語句的表達(dá)方式寫出此電路的VHDL程序。選擇控制的信號s1和s0的數(shù)據(jù)類型為STD_LOGIC_VECTOR;當(dāng)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.答案

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              ENTITY MUX41 IS

              PORT(s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --輸入選擇信號

              a,b,c,d:IN STD_LOGIC; --輸入信號

              y:OUT STD_LOGIC);--輸出端

              END ENTITY;

              ARCHITECTURE ART OF MUX41 IS

              BEGIN

              PROCESS(s)

              BEGIN

              IF (S="00") THEN y<=a;

              ELSIF (S="01") TH EN y<=b;

              ELSIF (S="10") TH EN y<=c;

              ELSIF (S="11") TH EN y<=d;

              ELSE y<=NULL;

              END IF;

              EDN PROCESS;

              END ART;

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              ENTITY MUX41 IS

              PORT(s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --輸入選擇信號

              a,b,c,d:IN STD_LOGIC; --輸入信號

              y:OUT STD_LOGIC);--輸出端

              END MUX41;

              ARCHITECTURE ART OF MUX41 IS

              BEGIN

              PROCESS(s)

              BEGIN

              CASE s IS

              WHEN “00” => y<=a;

              WHEN “01” => y<=b;

              WHEN “10” => y<=c;

              WHEN “11” => y<=d;

              WHEN OTHERS =>NULL;

              END CASE;

              END PROCESS;

              END ART;

              4-3. 圖3-31所示的是雙2選1多路選擇器構(gòu)成的電路MUXK,對于其中MUX21A,當(dāng)s='0'和'1'時(shí),分別有y<='a'和y<='b'。試在一個(gè)結(jié)構(gòu)體中用兩個(gè)進(jìn)程來表達(dá)此電路,每個(gè)進(jìn)程中用CASE語句描述一個(gè)2選1多路選擇器MUX21A。

              4-3.答案

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              ENTITY MUX221 IS

              PORT(a1,a2,a3:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --輸入信號

              s0,s1:IN STD_LOGIC;

              outy:OUT STD_LOGIC);--輸出端

              END ENTITY;

              ARCHITECTURE ONE OF MUX221 IS

              SIGNAL tmp : STD_LOGIC;

              BEGIN

              PR01:PROCESS(s0)

              BEGIN

              IF s0=”0” THEN tmp<=a2;

              ELSE tmp<=a3;

              END IF;

              END PROCESS;

              PR02:PROCESS(s1)

              BEGIN

              IF s1=”0” THEN outy<=a1;

              ELSE outy<=tmp;

              END IF;

              END PROCESS;

              END ARCHITECTURE ONE;

              END CASE;

              4-4.下圖是一個(gè)含有上升沿觸發(fā)的D觸發(fā)器的時(shí)序電路,試寫出此電路的VHDL設(shè)計(jì)文件。

              4-4.答案

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              ENTITY MULTI IS

              PORT(CL:IN STD_LOGIC; --輸入選擇信號

              CLK0:IN STD_LOGIC; --輸入信號

              OUT1:OUT STD_LOGIC);--輸出端

              END ENTITY;

              ARCHITECTURE ONE OF MULTI IS

              SIGNAL Q : STD_LOGIC;

              BEGIN

              PR01: PROCESS(CLK0)

              BEGIN

              IF CLK ‘EVENT AND CLK=’1’

              THEN Q<=NOT(CL OR Q);ELSE

              END IF;

              END PROCESS;

              PR02: PROCESS(CLK0)

              BEGIN

              OUT1<=Q;

              END PROCESS;

              END ARCHITECTURE ONE;

              END PROCESS;

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

              (1) 首先設(shè)計(jì)1位半減器,然后用例化語句將它們連接起來,圖3-32中h_suber是半減器,diff是輸出差,s_out是借位輸出,sub_in是借位輸入。

              (2) 以1位全減器為基本硬件,構(gòu)成串行借位的8位減法器,要求用例化語句來完成此項(xiàng)設(shè)計(jì)(減法運(yùn)算是 x – y - sun_in = diffr)

              4-5.答案

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

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              USE IEEE.STD_LOGIC_UNSIGNED.ALL;

              ENTITY or2a IS

              PORT(a,b:IN STD_LOGIC;

              c:OUT STD_LOGIC);

              END ENTITY or2a;

              ARCHITECTURE one OF or2a IS

              BEGIN

              c <= a OR b;

              END ARCHITECTURE one;

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

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              USE IEEE.STD_LOGIC_UNSIGNED.ALL;

              ENTITY h_subber IS

              PORT(x,y:IN STD_LOGIC;

              diff,s_out::OUT STD_LOGIC);

              END ENTITY h_subber;

              ARCHITECTURE ONE OF h_subber IS

              SIGNAL xyz: STD_LOGIC_VECTOR(1 DOWNTO 0);

              BEGIN

              xyz <= x & y;

              PROCESS(xyz)

              BEGIN

              CASE xyz IS

              WHEN "00" => diff<='0';s_out<='0';

              WHEN "01" => diff<='1';s_out<='1';

              WHEN "10" => diff<='1';s_out<='0';

              WHEN "11" => diff<='0';s_out<='0';

              WHEN OTHERS => NULL;

              END CASE;

              END PROCESS;

              END ARCHITECTURE ONE;

              頂層文件:f_subber.VHD實(shí)現(xiàn)一位全減器

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              USE IEEE.STD_LOGIC_UNSIGNED.ALL;

              ENTITY f_subber IS

              PORT(x,y,sub_in:IN STD_LOGIC;

              diffr,sub_out:OUT STD_LOGIC);

              END ENTITY f_subber;

              ARCHITECTURE ONE OF f_subber IS

              COMPONENT h_subber

              PORT(x,y:IN STD_LOGIC;

              diff,S_out:OUT STD_LOGIC);

              END COMPONENT;

              COMPONENT or2a

              PORT(a,b:IN STD_LOGIC;

              c:OUT STD_LOGIC);

              END COMPONENT;

              SIGNAL d,e,f: STD_LOGIC;

              BEGIN

              u1: h_subber PORT MAP(x=>x,y=>y,diff=>d,s_out=>e);

              u2: h_subber PORT MAP(x=>d,y=>sub_in,diff=>diffr,s_out=>f);

              u3: or2a PORT MAP(a=>f,b=>e,c=>sub_out);

              END ARCHITECTURE ONE;

              END ARCHITECTURE ART;

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

              4-6.答案

              MAX3256頂層文件

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              USE IEEE.STD_LOGIC_UNSIGNED.ALL;

              ENTITY MAX3256 IS

              PORT (INA,INB,INCK: IN STD_LOGIC;

              INC: IN STD_LOGIC;

              E,OUT:OUT STD_LOGIC);

              END ENTITY MAX3256;

              ARCHITECTURE ONE OF MAX3256 IS

              COMPONENT LK35 --調(diào)用LK35聲明語句

              PORT(A1,A2:IN STD_LOGIC;

              CLK:IN STD_LOGIC;

              Q1,Q2:OUT STD_LOGIC);

              END COMPONENT;

              COMPONENT D --調(diào)用D觸發(fā)器聲明語句

              PORT(D,C:IN STD_LOGIC;

              CLK:IN STD_LOGIC;

              Q:OUT STD_LOGIC);

              END COMPONENT;

              COMPONENT MUX21--調(diào)用二選一選擇器聲明語句

              PORT(B,A:IN STD_LOGIC;

              S:IN STD_LOGIC;

              C:OUT STD_LOGIC);

              END COMPONENT;

              SIGNAL AA,BB,CC,DD: STD_LOGIC;

              BEGIN

              u1: LK35 PORT MAP(A1=>INA,A2=>INB,CLK=INCK, Q1=>AA,Q2=>BB);

              u2: D PORT MAP(D=>BB;CLK=>INCK,C=>INC,Q=>CC);

              u3: LK35 PORT MAP (A1=>BB,A2=>CC,CLK=INCK, Q1=>DD,Q2=>OUT1);

              u4: MUX21 PORT MAP (B=>AA,A=>DD,S=>BB,C=>E);

              END ARCHITECTURE ONE;

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

              4-7.答案:

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              USE IEEE.STD_LOGIC_UNSIGNED.ALL;

              ENTITY CNT16 IS

              PORT(CLK,RST,EN:IN STD_LOGIC;

              CHOOSE:IN BIT;

              SETDATA:BUFFER INTEGER RANCE 65535 DOWNTO 0;

              COUT: BUFFER INTEGER RANCE 65535 DOWNTO 0);

              END CNT16;

              ARCHITECTURE ONE OF CNT16 IS

              BEGIN

              PROCESS(CLK,RST,SDATA)

              VARIABLE QI:STD_LOGIC_VECTOR(65535 DOWNTO 0);

              BEGIN

              IF RST='1' THEN --計(jì)數(shù)器異步復(fù)位

              QI:=(OTHERS=>'0');

              ELSIF SET=’1’ THEN--計(jì)數(shù)器一步置位

              QI:=SETDATA;

              ELSIF CLK'EVENT AND CLK='1' THEN --檢測時(shí)鐘上升沿

              IF EN=’1’ THEN –檢測是否允許計(jì)數(shù)

              IF CHOOSE=’1’ THEN --選擇加法計(jì)數(shù)

              QI:=QI+1; --計(jì)數(shù)器加一

              ELSE QI=QI-1; --計(jì)數(shù)器加一

              END IF;

              END IF;

              END IF;

              COUT<=QI;--將計(jì)數(shù)值向端口輸出

              END PROCESS;

              END ONE;

              第五章

              5-1 歸納利用Quartus II進(jìn)行VHDL文本輸入設(shè)計(jì)的流程:從文件輸入一直到SignalTap II測試。P95~P115

              答:1 建立工作庫文件夾和編輯設(shè)計(jì)文件;2 創(chuàng)建工程;3 編譯前設(shè)置;4 全程編譯;5 時(shí)序仿真;6 引腳鎖定;7 配置文件下載;8 打開SignalTap II編輯窗口;9 調(diào)入SignalTap II的待測信號;10 SignalTap II參數(shù)設(shè)置;11 SignalTap II參數(shù)設(shè)置文件存盤;12 帶有SignalTap II測試信息的編譯下載;13 啟動SignalTap II進(jìn)行采樣與分析;14 SignalTap II的其他設(shè)置和控制方法。

              第六章

              6-1 什么是固有延時(shí)?什么是慣性延時(shí)?P150~151

              答:固有延時(shí)(Inertial Delay)也稱為慣性延時(shí),固有延時(shí)的主要物理機(jī)制是分布電容效應(yīng)。

              6-2 δ是什么?在VHDL中,δ有什么用處?P152

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

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

              6-4 說明信號和變量的功能特點(diǎn),以及應(yīng)用上的異同點(diǎn)。P128~P129

              答:變量:變量是一個(gè)局部量,只能在進(jìn)程和子程序中使用。變量不能將信息帶出對它做出定義的當(dāng)前結(jié)構(gòu)。變量的賦值是一種理想化的數(shù)據(jù)傳輸,是立即發(fā)生的,不存在任何延時(shí)行為。變量的主要作用是在進(jìn)程中作為臨時(shí)的數(shù)據(jù)存儲單元。

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

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

              解:設(shè)Q定義成信號,一種方法:Q<=“000…000”; 其中“000…000”反映出信號Q的位寬度。第二種方法:Q<=(OTHERS=>‘0’);其中OTHERS=>‘0’不需要給出信號Q的位寬度,即可對Q清零。

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

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

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

              …………………….

              ARCHITECTURE bhv 0F DFF3 IS

              SIGNAL QQ:STD_LOGIC;

              BEGIN

              PROCESS(RST)

              BEGIN

              IF RST’EVENT AND RST=‘1' THEN

              QQ<=(Others=>‘0’);

              END IF;

              END PROCESS;

              Q1<=QQ;

              END;

              ………………………

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

              …………………….

              ARCHITECTURE bhv 0F DFF3 IS

              SIGNAL QQ:STD_LOGIC;

              BEGIN

              PROCESS(CLK)

              BEGIN

              IF RST=‘1' THEN

              QQ<=(Others=>‘0’);

              END IF;

              END PROCESS;

              Q1<=QQ;

              END;

              ………………………

              6-7 什么是重載函數(shù)?重載算符有何用處?如何調(diào)用重載算符函數(shù)?

              答:(1)什么是重載函數(shù)? 根據(jù)操作對象變換處理功能。

              (2)重載算符有何用處? 用于兩個(gè)不同類型的操作數(shù)據(jù)自動轉(zhuǎn)換成同種數(shù)據(jù)類型,并進(jìn)行運(yùn)算處理。

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

              6-8 判斷下面三個(gè)程序中是否有錯(cuò)誤,若有則指出錯(cuò)誤所在,并給出完整程序。

              程序1:

              Signal A,EN : std_logic;

              …………………

              Process(A, EN)

              Variable B: std_log ic;

              Begin

              if EN=l then B<=A; end if; --將“B<=A”改成“B:=A”

              end process;

              程序2:

              Architecture one of sample is

              variable a,b,c:integer;

              begin

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

              end;

              程序3:

              library ieee;

              use ieee.std_logic_1164.all;

              entity mux21 is

              PORT(a,b:in std_logic; sel:in std_loglc;c:out std_logle;); --將“;)”改成“)”

              end sam2; --將“sam2”改成“entity mux21”

              architecture one of mux2l is

              begin

              --增加“process(a,b,sel) begin”

              if sel= '0' then c:=a; else c:=b; end if; --應(yīng)改成“if sel= '0' then c<=a; else c<=b; end if;”

              --增加“end process;”

              end two; --將“two”改成“architecture one”

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

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

              第八章

              8-1仿照例8-1,將例8-4單進(jìn)程用兩個(gè)進(jìn)程,即一個(gè)時(shí)序進(jìn)程,一個(gè)組合進(jìn)程表達(dá)出來。

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

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              ENTITY MOORE1 IS

              PORT(DATAIN: IN STD_LOGIC_VECTOR(1 DOWNTO 0);

              CLK,RST: IN STD_LOGIC;

              Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

              END MOORE1;

              ARCHITECTURE behav OF MOORE1 IS

              TYPE ST_TYPE IS (ST0,ST1,ST2,ST3,ST4);

              SIGNAL C_ST,N_ST: ST_TYPE;

              BEGIN

              REG: PROCESS(CLK,RST)

              BEGIN

              IF RST='1' THEN C_ST<=ST0; -- Q<="0000";

              ELSIF CLK'EVENT AND CLK='1' THEN

              C_ST<=N_ST;

              END IF;

              END PROCESS REG;

              COM: PROCESS(C_ST,DATAIN)

              BEGIN

              CASE C_ST IS

              WHEN ST0=> IF DATAIN="10" THEN N_ST<=ST1;

              ELSE N_ST<=ST0; END IF;

              Q<="1001";

              WHEN ST1=> IF DATAIN="11" THEN N_ST<=ST2;

              ELSE N_ST<=ST1 ;END IF;

              Q<="0101";

              WHEN ST2=> IF DATAIN="01" THEN N_ST<=ST3;

              ELSE N_ST<=ST0 ;END IF;

              Q<="1100";

              WHEN ST3=> IF DATAIN="00" THEN N_ST<=ST4;

              ELSE N_ST<=ST2; END IF;

              Q<="0010";

              WHEN ST4=>IF DATAIN="11" THEN N_ST<=ST0;

              ELSE N_ST<=ST3 ;END IF;

              Q<="1001" ;

              WHEN OTHERS=> N_ST<=ST0;

              END CASE;

              END PROCESS COM;

              END behav;

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

              --解:【例8-5】改寫如下:

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              ENTITY MEALY1 IS

              PORT(CLK,DATAIN,RESET: IN STD_LOGIC;

              Q:OUT STD_LOGIC_VECTOR(4 DOWNTO 0));

              END MEALY1;

              ARCHITECTURE behav OF MEALY1 IS

              TYPE states IS (st0,st1,st2,st3,st4);

              SIGNAL STX: states;

              BEGIN

              PROCESS(CLK,RESET) --單一進(jìn)程

              BEGIN

              IF RESET='1' THEN STX<=ST0;

              ELSIF CLK'EVENT AND CLK='1' THEN

              CASE STX IS

              WHEN st0=> IF DATAIN='1' THEN STX<=st1; END IF;

              IF DATAIN='1' THEN Q<="10000";

              ELSE Q<="01010" ; END IF;

              WHEN st1=> IF DATAIN='0' THEN STX<=st2; END IF;

              IF DATAIN='0' THEN Q<="10111";

              ELSE Q<="10100" ; END IF;

              WHEN st2=> IF DATAIN='1' THEN STX<=st3; END IF;

              IF DATAIN='1' THEN Q<="10101";

              ELSE Q<="10011" ; END IF;

              WHEN st3=> IF DATAIN='0' THEN STX<=st4; END IF;

              IF DATAIN='0' THEN Q<="11011";

              ELSE Q<="01001"; END IF ;

              WHEN st4=> IF DATAIN='1' THEN STX<=st0; END IF;

              IF DATAIN='1' THEN Q<="11101";

              ELSE Q<="01101"; END IF;

              WHEN OTHERS=> STX<=st0; Q<="00000";

              END CASE;

              END IF;

              END PROCESS;

              END behav;

              圖8-6控制ADC0809采樣狀態(tài)圖

              -- 【例8-2】根據(jù)圖8-6狀態(tài)圖,采用Moore型狀態(tài)機(jī),設(shè)計(jì)ADC0809采樣控制器。

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              ENTITY ADCINT IS

              PORT(D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --來自0809轉(zhuǎn)換好的8位數(shù)據(jù)

              CLK: IN STD_LOGIC; --狀態(tài)機(jī)工作時(shí)鐘

              EOC: IN STD_LOGIC; --轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換

              ALE:OUT STD_LOGIC; --8個(gè)模擬信號通道地址鎖存信號

              START:OUT STD_LOGIC; --轉(zhuǎn)換開始信號

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

              ADDA:OUT STD_LOGIC; --信號通道最低位控制信號

              LOCK0:OUT STD_LOGIC; --觀察數(shù)據(jù)鎖存時(shí)鐘

              Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --8位數(shù)據(jù)輸出

              END ADCINT;

              ARCHITECTURE behav OF ADCINT IS

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

              SIGNAL current_state,next_state: states:=st0;

              SIGNAL REGL: STD_LOGIC_VECTOR(7 DOWNTO 0);

              SIGNAL LOCK: STD_LOGIC;--轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時(shí)鐘信號

              BEGIN

              ADDA<='1';--當(dāng)ADDA<='0',模擬信號進(jìn)入通道IN0;當(dāng)ADDA<='1',則進(jìn)入通道INI

              Q<=REGL;LOCK0<=LOCK;

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

              CASE current_state IS

              WHEN st0=> ALE<='0';START<='0';LOCK<='0';OE<='0';

              next_state<=st1; --0809初始化

              WHEN st1=> ALE<='1';START<='1';LOCK<='0';OE<='0';

              next_state<=st2 ;--啟動采樣

              WHEN st2=> ALE<='0';START<='0';LOCK<='0'; OE<='0';

              IF(EOC='1') THEN next_state<=st3;--EOC=1表明轉(zhuǎn)換結(jié)束

              ELSE next_state<=st2; END IF; --轉(zhuǎn)換未結(jié)束,繼續(xù)等待

              WHEN st3=> ALE<='0';START<='0';LOCK<='0';OE<='1';

              next_state<=st4;--開啟OE,輸出轉(zhuǎn)換好的數(shù)據(jù)

              WHEN st4=> ALE<='0';START<='0';LOCK<='1';OE<='1';next_state<=st0;

              WHEN OTHERS=>next_state<=st0;

              END CASE;

              END PROCESS COM;

              REG:PROCESS(CLK)

              BEGIN

              IF(CLK'EVENT AND CLK='1') THEN current_state<=next_state; END IF;

              END PROCESS REG; --由信號current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REG

              LATCH1: PROCESS(LOCK) --此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入

              BEGIN

              IF LOCK='1' AND LOCK'EVENT THEN REGL<=D; END IF;

              END PROCESS LATCH1;

              END behav;

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

              -- 解:"【例8-2】根據(jù)圖8-6狀態(tài)圖,采用Moore型狀態(tài)機(jī),設(shè)計(jì)ADC0809采樣控制器" 方法1(將輸出控制信號鎖存后輸出)的VHDL程序代碼如下:

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              ENTITY ADCINT IS

              PORT(D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --來自0809轉(zhuǎn)換好的8位數(shù)據(jù)

              CLK: IN STD_LOGIC; --狀態(tài)機(jī)工作時(shí)鐘

              EOC: IN STD_LOGIC; --轉(zhuǎn)換狀態(tài)指示,低電平表示正在轉(zhuǎn)換

              ALE: OUT STD_LOGIC; --8個(gè)模擬信號通道地址鎖存信號

              START: OUT STD_LOGIC; --轉(zhuǎn)換開始信號

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

              ADDA: OUT STD_LOGIC; --信號通道最低位控制信號

              LOCK0: OUT STD_LOGIC; --觀察數(shù)據(jù)鎖存時(shí)鐘

              Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --8位數(shù)據(jù)輸出

              END ADCINT;

              ARCHITECTURE behav OF ADCINT IS

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

              SIGNAL current_state,next_state: states:=st0;

              SIGNAL REGL: STD_LOGIC_VECTOR(7 DOWNTO 0);

              SIGNAL LOCK: STD_LOGIC;--轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時(shí)鐘信號

              SIGNAL ALE0: STD_LOGIC; --8個(gè)模擬信號通道地址鎖存信號

              SIGNAL START0: STD_LOGIC; --轉(zhuǎn)換開始信號

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

              BEGIN

              ADDA<='1';--當(dāng)ADDA<='0',模擬信號進(jìn)入通道IN0;當(dāng)ADDA<='1',則進(jìn)入通道INI

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

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

              CASE current_state IS

              WHEN st0=> ALE0<='0';START0<='0';LOCK<='0';OE0<='0';

              next_state<=st1; --0809初始化

              WHEN st1=> ALE0<='1';START0<='1';LOCK<='0';OE0<='0';

              next_state<=st2 ;--啟動采樣

              WHEN st2=> ALE0<='0';START0<='0';LOCK<='0'; OE0<='0';

              IF(EOC='1') THEN next_state<=st3;--EOC=1表明轉(zhuǎn)換結(jié)束

              ELSE next_state<=st2; END IF; --轉(zhuǎn)換未結(jié)束,繼續(xù)等待

              WHEN st3=> ALE0<='0';START0<='0';LOCK<='0';OE0<='1';

              next_state<=st4;--開啟OE,輸出轉(zhuǎn)換好的數(shù)據(jù)

              WHEN st4=> ALE0<='0';START0<='0';LOCK<='1';OE0<='1';next_state<=st0;

              WHEN OTHERS=>next_state<=st0;

              END CASE;

              IF CLK'EVENT AND CLK= '1' THEN

              ALE<=ALE0;START<=START0;LOCK0<=LOCK;OE<=OE0;--方法1:信號鎖存后輸出

              END IF;

              END PROCESS COM;

              REG:PROCESS(CLK)

              BEGIN

              IF(CLK'EVENT AND CLK='1') THEN current_state<=next_state; END IF;

              END PROCESS REG; --由信號current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REG

              LATCH1: PROCESS(LOCK) --此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入

              BEGIN

              IF LOCK='1' AND LOCK'EVENT THEN REGL<=D; END IF;

              END PROCESS LATCH1;

              END behav;

              -- 解:"【例8-2】根據(jù)圖8-6狀態(tài)圖,采用Moore型狀態(tài)機(jī),設(shè)計(jì)ADC0809采樣控制器" 方法2(使用狀態(tài)碼直接輸出型狀態(tài)機(jī))的VHDL程序代碼(【例8-7】的根據(jù)狀態(tài)編碼表8-1給出ADC0809數(shù)據(jù)采樣的狀態(tài)機(jī))如下:

              LIBRARY IEEE;

              USE IEEE.STD_LOGIC_1164.ALL;

              ENTITY AD0809 IS

              PORT( D: IN STD_LOGIC_VECTOR(7 DOWNTO 0);

              CLK,EOC: IN STD_LOGIC;

              ALE,START,OE,ADDA:OUT STD_LOGIC;

              c_state:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);

              Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

              END AD0809;

              ARCHITECTURE behav OF AD0809 IS

              SIGNAL current_state,next_state: STD_LOGIC_VECTOR(4 DOWNTO 0);

              CONSTANT st0: STD_LOGIC_VECTOR(4 DOWNTO 0):="00000";

              CONSTANT st1: STD_LOGIC_VECTOR(4 DOWNTO 0):="11000";

              CONSTANT st2: STD_LOGIC_VECTOR(4 DOWNTO 0):="00001";

              CONSTANT st3: STD_LOGIC_VECTOR(4 DOWNTO 0):="00100";

              CONSTANT st4: STD_LOGIC_VECTOR(4 DOWNTO 0):="00110";

              SIGNAL REGL: STD_LOGIC_VECTOR(7 DOWNTO 0);

              SIGNAL LOCK: STD_LOGIC;

              BEGIN

              ADDA<='1';Q<=REGL;START<=current_state(4);ALE<=current_state(3);

              OE<=current_state(2);LOCK<=current_state(1);c_state<=current_state;

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

              CASE current_state IS

              WHEN st0=> next_state<=st1; --0809初始化

              WHEN st1=> next_state<=st2; --啟動采樣

              WHEN st2=> IF(EOC='1') THEN next_state<=st3; --EOC=1表明轉(zhuǎn)換結(jié)束

              ELSE next_state<=st2; --轉(zhuǎn)換未結(jié)束,繼續(xù)等待

              END IF;

              WHEN st3=> next_state<=st4; --開啟OE,輸出轉(zhuǎn)換好的數(shù)據(jù)

              WHEN st4=> next_state<=st0;

              WHEN OTHERS=> next_state<=st0;

              END CASE;

              END PROCESS COM;

              REG: PROCESS(CLK)

              BEGIN

              IF (CLK'EVENT AND CLK='1') THEN current_state<=next_state;

              END IF;

              END PROCESS REG; --由信號current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程:REG

              LATCH1: PROCESS(LOCK)--此進(jìn)程中,在LOCK的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入

              BEGIN

              IF LOCK='1' AND LOCK'EVENT THEN REGL<=D;

              END IF;

              END PROCESS LATCH1;

              END behav;