摘要:為滿足單片機(jī)學(xué)習(xí)中對(duì)實(shí)踐技能的要求,提高單片機(jī)開發(fā)系統(tǒng)的穩(wěn)定性和可擴(kuò)展性,,降低系統(tǒng)功耗,,設(shè)計(jì)了一種基于FPGA的C8051F單片機(jī)開發(fā)板。利用FPGA實(shí)現(xiàn)鍵盤掃描,、液晶驅(qū)動(dòng),、地址譯碼以及其他外設(shè)接口,大幅度簡化外圍電路結(jié)構(gòu),。系統(tǒng)可在高低頻時(shí)鐘間切換以減小功耗,,并增加了音頻處理模塊,實(shí)現(xiàn)基本的音頻信號(hào)的存儲(chǔ)和回放,。實(shí)驗(yàn)結(jié)果表明,,該電路板相比普通的單片機(jī)開發(fā)板系統(tǒng)功耗減小50%左右,擁有最高達(dá)25 MIPS的處理速度,,單片機(jī)可以直接驅(qū)動(dòng)多達(dá)20多個(gè)LS TTL門電路,,F(xiàn)PGA的引入使得外擴(kuò)其他電路更為方便和靈活,具有良好的擴(kuò)展性,。
關(guān)鍵詞:單片機(jī),;FPGA,;外圍電路;電路板
目前高校單片機(jī)教學(xué)中大多是以MCS51單片機(jī)為首選機(jī)型進(jìn)行講解,,所開發(fā)的教學(xué)實(shí)驗(yàn)系統(tǒng)也多是基于MCS51系列單片機(jī)開發(fā)設(shè)計(jì)的,。然而,隨著單片機(jī)的應(yīng)用進(jìn)入SoC時(shí)代,,其不足和缺陷也顯而易見:片上資源不夠豐富,,功耗較大,處理速度很有限,,電路龐大且復(fù)雜,,可靠性和可維護(hù)性較差,難以滿足高水平的設(shè)計(jì)要求,。
為了進(jìn)一步簡化電路結(jié)構(gòu),,提出一種C8051F單片機(jī)實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)方案,該方案采用FPGA實(shí)現(xiàn)單片機(jī)各種外設(shè)接口,。FPGA作為一種可編程邏輯器件憑借其優(yōu)越的可擴(kuò)展性能受到設(shè)計(jì)者的青睞,,逐漸成為分立元件的替代者。通過對(duì)FPGA編程,,實(shí)現(xiàn)任何數(shù)字元件的邏輯功能,,設(shè)計(jì)者可以通過原理圖輸入或硬件描述語言,方便地設(shè)計(jì)一個(gè)數(shù)字系統(tǒng),,這使得單片機(jī)外圍電路的設(shè)計(jì)簡單,、靈活、可靠,。
本系統(tǒng)是為單片機(jī)實(shí)踐教學(xué)而開發(fā)的,,因此要求單片機(jī)的功能齊全,滿足教學(xué)中各種實(shí)驗(yàn)的要求,。一般的實(shí)驗(yàn)板的功能有:模擬數(shù)字信號(hào)轉(zhuǎn)換實(shí)驗(yàn),、通信接口實(shí)驗(yàn)、存儲(chǔ)器實(shí)驗(yàn),、各種顯示實(shí)驗(yàn),,人機(jī)交互實(shí)驗(yàn)等等。除此之外,,還要考慮由于是非商業(yè)性質(zhì)的開發(fā),,對(duì)一些功能的精度要求不是很高,在選擇最理想價(jià)格的同時(shí),,選擇盡可能多而全的片上資源,,留待后期開發(fā)擴(kuò)充。
基于以上考慮,,該平臺(tái)使用SoC系統(tǒng)級(jí)的C8051F020單片機(jī)作為核心控制器,,CycloneⅡEP2C8型FPGA實(shí)現(xiàn)外設(shè)接口,,加上LCD、鍵盤,、UART串口等人機(jī)交互的模塊,。
C8051F系列單片機(jī)是以流水線方式處理指令的CIP-5l內(nèi)核,完全集成的混合信號(hào)系統(tǒng)級(jí)芯片(Soc),,片內(nèi)集成了數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬,、數(shù)字外設(shè)及其他功能部件。C8051F020單片機(jī)具有片內(nèi)調(diào)試電路,,通過4引腳的JTAG接口可以進(jìn)行非侵入式、全速的在系統(tǒng)調(diào)試,。
FPGA即現(xiàn)場(chǎng)可編程門陣列,,它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路,既解決了定制電路的不足,,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn),。FPGA使用靈活,同一片F(xiàn)PGA通過不同的編程數(shù)據(jù)可以產(chǎn)生不同的電路功能,。
1 系統(tǒng)總體方案
本文設(shè)計(jì)并實(shí)現(xiàn)了基于FPGA的單片機(jī)開發(fā)平臺(tái),,該平臺(tái)主要包括有:單片機(jī)及其外設(shè)、FPGA擴(kuò)展電路,、電源及下載電路,。開發(fā)平臺(tái)框架如圖l所示。
1.1 單片機(jī)外設(shè)
包括液晶顯示器(LCD),、鍵盤,、SRAM、UART串口等,,對(duì)FPGA進(jìn)行編程來實(shí)現(xiàn)LCD,、鍵盤、SRAM的接口電路,。
1.2 FPGA擴(kuò)展電路
包括主動(dòng)串行(AS)配置電路,、JTAG在線調(diào)試電路、輸入輸出電路等,。采用EPCSlN8型芯片對(duì)FPGA進(jìn)行主動(dòng)串行(AS)配置,,同時(shí)兼有JTAG在線調(diào)試模式。
1.3 電源及下載電路
單片機(jī)和FPGA均采用3.3V/1.2V穩(wěn)壓源供電,,兩者均可通過JTAG接口進(jìn)行在線調(diào)試,。
FPGA和單片機(jī)以典型的三總線連接進(jìn)行數(shù)據(jù)通信及控制,單片機(jī)內(nèi)部集成的數(shù)字/模擬資源和FPGA剩余的引腳通過插針引出,,供用戶使用,。將以上模塊有機(jī)結(jié)合起來,,形成一個(gè)性能優(yōu)越的開發(fā)平臺(tái),能夠滿足不同層次的設(shè)計(jì)需求,。
2 硬件電路設(shè)計(jì)
在單片機(jī)系統(tǒng)的人機(jī)交互部分通常有液晶顯示器(LCD),、鍵盤和存儲(chǔ)器等外設(shè),因此需要用大量的標(biāo)準(zhǔn)邏輯器件對(duì)單片機(jī)進(jìn)行擴(kuò)展,,這些器件的組合使用會(huì)導(dǎo)致設(shè)計(jì)周期長,、可維護(hù)性差,用FPGA來實(shí)現(xiàn)單片機(jī)的外圍接口電路,,能大大簡化電路結(jié)構(gòu),,節(jié)省CPU資源。
2.1 鍵盤接口模塊
因?yàn)榘存I機(jī)械觸點(diǎn)的彈性作用,,一個(gè)按鍵開關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定的導(dǎo)通,,在斷開時(shí)也不會(huì)馬上斷開,因而在閉合及斷開的瞬間都會(huì)伴隨一連串的抖動(dòng),,對(duì)于靈敏度較高的電路,,這種抖動(dòng)可能會(huì)造成誤動(dòng)作而影響操作正確性。常用的去抖動(dòng)的方法為延時(shí)去抖動(dòng)法,,即檢測(cè)出鍵閉合后執(zhí)行一個(gè)延時(shí)程序,,產(chǎn)生5~lO ms的延時(shí);讓前沿抖動(dòng)消失后,,再一次檢測(cè)鍵的狀態(tài),,如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正
有鍵按下,。當(dāng)檢測(cè)到按件釋放后,,也要給5~10 ms的延時(shí),待后沿抖動(dòng)消失后,,才能轉(zhuǎn)入該鍵的處理程序,。
對(duì)FPGA編程完成消除抖動(dòng)及按鍵識(shí)別,由抖動(dòng)消除模塊,、鍵盤掃描電路,、鍵盤譯碼電路、按鍵數(shù)據(jù)寄存器等組成,。
鍵盤接口電路的工作流程為:采取逐行掃描法,,F(xiàn)PGA周而復(fù)始地對(duì)鍵盤進(jìn)行掃描,當(dāng)有鍵按下時(shí),,先對(duì)按鍵進(jìn)行延時(shí)去抖處理,,將按鍵信號(hào)存入寄存器,掃描信號(hào)來臨時(shí),根據(jù)按鍵掃描碼查找鍵碼表,,并將其送回給單片機(jī),。程序流程如圖2所示。
2.2 液晶顯示模塊
液晶顯示器(LCD)以其微功耗,、體積小,、顯示內(nèi)容豐富、超薄輕巧等諸多優(yōu)點(diǎn),,在便攜式儀表和低功耗應(yīng)用系統(tǒng)中得到越來越廣泛的應(yīng)用,。
LCD可分為段位式LCD、字符式LCD和點(diǎn)陣式LCD,。其中,,段位式LCD和字符式LCD只能用于字符和數(shù)字的簡單顯示,不能滿足圖形曲線和漢字顯示的要求,;而點(diǎn)陣式LCD不僅可以顯示字符,、數(shù)字,還可以顯示各種圖形,、曲線及漢字,并且可以實(shí)現(xiàn)屏幕上下左右滾動(dòng),,動(dòng)畫功能,,反轉(zhuǎn),閃爍等功能,,用途十分廣泛,。
點(diǎn)陣式LCD分為帶漢字字庫和不帶漢字字庫兩種,帶字庫LCD若要顯示漢字只要傳給漢字內(nèi)碼,,而不帶字庫LCD顯示漢字時(shí)要先求出漢字字模,,然后跟顯示圖形一樣顯示漢字。
本開發(fā)系統(tǒng)采用博控公司生產(chǎn)的NS240*128A點(diǎn)陣圖形型LCD,,不帶中文字庫,。由于液晶顯示器是典型的慢速設(shè)備,如果直接與高速的單片機(jī)相連時(shí),,會(huì)浪費(fèi)大量的時(shí)間,,可以考慮在單片機(jī)和液晶顯示器中間加入FPGA,由FPGA直接驅(qū)動(dòng)和控制液晶顯示器,。液晶顯示模塊框圖如圖3所示,。
單片機(jī)將字庫/圖形庫內(nèi)的圖形或文字?jǐn)?shù)據(jù)以及這些數(shù)據(jù)在液晶上所顯示的位置信息傳送給由FPGA芯片構(gòu)成的液晶控制IP核。由于LCD是慢速設(shè)備,,單片機(jī)發(fā)送至LCD控制器的顯示數(shù)據(jù)信息的速度通常大于LCD顯示更新速度,,因此需將這些數(shù)據(jù)和信息送入數(shù)據(jù)存儲(chǔ)器中緩存。由于FPGA芯片的片內(nèi)RAM容量有限,系統(tǒng)中外擴(kuò)了1片RAM作為顯示數(shù)據(jù)緩沖器,。由FPGA芯片構(gòu)成的顯示控制IP核需讀取外擴(kuò)顯示RAM中的數(shù)據(jù),,再通過顯示驅(qū)動(dòng)電路按字節(jié)送至LCD進(jìn)行顯示:因此在所設(shè)計(jì)的顯示驅(qū)動(dòng)電路中設(shè)計(jì)了一個(gè)雙端口RAM,既能將顯示數(shù)據(jù)緩存器中的顯示數(shù)據(jù)寫入雙端口RAM,,同時(shí)又能將雙端口RAM中的數(shù)據(jù)讀出,,再將數(shù)據(jù)送至LCD數(shù)據(jù)接口。
2.3 SRAM模塊
C8051F020內(nèi)部有位于外部數(shù)據(jù)存儲(chǔ)器空間的4 096字節(jié)的片上RAM,,還有外部數(shù)據(jù)存儲(chǔ)器接口EMIF,,可用于訪問片外存儲(chǔ)器和存儲(chǔ)器映射的I/O器件。外部數(shù)據(jù)存儲(chǔ)器接口EMIF可配置到低I/O端口P0~P3,,也可配置到高I/O端口P4~P7,。而且,既可以配置為數(shù)據(jù),、地址復(fù)用方式,,也可以配置為非復(fù)用方式。若要節(jié)省端口I/O,,可采用數(shù)據(jù),、地址復(fù)用方式,能節(jié)省8根端口線,,但是速度較慢,,若要提高速度,則可
以采用非復(fù)用方式,。
2.3.1 配置外部存儲(chǔ)器接口的步驟
1)將EMIF選到低端口(P3~P0)或選到高端口(P7~P4),。
2)選擇復(fù)用方式或非復(fù)用方式。
3)選擇存儲(chǔ)器模式(只用片內(nèi)存儲(chǔ)器,、不帶塊選擇的分片方式,、帶塊選擇的分片方式或只用片外存儲(chǔ)器)。
4)設(shè)置與片外存儲(chǔ)器或外設(shè)接口的時(shí)序,。
5)選擇所需要的相關(guān)端口的輸出方式,。
在本系統(tǒng)中考慮到(28051F020單片機(jī)的PO~P3口大部分為功能復(fù)用引腳,為使單片機(jī)的資源得到最大的開發(fā),,將單片機(jī)的高端I/O口,,即P4~P7接入FPGA,并通過FPGA對(duì)RAM進(jìn)行訪問,。將單片機(jī)配置為高端口(P4~P7),、地址/數(shù)據(jù)總線分時(shí)復(fù)用方式,F(xiàn)PGA控制RAM的片選,、讀/寫等操作,,其中注意FPGA,、單片機(jī)、RAM的時(shí)序統(tǒng)一問題,。
2.4 UART串口
UART是一種通用串行數(shù)據(jù)總線,,該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收,。在嵌入式設(shè)計(jì)中,,UART用來與PC進(jìn)行通信,包括與監(jiān)控調(diào)試器和其他器件,,如EEPROM通信,。
UART首先將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)來發(fā)送。消息幀從一個(gè)低位起始位開始,,后面是若干數(shù)據(jù)位,,一個(gè)可用的奇偶校驗(yàn)位和一個(gè)高位停止位。接收器發(fā)現(xiàn)開始位時(shí)它就知道數(shù)據(jù)準(zhǔn)備發(fā)送,,并嘗試與發(fā)送器時(shí)鐘頻率同步,。在接收過程中,UART從消息幀中去掉起始位和結(jié)束位,,對(duì)進(jìn)來的字節(jié)進(jìn)行奇偶校驗(yàn),,并將數(shù)據(jù)字節(jié)從串行轉(zhuǎn)換成并行。UART也產(chǎn)生額外的信號(hào)來指示發(fā)送和接收的狀態(tài),。例如,,如果產(chǎn)生一個(gè)奇偶錯(cuò)誤,UART就置位奇偶標(biāo)志,。
C805lF020單片機(jī)中有兩個(gè)增強(qiáng)型串行口:UART0和UARTl。所謂增強(qiáng)型是指,,這兩個(gè)串口都具有幀錯(cuò)誤檢測(cè)和通信地址硬件識(shí)別功能,。它們都可以工作在全雙工異步方式或半雙工同步方式,并且支持多處理器通信,。開發(fā)板外擴(kuò)兩個(gè)增強(qiáng)型UART串口,,實(shí)現(xiàn)單片機(jī)與PC機(jī)、單片機(jī)和單片機(jī)之間的通信,。其電路連接如圖4所示,。
2. 5 A/D和D/A模塊
C8051F020有一個(gè)片內(nèi)12位ADC(ADCO)和一個(gè)8位ADC(ADCl),通道輸入多路選擇開關(guān)和可編程增益放大器,。
ADC的電壓基準(zhǔn)可以在模擬電源電壓(AV+)和一個(gè)外部VREF引腳之間選擇,。A/D轉(zhuǎn)換有4種啟動(dòng)方式:軟件命令、定時(shí)器2溢出,、定時(shí)器3溢出和外部信號(hào)輸入,。這種靈活性允許用軟件事件,、外部硬件信號(hào)或周期性的定時(shí)器溢出信號(hào)觸發(fā)轉(zhuǎn)換。轉(zhuǎn)換結(jié)束由一個(gè)狀態(tài)位指示,,或者產(chǎn)生中斷(如果中斷被使能),。在轉(zhuǎn)換完成后,12位或8位轉(zhuǎn)換結(jié)果數(shù)據(jù)字被鎖存到兩個(gè)特殊功能寄存器中,。這些數(shù)據(jù)字可以用軟件控制為左對(duì)齊或右對(duì)齊,。
C805lF020內(nèi)部有兩個(gè)片內(nèi)12位電壓方式數(shù)/模轉(zhuǎn)換器(DAC)。每個(gè)DAC的輸出擺幅均為0 V到(VREF-1LSB),,對(duì)應(yīng)的輸入碼范圍是Ox000到OxFFF,。C8051F020的VREF引腳可以由內(nèi)部電壓基準(zhǔn)或一個(gè)外部源驅(qū)動(dòng)。如果使用內(nèi)部電壓基準(zhǔn),,為了使DAC輸出有效,,該基準(zhǔn)必須被使能。
本文設(shè)計(jì)了利用A/D和D/A模塊進(jìn)行簡單的語音信號(hào)的存儲(chǔ)和回放,,基本思想是將模擬語音信號(hào)經(jīng)過前置放大和濾波電路的處理,,通過模數(shù)轉(zhuǎn)換器A/D轉(zhuǎn)換成數(shù)字信號(hào),再通過單片機(jī)控制存儲(chǔ)在存儲(chǔ)器中,,回放時(shí),,由單片機(jī)控制將數(shù)據(jù)從存儲(chǔ)器中讀出,然后通過數(shù)模轉(zhuǎn)換器D/A轉(zhuǎn)換成模擬信號(hào),,經(jīng)放大在揚(yáng)聲器或耳機(jī)上輸出語音,。音頻前置放大和濾波電路如圖5所示。
3 結(jié)束語
本開發(fā)系統(tǒng)采用MCU+FPGA結(jié)構(gòu),,單片機(jī)負(fù)責(zé)過程控制和數(shù)據(jù)處理,,F(xiàn)PGA實(shí)現(xiàn)各種外設(shè)的接口,同時(shí)FPGA還可以為單片機(jī)提供存儲(chǔ)器和I/O口等資源,。由于電路中具有數(shù)字部分和模擬部分,,在PCB制板時(shí)特別注意抗干擾處理,例如加去耦電容,、數(shù)字地和模擬地一點(diǎn)連接,、數(shù)字電源和模擬電源隔離等措施。
需要注意的是,,采樣后的數(shù)字語音信號(hào)由于數(shù)據(jù)量很大,,為了節(jié)省存儲(chǔ)空間,可以采取相應(yīng)的編碼技術(shù)去除冗余度,,回放的語音質(zhì)量性噪比(RSN)較高,。系統(tǒng)采用3.3 V供電單片機(jī),功耗降低50%左右,。通過配置內(nèi)部寄存器和外部時(shí)鐘切換電路,,可靈活配置系統(tǒng)時(shí)鐘,。通過單片機(jī)內(nèi)部交叉開關(guān)的配置,設(shè)計(jì)者可以實(shí)現(xiàn)數(shù)字和模擬外設(shè)的引腳分配和器件的使能,。經(jīng)過測(cè)試,,各模塊均能夠達(dá)到設(shè)計(jì)要求,具有良好的可擴(kuò)展性和穩(wěn)定性,,適合作為電子設(shè)計(jì)大賽和電子愛好者的開發(fā)用板,。