




免費預(yù)覽已結(jié)束,剩余4頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于VHDL語言的數(shù)字時鐘設(shè)計摘 要:文中運用VHDL語言,實現(xiàn)循環(huán)顯示的數(shù)字時鐘,并利用Quartus軟件進(jìn)行編輯、綜合、波形仿真,并下載到實驗箱的EP1C3T144C8芯片中,經(jīng)實際電路測試,該系統(tǒng)系統(tǒng)性能可靠。關(guān)鍵詞:EDA;VHDL;數(shù)字時鐘;波形仿真;1引言1.1 VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成電路硬件描述語言)誕生于1982年,是由美國國防部開發(fā)的一種快速設(shè)計電路的工具,目前已經(jīng)成為IEEE(The Institute of Electrical and Electronics Engineers)的一種工業(yè)標(biāo)準(zhǔn)硬件描述語言。相比傳統(tǒng)的電路系統(tǒng)的設(shè)計方法,VHDL具有多層次描述系統(tǒng)硬件功能的能力,支持自頂向下(Top to Down)和基于庫(LibraryBased)的設(shè)計的特點,因此設(shè)計者可以不必了解硬件結(jié)構(gòu)。從系統(tǒng)設(shè)計入手,在頂層進(jìn)行系統(tǒng)方框圖的劃分和結(jié)構(gòu)設(shè)計,在方框圖一級用VHDL對電路的行為進(jìn)行描述,并進(jìn)行仿真和糾錯,然后在系統(tǒng)一級進(jìn)行驗證,最后再用邏輯綜合優(yōu)化工具生成具體的門級邏輯電路的網(wǎng)表,下載到具體的CPLD器件中去,從而實現(xiàn)可編程的專用集成電路(ASIC)的設(shè)計。 數(shù)字時鐘是數(shù)字電路中的一個典型應(yīng)用,實際的硬件設(shè)計用到的器件較多,連線比較復(fù)雜,而且會產(chǎn)生一定的延時。隨著復(fù)雜可編程邏輯器件(FPGA)的廣泛應(yīng)用,以EDA工具作為開發(fā)手段,運用VHDL語言。將使整個系統(tǒng)大大簡化。提高整體的性能和可靠性。 本文用VHDL在FPGA器件上實現(xiàn)一個從秒到時顯示,并能在整點報時的計時系統(tǒng),能夠用十進(jìn)制數(shù)碼顯示計時的時間,他不僅計時準(zhǔn)確而且具有體積小、可靠性高、功耗低的特點。1.2 QUARTUS II開發(fā)系統(tǒng) 一個理想的可編程邏輯設(shè)計環(huán)境應(yīng)當(dāng)滿足各種各樣的設(shè)計要求。例如,應(yīng)當(dāng)支持具有不同機(jī)構(gòu)的器件,能在多種平臺上運行,具有易于使用的界面并提供廣泛的特性。而且,該設(shè)計環(huán)境還應(yīng)當(dāng)允許設(shè)計者自由選擇他們使用的設(shè)計輸入方法和工具。Altera的QUARTUS II開發(fā)系統(tǒng)是一種全集成化的可編程邏輯設(shè)計環(huán)境,能滿足所有這些要求。 l)結(jié)構(gòu)無關(guān) QUARTUS II的Compiler(編譯程序)是QUARTUS II系統(tǒng)的核心,它支持Altera的Classic、 MAX5000、 MAX7000、 MAX9000FLEX8000 、FLEX6000和FLEX l0K可編程邏輯器件系列,提供了工業(yè)界唯一真正與結(jié)構(gòu)無關(guān)的可編程邏輯設(shè)計環(huán)境。該編譯程序還提供強(qiáng)有力的邏輯綜合與最小化功能,使用戶比較容易將其設(shè)計集成到器件中。 2)多平臺 QUARTUS II軟件既可以工作PC機(jī)上,也可以用于工作站。如486PC機(jī)、奔騰PC機(jī)、Sun SPARC工作站、HP9000系列700型工作站、IBM RISI系統(tǒng)/6000或DEC Alpha AXP工作站。 3)開放的界面 Altera公司的工作與其它EDA廠家緊密結(jié)合,以使用QUARTUS II2數(shù)字秒表的基本設(shè)計原理 數(shù)字時鐘的原理框圖如圖1所示。他主要由5個部分組成,分別是:脈沖發(fā)生器、外部按鍵控制使能端、EP1C3T144C8芯片、譯碼驅(qū)動電路、數(shù)碼管。脈沖發(fā)生器CycloneEP1C3T144C8 數(shù)碼管譯碼器按鍵整時報警器圖1 數(shù)字時鐘原理圖3系統(tǒng)設(shè)計3.1系統(tǒng)方框圖的劃分和結(jié)構(gòu)設(shè)計 根據(jù)數(shù)字時鐘的系統(tǒng)原理框圖(圖1所示),設(shè)計系統(tǒng)的頂層電路圖如圖2所示。圖2(1) 數(shù)字鐘主電路圖2(2) 數(shù)字鐘設(shè)計電路圖1 圖2中兩個按鍵分別控制數(shù)字鐘的使能,本實驗中PIO4是數(shù)字時鐘的計時清零端,設(shè)為低電平時清零,高電平時使數(shù)字鐘開始計數(shù)。另外一個按鍵接到PIO6,鍵7作為手動單脈沖信號,其功能是作為分計時器的一個脈沖信號。當(dāng)置單脈沖信號和秒計時器的進(jìn)位脈沖有一個來臨時就會給分計時器自動加一。在EP1C3T144C8芯片當(dāng)中,用VHDL語言書寫的程序可以通過USB接口下載到芯片當(dāng)中,程序主要實現(xiàn)循環(huán)計時功能(從0到24小時循環(huán)),并在整點時報時。它主要包括了四個子模塊和一個頂層文件。它們分別是SECOND(秒計時器),MINUTE(分計時器),HOUR(時計時器),SPEAKER(整時報警器)和CLOCK_TOP(頂層源程序)。SECOND主要實現(xiàn)六和十進(jìn)制計數(shù),完成對秒的計時。因為要將其計時的數(shù)值顯示到兩個數(shù)碼管上,并且是六十進(jìn)制的,所以用軟件通過自動修正,使EP1CT144C8中的十六進(jìn)制計時變成相應(yīng)的十進(jìn)制和六進(jìn)制計時。方法是,當(dāng)計時滿9時自動給中間信號加7,即可將十六進(jìn)制計時轉(zhuǎn)換為十進(jìn)制的。MINUTE同樣實現(xiàn)同樣功能,只不過是分計時的脈沖信號是秒計時的進(jìn)位和鍵7的輸入,并將其產(chǎn)生進(jìn)位信號作為十計時的脈沖輸入和整時報警器的使能信號。HOUR是時計時器。此計時器時24進(jìn)制的,其脈沖信號為分計時的進(jìn)位信號。SPEAKER是整時報警器。當(dāng)分計時器有進(jìn)位信號時,它會讓瓷器件接收另一時鐘脈沖信號X,驅(qū)動蜂鳴器報警。3.2各模塊的VHDL源程序2 采用VHDL描述數(shù)字時鐘的電路時,根據(jù)圖2所示的數(shù)字時鐘系統(tǒng)頂層電路圖,按照自頂向下的設(shè)計思路,編寫各個模塊的VHDL源程序,最后再對各個模塊進(jìn)行組合,編寫頂層描述的VHDL源程序,各個模塊的VHDL源程序編寫較為簡單,可以根據(jù)各自的功能,相應(yīng)地寫出。頂層文件源代碼: library ieee;use ieee.std_logic_1164.all;entity clock_top isport(clk,x:in std_logic;reset,setmin:in std_logic; speake:out std_logic; dalout,dallout:out std_logic_vector(6 downto 0); dalllout:out std_logic_vector(6 downto 0);end clock_top;architecture a of clock_top isCOMPONENT second PORT( clk,reset,setmin: IN STD_LOGIC; daout:out std_logic_vector(6 downto 0); enmin:OUT STD_LOGIC);END COMPONENT;COMPONENT speaker PORT( clk,enspe,reset: IN STD_LOGIC; daout:out std_logic); END COMPONENT;COMPONENT minute PORT( clk,clk1,reset:IN STD_LOGIC; enhour:OUT STD_LOGIC; daout:out std_logic_vector(6 downto 0);END COMPONENT;COMPONENT hourPORT( clk,reset:IN STD_LOGIC; daout:out std_logic_vector(6 downto 0);END COMPONENT;signal enmin_re,enhour_re:std_logic;beginu1:second port map (reset=reset, clk=clk, setmin=setmin, enmin=enmin_re, daout=dalout);u2:minute port map (clk=enmin_re, clk1=clk, reset=reset, enhour=enhour_re, daout=dallout);u3:hour port map (clk=enhour_re, reset=reset, daout=dalllout);u4:speaker port map(clk=x, reset=reset, enspe=enhour_re, daout=speake); end a;秒計時源代碼;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport( clk,reset,setmin:in std_logic; enmin:out std_logic; daout:out std_logic_vector(6 downto 0);end entity second;architecture fun of second is signal count:std_logic_vector(6 downto 0); signal enmin_1,enmin_2:std_logic;begin daout=count; enmin_2=(setmin and clk); enmin=(enmin_1 or enmin_2); process(clk,reset,setmin)begin if(reset=0)then count=0000000; elsif(clk event and clk=1)thenif(count(3 downto 0)=1001)then if(count16#60#)then if(count=1011001)then enmin_1=1;count=0000000;else count=count+7;end if; elsecount=0000000;end if;elsif(count16#60#)then count=count+1;enmin_1=0 after 100 ns;elseend if;end if;end process;end fun;分計時源代碼;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute isport( clk,clk1,reset:in std_logic; enhour:out std_logic; daout:out std_logic_vector(6 downto 0);end entity minute;architecture fun of minute is signal count:std_logic_vector(6 downto 0); signal enhour_1:std_logic;begin daout=count; enhour=enhour_1 ;process(clk1,reset)begin if(reset=0)then count=0000000; elsif(clk event and clk=1)thenif(count(3 downto 0)=1001)then if(count16#60#)then if(count=1011001)then enhour_1=1; count=0000000;else count=count+7;end if; elsecount=0000000;end if;elsif(count16#60#)then count=count+1; enhour_1=0 after 100 ns;else count=0000000; end if; end if; end process;end fun;時計時源代碼;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour isport( clk,reset:in std_logic; daout:out std_logic_vector(6 downto 0);end entity hour;architecture fun of hour is signal count:std_logic_vector(6 downto 0);begin daout=count;process(clk,reset)begin if(reset=0)then count=0000000; elsif(clk event and clk=1)thenif(count(3 downto 0)=1001)then if(count16#23#)then count=count+7;elsecount=0000000;end if;elsif(count16#23#)then count=count+1;else count=0000000; end if; end if; end process;end fun;整時報警器源代碼;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speaker isport( clk:in std_logic;reset,enspe:in std_logic; daout:out std_logic);end entity speaker;architecture fun of speaker issignal speake1:std_logic;begindaout=speake1;process(clk,reset,enspe)begin if(reset=0)thenspeake1=0; elsif(enspe=1)then speake1=clk;elsespeake1=0;end if; end process;end fun;4系統(tǒng)的功能仿真 基于GW48實驗箱數(shù)字系統(tǒng)設(shè)計軟件,是一套完整的EDA軟件,能夠?qū)λO(shè)計的數(shù)字電子系統(tǒng)進(jìn)行時序仿真和功能仿真。 采用CYCLONE系列的EP1C3T144C8的 EDA軟件,對所編寫數(shù)字時鐘VHDL源程序進(jìn)行編譯、邏輯綜合,自動地把VHDL描述轉(zhuǎn)變?yōu)殚T級
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙十一營銷美容院活動
- 銀行元旦活動方案
- 永州寧遠(yuǎn)縣招聘教師筆試真題2024
- 2025年縫紉工理論試題
- 跨平臺性能一致性分析-洞察闡釋
- 新醫(yī)科框架下的遺傳學(xué)教學(xué)目標(biāo)和核心能力建設(shè)
- 中職院校智慧校園建設(shè)路徑與實踐
- 推動種業(yè)振興的策略及實施路徑
- 2025至2030年中國球墨鑄鐵電信井蓋行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國牛仔中褲行業(yè)投資前景及策略咨詢報告
- 急性心肌梗死健康教育課件
- 2024年北京市中考英語模擬試卷
- 全新離婚登記協(xié)議下載(2024版):雙方財產(chǎn)查核與評估程序
- 2021版反洗錢考試題庫
- 數(shù)據(jù)崗位崗位說明書
- 湖北省五市州2023-2024學(xué)年高一下學(xué)期7月期末地理試題(原卷版)
- 修腳師培訓(xùn)手冊
- 2025屆高考政治一輪復(fù)習(xí):統(tǒng)編版選擇性必修3《邏輯與思維》重點知識點提綱
- 凝中國心鑄中華魂鑄牢中華民族共同體意識-小學(xué)民族團(tuán)結(jié)愛國主題班會課件
- 6.2+民族區(qū)域自治制度+課件高中政治統(tǒng)編版必修三政治與法治+
- 蘭州大學(xué)強(qiáng)基計劃試題
評論
0/150
提交評論