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

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

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

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

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

      FPGA搶答器設(shè)計(jì)報(bào)告

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

      第一篇:FPGA搶答器設(shè)計(jì)報(bào)告

      Vb開辦上海電力學(xué)院

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

      信息工程系

      搶答器設(shè)計(jì)報(bào)告

      一、設(shè)計(jì)目的:

      本課程的授課對(duì)象是電子科學(xué)與技術(shù)專業(yè)本科生,是電子類專業(yè)的一門重要的實(shí)踐課程,是理論與實(shí)踐相結(jié)合的重要環(huán)節(jié)。

      本課程有助于培養(yǎng)學(xué)生的數(shù)字電路設(shè)計(jì)方法、掌握模塊劃分、工程設(shè)計(jì)思想與電路調(diào)試能力,為以后從事各種電路設(shè)計(jì)、制作與調(diào)試工作打下堅(jiān)實(shí)的基礎(chǔ)

      二、實(shí)驗(yàn)器材和工具軟件:

      PC機(jī)一臺(tái)、QuartusII軟件、DE2板。

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

      (1)搶答器可容納四組12位選手,每組設(shè)置三個(gè)搶答按鈕供選手使

      用。

      (2)電路具有第一搶答信號(hào)的鑒別和鎖存功能。在主持人將系統(tǒng)復(fù)位并發(fā)出搶答指令后,蜂鳴器提示搶答開始,時(shí)顯示器顯示初始時(shí)間并開始倒計(jì)時(shí),若參賽選手按搶答按鈕,則該組指示燈亮并用組別顯示器顯示選手的組別,同時(shí)蜂鳴器發(fā)出“嘀嘟”的雙音頻聲。此時(shí),電路具備自鎖功能,使其它搶答按鈕不起作用。

      (3)如果無人搶答,計(jì)時(shí)器倒計(jì)時(shí)到零,蜂鳴器有搶答失敗提示,主持人可以按復(fù)位鍵,開始新一輪的搶答。

      (4)設(shè)置犯規(guī)功能。選手在主持人按開始鍵之前搶答,則認(rèn)為犯規(guī),犯規(guī)指示燈亮和顯示出犯規(guī)組號(hào),且蜂鳴器報(bào)警,主持人可以終止搶答執(zhí)行相應(yīng)懲罰。

      (5)搶答器設(shè)置搶答時(shí)間選擇功能。為適應(yīng)多種搶答需要,系統(tǒng)設(shè)有10秒、15秒、20秒和3O秒四種搶答時(shí)間選擇功能。

      四、設(shè)計(jì)具體步驟:

      首先把系統(tǒng)劃分為組別判斷電路模塊groupslct,犯規(guī)判別與搶答信號(hào)判別電路模塊fgqd,分頻電路模塊fpq1,倒計(jì)時(shí)控制電路模塊djs,顯示時(shí)間譯碼電路模塊num_7seg模塊,組別顯示模塊showgroup模塊這六個(gè)模塊,各模塊設(shè)計(jì)完成后,用電路原理圖方法將各模塊連接構(gòu)成系統(tǒng)。

      各模塊功能及代碼:

      1、組別判別模塊

      (1)功能:可容納四組12位選手,每組設(shè)置三個(gè)搶答按鈕供選手使用。若參賽選手按搶答按鈕,則輸出選手的組別。此時(shí),電路具

      signal rst : std_logic;begin

      h<=“0000” when(a=“000” and b=“000” and c=“000” and d=“000”)else

      “0001” when(a/=“000” and b=“000” and c=“000” and d=“000”)else

      “0010” when(a=“000” and b/=“000” and c=“000” and d=“000”)else

      “0100” when(a=“000” and b=“000” and c/=“000” and d=“000”)else

      “1000” when(a=“000” and b=“000” and c=“000” and d/=“000”)else

      “0000”;process

      begin

      wait on clock until rising_edge(clock);

      if clr='1' then

      rst<='1';

      g<=“0000”;

      end if;

      if h/=“0000” then

      if rst='1' then

      g<=h;

      rst<='0';

      end if;

      end if;

      end process;

      end behave_groupslct;

      2、犯規(guī)判別與搶答信號(hào)判別模塊

      (1)功能:若參賽選手在主持人按開始鍵之后按搶答按鈕,則使該組指示燈亮并輸出選手的組別,同時(shí)蜂鳴器發(fā)出響聲。

      選手在主持人按開始鍵之前搶答,則認(rèn)為犯規(guī),犯規(guī)指示燈亮并輸出犯規(guī)組號(hào),且蜂鳴器報(bào)警。

      (2)原理:c[3..0]接組別判別模塊的g[3..0],即此時(shí)c為按鍵組別的信息。go接主持人的“開始”按鍵。由于無論是在正常情況還是犯規(guī)情況下按下按鍵,都必須顯示按鍵的組別且蜂鳴器響,所以將c的值給hex以輸出按鍵組別,且在有按鍵按下(c/=“0000”)時(shí)輸出fm為‘1’,否則為‘0’。若在開始之前有按鍵按下時(shí),即go='0'且c/=“0000”,輸出ledfg為‘1’,否則為‘0’。若在開始之后有按鍵按下,將c的值給led,使該組指示燈亮,開始之前l(fā)ed輸出“0000”。

      (3)程序代碼:

      library ieee;

      use ieee.std_logic_1164.all;

      entity fgqd is port(c:in std_logic_vector(3 downto 0);

      go:in std_logic;

      hex:out std_logic_vector(3 downto 0);

      led:out std_logic_vector(3 downto 0);

      ledfg,fm:out std_logic);

      end fgqd;

      architecture behave_fgqd of fgqd is begin);end djs;

      architecture behave_djs of djs is begin

      process(clock,aclr,s)

      begin

      if(aclr='1')then

      if(s=“00”)then

      q<=“01010”;

      elsif(s=“01”)then

      q<=“01111”;

      elsif(s=“10”)then

      q<=“10100”;

      else

      q<=“11110”;

      end if;

      else

      if rising_edge(clock)then

      if en='1' then

      q<=q-1;

      if(q=“00000” and grpsl=“0000”)then

      time0<='1';

      else

      time0<='0';

      end if;

      end if;

      end if;

      end if;

      end process;end behave_djs;

      4、分頻器模塊

      (1)功能:實(shí)現(xiàn)50MHz—1Hz的分頻,為倒計(jì)時(shí)模塊提供時(shí)鐘。

      (2)程序代碼

      library ieee;

      use ieee.std_logic_1164.all;

      entity fpq1 is port(clkin :in std_logic;

      clkout:out std_logic);end fpq1;

      architecture behave_fpq1 of fpq1 is constant N: Integer:=24999999;signal Counter:Integer RANGE 0 TO N;signal Clk: Std_Logic;begin

      process(clkin)

      begin

      if rising_edge(clkin)then--每計(jì)到N個(gè)(0~n-1)上升沿,輸出信號(hào)翻轉(zhuǎn)一次

      if Counter=N then

      Counter<=0;

      Clk<=NOT Clk;

      else

      Counter<= Counter+1;

      end if;

      end if;

      end process;clkout<= Clk;end behave_fpq1;

      5、時(shí)間顯示譯碼器

      (1)功能:將時(shí)間信息在7段數(shù)碼管上顯示。

      (2)程序代碼

      library ieee;

      use ieee.std_logic_1164.all;

      entity num_7seg is port(c:in std_logic_vector(4 downto 0);

      hex:out std_logic_vector(13 downto 0));

      end num_7seg;

      architecture behave_num_7seg of num_7seg is begin

      with c(4 downto 0)select

      hex<= “10000001000000” when “00000” ,--“0”

      “10000001111001” when “00001” ,--“1”

      “10000000100100” when “00010” ,--“2”

      “10000000110000” when “00011” ,--“3”

      “10000000011001” when “00100” ,--“4”

      “10000000010010” when “00101” ,--“5”

      “10000000000010” when “00110” ,--“6”

      “10000001111000” when “00111” ,--“7”

      “10000000000000” when “01000” ,--“8”

      “10000000010000” when “01001” ,--“9”

      “11110011000000” when “01010” ,--“10”

      “11110011111001” when “01011” ,--“11”

      “11110010100100” when “01100” ,--“12”

      “11110010110000” when “01101” ,--“13”

      “11110010011001” when “01110” ,--“14”

      “11110010010010” when “01111” ,--“15”

      “11110010000010” when “10000” ,--“16”

      “11110011111000” when “10001” ,--“17”

      “11110010000000” when “10010” ,--“18”

      “11110010010000” when “10011” ,--“19”

      “01001001000000” when “10100” ,--“20”

      “01001001111001” when “10101” ,--“21”

      “01001000100100” when “10110” ,--“22”

      “01001000110000” when “10111” ,--“23”

      “01001000011001” when “11000” ,--“24”

      “01001000010010” when “11001” ,--“25”

      “01001000000010” when “11010” ,--“26”

      “01001001111000” when “11011” ,--“27”

      來。然后就是將選出的組別鎖存。將按下按鍵的組別賦給一內(nèi)部信號(hào)“h”(沒有按鍵按下時(shí)h=“0000”),當(dāng)復(fù)位鍵按下時(shí)(clr=‘1’)輸出g=“0000”并且將另一內(nèi)部信號(hào)rst置1。當(dāng)復(fù)位后(rst=‘1’)有按鍵按下時(shí)將h的值給輸出信號(hào)g,并且將標(biāo)志信號(hào)rst清零。這樣就實(shí)現(xiàn)最快按鍵組別鎖存功能。

      六、心得體會(huì)

      通過此次設(shè)計(jì),我掌握了數(shù)字電路的設(shè)計(jì)方法,尤其是模塊劃分、工程設(shè)計(jì)思想與電路調(diào)試能力,都有了一定的提高。為以后從事各種電路設(shè)計(jì)、制作與調(diào)試工作打下堅(jiān)實(shí)的基礎(chǔ)。

      第二篇:基于fpga的四路搶答器課程設(shè)計(jì)報(bào)告

      一、課題設(shè)計(jì)的基礎(chǔ)和實(shí)驗(yàn)條件

      1.工作基礎(chǔ)

      (1)數(shù)字電路,模擬電路的學(xué)習(xí);對(duì)所需使用的芯片管腳及

      功能的了解;掌握了基本的數(shù)字電路設(shè)計(jì)流程。

      (2)學(xué)會(huì)使用MAX+PLUS 軟件設(shè)計(jì)數(shù)字電路;

      了解EDA實(shí)驗(yàn)開發(fā)系統(tǒng)。

      2.實(shí)驗(yàn)條件

      (1)提供有目標(biāo)芯片:FPGA-型號(hào)EP7128SLC84-15的實(shí)驗(yàn)開發(fā)系統(tǒng)、數(shù)碼顯示器、二極管、三極管、鈕子開關(guān);

      (2)電路設(shè)計(jì)器件:

      AND4、NOT、D觸發(fā)器等

      二、設(shè)計(jì)目標(biāo)

      1.4人搶答器(四名選手分別為:R1,R2,R3,R4);

      2.主持人啟動(dòng)及復(fù)位開關(guān)HT;

      3.七段顯示碼顯示選手的編號(hào);

      4.搶答器具有“互鎖”功能; 三 設(shè)計(jì)電路圖及仿真

      該設(shè)計(jì)屬于較為復(fù)雜的中小規(guī)模數(shù)字系統(tǒng)設(shè)計(jì),按照系統(tǒng)的功能要求和自頂向下的層次化設(shè)計(jì)思想,該搶答器可以分為三個(gè)模塊,他們分別為:搶答器控制模塊——IN,該模塊用于控制選手及主持人的動(dòng)作;編碼模塊——qiwei,用于將選手的編號(hào)編碼以便用數(shù)碼管顯示輸出;

      (1)搶答器控制模塊IN的設(shè)計(jì):

      該模塊在任意一位選手首先按下?lián)尨疰I后,其輸出高電平給D鎖存器,并將輸出結(jié)果送至編碼器qiwei, 該模塊的主持人按鍵HOST按鈕可以實(shí)現(xiàn)系統(tǒng)的復(fù)位。其原理圖為:

      選手的輸出信號(hào)發(fā)出之后,需要把輸出轉(zhuǎn)換為數(shù)字,故需要加一個(gè)七位譯碼器。(2)七位譯碼器的設(shè)計(jì):

      通過編程定義生成了一個(gè)七位譯碼器:

      生成此七位譯碼器的程序如下:

      (3)生成完整設(shè)計(jì)圖:

      兩個(gè)模塊進(jìn)行連接即得到最終的實(shí)驗(yàn)電路圖:

      (4)設(shè)計(jì)圖的仿真:

      對(duì)設(shè)計(jì)的電路進(jìn)行仿真得到仿真圖如下:

      從仿真結(jié)果可以看出符合功能要求。

      (5)連接引腳圖:

      根據(jù)設(shè)計(jì)圖選擇適當(dāng)?shù)囊_連接得到下圖的引腳圖

      連接完引腳圖后,通過PROGRAMER即可通過開發(fā)板來進(jìn)行調(diào)試驗(yàn)證。最終通過多次的調(diào)試與驗(yàn)證,終于完成了實(shí)驗(yàn)。

      四 心得體會(huì):

      本次實(shí)踐我認(rèn)為完成的比較艱辛,首先在上第一節(jié)課的時(shí)候,聽老師講到這門課程設(shè)計(jì)需要學(xué)到一些先修課程。但是單片機(jī),PLC,F(xiàn)PGA我之前都沒學(xué)過,而且之前學(xué)的數(shù)電和模電也很多知識(shí)都有些記不清了。所以覺得特別慌,于是在第一節(jié)課后就在課下看老師給的參考資料。開始的時(shí)候覺得好多都不懂完全不明白講的是什么。后來在找了一些視頻之后對(duì)FPGA和MAX+PLUS平臺(tái)有了一定的了解。后來又在選擇電路的設(shè)計(jì)之前我認(rèn)真復(fù)習(xí)了《數(shù)字電子技術(shù)》,對(duì)試驗(yàn)中涉及到的器件進(jìn)行了重點(diǎn)復(fù)習(xí);而且認(rèn)真學(xué)習(xí)了《MAX+PLUS11操作指南》,后來在實(shí)驗(yàn)室開放后每天都去做實(shí)驗(yàn)調(diào)試。最終能夠熟練地使用該軟件完成中小規(guī)模的集成電路。雖然準(zhǔn)備了不少,而且也自覺還是挺認(rèn)真盡力的,但是之前的課程學(xué)的不好還是挺傷的,對(duì)于一些復(fù)雜的設(shè)計(jì)還是有挺多不太懂的,只能參考網(wǎng)上查到的資料去理解。

      從開始做到成功共嘗試過三個(gè)項(xiàng)目,第一個(gè)比較簡(jiǎn)單算是熟悉軟件。本來是希望做好一個(gè)流水燈的但是后來發(fā)現(xiàn)輸出電路太復(fù)雜,經(jīng)過多次調(diào)試始終在仿真時(shí)打不到自己的要求,被迫作罷。最后選擇做4位搶答器,設(shè)計(jì)圖畫出來并沒有花費(fèi)太多時(shí)間,但是調(diào)試真是花了大量的時(shí)間,因?yàn)殚_發(fā)板的接線經(jīng)常會(huì)出現(xiàn)一些接觸不良,導(dǎo)致即使仿真結(jié)果是對(duì)的,但是卻在開發(fā)板上達(dá)不到自己的要求。只能一步一步通過排除法來修改更換接觸不良的引腳。最終,終于解決了所有問題完成了設(shè)計(jì)。雖然設(shè)計(jì)不算特別高明特別復(fù)雜。但是畢竟是自己一點(diǎn)一點(diǎn)做出來的,所以還是覺得挺有成就感。

      就具體收獲來說,首先知識(shí)上,通過此課程設(shè)計(jì),讓我復(fù)習(xí)了之前學(xué)習(xí)的知識(shí),同時(shí)讓我對(duì)FPGA有了一個(gè)整體的了解,對(duì)MAX+PLUS軟件也比較熟悉了。除此之外,我覺得在這個(gè)實(shí)驗(yàn)的過程中也鍛煉了我的耐心,讓我能比較專注的去做一件事情。而且經(jīng)歷了這次試驗(yàn)我認(rèn)識(shí)到電路設(shè)計(jì)是一個(gè)踏踏實(shí)實(shí)的過程,設(shè)計(jì)過程中我們需要循序漸進(jìn),一步一個(gè)腳印,來不得半點(diǎn)馬虎和浮躁心理。

      第三篇:74LS148四路搶答器設(shè)計(jì)報(bào)告

      目錄

      1.設(shè)計(jì)任務(wù)和要求…………………………………….3 2.設(shè)計(jì)方案…………………………………………….3 2.1 設(shè)計(jì)思路………………………………………3 2.2 設(shè)計(jì)原理………………………………………4 2.3 實(shí)現(xiàn)功能………………………………………4 3.硬件設(shè)計(jì)…………………………………………….5 3.1 各功能電路連線圖……………………………5 3.2 框圖和說明……………………………………6 4.軟件設(shè)計(jì)…………………………………………….7 5.小結(jié)………………………………………………….8 6.參考文獻(xiàn)…………………………………………….9

      設(shè)計(jì)任務(wù)與要求

      1.1 可同時(shí)供四名選手參賽,其編號(hào)分別是1-4,各用一個(gè)搶答按鈕,按鈕的編號(hào)和選手的編號(hào)相對(duì)應(yīng),給節(jié)目主持人設(shè)置一控制開關(guān),用于控制系統(tǒng)的清零(編號(hào)顯示數(shù)碼管滅燈)搶答的開始。

      1.2

      搶答器具有數(shù)據(jù)鎖存和顯示的功能,搶答開始后,若有選手按搶答按鈕,其編號(hào)立即所存,并在數(shù)碼管上顯示該選手的編號(hào),同時(shí)封鎖輸入電路,禁止其他選手搶答。優(yōu)先搶答選手的編號(hào)一直保持到主持人主持人將系統(tǒng)清零為止。設(shè)計(jì)方案 2.1 設(shè)計(jì)思路 2.1.1 在給定

      5V直流電源電壓的條件下設(shè)計(jì)一個(gè)可以容納四組參賽者的搶答器,每組設(shè)定一個(gè)搶答按鈕供參賽者使用。

      2.1.2 設(shè)置一個(gè)系統(tǒng)清零和搶答控制開關(guān)K(該開關(guān)由主持人控制),當(dāng)開關(guān)K被按下時(shí),搶答開始(允許搶答),打開后搶答電路清零。

      2.1.3 搶答器具有一個(gè)搶答信號(hào)的鑒別、鎖存及顯示功能。即有搶答信號(hào)輸入(參賽者的開關(guān)中任意一個(gè)開關(guān)被按下)時(shí),鎖存相應(yīng)的編號(hào),并在LED數(shù)碼管上顯示出來,同時(shí)揚(yáng)聲器發(fā)生聲響。此時(shí)再按其他任何一個(gè)搶答器開關(guān)均無效,優(yōu)先搶答選手的編號(hào)一直保持不變,直到主持人將系統(tǒng)清除為止。

      2.1.4 開關(guān)K按下后,系統(tǒng)清零,由主持人發(fā)令,開始搶答。2.2 設(shè)計(jì)原理

      2.2.1原理圖

      2.2.2 設(shè)計(jì)原理

      接通電源后,主持人將開關(guān)撥到“清除”狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號(hào)顯示器滅燈,定時(shí)器顯示設(shè)定時(shí)間;主持人將開關(guān)置“開始“狀態(tài),宣布”開始“搶答器工作。選手在搶答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、亮燈提示。如果再次搶答必須由主持人再次操作”清除“和”開始"狀態(tài)開關(guān)。

      2.3 實(shí)現(xiàn)功能

      一是選手按搶答按鈕,其編號(hào)立即所存,并在數(shù)碼管上顯示該選手的編號(hào)。二是封鎖輸入電路,禁止其他選手搶答。

      三是優(yōu)先搶答選手的編號(hào)一直保持到主持人主持人將系統(tǒng)清零為止。硬件設(shè)計(jì)

      3.1本課程設(shè)計(jì),需要用集成電路:

      74LS148,74LS279,74LS48和五個(gè)開關(guān)及其他元件,3.2各功能電路接線圖

      電路連線圖

      3.2 框圖和說明

      3.2.1 元器件

      74LS48管腳圖

      74LS148真值表

      74LS148功能介紹

      在優(yōu)先編碼器電路中,允許同時(shí)輸入兩個(gè)以上編碼信號(hào)。不過在設(shè)計(jì)優(yōu)先編 碼器時(shí),已經(jīng)將所有的輸入信號(hào)按優(yōu)先順序排了隊(duì)。在同時(shí)存在兩個(gè)或兩個(gè)以上輸入信號(hào)時(shí),優(yōu)先編碼器只按優(yōu)先級(jí)高的輸入信號(hào)編碼,優(yōu)先級(jí)低的信號(hào)則不起作用。74148是一個(gè)八線-三線優(yōu)先級(jí)編碼器。3.2.3 說明:

      當(dāng)主持人控制開關(guān)S按下時(shí),RS觸發(fā)器的R端均為“0”,4個(gè)觸發(fā)器輸出1Q-4Q全部為零,同時(shí)74LS148的選通輸入端EI=0,使之處于工作狀態(tài),此時(shí)鎖存電路不工作。當(dāng)主持人將開關(guān)“S”抬起時(shí),優(yōu)先編碼器處于工作狀態(tài),即搶答器處于等待工 5 作狀態(tài),等待信號(hào)輸入端信號(hào)輸入,當(dāng)有選手按下時(shí),比如“S0”按下時(shí),74LS148的輸出Y2Y1Y0=000, 經(jīng)RS鎖存后,BI=1,74LS279處于工作狀態(tài),4Q3Q2Q=A2A1A0=000,經(jīng)74LS48譯碼后,顯示器顯示“0”.軟件設(shè)計(jì)

      4.1 優(yōu)先編碼器工作原理

      74LS148工作原理:該編碼器有8個(gè)信號(hào)輸入端,3個(gè)二進(jìn)制碼輸出端。此外,電路還設(shè)置了輸入使能端EI,輸出使能端EO和優(yōu)先編碼工作狀態(tài)標(biāo)志GS。當(dāng)EI=0時(shí),編碼器工作;而當(dāng)EI=1時(shí),則不論8個(gè)輸入端為何種狀態(tài),3個(gè)輸出端均為高電平,且優(yōu)先標(biāo)志端和輸出使能端均為高電平,編碼器處于非工作狀態(tài)。這種情況被稱為輸入低電平有效,輸出也為低電來有效的情況。當(dāng)EI為0,且至少有一個(gè)輸入端有編碼請(qǐng)求信號(hào)(邏輯0)時(shí),優(yōu)先編碼工作狀態(tài)標(biāo)志GS為0。表明編碼器處于工作狀態(tài),否則為1。由功能表可知,在8個(gè)輸入端均無低電平輸入信號(hào)和只有輸入0端(優(yōu)先級(jí)別最低位)有低電平輸入時(shí),A2A1A0均為111,出現(xiàn)了輸入條件不同而輸出代碼相同的情況,這可由GS的狀態(tài)加以區(qū)別,當(dāng)GS=1時(shí),表示8個(gè)輸入端均無低電平輸入,此時(shí)A2A1A0=111為非編碼輸出;GS=0時(shí),A2A1A0=111表示響應(yīng)輸入0端為低電平時(shí)的輸出代碼(編碼輸出)。EO只有在EI為0,且所有輸入端都為1時(shí),輸出為0,它可與另一片同樣器件的EI連接,以便組成更多輸入端的優(yōu)先編碼器。從功能表不難看出,輸入優(yōu)先級(jí)別的次為7,6,??,0。輸入有效信號(hào)為低電平,當(dāng)某一輸入端有低電平輸入,且比它優(yōu)先級(jí)別高的輸入端無低電平輸入時(shí),輸出端才輸出相對(duì)應(yīng)的輸入端的代碼。小結(jié)

      本學(xué)期第十五周我們進(jìn)行了電子技術(shù)課程設(shè)計(jì),我們用一周的時(shí)間進(jìn)行了資料查找和實(shí)體設(shè)計(jì),然后認(rèn)真寫了設(shè)計(jì)說明。

      本電路由鎖存器,編碼器,數(shù)碼管等構(gòu)成,實(shí)現(xiàn)各項(xiàng)鎖存,清零等功能??偨Y(jié)如下: 優(yōu)點(diǎn):電路功能原理清晰,各項(xiàng)功能均達(dá)到了要求,顯示準(zhǔn)確,反 應(yīng)靈敏,無競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象,基本滿足了普通競(jìng)賽的搶答要求。缺點(diǎn):如果長(zhǎng)按住按鈕不放,主持人清零后將能獲得搶答權(quán)。改進(jìn):可以更改促發(fā)器的類型,如使用jk觸發(fā)器代替,則長(zhǎng)按無效,或者在搶答端添加一個(gè)發(fā)光二極管,當(dāng)有人作弊,二極管就會(huì)亮,從而阻止選手長(zhǎng)按按鈕的缺陷。心得體會(huì):通過這次課程設(shè)計(jì),我對(duì)于74L系列有了更深的了解,知道功能表后,一切芯片都能得心應(yīng)手。而且,知道了搶答器的設(shè)計(jì)方法,以后可以設(shè)計(jì)任何多人搶答器。同時(shí)實(shí)物的制作也提升了我的動(dòng)手能力,實(shí)踐能力得到了一定的鍛煉。在摸索該如何設(shè)計(jì)電路使之實(shí)現(xiàn)所需功能的過程中,培養(yǎng)了我的設(shè)計(jì)思維,增強(qiáng)了動(dòng)手能力。在改進(jìn)電路的過程中,同學(xué)們共同探討,最后的電路已經(jīng)比初期設(shè)計(jì)有了很大提高。在讓我體會(huì)到了設(shè)計(jì)電路的艱辛的同時(shí),更讓我體會(huì)到成功的喜悅和快樂,加深了我對(duì)設(shè)計(jì)方面的興趣。理論與實(shí)踐得到了很好的結(jié)合。參考文獻(xiàn)

      1.童師白,華成英.模擬電子技術(shù)基礎(chǔ),第三版.北京:高等教育版社,2001 2.閻石.數(shù)字電子技術(shù)基礎(chǔ),第四版.北京:高等教育版社,1998 3.呂思忠,《數(shù)子電路實(shí)驗(yàn)與課程設(shè)計(jì)》 哈爾濱工業(yè)大學(xué)出版社 4.鄭家龍,《集成電子技術(shù)基礎(chǔ)教程》 高等教育出版社 5.高吉祥《電子技術(shù)基礎(chǔ)實(shí)驗(yàn)與課程設(shè)計(jì)》 電子工業(yè)出版社 6.《數(shù)字電路應(yīng)用300例》 中國(guó)電力出版社

      第四篇:EDA4人搶答器設(shè)計(jì)報(bào)告

      四人搶答器

      一、設(shè)計(jì)任務(wù):

      l、設(shè)計(jì)用于競(jìng)賽的四人搶答器,功能如下:(1)有多路搶答器,臺(tái)數(shù)為四;

      (2)具有搶答開始后20秒倒計(jì)時(shí),20秒倒計(jì)時(shí)后無人搶答顯示超時(shí),并報(bào)警;(3)能顯示超前搶答臺(tái)號(hào)并顯示犯規(guī)警報(bào);(4)能顯示各路得分,并具有加、減分功能;

      2、系統(tǒng)復(fù)位后進(jìn)入搶答狀態(tài),當(dāng)有一路搶答鍵按下時(shí),該路搶答信號(hào)將其余各路搶答封鎖,同時(shí)鈴聲響,直至該路按鍵松開,顯示牌顯示該路搶答臺(tái)號(hào)。

      3、用VHDL語言設(shè)計(jì)符合上述功能要求的四人搶答器,并用層次設(shè)計(jì)方法設(shè)計(jì)該電路

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

      將該任務(wù)分成三個(gè)模塊進(jìn)行設(shè)計(jì),分別為:搶答器鑒別模塊、搶答器計(jì)時(shí)模塊、搶答器記分模塊,最后是撰寫頂層文件。

      1、搶答器鑒別模塊:

      在這個(gè)模塊中主要實(shí)現(xiàn)搶答過程中的搶答功能,并能對(duì)超前搶答進(jìn)行警告,還能記錄無論是正常搶答還是朝前搶答者的臺(tái)號(hào),并且能實(shí)現(xiàn)當(dāng)有一路搶答按鍵按下時(shí),該路搶答信號(hào)將其余個(gè)綠搶答封鎖的功能。其中有四個(gè)搶答信號(hào)a、b、c、d;搶答使能信號(hào)en;搶答狀態(tài)顯示信號(hào)states;警報(bào)時(shí)鐘信號(hào)clk2;系統(tǒng)復(fù)位信號(hào)rst;超前警報(bào)信號(hào)ring。

      2、搶答器計(jì)時(shí)模塊:

      在這個(gè)模塊中主要實(shí)現(xiàn)搶答過程中的計(jì)時(shí)功能,在有搶答開始后進(jìn)行20秒的倒計(jì)時(shí),并且在20秒倒計(jì)時(shí)后無人搶答顯示超時(shí)并報(bào)警。其中有搶答時(shí)鐘信號(hào)clk;系統(tǒng)復(fù)位信號(hào)rst;搶答使能信號(hào)en;搶答狀態(tài)顯示信號(hào)states;無人搶答警報(bào)信號(hào)warn;計(jì)時(shí)中止信號(hào)stop;計(jì)時(shí)十位個(gè)位信號(hào)tb,ta。

      3、搶答器記分模塊:

      在這個(gè)模塊中主要是給四個(gè)搶答信號(hào)記分,并給每個(gè)搶答信號(hào)預(yù)置5分,當(dāng)搶答并答對(duì)時(shí)加1分,答錯(cuò)減1分,沒有獲得搶答保持不變。其中有搶答時(shí)鐘信號(hào)clk;系統(tǒng)復(fù)位信號(hào)rst;搶答使能信號(hào)en;搶答狀態(tài)顯示信號(hào)states;記分加減信號(hào)add(add=‘1’時(shí)為加,add=‘0’時(shí)為減);四個(gè)信號(hào)的得分顯示信號(hào)a_out,b_out,c_out,d_out。

      4、頂層文件:

      在這個(gè)模塊中是對(duì)前三個(gè)模塊的綜合編寫的頂層文件。

      三、具體實(shí)施:

      1、本設(shè)計(jì)的實(shí)現(xiàn)電路圖:

      2、本設(shè)計(jì)的源程序:

      library ieee;--搶答鑒別模塊 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qdjb is

      port(clk2,en,rst:in std_logic;

      a,b,c,d:in std_logic;

      ring:out std_logic;

      states:out downto 0));end qdjb;architecture one of qdjb is signal sinor,ringf,tmp:std_logic;signal cnt:std_logic_vector(5 downto 0);begin sinor<=a or b or c or d;p1:process(a,rst,b,c,d,tmp)

      begin

      if rst='1' then

      tmp<='1';states<=“0000”;

      elsif tmp='1' then

      if a='1' then

      states<=“0001”;tmp<='0';

      elsif b='1' then

      states<=“0010”;tmp<='0';

      elsif c='1' then

      states<=“0011”;tmp<='0';

      elsif d='1' then

      states<=“0100”;tmp<='0';

      else tmp<='1';states<=“0000”;

      end if;

      end if;end process p1;p2rocess(clk2,en,rst,cnt)

      begin

      if rst='1' then

      cnt<=“000000”;ringf<='0';

      elsif clk2'event and clk2='1' then

      if en='0' and sinor='1' then

      if cnt<“111111” then

      ringf<=not ringf;cnt<=cnt+1;

      else ringf<='0';

      end if;

      end if;

      end if;end process p3;ring<=ringf;end one;

      library ieee;--搶答器計(jì)時(shí)模塊 use ieee.std_logic_1164.all;std_logic_vector(3 use ieee.std_logic_unsigned.all;entity js is

      port(clk,rst,en,stop:in std_logic;

      warn:buffer std_logic;

      ta,tb:buffer std_logic_vector(3 downto 0));end js;architecture one of js is signal co:std_logic;begin p1:process(clk,rst,en,stop,ta)

      begin

      if rst='1' or stop='1' then

      ta<=“0000”;

      elsif clk'event and clk='1' then

      co<='0';

      if en='1' then

      if ta=“0000” then

      ta<=“1001”;co<='1';

      else ta<=ta-1;

      end if;

      end if;

      end if;end process p1;p2:process(co,rst,en,stop,tb)

      begin

      if rst='1' or stop='1' then

      tb<=“0010”;

      elsif co'event and co='1' then

      if en='1' then

      if tb=“0000” then tb<=“0010”;

      else tb<=tb-1;

      end if;

      end if;

      end if;end process p2;p3:process(rst,ta,tb)

      begin

      if rst='1' then

      warn<='0';

      elsif ta=“0000” and tb=“0000” then

      warn<='1';

      else warn<='0';

      end if;end process p3;end one;

      library ieee;--搶答器記分模塊 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jf is

      port(clk,rst,en,add:in std_logic;

      states:in std_logic_vector(3 downto 0);

      a_out,b_out,c_out,d_out:buffer std_logic_vector(3 downto 0));end jf;

      architecture one of jf is begin

      p2:process(clk,rst,add,states,a_out,b_out,c_out,d_out)

      begin

      if(rst='1')then

      a_out<=“0101”;b_out<=“0101”;c_out<=“0101”;d_out<=“0101”;

      elsif en='1'then

      if clk'event and clk='1' then

      case states is

      when “0001”=>

      if add='1' then

      if a_out=“1111” then

      a_out<=“0000”;

      else a_out<=a_out+1;

      end if;

      elsif add='0' then

      if a_out=“0000” then

      a_out<=“0000”;

      else a_out<=a_out-1;

      end if;

      end if;

      when “0010”=>

      if add='1' then

      if b_out=“1111” then

      b_out<=“0000”;

      else b_out<=b_out+1;

      end if;

      elsif add='0' then

      if b_out=“0000” then

      b_out<=“0000”;

      else b_out<=b_out-1;

      end if;

      end if;

      when “0011”=>

      if add='1' then

      if c_out=“1111” then

      c_out<=“0000”;

      else c_out<=c_out+1;

      end if;

      elsif add='0' then

      if c_out=“0000” then

      c_out<=“0000”;

      else c_out<=c_out-1;

      end if;

      end if;

      when “0100”=>

      if add='1' then

      if d_out=“1111” then

      d_out<=“0000”;

      else d_out<=d_out+1;

      end if;

      elsif add='0' then

      if d_out=“0000” then

      d_out<=“0000”;

      else d_out<=d_out-1;

      end if;

      end if;

      when others=>

      a_out<=a_out;b_out<=b_out;c_out<=c_out;d_out<=d_out;

      end case;

      end if;

      end if;

      end process p2;end one;

      library ieee;--搶答器頂層文件 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qiangda is

      port(clk,clk2,en,a,b,c,d,add,stop,rst:in std_logic;

      ring,alarm:out std_logic;

      ta,tb:buffer std_logic_vector(3 downto 0);

      states:buffer std_logic_vector(3 downto 0);

      a_out,b_out,c_out,d_out:buffer std_logic_vector(3 downto 0));end qiangda;

      architecture bhv of qiangda is component qdjb is

      port(clk2,en,rst:in std_logic;

      a,b,c,d:in std_logic;

      ring:out std_logic;

      states:out std_logic_vector(3

      downto 0));end component;component js is

      port(clk,rst,en,stop:in std_logic;

      warn:buffer std_logic;

      ta,tb:buffer std_logic_vector(3 downto 0));end component;

      component jf is

      port(clk,rst,en,add:in std_logic;

      states:in downto 0);

      a_out,b_out,c_out,d_out:buffer std_logic_vector(3 downto 0));end component;signal cnt:std_logic_vector(3 downto 0);std_logic_vector(3

      begin

      u1:qdjb port map(clk2,en,rst,a,b,c,d,ring,states);u2:js port map(clk,rst,en,stop,alarm,ta,tb);u3:jf;end bhv;

      port

      map(clk,rst,en,add,states,a_out,b_out,c_out,d_out)

      四、結(jié)果分析:

      (一)、軟件分析:

      1、搶答器鑒別模塊:

      編譯報(bào)告:

      仿真結(jié)果:

      2、搶答器計(jì)時(shí)模塊:

      編譯報(bào)告:

      仿真結(jié)果:

      3、搶答器記分模塊:

      編譯報(bào)告:

      仿真結(jié)果:

      4、搶答器頂層模塊:

      編譯報(bào)告:

      仿真結(jié)果:

      頂層文件的RTL級(jí):

      管腳鎖定圖:

      (二)、硬件分析:

      五、參考文獻(xiàn):

      第五篇:基于FPGA的數(shù)字頻率計(jì)設(shè)計(jì)報(bào)告

      電子技術(shù)綜合試驗(yàn)實(shí)驗(yàn)報(bào)告

      班級(jí):測(cè)控一班

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

      姓名:李大帥 指導(dǎo)老師:李穎

      基于FPGA的數(shù)字頻率計(jì)設(shè)計(jì)報(bào)告

      一、系統(tǒng)整體設(shè)計(jì)

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

      1、被測(cè)輸入信號(hào):方波

      2、測(cè)試頻率范圍為:10Hz~100MHz

      3、量程分為三檔:第一檔:閘門時(shí)間為1S時(shí),最大讀數(shù)為999.999KHz

      第二檔:閘門時(shí)間為0.1S時(shí),最大讀數(shù)為9999.99KHz

      第三檔:閘門時(shí)間為0.01S時(shí),最大讀數(shù)為99999.9KHz。

      4、顯示工作方式:a、用六位BCD七段數(shù)碼管顯示讀數(shù)。

      b、采用記憶顯示方法

      c、實(shí)現(xiàn)對(duì)高位無意義零的消隱。

      系統(tǒng)設(shè)計(jì)原理:

      所謂“頻率”,就是周期性信號(hào)在單位時(shí)間(1秒)內(nèi)變化的次數(shù)。若在一定的時(shí)間間隔T內(nèi)計(jì)數(shù),計(jì)得某周期性信號(hào)的重復(fù)變化次數(shù)為N,則該信號(hào)的頻率可表達(dá)為:f = N / T.基于這一原理我們可以使用單位時(shí)間內(nèi)對(duì)被測(cè)信號(hào)進(jìn)行計(jì)數(shù)的方法求得對(duì)該信號(hào)的頻率測(cè)量,具體實(shí)現(xiàn)過程簡(jiǎn)述如下: 首先,將被測(cè)信號(hào)①(方波)加到閘門的輸入端。由一個(gè)高穩(wěn)定的石英振蕩器和一系列數(shù)字分頻器組成了時(shí)基信號(hào)發(fā)生器,它輸出時(shí)間基準(zhǔn)(或頻率基準(zhǔn))信號(hào)③去控制門控電路形成門控信號(hào)④,門控信號(hào)的作用時(shí)間T是非常準(zhǔn)確的(由石英振蕩器決定)。門控信號(hào)控制閘門的開與閉,只有在閘門開通的時(shí)間內(nèi),方波脈沖②才能通過閘門成為被計(jì)數(shù)的脈沖⑤由計(jì)數(shù)器計(jì)數(shù)。

      閘門開通的時(shí)間稱為閘門時(shí)間,其長(zhǎng)度等于門控信號(hào)作用時(shí)間T。比如,時(shí)間基準(zhǔn)信號(hào)的重復(fù)周期為1S,加到閘門的門控信號(hào)作用時(shí)間T亦準(zhǔn)確地等于1S,即閘門的開通時(shí)間——“閘門時(shí)間”為1S。在這一段時(shí)間內(nèi),若計(jì)數(shù)器計(jì)得N=100000個(gè)數(shù),根據(jù)公式f = N / T,那么被測(cè)頻率就是100000Hz。如果計(jì)數(shù)式頻率計(jì)的顯示器單位為“KHz”,則顯示100.000KHz,即小數(shù)點(diǎn)定位在第三位。不難設(shè)想,若將閘門時(shí)間設(shè)為T=0.1S,則計(jì)數(shù)值為10000,這時(shí),顯示器的小數(shù)點(diǎn)只要根據(jù)閘門時(shí)間T的改變也隨之自動(dòng)往右移動(dòng)一位(自動(dòng)定位),那么,顯示的結(jié)果為100.00Khz。在計(jì)數(shù)式數(shù)字頻率計(jì)中,通過選擇不同的閘門時(shí)間,可以改變頻率計(jì)的測(cè)量范圍和測(cè)量精度。

      系統(tǒng)單元模塊劃分: 1)分頻器,將產(chǎn)生用于計(jì)數(shù)控制的時(shí)鐘分別為1HZ,10HZ,100HZ脈沖和1KHZ的用于七段顯示數(shù)碼管掃描顯示的掃描信號(hào)。

      2)閘門選擇器,用于選擇不同的閘門時(shí)間以及產(chǎn)生后續(xù)的小數(shù)點(diǎn)的顯示位置。3)門控電路,產(chǎn)生用于計(jì)數(shù)的使能控制信號(hào),清零信號(hào)以及鎖存器鎖存信號(hào)。4)計(jì)數(shù)器,用于對(duì)輸入的待測(cè)信號(hào)進(jìn)行脈沖計(jì)數(shù),計(jì)數(shù)輸出。

      5)鎖存器,用于對(duì)計(jì)數(shù)器輸出數(shù)據(jù)的鎖存,便于后續(xù)譯碼顯示電路的對(duì)數(shù)據(jù)進(jìn)行記憶顯示,同時(shí)避免計(jì)數(shù)器清零信號(hào)對(duì)數(shù)據(jù)產(chǎn)生影響。

      6)譯碼顯示,用于產(chǎn)生使七段顯示數(shù)碼管的掃描數(shù)字顯示,小數(shù)點(diǎn)顯示的輸出信號(hào),同時(shí)對(duì)高位的無意義零進(jìn)行消隱。

      二、單元電路設(shè)計(jì)

      1、分頻器:

      該電路將產(chǎn)生四個(gè)不同頻率的信號(hào)輸出,因?yàn)殡娐钒迳辖o出了一個(gè)48MHZ的晶振,所以我們只需要對(duì)48MHZ的信號(hào)進(jìn)行適當(dāng)分頻即可得到我們所需的四個(gè)不同頻率的信號(hào)輸出,我們?cè)O(shè)計(jì)一個(gè)輸入為48MHZ,有四個(gè)輸出端分別為1HZ,10HZ和100HZ,1KHZ的分頻器,原程序如下:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity fenpinqi is Port(clk : in STD_LOGIC;clkout1 : out STD_LOGIC;clkout10 : out STD_LOGIC;clkout100 : out STD_LOGIC;clkout1K : out STD_LOGIC);end fenpinqi;

      architecture Behavioral of fenpinqi is signal cnt1:integer range 1 to 24000000;signal cnt10:integer range 1 to 2400000;signal cnt100:integer range 1 to 240000;signal cnt1K:integer range 1 to 24000;signal c1:std_logic;signal c2:std_logic;signal c3:std_logic;signal c4:std_logic;begin process(clk)is begin if clk'event and clk='1' then if cnt1<24000000 then

      --對(duì)cnt1進(jìn)行計(jì)數(shù),當(dāng)cnt1未計(jì)滿后對(duì)其進(jìn)行加1 cnt1<=cnt1+1;elsif cnt1=24000000 then

      --cnt1計(jì)滿后對(duì)其進(jìn)行賦一,并且令c1進(jìn)行翻轉(zhuǎn),然后將c1的值賦給clkout1

      c1<=not c1;--由于48MHZ的的信號(hào),前一半的時(shí)候c1為0,則后一半是為1,就完成了對(duì)信號(hào)進(jìn)行分頻,產(chǎn)生了1HZ的信號(hào) cnt1<=1;end if;end if;end process;process(clk)is begin if clk'event and clk='1' then--方法同上

      if cnt10<2400000 then cnt10<=cnt10+1;elsif cnt10=2400000 then c2<=not c2;

      cnt10<=1;

      end if;end if;end process;

      process(clk)is begin

      if clk'event and clk='1' then

      --方法同上

      if cnt100<240000 then

      cnt100<=cnt100+1;

      elsif cnt100=240000 then

      c3<=not c3;

      cnt100<=1;

      end if;end if;end process;

      process(clk)is begin

      if clk'event and clk='1' then

      --方法同上

      if cnt1K<24000000 then

      cnt1K<=cnt1K+1;

      elsif cnt1=24000 then

      c4<=not c4;

      cnt1K<=1;

      end if;end if;end process;clkout1<=c1;clkout10<=c2;clkout100<=c3;clkout1K<=c4;end Behavioral;源文件編寫成功后編譯并生成圖形文件符號(hào)如圖:仿真文件編寫如下:

      LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;

      ENTITY tbb_vhd IS END tbb_vhd;ARCHITECTURE behavior OF tbb_vhd IS COMPONENT fenpinqi 4

      BEGIN

      END;uut: fenpinqi PORT MAP(clk => clk,clkout1 => clkout1, clkout10 => clkout10, clkout100 => clkout100, clkout1K => clkout1K);PORT(clk : IN std_logic;

      clkout1 : OUT std_logic;clkout10 : OUT std_logic;clkout100 : OUT std_logic;clkout1K : OUT std_logic);END COMPONENT;SIGNAL clk : std_logic := '0';SIGNAL clkout1 : std_logic;SIGNAL clkout10 : std_logic;SIGNAL clkout100 : std_logic;SIGNAL clkout1K : std_logic;tb : PROCESS BEGIN

      clk<='0';wait for 10 ps;clk<='1';wait for 10 ps;END PROCESS;對(duì)該模塊進(jìn)行仿真結(jié)果如下:

      有上圖可知分頻器工作正常,產(chǎn)生的個(gè)信號(hào)也沒有毛刺,結(jié)果十分理想。

      2、閘門選擇器:

      在這個(gè)模塊中我們有四個(gè)輸出端和六個(gè)輸入端,其中四個(gè)輸出端中有一個(gè)是頻率輸出端,是通過三個(gè)閘門選擇開關(guān)輸入和三個(gè)輸入頻率決定的,另外三個(gè)輸出端則是用來后面的小數(shù)點(diǎn)控制的,而六個(gè)輸入端中的三個(gè)是上面分頻器的三個(gè)輸出1HZ,10HZ和100HZ,另外三個(gè)是電路板上的撥動(dòng)開關(guān),用來選擇閘門,控制輸出。其原程序和分析如下:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      entity SELE is Port(SE1 : in STD_LOGIC;

      SE10 : in STD_LOGIC;SE100 : in STD_LOGIC;F1HZ : IN STD_LOGIC;F10HZ : IN STD_LOGIC;F100HZ :IN STD_LOGIC;FREF : out STD_LOGIC;DP1 : out STD_LOGIC;DP2 : out STD_LOGIC;DP3 : out STD_LOGIC);end SELE;architecture Behavioral of SELE is begin PROCESS(SE1,SE10,SE100)IS BEGIN IF SE1='1' AND SE10='0' AND SE100='0' THEN

      FREF<=F1HZ;--當(dāng)閘門控制在第一檔的時(shí)候,令輸出端輸出1HZ輸入端的輸入,小數(shù)點(diǎn)控制dp1有效,dp2,dp3無效

      DP1<='0';

      DP2<='1';DP3<='1';END IF;IF SE1='0' AND SE10='1' AND SE100='0' THEN

      FREF<=F10HZ;

      --第二檔,輸出為10HZ,dp2有效

      DP1<='1';

      DP2<='0';DP3<='1';END IF;IF SE1='0' AND SE10='0' AND SE100='1' THEN

      FREF<=F100HZ;

      --第三檔,輸出為100HZ,dp3有效

      DP1<='1';

      DP2<='1';DP3<='0';END IF;END PROCESS;end Behavioral;源代碼編寫完成后保存并生成圖形文件符號(hào)如圖:

      仿真文件編寫如下:

      LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;

      ENTITY TTB_vhd IS END TTB_vhd;ARCHITECTURE behavior OF TTB_vhd IS COMPONENT SELE

      PORT(SE1 : IN std_logic;

      SE10 : IN std_logic;

      SE100 : IN std_logic;

      F1HZ : IN std_logic;

      F10HZ : IN std_logic;

      F100HZ : IN std_logic;

      FREF : OUT std_logic;

      DP1 : OUT std_logic;

      DP2 : OUT std_logic;DP3 : OUT std_logic);END COMPONENT;SIGNAL SE1 : std_logic := '1';SIGNAL SE10 : std_logic := '0';SIGNAL SE100 : std_logic := '0';SIGNAL F1HZ : std_logic := '0';SIGNAL F10HZ : std_logic := '0';SIGNAL F100HZ : std_logic := '0';SIGNAL FREF : std_logic;SIGNAL DP1 : std_logic;SIGNAL DP2 : std_logic;SIGNAL DP3 : std_logic;BEGIN uut: SELE PORT MAP(SE1 => SE1,SE10 => SE10,SE100 => SE100,F(xiàn)1HZ => F1HZ,F(xiàn)10HZ => F10HZ,F(xiàn)100HZ => F100HZ,F(xiàn)REF => FREF,DP1 => DP1,DP2 => DP2, DP3 => DP3);

      tb : PROCESS BEGIN

      F1HZ<='0';FREF<='0';

      wait for 100 ns;

      F1HZ<='1';FREF<='1';WAIT FOR 100 NS;END PROCESS;END;仿真結(jié)果如圖:

      有仿真結(jié)果可知閘門選擇器工作正常,能夠準(zhǔn)確輸出我們所需的信號(hào)。

      3、門控信號(hào):

      在此模塊中有一個(gè)輸入端和兩個(gè)輸出端,輸入端為上面的閘門選擇器輸出的頻率,兩個(gè)輸出端分別為計(jì)數(shù)器是能控制信號(hào)(鎖存器控制信號(hào)),和計(jì)數(shù)器清零信號(hào)。具體源程序即分析如下:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      entity CONTROLS is Port(FREF : in STD_LOGIC;GAT : out STD_LOGIC;CLR : out STD_LOGIC);end CONTROLS;

      architecture Behavioral of CONTROLS is SIGNAL G1: STD_LOGIC:='0';begin

      PROCESS(FREF)IS

      BEGIN IF FREF'EVENT AND FREF='1' THEN G1<=NOT G1;--該過程對(duì)時(shí)鐘信號(hào)又一次進(jìn)行分頻,產(chǎn)生出半個(gè)周期時(shí)間為1的控制信號(hào),作為計(jì)數(shù)使能,保證了時(shí)間的準(zhǔn)確性

      END IF;END PROCESS;PROCESS(FREF,G1)IS

      BEGIN IF FREF='0' AND G1='0' THEN CLR<='1';--該過程產(chǎn)生清零信號(hào),即當(dāng)使能信號(hào)為無效0同時(shí)時(shí)鐘為0時(shí),即在技術(shù)始終無效半個(gè)時(shí)鐘時(shí)間后,對(duì)計(jì)數(shù)器清零

      --清零信號(hào)高電平有效 ELSE CLR<='0';END IF;END PROCESS;GAT<=G1;--將G1賦給gat輸出端,它是計(jì)數(shù)器的使能信號(hào)同時(shí)也是鎖存器的鎖存信號(hào)

      end Behavioral;源文件編寫完成后保存編譯并生成圖形文件符號(hào)如圖:

      仿真文件代碼如下:

      LIBRARY ieee;8

      USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;

      ENTITY TBCON_vhd IS END TBCON_vhd;ARCHITECTURE behavior OF TBCON_vhd IS

      BEGIN

      END;tb : PROCESS BEGIN

      FREF<='0';WAIT FOR 100 NS;FREF<='1';WAIT FOR 100 NS;uut: CONTROLS PORT MAP(FREF => FREF, GAT => GAT, CLR => CLR);COMPONENT CONTROLS PORT(FREF : IN std_logic;

      GAT : OUT std_logic;CLR : OUT std_logic);END COMPONENT;SIGNAL FREF : std_logic := '0';SIGNAL GAT : std_logic;SIGNAL CLR : std_logic;END PROCESS;對(duì)上面的文件進(jìn)行仿真,結(jié)果如下:

      由上圖的仿真結(jié)果可知,控制電路工作正常,輸出信號(hào)穩(wěn)定,很理想。同時(shí)我們也可以看出來該模塊對(duì)分頻器的時(shí)鐘輸出的穩(wěn)定性依賴十分嚴(yán)重,一旦分頻器輸出時(shí)鐘有毛刺,該控制信號(hào)將會(huì)完全的無效,這也是為什么我知道上面的分頻器設(shè)計(jì)不是最優(yōu)的方案,卻還是采用了上述方法的原因。

      4、計(jì)數(shù)器:

      該模塊實(shí)現(xiàn)的功能是對(duì)輸入信號(hào)脈沖的計(jì)數(shù),并正確的輸出結(jié)果和溢出。使用上面的門控信號(hào)產(chǎn)生的gat信號(hào)控制計(jì)數(shù)器的使能端,以實(shí)現(xiàn)計(jì)數(shù)器的定時(shí)計(jì)數(shù)。該模塊是使用六個(gè)十進(jìn)制計(jì)數(shù)器同步并聯(lián)而成的,首先我們?cè)O(shè)計(jì)用于并聯(lián)的十進(jìn)制計(jì)數(shù)器,原程序如下:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;9

      entity CNT10 is Port(CLK : in STD_LOGIC;CLR : in STD_LOGIC;

      ENA : in STD_LOGIC;CQ : out STD_LOGIC_VECTOR(3 downto 0);CO : out STD_LOGIC);end CNT10;

      architecture Behavioral of CNT10 is SIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0):=“0000”;

      --定義中間信號(hào)CQI,用于數(shù)據(jù)輸出的循環(huán)計(jì)數(shù)

      begin

      PROCESS(CLK,CLR)IS

      end Behavioral;

      BEGIN IF CLR='1' THEN CQI<=“0000”;

      --當(dāng)CLR清零信號(hào)有效時(shí)使輸出為0000,無效時(shí)進(jìn)行下述操作--對(duì)時(shí)鐘進(jìn)行計(jì)數(shù) ELSIF CLK'EVENT AND CLK='1' THEN

      IF ENA='1' THEN

      --判斷使能信號(hào),有效則進(jìn)行計(jì)數(shù),否則不作處理

      --數(shù)據(jù)0~9循環(huán),計(jì)滿后重新回到0 IF CQI=“1001” THEN CQI<=“0000”;ELSE CQI<=CQI+'1';END IF;END IF;END IF;END PROCESS;CO <= '1' when ena = '1' and cqi = 9 else '0';CQ<=CQI;

      --進(jìn)位信號(hào),最高位的僅為信號(hào)作為計(jì)數(shù)的溢出信號(hào)

      --當(dāng)且僅當(dāng)使能有效且計(jì)數(shù)為9時(shí)產(chǎn)生進(jìn)位信號(hào),進(jìn)位信號(hào)1有效,同步并聯(lián)時(shí)連高位的使能端

      文件編寫完成后保存編譯生成圖形文件符號(hào),如上圖:

      創(chuàng)建圖形文件cnt6并按照下圖進(jìn)行連接,保存后編譯生成圖形文件符號(hào)如圖:

      仿真文件代碼如下:

      LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;

      ENTITY TBCNT10_vhd IS END TBCNT10_vhd;ARCHITECTURE behavior OF TBCNT10_vhd IS

      COMPONENT CNT10 PORT(CLK : IN std_logic;

      CLR : IN std_logic;ENA : IN std_logic;CQ : OUT std_logic_vector(3 downto 0);CO : OUT std_logic);END COMPONENT;SIGNAL CLK : std_logic := '0';SIGNAL CLR : std_logic := '0';SIGNAL ENA : std_logic := '1';SIGNAL CQ : std_logic_vector(3 downto 0);SIGNAL CO : std_logic;BEGIN

      END;tb : PROCESS BEGIN

      CLK<='0';wait for 100 ns;CLK<='1';WAIT FOR 100 NS;uut: CNT10 PORT MAP(CLK => CLK, CLR => CLR, ENA => ENA, CQ => CQ, CO => CO);END PROCESS;仿真結(jié)果如圖:

      如仿真結(jié)果我們可以看出,該模塊運(yùn)行正常,計(jì)數(shù)穩(wěn)定,結(jié)果十分理想。

      5、鎖存器:

      由于前面的計(jì)數(shù)器的輸出為六組四位二進(jìn)制數(shù)和一個(gè)溢出信號(hào),所以我們使用的鎖存器也使用六個(gè)四位鎖存器和一個(gè)一位鎖存器。鎖存器使用下降沿鎖存,即當(dāng)計(jì)數(shù)器的使能信號(hào)變?yōu)闊o效的一瞬間我們令鎖存器將數(shù)據(jù)鎖存。四位鎖存器的原代碼如下:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity LATCH4 is Port(CLK : in STD_LOGIC;DIN : in STD_LOGIC_VECTOR(3 downto 0);QOU : out STD_LOGIC_VECTOR(3 downto 0));end LATCH4;architecture Behavioral of LATCH4 is begin

      PROCESS(CLK,DIN)IS

      BEGIN

      IF CLK'EVENT AND CLK='0' THEN--當(dāng)時(shí)鐘信號(hào)下降沿時(shí),實(shí)現(xiàn)鎖存

      QOU<=DIN;

      END IF;END PROCESS;end Behavioral;上述文件編寫完成后保存編譯生成圖形文件符號(hào)如圖: 再編寫一位鎖存器,源程序代碼如下:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity LATCH1 is Port(CLK : in STD_LOGIC;DIN : in STD_LOGIC_VECTOR;QOU : out STD_LOGIC_VECTOR);end LATCH1;architecture Behavioral of LATCH1 is begin

      PROCESS(CLK,DIN)IS

      BEGIN

      IF CLK'EVENT AND CLK='0' THEN--當(dāng)時(shí)鐘信號(hào)下降沿時(shí),實(shí)現(xiàn)鎖存

      QOU<=DIN;

      END IF;END PROCESS;end Behavioral;

      文件編寫完成后保存編譯生成圖形文件符號(hào),如圖:

      鎖存完成后有六組四位二進(jìn)制數(shù)和一個(gè)一位二進(jìn)制數(shù),所以我們隊(duì)總線進(jìn)行了合并,即將六組四位數(shù)合并成一個(gè)二十四位數(shù),合并程序如下:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      entity ADVOCATES is Port(S0 : in STD_LOGIC_VECTOR(3 downto 0);S1 : in STD_LOGIC_VECTOR(3 downto 0);S2 : in STD_LOGIC_VECTOR(3 downto 0);S3 : in STD_LOGIC_VECTOR(3 downto 0);S4 : in STD_LOGIC_VECTOR(3 downto 0);S5 : in STD_LOGIC_VECTOR(3 downto 0);S6 : out STD_LOGIC_VECTOR(23 downto 0));

      end ADVOCATES;

      architecture Behavioral of ADVOCATES is

      begin S6(23 DOWNTO 20)<=S0;S6(19 DOWNTO 16)<=S1;S6(15 DOWNTO 12)<=S2;S6(11 DOWNTO 8)<=S3;S6(7 DOWNTO 4)<=S4;S6(3 DOWNTO 0)<=S5;end Behavioral;--將總線的對(duì)應(yīng)位進(jìn)行連接

      文件編寫完成后保存編譯生成圖形文件符號(hào),如圖:

      創(chuàng)建該模塊的頂層圖形文件LAT.sch將上述個(gè)文件按照如圖所示連接,保存編譯生成圖形文件符號(hào)如圖:

      該模塊的輸入輸出簡(jiǎn)單,無需仿真。

      6、譯碼顯示:

      該模塊實(shí)現(xiàn)的是對(duì)鎖存器鎖存的數(shù)據(jù)進(jìn)行處理并顯示輸出,以及小數(shù)點(diǎn)的不同閘門的輸出顯示,以及電路板上七段顯示譯碼管的掃描信號(hào)輸出。其中對(duì)鎖存數(shù)據(jù)的處理包括溢出有效時(shí)的數(shù)據(jù)消除,和對(duì)高位無意義零的自動(dòng)消隱。首先我們編寫小數(shù)點(diǎn)控制的源文件代碼:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      entity POINTCON is Port(SE1 : in STD_LOGIC;SE10 : in STD_LOGIC;SE100 : in STD_LOGIC;SEL : in STD_LOGIC_VECTOR(2 downto 0);DP : out STD_LOGIC);end POINTCON;

      architecture Behavioral of POINTCON is begin

      PROCESS(SE1,SE10,SE100,SEL)IS

      BEGIN

      IF SE1='1' AND SE10='0' AND SE100='0' AND SEL=“011” THEN DP<='0';

      --當(dāng)為第一檔時(shí),令第四位的數(shù)碼管的小數(shù)點(diǎn)點(diǎn)亮,其他的不亮

      ELSIF SE1='0' AND SE10='1' AND SE100='0' AND SEL=“010” THEN DP<='0';

      --第二檔時(shí),第三位的數(shù)碼管小數(shù)點(diǎn)點(diǎn)亮

      ELSIF SE1='0' AND SE10='0' AND SE100='1' AND SEL=“001” THEN DP<='0';

      --第三檔時(shí),第二位的小數(shù)點(diǎn)點(diǎn)亮--不符合上述三檔時(shí),小數(shù)點(diǎn)全部消隱 ELSE DP<='1';END IF;END PROCESS;end Behavioral;編寫完成后保存編譯生成圖形文件符號(hào)如圖:

      再編寫用于數(shù)碼管掃描顯示的的位選信號(hào)生成文件,其代碼如下:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      entity CTRLS is Port(CLK : in STD_LOGIC;SEL : out STD_LOGIC_VECTOR(2 downto 0));end CTRLS;

      architecture Behavioral of CTRLS is SIGNAL CNT: STD_LOGIC_VECTOR(2 DOWNTO 0):=“000”;begin PROCESS(CLK)IS 14

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

      --接入1KHZ的時(shí)鐘信號(hào),使CNT進(jìn)行循環(huán)計(jì)數(shù),從000到101

      IF CNT=”101” THEN CNT<=”000”;--計(jì)滿則清零,不滿則加一

      ELSE CNT<=CNT+’1’;END IF;END IF;END PROCESS;SEL<=CNT;--將CNT信號(hào)賦給SEL輸出

      end Behavioral;文件編寫完成后保存編譯生成圖形文件符號(hào)如圖:

      再編寫使高位無意義零自動(dòng)消隱功能的的文件,源程序代碼如下:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      entity DSELE is Port(DP1: IN STD_LOGIC;DP2: IN STD_LOGIC;DIN : in STD_LOGIC_VECTOR(23 downto 0);QOU : out STD_LOGIC_VECTOR(23 downto 0));end DSELE;architecture Behavioral of DSELE is begin PROCESS(DP1,DP2,DIN)IS

      BEGIN

      IF DP1='0' AND DP2='1' THEN

      IF DIN(23 DOWNTO 20)=“0000” THEN

      QOU(23 DOWNTO 20)<=“1111”;

      QOU(19 DOWNTO 0)<=DIN(19 DOWNTO 0);

      END IF;

      IF DIN(23 DOWNTO 20)=“0000” AND DIN(19 DOWNTO 16)=“0000” THEN

      QOU(23 DOWNTO 20)<=“1111”;

      QOU(19 DOWNTO 16)<=“1111”;

      QOU(15 DOWNTO 0)<=DIN(15 DOWNTO 0);

      END IF;

      END IF;

      IF DP1='1' AND DP2='0' THEN

      IF DIN(23 DOWNTO 20)=“0000” THEN

      QOU(23 DOWNTO 20)<=“1111”;

      QOU(19 DOWNTO 0)<=DIN(19 DOWNTO 0);

      END IF;

      IF DIN(23 DOWNTO 20)=“0000” AND DIN(19 DOWNTO 16)=“0000” THEN

      QOU(23 DOWNTO 20)<=“1111”;QOU(19 DOWNTO 16)<=“1111”;

      THEN

      QOU(23 DOWNTO 20)<=“1111”;QOU(19 DOWNTO 16)<=“1111”;QOU(15 DOWNTO 12)<=“1111”;QOU(11 DOWNTO 8)<=“1111”;QOU(7 DOWNTO 0)<=DIN(7 DOWNTO 0);

      QOU(15 DOWNTO 0)<=DIN(15 DOWNTO 0);END IF;IF DIN(23 DOWNTO 20)=“0000” AND DIN(19 DOWNTO 16)=“0000” AND DIN(15 DOWNTO 12)=“0000” THEN

      QOU(23 DOWNTO 20)<=“1111”;QOU(19 DOWNTO 16)<=“1111”;QOU(15 DOWNTO 12)<=“1111”;QOU(11 DOWNTO 0)<=DIN(11 DOWNTO 0);END IF;END IF;IF DP1='1' AND DP2='1' THEN

      IF DIN(23 DOWNTO 20)=“0000” THEN QOU(23 DOWNTO 20)<=“1111”;QOU(19 DOWNTO 0)<=DIN(19 DOWNTO 0);END IF;IF DIN(23 DOWNTO 20)=“0000” AND DIN(19 DOWNTO 16)=“0000” THEN

      QOU(23 DOWNTO 20)<=“1111”;QOU(19 DOWNTO 16)<=“1111”;QOU(15 DOWNTO 0)<=DIN(15 DOWNTO 0);END IF;IF DIN(23 DOWNTO 20)=“0000” AND DIN(19 DOWNTO 16)=“0000” AND DIN(15 DOWNTO 12)=“0000” THEN

      QOU(23 DOWNTO 20)<=“1111”;QOU(19 DOWNTO 16)<=“1111”;QOU(15 DOWNTO 12)<=“1111”;QOU(11 DOWNTO 0)<=DIN(11 DOWNTO 0);END IF;IF DIN(23 DOWNTO 20)=“0000” AND DIN(19 DOWNTO 16)=“0000” AND DIN(15 DOWNTO 12)=“0000” AND DIN(11 DOWNTO 8)=“0000” END IF;END IF;END PROCESS;end Behavioral;該段代碼的編寫的主要原理是首先判斷小數(shù)點(diǎn)的位置,然后對(duì)小數(shù)點(diǎn)前的高位數(shù)從高到低依次進(jìn)行判斷,如果高位為零則將數(shù)據(jù)取反,在后續(xù)譯碼中將不再顯示,從而實(shí)現(xiàn)高位無意義零的自動(dòng)消隱。代碼編寫完成后保存編譯生成圖形文件符號(hào)如上圖: 然后我們編寫數(shù)據(jù)顯示輸出文件,代碼如下:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      entity DISPLAY1 is 16

      Port(SEL : in STD_LOGIC_VECTOR(2 downto 0);

      OVERIN : IN STD_LOGIC;

      DATAIN : in STD_LOGIC_VECTOR(23 downto 0);SEG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END DISPLAY1;

      architecture Behavioral of DISPLAY1 is SIGNAL DATA: STD_LOGIC_VECTOR(3 DOWNTO 0):=“0000”;BEGIN PROCESS(SEL,OVERIN)IS

      BEGIN

      CASE SEL IS

      --對(duì)位選信號(hào)進(jìn)行判斷,對(duì)應(yīng)每一位分別提取數(shù)據(jù)中的不同位置的數(shù)據(jù)賦給中間信號(hào)DATA

      WHEN “000”=>DATA<=DATAIN(3 DOWNTO 0);

      WHEN “001”=>DATA<=DATAIN(7 DOWNTO 4);

      WHEN “010”=>DATA<=DATAIN(11 DOWNTO 8);

      WHEN “011”=>DATA<=DATAIN(15 DOWNTO 12);

      WHEN “100”=>DATA<=DATAIN(19 DOWNTO 16);

      WHEN “101”=>DATA<=DATAIN(23 DOWNTO 20);

      WHEN OTHERS=>DATA<=“0000”;

      END CASE;

      CASE DATA IS

      --對(duì)中間信號(hào)DATA進(jìn)行譯碼,SEG為數(shù)碼管的數(shù)據(jù)顯示輸出,從而使不同位置上有不同的數(shù)字顯示

      WHEN “0000”=>SEG<=“1000000”;

      WHEN “0001”=>SEG<=“1111001”;

      WHEN “0010”=>SEG<=“0100100”;

      WHEN “0011”=>SEG<=“0110000”;

      WHEN “0100”=>SEG<=“0011001”;

      WHEN “0101”=>SEG<=“0010010”;

      WHEN “0110”=>SEG<=“0000010”;

      WHEN “0111”=>SEG<=“1111000”;

      WHEN “1000”=>SEG<=“0000000”;

      WHEN “1001”=>SEG<=“0010000”;

      WHEN OTHERS=>SEG<=“1111111”;

      END CASE;

      if OVERIN='1' THEN

      --判斷溢出,若溢出則令輸出全部不顯示

      SEG<=“1111111”;END IF;END PROCESS;end Behavioral;代碼編寫完成后保存編譯生成圖形文件符號(hào)如圖:

      建立該模塊的頂層圖形文件DISPLAY.sch,按照下圖連接各元件,保存編譯生成圖形文件符號(hào)如下圖:17

      該模塊的輸入數(shù)據(jù)量太大難以仿真,故這里只對(duì)其中的掃描信號(hào)生成文件進(jìn)行仿真,仿真文件代碼如下:

      LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;

      ENTITY TBCTRLS_vhd IS END TBCTRLS_vhd;ARCHITECTURE behavior OF TBCTRLS_vhd IS

      BEGIN

      END;uut: CTRLS PORT MAP(CLK => CLK, SEL => SEL);COMPONENT CTRLS PORT(CLK : IN std_logic;

      SEL : OUT std_logic_vector(2 downto 0));END COMPONENT;SIGNAL CLK : std_logic := '0';SIGNAL SEL : std_logic_vector(2 downto 0);tb : PROCESS BEGIN

      CLK<='0';WAIT FOR 100 NS;CLK<='1';WAIT FOR 100 NS;END PROCESS;結(jié)果如下:

      有仿真結(jié)果我們可以看出程序運(yùn)行正常,邏輯上沒有任何問題。至此所有的單元電路全部完成。

      三、設(shè)計(jì)實(shí)現(xiàn)

      1、頂層文件:

      創(chuàng)建圖形文件FRYALL.sch,按照下圖連接各模塊生成的圖形文件符號(hào),完成后保存編譯。

      2、管腳分配:

      由系統(tǒng)的頂層文件可以看到該系統(tǒng)的輸入端共有5個(gè),輸出端有11個(gè),管腳分配文件FRYALL.ucf如下:

      NET “CLKIN” LOC = T8;NET “DCLK” LOC = C16;NET “DP” LOC = C11;NET “NECT” LOC = D7;NET “SE1” LOC = L6;NET “SE10” LOC = N5;NET “SE100” LOC = L7;NET “SEG<0>” LOC = B14;NET “SEG<1>” LOC = A13;NET “SEG<2>” LOC = C13;NET “SEG<3>” LOC = C12;NET “SEG<4>” LOC = A12;NET “SEG<5>” LOC = B12;NET “SEG<6>” LOC = A11;NET “SEL<0>” LOC = F8;NET “SEL<1>” LOC = D8;NET “SEL<2>” LOC = E7;19

      3、下載過程:

      光標(biāo)移至【Generate Programing File】后單擊鼠標(biāo)右鍵,然后單擊【Properties】在打開的對(duì)話框的左側(cè)欄選中【Configuration Options】將右側(cè)的Unused IOB Pins這一項(xiàng)改為Pull Up,單擊OK。在界面的左下角雙擊【 Generate Programing File】,軟件將自動(dòng)對(duì)整個(gè)系統(tǒng)進(jìn)行編譯并生成可執(zhí)行文件FRYALL.bit。將彈出的對(duì)話框關(guān)掉,雙擊【 Generate Prom, ACE,or JTAG File】在彈出的對(duì)話框中點(diǎn)擊Finish,在隨后出現(xiàn)的對(duì)話框中選擇FRYALL.bit,然后點(diǎn)擊打開,在隨后的對(duì)話框中點(diǎn)擊Bypass。右鍵單擊左邊圖標(biāo)選擇Program,在隨后的對(duì)話框中單擊OK,文件將自動(dòng)下載到開發(fā)板上,成功后,接入函數(shù)發(fā)生器進(jìn)行測(cè)試。

      四、測(cè)試結(jié)果及結(jié)論

      經(jīng)過了前三步,最后我們將所完成的工程下載到了板子上,連接好函數(shù)發(fā)生器,并設(shè)定好了函數(shù)發(fā)生器的輸出信號(hào)電平(5Vpp),就可以進(jìn)行使用了。

      最后結(jié)果顯示程序工作正常,讀數(shù)清晰穩(wěn)定,完全符合開始時(shí)的要求。

      誤差分析:

      我將函數(shù)發(fā)生器的頻率調(diào)節(jié)到999,999HZ時(shí),頻率計(jì)不顯示,即產(chǎn)生了計(jì)數(shù)溢出,然后我進(jìn)行了進(jìn)一步的調(diào)節(jié),將函數(shù)發(fā)生器的頻率調(diào)節(jié)到999,997時(shí)讀書顯示為999.999,單位為KHZ。由此可知相對(duì)誤差為±0.0002%,誤差很小。所以本次實(shí)驗(yàn)圓滿成功。

      通過對(duì)數(shù)字頻率計(jì)的設(shè)計(jì)實(shí)現(xiàn),我深入的學(xué)習(xí)了ise軟件的使用,VHDL語言的編寫規(guī)范,語法結(jié)構(gòu)等。在本次試驗(yàn)中我回顧了在《數(shù)字電路》課程中學(xué)過的關(guān)于數(shù)字電路的設(shè)計(jì)的部分,了解了VHDL和Verilog語言的區(qū)別與聯(lián)系,以及它們的優(yōu)缺點(diǎn),以及它們主要針對(duì)的設(shè)計(jì)對(duì)象。我覺得我通過本次試驗(yàn)學(xué)會(huì)了很多。

      下載FPGA搶答器設(shè)計(jì)報(bào)告word格式文檔
      下載FPGA搶答器設(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)范文推薦

        DIY八路搶答器設(shè)計(jì)報(bào)告總結(jié)

        課程設(shè)計(jì)報(bào)告 一、課題名稱 設(shè)計(jì)題目八路搶答器設(shè)計(jì)I 數(shù)字八路搶答器 二、設(shè)計(jì)任務(wù) 1、設(shè)計(jì)一個(gè)八路搶答器,要求具有搶答功能,電路基本要求內(nèi)含蜂鳴器、顯示器等; 2、畫出搶答......

        4路搶答器設(shè)計(jì)程序

        #include unsigned char code table={0xc0,0xf9,0xa4,0xb0, //0~f顯示表 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; unsigned char code tab......

        基于aduino的搶答器設(shè)計(jì)

        /*QIANG DA QI disigned by ckj2012/12/8*/ int d[4]={7,12,2,6};//shuju boolean ds[4]={0,0,0,0};//si ge jie kou de shujuint lt=3;//ceshi shuruduan int bi=4;//xiaoy......

        搶答器設(shè)計(jì)心得(精選五篇)

        回顧上一周課程設(shè)計(jì)的時(shí)間,收獲了很多,也付出了很多,周一至周二主要熟悉ewb軟件的操作使用,學(xué)會(huì)仿真,周三至周四是看書查找資料,對(duì)相關(guān)元器件做一些了解,并把元器件布好線,以待焊接,......

        plc s7-200搶答器報(bào)告

        西門子PLC S7-200智力競(jìng)賽搶答器模擬報(bào)告 - 1西門子PLC S7-200智力競(jìng)賽搶答器模擬報(bào)告 - 3①1號(hào)選手搶答到后I0.0閉合,輔助繼電器M0.0得電,所以常閉開關(guān)M0.0斷開,常開觸點(diǎn)M0.0......

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

        【Ⅰ】FPGA 一、 實(shí)習(xí)目的: 1、 了解FPGA基本內(nèi)容。 2、 熟悉Quatus II編程環(huán)境。 3、 熟悉Verilog編程語言。 二、 實(shí)驗(yàn)設(shè)備: 硬件:計(jì)算機(jī)一臺(tái)。軟件:相關(guān)的Quatus II編程環(huán)......

        FPGA學(xué)習(xí)心得大報(bào)告[5篇范文]

        《FPGA技術(shù)基礎(chǔ)》學(xué)習(xí)報(bào)告--課程內(nèi)容學(xué)習(xí)心得姓名:學(xué)號(hào):年級(jí)專業(yè):指導(dǎo)教師:瞿麟201010401128自動(dòng)化101薛小軍摘要從開始學(xué)FPGA到現(xiàn)在粗略算來的話,已經(jīng)有3個(gè)多月了,就目前而言,我并......

        八路智力競(jìng)賽搶答器設(shè)計(jì)實(shí)驗(yàn)報(bào)告

        數(shù)字電子技術(shù)課程設(shè)計(jì) 題 目: 姓 名: 專 業(yè): 班 級(jí): 學(xué) 號(hào): 指導(dǎo)教師: 八路智力競(jìng)賽搶答器設(shè)計(jì) 電子科學(xué)與技術(shù) 122班 20 年 月 日 安徽科技學(xué)院理學(xué)院 安徽科技學(xué)......