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

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

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

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

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

      EDA設(shè)計(jì)報(bào)告

      時(shí)間:2019-05-12 03:43:32下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《EDA設(shè)計(jì)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《EDA設(shè)計(jì)報(bào)告》。

      第一篇:EDA設(shè)計(jì)報(bào)告

      EDA

      多 功 能 數(shù) 字 時(shí) 鐘

      專(zhuān)業(yè):11級(jí)應(yīng)用電子技術(shù) 班級(jí):二班

      學(xué)號(hào):110372021307 姓名:賀成林 指導(dǎo)老師:祝宏

      日期:2012年6月29日

      一、實(shí)驗(yàn)?zāi)康?/p>

      1、課程設(shè)計(jì)是一實(shí)踐教學(xué)環(huán)節(jié),是針對(duì)《數(shù)字電子技術(shù)》課程的要求,結(jié)合實(shí)踐對(duì)學(xué)生進(jìn)行綜合設(shè)計(jì)性訓(xùn)練,在自學(xué)和實(shí)踐訓(xùn)練中培養(yǎng)學(xué)生理論聯(lián)系實(shí)踐和實(shí)踐動(dòng)手能力,獨(dú)立地解決實(shí)際問(wèn)題能力。

      2、通過(guò)課程設(shè)計(jì)是使學(xué)生熟悉和了解可編程專(zhuān)用數(shù)字邏輯電路的設(shè)計(jì)、開(kāi)發(fā)流程,熟悉和了解現(xiàn)代EDA設(shè)計(jì)工具,掌握數(shù)字電子系統(tǒng)層次化的設(shè)計(jì)方法。

      已知條件:MAX+Plus軟件

      基本功能:

      1、以數(shù)字形式顯示時(shí)、分、秒的時(shí)間;

      2、小時(shí)計(jì)數(shù)器為24進(jìn)制;

      3、分秒計(jì)數(shù)器為60進(jìn)制。

      二、實(shí)驗(yàn)要求、綜合應(yīng)用《數(shù)字電子技術(shù)基礎(chǔ)》課程中的理論知識(shí)去獨(dú)立地完成一個(gè)設(shè)計(jì)課題;

      2、熟悉和了解現(xiàn)代EDA設(shè)計(jì)、編程、編譯、仿真及下載技術(shù)的全過(guò)程。

      三、EDA 技術(shù)介紹

      1、EDA 技術(shù)概況

      EDA 是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)的縮寫(xiě),在 20 世 紀(jì) 90 年代初從計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助制造(CAM)、計(jì)算機(jī)輔助測(cè)試(CAT)和計(jì)算機(jī)輔助工程(CAE)的概念發(fā)展而來(lái)的。EDA 技術(shù)就是以計(jì)算機(jī)為工 具,設(shè)計(jì)者在 EDA 軟件平臺(tái)上,用硬件描述語(yǔ)言 HDL 完成設(shè)計(jì)文件,然后由計(jì)算機(jī) 自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特 定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA 技術(shù)的出現(xiàn),極大地提 高了電路設(shè)計(jì)的效率和可*性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。

      2、ALTERA QUARTUS II 軟件介紹

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

      四、關(guān)鍵詞

      數(shù)字計(jì)數(shù)器、動(dòng)態(tài)顯示、快速校分、整點(diǎn)報(bào)時(shí)、時(shí)段控制。

      五、實(shí)驗(yàn)步驟

      1、秒計(jì)數(shù)器是60進(jìn)制的。當(dāng)下面的74161到9時(shí)等下一個(gè)脈沖來(lái)是向上面的74161計(jì)數(shù),到5時(shí)將兩個(gè)74161共同預(yù)置。從而實(shí)現(xiàn)00—59秒的計(jì)數(shù)功能。

      電路圖如下:

      進(jìn)行編譯及波形仿真,如下圖: 將上述文件保存并打包,如圖:

      2、分計(jì)數(shù)器是60進(jìn)制的。功能如秒計(jì)數(shù)器。其電路圖如下:

      波形圖仿真及打包圖如下:

      3、小時(shí)計(jì)數(shù)器是24進(jìn)制的。當(dāng)下面的74161到9時(shí)等下一個(gè)脈沖來(lái)是向上面的74161計(jì)數(shù)。但是等到上面的記到2時(shí)下面的將不能超過(guò)4,所以等上面的記到2,下面的記到4時(shí)就將兩個(gè)74161共同預(yù)置。從而實(shí)現(xiàn)00—24秒的計(jì)數(shù)功能。

      原理圖如下:

      仿真的波形圖及打包的文件圖如下:

      4、校時(shí)。校時(shí)是通過(guò)加快時(shí)分的計(jì)數(shù)速度來(lái)快速校準(zhǔn)時(shí)間的。實(shí)際上我們把秒脈沖cps加到分計(jì)數(shù)和時(shí)計(jì)數(shù)上,是他們加快計(jì)數(shù)速度。所以其中我們需要通過(guò)開(kāi)關(guān)來(lái)選擇。

      原理圖及打包圖如下:

      5、時(shí)段控制:時(shí)段控制是通過(guò)7485集成電路的數(shù)據(jù)比較來(lái)控制的。

      原理圖及打包圖如下:

      6、整點(diǎn)報(bào)時(shí):整點(diǎn)報(bào)時(shí)是通過(guò)整點(diǎn)時(shí)的二進(jìn)制數(shù)據(jù)規(guī)律來(lái)報(bào)時(shí)的。

      原理圖及打包圖如下:

      7、將時(shí)分秒打包文件連成多功能數(shù)字電路圖如下:

      8、多功能數(shù)字鐘硬件測(cè)試原理圖如下:

      9、部分制作過(guò)程圖,如下:

      六、實(shí)驗(yàn)工具

      裝有QuartusⅡ軟件的電腦,EDA開(kāi)發(fā)板,相關(guān)EDA設(shè)計(jì)方面的書(shū)籍。

      七、設(shè)計(jì)中遇到問(wèn)題及解決方法

      1、實(shí)驗(yàn)后期的引腳分配及下載方法不當(dāng),實(shí)驗(yàn)所用電腦沒(méi)有

      quartus11.0 的 驅(qū)動(dòng)。耗費(fèi)時(shí)間較多。解決方法:參閱西安電子科技大學(xué)出版社出版的《數(shù)字電路設(shè)計(jì)及 Verilog HDL 實(shí)現(xiàn)》第 394 頁(yè)關(guān)于引腳分配和下載驗(yàn)證的介紹;

      2、下載驗(yàn)證過(guò)程中時(shí)段控制部分有錯(cuò)誤,原代碼在軟件上仿真沒(méi)有錯(cuò)誤,但是下載到實(shí)驗(yàn)板驗(yàn)證時(shí),出現(xiàn)錯(cuò)誤。解決方法:通過(guò)去請(qǐng)教同學(xué)及查閱相關(guān)資料得到解決。

      八、特點(diǎn)和實(shí)用性

      利用 QuartusII 軟件,結(jié)合所學(xué)的數(shù)字電路的知識(shí)設(shè)計(jì)一個(gè) 24 時(shí)多功能數(shù) 字鐘,具有正常分、秒計(jì)時(shí),動(dòng)態(tài)顯示、快速校分、整點(diǎn)報(bào)時(shí)、時(shí)段控制的功能。分析整個(gè)電路的工作原理,分別說(shuō)明各子模塊的設(shè)計(jì)原理和調(diào)試、仿真、編 程下載的過(guò)程,并對(duì)最終結(jié)果進(jìn)行總結(jié),最后提出在實(shí)驗(yàn)過(guò)程中出現(xiàn)的問(wèn)題和解 決的方案。通過(guò)實(shí)驗(yàn)掌握一些邏輯組合器件的基本功能和用法,同時(shí)體會(huì)利用軟件設(shè)計(jì) 電路的方便快捷,避免硬件布線的繁瑣,提高效率。

      九、心得體會(huì)

      1、設(shè)計(jì)必須要有整體概念,提前熟悉軟件。剛開(kāi)始時(shí)沒(méi)頭緒,不知道該怎 樣分塊,進(jìn)度很慢,加上對(duì)軟件不是很熟悉,比如:封裝要注意哪些,哪些不能 運(yùn)行,哪些是不正確的操作等等,走了很多冤枉路。

      2、設(shè)計(jì)的模塊要分塊調(diào)試,免得等所有都完工了再調(diào)試出錯(cuò),那樣的話很 難確定是什么出錯(cuò),更加沒(méi)頭緒。有必要的話做一部分后就送到平臺(tái)上調(diào)試,這 樣會(huì)大大減少出錯(cuò)率。

      3、沒(méi)有硬件軟件化的概念,開(kāi)始設(shè)計(jì)時(shí)沒(méi)有總體的規(guī)劃,不知道什么是可行 的,什么是封裝,怎樣使搭配組合最優(yōu)化。

      4、遇到問(wèn)題先自己摸索,查閱資料要有技巧,避免沒(méi)有目的和思路。明白 自己要解決什么問(wèn)題。同時(shí)請(qǐng)教老師,和同學(xué)交流。良好的溝通很重要。針對(duì)本次的畢業(yè)設(shè)計(jì),用我國(guó)著名的數(shù)學(xué)家的話概括一下我的感受: “科學(xué)上沒(méi)有平坦的大道,真理長(zhǎng)河中有無(wú)數(shù)礁石險(xiǎn)灘。只有不為畏攀登的采藥者,只有不怕 巨浪的弄潮兒,才能登上高峰采得仙草,深入水底覓得驪珠?!?/p>

      十、參閱教材及文獻(xiàn)

      1、蔣立平編著《數(shù)字電路》.南京理工大學(xué)翻?。?/p>

      2、南京理工大學(xué)電子技術(shù)中心編著.《EDA 設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)》 南京理工大學(xué),2008 年;

      3、譚會(huì)生,張昌凡.《EDA 技術(shù)及應(yīng)用》.西安電子科技大學(xué)出版社,2001年;

      4、《數(shù)字電路設(shè)計(jì)及 Verilog HDL 實(shí)現(xiàn)》 西安電子科技大學(xué)出版社出版;

      5、《電子線路實(shí)驗(yàn)設(shè)計(jì)與仿真講義》。

      第二篇:EDA數(shù)字鐘設(shè)計(jì)

      數(shù)字鐘

      一、實(shí)驗(yàn)?zāi)康?/p>

      1、掌握多位計(jì)數(shù)器相連的設(shè)計(jì)方法。

      2、掌握十進(jìn)制,六進(jìn)制,二十四進(jìn)制計(jì)數(shù)器的設(shè)計(jì)方法。

      3、掌握揚(yáng)聲器的驅(qū)動(dòng)及報(bào)時(shí)的設(shè)計(jì)。

      4、LED燈的花樣顯示。

      5、掌握CPLD技術(shù)的層次化設(shè)計(jì)方法。

      二、實(shí)驗(yàn)器材

      1、主芯片Altera EPF10K10LC84-4。2、8個(gè)LED燈。

      3、揚(yáng)聲器。4、4位數(shù)碼顯示管。5、8個(gè)按鍵開(kāi)關(guān)(清零,調(diào)小時(shí),調(diào)分鐘)。

      三、實(shí)驗(yàn)內(nèi)容

      根據(jù)電路特點(diǎn),運(yùn)用層次設(shè)計(jì)概念設(shè)計(jì)。將此設(shè)計(jì)任務(wù)分成若干模塊,規(guī)定每一模塊的功能和各模塊之間的接口。

      1、時(shí)計(jì)時(shí)程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

      entity hour is

      port(reset,clk : in std_logic;

      daout : out std_logic_vector(7 downto 0));end hour;

      architecture behav of hour is

      signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);begin

      p1: process(reset,clk)

      begin

      if reset='0' then

      count<=“0000”;

      counter<=“0000”;

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

      if(counter<2)then

      if(count=9)then

      count<=“0000”;

      counter<=counter + 1;

      else

      count<=count+1;

      end if;

      else

      if(count=3)

      then

      counter<=“0000”;

      else

      count<=count+1;

      count<=“0000”;

      end if;

      end if;

      end if;

      end process;

      daout(7 downto 4)<=counter;daout(3 downto 0)<=count;

      end behav;

      2、分計(jì)時(shí)程序: library ieee;

      use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

      entity minute is

      port(reset,clk,sethour: in std_logic;

      daout : out std_logic_vector(7 downto 0);

      enhour : out std_logic);end minute;

      architecture behav of minute is

      signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);signal carry_out1 : std_logic;signal carry_out2 : std_logic;begin

      p1: process(reset,clk)begin

      if reset='0' then

      count<=“0000”;

      counter<=“0000”;

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

      if(counter<5)then

      if(count=9)then

      count<=“0000”;

      counter<=counter + 1;

      else

      count<=count+1;

      end if;

      carry_out1<='0';

      else

      if(count=9)then

      count<=“0000”;

      counter<=“0000”;

      carry_out1<='1';

      else

      count<=count+1;

      carry_out1<='0';

      end if;

      end if;end if;end process;

      p2: process(clk)begin

      if(clk'event and clk='0')then

      if(counter=0)then

      if(count=0)then

      carry_out2<='0';

      end if;

      else

      carry_out2<='1';

      end if;end if;end process;

      daout(7 downto 4)<=counter;daout(3 downto 0)<=count;enhour<=(carry_out1 and carry_out2)or sethour;end behav;

      3、秒計(jì)時(shí)程序: library ieee;

      use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

      entity second is

      port(reset,clk,setmin : in std_logic;

      daout : out std_logic_vector(7 downto 0);

      enmin : out std_logic);end second;

      architecture behav of second is

      signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);signal carry_out1 : std_logic;signal carry_out2 : std_logic;begin

      p1: process(reset,clk)begin

      if reset='0' then

      count<=“0000”;

      counter<=“0000”;

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

      if(counter<5)

      then

      if

      (count=9)

      then

      count<=“0000”;

      counter<=counter + 1;

      else

      count<=count+1;

      end if;

      carry_out1<='0';

      else

      if(count=9)

      then

      count<=“0000”;

      counter<=“0000”;

      carry_out1<='1';

      else

      count<=count+1;

      carry_out1<='0';

      end if;

      end if;end if;end process;daout(7 downto

      4)<=counter;

      daout(3

      downto

      0)<=count;enmin<=carry_out1 or setmin;end behav;6

      4、alert程序: library ieee;

      use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

      entity alert is port(clkspk : in std_logic;

      second : in std_logic_vector(7 downto 0);

      minute : in std_logic_vector(7 downto 0);

      speak : out std_logic;

      lamp : out std_logic_vector(8 downto 0));end alert;

      architecture behav of alert is signal divclkspk2 : std_logic;begin p1: process(clkspk)begin

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

      divclkspk2<=not divclkspk2;

      end if;end process;p2: process(second,minute)begin if(minute=“01011001”)then case second is

      when “01010001”=>lamp<=“000000001”;speak<=divclkspk2;when “01010010”=>lamp<=“000000010”;speak<='0';when “01010011”=>lamp<=“000000100”;speak<=divclkspk2;when “01010100”=>lamp<=“000001000”;speak<='0';when “01010101”=>lamp<=“000010000”;speak<=divclkspk2;when “01010110”=>lamp<=“000100000”;speak<='0';when “01010111”=>lamp<=“001000000”;speak<=divclkspk2;when “01011000”=>lamp<=“010000000”;speak<='0';when “01011001”=>lamp<=“100000000”;speak<=clkspk;when others=>lamp<=“000000000”;end case;end if;end process;end behav;8

      5、seltime程序 library ieee;

      use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

      entity seltime is port(ckdsp : in std_logic;

      reset : in std_logic;

      second : in std_logic_vector(7 downto 0);

      minute : in std_logic_vector(7 downto 0);

      hour : in std_logic_vector(7 downto 0);

      daout : out std_logic_vector(3 downto 0);

      sel : out std_logic_vector(2 downto 0));end seltime;

      architecture behav of seltime is signal sec : std_logic_vector(2 downto 0);begin

      process(reset,ckdsp)begin

      if(reset='0')then sec<=“000”;

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

      sec<=“000”;else

      sec<=sec+1;end if;end if;end process;

      process(sec,second,minute,hour)begin case sec is

      when “000”=>daout<=second(3 downto 0);when “001”=>daout<=second(7 downto 4);when “011”=>daout<=minute(3 downto 0);when “100”=>daout<=minute(7 downto 4);when “110”=>daout<=hour(3 downto 0);when “111”=>daout<=hour(7 downto 4);when others=>daout<=“1111”;end case;end process;

      if(sec=“111”)then

      sel<=sec;end behav;

      6、deled程序: LIBRARY IEEE;

      USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;

      ENTITY deled IS PORT(S: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

      A,B,C,D,E,F,G,H: OUT STD_LOGIC);END deled;

      ARCHITECTURE BEHAV OF deled IS

      SIGNAL DATA:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN DATA<=S;PROCESS(DATA)BEGIN

      CASE DATA IS

      WHEN “0000”=>DOUT<=“00111111”;WHEN “0001”=>DOUT<=“00000110”;WHEN “0010”=>DOUT<=“01011011”;WHEN “0011”=>DOUT<=“01001111”;WHEN “0100”=>DOUT<=“01100110”;WHEN “0101”=>DOUT<=“01101101”;WHEN “0110”=>DOUT<=“01111101”;WHEN “0111”=>DOUT<=“00000111”;WHEN “1000”=>DOUT<=“01111111”;WHEN “1001”=>DOUT<=“01101111”;WHEN “1010”=>DOUT<=“01110111”;WHEN “1011”=>DOUT<=“01111100”;WHEN “1100”=>DOUT<=“00111001”;WHEN “1101”=>DOUT<=“01011110”;WHEN “1110”=>DOUT<=“01111001”;WHEN “1111”=>DOUT<=“01000000”;WHEN OTHERS=>DOUT<=“00000000”;END CASE;END PROCESS;H<=DOUT(7);

      G<=DOUT(6);

      F<=DOUT(5);

      E<=DOUT(4);D<=DOUT(3);C<=DOUT(2);B<=DOUT(1);A<=DOUT(0);END BEHAV;

      7、頂層原理圖:

      四、實(shí)驗(yàn)結(jié)果 頂層原理圖仿真波形:

      五、心得體會(huì)

      1、系統(tǒng)設(shè)計(jì)進(jìn)要行充分的方案論證,不可盲目就動(dòng)手去做;

      2、實(shí)驗(yàn)中對(duì)每一個(gè)細(xì)節(jié)部分都要全面思考,要對(duì)特殊情況進(jìn)行處理;

      3、對(duì)于數(shù)字系統(tǒng),要考慮同步、異步問(wèn)題;

      4、數(shù)字電路的理論分析要結(jié)合時(shí)序圖;

      5、遇到問(wèn)題,要順藤摸瓜,分析清楚,不可胡亂改動(dòng),每做一次改變都要有充分的理由;

      6、模塊化設(shè)計(jì)方法的優(yōu)點(diǎn)在于其簡(jiǎn)潔性,但是在實(shí)驗(yàn)設(shè)計(jì)中也發(fā)現(xiàn),在實(shí)驗(yàn)最終電路確定之前,要盡量減少模塊重疊嵌套,因?yàn)樵诳偟碾娐非枚ㄖ埃娐愤€不成熟,很多地方需要改進(jìn),如果在開(kāi)始時(shí)就進(jìn)行多層模塊化,里層模塊電路的修改將影響其外層的全部電路,這樣就是牽一發(fā)動(dòng)全身,很顯然,這樣將導(dǎo)致電 數(shù)字鐘課程設(shè)計(jì) 電路設(shè)計(jì)的低效,所以在設(shè)計(jì)過(guò)程中,一定要盡量減少超過(guò)兩層的模塊;

      7、遇到問(wèn)題花了很長(zhǎng)時(shí)間沒(méi)有解決掉,要學(xué)會(huì)想他人請(qǐng)教,別人的不經(jīng)意一點(diǎn),可能就能把自己帶出思維死區(qū)。

      第三篇:EDA設(shè)計(jì)論文

      EDA課程設(shè)計(jì)報(bào)告書(shū)

      交通燈設(shè)計(jì)

      設(shè) 計(jì) 者: 邱春華 呂云蘭

      指導(dǎo)老師: 李 敏

      學(xué) 號(hào): 09387105 09387114 專(zhuān)業(yè)班級(jí):通信工程0911班

      摘要………………………………………………………………………………3

      1、設(shè)計(jì)任務(wù)………………………………………………………………………4

      2、方案選擇與論證………………………………………………………4

      3、實(shí)現(xiàn)方案原理及說(shuō)明…………………………………………………………5

      4、系統(tǒng)設(shè)計(jì)詳述…………………………………………………………………6 a、分頻器的設(shè)計(jì)……………………………………………………………………6 b、控制器的設(shè)計(jì)……………………………………………………………………7 c、計(jì)數(shù)器的設(shè)計(jì)……………………………………………………………………7 d、分位譯碼電路的設(shè)計(jì)……………………………………………………………8 e、數(shù)碼管驅(qū)動(dòng)的設(shè)計(jì)——綠燈和紅燈驅(qū)動(dòng)………………………………………9 f、數(shù)碼管驅(qū)動(dòng)的設(shè)計(jì)--黃燈驅(qū)動(dòng)……………………………………………9

      5、程序設(shè)計(jì)………………………………………………………………………10 5.1 分頻器的設(shè)計(jì)…………………………………………………………………10 5.2 控制器的設(shè)計(jì)…………………………………………………………………10 5.3 計(jì)數(shù)器的設(shè)計(jì)…………………………………………………………………11 5.4 分位譯碼電路的設(shè)計(jì)…………………………………………………………14 5.5數(shù)碼管驅(qū)動(dòng)的設(shè)計(jì)……………………………………………………………15

      6、整個(gè)系統(tǒng)的構(gòu)成及仿真圖……………………………………………………17

      7、心得體會(huì)………………………………………………………………………18

      8、參考文獻(xiàn)………………………………………………………………………18

      語(yǔ)言實(shí)現(xiàn)交通燈的設(shè)計(jì)

      作者:邱春華、呂云蘭

      指導(dǎo)老師:李 敏(湖北文理學(xué)院理工學(xué)院 襄陽(yáng) 230036)

      【摘要】:伴隨著社會(huì)的發(fā)展以及人類(lèi)生活水平的提高,汽車(chē)的數(shù)量在EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大與深入,EDA 技術(shù)在電子信息、通信、自動(dòng)控制及計(jì)算機(jī)應(yīng)用等領(lǐng)域的重要性日益突出。隨著技術(shù)市場(chǎng)與人才市場(chǎng)對(duì)DEA 的不斷的增加,交通的問(wèn)題日益突出,單單依靠人力來(lái)指揮交通已經(jīng)不可行了。所以,設(shè)計(jì)交通燈來(lái)完成這個(gè)需求就顯的越加迫切。

      【關(guān)鍵字】:EDA技術(shù)、VHDL語(yǔ)言、交通燈

      QuartusII 設(shè)計(jì)軟件為用戶提供完整的多平臺(tái)設(shè)計(jì)環(huán)境,它可以輕易滿足特定設(shè)計(jì)的需要。它是單芯片可編程系統(tǒng)(SOPC)設(shè)計(jì)的綜合性環(huán)境,EDA技術(shù)作為現(xiàn)代電子設(shè)計(jì)技術(shù)的核心,它依賴(lài)強(qiáng)大的計(jì)算機(jī),在EDA工具軟件平臺(tái)上,對(duì)以硬件描述語(yǔ)言VHDL為系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、邏輯簡(jiǎn)化、邏輯分割、邏輯綜合,以及邏輯優(yōu)化和仿真測(cè)試,直至實(shí)現(xiàn)既定的電子線路系統(tǒng)功能。下面詳細(xì)介紹在QUARTUS II軟件環(huán)境下開(kāi)發(fā)基于VHDL語(yǔ)言交通燈的設(shè)計(jì)。、設(shè)計(jì)任務(wù)

      a、設(shè)計(jì)內(nèi)容

      設(shè)計(jì)一個(gè)十字路口的交通燈控制系統(tǒng),用實(shí)驗(yàn)平臺(tái)上的LED 發(fā)光二極管顯示車(chē)輛通過(guò)的方向(甲車(chē)道和乙車(chē)道各一組),用數(shù)碼管顯示該方向的亮燈時(shí)間。

      b、設(shè)計(jì)要求:

      交通燈按正常狀態(tài)依次點(diǎn)亮紅、黃、綠燈,交警可以根據(jù)路口車(chē)流量的情況分別設(shè)置紅、綠、黃燈持續(xù)點(diǎn)亮的時(shí)間。在紅、綠燈點(diǎn)亮?xí)r,能夠顯示其點(diǎn)亮持續(xù)的時(shí)間。

      2、方案選擇與論證

      本次實(shí)驗(yàn)設(shè)計(jì)交通燈設(shè)計(jì)采用自頂向下、由粗到細(xì), 逐步分解的設(shè)計(jì)方法, 最頂層電路是指系統(tǒng)的整體要求, 最下層是具體的邏輯電路的實(shí)現(xiàn)。自頂向下的設(shè)計(jì)方法將一個(gè)復(fù)雜的系統(tǒng)逐漸分解成若干功能模塊, 從而進(jìn)行設(shè)計(jì)描述, 并且應(yīng)用EDA 軟件平臺(tái)自動(dòng)完成各功能模塊的邏輯綜合與優(yōu)化, 門(mén)級(jí)電路的布局, 再下載到硬件中實(shí)現(xiàn)設(shè)計(jì)。對(duì)于交通燈來(lái)說(shuō)首先是分頻器、控制器、計(jì)數(shù)器、分位譯碼電路及數(shù)碼管驅(qū)動(dòng)的設(shè)計(jì),然后能在LED中顯示紅、綠、黃燈的轉(zhuǎn)化,并帶有數(shù)碼管計(jì)時(shí)功能。通過(guò)參考EDA課程設(shè)計(jì)指導(dǎo)書(shū),有以下方案:

      (1)、頂層文件輸入端口:時(shí)鐘脈沖信號(hào)、復(fù)位按鍵及綠燈計(jì)數(shù)器的計(jì)數(shù)范圍輸入端t1;輸出端口:兩個(gè)車(chē)道的紅、綠、黃輸出,及其所對(duì)應(yīng)各燈所輸出時(shí)間計(jì)數(shù)共16個(gè)。

      (2)、底層文件分為:a.分頻模塊、b.計(jì)數(shù)器模塊、c.控制器模塊、d.分位譯碼模塊、e.數(shù)碼管驅(qū)動(dòng)模塊。

      、實(shí)現(xiàn)方案原理及說(shuō)明

      從題目中計(jì)數(shù)值與交通燈的亮滅的關(guān)系如圖(1)所示:

      圖(1)

      交通燈控制器系統(tǒng)框圖如圖2 所示:

      圖(2)考慮到黃燈的作用是警示已過(guò)停車(chē)線的司機(jī)盡快離開(kāi)路口,而路口總寬度不變,因此將其固定為5 秒,而紅燈亮的時(shí)間等于綠燈亮的時(shí)間加上黃燈亮的時(shí)間,因此緊對(duì)綠燈點(diǎn)亮?xí)r間進(jìn)行設(shè)置就可以同時(shí)改變紅燈亮的時(shí)間,這里將綠燈所能設(shè)置的最長(zhǎng)時(shí)間設(shè)置為40 秒即(0

      4、系統(tǒng)設(shè)計(jì)詳述

      其輸入及輸出端口有:

      clkin——輸入的高頻時(shí)鐘脈沖; reset——復(fù)位端,高電平有效; t1——綠燈計(jì)數(shù)器的計(jì)數(shù)范圍輸入端;

      r1、g1、y1——分別為第一車(chē)道紅、綠、黃燈輸出;

      r1A、r1B、g1A、g1B、y1A——分別為第一車(chē)道紅、綠、黃燈對(duì)應(yīng)的數(shù)碼管計(jì)數(shù)輸出;

      r2、g2、y2——分別為第二車(chē)道紅、綠、黃燈輸出;

      r2A、r2B、g2A、g2B、y2A——分別為第二車(chē)道紅、綠、黃燈對(duì)應(yīng)的數(shù)碼管計(jì)數(shù)輸出; a、分頻器的設(shè)計(jì)

      分頻器實(shí)現(xiàn)的是將高頻時(shí)鐘信號(hào)轉(zhuǎn)換成低頻的時(shí)鐘信號(hào),用于觸發(fā)控制器和計(jì)數(shù)器。該分頻器實(shí)現(xiàn)的是一千分頻,將一千赫茲的時(shí)鐘信號(hào)分頻成一赫茲的時(shí)鐘信號(hào)。生成的Symbol 文件如圖

      圖(3)3 和仿真波形如圖4 所示。

      圖(4)

      b、控制器的設(shè)計(jì)

      控制器的作用是根據(jù)計(jì)數(shù)器的計(jì)數(shù)值及t1 的輸入數(shù)據(jù)控制發(fā)光二極管的亮、滅,以及輸出正計(jì)時(shí)數(shù)值給七段數(shù)碼管的分位譯碼電路。本控制器是利用時(shí)鐘沿的下降沿讀取前級(jí)計(jì)數(shù)器的計(jì)數(shù)值,然后作出反應(yīng);生成的實(shí)體模塊如圖5 和仿真波形如圖6 所 圖(5)示。

      圖(6)

      c、計(jì)數(shù)器的設(shè)計(jì)

      計(jì)數(shù)器rcounter的計(jì)數(shù)范圍為由t1引腳輸入。計(jì)到t1 后,下一個(gè)時(shí)鐘沿恢復(fù)到0,開(kāi)始下一輪計(jì)數(shù)。仿真波形如圖當(dāng)t1 取7 時(shí),計(jì)數(shù)器計(jì)數(shù)到7 后清零。實(shí)體模塊如圖7 和仿真波形如圖8。計(jì)數(shù)器grounter和計(jì)數(shù)器ycounter的實(shí)體模塊如圖9 和圖10 所示。

      圖(7)圖(9)圖(10)

      圖(8)

      d、分位譯碼電路的設(shè)計(jì)

      由于控制器輸出的正計(jì)時(shí)數(shù)值可能是1 位或者2 位十進(jìn)制數(shù),因此在七段數(shù)碼管的譯碼電路前要加上分位電路(即將其分成2 個(gè)1 位的十進(jìn)制數(shù),如40 分成4 和0,5分為0 和5)。與控制器一樣,分位電路同樣可以由時(shí)鐘驅(qū)動(dòng),也可以設(shè)計(jì)成純組合邏輯電路。控制器中,引入了寄

      圖(11)存器。本電路中分位電路使用組合邏輯電路實(shí)現(xiàn)。生成的實(shí)體模塊如圖11 及仿真波形如圖12。

      圖(12)

      e、數(shù)碼管驅(qū)動(dòng)的設(shè)計(jì)——綠燈和紅燈驅(qū)動(dòng)

      要求數(shù)碼管共陽(yáng)極連接(共陽(yáng)極的公共端為低電平時(shí),LED 不亮),在設(shè)計(jì)中為每個(gè)數(shù)碼管都添加了一個(gè)驅(qū)動(dòng)電路,在使用時(shí)通過(guò)調(diào)用模塊來(lái)實(shí)現(xiàn)。本模塊設(shè)計(jì)為時(shí)序邏

      圖(14)

      輯電路,采用下降沿觸發(fā)。實(shí)體模塊如圖14 和仿真波形如圖15。

      圖(15)

      f、數(shù)碼管驅(qū)動(dòng)的設(shè)計(jì)——黃燈驅(qū)動(dòng)

      由于黃燈固定時(shí)間是5 秒,因此變化范圍是0 至5 秒,七段數(shù)碼管只要能顯示0-5 的數(shù)就行了,所以單獨(dú)用一個(gè)數(shù)碼管驅(qū)動(dòng)。實(shí)體模塊如圖16和仿真波形如圖17。圖(16)

      圖(17)

      、程序設(shè)計(jì)

      5.1 分頻器的設(shè)計(jì)

      library ieee;use ieee.std_logic_1164.all;entity fredevider is port(clkin:in std_logic;clkout:out std_logic);end;architecture devider of fredevider is constant N:integer:=499;signal counter:integer range 0 to N;signal clk:std_logic;begin process(clkin)begin if rising_edge(clkin)then if counter=N then counter<=0;clk<=not clk;else counter<=counter+1;end if;end if;end process;clkout<=clk;end;5.2 控制器的設(shè)計(jì)

      library ieee;use ieee.std_logic_1164.all;entity control is port(clk :in std_logic;c1,c2,c3:out std_logic;w1,w2,w3:in std_logic;r1,r2 :out std_logic;y1,y2 :out std_logic;g1,g2 :out std_logic;reset :in std_logic);end control;architecture a of control is type state_space is(s3,s2,s1,s0);

      begin process(clk)begin if reset='1' then state<=s0;else if(clk'event and clk='1')then case state is when s0=> if w1='1' then state<=s1;end if;when s1=> if w2='1' then state<=s2;end if;when s2=> if w3='1' then state<=s3;end if;when s3=> if w2='1' then state<=s0;end if;end case;end if;end if;end process;c1<='1'when state =s0 else '0';c2<='1'when state =s1 or state =s3 else '0';c3<='1'when state =s2 else '0';r1<='1'when state =s1 or state =s0 else '0';y1<='1'when state =s3 else '0';g1<='1'when state =s2 else '0';r2<='1'when state =s2 or state =s3 else '0';y2<='1'when state =s1 else '0';g2<='1'when state =s0 else '0';end a;5.3 計(jì)數(shù)器的設(shè)計(jì) 5.3.1 綠燈計(jì)數(shù)器

      library ieee;use ieee.std_logic_1164.all;

      port(clk :in std_logic;enable :in std_logic;t1 :in integer range 0 to 40;c1 :out std_logic;m1 :out integer range 0 to 5);end gcounter;architecture a of gcounter is begin process(clk)variable cnt : integer range 0 to 40;begin if(clk'event and clk='1')then if enable='1'and cnt

      library ieee;use ieee.std_logic_1164.all;entity rcounter is port(clk :in std_logic;enable :in std_logic;t1 :in integer range 0 to 40;c2 :out std_logic;m2:out integer range 0 to 32);end rcounter;architecture a of rcounter is constant y:Integer:=5;signal t2: integer range 0 to 45;begin process(clk)variable cnt : integer range 0 to 45;

      t2<=t1+y;if(clk'event and clk='1')then if enable='1'and cnt

      library ieee;use ieee.std_logic_1164.all;entity ycounter is port(clk :in std_logic;enable :in std_logic;c3 :out std_logic;m3 :out integer range 0 to 5);end ycounter;architecture a of ycounter is begin process(clk)variable cnt : integer range 0 to 5;begin if(clk'event and clk='1')then if enable='1'and cnt<5 then cnt:=cnt+1;else cnt:=0;end if;if cnt=5 then c3<='1';else c3<='0';end if;end if;

      end process;end a;5.4 分位譯碼電路設(shè)計(jì) 5.4.1分位器-1 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fenwei1 IS PORT(Numin:IN integer RANGE 0 TO 45;NumA,NumB:OUT Integer RANGE 0 to 9);END;ARCHITECTURE behavior OF fenwei1 IS BEGIN process(Numin)BEGIN IF Numin>=40 THEN NumA<=4;NumB<=Numin-40;ELSIF Numin>=30 THEN NumA<=3;NumB<=Numin-30;ELSIF Numin>=20 THEN NumA<=2;NumB<=Numin-20;ELSIF Numin>=10 THEN NumA<=1;NumB<=Numin-10;ELSE NumA<=0;NumB<=Numin;END IF;END PROCESS;END;5.4.2分位器-2 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fenwei2 IS PORT(Numin:IN integer RANGE 0 TO 45;);END;ARCHITECTURE behavior OF fenwei2 IS BEGIN process(Numin)BEGIN IF Numin>=40 THEN NumC<=4;NumD<=Numin-40;ELSIF Numin>=30 THEN NumC<=3;NumD<=Numin-30;ELSIF Numin>=20 THEN NumC<=2;NumD<=Numin-20;ELSIF Numin>=10 THEN NumC<=1;NumD<=Numin-10;ELSE NumC<=0;NumD<=Numin;END IF;END PROCESS;END;5.5數(shù)碼管驅(qū)動(dòng)的設(shè)計(jì) 5.5.1 紅綠燈驅(qū)動(dòng)

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ygqudong IS PORT(clk:in STD_LOGIC;enable :in std_logic;data:IN integer RANGE 0 TO 9;segout: out STD_LOGIC_VECTOR(6 downto 0));END;ARCHITECTURE behavior OF ygqudong IS BEGIN process(Clk,data)BEGIN IF falling_edge(Clk)and enable='1' then case data is

      when 1=>segout<=“0110000”;when 2=>segout<=“1101101”;when 3=>segout<=“1111001”;when 4=>segout<=“0110011”;when 5=>segout<=“1011011”;when 6=>segout<=“0011111”;when 7=>segout<=“1110000”;when 8=>segout<=“1111111”;when 9=>segout<=“1110011”;when others =>null;END CASE;END IF;END PROCESS;END;5.5.2 黃燈驅(qū)動(dòng)

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY hqudong IS PORT(clk:in STD_LOGIC;enable :in std_logic;data:IN integer RANGE 0 TO 5;segout: out STD_LOGIC_VECTOR(6 downto 0));END;ARCHITECTURE behavior OF hqudong IS BEGIN process(Clk,data)BEGIN IF falling_edge(Clk)and enable='1' then case data is when 0=>segout<=“1111110”;when 1=>segout<=“0110000”;when 2=>segout<=“1101101”;when 3=>segout<=“1111001”;when 4=>segout<=“0110011”;when 5=>segout<=“1011011”;when others =>null;END CASE;END IF;END PROCESS;END;

      、整個(gè)系統(tǒng)的構(gòu)成及仿真圖

      圖(18)

      圖(19)

      結(jié)果說(shuō)明:在圖18 中,綠燈計(jì)數(shù)器直接接分位譯碼器1,紅燈計(jì)數(shù)器直接接分位譯碼器2,每個(gè)譯碼器分別接兩個(gè)驅(qū)動(dòng)電路,然后接輸出。左邊5 個(gè)驅(qū)動(dòng)器接的數(shù)碼管顯示的是甲車(chē)道各個(gè)燈亮的時(shí)間,右邊5 個(gè)驅(qū)動(dòng)器接的數(shù)碼管顯示的是乙車(chē)道各個(gè)燈亮的時(shí)間。在19 圖中可以看出甲車(chē)道綠燈亮的時(shí)間加上黃燈亮

      乙車(chē)道紅燈亮的時(shí)間,乙車(chē)道綠燈亮的時(shí)間加上黃燈亮的時(shí)間等于甲車(chē)道紅燈亮的時(shí)間。與此同時(shí)具有燈亮?xí)r間計(jì)數(shù)顯示,可以看出該系統(tǒng)滿足我們所需的要求。

      7、心得體會(huì)

      一段時(shí)間的EDA課程設(shè)計(jì),使我們學(xué)到了很多,本次課程設(shè)計(jì)的交通燈所需底層模塊很多,其實(shí)現(xiàn)的VHDL語(yǔ)言程序較多,整個(gè)過(guò)程中調(diào)試程序是很重要的,要有很好的耐心,開(kāi)始編譯時(shí)總是會(huì)有很多錯(cuò)誤,比如輸入錯(cuò)誤、語(yǔ)法錯(cuò)誤等,發(fā)現(xiàn)錯(cuò)誤之后再一遍一遍的仔細(xì)查錯(cuò),直到?jīng)]有錯(cuò)誤,然后進(jìn)行波型仿真?,F(xiàn)在,對(duì)EDA 的認(rèn)識(shí)有了很大的提高,能夠熟練的使用QuartsII,能夠用VHDL 語(yǔ)言編寫(xiě)簡(jiǎn)單的、實(shí)用的小程序,這次EDA 課程設(shè)計(jì)重點(diǎn)學(xué)習(xí)了交通燈部分程序的編寫(xiě)、調(diào)試、還有硬件下載、操作等過(guò)程。在整個(gè)課程設(shè)計(jì)的過(guò)程中,我們查閱了大量的關(guān)于EDA 的資料,特別是在網(wǎng)上和圖書(shū)館我找到了大量的關(guān)于硬件編程的資料。在李敏老師平時(shí)認(rèn)真的授課及嚴(yán)格的治學(xué)態(tài)度下,讓我有了一定的基礎(chǔ),同時(shí)還得感謝老師在實(shí)驗(yàn)課上的細(xì)心指導(dǎo),讓我們學(xué)到了很多,受益終生。

      【參考文獻(xiàn)】

      [1] 潘松, 黃繼業(yè).EDA 技術(shù)實(shí)用教程[M] 第2版 北京: 科學(xué)出版社, 2006 [2] 曹昕燕,周鳳臣,聶春燕.EDA技術(shù)實(shí)驗(yàn)與課程設(shè)計(jì) 北京:清華大學(xué)出版社,2006.5

      第四篇:EDA實(shí)習(xí)報(bào)告

      EDA實(shí)驗(yàn)報(bào)告

      系別:

      班級(jí):

      姓名:

      學(xué)號(hào):

      目錄

      1.EDA介紹

      2.Quartus II軟件介紹

      3.實(shí)習(xí)任務(wù)

      4.封裝引腳圖

      5.設(shè)計(jì)程序

      6.結(jié)果顯示

      7.實(shí)習(xí)心得

      1.EDA介紹

      EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)縮寫(xiě)。EDA技術(shù)是以計(jì)算機(jī)為工具,根據(jù)硬件描述語(yǔ)言HDL(Hardware Description language)完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合及優(yōu)化、布局布線、仿真以及對(duì)于特定目標(biāo)芯片的適配編譯和編程下載等工作。硬件描述語(yǔ)言HDL是相對(duì)于一般的計(jì)算機(jī)軟件語(yǔ)言,如:C、PASCAL而言的。HDL語(yǔ)言使用與設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語(yǔ)言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計(jì)者可利用HDL程序來(lái)描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結(jié)構(gòu),并實(shí)現(xiàn)相應(yīng)邏輯功能的的門(mén)級(jí)或更底層的結(jié)構(gòu)網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開(kāi)發(fā)來(lái)說(shuō),比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL[1]。

      幾乎所有適于大學(xué)生做的數(shù)字邏輯電路實(shí)驗(yàn)都可以在計(jì)算機(jī)上利用EDA(Electronic Design Automatic—電子設(shè)計(jì)自動(dòng)化)軟件進(jìn)行設(shè)計(jì)、仿真,只有極少量外部配件不能在計(jì)算機(jī)上進(jìn)行仿真。因此,在實(shí)驗(yàn)前期階段,即實(shí)驗(yàn)預(yù)習(xí)階段的主要應(yīng)用工具是EDA軟件,利用EDA軟件可以設(shè)計(jì)、仿真實(shí)驗(yàn)課題,進(jìn)行虛擬實(shí)驗(yàn)。通過(guò)虛擬實(shí)驗(yàn)使實(shí)驗(yàn)者在進(jìn)入真實(shí)實(shí)驗(yàn)前就能對(duì)預(yù)做的實(shí)驗(yàn)有相當(dāng)?shù)牧私?,甚至可以預(yù)測(cè)到實(shí)驗(yàn)的結(jié)果。這樣在實(shí)際做實(shí)驗(yàn)時(shí),可以把許多設(shè)計(jì)型實(shí)驗(yàn)的難度降低,同時(shí)能有更多的時(shí)間讓實(shí)驗(yàn)者動(dòng)手做實(shí)驗(yàn),研究問(wèn)題,提高實(shí)驗(yàn)效率。當(dāng)前數(shù)字電路設(shè)計(jì)已由計(jì)算機(jī)輔助設(shè)計(jì)進(jìn)入到以計(jì)算機(jī)為主的設(shè)計(jì)時(shí)代。

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

      Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫(kù),使用戶可以充分利用成熟的模塊,簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對(duì)第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三放EDA工具。

      此外,Quartus II 通過(guò)和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開(kāi)發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開(kāi)發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開(kāi)發(fā)平臺(tái)。

      Maxplus II 作為Altera的上一代PLD設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對(duì)Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類(lèi)型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計(jì)輔助工具,集成了SOPC和HardCopy設(shè)計(jì)流程,并且繼承了Maxplus II 友好的圖形界面及簡(jiǎn)便的使用方法。

      3.1 設(shè)計(jì)信號(hào)發(fā)生器使其能在儀器上顯示正弦、三角、方波、鋸齒波(其中的兩種波形)

      2設(shè)計(jì)頻率計(jì)使其能測(cè)出制定波形的頻率

      4.波形發(fā)生器封裝引腳圖

      5.波形發(fā)生器程序(正弦波,方波)

      Boxing4

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;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 IS

      TYPE 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-字模寫(xiě)入 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_1

      PORT(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 <=lcd_clk;rw<= '0';lcdon<='1';lcdbon<='1';data1<=1;data2<=2;data3<=5;

      PROCESS(clk)

      CONSTANT m : INTEGER:=50000;--50M 分頻到 1kHz。

      VARIABLE cout : INTEGER RANGE 0 TO 50000000:=0;BEGIN

      IF clk'EVENT AND clk='0' THEN cout:=cout+1;

      IF cout<=m/2 THEN lcd_clk<='1';

      ELSIF cout

      ELSE cout:=0;

      END IF;

      END IF;

      END PROCESS;

      PROCESS(lcd_clk)CONSTANT cgram : ram_array1:=(--自定義 8 個(gè) 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ù)存儲(chǔ)器);

      VARIABLE datacnt:INTEGER RANGE 0 TO 15;

      VARIABLE cnt: STD_LOGIC_VECTOR(7 DOWNTO 0);

      VARIABLE num:INTEGER RANGE 0 TO 7;BEGIN--wait until net3='0';RISING_EDGE(lcd_clk);

      IF RISING_EDGE(lcd_clk)THEN

      --if sint=“00”then

      case sint is

      when “11”=>

      CASE state IS

      WHEN clear_display=> rs<='0';data<=“00000001”;state<=set_Initial;--清屏

      WHEN set_initial=>

      IF datacnt<3 THEN rs<='0';data<=“00111000”;datacnt:=datacnt+1;--設(shè)置功能:8 位,兩行,5×8/每字符,重復(fù) 3 次

      ELSIF datacnt=3 THEN rs<='0';data<=“00000110”;datacnt:=datacnt+1;--顯示模式:完成一個(gè)字符碼傳送后,AC 自動(dòng)加 1;顯

      ELSIF datacnt=4 THEN rs<='0';data<=“00001100”;datacnt:=datacnt+1;--顯示控制:顯示開(kāi),光標(biāo)關(guān),光標(biāo)不閃爍

      ELSE rs<='0';datacnt:=0;state <= set_cgram;

      END IF;

      WHEN set_cgram=>rs<='0';--設(shè)置 CGRAM 字符地址

      data<=“01000000”+cnt;state<=write_cgram;--設(shè)置 CGRAM 字符地址 000

      IF num <8 THEN cnt:=cnt+“00001000”;--設(shè)置 CGRAM 字符地址加 1

      END IF;

      WHEN write_cgram=> rs<='1';--在 指 定 的--CGRAM 字符地址寫(xiě)入對(duì)應(yīng)的 8 個(gè) 5*8 字符字模

      data <= cgram(num)(datacnt);datacnt:=datacnt+1;state <= write_cgram;--寫(xiě)入 CGRAM 字符地址 000 的 5*8--字符字模

      IF datacnt=8 THEN num:=num+1;datacnt:=0;state <= set_cgram;--寫(xiě)入下一個(gè)自定義--的 5*8 字符字模

      IF num =7 THEN num:=0;cnt:=“00000000”;state<=set_addram1;--8 個(gè) 5*8 字符字模寫(xiě)--入完成

      END IF;

      END IF;

      WHEN set_addram1=>rs<='0';--設(shè)置 ADDRAM 地址 1

      data<=“10000000”;state<=diaplay_cgram;

      WHEN diaplay_cgram=>rs<='1';--顯示 ADDRAM 地址對(duì)應(yīng)的 CGRAM 字符

      --if sint=“00”then

      IF datacnt=0 THEN data<=X“02”;datacnt:=datacnt+1;

      ELSIF datacnt=1 THEN data<=X“03”;datacnt:=datacnt+1;

      ELSIF datacnt=2 THEN data <= X“04”;datacnt:=datacnt+1;

      ELSIF datacnt=3 THEN data<=X“05”;datacnt:=datacnt+1;

      ELSIF datacnt=4 THEN data<=X“06”;datacnt:=datacnt+1;

      ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=7 THEN data<=X“46”;datacnt:=datacnt+1;

      ELSIF datacnt=8 THEN data<=X“3a”;datacnt:=datacnt+1;

      ELSIF datacnt=9 THEN data<=X“31”;datacnt:=datacnt+1;

      ELSIF datacnt=10 THEN data<=X“30”;datacnt:=datacnt+1;

      ELSIF datacnt=11 THEN data<=X“4d”;datacnt:=datacnt+1;

      ELSIF datacnt=12 THEN data<=X“48”;datacnt:=datacnt+1;

      ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1;--顯示 cgrom 中指定的

      ELSIF datacnt=14 THEN data<=X“5a”;datacnt:=datacnt+1;

      ELSE data<=X“20”;datacnt:=0;state <= set_addram2;

      END IF;

      WHEN set_addram2=>rs<='0';--設(shè)置 ADDRAM 地址 2

      data<=“11000000”;state<=diaplay_cgrom;

      WHEN diaplay_cgrom=>rs<='1';

      IF datacnt=0 THEN data<=X“4A”;datacnt:=datacnt+1;

      ELSIF datacnt=1 THEN data<=X“41”;datacnt:=datacnt+1;

      ELSIF datacnt=2 THEN data<=X“43”;datacnt:=datacnt+1;

      ELSIF datacnt=3 THEN data<=X“4B”;datacnt:=datacnt+1;

      ELSIF datacnt=4 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=7 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=8 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=9 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=10 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=11 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1;

      ELSIF datacnt=12 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data2+48,8);datacnt:=datacnt+1;

      ELSIF datacnt=14 THEN data<=CONV_STD_LOGIC_VECTOR(data1+48,8);datacnt:=datacnt+1;

      ELSE data<=X“56”;datacnt:=0;state <= set_addram1;

      END IF;

      END CASE;

      --end if;

      when “01”=>

      --elsif sint =“01”then

      CASE state IS

      WHEN clear_display=> rs<='0';data<=“00000001”;state<=set_Initial;--清屏

      WHEN set_initial=>

      IF datacnt<3 THEN rs<='0';data<=“00111000”;datacnt:=datacnt+1;--設(shè)置功能:8 位,兩行,5×8/每字符,重復(fù) 3 次

      ELSIF datacnt=3 THEN rs<='0';data<=“00000110”;datacnt:=datacnt+1;--顯示模式:完成一個(gè)字符碼傳送后,AC 自動(dòng)加 1;顯

      ELSIF datacnt=4 THEN rs<='0';data<=“00001100”;datacnt:=datacnt+1;--顯示控制:顯示開(kāi),光標(biāo)關(guān),光標(biāo)不閃爍

      ELSE rs<='0';datacnt:=0;state <= set_cgram;

      END IF;

      WHEN set_cgram=>rs<='0';--設(shè)置 CGRAM 字符地址

      data<=“01000000”+cnt;state<=write_cgram;--設(shè)置 CGRAM 字符地址 000

      IF num <8 THEN cnt:=cnt+“00001000”;--設(shè)置 CGRAM 字符地址加 1

      END IF;

      WHEN write_cgram=> rs<='1';--在 指 定 的--CGRAM 字符地址寫(xiě)入對(duì)應(yīng)的 8 個(gè) 5*8 字符字模

      data <= cgram(num)(datacnt);datacnt:=datacnt+1;state <= write_cgram;--寫(xiě)入 CGRAM 字符地址 000 的 5*8--字符字模

      IF datacnt=8 THEN num:=num+1;datacnt:=0;state <= set_cgram;--寫(xiě)入下一個(gè)自定義--的 5*8 字符字模

      IF num =7 THEN num:=0;cnt:=“00000000”;state<=set_addram1;--8 個(gè) 5*8 字符字模寫(xiě)--入完成

      END IF;

      END IF;

      WHEN set_addram1=>rs<='0';--設(shè)置 ADDRAM 地址 1

      data<=“10000000”;state<=diaplay_cgram;

      WHEN diaplay_cgram=>rs<='1';--顯示 ADDRAM 地址對(duì)應(yīng)的 CGRAM 字符

      --if sint=“00”then

      IF datacnt=0 THEN data<=X“01”;datacnt:=datacnt+1;

      ELSIF datacnt=1 THEN data<=X“05”;datacnt:=datacnt+1;

      ELSIF datacnt=2 THEN data <= X“06”;datacnt:=datacnt+1;

      ELSIF datacnt=3 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=4 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=7 THEN data<=X“46”;datacnt:=datacnt+1;

      ELSIF datacnt=8 THEN data<=X“3a”;datacnt:=datacnt+1;

      ELSIF datacnt=9 THEN data<=X“31”;datacnt:=datacnt+1;

      ELSIF datacnt=10 THEN data<=X“30”;datacnt:=datacnt+1;

      ELSIF datacnt=11 THEN data<=X“4d”;datacnt:=datacnt+1;

      ELSIF datacnt=12 THEN data<=X“48”;datacnt:=datacnt+1;

      ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1;--顯示 cgrom 中指定的

      ELSIF datacnt=14 THEN data<=X“5a”;datacnt:=datacnt+1;

      ELSE data<=X“20”;datacnt:=0;state <= set_addram2;

      END IF;

      WHEN set_addram2=>rs<='0';--設(shè)置 ADDRAM 地址 2

      data<=“11000000”;state<=diaplay_cgrom;

      WHEN diaplay_cgrom=>rs<='1';

      IF datacnt=0 THEN data<=X“4A”;datacnt:=datacnt+1;

      ELSIF datacnt=1 THEN data<=X“41”;datacnt:=datacnt+1;

      ELSIF datacnt=2 THEN data<=X“43”;datacnt:=datacnt+1;

      ELSIF datacnt=3 THEN data<=X“4B”;datacnt:=datacnt+1;

      ELSIF datacnt=4 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=7 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=8 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=9 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=10 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=11 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1;

      ELSIF datacnt=12 THEN data<=X“20”;datacnt:=datacnt+1;

      ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data2+48,8);datacnt:=datacnt+1;

      ELSIF datacnt=14 THEN data<=CONV_STD_LOGIC_VECTOR(data1+48,8);datacnt:=datacnt+1;

      ELSE data<=X“56”;datacnt:=0;state <= set_addram1;

      END IF;

      END CASE;

      --end if;

      when others =>null;

      end case;

      END IF;end process;END fwm;

      Choice4-1

      library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

      --程序包 entity choice4_1 is

      --定義實(shí)體 port(s:in std_logic_vector(1 downto 0);

      --信號(hào)選擇端口s d1,d2: in std_logic_vector(7 downto 0);--d1d2d3d4分別連接四個(gè)波形發(fā)生模塊

      y: out std_logic_vector(7 downto 0));--定義輸出信號(hào)端口 end choice4_1;architecture behav of choice4_1 is

      --結(jié)構(gòu)體 begin

      process(s)

      begin

      case s is

      --case when語(yǔ)句進(jìn)行信號(hào)位的選擇

      when “01”=>y<=d1;

      when “11”=>y<=d2;

      when others=>null;

      end case;end process;

      --進(jìn)程結(jié)束 end behav;

      --結(jié)構(gòu)體結(jié)束

      fangbo

      library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fangbo is port(clkf,rf:in std_logic;qf:out std_logic_vector(7 downto 0));end entity;architecture behav of fangbo is signal a:bit;begin process(clkf,rf)--計(jì)數(shù)分頻

      variable cnt:integer range 0 to 256;begin if(rf='0')then a<='0';elsif clkf'event and clkf='1' then if cnt<255 then--進(jìn)行分頻 cnt:=cnt+1;else cnt:=0;a<=not a;end if;end if;end process;process(clkf,a)--信號(hào)輸出 begin if clkf'event and clkf='1' then if a='1' then qf<=“11111111”;else

      qf<=“00000000”;end if;end if;end process;end behav;

      sin

      library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity sin is port(clksin,rsin:in std_logic;da:out BIT_vector(7 downto 0));end entity;architecture behav of sin is signal a:bit;begin process(clksin,rsin)--計(jì)數(shù)分頻 variable cnt:integer range 0 to 256;begin if(rsin='0')then a<='0';elsif clksin'event and clksin='1' then if cnt<4 then--進(jìn)行分頻 cnt:=cnt+1;else cnt:=0;a<=not a;end if;end if;end process;--process(clksin,a)process(a)

      variable tmp:std_logic_vector(7 downto 0);variable d:BIT_vector(7 downto 0);begin--if a='0' then--d:=“00000000”;--elsif clksin'event and clksin='1' then if a'event and a='1' then if tmp=“00111111” then tmp:=“00000000”;else tmp:=tmp+1;end if;case tmp is when “00000000”=>d:=“11111111”;when “00000001”=>d:=“11111110”;when “00000010”=>d:=“11111100”;when “00000011”=>d:=“11111001”;when “00000100”=>d:=“11110101”;when “00000101”=>d:=“11101111”;when “00000110”=>d:=“11101001”;when “00000111”=>d:=“11100001”;when “00001000”=>d:=“11011001”;when “00001001”=>d:=“11001111”;when “00001010”=>d:=“11000101”;when “00001011”=>d:=“10111010”;when “00001100”=>d:=“10101110”;when “00001101”=>d:=“10100010”;when “00001110”=>d:=“10010110”;when “00001111”=>d:=“10001010”;when “00010000”=>d:=“01111100”;when “00010001”=>d:=“01100000”;when “00010010”=>d:=“01100011”;when “00010011”=>d:=“01010111”;when “00010100”=>d:=“01001011”;when “00010101”=>d:=“01000000”;when “00010110”=>d:=“00110101”;when “00010111”=>d:=“00101011”;when “00011000”=>d:=“00100010”;when “00011001”=>d:=“00011010”;when “00011010”=>d:=“00010011”;when “00011011”=>d:=“00001101”;when “00011100”=>d:=“00001000”;when “00011101”=>d:=“00000001”;when “00011110”=>d:=“00000001”;when “00011111”=>d:=“00000000”;when “00100000”=>d:=“00000000”;when “00100001”=>d:=“00000001”;when “00100010”=>d:=“00000001”;when “00100011”=>d:=“00001000”;when “00100100”=>d:=“00001101”;when “00100101”=>d:=“00010011”;when “00100110”=>d:=“00011010”;when “00100111”=>d:=“00100010”;when “00101000”=>d:=“00101011”;when “00101001”=>d:=“00110101”;when “00101010”=>d:=“01000000”;when “00101011”=>d:=“01001011”;when “00101100”=>d:=“01010111”;when “00101101”=>d:=“01100011”;when “00101110”=>d:=“01100000”;when “00101111”=>d:=“01111100”;when “00110000”=>d:=“10001001”;when “00110001”=>d:=“10010110”;when “00110010”=>d:=“10100010”;when “00110011”=>d:=“10101110”;when “00110100”=>d:=“10111010”;when “00110101”=>d:=“11000101”;when “00110110”=>d:=“11011001”;when “00110111”=>d:=“11011001”;when “00111000”=>d:=“11100001”;when “00111001”=>d:=“11101001”;when “00111010”=>d:=“11101111”;when “00111011”=>d:=“11110101”;when “00111100”=>d:=“11111001”;when “00111101”=>d:=“11111100”;when “00111110”=>d:=“11111110”;when “00111111”=>d:=“11111111”;when others=>null;end case;end if;da<=d SRL 1;--幅度調(diào)整 end process;end behav;

      頻率計(jì)

      1、頻率產(chǎn)生器: library ieee;use ieee.std_logic_1164.all;library lpm;use lpm.lpm_components.all;entity lpm_counter0 is port(clock: in std_logic;q: out std_logic_vector(26 downto 0));end lpm_counter0;architecture syn of lpm_counter0 is signal sub_wire0 : std_logic_vector(26 downto 0);component lpm_counter generic(lpm_direction : string;

      lpm_port_updown : string;lpm_type : string;lpm_width : natural);port(clock : in std_logic;

      q : out std_logic_vector(26 downto 0));end component;begin q <= sub_wire0(26 downto 0);lpm_counter_component : lpm_counter generic map(lpm_direction => “up”,lpm_port_updown => “port_unused”,lpm_type => “l(fā)pm_counter”,lpm_width => 27)port map(clock => clock,q => sub_wire0);end syn;

      2、測(cè)頻控制信號(hào)發(fā)生器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testpl is port(clk:in std_logic;--1Hz信號(hào)

      tsten:out std_logic;--計(jì)數(shù)器使能信號(hào) clr_cnt:out std_logic;--計(jì)數(shù)器清零信號(hào) load:out std_logic);--鎖存器輸出控制信號(hào) 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為0.5Hz end if;end process;process(clk ,div2clk)begin if(clk='0'and div2clk='0')then clr_cnt<='1';--當(dāng)div2clk與clk同時(shí)為零時(shí)計(jì)數(shù)器清零 else clr_cnt<='0';--當(dāng)div2clk處于的高電平時(shí)計(jì)數(shù)器計(jì)數(shù) end if;end process;load<=not div2clk;--鎖存器輸出與計(jì)數(shù)器使能信號(hào)反相 tsten<=div2clk;end art;

      3、有時(shí)鐘使能的十進(jìn)制計(jì)數(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:計(jì)數(shù)器時(shí)鐘,clr:清零信號(hào),en:計(jì)數(shù)使能信號(hào)

      q: out std_logic_vector(3 downto 0);--q:4位計(jì)數(shù)結(jié)果輸出 c10: out std_logic);--計(jì)數(shù)進(jìn)位 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為低電平1時(shí)清零 elsif clk'event and clk='1' then if en='1' then--當(dāng)輸入的tesen為高電平1時(shí)允許計(jì)數(shù) if(cqi<9)then cqi<=cqi+1;else cqi<=“0000”;--等于9則計(jì)數(shù)器清零 end if;--當(dāng)輸入的tesen為低電平0時(shí)禁止計(jì)數(shù),鎖定計(jì)數(shù)值 end if;end if;end process;--產(chǎn)生進(jìn)位

      process(cqi)begin if cqi=“1001” then c10<='1';--當(dāng)加的9時(shí)產(chǎn)生進(jìn)位輸出 else c10<='0';end if;end process;q<=cqi;end art;4、16位鎖存器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b is port(load: in std_logic;--輸出鎖存控制信號(hào) din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end reg16b;architecture art of reg16b is begin process(load,din)begin if load'event and load='1'then--load為高電平時(shí)teten為低電平,計(jì)數(shù)器禁止 dout<=din;--鎖存輸入的數(shù)據(jù) end if;end process;end art;

      5、數(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位信號(hào) dataout: out std_logic_vector(3 downto 0);-輸出至譯碼器的4位信號(hào) com: out std_logic_vector(3 downto 0));--輸出數(shù)碼管選擇信號(hào) end ledcom;architecture art of ledcom is signal comclk: std_logic_vector(1 downto 0);begin--comclk同掃描頻率clk循環(huán)變化 process(clk)begin if rising_edge(clk)then if comclk>=3 then

      comclk <=“00”;

      else comclk<=comclk+1;end if;end if;end process;--數(shù)碼管選擇

      process(comclk)begin case comclk is when “00” => com<=“1000”;when “01” => com<=“0100”;when “10” => com<=“0010”;when “11” => com<=“0001”;when others =>NULL;end case;end process;--對(duì)應(yīng)數(shù)碼管的輸出

      process(comclk,datain)begin case comclk is when “11”=> dataout<=datain(3 downto 0);when “10”=> dataout<=datain(7 downto 4);when “01”=> dataout<=datain(11 downto 8);when “00”=> dataout<=datain(15 downto 12);when others =>NULL;end case;end process;end art;

      6、七段數(shù)碼管的譯碼器 library IEEE;use IEEE.std_logic_1164.all;entity ymq is port(d_in: in std_logic_vector(3 downto 0);--數(shù)碼管控制器輸入四位信號(hào)

      d_out: out std_logic_vector(7 downto 0));--輸出8位信號(hào) end ymq;--第8位d_out[7]為逗號(hào) architecture art of ymq is begin process(d_in)begin case d_in is--第8位為1高電平逗號(hào)不顯示 when “0000” => d_out<=“11000000”;--0 when “0001” => d_out<=“11111001”;--1 when “0010” => d_out<=“10100100”;--2 when “0011” => d_out<=“10110000”;--3 when “0100” => d_out<=“10011001”;--4 when “0101” => d_out<=“10010010”;--5 when “0110” => d_out<=“10000010”;--6 when “0111” => d_out<=“11111000”;--7 when “1000” => d_out<=“10000000”;--8 when “1001” => d_out<=“10010000”;--9 when others =>NULL;end case;end process;end art;

      7、元件聲明及例化將各個(gè)元器件依據(jù)設(shè)計(jì)相連 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(3 downto 0));end lx;architecture art of lx is component lpm_counter0--待調(diào)用的頻率生成器端口定義 PORT(clock: IN STD_LOGIC;q: OUT STD_LOGIC_VECTOR(26 DOWNTO 0));end component;--十進(jìn)制計(jì)數(shù)器

      component cnt10--待調(diào)用的有時(shí)鐘使能的十進(jìn)制計(jì)數(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;--測(cè)頻控制器

      component testpl--待調(diào)用的測(cè)頻控制信號(hào)發(fā)生器端口定義 port(clk:in std_logic;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);com: out std_logic_vector(3 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信號(hào),clk2為被測(cè)信號(hào),clk3為數(shù)碼管掃描信號(hào)

      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);u9:lpm_counter0 port map(clk,q(25)=>clk1,q(15)=>clk2,q(17)=>clk3);end art;

      6.結(jié)果顯示

      7.實(shí)習(xí)心得

      第五篇:EDA實(shí)習(xí)報(bào)告

      貴州師范大學(xué)學(xué)生

      實(shí)習(xí)報(bào)告

      科目:EDA實(shí)習(xí)

      專(zhuān)業(yè): 電氣工程及其自動(dòng)化 班級(jí): 10電氣

      姓名: 李啟應(yīng)

      學(xué)號(hào): 101401010202

      實(shí)驗(yàn)項(xiàng)目名稱(chēng):數(shù)字電子鐘的設(shè)計(jì) 實(shí)驗(yàn)項(xiàng)目性質(zhì):普通試驗(yàn) 所屬課程名稱(chēng):VHDL程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)VHDL語(yǔ)言的一些基本特點(diǎn)。2 掌握VHDL程序的基本結(jié)構(gòu)。3掌握VHDL程序設(shè)計(jì)方法。要能夠用vhdl語(yǔ)言讀懂并編寫(xiě)eda程序,對(duì)eda設(shè)計(jì)的總體框架能有較好的把握,掌握各模塊的調(diào)用方式。

      二、實(shí)驗(yàn)內(nèi)容和要求

      設(shè)計(jì)一個(gè)數(shù)字時(shí)鐘,顯示時(shí)(2位),分(2位),秒(2位),具體要求是:具有時(shí)分秒計(jì)數(shù)顯示功能,以24小時(shí)循環(huán)計(jì)時(shí);數(shù)碼管動(dòng)態(tài)顯示時(shí),分,秒;具有清零功能。

      在軟件工具平臺(tái)上,進(jìn)行VHDL語(yǔ)言的各模塊編程輸入、編譯實(shí)現(xiàn)和仿真驗(yàn)證。

      三、實(shí)驗(yàn)主要儀器設(shè)備和材料

      計(jì)算機(jī),開(kāi)發(fā)環(huán)境MAX-PLUSII,ZY11EDA實(shí)驗(yàn)系統(tǒng),VHDL語(yǔ)言。

      四、實(shí)驗(yàn)方法、步驟及結(jié)果測(cè)試

      1、設(shè)計(jì)思路:

      數(shù)字鐘的主體是計(jì)數(shù)器,它記錄并顯示接收到的秒脈沖個(gè)數(shù),其中秒和分位60進(jìn)制計(jì)數(shù)器,小時(shí)為24進(jìn)制計(jì)數(shù)器,分別產(chǎn)生3位BCD碼。BCD碼經(jīng)譯碼,驅(qū)動(dòng)后接數(shù)碼顯示電路。

      根據(jù)實(shí)驗(yàn)要求,將設(shè)計(jì)分為5個(gè)主要部分,時(shí)功能模塊、分功能模塊、秒功能模塊、掃描儀功能模塊和7段LED功能模塊。在時(shí)、分、秒模塊中,包括復(fù)位和預(yù)置數(shù),其主要思路如下:

      秒鐘的模塊:設(shè)計(jì)一個(gè)60進(jìn)制的計(jì)數(shù)器,以clk為其時(shí)鐘信號(hào),每60個(gè)clk后產(chǎn) 生一個(gè)進(jìn)位信號(hào)CF給分鐘模塊,作為分鐘進(jìn)程的響應(yīng)信號(hào)。秒鐘模塊VHDL程序見(jiàn)附錄1: 仿真波形如下:

      封裝如下圖:

      分鐘的模塊:同理于秒鐘的模塊,設(shè)計(jì)一個(gè)60進(jìn)制的計(jì)數(shù)器,以CFM為其時(shí)鐘信號(hào),每60個(gè)CFM后產(chǎn)生一個(gè)進(jìn)位信號(hào)CFM給小時(shí)模塊,作為小時(shí)模塊進(jìn)程的響應(yīng)信號(hào)。分鐘模塊VHDL程序見(jiàn)附錄二: 仿真波形如下:

      封裝如下圖:

      小時(shí)的模塊:為24進(jìn)制計(jì)數(shù)器,在分的進(jìn)位信號(hào)CFM的激發(fā)下計(jì)數(shù),從0到23的時(shí)候產(chǎn)生一個(gè)信號(hào)CFH,全部清0,重新開(kāi)始計(jì)時(shí)。小時(shí)模塊VHDL程序見(jiàn)附錄三: 仿真波形如下:

      封裝如下圖:

      掃描儀模塊:在掃描儀內(nèi)部,有一個(gè)3-8譯碼器的片選信號(hào),當(dāng)3-8譯碼器的片選信號(hào)為000時(shí),片選信號(hào)選中7段LED模塊中的秒的個(gè)位,當(dāng)3-8譯碼器的片選信號(hào)為001時(shí),片選信號(hào)選中7段LED模塊中的秒的十位,當(dāng)3-8譯碼器的片選信號(hào)為010時(shí),片選信號(hào)選中7段LED模塊中的分的個(gè)位,當(dāng)3-8譯碼器的片選信號(hào)為011時(shí),片選信號(hào)選中7段LED模塊中的分的十位,當(dāng)3-8譯碼器的片選信號(hào)為100時(shí),片選信號(hào)選中7段LED模塊中的時(shí)的個(gè)位,當(dāng)3-8譯碼器的片選信號(hào)為101時(shí),片選信號(hào)選中7段LED模塊中的時(shí)的十位,就這樣動(dòng)態(tài)掃描,當(dāng)輸入的時(shí)鐘信號(hào)頻率很高的時(shí)候,就形成了我們的時(shí)鐘。

      掃描儀模塊VHDL程序見(jiàn)附錄四: 仿真波形如下:

      封裝如下圖:

      7段LED模塊:根據(jù)動(dòng)態(tài)掃描儀的片選信號(hào)來(lái)依次點(diǎn)亮我們所需的時(shí)間。7段LED模塊VHDL程序見(jiàn)附錄五: 仿真波形如下:

      封裝如下圖: 綜合以上5大模塊,把它們用線連接起來(lái)就得到我們的總的電路圖:如下圖所示: 其工作原理為:掃描儀3-8譯碼器的片選信號(hào)根據(jù)時(shí)分秒的輸入選中7段LED模塊,然后再由時(shí)分秒中產(chǎn)生的3位BCD碼來(lái)輸出秒的個(gè)位,十位、時(shí)的個(gè)位,十位、小時(shí)的個(gè)位,十位。

      4.總結(jié):

      在實(shí)驗(yàn)這兩周的時(shí)間里,我們做過(guò)DC觸發(fā)器、DQ觸發(fā)器、3-8譯碼器、二選一電路和四選一電路等,最后綜合做了數(shù)字時(shí)鐘電路,通過(guò)這次實(shí)習(xí),我對(duì)用VHDL來(lái)編程有了更深的了解,在要編程的時(shí)候,我學(xué)會(huì)了分模塊進(jìn)行,因?yàn)橐婚_(kāi)始的時(shí)候設(shè)計(jì)一個(gè)時(shí)鐘系統(tǒng)比較麻煩,沒(méi)有分模塊之前總是會(huì)有差錯(cuò),而之后思路就會(huì)比較清晰,有明確的方案,在對(duì)照書(shū)本里的編程規(guī)則與語(yǔ)句,就完成了這次的設(shè)計(jì),總之就是獲益良多。附錄1:秒鐘模塊VHDL程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second is port(clk,reset:in std_logic;cf:out std_logic;second1_out:out std_logic_vector(3 downto 0);second10_out:out std_logic_vector(2 downto 0));end entity second;architecture one of second is signal second1n:std_logic_vector(3 downto 0);signal second10n:std_logic_vector(2 downto 0);begin second1_out<=second1n;second10_out<=second10n;process(clk,reset)begin if(reset='1')then second1n<=“0000”;second10n<=“000”;elsif(clk' event and clk='1')then if(second1n=“1001”)then 7 second1n<=“0000”;if(second10n=“101”)then second10n<=“000”;cf<='1';else second10n<=second10n+1;end if;else second1n<=second1n+1;end if;end if;end process;end architecture one;附錄二:分鐘模塊VHDL程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port(clk,reset:in std_logic;cf:out std_logic;minute1_out:out std_logic_vector(3 downto 0);minute10_out:out std_logic_vector(2 downto 0));end entity minute;architecture one of minute is signal minute1n:std_logic_vector(3 downto 0);signal minute10n:std_logic_vector(2 downto 0);begin minute1_out<=minute1n;minute10_out<=minute10n;process(clk,reset)begin if(reset='1')then minute1n<=“0000”;minute10n<=“000”;elsif(clk' event and clk='1')then if(minute1n=“1001”)then minute1n<=“0000”;if(minute10n=“101”)then minute10n<=“000”;cf<='1';else minute10n<=minute10n+1;end if;else minute1n<=minute1n+1;end if;end if;end process;end architecture one;附錄三:小時(shí)模塊VHDL程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port(clk,reset:in std_logic;hour1_out:out std_logic_vector(3 downto 0);hour10_out:out std_logic_vector(1 downto 0));end entity hour;architecture one of hour is signal hour1n:std_logic_vector(3 downto 0);signal hour10n:std_logic_vector(1 downto 0);begin hour1_out<=hour1n;hour10_out<=hour10n;process(clk,reset)begin if(reset='1')then hour1n<=“0000”;hour10n<=“00”;elsif(clk' event and clk='1')then if(hour1n=“1001”or(hour1n=“0011”and hour10n=“0010”))then hour1n<=“0000”;if(hour10n=“10”)then hour10n<=“00”;else hour10n<=hour10n+1;end if;else hour1n<=hour1n+1;end if;end if;end process;end architecture one;附錄四:掃描儀模塊VHDL程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity saomiaoyi is port(clk:in std_logic;reset:in std_logic;second1,minute1,hour1:in std_logic_vector(3 downto 0);second_10,minute_10:in std_logic_vector(2 downto 0);hour_10:in std_logic_vector(1 downto 0);dataout:out std_logic_vector(3 downto 0);sel:out std_logic_vector(2 downto 0));end entity saomiaoyi;architecture one of saomiaoyi is signal count:std_logic_vector(2 downto 0);begin sel<=count;process(clk,reset)begin if(reset='1')then dataout<=“0000”;elsif(clk'event and clk='1')then if count>=“101” then count<=“000”;else count<=count+1;end if;end if;case count is when“000”=>dataout<=second1;when“001”=>dataout<='0'& second_10;when“010”=>dataout<=minute1;when“011”=>dataout<='0'& minute_10;when“100”=>dataout<=hour1;when others =>dataout<=“00”& hour_10;end case;end process;end architecture one;

      附錄五:7段LED模塊VHDL程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY led_7 IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END entity led_7;ARCHITECTURE one OF led_7 IS BEGIN PROCESS(A)BEGIN CASE A(3 DOWNTO 0)IS WHEN “0000” => LED7S <= “0111111”;--X“3F” 0 WHEN “0001” => LED7S <= “0000110”;--X“06” 1 WHEN “0010” => LED7S <= “1011011”;--X“5B” 2 WHEN “0011” => LED7S <= “1001111”;--X“4F” 3 WHEN “0100” => LED7S <= “1100110”;--X“66” 4 WHEN “0101” => LED7S <= “1101101”;--X“6D” 5 WHEN “0110” => LED7S <= “1111101”;--X“7D” 6 WHEN “0111” => LED7S <= “0000111”;--X“07” 7 WHEN “1000” => LED7S <= “1111111”;--X“7F” 8 WHEN “1001” => LED7S <= “1101111”;--X“6F” 9 WHEN OTHERS => NULL;END CASE;END PROCESS;END ARCHITECTURE one;

      下載EDA設(shè)計(jì)報(bào)告word格式文檔
      下載EDA設(shè)計(jì)報(bào)告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


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

      相關(guān)范文推薦

        EDA實(shí)習(xí)報(bào)告

        電子設(shè)計(jì)自動(dòng)化技術(shù)EDA實(shí)習(xí)報(bào)告 目錄 引 言 (1)EDA簡(jiǎn)介 (2)EDA的設(shè)計(jì)流程 第一章實(shí)訓(xùn)目的 第二章 實(shí)訓(xùn)內(nèi)容 一、EDA 開(kāi)發(fā)軟件Max+plus II 或Quartus II 1.1基本原理 1.2條件......

        EDA課程 跑馬燈設(shè)計(jì)

        EDA目錄 第一章 設(shè)計(jì)思路 ..............................................................................................................................................

        跑馬燈設(shè)計(jì)EDA課程設(shè)計(jì)

        第一章 設(shè)計(jì)內(nèi)容與設(shè)計(jì)方案 1.1課程設(shè)計(jì)內(nèi)容 控制8個(gè)LED進(jìn)行花樣性顯示。 設(shè)計(jì)4種顯示模式:s0,從左到右逐個(gè)點(diǎn)亮LED;s1,從右到左逐個(gè)點(diǎn)亮LED;s2,從兩邊到中間逐個(gè)點(diǎn)亮LED;s3,從中見(jiàn)......

        EDA萬(wàn)年歷課程設(shè)計(jì)報(bào)告

        《EDA技術(shù)及其應(yīng)用》 實(shí) 訓(xùn) 報(bào) 告 班 級(jí) 姓 名 學(xué) 號(hào) 指導(dǎo)教師 目 錄 一 設(shè)計(jì)要求 ...................................... 2 1.0 設(shè)計(jì)目的及意義 ...........................

        EDA課程設(shè)計(jì)報(bào)告(大全5篇)

        時(shí) 間 學(xué) 院 專(zhuān)業(yè)班級(jí) 姓 名 學(xué) 號(hào) 教 師 成 績(jī) 北京科技大學(xué)——自1105班——王瑋——41151133 EDA課程設(shè)計(jì)報(bào)告 2013年12月 北京科技大學(xué)——自1105班——王瑋——4115......

        EDA實(shí)訓(xùn)報(bào)告

        《EDA技術(shù)及其應(yīng)用》 實(shí) 訓(xùn) 報(bào) 告 班 級(jí) 08級(jí)電子信息工程技術(shù)2班 姓 名 學(xué) 號(hào) 指導(dǎo)教師 2010年 5 月 26 日 鄭州信息科技職業(yè)學(xué)院 機(jī)械電子工程系 目錄 一、 實(shí)訓(xùn)名稱(chēng)??......

        EDA綜合實(shí)驗(yàn)設(shè)計(jì)報(bào)告

        Beijing Jiaotong University EDA實(shí)驗(yàn)設(shè)計(jì)報(bào)告 指導(dǎo)老師:劉彪 學(xué)院:電子信息工程學(xué)院 姓名:黃家維 學(xué)號(hào):13213012 班級(jí):電子1301 實(shí)驗(yàn)地點(diǎn):電氣樓406 實(shí)驗(yàn)日期:2014年5月29日星......

        基于EDA的自動(dòng)售貨機(jī)系統(tǒng)的設(shè)計(jì) 開(kāi)題報(bào)告

        畢業(yè)設(shè)計(jì)開(kāi)題報(bào)告 課題名稱(chēng):基于學(xué)院: 專(zhuān)業(yè): EDA的自動(dòng)售貨機(jī)系統(tǒng)的設(shè)計(jì) 電子電氣工程學(xué)院 電子信息工程 一 自動(dòng)售貨機(jī)設(shè)計(jì)簡(jiǎn)介 自動(dòng)售貨是20世紀(jì)70年代在日本、歐美發(fā)展起來(lái)......