數(shù)字電子鐘的VHDL程序設(shè)計實驗報告_第1頁
數(shù)字電子鐘的VHDL程序設(shè)計實驗報告_第2頁
數(shù)字電子鐘的VHDL程序設(shè)計實驗報告_第3頁
數(shù)字電子鐘的VHDL程序設(shè)計實驗報告_第4頁
數(shù)字電子鐘的VHDL程序設(shè)計實驗報告_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗報告實驗項目名稱:數(shù)字電子鐘的vhdl程序設(shè)計實驗項目性質(zhì):普通試驗所屬課程名稱:vhdl程序設(shè)計實驗計劃學(xué)時:4學(xué)時一、 實驗?zāi)康?掌握vhdl程序設(shè)計方法二、 實驗內(nèi)容和要求能夠?qū)崿F(xiàn)小時(24進制)、分鐘和秒鐘(60進制)的計數(shù)功能具有復(fù)位功能功能擴展:具有復(fù)位、整點報時提示、定時鬧鐘等功能在軟件工具平臺上,進行vhdl語言的各模塊編程輸入、編譯實現(xiàn)和仿真驗證。三、 實驗主要儀器設(shè)備和材料 計算機四、 實驗方法、步驟及結(jié)果測試數(shù)字電子鐘由計數(shù)器、比較器,寄存器和校時電路組成。振蕩器產(chǎn)生穩(wěn)定的高頻脈沖信號,作為數(shù)字鐘的時間基準(zhǔn),然后經(jīng)過分頻器輸出標(biāo)準(zhǔn)秒脈沖。秒計數(shù)器滿60后向分計數(shù)器進位

2、,分計數(shù)器滿60后向小時計數(shù)器進位,小時計數(shù)器按照“24翻1”規(guī)律計數(shù)。計數(shù)器的輸出分別經(jīng)譯碼器送顯示器顯示。1)時鐘產(chǎn)生電路。將開發(fā)板上的時鐘信號經(jīng)過分頻得到不同頻率的時鐘,分別作用于定時計數(shù)、led掃描。2)控制邏輯電路。完成電子鐘的系統(tǒng)邏輯控制,包括計時控制、時間校對、顯示掃描的邏輯控制,可完成系統(tǒng)復(fù)位、調(diào)整時間的功能。3)計時電路。主要按照時鐘模式完成計時功能。4)鬧鐘電路。通過輸入信號與電子鐘比較,輸出鬧鐘信號。各功能模塊的設(shè)計60進制計數(shù)器設(shè)計秒數(shù)的計數(shù)以1hz的輸入clks為觸發(fā)信號,分?jǐn)?shù)的計數(shù)以秒數(shù)的進位輸出作為觸發(fā)。是60進制計數(shù)器器件圖形。接口: clks:1hz時鐘信號

3、outs:輸出顯示 res:復(fù)位信號 inmin:輸出十進制信號每來一個clks上升沿,計數(shù)器就加1,當(dāng)計數(shù)器當(dāng)?shù)竭_第60個上升沿時,由59歸零,仿真符合60進制計數(shù)器的要求。24進制計數(shù)器設(shè)計24進制計數(shù)器的結(jié)構(gòu)和原理與60進制計數(shù)器相類似,只是將除以60改為除以24。下是生成的24進制計數(shù)器器件圖形。接口: clkh:分的進位信號 res:復(fù)位信號 outh:輸出十進制的小時數(shù)每來一個clkh上升沿,計數(shù)器就加1,當(dāng)計數(shù)器當(dāng)?shù)竭_第24個上升沿時,outh由24歸零,仿真符合24進制計數(shù)器的要求。整點報時及鬧鐘設(shè)計思路及原理圖當(dāng)計數(shù)時間在59分59秒時,報時模塊輸出報時控制信號。在報時設(shè)定時

4、間與計數(shù)信號相同時,鬧鐘控制信號輸出。接口: nzs1 nzm2 nzh1:時鐘計數(shù)信號 nzs2 nzm2 nzh2:設(shè)定鬧鐘信號 q:報時響鈴信號由圖可知,當(dāng)時鐘計數(shù)信號和設(shè)定鬧鐘信號相同時,報時響鈴信號q輸出。當(dāng)時鐘計數(shù)信號為零(整點)時,報時響鈴信號q輸出。頂層設(shè)計通過調(diào)用各模塊功能,得出如下仿真波形,證明設(shè)計成功,能夠完成鬧鐘功能及整點報時功能。接口:clk,res:輸入時鐘脈沖,復(fù)位信號 leds,ledm,ledh:時鐘顯示信號 nzs,nzm,nzh:輸入鬧鐘設(shè)置信號 qqq :響鈴信號程序代碼頂層程序文件library ieee;use ieee.std_logic_1164

5、.all;use ieee.std_logic_unsigned.all;entity clock isport(clk,res:in std_logic; leds,ledm,ledh:out std_logic_vector(5 downto 0); nzs,nzm,nzh:in std_logic_vector(5 downto 0); qqq :out std_logic); end clock;architecture behav of clock iscomponent sec port(clks: in std_logic; res1: in std_logic; inmin:o

6、ut std_logic; outs:out std_logic_vector(5 downto 0);end component;component minport(clkm: in std_logic; res2: in std_logic; inhour:out std_logic; outm:out std_logic_vector(5 downto 0);end component;component hourport(clkh: in std_logic; res3: in std_logic; outh:out std_logic_vector(5 downto 0);end c

7、omponent;component nzport(nzs1,nzs2,nzm1,nzm2,nzh1,nzh2:in std_logic_vector(5 downto 0); q :out std_logic);end component; signal s: std_logic_vector(5 downto 0);signal m: std_logic_vector(5 downto 0);signal h: std_logic_vector(5 downto 0);signal a: std_logic;signal b: std_logic;signal c: std_logic;b

8、eginu1 :sec port map(clks=clk,res1=res,inmin=a,outs=s);u2 :min port map(clkm=a,res2=res,inhour=b,outm=m);u3 :hour port map(clkh=b,res3=res,outh=h);u4:nzportmap(nzs1=s,nzm1=m,nzh1=h,nzs2=nzs,nzm2=nzm,nzh2=nzh,q=c);leds=s;ledh=h;ledm=m;qqq=c;end architecture behav;秒鐘計時模塊library ieee;use ieee.std_logic

9、_1164.all;use ieee.std_logic_unsigned.all;entity sec isport(clks: in std_logic; res: in std_logic; inmin:out std_logic; outs:out std_logic_vector(5 downto 0);end sec;architecture behav of sec issignal s1:std_logic_vector(5 downto 0);signal s2:std_logic;beginprocess(clks,res)beginif res =1 then s1=00

10、0000;s2=0;elsif clksevent and clks=1 then if s1111011 then s1=s1+1;s2=0; elsif s1=111011 then s1=000000;s2=1; end if;end if;inmin=s2;outs=s1;end process;end behav;分鐘計時模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity min isport(clkm: in std_logic; res: in std_logic; i

11、nhour:out std_logic; outm:out std_logic_vector(5 downto 0);end min;architecture behav of min issignal m1:std_logic_vector(5 downto 0):=111010;signal m2:std_logic;beginprocess(clkm,res)beginif res =1 then m1=000000;m2=0;elsif clkmevent and clkm=1 then if m1111011 then m1=m1+1;m2=0; elsif m1=111011 th

12、en m1=000000;m2=1; end if;end if;inhour=m2;outm=m1;end process;end behav;時鐘計時模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour isport(clkh: in std_logic; res: in std_logic; outh:out std_logic_vector(5 downto 0);end hour;architecture behav of hour issignal h1:std_

13、logic_vector(5 downto 0);beginprocess(clkh,res)beginif res =1 then h1=000000;elsif clkhevent and clkh=1 then if h1011000 then h1=h1+1; elsif h1=011000 then h1=000000; end if;end if;outh=h1;end process;end behav;鬧鐘及整點報時模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity

14、nz isport(nzs1,nzs2,nzm1,nzm2,nzh1,nzh2:in std_logic_vector(5 downto 0); q :out std_logic);end nz;architecture behav of nz issignal qq:std_logic;beginprocess(nzs1,nzs2,nzm1,nzm2,nzh1,nzh2,qq)begin if (nzs1=nzs2 and nzm1=nzm2 and nzh1=nzh2)or (nzs1=000000and nzm1=000000) then qq=1; else qq=0; end if;q=qq;end process;end behav;總結(jié)本設(shè)計是用vhdl語言編寫編譯建模設(shè)計成的。由于初學(xué)vhdl語言,設(shè)計初期遇到了很多困難,在經(jīng)過一段時間的查閱資料以及老師的指導(dǎo)和同學(xué)之間的相互討論后完成了設(shè)計,但程序即使編譯成功仿真還是遇到了很多困難,比如不知道該如何進行模塊例化

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論