




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、摘要本課程設計主要介紹了運用eda技術實現“電子時鐘”的設計,以達到對eda技術的熟練掌握,提升對eda技術及應用課程所學的內容的掌握和應用,文介紹一種利用fpga可編程邏輯器件設計數字電子時鐘的方法及過程。文中包含各部分程序及經過max-plusii仿真的波形。通過對max-plusii的使用熟悉max-plusii仿真軟件的工作方法及應用。關鍵字:eda fpga 電子時鐘 max-plusii目錄摘要1.設計方案及原理11.1設計方案11.2設計原理12. 設計過程32.1頂層設計32.2各個模塊程序及波形32.2.1小時模塊32.2.2分鐘模塊52.2.3秒鐘模塊62.2.4數碼管譯碼
2、模塊82.2.5數碼管片選模塊92.2.6數碼管掃描模塊102.2.7分頻模塊112.3硬件電路圖14總結15參考資料16附錄 簡易時鐘電路圖17附錄 元件清單181.設計方案及原理1.1設計方案根據電路特點,可用層次化結構化設計概念。將此項設計任務分成若干模塊:(1)時鐘模塊:由外部晶振提供; (2)秒鐘模塊:對秒進行60循環計數,并向分鐘產生進位,同時具有調分功能; (3)分鐘模塊:對分進行60循環計數,并向小時產生進位,同時具有調時功能; (4)小時模塊:對小時進行24進制循環計;。(5)10分頻器和4分頻器:將外部時鐘分頻為1hz的時鐘信號;(6)6選1掃描顯示:(7)7段數碼管譯碼器
3、:譯出數碼管要顯示的數字。1.2設計原理電子鐘是一個將“時”“分”顯示于人的視覺器官的計時裝置。它的計時周期為24小時;顯示滿刻度為23時59分59秒,秒由兩個數碼管顯示,將標準秒信號送入“秒計數器”,每累加60秒發送一個“分脈沖”信號,該信號將被送到“時計數器”。“時計數器”采用24進制計數器,可實現對一天24小時的累計。譯碼顯示電路將“時”“分”“秒”計數器的輸出狀態六段顯示譯碼器譯碼。通過六位七段顯示器顯示出來。數字鐘結構組成框圖如圖1.2.1。24進制小時計數器60進制分計數器60進制秒計數器時譯碼顯示分譯碼顯示秒譯碼顯示選 擇 器選 擇 器sethoursetminnnnnnnnco
4、co校時控制校分控制1hz圖 1.2.1 數字鐘結構方框圖2. 設計過程2.1頂層設計頂層文件是將各個模塊連接在一起的模塊。其中,clk提供時鐘信號,setmin用來調節分鐘,sethour用來調節小時。輸出cout2.0是片選信號,輸出a6.0連接7段數碼管的7個引腳。其頂層文件的電路圖如圖2.1.1。圖 2.1.1 頂層圖2.2各個模塊程序及波形2.2.1小時模塊小時模塊的電路圖如圖2.2.1,其中,h13.0是小時的高位,h03.0是小時的低位。當h03.0計到9時向高位進一。當h13.0與h03.0分別計到0010和0011時,自動為0000。圖 2.2.1 小時模塊library i
5、eee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port(clk:in std_logic; h1,h0:out std_logic_vector(3 downto 0);end hour;architecture art of hour issignal cnt1,cnt0:std_logic_vector(3 downto 0);beginprocess(clk)beginif clk'event and clk='1' then if cnt1="
6、;0010" thenif cnt0="0011" thencnt0<="0000"cnt1<="0000"else cnt0<=cnt0+1; end if;elsif cnt0="1001" thencnt0<="0000"cnt1<=cnt1+1;elsecnt0<=cnt0+1;end if;end if;h1<=cnt1;h0<=cnt0;end process;end art;小時模塊的波形圖如圖2.2.2。圖 2.2.2小時
7、模塊波形2.2.2分鐘模塊分鐘模塊的電路圖如圖2.2.3,其中,min13.0是分鐘的高位,min03.0是分鐘的低位。當min13.0計到9時向高位進一。當min13.0與min03.0分別計到0101和1001時,自動為0000。sethour是調時控制。其分鐘模塊的電路圖如圖2.2.3。圖 2.2.3分鐘模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minu is port(sethour,clk:in std_logic; min1,min0:out std_logic
8、_vector(3 downto 0); c0:out std_logic);end minu;architecture art of minu issignal cnt1,cnt0:std_logic_vector(3 downto 0);signal cc1,cc2:std_logic;begincc2<=(sethour and clk);c0<=(cc1 or cc2);process(clk,sethour)beginif clk'event and clk='1' thenif cnt1="0101" thenif cnt0=
9、"1001" thencc1<='1'cnt0<="0000"cnt1<="0000" else cnt0<=cnt0+1;cc1<='0'end if; elsif cnt0="1001" thencnt0<="0000"cnt1<=cnt1+1;cc1<='0'elsecnt0<=cnt0+1;cc1<='0'end if;end if;min1<=cnt1;mi
10、n0<=cnt0;end process;end art;分鐘模塊的波形圖如圖2.2.4。圖2.2.4分鐘模塊波形2.2.3秒鐘模塊秒鐘模塊的電路圖如圖2.2.5,其中,sec13.0是秒鐘的高位,sec03.0是秒鐘的低位。當sec13.0計到9時向高位進一。當sec13.0與sec03.0分別計到0101和1001時,自動為0000。setmin是調時控制。秒鐘模塊的電路圖如圖2.2.2。圖2.2.5 秒鐘模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second i
11、s port(clk,setmin:in std_logic; sec1,sec0:out std_logic_vector(3 downto 0); c0:out std_logic);end second;architecture art of second issignal cnt1,cnt0:std_logic_vector(3 downto 0);signal cc1,cc2:std_logic;begincc2<=(setmin and clk);c0<=(cc1 or cc2);process(clk,setmin)beginif clk'event and
12、clk='1' thenif cnt1="0101" and cnt0="1000" thencc1<='1'cnt0<="1001"elsif cnt0<"1001" thencnt0<=cnt0+1;cc1<='0'elsecnt0<="0000"if cnt1<"0101" thencnt1<=cnt1+1;cc1<='0'elsecnt1<=&q
13、uot;0000"cc1<='1'end if; end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end art;其秒鐘模塊的波形圖如圖2.2.6。圖2.2.6 秒鐘模塊波形2.2.4數碼管譯碼模塊數碼管譯碼模塊用來譯出數碼管要顯示的數字。其電路圖如圖2.2.7。圖2.2.7數碼管譯碼模塊library ieee;use ieee.std_logic_1164.all;entity disp is port(d : in std_logic_vector(3 downto 0); q : out std
14、_logic_vector(6 downto 0);end;architecture one of disp isbegin process(d) begin case d is when "0000"=>q<="0111111" when "0001"=>q<="0000110" when "0010"=>q<="1011011" when "0011"=>q<="1001111" wh
15、en "0100"=>q<="1100110" when "0101"=>q<="1101101" when"0110"=>q<="1111101" when "0111"=>q<="0100111" when"1000"=>q<="1111111" when"1001"=>q<="1101111
16、" when others=>q<="0000000" end case; end process;end one;2.2.5數碼管片選模塊數碼管片選模塊用來選擇數碼管哪一時刻有效。其電路圖如圖2.2.8。圖2.2.8數碼管片選模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cn6 is port(clk : in std_logic; cout : out std_logic_vector(2 downto 0);end cn6;arc
17、hitecture rtl of cn6 is signal q : std_logic_vector(2 downto 0);begin process(clk) begin if(clk'event and clk='1') then if(q=5) then q<="000" else q<=q+1; end if; end if; end process;cout<=q;end rtl;數碼管片選模塊的波形圖如圖2.2.9。圖2.2.9數碼管片選模塊2.2.6數碼管掃描模塊數碼管掃描模塊用來顯示輸出的數字。a3.0與b3.0
18、分別接秒鐘的高地位。c3.0與d3.0分別接分鐘模塊的高地位。e3.0與f3.0分別接小時模塊的高低位。其電路圖如圖2.2.10。圖2.2.10數碼管掃描模塊library ieee;use ieee.std_logic_1164.all;entity sel61 is port(sel : in std_logic_vector(2 downto 0); a,b,c,d,e,f : in std_logic_vector(3 downto 0); q : out std_logic_vector(3 downto 0);end;architecture rtl of sel61 isbegi
19、n process(a,b,c,d,e,f,sel) variable cout : std_logic_vector(3 downto 0); begin case sel is when "000"=>cout:=a; when "001"=>cout:=b; when "010"=>cout:=c; when "011"=>cout:=d; when "100"=>cout:=e; when others=>cout:=f; end case; q &l
20、t;=cout; end process;end rtl;2.2.7分頻模塊10分頻電路用來對時鐘信號十分頻。10分頻電路如圖2.2.11。圖2.2.11 10分頻電路library ieee;use ieee.std_logic_1164.all;entity fen10 is port(clk:in std_logic ;q:out std_logic);end fen10;architecture fen_arc of fen10 isbegin process(clk) variable cnt:integer range 0 to 9;beginif clk' event a
21、nd clk='1'thenif cnt<9 then cnt:=cnt+1;q<='0'elsecnt:=0;q<='1'end if;end if;end process;end fen_arc;十分頻器波形圖如圖2.2.12。圖2.2.12 十分頻器波形圖四分頻模塊電路圖如圖2.2.13。圖 2.2.13四分頻模塊library ieee;use ieee.std_logic_1164.all;entity fen4 is port(clk:in std_logic ;q:out std_logic);end fen4;a
22、rchitecture fen_arc of fen4 isbegin process(clk) variable cnt:integer range 0 to 3;beginif clk' event and clk='1'thenif cnt<3 then cnt:=cnt+1;q<='0'elsecnt:=0;q<='1'end if;end if;end process;end fen_arc;圖2.2.13四分頻模塊波形2.3硬件電路圖本電路采用fpga芯片ep1k10tc144-1,外加有源晶振。圖 2.2.14 硬件電路圖總結通過這次設計,進一步加深了對eda的了解,讓我對它有了更加濃厚的興趣。在編寫頂層文件的程序時,遇到了不少問題,特別是各元件之間的連接,以及信號的定義,總是有錯誤的存在,但是在我細心的檢查下,終于找出了錯誤和警告的所在,排除困難后,程序編譯就通過了。 在剛開始做實驗的時,做起來感覺有點困難,很多的步驟都不記得,但是還是摸索著繼續做完了實驗,后來的實驗就容易多了。 在這次實驗中也遇到了不少問題,開始的時候我先是決定做數字鐘這個實
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州炒茶培訓課件下載
- 汽車培訓課件制作
- 培訓課件體系設定
- 創業培訓課件
- 教師火災培訓課件
- 高考江蘇地理卷(試題參考答案)
- 2024年酒泉市金塔縣招聘城鎮公益性崗位人員筆試真題
- 2024年廣西高校畢業生“三支一扶”計劃招募考試真題
- 環保小衛士講課件
- 糖酵解調控機制-洞察及研究
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理體系 審核與認證機構要求》中文版(機翻)
- 醫院培訓課件:《麻醉藥品、精神藥品管理培訓》
- 室內裝修拆除施工方案
- 天津市濱海新區2023-2024學年高一年級下學期期末檢測語文試題(解析版)
- DB12-T 1153-2022 城市軌道交通運營設備設施大修和更新改造技術規范
- 北京市海淀區2023-2024學年八年級下學期期末考試語文試卷(含答案)
- 叉車裝卸搬運合同協議書
- 突發事件應對法考試題庫
- 公司勞務合同范本2018
- DL∕T 1753-2017 配網設備檢修試驗規程
- 寄生蟲病防治技能競賽試題及答案
評論
0/150
提交評論