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