賈立新,曹全君
(浙江工業(yè)大學(xué)信息工程學(xué)院, 浙江杭州310023)
單片機(jī)最小系統(tǒng)是構(gòu)成各種不同功能單片機(jī)應(yīng)用系統(tǒng)的核心模塊,在綜合電子技術(shù)實(shí)驗(yàn)、大學(xué)生電子設(shè)計(jì)競(jìng)賽、畢業(yè)設(shè)計(jì)等教學(xué)環(huán)節(jié)中具有廣泛的應(yīng)用。現(xiàn)有的單片機(jī)最小系統(tǒng)種類繁多,各有特色,但始終無法很好地解決高效和通用靈活的矛盾,即最小系統(tǒng)既要硬件電路簡潔、功耗低、性價(jià)比達(dá)到最佳,同時(shí)又要擴(kuò)展方便,能適應(yīng)各種不同類型的單片機(jī)應(yīng)用系統(tǒng)。隨著集成電路技術(shù)的發(fā)展,出現(xiàn)了硬件可重構(gòu)的CPLD/FPGA和高速、高集成度的SOC單片機(jī)。在單片機(jī)最小系統(tǒng)設(shè)計(jì)中,將CPLD/FPGA和SOC單片機(jī)相結(jié)合,使得最小系統(tǒng)的硬件電路可重構(gòu),是解決高效率和通用性矛盾的有效途徑。將可重構(gòu)的單片機(jī)最小系統(tǒng)應(yīng)用于電子信息類專業(yè)的實(shí)驗(yàn)教學(xué)以及科技實(shí)踐中,可以有效的提高創(chuàng)新型教學(xué)水平和提升電子系統(tǒng)的開發(fā)效率[1-4]??芍貥?gòu)的單片機(jī)最小系統(tǒng)的設(shè)計(jì)和應(yīng)用[5],為電子系統(tǒng)的靈活開發(fā)和重復(fù)利用打開了廣闊空間。
單片機(jī)最小系統(tǒng)選用美國芯科公司的集成混合信號(hào)系統(tǒng)級(jí)芯片C8051F360單片機(jī)。由于C8051F360片內(nèi)程序存儲(chǔ)器容量足夠大,已不需要擴(kuò)展程序存儲(chǔ)器,同時(shí)集成了10位A/D轉(zhuǎn)換器和10位D/A轉(zhuǎn)換器,除非分辨率和轉(zhuǎn)換速度難以滿足系統(tǒng)要求,很少需要擴(kuò)展A/D和D/A轉(zhuǎn)換器。在設(shè)計(jì)系統(tǒng)擴(kuò)展口時(shí),主要考慮人機(jī)交互設(shè)備、大容量(大于64kB)數(shù)據(jù)存儲(chǔ)器、FPGA等外部設(shè)備的擴(kuò)展。單片機(jī)最小系統(tǒng)設(shè)計(jì)方案如圖1所示。
C8051F360單片機(jī)有5個(gè)并行口P0~P4,按其功能可為3部分:第一部分用于外部數(shù)據(jù)存儲(chǔ)器擴(kuò)展接口,實(shí)際上就是構(gòu)成單片機(jī)的并行總線;第二部分I/O引腳用于單片機(jī)最小系統(tǒng)自身擴(kuò)展,如鍵盤中斷INT0、C2調(diào)試接口、異步串行通信等;第三部分用于通用I/O擴(kuò)展口??紤]到C8051F360單片機(jī)內(nèi)部振蕩器的精度可達(dá)2%,能滿足一般單片機(jī)系統(tǒng)的要求,為了節(jié)省單片機(jī)的I/O引腳,同時(shí)降低電磁干擾,單片機(jī)的系統(tǒng)時(shí)鐘由內(nèi)部振蕩器產(chǎn)生。復(fù)位電路采用專用復(fù)位芯片TCM811。TCM811芯片體積小,具有上電復(fù)位和手動(dòng)復(fù)位功能,可同時(shí)向單片機(jī)和LCD模塊提供低電平有效的復(fù)位信號(hào)。單片機(jī)最小系統(tǒng)的硬件原理框圖如圖2所示,CPLD內(nèi)部邏輯電路可通過Quartus II軟件設(shè)計(jì)。
C8051單片機(jī)與LCD模塊通過并行總線相連。通過對(duì)單片機(jī)和LCD模塊的時(shí)序分析,可用單片機(jī)地址總線中的A1、A0作為LCD模塊的RW、RS信號(hào),將單片機(jī)控制總線中WR和RD相與非作為LCD模塊的使能信號(hào)E。E信號(hào)的產(chǎn)生加一片選信號(hào)LCDCS。
采用CPLD設(shè)計(jì)了編碼式鍵盤接口。Y0~Y3為4根列掃描信號(hào)輸出線,輪流將每一列置為低電平。X0~X3為4根行輸入線,當(dāng)沒有鍵按下時(shí),X0~X3被外部上拉電阻拉成高電平。2位二進(jìn)制計(jì)數(shù)器CNT4A和2-4譯碼器DECODER用于產(chǎn)生鍵盤列掃描信號(hào)。行值編碼器ENCODE將行輸入信號(hào)轉(zhuǎn)換成2位二進(jìn)制編碼。因?yàn)镃NT4A的輸出C1、C0確定了閉合的鍵處于哪一列,ENCODE的輸出C3、C2確定了閉合鍵處于哪一行,C3~C0實(shí)際上構(gòu)成了閉合鍵的4位鍵值。CNT16A為消抖計(jì)數(shù)器,當(dāng)鍵閉合時(shí)間超過16ms時(shí),CNT16A輸出由高到低的鍵有效信號(hào)DAV。DAV一方面作為鍵值寄存器REG4鎖存信號(hào)將鍵值鎖存,另一方面作為單片機(jī)的外部中斷INT0的請(qǐng)求信號(hào)。鍵值數(shù)據(jù)端口采用三態(tài)輸出,由TS4模塊實(shí)現(xiàn)。
采用RC振蕩器來產(chǎn)生KEYCLK信號(hào)。用CPLD實(shí)現(xiàn)的改進(jìn)型RC振蕩器原理圖[7]如圖3所示。圖3中G2輸出和G3的輸入雖然連在一起,但不能共用一根I/O引腳;要注意RC振蕩器的振蕩頻率不能太低,否則雖然能產(chǎn)生振蕩波形,致使鍵盤接口中的計(jì)數(shù)器工作不正常。
圖3 CPLD實(shí)現(xiàn)的RC振蕩器
數(shù)字化語音存儲(chǔ)與回放系統(tǒng)是一個(gè)典型的電子系統(tǒng),其系統(tǒng)框圖如圖4所示。利用上述單片機(jī)最小系統(tǒng),配以鍵盤顯示電路、外部數(shù)據(jù)存儲(chǔ)器、放大濾波電路,就可以實(shí)現(xiàn)語音存儲(chǔ)回放系統(tǒng)的硬件電路。
雖然C8051F360單片機(jī)內(nèi)部含有1KB的XRAM,但對(duì)語音存儲(chǔ)與回放系統(tǒng)來說,僅靠單片機(jī)內(nèi)部的數(shù)據(jù)存儲(chǔ)器是無法滿足需要的。當(dāng)外部擴(kuò)展的數(shù)據(jù)存儲(chǔ)器的容量大于64K時(shí),可采用存儲(chǔ)器分頁的方法進(jìn)行擴(kuò)展,將容量為2N的存儲(chǔ)器劃分為容量為2L(L小于16)的存儲(chǔ)頁面,單片機(jī)通過頁地址選中其中一頁,然后再訪問頁內(nèi)存儲(chǔ)單元。通過FPGA可以輕松的實(shí)現(xiàn)存儲(chǔ)器擴(kuò)展,充分體現(xiàn)了硬件可重構(gòu)單片機(jī)最小系統(tǒng)擴(kuò)展的靈活性。
圖4 數(shù)字化語音存儲(chǔ)與回放電路
采用SOC單片機(jī)和CPLD實(shí)現(xiàn)的單片機(jī)最小系統(tǒng)具有集成度高、資源豐富、系統(tǒng)擴(kuò)展方便的特點(diǎn),已廣泛應(yīng)用于大學(xué)生電子設(shè)計(jì)競(jìng)賽、本科生畢業(yè)設(shè)計(jì)、大學(xué)生創(chuàng)新計(jì)劃等實(shí)踐教學(xué)環(huán)節(jié),也可用于科研項(xiàng)目的前期預(yù)研。實(shí)踐證明,通過將CPLD/FPGA引入單片機(jī)系統(tǒng)設(shè)計(jì),使硬件電路可以像軟件一樣修改,可有效縮短電子系統(tǒng)的開發(fā)時(shí)間,提高設(shè)計(jì)靈活度。對(duì)教學(xué)儀器的研發(fā)、單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)具有借鑒意義。
[1] 查建中.研究型大學(xué)必須改革本科教育以培養(yǎng)大批創(chuàng)新人才[J].高等工程教育研究,2010,(5):14-25.
[2] 姜麗華,趙紅艷.創(chuàng)新能力培養(yǎng)學(xué)科與活動(dòng)課程相結(jié)合[J].教育科學(xué),2010,(10):51-54.
[3] 畢立恒,劉玉賓.一種實(shí)用單片機(jī)和CPLD最小應(yīng)用系統(tǒng)的設(shè)計(jì)[J].自動(dòng)化技術(shù)及應(yīng)用,2009,(8):111-113.
[4] Ian Grout.基于FPGA和CPLD的數(shù)字系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2009:405-438
[5] 秦興,王文,李為健,等.基于FPGA的硬件可重構(gòu)數(shù)控系統(tǒng)的研制[J].儀器儀表學(xué)報(bào).2002,23(3):407-409.