欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      可控脈沖發(fā)生器的設(shè)計EDA課設(shè)報告資料

      時間:2019-05-12 03:43:32下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《可控脈沖發(fā)生器的設(shè)計EDA課設(shè)報告資料》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《可控脈沖發(fā)生器的設(shè)計EDA課設(shè)報告資料》。

      第一篇:可控脈沖發(fā)生器的設(shè)計EDA課設(shè)報告資料

      可控脈沖發(fā)生器的設(shè)計

      一、設(shè)計目的

      1.了解可控脈沖發(fā)生器的實現(xiàn)機理。2.學(xué)會用示波器觀察FPGA產(chǎn)生的信號。3.學(xué)習(xí)用VHDL編寫復(fù)雜功能的代碼。

      二、設(shè)計原理

      1.EDA是電子設(shè)計自動化(Electronic Design Automation)的縮寫。EDA技術(shù)就是依賴功能強大的計算機,在EDA工具軟件平臺上,對以硬件描述語言HDL(Hardware Description Language)為系統(tǒng)邏輯描述手段完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合、布局布線以及邏輯優(yōu)化和仿真測試,直至實現(xiàn)既定的電子線路系統(tǒng)功能。EDA技術(shù)使設(shè)計者的工作僅局限于利用軟件的方式來完成對系統(tǒng)硬件功能的實現(xiàn),可以說EDA技術(shù)的產(chǎn)生與發(fā)展是電子設(shè)計技術(shù)的一個巨大進步。EDA技術(shù)融合了眾多電子設(shè)計技術(shù)和計算機輔助技術(shù),使得它在現(xiàn)代電子學(xué)方面的應(yīng)用越來越廣泛,也成為電子、電氣類大學(xué)生必須熟練掌握的一種設(shè)計工具。

      2.VHDL是英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,是硬件描述語言的業(yè)界標(biāo)準(zhǔn)之一。VHDL語言功能強大、設(shè)計靈活。VHDL語言可以用簡潔明確的源代碼來描述復(fù)雜的邏輯控制,它具有多層次的設(shè)計描述功能,層層細化,最后可直接生成電路級描述。

      VHDL支持同步電路、異步電路和隨機電路的設(shè)計,這是其他硬件描述語言雖不能比擬的。VHDL還支持多種設(shè)計方法,既支持自底向上的設(shè)計,又支持自頂向下的設(shè)計;既支持模塊化設(shè)計,又支持層次化設(shè)計。

      由于VHDL已經(jīng)成為IEEE標(biāo)準(zhǔn)所規(guī)定的硬件描述性語言,目前大多數(shù)EDA工具幾乎都支持VHDL。因為VHDL易讀和結(jié)構(gòu)化且易于修改設(shè)計所以在硬件電路設(shè)計過程中,VHDL語言得到廣泛應(yīng)用。

      VHDL語言易于共享和復(fù)用。VHDL采用基于庫(Library)的設(shè)計方法,可以建立各種可再次利用的模塊。這些模塊可以預(yù)先設(shè)計或使用以前設(shè)計中的存檔模塊,將這些模塊存放到庫中,就可以在以后的設(shè)計中進行復(fù)用,可以使設(shè)計成果在設(shè)計人員之間進行交流和共享,減少硬件電路設(shè)計。

      VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計早期就能查驗設(shè)計系統(tǒng)的功能可行性,隨時可對設(shè)計進行仿真模擬。VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了它具有支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用功能。這個特點很好的符合了市場需求。對于用VHDL完成的一個確定的設(shè)計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動的把VHDL描述的設(shè)計轉(zhuǎn)變成門級網(wǎng)表??傊?,由于VHDL語言有的這些優(yōu)良的特點,它被廣泛的應(yīng)用在電子線路和電子系統(tǒng)的設(shè)計中。

      3.Quartus II是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。

      Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計流程外,提供了完善的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點。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ā)平臺。

      4.脈沖發(fā)生器就是要產(chǎn)生一個脈沖波形,而可控脈沖發(fā)生器則是要產(chǎn)生一個周期和占空比可變的脈沖波形??煽孛}沖發(fā)生器的實現(xiàn)原理比較簡單,可以簡單的理解為一個計數(shù)器對輸入的時鐘信號進行分頻的過程。通過改變計數(shù)器的上限值來達到改變周期的目的,通過改變電平翻轉(zhuǎn)的閾值來達到改變占空比的目的。下面舉個簡單的例子來說明其工作原理。

      假如有一個計數(shù)器T對時鐘分頻,其計數(shù)的范圍是從0~N,另取一個M(0≤M≤N),若輸出為Q,那么Q只要滿足條件

      時,通過改變N值,即可改變輸出的脈沖波的周期;改變M值,即可改變脈沖波的占空比。這樣輸出的脈沖波的周期和占空比分別為:

      ?1Q???00?T?MM?T?N周期?(N?1)TCLOCKM占空比??100%N?

      1三、設(shè)計內(nèi)容

      編寫實現(xiàn)可控脈沖發(fā)生器程序,通過脈沖周期和占空比改變實現(xiàn)不同脈沖的輸出。用QuartusII軟件對設(shè)計進行編譯、綜合、仿真,給出相應(yīng)的時序仿真波形和硬件電路圖。

      四、設(shè)計流程 1.程序

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;

      USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CC IS

      PORT(CLK: IN STD_LOGIC;

      --時鐘輸入

      RST : IN STD_LOGIC;

      --復(fù)位輸入

      NU,ND : IN STD_LOGIC;

      --輸入:控制頻率的改變

      MU,MD : IN STD_LOGIC;

      --輸入:控制占空比的改變

      FOUT : OUT STD_LOGIC

      --波形輸出);

      END CC;ARCHITECTURE BEHAVE OF CC IS SIGNAL N_BUFFER,M_BUFFER:STD_LOGIC_VECTOR(10 DOWNTO 0);SIGNAL N_COUNT :STD_LOGIC_VECTOR(10 DOWNTO 0);SIGNAL CLKIN : STD_LOGIC;SIGNAL CLK_COUNT : STD_LOGIC_VECTOR(12 DOWNTO 0);--產(chǎn)生一個低速時鐘,用于按鍵判斷

      BEGIN

      PROCESS(CLK)

      --計數(shù)器累加

      BEGIN

      IF(CLK'EVENT AND CLK='1')THEN

      IF(N_COUNT=N_BUFFER)THEN

      N_COUNT<=“00000000000”;

      ELSE

      N_COUNT<=N_COUNT+1;

      END IF;

      END IF;

      END PROCESS;

      PROCESS(CLK)

      --波形判斷

      BEGIN

      IF(CLK'EVENT AND CLK='1')THEN

      IF(N_COUNT

      FOUT<='1';ELSIF(N_COUNT>M_BUFFER AND N_COUNT

      THEN 6

      FOUT<='0';

      END IF;

      END IF;

      END PROCESS;

      PROCESS(CLK)

      BEGIN IF(CLK'EVENT AND CLKIN='1')THEN

      CLK_COUNT<=CLK_COUNT+1;

      END IF;

      CLKIN<=CLK_COUNT(12);

      END PROCESS;

      PROCESS(CLKIN)

      --頻率及占空比的改變1

      BEGIN

      IF(CLK'EVENT AND CLKIN='0')THEN

      IF(RST='0')THEN

      M_BUFFER<=“01000000000”;

      N_BUFFER<=“10000000000”;

      ELSIF(NU='0')THEN 7

      N_BUFFER<=N_BUFFER+1;

      ELSIF(ND='0')THEN

      N_BUFFER<=N_BUFFER-1;

      ELSIF(MU='0')THEN

      M_BUFFER<=M_BUFFER+1;

      ELSIF(MD='0')THEN

      M_BUFFER<=M_BUFFER-1;

      END IF;

      END IF;

      END PROCESS;END BEHAVE;

      2.管腳分配:

      3.時序仿真圖:

      4.硬件電路圖:

      5.現(xiàn)象:

      五、心得體會

      通過這次EDA課程設(shè)計,我對課堂上所學(xué)到的理論知識的理解加深了許多,自己動腦、動手設(shè)計的能力也得到了較大提高。

      在這次課程設(shè)計的過程中,我對VHDL語言有了更深的認識。通過查閱相關(guān)資料和動手設(shè)計我發(fā)現(xiàn)我以前對VHDL語言的認識太過膚淺,認為VHDL語言只能用于設(shè)計小型的電路系統(tǒng)。但有了更深刻的認識之后我發(fā)現(xiàn)學(xué)好VHDL語言可以設(shè)計出大規(guī)模的、功能復(fù)雜的電路系統(tǒng)。以前之所以會有錯誤的認識是因為自己對VHDL語言的了解和掌握還不夠?,F(xiàn)在仔細想想,這次課程設(shè)計使得我對VHDL語言的理解與應(yīng)用能力得到了較大的提升,也讓我認識到只要升入學(xué)習(xí),提升的空間永遠的存在的。

      另一方面我也發(fā)現(xiàn)了動手實踐的重要性。動手實踐是理論知識得以靈活運用的必要前提,也是今后今后走上工作崗位之后能夠很好的完成設(shè)計工作的技術(shù)保證。只有遇到實際問題并根據(jù)自己對課堂上獲得的專業(yè)知識的理解來解決它才能真正的提高自己的能力。這也提醒我在平時的學(xué)習(xí)生活中不能一味埋頭于課本知識,當(dāng)今社會競爭越來越激烈,社會對人才的要求越來越全面,只有理論知識是遠遠不夠的,必須靠動手能力做支撐。因此在學(xué)習(xí)之余我們應(yīng)該積極參加各種與專業(yè)知識有關(guān)的實踐活動和知識競賽,鞏固所學(xué)的理論知識,多注重培養(yǎng)實際動手能力和專業(yè)技術(shù)能力,這樣才能在以后的工作崗位上有所作為。

      數(shù)字秒表設(shè)計

      一、設(shè)計目的

      本設(shè)計的任務(wù)就是設(shè)計一個數(shù)字鐘,要求顯示格式為小時-分鐘-秒鐘。系統(tǒng)時鐘選擇時鐘模塊的50MHz,要得到1Hz時鐘信號,必須對系統(tǒng)時鐘進行50000000次分頻。用S1按鍵作為系統(tǒng)時鐘復(fù)位,復(fù)位后全部顯示00-00-00。

      二、設(shè)計原理

      數(shù)碼管的八個段a,b,c,d,e,f,g,h(h是小數(shù)點)都分別連接到SEG0~SEG7,8個數(shù)碼管分別由八個選通信號DIG0~DIG7來選擇,被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。如果希望8個數(shù)碼管顯示希望的數(shù)據(jù),就必須使得8個選通信號DIG0~DIG7分別被單獨選通,并在此同時,在段信號輸入口SEG0~SEG7加上該對應(yīng)數(shù)碼管上顯示的數(shù)據(jù),于是隨著選通信號的掃描就能實現(xiàn)動態(tài)掃描顯示的目的。雖然每次只有1個數(shù)碼管顯示,但只要掃描顯示速率足夠快,利用人眼的視覺余輝效應(yīng),我們?nèi)詴杏X所有的數(shù)碼管都在同時顯示。

      三、設(shè)計主要內(nèi)容

      本設(shè)計要求掌握使用QuartusII設(shè)計數(shù)字系統(tǒng)的設(shè)計思路和設(shè)計方法。學(xué)習(xí)VHDL基本邏輯電路的綜合設(shè)計應(yīng)用。掌握VHDL語言的語法規(guī)范,掌握時序電路描述方法。掌握多個數(shù)碼管動態(tài)掃描顯示的原理及設(shè)計方法。

      設(shè)計一個由共陰八位數(shù)碼管作為顯示、按鍵作為控制系統(tǒng)的數(shù)字鐘電路,要求利用實驗室設(shè)備完成系統(tǒng)設(shè)計并運行調(diào)試。

      四、設(shè)計流程 1.程序:

      library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity stopwatch is

      port(Clk

      : in

      std_logic;

      --時鐘輸入

      reset

      : in

      std_logic;

      --復(fù)位輸入

      start,over

      : in

      std_logic;

      --秒表控制輸入

      ledag

      : out std_logic_vector(6 downto 0);--七段碼管顯示輸出

      SEL

      : buffer std_logic_vector(2 downto 0)--七段碼管掃描驅(qū)動);

      end stopwatch;architecture behave of stopwatch is

      signal Disp_Temp

      : integer range 0 to 15;

      signal Disp_Decode

      : std_logic_vector(6 downto 0);

      signal mSEC1,mSEC10 : integer range 0 to 9;

      signal SEC1,SEC10

      : integer range 0 to 9;

      signal MIN1,MIN10

      : integer range 0 to 9;

      signal HOUR1,HOUR10 : integer range 0 to 9;

      signal Clk1kHz

      : std_logic;

      signal Clk100Hz

      : std_logic;

      signal Start_Flag

      : std_logic;

      signal Music_Count

      : std_logic_vector(2 downto 0);

      begin

      PROCESS(clk)--generate 100hz clock signal

      variable cnt : INTEGER RANGE 0 TO 499999;--產(chǎn)生100Hz時鐘的分頻計數(shù)器

      BEGIN

      IF clk='1' AND clk'event THEN

      IF cnt=499999 THEN cnt:=0;

      ELSE

      IF cnt<250000 THEN clk100hz<='1';

      ELSE clk100hz<='0';

      END IF;

      cnt:=cnt+1;

      END IF;

      END IF;

      END PROCESS;

      PROCESS(clk)--generate 1khz clock signal

      variable cnt1 : INTEGER RANGE 0 TO 49999;--產(chǎn)生1kHz時鐘的分頻計數(shù)器

      BEGIN

      IF clk='1' AND clk'event THEN

      IF cnt1=49999 THEN cnt1:=0;

      ELSE

      IF cnt1<25000 THEN clk1khz<='1';

      ELSE clk1khz<='0';

      END IF;

      cnt1:=cnt1+1;

      END IF;

      END IF;

      END PROCESS;

      process(Clk100Hz)

      begin

      if(reset='0')then

      --系統(tǒng)復(fù)位

      mSEC1<=0;

      mSEC10<=0;

      SEC1<=0;

      SEC10<=0;

      MIN1<=0;

      MIN10<=0;

      HOUR1<=0;

      HOUR10<=0;

      Start_Flag<='0';

      elsif(start='0' and Start_Flag='0')then

      Start_Flag<='1';

      elsif(over='0' and Start_Flag='1')then

      Start_Flag<='0';

      elsif(Clk100Hz'event and Clk100Hz='1')then

      --正常運行

      if(Start_Flag='1')then

      if(mSEC1=9)then

      mSEC1<=0;

      if(mSEC10=9)then

      mSEC10<=0;

      if(SEC1=9)then

      SEC1<=0;

      if(SEC10=5)then

      SEC10<=0;

      if(MIN1=9)then

      MIN1<=0;

      if(MIN10=5)then

      MIN10<=0;

      if(HOUR1=9)then

      HOUR1<=0;

      if(HOUR10=9)then

      HOUR10<=0;

      else

      HOUR10<=HOUR10+1;

      end if;

      else

      HOUR1<=HOUR1+1;

      end if;

      else

      MIN10<=MIN10+1;

      end if;

      else

      MIN1<=MIN1+1;

      end if;

      else

      SEC10<=SEC10+1;

      end if;

      else

      SEC1<=SEC1+1;

      end if;

      else

      mSEC10<=mSEC10+1;

      end if;

      else

      mSEC1<=mSEC1+1;

      end if;

      end if;

      end if;

      end process;

      process(SEL)

      begin

      if(HOUR1=0)then

      case(SEL+1)is

      when “111”=>Disp_Temp<=mSEC1;

      when “110”=>Disp_Temp<=mSEC10;

      when “101”=>Disp_Temp<=10;

      when “100”=>Disp_Temp<=SEC1;

      when “011”=>Disp_Temp<=SEC10;

      when “010”=>Disp_Temp<=10;

      when “001”=>Disp_Temp<=MIN1;

      when “000”=>Disp_Temp<=MIN10;

      end case;

      else

      case(SEL+1)is

      when “111”=>Disp_Temp<=SEC1;

      when “110”=>Disp_Temp<=SEC10;

      when “101”=>Disp_Temp<=10;

      when “100”=>Disp_Temp<=MIN1;

      when “011”=>Disp_Temp<=MIN10;

      when “010”=>Disp_Temp<=10;

      when “001”=>Disp_Temp<=HOUR1;

      when “000”=>Disp_Temp<=HOUR10;

      end case;

      end if;

      end process;process(Clk1khz)

      begin

      if(Clk1khz'event and Clk1khz='1')then

      --掃描累加

      SEL<=SEL+1;

      ledag<=Disp_Decode;

      end if;

      end process;

      process(Disp_Temp)

      --顯示轉(zhuǎn)換

      begin

      case Disp_Temp is

      when 0=>Disp_Decode<= “0111111”;

      --0

      when 1=>Disp_Decode<= “0000110”;

      --1

      when 2=>Disp_Decode<= “1011011”;

      --2

      when 3=>Disp_Decode<= “1001111”;

      --3

      when 4=>Disp_Decode<= “1100110”;

      --4

      when 5=>Disp_Decode<= “1101101”;

      --5

      when 6=>Disp_Decode<= “1111101”;

      --6

      when 7=>Disp_Decode<= “0000111”;

      --7

      when 8=>Disp_Decode<= “1111111”;

      --8

      when 9=>Disp_Decode<= “1101111”;

      --9

      when 10=>Disp_Decode<= “1000000”;

      ---

      when others=>Disp_Decode<=“0000000”;

      --全滅

      end case;

      end process;

      end behave;

      2.管腳分配:

      2.時序仿真圖:

      4.硬件電路圖:

      5.現(xiàn)象:

      五、設(shè)計總結(jié)

      通過本次的課程設(shè)計,我初步了解了VHDL語言的編程思想,以及利用EDA軟件進行電子電路設(shè)計的方法,通過對一個課題的分析,將實驗的內(nèi)容進行分塊解讀,具體到每一個模塊的具體作用,然后將各個功能的模塊通過連線進行總體的電路實現(xiàn),也可以通過VHDL語言對各個模塊進行組合,然后需要在程序編譯成功的基礎(chǔ)上,安裝硬件,將程序下載到具體的芯片上進行硬件的實現(xiàn)。通過整個實驗的完成,我從老師和同學(xué)那里學(xué)到了更多關(guān)于VHDL編程,仿真以及硬件實現(xiàn)的知識,自己以前模糊不清的地方也通過此次的課程設(shè)計了解清楚了,并且通過這次課程設(shè)計,我也鍛煉了獨立思考,獨立操作的能力,雖然對于VHDL語言的應(yīng)用我還很生疏,但是此次的課程設(shè)計卻讓我學(xué)到了很多,也對這門語言有了更深的理解,對EDA軟件的使用有了更多的體會。

      第二篇:EDA課設(shè)

      EDA課程設(shè)計報告

      課題名稱:智力競賽搶答器

      班級:11電科2班

      姓名:代維寬

      學(xué)號:201114580207

      同組人:聞仔遜

      指導(dǎo)老師:賈默伊

      任務(wù)書

      一、用VHDL運用層次化設(shè)計方法設(shè)計一個小型數(shù)字系統(tǒng)

      題目:智力競賽搶答器

      二、說明書內(nèi)容:

      1.系統(tǒng)設(shè)計要求(功能)2.系統(tǒng)設(shè)計方案(包括頂層電路圖)3.VHDL源程序及仿真波形圖 4.課程設(shè)計注釋 5.設(shè)計解釋、說明 6.獨特之處

      三、成績評定

      1.設(shè)計內(nèi)容及掌握情況

      2.說明書。包括電子檔(各類文件的可執(zhí)行性及說明書)和紙質(zhì)

      3.答辯情況

      目錄

      第一章:系統(tǒng)設(shè)計

      1系統(tǒng)設(shè)計要求???????????????????1 2系統(tǒng)設(shè)計方案???????????????????2 第二章:VHDL原程序及仿真波形圖

      1、搶答啟動模塊??????????????????3(1)按鍵識別子模塊?????????????????3(2)倒計時子模塊??????????????????5

      2、選手搶答模塊??????????????????7(1)單個選手按鍵子模塊???????????????7(2)判斷搶答選手子模塊???????????????9

      3、加減分模塊???????????????????11(1)組別判斷子模塊?????????????????11(2)加減及寄存器子模塊???????????????12(3)分數(shù)選擇輸出模塊????????????????15

      4、顯示模塊????????????????????16

      5、蜂鳴器模塊???????????????????18

      第三章設(shè)計心得及總結(jié)

      智力競賽搶答器

      1系統(tǒng)設(shè)計要求

      1.設(shè)計一智力競賽搶答器,可同時供8名選手參加比賽。2.給節(jié)目主持人設(shè)置一個控制開關(guān),控制系統(tǒng)清零和搶答開始。

      3.搶答器具有鎖存功能和顯示功能。搶答開始后,若有選手按動搶答按鈕,編號立即鎖存,并在LED數(shù)碼管上顯示選手編號,同時揚聲器響,禁止其他選手搶答。

      4.搶答器具有搶答定時功能,時間由主持人確定。5.參賽選手在設(shè)定的時間內(nèi)搶答有效,定時器停止工作。

      6.如果定時時間到,無人搶答,本次搶答無效,系統(tǒng)報警,并封鎖輸入電路,禁止超時搶答,定時器顯示00。

      7.為每組設(shè)計一個計分電路,0~999分,可加分,也可減分。

      對于一個搶答器系統(tǒng),可將其分為五個模塊:選手搶答模塊、搶答啟動模塊、加減分模塊、顯示模塊、蜂鳴器控制模塊。整體框圖如下:

      圖一 總體框圖

      其中搶答啟動模塊具有啟動搶答及啟動定時功能,輸出使能信號給選手識別模塊,以及搶答剩余時間給顯示模塊;選手識別模塊完成鎖存搶答信號的功能,并輸出選手號給顯示模塊;蜂鳴器對搶答成功以及超時鳴聲報警;顯示模塊對輸入的數(shù)據(jù)進行顯示。

      2系統(tǒng)設(shè)計方案

      智力競賽搶答器擬由單片CPLDFPGA來實現(xiàn),經(jīng)分析設(shè)計要求,擬定整個系統(tǒng)由五個單元組成,原理圖如下所示:

      主要VHDL源程序

      1、搶答啟動模塊

      啟動模塊除了有啟動的功能外,還有啟動定時的功能。定時時間分為5秒和20秒兩種,使用兩個按鍵對應(yīng)兩種限時搶答。

      將本模塊再劃分為2個子模:一個模塊完成按鍵識別的功能,另一模塊完成倒計時功能。

      1)按鍵識別子模塊

      按鍵的識別即對輸入信號進行電平變化檢測,電平發(fā)生跳變就認為是鍵被按下。但VHDL程序中一個結(jié)構(gòu)體內(nèi)不能同時對兩個信號進行電平跳變的檢測,所以對本模塊的程序設(shè)計采用狀態(tài)機來實現(xiàn),并使用統(tǒng)一的時鐘信號來掃描按鍵的電平狀態(tài)。模塊圖如下:

      圖2 按鍵識別子模塊

      對START5和START20兩個按鍵定義三種狀態(tài),START5按下為ST1狀態(tài),此時兩個按鍵“START5&START20”輸入電平為“01”;START20按下為ST2狀態(tài),此時電平為“10”;兩個都沒按下為ST0狀態(tài),此時電平為“11”。

      本模塊程序為:

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY START_5_20 IS PORT(CLK1,RST,START5,START20:IN STD_LOGIC;

      B,A:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--輸出定時初值

      S_FLAG:OUT STD_LOGIC);

      --置數(shù)信號

      END ENTITY;ARCHITECTURE ONE OF START_5_20 IS SIGNAL DATAIN:STD_LOGIC_VECTOR(1 DOWNTO 0);TYPE ST_TYPE IS(ST0,ST1,ST2);

      --定義狀態(tài)

      SIGNAL C_ST:ST_TYPE;BEGIN

      DATAIN<=START5&START20;

      --兩個輸入信號放在一起判斷 BEGIN

      IF RST='0' THEN

      --復(fù)位 B<=“0000”;A<=“0000”;C_ST<=ST0;S_FLAG<='0';ELSIF CLK1'EVENT AND CLK1='1' THEN CASE C_ST IS WHEN ST0=> IF DATAIN=“01” THEN

      C_ST<=ST1;

      --輸入信號為01,轉(zhuǎn)ST1狀態(tài) S_FLAG<='1';

      --置數(shù)信號有效 B<=“0000”;A<=“0101”;

      --定時初值“05” ELSIF DATAIN=“10” THEN

      C_ST<=ST2;

      --輸入信號為10,轉(zhuǎn)ST1狀態(tài)

      S_FLAG<='1';

      --置數(shù)信號有效 B<=“0010”;A<=“0000”;

      --定時初值“20”

      ELSE C_ST<=ST0;--輸入信號為11,保持ST0狀態(tài)

      END IF;

      C_ST<=ST0;--防按鍵抖動,為11時才轉(zhuǎn)ST0狀態(tài) S_FLAG<='0';

      --置數(shù)信號無效

      ELSE C_ST<=ST1;

      --按鍵沒彈起,繼續(xù)等待

      END IF;

      ELSE C_ST<=ST2;END IF;PROCESS(RST,CLK1)WHEN ST1=>IF DATAIN=“11” THEN WHEN ST2=>IF DATAIN=“11” THEN C_ST<=ST0;S_FLAG<='0';WHEN OTHERS=>C_ST<=ST0;B<=“0000”;A<=“0000”;END CASE;END IF;END PROCESS;END ARCHITECTURE;本模塊仿真波形如圖所示。

      圖3 按鍵識別模塊仿真波形

      2)倒計時子模塊

      倒計時需要1Hz的脈沖輸入,每來一個上升沿,進行一次減一運算,將結(jié)果輸出到TIMEB、TIMEA;置數(shù)信號LOAD輸入有效,讀入B、A端口的數(shù)據(jù);輸入L_CR信號與選手識別模塊連接,當(dāng)選手搶答成功后,L_CR信號為0,將倒計時清0.;若倒計時到,沒有選手搶答,則在SR1輸出1使揚聲器發(fā)聲。同時輸出信號給選手搶答模塊,禁止選手搶答。

      圖4倒計時模塊

      本模塊程序為:

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DE_COUNT IS PORT(CLK2,LOAD,L_CR,RST:IN STD_LOGIC;

      B,A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

      TIMEB,TIMEA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

      TIMEOUT,SR1:OUT STD_LOGIC);END ENTITY;ARCHITECTURE TWO OF DE_COUNT IS BEGIN

      PROCESS(LOAD,L_CR,RST,CLK2)VARIABLE P1,P0:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN

      IF LOAD='1' THEN P1:=B;P0:=A;

      --指數(shù)信號有效,將B、A值讀入P1、P0 ELSIF L_CR='0' THEN

      --有選手搶答成功,L_CR輸入為0,定時時間清0 P1:=“0000”;P0:=“0000”;TIMEOUT<='0';SR1<='1';ELSIF RST='0' THEN P1:=“0000”;P0:=“0000”;TIMEOUT<='0';SR1<='0';

      ELSIF(CLK2'EVENT AND CLK2='1')THEN

      IF P0=“0000” THEN

      IF P1>0 THEN P1:=P1-1;P0:=“1001”;

      --若個位為0,十位減1,個位賦為9 END IF;ELSE P0:=P0-1;

      --若個位不為0,個位直接減一

      IF P0=“0000” AND P1=“0000” THEN TIMEOUT<='0';SR1<='1';

      --若時間到,輸出鎖存信號 END IF;END IF;

      END IF;TIMEB<=P1;TIMEA<=P0;END PROCESS;END ARCHITECTURE;

      程序中,因為每次減一后的時間值需要保存,用于下次繼續(xù)減一,所以程序中使用了不完整的IF語句引入寄存器,用于保存每次減一后的時間值。P1、P0定義為變量而不是信號的原因是,變量的賦值是即時的,減一后可以馬上進行判斷;若定義為信號,不能即時進行判斷,并且減一操作后的賦值要經(jīng)過一個δ延時,程序不好控制。

      本模塊仿真波形如圖所示:

      圖5 倒計時模塊仿真波形

      用元件例化語句將以上兩個子模塊組合,得到整個搶答啟動模塊。如下圖所示:

      圖6 由兩個子模塊組成搶答啟動模塊

      兩個子模塊組合的程序為:

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY STARTER IS PORT(CLK1,CLK2,L_CR,RST,START5,START20:IN STD_LOGIC;

      TIMEB,TIMEA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

      TIMEOUT,SR1:OUT STD_LOGIC);END ENTITY;ARCHITECTURE THREE OF STARTER IS

      COMPONENT START_5_20 IS

      --調(diào)用元件START_5_20聲明

      PORT(CLK1,RST,START5,START20:IN STD_LOGIC;

      B,A:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

      S_FLAG:OUT STD_LOGIC);END COMPONENT;COMPONENT DE_COUNT IS

      --調(diào)用元件DE_COUNT聲明

      PORT(CLK2,LOAD,L_CR,RST:IN STD_LOGIC;

      B,A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

      TIMEB,TIMEA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

      TIMEOUT,SR1:OUT STD_LOGIC);END COMPONENT;SIGNAL m,n:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL p:STD_LOGIC;

      --對應(yīng)圖7中的中間信號 BEGIN

      --按照圖7將兩個元件連接起來

      U1:START_5_20 PORT MAP(CLK1=>CLK1,START5=>START5,START20=>START20,RST=>RST,B=>m,A=>n,S_FLAG=>p);U2:DE_COUNT PORT MAP(CLK2=>CLK2,B=>m,A=>n,LOAD=>p,RST=>RST,L_CR=>L_CR,TIMEB=>TIMEB,TIMEA=>TIMEA, TIMEOUT=>TIMEOUT,SR1=>SR1);END ARCHITECTURE;

      2、選手搶答模塊

      在一個結(jié)構(gòu)體中用8個進程同時對8個選手按鍵電平變化的監(jiān)測是不可實現(xiàn)的,所以將本模塊劃分為兩個子模塊:單個選手按鍵模塊和判斷搶答選手模塊。最后將8個選手按鍵模塊和1個判斷搶答選手模塊連接起來,得到整個選手搶答模塊。

      1)單個選手按鍵子模塊

      按鍵輸入相當(dāng)于該實體的時鐘信號,鍵被按下,等于來一個脈沖,輸出信號給判斷模塊進行選手號的判斷。只要有選手搶答成功,相關(guān)模塊會輸出信號使8個按鍵模塊的LOCK信號有效,禁止其他選手搶答。如圖所示。

      圖7 單個選手按鍵模

      本模塊程序如下:

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BUTTON1 IS PORT(LOCK , BUTTON , RST :IN STD_LOGIC;PRESSED:OUT STD_LOGIC);END ENTITY;ARCHITECTURE B1 OF BUTTON1 IS BEGIN

      PROCESS(RST , BUTTON)

      --使用進程時刻監(jiān)測RST、BUTTON信號 BEGIN

      IF RST='0' THEN

      PRESSED<='0';

      --復(fù)位

      IF LOCK='1' THEN

      --鍵被按下并且LOCK信號無效 PRESSED<='1';

      --則輸出信號給判斷模塊 END IF;ELSIF BUTTON'EVENT AND BUTTON='0' THEN END IF;END PROCESS;END ARCHITECTURE;

      圖8 倒計時模塊仿真波形

      2)判斷搶答選手子模塊

      本子模塊接收8個按鍵子模塊的輸出信號,如收到1號子模塊輸出的高電平,則輸出選手號“0001”;并發(fā)出信號使揚聲器發(fā)聲并控制8個按鍵子模塊使它們的LOCK信號有效,禁止其他選手搶答。本子模塊端口設(shè)置如圖所示。

      圖9判斷選手模塊

      本子模塊程序如下:

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY IDENTIFIER IS

      PORT(PP1,PP2,PP3,PP4,PP5,PP6,PP7,PP8:IN STD_LOGIC;P_NUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);LOCK,SR1:OUT STD_LOGIC);END ENTITY;ARCHITECTURE ONE OF IDENTIFIER IS

      SIGNAL P:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN

      P<=PP8&PP7&PP6&PP5&PP4&PP3&PP2&PP1;

      --8個輸入放在一起判斷 BEGIN

      CASE P IS

      WHEN “00000001”=>P_NUM<=“0001”;LOCK<='0';SR1<='1';--1號選手 WHEN “00000010”=>P_NUM<=“0010”;LOCK<='0';SR1<='1';--2號選手 WHEN “00000100”=>P_NUM<=“0011”;LOCK<='0';SR1<='1';--3號選手 WHEN “00001000”=>P_NUM<=“0100”;LOCK<='0';SR1<='1';--4號選手 WHEN “00010000”=>P_NUM<=“0101”;LOCK<='0';SR1<='1';--5號選手 WHEN “00100000”=>P_NUM<=“0110”;LOCK<='0';SR1<='1';--6號選手 WHEN “01000000”=>P_NUM<=“0111”;LOCK<='0';SR1<='1';--7號選手 WHEN “10000000”=>P_NUM<=“1000”;LOCK<='0';SR1<='1';--8號選手 WHEN OTHERS=>P_NUM<=“0000”;LOCK<='1';SR1<='0';PRO1:PROCESS(P)

      --輸入若發(fā)生變化,馬上啟動進程進行判斷

      END CASE;END PROCESS;END ARCHITECTURE;9

      圖10 判斷搶答選手模塊仿真波形

      所以將以上兩個子模塊用元件例化語句連接起來,組成整個選手搶答模塊,如下圖所示

      圖11 選手搶答模塊

      實現(xiàn)程序為:

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BUTTON IS

      PORT(P1,P2,P3,P4,P5,P6,P7,P8,RST,LOCK:IN STD_LOGIC;P_NUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);LOCK_S,SR1:OUT STD_LOGIC);END ENTITY;ARCHITECTURE BB1 OF BUTTON IS COMPONENT BUTTON1 IS

      --調(diào)用元件BUTTON1聲明

      PORT(LOCK,B,RST:IN STD_LOGIC;PRESSED:OUT STD_LOGIC);END COMPONENT;COMPONENT IDENTIFIER IS

      --調(diào)用元件IDENTIFIER聲明

      PORT(PP1,PP2,PP3,PP4,PP5,PP6,PP7,PP8:IN STD_LOGIC;P_NUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);10 LOCK,SR1:OUT STD_LOGIC);END COMPONENT;SIGNAL a1,a2,a3,a4,a5,a6,a7,a8:STD_LOGIC;

      --定義圖12中的中間信號 BEGIN

      --按照圖12將兩個元件連接起來

      U1:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P1,RST=>RST,PRESSED=>a1);U2:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P2,RST=>RST,PRESSED=>a2);U3:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P3,RST=>RST,PRESSED=>a3);U4:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P4,RST=>RST,PRESSED=>a4);U5:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P5,RST=>RST,PRESSED=>a5);U6:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P6,RST=>RST,PRESSED=>a6);U7:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P7,RST=>RST,PRESSED=>a7);U8:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P8,RST=>RST,PRESSED=>a8);U9:IDENTIFIER PORT MAP(PP1=>a1,PP2=>a2,PP3=>a3,PP4=>a4,PP5=>a5,PP6=>a6,PP7=>a7,PP8=>a8,P_NUM=>P_NUM,LOCK=>LOCK_S,SR1=>SR1);END ARCHITECTURE;

      3、加減分模塊

      加減分模塊要識別按下的按鍵:加5分按鍵及減5分按鍵。所以采用狀態(tài)機的方法來識別。將本模塊劃分為三個子模塊:組別判斷子模塊,加減及寄存器子模塊,分數(shù)選擇輸出子模塊。

      1)組別判斷子模塊

      該模塊要實現(xiàn)的功能是根據(jù)搶答成功的選手編號,判斷出該選手屬于哪組,并輸出使能信號允許該組的分數(shù)寄存器進行加減操作。如圖所示。

      圖12 組別判斷模塊

      實現(xiàn)程序為:

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECODE IS PORT(CLK:IN STD_LOGIC;P_NUM:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

      EN1,EN2,EN3,EN4:OUT STD_LOGIC);END ENTITY;ARCHITECTURE ONE OF DECODE IS

      SIGNAL E:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN

      PROCESS(CLK)

      --引入時鐘信號,協(xié)調(diào)各部分電路的工作

      BEGIN IF CLK'EVENT AND CLK='1' THEN

      CASE P_NUM IS WHEN “0001”=>E<=“0001”;WHEN “0010”=>E<=“0001”;--

      1、2號選手屬第一組

      WHEN “0011”=>E<=“0010”;WHEN “0100”=>E<=“0010”;--

      3、4號選手屬第二組 WHEN “0101”=>E<=“0100”;WHEN “0110”=>E<=“0100”;--

      5、6號選手屬第三組 WHEN “0111”=>E<=“1000”;WHEN “1000”=>E<=“1000”;--

      7、8號選手屬第四組 WHEN OTHERS=>E<=“0000”;

      --其他情況則四個分數(shù)鎖存器都不工作

      END CASE;END IF;

      END PROCESS;

      EN4<=E(3);EN3<=E(2);EN2<=E(1);EN1<=E(0);END ARCHITECTURE;程序仿真波形如圖所示:

      圖13 組別判斷模塊仿真波形

      2)加減及寄存器子模塊

      本模塊的狀態(tài)機轉(zhuǎn)換過程為:將ADD和SUB信號并置,并檢測其電平變化。當(dāng)ADD按下時,“ADD&SUB”的電平為“01”,彈起時恢復(fù)為“11”。當(dāng)SUB按下時,“ADD&SUB”的電平為“10”,彈起時恢復(fù)為“11”。本模塊另外還需實現(xiàn)的功能是寄存功能。如下圖所示:

      圖14 加減及寄存器模塊

      實現(xiàn)程序如下: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER1 IS PORT(CLK,EN:IN STD_LOGIC;

      ADD,SUB:IN STD_LOGIC;

      AA2,AA1,AA0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY;ARCHITECTURE ONE OF COUNTER1 IS SIGNAL A:STD_LOGIC_VECTOR(1 DOWNTO 0);TYPE ST_TYPE IS(ST0,ST1,ST2);SIGNAL C_ST:ST_TYPE;BEGIN A<=ADD&SUB;

      --將ADD信號和SUB信號并置在一起判斷

      PROCESS(CLK)VARIABLE P2,P1,P0:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN

      IF EN='1' THEN

      --使能端有效,才對該分數(shù)寄存器進行操作

      IF CLK'EVENT AND CLK='1' THEN

      CASE C_ST IS

      WHEN ST0=>IF A=“01” THEN--A為“01”,說明ADD按下

      C_ST<=ST1;

      --下一狀態(tài)轉(zhuǎn)ST1,以等待按鍵彈起

      IF P0=“1001” THEN--個位為9,進1為0,再向十位進1

      P0:=“0000”;

      IF P1=“1001” THEN

      --十位為9,進一為0

      P1:=“0000”;

      IF P2=“1001” THEN

      --百位為9,進一為0

      P2:=“0000”;

      ELSE P2:=P2+1;

      --百位不為9,百位加1

      END IF;

      ELSE P1:=P1+1;

      --十位不為9,加一

      END IF;

      ELSE P0:=P0+1;

      --個位不為9,加一

      END IF;

      ELSIF A=“10” THEN

      --A為“10”,說明SUB按下

      C_ST<=ST2;--下一狀態(tài)轉(zhuǎn)ST2,以等待按鍵彈起

      IF(P2/=0 OR P1/=0 OR P0/=0)THEN

      IF P0=“0000” THEN P0:=“1001”;

      P1:=P1-1;--個位向十位借1 P2:=P2-1;--十位向百位借1

      IF P1=“0000” THEN

      ELSE P1:=P1-1;--十位不為0,直接減1

      END IF;

      P1:=“1001”;

      ELSE P0:=P0-1;--個位不為0,直接減1

      END IF;

      END IF;

      ELSE C_ST<=ST0;

      END IF;WHEN ST1=>IF A=“11” THEN

      --A為“11”,說明按鍵彈起

      C_ST<=ST0;

      --回到ST0繼續(xù)監(jiān)視按鍵

      ELSE C_ST<=ST1;--否則等待按鍵彈起

      END IF;

      C_ST<=ST0;WHEN ST2=>IF A=“11” THEN

      ELSE C_ST<=ST2;

      END IF;WHEN OTHERS=>C_ST<=ST0;END CASE;END IF;END IF;

      AA2<=P2;AA1<=P1;AA0<=P0;

      --操作后的分數(shù)輸出 END PROCESS;END ARCHITECTURE;

      加減及寄存器模塊仿真波形圖如下:

      圖15 加減及寄存器模塊仿真波形

      圖中,加分按鍵ADD按下,輸出“010”;減分按鍵SUB按下,輸出回到“000”;又來兩個加分按鍵,輸出“020”。當(dāng)EN信號無效時,有按鍵按下輸出不變。

      3)分數(shù)選擇輸出模塊

      四組分數(shù)要顯示出來,需要12個7段數(shù)碼管。若只顯示當(dāng)前搶答成功選手的分數(shù),則只需3個數(shù)碼管。所以設(shè)置一個分數(shù)選擇器,根據(jù)搶答成功的選手編號,選擇其分數(shù)輸出給顯示模塊顯示。

      程序為:

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MUXX IS PORT(P_NUM,AA2,AA1,AA0,BB2,BB1,BB0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

      CC2,CC1,CC0,DD2,DD1,DD0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

      D2,D1,D0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY;ARCHITECTURE ONE OF MUXX IS BEGIN

      PROCESS(P_NUM)

      --P_NUM為選手編號

      BEGIN

      CASE P_NUM IS

      WHEN “0001”=>D2<=AA2;D1<=AA1;D0<=AA0;WHEN “0010”=>D2<=AA2;D1<=AA1;D0<=AA0;--1號和2號選手為一組 WHEN “0011”=>D2<=BB2;D1<=BB1;D0<=BB0;WHEN “0100”=>D2<=BB2;D1<=BB1;D0<=BB0;--3號和4號選手為一組 WHEN “0101”=>D2<=CC2;D1<=CC1;D0<=CC0;WHEN “0110”=>D2<=CC2;D1<=CC1;D0<=CC0;--5號和6號選手為一組 WHEN “0111”=>D2<=DD2;D1<=DD1;D0<=DD0;WHEN “1000”=>D2<=DD2;D1<=DD1;D0<=DD0;--7號和8號選手為一組 WHEN OTHERS=>D2<=“0000”;D1<=“0000”;D0<=“0000”;

      END CASE;

      END PROCESS;END ARCHITECTURE;仿真波形如圖所示。

      圖16分數(shù)選擇輸出模塊仿真波形

      4、顯示模塊

      本模塊根據(jù)送來的數(shù)據(jù):搶答成功選手號,選手分數(shù)、倒計時時間,將相應(yīng)的字形碼送數(shù)碼管顯示。端口設(shè)置如圖所示。

      圖17顯示模塊

      圖18數(shù)碼管分配

      顯示0,“00111111”;3F;顯示1,“00000110”;06;顯示2,“01011011”;5B;顯示3,“01001111”;4F;顯示4,“01100110”;66;顯示5,“01101101”;6D;顯示6,“01111101”;7D;顯示7,“00000111”;07;顯示8,“01111111”;7F;顯示9,“01101111”;6F;顯示10,“00000000”;00;

      17圖中,BT為數(shù)碼管的位選信號,SG為數(shù)碼管的段選信號。另外圖18為數(shù)碼管的分配。左起第一位為選手編號,第3、4位為該選手的分數(shù),最后兩位為倒計時。程序如下:

      LIBRARY IEEE;16

      USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DISPLAY IS

      PORT(CLK:IN STD_LOGIC;SCORE2,SCORE1,SCORE0,P_NUMBER,TIMEB,TIMEA:IN BT,SG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

      STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY;ARCHITECTURE ONE OF DISPLAY IS SIGNAL CNT8:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL A:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN P1:PROCESS(CLK)

      BEGIN

      IF CLK'EVENT AND CLK='1' THEN

      --時鐘信號一來,顯示下一位 CNT8<=CNT8+1;END IF;END PROCESS;BEGIN

      CASE CNT8 IS

      WHEN “000”=>BT<=“10000000”;A<=P_NUMBER;--第一位顯示選手號

      WHEN “001”=>BT<=“01000000”;A<=“1010”;

      --第二位不用,滅

      WHEN “010”=>BT<=“00100000”;A<=SCORE2;

      --第三位顯示分數(shù)百位

      WHEN “011”=>BT<=“00010000”;A<=SCORE1;

      --第四位顯示分數(shù)十位

      WHEN “100”=>BT<=“00001000”;A<=SCORE0;

      --第五位顯示分數(shù)個位

      WHEN “101”=>BT<=“00000100”;A<=“1010”;

      --第六位不用,滅

      WHEN “110”=>BT<=“00000010”;A<=TIMEB;

      --第七位顯示倒計時十位

      WHEN “111”=>BT<=“00000001”;A<=TIMEA;

      --第八位顯示倒計時個位 END CASE;P2:PROCESS(CNT8)

      END PROCESS;BEGIN

      CASE A IS

      --根據(jù)數(shù)據(jù)選擇相應(yīng)的字形碼送數(shù)碼管顯示

      WHEN “0000”=>SG<=“00111111”;WHEN “0001”=>SG<=“00000110”;

      WHEN “0010”=>SG<=“01011011”;WHEN “0011”=>SG<=“01001111”;

      WHEN “0100”=>SG<=“01100110”;WHEN “0101”=>SG<=“01101101”;

      WHEN “0110”=>SG<=“01111101”;WHEN “0111”=>SG<=“00000111”;

      WHEN “1000”=>SG<=“01111111”;WHEN “1001”=>SG<=“01101111”;

      WHEN “1010”=>SG<=“00000000”;WHEN OTHERS=>NULL;END CASE;P3:PROCESS(A)END PROCESS;END ARCHITECTURE;本模塊仿真波形如圖所示。

      圖19顯示模塊仿真波形

      5、蜂鳴器模塊

      當(dāng)SR1鳴聲信號來時,輸出CLK2(2KHz)驅(qū)動蜂鳴器發(fā)聲。CLK1用于掃描SR1的電平變化,SR1上升沿來到,允許CLK2輸出,并持續(xù)一段時間。模塊圖如下:

      圖20蜂鳴器模塊

      本模塊程序如下:

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SPEAKER IS PORT(CLK1,SR1,CLK2:IN STD_LOGIC;

      S:OUT STD_LOGIC);END ENTITY;ARCHITECTURE ONE OF SPEAKER IS TYPE ST_TYPE IS(ST0,ST1);SIGNAL C_ST:ST_TYPE;SIGNAL A:STD_LOGIC;BEGIN PROCESS(CLK1)

      VARIABLE P:STD_LOGIC_VECTOR(7 DOWNTO 0);--P用于定時,使蜂鳴器發(fā)聲持續(xù)

      BEGIN

      IF CLK1'EVENT AND CLK1='1' THEN

      CASE C_ST IS WHEN ST0=>IF SR1='1' THEN

      --SR1信號有上升沿

      P:=“00111111”;18

      C_ST<=ST1;A<='1';--蜂鳴器發(fā)聲,開始定時

      ELSE C_ST<=ST0;A<='0';--否則等待

      END IF;

      P:=P-1;C_ST<=ST1;

      A<='0';--定時到,蜂鳴器停止發(fā)聲 IF SR1='1' THEN

      C_ST<=ST1;--等待系統(tǒng)復(fù)位 END IF;WHEN ST1=>IF P/=0 THEN

      --定時還沒到,等待

      ELSE

      ELSE C_ST<=ST0;--復(fù)位

      END IF;WHEN OTHERS=>C_ST<=ST0;A<='0';END CASE;END IF;S<=CLK2 AND A;

      --只有A為1時,蜂鳴器才發(fā)聲 END PROCESS;END ARCHITECTURE;本模塊的仿真波形如圖所示。

      圖21 蜂鳴器模塊仿真波形

      3設(shè)計心得及總結(jié)

      剛開始確定這個課題時,我首先確定了要用到哪些知識,主要是VHDL程序的設(shè)計,軟件的仿真。首先我查閱課本質(zhì)料,找了不少關(guān)于這方面的程序,盡量的把它們都弄懂了。然后我確定了總體方案,把整體方案劃分成了幾個模塊,形成了一個整體的框架,然后各個擊破。有了總體的思路做指導(dǎo)我很快我就仿真調(diào)試好了搶答啟動模塊選手搶答模塊,這樣一來就增加了我的信心,一鼓作氣拿下了以后的模塊。當(dāng)然任何事情都不會一帆風(fēng)順,也遇到許多難題,不懂的地方我就請叫老師和同學(xué),最后所有的模塊都被我一個一個的做出來了,我很高興,覺得我這兩天來的努力沒有白費。

      此次課程設(shè)計不僅加強了我對專業(yè)知識的學(xué)習(xí)與了解,更有許多的感慨,主要有以下幾點:

      (1)加強了我們動手、思考和解決問題的能力。我們很少能有這種機會來鍛煉自己,通過這次課程設(shè)計,起到了很好的鍛煉效果。

      (2)我在做課程設(shè)計同時也是對課本知識的鞏固和加強,課本 的知識太多,平時課間的學(xué)習(xí)并不能很好的理解程序的功能,所以在這次課程設(shè)計過程中,我們了解了很多程序的功能,并且對于其在實際中的使用有了更多的認識。

      (3)我們兩人一組相互合作,共同解決問題也認識到了團隊精神的重要性

      最后,我要感謝老師和同學(xué)們給我的幫助,沒有你們的幫助,我是不能完成此次課程設(shè)計的,真的很感謝你們!

      第三篇:EDA課設(shè)電子琴設(shè)計.

      武漢理工大學(xué)《電子線路EDA》課程設(shè)計 課程設(shè)計任務(wù)書

      學(xué)生姓名:-專業(yè)班級:電子科學(xué)與技術(shù)0903班 指導(dǎo)教師: 李成軍 工作單位: 信息工程學(xué)院 題 目: 簡易電子琴設(shè)計 初始條件:

      QUARTUS 軟件,微機,EDA-IV型實驗箱。課題要求:

      結(jié)合所學(xué)的知識,利用QUARTUS采用VHDL語言設(shè)計樂曲演奏電路,可以演奏8個音符:1、2、3、4、5、6、7、1。

      課題內(nèi)容: 時間安排: 1、2011年6月11日集中,聽老師作課設(shè)安排與報告格式要求說明。2、2012年6月12日至6月16日,選好課題,學(xué)習(xí)相關(guān)資料,開始課 設(shè)。3、2012年6月17日至6月19日,進行硬件調(diào)試。4、2012年6月20至6月21日,撰寫實驗報告。5、2012年6月22日,檢查硬件,進行答辯,提交設(shè)計報告。

      設(shè)計一個簡易的八音符電子琴,可以通過按鍵輸入來控制蜂鳴器輸出不同音調(diào)。指導(dǎo)教師簽名: 2012年 月 日 系主任(或責(zé)任教師)簽名: 2012年 月 日 武漢理工大學(xué)《電子線路EDA》課程設(shè)計 目錄

      摘要................................................................................................................................3 Abstract..........................................................................................................................4 緒論................................................................................................................................5 1設(shè)計簡介.....................................................................................................................6 1.1 課程設(shè)計的目的..............................................................................................6 1.2 課程設(shè)計的內(nèi)容..............................................................................................6 2.VHDL簡介.................................................................................................................7 2.1 VHDL的特點...................................................................................................7 2.2VHDL特點........................................................................................................8 2.3VHDL設(shè)計流程...............................................................................................8 3程序過程.....................................................................................................................9 3.1設(shè)計總體模塊...................................................................................................9 3.2模塊原理及程序...............................................................................................9

      4波形仿真...................................................................................................................12 5總結(jié)體會...................................................................................................................13 參考文獻......................................................................................................................14 附錄 源程序................................................................................................................15 武漢理工大學(xué)《電子線路EDA》課程設(shè)計 摘要

      隨著基于CPLD的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴大與深入,EDA技術(shù)在電子信息、通信、自動控制用計算機等領(lǐng)域的重要性日益突出。作為一個學(xué)電子信息專業(yè)的學(xué)生,我們必須不斷地了解更多的新產(chǎn)品信息,這就更加要求我們對EDA有個全面的認識。本程序設(shè)計的是簡易電子琴的設(shè)計。采用EDA作為開發(fā)工具,VHDL語言為硬件描述語言,QUARTUS作為程序運行平臺,所開發(fā)的程序通過調(diào)試運行、波形仿真驗證,初步實現(xiàn)了設(shè)計目標(biāo)。本程序使用的硬件描述語言VHDL,可以大大降低了硬件數(shù)字系統(tǒng)設(shè)計的入門級別,讓人感覺就是C語言的近親。通過老師的指導(dǎo)和自己的學(xué)習(xí)完成了預(yù)想的功能。關(guān)鍵詞:電子琴 ;quartus;EDA;VHDL語言 武漢理工大學(xué)《電子線路EDA》課程設(shè)計

      Abstract With the expansion and deepening of CPLD EDA technology development and applications, EDA technology in the electronic information, communication, automatic control computers and other areas of importance have become increasingly prominent.As an electronic information of professional students, we must continue to learn more about the new product information, it is even more we have a comprehensive understanding of EDA.The program design is the design of simple keyboard.Using EDA as a development tool, VHDL language for hardware description language, QUARTUS run as a program platform, the development of program debugging and running, the waveform simulation, the initial realization of the design goals.This program uses the hardware description language VHDL, can greatly reduce the entry level of the hardware design of digital systems, and close relatives of people feel is the C language.Through the guidance of their teachers and their own learning to complete the desired function.Keywords: electronic organ;the quartus;the EDA;VHDL language 武漢理工大學(xué)《電子線路EDA》課程設(shè)計

      緒論

      EDA是電子設(shè)計自動化(Electronic Design Automation)的縮寫。EDA技術(shù)就是依賴功能強大的計算機,在EDA工具軟件平臺上,對以硬件描述語言

      HDL(Hardware Description Language)為系統(tǒng)邏輯描述手段完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合、布局布線以及邏輯優(yōu)化和仿真測試,直至實現(xiàn)既定的電子線路系統(tǒng)功能。EDA技術(shù)使設(shè)計者的工作僅局限于利用軟件的方式來完成對系統(tǒng)硬件功能的實現(xiàn),可以說EDA技術(shù)的產(chǎn)生與發(fā)展是電子設(shè)計技術(shù)的一個巨大進步。EDA技術(shù)融合了眾多電子設(shè)計技術(shù)和計算機輔助技術(shù),使得它在現(xiàn)代電子學(xué)方面的應(yīng)用越來越廣泛,也成為電子、電氣類大學(xué)生必須熟練掌握的一種設(shè)計工具。

      硬件描述性語言HDL是EDA技術(shù)的重要組成部分,常見HDL的有VHDL、HDL、ABEL、Verilog、AHDL、SystemC等。其中VHDL、Verilog在現(xiàn)在的EDA設(shè)計中使用的最多,也擁有了幾乎所有主流EDA工具的支持,而相對于其他語言VHDL更加完善。VHDL是英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,是硬件描述語言的業(yè)界標(biāo)準(zhǔn)之一。它作為一個規(guī)范語言和建模語言,具有與具體硬件電路無關(guān)及設(shè)計平臺無關(guān)的特性,而且還有很強的電路行為描述和建模能力,能從多個層次的數(shù)字系統(tǒng)進行建模和描述,從而大大簡化了硬件設(shè)計的任務(wù),提高了設(shè)計效率和可靠性。武漢理工大學(xué)《電子線路EDA》課程設(shè)計 1設(shè)計簡介

      1.1 課程設(shè)計的目的

      鞏固和運用所學(xué)課程,理論聯(lián)系實際,提高分析、解決計算機技術(shù)實際問題的獨立工作能力,通過對一個簡易的八音符電子琴的設(shè)計,進一步加深對計算機原理以及數(shù)字電路應(yīng)用技術(shù)方面的了解與認識,進一步熟悉數(shù)字電路系統(tǒng)設(shè)計、制作與調(diào)試的方法和步驟。鞏固所學(xué)課堂知識,理論聯(lián)系實際,提高分析、解決計算機技術(shù)實際問題的獨立工作能力。為了進一步了解計算機組成原理與系統(tǒng)結(jié)構(gòu),深入學(xué)習(xí)EDA技術(shù),用VHDL語言去控制將會使我們對本專業(yè)知識可以更好地掌握。

      1.2 課程設(shè)計的內(nèi)容

      設(shè)計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。當(dāng)按下不同按鍵時,蜂鳴器發(fā)出不同頻率聲響,來實現(xiàn)簡易電子琴功能。

      武漢理工大學(xué)《電子線路EDA》課程設(shè)計 2.VHDL簡介 2.1 VHDL的特點

      VHDL語言功能強大、設(shè)計靈活。VHDL語言可以用簡潔明確的源代碼來描述復(fù)雜的邏輯控制,它具有多層次的設(shè)計描述功能,層層細化,最后可直接生成電路級描述。VHDL支持同步電路、異步電路和隨機電路的設(shè)計,這是其他硬件描述語言雖不能比擬的。VHDL還支持多種設(shè)計方法,既支持自底向上的設(shè)計,又支

      持自頂向下的設(shè)計;既支持模塊化設(shè)計,又支持層次化設(shè)計。由于VHDL已經(jīng)成為IEEE標(biāo)準(zhǔn)所規(guī)定的硬件描述性語言,目前大多數(shù)EDA工具幾乎都支持VHDL。因為VHDL易讀和結(jié)構(gòu)化且易于修改設(shè)計所以在硬件電路設(shè)計過程中,VHDL語言得到廣泛應(yīng)用。

      VHDL語言獨立于器件的設(shè)計與工藝無關(guān)。因而設(shè)計人員用VHDL進行設(shè)計時,不需要考慮選擇器件得問題,就可以集中精力進行設(shè)計的優(yōu)化。當(dāng)設(shè)計描述完成后,可以用多種不同的器件結(jié)構(gòu)來實現(xiàn)其功能。

      VHDL語言易于共享和復(fù)用。VHDL采用基于庫(Library)的設(shè)計方法,可以建立各種可再次利用的模塊。這些模塊可以預(yù)先設(shè)計或使用以前設(shè)計中的存檔模塊,將這些模塊存放到庫中,就可以在以后的設(shè)計中進行復(fù)用,可以使設(shè)計成果在設(shè)計人員之間進行交流和共享,減少硬件電路設(shè)計。VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計早期就能查驗設(shè)計系統(tǒng)的功能可行性,隨時可對設(shè)計進行仿真模擬。

      VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了它具有支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用功能。這個特點很好的符合了市場需求。對于用VHDL完成的一個確定的設(shè)計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動的把VHDL描述的設(shè)計轉(zhuǎn)變成門級網(wǎng)表。

      總之,由于VHDL語言有的這些優(yōu)良的特點,它被廣泛的應(yīng)用在電子線路和電子系統(tǒng)的設(shè)計中。

      武漢理工大學(xué)《電子線路EDA》課程設(shè)計 2.2VHDL優(yōu)點

      (1)與其他的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計大規(guī)模電子系統(tǒng)的重要保證。

      (2)VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計早期就能查驗設(shè)計系統(tǒng)的功能可行性,隨時可對設(shè)計進行仿真模擬。

      (3)VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現(xiàn)。(4)對于用VHDL完成的一個確定的設(shè)計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動的把VHDL描述設(shè)計轉(zhuǎn)變成門級網(wǎng)表。

      (4)VHDL對設(shè)計的描述具有相對獨立性,設(shè)計者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計實現(xiàn)的目標(biāo)器件是什么,而進行獨立的設(shè)計。

      2.3VHDL設(shè)計流程

      (1)設(shè)計輸入根據(jù)電路設(shè)計所提出的要求,將程序輸入到VHDL編輯器中去編輯。

      (2)功能級模擬用VHDL,模擬器對編輯后的程序進行模擬,如果達不到設(shè)計要求,則可以重新修改程序,直到通過功能模擬。

      (3)邏輯綜合與優(yōu)化 將通過功能模擬的程序放到VHDL編譯器中,進行邏輯綜合與優(yōu)化。

      (4)門級模擬對電路用VHDL。仿真器仿真??蓪﹂T級電路的延時、定時狀態(tài)、驅(qū)動能力等進行仿真。如不符合要求,可重復(fù)步驟(3),再門級模擬,直到符合要求止。

      (5)版圖生成 用相應(yīng)的軟件處理后,就可以拿去制版。武漢理工大學(xué)《電子線路EDA》課程設(shè)計 3程序過程 3.1設(shè)計總體模塊

      圖3-1電子琴總體模塊

      Clk為實驗板時鐘輸入,key[7..0]分別對應(yīng)八個按鍵輸入,buz為輸出端,連接蜂鳴器。

      3.2模塊原理及程序 1、2、3、4、5、6、7、1分別對應(yīng)的頻率分別為2616HZ、2936HZ、3295HZ、3490HZ、3920HZ、4399HZ、4940HZ、5232HZ。在程序里可以對20M時鐘頻率進行分頻來得到所需頻率而發(fā)出不同音調(diào)。

      20M時鐘要得到上面所需頻率需要進行分頻,分頻系數(shù)分別為3822、3405、3034、2865、2551、2273、2024、1911,可以令時鐘計數(shù)一定次數(shù)后反向從而達到分頻的效果得到所需不同音調(diào)對應(yīng)的頻率。程序中定義8個常數(shù)來作為計數(shù)對應(yīng)值:

      constant duo : std_logic_vector(12 downto 0):=“0111011101110”;constant lai : std_logic_vector(12 downto 0):= “0110101001101”;constant mi : std_logic_vector(12 downto 0):= “0101111011010”;constant fa : std_logic_vector(12 downto 0):= “0101100110001”;constant suo : std_logic_vector(12

      downto 0):= “0100111110111”;constant la : std_logic_vector(12 downto 0):= “0100011100001”;constant xi : std_logic_vector(12 downto 0):= “0011111101000”;武漢理工大學(xué)《電子線路EDA》課程設(shè)計

      constant duo1 : std_logic_vector(12 downto 0):= “0011101110111”;8個按鍵分別對應(yīng)8個頻率的脈沖,當(dāng)一個按鍵按下去后此時該按鍵對應(yīng)引腳輸入高電平,故可利用“01000000”這種形式來表示哪個按鍵按下,而不同按鍵對應(yīng)不同頻率輸出。對應(yīng)關(guān)系分別為:

      “10000000”對應(yīng)1的頻率; “01000000”對應(yīng)2的頻率; “00100000”對應(yīng)3的頻率;

      “00010000”對應(yīng)4的頻率; “00001000”對應(yīng)5的頻率; “00000100”對應(yīng)6的頻率; “00000010”對應(yīng)7的頻率; “00000001”對應(yīng)1的頻率;

      故可用以下程序來實現(xiàn)不同按鍵對應(yīng)不同頻率的要求:

      when“10000000”=>if(clk1 /= duo)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;

      (clk1 /= lai)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when“00100000”=>if(clk1 /= mi)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;武漢理工大學(xué)《電子線路EDA》課程設(shè)計

      when“00010000”=>if(clk1 /= fa)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when“00001000”=>if(clk1 /= suo)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when“00000100”=>if(clk1 /= la)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when“00000010”=>if(clk1 /= xi)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when“00000001”=>if(clk1 /= duo1)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when others=>null;武漢理工大學(xué)《電子線路EDA》課程設(shè)計 4波形仿真

      圖4-1 波形仿真圖

      由仿真波形可以看到,當(dāng)按鍵輸入不同值時,蜂鳴器也將發(fā)出不同頻率聲響。武漢理工大學(xué)《電子線路EDA》課程設(shè)計

      5總結(jié)體會

      經(jīng)過努力,簡易電子琴的設(shè)計基本上完成了。在整個設(shè)計過程中,包括前期中期和后期,我都有著許多不同的體會:

      1)這個設(shè)計的基本是接觸一門新的語言并加以應(yīng)用,對于我來說,沒有想到的是入手的速度比我的預(yù)料快,在以前編程的基礎(chǔ)上,從接觸到開始動手編程的時間得到了很大的縮短。知識的接收速度在很大的程度上決定了動手的時間。

      2)VHDL的編程與C語言的編程有著本質(zhì)的不同,然而以往形成的舊編程習(xí)慣在VHDL編程中依然起著很大的作用。一通百通,不是沒有道理的。對于學(xué)習(xí)新的知識并予以應(yīng)用的信心,顯得更足了。

      3)VHDL的設(shè)計關(guān)鍵是電路邏輯設(shè)計,而一個程序的關(guān)鍵是總體設(shè)計。對于硬件設(shè)計接觸不多的我們清楚這一點也許不無好處。

      4)通過這個程序設(shè)計讓我學(xué)會一種新的語言,對數(shù)字系統(tǒng)結(jié)構(gòu)也有了更進一步的了解和認識,對我以后的學(xué)習(xí)有很大的幫助。希望其他人在看再做類似設(shè)計時有所借鑒。

      通過幾天的課程設(shè)計,我對數(shù)據(jù)庫軟件EDA技術(shù)、VHDL、等系列知識都有了一定的了解。使用EDA技術(shù)開發(fā)頁面的能力也有了很大提高。武漢理工大學(xué)《電子線路EDA》課程設(shè)計

      參考文獻

      [1]潘松 黃繼業(yè).EDA技術(shù)與VHDL(第二版).北京:清華大學(xué)出版社,2005.7 [2]康華光.電子技術(shù)基礎(chǔ).北京:高等教育出版社.2006.1 [3]付家才.EDA工程實踐技術(shù).北京:化學(xué)工業(yè)出版社,2007.1 [4]漢澤西.EDA技術(shù)及其應(yīng)用.北京:北京航空航天大學(xué)出版社,2004.5 [5]趙剛.EDA技術(shù)簡明教程.成都:四川大學(xué)出版社,2004.6 [6]章彬宏 周正林.EDA應(yīng)用技術(shù).北京:北京理工大學(xué)出版社,2007.7 [7]劉艷萍 高振斌 李志平.EDA實用技術(shù)及應(yīng)用.北京:國防工業(yè)出版社,2006.1

      武漢理工大學(xué)《電子線路EDA》課程設(shè)計 附錄 源程序

      library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity music is port(clk:in std_logic;key:in std_logic_vector(7 downto 0);buz:out std_logic);end music;architecture beh of music is signal clk1:std_logic_vector(12 downto 0);constant duo : std_logic_vector(12 downto 0):=“0000000001110”;constant lai : std_logic_vector(12 downto 0):= “0000000001101”;constant mi : std_logic_vector(12 downto 0):= “0000000011010”;constant fa : std_logic_vector(12 downto 0):= “0000000010011”;constant suo : std_logic_vector(12 downto 0):= “0000000010010”;constant la : std_logic_vector(12 downto 0):= “0000000010001”;constant xi : std_logic_vector(12 downto 0):= “0000000010000”;constant duo1 : std_logic_vector(12 downto 0):= “0000000001111”;signal buzz:std_logic;signal key_out:std_logic_vector(7 downto 0);begin buz<=buzz;key_out<=key;process(clk)begin if clk'event and clk='1' then case key_out is when“10000000”=>if(clk1 /= duo)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when“01000000”=>if(clk1 /= lai)then clk1<=clk1+“0000000000001”;

      else clk1<=“0000000000000”;buzz<=not buzz;end if;when“00100000”=>if(clk1 /= mi)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;武漢理工大學(xué)《電子線路EDA》課程設(shè)計 buzz<=not buzz;end if;when“00010000”=>if(clk1 /= fa)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when“00001000”=>if(clk1 /= suo)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when“00000100”=>if(clk1 /= la)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when“00000010”=>if(clk1 /= xi)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when“00000001”=>if(clk1 /= duo1)then clk1<=clk1+“0000000000001”;else clk1<=“0000000000000”;buzz<=not buzz;end if;when others=>null;end case;end if;end process;end beh;武漢理工大學(xué)《電子線路EDA》課程設(shè)計 本科生課程設(shè)計成績評定表

      指導(dǎo)教師簽字: 年 月 日

      第四篇:EDA簡易數(shù)字頻率計~課設(shè)報告

      EDA課程設(shè)計~簡易數(shù)字頻率計

      《EDA技術(shù)》課程設(shè)計報告

      題目:簡易數(shù)字頻率計

      專業(yè):

      本組成員:

      簡述

      EDA課程設(shè)計~簡易數(shù)字頻率計

      隨著數(shù)字電子技術(shù)的發(fā)展,頻率測量成為一項越來越普遍的工作,因此測頻計常受到人們的青睞。目前許多高精度的數(shù)字頻率計都采用單片機加上外部的高速計數(shù)器來實現(xiàn),然而單片機的時鐘頻率不高導(dǎo)致測頻速度比較慢,并且在這種設(shè)計中,由于PCB版的集成度不高,導(dǎo)致PCB板走線長,因此難以提高計數(shù)器的工作頻率。為了克服這種缺點,大大提高測量精度和速度,我們可以設(shè)計一種可編程邏輯器件來實現(xiàn)數(shù)字頻率計。

      EDA技術(shù)是以大規(guī)模可編程邏輯器件為設(shè)計載體,以硬件語言為系統(tǒng)邏輯描述的主要方式,以計算機、大規(guī)模可編程邏輯器件的開發(fā)軟件及實驗開發(fā)系統(tǒng)為設(shè)計工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件設(shè)計的電子系統(tǒng)到硬件系統(tǒng)的設(shè)計,最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù)。其設(shè)計的靈活性使得EDA技術(shù)得以快速發(fā)展和廣泛應(yīng)用。以QUARTUSII軟件為設(shè)計平臺,采用VHDL語言實現(xiàn)數(shù)字頻率計的整體設(shè)計。

      EDA技術(shù)已經(jīng)廣泛應(yīng)用于模擬與數(shù)字電路系統(tǒng)等許多領(lǐng)域。電子設(shè)計自動化是一種實現(xiàn)電子系統(tǒng)或電子產(chǎn)品自動化設(shè)計的技術(shù),它與電子技術(shù),微電子技術(shù)的發(fā)展密切相關(guān),它吸收了計算機科學(xué)領(lǐng)域的大多數(shù)最新研究成果,以高性能的計算機作為工作平臺,促進了工程發(fā)展。EDA的一個重要特征就是使用硬件描述語言(HDL)來完成的設(shè)計文件,VHDL語言是經(jīng)IEEE確認的標(biāo)準(zhǔn)硬件語言,在電子設(shè)計領(lǐng)域受到了廣泛的接受。

      1.設(shè)計概述

      EDA課程設(shè)計~簡易數(shù)字頻率計

      1.1設(shè)計原理

      在電子技術(shù)中,頻率是最基本的參數(shù)之一,并且與許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系,因此,頻率的測量就顯得更為重要。測量頻率的方法有多種,其中電子計數(shù)器測量頻率具有精度高、使用方便、測量迅速,以及便于實現(xiàn)測量過程自動化等優(yōu)點,是頻率測量的重要手段之一。

      數(shù)字式頻率計的測量原理有兩類:一是直接測頻法,即在一定閘門時間內(nèi)測量被測信號的脈沖個數(shù);二是間接測頻法即測周期法,如周期測頻法。直接測頻法適用于高頻信號的頻率測量,通常采用計數(shù)器、數(shù)據(jù)鎖存器及控制電路實現(xiàn),并通過改變計數(shù)器閥門的時間長短在達到不同的測量精度;間接測頻法適用于低頻信號的頻率測量。

      本設(shè)計中使用的就是直接測頻法,即用計數(shù)器在計算1s內(nèi)輸入信號周期的個數(shù),其測頻范圍為1Hz~9999Hz。

      1.2原理框圖

      1.3 系統(tǒng)原理圖

      系統(tǒng)原理圖仿真

      EDA課程設(shè)計~簡易數(shù)字頻率計

      分析說明:clk為1HZ,待測信號sig為10HZ 1.5 引腳圖

      2.設(shè)計思路

      頻率測量的基本原理是計算每秒鐘內(nèi)待測信號的脈沖個數(shù)。這就要求測頻控制信號發(fā)生器testpl的計數(shù)使能信號tsten能產(chǎn)生一個1秒脈寬的周期信號,并對頻率計的每一計數(shù)器cnt10的使能端en進行同步控制。當(dāng)tsten為高電平“1”時,允許計數(shù);為低電平“0”時停止計數(shù),并保持其計數(shù)結(jié)果。在停止計數(shù)期間,首先需要一個鎖存信號load的上跳沿將計數(shù)器在前1 秒種的計數(shù)值鎖存進16位鎖存器reg16b中。鎖存信號之后,必須有一個清零信號clr_cnt對計數(shù)器進行清零,為下1 秒的計數(shù)操作做準(zhǔn)備。,然后由外部數(shù)碼管控制器ledcom控制的7段譯碼器ymq譯出,并穩(wěn)定顯示。

      3.模塊劃分

      3.1 測頻控制信號發(fā)生器testpl模塊:

      輸入端clk收到1Hz信號后,其輸出端testen控制各個cnt10的使能,clr_cnt控制各個cnt10的清零,load控制鎖存器內(nèi)數(shù)據(jù)的輸出。

      仿真圖如下:

      EDA課程設(shè)計~簡易數(shù)字頻率計

      3.2 十進制計數(shù)器cnt10模塊:

      有一時鐘使能輸入端en,用于鎖定計數(shù)值。當(dāng)高電平“1”時計數(shù)允許計數(shù),低電平“0”時禁止計數(shù)。多位十進制計數(shù)器時,最低位的計數(shù)器的clk端輸入被測信號,各計數(shù)器的進位輸出端c10將信號輸?shù)较乱晃皇M制計數(shù)器cnt10的輸入端clk,最高位十進制計數(shù)器cnt10的進位輸出端c10不處理。

      仿真圖如下:

      3.3 16位鎖存器reg16b模塊:將已有16 位bcd碼存在于此模塊的輸入口din[15..0],在信號load的上升沿后即被鎖存到寄存器reg16b的內(nèi)部,并由reg16b的輸出端dout[15..0]輸出,設(shè)置鎖存器的好處是,數(shù)碼管上顯示的數(shù)據(jù)穩(wěn)定,不會由于周期性的清零信號而不斷閃爍。

      仿真圖如下:

      EDA課程設(shè)計~簡易數(shù)字頻率計

      3.4 數(shù)碼管控制器ledcom模塊:兩個輸入端一個為datain[15..0],另一個為數(shù)碼管顯示選擇的掃描頻率輸入端clk,輸出端為數(shù)碼管選擇信號com[3..0]和對應(yīng)顯示的數(shù)碼管的BCD碼信號端dataout[3..0],數(shù)碼管顯示選擇隨掃描頻率clk循環(huán)變化,實現(xiàn)穩(wěn)定顯示。

      仿真圖如下:

      3.5

      譯碼器ymq模塊:輸入端d_in[3..0]將接收BCD碼信號,譯碼后輸出端d_out[7..0]輸出8為7段數(shù)碼管信號,其中輸出的第8位均為高電平“1”可以使四個數(shù)碼管的小數(shù)點不顯示。經(jīng)譯碼器的處理輸出后數(shù)碼管顯示相應(yīng)的數(shù)值。

      EDA課程設(shè)計~簡易數(shù)字頻率計

      4.VHDL頂層文件:

      library ieee;use ieee.std_logic_1164.all;entity lx is port(clk: in std_logic;led: out std_logic_vector(7 downto 0);ledc: out std_logic_vector(2 downto 0));end lx;architecture art of lx is--十進制計數(shù)器

      component cnt10--待調(diào)用的有時鐘使能的十進制計數(shù)器端口定義

      port(clk,clr,en: in std_logic;q: out std_logic_vector(3 downto 0);c10: out std_logic);end component;--16位鎖存器

      component reg16b--待調(diào)用的32位鎖存器端口定義 port(load: in std_logic;din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end component;--測頻控制器

      component testpl--待調(diào)用的測頻控制信號發(fā)生器端口定義 port(clk:in std_logic;

      EDA課程設(shè)計~簡易數(shù)字頻率計

      tsten:out std_logic;clr_cnt:out std_logic;load:out std_logic);end component;--數(shù)碼管選擇器

      component ledcom--待調(diào)用的數(shù)碼管選擇器端口定義 port(clk:in std_logic;datain: in std_logic_vector(15 downto 0);dataout: out std_logic_vector(3 downto 0);sel: out std_logic_vector(2 downto 0));end component;--譯碼器

      component ymq--待調(diào)用的譯碼器端口定義 port(d_in: in std_logic_vector(3 downto 0);d_out: out std_logic_vector(7 downto 0));end component;signal clk1,clk2,clk3: std_logic;--clk1為1Hz信號,clk2為被測信號,clk3為數(shù)碼管掃描信號

      signal tsten,clr,load: std_logic;signal c1,c2,c3,c4: std_logic;signal qout,rout: std_logic_vector(15 downto 0);signal datao: std_logic_vector(3 downto 0);begin u0:testpl port map(clk1,tsten,clr,load);u1:cnt10 port map(clk2,clr,tsten,qout(3 downto 0),c1);u2:cnt10 port map(c1,clr,tsten,qout(7 downto 4),c2);u3:cnt10 port map(c2,clr,tsten,qout(11 downto 8),c3);u4:cnt10 port map(c3,clr,tsten,qout(15 downto 12),c4);u5:reg16b port map(load,qout(15 downto 0),rout);u6:ledcom port map(clk3,rout,datao,ledc);u8:ymq port map(datao,led);end art;

      5.心得體會

      這次課程設(shè)計中,我不僅復(fù)習(xí)鞏固了課堂所學(xué)的理論知識,提高

      EDA課程設(shè)計~簡易數(shù)字頻率計

      了對所學(xué)知識的綜合應(yīng)用能力,并從根本上了解了VHDL語言的一些基本用法,應(yīng)用了原來不會或者不熟練的句型,如if句,case句等,也學(xué)會了一些基本功能的實現(xiàn)方法,如分頻,狀態(tài)控制等等,從另外一個角度重新審視了上學(xué)期完全從硬件角度出發(fā)的電路設(shè)計,明白了軟硬件之間的交互。通過這個課題,對系統(tǒng)框圖、邏輯流程圖、狀態(tài)轉(zhuǎn)移圖的設(shè)計有了一定的了解。也懂得了系統(tǒng)的前期設(shè)計對于后續(xù)的編程和調(diào)試的重要性。

      本課題采用了自下而上的設(shè)計方法,根據(jù)系統(tǒng)對硬件的要求,畫出系統(tǒng)控制流程圖;然后根據(jù)控制流程圖,分化模塊,利用模塊實現(xiàn)功能;最后進行仿真和調(diào)試。

      每個成功的背后都要面對無數(shù)次的失敗,這次課設(shè)也不例外。雖然遇到不少問題與困難,但通過老師以及同學(xué)的幫助,都一一得到順利地解決。我想這必定會為將來的實踐積累寶貴的經(jīng)驗和教訓(xùn)??傊@次課設(shè)我們都受益匪淺。整個過程氛圍濃厚,本人也態(tài)度十分認真,積極向老師和同學(xué)求教并在此過程中收獲良多,能夠進一步了解和使用一門與硬件直接打交道的基本語言對我們將來的學(xué)習(xí)和工作都會十分有益。

      6.五個模塊的程序源代碼

      6.1 測頻控制信號發(fā)生器

      EDA課程設(shè)計~簡易數(shù)字頻率計

      library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testpl is port(clk:in std_logic;--1Hz信號

      tsten:out std_logic;--計數(shù)器使能信號 clr_cnt:out std_logic;--計數(shù)器清零信號 load:out std_logic);--鎖存器輸出控制信號 end testpl;architecture art of testpl is signal div2clk:std_logic;begin process(clk)begin if clk'event and clk='1'then div2clk<=not div2clk;--div2clk為2Hz end if;end process;process(clk ,div2clk)begin if(clk='0'and div2clk='0')then clr_cnt<='1';--當(dāng)div2clk與clk同時為零時計數(shù)器清零 else clr_cnt<='0';--當(dāng)div2clk處于的高電平時計數(shù)器計數(shù) end if;end process;load<=not div2clk;--鎖存器輸出與計數(shù)器使能信號反相 tsten<=div2clk;end art;

      有時鐘使能的十進制計數(shù)器

      library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 is port(clk,clr,en: in std_logic;--clk:計數(shù)器時鐘,clr:清零信號,en:計數(shù)使能信號

      q: out std_logic_vector(3 downto 0);--q:4位計數(shù)結(jié)果輸出

      EDA課程設(shè)計~簡易數(shù)字頻率計

      c10: out std_logic);--計數(shù)進位

      end cnt10;architecture art of cnt10 is signal cqi: std_logic_vector(3 downto 0);begin process(clk,clr)begin if clr='1' then cqi<=“0000”;--當(dāng)輸入的clr_cnt為低電平0時清零

      elsif clk'event and clk='1' then if en='1' then--當(dāng)輸入的tesen為高電平1時允許計數(shù)

      if(cqi<9)then cqi<=cqi+1;else cqi<=“0000”;--等于9則計數(shù)器清零

      end if;--當(dāng)輸入的tesen為低電平0時禁止計數(shù),鎖定計數(shù)值 end if;end if;end process;--產(chǎn)生進位 process(cqi)begin if cqi=“1001” then c10<='1';--當(dāng)加的9時產(chǎn)生進位輸出 else c10<='0';end if;end process;q<=cqi;end art;

      16位鎖存器

      library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b is port(load: in std_logic;--輸出鎖存控制信號 din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end reg16b;

      EDA課程設(shè)計~簡易數(shù)字頻率計

      architecture art of reg16b is begin process(load,din)begin if load'event and load='1'then--load為高電平時teten為低電平,計數(shù)器禁止

      dout<=din;--鎖存輸入的數(shù)據(jù) end if;end process;end art;

      6.4 數(shù)碼管控制器

      library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledcom is port(clk:in std_logic;--數(shù)碼管掃描頻率

      datain: in std_logic_vector(15 downto 0);--鎖存器輸入的16位信號 dataout: out std_logic_vector(3 downto 0);--輸出至譯碼器的4位信號

      sel: buffer std_logic_vector(2 downto 0));--輸出數(shù)碼管選擇信號 end ledcom;architecture art of ledcom is begin--sel同掃描頻率clk循環(huán)變化 process(clk)begin if rising_edge(clk)then if sel>=7 then

      sel <=“000”;

      else sel<=sel+1;end if;end if;

      end process;--數(shù)碼管選擇 process(sel,datain)

      begin case sel is when “000”=> dataout<=datain(3 downto 0);

      EDA課程設(shè)計~簡易數(shù)字頻率計

      when “001”=> dataout<=datain(7 downto 4);when “010”=> dataout<=datain(11 downto 8);when “011”=> dataout<=datain(15 downto 12);when others =>NULL;end case;end process;end art;

      七段數(shù)碼管的譯碼器

      library IEEE;use IEEE.std_logic_1164.all;entity ymq is port(d_in: in std_logic_vector(3 downto 0);--數(shù)碼管控制器輸入四位信號

      d_out: out std_logic_vector(6 downto 0));--輸出8位信號

      end ymq;--第8位d_out[7]為逗號 architecture art of ymq is begin process(d_in)begin case d_in is--第8位為1高電平逗號不顯示 when “0000” => d_out<=“1111110”;--0 when “0001” => d_out<=“0110000”;--1 when “0010” => d_out<=“1101101”;--2 when “0011” => d_out<=“1111001”;--3 when “0100” => d_out<=“0110010”;--4 when “0101” => d_out<=“1011011”;--5 when “0110” => d_out<=“1011111”;--6 when “0111” => d_out<=“1110000”;--7 when “1000” => d_out<=“1111111”;--8 when “1001” => d_out<=“1111011”;--9 when others =>NULL;end case;end process;end art;7.參考文獻

      1、王小軍 主編.《VHDL簡明教程》.清華大學(xué)出版社,1997

      EDA課程設(shè)計~簡易數(shù)字頻率計

      2、潘松、王國棟 主編.《VHDL應(yīng)用教程》電子科技大學(xué)出版社,2000

      3、甘歷 主編.《VHDL應(yīng)用于開發(fā)實踐》科學(xué)出版社,2003

      4、劉愛榮 主編.《EDA技術(shù)與CPLD/FPGA開發(fā)應(yīng)用簡明教程》.清華大學(xué)出版社,2007

      第五篇:EDA波形發(fā)生器實訓(xùn)報告

      班級:09電信 姓名:熊雷 學(xué)號:13 指導(dǎo)教師:趙欣

      湖北輕工職業(yè)技術(shù)學(xué)院 2011年3月4日 湖北輕工職業(yè)技術(shù)學(xué)院 電子設(shè)計與制作綜合實訓(xùn)

      目錄

      第一章 概述..............................................................................................................................2 第二章 萬用表組裝與調(diào)試的目的與意義..............................................................................5 第三章 電路調(diào)試與制作..........................................................................................................7

      3.1萬用表的種類............................................................................錯誤!未定義書簽。3.2萬用表的結(jié)構(gòu)特征....................................................................錯誤!未定義書簽。第四章 指針式萬用表最基本的的工作原理..........................................................................7

      4.1MF47型萬用表的工作原理...............................................錯誤!未定義書簽。4.2MF47萬用表電阻檔工作原理.............................................................................9 第五章 總結(jié)與體會..................................................................................................................9 第六章 附錄............................................................................................................................10

      第一章 概述

      1.1 引言

      電子設(shè)計的必由之路是數(shù)字化,這已成為共識。在數(shù)字化的道路上,我國的電子技術(shù)經(jīng)歷了一系列重大的變革。從應(yīng)用小規(guī)模集成電路構(gòu)成電路系統(tǒng),到廣泛地應(yīng)用微控制器或單片機(MCU),在電子系統(tǒng)設(shè)計上發(fā)生了具有里程碑意義的飛躍。電子產(chǎn)品正在以前所未有的速度進行著革新,主要表現(xiàn)在大規(guī)??删幊踢壿嬈骷膹V泛應(yīng)用。在可編程芯片CPLD(復(fù)雜可編程邏輯器件)和FPGA(現(xiàn)場可編程門陣列)上實現(xiàn)電子系統(tǒng)的設(shè)計,必將成為今后電子 湖北輕工職業(yè)技術(shù)學(xué)院 電子設(shè)計與制作綜合實訓(xùn)

      系統(tǒng)設(shè)計的一個發(fā)展方向。所以電子設(shè)計技術(shù)發(fā)展到今天,又將面臨另一次更大意義的突破,即CPLD/FPGA在EDA(電子設(shè)計自動化)基礎(chǔ)上的廣泛應(yīng)用。本設(shè)計將采用基于VHDL的EDA設(shè)計來實現(xiàn)波形發(fā)生器的各種功能。

      1.2

      EDA技術(shù)的涵義EDA是電子設(shè)計自動化(Electronic Design Automation)的縮寫。它是以大規(guī)??删幊踢壿嬈骷樵O(shè)計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達方式,以計算機、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實驗開發(fā)系統(tǒng)為設(shè)計工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件的方式設(shè)計電子系統(tǒng)到硬件系統(tǒng)的一門新技術(shù)。EDA技術(shù)可以實現(xiàn)邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化,邏輯布局布線、邏輯仿真。完成對于特定目標(biāo)芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或?qū)S眉尚酒?/p>

      EDA的工程設(shè)計流程電子設(shè)計的全過程分為物理級、電路級和系統(tǒng)級三個設(shè)計層次,涉及的電子系統(tǒng)從低頻、高頻到微波,從線性到非線性,從模擬到數(shù)字,從通用集成電路到專用集成電路構(gòu)造的電子系統(tǒng)。EDA技術(shù)采用系統(tǒng)級的設(shè)計方法,其設(shè)計流程如圖1所示。

      圖1 EDA的工程設(shè)計流程圖

      ①源程序的編輯:利用文本編輯器或圖形編輯器,將設(shè)計用文本方式或圖形方式表達出來。常用的源程序輸入方式有原理圖輸入、HDL文本輸入和狀態(tài)圖輸入。

      ②邏輯綜合和優(yōu)化:邏輯綜合的功能是將軟件描述與給定硬件結(jié)構(gòu)聯(lián)系起來,也就是HDL、原理圖或狀態(tài)圖的描述,針對給定硬件結(jié)構(gòu)組件進行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得門級電路甚至更底層的電路描述文件。

      ③目標(biāo)器件的布線/適配:適配器的功能是將邏輯綜合后產(chǎn)生的網(wǎng)表文件配置到指定的目標(biāo)器件中,并產(chǎn)生最終的下載文件。

      ④目標(biāo)器件的編程/下載:如果編譯、綜合、布線/適配和行為仿真、功能仿真、時序仿真等過程都沒有發(fā)現(xiàn)問題,也就是說滿足原設(shè)計的要求,這時就可以通過編程器或下載電纜將布線/適配器產(chǎn)生的配置/下載文件載入目標(biāo)芯片F(xiàn)PGA或CPLD中。湖北輕工職業(yè)技術(shù)學(xué)院 電子設(shè)計與制作綜合實訓(xùn) 多功能波形發(fā)生器的設(shè)計

      2.1多功能波形發(fā)生器多功能波形發(fā)生器采用FPGA器件作為核心控制部件,精度高穩(wěn)定性好,得到波形平滑,特別是由于FPGA的高速度,能實現(xiàn)較高頻率的波形??刂粕细奖?,可得到較寬頻率范圍的波形輸出,步進小。波形數(shù)據(jù)使用Matlab計算,Matlab能對數(shù)據(jù)進行四舍五入,得到的數(shù)據(jù)誤差較小,且編程簡單,修改容易,調(diào)用方便。計算正弦波及指定函數(shù)波的N點采樣值,然后寫入到ROM中待用。通過預(yù)置FPGA的分頻系數(shù)以及改變相位進步實現(xiàn)對輸出頻率的調(diào)節(jié),并可以等步進調(diào)頻。幅度調(diào)節(jié)采用高精度的電位器調(diào)節(jié)。湖北輕工職業(yè)技術(shù)學(xué)院 電子設(shè)計與制作綜合實訓(xùn)

      第二章 單元電路分析與設(shè)計

      輸出信號頻率的產(chǎn)生。輸出信號的頻率由觸發(fā)信號的頻率決定,觸發(fā)信號的頻率由50MHZ的信號分頻率得到,分頻率系數(shù)由選擇模塊產(chǎn)生。本文設(shè)計的波形頻率xfo從100-1000Hz,步進為100Hz,因此,有IOOHz、200Hz、300Hz …

      900Hz、1000Hz等10種頻率。每種頻率的波形的一個周期都要輸出64個離散點,故時鐘觸發(fā)信號的頻率fc=64xfo。該模塊將頻率選擇模塊的輸出信號送到一個分頻程序(FANA)進行分頻,就得到分頻時鐘信號。

      幅度調(diào)節(jié)的原理及實現(xiàn)。直接對數(shù)模轉(zhuǎn)換芯片的電阻網(wǎng)絡(luò)的基準(zhǔn)電壓進行調(diào)節(jié),DAC0832的基準(zhǔn)電壓為+(-)15V,理論上輸出波形的幅度范圍+(-)15V。通過在ADC0832的8腳(基準(zhǔn)電壓輸入腳)接一個精密電位器便可實現(xiàn)。

      波形輸出控制模塊與鍵盤控制模塊設(shè)計。波形選擇用于按鍵選擇輸出的波形類型,因為波形發(fā)生器要求輸出正弦波、三角波、方波以及它們兩兩或三種線性組合,所以采用三個按鍵,分別控制了三種波形的任意一種,或任意兩種波形的疊加,又或者三種波形的疊加輸出,同時還設(shè)計了一個清零按鈕,隨時可以將輸出清零,使操作簡單。

      D/A轉(zhuǎn)換電路設(shè)計。該電路是將波形輸出控制模塊輸出的二進制信號值轉(zhuǎn)換成模擬信號輸出。由8位D/A轉(zhuǎn)換器DAC0832及運算放大器等組成,織成電路如圖2所示。

      圖2 D/A轉(zhuǎn)換電路圖

      波形合成器的設(shè)計。對幅度為1的正弦波的一個周期進行64點采樣,用Matlab計算得到每一點對應(yīng)的幅度值,然后量化成8位二進制數(shù)據(jù)存放在ROM中。理論上,采樣點數(shù)及量化位數(shù)越多,合成波形精確度越高。D/ACO832的位數(shù)為8位,量化等級最高為256,其量化誤差已能達到要求,對于查正弦表的舍入誤差也可忽略,故不采用更高位數(shù)的數(shù)模轉(zhuǎn)換器。這里采用64個采樣點,是為了在從高到低各個頻段都能得到較好波形。在分頻器輸出脈沖驅(qū)動下,依次取出ROM中數(shù)據(jù),即可得到幅度上離散正弦波,再經(jīng)過D/A轉(zhuǎn)換,便可得到連續(xù)正弦波。而三角波的產(chǎn)生是從某點起,使幅度逐次增加一個相位步進,一直到最大值后變?yōu)橹鸫螠p小一個相位步進,到最小值后又變?yōu)橹鸫卧黾酉辔徊竭M,如此循環(huán)便產(chǎn)生周期性三角波形,方波的產(chǎn)生,只需根據(jù)占空比,調(diào)節(jié)一個周期內(nèi)輸出高、低電平時間即可。湖北輕工職業(yè)技術(shù)學(xué)院 電子設(shè)計與制作綜合實訓(xùn)

      FPGA器件內(nèi)部結(jié)構(gòu)多功能波形發(fā)生器由初值模塊、分頻模塊、方波產(chǎn)生模塊、三角波產(chǎn)生模塊、正弦波產(chǎn)生模塊、波形輸出控制模塊等部分組成。其中初值模塊CHUZHl提供初值,供下一個模塊FANA分頻時用,通過不同的初值,在波形產(chǎn)生模塊得到不同的工作頻率,從而實現(xiàn)調(diào)節(jié)波形頻率的目的。送不同的初值,是由輸入A決定的,4位矢量產(chǎn)生的16種組合中的10種對應(yīng)了10種不同的頻率:分頻模塊FANA的功能是將前一模塊CHUZHI送來的初值對時鐘進行分頻,得到不同的工作頻率,從而調(diào)節(jié)波形頻率;方波產(chǎn)生模塊SQUARE的功能是產(chǎn)生方波,每32個時鐘翻轉(zhuǎn)一次,每64個時鐘為一個周期(為了與正弦波相同);三角波產(chǎn)生模塊DELTA的功能是產(chǎn)生三角波,為了得到64個時鐘為一個周期的三角波,對于8位D/A轉(zhuǎn)換芯片,輸出Q每次加/減8;正弦波產(chǎn)生模塊SIN的功能產(chǎn)生正弦波,一個周期取64點,所以64個時鐘為一個周期;波形輸出控制模塊CHPR031設(shè)置了三個按鍵,分別控制三種波形任意一種,或任意兩種波形的疊加,又或者三種波形疊加輸出。輸出的是信號的二進制值,同時還設(shè)計了一個清零按鍵,可以將輸出清零。

      管腳封裝與EDA實驗箱設(shè)置管腳封裝如表1所示。

      ASl:(3)(4)設(shè)為“ON”,其余所有檔均設(shè)為“OFF”。

      表1管腳封裝表

      JSl:(1)、(5)、(8)設(shè)置為“ON”。

      在TP6、TP7兩處用示波器觀察輸出信號的波形。湖北輕工職業(yè)技術(shù)學(xué)院 電子設(shè)計與制作綜合實訓(xùn)

      第三章 電路調(diào)試與制作

      第四章 指針式萬用表最基本的的工作原理

      指針式萬用表最基本的的工作原理(見圖5)。

      由表頭、電阻測量檔、電流測量檔、直流電壓測量檔和交流電壓測量檔幾個部分組成,圖中“-”為黑表棒插孔,“+”為紅表棒插孔。

      測電壓和電流時,外部有電流通入表頭,因此不須內(nèi)接電池。

      當(dāng)我們把檔位開關(guān)旋鈕SA打到交流電壓檔時,通過二極管VD整流,電阻R3限流,由表頭顯示出來;

      當(dāng)打到直流電壓檔時不須二極管整流,僅須電阻R2限流,表頭即可顯示; 打到直流電檔檔時既不須二極管整流,也不須電阻R2限流,表頭即可顯示; 測電阻時將轉(zhuǎn)換開關(guān)SA撥到“Ω”檔,這時外部沒有電流通入,因此必須使用內(nèi)部電池作為電源,設(shè)外接的被測電阻為Rx,表內(nèi)的總電阻為R,形成的電流為I,由Rx、電池E、可調(diào)電位器RP、固定電阻R1和表頭部分組成閉合電路,形成的電流I使表頭的指針偏轉(zhuǎn)。紅表棒與電池的負極相連,通過電池的正極與電位器RP及固定電阻R1相連,經(jīng)過表頭接到黑表棒與被測電阻Rx形成回路產(chǎn)生電流使表頭顯示?;芈分械碾娏鳛椋?/p>

      E I =

      Rx+R 湖北輕工職業(yè)技術(shù)學(xué)院 電子設(shè)計與制作綜合實訓(xùn)

      從上式可知:I和被測電阻Rx不成線性關(guān)系,所以表盤上電阻標(biāo)度尺的刻度是不均勻的。當(dāng)電阻越小時,回路中的電流越大,指針的擺動越大,因此電阻檔的標(biāo)度尺刻度是反向分度。

      當(dāng)萬用表紅黑兩表棒直接連接時,相當(dāng)于外接電阻最小Rx=0,那么:

      E I =

      Rx+R

      此時通過表頭的電流最大,表頭擺動最大,因此指針指向滿刻度處,向右偏轉(zhuǎn)最大,顯示阻值為0Ω。請看電阻檔的零位是在左邊還是在右邊,其余檔的零位與它一致嗎?

      反之,當(dāng)萬用表紅黑兩表棒開路時Rx→∞,R可以忽略不計,那么:

      此時通過表頭的電流最小,因此指針指向0刻度處,顯示阻值為∞。

      看今天要安裝的MF47型萬用表的原理圖(見圖6),測量線路板線路板(見圖7)。它的顯示表頭是一個直流μA表,WH2是電位器用于調(diào)節(jié)表頭回路中的電流大小,D3、D4兩個二極管反向并聯(lián)并與電容并聯(lián),用于保護限制表頭兩端的電壓起保護表頭的作用,使表頭不至電壓、電流過大而燒壞。電阻檔分為×1Ω、×10Ω、×100Ω、×1kΩ、×10kΩ、幾個量程,當(dāng)轉(zhuǎn)換開關(guān)打到某一個量程時,與某一個電阻形成回路,使表頭偏轉(zhuǎn),測出阻值的大小。

      E =

      R 湖北輕工職業(yè)技術(shù)學(xué)院 電子設(shè)計與制作綜合實訓(xùn)

      4.2MF47萬用表電阻檔工作原理

      第五章 總結(jié)與體會

      由于VHDL語言具有支持大規(guī)模設(shè)計和再利用已有設(shè)計等優(yōu)點,因此使用VHDL語言來設(shè)計數(shù)字系統(tǒng)已成為一種潮流。采用EDA技術(shù),實現(xiàn)了各種波形的產(chǎn)生,且波形平滑,無毛刺,質(zhì)量高,輸出波形的頻率可調(diào)范圍寬,可等步進調(diào)節(jié)且步進小。人機界面經(jīng)過精簡,按鍵少且操作方便。湖北輕工職業(yè)技術(shù)學(xué)院 電子設(shè)計與制作綜合實訓(xùn)

      第六章 附錄

      1、電阻27只,阻值如下:

      R1 =0.47 R6=4.99k R2 =4.99 R7=40.2k R3= 51 R4 =560 R5 =15k R10=4.02k R33=6.25M R34=6.25M R8=150k R9=806k R11=84.5M R12=360k R13=1.8

      R14=2.26M

      R15=4.3M M R16=0.025(分R17=15 R18=165 R19=1.78K R20=54.9k 流器)R21=17.4k R22=140k R23=21k R24 =20k(5%)R25 =20k R26=750(5%)R27=6.5

      R28=180 R29=4.12K

      R30=54.9K

      2、元器件

      1.電位器

      10k 5% WH161

      1只 2.二極管

      1N4001

      3只、1N4007

      1只 3.保險絲座

      2只

      4.點解電容 10uF

      16V

      1只 5.保險絲

      5x20

      250V/0.5A

      1只

      3、塑料件

      1.面板

      1只

      2.大旋鈕

      1只

      3.小旋鈕

      1只

      4.表箱5.電池蓋板

      1只

      6.晶體插座管

      1只

      7.提拔 1只

      8.電刷架 1只

      1只

      下載可控脈沖發(fā)生器的設(shè)計EDA課設(shè)報告資料word格式文檔
      下載可控脈沖發(fā)生器的設(shè)計EDA課設(shè)報告資料.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        高頻課設(shè)資料

        一、課程設(shè)計目的 由于高頻振動器所產(chǎn)生的高頻振動信號的功率很小,不能滿足發(fā)射機天線對發(fā)射機的功率要求,所以在發(fā)射之前需要經(jīng)過功率放大后才能獲得足夠的功率輸出。 本次課......

        給水課設(shè)資料

        1設(shè)計題目 市區(qū)地表水水廠初步設(shè)計 2設(shè)計原始資料 2.1 用水資料 (1)生活用水 市區(qū)規(guī)劃人口數(shù)30萬人;給水普及率按88%考慮;設(shè)定房 屋平均層數(shù)為6層。城市用水量較均勻,時變化系數(shù)......

        EDA課程設(shè)計——基于DDS的正弦信號發(fā)生器設(shè)計(模版)

        頂層文件 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DDS IS PORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0); EN:IN STD_LOGIC; RE......

        EDA設(shè)計報告

        EDA 多 功 能 數(shù) 字 時 鐘 專業(yè):11級應(yīng)用電子技術(shù) 班級:二班 學(xué)號:110372021307 姓名:賀成林 指導(dǎo)老師:祝宏 日期:2012年6月29日 一、實驗?zāi)康?1、課程設(shè)計是一實踐教學(xué)環(huán)節(jié),是......

        數(shù)據(jù)結(jié)構(gòu)課設(shè)報告

        華 中 科 技 大 學(xué) 計 算 機 科 學(xué) 與 技 術(shù) 學(xué) 院 課 程 設(shè) 計 報 告 課程設(shè)計報告 題目:華科校園導(dǎo)航 課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 專業(yè)班級: 學(xué)號: 姓名: 指導(dǎo)教師: 報告日期:......

        ERP課設(shè)報告

        《企業(yè)資源計劃ERP》 課程設(shè)計 題目:關(guān)于企業(yè)實施ERP對人力資源管理影響的探究班 級 信管 092 專 業(yè) 信息管理和信息系統(tǒng) 學(xué) 號 3090561053 姓 名 竇 婷 地 點 經(jīng)濟與管理學(xué)......

        財務(wù)會計課設(shè)報告(最終定稿)

        武漢理工大學(xué)《財務(wù)會計課程設(shè)計》報告書13年我們一起做的財務(wù)會計課程設(shè)計財務(wù)會計課程設(shè)計,是我的第三次專業(yè)課程設(shè)計,說實話做起來應(yīng)該輕車熟路,但實際卻不是如此。在剛開始......

        財務(wù)會計課設(shè)報告

        武漢理工大學(xué)《財務(wù)會計》課程設(shè)計說明書 財務(wù)會計手工模擬實驗及感悟 1 概述 1.1實務(wù)背景 作為一名未來的會計人員,我們現(xiàn)在才剛剛起步,為了更好的掌握會計學(xué)知識,我們進行了......