EDA技術(shù)課后參考答案陳炳權(quán),曾慶立_第1頁
EDA技術(shù)課后參考答案陳炳權(quán),曾慶立_第2頁
EDA技術(shù)課后參考答案陳炳權(quán),曾慶立_第3頁
EDA技術(shù)課后參考答案陳炳權(quán),曾慶立_第4頁
EDA技術(shù)課后參考答案陳炳權(quán),曾慶立_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、EDA技術(shù)及實(shí)例開發(fā)教程課后習(xí)題第一章 緒論(7題)1.EDA的英文全稱及其中文含義是什么?答:EDA是Electronic Design Automation,其中文含義是“電子設(shè)計(jì)自動(dòng)化”。2.什么叫EDA技術(shù)?簡述EDA技術(shù)的發(fā)展歷程。答:EDA技術(shù)有狹義和廣義之分,狹義EDA技術(shù)就是以大規(guī)模可編程邏輯器件為設(shè)計(jì)載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)模可編程邏輯器件的開發(fā)軟件及實(shí)驗(yàn)開發(fā)系統(tǒng)為設(shè)計(jì)工具,通過有關(guān)的開發(fā)軟件,自動(dòng)完成用軟件的方式設(shè)計(jì)的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化、邏輯布局布線、邏輯仿真,直至完成對(duì)于特定目標(biāo)芯片的適

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

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

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

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

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

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

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

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

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

11、說明部分中進(jìn)行說明。相關(guān)參考代碼:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY 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 IS BEGIN OUTA<= A AND B AND C; END ADO;6.簡述函數(shù)與過程的異同點(diǎn),過程與

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

13、F#,8#789#,8#356#,2#0101010#,74HC245,74HC574,CLR/RESET,IN 4/SCLK, D100%。答:識(shí)符用法規(guī)定:(1)只能包含英文字母,數(shù)字,下劃線(2)標(biāo)識(shí)符的首字符只能是字母。故:(1)16#0FA#錯(cuò)在首字符是數(shù)字,且包含非法字符“#“。 10#12F#、8#789#,8#356#,2#0101010#,74HC245也是犯同一錯(cuò)誤。(2)74HC574,CLR/RESET,IN4/SCLK,D100%都是非法,包含非法字符.8、討論數(shù)據(jù)對(duì)象信號(hào)與變量間的異同處,說明它們的使用對(duì)所形成的硬件結(jié)構(gòu)有何影響。答:在VHDL中,對(duì)象是指用來保持?jǐn)?shù)

14、據(jù)的一些客體單元。信號(hào)跟變量是VHDL中的重要客體。信號(hào)是指在設(shè)計(jì)實(shí)體中數(shù)據(jù)交換的一種手段,采用信號(hào)對(duì)象可以把設(shè)計(jì)實(shí)體連接在一起形成模塊。在硬件電路中代表一條硬件連線,有時(shí)信號(hào)會(huì)被綜合成一個(gè)寄存器。變量主要是對(duì)暫時(shí)數(shù)據(jù)進(jìn)行局部存儲(chǔ),它是一個(gè)局部量。信號(hào)與變量在使用前都必需先聲明后使用,否則會(huì)產(chǎn)生編譯錯(cuò)誤。信號(hào)可以architecture、package、entitiy中聲明,是全局量可以在全局使用。變量可以process、function、procedure中聲明,也只能在process、function、procedur中使用不是全局變量。他們之間的主要區(qū)別有:信號(hào)賦值至少要有延時(shí);而變量賦

15、值沒有。信號(hào)除當(dāng)前值外有許多相關(guān)的信息,如歷史信息和投影波形;而變量只有當(dāng)前值。進(jìn)程對(duì)信號(hào)敏感而不對(duì)變量敏感。信號(hào)可以是多個(gè)進(jìn)程的全局信號(hào);而變量只在定義他們的順序域可見(共享變量除外)。信號(hào)是硬件中連線的抽象描述,他們的功能是保存變化的數(shù)據(jù)值和連接子元件,信號(hào)在元件的端口連接元件。變量在硬件中沒有類似的對(duì)應(yīng)關(guān)系,他們用于硬件特性的高層次建模所需要的計(jì)算中。 從綜合后所對(duì)應(yīng)的硬件電路結(jié)構(gòu)來看,信號(hào)一般將對(duì)應(yīng)更多的硬件結(jié)構(gòu),但在許多情況下,信號(hào)和變量并沒有什么區(qū)別。例如在滿足一定條件的進(jìn)程中,綜合后它們都能引入寄存器。這時(shí)它們都具有能夠接受賦值這一重要的共性,而VHDL綜合器并不理會(huì)它們?cè)诮邮苜x

16、值時(shí)存在的延時(shí)特性。9. 運(yùn)算符重載函數(shù)通常要調(diào)用轉(zhuǎn)換函數(shù),以便能夠利用已有的數(shù)據(jù)類型。下面給出一個(gè)新的數(shù)據(jù)類型AGE,并且下面的轉(zhuǎn)換函數(shù)已經(jīng)實(shí)現(xiàn):function CONV_INTEGER(ARG:AGE) return INTEGER;請(qǐng)仿照本章中的例子,利用此函數(shù)編寫一個(gè)“+”運(yùn)算符重載函數(shù),支持下面的運(yùn)算:SIGNALa,c : AGE;.c <= a + 20;答:function “+”(L : AGE, R: integer) return AGE isBeginreturn CONV_AGE(L + CONV_INTEGER(R);End;10、設(shè)計(jì)16 位比較器,比較器

17、的輸入是2個(gè)待比較的16位數(shù):A=A15A0, B=B15B0,輸出是 D、E、F。當(dāng) A=B 時(shí), D=1;當(dāng) A>B 時(shí), E=1;當(dāng) A<B時(shí),F(xiàn)=1(參考方法:用常規(guī)的比較器設(shè)計(jì)方法,即直接利用關(guān)系操作符進(jìn)行編程設(shè)計(jì),或者利用減法器來完成,通過減法運(yùn)算后的符號(hào)和結(jié)果來判別兩個(gè)被比較值的大?。?。答:略library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity compare is    p

18、ort(a: in std_logic_vector(3 downto 0);         b: in std_logic_vector(3 downto 0);         X,Y,Z: out std_logic);end compare;architecture behave 

19、;of compare is  begin  process(a,b)  begin    if (a > b) then                        X <=

20、'1'                        Y <='0'                    &#

21、160;    Z <='0'    elsif(a < b) then                            X <='0'

22、;                           Y <='1'                   

23、         Z <='0'                ELSE                    

24、60;                X <='0'                           Y <='

25、;0'                            Z <='1'            end if;   

26、     end process;    end behave;11. 在 VHDL 編程中,為什么應(yīng)盡可能使用子類型對(duì)類型的取值范圍給予限定。答:由于子類型與其基本數(shù)據(jù)類型屬同一數(shù)據(jù)類型,因此屬于子類型的和屬于基本數(shù)據(jù) 類型的數(shù)據(jù)對(duì)象間的賦值和被賦值可以直接進(jìn)行,不必進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。利用子類型定義數(shù)據(jù)對(duì)象的好處是,除了使程序提高可讀性和易處理外,其實(shí)質(zhì)性的好處還在于有利于提高綜合的優(yōu)化效率,這是因?yàn)榫C合器可以根據(jù)子類型所設(shè)的約束范圍,有效地推知參與綜合的寄存器的最合適的數(shù)目。12

27、、判斷下面 3 例 VHDL 程序中是否有錯(cuò)誤,若有錯(cuò)誤則指出錯(cuò)誤原因:程序1Signal A, EN : std_logic; Process (A, EN)Variable B : std_logic;Beginif EN = 1 thenB <= A;end if;end process;程序 2Architecture one of sample isvariable a, b, c : integer;beginc <= a + b;end;程序 3library ieee;use ieee.std_logic_1164.all;entity mux21 isport (

28、 a, b : in std_logic; sel : in std_logic; c : out std_logic;); end sam2;architecture one of mux21 isbeginif sel = '0' then c := a;else c := b;end if;end two;答:程序1: 將“B<=A”改成“B:=A”程序2:-將“c<=a+b”改成“c:=a+b”程序3: 將“;)”改成“)” 將“sam2”改成“entity mux21” 增加“process(a,b,sel) beginif sel= '0'

29、; then c:=a; else c:=b; end if; -應(yīng)改成“if sel= '0' then c<=a; else c<=b; end if;”增加“end process;” 將“two”改成“architecture one”13、分別用 CASE 語句和 IF設(shè)計(jì)3-8譯碼器。答:CASE語句:module decoder38(input 2:0code,output reg7:0result);always(*)begincase(code)3'b000: result = 8'h01;3'b001: result =

30、8'h02;3'b010: result = 8'h04;3'b011: result = 8'h08;3'b100: result = 8'h10;3'b101: result = 8'h20;3'b110: result = 8'h40;3'b111: result = 8'h80;endcaseendendmoduleIF語句:module decoder38(input 2:0code,output reg7:0result);always(*)beginif(code2)if(co

31、de1)if(code0)result = 8'h80;elseresult = 8'h40;elseif(code0)result = 8'h20;elseresult = 8'h10;elseelseif(code1)if(code0)result = 8'h08;elseresult = 8'h04;elseif(code0)result = 8'h02;elseresult = 8'h01;elseendendmodule14、若在進(jìn)程中加入 WAIT語句,應(yīng)注意哪幾個(gè)方面的問題。答:應(yīng)注意以下問題:已列出敏感信號(hào)的進(jìn)程中

32、不能使用任何形式的WAIT語句;一般情況下,只有WAIT UNTIL格式的等待語句 可以被綜合器所接受,其余語句格式只能在VHDL仿真器中使用;在使用WAIT ON語句的進(jìn)程中,敏感信號(hào)量應(yīng)寫在進(jìn)程中的WAIT ON語句后面;在不使用WAIT ON語句的進(jìn)程中,敏感信號(hào)量應(yīng)在開頭的關(guān)鍵詞PROCESS后面的敏感信號(hào)表中列出。15、圖2.15中的 f_adder是一位全加器,cin 是輸入進(jìn)位,cout 是輸出進(jìn)位。試給出此電路的VHDL描述。圖2.15 習(xí)題15圖答:略16. 設(shè)計(jì)5位可變模數(shù)計(jì)數(shù)器。設(shè)計(jì)要求:令輸入信號(hào)M1和M0 控制計(jì)數(shù)模,即令(M1,M0)=(0,0)時(shí)為模19 加法計(jì)數(shù)

33、器,(M1,M0)=(0,1)時(shí)為模4計(jì)數(shù)器,(M1,M0) =(1,0) 為模10 加法計(jì)數(shù)器,(M1,M0)=(1,1)時(shí)為模6計(jì)數(shù)器。答:Entity mod_cal is Port(M1,M0:in bit; Count:out std_logic_vector(4 downto 0); Clk:in std_logic);End entity;Architecture behav of mod_cal isSignal count1:std_logic_vector(4 downto 0);Begin Process(clk,M1,M0) Variable sel is bit_ve

34、ctor(1 downto 0); Begin Sel:=M1&M0; If clkevent and clk=1then Count1<=Count1+1; Case sel is When“00”=>if Count1=”10011”then Count1<=”00000”; End if;When“01”=>if Count1=”00100”then Count1<=”00000”; End if;When“10”=>if Count1=”01010”then Count1<=”00000”; End if;When“11”=>if

35、 Count1=”00110”then Count1<=”00000”; End if; End case; End if;End process;Count<=count1;End behav;17. 什么是 VHDL 結(jié)構(gòu)體的行為描述風(fēng)格,敘述行為描述的優(yōu)缺點(diǎn)。答:如果 VHDL 的結(jié)構(gòu)體只描述了所希望電路的功能或者說電路行為,而沒有直接指明或涉及實(shí)現(xiàn)這些行為的硬件結(jié)構(gòu),包括硬件特性、連線方式、邏輯行為方式,則稱為行為風(fēng)格的描述或行為描述。優(yōu)點(diǎn):抽象程度最高,最能體現(xiàn)VHDL描述高層次結(jié)構(gòu)和系統(tǒng)的能力。缺點(diǎn):只表示輸入與輸出間轉(zhuǎn)換的行為,它不包含任何結(jié)構(gòu)信息。18結(jié)構(gòu)化描述與調(diào)

36、用子程序有何異同點(diǎn),VHDL 程序中是如何進(jìn)行結(jié)構(gòu)化描述的?結(jié)構(gòu)化描述需要哪些語句?答:略19. 試舉一例,在一個(gè)結(jié)構(gòu)體中同時(shí)含有3種不同描述風(fēng)格的VHDL語句結(jié)構(gòu)。答:略20. 以數(shù)據(jù)流的方式設(shè)計(jì)一個(gè) 2 位比較器,再以結(jié)構(gòu)描述方式將已設(shè)計(jì)好的比較器連接起來構(gòu)成一個(gè) 8 位比較器答:略21. 采用VHDL進(jìn)行數(shù)字系統(tǒng)設(shè)計(jì)有哪些特點(diǎn)?答:HDL系統(tǒng)設(shè)計(jì)的基本點(diǎn):(1)與其他硬件描述語言相比,VHDL具有以下特點(diǎn):(2)功能強(qiáng)大、設(shè)計(jì)靈活。(3)強(qiáng)大的系統(tǒng)硬件描述能力。 (4)易于共享和復(fù)用。22. VHDL的基本程序結(jié)構(gòu)由幾部分組成?各部分的功能是什么?答:由5個(gè)部分組成,包含實(shí)體、結(jié)構(gòu)體、配

37、置、程序包和庫。實(shí)體作為一個(gè)設(shè)計(jì)實(shí)體的組成部分,其功能是對(duì)這個(gè)設(shè)計(jì)實(shí)體與外部電路進(jìn)行接口描述。結(jié)構(gòu)體(ARCHITECTURE)是設(shè)計(jì)實(shí)體的一個(gè)重要部分,結(jié)構(gòu)體將具體實(shí)現(xiàn)一個(gè)實(shí)體。在利用 VHDL 進(jìn)行工程設(shè)計(jì)中,為了提高設(shè)計(jì)效率以及使設(shè)計(jì)遵循某些統(tǒng)一的語言標(biāo)準(zhǔn)或數(shù)據(jù)格式,有必要將一些有用的信息匯集在一個(gè)或幾個(gè)庫中以供調(diào)用,這些信息可以是預(yù)先定義好的數(shù)據(jù)類型、子程序等設(shè)計(jì)單元的集合體(程序包)或預(yù)先設(shè)計(jì)好的各種設(shè)計(jì)實(shí)體(元件庫程序包)。因此可以把庫看成是一種用來存儲(chǔ)預(yù)先完成的程序包、數(shù)據(jù)集合體和元件的倉庫。已在設(shè)計(jì)實(shí)體中定義的數(shù)據(jù)類型、子程序或數(shù)據(jù)對(duì)象對(duì)于其它設(shè)計(jì)實(shí)體是不可用的,或者說是不可見

38、的。為了使已定義的常數(shù)、數(shù)據(jù)類型、元件調(diào)用說明以及子程序能被更多的 VHDL 設(shè)計(jì)實(shí)體方便地訪問和共享,可以將它們收集在一個(gè) VHDL 程序包中,多個(gè)程序包可以并入一個(gè) VHDL 庫中,使之適用于更一般的訪問和調(diào)用范圍,這一點(diǎn)對(duì)于大系統(tǒng)開發(fā)多個(gè)或多組開發(fā)人員同步并行工作顯得尤為重要。配置可以把特定的結(jié)構(gòu)體關(guān)聯(lián)到一個(gè)確定的實(shí)體,正如配置一詞本身的含義一樣。配置也是 VHDL 設(shè)計(jì)實(shí)體中的一個(gè)基本單元,在綜合或仿真中,可以利用配置語句為確定整個(gè)設(shè)計(jì)提供許多有用信息。23. 說明端口模式BUFFER與INOUT有何異同點(diǎn)?答:INOUT為輸入輸出雙向端口,即從端口內(nèi)部看,可以對(duì)端口進(jìn)行賦值,即輸出數(shù)

39、據(jù)。也可以從此端口讀入數(shù)據(jù),即輸入。BUFFER為緩沖端口,功能與INOUT類似,區(qū)別在于當(dāng)需要讀入數(shù)據(jù)時(shí),只允許內(nèi)部回讀內(nèi)部產(chǎn)生的輸出信號(hào),即反饋。舉個(gè)例子,設(shè)計(jì)一個(gè)計(jì)數(shù)器的時(shí)候可以將輸出的計(jì)數(shù)信號(hào)定義為BUFFER,這樣回讀輸出信號(hào)可以做下一計(jì)數(shù)值的初始值。24. 用VHD設(shè)計(jì)一個(gè)實(shí)現(xiàn)三輸入的多數(shù)表決器。答:library ieee; use ieee.std_logic_1164.all; entity bjq3 is port(a,b,c:in std_logic; y:out std_logic); end; architecture x of bjq3 is signal ty:s

40、td_logic_vector(2 downto 0); begin ty<=a&b&c; with ty select y<='0' when "000", '0' when "001", '0' when "010", '1' when "011", '0' when "100", '1' when "101", '1' when &

41、quot;110", '1' when "111", 'X' when others; end;25. 用PROCESS語句描述帶同步復(fù)位的JK觸發(fā)器。答:library ieee; use ieee.std_logic_1164.all; entity jk_ff is port(clk,reset,j,k:in std_logic; q,qb:out std_logic); end; architecture behave of jk_ff is signal tq,tqb:std_logic; begin q<=tq;q

42、b<=tqb; process(clk,reset) begin if (clk'event and clk='1') then if (reset='0') then tq<='0'tqb<='1' elsif (j='0')and(k='0') then tq<=tq;tqb<=tqb; elsif (j='0')and(k='1') then tq<='0'tqb<='1' els

43、if (j='1')and(k='0') then tq<='1'tqb<='0' elsif (j='1')and(k='1') then tq<=not tq;tqb<=not tqb; end if; end if; end process; end;26. 用并行信號(hào)賦值語句設(shè)計(jì)8選1數(shù)據(jù)選擇器。答:library ieee; use ieee.std_logic_1164.all; entity xzq8 is port(x:in std_logic_vector(

44、7 downto 0); sel:in std_logic_vector(2 downto 0); f:out std_logic); end; architecture a of xzq8 is begin f<=x(0) when sel="000" else x(1) when sel="001" else x(2) when sel="010" else x(3) when sel="011" else x(4) when sel="100" else x(5) when sel=

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

46、OWNTO 0); OUTA,OUTB:OUT STD_LOGIC );ENDARCHITECTURE A OF DUAL_MUX_41 IS SIGNAL P,Q:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN P<=ENA_N & S; Q<=ENB_N & S; WITH P SELECT OUTA<=A WHEN “000”, B WHEN”001”, C WHEN”010”, D WHEN”011”, Z WHEN OTHERS; WITH Q SELECT OUTB<= A WHEN”000”, B WHEN”001”,

47、 C WHEN”010”, D WHEN”011”, Z WHEN OTHERS; END A; 28. 用VHDL設(shè)計(jì)實(shí)現(xiàn)由兩輸入端與非門構(gòu)成的1位全加器。答:略29. 用VHDL設(shè)計(jì)實(shí)現(xiàn)一百進(jìn)制的計(jì)數(shù)器。答:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter ISGENERIC( count_value: INTEGER:=9); PORT (clk,clr,en: IN STD_LOGIC; co: OUT STD_LOGIC; count: OUT INTEGER

48、 RANGE 0 TO count_value);END counter;ARCHITECTURE a OF counter ISSIGNAL cnt: INTEGER RANGE 0 TO count_value;BEGINPROCESS (clk,clr) BEGIN IF clr = '1' THEN cnt <= 0; ELSIF (clk'EVENT AND clk = '1') THEN IF en = '1' THEN IF cnt = count_value THEN cnt <= 0;ELSE cnt <

49、;= cnt + 1; END IF; END IF; END IF;END PROCESS;co<=1 WHEN cnt=count_value ELSE 0;count <= cnt;END a;   library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity counter1 is port(clk,clr,en: in std_logic; co:out std_logic; count1:

50、 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 is generic( count_value: integer); port (clk,clr,en: in std_logic; co: out std_logic; count: out integer range 0 to count_value); end component; begin

51、aa: 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=>count2); end rtl; 30. 比較CASE語句與WITH_SELECT語句,敘述它們的異同點(diǎn)。答:相同點(diǎn):CASE語句中各子句的條件不能有重疊,必須包容所有的條件;WITH_SECLECT語句也不允許選擇

52、值有重疊現(xiàn)象,也不允許選擇值涵蓋不全的情況。另外,兩者對(duì)子句各選擇值的測試都具有同步性,都依賴于敏感信號(hào)的變化。 不同點(diǎn):CASE語句只能在進(jìn)程中使用,至少包含一個(gè)條件語句,可以有多個(gè)賦值目標(biāo);WITH_SECLECT語句根據(jù)滿足的條件,對(duì)信號(hào)進(jìn)行賦值,其賦值目標(biāo)只有一個(gè),且必須是信號(hào)。31、將以下程序段轉(zhuǎn)換為 WHEN_ELSE 語句:PROCESS(a,b,c,d)BEGINIF a= '0' AND b='1' THENnext1 <= "1101"ELSIFa='0' THENnext1 <= dELSIF

53、b='1' THENnext1 <= cELSENext1<= "1011"END IF;END PROCESS;答:原程序轉(zhuǎn)換如下: ARCHITECTURE one OF mux IS BEGIN PROCESS(a,b,c,d) BEGIN NEXT1 <="110"1WHEN a=0 AND b=1 ELSE d WHEN a=0 ELSE c WHEN b=1 ELSE "1011" END one; END PROCESS; 32. 以下為一時(shí)序邏輯模塊的VHDL 結(jié)構(gòu)體描述,請(qǐng)找出其中的

54、錯(cuò)誤:ARCHITECTURE one OFcom1BEGINVARIABLE a,b,c,clock:STD_LOGIC ;pro1:PROCESS BEGINIFNOT(clock'EVENT AND clock='1')THENx<= a xor b or cEND IF; END PROCESS; END;答:33. VHDL 程序設(shè)計(jì)中用WITH_SELECT_WHEN語句描述4個(gè)16位至1個(gè)16位輸出的4選1多路選擇器。答:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux IS PORT(dina

55、: 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;ARCHITECTURE rtl OF mux ISBEGINwith sel select dout<=dina WHEN "00&quo

56、t;, dinb WHEN "01", dinc WHEN "10", dind WHEN "11", "ZZZZZZZZZZZZZZZZ" when others; END rtl;34、哪些情況下需要用到程序包STD_LOGIC_UNSIGNED,試舉一例。答:調(diào)用數(shù)據(jù)類型變換函數(shù)或重載運(yùn)算符函數(shù)時(shí);定義UNSIGNED類型的數(shù)據(jù)時(shí)。舉例如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; · &

57、#183; IF TEMP=”11111111”THEN TEMP:=”00000000”; ELSE TEMP:=TEMP+16;END IF;···35. 為什么說一條并行賦值語句可以等效為一個(gè)進(jìn)程,如果是這樣的話,怎樣實(shí)現(xiàn)敏感信號(hào)的檢測。答:因?yàn)樾盘?hào)賦值語句的共同點(diǎn)是賦值目標(biāo)必須都是信號(hào),所以賦值語句與其它并行語句一樣,在結(jié)構(gòu)體內(nèi)的執(zhí)行是同時(shí)發(fā)生的,與它們的書寫順序沒有關(guān)系,所以每一信號(hào)賦值語句都相當(dāng)于一條縮寫的進(jìn)程語句。由于這條語句的所有輸入信號(hào)都被隱性地列入此縮寫進(jìn)程的敏感信號(hào)表中,故任何信號(hào)的變化都將相關(guān)并行語句的賦值操作,這樣就實(shí)現(xiàn)了敏感信號(hào)的檢測。

58、36. 給出 1 位全減器的VHDL描述,要求:(1) 類似于 1 位全加器的設(shè)計(jì)方法,首先設(shè)計(jì)1位半減器,然后用例化語句將它們連 接起來,圖 2.20中 h_suber 是半減器,diff是輸出差,s_out是借位輸出,sub_in 借位輸入;(2)直接根據(jù)全減器的真值表 2.12進(jìn)行設(shè)計(jì);(3)以1位全減器為基本硬件,構(gòu)成串行借位的 8 位減法器,要求用例化語句和生成語句來完成此項(xiàng)設(shè)計(jì)(減法運(yùn)算是xy - sun_in =diffr)。 圖 2.20 36題圖 表 2.12 全減器真值表答:(1)先設(shè)計(jì)一個(gè)半減器X y 00011011diff0110S_out0100Library ie

59、ee;useieee.std_logic_1164.all;entity h_suber is port (x,y : in std_logic;diff,s_out : out std_logic);end entity ;architecture hdlarch of h_suber isbeginprocess(x,y) begin diff <= x xor y; s_out <= (not x) and y;end process;end hdlarch;1 位全減器的 VHDL 設(shè)計(jì)文件:suber.vhdLIBRARY ieee;USE ieee.std_logic_

60、1164.all; ENTITY suber IS port(x,y : IN STD_LOGIC;sub_in : IN STD_LOGIC;diffr : OUT STD_LOGIC;sub_out : OUT STD_LOGIC );END suber;ARCHITECTURE scharch OF suber IS component h_suberPORT(x : IN STD_LOGIC; y : IN STD_LOGIC;diff : OUT STD_LOGIC; s_out : OUT STD_LOGIC);end component;signal t0,t1,t2 : STD_LOGIC;BEGIN u1 : h_suberPORT MAP(x => x, y => y, diff => t0, s_out => t1);u2 : h_suberPORT MAP(x => t0, y => sub_in, diff => diffr, s_out => t2);sub_out <= t1 OR t2;END;(2)略(3)8位減法器LIBRARY ieee;USE ieee.std_logic_1164.all; ENTI

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論