欧美色欧美亚洲高清在线观看,国产特黄特色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ì)設(shè)計(jì)報(bào)告

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

      第一篇:基于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ì)高位無(wú)意義零的消隱。

      系統(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)過(guò)程簡(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),方波脈沖②才能通過(guò)閘門成為被計(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ì)中,通過(guò)選擇不同的閘門時(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ì)高位的無(wú)意義零進(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è)是頻率輸出端,是通過(guò)三個(gè)閘門選擇開關(guān)輸入和三個(gè)輸入頻率決定的,另外三個(gè)輸出端則是用來(lái)后面的小數(shù)點(diǎn)控制的,而六個(gè)輸入端中的三個(gè)是上面分頻器的三個(gè)輸出1HZ,10HZ和100HZ,另外三個(gè)是電路板上的撥動(dòng)開關(guān),用來(lái)選擇閘門,控制輸出。其原程序和分析如下:

      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無(wú)效

      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;--該過(guò)程對(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';--該過(guò)程產(chǎn)生清零信號(hào),即當(dāng)使能信號(hào)為無(wú)效0同時(shí)時(shí)鐘為0時(shí),即在技術(shù)始終無(wú)效半個(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í)我們也可以看出來(lái)該模塊對(duì)分頻器的時(shí)鐘輸出的穩(wěn)定性依賴十分嚴(yán)重,一旦分頻器輸出時(shí)鐘有毛刺,該控制信號(hào)將會(huì)完全的無(wú)效,這也是為什么我知道上面的分頻器設(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,無(wú)效時(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(wú)效的一瞬間我們令鎖存器將數(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)單,無(wú)需仿真。

      6、譯碼顯示:

      該模塊實(shí)現(xiàn)的是對(duì)鎖存器鎖存的數(shù)據(jù)進(jìn)行處理并顯示輸出,以及小數(shù)點(diǎn)的不同閘門的輸出顯示,以及電路板上七段顯示譯碼管的掃描信號(hào)輸出。其中對(duì)鎖存數(shù)據(jù)的處理包括溢出有效時(shí)的數(shù)據(jù)消除,和對(duì)高位無(wú)意義零的自動(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)如圖:

      再編寫使高位無(wú)意義零自動(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)高位無(wú)意義零的自動(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)行正常,邏輯上沒有任何問(wè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、下載過(guò)程:

      光標(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)過(guò)了前三步,最后我們將所完成的工程下載到了板子上,連接好函數(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)圓滿成功。

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

      第二篇:基于FPGA的簡(jiǎn)易數(shù)字頻率計(jì)

      EDA 簡(jiǎn)易數(shù)字頻計(jì) 設(shè)計(jì)性實(shí)驗(yàn) 2008112020327 ** 電子信息科學(xué)與技術(shù)

      物電

      電工電子中心2009年5月繪制

      2008.6.10 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      簡(jiǎn)易數(shù)字頻率計(jì)設(shè)計(jì)

      一.任務(wù)解析

      通過(guò)對(duì)選擇題的分析,認(rèn)為該簡(jiǎn)易數(shù)字頻率計(jì)應(yīng)該能達(dá)到以下要求: 1. 準(zhǔn)確測(cè)出所給的方波信號(hào)的頻率(1HZ以上的信號(hào))。2. 在顯示環(huán)節(jié)上,應(yīng)能實(shí)現(xiàn)高位清零功能。3. 另外還有一個(gè)總的清零按鍵。

      二.方案論證

      本實(shí)驗(yàn)中所做的頻率計(jì)的原理圖如上圖所示。即在一個(gè)1HZ時(shí)鐘信號(hào)的控制下,在每個(gè)時(shí)鐘的上升沿將計(jì)數(shù)器的數(shù)據(jù)送到緩沖器中保存起來(lái),再送數(shù)碼管中顯示出來(lái)。

      第2頁(yè),共11頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      在本實(shí)驗(yàn)中,用到過(guò)幾中不同的方案,主要是在1HZ時(shí)鐘信號(hào)的選擇和計(jì)數(shù)器清零環(huán)節(jié)上:

      1. 在實(shí)驗(yàn)設(shè)計(jì)過(guò)程中,考濾到兩種1HZ時(shí)鐘信號(hào)其波形如下圖所

      對(duì)于上術(shù)的兩種波形,可以調(diào)整各項(xiàng)參數(shù)來(lái)產(chǎn)生兩種1HZ時(shí)鐘信號(hào)。最后通過(guò)實(shí)驗(yàn)的驗(yàn)證發(fā)現(xiàn)第二種波形對(duì)于控制緩沖器獲得數(shù)據(jù)和控制計(jì)數(shù)器清零更易實(shí)現(xiàn)。并且,用第二種波形做為時(shí)鐘信號(hào),可以在很短的高電平時(shí)間內(nèi)對(duì)計(jì)數(shù)器清零,在低電平時(shí)間內(nèi)讓計(jì)數(shù)器計(jì)數(shù),從面提高測(cè)量的精度。而用第一種波形則不易實(shí)現(xiàn)這個(gè)過(guò)程。

      2.在計(jì)數(shù)器的清零過(guò)程中,也有兩個(gè)方案,分別是能通過(guò)緩沖器反回一個(gè)清零信號(hào),另一個(gè)是在時(shí)鐘的控制下進(jìn)行清零。最終通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),用時(shí)鐘進(jìn)行清零更易實(shí)現(xiàn)。因?yàn)槿绻镁彌_器反回一個(gè)清零信號(hào),有一個(gè)清零信號(hào)歸位問(wèn)題,即當(dāng)緩沖器反回一個(gè)低電平清零信號(hào)時(shí),計(jì)數(shù)器實(shí)現(xiàn)清零,但不好控制讓緩器沖的清零信號(hào)又回到高電平,否則計(jì)數(shù)器就一直處于清零狀態(tài)面不能正常計(jì)數(shù)了。

      三.實(shí)驗(yàn)步驟

      通過(guò)上分析后,實(shí)驗(yàn)分為以下幾步:

      1.1HZ時(shí)鐘信號(hào)的產(chǎn)生(產(chǎn)生該信號(hào)的模塊如下):

      module ones(clk,clkout);input clk;output clkout;parameter parameter N=24000000;n=24;

      第3頁(yè),共11頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      reg [n:0]cnt;reg clkout;

      always @(posedge clk)begin if(cnt==N)else end endmodule begin cnt=0;

      clkout=1;clkout=0;end

      end begin cnt=cnt+1;最終產(chǎn)生的信號(hào)的波形:

      2. 計(jì)數(shù)模塊。其主要公能是在每個(gè)被測(cè)信號(hào)的上升沿自動(dòng)加一,并且有一個(gè)清零信號(hào)的輸入端,在1HZ時(shí)鐘信號(hào)的高電平時(shí)間里進(jìn)行清零。模塊如下:

      module count_99999999(sign,clr,b0,b1,b2,b3,b4,b5,b6,b7);input sign,clr;output [3:0]b0,b1,b2,b3,b4,b5,b6,b7;reg [3:0]b0,b1,b2,b3,b4,b5,b6,b7;always @(posedge sign or posedge clr)

      if(clr)begin b0=0;b1=0;b2=0;b3=0;b4=0;b5=0;b6=0;b7=0;end else begin if(b0<9)b0=b0+1;else begin b0=0;if(b1<9)

      第4頁(yè),共11頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      b1=b1+1;else begin b1=0;if(b2<9)b2=b2+1;else begin

      b2=0;

      if(b3<9)

      b3=b3+1;

      else begin

      b3=0;

      if(b4<9)

      b4=b4+1;

      else begin

      b4=0;

      if(b5<9)

      b5=b5+1;

      else begin

      b5=0;

      if(b6<9)

      b6=b6+1;

      else begin

      b6=0;

      if(b7<9)

      b7=b7+1;

      else b7=0;

      第5頁(yè),共11頁(yè)

      湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      end

      end

      end

      end

      end

      end end

      end endmodule 如果要訪真該模塊,要設(shè)定較長(zhǎng)的訪真時(shí)間,故在此不進(jìn)行軟件訪真,只在實(shí)驗(yàn)箱上進(jìn)行實(shí)驗(yàn)。

      3. 數(shù)據(jù)緩沖模塊。在每個(gè)秒級(jí)門控信號(hào)的上升沿接收計(jì)數(shù)器的數(shù)據(jù),并送到驅(qū)動(dòng)八個(gè)數(shù)碼管的顯示模塊里。

      module fre_count(clk,clr,b0,b1,b2,b3,b4,b5,b6,b7,a0,a1,a2,a3,a4,a5,a6,a7);input clk,clr;input [3:0]b0,b1,b2,b3,b4,b5,b6,b7;output [3:0]a0,a1,a2,a3,a4,a5,a6,a7;reg clro;reg [3:0]a0,a1,a2,a3,a4,a5,a6,a7;always @(posedge clk or negedge clr)//clk應(yīng)該為1HZ的信號(hào)// begin if(!clr)

      begin

      a0<=0;a1<=0;a2<=0;a3<=0;a4<=0;a5<=0;a6<=0;a7<=0;end else

      第6頁(yè),共11頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      end begin a0<=b0;a1<=b1;a2<=b2;a3<=b3;a4<=b4;a5<=b5;a6<=b6;a7<=b7;end endmodule 在此模塊中用了到了<=阻塞賦值的方式。

      4.編寫控制高位清零的模塊,利用在掃描模塊中控制SEL的值來(lái)實(shí)現(xiàn)高位清零。即先從高位開始判斷,當(dāng)只有個(gè)位有數(shù)據(jù)時(shí),SEL只能等于0,當(dāng)只有個(gè)位和十位有數(shù)據(jù)時(shí),SEL要小于1,依此類推,實(shí)現(xiàn)高位清零功能。module scan(clk,a1,a2,a3,a4,a5,a6,a7,sel);input clk;input [3:0]a1,a2,a3,a4,a5,a6,a7;output [2:0]sel;reg [2:0]sel;always @(posedge clk)if({a1,a2,a3,a4,a5,a6,a7}==0000000)sel=0;else if({a2,a3,a4,a5,a6,a7}==000000)if(sel<1)sel=sel+1;else sel=0;else if({a3,a4,a5,a6,a7}==00000)if(sel<2)sel=sel+1;else sel=0;else if({a4,a5,a6,a7}==0000)if(sel<3)sel=sel+1;

      第7頁(yè),共11頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      else sel=0;else if({a5,a6,a7}==000)if(sel<4)sel=sel+1;else sel=0;else if({a6,a7}==00)if(sel<5)sel=sel+1;else sel=0;else if({a7}==0)if(sel<6)sel=sel+1;else sel=0;else sel=sel+1;endmodule 5.上述三個(gè)模塊為本次實(shí)驗(yàn)的主要模塊。除此,還用到了,譯碼,數(shù)據(jù)選擇器模塊。相應(yīng)的模塊代碼省略。

      6.所有模塊都寫完后,就是寫頂層文件。

      module top(clk,clr,sig_in,a,b,c,d,e,f,g,dp,sel);input clk,clr,sig_in;output [2:0]sel;output a,b,c,d,e,f,g,dp;

      wire clk1,clk2,clk3;wire [2:0]sel_sign;wire [3:0] QA,QB,QC,QD,QE,QF,QG,QH;wire [3:0] b0_o,b1_o,b2_o,b3_o,b4_o,b5_o,b6_o,b7_o;wire [3:0] org_data;

      第8頁(yè),共11頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      assign sel=sel_sign;assign clk3=clk;

      fre_count frequence(.clk(clk2),.clr(clr),.b0(b0_o),.b1(b1_o),.b2(b2_o),.b3(b3_o),.b4(b4_o),.b5(b5_o),.b6(b6_o),.b7(b7_o),.a0(QA),.a1(QB),count_99999999 mycounter(.sign(sig_in),.clr(clk2),.b0(b0_o),.b1(b1_o),.a2(QC),.a3(QD),.a4(QE),.a5(QF),.a6(QG),.a7(QH));.b2(b2_o),.b3(b3_o),.b4(b4_o),.b5(b5_o),.b6(b6_o),.b7(b7_o));

      clk_div clksource(.clk(clk3),.clko1(clk1));

      ones ones_con(.clk(clk3),.clkout(clk2));scan myscan(.clk(clk1),.a1(QB),.a2(QC),.a3(QD),.a4(QE),.a5(QF),.a6(QG),.a7(QF),.sel(sel_sign));mux81 mymux81(.sel(sel_sign),.a(QA),.b(QB),.c(QC),.d(QD),.e(QE),.f(QF),.g(QG),.h(QH),.out(org_data));

      第9頁(yè),共11頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      decode3_8 decode(.org(org_data),.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g),.dp(dp));

      endmodule

      7. 寫完了全部代碼后,就是器件選擇,分配引腳,下載程序,最后在實(shí)驗(yàn)箱上進(jìn)行實(shí)驗(yàn)。

      在實(shí)驗(yàn)的驗(yàn)證過(guò)程中,用到了DDS函數(shù)信號(hào)發(fā)生器,從其TTL輸出端輸出各種不同頻率的方波信號(hào),接入接簡(jiǎn)易頻率計(jì)的被測(cè)信號(hào)輸入端,在八個(gè)數(shù)碼管上顯示出相應(yīng)的測(cè)量結(jié)果。

      四.結(jié)果分析

      在上述實(shí)驗(yàn)過(guò)程中,我們選取了若干組不同的TTL輸出進(jìn)行測(cè)量,發(fā)現(xiàn)當(dāng)被測(cè)信號(hào)的頻率不小于1HZ時(shí),簡(jiǎn)易頻率計(jì)可以精確的測(cè)出被測(cè)信號(hào)的頻率。但是,當(dāng)被測(cè)信號(hào)小于1HZ時(shí),顯示的測(cè)量結(jié)果在0和1之間跳動(dòng),不穩(wěn)定。分析簡(jiǎn)易頻率計(jì)的結(jié)構(gòu)可知,在如下圖所示波形關(guān)系中,當(dāng)被測(cè)信號(hào)的頻率小于1HZ時(shí),在秒級(jí)門控信號(hào)的一個(gè)周期內(nèi),計(jì)數(shù)器要么能計(jì)數(shù)一次,要么計(jì)數(shù)零次,因而不能準(zhǔn)確的測(cè)出被測(cè)信號(hào)的頻率。

      五.經(jīng)驗(yàn)總結(jié)

      1.本實(shí)驗(yàn)中的頻率計(jì)由于其在結(jié)構(gòu)上存在缺限,因而在測(cè)量小于1HZ的信號(hào)時(shí),會(huì)有較大的誤碼差,在測(cè)量頻率大于1HZ信號(hào)時(shí),也可能存1HZ誤差,其原因在于如果在一個(gè)秒級(jí)門控信號(hào)的周期內(nèi),被測(cè)信號(hào)的上升沿的個(gè)數(shù)正好

      第10頁(yè),共11頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      和其周數(shù)相同,則測(cè)量結(jié)果是準(zhǔn)確的,如果上升沿的個(gè)數(shù)比周期數(shù)多一,則測(cè)量結(jié)果比實(shí)際值大一。

      2.提高測(cè)量精度的另一個(gè)關(guān)鍵地方在所產(chǎn)生的秒級(jí)門控信號(hào)的精度。只有所產(chǎn)生的秒級(jí)門控信號(hào)的低電平時(shí)間長(zhǎng)度為嚴(yán)格的一秒時(shí),測(cè)量結(jié)果才會(huì)更精確。由于實(shí)驗(yàn)箱上所使用的晶振不是嚴(yán)格等于24MHZ,因而可用示波器測(cè)出晶振的準(zhǔn)確頻率后,再在parameter

      N=24000000;語(yǔ)句中改變N的值。也可以在實(shí)驗(yàn)中逐漸調(diào)整N的值,直到測(cè)量結(jié)果最精確為止。最終我們的實(shí)驗(yàn)中,N的值取的是24000351。

      3.對(duì)于高位清零功能的加入,正是儀器設(shè)計(jì)人性化的一個(gè)體現(xiàn)。如果沒有這個(gè)功能,再未顯示數(shù)據(jù)的數(shù)碼管也一直處于工作狀態(tài),一則是對(duì)資源的亂費(fèi),二則是會(huì)減少器件的使用壽命。

      第11頁(yè),共11頁(yè)

      第三篇:數(shù)字頻率計(jì)設(shè)計(jì)

      數(shù)字頻率計(jì)設(shè)計(jì) 1.設(shè)計(jì)任務(wù)

      設(shè)計(jì)一簡(jiǎn)易數(shù)字頻率計(jì),其基本要求是:

      1)測(cè)量頻率范圍1Hz~10Hz,量程分為4檔,即×1,×10,×100,×1000。2)頻率測(cè)量準(zhǔn)確度?fx??2?10?3.fx3)被測(cè)信號(hào)可以是下弦波、三角波和方波。4)顯示方式為4位十進(jìn)制數(shù)顯示。5)使用EWB進(jìn)行仿真。2.設(shè)計(jì)原理及方案

      頻率的定義是單位時(shí)間(1s)內(nèi)周期信號(hào)的變化次數(shù)。若在一定時(shí)間間隔T內(nèi)測(cè)得周期信號(hào)的重復(fù)變化次數(shù)為N,則其頻率為

      f=N/T 據(jù)此,設(shè)計(jì)方案框圖如圖1所示。

      圖1 數(shù)字頻率計(jì)組成框圖

      其基本原理是,被測(cè)信號(hào)ux首先經(jīng)整形電路變成計(jì)數(shù)器所要求的脈沖信號(hào),頻率與被測(cè)信號(hào)的頻率fx相同。時(shí)鐘電路產(chǎn)生時(shí)間基準(zhǔn)信號(hào),分頻后控制計(jì)數(shù)與保持狀態(tài)。當(dāng)其高電平時(shí),計(jì)數(shù)器計(jì)數(shù);低電平時(shí),計(jì)數(shù)器處于保持狀態(tài),數(shù)據(jù)送入鎖存器進(jìn)行鎖存顯示。然后對(duì)計(jì)數(shù)器清零,準(zhǔn)備下一次計(jì)數(shù)。其波形邏輯關(guān)系圖如圖2所示。3.基本電路設(shè)計(jì) 1)整形電路

      整形電路是將待測(cè)信號(hào)整形變成計(jì)數(shù)器所要求的脈沖信號(hào)。電路形式采用由555定時(shí)器所構(gòu)成的施密特觸發(fā)器,電路如圖XXX所示。若待測(cè)信號(hào)為三角波,輸入整形電路,設(shè)置分析為瞬態(tài)分析,啟動(dòng)電路,其輸入、輸出波形如圖XXX所示??梢娸敵鰹榉讲?,二者頻率相同。

      2)時(shí)鐘產(chǎn)生電路

      時(shí)鐘信號(hào)是控制計(jì)數(shù)器計(jì)數(shù)的標(biāo)準(zhǔn)時(shí)間信號(hào),其精度很大程度上決定了頻率計(jì)的頻率測(cè)量精度。當(dāng)要求頻率測(cè)量精度較高時(shí),應(yīng)使用晶體振蕩器通過(guò)分頻獲得。在此頻率計(jì)中,時(shí)鐘信號(hào)采用555定時(shí)器構(gòu)成的多諧振蕩器電路,產(chǎn)生頻率為1Kz的信號(hào),然后再進(jìn)行分頻。多諧振蕩器電路如圖XXX所示。由555定時(shí)器構(gòu)成多諧振蕩器的周期計(jì)算公式為

      XXXXXXXXXX 取XXXXXXXXXXXXXX,則得到振蕩頻率為1Kz的負(fù)脈沖,其振蕩波形如圖XXX所示。3)分頻器電路

      采用計(jì)數(shù)器構(gòu)成分頻電路,對(duì)1Kz的時(shí)鐘脈沖進(jìn)行分頻,取得不同量程所需要的時(shí)間基準(zhǔn)信號(hào),實(shí)現(xiàn)量程控制。1Kz的時(shí)鐘脈沖,對(duì)其進(jìn)行3次10分頻,每個(gè)10分頻器的輸出信號(hào)頻率分別為100Hz,10Hz,1Hz三種時(shí)間基準(zhǔn)信號(hào)。對(duì)應(yīng)于以1Kz,100Hz,10Hz,1Hz的信號(hào)作為時(shí)間基準(zhǔn)信號(hào)時(shí),相應(yīng)的量程為×1000,×100,×10,×1。

      構(gòu)成10分頻帶電路是采用十進(jìn)制計(jì)數(shù)器74LS160實(shí)現(xiàn)的。具體電路及其輸入、輸出波形如圖XXX所示。

      (1)T觸發(fā)器

      T觸發(fā)器電路是用來(lái)將分頻帶器輸出阻抗的窄脈沖整形為方波,因?yàn)橛?jì)數(shù)器需要用方波來(lái)控制其計(jì)數(shù)/保持狀態(tài)的切換。整形后方波的頻率為頻器輸出信號(hào)頻率的一半,則對(duì)應(yīng)于1Kz,100Kz,10Kz,1Hz的信號(hào),T觸發(fā)器輸出信號(hào)的高電平持續(xù)時(shí)間分別為0.001s,0.01s,0.1s,1s。T觸發(fā)器采用JK觸發(fā)器7473為實(shí)現(xiàn),其電路連接圖及其輸入、輸出波形如圖XXX所示。

      (2)單穩(wěn)觸發(fā)器

      單穩(wěn)觸發(fā)器用于產(chǎn)生一窄脈沖,以觸發(fā)鎖存器,使計(jì)數(shù)器在計(jì)數(shù)完畢后更新鎖存器數(shù)值。單穩(wěn)觸發(fā)器電路采用555定時(shí)器實(shí)現(xiàn),為了保證系統(tǒng)正常工作,單穩(wěn)電路產(chǎn)生的脈沖寬度不能大于該量程分頻帶器輸出信號(hào)的周期。例如,計(jì)數(shù)器的最大量程是×1000,對(duì)應(yīng)分頻帶器輸出的時(shí)間基準(zhǔn)信號(hào)頻率為1000Hz,周期是1ms。取單穩(wěn)電路輸出脈沖寬度TW=0.1ms。根據(jù)TW=1.1RC,取C=0.01Uf,則R=9.8KΩ,取標(biāo)稱什為10KΩ。單穩(wěn)觸發(fā)器輸入信號(hào)是T觸發(fā)器輸出信號(hào)經(jīng)Rd、Cd組成的微分器將方波變成尖脈沖后加到555定時(shí)器的觸發(fā)器。電路圖及輸入、輸出波形如圖XXX所示。

      (3)延遲反相器

      延時(shí)反相器的功能是為了得到一個(gè)對(duì)計(jì)數(shù)器清零的信號(hào)。由于計(jì)數(shù)器清零是低電平有效,而且計(jì)數(shù)器清零必須在單穩(wěn)觸發(fā)信號(hào)之后,故延遲反相器是在上述單穩(wěn)電路之后,再加一級(jí)單穩(wěn)觸發(fā)電路,且在其輸出端加反相器輸出。其輸入、輸出波形如圖XXX所示。(4)計(jì)數(shù)器

      計(jì)數(shù)器在T觸發(fā)器輸出信號(hào)的控制下,對(duì)經(jīng)過(guò)整形的待測(cè)信號(hào)進(jìn)行脈沖計(jì)數(shù),所得結(jié)果乘以量程即為待測(cè)信號(hào)頻率。

      根據(jù)精度要求,采用4個(gè)十進(jìn)制計(jì)數(shù)器級(jí)聯(lián),構(gòu)成N=1000計(jì)數(shù)器。十進(jìn)制計(jì)數(shù)器仍采用74LS160實(shí)現(xiàn)。其電路圖如圖XXX所示。其中計(jì)數(shù)器的清零信號(hào)由延遲反相器提供,控制信號(hào)由T觸發(fā)器提供,計(jì)數(shù)器輸出結(jié)果送入鎖存器。

      (5)鎖存器和顯示

      計(jì)數(shù)器的結(jié)果進(jìn)入鎖存器鎖存,4個(gè)七段數(shù)碼管顯示測(cè)試信號(hào)的頻率。鎖存器使用了兩片8D集成觸發(fā)器實(shí)現(xiàn),其控制信號(hào)來(lái)自于延遲反相器,具體電路如圖XXX所示。

      (6)數(shù)字頻率計(jì)的總體電路

      圖XXX是數(shù)字頻率計(jì)的總體電路圖。

      4.測(cè)試

      搭建好以上電路以后,進(jìn)行調(diào)試,首先分模塊進(jìn)行調(diào)試,待每一個(gè)模塊調(diào)試正確后,不規(guī)則進(jìn)行聯(lián)調(diào)。因?yàn)檎麄€(gè)電路的分析是瞬態(tài)分析,故總體電路的分析需要較長(zhǎng)時(shí)間。以上僅僅是學(xué)生所做綜合電路分析與設(shè)計(jì)的例子,由于EWB5.12教學(xué)版本庫(kù)元件的限制,有些電路與系統(tǒng)無(wú)法進(jìn)行全部電路的仿真(例如收發(fā)信通信系統(tǒng)等),但有些局部電路也可以進(jìn)行仿真,從而節(jié)省對(duì)這部分電路設(shè)計(jì)化費(fèi)的時(shí)間。

      第四篇:簡(jiǎn)易數(shù)字頻率計(jì)設(shè)計(jì)報(bào)告

      EDA技術(shù)基礎(chǔ) 簡(jiǎn)易數(shù)字頻率計(jì) 必做實(shí)驗(yàn)

      電子信息科學(xué)與技術(shù)

      物電學(xué)院

      2011-06-24 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      簡(jiǎn)易數(shù)字頻率計(jì)

      一.實(shí)驗(yàn)要求

      用Verilog硬件描述語(yǔ)言設(shè)計(jì)一個(gè)時(shí)序邏輯電路,能夠?qū)斎氲腡TL信號(hào)進(jìn)行1s時(shí)長(zhǎng)計(jì)數(shù),將計(jì)數(shù)結(jié)果在數(shù)碼管上顯示,讓該電路循環(huán)運(yùn)行,則數(shù)碼管顯示的就是輸入信號(hào)的頻率。

      用標(biāo)準(zhǔn)DDS信號(hào)發(fā)生器輸入TTL信號(hào),測(cè)試信號(hào)的頻率與DDS輸出設(shè)定的頻率比較,分析誤差以及誤差產(chǎn)生的原因。

      顯示效果好,無(wú)閃爍,高位零不顯示。

      二.方案原理圖

      總體框圖:

      三、主要部分原理說(shuō)明及實(shí)驗(yàn)步驟

      根據(jù)原理圖,先把計(jì)數(shù)器模塊、顯示模塊、掃描模塊分別做出。對(duì)于計(jì)數(shù)器模塊因?yàn)橐獙?shí)現(xiàn)00000000~99999999的計(jì)數(shù)器,所以要用32bit,即要用

      32第2頁(yè),共8頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      個(gè)D觸發(fā)器。從而要用8個(gè)數(shù)碼管進(jìn)行循環(huán)掃描顯示。對(duì)于1HZ的精密脈沖在低電平時(shí),一方面和被測(cè)脈沖通過(guò)或門,當(dāng)被測(cè)脈沖為高電平時(shí)門電路開啟,另一方面通過(guò)一個(gè)非門把計(jì)數(shù)器的清零端置1,計(jì)數(shù)器正常工作開始計(jì)數(shù)。高電平時(shí)對(duì)計(jì)數(shù)器清零的同時(shí),把測(cè)得的數(shù)據(jù)送入BUFFER中進(jìn)行顯示鎖存。數(shù)碼管的掃描時(shí)鐘由外部提供。在此基礎(chǔ)上把前面的0清除。

      1、我在該設(shè)計(jì)中使用了一個(gè)或門作為門控電路,當(dāng)輸入時(shí)鐘clka為低電平時(shí),被測(cè)信號(hào)clk通過(guò),當(dāng)輸入時(shí)鐘clka為高電平時(shí),被測(cè)信號(hào)被阻止。從clka端輸入的是一個(gè)24M的脈沖,經(jīng)過(guò)1HZ模塊處理后生成一秒赫茲信號(hào)(如下圖)

      由這個(gè)信號(hào)來(lái)控制99999999計(jì)數(shù)器的清零和buffer中數(shù)據(jù)的更新以及被測(cè)信號(hào)的通過(guò)與阻止

      其verilog語(yǔ)言代碼如下 module clk_1hz(clk,clked);input clk;output clked;reg clked;reg[31:0]jishu;always @(posedge clk)begin if(jishu==24000000)begin jishu=0;clked=1;end else begin jishu=jishu+1;clked=0;end end endmodule

      2、門控電路部分

      其verilog語(yǔ)言代碼如下

      第3頁(yè),共8頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      module mynot(clk_1hz,nclk_1hz);input clk_1hz;output nclk_1hz;assign nclk_1hz=!clk_1hz;endmodule

      99999999計(jì)數(shù)器計(jì)數(shù)在到達(dá)1S的瞬間,1HZ時(shí)鐘出現(xiàn)上升沿,控制緩存器將此時(shí)的計(jì)數(shù)值鎖存起來(lái),然后送出顯示。很短一段時(shí)間后,1HZ時(shí)鐘恢復(fù)低電平,在這很短的時(shí)間內(nèi)1HZ時(shí)鐘經(jīng)非門也完成了計(jì)數(shù)器的清零,之后計(jì)數(shù)器又恢復(fù)計(jì)數(shù)狀態(tài),進(jìn)入下一秒的計(jì)數(shù)。

      其verilog語(yǔ)言代碼如下 module mynot(clk_1hz,nclk_1hz);input clk_1hz;output nclk_1hz;assign nclk_1hz=!clk_1hz;endmodule

      3、計(jì)數(shù)模塊

      第4頁(yè),共8頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      99999999計(jì)數(shù)器是本次實(shí)驗(yàn)的關(guān)鍵所在,它的主要功能是:在1hz精密時(shí)鐘和門控電路的控制下,在1s的時(shí)間內(nèi),對(duì)輸入信號(hào)進(jìn)行計(jì)數(shù),1s后,由于門控電路的存在,計(jì)數(shù)器停止計(jì)數(shù) 其verilog語(yǔ)言代碼如下 module cnt99999999(clr,clk,q);input clr,clk;output [31:0]q;reg [31:0]q;always @(posedge clk or negedge clr)begin if(!clr)q[31:0]=0;else if(q[31:0]==31'H99999999)q[31:0]=q[31:0]+32'H66666667;else if(q[27:0]==27'H9999999)q[31:0]=q[31:0]+28'H6666667;else if(q[23:0]==24'H999999)

      q[31:0]=q[31:0]+24'H666667;else if(q[19:0]==20'H99999)

      q[31:0]=q[31:0]+20'H66667;else if(q[15:0]==16'H9999)

      q[31:0]=q[31:0]+16'H6667;else if(q[11:0]==12'H999)

      q[31:0]=q[31:0]+12'H667;else if(q[ 7:0]== 8'H99)

      q[31:0]=q[31:0]+8'H67;else if(q[ 3:0]== 4'H9)

      q[31:0]=q[31:0]+4'H7;else q[31:0]=q[31:0]+1;end endmodule

      4、顯示數(shù)據(jù)緩沖buffer的設(shè)計(jì)

      數(shù)據(jù)緩沖buffer的功能是當(dāng)用計(jì)數(shù)器對(duì)輸入信號(hào)計(jì)數(shù),這些數(shù)據(jù)都暫時(shí)存在這個(gè)里面,每當(dāng)時(shí)鐘的上升沿到來(lái)的時(shí)候,它就向后面的模塊輸送數(shù)據(jù),這樣就可以得到相對(duì)穩(wěn)定的顯示。

      第5頁(yè),共8頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      其verilog語(yǔ)言代碼如下

      module buff(in,clk,n1,n2,n3,n4,n5,n6,n7,n8);input clk;input [31:0]in;output [3:0]n1,n2,n3,n4,n5,n6,n7,n8;reg [3:0]n1,n2,n3,n4,n5,n6,n7,n8;

      always @(posedge clk)begin begin n1=in[3:0];n2=in[7:4];n3=in[11:8];n4=in[15:12];n5=in[19:16];n6=in[23:20];n7=in[27:24];n8=in[31:28];end end endmodule

      5、顯示部分

      由于要用到8個(gè)數(shù)碼管對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行顯示,我們可以設(shè)計(jì)一個(gè)譯碼模塊:

      其verilog語(yǔ)言代碼如下 module yima(in,a,b,c,d,e,f,g,dp);input

      [3:0]in;output a,b,c,d,e,f,g,dp;reg

      a,b,c,d,e,f,g,dp;always @(in)begin case(in)

      第6頁(yè),共8頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      4'b0000:{dp,g,f,e,d,c,b,a}=8'b00111111;4'b0001:{dp,g,f,e,d,c,b,a}=8'b00000110;4'b0010:{dp,g,f,e,d,c,b,a}=8'b01011011;4'b0011:{dp,g,f,e,d,c,b,a}=8'b01001111;4'b0100:{dp,g,f,e,d,c,b,a}=8'b01100110;4'b0101:{dp,g,f,e,d,c,b,a}=8'b01101101;4'b0110:{dp,g,f,e,d,c,b,a}=8'b01111101;4'b0111:{dp,g,f,e,d,c,b,a}=8'b00000111;4'b1000:{dp,g,f,e,d,c,b,a}=8'b01111111;4'b1001:{dp,g,f,e,d,c,b,a}=8'b01101111;default:{dp,g,f,e,d,c,b,a}=8'b01000000;endcase end endmodule 部分引腳功能的排列如下圖所示

      數(shù)碼管的引腳排列 以上5部分就是頂層原理圖的主要部分

      四、實(shí)驗(yàn)總結(jié)

      1、要用1HZ的精確時(shí)鐘不能直接接一個(gè)外接的信號(hào)源,這樣的誤差太大,只能將一個(gè)標(biāo)準(zhǔn)的24M的時(shí)鐘進(jìn)行24分頻,才能的到相對(duì)穩(wěn)定的時(shí)鐘信號(hào)。

      2、數(shù)據(jù)緩沖部分不能少,如果沒有這部分,將得不到想要的結(jié)果,數(shù)碼管上會(huì)出現(xiàn)一排亂跳的數(shù)字。

      3、在整個(gè)實(shí)驗(yàn)設(shè)計(jì)過(guò)程中,我發(fā)現(xiàn)只要弄清楚所需要的幾個(gè)模塊,然后將模塊分開來(lái)進(jìn)行生成,設(shè)計(jì)也并不是想象中的那么難。

      第7頁(yè),共8頁(yè) 湖北師范學(xué)院電工電子實(shí)驗(yàn)教學(xué)省級(jí)示范中心電子版實(shí)驗(yàn)報(bào)告

      4、在此程序設(shè)計(jì)中,對(duì)各個(gè)模塊的功能有針對(duì)性的設(shè)計(jì)思路有了一定的提高,對(duì)于一個(gè)程序的需要哪些功能模塊,需要什么樣的輸入輸出,都比以前有了一定的提高。

      5、學(xué)EDA已經(jīng)有一學(xué)期了,現(xiàn)在對(duì)那些原理框圖并不陌生了,現(xiàn)在也可以寫一些簡(jiǎn)單的代碼。我發(fā)現(xiàn)只要我們認(rèn)真的去學(xué)習(xí),虛心的的去請(qǐng)教他人,我們誰(shuí)都可以把這門課學(xué)好。雖然在學(xué)習(xí)這門課以及做實(shí)驗(yàn)的過(guò)程中,我們往往會(huì)遇到種種困難,但是當(dāng)實(shí)驗(yàn)結(jié)果與現(xiàn)象出來(lái)的那一剎那,我們就會(huì)感受那成功的快樂(lè)。

      第8頁(yè),共8頁(yè)

      第五篇: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)如果無(wú)人搶答,計(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接主持人的“開始”按鍵。由于無(wú)論是在正常情況還是犯規(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”

      來(lái)。然后就是將選出的組別鎖存。將按下按鍵的組別賦給一內(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ì)

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

      下載基于FPGA的數(shù)字頻率計(jì)設(shè)計(jì)報(bào)告word格式文檔
      下載基于FPGA的數(shù)字頻率計(jì)設(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)范文推薦

        數(shù)字頻率計(jì)

        //********************************************************************* //* 標(biāo)題: 簡(jiǎn)易數(shù)字頻率計(jì) //* 文件: topdesign.v //* 作者: SJ&QJY //* 日期: 2009.06.10......

        verilog簡(jiǎn)易數(shù)字頻率計(jì)報(bào)告

        一、實(shí)驗(yàn)原理 根據(jù)原理圖,將計(jì)數(shù)器模塊、顯示模塊、掃描模塊、譯碼器模塊等分別做出。其原理是在1S內(nèi)用待測(cè)信號(hào)給計(jì)數(shù)器計(jì)數(shù),并在一秒結(jié)束時(shí)給計(jì)數(shù)器清零,計(jì)出來(lái)用緩存器緩存,......

        數(shù)字頻率計(jì)實(shí)驗(yàn)報(bào)告

        數(shù)字電路與系統(tǒng)課程設(shè)計(jì) 大連理工大學(xué)城市學(xué)院 數(shù)字電路與系統(tǒng)課程設(shè)計(jì) 設(shè)計(jì)題目:數(shù)字頻率計(jì) 學(xué) 院:電子與自動(dòng)化學(xué)院 專 業(yè): 自動(dòng)化 學(xué) 生: 揣智涵 同 組 人: 王曉寧 周英茹......

        課程設(shè)計(jì)----數(shù)字頻率計(jì)(精選合集)

        電子課程設(shè)計(jì)報(bào)告 設(shè)計(jì)課題: 數(shù)字頻率計(jì) 作 者: 李成贊≦ 專 業(yè): 08信息工程 班 級(jí): (2)班 學(xué) 號(hào): 3081231201 日 期 2009年6月5日——2009年6月17日 指導(dǎo)教師: 廖......

        簡(jiǎn)單單片機(jī)數(shù)字頻率計(jì)設(shè)計(jì)(優(yōu)秀范文五篇)

        課程設(shè)計(jì)報(bào)告 簡(jiǎn)易頻率計(jì)的設(shè)計(jì) 電子科學(xué)XX學(xué)院 姓名:專業(yè):通信工程學(xué)號(hào):2013 2015年12月 摘要 1 本系統(tǒng)基于單片機(jī)來(lái)實(shí)現(xiàn)核心的頻率計(jì)數(shù)功能,并能夠?qū)崿F(xiàn)測(cè)量中的量程自動(dòng)切換......

        單片機(jī)課程設(shè)計(jì)報(bào)告——智能數(shù)字頻率計(jì)

        單片機(jī)原理課程設(shè)計(jì)報(bào)告 題目:智能數(shù)字頻率計(jì)設(shè)計(jì) 專業(yè): 信息工程 班級(jí):信息111 學(xué)號(hào):*** 姓名:*** 指導(dǎo)教師:*** 北京工商大學(xué)計(jì)算機(jī)與信息工程學(xué)院 1、設(shè)計(jì)目的 (1)了解和掌握一個(gè)......

        基于51單片機(jī)的數(shù)字頻率計(jì)的設(shè)計(jì)概要

        武漢理工大學(xué)《單片機(jī)原理與應(yīng)用》課程設(shè)計(jì)說(shuō)明書 1 前言 頻率測(cè)量是電子學(xué)測(cè)量中最為基本的測(cè)量之一。由于頻率信號(hào)抗干擾性強(qiáng),易于傳輸,因此可以獲得較高的測(cè)量精度。隨著數(shù)......

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

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