基于VHDL的數(shù)字時鐘論文_第1頁
基于VHDL的數(shù)字時鐘論文_第2頁
基于VHDL的數(shù)字時鐘論文_第3頁
基于VHDL的數(shù)字時鐘論文_第4頁
基于VHDL的數(shù)字時鐘論文_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘要 隨著基于CPLD的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴大與深入,EDA技術(shù)在電子信息、通信、自動控制用計算機等領(lǐng)域的重要性日益突出。作為一個學(xué)電子信息專業(yè)的學(xué)生,我們必須不斷地了解更多的新產(chǎn)品信息,這就更加要求我們對EDA有個全面的認(rèn)識。本程序設(shè)計的是基于VHDL的數(shù)字時鐘。采用EDA作為開發(fā)工具,VHDL語言為硬件描述語言,QUARTUS II作為程序運行平臺,所開發(fā)的程序通過調(diào)試運行、波形仿真驗證,初步實現(xiàn)了設(shè)計目標(biāo)。本程序使用的硬件描述語言VHDL,可以大大降低了硬件數(shù)字系統(tǒng)設(shè)計的入門級別,讓人感覺就是C語言的親近。ABSTRACTWith the EDA-based CPLD deve

2、lopment and application of technology to expand the field of depth, EDA technology in electronic information, communications, automatic control with the importance of computer and other fields have become increasingly prominent. As a professional electronics and information science students, we must

3、 continue to learn more about the new product information, which requires us to more EDA has a comprehensive understanding of。The program design is a simple flower design。The use of EDA as a development tool, VHDL language for hardware description language, MAX + PLUS II program runs as a platform f

4、or the development of procedures by running through the debugging, waveform simulation, the initial realization of the design goals。This procedure used in hardware description language VHDL, the hardware can significantly reduce the number of entry-level system design, give people the impression tha

5、t a close relative of C language. 目 錄第一章概論- 1 -1.1課程背景:- 1 -1.2課程目標(biāo)- 2 -第二章電子鐘的設(shè)計要求和工作原理- 2 -2.1設(shè)計要求- 2 -2.2 系統(tǒng)設(shè)計方案概述及工作原理- 2 -2.3 數(shù)字電子鐘設(shè)計源程序- 2 -第三章開發(fā)工具簡介- 3 -3. 1EDA技術(shù)- 3 -3. 2硬件描述語言VHDL- 3 -3. 3 VHDL的設(shè)計流程- 4 -第四章時鐘設(shè)計模塊- 6 -4.1時鐘分頻模塊- 6 -4.2 計時模塊- 6 -4.3顯示模塊- 6 -4.3.1 計時位選擇電路- 9 -4.3.2 七段顯示譯碼電路- 1

6、1 -第五章 波形仿真- 12 -第六章 本次課程設(shè)計的心得體會- 14 -致謝- 15 -參考文獻(xiàn)- 16 - 引言 數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準(zhǔn)確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。數(shù)字鐘從原理上講是一種典型的數(shù)字電路,其中包括了組合邏輯電路和時序電路。因此,我們此次設(shè)計與制做數(shù)字鐘就是為了了解數(shù)字鐘的原理,從而學(xué)會制作數(shù)字鐘.而且通過數(shù)字鐘的制作進(jìn)一步的了解各種在制作中用到的中小規(guī)模集成電路的作用及實用方法.且由于數(shù)字鐘包括組合邏輯電路和時敘電路.通過它可以進(jìn)一步學(xué)習(xí)與掌握各種組合邏輯電路與時序電路的原

7、理與使用方法. 第一章概論 1 .1課程背景 FPGA系統(tǒng)設(shè)計初級班培訓(xùn)課程主要幫助學(xué)員盡快掌握 CPLD/FPGA 的開發(fā)流程和設(shè)計方法,以工程實踐為例,循序漸進(jìn)的學(xué)習(xí)FPGA的集成開發(fā)環(huán)境,開發(fā)流程以及硬件電路設(shè)計等知識。每次課程都配有相關(guān)實戰(zhàn)訓(xùn)練,每個實戰(zhàn)訓(xùn)練題目都可以在紅色颶風(fēng)II代的FPGA硬件平臺上進(jìn)行下載驗證。通過實戰(zhàn),學(xué)員可以更好的理解消化課堂知識,工程實踐水平會得到迅速提高。 1.2 課程目標(biāo) 迅速掌握和使用CPLD/FPGA數(shù)字系統(tǒng)開發(fā)工具、開發(fā)流程,能夠獨立進(jìn)行初步的FPGA系統(tǒng)設(shè)計。經(jīng)過培訓(xùn),學(xué)員可以掌握HDL語言的初步開發(fā)能力,并且解決FPGA產(chǎn)品開發(fā)過程中的常見問題

8、,掌握基于FPGA的嵌入式系統(tǒng)(NIOSII)的設(shè)計和調(diào)試方法。 第2章開發(fā)工具簡介 3. 1EDA技術(shù)EDA是電子設(shè)計自動化(Electronic Design Automation)縮寫,是90年代初從CAD(計算機輔助設(shè)計)、CAM(計算機輔助制造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發(fā)展而來的。EDA技術(shù)是以計算機為工具,根據(jù)硬件描述語言HDL( Hardware Description language)完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標(biāo)芯片的適配編譯和編程下載等工作。典型的EDA工具中必須包含兩個特殊的軟

9、件包,即綜合器和適配器。綜合器的功能就是將設(shè)計者在EDA平臺上完成的針對某個系統(tǒng)項目的HDL、原理圖或狀態(tài)圖形描述,針對給定的硬件系統(tǒng)組件,進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得我們欲實現(xiàn)功能的描述文件。綜合器在工作前,必須給定所要實現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將軟件描述與給定的硬件結(jié)構(gòu)用一定的方式聯(lián)系起來。也就是說,綜合器是軟件描述與硬件實現(xiàn)的一座橋梁。綜合過程就是將電路的高級語言描述轉(zhuǎn)換低級的、可與目標(biāo)器件FPGA/CPLD相映射的網(wǎng)表文件。適配器的功能是將由綜合器產(chǎn)生的王表文件配置與指定的目標(biāo)器件中,產(chǎn)生最終的下載文件,如JED文件。適配所選定的目標(biāo)器件(FPGA/CPLD芯片)必須屬于

10、在綜合器中已指定的目標(biāo)器件系列。硬件描述語言HDL是相對于一般的計算機軟件語言,如:C、PASCAL而言的。HDL語言使用與設(shè)計硬件電子系統(tǒng)的計算機語言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計者可利用HDL程序來描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結(jié)構(gòu),并實現(xiàn)相應(yīng)邏輯功能的的門級或更底層的結(jié)構(gòu)網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開發(fā)來說,比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。3. 2硬件描述語言VHDLVHDL的英文全名是Very-High-Speed Inte

11、grated Circuit Hardware Description Language,誕生于1982年。1987年底,VHDL被IEEE和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言 。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡稱87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計環(huán)境,或宣布自己的設(shè)計工具可以和VHDL接口。此后VHDL在電子設(shè)計領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語言。1993年,IEEE對VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本,(簡稱93版)。現(xiàn)在

12、,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實上的通用硬件描述語言。有專家認(rèn)為,在新的世紀(jì)中,VHDL于Verilog語言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計任務(wù)。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風(fēng)格與句法是十分類似于一般的計算機高級語言。VHDL的程序結(jié)構(gòu)特點是將一項工程設(shè)計,或稱設(shè)計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可是部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設(shè)計實體定義了外部界面

13、后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。應(yīng)用VHDL進(jìn)行工程設(shè)計的優(yōu)點是多方面的。(1) 與其他的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計大規(guī)模電子系統(tǒng)的重要保證。(2) VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計早期就能查驗設(shè)計系統(tǒng)的功能可行性,隨時可對設(shè)計進(jìn)行仿真模擬。 (3) VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用功能。符合市場需求

14、的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現(xiàn)。(4)對于用VHDL完成的一個確定的設(shè)計,可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動的把VHDL描述設(shè)計轉(zhuǎn)變成門級網(wǎng)表。(4) VHDL對設(shè)計的描述具有相對獨立性,設(shè)計者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計實現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨立的設(shè)計。3. 3 VHDL的設(shè)計流程 (1) 設(shè)計輸入根據(jù)電路設(shè)計所提出的要求,將程序輸入到VHDL編輯器中去編輯。 (2) 功能級模擬用VHDL,模擬器對編輯后的程序進(jìn)行模擬,如果達(dá)不到設(shè)計要求,則可以重新修改程序,直到通過功能模擬。 (3) 邏輯綜合與優(yōu)化 將通過功能模擬的程序放

15、到VHDL編譯器中,進(jìn)行邏輯綜合與優(yōu)化。 (4) 門級模擬對電路用VHDL。仿真器仿真??蓪﹂T級電路的延時、定時狀態(tài)、驅(qū)動能力等進(jìn)行仿真。如不符合要求,可重復(fù)步驟(3),再門級模擬,直到符合要求止。 (5) 版圖生成 用相應(yīng)的軟件處理后,就可以拿去制版。第三章 數(shù)字電子鐘的工作原理2.1 系統(tǒng)設(shè)計方案頂層原理圖2.2 秒和分鐘計數(shù)器-功 能:60進(jìn)制計數(shù)器-接 口:clk -時鐘輸入- qout1-個位BCD輸出- qout2-十位BCD輸出- carry-進(jìn)位信號輸出-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_un

16、signed.all;use ieee.std_logic_arith.all;entity fen60 is port(clk : in std_logic; rst : in std_logic; qout1 : out std_logic_vector(3 downto 0); qout2 : out std_logic_vector(3 downto 0); carry : out std_logic);end fen60;architecture behave of fen60 issignal tem1:std_logic_vector(3 downto 0);signal tem

17、2:std_logic_vector(3 downto 0);begin process(clk,rst) begin if(rst='0')then tem1<="0000" tem2<="0000" elsif clk'event and clk='1' then if tem1="1001" then tem1<="0000" if tem2="0101" then tem2<="0000" carry&l

18、t;='1' else tem2<=tem2+1; carry<='0' end if; else tem1<=tem1+1; end if; end if; qout1<=tem1; qout2<=tem2; end process;end behave; 2.3 小時計數(shù)器-實體名:fen24-功 能:24進(jìn)制計數(shù)器-接 口:clk -時鐘輸入- qout1-個位BCD輸出- qout2-十位BCD輸出- carry-進(jìn)位信號輸出-library ieee;use ieee.std_logic_1164.all;use ieee

19、.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fen24 is port(clk : in std_logic; rst : in std_logic; qout1 : out std_logic_vector(3 downto 0); qout2 : out std_logic_vector(3 downto 0); carry : out std_logic);end fen24;architecture behave of fen24 issignal tem1:std_logic_vector(3 downto

20、0);signal tem2:std_logic_vector(3 downto 0);begin process(clk,rst) begin if(rst='0')then tem1<="0010" tem2<="0001" elsif clk'event and clk='1' then if (tem2="0010" and tem1="0011") then tem1<="0000" tem2<="0000&qu

21、ot; carry<='1' else carry<='0' if tem1="1001" then tem1<="0000" if tem2="1001" then tem2<="0000" else tem2<=tem2+1; end if; else tem1<=tem1+1; end if; end if; end if; qout1<=tem1; qout2<=tem2; end process;end behave; 2.4

22、 六選一的控制電路-實體名:sel-功 能:實現(xiàn)六個數(shù)碼顯示管掃描顯示-接 口:clk -時鐘輸入- qin1-第一個數(shù)碼顯示管要顯示內(nèi)容輸入- qin2-第二個數(shù)碼顯示管要顯示內(nèi)容輸入- qin3-第三個數(shù)碼顯示管要顯示內(nèi)容輸入- qin4-第四個數(shù)碼顯示管要顯示內(nèi)容輸入- qin5-第五個數(shù)碼顯示管要顯示內(nèi)容輸入- qin6-第六個數(shù)碼顯示管要顯示內(nèi)容輸入- sel -位選信號輸出-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ent

23、ity sel isport(clk : in std_logic; rst : in std_logic; qin1 : in std_logic_vector(3 downto 0); qin2 : in std_logic_vector(3 downto 0); qin3 : in std_logic_vector(3 downto 0); qin4 : in std_logic_vector(3 downto 0); qin5 : in std_logic_vector(3 downto 0); qin6 : in std_logic_vector(3 downto 0); qout

24、: out std_logic_vector(3 downto 0); sel : out std_logic_vector(7 downto 0);end sel;architecture behave of sel isbegin process(clk,rst) variable cnt:integer range 0 to 7; begin if(rst='0')then cnt:=0; sel<="11111110" qout<="0000" elsif clk'event and clk='1

25、9; then if cnt=7 then cnt:=0; else cnt:=cnt+1; end if; case cnt is when 0=>qout<=qin1; sel <="11111110" when 1=>qout<=qin2; sel <="11111101" when 2=>qout<="1111" sel <="11111011" when 3=>qout<=qin3; sel <="11110111"

26、; when 4=>qout<=qin4; sel <="11101111" when 5=>qout<="1111" sel <="11011111" when 6=>qout<=qin5; sel <="10111111" when 7=>qout<=qin6; sel <="01111111" when others=>qout<="0000" sel <="111111

27、11" end case; end if; end process;end behave; 2.5 7段譯碼顯示-實體名:decode47-功 能:實現(xiàn)數(shù)碼顯示管的編碼顯示-接 口:qin -BCD碼輸入- qout-七段碼輸出-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity decode47 isport(qin : in std_logic_vector(3 downto 0); qout : out std_l

28、ogic_vector(7 downto 0);end decode47;architecture behave of decode47 isbegin with qin select qout<="00000011" when "0000", -顯示0 "10011111" when "0001", -顯示1 "00100101" when "0010", -顯示2 "00001101" when "0011", -顯示3 &q

29、uot;10011001" when "0100", -顯示4 "01001001" when "0101", -顯示5 "01000001" when "0110", -顯示6 "00011111" when "0111", -顯示7 "00000001" when "1000", -顯示8 "00011001" when "1001", -顯示9 "00

30、010001" when "1010", -顯示A "11000001" when "1011", -顯示B "01100011" when "1100", -顯示C "10000101" when "1101", -顯示D "01100001" when "1110", -顯示E "11111101" when "1111", -顯示- "00000011

31、" when others;end behave;2.6 1HZ的秒信號-實體名:fen1-功 能:對輸入時鐘進(jìn)行40000000分頻,得到1Hz信號-接 口:clk -時鐘輸入- qout-秒輸出信號-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fen1 isport(clk:in std_logic; rst:in std_logic; qout:out std_logic);end fen1;archite

32、cture behave of fen1 isconstant counter_len:integer:=39999999;begin process(clk,rst) variable cnt:integer range 0 to counter_len; begin if(rst='0')then cnt:=0; elsif clk'event and clk='1' then if cnt=counter_len then cnt:=0; else cnt:=cnt+1; end if; case cnt is when 0 to counter_

33、len/2=>qout<='0' when others =>qout<='1' end case; end if; end process;end behave;2.7 6個數(shù)碼管的動態(tài)掃描時鐘產(chǎn)生100HZ的時鐘信號,控制6個數(shù)碼管的同時顯示-實體名:fen100-功 能:對輸入時鐘進(jìn)行24000分頻,得到100Hz信號,- 作為數(shù)碼顯示管位掃描信號-接 口:clk -時鐘輸入- qout-100Hz輸出信號-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fen100 isport(clk:in std_logic; rst:in std_logic; qout:out std_logic);end fen100;architecture behave of fen100 isconstant counter_len:integer:=23999;begin process(clk,rst) variable cnt:integer range 0 to coun

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論