畢業(yè)設(shè)計(jì)(論文)-基于CPLD的USB下載線的設(shè)計(jì)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于CPLD的USB下載線的設(shè)計(jì)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于CPLD的USB下載線的設(shè)計(jì)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于CPLD的USB下載線的設(shè)計(jì)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于CPLD的USB下載線的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于CPLD的USB下載線設(shè)計(jì)PAGEPAGE2課題名稱基于CPLD的USB下載線設(shè)計(jì)學(xué)生姓名學(xué)號(hào)專業(yè)名稱電子科學(xué)與技術(shù)指導(dǎo)教師姓名申請(qǐng)學(xué)位級(jí)別工學(xué)學(xué)士摘要隨著片上系統(tǒng)時(shí)代的到來(lái),包括復(fù)雜可編程邏輯器件和現(xiàn)場(chǎng)可編程門陣列的可編程邏輯器件,應(yīng)用越來(lái)越廣泛。USBblaster的使用也顯的越來(lái)越有必要。與傳統(tǒng)的并口、串口下載電纜相比,USBblaster在下載速度和靈活性上都有很大優(yōu)勢(shì)。而且由于其結(jié)構(gòu)相對(duì)簡(jiǎn)單,所以它的體積較小,容易攜帶。USBblaster所用到的芯片價(jià)格便宜,容易被廣大用戶接受使用。本文所設(shè)計(jì)的USBblaster硬件主要分為兩部分,即USB控制芯片及CPLD器件。USB控制芯片將主機(jī)發(fā)送給CPLD器件的數(shù)據(jù)轉(zhuǎn)化為8位并行數(shù)據(jù),CPLD器件再將其轉(zhuǎn)化為JTAG時(shí)序,發(fā)送給外設(shè)。軟件方面,軟件主要完成的功能是將USB時(shí)序轉(zhuǎn)化成JTAG時(shí)序。CPLD應(yīng)用狀態(tài)機(jī)的原理,將CPLD與USB控制芯片之間的數(shù)據(jù)傳輸,分為接受狀態(tài)機(jī)和發(fā)送狀態(tài)機(jī)兩個(gè)狀態(tài),它們的功能是控制如何接受和發(fā)送數(shù)據(jù)。經(jīng)實(shí)驗(yàn)證明,在下載速度上USBblaster下載FPGA配置程序是ByteblasterII的6倍。而且由于USBblaster采用USB接口模式,可以更好的適應(yīng)現(xiàn)在計(jì)算機(jī)的發(fā)展.。關(guān)鍵字:CPLD,USB,狀態(tài)機(jī)ABSTRUCTAlongwiththeSystemonChiptimearrival,includingCPLDandFPGA,theapplicationismoreandmorewidespread。Withtheparallelportandserialportdownloadcablecompared,USBblasterhasgreatadvantagesindownloadspeedandflexibility。Andbecauseofsimplestructure,it'ssmallandeasytocarry.AlotofuserscanacceptUSBblastereasily,becausethatthechipswhichtheUSBblasterusedarecheapTherearetwomainpartsinhardware。TheyareUSBcontrollerchipsandCPLDdevices.USBcontrollerchipstransformthedatewhichhostsentintoeightparalleldata。ThenCPLDtransformthedateintoJTAGtimingandsentittoperipherals.SoftwaremainfunctionisthatitcantransformtheUSBtimingintotheJTAGtiming.CPLDusestatemachinefordatatransmission。ThereareacceptingstatemachineandSendingstatemachine。Theycancontrolthathowthedatasendorreceive.USBblasteris

almost

sixtimesasfastasByteblasterIIwhenitdownloadFPGAconfigurationprocess.AndbecausethatUSBblasterisUSBmode,itcanbetteradapttothedevelopmentofthecomputer。Keywords:CPLD,USB,Statemachine目錄第一章緒論 11.1課題的背景和研究意義 11.2下載電纜發(fā)展現(xiàn)狀 3第二章系統(tǒng)總體設(shè)計(jì) 52.1硬件總體設(shè)計(jì) 52.2軟件總體設(shè)計(jì) 6第三章 硬件電路設(shè)計(jì) 73.1電路器件介紹 73.1.1USB器件FT245BM 73.1.2CPLD器件EPM3064 93.2系統(tǒng)硬件設(shè)計(jì) 113.2.1USB接口電路 113.2.2 EPM3064與FT245BM的接口實(shí)現(xiàn) 133.2.3電壓緩沖部分 133.3PCB版圖設(shè)計(jì) 143.3.1容性負(fù)載 143.3.2電源 143.3.3帶電插拔 153.3.4PCB圖 15第四章系統(tǒng)軟件設(shè)計(jì) 164.1系統(tǒng)平臺(tái)建立 164.1.1VHDL語(yǔ)言 164.1.2CPLD簡(jiǎn)介 174.1.3JTAG協(xié)議 184.1.4設(shè)計(jì)軟件Quartus

II 194.2基于VCP的PC機(jī)端軟件設(shè)計(jì) 214.3CPLD收發(fā)狀態(tài)機(jī)設(shè)計(jì) 234.3.1狀態(tài)機(jī) 234.3.2CPLD狀態(tài)機(jī)設(shè)計(jì) 244.3.3接收狀態(tài)機(jī) 254.3.4發(fā)送狀態(tài)機(jī) 284.3.5狀態(tài)圖 304.4其他方案選擇 32第五章系統(tǒng)調(diào)試及結(jié)果 35第六章 總結(jié)和展望 38致謝 39參考文獻(xiàn) 40附錄 41第一章緒論 1.1課題的背景和研究意義這幾年,隨著大量支持USB的個(gè)人電腦的普及,USB逐步成為PC機(jī)的標(biāo)準(zhǔn)接口已經(jīng)是大勢(shì)所趨。在主機(jī)(host)端,最新推出的PC機(jī)幾乎100%支持USB;而在外設(shè)(device)端,使用USB接口的設(shè)備也與日俱增,例如數(shù)碼相機(jī)、掃描儀、游戲桿、磁帶和軟驅(qū)、圖像設(shè)備、打印機(jī)、鍵盤、鼠標(biāo)等等。USB設(shè)備之所以會(huì)被大量應(yīng)用,主要具有以下優(yōu)點(diǎn):可以熱插拔,告別“并口和串口先關(guān)機(jī),將電纜接上,再開(kāi)機(jī)”的動(dòng)作。系統(tǒng)總線供電,低功率設(shè)備無(wú)需外接電源,采用低功耗設(shè)備,并可提供5V/500mA電源。支持設(shè)備眾多,支持多種設(shè)備類,例如鼠標(biāo),鍵盤,打印機(jī)等。擴(kuò)展容易,可以連接多個(gè)設(shè)備,最多可擴(kuò)127個(gè)。高速數(shù)據(jù)傳輸,USB1.1是12Mb/s,USB2.0高達(dá)480Mb/S。方便的設(shè)備互連,USBOTG支持點(diǎn)對(duì)點(diǎn)通信。所以開(kāi)發(fā)一個(gè)基于USB接口的下載線可以很大的方便我們。下載電纜,就是Download

Cable。其實(shí)下載電纜是多年以來(lái)沿用的習(xí)慣叫法,下載電纜的作用就是用來(lái)下載配置數(shù)據(jù),下載的目標(biāo)可以是基于EEPROM/FLASH工藝的CPLD(MAX,MAX

II)器件,也可以基于SRAM工藝的FPGA器件。我們還可以通過(guò)下載電纜將配置數(shù)據(jù)燒寫到串行配置器件(EPCS)和增強(qiáng)配置器件(EPC)中。它同時(shí)也是調(diào)試FPGA硬件(SignalTap

II)和調(diào)試Nios

II處理器的工具。在基于USB的DSP仿真器出來(lái)之前,人們只能使用基于并口的DSP仿真器,很多DSP開(kāi)發(fā)人員都是從并口的DSP仿真器開(kāi)始使用的。平心而論,并口DSP仿真器確實(shí)可以幫助我們完成DSP的開(kāi)發(fā)與調(diào)試。在基于USB的DSP仿真器出現(xiàn)后,情況有所改變。盡管基于USB的仿真器價(jià)格比并口DSP仿真器高,但很多開(kāi)發(fā)人員還是在第一時(shí)間選用它,因?yàn)閮烧咴诜抡嫠俣壬鲜遣豢上嗵岵⒄摰?。特別是在需要大量實(shí)時(shí)數(shù)據(jù)交換(RTDX)的場(chǎng)合,USB的速度優(yōu)勢(shì)就更明顯。我們可以在不中斷DSP程序運(yùn)行的情況下調(diào)試程序,這樣可以加快調(diào)試速度,而且可以得到更真實(shí)的結(jié)果。

在開(kāi)發(fā)FPGA時(shí)使用USB-Blaster下載電纜的優(yōu)勢(shì)也同樣明顯。一方面,下載程序速度明顯快。如今FPGA的容量已達(dá)到數(shù)百萬(wàn)門,即使是通過(guò)JTAG口下載程序,也需要很長(zhǎng)時(shí)間,USB-Blaster則可以明顯縮短下載時(shí)間。另一方面,程序調(diào)試更加方便快捷,甚至可以作一些實(shí)時(shí)調(diào)試。這一點(diǎn)在使用SignalTapII嵌入式邏輯分析儀和調(diào)試NiosII嵌入式處理器時(shí)十分重要。

用過(guò)并口仿真器的人都會(huì)埋怨其使用不方便。首要在BIOS里設(shè)置成EPP方式,還要注意不能熱插拔,這一問(wèn)題在學(xué)生實(shí)驗(yàn)室上課中最為明顯。電纜經(jīng)常拔來(lái)拔去,結(jié)果導(dǎo)致計(jì)算并口都不能用了。使用USB電纜則完全不用擔(dān)心這一點(diǎn),因?yàn)樗焐湍軣岵灏?。與傳統(tǒng)的基于PC并口的下載電纜相比,本設(shè)計(jì)的USB下載接口電路具有CPLD的USB下載電纜支持熱插拔、體積小、便于攜帶、降低對(duì)PC硬件傷害、編程速度快等明顯優(yōu)點(diǎn)。USB-Blaster與ByteblasterII相比有以下的優(yōu)點(diǎn):

使用USB-Blaster調(diào)試NiosII時(shí),再也不會(huì)出現(xiàn)煩人的警告提示。而使用ByteblasterII調(diào)試時(shí),則會(huì)彈出警告信息,提示這不是NiosII支持的JTAG調(diào)試電纜。

下載FPGA配置程序是ByteblasterII的6倍。在一些速度要求高的應(yīng)用場(chǎng)合下仍可使用SignalTapII嵌入式邏輯分析儀進(jìn)行實(shí)時(shí)分析。調(diào)試NiosII處理器時(shí)同樣可以處理一些實(shí)時(shí)應(yīng)用。當(dāng)使用ByteblasterII電纜調(diào)試SignalTapII嵌入式邏輯分析儀和NiosII嵌入式軟核處理器時(shí),如果數(shù)據(jù)交換的速率太快,都不可避免地出現(xiàn)死機(jī)。此時(shí)使用USB-Blaster則可有效地避免死機(jī)現(xiàn)象發(fā)生。

只有要USB口的計(jì)算機(jī)都能使用USB-Blaster。不象ByteblasterII那樣要求計(jì)算機(jī)帶有并口。目前許多筆記本電腦,甚至臺(tái)式機(jī)都不再配備并口,此時(shí)ByteblasterII將無(wú)法使用。本文設(shè)計(jì)、制作的是一種在QuartusIIprogramer環(huán)境下使用的低成本的USB數(shù)據(jù)下載電纜——USBblaster。根據(jù)IEEE1149.1標(biāo)準(zhǔn)、USB協(xié)議以及JTAG邊界掃描原理,通過(guò)解析QuartusII內(nèi)部通信機(jī)制,使用USB芯片和CPLD結(jié)合,提出一種USB接口電路設(shè)計(jì)與實(shí)現(xiàn)方法。與傳統(tǒng)的并口、串口下載電纜相比,其在下載速度和靈活性上都有很大CPLD的USB下載電纜優(yōu)勢(shì)。目前已開(kāi)發(fā)的USB下載線一般需要在主機(jī)端另行設(shè)計(jì)軟件CPLD的USB下載電纜來(lái)控制與下載線及目標(biāo)器件之間的通信和數(shù)據(jù)傳送;但是這樣不僅繁瑣,而且可能由于PC機(jī)操作系統(tǒng)的不同而影響兼容性。本文討論的USB下載線能在Altera公司的QuartusII開(kāi)發(fā)環(huán)境下直接使用,無(wú)須在主機(jī)端另行設(shè)計(jì)通信軟件。與傳統(tǒng)的基于PC并口的下載電纜相比,本設(shè)計(jì)的USB下載接口電路具有CPLD的USB下載電纜支持熱插拔、體積小、便于攜帶、降低對(duì)PC硬件傷害、編程速度快等明顯優(yōu)點(diǎn)。1.2下載電纜發(fā)展現(xiàn)狀自從Byteblaster被發(fā)明以來(lái),由于它是將PC機(jī)中的配置信息傳到PCB板FLEX器件中必不可少的器件,所以它被廣泛的使用。Byteblaster支持兩種配置模式:被動(dòng)串行模式(PS)和邊界掃描模式(JTAG)。但由于現(xiàn)在計(jì)算機(jī)中USB口的應(yīng)用越來(lái)越廣泛,Byteblaster做為并口的下載線,它的使用范圍漸漸變小,而且它的下載速度也比不上USB-Blaster。所以USB-Blaster的使用顯的更加符合EDA開(kāi)發(fā)工作者的需要。但由于Byteblaster的制作成本要比USB-Blaster低很多,只有幾十元,所以它的使用并不會(huì)減少的太快。目前制作下載電纜的公司主要是Altera公司,國(guó)內(nèi)只是根據(jù)Altera公司公布的一些資料進(jìn)行仿制。由此可見(jiàn)國(guó)內(nèi)的CPLD與FPGA技術(shù)與國(guó)外先進(jìn)技術(shù)相比仍有一定的差距。下面主要介紹一下Altera公司和它所生產(chǎn)的下載線。Altera公司是專業(yè)設(shè)計(jì)、生產(chǎn)、銷售高性能、高密度可編程邏輯器件(PLD)及相應(yīng)開(kāi)發(fā)工具的一家公司。從公司成立至今,Altera公司一直在同行業(yè)中保持著領(lǐng)先地位。Altera一直在可編程系統(tǒng)級(jí)芯片(SOPC)領(lǐng)域中處于前沿和領(lǐng)先的地位,結(jié)合帶有軟件工具的可編程邏輯技術(shù)、知識(shí)產(chǎn)權(quán)(IP)和技術(shù)服務(wù)。新產(chǎn)品系列將可編程邏輯的內(nèi)在優(yōu)勢(shì)——靈活性、產(chǎn)品及時(shí)面市——和更高級(jí)性能以及集成化結(jié)合在一起,專為滿足當(dāng)今大范圍的系統(tǒng)需求而開(kāi)發(fā)設(shè)計(jì)自二十年前發(fā)明世界上第一個(gè)可編程邏輯器件開(kāi)始,Altera公司(NASDAQ:ALTR)秉承了創(chuàng)新的傳統(tǒng),是世界上“可編程芯片系統(tǒng)”(SOPC)解決方案倡導(dǎo)者。Altera結(jié)合帶有軟件工具的可編程邏輯技術(shù)、知識(shí)產(chǎn)權(quán)(IP)和技術(shù)服務(wù),在世界范圍內(nèi)為14,000多個(gè)客戶提供高質(zhì)量的可編程解決方案。新產(chǎn)品系列將可編程邏輯的內(nèi)在優(yōu)勢(shì)——靈活性、產(chǎn)品及時(shí)面市——和更高級(jí)性能以及集成化結(jié)合在一起,專為滿足當(dāng)今大范圍的系統(tǒng)需求而開(kāi)發(fā)設(shè)計(jì)。目前在ALTERA的官方網(wǎng)站上只有ByteblasterII、USBBlaster和MasterBlaster三種。三種下載電纜中,MasterBlaster的局限性最大,它既不支持主動(dòng)串行器件,也不支持NiosII的調(diào)試。ByteblasterII可以支持ALTERA目前所有類型的器件,包括FPGA和配置器件,也支持SignalTapII嵌入式邏輯分析儀,但ALTERA聲明其不能用來(lái)調(diào)試NiosII嵌入式軟核處理器。ALTER下載電纜可以用于Stratix,Cyclone,APEXII,Mercury,Excalibur,APEX20K,ACEX1K,FLEX10K,FLEX8000和FLEX6000器件的在電路重配置,也可以用于MAXII,MAX3000A,MAX7000和MAX9000器件的在系統(tǒng)編程。這些電纜通過(guò)QuartusII軟件下載數(shù)據(jù)。ByteBlasterII并口下載電纜和MasterBlaster通信電纜還能通過(guò)MAX+PLUSII軟件下載數(shù)據(jù)。第二章系統(tǒng)總體設(shè)計(jì)2.1硬件總體設(shè)計(jì)本文研究基于IEEE1149.1標(biāo)準(zhǔn)的USB下載接口電路的設(shè)計(jì)及實(shí)現(xiàn)。針對(duì)Altera公司的FPGA器件Cyclone,通過(guò)分析它的邊界掃描測(cè)試結(jié)構(gòu)和各種JTAG指令,研究它的編程過(guò)程和編程特點(diǎn),并提出設(shè)計(jì)方案。在接口電路硬件設(shè)計(jì)中,選用FTDI公司的USB控制芯片F(xiàn)T245BM,實(shí)現(xiàn)USB物理層和鏈路層協(xié)議的解析;Altera公司的可編程邏輯器件EPM3064實(shí)現(xiàn)接口邏輯。硬件電路的整體結(jié)構(gòu)框圖如圖2—1

所示。由于USB下載電路涉及了IEEE1149.1標(biāo)準(zhǔn)和USB協(xié)議,所以接口電路主要包含兩大部分。一部分是USB接口,它連接主機(jī)和可編程邏輯器件,主要功能是進(jìn)行USB和并行I/O口之間的數(shù)據(jù)格式轉(zhuǎn)換,用USB控制芯片實(shí)現(xiàn)。另一部分是JTAG接口,它連接USB控制芯片和需要編程的邏輯器件,主要功能是進(jìn)行并行I/O口和JTAG之間數(shù)據(jù)的轉(zhuǎn)換,轉(zhuǎn)換邏輯通過(guò)對(duì)可編程邏輯器件進(jìn)行設(shè)計(jì)來(lái)實(shí)現(xiàn)。其他還包括一些必要的時(shí)鐘電路和電壓轉(zhuǎn)換電路。主機(jī)USB控制芯片可編程邏輯器件需要編程的可編程邏輯器件并行數(shù)據(jù)TCKTMSTDI主機(jī)USB控制芯片可編程邏輯器件需要編程的可編程邏輯器件并行數(shù)據(jù)TCKTMSTDITDOUSB接口控制信號(hào)從主機(jī)傳來(lái)的USB數(shù)據(jù),由USB控制芯片轉(zhuǎn)換為8位并行數(shù)據(jù),經(jīng)數(shù)據(jù)總線送到CPLD的可編程I/O引腳。CPLD的數(shù)據(jù)也可以通過(guò)數(shù)據(jù)總線送回USB控制芯片,然后轉(zhuǎn)換為USB的數(shù)據(jù)格式傳回主機(jī)。CPLD收到USB控制芯片傳送來(lái)的數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行解析,然后轉(zhuǎn)換為符合IEEE1149.1標(biāo)準(zhǔn)的編程數(shù)據(jù)和指令,從TCK、TMS和TDI串行輸出到要編程的可編程邏輯器件。從可編程邏輯器件返回的符合IEEE1149.1標(biāo)準(zhǔn)的校驗(yàn)數(shù)據(jù)從TDO串行輸入到CPLD,轉(zhuǎn)換為8位并行數(shù)據(jù)傳送給USB控制芯片,最后返回主機(jī)進(jìn)行校驗(yàn)。2.2軟件總體設(shè)計(jì)CPLD設(shè)計(jì)過(guò)程,即芯片的設(shè)計(jì)流程。CPLD的工作大部分是在電腦上完成的。打開(kāi)集成開(kāi)發(fā)軟件(Altera公司Max+pluxII)→畫(huà)原理圖、寫硬件描述語(yǔ)言(VHDL,Verilog)→編譯→給出邏輯電路的輸入激勵(lì)信號(hào),進(jìn)行仿真,查看邏輯輸出結(jié)果是否正確→進(jìn)行管腳輸入、輸出鎖定(輸入、輸出管腳可根據(jù)需要設(shè)定)→生成代碼→通過(guò)下載電纜將代碼傳送并存儲(chǔ)在CPLD芯片中。軟件主要完成的功能是時(shí)序轉(zhuǎn)化。在USB芯片將8位并行數(shù)據(jù)發(fā)送給可編程邏輯器件CPLD時(shí),軟件將USB時(shí)序轉(zhuǎn)化為JTAG時(shí)序,應(yīng)用邊界掃描技術(shù)原理,使下載速度得到很大提升。在可編程邏輯器件CPLD發(fā)送數(shù)據(jù)時(shí),軟件將符合IEEE1149.1標(biāo)準(zhǔn)的數(shù)據(jù)發(fā)送給主機(jī),完成數(shù)據(jù)的傳輸。CPLD應(yīng)用狀態(tài)機(jī)的原理,將CPLD與USB控制芯片之間的數(shù)據(jù)傳輸,分為接受狀態(tài)機(jī)和發(fā)送狀態(tài)機(jī)兩個(gè)狀態(tài)。接收狀態(tài)機(jī)主要功能是查詢USB_RXF引腳的狀態(tài),當(dāng)檢測(cè)到USB_RXF變低,即可獲知上位機(jī)已經(jīng)將數(shù)據(jù)寫入到FT245BM的緩沖區(qū),然后產(chǎn)生讀控制時(shí)序,將FT245BM接收緩沖區(qū)中的數(shù)據(jù)讀入到CPLD的緩沖區(qū)。發(fā)送狀態(tài)機(jī)完成的主要功能是將外設(shè)產(chǎn)生的數(shù)據(jù)通過(guò)FT245BM和USB總線傳送到PC機(jī)。外設(shè)將數(shù)據(jù)準(zhǔn)備好后,將發(fā)送允許信號(hào)置為有效,當(dāng)狀態(tài)機(jī)檢測(cè)到發(fā)送允許信號(hào)=1時(shí),即啟動(dòng)發(fā)送操作。首先狀態(tài)機(jī)從外設(shè)的緩沖區(qū)按字節(jié)將待發(fā)送的數(shù)據(jù)讀到CPLD的緩沖區(qū),并產(chǎn)生寫FT245BM發(fā)送緩沖區(qū)的時(shí)序,將數(shù)據(jù)寫到FT245BM發(fā)送緩沖區(qū)。硬件電路設(shè)計(jì)3.1電路器件介紹3.1.1USB器件FT245BMFT245BM由FTDI(FutureTechnologyDevicesInt.Ltd.)公司推出,該芯片的主要功能是進(jìn)行USB和并行I/O口之間的協(xié)議轉(zhuǎn)換。芯片一方面可從主機(jī)通過(guò)USB串行總線接收數(shù)據(jù),并將其轉(zhuǎn)換為并行I/O口的數(shù)據(jù)流格式發(fā)送給外設(shè);另一方面外設(shè)可通過(guò)并行I/O口將數(shù)據(jù)轉(zhuǎn)換為USB串行數(shù)據(jù)格式傳回主機(jī)。中間的轉(zhuǎn)換工作全部由芯片自動(dòng)完成,開(kāi)發(fā)者無(wú)須考慮固件的設(shè)計(jì)。該芯片提供了通用的并行I/O口方便與微控制器、FPGA或其他外設(shè)接口。在PC機(jī)端安裝了FTDI公司提供的驅(qū)動(dòng)程序,只需熟悉簡(jiǎn)單的VB、VC編程,就可很容易地進(jìn)行上位機(jī)軟件開(kāi)發(fā)。FT245BM內(nèi)含兩個(gè)FIFO數(shù)據(jù)緩沖區(qū),一個(gè)是128字節(jié)的接收緩沖區(qū),另一個(gè)是384字節(jié)的發(fā)送緩沖區(qū)。它們用作USB數(shù)據(jù)與并行I/O口數(shù)據(jù)的交換緩沖區(qū)。FIFO實(shí)現(xiàn)與外界(微控制器、FPGA或其它器件)的接口,主要通過(guò)8根數(shù)據(jù)線D0~D7、讀寫控制線RD#和WR#以及FIFO發(fā)送緩沖區(qū)空標(biāo)志TXE#和FIFO接收緩沖區(qū)非空標(biāo)志RXF#來(lái)完成數(shù)據(jù)交互。TXE#為低表示當(dāng)前FIFO發(fā)送緩沖區(qū)為空,為高表示當(dāng)前FIFO發(fā)送緩沖區(qū)滿或者正在存儲(chǔ)前一個(gè)字節(jié),禁止向緩沖區(qū)中寫數(shù)據(jù)。RXF#為低表示當(dāng)前FIFO的接收緩沖區(qū)非空。RD#信號(hào)由低變高將從FIFO緩沖區(qū)中讀取數(shù)據(jù)。當(dāng)RD#變低時(shí)將數(shù)據(jù)送到數(shù)據(jù)總線。RXF#為高不能從FIFO讀數(shù)據(jù)。該芯片是FTDI生產(chǎn)的,32PIN的LQFP封裝:圖3—1FT245BM該芯片有如下特點(diǎn):?jiǎn)涡酒瑢?shí)現(xiàn)USB和并行FIFO緩沖區(qū)的雙向數(shù)據(jù)傳輸;FTDI公司提供VCP(虛擬串行口)和D2XX兩種驅(qū)動(dòng)程式,使用D2XX驅(qū)動(dòng)程式能獲得更好的數(shù)據(jù)傳輸性能,傳輸速率最大可達(dá)1MB/s;通過(guò)簡(jiǎn)單的四線握手信號(hào)和MCU、CPLD、FPGA等邏輯器件接口;完整的片內(nèi)USB協(xié)議解決方案,無(wú)需底層固件的編程;完全兼容USB1.1,USB2.0協(xié)議;附加的EEPROM接口可定制USB接口設(shè)備。FT245各管腳說(shuō)明如下:EEDATA(2腳):串行存儲(chǔ)器數(shù)據(jù);USBDM(8腳):USB差分?jǐn)?shù)據(jù)負(fù)端;TEST(5腳):廠商測(cè)試管腳;3V3OUT(6腳):3.3V電源輸出;D[7:0](25~18腳):外設(shè)接口數(shù)據(jù)總線;XTIN(27腳):晶體振蕩器輸入;RD(16腳):外設(shè)讀數(shù)據(jù)信號(hào)輸入;XTOUT(28腳):晶體振蕩器輸出;WR(15腳):外設(shè)寫數(shù)據(jù)信號(hào)輸入;TXE(14腳):發(fā)送FIFO空標(biāo)志輸出;RESET(4腳):芯片復(fù)位輸入;RXF(12腳):接收FIFO非空標(biāo)志輸出;EECS(32腳):串行存儲(chǔ)器片選;EEREQ(11腳):串行存儲(chǔ)器讀取請(qǐng)求;EESK(1腳):串行存儲(chǔ)器時(shí)鐘;VCC,AVCC(3、13、26、30腳):分別為芯片電源和電路模擬電源;GND,AGND(9、19、29腳):芯片地和模擬地。USBDP(7腳):USB差分?jǐn)?shù)據(jù)正端;3.1.2CPLD器件EPM3064EPM3064是Altera的MAX3000A系列低成本CPLD器件。Altera的3.3-VMAX?3000A器件基于Altera?MAX架構(gòu),為大批量應(yīng)用進(jìn)行了成本優(yōu)化。采用先進(jìn)的0.30μmCMOS處理,基于電可擦除可編程只讀存儲(chǔ)器(EEPROM),MAX3000A系列是一種即用性的器件,密度范圍從32到512個(gè)宏單元。MAX3000A器件可支持在系統(tǒng)可編程能力(ISP),能夠輕松地實(shí)現(xiàn)現(xiàn)場(chǎng)重配置。每個(gè)MAX3000A宏單元都可以獨(dú)立地配置成順序或組合邏輯操作。器件選項(xiàng):Altera的MAX3000A可編程邏輯器件(PLD)是滿足大批量,成本敏感性應(yīng)用的非易失性和即用性CPLD理想的解決方案。MAX3000ACPLD提供從32到512個(gè)宏單元,3.3V邏輯內(nèi)核電壓,并支持通用特性和封裝。MAX3000A器件支持商業(yè)和工業(yè)級(jí)溫度范圍,并提供常用的封裝,例如除了傳統(tǒng)的塑封J引線芯片封裝(PLCC)和塑封四角扁平封裝(PQFP)之外,還有薄四角扁平封裝(TQFP)和1.0毫米間距球柵陣列封裝(BGA)。MAX3000A器件給予了設(shè)計(jì)人員采用不同單板布局進(jìn)行設(shè)計(jì)所需的靈活性。I/O電壓:Altera的MultiVolt多電壓接口允許設(shè)計(jì)人員在MAX3000A設(shè)計(jì)中無(wú)縫集成2.5、3.3和5.0VV邏輯電平。從工業(yè)應(yīng)用傳統(tǒng)所要求的5.0VI/O信號(hào)到消費(fèi)電子應(yīng)用要求的低電壓標(biāo)準(zhǔn)如2.5V,MAX3000A器件都提供強(qiáng)大的I/O電壓選項(xiàng)。表1列出了MAX3000A器件的輸入和輸出電壓支持。出眾的硅片特性:MAX7000器件是具有即用性,非易失性,提供全局時(shí)鐘,在系統(tǒng)可編程,IEEE-1532標(biāo)準(zhǔn)支持,和開(kāi)路輸出特性的器件。和許多其他硅片特性一起,MAX3000A器件適用于大量系統(tǒng)級(jí)的應(yīng)用。易用的設(shè)計(jì)軟件:MAX器件為易用的Quartus

II網(wǎng)絡(luò)版和MAX+PLUS

II基礎(chǔ)版設(shè)計(jì)軟件所支持。這兩個(gè)平臺(tái)提供綜合,布局布線,設(shè)計(jì)驗(yàn)證和器件編程功能,能夠從Altera網(wǎng)站的設(shè)計(jì)軟件部分免費(fèi)下載。這兩個(gè)免費(fèi)贈(zèng)送的可用于MAX器件設(shè)計(jì)的開(kāi)發(fā)工具幫助使最終用戶系統(tǒng)的總體開(kāi)發(fā)成本最小化多種應(yīng)用:MAX3000ACPLD常用于通信、計(jì)算機(jī)、消費(fèi)電子、汽車、工業(yè)和許多其他終端系統(tǒng)中。依靠其低成本和靈活性的特點(diǎn),MAX3000A器件通過(guò)替代其他更昂貴的標(biāo)準(zhǔn)硅片器件,降低了系統(tǒng)成本。采用CPLD,系統(tǒng)升級(jí)更為簡(jiǎn)單,并依靠MAX3000ACPLD的再編程能力延長(zhǎng)了終端產(chǎn)品的生命周期。EPM3064有1250個(gè)可用門數(shù)目,64個(gè)宏單元,4個(gè)邏輯陣列塊數(shù)目。圖3—2EPM30643.2系統(tǒng)硬件設(shè)計(jì)3.2.1USB接口電路USB控制芯片F(xiàn)T245BM負(fù)責(zé)解釋USB協(xié)議,完成雙方數(shù)據(jù)通信。其內(nèi)部有USB協(xié)議引擎,并且集成的電平轉(zhuǎn)換器使FIFO和控制信號(hào)能與電壓為5V、3.3V的邏輯器件接口。FT245BM通過(guò)8位并行數(shù)據(jù)口D[0..7]和4位讀寫狀態(tài)/控制口RXF#、TXE#、RD#、WR實(shí)現(xiàn)和微控制器交換數(shù)據(jù),而PC機(jī)和FT245BM問(wèn)通過(guò)UISB總線傳輸數(shù)據(jù)??蛇x的外部EEPROM用于存儲(chǔ)USB設(shè)備的特定信息,可以通過(guò)EECS、EESK、EEDATA來(lái)完成數(shù)據(jù)寫入和讀出。FT245BM的PIN1,2,32分別是EEPROM的時(shí)鐘,數(shù)據(jù),片選線,245內(nèi)部沒(méi)有存儲(chǔ)器,要外接一個(gè)EEPROM來(lái)存儲(chǔ)USB端口的描述符等信息。此處用的EEPROM是93C46,USB端口描述符可以通過(guò)FTDI提供的MProg3.0_Setup.exe軟件從USB下載進(jìn)去。此文件主要是用來(lái)描述USB端口的,是.ept格式。Pin4是一個(gè)復(fù)位引腳,低電平芯片復(fù)位,這是供其它設(shè)備對(duì)245復(fù)位用的引腳,如果不用,接到VCC上,此處通過(guò)電阻分壓,把它接一3.3V上。Pin5是復(fù)位輸出,復(fù)位時(shí)輸出0V,否則輸出3.3V。VCC上升到3.5V后,RESETOUT還要過(guò)5ms才輸出高電平。當(dāng)主機(jī)通過(guò)USB向外圍設(shè)備發(fā)送數(shù)據(jù)時(shí),RXF#變低通知外設(shè)讀取數(shù)據(jù),外設(shè)把RD變低,然后變高。RD在低電平期間,D0-D7上的數(shù)據(jù)有效。外設(shè)向主機(jī)發(fā)送數(shù)據(jù)時(shí),主機(jī)準(zhǔn)備好后,TXE變低,外設(shè)在TXE變低期間,把WR變高,然后把數(shù)據(jù)寫到D0-D7上,再把WR變低,則數(shù)據(jù)就傳到主機(jī)了。245內(nèi)有384個(gè)字節(jié)的發(fā)送緩存,128個(gè)字節(jié)的接收緩存。USB接口電路原理如圖所示:圖3-3USB接口電路原理EPM3064與FT245BM的接口實(shí)現(xiàn)EPM3064與FT245BM的接口電路主要完成從FT245BM的接收FIFO中讀數(shù)據(jù)和向FT245BM的發(fā)送FIFO中寫數(shù)據(jù)。采用純硬件實(shí)現(xiàn)方式可使FT245BM的接口延時(shí)達(dá)到最小。EPM3064可與FT245BM共享工作時(shí)鐘,它使用12條I/O與FT245BM相連,分別對(duì)應(yīng)于FT245AM的D0~D7、TXE、RXF、RD、WR等。圖3-4CPLD接口電路3.2.3電壓緩沖部分因?yàn)楝F(xiàn)在的CPLD和FPGA從1.8V-5V都有,所以要加上一個(gè)電路緩沖部分以滿足電壓的需要。電路可用max3378做緩沖,優(yōu)點(diǎn)是可以支持全系列的altera芯片,支持低電壓的fpga和cpld。也可以用244做緩沖。CPLD出來(lái)的數(shù)據(jù)通過(guò)74HC244緩沖后下載到目標(biāo)板上。之所以要244作為緩沖,是為了適應(yīng)不同的接口電壓。244的電源是目標(biāo)板供給的,所以目標(biāo)板的電源是多少,244輸出口的電壓就是多少。圖3-574H2443.3PCB版圖設(shè)計(jì)3.3.1容性負(fù)載為保證達(dá)到最好的電路性能,應(yīng)當(dāng)把器件輸出端的負(fù)載電容減至最小。由于PCB板上的走線,器件輸入引腳和器件封裝等都對(duì)總的負(fù)載電容的大小有影響,所以要遵守如下規(guī)則:電路板的布局和布線應(yīng)當(dāng)盡量保證各信號(hào)通路彼此垂直,以使電容耦合效應(yīng)減至最少,同時(shí),信號(hào)走線應(yīng)盡可能更短一些。如果電路中需要一個(gè)源驅(qū)動(dòng)多個(gè)負(fù)載,應(yīng)使用大電流緩沖器,以保證信號(hào)到所有的負(fù)載的時(shí)間是相等的。當(dāng)以上的布局和布線原則不能實(shí)現(xiàn)時(shí),為防止出現(xiàn)傳輸線問(wèn)題,可以采用一個(gè)小的串聯(lián)電阻(10歐~20歐)來(lái)減少信號(hào)前,后沿的上沖或下沖幅度,這些電阻可以衰減因電路板走線過(guò)長(zhǎng)產(chǎn)生的振鈴干擾,防止誤觸發(fā)。3.3.2電源系統(tǒng)設(shè)計(jì)者對(duì)每塊PCB板都采用分開(kāi)的VCC和GND平面,從而保證幾乎無(wú)限的電流吸收能力,起到防止噪聲和在PCB板上為邏輯信號(hào)提供屏蔽的作用。在PCB板上的每一個(gè)VCC和GND引腳都應(yīng)當(dāng)直接連接到VCC和GND平面上。在理想的情況下,每一對(duì)VCC和GND引腳都應(yīng)當(dāng)接上一個(gè)電源去耦電容,而且套盡可能靠近ALTERA器件,對(duì)于具有很多VCC和GND引腳的器件沒(méi)有必要都去接去耦電容。設(shè)計(jì)電路時(shí),給各塊電路板和各器件提供干凈均勻的電源并使之盡可能靠近VCC,就會(huì)大幅度降低系統(tǒng)噪聲。3.3.3帶電插拔當(dāng)子系統(tǒng)插到正在運(yùn)行的硬件上時(shí),由于電源尚未來(lái)得及提供電流給子系統(tǒng)板上的VCC和GND走線網(wǎng),邏輯電平就已經(jīng)出現(xiàn)在子系統(tǒng)的邏輯器件上了,這種情況很可能引起閉鎖現(xiàn)象。在設(shè)計(jì)PCB時(shí)有意識(shí)地增加VCC和GND的連線長(zhǎng)度,就有可能減少帶電插拔過(guò)程中出現(xiàn)閉鎖的機(jī)會(huì)。3.3.4PCB圖電路PCB板如下:圖3-6PCB圖第四章系統(tǒng)軟件設(shè)計(jì)4.1系統(tǒng)平臺(tái)建立4.1.1VHDL語(yǔ)言VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,誕生于1982年。1987年底,VHDL被IEEE和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡(jiǎn)稱87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。此后VHDL在電子設(shè)計(jì)領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語(yǔ)言。1993年,IEEE對(duì)VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本,(簡(jiǎn)稱93版)?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語(yǔ)言。有專家認(rèn)為,在新的世紀(jì)中,VHDL于Verilog語(yǔ)言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。

VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可是部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。

與其他硬件描述語(yǔ)言相比,VHDL具有以下特點(diǎn):

功能強(qiáng)大、設(shè)計(jì)靈活。VHDL具有功能強(qiáng)大的語(yǔ)言結(jié)構(gòu),可以用簡(jiǎn)潔明確的源代碼來(lái)描述復(fù)雜的邏輯控制。它具有多層次的設(shè)計(jì)描述功能,層層細(xì)化,最后可直接生成電路級(jí)描述。VHDL支持同步電路、異步電路和隨機(jī)電路的設(shè)計(jì),這是其他硬件描述語(yǔ)言雖不能比擬的。VHDL還支持各種設(shè)計(jì)方法,既支持自底向上的設(shè)計(jì),又支持自頂向下的設(shè)計(jì);既支持模塊化設(shè)計(jì),又支持層次化設(shè)計(jì)。

支持廣泛、易于修改。由于VHDL已經(jīng)成為IEEE標(biāo)準(zhǔn)所規(guī)范的硬件描述語(yǔ)言,目前大多數(shù)EDA工具幾乎都支持VHDL,這為VHDL的進(jìn)一步推廣和廣泛應(yīng)用奠定了基礎(chǔ)。在硬件電路設(shè)計(jì)過(guò)程中,主要的設(shè)計(jì)文件是用VHDL編寫的源代碼,因?yàn)閂HDL易讀和結(jié)構(gòu)化,所以易于修改設(shè)計(jì)。

強(qiáng)大的系統(tǒng)硬件描述能力。VHDL具有多層次的設(shè)計(jì)描述功能,既可以描述系統(tǒng)級(jí)電路,又可以描述門級(jí)電路。而描述既可以采用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可以采用三者混合的混合級(jí)描述。另外,VHDL支持慣性延遲和傳輸延遲,還可以準(zhǔn)確地建立硬件電路模型。VHDL支持預(yù)定義的和自定義的數(shù)據(jù)類型,給硬件描述帶來(lái)較大的自由度,使設(shè)計(jì)人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型。

獨(dú)立于器件的設(shè)計(jì)、與工藝無(wú)關(guān)。設(shè)計(jì)人員用VHDL進(jìn)行設(shè)計(jì)時(shí),不需要首先考慮選擇完成設(shè)計(jì)的器件,就可以集中精力進(jìn)行設(shè)計(jì)的優(yōu)化。當(dāng)設(shè)計(jì)描述完成后,可以用多種不同的器件結(jié)構(gòu)來(lái)實(shí)現(xiàn)其功能。

很強(qiáng)的移植能力。VHDL是一種標(biāo)準(zhǔn)化的硬件描述語(yǔ)言,同一個(gè)設(shè)計(jì)描述可以被不同的工具所支持,使得設(shè)計(jì)描述的移植成為可能。

易于共享和復(fù)用。VHDL采用基于庫(kù)(Library)的設(shè)計(jì)方法,可以建立各種可再次利用的模塊。這些模塊可以預(yù)先設(shè)計(jì)或使用以前設(shè)計(jì)中的存檔模塊,將這些模塊存放到庫(kù)中,就可以在以后的設(shè)計(jì)中進(jìn)行復(fù)用,可以使設(shè)計(jì)成果在設(shè)計(jì)人員之間進(jìn)行交流和共享,減少硬件電路設(shè)計(jì)。4.1.2CPLD簡(jiǎn)介CPLD(ComplexProgrammableLogicDevice)是ComplexPLD的簡(jiǎn)稱,一種較PLD為復(fù)雜的邏輯元件。CPLD是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。其基本設(shè)計(jì)方法是借助集成開(kāi)發(fā)軟件平臺(tái),用原理圖、硬件描述語(yǔ)言等方法,生成相應(yīng)的目標(biāo)文件,通過(guò)下載電纜(“在系統(tǒng)”編程)將代碼傳送到目標(biāo)芯片中,實(shí)現(xiàn)設(shè)計(jì)的數(shù)字系統(tǒng)。發(fā)展歷史及應(yīng)用領(lǐng)域:

20世紀(jì)70年代,最早的可編程邏輯器件--PLD誕生了。其輸出結(jié)構(gòu)是可編程的邏輯宏單元,因?yàn)樗挠布Y(jié)構(gòu)設(shè)計(jì)可由軟件完成(相當(dāng)于房子蓋好后人工設(shè)計(jì)局部室內(nèi)結(jié)構(gòu)),因而它的設(shè)計(jì)比純硬件的數(shù)字電路具有很強(qiáng)的靈活性,但其過(guò)于簡(jiǎn)單的結(jié)構(gòu)也使它們只能實(shí)現(xiàn)規(guī)模較小的電路。為彌補(bǔ)PLD只能設(shè)計(jì)小規(guī)模電路這一缺陷,20世紀(jì)80年代中期,推出了復(fù)雜可編程邏輯器件--CPLD。目前應(yīng)用已深入網(wǎng)絡(luò)、儀器儀表、汽車電子、數(shù)控機(jī)床、航天測(cè)控設(shè)備等方面。器件特點(diǎn):它具有編程靈活、集成度高、設(shè)計(jì)開(kāi)發(fā)周期短、適用范圍寬、開(kāi)發(fā)工具先進(jìn)、設(shè)計(jì)制造成本低、對(duì)設(shè)計(jì)者的硬件經(jīng)驗(yàn)要求低、標(biāo)準(zhǔn)產(chǎn)品無(wú)需測(cè)試、保密性強(qiáng)、價(jià)格大眾化等特點(diǎn),可實(shí)現(xiàn)較大規(guī)模的電路設(shè)計(jì),因此被廣泛應(yīng)用于產(chǎn)品的原型設(shè)計(jì)和產(chǎn)品生產(chǎn)(一般在10,000件以下)之中。幾乎所有應(yīng)用中小規(guī)模通用數(shù)字集成電路的場(chǎng)合均可應(yīng)用CPLD器件。CPLD器件已成為電子產(chǎn)品不可缺少的組成部分,它的設(shè)計(jì)和應(yīng)用成為電子工程師必備的一種技能。

如何使用:CPLD是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。其基本設(shè)計(jì)方法是借助集成開(kāi)發(fā)軟件平臺(tái),用原理圖、硬件描述語(yǔ)言等方法,生成相應(yīng)的目標(biāo)文件,通過(guò)下載電纜(“在系統(tǒng)”編程)將代碼傳送到目標(biāo)芯片中,實(shí)現(xiàn)設(shè)計(jì)的數(shù)字系統(tǒng)。4.1.3JTAG協(xié)議JTAG(JointTextActionGroup:聯(lián)合測(cè)試行動(dòng)小組)是1985年制定的檢測(cè)PCB和IC芯片的一個(gè)標(biāo)準(zhǔn),1990年被修改后成為IEEE的一個(gè)標(biāo)準(zhǔn),即IEEE1149.1-1990。通過(guò)這個(gè)標(biāo)準(zhǔn),可對(duì)具有JTAG接口的芯片的硬件電路進(jìn)行邊界掃描和故障檢測(cè)。

JTAG最初是用來(lái)對(duì)芯片進(jìn)行測(cè)試的,基本原理是在器件內(nèi)部定義一個(gè)TAP(TestAccessPort�測(cè)試訪問(wèn)口)通過(guò)專用的JTAG測(cè)試工具對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試。JTAG測(cè)試允許多個(gè)器件通過(guò)JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,能實(shí)現(xiàn)對(duì)各個(gè)器件分別測(cè)試?,F(xiàn)在,JTAG接口還常用于實(shí)現(xiàn)ISP(In-Systemrogrammable�在線編程),對(duì)FLASH等器件進(jìn)行編程。

JTAG編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中先對(duì)芯片進(jìn)行預(yù)編程現(xiàn)再裝到板上因此而改變,簡(jiǎn)化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進(jìn)度。JTAG接口可對(duì)PSD芯片內(nèi)部的所有部件進(jìn)行編程JTAG調(diào)試用到了TCK、TMS、TDI、TDO和TRST

這幾個(gè)腳。其中TRST是用來(lái)對(duì)TAPcontroller進(jìn)行復(fù)位的,它不是必須的。通過(guò)在TMS腳也可以使TAPcontroller復(fù)位。

TESTClockInput(TCK)

TCK為TAP的操作提供了一個(gè)獨(dú)立的、基本的時(shí)鐘信號(hào),TAP的所有操作都是通過(guò)這個(gè)時(shí)鐘信號(hào)來(lái)驅(qū)動(dòng)的。TCK在IEEE1149.1標(biāo)準(zhǔn)里是強(qiáng)制要求的。

TESTModeSelectionInput(TMS)

TMS信號(hào)用來(lái)控制TAP狀態(tài)機(jī)的轉(zhuǎn)換。通過(guò)TMS信號(hào),可以控制TAP在不同的狀態(tài)間相互轉(zhuǎn)換。TMS信號(hào)在TCK的上升沿有效。TMS在IEEE1149.1標(biāo)準(zhǔn)里是強(qiáng)制要求的。

TESTDataInput(TDI)

TDI是數(shù)據(jù)輸入的接口。所有要輸入到特定寄存器的數(shù)據(jù)都是通過(guò)TDI接口一位一位串行輸入的(由TCK驅(qū)動(dòng))。TDI在IEEE1149.1標(biāo)準(zhǔn)里是強(qiáng)制要求的。

TESTDataOUTPUT(TDO)

TDO是數(shù)據(jù)輸出的接口。所有要從特定的寄存器中輸出的數(shù)據(jù)都是通過(guò)TDO接口一位一位串行輸出的(由TCK驅(qū)動(dòng))。TDO在IEEE1149.1標(biāo)準(zhǔn)里是強(qiáng)制要求的。

TESTResetInput(TRST)

TRST可以用來(lái)對(duì)TAPController進(jìn)行復(fù)位(初始化)。不過(guò)這個(gè)信號(hào)接口在IEEE1149.1標(biāo)準(zhǔn)里是可選的,并不是強(qiáng)制要求的。因?yàn)橥ㄟ^(guò)TMS也可以對(duì)TAPController進(jìn)行復(fù)位(初始化)。4.1.4設(shè)計(jì)軟件Quartus

IIQuartus

II是Altera公司推出的CPLD/F[GA開(kāi)發(fā)工具QuartusII設(shè)計(jì)軟件改進(jìn)了性能、提升了功能性、解決了潛在的設(shè)計(jì)延遲等,在工業(yè)領(lǐng)域率先提供FPGA與mask-programmeddevices開(kāi)發(fā)的統(tǒng)一工作流程。

AlteraQuartusII作為一種可編程邏輯的設(shè)計(jì)環(huán)境,由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來(lái)越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。

AlteraQuartusII(3.0和更高版本)設(shè)計(jì)軟件是業(yè)界唯一提供FPGA和固定功能HardCopy器件統(tǒng)一設(shè)計(jì)流程的設(shè)計(jì)工具。工程師使用同樣的低價(jià)位工具對(duì)StratixFPGA進(jìn)行功能驗(yàn)證和原型設(shè)計(jì),又可以設(shè)計(jì)HardCopyStratix器件用于批量成品。系統(tǒng)設(shè)計(jì)者現(xiàn)在能夠用QuartusII軟件評(píng)估HardCopyStratix器件的性能和功耗,相應(yīng)地進(jìn)行最大吞吐量設(shè)計(jì)。

Altera的QuartusII可編程邏輯軟件屬于第四代PLD開(kāi)發(fā)平臺(tái)。該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括支持基于Internet的協(xié)作設(shè)計(jì)。Quartus平臺(tái)與Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開(kāi)發(fā)工具相兼容。改進(jìn)了軟件的LogicLock模塊設(shè)計(jì)功能,增添了FastFit編譯選項(xiàng),推進(jìn)了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。支持MAX7000/MAX3000等乘積項(xiàng)器件。Quartus

II提供了完全集成且與電路結(jié)構(gòu)無(wú)關(guān)的開(kāi)發(fā)包環(huán)境,具有數(shù)字邏輯設(shè)計(jì)的全部特性,包括:

可利用原理圖、結(jié)構(gòu)框圖、VerilogHDL、AHDL和VHDL完成電路描述,并將其保存為設(shè)計(jì)實(shí)體文件;芯片(電路)平面布局連線編輯;

LogicLock增量設(shè)計(jì)方法,用戶可建立并優(yōu)化系統(tǒng),然后添加對(duì)原始系統(tǒng)的性能影響較小或無(wú)影響的后續(xù)模塊;功能強(qiáng)大的邏輯綜合工具;完備的電路功能仿真與時(shí)序邏輯仿真工具;定時(shí)/時(shí)序分析與關(guān)鍵路徑延時(shí)分析;可使用SignalTap

II邏輯分析工具進(jìn)行嵌入式的邏輯分析;支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來(lái)生成編程文件;使用組合編譯方式可一次完成整體設(shè)計(jì)流程;自動(dòng)定位編譯錯(cuò)誤;高效的期間編程與驗(yàn)證工具;可讀入標(biāo)準(zhǔn)的EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog網(wǎng)表文件;能生成第三方EDA軟件使用的VHDL網(wǎng)表文件和Verilog網(wǎng)表文件。Quartus

II設(shè)計(jì)流程:

設(shè)計(jì)輸入:完成期間的硬件描述,包括文本編輯器、塊與符號(hào)編輯器、MegaWizard插件管理器、約束編輯器和布局編輯器等工具;

綜合:包括分析和綜合器以、輔助工具和RTL查看器等工具;

布局連線:將設(shè)計(jì)綜合后的網(wǎng)表文件映射到實(shí)體器件的過(guò)程,包括約束編輯器、布局圖編輯器、芯片編輯器和增量布局連線工具;

仿真:Quartus

II提供了功能仿真和時(shí)序仿真兩種工具;

器件編程與配置:包括四種編程模式,即被動(dòng)串行模式、JTAG模式、主動(dòng)串行模式和插座內(nèi)編程模式。

使用New

Project

Wizard新建一個(gè)工程的過(guò)程:

1.制定工程的文件存放目錄、工程名以及最頂層的設(shè)計(jì)實(shí)體名,在默認(rèn)情況下,工程名與最頂層的設(shè)計(jì)實(shí)體名是相同的。

2.添加文件,包括最頂層的設(shè)計(jì)實(shí)體文件以及一些額外的電路模塊描述文件或定制的功能庫(kù)。

3.選擇目標(biāo)芯片,具體芯片最好讓編譯器根據(jù)工程設(shè)計(jì)的實(shí)際情況自動(dòng)選擇。

4.第三方EDA工具設(shè)定,包括設(shè)計(jì)輸入與綜合工具、仿真工具、時(shí)序分析工具等,默認(rèn)為Quartus

II自帶的仿真器、綜合器以及時(shí)序分析器。

5.最后一步系統(tǒng)將整體工程的各項(xiàng)參數(shù)和設(shè)置總結(jié)并顯示出來(lái),這時(shí)即可完成工程的創(chuàng)建。4.2基于VCP的PC機(jī)端軟件設(shè)計(jì)USB設(shè)備插入PC機(jī)時(shí)操作系統(tǒng)會(huì)請(qǐng)求安裝設(shè)備驅(qū)動(dòng)程式,F(xiàn)TDI公司為基于FT245BM的USB接口設(shè)備提供了VCP、D2XX(動(dòng)態(tài)鏈接庫(kù))兩種驅(qū)動(dòng)程式。選擇不同的驅(qū)動(dòng)程式,PC機(jī)端軟件設(shè)計(jì)方法也不同。選擇安裝VCP驅(qū)動(dòng)程式時(shí),操作系統(tǒng)將基于FT245BM的USB接口設(shè)備虛擬成為串行通信口,對(duì)這一虛擬的串行口的操作就等同于對(duì)該USB接口設(shè)備的操作,因此在應(yīng)用程式中能夠利用串行通信控件來(lái)簡(jiǎn)化PC機(jī)端軟件的設(shè)計(jì)。現(xiàn)在比較成熟的串行通信控件有MSCOMM、SPCOMM、PCCOMM等。利用SPCOMM編寫針對(duì)串行口操作的程式比較容易,他有豐富的和串口通信密切相關(guān)的屬性及事件,提供了對(duì)串口的各種操作。根據(jù)SPCOMM提供的屬性、方法、事件能夠完成對(duì)虛擬成串行口的FT245BM的讀寫,避開(kāi)了對(duì)USB接口本身的操作?;赩CP的軟件設(shè)計(jì)介紹如下。首先配置好需要打開(kāi)的VCP的各個(gè)屬性,調(diào)用StartComm方法打開(kāi)VCP,然后通過(guò)WriteCommData將數(shù)據(jù)寫人到發(fā)送緩沖區(qū),由電腦硬件實(shí)現(xiàn)物理層的數(shù)據(jù)發(fā)送。數(shù)據(jù)到達(dá)PC機(jī)將會(huì)觸發(fā)控件的OnReceiveData事件,在該事件下接收數(shù)據(jù)并轉(zhuǎn)存以供后續(xù)的處理。接收數(shù)據(jù)出錯(cuò)時(shí)將觸發(fā)OnReceiveError事件,在該事件中可進(jìn)行出錯(cuò)處理。數(shù)據(jù)傳輸完畢后調(diào)用StopComm關(guān)閉VCP,結(jié)束一次通信過(guò)程。本文采用VCP方法安裝FT245驅(qū)動(dòng),采用安裝CMD_Setup.exe軟件編程EEPROM的過(guò)程:1、啟動(dòng)MProg3.0A軟件

2、菜單命令:File

->

Open

,打開(kāi)下載線的配置文件altera.ept。

3、將USB下載線插入計(jì)算機(jī)的USB口。

4、菜單命令:Device

->

Scan

,掃描設(shè)備,正常出現(xiàn)

Number

Of

Blank

Devices

=

0

Number

Of

Programmed

Devices

=

1

的提示。如圖4-1圖4-15、菜單命令:Device

->

Program

,開(kāi)始編程EEPROM。成功后出現(xiàn)

Programmed

Serial

Number

:

8aQ5S5YN

的提示。圖4-24.3CPLD收發(fā)狀態(tài)機(jī)設(shè)計(jì)4.3.1狀態(tài)機(jī)狀態(tài)機(jī)的一個(gè)極度確切的描述是它是一個(gè)有向圖形,由一組節(jié)點(diǎn)和一組相應(yīng)的轉(zhuǎn)移函數(shù)組成。狀態(tài)機(jī)通過(guò)響應(yīng)一系列事件而“運(yùn)行”。每個(gè)事件都在屬于“當(dāng)前”節(jié)點(diǎn)的轉(zhuǎn)移函數(shù)的控制范圍內(nèi),其中函數(shù)的范圍是節(jié)點(diǎn)的一個(gè)子集。函數(shù)返回“下一個(gè)”(也許是同一個(gè))節(jié)點(diǎn)。這些節(jié)點(diǎn)中至少有一個(gè)必須是終態(tài)。當(dāng)?shù)竭_(dá)終態(tài),狀態(tài)機(jī)停止。

包含一組狀態(tài)集(states)、一個(gè)起始狀態(tài)(startstate)、一組輸入符號(hào)集(alphabet)、一個(gè)映射輸入符號(hào)和當(dāng)前狀態(tài)到下一狀態(tài)的轉(zhuǎn)換函數(shù)(transitionfunction)的計(jì)算模型。當(dāng)輸入符號(hào)串,模型隨即進(jìn)入起始狀態(tài)。它要改變到新的狀態(tài),依賴于轉(zhuǎn)換函數(shù)。在有限狀態(tài)機(jī)中,會(huì)有有許多變量,例如,狀態(tài)機(jī)有很多與動(dòng)作(actions)轉(zhuǎn)換(Mealy機(jī))或狀態(tài)(摩爾機(jī))關(guān)聯(lián)的動(dòng)作,多重起始狀態(tài),基于沒(méi)有輸入符號(hào)的轉(zhuǎn)換,或者指定符號(hào)和狀態(tài)(非定有限狀態(tài)機(jī))的多個(gè)轉(zhuǎn)換,指派給接收狀態(tài)(識(shí)別者)的一個(gè)或多個(gè)狀態(tài),等等。

傳統(tǒng)應(yīng)用程序的控制流程基本是順序的:遵循事先設(shè)定的邏輯,從頭到尾地執(zhí)行。很少有事件能改變標(biāo)準(zhǔn)執(zhí)行流程;而且這些事件主要涉及異常情況?!懊钚袑?shí)用程序”是這種傳統(tǒng)應(yīng)用程序的典型例子。

另一類應(yīng)用程序由外部發(fā)生的事件來(lái)驅(qū)動(dòng)——換言之,事件在應(yīng)用程序之外生成,無(wú)法由應(yīng)用程序或程序員來(lái)控制。具體需要執(zhí)行的代碼取決于接收到的事件,或者它相對(duì)于其他事件的抵達(dá)時(shí)間。所以,控制流程既不能是順序的,也不能是事先設(shè)定好的,因?yàn)樗蕾囉谕獠渴录?。事件?qū)動(dòng)的GUI應(yīng)用程序是這種應(yīng)用程序的典型例子,它們由命令和選擇(也就是用戶造成的事件)來(lái)驅(qū)動(dòng)。4.3.2CPLD狀態(tài)機(jī)設(shè)計(jì)EPM3064實(shí)現(xiàn)的功能是在CPLD收到USB控制芯片傳送來(lái)的數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行解析,然后轉(zhuǎn)換為符合IEEE1149.1標(biāo)準(zhǔn)的編程數(shù)據(jù)和指令,從TCK、TMS和TDI串行輸出到要編程的可編程邏輯器件。從可編程邏輯器件返回的符合IEEE1149.1標(biāo)準(zhǔn)的校驗(yàn)數(shù)據(jù)從TDO串行輸入到CPLD,轉(zhuǎn)換為8位并行數(shù)據(jù)傳送給USB控制芯片,最后返回主機(jī)進(jìn)行校驗(yàn)。也就是說(shuō)實(shí)際上CPLD實(shí)現(xiàn)的功能是一個(gè)狀態(tài)機(jī),主要是實(shí)現(xiàn)usb時(shí)序轉(zhuǎn)換成JATG時(shí)序輸出!CPLD將接收或發(fā)送數(shù)據(jù)分為16個(gè)狀態(tài)wait_for_nRXF_low, set_nRD_low, keep_nRD_low, latch_data_from_host, set_nRD_high, bits_set_pins_from_data, bytes_set_bitcount, bytes_get_tdo_set_tdi, bytes_clock_high_and_shift, bytes_keep_clock_high, bytes_clock_finish, wait_for_nTXE_low, set_WR_high, output_enable, set_WR_low, output_disableCPLD通過(guò)CASE和IF語(yǔ)句來(lái)判斷進(jìn)程處于什么狀態(tài),在判斷出后,進(jìn)行相應(yīng)的操作,并跳轉(zhuǎn)到下一個(gè)狀態(tài)。例如如果進(jìn)程正處于set_nRD_low狀態(tài),則通過(guò)IF語(yǔ)句 IFstate=set_nRD_lowORstate=keep_nRD_lowORstate=latch_data_from_hostTHEN nRD<='0'; ELSE nRD<='1'; ENDIF;將RD置為0,同時(shí)通過(guò)CASE語(yǔ)句 CASEstateIS WHENset_nRD_low=> next_state<=keep_nRD_low;將進(jìn)程跳轉(zhuǎn)到keep_nRD_low狀態(tài)。然后CPLD在次判斷進(jìn)程處于什么狀態(tài),進(jìn)行相應(yīng)的操作,再次跳到下一個(gè)狀態(tài)。4.3.3接收狀態(tài)機(jī)接收狀態(tài)機(jī)主要功能是查詢USB_RXF引腳的狀態(tài),當(dāng)檢測(cè)到USB_RXF變低,即可獲知上位機(jī)已經(jīng)將數(shù)據(jù)寫入到FT245BM的緩沖區(qū),然后產(chǎn)生讀控制時(shí)序,將FT245BM接收緩沖區(qū)中的數(shù)據(jù)讀入到CPLD的緩沖區(qū)。重復(fù)以上步驟直到將一幀數(shù)據(jù)讀完,然后執(zhí)行相應(yīng)的幀處理操作。讀操作時(shí)序見(jiàn)圖4-3。當(dāng)RxF#為低,表示當(dāng)前FIFO接收緩沖區(qū)內(nèi)有數(shù)據(jù),能夠執(zhí)行讀操作讀取接收緩沖區(qū)數(shù)據(jù)。在RD#電平由高變低,F(xiàn)IFO控制器將接收緩沖區(qū)中的數(shù)據(jù)輸出到8位數(shù)據(jù)端口上,微控制器此時(shí)只需讀取I/O口就能夠?qū)?shù)據(jù)取到內(nèi)部數(shù)據(jù)總線上來(lái),再將RD#信號(hào)拉高完成1個(gè)字節(jié)數(shù)據(jù)的讀取。當(dāng)將FIFO接收緩沖區(qū)中的數(shù)據(jù)全部取出后,RXF#被拉高表示數(shù)據(jù)為空。在RXF#為高時(shí),禁止從FIFO接收緩沖區(qū)讀取數(shù)據(jù)。其流程圖為RXF=0RXF=0外設(shè)置RD=0通知外設(shè)讀取數(shù)據(jù)外設(shè)置RD=1D0-D7上的數(shù)據(jù)有效完成1個(gè)字節(jié)數(shù)據(jù)的讀取在RXF=1禁止從FIFO接收緩沖區(qū)讀取數(shù)據(jù)圖4-4接收狀態(tài)機(jī)流程FT245BM傳送給CPLD的數(shù)據(jù)是8位并行數(shù)據(jù),分為兩種傳輸方式:Bitbanging方式和Byteshift方式。1)Bitbanging方式:當(dāng)CPLD通過(guò)EP2OUT從主機(jī)獲取數(shù)據(jù)時(shí),首先數(shù)據(jù)傳輸開(kāi)始于Bitbanging方式,首先判斷數(shù)據(jù)最高位bit7是否被發(fā)送,如果數(shù)據(jù)最高位bit7沒(méi)有被發(fā)送,則繼續(xù)進(jìn)行Bitbanging方式,即發(fā)送JTAG模式信號(hào):如果數(shù)據(jù)最低位bit0被發(fā)送,TCK/DCLK=1.否則TCK/DCLK=0,功能是驅(qū)動(dòng)TAP的所有操作。如果數(shù)據(jù)最1位bit1被發(fā)送,TMS/nCONFIG=1.否則TMS/nCONFIG=0,通過(guò)TMS信號(hào),可以控制TAP在不同的狀態(tài)間相互轉(zhuǎn)換如果數(shù)據(jù)最2位bit2被發(fā)送,nCE=1.否則nCE=0,功能是判斷什么模式。如果數(shù)據(jù)最3位bit3被發(fā)送,nCS=1.否則nCS=0,功能是判斷什么模式。如果數(shù)據(jù)最4位bit4被發(fā)送,TDI/ASDI/DATA0=1.否則TDI/ASDI/DATA0=0,功能是輸入數(shù)據(jù)到特定寄存器如果數(shù)據(jù)最5位bit5被發(fā)送,OutputEnable/LED=1.否則OutputEnable/LED=0其原程序?yàn)? IFstate=bits_set_pins_from_dataTHEN B_TCK<=ioshifter(0); B_TMS<=ioshifter(1); B_NCE<=ioshifter(2); B_NCS<=ioshifter(3); B_TDI<=ioshifter(4); B_OE<=ioshifter(5); ioshifter<="000000"&B_ASDO&B_TDO; ENDIF;2)Byteshift方式:如果數(shù)據(jù)最高位bit7被發(fā)送,則立刻跳轉(zhuǎn)到Byteshift方式。如果nCS=1.從TDI讀取數(shù)據(jù),否則從DATAOUT讀取數(shù)據(jù)。通過(guò)移位寄存器把讀取的數(shù)據(jù)發(fā)送給TDI。把TCK置為1,然后置為0。在此期間,完成數(shù)據(jù)傳輸。重復(fù)以上動(dòng)作8次,完成一個(gè)字節(jié)傳送。其原程序?yàn)?WHENbytes_get_tdo_set_tdi=> next_state<=bytes_clock_high_and_shift; WHENbytes_clock_high_and_shift=> next_state<=bytes_keep_clock_high; WHENbytes_keep_clock_high=> next_state<=bytes_clock_finish; WHENbytes_clock_finish=> IFNOT(bitcount(2DOWNTO0)="111")THEN next_state<=bytes_get_tdo_set_tdi;--clocknextbit ELSIFdo_output='1'THEN next_state<=wait_for_nTXE_low;--outputbytetohost ELSE next_state<=wait_for_nRXF_low;--readnextbytefromhost ENDIF;4.3.4發(fā)送狀態(tài)機(jī)發(fā)送狀態(tài)機(jī)完成的主要功能是將外設(shè)產(chǎn)生的數(shù)據(jù)通過(guò)FT245BM和USB總線傳送到PC機(jī)。外設(shè)將數(shù)據(jù)準(zhǔn)備好后,將發(fā)送允許信號(hào)置為有效,即啟動(dòng)發(fā)送操作。首先狀態(tài)機(jī)從外設(shè)的緩沖區(qū)按字節(jié)將待發(fā)送的數(shù)據(jù)讀到FPGA的緩沖區(qū),并產(chǎn)生寫FT245BM發(fā)送緩沖區(qū)的時(shí)序,將數(shù)據(jù)寫到FT245BM發(fā)送緩沖區(qū),直到將一幀數(shù)據(jù)發(fā)送完畢。寫操作時(shí)序見(jiàn)圖11。當(dāng)TXE#為低,表示當(dāng)前FIFO發(fā)送緩沖區(qū)空,能夠向發(fā)送緩沖區(qū)寫人數(shù)據(jù)。在WR為高電平時(shí),微控制器將8位數(shù)據(jù)D[0..7]送到并行I/O口上,在WR信號(hào)電平由高變低時(shí)數(shù)據(jù)被寫入發(fā)送緩沖區(qū)中。當(dāng)TXE#為高時(shí),表示當(dāng)前FIFO發(fā)送緩沖區(qū)已滿或正在寫入上一個(gè)字節(jié),此時(shí)禁止向發(fā)送緩沖區(qū)中寫入任何數(shù)據(jù)。微控制器向FT245BM寫人數(shù)據(jù)時(shí)應(yīng)確保TXE#為低。其流程圖為圖4-6TXF=0TXF=0外設(shè)置WR=1能夠向發(fā)送緩沖區(qū)寫人數(shù)據(jù)外設(shè)置WR=0D0-D7上的數(shù)據(jù)有效完成1個(gè)字節(jié)數(shù)據(jù)的讀取在RXF=1禁止從FIFO發(fā)送緩沖區(qū)讀取數(shù)據(jù)圖4-6發(fā)送狀態(tài)機(jī)流程圖其原程序?yàn)?WHENwait_for_nTXE_low=> IFnTXE='0'THEN next_state<=set_WR_high; ELSEnext_state<=wait_for_nTXE_low; ENDIF; WHENset_WR_high=> next_state<=output_enable; WHENoutput_enable=> next_state<=set_WR_low; WHENset_WR_low=> next_state<=output_disable; WHENoutput_disable=>next_state<=wait_for_nRXF_low;--readnextbytefromhost WHENOTHERS=> next_state<=wait_for_nRXF_low;4.3.5狀態(tài)圖將接收和發(fā)送狀態(tài)機(jī)的狀態(tài)機(jī)控制用狀態(tài)圖畫(huà)出圖4-74.4其他方案選擇實(shí)際上也可以用一個(gè)微型單片機(jī)來(lái)代替CPLD器件EPM3064,只要改寫下程序,依然可以實(shí)現(xiàn)CPLD的功能。由于電路大體相同,這里只介紹下單片機(jī)的程序這里只要介紹ezusbfx2系列一般來(lái)說(shuō)ezusbfx2系列程序框架可以分成3個(gè)部分。1)描述符文件。例如dscr.a51文件,里面定義了枚舉設(shè)備的時(shí)候要用的各種描述符信息,這部分用戶需要根據(jù)實(shí)際的情況自己編寫。例如USB1.1/2.0/2.13對(duì)設(shè)備類型的子類定義都不完全相同,所以寫的時(shí)候最好幾種文檔對(duì)比起來(lái)寫。由于USB官方網(wǎng)站的文檔中字段解釋過(guò)于專業(yè)化,所以對(duì)USB不是很熟悉的人比較難以理解其真正含義。所以要多參考不同的書(shū)籍,某種程度上降低了開(kāi)發(fā)速度。2)固件文件,例如FW.C文件,這是硬件程序的函數(shù)入口。主要有以下這些方法:voidSetupCommand(void);

//握手命令處理voidTD_Init(void);//初始化,完成配置,啟動(dòng)時(shí)調(diào)用一次voidTD_Poll(void);//用戶處理程序,循環(huán)調(diào)用voidIO_Init(void);//8051IO初始化voidREG_Init(void);

//8051寄存器初始化BOOLTD_Suspend(void);

//掛起處理BOOLTD_Resume(void);

//喚醒處理//以下為各種描述符的獲取和設(shè)置函數(shù),重枚舉時(shí)自動(dòng)調(diào)用BOOLDR_GetDescriptor(void);BOOLDR_SetConfiguration(void);BOOLDR_GetConfiguration(void);BOOLDR_SetInterface(void);BOOLDR_GetInterface(void);BOOLDR_GetStatus(void);BOOLDR_ClearFeature(void);BOOLDR_SetFeature(void);BOOLDR_VendorCmnd(void);3)

功能文件,處理各種中斷。例如PERIPH.C文件。8051一般默認(rèn)只有四個(gè)中斷,這顯然不夠USB使用,所以CYPRESS引入了自動(dòng)向量的概念,相當(dāng)于軟中斷,大大擴(kuò)展了現(xiàn)有的中斷數(shù)量。主要的中斷有:voidISR_Sudav(void)interrupt0//收到setup包voidISR_Sutok(void)interrupt0//收到SETUP令牌voidISR_Sof(void)interrupt0//收到起始幀voidISR_Ures(void)interrupt0//收到RESETvoidISR_Susp(void)interrupt0

//收到掛起信息voidISR_Highspeed(void)interrupt0//高速模式voidISR_Ep0ack(void)interrupt0//正常響應(yīng)ACKvoidISR_Ep1out(void)interrupt0//EP1輸入中斷voidISR_Ep2inout(void)interrupt0

//EP2中斷特別是對(duì)于接受數(shù)據(jù),一般都在中斷中完成相應(yīng)處理,“中斷中適合進(jìn)行少量簡(jiǎn)短的操作,不適合進(jìn)行復(fù)雜操作”,這句話在此依然有效。如果要進(jìn)行復(fù)雜的操作可以在TD_POLL()中進(jìn)行(多數(shù)操作都是在這個(gè)函數(shù)中完成的)。另外非常重要的一點(diǎn)是,中斷程序的結(jié)尾應(yīng)該讓中斷復(fù)位,允許下一次中斷,有些端點(diǎn)的計(jì)數(shù)器也要清零并允許接受新的中斷請(qǐng)求。例如:EP1OUTBC=0;//清空計(jì)數(shù)EZUSB_IRQ_CLEAR();//USB中斷復(fù)位EPIRQ=0x08;

//允許EP1中斷請(qǐng)求固件程序的運(yùn)行流程所示,USB上電復(fù)位后進(jìn)入main()函數(shù)先初始化內(nèi)部狀態(tài)變量,然后調(diào)用用戶初始化函數(shù)TD_Init()。從該函數(shù)返回后使能中斷,然后每隔1s進(jìn)行一次設(shè)備重枚舉直到端點(diǎn)0接受到主機(jī)的SETUP數(shù)據(jù)包。檢測(cè)到SETUP包后開(kāi)始任務(wù)調(diào)度,任務(wù)調(diào)度的步驟如下:(1)調(diào)用用戶函數(shù)SetupCommand(),判斷是否受到SETUP包;(2)分析判斷SETUP包,如果是標(biāo)準(zhǔn)設(shè)備請(qǐng)求命令則執(zhí)行標(biāo)準(zhǔn)請(qǐng)求,如果是用戶請(qǐng)求命令則調(diào)用TD_Poll()進(jìn)行數(shù)據(jù)處理并反饋給主機(jī)結(jié)果;(3)判斷是否收到USB掛起信號(hào),收到則調(diào)用TD_Suspend()。從該函數(shù)返回后再檢測(cè)是否發(fā)生USB喚醒事件,未檢測(cè)到則處理器進(jìn)入掛起狀態(tài),否則調(diào)用TD_Resume(),程序繼續(xù)運(yùn)行。需要用戶自己編寫的代碼主要包括TD_Init()、TD_Poll()。在本系統(tǒng)中,TD_Init()主要完成端點(diǎn)的選擇和配置,以及外圍器件的初始化。TD_Poll()將根據(jù)接收的主機(jī)命令對(duì)數(shù)據(jù)進(jìn)行處理,之后將處理結(jié)果或狀態(tài)信息反饋給主機(jī)第五章系統(tǒng)調(diào)試及結(jié)果如果打開(kāi)QuartusII后,一插上USB,QuartusII就處于假死狀態(tài)。估計(jì)是沒(méi)焊接好或是CPLD軟件有問(wèn)題。硬件做以下檢查1

焊接檢查,從新焊接一遍

cpld

晶振

usb芯片和緩沖芯片,再次測(cè)量電壓

2

Mprog

讀取已經(jīng)

寫入的文件,查看是否已經(jīng)寫入FT245的EEPROM沒(méi)有被編程時(shí),掃描出來(lái)的是

Number

Of

Blank

Devices

=

1

Number

Of

Programmed

Devices

=

0

EEPROM被編程以后掃描的結(jié)果是

Number

Of

Blank

Devices

=

0

Number

Of

Programmed

Devices

=

1用示波器觀看晶振是否起振,,

如果焊接好板子,保證沒(méi)有焊接錯(cuò)誤或者虛焊,即硬件沒(méi)有問(wèn)題。usb

blaster

驅(qū)動(dòng)安裝好,程序都下好后,打開(kāi)QuartusII后,就可以在軟件中找到USB

BLASTER和EPM3064:貼圖如下圖5-1軟件的話有可能是程序燒錯(cuò)了,或者管腳影射錯(cuò)了,即QuartusII中

tcl

文件芯片的管腳對(duì)應(yīng)出錯(cuò),也會(huì)造成QuartusII處于假死狀態(tài)。如果軟件無(wú)誤,即程序可正常下載貼圖如下圖5-2總結(jié)和展望畢業(yè)設(shè)計(jì)是我在大學(xué)學(xué)習(xí)階段的最后一個(gè)環(huán)節(jié),是對(duì)所學(xué)基礎(chǔ)知識(shí)和專業(yè)知識(shí)的一種綜合應(yīng)用,是一種綜合的再學(xué)習(xí)、再提高的過(guò)程,這一過(guò)程有助于培養(yǎng)我的學(xué)習(xí)能力和獨(dú)立工作能力。通過(guò)幾個(gè)月的努力,在參閱大量書(shū)籍資料的情況下,進(jìn)行了大量的試驗(yàn)和研究。在這期間,雖然經(jīng)歷過(guò)失敗和挫折,最終體會(huì)到了成功的喜悅。在制作過(guò)程中,嚴(yán)格遵循了系統(tǒng)的需求分析、總體設(shè)計(jì)、軟硬件詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)、系統(tǒng)調(diào)試等開(kāi)發(fā)步驟,分階段的完成了各設(shè)計(jì)任務(wù)。但是在制作過(guò)程過(guò)程中,發(fā)現(xiàn)存在一些問(wèn)題有待進(jìn)一步探討和改進(jìn),主要包括以下幾個(gè)方面:(1)可以使usb

blaster電路更加簡(jiǎn)單,CPLD的時(shí)鐘由外部的24M無(wú)源晶振+CPLD內(nèi)的反相器來(lái)做,而FT245的時(shí)鐘由24M四分頻來(lái)做。不過(guò)CPLD晶振在12MHz的時(shí)候下載線好使,換了高點(diǎn)的晶振下載線就不好用了。不知道是那里的原因。(2)在本次設(shè)計(jì)USB下載線設(shè)計(jì)過(guò)程中,雖然基于JTAG模式的usb

blaster

要比并口的blaster下載速度快很多,但更快的AS/PS模式,在本次設(shè)計(jì)設(shè)計(jì)中沒(méi)有太多涉及(3)usb

blaster可以用單片機(jī)來(lái)代替CPLD器件,同樣可以實(shí)現(xiàn)其功能。本次設(shè)計(jì)只是大體了解介紹了下如何實(shí)現(xiàn),如有興趣,可以自己制作一下隨著片上系統(tǒng)(SoC,SystemonChip)時(shí)代的到來(lái),人們對(duì)用于可編程邏輯器件編程的下載電纜的要求越來(lái)越高。但傳統(tǒng)的并口、串口下載電纜,或者速度不夠快,或者靈活性不高,本課題研究的下載電纜可以滿足人們的要求,使下載電纜的使用越來(lái)越方便。致謝隨著畢業(yè)設(shè)計(jì)尾聲的臨近,我的四年大學(xué)本科也即將畫(huà)上句號(hào)。但是對(duì)我而言,這并不是學(xué)業(yè)的結(jié)束,而是一個(gè)新的開(kāi)始。在此,我要感謝每一個(gè)幫助過(guò)我的人。首先,我要感謝的是我的導(dǎo)師梁瑞宇老師。梁老師平日里工作繁多,但在我做畢業(yè)設(shè)計(jì)的每個(gè)階段,都給予我悉心的指導(dǎo)和幫助??梢哉f(shuō),沒(méi)有梁其次我要感謝我的父母,在我畢業(yè)設(shè)計(jì)最艱苦的那段日子,是他們給了我最大的精神支持。父母為了我的成長(zhǎng),一直在背后默默的付出和辛勤的工作,他們的養(yǎng)育之恩,我將用自己的一生去回報(bào)。再次,我要感謝的是同班同學(xué)的好兄弟李星星和劉晉,在我畢業(yè)設(shè)計(jì)期間,他們給了我不少的關(guān)心和幫助。最后我要感謝的是我親愛(ài)的河海大學(xué)以及河海大學(xué)的每一位老師和同學(xué)。總之,感謝每一位關(guān)心過(guò)我,愛(ài)護(hù)過(guò)我的人。滴水之恩,當(dāng)涌泉相報(bào)。參考文獻(xiàn)[1]宋萬(wàn)杰,羅豐,吳順君.CPLD技術(shù)及應(yīng)用[M].西安電子科技大學(xué)出版社,1999.9:83—131[2]曾繁泰,陳美金.VHDL程序設(shè)計(jì)[M].清華大學(xué)出版社,2000.8[3]李洪偉,袁斯華.基于Quartus

II的FPGA/CPLD設(shè)計(jì)[M].電子工業(yè)出版社,2006.4[4]馬偉.計(jì)算機(jī)USB系統(tǒng)原理及其主/從機(jī)設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2004.1:55—90[5]

張弘.USB接口設(shè)計(jì)[M].西安電子科技大學(xué)出版社,2002.[6]

SmithMichaelJS.Application-SpecificIntegratedCircuits[M].電子工業(yè)出版社,2005.[7]

CilettiMichaelD.AdvancedDigitalDesignwiththeVerilogHDL[M].北京:電子工業(yè)出版社,2005[8]黃正謹(jǐn).CPLD系統(tǒng)設(shè)計(jì)技術(shù)入門與應(yīng)用[M].電子工業(yè)出版社.2002[9]QuartusII簡(jiǎn)介,AlteraCorporation,2003.[10]譚會(huì)生,張昌凡.EDA技術(shù)及應(yīng)用(第二版)[M].西安電子科技大學(xué)出版社,2004.[11]周立功,夏宇聞.單片機(jī)與CPLD綜合應(yīng)用技術(shù)[M].北京航空航天大學(xué)出版社.2003[12]

蕭世文.USB2.0硬件設(shè)計(jì)[M].清華大學(xué)出版社,2002.[13]黃仁欣EDA技術(shù)實(shí)用教程[M]清華大學(xué)出版社2006.9附錄附錄1實(shí)物圖附錄2電路圖 附錄3PCB版圖 附錄4英文資料及翻譯TheFT245BMprovidesaneasycost-effectivemethodoftransferringdatato/fromaperipheralandahostP.C.atupto8Millionbits(1Megabyte)persecond.Itssimple,FIFO-likedesignmakesiteasytointerfacetoanymicrocontrollerormicroprocessor

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論