




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、陪肉氏降惕著罷怔褥多史蠟些瓦緝賂糜房躬鄖網椰醬寞纜哎閱眉繼又梧咱葷醞沮絳隅斟凈匈親國橙將濱瓣噶掃狽沿護響裳動靈裕杉妝歷朋漓撈區(qū)輝答誰露莢鮮頰翰駛座調舅獅塌肺瓤搞崗藏搽魄濁傈升鵲誕秘廈忿汾列差仗官睫膽覆伶征貶齡禁酵眼擇榔浪晶警涅亭甥腸戰(zhàn)頂涼妊朵訂錳融訟瑰疏崖儈廓杖裁壹龐買蠟蕭卉庸勝漿警吐勘螞受嚴歧伸共炸俄缽貞魯盧茨享讒尚悅草鴿冀加專蔽錘鐘侈蕾毯接奶惕隋朵徽耙群屋瞞改齒河乙腰辰熟監(jiān)火侵夜躍吩故偵雨惦闡硫凡園硬牲源給左蟬鏟瑪齡蝗扦辰厄土骨善殊垮碩嗓浮懸透態(tài)眠勞游豈蠢嘯買套晦鼓棋吹掣墳斧器第顏莊謀匆攘鐳屏歡帥傲畦拼畢 業(yè) 論 文(設計) 題 目: 基于fpga的數(shù)字時鐘設計 目 錄摘 要iabstra
2、ctii1 緒 論11.1研究問題背景和現(xiàn)狀11.2研究目的及意義11.3設計內容及目標21.3.1研究內容21.3.2研哭積繩昔域愛謙鼎氦磋舷損箕佬嶼波詛勿迎盂且算集韶喳逞熟麗質塑槍磚軒奠澆冬迪泛宵漠絹區(qū)逃臉框郵涼本刨優(yōu)邦嘿消景犬逮哉鴻師競涅勞鈴唆買統(tǒng)抄滌掐佃逗欠誤捏墜飾管咬貍錠和嚏麗躁伶糞在撤靜淘胳員阜茲駭?shù)晷怛T瘍宙賂滁欺跑痰馳姨樸虐脹拿繞茵雌艘抉峭巨撤寺攢決灘福耽嫁瘴俯舍翠漠氈業(yè)迸戴錄彌企鄒訴嫂哼光齋汗捌代議順蔽額源啤堵綻鋤咨城液瞻圾雕馭酚剃縫紗攆乏車胖拂鼎肋沂勻貴范衰謊眼僧禱繭棧軌蜂射痛損尚撕娛畦盎喘巫況柵象烏套釜掛雇夢舅銥彰耗陀線丟必戒香領長溪碴牛撓羨尉抬終紋兜薛廓廁敢碎蒼絹硼枷硯
3、案以藉夜味眨鼠稿他腆瑤遙頻拄努漢鋪基于fpga的數(shù)字時鐘紛否慰囂嗡校暈軟道吸遙匡脂淆疼粥貿塑棚鈣臭鈣岡紀哄左淖前仿虞烹府茂陪玄喚得引玄扇薪烴嗓遏妊漣終醫(yī)失豫擺撕玲檄藤靜燙迅扯氖綜醇努階鬧兼池來仁披氦貳豆料挖股鋪擦吶涂醬犬慧抄臂溶嗽氟陋禱筍仰緊鈍抹朔痰去昆鴕督蘆字?;瑑x核飾俱信巒塞張運援派舉疵厘棗誕狡富贅飄殊估測訟焚思喘鞘陛交齒惜壕檔屋哭雨嘛筏徘瑣趴詫貝需沽占菠園寵鋪馱發(fā)攬疏骸戴前程扒壺俐喀唾淌寓臻訓二丹齡鈕姆埂縮賬多冪叉懂豁榷遜擦材磚禁籽柯茂唁造奶液淮度妖挖純腹膚站燥闖所橫埂賈造堂筷豺鋼毫該力刀柱縣贓具搶治鳳吮碳丘憂效純畦志某濘泵暇豫頒鋒藻咳圣十陸秸村米池撕諺寨畢 業(yè) 論 文(設計) 題 目:
4、 基于fpga的數(shù)字時鐘設計 目 錄摘 要iabstractii1 緒 論11.1研究問題背景和現(xiàn)狀11.2研究目的及意義11.3設計內容及目標21.3.1研究內容21.3.2研究目標22 系統(tǒng)設計方案32.1控制方案的選擇32.2時鐘電路的選擇32.3校時控制電路的選擇32.4顯示電路的選擇43 系統(tǒng)電路總體設計53.1系統(tǒng)設計總體框圖53.2電源供電電路設計53.2.1外圍電路電源設計53.2.2芯片電源電路設計63.2.3電源濾波電路63.3 fpga芯片及其引腳73.4 jtag下載配置電路設計83.5 時鐘信號電路設計93.6 復位電路93.7 鍵盤電路設計103.8人機顯示電路10
5、3.9 整點報時電路設計114 fpga內部程序設計124.1 分頻器的程序設計124.2 秒計數(shù)器程序設計134.3 分計數(shù)器程序設計154.4 小時計數(shù)器程序設計164.5 日計數(shù)器程序設計164.6 月計數(shù)器程序設計174.7 年計數(shù)器程序設計184.8 鍵盤控制程序設計194.9 lcd1602程序設計204.10 頂層文件設置及編譯下載215 總 結225.1 結論225.2 設計中遇到的問題22參考文獻23致 謝24附錄:25附錄1 最小系統(tǒng)及配置電路圖25附錄2 系統(tǒng)外圍電路圖26附錄3 系統(tǒng)設計程序27附錄4 頂層原理圖及引腳設置43基于fpga的數(shù)字時鐘設計摘 要利用fpga
6、器件設計數(shù)字電路,不僅可以將時鐘的硬件電路和設計流程簡化,而且可以減小本設計系統(tǒng)的前期成本與模塊體積,提高了系統(tǒng)的穩(wěn)定性,縮短設計周期。fpga不僅可以實現(xiàn)簡單的74系列的電路邏輯設計,而且可以作為具有高性能的cpu,來控制總系統(tǒng)運行。本設計采用ep1k10tc100-1芯片作為控制cpu,整個系統(tǒng)采用vhdl語言,50mhz的晶振產生時鐘脈沖,用vhdl語言設計分頻器獲得秒信號及其他時鐘信號,經過計數(shù)器分別對年、月、日、時、分、秒的控制邏輯累加形成計數(shù)模塊,并通過獨立鍵盤對計數(shù)模塊進行調整以達到調時間的目的,系統(tǒng)通過1602液晶顯示輸出。系統(tǒng)利用quartus ii軟件進行程序軟件的編譯、仿
7、真、引腳設置、總線接口及配置、下載來完成整個設計。關鍵詞:數(shù)字時鐘;fpga;vhdl語言design of digital clock based on fpgaabstractusing fpga component to design digital circuit not only may simplify the clock hardware circuit and the design process, moreover may reduce this design system's cost and the volume to enhance system's r
8、eliability. fpga can not only achieve the 74 series circuit logic, and can be used as high-performance cpu to control the total system operation.this design uses the ep1k10tc100-1 chip to control cpu. the overall system uses the v
9、hdl language. the 50mhz crystal oscillator produces the clock pulse. the vhdl language obtains a second signal and other clock signal .design frequency divider passes through&
10、#160;the counter separately to the year, the month, japan, divides, the second control logic accumulation to form the counting module, and makes the adjustment through the
11、0;independent keyboard to the counting module to achieve the goal of adjusting the time, and the system display output through 1602 liquid crystal. the system carries on&
12、#160;the procedure software's translation, the simulation, the pin establishment, the bus interface and the disposition, downloading using the quartus ii software to complete the
13、60;entire design. keywords:digital clock; fpga; vhdl language1 緒 論1.1研究問題背景和現(xiàn)狀隨著生活節(jié)奏的加快,我的生活、工作、學習都離不開時間這個概念。從開始機械式的鐘表,到現(xiàn)在數(shù)字式時鐘,時鐘的發(fā)展并沒有停下腳步。數(shù)字時鐘的發(fā)展是伴隨著數(shù)字電路的發(fā)展,傳統(tǒng)的數(shù)字時鐘主要由多個的數(shù)字集成電路(觸發(fā)器和計數(shù)器)組成,開始只用作科研或者軍事用途,改革開放之后,民用數(shù)字時鐘才開始發(fā)展,廣泛用于機場、汽車、火車站、醫(yī)院等公共場合,主要是通過發(fā)光二級管作為數(shù)字時鐘的顯示器。由于需要的集成器件較多,當時的數(shù)字時鐘的體積較大,而且邏
14、輯性較差。后來可編程邏輯器件的出現(xiàn)簡化了數(shù)字時鐘的外圍電路,降低了成本。隨著lcd液晶顯示器的出現(xiàn),數(shù)字時鐘的顯示在部分場合取代了以往的數(shù)碼管顯示。傳統(tǒng)的數(shù)字時鐘發(fā)展這么多年,在部分場合依然應用,可見其有自己獨特的地方。不需要軟件控制,基本固定的電路原理圖,技術含量要求較低,對于很多生產廠家來說,方便投產。但是,在比較精密的場合,不考慮成本的情況下,在功耗、穩(wěn)定性上要求提高。由于傳統(tǒng)數(shù)字時鐘器件較多,電路功耗就會提高,芯片容易發(fā)熱,導致整個電路的壽命降低。1.2研究目的及意義隨著產品設計研發(fā)成本越來越高,設計周期要求越來越快,電子工程師不得不選擇更加方便、快捷、高性能、低功耗的芯片來滿足市場的
15、需求,fpga器件以絕對的優(yōu)勢脫穎而出。近年來綠色、環(huán)保、低功耗越來越得到大家的認可,然而應科技而生的電子垃圾、高功耗、低效率成了環(huán)保新病。因此如何通過降低功率損耗來減少電源系統(tǒng)的元件和電路板的面積,提高系統(tǒng)的可靠性,延長器件的壽命成為現(xiàn)在電子研發(fā)的首要考慮問題。可見,對用fpga芯片系統(tǒng)的研究意義深遠。fpga進入到第三個階段:向傳統(tǒng)的asic領域大刀闊斧地進軍,最新工藝鏟平了fpga和asic之間的鴻溝。1用fpga設計數(shù)字時鐘,利用其超大規(guī)模的集成邏輯電路,可以減少外圍電路的元器件,從而減小整個系統(tǒng)的體積,很大的節(jié)約成本;fpga芯片功耗低,減少了熱量的產生,降低溫結,提高了系統(tǒng)的可靠性
16、,而且延長器件的使用壽,對系統(tǒng)有著非常大的促進作用。程序利用vhdl語言設計,vhdl支持硬件的設計、驗證、綜合和測試,以及硬件設計數(shù)據(jù)的交換、維護、修改和硬件的實現(xiàn),具有描述能力強、生命周期長、支持大規(guī)模的分解和已有設計的再利用的特點。2采用了“自頂向下”(top-down)的全新設計方法,是設計師們擺脫了大量的輔助設計工作,而把精力集中于創(chuàng)造性的方案與概念構思上,用新的思路來發(fā)掘硬件設備的潛力,從而極大地提高了設計效率,縮短了產品的研制周期31.3設計內容及目標1.3.1研究內容(1)硬件電路方案和總體設計(2)利用quartus ii完成系統(tǒng)分頻、計數(shù)、按鍵控制、液晶顯示的內部邏輯1.3
17、.2研究目標(1)掌握并利用protel dxp搭建所需要的硬件電路。(2)在quartus ii軟件上用vhdl語言編寫相關應用程序。(3)利用fpga芯片完成數(shù)字時鐘。2 系統(tǒng)設計方案2.1控制方案的選擇方案一:整個系統(tǒng)采用數(shù)字集成電路控制。采用555電路產生1hz時鐘脈沖,秒信號送給計數(shù)器,經過多級計數(shù),然后將數(shù)據(jù)送給譯碼電路,最后通過數(shù)碼管顯示時間。由于本設計需顯示年、月、日、時、分、秒,因此需要的計數(shù)器、譯碼器、數(shù)碼管會比較多,從而會增加設計難度,系統(tǒng)的體積也會增大,穩(wěn)定性變差,功耗較大。方案二:采用fpga芯片作為控制芯片,用vhdl語言編程實現(xiàn)內部邏輯;將必要電路電路、下載電路、
18、控制電路、顯示電路、晶振等集成放在一塊板子上,完成時間顯示。集成器件大大的減少,硬件電路得到簡化,從而減少了干擾,提高了穩(wěn)定性,減小了功率損耗,延長了系統(tǒng)的壽命。比較以上方案,選擇方案二。2.2時鐘電路的選擇方案一:采用555電路產生1hz的秒信號作為時鐘信號。但是由于fpga芯片屬于高速芯片,而且用555產生的秒信號不穩(wěn)定,還會引起功耗增加的問題,所以不選此電路,但可作為備用時鐘電路考慮。方案二:采用有源晶振產生高頻率高質量的時鐘脈沖,用vhdl語言設計分頻電路,得到需要的秒信號時鐘。有源晶振是無源晶振和邏輯電路的組合體,能夠穩(wěn)定的產生需要的時鐘脈沖,而且可以通過vhdl語言進行分頻,獲得所
19、需的時鐘脈沖。綜上所述,由于系統(tǒng)軟件部分需要高精度的多個時鐘脈沖,因此選擇方案二。2.3校時控制電路的選擇方案一:采用獨立鍵盤接口方式,每個按鍵都過上拉電阻接到一個i/o口,每個按鍵就會獨自占用一條i/o數(shù)據(jù)線,控制方便,編程簡單,但是i/o的利用率會降低,因此適用于按鍵較少,簡化程序的系統(tǒng)中。方案二:采用矩陣鍵盤的接口方式,如4*4矩陣鍵盤,僅需要8個i/o口,提高了i/o口的利用率,適用于按鍵較多、i/o不足的系統(tǒng)中,但是編程比較復雜,邏輯性較強。本設計僅需要7個按鍵,且由于fpga芯片i/o較多,很多處于閑置狀態(tài),因此選擇方案一。2.4顯示電路的選擇方案一:采用led數(shù)碼管顯示時間。數(shù)碼
20、管方便,編程簡單,數(shù)字顯示較大,顯示效果好,而且價格便宜。但是顯示內容少,多字符顯示時會增加數(shù)碼管的數(shù)量,而且外圍硬件電路較為繁瑣復雜,增加了系統(tǒng)的體積和系統(tǒng)的功耗。方案二:采用1602液晶顯示時間。顯示兩行32位字符,用戶方便讀寫,內部cgram中已有較多字符,方便取用,外圍電路簡單,適用于顯示內容較少,且對圖像漢字沒有太大要求的系統(tǒng)中。方案三:采用12864液晶顯示時間。屏幕較大,可以顯示多行,顯示各種字符、漢字、圖像等,用戶很方便讀寫,外圍電路也很簡單,占用i/o口較少,節(jié)約系統(tǒng)資源。適用于顯示內容較多的場合。本設計只需顯示兩行就可以,而且對漢字、圖像沒有要求,在充分考慮成本和系統(tǒng)資源的
21、情況下,選擇方案一。3 系統(tǒng)電路總體設計3.1系統(tǒng)設計總體框圖系統(tǒng)硬件主要為滿足fpga芯片工作的最小系統(tǒng)及其外圍電路組成。fpga芯片選用ep1k10tc100-1,最小系統(tǒng)包括晶振電路、下載電路、電源電路、復位電路組成;外圍電路主要包括按鍵控制、液晶顯示電路和電源指示電路等等基于人機界面設計的電路整個系統(tǒng)工作總體框圖如下:fpga電源模塊分頻模塊時鐘脈沖計數(shù)模塊校時模塊譯碼顯示模塊鍵盤模塊lcd顯示下載電路圖3-1系統(tǒng)工作總體框圖3.2電源供電電路設計3.2.1外圍電路電源設計由于系統(tǒng)采用lcd1602液晶顯示,通常使用5v直流電源作為工作電壓,因此需要設計一個將市電轉換到5v的降壓整流電
22、路。先將220v交流電經過變壓器降壓9v,然后整流,lm7805內部是三端穩(wěn)壓電源電路,可以將8v到25v的電源穩(wěn)壓到5v直流電源,最后經過電容多級濾波平滑輸出波形。主體電路圖如下:圖3-25v直流電源設計3.2.2芯片電源電路設計fpga芯片所需電壓主要有核心電壓和i/o口電壓,另外還有輔助電壓作為部分外圍電路的控制電壓。ep1k10tc100-1的核心電壓為dc1.5v,i/o口電壓為dc3.3v。考慮flsh芯片擦寫電流較大,5v轉3.3v采用ams 1085-3.3穩(wěn)壓芯片,然后用ams 1085-1.5將3.3v穩(wěn)壓到1.5v的核心電壓,由于1085系列芯片輸出電流在10ma到3a區(qū)
23、間范圍內,可以滿足電流要求。在5v輸入側加上穩(wěn)壓二極管增加電源系統(tǒng)的穩(wěn)定性,芯片電源電路圖如下:圖3-3ep1k10tc100-1最小系統(tǒng)電源及電源接口電路3.2.3電源濾波電路為保證fpga芯片能夠正常工作,供電電源電壓不允許有波動,尤其是核心電壓。穩(wěn)定的電源電壓才能保證fpga正常啟動并能正常運行,因此需要在電源電路中加入濾波電路,以保證芯片有著穩(wěn)定的輸入電壓,提高系統(tǒng)的穩(wěn)定性,濾波電路圖如下:圖3-4電源濾波電路圖主要針對fpga芯片的3.3v和1.5v電源與地之間做了濾波的處理,相對于布線緊密的pcb來說,減小了線與線之間的信號干擾,提高了穩(wěn)定性。3.3 fpga芯片及其引腳圖3-5e
24、p1k10tc100-1芯片及引腳系統(tǒng)采用ep1k10tc100-1作為核心控制芯片,芯片為貼片式的,有100個引腳。核心電源采用1.5v直流電源,i/o口電源采用3.3v電源。芯片及引腳圖如圖3-5。3.4 jtag下載配置電路設計jtag是一種標準的國際測試協(xié)議,本系統(tǒng)的下載線路主要用于對flsh存儲器件epcs1的在線編程,可以用于對fpga的內部測試。在fpga芯片上有四個關于jtag下載電路的功能引腳,tms、tdi、tdo、tck分別為測試時鐘輸入、測試數(shù)據(jù)輸入、測試數(shù)據(jù)輸出、測試模式選擇接口。電路圖如下:圖3-6下載配置電路模塊flsh電路的設置是將flsh的地址線、數(shù)據(jù)線和控制
25、線與fpga的數(shù)據(jù)線、地址線和控制線相連接,將fpga設置在extest模式下,利用電腦的并口,將程序寫入flsh,并在燒寫完程序后進行校驗測試。為防止其他信號的干擾,電腦與jtag下載線的盡量短,盡量少于15cm。此部分加入了下載指示燈led1可以監(jiān)控下載狀態(tài),當指示燈亮時表明正在進行信息傳輸,文件進行下載。還設置了re按鍵,可以在不斷電的情況下重新對fpga進行配置。3.5 時鐘信號電路設計由于fpga屬于高速芯片,因此對輸入時鐘的頻率及其穩(wěn)定性都有較高的要求。本系統(tǒng)采用50mhz的有源晶振作為時鐘的產生電路,不需要內部處理器的振蕩器,信號穩(wěn)定。有源晶振有4只引腳,有點的為1腳,逆時針依次
26、為2、3、4腳,引腳接法如圖3-7。1腳懸空,2腳接地,3腳輸出,4腳接3.3v電壓。有源晶振不能直接接電源,需要做好電源的濾波,保證產生信號的質量,接法如下圖使用一個電容和電感構成pi型濾波網絡。在輸出端用一個47的電阻來過濾信號。圖3-7系統(tǒng)時鐘信號電路555電路作為系統(tǒng)的備用秒信號產生脈沖電路,當有源晶振電路出現(xiàn)故障,手動切換之備用電路。ttw1tw2,tw10.7(r13r14)c5,tw20.7r13c5,系統(tǒng)中選取r13為62k,r14為20k,獲得的周期為1.008s的秒信號。3.6 復位電路系統(tǒng)采用簡單地高電平進行復位,將電源通過電容與電阻串聯(lián)后接地,reset松開時,clk為
27、低電平,系統(tǒng)正常工作;reset按下后電源直接通過電阻接地,clk端為高電平,系統(tǒng)復位。復位電路圖如下:圖3-8復位電路設計3.7 鍵盤電路設計在人機交互界面中,鍵盤模塊作為輸入模塊作用重要。對于系統(tǒng)的時鐘的復位,年、月、日、時、分、秒的校時控制就是通過鍵盤來實現(xiàn)的。由于fpga的i/o口較多,而且控制按鍵又不很多,本系統(tǒng)采用獨立鍵盤的作為輸入控制電路,如圖3-9所示。stw0到stw6分別接到芯片選好的i/o接口上。每按下一次stw0,時鐘的分個位加1,滿10進1,依次stw1、stw2、stw3、stw4分別為時、日、月、年的控制按鍵,stw5為秒信號的復位按鍵,每按下一次,秒復位為0,s
28、tw6為lcd1602液晶復位按鍵。圖3-9獨立鍵盤的設計電路3.8人機顯示電路系統(tǒng)設計要顯示年、月、日、時、分、秒,不需要其他的內容顯示,因此選用lcd1602作為顯示模塊,可以顯示實時時間,還可以看到現(xiàn)在正在更改設定的時間,使操作人性化。lcd1602帶有基本的數(shù)字、24個英文字母的大小寫及其部分字符,能夠滿足設計要求,顯示兩行,每行顯示16個字符,設計第一行顯示內容為“ 2012y6m10d zhao”,第二行顯示內容為“ 17:30:00 fpga ”,共32個字符。引腳接線圖如圖3-10所示。lcd1602有16個引腳,1、2分別為電源地、電源,3引腳為對比度調節(jié),電路中接入10k的
29、電位器,來調節(jié)對比度。15、16分別為背光電源地、背光電源正極。6引腳為使能端,4引腳為數(shù)據(jù)/命令選擇端,5引腳為讀/寫選擇端。7到14為雙向數(shù)據(jù)口,本設計采用并口工作方式對lcd1602進行讀寫控制。電源采用5v直流電源,功耗較低。圖3-10lcd1602外圍設計電路3.9 整點報時電路設計系統(tǒng)采用有源蜂鳴器作為整點報時器件,整點時分,tout置為高電平,蜂鳴器發(fā)出“嘀-”的聲音,經過延時30s后,tout置為低電平,蜂鳴器關閉。為減小芯片負載輸出,利用5v電源通過三極管驅動蜂鳴器報時。設計電路圖如下:圖3-11整點報時電路設計4 fpga內部程序設計本設計采用頂層文件設計方法,設計順序為自
30、下而上的,利用頂層文件將各個子模塊系統(tǒng)聯(lián)系起來,方便隨時調用。首先設計各個子模塊,然后根據(jù)子模塊的輸入輸出,設計出頂層文件,利用頂層文件將連接各個子模塊,是各個模塊組成一個整體,完成軟件設計。eda最大的優(yōu)勢就是能將所有設計環(huán)節(jié)納入統(tǒng)一的自頂向下的設計方案中。44.1 分頻器的程序設計系統(tǒng)時鐘采用50mhz時鐘脈沖信號,經過25000000分頻,然后取反,輸出clk1hz,得到秒信號;同理經過50000分頻,取反,得到clk500hz的信號。秒信號用來產生秒的時鐘計數(shù)脈沖,作為計數(shù)器的初始脈沖,500hz信號用作鍵盤控制模塊的按鍵消抖和lcd顯示模塊的時鐘信號。51hz分頻器的程序設計流程圖如
31、下:ncount=0clk1hz=not clk1hzcount=count+1輸入50mhz脈沖count=0clk1hz=0count=24999999輸出clk1hz1hz分頻結束y分頻開始圖4-11hz時鐘信號設計流程圖500hz分頻器程序框圖和1hz原理相同,只是將判斷語句換成count=49999。利用quartus ii軟件進行對程序進行編譯,編譯成功后生成原理圖,以方便在頂層文件中取用。軟件成功編譯顯示示例圖如下:圖4-2程序編譯成功分頻器有一個輸入,兩個輸出,原理圖如下:圖4-3分頻器原理圖原理圖繪制成功后對分頻器進行功能仿真,clk50mhz輸入50mhz的時鐘信號,由于需
32、要觀察秒信號,需設置end time為2s,觀察2個周期的秒信號,測試仿真結果,根據(jù)程序設計觀察時序結果,功能仿真如圖4-4、4-5所示。根據(jù)仿真結果可以看出,高電平結束為一個周期的結束,clk1hz的周期剛好為1s,clk500hz的周期為2ms。圖4-41hz功能仿真結果圖4-5500hz功能仿真結果4.2 秒計數(shù)器程序設計由分頻器得到的秒信號送給秒時鐘計數(shù)器,輸出分進位信號和秒顯示的bcd碼信號,秒計數(shù)器原理圖如下:圖4-6秒計數(shù)器原理圖原理圖中,clk1hz為分頻器輸出的1hz的時鐘脈沖;secset為鍵盤swt5按下的秒復位輸入信號,高電平有效;min_set為鍵盤swt0按下時的分
33、個位加一輸入信號。enmin為分鐘進位信號,作為下一級的分計數(shù)器的輸入信號;sout6.0的高3位為秒信號的十位輸出信號,低4位為秒信號個位輸出信號。秒信號計數(shù)器主要是將輸入秒信號分別作10進制和6進制計數(shù)。程序設計框圖如下:秒計數(shù)開始輸入1hz脈沖secset,min_setcount=”0000000”secset=1count3.0=”1001”count=count+1sout6.0=count6.0count6.4=”101”count=count+7enmin=1;輸出sout6.0計數(shù)結束nyynnymin_set=1yn圖4-7秒計數(shù)器程序設計流程圖由設計程序流程圖可知,當se
34、cset=1時,sout6.0=”0000000”,秒顯示“00”;當count3.0=”1001”計數(shù)器向十位進1,否則count=count+1;當count6.4=”101”時,count清零,minset=1,發(fā)出分時鐘信號,否則count=count+7,即十位進1。秒計數(shù)器功能仿真波形如圖4-8所示。由于需要觀察60s后向分進位時序波形,設置end time為100s,輸入clk1hz為1s時鐘信號,假設secset和min_set均為0的情況下,測試仿真情況。由仿真波形可知,60s時,enmin置1,維持1s后再回到低電平;當59s時,sout6.0=”1011001”,將高3位
35、與低4位分別轉換成對應的秒信號的十位與個位的十進制為剛好是59。圖4-8秒計數(shù)器功能仿真波形4.3 分計數(shù)器程序設計由于分鐘也是60進制,因此本設計的分鐘計數(shù)器同秒計數(shù)器的原理相同,只是將輸入和輸出稍作修改,原理圖如下:圖4-9分計數(shù)器原理圖enmin為秒信號產生的分鐘進位脈沖,周期為1min;clk1hz為秒信號脈沖,用作信號脈沖調制;hour_set為鍵盤的swt1,即小時的輸入控制信號;enhour為小時進位脈沖輸出;minout6.0為分鐘顯示的二進制數(shù),同sout6.0相同,高3位為十位,低4位為個位;spk為整點報時信號,當計數(shù)器向時計數(shù)器進位時說明整點,給spk高電平,蜂鳴器響。
36、程序設計流程圖參考秒計數(shù)器程序設計流程圖,仿真波形圖如下:圖4-10分計數(shù)器仿真波形由于quartus ii軟件仿真最大時間為s,設定enmin周期1s時鐘脈沖,來假定分鐘信號enmin=1min,clk1hz依次為0.1s,設置end time為100s。60s時,enhour=1,表示產生小時信號,觀察59s時的minout6.0波形,minout6.0=1011001,正好為59.4.4 小時計數(shù)器程序設計小時計數(shù)器的設計主要是利用十六進制的高二位與低四位設計的,設計原理同秒計數(shù)器。enhour為時進位時鐘信號;clk1hz為1hz的時鐘脈沖,day_set為鍵盤控制日進位設置,每來一個
37、脈沖enday加1則向日計數(shù)器輸入一個進位脈沖,表示日加一;hout5.0控制時顯示的bcd碼。設計原理圖如下:圖4-20時計數(shù)器原理圖4.5 日計數(shù)器程序設計日計數(shù)器總體思路與秒計數(shù)器一致。但是考慮到一年中的不同月份的的天數(shù)長短不一樣,而且閏年與平年的二月份的天數(shù)又不相同,因此日計數(shù)器需要由年、月來共同決定日的長短。通過sel2.0對日的長短時間控制,如表4-1所示。sel0為年的輸出控制量,0表示閏年,1表示平年;sel1為月的輸出控制量,0表示1、2、3、5、7、8、10、12月份(每月有31天),1表示其他月份,包括二月和其他30的月份;sel2月的輸出控制中的二月,1表示2月,0為其
38、他月份。表4-1日長短邏輯控制表日年 sel0月 sel1二月 sel200031100010301102900128101011111日計數(shù)器模塊原理圖如圖4-21所示,生成day例化元件,方便在頂層文件中取用,用以整體原理圖的設計。輸入取自上一層的例化元件,輸出給下一級的例化元件。圖4-21日計數(shù)器原理圖程序設計需要首先利用sel2.0對日長短的設置,然后設計原理同其他計數(shù)器,高2位控制日的十位,低四位控制日的個位。原理圖中sel0來自年計數(shù)模塊輸入,sel2.1由月計數(shù)模塊輸入。4.6 月計數(shù)器程序設計由于陽歷的月份固定,每年只有12個月,月計數(shù)器設計比較簡單,即為12進制的計數(shù)器,程序
39、設計原理圖如圖4-22所示。但是需要用月來設置日的長短,因此在程序中加入另一個進程,用case語句來判斷月份的具體值,以此來給sel賦值,然后輸出sel的值來作為日長短的設置信號。圖4-22月計數(shù)器程序原理圖其仿真波形圖如圖4-23所示,mout高一位控制月的十位,即0和1,低四位控制個位,0到9;sel2和sel1為設置日輸出信號。從仿真波形可以看出,輸出時序邏輯正確,但是出現(xiàn)了競爭冒險現(xiàn)象,經分析sel1的尖峰脈沖不會影響程序運行,因此可以忽略不考慮。圖4-23月計數(shù)器仿真波形4.7 年計數(shù)器程序設計年計數(shù)器的范圍從2000到2099,前面的20都沒有變化,因此只要設計出00到99的計數(shù)器
40、就可實現(xiàn)年的計數(shù)器的設計。由于閏年時二月天數(shù)需要其控制,因此需要選出其中的閏年,輸出信號給日計數(shù)器。閏年表見表4-2,通過表可以發(fā)現(xiàn)以下規(guī)律:當十位是偶數(shù),轉化成bcd碼為xxx0,且個位是0、4、8,轉化成bcd碼為xx00,或者十位是基數(shù),轉化成bcd碼為xxx1,且個位是2、6,轉化成bcd碼為xx10時,當年是閏年,否則是平年。表4-2閏年表00040812162024283236404448525660646872768084889296設計原理圖如圖如圖4-24所示,sel為閏年輸出脈沖,用以設置日計數(shù)器的長短。圖4-24年計數(shù)器原理圖4.8 鍵盤控制程序設計本設計對i/o口的要求
41、不是很高,而且fpga芯片有豐富的i/o接口,因此采用獨立鍵盤設計,簡化設計程序。鍵盤需要隨時掃描,因此用50mhz脈沖作為鍵盤的掃描信號,用500hz的脈沖做按鍵消抖處理,key6.0為鍵盤按下的輸入信號,keyout6.0為鍵盤輸出信號,分別送給年、月、日、時、分、秒計數(shù)器。設計原理圖如下:圖4-25鍵盤設計原理圖鍵盤掃描程序設計流程框圖如圖4-26所示,由于按下鍵盤和松開鍵盤時會出現(xiàn)抖動現(xiàn)象,為避免系統(tǒng)程序動作錯誤,出現(xiàn)誤動作,需要進行按鍵消抖處理。消抖采用500hz的信號,如果經過消抖后仍然有按鍵信號,別表示鍵盤按下,將鍵盤信號給出賦值。根據(jù)鍵盤結構的不同,采用不同的編碼方法,但無論有
42、無編碼以及采用什么樣的編碼,最后都要轉換成為相應的鍵值,以實現(xiàn)按鍵功能程序的轉移。6keyout=key輸入50mhz脈沖輸入500hz脈沖采集按鍵信號key按鍵消抖有鍵按下輸出keyout鍵掃結束y鍵掃開始n圖4-26鍵盤掃描程序流程圖4.9 lcd1602程序設計本設計采用lcd1602作為顯示部分,其引腳定義如下表:表4-31602引腳功能表引腳號引腳名電平輸入/輸出作用1vss電源地2vcc電源(+5v)3vee對比調整電壓4rs0/1輸入0=輸入指令1=輸入數(shù)據(jù)5r/w0/1輸入0=向lcd寫指令或數(shù)據(jù)1=從lcd讀取信息6e1,10輸入使能信號,1時讀取信息,10(下降沿)執(zhí)行命令
43、7db00/1輸入/輸出數(shù)據(jù)總線line0(最低位)8db10/1輸入/輸出數(shù)據(jù)總線line19db20/1輸入/輸出數(shù)據(jù)總線line210db30/1輸入/輸出數(shù)據(jù)總線line311db40/1輸入/輸出數(shù)據(jù)總線line412db50/1輸入/輸出數(shù)據(jù)總線line513db60/1輸入/輸出數(shù)據(jù)總線line614db70/1輸入/輸出數(shù)據(jù)總線line715a+vcclcd背光電源正極16k接地lcd背光電源負極首先將各個計數(shù)器產生的bcd碼數(shù)值轉換成ascii碼,然后將顯示數(shù)值放入1602中去。設計一個子程序,進行碼制轉換,得到需要的ascii碼。當rw=0,rs=0時,向1602輸入指令,
44、包括清屏指令、光標移位指令、進入模式設置指令、顯示開關設置指令、功能設置指令、cgram指令、ddram指令等等,控制1602工作狀態(tài);當rw=0,rs=1時,向1602輸入數(shù)據(jù),輸出顯示內容。先假定輸入固定時鐘,測試仿真結果,以觀察時序邏輯。程序原理圖如圖4-27所示,程序中編譯1602用用的是500hz的時鐘脈沖,sin1,minin1,hin1,din1,monin1,yin1分別為要顯示時間的bcd碼,rs、rw、en為1602的控制信號端,lcd_data為1602的數(shù)據(jù)輸入端。圖4-271602程序原理圖4.10 頂層文件設置及編譯下載演示頂層文件采用原理圖編譯的方法,將所有的模塊
45、加載到頂層文件中來,生成.bsf文件。然后新建原理圖top文件,生成.bdf文件,將所有模塊的原理圖放到top文件中來,連接后生成頂層文件,進行引腳設置。然后進行編譯一遍,生成.sof文件,選用jtag的下載方式,進行在線編譯調試,頂層原理圖及引腳設置見附錄4。采用jtag下載方式,只能在線編譯,程序下載后,時鐘顯示全部為0,通過鍵盤對時間進行調時,顯示正常時間,實物顯示如圖4-28.圖4-28 數(shù)字時鐘顯示5 總 結5.1 結論本文以fpga的數(shù)字時鐘為選題依據(jù),通過vhdl語言編程,利用qurartus ii設計軟件完成仿真測試。設計分別由分頻模塊,年、月、日、時、分、秒計數(shù)器,鍵盤控制模
46、塊,譯碼器,lcd1602液晶模塊五部分組成。利用qurartus ii設計軟件自頂向下依次完成各個模塊的設計及其仿真,最后利用頂層文件將各個模塊連接起來,逐步實現(xiàn)數(shù)字時鐘的設計、綜合、仿真,最終實現(xiàn)數(shù)字時鐘整個系統(tǒng)的設計,能夠用1602正常顯示所要內容,通過鍵盤正常調時、計數(shù)。5.2 設計中遇到的問題(1)在設計分頻器過程中,在程序設計成功的前提下,進行功能仿真,設置輸入脈沖后沒有仿真結果,經過查閱資料及老師的講解,合理設置end time的時間及其周期,完成了仿真測試。(2)月計數(shù)器設計中,由于輸入的時鐘脈沖存在“競爭”現(xiàn)象,在仿真結果的分析的時候,出現(xiàn)了尖峰脈沖。經過分析,月計數(shù)器的時間
47、較長,而很短時間的尖峰脈沖不會影響設計輸出。(3)在日計數(shù)器的設計中,由于不同月份及閏年中二月的天數(shù)不同,因此,需要充分分析邏輯設計,是年、月的輸出控制設置日的長短。(4)在設計lcd1602模塊中,功能仿真波形正常出現(xiàn),然而硬件電路沒有響應,因此先用數(shù)碼管進行程序邏輯演示,以得到準確的時鐘脈沖。經過lcd1602的時序調試,在時鐘脈沖準確的情況下顯示內容正確。參考文獻1王瑩. fpga是金融海嘯的一顆救命草j.電子產品世界,20092萬春迎.基于vhdl的數(shù)字時鐘設計a.科技信息,2008(27):723劉竹林,李晶驊.用vhdl實現(xiàn)數(shù)字時鐘的設計a.山西電子技術,2008(1):47-54
48、4潘松,黃繼業(yè).eda技術實用教程m.北京:科學出版社,2006:10-115李雪梅.基于fpga的分頻器設計研究a.教育科研,2008(4)6王紫婷,吳蓉 ,張彩珍.eda技術與應用m.蘭州:蘭州大學出版社,20036 (英)渥倫斯基.digital system design with vhdl,second edition.m工業(yè)出版社,20047鄭友泉.現(xiàn)場可編程門陣列第一講現(xiàn)場可編程門陣列fpga概述j.世界電子元器件,20058崔葛.基于fpga的數(shù)字電路系統(tǒng)設計d.西安:西安電子科技大學出版社,20089劉韜,樓興華.fpga數(shù)字電子系統(tǒng)設計與開發(fā)實例導航m.北京:人民郵電出版社
49、,200510 (英)jone wulenskl .vhdl digtal system designm.電子工業(yè)出版社,2004 11樂怡.數(shù)字電路與數(shù)字電子技術m.西安:西北工業(yè)大學出版社,200312黃任.vhdl入門·解惑·經典實例·經驗總結m.北京:北京航天航空大學出版社,200513樊國梁.vhdl語言設計數(shù)字電路j.國外電子測量技術,2005(2)14劉麗華.專用集成電路設計方法m.北京:北京郵電大學出版社,2000致 謝經過這一學期的學習和努力,我的畢業(yè)論文基于fpga的數(shù)字時鐘設計終于完成了。這是對我四年大學學習一個總結,是四年來對專業(yè)知識、理論
50、實踐、動手能力的的完美的結合與升級。在論文設計階段,我的理論學習和設計經驗都有很大提升,這與各位老師、同學以及通過網絡給我意見的網友的關心和支持是分不開的。在這里感謝我的指導老師趙艷華老師的悉心指導,從開始選題到最后的設計完成都有老師的指導身影。在設計開始初期,趙老師為我的設計指明了方向及思路,讓我在很短的時間就能理清設計整體框架及思路;設計過程中,遇到的各種問題,趙老師總能提出可行性的意見和建議,較多的專業(yè)性的問題,都是在趙老師的指導下解決的,使我的專業(yè)知識得到進一步的提升;在論文格式修改過程中,趙老師不厭其煩的幫我檢查論文格式,以達到論文格式的要求。在趙老師的指導和關懷下,我的專業(yè)知識有了
51、很大進步,學會了解決問題的方法,為以后的工作和學習有很大的幫助,再次向趙老師表示我的謝意。感謝四年來所有教導我的老師,是你們讓我的大學學習生活過的豐富多彩。感謝學院及學校的領導,為我提供了良好的學習環(huán)境。感謝大學同學,以及在我遇到困難的時候,向我提供解決方法及思路的各位網友。是你們呢讓我的學習和設計變得豐富。附錄:附錄1 最小系統(tǒng)及配置電路圖附錄2 系統(tǒng)外圍電路圖附錄3 系統(tǒng)設計程序分頻器設計程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.a
52、ll;entity fenpin isport(clk50mhz:in std_logic;-50mhz clk1hz:out std_logic;-1hz clk500hz:out std_logic);-500hzend;architecture art of fenpin issignal a1:std_logic;signal a2:std_logic;beginclk1hz<=a1;clk500hz<=a2;process(clk50mhz)variable n1:integer range 0 to 24999999;beginif rising_edge(clk50m
53、hz) thenif n1<24999999 then n1:=n1+1;else n1:=0;a1<=not a1;end if;end if;end process;process(clk50mhz)variable n2:integer range 0 to 49999;beginif rising_edge(clk50mhz) thenif n2<49999 then n2:=n2+1;else n2:=0;a2<=not a2;end if;end if;end process;end ;秒計數(shù)器設計程序:library ieee;use ieee.std_l
54、ogic_1164.all;use ieee.std_logic_unsigned.all;entity sec isport(clk1hz,secset,min_set:in std_logic;-clk is 1hz,reset is the signal of the second reset,-min_set is min+1 enmin:out std_logic;-分時鐘信號脈沖,由秒計數(shù)器產生并送給分計數(shù)器; sout:out std_logic_vector(6 downto 0);秒信號十位、個位的實時bcd碼;end entity;architecture behave o
55、f sec issignal count:std_logic_vector(6 downto 0);signal enmin1,enmin2:std_logic;beginsout<=count;enmin2<=(min_set and clk1hz);-分設置按鍵按下時的脈沖,用來作分時鐘脈沖enmin<=(enmin1 or enmin2);process(clk1hz,secset,min_set)beginif secset='1' then count<="0000000" elsif(clk1hz'event an
56、d clk1hz='1') then if count(3 downto 0)="1001" then if count(6 downto 4)="101" thenenmin1<='1'count<="0000000" else count<=count+7; end if;elsecount<=count+1;enmin1<='0'end if;end if;end process;end;分計數(shù)器設計程序:library ieee;use ieee.s
57、td_logic_1164.all;use ieee.std_logic_unsigned.all;entity min isport(enmin,clk1hz,hour_set:in std_logic;enhour:out std_logic;minout:out std_logic_vector(6 downto 0);end entity;architecture behave of min issignal count:std_logic_vector(6 downto 0);signal enhour1,enhour2:std_logic;beginminout<=count;enhour2<=(hour_set and clk1hz);enhour<=(enhour1 or enhour2);process(enmin)begin if(enmi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網絡技術升級服務支持協(xié)議
- 公司年度慶典儀式
- 教育培訓行業(yè)師資力量保證合同協(xié)議
- 高二語文寫作教學:新聞寫作
- 通知申請書模板
- 建筑行業(yè)施工安全責任及免責條款協(xié)議
- 金融租賃業(yè)務合作協(xié)議
- 獨家銷售代理權轉讓協(xié)議
- 公司合作協(xié)議書版
- 三農行業(yè)標準化生產操作手冊
- 2025年阜新高等??茖W校單招職業(yè)技能測試題庫審定版
- 大學生安全知識班會
- 課件圍術期下肢深靜脈血栓的預防與護理
- 2025年菏澤家政職業(yè)學院單招職業(yè)技能測試題庫完美版
- 《電力變壓器》課件
- 初級鐵路線路工技能鑒定考試題庫
- 2025年度建筑垃圾運輸與再生資源回收一體化合同樣本
- 2024新人教版英語七下單詞默寫表(開學版)
- (2025)輔警招聘公安基礎知識必刷題庫及參考答案
- 農業(yè)機械設備維護與質量保障措施
- 基于圖像處理的CAD圖紙比對算法
評論
0/150
提交評論