EDA技術(shù)課后參考答案_第1頁
EDA技術(shù)課后參考答案_第2頁
EDA技術(shù)課后參考答案_第3頁
EDA技術(shù)課后參考答案_第4頁
EDA技術(shù)課后參考答案_第5頁
免費預(yù)覽已結(jié)束,剩余21頁可下載查看

下載本文檔

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

文檔簡介

1、第一章的英文全稱及其中文含義是什么?,其中文含義是“電子設(shè)計自動化”答: EDA是 Electronic Design Automation2 .什么叫EDA技術(shù)?簡述EDA技術(shù)的發(fā)展歷程。答:EDA技術(shù)有狹義和廣義之分,狹義EDAa術(shù)就是以大規(guī)??删幊踢壿嬈骷樵O(shè)計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達方式,以計算機、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實驗開發(fā)系統(tǒng)為設(shè)計工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件的方式設(shè)計的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化、邏輯布局布線、邏輯仿真, 直至完成對于特定目標芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子

2、系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù),或稱為IES/ASIC 自動設(shè)計技術(shù)。3 .簡述用EDA技術(shù)設(shè)計電路的設(shè)計流程。答 EDA 設(shè)計流程包括:設(shè)計準備、設(shè)計輸入、設(shè)計處理、設(shè)計校驗、器件編程、器件測試和設(shè)計驗證。4 . 什么叫”綜合”和”網(wǎng)表文件”?答 : (A) 在電子設(shè)計領(lǐng)域中綜合的概念可以表示為:將用行為和功能層次表達的電子系統(tǒng)轉(zhuǎn)換為低層次的便于具體實現(xiàn)的模塊組合裝配的過程。(1) 從自然語言轉(zhuǎn)換到VHDL 語言算法表示, 即 自然語言綜合。(2) 從算法表示轉(zhuǎn)換到寄存器傳輸級 (RegisterTransport Level ,RTL),即從行為域到結(jié)構(gòu)域的綜合,即行為綜合。(3)從RTL

3、級表示轉(zhuǎn)換到邏 輯門(包括觸發(fā)器 ) 的表示, 即邏輯綜合。(4) 從邏輯門表示轉(zhuǎn)換到版圖表示(ASIC 設(shè)計 ) , 或轉(zhuǎn)換到FPGA的配置網(wǎng)表文件,可稱為版圖綜合或結(jié)構(gòu)綜合。綜合在電子設(shè)計自動化中處于核心地位。(B) 網(wǎng)表文件是描述電路的連接關(guān)系的文件,一般以文本文件的形式存在。英文為netlist file 格式有 cdl, spice, aucdl.等5 .從使用的角度來講,EDA技術(shù)主要包括幾個方面的內(nèi)容?這幾個方面在整個電子系統(tǒng)的設(shè)計中分別起什么作用?答:EDA技術(shù)的學(xué)習主要應(yīng)掌握 4個方面的內(nèi)容: 大規(guī)??删幊踢壿嬈骷?硬件描述 語言; 軟件開發(fā)工具; 實驗開發(fā)系統(tǒng)。6 .目前

4、流行的主流廠家的EDA的軟件工具有哪些?比較這些EDA軟件的差異。答:(1)目前比較流行的主流廠家的EDA的軟件工具有 Altera的MAX+plusII、Quartus II 、Lattice 的 ispEXPERT、 Xilinx 的 Foundation Series 。(2) Max+plus II 是A1tera公司推出的一個使用非常廣泛的EDA軟件工具,它支持原理圖、VHDLL Verilog語言的文本文件,以及波形圖與EDIF等格式的文件作為設(shè)計輸入,并支持這些文件的任意混合設(shè)計。它具有門級仿真器,可以進行功能仿真和時序仿真,能夠產(chǎn)生精確的仿真結(jié)果。在適配之后,Max+plus

5、II生成供時序仿真用的Edif、VHDL和Verilog3 種不同格式的網(wǎng)表文件。Max+plus II 界面友好,使用便捷,被譽為業(yè)界最易學(xué)易用的EDA軟件,并支持主流的第三方EDAX具,支持除APEx20K系歹U之外的所有 A1tera公司的FPGA/CPLD大規(guī)模邏輯器件。Quartus II是A1tera公司新近推出的 EDAtU牛工具,其設(shè)計工具完全支持 VHDLF口 Verilog 的設(shè)計流程,其內(nèi)部嵌有VHDL、 Verilog 邏輯綜合器。第三方的綜合工具,如LeonardoSpectrum 、 Synplify pro 和 FPGA Compiler II 有著更好的綜合效果

6、,Quartus II 可以直接調(diào)用這些第三方工具,因此通常建議使用這些工具來完成VHDL/Verilog 源程序的綜合。同樣,Quartus II 具備仿真功能,也支持第三方的仿真工具,如Modelsim 。此外, Quartus II為Altera DSP開發(fā)包進行系統(tǒng)模型設(shè)計提供了集成綜合環(huán)境,它與MATLAB DSP Builder結(jié)合可以進行基于 FPGA勺DSP系統(tǒng)開發(fā),是DSP硬件系統(tǒng)實現(xiàn)的關(guān)鍵 EDAX具。Quartus II 還可與SOPC Builder結(jié)合,實現(xiàn) SOPC(統(tǒng)開發(fā)。ispExPERT是Lattice 公司的主要集成環(huán)境。通過它可以進行 VHDL Veril

7、og 及ABEL語言 的設(shè)計輸入、綜合、適配、仿真和在系統(tǒng)下載。ispExPERT是目前流行的EDA次件中最容易掌握的設(shè)計工具之一,它界面友好、操作方便、功能強大,并與第三方EDA工具兼容良好。Foundation Series是Xilinx 公司較成熟的集成開發(fā)EDAX具。它采用自動化的、完整的集成設(shè)計環(huán)境。Foundation 項目管理器集成Xilinx 實現(xiàn)工具,并包含了強大的書館SynopsysFPGA Express綜合系統(tǒng),是業(yè)界最強大的EDA設(shè)計工具之一。7.簡要闡述EDA技術(shù)的發(fā)展趨勢和應(yīng)用領(lǐng)域答:從目前的EDAa術(shù)來看,其發(fā)展趨勢是政府重視、使用普及、應(yīng)用文泛、工具多樣、軟

8、件功能強大。EDA的范疇包括:機械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、 軍事等各個領(lǐng)域,都有 EDA的應(yīng)用。第二章VHDL硬件描述語言1、簡述實體(ENTITY)、結(jié)構(gòu)體(ARCHITECTUREE與原理圖的關(guān)系。答:結(jié)構(gòu)來說實體就是原理圖的外觀,結(jié)構(gòu)體中的具體程序就是原理圖中的具體實現(xiàn)。2、子程序調(diào)用與元件例化有何區(qū)別,函數(shù)與過程在具體使用上有何不同。答:從硬件角度講,一個子程序的調(diào)用類似于一個元件模塊的例化,VHDL綜合器為子程序的每一次調(diào)用都生成一個電路邏輯塊。所不同的是,元件的例化將產(chǎn)生一個新的設(shè)計層次,而子程序調(diào)用只對應(yīng)于當前層次的一部分。函數(shù)和過程的不同在于:函數(shù)只有一

9、個輸出,只能通過函數(shù)體內(nèi)的 RETURNS句來實現(xiàn),函數(shù)體內(nèi)不能有信號賦值語句;而過程卻可以有不止一個輸出,而且是通過過程體內(nèi)的信號賦值語句或者變量賦值語句來實現(xiàn)的,過程體內(nèi)的RETURNS句沒有用處,因此不少過程都將其省略了。函數(shù)的調(diào)用只能通過表達式來實現(xiàn),過程的調(diào)用則是通過過程調(diào)用語句來實現(xiàn)的。3、什么是重載函數(shù)?重載算符有何用處?如何調(diào)用重載算符函數(shù)。答: ( 1 )什么是重載函數(shù)? 根據(jù)操作對象變換處理功能。( 2) 重載算符有何用處? 用于兩個不同類型的操作數(shù)據(jù)自動轉(zhuǎn)換成同種數(shù)據(jù)類型,并進行運算處理。( 3)如何調(diào)用重載算符函數(shù)?采用隱式方式調(diào)用,無需事先聲明。4、在VHDL程序中配

10、置有何用處?答: 配置可以把特定的結(jié)構(gòu)體關(guān)聯(lián)到一個確定的實體,正如配置一詞本身的含義一樣。配置語句就是用來為較大的系統(tǒng)設(shè)計提供管理和工程組織的。配置也是VHDL 設(shè)計實體中的一個基本單元,在綜合或仿真中,可以利用配置語句為確定整個設(shè)計提供許多有用信息??傊糜谠O(shè)置VHDL的工作參數(shù)以及工作模式。配置用來選擇實體的多個結(jié)構(gòu)體的哪一個被使用。5. 嵌套 BLOCK 的可視性規(guī)則是什么?以嵌套BLOCK 的語句方式設(shè)計三個并列的3 輸入或門。答:BLOC愿VHD中具有的一種劃分機制,這種機制允許設(shè)計者合理地將一個模塊分為數(shù)個區(qū)域,在每個塊都能對其局部信號、數(shù)據(jù)類型和常量加以描述和定義。任何能在結(jié)構(gòu)體

11、的說明部分進行說明的對象都能在BLOCK說明部分中進行說明。相關(guān)參考代碼:LIBRARY IEEE;USE triple_input ISPORT (A :IN STD_LOGIC;B :IN STD_LOGIC;C :IN STD_LOGIC;OUTA :OUT STD_LOGIC);END triple_input;ARCHITECTURE ADO OF triple_input ISBEGINOUTA<= A AND B AND C;END ADO;6. 簡述函數(shù)與過程的異同點,過程與進程的異同點。答:子程序有兩種類型,即過程( PROCEDURE)函數(shù)(FUNCTION)函數(shù)和過

12、程都是串行的。它們的區(qū)別在于:過程的調(diào)用可以通過其界面獲得多個返回值,而函數(shù)只能返回一個值;在函數(shù)入口中,所有參數(shù)都是輸入?yún)?shù),而過程有輸入?yún)?shù)、輸出參數(shù)和雙向參數(shù);過程一般被看作一種語句結(jié)構(gòu),而函數(shù)通常是表達式的一部分;過程可以單獨存在,而函數(shù)通常作為語句的一部分調(diào)用。過程和進程的相同點:只能使用順序語句,可以單獨存在。不同點:過程不能像進程那樣可以從本結(jié)構(gòu)體的其他塊或進程結(jié)構(gòu)中直接讀取信號值或者信號賦值。7. 判斷下列VHDL 標識符是否合法,如果不合法則指出原因:16#0FA#, 10#12F#, 8#789#,8#356#, 2#0101010#, 74HC245, CLR/RESET

13、,D100%。答:識符用法規(guī)定:( 1)只能包含英文字母,數(shù)字,下劃線(2)標識符的首字符只能是字母。故:(1) 16#0FA搟昔在首字符是數(shù)字,且包含非法字符" # "。10#12F#、8#789#, 8#356# ,2#0101010#, 74HC245也是犯同一錯誤。(2) 74HC574,CLR/RESET,IN4/SCLK,D100% 都是非法,包含非法字符.8、討論數(shù)據(jù)對象信號與變量間的異同處,說明它們的使用對所形成的硬件結(jié)構(gòu)有何影響。答:在VHDL中,對象是指用來保持數(shù)據(jù)的一些客體單元。信號跟變量是 VHDL中的重要客體。信號是指在設(shè)計實體中數(shù)據(jù)交換的一種手段

14、,采用信號對象可以把設(shè)計實體連接在一起形成模塊。 在硬件電路中代表一條硬件連線,有時信號會被綜合成一個寄存器。變量主要是對暫時數(shù)據(jù)進行局部存儲,它是一個局部量。信號與變量在使用前都必需先聲明后使用,否則會產(chǎn)生編譯錯誤。信號可以architecture 、 package、 entitiy 中聲明,是全局量可以在全局使用。變量可以process 、 function 、 procedure 中聲明,也只能在process 、 function 、procedur中使用不是全局變量。他們之間而主要區(qū)別有:信號賦值至少要有8延時;而變量賦值沒有。信號除當前值外有許多相關(guān)的信息,如歷史信息和投影波形;

15、而變量只有當前值。 進程對信號敏感而不對變量敏感。信號可以是多個進程的全局信號;而變量只在定義他們的順序域可見(共享變量除外)。信號是硬件中連線的抽象描述,他們的功能是保存變化的數(shù)據(jù)值和連接子元件,信號在元件的端口連接元件。變量在硬件中沒有類似的對應(yīng)關(guān)系,他們用于硬件特性的高層次建模所需要的計算中。從綜合后所對應(yīng)的硬件電路結(jié)構(gòu)來看,信號一般將對應(yīng)更多的硬件結(jié)構(gòu),但在許多情況下, 信號和變量并沒有什么區(qū)別。例如在滿足一定條件的進程中,綜合后它們都能引入寄存器。這時它們都具有能夠接受賦值這一重要的共性,而VHD夕合器并不理會它們在接受賦值時存在的延時特性。9. 運算符重載函數(shù)通常要調(diào)用轉(zhuǎn)換函數(shù),以

16、便能夠利用已有的數(shù)據(jù)類型。下面給出一個新的數(shù)據(jù)類型AGE, 并且下面的轉(zhuǎn)換函數(shù)已經(jīng)實現(xiàn):function CONV_INTEGER(ARG:AGEre)turnINTEGER請仿照本章中的例子,利用此函數(shù)編寫一個“ +”運算符重載函數(shù),支持下面的運算: SIGNALa, c : AGE ;c <= a + 20答:function “ +” (L : AGE, R: integer) return AGE isBeginreturn CONV_AGE(L + CONV_INTEGER(R);End;10、設(shè)計16位比較器,比較器的輸入是 2個待比較的16位數(shù):A=A1"A0,

17、B=B15- B0, 輸出是D、E、F。當A=B時,D=1 ;當A>B時,E=1 ;當A<B時,F(xiàn)=1 (參考方法:用常 規(guī)的比較器設(shè)計方法,即直接利用關(guān)系操作符進行編程設(shè)計,或者利用減法器來完成,通過減法運算后的符號和結(jié)果來判別兩個被比較值的大小)。答:略library ieee;use use entity compare is port(a:in std_logic_vector(16 downto 0);b: in std_logic_vector(16 downto 0);X,Y,Z: out std_logic);end compare;architecture beh

18、ave of compare is beginprocess(a,b)beginif (a > b) thenX <='1'Y <='0'Z <='0'elsif(a < b) thenX <='0'Y <='1'Z <='0'ELSEX <='0'Y <='0'Z <='1'end if;end process;end behave;11. 在 VHDL 編程中,為什么應(yīng)盡可能使用子類

19、型對類型的取值范圍給予限定。答:由于子類型與其基本數(shù)據(jù)類型屬同一數(shù)據(jù)類型,因此屬于子類型的和屬于基本數(shù)據(jù)類型的數(shù)據(jù)對象間的賦值和被賦值可以直接進行,不必進行數(shù)據(jù)類型的轉(zhuǎn)換。利用子類型定義數(shù)據(jù)對象的好處是,除了使程序提高可讀性和易處理外,其實質(zhì)性的好處還在于有利于提高綜合的優(yōu)化效率,這是因為綜合器可以根據(jù)子類型所設(shè)的約束范圍,有效地推知參與綜合的寄存器的最合適的數(shù)目。12、判斷下面3 例 VHDL 程序中是否有錯誤,若有錯誤則指出錯誤原因:程序 1Signal A, EN : std_logic; Process (A, EN) Variable B : std_logic; Begin if

20、EN = 1 then B <= A; end if;end process;程序 2Architecture one of sample is variable a, b, c : integer; begin c <= a + b;end;程序 3 library ieee;use mux21 isport ( a, b : in std_logic;sel : in std_logic;c : out std_logic;);end sam2; architecture one of mux21 isbegin if sel = '0' then c := a

21、;else c := b;end if;end two; 答:程序1:將“B<=A改成"B:=A”程序 2:-將"c<=a+b"改成"c:=a+b”程序3 :將“)”改成“)” 將“sam? 改成“entitymux21' 增加“ process(a,b,sel) begin if sel= '0' then c:=a; else c:=b; end if;- 應(yīng)改成“ ifsel= 'O' then c<=a; else c<=b; end if;“ 增力口 "end proce

22、ss;" 將 "two" 改成“ architecture one ”13、分別用CASE 語句和 IF 設(shè)計 3-8 譯碼器。答:CASE 句:LIBRARY IEEE;USE decoder38 ISPORT (EN:IN STD_LOGIC;A0,A1,A2:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY decoder38;ARCHITECTUR bhv OF decoder38 ISSIGNAL S:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINS<=A2&

23、amp;A1&A0;PROCESS (EN,S)BEGINIF (EN= 1 ) THENCASE S ISWHEN “000” =>Y<=” 00000001”WHEN “001” =>Y<=” 00000010”WHEN “010” =>Y<=” 00000100”WHEN “011” =>Y<=” 00001000”WHEN “100” =>Y<=” 00010000”WHEN “101” =>Y<=” 00100000”WHEN “110” =>Y<=” 01000000”WHEN “111”

24、=>Y<=”;WHEN OTHERS=>NULL;END CASE;END IF;END PROCESS;END ARCHITECTURE bhv;IF 語句:LIBRARY IEEE;USE decoder38 ISPORT (EN:IN STD_LOGIC;A0,A1,A2:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY decoder38;ARCHITECTUR bhv OF decoder38 ISBEGINPROCESS (EN,A2,A1,A0)BEGINIF (EN= 1 ) THENIF(A

25、2= 0 ) THENIF(A1=0) THENIF(A0=0 ) THENY<=00000001;ELSEY<=00000010;ELSIF(A1=1 ) THENIF(A0=0 ) THENY<=00000100;ELSEY<=00001000;END IF;END IF;) THEN) THEN0 ) THEN 00010000001000001 ) THEN 0 ) THEN 01000000;ELSIF(A2=1IF(A1=0IF(A0=Y<=ELSEY<=END IF;ELSIF(A1=IF(A0=Y<=ELSEY<=END IF;E

26、ND IF;END IF;END IF;END PROCESS;END ARCHITECTUREbhv;library ieee;use sss isport (a: in std_logic_vector(2 downto 0);cout:out std_logic_vector(7 downto 0);end ;architecture one of sss isbeginprocess(a)beginif a="000" then cout <=""elsif a="001" then cout <="&q

27、uot;elsif a="010" then cout <=""elsif a="011" then cout <=""elsif a="100" then cout <=""elsif a="101" then cout <=""elsif a="110" then cout <=""elsif a="111" then cout <=&q

28、uot;01111111"end if;end process;end;14、若在進程中加入WAIT 語句,應(yīng)注意哪幾個方面的問題。答:應(yīng)注意以下問題:已列出敏感信號的進程中不能使用任何形式的WAIT語句;一般情況下,只有WAITUNTIL格式的等待語句可以被綜合器所接受,其余語句格式只能在VHDL仿真器中使用;在使用WAIT ON句的進程中,敏感信號量應(yīng)寫在進程中的WAIT ON句后面;在不使用WAITON句的進程中,敏感信號量應(yīng)在開頭的關(guān)鍵詞PROCESS面的敏感信號表中列出。15、圖中的f_adder 是一位全加器,cin 是輸入進位,cout 是輸出進位。試給出此電路的VHD

29、L苗述。圖 習題 15 圖答:library ieee;use entity ff isport (x,y,clock:in std_logic;sum:out std_logic);end;architecture one of ff iscomponent f_adder port(a,b,ci:in std_logic; su,co:out std_logic); end component; component df port(d,cl:in std_logic;q1:out std_logic);end component;signal cout,tmp:std_logic; beg

30、inu1:f_adder port map(a=>x,b=>y,ci=>tmp,su=>sum,co=>cout);u2:df port map(d=>cout,cl=>clock,q1=>tmp); end architecture one;- - 底層文件1: D 觸發(fā)器library ieee;use entity df isport (d,cl:in std_logic;q1:out std_logic);end;architecture two of df is signal qq:std_logic; begin process(cl

31、,qq) begin if cl 'event and cl='1' then qq<=d;end if;end process;q1<=qq;end architecture two;- - 底層文件2:全加器library ieee;use entity f_adder isport (a,b,ci:in std_logic;su,co:out std_logic);end;architecture three of f_adder iscomponent h_adderport(a1,b1:in std_logic;so,cou:out std_log

32、ic);end component;component or2aport(a1,b1:in std_logic;c:out std_logic);end component;signal d,e,f:std_logic;beginu1:h_adder port map(a1=>a,b1=>b,cou=>d,so=>e);u2:h_adder port map(a1=>e,b1=>ci,cou=>f,so=>su);u3:or2a port map(a1=>d,b1=>f,c=>co);end architecture three

33、;- - 底層文件2-1 :半加器library ieee;use entity h_adder isport (a1,b1:in std_logic;so,cou:out std_logic);end;architecture four of h_adder isbeginso<=not(a1 xor(not b1);cou<=a1 and b1;end architecture four;- - 底層文件2-2:或門library ieee;use entity or2a isport (a1,b1:in std_logic;c:out std_logic);end;archi

34、tecture five of or2a isbeginc<=a1 or b1;end architecture five;16. 設(shè)計 5 位可變模數(shù)計數(shù)器。設(shè)計要求:令輸入信號M1 和 M0 控制計數(shù)模,即令(M1,M0)=(0, 0)時為模 19 加法計數(shù)器,(M1, M0)=(0, 1)時為模 4計數(shù)器,(M1, M0) =(1 , 0) 為模 10 加法計數(shù)器,(M1, M0)=(1 , 1)時為模 6 計數(shù)器。答: Entity mod_cal isPort(M1,M0:in bit;Count:out std_logic_vector(4 downto 0);Clk:in

35、std_logic);End entity;Architecture behav of mod_cal isSignal count1:std_logic_vector(4 downto 0);BeginProcess(clk,M1,M0)Variable sel is bit_vector(1 downto 0);BeginSel:=M1&M0;If clk event and clk= 1 thenCount1<=Count1+1;Case sel isWhen“ 00” =>if Count1= ” 10011” then Count1<= ” 00000”;E

36、nd if;When“ 01 ” =>if Count1= ” 00100” then Count1<= ” 00000”;End if;When“ 10” =>if Count1= ” 01010” then Count1<= ” 00000”;End if;When“ 11 ” =>if Count1= ” 00110” then Count1<= ” 00000”;End if;End case;End if;End process;Count<=count1;End behav;17. 什么是 VHDL 結(jié)構(gòu)體的行為描述風格,敘述行為描述的優(yōu)缺

37、點。答: 如果 VHDL 的結(jié)構(gòu)體只描述了所希望電路的功能或者說電路行為,而沒有直接指明或涉及實現(xiàn)這些行為的硬件結(jié)構(gòu),包括硬件特性、連線方式、邏輯行為方式,則稱為行為風格的描述或行為描述。優(yōu)點:抽象程度最高,最能體現(xiàn)VHDL苗述高層次結(jié)構(gòu)和系統(tǒng)的能力。缺點:只表示輸入與輸出間轉(zhuǎn)換的行為,它不包含任何結(jié)構(gòu)信息。18結(jié)構(gòu)化描述與調(diào)用子程序有何異同點, 描述需要哪些語句?VHDL程序中是如何進行結(jié)構(gòu)化描述的?結(jié)構(gòu)化答:略19 .試舉一例,在一個結(jié)構(gòu)體中同時含有3種不同描述風格的 VHDL語句結(jié)構(gòu)。答:略20 . 以數(shù)據(jù)流的方式設(shè)計一個2 位比較器,再以結(jié)構(gòu)描述方式將已設(shè)計好的比較器連接起來構(gòu)成一個8

38、 位比較器答:略21 .采用VHDLLS行數(shù)字系統(tǒng)設(shè)at有哪些特點?答:HDL系統(tǒng)設(shè)計的基本點:(1)與其他硬件描述語言相比,VHDLM有以下特點:( 2)功能強大、設(shè)計靈活。( 3)強大的系統(tǒng)硬件描述能力。( 4)易于共享和復(fù)用。22 . VHDL 的基本程序結(jié)構(gòu)由幾部分組成?各部分的功能是什么?答:由 5 個部分組成,包含實體、結(jié)構(gòu)體、配置、程序包和庫。實體作為一個設(shè)計實體的組成部分,其功能是對這個設(shè)計實體與外部電路進行接口描述。結(jié)構(gòu)體(ARCHITECTURE)是設(shè)計實體的一個重要部分,結(jié)構(gòu)體將具體實現(xiàn)一個實體。在利用VHDL 進行工程設(shè)計中,為了提高設(shè)計效率以及使設(shè)計遵循某些統(tǒng)一的語言

39、標準或數(shù)據(jù)格式,有必要將一些有用的信息匯集在一個或幾個庫中以供調(diào)用,這些信息可以是預(yù)先定義好的數(shù)據(jù)類型、子程序等設(shè)計單元的集合體(程序包)或預(yù)先設(shè)計好的各種設(shè)計實體(元件庫程序包)。因此可以把庫看成是一種用來存儲預(yù)先完成的程序包、數(shù)據(jù)集合體和元件的倉庫。已在設(shè)計實體中定義的數(shù)據(jù)類型、子程序或數(shù)據(jù)對象對于其它設(shè)計實體是不可用的,或者說是不可見的。為了使已定義的常數(shù)、數(shù)據(jù)類型、元件調(diào)用說明以及子程序能被更多的VHDL 設(shè)計實體方便地訪問和共享,可以將它們收集在一個VHDL 程序包中,多個程序包可以并入一個VHDL 庫中, 使之適用于更一般的訪問和調(diào)用范圍,這一點對于大系統(tǒng)開發(fā)多個或多組開發(fā)人員同步

40、并行工作顯得尤為重要。配置可以把特定的結(jié)構(gòu)體關(guān)聯(lián)到一個確定的實體,正如配置一詞本身的含義一樣。配置也是VHDL 設(shè)計實體中的一個基本單元,在綜合或仿真中,可以利用配置語句為確定整個設(shè)計提供許多有用信息。23 .說明端口模式 BUFFER INOUT有何異同點?答:INOUT為輸入輸出雙向端口,即從端口內(nèi)部看,可以對端口進行賦值,即輸出數(shù)據(jù)。也可以從此端口讀入數(shù)據(jù),即輸入。BUFFE時緩沖端口,功能與INOUT類似,區(qū)別在于當需要讀入數(shù)據(jù)時,只允許內(nèi)部回讀內(nèi)部產(chǎn)生的輸出信號,即反饋。舉個例子,設(shè)計一個計數(shù)器的時候可以將輸出的計數(shù)信號定義為BUFFER這樣回讀輸出信號可以做下一計數(shù)值的初始值。24

41、 .用VHD計一個實現(xiàn)三輸入的多數(shù)表決器。答: library ieee;useentity bjq3 isport(a,b,c:in std_logic;y:out std_logic);end;architecture x of bjq3 issignal ty:std_logic_vector(2 downto 0);beginty<=a&b&c;with ty selecty<='0' when "000",'0' when "001",'0' when "01

42、0",'1' when "011",'0' when "100",'1' when "101",'1' when "110",'1' when "111",'X' when others;end;JK 觸發(fā)器。25 .用PROCES第句描述帶同步復(fù)位的答: library ieee;useentity jk_ff isport(clk,reset,j,k:in std_logic;q,qb:

43、out std_logic);end;architecture behave of jk_ff issignal tq,tqb:std_logic;beginq<=tq;qb<=tqb;process(clk,reset)beginif (clk'event and clk='1') thenif (reset='0') thentq<='0'tqb<='1'elsif (j='0')and(k='0') then tq<=tq;tqb<=tqb;elsi

44、f (j='0')and(k='1') then tq<='0'tqb<='1'elsif (j='1')and(k='0') then tq<='1'tqb<='0'elsif (j='1')and(k='1') thentq<=not tq;tqb<=not tqb;end if;end if;end process;end;26 . 用并行信號賦值語句設(shè)計8 選 1 數(shù)據(jù)選擇器。答: libra

45、ry ieee;useentity xzq8 isport(x:in std_logic_vector(7 downto 0);sel:in std_logic_vector(2 downto 0);f:out std_logic);end;architecture a of xzq8 isbeginf<=x(0) when sel="000" elsex(1) when sel="001" elsex(2) when sel="010" elsex(3) when sel="011" elsex(4) wh

46、en sel="100" elsex(5) when sel="101" elsex(6) when sel="110" elsex(7) when sel="111" else'X'end;27 .用VHDL設(shè)計一個三態(tài)輸出的雙 4選1數(shù)據(jù)選擇器。其地址信號共用,且各有個低電平有效的使能端答:LIBRARY IEEE;USE DUAL_MUX_41 ISPORT(A,B,C,D:IN STD_LOGIC;ENA_N,ENB_N:IN STD_LOGIC;S :IN STD_LOGIC_VECTOR

47、(1 DOWNTO 0);OUTA,OUTB:OUT STD_LOGIC);ENDARCHITECTURE A OF DUAL_MUX_41 ISSIGNAL P,Q:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINP<=ENA_N & S;Q<=ENB_N & S;WITH P SELECTOUTA<=A WHE“N000”,B WHEN ” 001”,C WHE” N 010”,D WHE” N 011”, Z WHEN OTHERS;WITH Q SELECTOUTB<= A WHE” N000”,B WHE”N 001”,C

48、WHE” N 010”,D WHE” N 011”, Z WHEN OTHERS;END A;28 .用VHDL設(shè)計實現(xiàn)由兩輸入端與非門構(gòu)成的1位全加器。答:略29 .用VHDL設(shè)計實現(xiàn)一百進制的計數(shù)器。答: LIBRARY IEEE;USE counter ISGENERIC( count_value: INTEGER:=9);PORT (clk,clr,en: IN STD_LOGIC;co: OUT STD_LOGIC;count: OUT INTEGER RANGE 0 TO count_value);END counter;ARCHITECTURE a OF counter ISSI

49、GNAL cnt: INTEGER RANGE 0 TO count_value;BEGINPROCESS (clk, clr)BEGINIF clr = '1' THENcnt <= 0;ELSIF (clk'EVENT AND clk = '1') THENIF en = '1' THENIF cnt = count_value THENcnt <= 0;ELSEcnt <= cnt + 1;END IF;END IF;END IF;END PROCESS;co<= 1 WHEN cnt=count_value

50、 ELSE 0;count <= cnt;END a;library ieee;useuseuseentity counter1 isport( clk,clr,en: in std_logic;co:out std_logic;count1: out integer range 0 to 9;count2: out integer range 0 to 9);end counter1;architecture rtl of counter1 is signal en1: std_logic;component counter isgeneric( count_value: intege

51、r);port (clk,clr,en: in std_logic; co: out std_logic;count: out integer range 0 to count_value);end component;beginaa: counter generic map( count_value => 9)port map(clk,clr,en, en1, count1);bb: counter generic map( count_value=>9)port map(clk=>clk,clr=>clr, en=>en1, co=>co,count=&

52、gt;count2); end rtl;30 .比較CASE句與WITH_SELEC語句,敘述它們的異同點。答:相同點:CASEBg句中各子句的條件不能有重疊,必須包容所有的條件;WITH_SECLECT語句也不允許選擇值有重疊現(xiàn)象,也不允許選擇值涵蓋不全的情況。另外, 兩者對子句各選擇值的測試都具有同步性,都依賴于敏感信號的變化。不同點:CASE語句只能在進程中使用,至少包含一個條件語句,可以有多個賦值目標; WITH_SECLECT句根據(jù)滿足的條件,對信號進行賦值,其賦值目標只有一個,且必須是信 號。31、將以下程序段轉(zhuǎn)換為 WHEN_ELSE句:PROCES( Sa,b,c,d )BEG

53、INIF a= '0' AND b='1' THENnext1 <= "1101"ELSIF a='0' THEN next1 <= dELSIF b='1' THEN next1 <= cELSENext1<= "1011"END IF;END PROCES; S答:原程序轉(zhuǎn)換如下:ARCHITECTURE one OF mux ISBEGINPROCESS(a,b,c,d)BEGINNEXT1 <="110"1WHEN a= 0 AND

54、b= 1 ELSEd WHEN a= 0 ELSEc WHEN b= 1 ELSE"1011"END one;END PROCESS;32 .以下為一時序邏輯模塊的VHDL結(jié)構(gòu)體描述,請找出其中的錯誤:ARCHITECTURE one OF com1BEGINVARIABLE a,b,c,clock:STD_LOGIC ;pro1:PROCESSBEGINIF NOT(clock'EVENT AND clock='1')THEN x<= a xor b or cEND IF;END PROCESS;END;答:33 . VHDL程序設(shè)計中用 W

55、ITH_SELECT_WH*描述4個16位至1個16位輸出的4選1 多路選擇器。答: LIBRARY IEEE;USE mux ISPORT( dina : IN STD_LOGIC_VECTOR(0 to 15);dinb : IN STD_LOGIC_VECTOR(0 to 15);dinc : IN STD_LOGIC_VECTOR(0 to 15);dind : IN STD_LOGIC_VECTOR(0 to 15);sel: IN STD_LOGIC_VECTOR(0 to 1);dout : OUT STD_LOGIC_VECTOR(0 to 15);END mux;ARCHIT

56、ECTURE rtl OF mux ISBEGINwith sel selectdout<=dina WHEN "00",dinb WHEN "01",dinc WHEN "10",dind WHEN "11", "ZZZZZZZZZZZZZZZZ" when others;END rtl;34、哪些情況下需要用到程序包STD_LOGIC_UNSIGNED式舉一例。答:調(diào)用數(shù)據(jù)類型變換函數(shù)或重載運算符函數(shù)時;定義UNSIGNED1型的數(shù)據(jù)時。舉例如下:LIBRARY IEEE;USE US

57、EIF TEMP=" THEN TEMP:= 00000000';ELSE TEMP:=TEMP+ 16;END IF; 35 .為什么說一條并行賦值語句可以等效為一個進程,如果是這樣的話,怎樣實現(xiàn)敏感信 號的檢測。答:因為信號賦值語句的共同點是賦值目標必須都是信號,所以賦值語句與其它并行語句一樣,在結(jié)構(gòu)體內(nèi)的執(zhí)行是同時發(fā)生的,與它們的書寫順序沒有關(guān)系,所以每一信號賦值語句都相當于一條縮寫的進程語句。由于這條語句的所有輸入信號都被隱性地列入此縮寫進程的 敏感信號表中,故任何信號的變化都將相關(guān)并行語句的賦值操作,這樣就實現(xiàn)了敏感信號的檢測。36 .給出1位全減器的VHDL苗述,

58、要求:(1)類似于1位全加器的設(shè)計方法,首先設(shè)計1位半減器,然后用例化語句將它們連接起來,圖 中h_suber是半減器,diff是輸出差,s_out是借位輸出,sub_in 借位輸入; (2)直接根據(jù)全減器的真值表進行設(shè)計;(3)以1位全減器為基本硬件,構(gòu)成串行借位的8位減法器,要求用例化語句和生成語句來完成此項設(shè)計(減法運算是x - y - sun_in =diffr) 。圖36題圖表全減器真值表答:(1)先設(shè)計一個半減器X y00011011diff0110S_out0100Library ieee;use h_suber is port (x,y : in std_logic;diff,s_out : out std_logic);end entity ;arch

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論