基于vhdl語言的簡易電子鐘課程設(shè)計說明書_第1頁
基于vhdl語言的簡易電子鐘課程設(shè)計說明書_第2頁
基于vhdl語言的簡易電子鐘課程設(shè)計說明書_第3頁
基于vhdl語言的簡易電子鐘課程設(shè)計說明書_第4頁
基于vhdl語言的簡易電子鐘課程設(shè)計說明書_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、設(shè) 計 報 告現(xiàn)代電子技術(shù)綜合實驗課程名稱 數(shù)字式秒表設(shè)計與實現(xiàn)設(shè)計題目 指導老師 學 生 學 號 目錄1 引言.1.1課程設(shè)計的內(nèi)容及要求.2 VHDL簡介.2.1硬件描述語言VHDL.2.1.1 VHDL語言的特點.2.1.2 VHDL語言的設(shè)計流程.3 秒表設(shè)計過程.3.1原理框圖.3.2設(shè)計思路模塊化.3.3模塊的功能簡述.分頻器.計數(shù)器.數(shù)據(jù)鎖存器.顯示譯碼模塊.控制模塊.按鍵消抖模塊.頂層文件.4 模塊電路仿真. 4.1 分頻器 4.2計數(shù)器 4.2.1 模6計數(shù)器 4.2.2 模10計數(shù)器5 實驗總結(jié).5.1實驗結(jié)論.5.2心得總結(jié).6 參考文獻.7 附錄(各模塊源程序).1.

2、引言:在當今信息化社會中,集成電路和計算機應(yīng)用得到高速發(fā)展,。它在人們?nèi)粘I钜驯夭豢缮?,大多?shù)電子產(chǎn)品多是由計算機電路組成。本文目的就是基于計算機電路利用VHDL語言設(shè)計出數(shù)字秒表。秒表在很多領(lǐng)域充當了重要的角色,在不同的場合和條件下對于秒表的精度和功能是不同的,有些科學實驗的要求甚至能達到納秒級別。1.1課題內(nèi)容要求:本課題目標是掌握VHDL開發(fā)FPGA的一般流程,重點是電子秒表的設(shè)計。該設(shè)計以VHDL作為硬件開發(fā)語言,以ISE作為軟件開發(fā)平臺,準確地實現(xiàn)了秒表計數(shù)、清零、暫停等功能,并使用ModelSim仿真軟件對VHDL程序?qū)崿F(xiàn)了電路仿真,完成了綜合布局布線,最終將程序下載到芯片Spa

3、rtan-3A,并通過板子上相應(yīng)模塊驗證實驗的正確性。除此以外,利用課余時間學習數(shù)字頻率計的硬件實現(xiàn)方法,即用MultiSim仿真等。 秒表設(shè)計的具體要求:計時范圍是000000到595999。有兩個按鈕開關(guān)start/stop和split/reset,控制秒表的啟動、停止、分段和復位:秒表已經(jīng)被復位的情況下,按下state/stop鍵,秒表開始計時。在秒表正常運行的情況下,如果按下state/reset則秒表暫停計時;再次按下該鍵,秒表繼續(xù)計時。在秒表正常運行下,如果按下split/reset,顯示停止在按鍵時的時間,但秒表仍然在計時;再次按下該鍵,秒表恢復正常顯示。在秒表暫停計時的情況下,

4、按下split/reset,秒表復位歸零。2.VHDL簡介:2.1 VHDL特點:(1)作為HDL的第一個國際標準,VHDL具有很強的可移植性。 (2)具有豐富的模擬仿真語句和庫函數(shù),隨時可對設(shè)計進行仿真模擬,因而能將設(shè)計中的錯誤消除在電路系統(tǒng)裝配之前,在設(shè)計早期就能檢查設(shè)計系統(tǒng)功能的可行性,有很強的預(yù)測能力。 (3)VHDL有良好的可讀性,接近高級語言,容易理解。 (4)系統(tǒng)設(shè)計與硬件結(jié)構(gòu)無關(guān),方便了工藝的轉(zhuǎn)換,也不會因工藝變化而使描述過時。 (5)支持模塊化設(shè)計,可將大規(guī)模設(shè)計項目分解成若干個小項目,還可以把已有的設(shè)計項目作為一個模塊調(diào)用。 

5、;(6)對于用VHDL完成的一個確定設(shè)計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并能自動地把VHDL描述轉(zhuǎn)變成門電路級網(wǎng)表文件。 (7)設(shè)計靈活,修改方便,同時也便于設(shè)計結(jié)果的交流、保存和重用,產(chǎn)品開發(fā)速度快,成本低。2.2 VHDL設(shè)計流程:(1文本編輯:用任何文本編輯器都可以進行,也可以用專用的HDL編輯環(huán)境。 (2)功能仿真:將文件調(diào)入HDL仿真軟件進行功能仿真,檢查邏輯功能是否正確。 (3)邏輯綜合:將源文件調(diào)入邏輯綜合軟件進行綜合,即把語言綜合成最簡的布爾表達式。 (4)時序仿真:需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗證電路的時序。 (5)器件編程:對使用的元件可

6、以進行編程。3.秒表設(shè)計:3.1 原理框圖:Seg6:0計數(shù)器晶振鎖存器分頻器掃描顯示控制(包括掃描控制和顯示譯碼)計數(shù)清零鎖存按鍵開關(guān)LED顯示電路按鍵消抖1kHzDig7:0控制電路3.2 設(shè)計模塊化:由以上原理圖可實現(xiàn)秒表設(shè)計的模塊化,具體而言,可以分為6個模塊:分頻器:對晶體振蕩器產(chǎn)生的時鐘信號進行分頻,產(chǎn)生時間基準信號。計數(shù)器:對時間基準脈沖進行計數(shù),完成計時功能。注:其中包含了一個1kHz到100Hz的分頻器,合并在一個模塊里。數(shù)據(jù)鎖存器:鎖存數(shù)據(jù),使顯示保持鎖定。控制器:控制計數(shù)器的運行、暫停以及復位;產(chǎn)生鎖存器的是能信號。掃描顯示的控制電路:包括掃描計數(shù)器、和7段譯碼器;控制8

7、個數(shù)碼管以掃描方式顯示計時結(jié)果。按鍵消抖電路:消除按鍵輸入信號抖動的影響,輸出單脈沖。每個模塊調(diào)試后可通過頂層文件共同構(gòu)成秒表的總電路。3.3 模塊的功能簡述: 分頻器:秒表設(shè)計中共需要兩種分頻器。一種是通過模為48000的計數(shù)器進位輸出實現(xiàn)將晶體振蕩器產(chǎn)生的48MHz的時鐘信號轉(zhuǎn)化為1KHz的時鐘信號作為基準,方便下面各個模塊的取用。另一種是通過模為10的計數(shù)器進位輸出將上述1KHz的時鐘信號轉(zhuǎn)化為100Hz的時鐘信號,作為計數(shù)器的時鐘輸入。注:實際設(shè)計中,第二種分頻器被劃歸到計數(shù)器模塊,實現(xiàn)與原理圖的匹配。3.3.2 計數(shù)器:計數(shù)器功能是通過輸入的時鐘信號實現(xiàn)計數(shù)功能,在秒表設(shè)計里,共需要

8、4個模10計數(shù)器和2個模6計數(shù)器。具體而言,其中2個模10計數(shù)器和2個模6計數(shù)器分別級聯(lián)產(chǎn)生2個模60計數(shù)器,實現(xiàn)了到秒和到分的進位。而其他的兩個模10計數(shù)器則是2位模10計數(shù)。3.3.3 數(shù)據(jù)鎖存器:它是一個控制端控制的組合邏輯電路,實現(xiàn)了暫時鎖存數(shù)據(jù)的功能。 顯示譯碼模塊:顯示譯碼管外聯(lián)部分示意圖:內(nèi)部原理圖:功能是:從鎖存器接入數(shù)據(jù),通過掃描計數(shù)的輸出來控制多路復用的數(shù)據(jù)選擇端口和三八譯碼器的輸入端口,使其數(shù)據(jù)變化相同。38譯碼器的輸出進行位選,bcd的輸出進行段選使其能在顯示譯碼管顯示完整數(shù)據(jù)。注:本實驗電路板使用共陽極,即低電平有效。3.3.5 控制模塊:功能是產(chǎn)生實現(xiàn)秒表的暫停or

9、開始,鎖存or清零功能。具體而言產(chǎn)生三個輸出控制信號:清零,計數(shù),鎖存。實現(xiàn)方法:Mealy機或者是Moore機方式,區(qū)別是有一個狀態(tài)的不同。實現(xiàn)原理圖: 按鍵消抖模塊:功能是消除按鍵輸入信號的影響,輸出單脈沖。方便實現(xiàn)兩個按鍵對秒表的瞬時控制。3.3.7 頂層文件:實現(xiàn)各個模塊之間的連接匹配,同時分配實際電路板的引腳。4. 模塊電路仿真:4.1 分頻器:4.2 計數(shù)器:4.2.1 模6計數(shù)器:4.2.2 模10計數(shù)器:5. 實驗總結(jié):5.1 實驗結(jié)果:經(jīng)過測試,可以由FPGA板上的key-7,key-8控制秒表實現(xiàn)開始暫停鎖存清零的相應(yīng)功能,其它功能基本符合要求。另一方面,通過Modesim

10、仿真,可以測試各程序模塊,并且可以清楚看到各模塊仿真結(jié)果與其功能相符合。5.2 心得總結(jié):本次EDA實驗大致經(jīng)歷了一個多星期,這段時間里我學到了很多東西。剛開始我對VHDL語言的一無所知而且顯得無從下手,在調(diào)整心態(tài)后我開始仔細了解和掌握課件中有關(guān)于VHDL的語句,設(shè)計流程和調(diào)試方法,在對這些有一定理解的基礎(chǔ)上,我又看了幾個VHDL應(yīng)用的小例子,增加對原理的熟悉度。在編調(diào)試頂層文件的程序時,各元件之間的連接定義方法和關(guān)系讓我糾結(jié)了好久,最后在別人的建議下,我先畫出模塊連接框圖,明確定義了各個輸入和輸出的類型和變量。在此基礎(chǔ)上設(shè)計秒表的VHDL語言,顯得條理清晰和檢查糾錯方便。通過這次實驗,我懂得

11、了理論與實際相結(jié)合是很重要的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正理解并掌握其中的原理方法,從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,發(fā)現(xiàn)了自己的不足之處,這是不可避免的。但更重要的是我們要有自己解決問題的思路和方法,這樣才能不斷完善自己。希望以后能有更多的動手實踐機會,在硬件實踐中發(fā)現(xiàn)自己的不足,彌補自己的不足。最后,特別感謝老師對我的幫助,讓我最終順利完成秒表的設(shè)計實驗。6. 參考文獻: 1李國洪、胡輝、沈明山.EDA技術(shù)與實驗.機械工業(yè)出版社,2009 2閆石數(shù)字電子技術(shù)基礎(chǔ)(第五版)高等教育出版社,20063 (美)John F.W

12、akerly.數(shù)字設(shè)計:原理與實踐(原書第四版).北京:機械工業(yè)出版社,2007.57. 附錄(各模塊源程序):(1)分頻器:48MHz到1KHz分頻器:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_Unsigned.All;- Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the f

13、ollowing library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity fp48m_to_1k is port ( clk : in STD_LOGIC; q : out STD_LOGIC);end fp48m_to_1k;architecture Behavioral of fp48m_to_1k issignal sum:std_logic_vector(15 downto 0):=(others

14、=>'0');signal q1:std_logic:='0'beginprocess(clk)beginif falling_edge(clk) then if sum=47999 then sum<=(others=>'0');else sum<=sum+1;end if;end if;-q<=q1;end process;q<=sum(15);end Behavioral;1KHz到100Hz分頻器:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD

15、_LOGIC_Unsigned.All;- Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;enti

16、ty fp1k_to_100 is port ( clk : in STD_LOGIC; q : out STD_LOGIC);end fp1k_to_100;architecture Behavioral of fp1k_to_100 issignal sum:std_logic_vector(2 downto 0):=(others=>'0');signal q1:std_logic:='0'beginprocess(clk)beginif falling_edge(clk) then if sum=4 then sum<=(others=>

17、;'0');q1<=not q1;else sum<=sum+1;end if;end if;q<=q1;end process;end Behavioral;(2)計數(shù)器:模6計數(shù)器:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;- Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.

18、NUMERIC_STD.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity cnt_6 is Port ( clk : in STD_LOGIC; clr : in STD_LOGIC; en : in STD_LOGIC; co : out STD_LOGIC; sum : out STD_LOGIC_VECTOR (2 downto 0)

19、;end cnt_6;architecture Behavioral of cnt_6 issignal temp:std_logic_vector(2 downto 0);beginprocess(clk,clr,temp)beginif clr='1' then temp<="000"co<='0'elsif (clk='1' and clk'event) thenif en='1' thenif temp="101" thentemp<="000&q

20、uot;else temp<=temp+1;end if;end if;end if;if temp="101" and en='1' thenco<='1'else co<='0'end if;sum<=temp;end process;end Behavioral;模10計數(shù)器:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;- Uncomment the following library decla

21、ration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity cnt_10 is Port ( clk : in STD_LOGIC; clr : in STD_LOGIC;

22、 en : in STD_LOGIC; co : out STD_LOGIC; sum : out STD_LOGIC_VECTOR (3 downto 0);end cnt_10;architecture Behavioral of cnt_10 issignal temp:std_logic_vector(3 downto 0);beginprocess(clk,clr,temp)beginif clr='1' then temp<="0000"co<='0'elsif (clk='1' and clk'

23、;event) thenif en='1' thenif temp="1001" thentemp<="0000"else temp<=temp+1;end if;end if;end if;if temp="1001" and en='1' thenco<='1'else co<='0'end if;sum<=temp;end process;end Behavioral;計數(shù)器模塊級聯(lián):library IEEE;use IEEE.STD_

24、LOGIC_1164.ALL;- Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity ji

25、shuqi is Port ( clk : in STD_LOGIC; clr : in STD_LOGIC; cnt : in STD_LOGIC; cout0 : out STD_LOGIC_VECTOR (3 downto 0); cout1 : out STD_LOGIC_VECTOR (3 downto 0); cout2 : out STD_LOGIC_VECTOR (3 downto 0); cout3 : out STD_LOGIC_VECTOR (2 downto 0); cout4 : out STD_LOGIC_VECTOR (3 downto 0); cout5 : o

26、ut STD_LOGIC_VECTOR (2 downto 0); coa : out std_logic);end jishuqi;architecture Behavioral of jishuqi isCOMPONENT fp1k_to_100PORT(clk : IN std_logic; q : OUT std_logic);END COMPONENT;COMPONENT cnt_10PORT(clk : IN std_logic;clr : IN std_logic;en : IN std_logic; co : OUT std_logic;sum : OUT std_logic_

27、vector(3 downto 0);END COMPONENT;COMPONENT cnt_6PORT(clk : IN std_logic;clr : IN std_logic;en : IN std_logic; co : OUT std_logic;sum : OUT std_logic_vector(2 downto 0);END COMPONENT;signal clk_100, o1,o2,o3,o4,o5 : std_logic;beginInst_fp1k_to_100: fp1k_to_100 PORT MAP(clk =>clk,q =>clk_100);In

28、st_cnt_10a: cnt_10 PORT MAP(clk =>clk_100 ,clr =>clr ,en =>cnt ,co =>o1 ,sum =>cout0 );Inst_cnt_10b: cnt_10 PORT MAP(clk =>clk_100 ,clr =>clr ,en =>o1,co =>o2 ,sum =>cout1 );Inst_cnt_10c: cnt_10 PORT MAP(clk =>clk_100 ,clr =>clr ,en =>o2 ,co =>o3 ,sum =>c

29、out2 );Inst_cnt_6a: cnt_6 PORT MAP(clk =>clk_100 ,clr =>clr ,en =>o3 ,co =>o4 ,sum =>cout3 );Inst_cnt_10d: cnt_10 PORT MAP(clk =>clk_100 ,clr =>clr ,en =>o4 ,co =>o5 ,sum =>cout4 );Inst_cnt_6b: cnt_6 PORT MAP(clk =>clk_100 ,clr =>clr ,en =>o5 ,co =>coa ,sum

30、=>cout5 );end Behavioral;(3)數(shù)據(jù)鎖存器:library IEEE;use IEEE.STD_LOGIC_1164.ALL;- Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in

31、this code.-library UNISIM;-use UNISIM.VComponents.all;entity latch is Port ( cnt_0 : in STD_LOGIC_VECTOR (3 downto 0); cnt_1 : in STD_LOGIC_VECTOR (3 downto 0); cnt_2 : in STD_LOGIC_VECTOR (3 downto 0); cnt_3 : in STD_LOGIC_VECTOR (3 downto 0); cnt_4 : in STD_LOGIC_VECTOR (3 downto 0); cnt_5 : in ST

32、D_LOGIC_VECTOR (3 downto 0); display_in : in STD_LOGIC; cnt0 : out STD_LOGIC_VECTOR (3 downto 0); cnt1 : out STD_LOGIC_VECTOR (3 downto 0); cnt2 : out STD_LOGIC_VECTOR (3 downto 0); cnt3 : out STD_LOGIC_VECTOR (3 downto 0); cnt4 : out STD_LOGIC_VECTOR (3 downto 0); cnt5 : out STD_LOGIC_VECTOR (3 dow

33、nto 0);end latch;architecture Behavioral of latch isbeginprocess(cnt_0,cnt_1,cnt_2,cnt_3,cnt_4,cnt_5,display_in)beginif display_in='1' thencnt0<=cnt_0;cnt1<=cnt_1;cnt2<=cnt_2;cnt3<=cnt_3;cnt4<=cnt_4;cnt5<=cnt_5;end if;end process;end Behavioral;(4)顯示譯碼模塊:library IEEE;use IE

34、EE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;- Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISI

35、M;-use UNISIM.VComponents.all;entity display is Port ( clk_1k : in STD_LOGIC; cnt0 : in STD_LOGIC_VECTOR (3 downto 0); cnt1 : in STD_LOGIC_VECTOR (3 downto 0); cnt2 : in STD_LOGIC_VECTOR (3 downto 0); cnt3 : in STD_LOGIC_VECTOR (3 downto 0); cnt4 : in STD_LOGIC_VECTOR (3 downto 0); cnt5 : in STD_LOG

36、IC_VECTOR (3 downto 0); dig_out : out STD_LOGIC_VECTOR (7 downto 0); seg_out : out STD_LOGIC_VECTOR (6 downto 0); dig_in : out std_logic_vector (2 downto 0) );end display;architecture Behavioral of display issignal bcd: std_logic_vector(3 downto 0):="1000"signal seg: std_logic_vector(6 dow

37、nto 0):="1111110"signal dig: std_logic_vector(2 downto 0):="000"beginprocess(clk_1k)beginif clk_1k'event and clk_1k='1' thenif dig=7 then dig<="000"elsedig<=dig+1;end if;end if;end process;process(dig)begincase dig iswhen "000"=>dig_out<

38、;="11111110"when "001"=>dig_out<="11111101"when "010"=>dig_out<="11111011"when "011"=>dig_out<="11110111"when "100"=>dig_out<="11101111"when "101"=>dig_out<="1101111

39、1"when "110"=>dig_out<="10111111"when others=>dig_out<="01111111"end case;end process;process(dig)begincase dig iswhen "000"=>bcd<=cnt0;when "001"=>bcd<=cnt1;when "010"=>bcd<="1010"when "011

40、"=>bcd<=cnt2;when "100"=>bcd<=cnt3;when "101"=>bcd<="1010"when "110"=>bcd<=cnt4;when "111"=>bcd<=cnt5;when others=>bcd<="1010"end case;end process;process(bcd)begincase bcd iswhen "0000"=&g

41、t;seg<="0000001"when "0001"=>seg<="1001111"when "0010"=>seg<="0010010"when "0011"=>seg<="0000110"when "0100"=>seg<="1001100"when "0101"=>seg<="0100100"when &

42、quot;0110"=>seg<="0100000"when "0111"=>seg<="0001111"when "1000"=>seg<="0000000"when "1001"=>seg<="0000100"when others=>seg<="1111110"end case;end process;seg_out<=seg;end Behavioral

43、;(5)控制模塊:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;- Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives

44、 in this code.-library UNISIM;-use UNISIM.VComponents.all;entity control is Port ( clk : in STD_LOGIC; p : in STD_LOGIC; q : in STD_LOGIC; clr : out STD_LOGIC; enc : out STD_LOGIC; enl : out STD_LOGIC);end control;architecture Behavioral of control issignal state:std_logic_vector(1 downto 0):="

45、00"signal n_state:std_logic_vector(1 downto 0):="00"signal key:std_logic_vector(1 downto 0);beginkey<=p & q;process(state,key)begincase state iswhen "00"=>if key="10" thenn_state<="01"elsen_state<=state;end if;when "01"=>case

46、key iswhen "10"=>n_state<="11"when "01"=>n_state<="10"when others=>n_state<=state;end case;when "10"=>if key="01" then n_state<="01"else n_state<=state;end if;when others=>case key iswhen "10&quo

47、t;=>n_state<="01"when "01"=>n_state<="00"when others=>n_state<=state;end case;end case;end process; process(clk)beginif falling_edge(clk) then state<=n_state;end if;end process; process(state)begincase state iswhen "00"=>clr<='1&

48、#39;enc<='1'enl<='1'when "01"=>clr<='0'enc<='1'enl<='1'when "10"=>clr<='0'enc<='1'enl<='0'when others=>clr<='0'enc<='0'enl<='1'end case;end process;en

49、d Behavioral;(6)按鍵消抖模塊:消抖:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;- Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the following library declaration if instantiating- any

50、Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity xiaodou is Port ( clk : in STD_LOGIC; key_in : in STD_LOGIC; key_out : out STD_LOGIC);end xiaodou;architecture Behavioral of xiaodou issignal k1,k2: STD_LOGIC;signal cnt : STD_LOGIC_VECTOR (1 downto 0);beginprocess(clk

51、,key_in)beginif clk'event and clk ='0' thenif cnt =3 thenk1<='1'elsek1<='0'cnt<=cnt+1;end if;k2<=k1;end if;if key_in ='0' thencnt <="00"end if;end process;key_out <= not k1 and k2;end Behavioral;開關(guān)消抖組合:library IEEE;use IEEE.STD_LOGIC_1164.ALL;- Uncomment the following library declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the following library decl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論