




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 摘要摘要隨著 EDA 技術(shù)的發(fā)展和應用領(lǐng)域的擴大與深入,EDA 技術(shù)在電子信息、通信、自動控制與計算機應用領(lǐng)域的重要性日益突出。EDA 技術(shù)就是依賴功能強大的計算機,在 EDA 工具軟件平臺上,對以硬件描述語言 VHDL 為系統(tǒng)邏輯描述手段完成的設(shè)計文件,自動地完成邏輯優(yōu)化和仿真測試,直至實現(xiàn)既定的電子線路系統(tǒng)功能。本文介紹了基于 VHDL 硬件描述語言設(shè)計的多功能數(shù)字鬧鐘的思路和技巧。在 Quartus 11 開發(fā)環(huán)境中編譯和仿真了所設(shè)計的程序,并逐一調(diào)試驗證程序的運行狀況。仿真和驗證的結(jié)果表明,該設(shè)計方法切實可行,該數(shù)字鬧鐘可以實現(xiàn)調(diào)時定時鬧鐘播放音樂功能具有一定的實際應用性。關(guān)鍵詞關(guān)鍵
2、詞: 鬧鐘 FPGA VHDL 目錄目錄摘要摘要 I I目錄目錄 IIIIII第一章選題背景第一章選題背景 1 11.1 選題研究容 11.2 課題研究功能 11.3 課題相關(guān)技術(shù)應用 1第二章第二章 FPGAFPGA 簡介簡介 3 32.1 FPGA 概述 32.1.1 FPGA 基本結(jié)構(gòu) 32.2 FPGA 編程原理 32.3 FPGA 設(shè)計流程 4第三章數(shù)字鬧鐘整體方案設(shè)計第三章數(shù)字鬧鐘整體方案設(shè)計 7 73.1 數(shù)字鬧鐘整體設(shè)計 73.1.1 數(shù)字鬧鐘各部分作用 73.2 數(shù)字鐘的工作原理 7第四章模塊電路設(shè)計第四章模塊電路設(shè)計 9 94.1 模塊電路圖設(shè)計 94.2 各模塊電路設(shè)計
3、9第五章實驗結(jié)果第五章實驗結(jié)果 16165.1 實驗概述 165.2 實驗仿真結(jié)果 16第六章總結(jié)與展望第六章總結(jié)與展望 1818研究結(jié)論 18研究展望 18致致 2020參考文獻參考文獻 2222附錄附錄 1 1 部分模塊代碼部分模塊代碼 2424附錄附錄 2 2 動態(tài)掃描模塊程序動態(tài)掃描模塊程序 3333 III / 34第一章第一章 選題背景選題背景1.11.1 選題研究容選題研究容設(shè)計一個 24 小時的鬧鐘,該鬧鐘由顯示屏、數(shù)字鍵、TIME 鍵、ALARM 鍵、揚聲器組成。鬧鐘總體系統(tǒng)包括如下幾步分組成:用于鍵盤輸入預置數(shù)字的鍵盤緩沖器;用于時鐘計數(shù)的計數(shù)器;用于保存鬧鐘時間的鬧鐘寄存
4、器;用于顯示的七段數(shù)碼顯示器與控制以上各個部分協(xié)同工作的鬧鐘控制器。1.21.2 課題研究功能課題研究功能(1)計時功能:這是本計時器設(shè)計的基本功能,可進行時、分、秒計時,并顯示。(2)鬧鐘功能:如果當前時間與設(shè)置的鬧鐘時間一樣,則揚聲器發(fā)出一段音樂,并維持一分鐘。(3) 調(diào)時調(diào)分調(diào)鬧鐘功能:當需要校時或者要重新設(shè)置鬧鐘的時間時,可通過實驗箱上的按鍵控制。1.31.3 課題相關(guān)技術(shù)應用課題相關(guān)技術(shù)應用EDA 技術(shù)和硬件描述語言 VHDL 的基礎(chǔ)知識,通過對工程實例的系統(tǒng)分析、程序設(shè)計和仿真,深入細致地討論了它們在數(shù)字系統(tǒng)設(shè)計中的廣泛應用。電子設(shè)計自動化(Electronic Design Au
5、tomation,即 EDA)技術(shù)是指包括電路系統(tǒng)設(shè)計、系統(tǒng)仿真、設(shè)計綜合、PCB 版圖設(shè)計和制版的一整套自動化流程。隨著計算機、集成電路和電子設(shè)計技術(shù)的高速發(fā)展,EDA 技術(shù)已經(jīng)滲透到百姓生活的各個角落,日益成為電子信息類產(chǎn)品的支柱產(chǎn)業(yè)。秒表、彩燈控制器、搶答器、電梯控制器、出租車計費器、微波爐控制器、FIR 濾波器、I2C 控制器、DDS、序列檢測器、自動售貨機、函數(shù)發(fā)生器、調(diào)制解調(diào)器和 UART 等 15 個數(shù)字系統(tǒng)的 VHDL 設(shè)計例,給用戶演示了數(shù)字電路的設(shè)計方法和思路。當今電子產(chǎn)品正向功能多元化,體積最小化,功耗最低化的方向發(fā)展。它與傳統(tǒng)的電子產(chǎn)品在設(shè)計上的顯著區(qū)別師大量使用大規(guī)模
6、可編程邏輯器件,使產(chǎn)品的性能提高,體積縮小,功耗降低.同時廣泛運用現(xiàn)代計算機技術(shù),提高產(chǎn)品的自動化程度和競爭力,縮短研發(fā)周期。EDA 技術(shù)正是為了適應現(xiàn)代電子技術(shù)的要求,吸收眾多學科最新科技成果而形成的一門新技術(shù)。 1 / 34 第二章第二章 FPGAFPGA 簡介簡介2.12.1 FPGAFPGA 概述概述 FPGA 是現(xiàn)場可編程門陣列(Field Programmable Gate Array)的簡稱,與之相應的 CPLD 是復雜可編程邏輯器件(Complex Programmable Logic Device)的簡稱,兩者的功能基本一樣,只是實現(xiàn)原理略有不同,所以有時可以忽略這兩者的區(qū)別
7、,統(tǒng)稱為可編程邏輯器件或 CPLD/PGFA。CPLD/PGFA 幾乎能完成任何數(shù)字器件的功能,上至高性能 CPU,下至簡單的 74 電路。它如同一白紙或是一堆積木,工程師可以通過傳統(tǒng)的原理圖輸入或硬件描述語言自由的設(shè)計一個數(shù)字系統(tǒng)。通過軟件仿真可以事先驗證設(shè)計的正確性,在 PCB 完成以后,利用 CPLD/FPGA 的在線修改功能,隨時修改設(shè)計而不必改動硬件電路。使用CPLA/FPGA 開發(fā)數(shù)字電路,可以大大縮短設(shè)計時間,減少 PCB 面積,提高系統(tǒng)的可靠性。這些優(yōu)點使得 CPLA/FPGA 技術(shù)在 20 世紀 90 年代以后得到飛速的發(fā)展,同時也大大推動了 EDA 軟件和硬件描述語言 HD
8、L 的進步。2.1.12.1.1 FPGAFPGA 基本結(jié)構(gòu)基本結(jié)構(gòu)FPGA 一般由 3 種可編程電路和一個用于存放編程數(shù)據(jù)的靜態(tài)存儲器 SRAM 組成。這 3 種可編程電路是:可編程邏輯模塊(CLB-Configurable Logic Block)、輸入/輸出模塊(IOB-I/O Block)和互連資源(IRInterconnect Resource)??删幊踢壿嬆K CLB 是實現(xiàn)邏輯功能的基本單元,它們通常規(guī)則的排列成一個陣列,散布于整個芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長度的連接線段和一些可編程連
9、接開關(guān),它們將各個 CLB 之間或CLB、IOB 之間以與 IOB 之間連接起來,構(gòu)成特定功能的電路2.22.2 FPGAFPGA 編程原理編程原理硬件設(shè)計需要根據(jù)各種性能指標、成本、開發(fā)周期等因素,確定最佳的實現(xiàn)方案,畫出系統(tǒng)框圖,選擇芯片,設(shè)計 PCB 并最終形成樣機。CPLD/FPGA 軟件設(shè)計可分為兩大塊:編程語言和編程工具。編程語言主要有VHDL 和 Verilog 兩種硬件描述語言;編程工具主要是兩大廠家 Altera 和Xilinx 的集成綜合 EDA 軟件(如 MAX+plusII、QuartusII、Foundation、ISE)以與第三方工具(如 FPGA Express、
10、Modelsim、Synposys SVS 等)。具體的設(shè)計輸入方式有以下幾種:1.HDL 語言方式。HDL 既可以描述底層設(shè)計,也可以描述頂層的設(shè)計,但它不容易做到較高的工作速度和芯片利用率。用這種方式描述的項目最后所能達到的性能與設(shè)計人員的水平、經(jīng)驗以與綜合軟件有很大的關(guān)系。2.圖形方式??梢苑譃殡娐吩韴D描述,狀態(tài)機描述和波形描述 3 種形式。有的軟件 3 種輸入方法都支持,如 Active-HDL。MAX+plusII 圖形輸入方式只支 3 / 34持電路原理圖描述和波形描述兩種。電路原理圖方式描述比較直觀和高效,對綜合軟件的要求不高。一般大都使用成熟的 IP 核和中小規(guī)模集成電路所搭
11、成的現(xiàn)成電路,整體放到一片可編程邏輯器件的部去,所以硬件工作速度和芯片利用率很高,但是但項目很大的時候,該方法就顯得有些繁瑣;狀態(tài)機描述主要用來設(shè)計基于狀態(tài)機思想的時序電路。在圖形的方式下定義好各個工作狀態(tài),然后在各個狀態(tài)上輸入轉(zhuǎn)換條件以與相應的輸入輸出,最后生成 HDL 語言描述,送去綜合軟件綜合到可編程邏輯器件的部。由于狀態(tài)機到 HDL 語言有一種標準的對應描述方式,所以這種輸入方式最后所能達到的工作速度和芯片利用率主要取決于綜合軟件;波形描述方式是基于真值表的一種圖形輸入方式,直接描述輸入與輸出的波形關(guān)系。這種輸入方式最后所能達到的工作速度和芯片利用率也是主要取決于綜合軟件。2.32.3
12、 FPGAFPGA 設(shè)計流程設(shè)計流程一般說來,一個比較大的完整的項目應該采用層次化的描述方法:分為幾個較大的模塊,定義好各功能模塊之間的接口,然后各個模塊再細分去具體實現(xiàn),這就是 TOP DOWN(自頂向下)的設(shè)計方法。目前這種高層次的設(shè)計方法已被廣泛采用。高層次設(shè)計只是定義系統(tǒng)的行為特征,可以不涉與實現(xiàn)工藝,因此還可以在廠家綜合庫的支持下,利用綜合優(yōu)化工具將高層次描述轉(zhuǎn)換成針對某種工藝優(yōu)化的網(wǎng)絡表,使工藝轉(zhuǎn)化變得輕而易舉。CPLD/FPGA 系統(tǒng)設(shè)計的工作流程如圖 2-2 所示。 系統(tǒng)劃分編譯器代碼級功能仿真綜合器適配前時序仿真適配器CPLD/FPGA實現(xiàn)適配后仿真模型適配后時序仿真適配報告
13、ASIC 實現(xiàn)VHDL 代碼或圖形方式輸入仿真綜合庫器件編程文件 圖圖 2.32.3 FPGAFPGA 設(shè)計流程設(shè)計流程 5 / 34第三章第三章 數(shù)字鬧鐘整體方案設(shè)計數(shù)字鬧鐘整體方案設(shè)計3.13.1 數(shù)字鬧鐘整體設(shè)計數(shù)字鬧鐘整體設(shè)計1)各個輸入輸出端口 1、CLK 為外部時鐘信號,RESET 為復位信號。 2、KEYPAD 若其中某一位為高電平,則表示用戶按下了相應的數(shù)字鍵 3、當 KEYDOWN 為高電平,表示用戶按下某一數(shù)字鍵。 4、當 ALAR-BUTTON 為高電平時,表示用戶按下 ALARM 鍵。 5、當 TIME-BUTTON 為高電平時表示用戶按下 TIME 鍵 6、DISPL
14、AY 實際上表示了 4 個 7 段數(shù)碼管,用于顯示時間。 7、SOUND-ALARM 用于控制揚聲器發(fā)聲,當 SOUND-ALARM=1時,揚聲器發(fā)出蜂鳴,表示到了設(shè)定時間。 2)各部分的組成 根據(jù)系統(tǒng)的設(shè)計要求,整個系統(tǒng)分為 7 個模塊:鬧鐘控制器,譯碼器,鍵盤緩沖器,鬧鐘寄存器,時間計數(shù)器,顯示驅(qū)動器,分頻器。3.1.13.1.1 數(shù)字鬧鐘各部分作用數(shù)字鬧鐘各部分作用1、 鬧鐘控制器:整個系統(tǒng)正常有序工作的核心,按設(shè)計要求產(chǎn)生相應的控制邏輯以控制其他部分工作。2、 譯碼器:可將 KEYPAD 信號轉(zhuǎn)換為 09 的整形數(shù),以直觀地表示和處理用戶輸入的數(shù)字。3、 鍵盤緩沖器:是一個移位寄存器,
15、暫存用戶鍵入的數(shù)字,并且實現(xiàn)用戶鍵入數(shù)字在顯示器上從左到右依次顯示。4、 分頻器:將較高的外部時鐘頻率分成每分鐘一次的時鐘頻率,以便進行時鐘計數(shù)。5、 時間計數(shù)器:實際上是一個異步復位、異步置數(shù)的累加器,通常情況下進行時鐘累加計數(shù),必要時可置入新的時鐘值,然后從該值開始新的計數(shù)。6、 鬧鐘寄存器:用于保存用戶設(shè)置的鬧鐘時間,是一個異步復位寄存器。7、 顯示驅(qū)動器:根據(jù)需要顯示當前時間、用戶設(shè)置的鬧鐘時間或用戶通過鍵盤輸入新的時間,同時判斷當前時間是否已到了鬧鐘時間,實際上是一個多路選擇器加比較器。 3.23.2 數(shù)字鐘的工作原理數(shù)字鐘的工作原理數(shù)字鬧鐘電路的基本結(jié)構(gòu)由兩個 60 進制計數(shù)器和一
16、個 24 進制計數(shù)器組成,分別對秒、分、小時進行計時,當計時到 23 時 59 分 59 秒時,再來一個計數(shù)脈沖,則計數(shù)器清零,重新開始計時。秒計數(shù)器的計數(shù)時鐘 CLK 為 1Hz 的標準信號。當數(shù)字鬧鐘處于計時狀態(tài)時,秒計數(shù)器的進位輸出信號作為分鐘計數(shù)器的計數(shù)信號,分鐘計數(shù)器的進位輸出信號又作為小時計數(shù)器的計數(shù)信號時、分、秒的計時結(jié)果通過 4 個數(shù)碼管來動態(tài)顯示。數(shù)字鬧鐘除了能夠正常計時外,還應能夠?qū)r間進行調(diào)整。因此,通過模式選擇信號 KEY1、KEY2 控制數(shù)字鐘的工作狀態(tài),即控制數(shù)字鐘,使其分別工作于正常計時,調(diào)整分、時和設(shè)定鬧鐘分、時 5 個狀態(tài)。當數(shù)字鬧鐘處于計時狀態(tài)時,3 個計數(shù)
17、器允許計數(shù),且秒、分、時計數(shù)器的計數(shù)時鐘信號分別為 CLK,秒的進位, 分的進位;當數(shù)字鬧鐘處于調(diào)整時間狀態(tài)時,被調(diào)的分或時會一秒一秒地增加;當數(shù)字鐘處于鬧鐘定時狀態(tài)時,可以設(shè)定小時和分;當計時到所設(shè)定的時刻時,speak 將會被賦予梁祝音樂信號用于驅(qū)動揚聲器,持續(xù) 1 分鐘。 7 / 34第四章第四章 模塊電路設(shè)計模塊電路設(shè)計4.14.1 模塊電路圖設(shè)計模塊電路圖設(shè)計 圖圖 4.1-14.1-1 模塊電路圖模塊電路圖4.24.2 各模塊電路設(shè)計各模塊電路設(shè)計1) 時鐘控制模塊:library ieee;use ieee.std_logic_1164.all;use ieee.std_logi
18、c_unsigned.all;entity shizhong isport( clk: in std_logic; md1:in std_logic; md2:in std_logic_vector(1 downto 0); clken:out std_logic; h1,h2,m1,m2,s1,s2:out std_logic_vector(3 downto 0);end shizhong;architecture one of shizhong issignal hou1:std_logic_vector(3 downto 0);signal hou2:std_logic_vector(3
19、 downto 0);signal min1:std_logic_vector(3 downto 0);signal min2:std_logic_vector(3 downto 0);signal seth1:std_logic_vector(3 downto 0);signal seth2:std_logic_vector(3 downto 0);signal setm1:std_logic_vector(3 downto 0);signal setm2:std_logic_vector(3 downto 0); signal sec1:std_logic_vector(3 downto
20、0);signal sec2:std_logic_vector(3 downto 0);begin-小時十位h110:process(clk,hou2,min1,min2,sec1,sec2,md1,md2)beginif clkevent and clk=1 thenif (hou1=0010 and hou2=0011)and(min1=0101 and min2=1001) and (sec1=0101 and sec2=1001) thenhou1=0000;elsif hou1=0010and hou2=0011and md1=0 and md2=01 then-當時間為 23 點且
21、處于校時狀態(tài)時hou1=0000;elsif (hou2=1001and(min1=0101 and min2=1001) and (sec1=0101 and sec2=1001)or (hou2=1001and md1=0 and md2=01) thenhou1=hou1+1;end if;end if;end process h110;-小時個位h220:process(clk,min1,min2,sec1,sec2,md1,md2,hou1)beginif clkevent and clk=1 thenif (hou1=0010 and hou2=0011)and(min1=0101
22、 and min2=1001) and (sec1=0101 and sec2=1001) thenhou2=0000;elsif hou2=1001and(min1=0101 and min2=1001) and (sec1=0101 and sec2=1001) thenhou2=0000;elsif (hou2=1001and md1=0 and md2=01)or (hou1=0010and hou2=0011) thenhou2=0000;-md=1;-elsif (min1=0101 and min2=1001) and (sec1=0101 and sec2=1001)or (m
23、d1=0 and md2=01) thenhou2=hou2+1;-speak=clk;-end if;end if;end process h220;-分鐘十位 m110:process(clk,min2,sec1,sec2,md1,md2)begin 9 / 34if clkevent and clk=1 thenif (min1=0101 and min2=1001) and (sec1=0101 and sec2=1001) then min1=0000;elsif min1=0101and min2=1001and (md1=0 and md2=00)thenmin1=0000;el
24、sif (min2=1001and (sec1=0101 and sec2=1001) or (min2=1001and md1=0 and md2=00)thenmin1=min1+1;end if;end if;-end if;end process m110;-分鐘個位 m220:process(clk,sec1,sec2,md1,md2)beginif clkevent and clk=1 thenif min2=1001and (sec1=0101 and sec2=1001)thenmin2=0000;elsif min2=1001and (md1=0 and md2=00)the
25、nmin2=0000;else if (sec1=0101 and sec2=1001) or(md1=0 and md2=00)thenmin2=min2+1;end if;end if;end if;end process m220;-秒十位 s110:process(clk)beginif clkevent and clk=1 thenif (sec1=0101 and sec2=1001)thensec1=0000;else if sec2=1001thensec1=sec1+1;end if;end if;end if;end process s110;-秒個位 s220:proce
26、ss(clk)beginif clkevent and clk=1 thenif sec2=1001 thensec2=0000;else sec2=sec2+1; end if;end if;end process s220;-時間設(shè)置小時部分 sethour1:process(clk,seth2)beginif clkevent and clk=1 thenif seth1=0010and seth2=0011 thenseth1=0000;elsif seth2=1001 thenseth1=seth1+1;end if;end if;end process sethour1;setho
27、ur2:process(clk,md1,md2,seth1)beginif clkevent and clk=1 thenif (seth1=0010and seth2=0011)or seth2=1001thenseth2=0000;elsif md1=1 and md2=00 thenseth2=seth2+1;end if;end if;end process sethour2;-時間設(shè)置分鐘部分 setmin1:process(clk,setm2)beginif clkevent and clk=1 thenif setm1=0101and setm2=1001thensetm1=00
28、00;elsif setm2=1001thensetm1=setm1+1;end if;end if;end process setmin1;setmin2:process(clk,md1,md2)beginif clkevent and clk=1thenif setm2=1001thensetm2=0000;elsif md1=1 and md2=01thensetm2=setm2+1;end if;end if; 11 / 34end process setmin2;-鬧鈴speaker:process(clk,hou1,hou2,min1,min2)beginif clkevent a
29、nd clk=1thenif seth1=hou1 and seth2=hou2 and setm1=min1 and setm2=min2 thenclken=1;else clken=0;end if;end if;end process speaker;disp:process(md1,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2)beginif md1=0 then-計時時間顯示和設(shè)置模式h1=hou1;h2=hou2;m1=min1;m2=min2;s1=sec1;s2=sec2;else -鬧鈴時間現(xiàn)實和設(shè)置模式h1=s
30、eth1;h2=seth2;m1=setm1;m2=setm2;s1=1111;s2=1111;end if;end process disp;end one;3)樂曲演奏模塊:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Speakera IS PORT ( clk : IN STD_LOGIC; Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS : OUT STD_LOGIC );END;ARCHITECTURE one OF Spe
31、akera IS SIGNAL PreCLK, FullSpkS : STD_LOGIC;BEGIN DivideCLK : PROCESS(clk) VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PreCLK 11 THEN PreCLK = 1; Count4 := 0000; ELSIF clkEVENT AND clk = 1 THEN Count4 := Count4 + 1; END IF; END PROCESS; GenSpkS : PROCESS(PreCLK, Tone)- 11 位可預置計數(shù)器 VARIAB
32、LE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0);BEGIN IF PreCLKEVENT AND PreCLK = 1 THEN IF Count11 = 16#7FF# THEN Count11 := Tone ; FullSpkS = 1; ELSE Count11 := Count11 + 1; FullSpkS = 0; END IF; END IF; END PROCESS; DelaySpkS : PROCESS(FullSpkS)-將輸出再 2 分頻,展寬脈沖,使揚聲器有足夠功率發(fā)音 VARIABLE Count2 : STD_LOGIC;
33、BEGIN IF FullSpkSEVENT AND FullSpkS = 1 THEN Count2 := NOT Count2; IF Count2 = 1 THEN SpkS = 1; ELSE SpkS = 0; END IF; END IF; END PROCESS;END;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs IS PORT (clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOW
34、NTO 0) );END;ARCHITECTURE one OF NoteTabs ISCOMPONENT MUSIC -音符數(shù)據(jù) ROM PORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); inclock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END COMPONENT; SIGNAL Counter : STD_LOGIC_VECTOR (7 DOWNTO 0);BEGIN CNT8 : PROCESS(clk,Counter) BEGIN IF Counter=138 T
35、HEN Counter = 00000000; ELSIF (clkEVENT AND clk = 1) THEN Counter Counter , q=ToneIndex, inclock=clk); END;LIBRARY IEEE; 13 / 34USE IEEE.STD_LOGIC_1164.ALL;ENTITY ToneTaba IS PORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ; Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0); en : IN STD_LOGIC);END;ARCHITECT
36、URE one OF ToneTaba ISBEGINPROCESS(Index,en) BEGINIF en=0 THEN Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone Tone NULL; END CASE;END IF; END PROCESS;END;LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.altera_mf_components.all;ENTITY music ISPORT( address:
37、IN STD_LOGIC_VECTOR (7 DOWNTO 0);inclock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END music;ARCHITECTURE SYN OF music ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0);COMPONENT altsyncram GENERIC (intended_device_family: STRING;width_a: NATURAL;widthad_a: NATURAL;numwords_a: NATURAL;ope
38、ration_mode: STRING;outdata_reg_a: STRING;address_aclr_a: STRING;outdata_aclr_a: STRING;width_byteena_a: NATURAL;init_file: STRING;lpm_hint: STRING;lpm_type: STRING);PORT ( clock0: IN STD_LOGIC ;address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0);q_a : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END COMPONENT;BEGINq
39、 Cyclone,width_a = 4,widthad_a = 8,numwords_a = 256,operation_mode = ROM,outdata_reg_a = UNREGISTERED,address_aclr_a = NONE,outdata_aclr_a = NONE,width_byteena_a = 1,init_file = data1.mif,lpm_hint = ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=rom2,lpm_type = altsyncram)PORT MAP ( clock0 = inclock, address
40、_a = address, q_a = sub_wire0);END SYN; 15 / 34第五章第五章 實驗結(jié)果實驗結(jié)果5.15.1 實驗概述實驗概述本實驗是以 KEY2、KEY1 為控制整個鬧鐘的校時,校分,校鬧鐘時、分,分別將 KEY21,KEY20,KEY1,送到實驗上的三個鍵,由這三個鍵來控制整個校時,校分,校鬧鐘時,校鬧鐘分的過程,加上分別連接的鍵叫 A,B,C 鍵.5.25.2 實驗仿真結(jié)果實驗仿真結(jié)果則當 A=0,B=1,C=0 時是對時鐘進行校時,時個位和時十位會以二十四進制循環(huán)自動增加。仿真波形: 圖圖 5.2-15.2-1當 A=0,B=0,C=0 時是對時鐘進行校分,
41、分個位和分十位會以六十進制循環(huán)增加,并且不對時進位。仿真波形:圖 5.2-2當 A=0,B=1,C=1 時是對鬧鐘進行校分,鬧鐘時個位和時十位會以二十四進制循環(huán)自動增加。仿真波形: 圖圖 5.2-35.2-3當 A=0,B=0,C=1 時是對鬧鐘進行校時,鬧鐘分個位和分十位會以六十進制循環(huán)增加,并且不對時進位。仿真波形: 圖圖 5.2-45.2-4而當 A=1,B=0,C=0 或者 A=1,B=1,C=0 是正常的計時時間,秒從零開始計時,每秒加一,當?shù)竭_五十九在來一個脈沖后,秒十位和秒個位清零,從零開始直到六十一直循環(huán),并且向分個位清零;分位的原理同秒的一樣;而時與秒,分的不同之處是,當時計
42、數(shù)到二十三時清零并且不向任何位進位。仿真波形: 圖圖 5.2-55.2-5另外當計數(shù)的時,分和鬧鐘所事先設(shè)置時、分相等時,“梁?!边@首歌會響起,作為鬧鐘并且維持一分鐘,一分鐘歌曲自動停止。在有條件的情況下,為驗證所設(shè)計程序是否正確,將程序下載到 FPGA 器件中進行硬件測試。在Quartus開發(fā)環(huán)境中進行管腳鎖定,連接好數(shù)碼管驅(qū)動電路,然后將目標文件下載到器件中。最終可以看到時、分、秒正常顯示 17 / 34第六章第六章 總結(jié)與展望總結(jié)與展望研究結(jié)論研究結(jié)論通過本次實驗,系統(tǒng)的復習整個 EDA 的知識,并且了解了 CPLD 可編程芯片的結(jié)構(gòu)和引腳,能夠熟練的運用 quartus II 這個軟件
43、,尤其可貴的是,學會了使用這個軟件來給程序配置引腳,并且實際的通過實驗箱的幾個按鍵就可以控制整個操作的過程,終于感到自己所學到的知識可以付諸到實踐了。在此次的數(shù)字鐘設(shè)計過程中,更進一步地熟悉有關(guān)數(shù)字電路的知識和具體應用。學會了利 Max+plus 和 QuarterII 軟件進行原理圖的繪制,硬件描述語言VHDL 的編寫,程序的仿真等工作。并能根據(jù)仿真結(jié)果分析設(shè)計的存在的問題和缺陷,從而進行程序的調(diào)試和完善。在設(shè)計電路中,往往是先仿真后連接實物圖,但有時候仿真和電路連接并不是完全一致的,例如在對具體模塊的仿真的過程中,往往沒有考慮到整體設(shè)計的層面以與與上下模塊接口的設(shè)計。再加上器件對信號的延時
44、等問題,實際下載到實驗箱上后會出現(xiàn)一系列的問題,因此仿真圖和電路連接圖還是有一定區(qū)別的。此次的數(shù)字鐘設(shè)計重在于按鍵的控制和各個模塊代碼的編寫,雖然能把鍵盤接口和各個模塊的代碼編寫出來,并能正常顯示,但對于各個模塊的優(yōu)化設(shè)計還有一定的缺陷和不足??偟膩碚f,通過這次的設(shè)計實驗更進一步地增強了實驗的動手能力,對數(shù)字鐘的工作原理也有了更加透徹的理解。在本設(shè)計調(diào)試過程中遇到了一些問題如下:1.當程序下載到實驗箱上后,數(shù)碼管顯示全部為零,計數(shù)器不工作,經(jīng)分析得知程序中的總的清零信號保持有效狀態(tài),改動程序后計數(shù)器開始計數(shù)。2.當秒時鐘計數(shù)到 59 時變 0 時,分計數(shù)模塊滯后計數(shù),考慮的器件的延時,將程序中
45、秒的進位信號提前 1 秒。3 在檢測按鍵時,由于有些按鍵控制是秒時鐘同步的,所以控制起來顯得梢慢些,但是工作正常,能滿足實際的需要。研究展望研究展望本設(shè)計中雖然有控制鍵對時鐘進行控制,但是用到的按鍵太多,在實際應用上存在不足。故提出改進方案為用一個按鍵控制數(shù)碼管的片選,再用兩個按鍵控制計數(shù)的加減。這樣可以節(jié)省按鍵資源,以供更多的功能的使用。本設(shè)計是采用硬件描述語言和 FPGA 芯片相結(jié)合進行的數(shù)字鐘的研究,從中可以看出 EDA 技術(shù)的發(fā)展在一定程度上實現(xiàn)了硬件設(shè)計的軟件化。設(shè)計的過程變的相對簡單,容易修改等優(yōu)點,相信隨著電子技術(shù)的發(fā)展,數(shù)字鐘的功能會更加多樣化,滿足人們的各種需要。 致致在論文
46、完成之際,我首先向關(guān)心幫助和指導我的指導老師許金星表示衷心的感并致以崇高的敬意!在論文工作中,遇到了許多難題,一直得到許金星老師的親切關(guān)懷和悉心指導,使我不斷進步。許金星老師以其淵博的學識、嚴謹?shù)闹螌W態(tài)度、的工作作風和他敏捷的思維給我留下了深刻的印象,我將終生難忘。再一次向他表示衷心的感,感他為學生營造的濃郁學術(shù)氛圍,以與學習、生活上的無私幫助! 值此論文完成之際,謹向許金星老師致以最崇高的意!在學校的學習生活即將結(jié)束,回顧兩年多來的學習經(jīng)歷,面對現(xiàn)在的收獲,我感到無限欣慰。為此,我向熱心幫助過我的所有老師和同學表示由衷的感!特別感我的師姐吳謙謙對我的學習和生活所提供的大力支持和關(guān)心!還要感一
47、直關(guān)心幫助我成長的室友 鄧森、王蒙!在我即將完成學業(yè)之際,我深深地感我的家人給予我的全力支持!最后,衷心地感在百忙之中評閱論文和參加答辯的各位專家、教授! 19 / 34 參考文獻參考文獻1. 竹生.微分半動力系統(tǒng)的不變集D:博士學位論文.:大學數(shù)學系,19832. 君,常明,娟,基于硬件描述語言(VHDL)的數(shù)字時鐘設(shè)計,理工大學學報,2007,第 23 卷 第 4 期,40-413. 廖日坤,CPLD/FPGA 嵌入式應用開發(fā)技術(shù)白金手冊,中國電力,2003,212-218。4. 王開軍,宇柏,面向 CPLD/FPGA 的 VHDL 設(shè)計,機械工業(yè),2006,28-65。5. 保經(jīng),中國集
48、成電路大全,國防工業(yè),1985。6. 高吉祥,電子技術(shù)基礎(chǔ)實驗與課程設(shè)計,電子工業(yè),2002。7. 呂思忠,數(shù)子電路實驗與課程設(shè)計,工業(yè)大學,2001。8 自美,電子線路設(shè)計、實驗、測試,華中理工大學,2003。8. 志杰,集成電路應用識圖方法,機械工業(yè),2003,35-40。9. 慶雙,電子元器件的選用與檢測,機械工業(yè),2003。 21 / 34 附錄附錄 1 1 部分模塊代碼部分模塊代碼(1)分頻器關(guān)鍵代碼entity div22118400 isport(clk:in std_logic; f1hz:out std_logic);end div22118400;architecture
49、behave of div22118400 issignal temp: integer range 0 to 22118399;beginprocess(clk)beginif rising_edge(clk) thentemp=22118399 then f1hz=1; else f1hz=0;end if;end if;end process;end behave;(2)鬧鐘模塊關(guān)鍵代碼entity alarm_set isport(rst,hz1:in std_logic; alarm,ok:in std_logic; sec_tune:in std_logic; min_tune:i
50、n std_logic; hour_tune:in std_logic; sec,min:out integer range 0 to 59; hour: out integer range 0 to 23);end alarm_set;architecture behave of alarm_set issignal sec_temp,min_temp: integer range 0 to 59;signal hour_temp:integer range 0 to 23;begintuning:process(rst,hz1,alarm,ok)beginif rst=1 then sec
51、_temp=0;min_temp=0;hour_temp=0;elsif rising_edge(hz1) thenif alarm=1 and ok=0 then 23 / 34if sec_tune=1 then if sec_temp=59 then sec_temp=0;else sec_temp=sec_temp+1;end if;end if;if min_tune=1 then if min_temp=59 then min_temp=0;else min_temp=min_temp+1;end if;end if;if hour_tune=1 then if hour_temp
52、=23 then hour_temp=0;else hour_temp=hour_temp+1;end if;end if;else null;end if;end if;end process tuning;sec=sec_temp;min=min_temp;hour=hour_temp;end behave;(3)定時模塊關(guān)鍵代碼entity stop_watch is port(rst,hz1:in std_logic; stop:in std_logic; ok:in std_logic; sec_tune:in std_logic; min_tune:in std_logic; ho
53、ur_tune:in std_logic; stop_sec,stop_min:out integer range 0 to 59; stop_hour:out integer range 0 to 23; index:out std_logic; disp:out std_logic);end stop_watch;architecture behave of stop_watch is signal a_sec,a_min:integer range 0 to 59; signal a_hour:integer range 0 to 23;beginprocess(stop,ok,hz1,
54、rst)beginif rst=1then index=0;disp=0;elsif rising_edge(hz1) then if stop=1 and ok=0 then if sec_tune=1 then if a_sec=59 then a_sec=0;else a_sec=a_sec+1;end if;end if;if min_tune=1 thenif a_min=59 then a_min=0;else a_min=a_min+1;end if;end if;if hour_tune=1 thenif a_hour=23 then a_hour=0; else a_hour
55、=a_hour+1;end if;end if;disp=1;elsif stop=1 and ok=1 then if a_sec=0 then if a_min=0 thenif a_hour=0 then index=1; disp=0;else a_hour=a_hour-1; a_min=59; a_sec=59;end if;else a_min=a_min-1; a_sec=59;end if;else a_sec=a_sec-1; index=0; disp=1; 25 / 34end if;else disp=0;end if;end if;end process;stop_
56、sec=a_sec;stop_min=a_min;stop_hour=a_hour;end behave;(4) 按鍵消抖本模塊用于當有按鍵按下時,采用軟件消抖的辦法去除按鍵抖動。模塊的實現(xiàn)方法是先判斷是否有按鍵按下,如有按鍵按下則延時一段時間,待抖動過去之后再讀行線狀態(tài),如果仍有低電平行線,則確定有按鍵按下,然后產(chǎn)生一個有按鍵按下的信號。該模塊有一個時鐘輸入端口,輸入時鐘信號是分頻出來的 1KHZ 的時鐘;有一個輸入端口與行線相連,用于輸入行線狀態(tài);一個輸出端口,用于輸出有按鍵按下的信號。該模塊的邏輯框圖如圖 4-6 所示。圖 4-6 去抖邏輯框圖該電路的 VHDL 程序如下:library
57、 ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity qudou is port(clk1:in std_logic; row:in std_logic_vector(3 downto 0); key_pre:out std_logic);end qudou;architecture behav of qudou is signal sig1,counter:std_logic_vector(3 downto 0); signal tmp1,si
58、g2:std_logic;begin sig1=row; tmp1=sig1(0)and sig1(1)and sig1(2)and sig1(3); key_pre=counter(0)and counter(1)and counter(2)and counter(3);process(clk1)begin if(clk1event and clk1=1)then if(tmp1=0)then if(sig2=0)then sig2=1; end if; end if;if(sig2=1)then if(counter=1111)then sig2=0; counter=0000; else
59、 counter=counter+1; end if; end if;end if;end process;end behav;(5) 鍵掃描模塊鍵掃描模塊的框圖如圖 4-7 所示。圖 4-7 按鍵掃描模塊CLKY 為輸入時鐘,該時鐘是分頻模塊分出的 4MHZ 的時鐘信號,之所以在這里采用頻率高的時鐘信號就是因為鍵掃描是一個快過程,不需要太慢的時鐘。Key_pre 是由去抖模塊輸出的有鍵按下的信號,這個信號引發(fā)按鍵掃描模塊部信號的變化,在該狀態(tài)信號的作用下,模塊可以鍵盤掃描。ROW3.0是行輸入信號,與鍵盤的行線相連,COM3.0是列輸出信號,與鍵盤的列線相連。SCAN_CODE7.0是掃描的鍵碼輸出端口。鍵掃描的基本方法是將列線逐一置成低電平,然后讀行線輸入端口,如果行線中有低電平出現(xiàn),說明按鍵已經(jīng)確定,將行向量和列向量讀入鍵碼中即可。鍵盤掃描程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安徽客運員題庫軟件
- 特定工作經(jīng)歷與崗位證明書(5篇)
- ××中學心理健康咨詢辦法
- 童話故事中的英雄童話(7篇)
- 某中學學生社團活動審批制度
- 社會學城市生活變遷案例研究試題庫
- 一次演講比賽勇敢表達自己的演講稿(13篇)
- 保密協(xié)議工資保密協(xié)議書
- 2025年北京師范大學事業(yè)單位招聘考試綜合類面試真題試卷
- 2025年安全工程師考試模擬試卷:安全應急預案編制與案例分析
- 行政培訓學習課件
- 《電子門禁設(shè)計》課件
- 一平臺機考《數(shù)據(jù)結(jié)構(gòu)》復習資料3
- AI驅(qū)動測試優(yōu)化
- 2023年10月自考00401學前比較教育試題及答案含評分標準
- 《二十四孝圖》課件
- 公共衛(wèi)生工作整體提升匯報
- 國開《酒店前廳服務與管理》形考任務1-3答案
- 2023年四川省資陽市面向全國公開引進急需緊缺高層次人才(共500題)筆試必備質(zhì)量檢測、歷年高頻考點模擬試題含答案解析
- 國考云在線考試系統(tǒng)試題
- 紅色文化學習通課后章節(jié)答案期末考試題庫2023年
評論
0/150
提交評論