集成電路功能測試儀報(bào)告_第1頁
集成電路功能測試儀報(bào)告_第2頁
集成電路功能測試儀報(bào)告_第3頁
集成電路功能測試儀報(bào)告_第4頁
集成電路功能測試儀報(bào)告_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

集成電路功能測試目錄課題目的 1課題要求 2(一)基本要求 2(二)提高要求 2設(shè)計(jì)原理 2硬件設(shè)計(jì) 3(一)、顯示模塊 3(二)、電壓轉(zhuǎn)換模塊 6(三)、語音模塊 8(四)、PS/2鍵盤 10軟件流程圖 12課程設(shè)計(jì)心得 15附錄 16(一)本次集成電路功能測試儀的總電路圖 16(二)硬件焊接電路 17(三)集成電路功能測試儀LB0管腳分配表 18(四)元器件清單 20(五)本次課程設(shè)計(jì)總程序 21課題目的掌握數(shù)字集成電路功能測試儀的原理;掌握基于NiosⅡ的嵌入式系統(tǒng)的設(shè)計(jì)方法;學(xué)習(xí)SOPC系統(tǒng)的開發(fā)流程;掌握VHDL語言,C語言編程,提高程序設(shè)計(jì)能力;掌握小型電子系統(tǒng)的設(shè)計(jì)方法,提高實(shí)踐能力;掌握按鍵掃描電路、七段碼掃描顯示電路等的設(shè)計(jì)方法。課題要求(一)基本要求1、完成系統(tǒng)軟硬件設(shè)計(jì)。要求完成的硬件電路布局合理。走線規(guī)范、美觀;2、實(shí)現(xiàn)20種以上(含20)組合電路功能芯片的識(shí)別和測試;3、實(shí)現(xiàn)5種以上(含5)的時(shí)序電路芯片的識(shí)別和測試;4、具有測試結(jié)果指示。(二)提高要求1、盡量多的增加系統(tǒng)可以測試的芯片;2、加入芯片故障定位功能,如精確指示部分損壞芯片具體的損壞通道;3、提高系統(tǒng)的人性化程度,比如加入語音提示等。設(shè)計(jì)原理本課題要求學(xué)生使用基于NiosⅡ的嵌入式技術(shù)實(shí)現(xiàn)一個(gè)能對(duì)74系列數(shù)字集成電路進(jìn)行芯片種類識(shí)別和芯片功能測試。系統(tǒng)結(jié)構(gòu)如下圖所示:顯示顯示聲音提示聲音提示FPGA最小系統(tǒng)版(FPGA最小系統(tǒng)版(LB0)NiosⅡ電壓轉(zhuǎn)換電壓轉(zhuǎn)換測試芯片插座按鍵圖(1)系統(tǒng)設(shè)計(jì)中可以根據(jù)需要確定各模塊硬件方案,并繪制電路原理圖。確定各模塊接口后,可使用QuartusⅡ軟件中的SOPCBuilder組建構(gòu)建SOPC系統(tǒng),并設(shè)計(jì)相關(guān)的外圍模塊得到完成的硬件邏輯工程。完成硬件工程后即可進(jìn)入NiosⅡIDE開發(fā)環(huán)境中進(jìn)行軟件程序設(shè)計(jì)開發(fā)。硬件設(shè)計(jì)(一)、顯示模塊顯示模塊主要實(shí)現(xiàn)對(duì)芯片檢測結(jié)果的顯示,包括芯片型號(hào)及芯片功能是否完好,同時(shí)也要給用戶提供必要的提示信息,提高系統(tǒng)界面的友好性。方案一采用數(shù)碼管顯示由于所有芯片均為74系列,因而只顯示最后兩位編號(hào)即可實(shí)現(xiàn)對(duì)芯片型號(hào)的顯示,但由于數(shù)碼管顯示效果較差并且動(dòng)態(tài)掃描時(shí)會(huì)占用很多CPU時(shí)間,因而舍棄該方案。方案二采用點(diǎn)陣顯示采用有二極管構(gòu)成的16×16點(diǎn)陣,通過主控單元的控制可以實(shí)現(xiàn)漢字及英文字符的顯示,可以顯示芯片型號(hào)以及芯片功能完整性,采用點(diǎn)陣顯示的優(yōu)點(diǎn)是顯示內(nèi)容可以隨意控制,顯示內(nèi)容豐富。但點(diǎn)陣顯示也存在占用I/O口較多并且會(huì)占用大量CPU時(shí)間的缺點(diǎn),另外,在使用點(diǎn)陣顯示是還要存儲(chǔ)大量的字模信息,而由于本系統(tǒng)需要掃描大量的邏輯芯片,為節(jié)約成本又未擴(kuò)展程序存儲(chǔ)區(qū),因而考慮到所用主控單元I/O口資源有限和對(duì)程序存儲(chǔ)區(qū)容量的限制,舍棄該方案。方案三采用1602模塊顯示1602液晶為字符型液晶,可以顯示16×2共32個(gè)字符,不僅可以顯示芯片型號(hào)及判斷結(jié)果,并且還可以在程序運(yùn)行過程中為用戶提供必要的提示信息,提高了系統(tǒng)的交互性,并且1602液晶占用CPU時(shí)間較少,雖然顯示能力較弱,僅能顯示英文字符,但基本能滿足設(shè)計(jì)的要求,因而本設(shè)計(jì)采用1602液晶作為顯示輸出設(shè)備。1、實(shí)物圖:圖(2)2、管腳圖如下:圖(3)3、LSD1602顯示原理1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。市面上字符液晶大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。4、管腳功能:(1)1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:VSS為電源地第2腳:VCC接5V電源正極第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度)。第4腳:RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。第5腳:RW為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。第6腳:E(或EN)端為使能(enable)端,高電平(1)時(shí)讀取信息,負(fù)跳變時(shí)執(zhí)行指令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。(2)1602特性:3.3V或5V工作電壓,對(duì)比度可調(diào)。(3)內(nèi)含復(fù)位電路提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能有80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器DDRAM。內(nèi)建有192個(gè)5X7點(diǎn)陣的字型的字符發(fā)生器CGROM。8個(gè)可由用戶自定義的5X7的字符發(fā)生器CGRAM。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”。因?yàn)?602識(shí)別的是ASCII碼,試驗(yàn)可以用ASCII碼直接賦值,在單片機(jī)編程中還可以用字符型常量或變量賦值,如“A”。4、顯示模塊電路圖如下所示:圖(4)(二)、電壓轉(zhuǎn)換模塊由于本電路中各模塊需要的電壓不同,難以達(dá)到統(tǒng)一,故本次我們小組使用的是由TI出的TXB0104電壓轉(zhuǎn)換芯片使全局電壓一致。TXB0104電壓轉(zhuǎn)換模塊,由于此次設(shè)計(jì)電路I/O接口電壓與拓展板電路電壓不匹配,故采用TX0104進(jìn)行電壓轉(zhuǎn)換。TXB0104具有自動(dòng)方向感應(yīng)和+/-15kV的ESD保護(hù)的4位雙向電壓電平轉(zhuǎn)換器,這4位同相轉(zhuǎn)換器采用兩個(gè)獨(dú)立可配置電源軌。端口A用于跟蹤VCCA,VCCA接受任何從1.2V到3.6V的電源電壓,端口B是用來追蹤VCCB,VCCB接受任何從1.65V至5.5V的電源電壓,能夠在1.2V、1.5V、1.8V、2.5V、3.3V與5V電壓節(jié)點(diǎn)之間進(jìn)行靈活的雙向電平轉(zhuǎn)換,而且可提供全面的可配置性。VCCA不應(yīng)超過VCCB。當(dāng)輸出使能(OE)輸入為低電平時(shí),所有輸出置于高阻抗?fàn)顟B(tài)。為了確保在開機(jī)或斷電時(shí)呈高阻抗?fàn)顟B(tài),OE應(yīng)當(dāng)通過一個(gè)下拉電阻連接到GND,下拉電阻最小值由驅(qū)動(dòng)電流源的能力決定。TXB0104引腳圖(5) 電壓轉(zhuǎn)換模塊局部電路圖如下所示:圖(6)(三)、語音模塊1、語音芯片ISD1760原理ISD1760是華邦公司新推出的語音芯片,用來替代已經(jīng)停產(chǎn)的ISD1400系列。ISD1760系類不僅在錄音時(shí)間上有更多的選擇(從20到240秒),而且在功能上繼承14系列及25系列所有的錄放功能,音質(zhì)也較14和25系列有明顯的提高。ISD1760系列錄放芯片是一種高集成度,高性能的芯片。它可以采用多段錄音,采樣率可在4K到12K之間調(diào)節(jié),供電范圍可以在2.4至5.5V之間。ISD1760系列芯片可工作于獨(dú)立按鍵模式和SPI控制模式。芯片內(nèi)有存儲(chǔ)管理系統(tǒng)多段語音,這樣在獨(dú)立按鍵模式下也能進(jìn)行多段語音錄放。此芯片內(nèi)有振蕩器,可通過外部電阻來調(diào)節(jié)其震蕩頻率;還帶有自動(dòng)增益控制(AGC)的話筒預(yù)防、模擬線路輸入,抗鋸齒濾波器,多級(jí)存儲(chǔ)陣列、平滑濾波器,音量控制,直接驅(qū)動(dòng)喇叭的PWM輸出與外接功放的電流(電壓)輸出。ISD1760還有新錄音提示功能,當(dāng)有新的錄音后,LED會(huì)每幾秒閃一次來提示用戶有新的錄音。此外還有4種音效來提示用戶的操作結(jié)果,如開始錄音、停止錄音、擦除、下一曲和全部擦除等。錄音數(shù)據(jù)存儲(chǔ)在芯片的FLASH內(nèi),沒有經(jīng)過任何壓縮,所以有比較好的音質(zhì)和斷電存儲(chǔ)。芯片有兩路獨(dú)立的語音信號(hào)輸入通道,話筒輸入與模擬信號(hào)輸入。在獨(dú)立按鍵模式下,當(dāng)某功能操作完成后芯片會(huì)自動(dòng)進(jìn)入掉電模式來降低功耗,用戶可對(duì)芯片進(jìn)行更多的功能操作。如對(duì)任意存儲(chǔ)地址進(jìn)行錄放,對(duì)模擬通道配置寄存器進(jìn)行讀寫等。2、ISD1760特點(diǎn):①、錄、放音十萬次,存儲(chǔ)內(nèi)容可以斷電保留一百年。②、控制方式,兩種錄音輸入方式,兩種放音輸出方式③、處理多達(dá)159段以上信息④、豐富多樣的工作狀態(tài)提示⑤、多種采樣頻率對(duì)應(yīng)多種錄放時(shí)間⑥、音質(zhì)好,電壓范圍寬,應(yīng)用靈活,廉價(jià)物美⑦、工作電壓:2.4~5.5V,最高不能超過6V⑧、靜態(tài)電流:0.5~1uA⑨、工作電流:20mA⑩、用戶可以利用震蕩電阻來自定芯片的采樣頻率,從而決定芯片的錄放時(shí)間采樣頻率可通過外接電阻調(diào)節(jié)采樣率12KHZ8KHZ6.4KHZ5.3KHZ4KHZRosc53K?80K?100K?120K?160K?3、ISD1760語音模塊局部電路圖:圖(7)(四)、PS/2鍵盤PC鍵盤可以有6腳的mini-DIN或5腳的DIN連接器。如果你的鍵盤是6腳的mini-DIN而你的計(jì)算機(jī)是5腳的DIN(或者相反),這兩類連接器可以用上面提到的適配器來兼容。具有6腳mini-DIN的鍵盤通常被叫做“PS/2”鍵盤,而那些有5腳DIN叫做“AT”設(shè)備。在剛才提到連接器上有四個(gè)有趣的管腳:電源地、+5V、數(shù)據(jù)和時(shí)鐘。host(計(jì)算機(jī))提供+5V,并且鍵盤/鼠標(biāo)的地連接到host的電源地上。數(shù)據(jù)和時(shí)鐘都是集電極開路的,這就意味著它們通常保持高電平而且很容易下拉到地(邏輯0)。任何你連接到PS/2鼠標(biāo)鍵盤或host的設(shè)備在時(shí)鐘和數(shù)據(jù)線上要有一個(gè)大的上拉電阻。置“0”就把線拉低,置“1”就讓線上浮成高電平。圖(8)中的數(shù)據(jù)和時(shí)鐘線的一般接口結(jié)構(gòu)。(注意:如果你打算使用象PIC這樣的微控制器,由于它們的I/O管腳是雙向的,你可以跳過晶體管和緩沖門,并且通用同一個(gè)管腳進(jìn)行輸入和輸出。在這種組態(tài)情況下,要設(shè)置管腳為輸入就寫入1使得電阻上拉線上的電平,要改變管腳為輸出就寫入0到那個(gè)管腳,把線路下拉到地。)圖(8)圖(9)軟件流程圖由于系統(tǒng)需要實(shí)現(xiàn)的是一個(gè)集成電路測試儀,測試對(duì)象種類繁多,一次必須要求系統(tǒng)具有良好的軟件結(jié)構(gòu),建議擬定一個(gè)機(jī)構(gòu)合理的芯片測試真值表,軟件中受用統(tǒng)一的格式調(diào)用真值表中的測試數(shù)據(jù)對(duì)芯片進(jìn)行測試,這樣只需要添加芯片真值表即可增加系統(tǒng)測試芯片的種類。由于系統(tǒng)要求具有芯片測試和芯片識(shí)別兩個(gè)功能,因此軟件設(shè)計(jì)中需要設(shè)置芯片測試模式和芯片識(shí)別兩個(gè)工作方式,下圖分別是兩種模式的流程圖:測試模式測試模式按鍵輸入芯片型號(hào)芯片是否在庫內(nèi)提示測試芯片不在庫中否讀取該芯片測試真值表是按測試真值表對(duì)芯片進(jìn)行測試芯片是否正常指示測試芯片損壞通道否提示測試芯片完好是結(jié)束圖(10)識(shí)別模式識(shí)別模式按鍵掃描等待測試讀取芯片測試庫真值表按真值表庫對(duì)芯片進(jìn)行逐個(gè)測試是否有檢測到芯片提示芯片損壞或不在測試庫中提示檢測到芯片型號(hào)結(jié)束否是圖(11)

課程設(shè)計(jì)心得通過本次課程設(shè)計(jì)讓我學(xué)到了很多知識(shí),將課堂上所學(xué)到的知識(shí)能適當(dāng)正確的運(yùn)用到本次課程設(shè)計(jì)中,是一次理論加實(shí)踐的結(jié)合更能提高我們的實(shí)際運(yùn)用能力;本次課程設(shè)計(jì)是一次很好的鍛煉學(xué)生能力的訓(xùn)練,包括軟件編程和硬件實(shí)驗(yàn)板電路焊接的動(dòng)手能力;另一方面這次課程設(shè)計(jì)與以前的課程設(shè)計(jì)有了很大的區(qū)別,以前的課程設(shè)計(jì)都是個(gè)人單獨(dú)完成,一個(gè)人單獨(dú)編程調(diào)試負(fù)責(zé)全部的工作而本次的課程設(shè)計(jì)是分組完成,以四人為一組大家相互完成本次的課程設(shè)計(jì),這很有利于增強(qiáng)大家的相互協(xié)調(diào)合作能力,對(duì)提高學(xué)生們的團(tuán)隊(duì)合作意識(shí)有很大的幫助。硬件電路方面系統(tǒng)設(shè)計(jì)中根據(jù)需要確定各模塊硬件方案,并繪制電路原理圖。本系統(tǒng)的硬件以提供的LB0開發(fā)板為核心,通過40P擴(kuò)展插槽引出IO口到萬用板中,在萬用板中設(shè)計(jì)鍵盤、顯示、測試插槽、語音提示等模塊電路。先要在萬用板上設(shè)計(jì)好模塊的位置,然后在進(jìn)行焊接。在焊接導(dǎo)線時(shí),要保持導(dǎo)線平直,盡量不要交叉。在焊接40P擴(kuò)展插槽時(shí),要用萬用表測試插槽是否斷開。當(dāng)軟件測試不正確時(shí),要檢查是否正確。其中硬件電路焊接容易出現(xiàn)虛焊、焊接點(diǎn)短路等現(xiàn)象,本次的硬件設(shè)計(jì)與焊接中我們采用五片電壓轉(zhuǎn)換模塊,將電壓轉(zhuǎn)換為我們所需要的電壓值。軟件編程方面采用QuarttusII搭建SOPC處理器模塊,控制硬件電路的實(shí)現(xiàn)功能,在NiosII軟件中編程SOPC模塊里的控制程序?qū)崿F(xiàn)對(duì)電路的正確控制,其中對(duì)程序的調(diào)試中出現(xiàn)過很多問題,最后經(jīng)過向老師請(qǐng)教和查找資料解決了問題讓板子實(shí)現(xiàn)了預(yù)期得功能。軟件編程的過程中讓我學(xué)到了很多東西加強(qiáng)了我對(duì)C語言和VHDL語言的實(shí)際運(yùn)用,讓我對(duì)這些程序語言有了更深入的理解,對(duì)提高我們的程序能力有了很大的幫助。

本次課程設(shè)計(jì)讓我們意識(shí)到了團(tuán)隊(duì)合作的重要性,也感受到了各自知識(shí)的欠缺對(duì)提高我們的各方面能力擁有很大的幫助,本次課程設(shè)計(jì)感謝老師的幫助,在我們遇到問題的時(shí)候給我們提供幫助;也感謝我的隊(duì)友們一如既往的投身于本次課程設(shè)計(jì)中。附錄(一)本次集成電路功能測試儀的總電路圖圖(12)(二)硬件焊接電路圖(13)(三)集成電路功能測試儀LB0管腳分配表40P排針號(hào)LB0GPIO號(hào)LB0接口名PIN管腳號(hào)99HEXSCCPIN_1351010HEXSCBPIN_1331311HEXSCAPIN_1321412HEX_D[0]PIN_1291513HEX_D[1]PIN_1281614HEX_D[2]PIN_1271715HEX_D[3]PIN_1261816HEX_D[4]PIN_1251917HEX_D[5]PIN_1242018HEX_D[6]PIN_1212119HEX_D[7]PIN_1202220LED[8]PIN_852321LED[7]PIN_862422LED[6]PIN_872523LED[5]PIN_982624LED[4]PIN_992725LED[3]PIN_1002826LED[2]PIN_1013127LED[1]PIN_1033228DA_D[0]PIN_1043329DA_D[1]PIN_1053430DA_D[2]PIN_1063531DA_D[3]PIN_1103632DA_D[4]PIN_1113733DA_D[5]PIN_1143834DA_D[6]PIN_1153935DA_D[7]PIN_1194036DA_CLKPIN_113PS2_DATAPIN_136PS2_CLKPIN_137 實(shí)驗(yàn)板LB0上的管腳對(duì)應(yīng)圖:圖(14)(四)元器件清單元件名稱.需要數(shù)量元件名稱需要數(shù)量萬用板1發(fā)光二極管(紅)1發(fā)光二極管(綠)1撥碼開關(guān)(單獨(dú))3喇叭(8歐,0.5w)1麥克風(fēng)1電阻47歐(直插色環(huán))3電阻1K歐(直插色環(huán))3電阻4.7K歐(直插色環(huán))6電阻100K歐(直插色環(huán))2電容0.1uF(瓷片)6電容4.7uF(電解)2按鍵5IDS1700語音芯片1雙排芯片座(16孔)1雙排芯片座(26孔)1單排插座(20孔)1單排插座(7孔)10數(shù)字小鍵盤(外接)1實(shí)驗(yàn)板:1工具:烙鐵1鑷子1斜口鉗1小起子1領(lǐng)用人簽字:指導(dǎo)教師簽字:領(lǐng)用時(shí)間:(五)本次課程設(shè)計(jì)總程序/***************************頭文件宏定義*****************************/#include<stdio.h>#include"alt_types.h"#include"altera_avalon_pio_regs.h"#include"altera_avalon_spi.h"#include"altera_avalon_spi_regs.h"#include"io.h"#include"system.h"#include"altera_avalon_lcd_16207_regs.h"#include"altera_avalon_lcd_16207.h"/******************************宏定義*****************************/#defineCHIP_TYPE_NUMBER10#defineCHIP_TVTBL_NUM12#defineCHIP_NAME_NUM10#defineLCD_CUSSOR_OFF0x0C#defineLCD_CUSSOR_ON_F0x0F#defineLCD_CUSSOR_ON0x0E/*****************以下請(qǐng)按照軟核定義修改******************/#defineLCD_BASELCD_1602_BASE#defineLCD_DELAY_TIME2000修改/***********************控制指令***********************/#defineLCD_CUSSOR_OFF0x0C#defineLCD_CUSSOR_ON_F0x0F#defineLCD_CUSSOR_ON0x0E/*******************定義控制函數(shù)***********************/#defineLCD_Write_CMD(data)IOWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD_1602_BASE,data)#defineLCD_Write_Data(data)IOWR_ALTERA_AVALON_LCD_16207_DATA(LCD_1602_BASE,data)#defineLCD_Read_Data()IORD_ALTERA_AVALON_LCD_16207_DATA(LCD_1602_BASE)/*=======================================================*LCD_Init()*=======================================================*/voidLCD_Init(){IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0);LCD_Write_CMD(0x38);usleep(LCD_DELAY_TIME);LCD_Write_CMD(LCD_CUSSOR_ON_F);usleep(LCD_DELAY_TIME);LCD_Write_CMD(0x01);usleep(LCD_DELAY_TIME);LCD_Write_CMD(0x06);usleep(LCD_DELAY_TIME);LCD_Write_CMD(0X80);usleep(LCD_DELAY_TIME);}/*=======================================================*LCD_Print()*=======================================================*/voidLCD_Print(char*Text){IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0);while(*Text!='\0'){LCD_Write_Data(*Text);usleep(LCD_DELAY_TIME);++Text;}IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,1);}/*=======================================================*LCD_SetPos()*=======================================================*/voidLCD_SetPos(intRow,intColumn){IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0);LCD_Write_CMD((0x80+Column)|(Row<<6));usleep(LCD_DELAY_TIME);}externinttvtbl_pos=0;longTvtbl_reg[CHIP_TVTBL_NUM]={0};externlongTvtbl_lib[CHIP_TYPE_NUMBER][CHIP_TYPE_NUMBER]={{0x3ECDF,0x6CD8,0x5B68,0x1320,0x37B0,0,0,0},{0x3B7B7,0x4848,0x1320,0x2490,0x37B0,0,0,0},{0x3D4AF,0x54A8,0x2B50,0,0,0,0,0},{0x3D4AF,0x54A8,0x2B50,0,0,0,0,0},{0x3D4AF,0x54A8,0x2B50,0,0,0,0,0},{0x3DCFF,0x7FF8,0x58D0,0x54A8,0xC78,0,0,0},{0x3FCFF,0x2FD0,0x4FC8,0x6798,0x6B58,0x7CF8,0,0},{0x300FF,0xFF4C,0xFF80,0xFEE0,0xFDE4,0xFBE8,0xF7EC,0xEFF0,0xDFF4,0xBFF8,0x7FFC},{0x3E01F,0x9FE4,0x3F0,0x57A8,0x3B70,0x7CF8,0},{0x3FCFF,0x4B40,0x1328,0x6318,0}};/************************Declarefunctions**************************/intget_key_value();//getakeycombinevaluefromps2keyboardintkey_func(inta);//intcheck_chip_name(intkeyvalue);longbuild_Tvtbl(inti);voidtest_chip_func(long*Tvtbl);voidrecg_chip_func();externvoidLCD_Init(void);//液晶初始化externvoidLCD_Print(char*Text);//顯示字符串externvoidLCD_SetPos(intRow,intColumn);//顯示定位/************從PS2鍵盤獲取一串健值******************intget_key_value(){inta,keyvalue;intb=1;IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x0);LCD_Init();LCD_SetPos(0,3);LCD_Print("INPUT");usleep(1000000);while(1){LCD_Init();usleep(1000000);LCD_SetPos(0,3);LCD_Print("INPUT");if(b!=3){a=IORD_ALTERA_AVALON_PIO_DATA(KEYBD_CODE_BASE);if(a!=18)if(b>1)keyvalue=keyvalue*10+a;elsekeyvalue=a;elsebreak;b++;}elsebreak;usleep(1000000);}LCD_Init();LCD_SetPos(0,3);switch(keyvalue){case0:LCD_Print("74LS00");break;case1:LCD_Print("74LS01");break;case2:LCD_Print("74LS02");break;case3:LCD_Print("74LS03");break;case4:LCD_Print("74LS04");break;case5:LCD_Print("74LS05");break;case6:LCD_Print("74LS06");break;case7:LCD_Print("74LS07");break;case8:LCD_Print("74LS08");break;case9:LCD_Print("74LS09");break;case10:LCD_Print("74LS10");break;case11:LCD_Print("74LS11");break;case12:LCD_Print("74LS12");break;case13:LCD_Print("74LS13");break;case14:LCD_Print("74LS14");break;case15:LCD_Print("74LS15");break;case16:LCD_Print("74LS16");break;case20:LCD_Print("74LS20");break;case38:LCD_Print("74LS138");break;case39:LCD_Print("74LS139");break;case53:LCD_Print("74LS153");}usleep(1000000);returnkeyvalue;}/**************************按鍵號(hào)控制程序*****************************intkey_func(inta){intkey;while(1){key=IORD_ALTERA_AVALON_PIO_DATA(KEYBD_CODE_BASE);if(key==a)break;}returnkey;}/******************檢測輸入的芯片信號(hào)是否在庫中***********************/intcheck_chip_name(intkeyvalue){intchip_name[CHIP_NAME_NUM]={00,02,20,06,11,14,20,38,39,53};inti,k;intflag=1;intr;for(i=0;i<CHIP_NAME_NUM;){flag=keyvalue-chip_name[i];if(flag==0){for(k=0;k<CHIP_TYPE_NUMBER;){Tvtbl_reg[k]=Tvtbl_lib[i][k];k++;}tvtbl_pos=i;r=1;break;}elseif(i==(CHIP_NAME_NUM-1)){LCD_Init();LCD_SetPos(0,3);LCD_Print("chipinvalid");usleep(1000000);r=0;}i++;}returnr;}/******************芯片測試***********************/voidtest_chip_func(long*Tvtbl){inti;longmake_tvtbl[CHIP_TVTBL_NUM]={0};longwr_tvtbl[CHIP_TVTBL_NUM]={0};longrd_tvtbl[CHIP_TVTBL_NUM]={0};longtest_tvtbl[CHIP_TVTBL_NUM]={0};longa,b;for(i=0;Tvtbl[i]!=0;){make_tvtbl[i]=Tvtbl[i];i++;}IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x0);LCD_Init();LCD_SetPos(1,5);LCD_Print("STARTTEST!");usleep(1000000);IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x1);IOWR_ALTERA_AVALON_PIO_DIRECTION(TEST_PIN_BASE,make_tvtbl[0]);//方向設(shè)置IOWR_ALTERA_AVALON_PIO_DATA(TEST_PIO_DIR_BASE,make_tvtbl[0]);a=IORD_ALTERA_AVALON_PIO_DATA(TEST_PIO_DIR_BASE);for(i=1;make_tvtbl[i]!=0;i++){usleep(10000);IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x1);usleep(1000);IOWR_ALTERA_AVALON_PIO_DATA(TEST_PIN_BASE,Tvtbl[i]);wr_tvtbl[i-1]=make_tvtbl[i]&make_tvtbl[0];usleep(100);b=IORD_ALTERA_AVALON_PIO_DATA(TEST_PIN_BASE);rd_tvtbl[i-1]=b&(~Tvtbl[0]);test_tvtbl[i-1]=wr_tvtbl[i-1]|rd_tvtbl[i-1];if(test_tvtbl[i-1]!=make_tvtbl[i]){IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x0);LCD_Init();LCD_SetPos(0,3);LCD_Print("ERROR!");usleep(5000000);break;}elseif(make_tvtbl[i+1]==0){IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x0);LCD_Init();LCD_SetPos(0,3);LCD_Print("Right");usleep(5000000);}}}/******************芯片識(shí)別***************************************/voidrecg_chip_func(){inti,k;longdirection;longwr_tvtbl[CHIP_TVTBL_NUM]={0};longrd_tvtbl[CHIP_TVTBL_NUM]={0};longtest_tvtbl[CHIP_TVTBL_NUM]={0};IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x0);for(i=0;i<CHIP_NAME_NUM;i++){tvtbl_pos=i;direction=Tvtbl_lib[i][0];IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x1);IOWR_ALTERA_AVALON_PIO_DATA(TEST_PIO_DIR_BASE,direction);IOWR_ALTERA_AVALON_PIO_DIRECTION(TEST_PIN_BASE,direction);for(k=1;Tvtbl_lib[i][k]!=0;k++){IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x1);IOWR_ALTERA_AVALON_PIO_DATA(TEST_PIN_BASE,Tvtbl_lib[i][k]);wr_tvtbl[k-1]=Tvtbl_lib[i][k]&direction;rd_tvtbl[k-1]=IORD_ALTERA_AVALON_PIO_DATA(TEST_PIN_BASE)&(~direction);test_tvtbl[k-1]=wr_tvtbl[k-1]|rd_tvtbl[k-1];if(test_tvtbl[k-1]!=Tvtbl_lib[i][k]){if(i==CHIP_NAME_NUM-1){IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x0);LCD_Init();LCD_SetPos(2,1);LCD_Print("Failed");LCD_SetPos(1,1);LCD_Print("NotExist");usleep(5000000);return;}break;}elseif(Tvtbl_lib[i][k+1]==0){IOWR_ALTERA_AVALON_PIO_DATA(OE_CTR_BASE,0x0);LCD_Init();switch(i){case0:LCD_Print("74LS00");break;case1:LCD_Print("74LS02");break;

溫馨提示

  • 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. 人人文庫網(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)論