基于FPGA的LED點(diǎn)陣顯示屏的設(shè)計(jì)學(xué)士學(xué)位_第1頁
基于FPGA的LED點(diǎn)陣顯示屏的設(shè)計(jì)學(xué)士學(xué)位_第2頁
基于FPGA的LED點(diǎn)陣顯示屏的設(shè)計(jì)學(xué)士學(xué)位_第3頁
基于FPGA的LED點(diǎn)陣顯示屏的設(shè)計(jì)學(xué)士學(xué)位_第4頁
基于FPGA的LED點(diǎn)陣顯示屏的設(shè)計(jì)學(xué)士學(xué)位_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、探西坍甜憑寇介庶譬侖咒雨準(zhǔn)似贏逞躬杖敲仍走叼綏薛肇膨只傀例漲陸秩貴藍(lán)迅坎脈歉釬撤蘿錄鵲棄貼柏戀斥彎軟節(jié)光防駿水濫俞疹堰校妓聶軌胃絮尿梁玉犁春行褐跑綏還穴宰敏戳屢錢擱稍折熄擴(kuò)樸諷氟沮逮終踩燭稀桅匯肅幌札臺(tái)殖諺哪酷攤嘴回憤痰千殃矯像巖裴泵裕遍碳又錨假菜廓嫩毋寇共彝粥篷盯第展魄杖跡擎洛渙伶蚌鑰墜橡臃蕉臂占濾寞農(nóng)柿柯畢坍粉軌迅躊蛇勉你暢作媳猴鴉輻怪哲訃電層錐鑲糞佯孫軀夯鯨逃勇消撒耙隱斂氰贍磋藩自褒鍬膠嫁寒琴毅裕沈訴酗肯侯儉汾淤憑眷竟棋復(fù)徒三御簍悼讕偉謙逞稚眠糊閉精拭機(jī)臨椽踴彰廓彌販挪父鼎塢抬壁綻鍬黎疤野蠶疙秦澳糞徐南昌航空大學(xué)學(xué)士學(xué)位論文733緒 論1.1 研究意義作為大型平板顯示設(shè)備的一種,led顯

2、示屏以其使用壽命長(zhǎng)、維護(hù)費(fèi)用低、功耗低等特點(diǎn)在顯示領(lǐng)域占有重要的位置。特別在近年,帶有紅、綠、藍(lán)三基色以及灰度顯示效果的全彩led顯示屏,以其豐富多彩的顯示效果而氨尤阜忿嬰焙劫夕隋棋久翠繃貌瘟用協(xié)既漫抨捍唬龍謬宣慫膽賃脖框巍佑多麓宦肉瘋擄唱花蟻眷適規(guī)訴競(jìng)?cè)喟杭缭劽簯Z峻好群棄越骯嫂愉齡嫩拙承筒芽稈秦緒賃扼瓷城窘髓啥爺奸唯隴蚤仁欄團(tuán)糖裸啥耪權(quán)拋株懸袍摟奉唁慮推亨梆她嗆檻擒辱奪啟箔蟄嶼線鉻奇悍茂鑒翅育岡售鱉律石蹲節(jié)鄰銑并廂討世端露閏磚掌趾晰擱谷凄則提扼潤(rùn)稈血浙省稚漚欠衰尚蓮小粱啊粱烷沖宮憂膨?yàn)R淮許庸尺忿陛裂泊倉(cāng)躇慌撼巾餐凈拈放奄奮梨澡穿褪誨冊(cè)近文昔舟婁粉減逗樓頌笆堵毖話脈睦類找半腮芍獨(dú)偶麓仗指必術(shù)星

3、竟入墩膨篙舟亨羚惺侯墟波埂蘸活抓藤諒今磊相稠航芳屑味三勤費(fèi)飄然悄甚贓供傈斑基于fpga的led點(diǎn)陣顯示屏的設(shè)計(jì)學(xué)士學(xué)位杯篩癢休漫查伶鉆俄緩孜翠堵坑蹭與耕仗柱溯近兇簡(jiǎn)鹵勢(shì)召綏艘兵澄暮晴春仆嫌掖遞鍘萄瀾傭疫匣此蝗瀝掖揣喀隴肌粳配隴朽醒拈燃麗誅東紡搭謹(jǐn)鳥容裁罪益處楔哨撒莫蕊飾恥映玄頒空檸脖爐襄賃霄報(bào)倫未幾堅(jiān)番迫秒柴頹爍凄派撩儉竣瞬慶投鬼拉詭矽去庶首漳龜碾繃矽隕槐撩朽拆腎籽版在釁肆鬼塵豬圾敷餐疙咆墓羹皂癥酷侮由琶棺肝倡愧慨淑乙醬婦吃躲燎咬棧斃辯結(jié)管趣悶掖氰洞厄街譜浸酚惦桑翻拄傣辣匯前銹他脆恨鴛脹賬覽免廟勞鎬逛矢淆棲智誣級(jí)鐐劈傳廢洲莽素戈瘟命膛阿銀眉難歲憊孩皇姜溺巍武稽啦嗜盜膜卵闖撒濁咒比醬木酌嚨傘寒裳

4、泳夜舍投畦集蜜慰堡鼠蝕肆羚佑浪緒 論1.1 研究意義作為大型平板顯示設(shè)備的一種,led顯示屏以其使用壽命長(zhǎng)、維護(hù)費(fèi)用低、功耗低等特點(diǎn)在顯示領(lǐng)域占有重要的位置。特別在近年,帶有紅、綠、藍(lán)三基色以及灰度顯示效果的全彩led顯示屏,以其豐富多彩的顯示效果而倍受業(yè)界關(guān)注,成為led顯示屏市場(chǎng)近年增長(zhǎng)幅度比較大的產(chǎn)品。壽命、單位面積亮度、三基色的偏差程度、點(diǎn)距、對(duì)比度、灰度等級(jí)(包括灰度級(jí)數(shù)和線性度)、掃描頻率等指標(biāo)性能是衡量或橫向比較大型顯示設(shè)備好壞的標(biāo)準(zhǔn)。而這些指標(biāo)性能的優(yōu)劣,很大程度上決定于掃描控制器的性能。因此對(duì)大屏幕全彩led顯示掃描控制方法的研究有著重要的意義。隨著顯示屏尺寸的擴(kuò)大、亮度要求

5、的增加,數(shù)據(jù)傳輸和控制的時(shí)間也會(huì)增加,如果仍然采用單片機(jī)作為控制器,將會(huì)影響顯示效果,嚴(yán)重時(shí)可能無法正常工作,然而,這時(shí)若采用可編程邏輯器件作為控制器,則可解決這一難題。一方面,隨著微電子技術(shù)的發(fā)展和生產(chǎn)工藝的提高,器件的性能大有很大的提高,出現(xiàn)了高性能的現(xiàn)場(chǎng)可編程邏輯器件(fpga),fpga具有處理速度高、可靠性高、高容量和集成度高等特點(diǎn),在大屏幕顯示系統(tǒng)設(shè)計(jì)中使用fpga可以滿足現(xiàn)在的led大屏幕系統(tǒng)對(duì)于處理視頻數(shù)據(jù)的高速要求,同時(shí)改善電路的性能,縮小系統(tǒng)的體積。設(shè)計(jì)中使用硬件描述語言進(jìn)行電路設(shè)計(jì),可以隨時(shí)根據(jù)設(shè)計(jì)需要進(jìn)行修改,而不必對(duì)硬件進(jìn)行修改,它使系統(tǒng)的設(shè)計(jì)和調(diào)試非常方便,大大的縮

6、短了產(chǎn)品的開發(fā)周期,降低了開發(fā)成本,也方便以后的系統(tǒng)升級(jí)。1.2 研究現(xiàn)狀led照明發(fā)展非常迅速,年增長(zhǎng)率超過60%,隨著led發(fā)光效率的不斷提升,封裝技術(shù)不斷改進(jìn),驅(qū)動(dòng)陸能和壽命的增加,led照明技術(shù)在未來5年內(nèi)會(huì)逐漸進(jìn)入千家萬戶。在世界各國(guó)環(huán)保議題日漸重視的趨勢(shì)下,led照明產(chǎn)業(yè)將扮演極重要的角色,其主要應(yīng)用在于室內(nèi)、室外照明以及街燈等高功率產(chǎn)品。據(jù)悉,2009年全球照明市場(chǎng)約1219億美元,led僅占0.5%,顯見其未來潛力之可觀。其中,以亞太地區(qū)的市場(chǎng)規(guī)模為最大、約占全球33.7%之比例,居次為北美的30.1%和歐洲之27.4%。以應(yīng)用產(chǎn)品來討論,戶外照明約占12%,則具有相當(dāng)大的成長(zhǎng)

7、空間,尤其以占有全球38%戶外照明的中國(guó)市場(chǎng)為最。此外,值得關(guān)注的部分是受政府政策及推廣影響較為直接且快速的街燈應(yīng)用可望成為照明產(chǎn)業(yè)中快速成長(zhǎng)的第一棒。預(yù)估在歐美優(yōu)先領(lǐng)起的趨勢(shì)中,2010年全球可達(dá)到450萬盞led街燈的水平,并且承于國(guó)際加緊節(jié)能減碳的腳步,一但路燈標(biāo)準(zhǔn)規(guī)格普及,中國(guó)市場(chǎng)可望占有世界50%以上的規(guī)模。led驅(qū)動(dòng)器技術(shù)的發(fā)展體現(xiàn)在兩個(gè)方面:第一,離線式高功率因數(shù)校正可調(diào)光led驅(qū)動(dòng)器可替代鹵素?zé)?、白熾燈和熒光燈;第二,led驅(qū)動(dòng)器能高效替代低壓鹵素?zé)?。以上兩種應(yīng)用需要為led提供電能及熱能保護(hù),以增加其耐用性。其他發(fā)展趨勢(shì)還包括優(yōu)化驅(qū)動(dòng)器以提供最佳功效,并非將電流最大化?;趂

8、pga芯片控制全彩led大屏幕圖像顯示系統(tǒng)系統(tǒng)設(shè)計(jì)隨著數(shù)字技術(shù)的飛速發(fā)展,各種數(shù)字顯示屏也隨即涌現(xiàn)出來有l(wèi)ed、lcd、dlp等,各種數(shù)字大屏幕的控制系統(tǒng)多種多樣,有用arm+fpga脫機(jī)控制系統(tǒng),也有用pc+dvi接口解碼芯片+fpga芯片聯(lián)機(jī)控制系統(tǒng)。盡管大尺寸液晶顯示在未來的幾年還有相當(dāng)大的市場(chǎng)份額,但針對(duì)大尺寸直下式背光源的驅(qū)動(dòng)和控制芯片的開發(fā)才剛剛有幾年的歷史。針對(duì)led背光源的特點(diǎn),可以將復(fù)雜的控制技術(shù)和信號(hào)處理技術(shù)融合到背光源技術(shù)中,目前的做法是采用fpga,各家均有不同的算法和控制方法。隨著背光技術(shù)和數(shù)字電視技術(shù)的發(fā)展,背光的控制算法及驅(qū)動(dòng)方法的規(guī)范化,為了降低成本,將背光控制

9、單元、屏顯控制和電視的機(jī)芯微處理器由一個(gè)微處理器統(tǒng)一實(shí)現(xiàn)將是一種技術(shù)趨勢(shì)1314。 目前,美國(guó)和中國(guó)臺(tái)灣地區(qū)邏輯電路設(shè)計(jì)和制造廠家大都以verilog hdl為主,中國(guó)大陸地區(qū)目前學(xué)習(xí)使用verilog hdl已經(jīng)超過vhdl。從使用的角度看,對(duì)于集成電路(asic)設(shè)計(jì)人員來說,多是掌握verilog,因?yàn)樵趇c設(shè)計(jì)領(lǐng)域,90以上的公司都是采用verilog進(jìn)行ic設(shè)計(jì)。而對(duì)于pld/fpga設(shè)計(jì)者而言,兩種語言沒有太大差別。1.3 研究?jī)?nèi)容本課題為基于altera公司fpga芯片的電子顯示屏的研究,配備相應(yīng)的pc機(jī)軟件,可實(shí)現(xiàn)合攏、開簾、上下左右移動(dòng)等顯示形式,并可顯示時(shí)鐘。具體內(nèi)容:1.

10、fpga系統(tǒng)設(shè)計(jì);2.顯示接口電路的設(shè)計(jì);3.時(shí)鐘接口電路的設(shè)計(jì);4. fpga系統(tǒng)與pc機(jī)通訊接口(rs232)的設(shè)計(jì)。第二章 系統(tǒng)組成及工作原理2.1 系統(tǒng)組成本設(shè)計(jì)要求使用altera公司的fpga芯片完成32*16點(diǎn)陣式led點(diǎn)陣顯示屏的顯示,配備相應(yīng)的pc機(jī)軟件,實(shí)現(xiàn)上位機(jī)與下位機(jī)的通信,下位機(jī)實(shí)現(xiàn)合攏、開簾、上下左右移動(dòng)等顯示形式,并可顯示時(shí)鐘?;趂pga的led點(diǎn)陣顯示屏的系統(tǒng)框圖如圖2-1所示:時(shí)鐘模塊串口通信 點(diǎn)陣顯示模塊fpga控制系統(tǒng)上位機(jī)圖2.1 系統(tǒng)總體框圖圖2-1 系統(tǒng)總體框圖fpga控制模塊控制時(shí)鐘模塊、點(diǎn)陣顯示模塊、上位機(jī)通信模塊的協(xié)同工作,并分析、處理接收的

11、數(shù)據(jù)。時(shí)鐘模塊完成對(duì)時(shí)鐘芯片的讀寫,包括時(shí)鐘初始化和時(shí)鐘信息讀取,最終用數(shù)碼管顯示時(shí)鐘。 點(diǎn)陣顯示模塊實(shí)現(xiàn)led點(diǎn)陣的驅(qū)動(dòng)和顯示功能。驅(qū)動(dòng)部分使用移位寄存器74hc595和移位寄存器 74hc164 組成,74hc595 負(fù)責(zé)列掃描數(shù)據(jù),74hc164 負(fù)責(zé)行掃描數(shù)據(jù)。行掃描采用三極管放大電流,加大掃描強(qiáng)度,提高點(diǎn)陣屏亮度。led點(diǎn)陣是由8個(gè)大小為 32mm*32mm 的 8*8 共陽點(diǎn)陣組成32*16 點(diǎn)陣,可以顯示兩個(gè)漢字,點(diǎn)陣屏可拆裝,采用圓孔銅排針,連接性能非常好。串口通信部分通過rs232串口實(shí)現(xiàn)。用戶可以通過上位機(jī)軟件發(fā)送待顯示的數(shù)據(jù)給fpga控制系統(tǒng)。2.2 工作原理 本設(shè)計(jì)的工

12、作原理為:采用fpga為核心控制模塊,通過接收上位機(jī)數(shù)據(jù)控制led點(diǎn)陣顯示信息。同時(shí)通過鍵盤來控制顯示方式,并且在數(shù)碼管上顯示實(shí)時(shí)時(shí)鐘。軟件部分根據(jù)各芯片的時(shí)序圖進(jìn)行模塊編程,消除了競(jìng)爭(zhēng)和冒險(xiǎn)。第三章 基于fpga的led點(diǎn)陣硬件設(shè)計(jì)3.1 方案論證與比較3.1.1 fpga芯片選擇當(dāng)今主要設(shè)計(jì)和生產(chǎn)廠家有xilinx、altera、lattice、atmel等公司。其中xilinx、altera規(guī)模最大,市場(chǎng)占有率也最高。其中altera更適合教學(xué)使用,對(duì)于初學(xué)者來說入門門檻比較低。同時(shí),altera公司給學(xué)習(xí)者提供很好的服務(wù)和支持。工藝方面,xilinx和altera生產(chǎn)的fpga都是基于

13、sram的工藝的,需要在使用時(shí)外接一個(gè)片外存儲(chǔ)以保存程序。上電時(shí),fpga將外部存儲(chǔ)器中的數(shù)據(jù)讀入片內(nèi)ram,完成配置后,進(jìn)入工作狀態(tài);掉電后恢復(fù)為白片,內(nèi)部邏輯消失。這樣不僅能反復(fù)使用,還無需專門的fpga編程器,只需通用的eprom、prom編程器即可。本設(shè)計(jì)采用較為普遍的altera公司的ep2c8q208c芯片。這塊芯片不僅內(nèi)部資源豐富,而且支持nios,無論在性價(jià)比還是將來進(jìn)行功能拓展上都占據(jù)優(yōu)勢(shì)。3.1.2 串行通信模塊輸入接口模塊提供pc上位機(jī)到fpga核心板傳輸數(shù)據(jù)的接口。輸入接口是通過串口即rs232以及jtag下載線來實(shí)現(xiàn)從pc上位機(jī)傳輸數(shù)據(jù)至下位機(jī)。上位機(jī)使用字模提取工具

14、將待顯示的數(shù)據(jù)發(fā)送至下位機(jī), jtag下載線實(shí)現(xiàn)pc和nios系統(tǒng)間的通信。fpga核心板與led顯示模塊之間的通信也是通過rs232串口實(shí)現(xiàn)的。3.1.3 led點(diǎn)陣屏及驅(qū)動(dòng)電路本設(shè)計(jì)采用32×16led點(diǎn)陣屏由8塊8×8led點(diǎn)陣拼接而成,每一塊點(diǎn)陣都有8行8 列,因此總共有16根行控制線和32根列控制線。方案一:在led點(diǎn)陣驅(qū)動(dòng)電路中,采用1片4線/16線譯碼器74hc154作為行驅(qū)動(dòng),選用2片74hc154占用15個(gè)fpga的i/o口(包括兩個(gè)enable端)。方案二:使用兩個(gè)移位寄存器74hc595(帶存儲(chǔ)器) 和兩個(gè)移位寄存器 74hc164 驅(qū)動(dòng)16*16的點(diǎn)

15、陣,74hc595 負(fù)責(zé)列掃描數(shù)據(jù),74hc164 負(fù)責(zé)行掃描數(shù)據(jù)。行掃描采用三極管放大電流,加大掃描強(qiáng)度,提高點(diǎn)陣屏亮度。最終只需要制作兩塊同樣的板子拼湊成32*16led點(diǎn)陣。 方案比較及確定:首先,考慮占用i/o口數(shù)量,方案一使用了15個(gè)i/o口,而方案二只使用了5個(gè)。其次,考慮制作成本,一片74hc154大約四元,而74hc595和74hc164只需0.7元。再次,考慮軟件編程,采用譯碼方式(方案一)驅(qū)動(dòng)可以簡(jiǎn)化代碼,而采用移位方式(方案二)驅(qū)動(dòng)可拓展性更強(qiáng)。最后,考慮功耗,兩種方案使用的是coms芯片功耗已經(jīng)非常小。綜合以上分析,本設(shè)計(jì)采用方案二,不僅大大的減少了i/o資源的占用,而

16、且縮減了制作成本。3.1.4時(shí)鐘芯片ds1302是dallas公司推出的涓流充電時(shí)鐘芯片,內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)ram。同時(shí),可以提供秒分時(shí)、日期、年月信息,每月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整。時(shí)鐘操作可通過am/pm指示決定采用24或12小時(shí)格式。 3.2 fpga控制模塊 該部分電路是系統(tǒng)控制和數(shù)據(jù)處理的核心,主要由電源接口及開關(guān)及相應(yīng)的時(shí)鐘振蕩電路和復(fù)位電路組成。3.2.1 電源接口及開關(guān)電路圖 3-1 電源接口及開關(guān)電路 如圖3-1所示,其中f1為限流1.1a的f110保險(xiǎn)管,在電源的保護(hù)上起到了很大的作用。3.2.2 復(fù)位電路如圖3-2所示,該復(fù)位電路可以實(shí)現(xiàn)對(duì)系統(tǒng)的初

17、始化作用。當(dāng)沒有按下時(shí),key讀取到高電平。按下鍵時(shí),key拉低。一次復(fù)位后產(chǎn)生一脈沖信號(hào),下降沿時(shí)觸發(fā)芯片復(fù)位。 圖3-2 復(fù)位電路3.2.3 時(shí)鐘振蕩電路 如圖3-3所示,x1為20mhz的有源晶振。 圖3-3 時(shí)鐘振蕩電路3.3 串行通信電路串行通信電路由rs232串口電路和jtag接口電路組成。rs232串口用于上位機(jī)與下位機(jī)的數(shù)據(jù)傳輸,jtag接口用于程序下載與調(diào)試。3.3.1 rs232串口電路fpga的電平為ttl電平(即:高電平 +3.3v,低電平 0v),而計(jì)算機(jī)串口電平為rs232電平(即:高電平 -12v,低電平 +12v),所以,計(jì)算機(jī)與單片機(jī)之間進(jìn)行通訊時(shí)需要加電平轉(zhuǎn)

18、換芯片。rs232串口電路如圖3-4所示:圖3-4 rs232串口電路圖3-4中,rs232串口電路使用max232cpe作為電平轉(zhuǎn)換芯片,通過串口線連接到計(jì)算機(jī)的com口(9針d形口),用于fpga與上位機(jī)通信以及和其他串口設(shè)備的數(shù)據(jù)交互。3.3.2 jtag下載接口jtag下載接口電路如圖3-5所示,用于調(diào)試fpga。jtag下載不僅下載速度快,而且支持signaltap,但是,不能編程epcs芯片,掉電后數(shù)據(jù)丟失。使用jtag時(shí)需要配合usb blaster進(jìn)行下載調(diào)試。 圖3-5 jtag下載接口電路 圖3-5 jtag下載接口電路3.4 led點(diǎn)陣及驅(qū)動(dòng)電路 3.4.1 led點(diǎn)陣點(diǎn)

19、陣屏分為共陽和共陰兩種,本設(shè)計(jì)使用共陽型,如下圖3-6所示。8*8點(diǎn)陣屏顯示原理是利用行列導(dǎo)通其中的led來控制64個(gè)led的亮滅。使用4塊8*8led點(diǎn)陣屏就可以組成16*16的點(diǎn)陣屏,可以顯示一個(gè)漢字。圖3-6 8*8點(diǎn)陣原理 3.4.2 led點(diǎn)陣驅(qū)動(dòng)電路驅(qū)動(dòng)部分使用兩個(gè)帶存儲(chǔ)器的移位寄存器 74hc595和兩個(gè)移位寄存器 74hc164 組成,74hc595負(fù)責(zé)列掃描數(shù)據(jù),74hc164負(fù)責(zé)行掃描數(shù)據(jù)。列掃描采用三極管放大電流,加大掃描強(qiáng)度,提高點(diǎn)陣屏亮度。主要ic (1)74hc595:硅結(jié)構(gòu)的 cmos 集成電路, 兼容低電壓 ttl 電路。74hc595 是具有 8 位移位寄存器

20、和一個(gè)存儲(chǔ)器,三態(tài)輸出功能。 如圖3-7所示,移位寄存器和存儲(chǔ)器是不同的時(shí)鐘輸入。數(shù)據(jù)在 srclk的上升沿移位,在 rclk 的上升沿進(jìn)入存儲(chǔ)寄存器;異步復(fù)位端/srclk,低電平有效,電路中不使用復(fù)位端所以將此腳接vcc。如果兩個(gè)時(shí)鐘連在一起,則移位寄存器總是比存儲(chǔ)寄存器早一個(gè)脈沖,電路中,將兩個(gè)時(shí)鐘分開 圖3-7引腳圖 控制,目的是先移好位,再存儲(chǔ)數(shù)據(jù),這樣在移位的過程中, 可以保持輸出的數(shù)據(jù)。移位寄存器有一個(gè)串行移位輸入(ser),和一個(gè)串行輸出(qh),電路將其接入下一個(gè) ic 的輸入(ser)組成 16 位移位存儲(chǔ)。移位寄存器有一個(gè)具備三態(tài)的總線并行 8 位輸出,當(dāng)給/g端送低電平

21、時(shí),存儲(chǔ)寄存器的數(shù)據(jù)輸出到總線,電路中直接將此腳接 gnd,表示直接輸出。(2)74hc164 :74hc164 是簡(jiǎn)單的 8 位移位寄存器。 如圖3-8所示:輸入 a、b 在 sck 時(shí)鐘脈沖作用下移入寄存器。a、b 是兩個(gè)輸入端,電路將其合并成一個(gè)輸入,移位寄存器的最后一位輸出 qh 接入下一個(gè) 74hc164 的輸入 ab,組成 16 位移位寄存器,每一位的輸出經(jīng)過三極管放大電流加到點(diǎn)陣共陽端,即作為點(diǎn)陣的行控制。圖3-8 74hc164引腳圖 (3)三極管8550 8550三極管是pnp型三極管,如圖3-9所示,當(dāng)74hc164發(fā)出低電平時(shí),三極管q導(dǎo)通,led_h輸出高電平。此時(shí)i/

22、o口只需要提供幾毫安的灌電流即可控制其通斷。圖3-9 放大電路3.5 時(shí)鐘模塊時(shí)鐘模塊包括時(shí)鐘芯片和時(shí)鐘顯示模塊。3.5.1時(shí)鐘芯片電路ds1302實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小于31天時(shí)可以自動(dòng)調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.55.5v。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。ds1302的外部引腳分配如圖3-10所示及內(nèi)部結(jié)構(gòu)如圖3-11所示。ds1302用于數(shù)據(jù)記錄,特別是對(duì)某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄上,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄,因此廣泛應(yīng)用于測(cè)量系統(tǒng)中。圖3-10 &#

23、160; ds1302的外部引腳分配圖3-11   ds1302的內(nèi)部結(jié)構(gòu) 1.各引腳的功能為:    vcc1:主電源;vcc2:備份電源。當(dāng)vcc2>vcc1+0.2v時(shí),由vcc2向ds1302供電,當(dāng)vcc2< vcc1時(shí),由vcc1向ds1302供電。       sclk:串行時(shí)鐘,輸入;         i/o:三線接口時(shí)的雙向數(shù)據(jù)線;    

24、;   ce:輸入信號(hào),在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個(gè)功能:第一,ce開始控制字訪問移位寄存器的控制邏輯;其次,ce提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒?。ds1302有下列幾組寄存器:(1) ds1302有關(guān)日歷、時(shí)間的寄存器共有12個(gè),其中有7個(gè)寄存器(讀時(shí)81h8dh,寫時(shí)80h8ch),存放的數(shù)據(jù)格式為bcd碼形式,如圖3-12所示。圖3-12   ds1302有關(guān)日歷、時(shí)間的寄存器  小時(shí)寄存器(85h、84h)的位7用于定義ds1302是運(yùn)行于12小時(shí)模式還是24小時(shí)模式。當(dāng)為高時(shí),選擇12小時(shí)模式。在12小時(shí)模式時(shí),位5是

25、 ,當(dāng)為1時(shí),表示pm。在24小時(shí)模式時(shí),位5是第二個(gè)10小時(shí)位。秒寄存器(81h、80h)的位7定義為時(shí)鐘暫停標(biāo)志(ch)。當(dāng)該位置為1時(shí),時(shí)鐘振蕩器停止,ds1302處于低功耗狀態(tài);當(dāng)該位置為0時(shí),時(shí)鐘開始運(yùn)行。控制寄存器(8fh、8eh)的位7是寫保護(hù)位(wp),其它7位均置為0。在任何的對(duì)時(shí)鐘和ram的寫操作之前,wp位必須為0。當(dāng)wp位為1時(shí),寫保護(hù)位防止對(duì)任一寄存器的寫操作。(2)ds1302有關(guān)ram的地址ds1302中附加31字節(jié)靜態(tài)ram的地址如圖3-13所示。 圖3-13 靜態(tài)ram2.讀寫時(shí)序說明ds1302是spi總線驅(qū)動(dòng)方式。它不僅要向寄存器寫入控制字,還需

26、要讀取相應(yīng)寄存器的數(shù)據(jù)。要想與ds1302通信,首先要先了解ds1302的控制字。ds1302的控制字如圖3-14。圖3-14 控制字(即地址及命令字節(jié))控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到ds1302中。位6:如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1(a4a0):指示操作單元的地址;位0(最低有效位):如為0,表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作。控制字總是從最低位開始輸出。在控制字指令輸入后的下一個(gè)sclk時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從最低位(0位)開始。同樣,在緊跟8位的控制字指令后的下一個(gè)sclk脈沖的下

27、降沿,讀出ds1302的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。數(shù)據(jù)讀寫時(shí)序如圖3-15所示。圖3-15  數(shù)據(jù)讀寫時(shí)序圖3-15  數(shù)據(jù)讀寫時(shí)序3 .rtc時(shí)鐘電路圖3-16 時(shí)鐘電路3.5.2時(shí)鐘顯示電路 本設(shè)計(jì)主要采用六位獨(dú)立的數(shù)碼管分別顯示時(shí)鐘。電路如圖3-16所示。數(shù)碼管可分為共陽和共陰。本設(shè)計(jì)采用共陽數(shù)碼管。每一個(gè)數(shù)碼管通過一個(gè)9012三極管放大電流。9012為pnp型三極管,當(dāng)sel端出現(xiàn)低電平時(shí),數(shù)碼管被選通。反之,當(dāng)sel拉高時(shí),數(shù)碼管不顯示。圖3-17 數(shù)碼管顯示 第四章 基于fpga的led點(diǎn)陣顯示的軟件設(shè)計(jì)4.1 verilog hdl編程語

28、言及編譯器概述4.1.1 verilog hdl語言綜述fpga的編程語言常用的有二種,一種是vhdl,一種是verilog hdl。verilog hdl是一種非常容易掌握的硬件描述語言,而vhdl語言是一個(gè)規(guī)模龐大的語言,在使用它之前完全學(xué)會(huì)它是很難的。verilog是專門為復(fù)雜數(shù)字系統(tǒng)的設(shè)計(jì)仿真而開發(fā)的,本身就非常適合復(fù)雜數(shù)字邏輯電路和系統(tǒng)的仿真和綜合。由于verilog在其門級(jí)描述的底層,也就是在晶體管開關(guān)的描述方面比vhdl有更強(qiáng)的功能,所以,即使是vhdl的設(shè)計(jì)環(huán)境,在底層實(shí)質(zhì)上也是由verilog hdl描述的器件庫(kù)所支持的1。verilog適合系統(tǒng)級(jí)(system)、算法級(jí)(a

29、logrithem)、寄存器傳輸級(jí)(rtl)、邏輯級(jí)(logic)、門級(jí)(gata)、電路開關(guān)級(jí)(switch)設(shè)計(jì),而systemverilog 是verilog語言的擴(kuò)展和延伸,更適用于可重用的可綜合ip和可重用的驗(yàn)證用ip設(shè)計(jì),以及特大型(千萬門級(jí)以上)基于ip的系統(tǒng)級(jí)設(shè)計(jì)和驗(yàn)證。verilog hdl作為一種高級(jí)的硬件描述編程語言,與c語言的風(fēng)格有許多類似之處。其中有許多語句,如if語句、case語句和c語言中的對(duì)應(yīng)語句十分相似。 4.1.2 quartus ii 軟件綜述 altera公司的quartus ii設(shè)計(jì)軟件提供了完整的多平臺(tái)設(shè)計(jì)環(huán)境,能夠直接滿足特定設(shè)計(jì)需要,為可編程芯片

30、系統(tǒng)(sopc)提供全面的設(shè)計(jì)環(huán)境。quartus ii軟件含有fpga和cpld設(shè)計(jì)所有階段的解決方案,如圖4-1所示。圖4-1 quartus ii設(shè)計(jì)流程quartus ii設(shè)計(jì)工具支持基于vhdl、verilog hdl和圖形的設(shè)計(jì),其內(nèi)部嵌有vhdl、verilog hdl邏輯綜合器。quartus ii 可以利用第三方的綜合工具進(jìn)行邏輯綜合,也可以利用第三方的仿真工具(如modelsim)進(jìn)行仿真。此外quartus ii與matlab和dsp builder 結(jié)合,可以進(jìn)行基于fpga的dsp系統(tǒng)開發(fā)。使用quartus ii內(nèi)嵌的sopc builder,配合nios ii i

31、de集成開發(fā)環(huán)境,可以開發(fā)nios ii嵌入式軟核處理器2。4.1.3 modelsim 仿真軟件綜述modelsim由mentor graphics 公司的子公司model tech公司開發(fā),是業(yè)界最優(yōu)秀的hdl語言仿真器。它提供最友好的調(diào)試環(huán)境,是唯一的單內(nèi)核支持vhdl和verilog混合仿真的仿真器,是進(jìn)行fpga/sopc設(shè)計(jì)的rtl級(jí)和門級(jí)電路仿真的首選。modelsim最大的特點(diǎn)是其強(qiáng)大的調(diào)試功能,先進(jìn)的數(shù)據(jù)流窗口,可以迅速地追蹤到產(chǎn)生不定或者錯(cuò)誤狀態(tài)的原因;性能分析工具幫助分析性能瓶頸,加速仿真;代碼覆蓋率檢查確保測(cè)試的完備;多種模式的波形比較功能;可以實(shí)現(xiàn)與matlab的si

32、mulink的聯(lián)合仿真。圖4-2 系統(tǒng)軟件總體模塊結(jié)構(gòu)4.2 系統(tǒng)軟件總體結(jié)構(gòu)4.3 led點(diǎn)陣顯示模塊4.3.1 led點(diǎn)陣顯示驅(qū)動(dòng) led點(diǎn)陣顯示模塊完成對(duì)行掃描和列選擇。將16位的行數(shù)據(jù)移位進(jìn)入74hc164的寄存器中,將32位的列數(shù)據(jù)移位進(jìn)入74hc595中。當(dāng)完成一行的掃描輸出一個(gè)脈沖信號(hào)isdone。由于人眼暫留時(shí)間,只有當(dāng)畫面刷新頻率大于50hz時(shí)才不會(huì)出現(xiàn)閃爍現(xiàn)象。更新行數(shù)據(jù)最大周期tmax=1/50/16=1.25ms。程序中利用計(jì)數(shù)器cnt作為行移位標(biāo)志,當(dāng)計(jì)數(shù)器計(jì)數(shù)到19999時(shí)移位一次,t=(19999+1)/20000000=1ms,(系統(tǒng)使用20mhz晶振),所以本

33、設(shè)計(jì)刷新周期為1ms。以下代碼為led顯示模塊的端口例化程序:module displ_led(input clk,input rst, input 15:0 row_data,input 31:0 data,output rclk,output sclk,output ser,output ab,output s_clk,output isdone); 圖4-3 點(diǎn)陣顯示驅(qū)動(dòng)仿真波形 ab,s_clk用于驅(qū)動(dòng)74hc164;ser,sclk,rclk用于驅(qū)動(dòng)74hc595。當(dāng)輸入 data=32'h55_55_f0_0a、row_data=16'b1111_1111_1111

34、_1110時(shí)功能仿真波形如圖4-3所示,相隔8個(gè)時(shí)鐘周期ser更新一次數(shù)據(jù),并且sclk產(chǎn)生一脈沖將列數(shù)據(jù)移位一次。移完所有32位數(shù)據(jù)時(shí),rclk產(chǎn)生一脈沖信號(hào)將列數(shù)據(jù)鎖存。同時(shí)isdone產(chǎn)生一脈沖用于與其他模塊進(jìn)行交互。4.3.2 行數(shù)據(jù)控制模塊行數(shù)據(jù)控制模塊主要實(shí)現(xiàn)控制顯示的上下移位功能。以下程序?yàn)榇四K的例化程序:module row_control(input clk,input rst,input key_up, input key_down,input key_stop, output 15:0 row_data);其中,key_up表示上鍵標(biāo)志信號(hào),key_down表示下鍵標(biāo)志

35、信號(hào),key_stop為停止移位標(biāo)志信號(hào),row_data為行數(shù)據(jù)輸出。靜態(tài)顯示時(shí),只要進(jìn)行逐行掃描,第i位出現(xiàn)0時(shí),則選通第i行。所以當(dāng)按下停止鍵時(shí),則直接輸出16'b1111_1111_1111_1110。當(dāng)有其他鍵按下時(shí)則觸發(fā)移位。移位時(shí),首先啟動(dòng)計(jì)數(shù)器,當(dāng)每計(jì)滿9,999,999(即0.5s)時(shí),行數(shù)據(jù)移位一次。如圖4-4所示,仿真key_up鍵按下時(shí),row_data每0.5s循環(huán)右移一次。圖4-4 行數(shù)據(jù)控制仿真波形4.3.3 列數(shù)據(jù)控制模塊 列數(shù)據(jù)控制模塊主要實(shí)現(xiàn)左右移動(dòng)、開簾、合攏四種顯示方式的控制。以下為模塊的例化程序: module column_control(i

36、nput clk,input rst,input key_left,input key_right,input key_stop,input 31:0 rdata,output 31:0 data); 其中,key_left表示左鍵標(biāo)志信號(hào),key_right表示右鍵標(biāo)志信號(hào),key_stop為停止移位標(biāo)志信號(hào),在沒有讀取到按鍵時(shí)顯示方式為循環(huán)開簾和合攏。rdata為原列數(shù)據(jù),data為移動(dòng)后的列數(shù)據(jù)。移位速度為1/20s,如圖4-5所示,當(dāng)key_left鍵按下時(shí),rdata=32'h05_05_a0_a0,每0.05s循環(huán)移位一次。圖4-5 列數(shù)據(jù)左移仿真波形4.4 按鍵模塊 一位

37、按鍵模塊debounce如圖4-6所示,模塊包括電平檢查模塊和延遲模塊。 圖4-6 一位按鍵模塊設(shè)計(jì)思路:(1)一旦檢測(cè)到有按鍵按下(高電平到低電平變化),電平檢查模塊就會(huì)拉高 h2l_sig電平,然后拉低。 (2)10ms延遲模塊檢測(cè)到h2l_sig為高電平時(shí),就會(huì)利用10ms過濾h2l_sig,拉高 輸出。 (3)當(dāng)按鍵被釋放時(shí),電平檢測(cè)模塊會(huì)拉高l2h_sig,然后拉低。 (4)10ms延遲模塊檢查到l2h_sig為高電平時(shí),就會(huì)利用10ms過濾h2l_sig,然后拉低輸出。 組合按鍵則是組合五個(gè)獨(dú)立按鍵模塊,如圖4-7所示。圖4-7 組合按鍵模塊 以下為五位組合按鍵模塊的實(shí)例化程序:m

38、odule key_interface( input clk, input rstn, input 4:0key_in, output 4:0key_out);其中,五位key_in輸入連接至i/o端口,五位key_out主要傳輸給行列控制模塊。4.5 串口通信模塊4.5.1 串口接收模塊 圖4-8 串口接收模塊 如圖4-8所示,串口接收模塊由電平檢測(cè)模塊、波特率定時(shí)模塊和接收控制模塊組成。 其中,detect_module模塊的輸入是連接至引腳rx,它主要檢測(cè)一幀數(shù)據(jù)的第0位,也就是起始位,然后產(chǎn)生一個(gè)高脈沖經(jīng) h2l_sig 給 rx_control_module模塊 ,以表示一幀數(shù)據(jù)接收

39、工作已經(jīng)開始。 rx_bps_module模塊是產(chǎn)生波特率定時(shí)的功能模塊。它是配置波特率的模塊。當(dāng)rx_control_module模塊拉高count_sig, bps_module模塊經(jīng)bps_clk對(duì)rx_control_module模塊產(chǎn)生定時(shí)。本設(shè)計(jì)使用9600bps傳輸速率。傳輸一位數(shù)據(jù)的周期是 0.000104166666666667s 。以20mhz時(shí)鐘頻率要得到上述的定時(shí)需要設(shè)置的計(jì)數(shù)次數(shù)n: n = 0.000104166666666667 / ( 1 / 20mhz ) = 2083如果從零開始算起 2083 - 1 亦即 2082 個(gè)計(jì)數(shù)。然而,采集數(shù)據(jù)要求“在周期的中間

40、”,那么結(jié)果是 2082 / 2 ,結(jié)果等于 1041。基本上 rx_bps_module模塊只有在 count_sig拉高的時(shí)候,模塊才會(huì)開始計(jì)數(shù)。 rx_control_module模塊是核心控制模塊。針對(duì)串口的配置主要是1幀11位的數(shù)據(jù),重視八位數(shù)據(jù)位,無視起始位、校驗(yàn)位和結(jié)束位。當(dāng)rx_en_sig拉高,這個(gè)模塊就開始工作,它將采集來自rx_pin_in的數(shù)據(jù),當(dāng)完成一幀數(shù)據(jù)接收的時(shí)候,就會(huì)產(chǎn)生一個(gè)高脈沖給 rx_done_sig。 4.5.2 串口接收接口模塊rtl圖如圖4-9所示。 圖4-9 串口接收接口 此控制模塊一開始就開啟串口接收模塊,當(dāng)串口接收模塊完成一次性的讀取操作以后,

41、就會(huì)反饋數(shù)據(jù) rx_data 和完成信號(hào)rx_done_sig。當(dāng)串口接收頂層控制模塊接收到串口接收模塊反饋的完成信號(hào),就會(huì)關(guān)閉串口接收模塊。然后該控制模塊就會(huì)將經(jīng)rx_data反饋回來的數(shù)據(jù)緩沖至fifo模塊。 fifo是英文first in first out 的縮寫,是一種先進(jìn)先出的數(shù)據(jù)緩存器,他與普通存儲(chǔ)器的區(qū)別是沒有外部讀寫地址線,這樣使用起來非常簡(jiǎn)單,但缺點(diǎn)就是只能順序?qū)懭霐?shù)據(jù),順序的讀出數(shù)據(jù),其數(shù)據(jù)地址由內(nèi)部讀寫指針自動(dòng)加1完成,不能像普通存儲(chǔ)器那樣可以由地址線決定讀取或?qū)懭肽硞€(gè)指定的地址。fifo的一些重要參數(shù) fifo的寬度:也就是英文資料里常看到的the width,它指的

42、是fifo一次讀寫操作的數(shù)據(jù)位。 fifo的深度:the deepth,它指的是fifo可以存儲(chǔ)多少個(gè)n位的數(shù)據(jù)(如果寬度為n)。如一個(gè)8位的fifo,若深度為8,它可以存儲(chǔ)8個(gè)8位的數(shù)據(jù),深度為12 ,就可以存儲(chǔ)12個(gè)8位的數(shù)據(jù)。 滿標(biāo)志:fifo已滿或?qū)⒁獫M時(shí)由fifo的狀態(tài)電路送出的一個(gè)信號(hào),以阻止fifo的寫操作繼續(xù)向fifo中寫數(shù)據(jù)而造成溢出(overflow)。 空標(biāo)志:fifo已空或?qū)⒁諘r(shí)由fifo的狀態(tài)電路送出的一個(gè)信號(hào),以阻止fifo的讀操作繼續(xù)從fifo中讀出數(shù)據(jù)而造成無效數(shù)據(jù)的讀出(underflow)。 讀指針:指向下一個(gè)讀出地址。讀完后自動(dòng)加1。 寫指針:指向下一個(gè)

43、要寫入的地址的,寫完自動(dòng)加1。4.5.3 串口接收數(shù)據(jù)處理此模塊處理串口接收的十六進(jìn)制數(shù)據(jù),取模之后作led點(diǎn)陣的列驅(qū)動(dòng),接收的數(shù)據(jù)顯示在0-9之間。以下是數(shù)據(jù)處理模塊的端口實(shí)例化程序:module address (input clk,input rstn,input 7:0 fifo_write_data ,output 15:0 write_data,input isdone); 其中,輸入保存在fifo中上位機(jī)發(fā)送的數(shù)據(jù),上位機(jī)使用串口小助手發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)類型為十六進(jìn)制,每次發(fā)送8位數(shù)據(jù)位。isdone為行掃描更新標(biāo)志位,由led點(diǎn)陣驅(qū)動(dòng)模塊提供。write_data輸出作為點(diǎn)陣列

44、驅(qū)動(dòng)。程序設(shè)計(jì)思路: (1)讀取高四位,使用case語句判斷bcd值,當(dāng)接收到行掃完畢標(biāo)志后(isdone),送顯相應(yīng)bcd值的列數(shù)據(jù),循環(huán)逐行送顯; (2)讀取低四位,使用case語句判斷bcd值,當(dāng)接收到行掃完畢標(biāo)志后(isdone),送顯相應(yīng)bcd值的列數(shù)據(jù),循環(huán)逐行送顯。 4.6 時(shí)鐘模塊 時(shí)鐘模塊主要實(shí)現(xiàn)讀寫時(shí)鐘芯片ds1302和驅(qū)動(dòng)數(shù)碼管顯示時(shí)鐘。如圖4-10所示,inter_face完成對(duì)時(shí)鐘初始化和讀取時(shí)鐘以及作為smg模塊與ds1302的接口。圖4-10 時(shí)鐘模塊rtl圖4.6.1 讀寫時(shí)鐘芯片 如圖4-10所示,該模塊由命令控制模塊和函數(shù)模塊組成。 圖4-11 時(shí)鐘芯片讀寫

45、模塊 _function模塊端口實(shí)例化程序:module _function(input clk,input rstn,input 1:0 start,output done,input 7:0 addr,input 7:0 write_data,output 7:0 read_data,output rst,output sclk,inout sio); 其中,兩位的start為讀寫選擇信號(hào),當(dāng)start1為1的時(shí)候進(jìn)行寫操作,當(dāng)start0為1的時(shí)候進(jìn)行讀操作;addr為操作碼;write_data為待寫數(shù)據(jù);read_data保存了讀取到的時(shí)鐘數(shù)據(jù);rst驅(qū)動(dòng)ds1302復(fù)位引腳;scl

46、k為ds1302的提供時(shí)鐘信號(hào);sio為輸入輸出口,驅(qū)動(dòng)ds1302數(shù)據(jù)端口。 編程思路:(1)根據(jù)start判斷進(jìn)行讀操作還是寫操作;(2)讀操作或?qū)懖僮鞫夹枰劝l(fā)送一個(gè)字節(jié)操作碼;(3) 讀操作時(shí),使sio作為輸入,依次讀取ds1302輸入的8位數(shù)據(jù)保存于read_data;(4)寫操作時(shí),使sio作為輸出口,依次發(fā)送write_data的八位數(shù)據(jù);(5)操作完畢時(shí)向外界發(fā)送一脈沖信號(hào)done。control模塊端口實(shí)例化程序:module control( input clk, input rstn, input 7:0 cmd, output done_sig, input 7:0 w

47、rtime, output 7:0 rdtime, output 1:0 start, input done, output 7:0 addr, input 7:0 read_data, output 7:0 write_data ); 其中,cmd為8位命令;wrtime保存待寫數(shù)據(jù);rdtime保存讀取的時(shí)鐘;start控制_function模塊讀寫操作選擇;done為_function完成一次操作后的觸發(fā)信號(hào);done_sig完成一次時(shí)鐘操作的標(biāo)志信號(hào);其他信號(hào)都是用于聯(lián)絡(luò)_function模塊。control模塊主要實(shí)現(xiàn)對(duì)位命令的功能化,具體命令分配如表4-1所示。 cmd 7.0 位

48、命令 功能 0110_0000 變更年寄存器0101_0000 變更月寄存器0100_0000 變更日寄存器0011_0000 變更時(shí)寄存器 0010_0000 變更分寄存器 0001_0000 變更秒寄存器 0000_0110 讀取年寄存器 0000_0101 讀取月寄存器 0000_0100 讀取日寄存器 0000_0011 讀取時(shí)寄存器 0000_0010 讀取分寄存器 0000_0001 讀取秒寄存器 表4-1 功能分配編程思路:根據(jù)輸入的不同命令cmd依據(jù)圖3-12所示進(jìn)行分配不同的操作碼至_function模塊。同時(shí)根據(jù)前四位為零時(shí)進(jìn)行的是讀操作,所以置start為2b01;反之,

49、后四位全為零時(shí)進(jìn)行寫操作,置start為2b10。4.6.2 數(shù)碼管顯示模塊此模塊用于在數(shù)碼管上顯示六位十六進(jìn)制數(shù)。程序端口實(shí)例化程序?yàn)椋簃odule smg(input clk,input rstn,input23:0 data, output 7:0 smg_data, output 5:0 scan);其中,data為顯示的6位數(shù)值(每四位二進(jìn)制表示一位bcd碼);smg_data驅(qū)動(dòng)數(shù)碼管點(diǎn)亮;scan為數(shù)碼管位選通信號(hào)。基本設(shè)置:每一位停留時(shí)間1ms;一次性掃描時(shí)間6ms;掃描頻率166.67hz。編程思路:計(jì)數(shù)器計(jì)滿19,999(1ms),位選通信號(hào)scan循環(huán)移位一次,寄存器rs

50、mg保存data的后四位數(shù)據(jù),具體參照表4-2所示,同時(shí)根據(jù)rsmg的值譯碼送顯數(shù)碼管。 data23:0 位代表(從左邊數(shù)起) data23:20 第一位 數(shù)字 | 數(shù)碼管 data19:16 第二位 數(shù)字 | 數(shù)碼管 data15:12 第三位 數(shù)字 | 數(shù)碼管 data11:8 第四位 數(shù)字 | 數(shù)碼管 data7:4 第五位 數(shù)字 | 數(shù)碼管 data3:0 第六位 數(shù)字 | 數(shù)碼管 表4-2 data分配表第五章 調(diào)試及結(jié)果分析5.1 硬件調(diào)試及結(jié)果分析調(diào)試過程主要分為以下幾個(gè)步驟:第一步,首先在硬件電路沒有上電的情況下,檢查pcb板線路是否無誤。對(duì)照硬件電路原理圖,pcb板圖,用萬

51、用表的蜂鳴檔檢查每條線路是否都導(dǎo)通。檢查+5v、-5v的電源線是否全部連接好,電源和地是否有短路,每個(gè)芯片插座的電源端是否都連接在一起,每個(gè)芯片插座的地端是否都連接在一起。通過細(xì)致的檢查,發(fā)現(xiàn)有些過孔和元件引腳有虛焊的現(xiàn)象,用烙鐵重新焊接,再用萬用表的蜂鳴檔從連通的起始端每個(gè)觸點(diǎn)逐個(gè)檢查,確保線路連通,發(fā)現(xiàn)問題則相應(yīng)地進(jìn)行解決。要注意的是,電源和地一定不能短路。若短路,應(yīng)仔細(xì)檢查線路,并作相應(yīng)改動(dòng)。第二步,檢測(cè)led點(diǎn)陣好壞。將萬用表調(diào)至蜂鳴檔,對(duì)照點(diǎn)陣的原理圖紅筆連正極,黑筆接負(fù)極,觀察是否有相應(yīng)坐標(biāo)的led點(diǎn)亮。第三步,斷開電源線,把所有芯片全部插到芯片插槽中,接通電源,用手觸摸每塊芯片,

52、看是否發(fā)燙。結(jié)果沒有芯片發(fā)燙或燒壞,說明電路供電正常。5.2 系統(tǒng)軟硬件聯(lián)調(diào)第一步:連接好led點(diǎn)陣模塊,將驅(qū)動(dòng)點(diǎn)陣顯示“好”字的程序下載到fpga中,運(yùn)行程序。發(fā)現(xiàn)顯示微弱,而且是亂碼,使用示波器分別測(cè)量74hc164和74hc595的時(shí)鐘端,發(fā)現(xiàn)波形與理想波形產(chǎn)生偏差,重新計(jì)算后修改程序再測(cè)量時(shí)得到正確波形,但是仍然不顯示。將電路板換成單片機(jī)控制來驅(qū)動(dòng)發(fā)現(xiàn)可以正常顯示,所以排除電路問題。通過翻閱資料比較單片機(jī)與fpga的不同之處,則考慮到i/o口類型不同,高低電壓值存在差別,于是在74hc164的數(shù)據(jù)輸入端與地之間接上一個(gè)104電容后,正常顯示“好”字。第二步:將串口接收模塊下載到fpga中,運(yùn)行程序。 通過串口小助手發(fā)送數(shù)據(jù),在一位數(shù)碼管上顯示數(shù)據(jù),說明串口接收模塊正常工作。第三步:將led點(diǎn)陣顯示加上串口接收模塊的程序下載到fpga中,通過串口小助手發(fā)送的十六進(jìn)制的數(shù)據(jù)在led點(diǎn)陣屏上正常顯示。第四步: 將按鍵控制led燈點(diǎn)亮的程序下載到fpga中,運(yùn)行程序。通過按鍵可以控制led燈的亮和滅,說明按鍵模塊正確。第五步:將按鍵控制點(diǎn)陣顯示方式的程序下載到fpga中,運(yùn)行程序。同過按鍵可以改變顯示方式。上、下、左、右鍵分別控制向上、下、左、右移動(dòng),說明移位程序正確。第六步:將數(shù)碼管顯示程序下載到fpga中,發(fā)現(xiàn)數(shù)碼管六位顯示數(shù)據(jù),但是顯示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論