EDA數(shù)字電子鐘課程設計
本文關鍵詞:eda課程設計,由筆耕文化傳播整理發(fā)布。
一 緒論
1 在信息產業(yè)中 EDA 產生的影響
隨著大規(guī)模集成電路技術和計算機技術的不斷發(fā)展,在涉及通信、國防、航 天、醫(yī)學、工業(yè)自動化、計算機應用、儀器儀表等領域的電子系統(tǒng)設計工作中, EDA 技術的含量正以驚人的速度上升;電子類的高新技術項目的開發(fā)也逾益依賴 于 EDA 技術的應用。即使是普通的電子產品的開發(fā),EDA 技術常常使一些原來 的技術
瓶頸得以輕松突破,從而使產品的開發(fā)周期大為縮短、性能價格比大幅提 高。不言而喻,EDA 技術將迅速成為電子設計領域中的極其重要的組成部分。
2 中國國內 EDA 發(fā)展情況
從目前的 EDA 技術來看,其發(fā)展趨勢是政府重視、使用普及、應用文泛、工具 多樣、軟件功能強大。 中國 EDA 市場已漸趨成熟,不過大部分設計工程師面向的是 PC 主板和小型 ASIC 領域,僅有小部分(約 11%)的設計人員工發(fā)復雜的片上系統(tǒng)器件。為了 與臺灣和美國的設計工程師形成更有力的競爭,中國的設計隊伍有必要購入一 些最新的 EDA 技術。 在信息通信領域,要優(yōu)先發(fā)展高速寬帶信息網(wǎng)、深亞微米集成電路、新型元 器件、計算機及軟件技術、第三代移動通信技術、信息管理、信息安全技術, 積極開拓以數(shù)字技術、網(wǎng)絡技術為基礎的新一代信息產品,發(fā)展新興產業(yè),培 育新的經(jīng)濟增長點。 要大力推進制造業(yè)信息化, 積極開展計算機輔助設計 (CAD) 、 計算機輔助工程(CAE)、計算機輔助工藝(CAPP)、計算機機輔助制造(CAM)、 產品數(shù)據(jù)管理(PDM)、制造資源計劃(MRPII)及企業(yè)資源管理(ERP)等。有 條件的企業(yè)可開展“網(wǎng)絡制造”,便于合作設計、合作制造,參與國內和國際 競爭。開展“數(shù)控化”工程和“數(shù)字化”工程。自動化儀表的技術發(fā)展趨勢的 測試技術、控制技術與計算機技術、通信技術進一步融合,形成測量、控制、
第 1 頁 共 23 頁
通信與計算機(M3C)結構。在 ASIC 和 PLD 設計方面,向超高速、高密度、低 功耗、低電壓方向發(fā)展。
3 課程設計目的
(1)加深對 VHDL 語言設計的理解。 (2)通過對多功能數(shù)字時鐘的設計加深對 EDA 課程的理解 (3)通過對多功能數(shù)字時鐘的設計了解簡易集成電路的設計思路 (4)熟悉 MAX+PLUS II 仿真軟件的工作方法及應用技術
4 課題設計內容
本次課程設計的主要目的旨在通過獨立完成一個 “電子時鐘”的 設計,達到對 EDA 技術的熟練掌握,提升對《EDA 技術及應用》課程所 學內容的掌握和應用。 在本次課程設計中使用 Altera 公司的 EPF10K10 系列的 FPGA 芯片, 基于實驗室現(xiàn)有的 EDA 實驗箱,實現(xiàn)“電子時鐘”的設計要求。 1、計數(shù) 24 小時的時鐘 2、六位數(shù)碼管顯示“時-分-秒” 3、五個功能鍵 (1) Timer 從其它狀態(tài)放回時鐘狀態(tài) (2) Alarm 切換到鬧鐘時間的設定 (3) Set (4) Down (5) Up 按一下,跳到下一個設置區(qū) 按一下,所設置區(qū)的數(shù)字減 1 按一下,所設置區(qū)的數(shù)字加 1
4、帶有鬧鐘功能; 5、鍵盤的設定值要求在 LED 上顯示。
一 設計的總體方案 流程圖:
第 2 頁 共 23 頁
本多功能數(shù)字時鐘由三個模塊組成:
(1)時間顯示模式:
24小時制顯示當前時間:小時用8與7數(shù)碼管,分鐘用5與4位數(shù)碼管,秒由2 與1位數(shù)碼管表示,小時與分鐘之間、分鐘與秒之間用3和6位數(shù)碼管顯示“—”, 總計八位七段數(shù)碼顯示管。此模式下顯示當前時間。
(2)校時模式:
將time鍵置于‘0’,運用功能鍵set鍵對八位數(shù)碼管進行選擇,并由功能鍵up 鍵進行+1與down鍵進行-1操作,通過此4個功能鍵進行校時設置。 Set->數(shù)碼管7-> Set->數(shù)碼管6-> Set->數(shù)碼管5-> Set->數(shù)碼管4-> Set->數(shù)碼 管3-> Set->數(shù)碼管2-> Set->數(shù)碼管1 Up->+1;down->-1;
(3)鬧鐘設定模式:
將time鍵置于‘1’,設定模式與校時時設定一樣,運用功能鍵set鍵對八位數(shù)碼 管進行選擇,并由功能鍵up鍵進行+1與down鍵進行-1操作,通過此4個功能鍵進 行校時設置。 Set->數(shù)碼管7-> Set->數(shù)碼管6-> Set->數(shù)碼管5-> Set->數(shù)碼管4-> Set->數(shù)碼 管3-> Set->數(shù)碼管2-> Set->數(shù)碼管1 Up->+1;down->-1;
二 設計的詳細原理
第 3 頁 共 23 頁
此多功能數(shù)字時鐘是由多個模塊組成,各個模塊實現(xiàn)各自不同的作用,綜合 起來,便是多功能數(shù)字時鐘。
1、主要模塊如下: (1)輸入一個 250KHZ 的方波信號 (2)計時模塊:
將time鍵置于‘0’,用軟件設計,,當脈沖累計2500000次時secondl自動+1, 以此類推,可得出數(shù)字時鐘,并用8位7段對各時間進行顯示。 輸入:250KHz脈沖,控制鍵time等 輸出:秒、分、小時
(3)校時模塊:
將time鍵置于‘0’, 運用功能鍵set鍵對八位數(shù)碼管進行選擇,并由功能鍵 up鍵進行+1與down鍵進行-1操作,通過此4個功能鍵進行校時設置。 輸入:time狀態(tài)轉換鍵,set數(shù)碼管選定鍵,up+1鍵,down-1鍵 輸出:設定后的 秒,分,小時
(4)設定鬧鐘模塊:
與校時操作類似,只是先將time鍵置于‘1’, 再運用功能鍵set鍵對八位數(shù) 碼管進行選擇,并由功能鍵up鍵進行+1與down鍵進行-1操作,通過此4個功能鍵 進行校時設置 輸入:time狀態(tài)轉換鍵,set數(shù)碼管選定鍵,up+1鍵,down-1鍵 輸出:所定的鬧鐘時間 秒,分,小時
(5)整點蜂鳴報時
運用軟件進行設置,當minuteH與minuteL均為零時,蜂鳴器響,也就是沒次整 點時,蜂鳴器自動響一分鐘,如果想設置響的時間,可以手動改即可。并且可以 手動按下功能鍵naozhong,這樣就可以手動關閉蜂鳴器。 輸入:naozhong關閉蜂鳴器鍵
輸出:蜂鳴器發(fā)出蜂鳴聲
2、功能概述 輸入一個 250KHZ 的方波信號,運用 VHDL 語言對其進行編譯,用計數(shù)器對方波 信號進行技術,當 cnt=2500000 時,secondl 自動+1,不斷進行累加,可以達到 實現(xiàn)數(shù)字鐘自動計時功能。并且此多功能數(shù)字鐘設有 5 個功能鍵, (1)time 鍵 控制顯示狀態(tài),可以選擇時鐘狀態(tài)與鬧鐘狀態(tài)的轉換(2)naozhong 鍵可以手動 關閉蜂鳴器(3) set 鍵可以選擇需要改變的數(shù)碼管,以便進行調時與設定鬧鐘 (4)up 鍵對對應的數(shù)據(jù)進行+1 操作(5)down 鍵對對應的數(shù)據(jù)進行-1 操作。通
第 4 頁 共 23 頁
過次 5 個功能鍵,便可實現(xiàn)多功能數(shù)字時鐘,擁有計時/校時功能,設定鬧鐘功 能,整點報時功能。
四 設計的步驟和過程 1 計時模塊:
if clk_1k'event and clk_1k = '1' then cnt:=cnt+1; ct:=ct+1; if ct=1000 then -- 1 秒計時。 ct:=0; secondL:=secondL+1; if secondL=10 then -- 10 秒計時。 secondL:=0; secondH:=secondH+1; end if; if secondH=6 then -- 1 分鐘計時。 secondH:=0; minuteL:=minuteL+1; end if; if minuteL=10 then -- 10 分鐘計時。 minuteL:=0; minuteH:=minuteH+1; end if; if minuteH=6 then -- 1 小計時時。 minuteH:=0; hourL:=hourL+1; end if; if hourL=10 then -- 10 小時計時。 hourL:=0; hourH:=hourH+1; end if; if hourH=2 and hourL =4 then -- 24 小時計時 hourH:=0; hourL:=0; end if; 次模塊的主要作用是完成 24 小時的即時顯示。
2 校時模塊
if clk'event and clk = '1' then
第 5 頁 共 23 頁
d<=set; k<=up; p<=down if time='0' then if ( d='0' and set='1')then stat<=stat+1; end if; case stat is when 1 => if(k='0' and up='1')then hourH<=hourH+1; elsif( p='0' and down='1')then hourH<= hourH-1; end if; when 2 => if( k='0' and up='1')then hourL<= hourL+1; elsif( p='0' and down='1')then hourL<= hourL-1; end if; when 3 => if(k='0' and up='1')then minuteH<= minuteH +1; elsif( p='0' and down='1')then minuteH<= minuteH -1; end if; when 4 => if( k='0' and up='1')then minuteL<= minuteL+1; elsif( p='0' and down='1')then minuteL<= minuteL-1; end if; when 5=> if(k='0' and up='1')then secondH<= secondH +1; elsif(p='0' and down='1')then secondH<= secondH-1; end if; when 6 => if( k='0' and up='1')then secondL<= secondL +1; elsif( p='0' and down='1')then secondL<= secondL-1; end if; when others=>null; end case; end if;
第 6 頁 共 23 頁
此模塊的主要功能是進行時鐘初始時間的設置。
3、設定鬧鐘模塊:
if clk'event and clk = '1' then d<=set; k<=up; p<=down; if time='1' then if ( d='0' and set='1')then stat<=stat+1; end if; case stat is when 1 => if(k='0' and up='1')then alarm_hourH<= alarm_hourH+1; elsif( p='0' and down='1')then alarm_hourH<= alarm_hourH-1; end if; when 2 => if( k='0' and up='1')then alarm_hourL<= alarm_hourL+1; elsif( p='0' and down='1')then alarm_hourL<= alarm_hourL-1; end if; when 3 => if(k='0' and up='1')then alarm_minuteH<= alarm_minuteH +1; elsif( p='0' and down='1')then alarm_minuteH<= alarm_minuteH -1; end if; when 4 => if( k='0' and up='1')then alarm_minuteL<= alarm_minuteL+1; elsif( p='0' and down='1')then alarm_minuteL<= alarm_minuteL-1; end if; when 5=> if(k='0' and up='1')then alarm_secondH<= alarm_secondH +1; elsif(p='0' and down='1')then alarm_secondH<=alarm_secondH-1; end if; when 6 => if( k='0' and up='1')then alarm_secondL<= alarm_secondL +1; elsif( p='0' and down='1')then
第 7 頁 共 23 頁
alarm_secondL<= alarm_secondL-1; end if; when others=>null; end case; end if;
此模塊完成鬧鐘的設定。
4、顯示模塊設計
if (time='0') then ahourH<=hourH; ahourL<=hourL; aminuteH<=minuteH; aminuteL<=minuteL; asecondH<=secondH; asecondL<=secondL; elsif(time='1')then ahourH<=alarm_hourH; ahourL<= alarm_hourL; aminuteH<= alarm_minuteH; aminuteL<= alarm_minuteL; asecondH<= alarm_secondH; asecondL<= alarm_secondL; end if; case cnt is -- To display the time. when 0 => L<="000"; -- Enable the leftmost display. case ahourH is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when others => null; end case; when 1 => L<="001"; -- Enable the second display. case ahourL is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when 3 => dled<=X"F2";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"B6";--5 when 6 => dled<=X"BE";--6 when 7 => dled<=X"E0";--7 when 8 => dled<=X"FE";--8
第 8 頁 共 23 頁
when 9 => dled<=X"F6";--9 when others => null; end case; when 2 => L<="010"; -- Enable the third display. dled<=X"01"; -- Blanked. when 3 => L<="011"; -- Enable the fourth display. case aminuteH is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when 3 => dled<=X"F2";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"B6";--5 when others => null; end case; when 4 => L<="100"; -- Enable the fifth display. case aminuteL is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when 3 => dled<=X"F2";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"B6";--5 when 6 => dled<=X"BE";--6 when 7 => dled<=X"E0";--7 when 8 => dled<=X"FE";--8 when 9 => dled<=X"F6";--9 when others => null; end case; when 5 => L<="101"; -- Enable the sixth display. dled<=X"01"; -- Blanked. when 6 => L<="110"; -- Enable the seventh display. case asecondH is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when 3 => dled<=X"F2";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"B6";--5 when others => null; end case; when 7 => L<="111"; -- Enable the rightmost display case asecondL is when 0 => dled<=X"FC";--0
第 9 頁 共 23 頁
when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when 3 => dled<=X"F2";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"B6";--5 when 6 => dled<=X"BE";--6 when 7 => dled<=X"E0";--7 when 8 => dled<=X"FE";--8 when 9 => dled<=X"F6";--9 when others => null; end case; end case; 此模塊實現(xiàn)數(shù)字鐘的顯示及鬧鐘設定時的顯示。
五、蜂鳴器模塊設計
if ((hourH = alarm_hourH) and (hourL= alarm_hourL) and (minuteH = alarm_minuteH) and (minuteL = alarm_minuteL)) or ((minuteH=0)and(minuteL=0) )then sound<='1'; end if; if (naozhong='1')then sound<='0'; end if;
此模塊實現(xiàn)鬧鐘蜂鳴以及整點蜂鳴報時。
四、設計的仿真和運行結果
(1)將 time 鍵置于‘0’ ,輸入 clk 信號,可以得到時鐘輸出波形為:
此時時鐘自動計時, 并且將計時數(shù)據(jù)傳送至顯示管顯示。 如上圖 asecond=second; (2)將 time 鍵置于‘0’ ,輸入 clk 信號,并將 set 改為 20 分頻信號,up 與 down
第 10 頁 共 23 頁
信號交叉為 1,得到時鐘輸出波形為:
如圖所示此時時間不是正常變化, 因為有手動設置進行 up (+1) 操作和 down (-1) 操作,并且將時間由數(shù)碼管顯示。 (3)將 time 鍵置于‘1’ ,則顯示鬧鐘初始調節(jié)狀態(tài):
第 11 頁 共 23 頁
此時 secondl,secondH,minuteL,minuteH,hourL,hourH 不受影響,均自動計時,但 是并不由數(shù)碼管進行顯示,此時顯示的是鬧鐘初定時間,這時均為 0。由于 set 變化,stat 順序發(fā)生變化。 (4)將 time 置于‘1’ ,并可以改變 set 鍵進行數(shù)碼管選擇,并用 up(+1)操作 和 down(-1)操作,進行鬧鐘的初步設定。
此時可以得到時鐘的初步設定。 (5)外部硬件的鏈接方法如圖
(6)時鐘顯示如下圖
第 12 頁 共 23 頁
時鐘圖如上
鬧鐘初定時間如上圖
第 13 頁 共 23 頁
五 課程設計的心得體會
EDA 的課程設計持續(xù)了兩周,但我卻覺得仿佛還是當日,真是揮指之間, 時光已匆匆流逝。在這整整兩個星期的日子里,我感受到了既是成功做出一個模 塊的歡喜,也是修改那無限 errors 時的憂愁,可以說是無數(shù)次的苦盡甘來,換來 了最后的成功。 本身我就對動手的實驗相當有興趣,這次能夠擁有兩周的課程設計時間, 我甚是欣慰。從第一天開始知道我的多功能時鐘課題開始,我就第一時間跑去圖 書館借資料,回去反復研究,從看懂程序開始入手。雖然開始有些棘手,但我覺 得特別的興奮,我不把困難當成攔路虎,反而成為我前進的動力,遇到困難不會 就翻書,找不到就問同學,再不行就上網(wǎng)搜,實在不行再問老師,總之想盡一切 辦法找到解決方案?墒鞘屡c愿違,我的設計總是出那么一點點的小問題,有時 候編譯只出現(xiàn) 1 個 error ,但一改就成了 20 個 errors 了,真是讓人哭笑不得,望 天興嘆呀! 經(jīng)過兩三天的基礎訓練,我終于能夠完整的看懂程序。首先我將老師給我 們基本的時鐘程序進行編譯,封鎖引腳,然后在硬件上得到正確的數(shù)碼管顯示。 通過這個最基本的操作,我將大體流程映入腦海,可以舉一反三,再困難的程序 也不怕。 整點報時自然是最簡單的,我首先就加到程序內部,其次我在網(wǎng)上找到了 鬧鐘程序,因為跟要求差距過大,所以我先讀懂程序,然后根據(jù)自己理解,一步 步的加進初始的時鐘程序。這個看似很簡單的過程,卻整整費了 4 天的時間,期 間錯誤百出。我先是運用了多個 process,進行模塊化的處理,通過這里面出現(xiàn) 的問題我才知道敏感參數(shù)列表是不能亂設置的,single 是全局變量,而 variable 只能在一個 process 中使用等等。后來慢慢理解了其中的原委,發(fā)現(xiàn)我的程序竟 如此之長,我決定要大量的刪減,于是我又把多個 process 改成了一個,看似好 像我是又回到了出發(fā)點,但我覺得這絕對是一次質的飛躍,是我能夠依照我的想 法自由變換程序的映照。當我自認為要成功的時候,我卻遇到了一個相當棘手的 問題,此時 error 顯示 unkown problem internal error:”widthe mismatch in relation opreator”in ebuildbinaryop an line 1347 of file,雖然只有一個問題,但這個問題卻
第 14 頁 共 23 頁
無法定位,以至于我找了很久都沒找到。那幾天我心里很壓抑,明明對的程序, 為什么就出現(xiàn)這樣的問題,讓我真的很頭疼,差點絕望放棄。直至周二,我決定 從新回到起點,再寫一次,一個模塊一個模塊往里加。終于在我不倦的努力下, 我找出了錯誤的語句,并用其他語句替換了它,然后輕松地加入比較簡單的校時 模塊、蜂鳴模塊。終于在周四之前將程序順利的完成,本想再將秒表加進來,但 看到程序比較繁瑣,就此作罷?吹阶詈蟪绦虻母鱾模塊正確的運行,心情真是 無法言語… 通過這次獨立的課程設計,我學到了很多書本上學不到的東西,尤其是在 改正錯誤的時候,我能更加深入的了解 VHDL 語言的精妙之處。比如同一個 process 下不能使用不同信號進行 event 跳變,single 與 variable 之間的差別等等 等等。通過這一次一次的親身體驗,我仿佛發(fā)生了一次洗禮,經(jīng)過了一個質的飛 躍,F(xiàn)在的我已經(jīng)基本能看懂 VHDL 程序,改正其中出現(xiàn)的錯誤。
希望以后能多多進行這樣的實習,讓自己的能力越來越高。 參考書目:
[1] 閻石 主編, 《數(shù)字電子技術基礎》 ,高等教育出版社,1998 [2] 譚會生等主編, 《EDA 技術及應用》 ,西安電子科技大學出版社,2001 [3] 廖裕評等主編, 《CPLD 數(shù)字電路設計——使用 MAX+plusⅡ入門篇》 ,清華大 學出版社,2001 [4] 馮濤等主編, 《可編程邏輯器件開發(fā)技術:MAX+plusⅡ入門與提高》 ,人民郵 電出版社,2002 [5] 楊崇志, 《特殊新型電子元件手冊》 ,遼寧科學技術出版社,1999 [6] 彭介華, 《電子技術課程設計指導》高等教育出版社.2000 年出版. [7] Mark Zwolinski, Digital System Design with VHDL, 電子工業(yè)出版社, 2002 [8] Alan B. Marcovitz Introduction to logic Design, 電子工業(yè)出版社,2002
第 15 頁 共 23 頁
附錄 1:
總程序如下:
library IEEE; use IEEE.std_logic_1164.all; entity timer is port(clk : in std_logic; -- System clock input port(250KHz). naozhong:in std_logic; L : out std_logic_vector(2 downto 0); -- 8 seven-segment displays selection ports. dled: out std_logic_vector(7 downto 0); -- Digits display ports. time:in std_logic; sound: out std_logic; clk_1:in std_logic; clk_2:in std_logic; clk_3:in std_logic); end timer; architecture display of timer is signal cnt: integer range 0 to 7; -- 8 seven-segment displays seletion counter. signal ct:integer range 0 to 250000 ; -- 1 second generator counter. signal hourH,ahourH,alarm_hourH: integer range 0 to 2; signal minuteH,secondH,aminuteH,asecondH,alarm_minuteH,alarm_secondH: integer range 0 to 6;
第 16 頁 共 23 頁
signal hourL,minuteL,secondL,ahourL,aminuteL,asecondL,alarm_hourL,alarm_minuteL,alarm_secondL: integer range 0 to 10; signal set : integer range 0 to 7; signal d,k,p: std_logic; begin process (clk) begin if clk'event and clk = '1' then sound<='1'; cnt<=cnt+1; ct<=ct+1; if ct=250000 then -- 1 second ct<=0; secondL<=secondL+1; end if; if secondL=10 then -- 10 seconds secondL<=0; secondH<=secondH+1; end if; if secondH=6 then -- 60 seconds(1 minute) secondH<=0; minuteL<=minuteL+1; end if; if minuteL=10 then -- 10 minutes minuteL<=0; minuteH<=minuteH+1; end if; if minuteH=6 then -- 60 minutes(1 hour) minuteH<=0; hourL<=hourL+1; end if; if hourL=10 then -- 10 hours hourL<=0; hourH<=hourH+1; end if; if hourH=2 and hourL =4 then -- 24 hours hourH<=0; hourL<=0; end if;
第 17 頁 共 23 頁
if (time='0') then ahourH<=hourH; ahourL<=hourL; aminuteH<=minuteH; aminuteL<=minuteL; asecondH<=secondH; asecondL<=secondL; elsif(time='1')then ahourH<=alarm_hourH; ahourL<= alarm_hourL; aminuteH<= alarm_minuteH; aminuteL<= alarm_minuteL; asecondH<= alarm_secondH; asecondL<= alarm_secondL; end if; case cnt is -- To display the time. when 0 => L<="000"; -- Enable the leftmost display. case ahourH is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when others => null; end case; when 1 => L<="001"; -- Enable the second display. case ahourL is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when 3 => dled<=X"F2";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"B6";--5 when 6 => dled<=X"BE";--6 when 7 => dled<=X"E0";--7 when 8 => dled<=X"FE";--8 when 9 => dled<=X"F6";--9 when others => null; end case; when 2 => L<="010"; -- Enable the third display. dled<=X"01"; -- Blanked. when 3 => L<="011"; -- Enable the fourth display. case aminuteH is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1
第 18 頁 共 23 頁
when 2 => dled<=X"DA";--2 when 3 => dled<=X"F2";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"B6";--5 when others => null; end case; when 4 => L<="100"; -- Enable the fifth display. case aminuteL is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when 3 => dled<=X"F2";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"B6";--5 when 6 => dled<=X"BE";--6 when 7 => dled<=X"E0";--7 when 8 => dled<=X"FE";--8 when 9 => dled<=X"F6";--9 when others => null; end case; when 5 => L<="101"; -- Enable the sixth display. dled<=X"01"; -- Blanked. when 6 => L<="110"; -- Enable the seventh display. case asecondH is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when 3 => dled<=X"F2";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"B6";--5 when others => null; end case; when 7 => L<="111"; -- Enable the rightmost display case asecondL is when 0 => dled<=X"FC";--0 when 1 => dled<=X"60";--1 when 2 => dled<=X"DA";--2 when 3 => dled<=X"F2";--3 when 4 => dled<=X"66";--4 when 5 => dled<=X"B6";--5 when 6 => dled<=X"BE";--6 when 7 => dled<=X"E0";--7 when 8 => dled<=X"FE";--8 when 9 => dled<=X"F6";--9
第 19 頁 共 23 頁
when others => null; end case; end case; d<=clk_1; k<=clk_2; p<=clk_3; if time='1' then if ( d='0' and clk_1='1')then set<=set+1; end if; case set is when 1 => if(k='0' and clk_2='1')then alarm_hourH<= alarm_hourH+1; elsif( p='0' and clk_3='1')then alarm_hourH<= alarm_hourH-1; end if; when 2 => if( k='0' and clk_2='1')then alarm_hourL<= alarm_hourL+1; elsif( p='0' and clk_3='1')then alarm_hourL<= alarm_hourL-1; end if; when 3 => if(k='0' and clk_2='1')then alarm_minuteH<= alarm_minuteH +1; elsif( p='0' and clk_3='1')then alarm_minuteH<= alarm_minuteH -1; end if; when 4 => if( k='0' and clk_2='1')then alarm_minuteL<= alarm_minuteL+1; elsif( p='0' and clk_3='1')then alarm_minuteL<= alarm_minuteL-1; end if; when 5=> if(k='0' and clk_2='1')then alarm_secondH<= alarm_secondH +1; elsif(p='0' and clk_3='1')then alarm_secondH<=alarm_secondH-1; end if; when 6 => if( k='0' and clk_2='1')then alarm_secondL<= alarm_secondL +1; elsif( p='0' and clk_3='1')then alarm_secondL<= alarm_secondL-1;
第 20 頁 共 23 頁
end if; when others=>null; end case; end if; if time='0' then if ( d='0' and clk_1='1')then set<=set+1; end if; case set is when 1 => if(k='0' and clk_2='1')then hourH<=hourH+1; elsif( p='0' and clk_3='1')then hourH<= hourH-1; end if; when 2 => if( k='0' and clk_2='1')then hourL<= hourL+1; elsif( p='0' and clk_3='1')then hourL<= hourL-1; end if; when 3 => if(k='0' and clk_2='1')then minuteH<= minuteH +1; elsif( p='0' and clk_3='1')then minuteH<= minuteH -1; end if; when 4 => if( k='0' and clk_2='1')then minuteL<= minuteL+1; elsif( p='0' and clk_3='1')then minuteL<= minuteL-1; end if; when 5=> if(k='0' and clk_2='1')then secondH<= secondH +1; elsif(p='0' and clk_3='1')then secondH<= secondH-1; end if; when 6 => if( k='0' and clk_2='1')then secondL<= secondL +1; elsif( p='0' and clk_3='1')then secondL<= secondL-1; end if; when others=>null; end case;
第 21 頁 共 23 頁
end if; if ((hourH = alarm_hourH) and (hourL= alarm_hourL) and (minuteH = alarm_minuteH) and (minuteL = alarm_minuteL)) or ((minuteH=0)and(minuteL=0) )then sound<='1'; end if; if (secondH=1)or(naozhong='1')then sound<='0'; end if; end if; end process; end architecture display;
附錄 2: 仿真波形
第 22 頁 共 23 頁
更多相關文檔:
EDA 數(shù)字鐘設計 (內容較全面)
EDA設計II-多功能數(shù)字時... 24頁 1下載券 EDA數(shù)字時鐘課程設計 10頁 免費 ...II與FPGA,制作數(shù)字鐘...
基于EDA技術的數(shù)字時鐘設計
電子系統(tǒng)課程設計任務書設計題目:基于 EDA 技術的數(shù)字時鐘設計 設計題目 設計目的:課程設計是一種復雜的學習實踐過程。設計過程采用系統(tǒng) 設計目的 設計的方法, 先...
EDA數(shù)字電子鐘課程設計
一 緒論 1 在信息產業(yè)中 EDA 產生的影響隨著大規(guī)模集成電路技術和計算機技術的不斷發(fā)展,在涉及通信、國防、航天、醫(yī)學、工業(yè)自動化、計算機應用、儀器儀表等領域的...
多功能數(shù)字時鐘課程設計
多功能數(shù)字時鐘課程設計_工學_高等教育_教育專區(qū)。VHDL課程設計 EDA 技術課程設計設計題目: 學號: 專業(yè)年級: 學院: 姓名: 指導教師: 時間: 多功能數(shù)字鐘設計 ...
數(shù)字電子鐘課程設計報告
關鍵詞:數(shù)字電子鐘 校時 報時 子系統(tǒng) 一、設計要求本案例將在 QuartusII 開發(fā)系統(tǒng)中用可編程邏輯器件,完成簡易數(shù)字鐘的 EDA 設計, 具體要求為: 1 數(shù)字鐘功能:...
數(shù)字電子鐘.eda課程設計
※※※ 2008 級學生 EDA 課程設計 ※※ ※※※ EDA 課程設計報告書 課題名稱 姓學院專名號系業(yè) 數(shù)字電子鐘熊靜平 0812201-41 物理與電信工程系 電子信息...
eda課程設計數(shù)字鐘
EDA課程設計 數(shù)字時鐘 12頁 免費 EDA數(shù)字鐘設計論文 14頁 免費 數(shù)字鐘課程設計報告 10頁 5財富值 eda課程設計報告_數(shù)字鐘 18頁 5財富值如要投訴違規(guī)內容,請到...
eda課程設計-多功能數(shù)字鐘
eda課程設計-多功能數(shù)字鐘_電子/電路_工程科技_專業(yè)資料。多功能數(shù)字鐘 EDA 課程設計實用多功能數(shù)字鐘 學專班學姓 院: 業(yè): 級: 號: 名: 機械與電子工程學院...
電子鐘課程設計_圖文
湖南商學院《電子技術》課程設計報告題 目 數(shù)字電子鐘的設計 姓學專班 名: ...構思設計方案; 3) 組建功能框圖,完成整機電路的系統(tǒng)設計; 4) 應用 EDA 軟件 ...
EDA課設數(shù)字鐘設計
EDA課設數(shù)字鐘設計_電子/電路_工程科技_專業(yè)資料。課程設計報告 課程名稱 課題名稱 數(shù)字系統(tǒng)與邏輯設計 數(shù)字鐘設計 專班學姓 業(yè)級號名 通信工程 指導教師 喬匯東...
更多相關標簽:
eda電子鐘課程設計 | 數(shù)字電子鐘課程設計 | 數(shù)字電子鐘的課程設計 | eda數(shù)字時鐘課程設計 | eda課程設計數(shù)字鐘 | eda數(shù)字秒表課程設計 | 數(shù)字電子鐘eda | 單片機電子鐘課程設計 |本文關鍵詞:eda課程設計,由筆耕文化傳播整理發(fā)布。
本文編號:240584
本文鏈接:http://sikaile.net/wenshubaike/kcsz/240584.html