【正文】
第一篇:EDA實習(xí)圖信息10209二,利用quartus2軟件及VHDL語言設(shè)計組合邏輯電路 雙2選1多路選擇器先做2選1ENTITY mux21a IS PORT(a, b, s: IN BIT。y : OUT BIT)。END ENTITY mux21a。ARCHITECTURE one OF mux21a IS BEGIN PROCESS(a,b,s)BEGIN IF s = 39。039。 THENy LIBRARY IEEE。USE 。ENTITY muxk ISPORT(a1,a2,a3,s0,s1:I outy:OUT BIT)。END ENTITY muxk。ARCHITECTURE fd OF muxk ISCOMPONENT mua21a PORT(a,b,s:IN BIT。y:OUT BIT)END COMPONENT。SIGNAL temp:BIT BEGIN u1:mux21a PORT MAP(a=a2,b=a3,s=s0,y=temp)。u2:mux21aPORTMAP(a=a1,b=temp,s=s1,y=outy)。END ARCHITECTURE fd。輸入全是高電平,觀察輸出輸出如下為高電平當(dāng)s1=1 s0=0 a1 a2 a3 如下圖所示觀察輸出輸出波形為輸出為a2三.利用Quartus2軟件及VHDL語言設(shè)計時序邏輯電路 IEEE。USE 。ENTITY DFF1 I PORT(CLK : IN STD_LOGIC。D : IN STD_LOGIC。Q : OUT STD_LOGIC)。END。ARCHITECTURE bhv OF DFF1 I SIGNAL Q1 : STD_LOGIC。類似于在芯片內(nèi)部定義一個數(shù)據(jù)的暫存節(jié)點 BEGI PROCESS(CLK,Q1)BEGIN IF CLK39。EVENT AND CLK = 39。139。THEN Q1 END PROCESS。Q 將內(nèi)部的暫存數(shù)據(jù)向端口輸出(雙橫線是注釋符號)END bhv。四.Quartus2軟件及VHDL設(shè)計同步或異步時序電路利用USE 。USE 。ENTITY CNT10 IS PORT(CLK,RST,EN : IN STD_LOGIC。CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。COUT : OUT STD_LOGIC)。END CNT10ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN)VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0)。BEGINIF RST = 39。139。 THENCQI :=(OTHERS =39。039。)。計數(shù)器異步復(fù)位ELSIF CLK39。EVENT AND CLK=39。139。 THEN檢測時鐘上升沿IF EN = 39。139。 THEN檢測是否允許計數(shù)(同步使能)IF CQI 9 THENCQI := CQI + 1。允許計數(shù), 檢測是否小于9ELSECQI :=(OTHERS =39。039。)。大于9,計數(shù)值清零END IF。END IF。END IF。IF CQI = 9 THEN COUT 計數(shù)大于9,輸出進位ELSECOUT CQ 將計數(shù)值向端口輸出END PROCESS。END behav。輸出七段數(shù)碼狀態(tài)機 輸入01輸出第二篇:EDA實習(xí)報告EDA實驗報告系別:班級:姓名:學(xué)號:目錄 II軟件介紹EDA是電子設(shè)計自動化(Electronic Design Automation)縮寫。EDA技術(shù)是以計算機為工具,根據(jù)硬件描述語言HDL(Hardware Description language)完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標(biāo)芯片的適配編譯和編程下載等工作。硬件描述語言HDL是相對于一般的計算機軟件語言,如:C、PASCAL而言的。HDL語言使用與設(shè)計硬件電子系統(tǒng)的計算機語言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計者可利用HDL程序來描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結(jié)構(gòu),并實現(xiàn)相應(yīng)邏輯功能的的門級或更底層的結(jié)構(gòu)網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開發(fā)來說,比較常用和流行的HDL主要有ABELHDL、AHDL和VHDL[1]。幾乎所有適于大學(xué)生做的數(shù)字邏輯電路實驗都可以在計算機上利用EDA(Electronic Design Automatic—電子設(shè)計自動化)軟件進行設(shè)計、仿真,只有極少量外部配件不能在計算機上進行仿真。因此,在實驗前期階段,即實驗預(yù)習(xí)階段的主要應(yīng)用工具是EDA軟件,利用EDA軟件可以設(shè)計、仿真實驗課題,進行虛擬實驗。通過虛擬實驗使實驗者在進入真實實驗前就能對預(yù)做的實驗有相當(dāng)?shù)牧私猓踔量梢灶A(yù)測到實驗的結(jié)果。這樣在實際做實驗時,可以把許多設(shè)計型實驗的難度降低,同時能有更多的時間讓實驗者動手做實驗,研究問題,提高實驗效率。當(dāng)前數(shù)字電路設(shè)計已由計算機輔助設(shè)計進入到以計算機為主的設(shè)計時代。 II 是Altera公司的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計流程的各個階段使用熟悉的第三放EDA工具。此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯設(shè)計于一體,是一種綜合性的開發(fā)平臺。Maxplus II 作為Altera的上一代PLD設(shè)計軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計輔助工具,集成了SOPC和HardCopy設(shè)計流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。 設(shè)計信號發(fā)生器使其能在儀器上顯示正弦、三角、方波、鋸齒波(其中的兩種波形)2設(shè)計頻率計使其能測出制定波形的頻率(正弦波,方波)Boxing4LIBRARY IEEE。USE 。USE 。USE 。ENTITY boxing4 IS PORT(RIN:in std_logic。clk: IN std_logic。SINT:in std_logic_VECTOR(1 downto 0)。set:in std_logic。_vector。(1 downto 0)。rs,rw,en,lcdon,lcdbon : OUT STD_LOGIC。YOUT:out std_logic_vector(7 downto 0)。data : OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。END boxing4。ARCHITECTURE fwm OF boxing4 ISTYPE states IS(clear_display,set_initial,set_cgram,write_cgram,set_addram1,diaplay_cgram,set_addram2,diaplay_cgrom)。clear_display清屏。set_initial初始化設(shè)置。set_cgram設(shè)置 cgram 地址。write_cgram字模寫入 cgram。set_addram1設(shè)置顯示 cgram 字符的 addram 地址。diaplay_cgram顯示 cgram 字符。set_addram2設(shè)置顯示 cgrom 字符的 addram 地址。diaplay_cgrom顯示 cgrom 字符 SIGNAL state:states。TYPE ram_array0 IS ARRAY(0 TO 7)OF STD_LOGIC_VECTOR(7 DOWNTO 0)。定義 ram_array0 為二維數(shù)組TYPE ram_array1 IS ARRAY(0 TO 7)OF ram_array0。定義 ram_array1 為三維數(shù)組 SIGNAL lcd_clk : STD_LOGIC。SIGNAL data1,data2,data3:INTEGER RANGE 0 TO 9。signal n:std_logic。SIGNAL net1,net2:std_logic_vector(7 downto 0)。signal net3:std_logic。COMPONENT choice4_1PORT(s:in std_logic_vector(1 downto 0)。d1,d2: in std_logic_vector(7 downto 0)。y: out std_logic_vector(7 downto 0))。END COMPONENT。COMPONENT fangbo PORT(clkf,rf:in std_logic。qf:out std_logic_vector(7 downto 0))。END COMPONENT。COMPONENT sin PORT(clksin,rsin:in std_logic。da:out std_logic_vector(7 downto 0))。END COMPONENT。BEGIN u1: fangbo PORT MAP(clkf=CLK,rf=RIN,qf=net1)。u2: sin PORT MAP(clksin=CLK,rsin=RIN,da=net2)。u3: choice4_1 PORT MAP(s=SINT,d1=net1,d2=net2,y=YOUT)。en PROCESS(clk)CONSTANT m : INTEGER:=50000。50M 分頻到 1kHz。VARIABLE cout : INTEGER RANGE 0 TO 50000000:=0。BEGINIF clk39。EVENT AND clk=39。039。 THEN cout:=cout+1。IF coutELSIF coutELSE cout:=0。END IF。END IF。END PROCESS。PROCESS(lcd_clk)CONSTANT cgram : ram_array1:=(自定義 8 個 5*8 字符的字模(X“00”,X“0E”,X“00”,X“0E”,X“00”,X“1F”,X“00”,X“00”),SAN(X“04”,X“1F”,X“04”,X“07”,X“05”,X“09”,X“13”,X“01”),FANG(X“00”,X“1f”,X“04”,X“04”,X“17”,X“14”,X“14”,X“1f”),ZHENG(X“0E”,X“02”,X“0E”,X“08”,X“08”,X“0e”,X“02”,X“0e”),ZUO XIAN(X“04”,X“1E”,X“04”,X“08”,X“1e”,X“04”,X“09”,X“1f”),YOU XIAN(X“00”,X“13”,X“0A”,X“03”,X“1a”,X“02”,X“0a”,X“13”),ZUO BO(X“08”,X“1F”,X“09”,X“1E”,X“14”,X“08”,X“14”,X“03”),YOU BO(X“18”,X“18”,X“07”,X“08”,X“08”,X“08”,X“07”,X“00”)℃字符數(shù)據(jù)存儲器)。VARIABLE datat:INTEGER RANGE 0 TO 15。VARIABLE t: STD_LOGIC_VECTOR(7 DOWNTO 0)。VARIABLE num:INTEGER RANGE 0 TO 7。BEGINwait until net3=39。039。RISING_EDGE(lcd_clk)。IF RISING_EDGE(lcd_clk)THENif sint=“00”thencase sint iswhen “11”=CASE state ISWHEN clear_display= rsWHEN set_initial=IF datatELSIF datat=3 THEN rsELSIF datat=4 THEN rsELSE rsEND IF。WHEN set_cgram=rsdataIF num END IF。WHEN write_cgram= rsdata IF datat=8 THEN num:=num+1。datat:=0。state IF num =7 THEN num:=0。t:=“00000000”。stateEND IF。END IF。WHEN set_addram1=rsdataWHEN diaplay_cgram=rsif sint=“00”thenIF datat=0 THEN dataELSIF datat=1 THEN dat