一,、引言
單片機(jī)市場(chǎng)可以用巨無(wú)霸來(lái)形容,,其中51 單片機(jī)使用者就更多了,針對(duì)51 單片機(jī)無(wú)需更多的介紹,,這里必須強(qiáng)調(diào)一點(diǎn),,只要你精通了51 單片機(jī),以后在實(shí)際工作中選用其它單片機(jī)也很容易了,,這就是初學(xué)者學(xué)習(xí)51 單片機(jī)的價(jià)值,。選擇51 單片機(jī)學(xué)習(xí)入門容易,倒不是說(shuō)51 系列單片機(jī)比別的型號(hào)簡(jiǎn)單,,其實(shí)在8 位單片機(jī)家族中,,51 系列單片機(jī)算是復(fù)雜的,但51 單片機(jī)在中國(guó)推廣最徹底,,教程也是最豐富,,基本不用看英文資料就能學(xué)好,所以特別適合初學(xué)者學(xué)習(xí)用,。
下面說(shuō)說(shuō)CPLD,,從近來(lái)跟學(xué)生和愛(ài)好者交往中發(fā)現(xiàn),初學(xué)者都很“討厭”它,,問(wèn)我為什么要把單片機(jī)和CPLD 放一塊兒,,那樣不是增加了學(xué)習(xí)的難度嗎,?其實(shí)深入學(xué)習(xí)單片機(jī)后,你就會(huì)發(fā)現(xiàn),,單獨(dú)一片單片機(jī)芯片,,實(shí)在是不夠用,稍微復(fù)雜的系統(tǒng)都會(huì)缺少接口資源,,IO 口不夠用,。我們學(xué)單片機(jī)不能僅僅局限于LED(發(fā)光二極管,數(shù)碼管等)驅(qū)動(dòng),,輸入還需要鍵盤,、ADC,輸出需要LCD,、DAC 等,,當(dāng)把這些對(duì)象同時(shí)放在一個(gè)系統(tǒng)當(dāng)中時(shí),就需要用到很多其它分離的接口IC(芯片),,各種邏輯IC,。
學(xué)完單片機(jī)后大家都會(huì)知道這些芯片:如74373,7432,,74138……隨著數(shù)字電子技術(shù)的發(fā)展,,一種新的器件正在被廣泛應(yīng)用,那就是CPLD(ComplexProgrammable Logic Device) 復(fù)雜可編程邏輯器件,,通俗的說(shuō)就是可以把以上那些分離器件都放進(jìn)去的一種可以二次開(kāi)發(fā)的IC.關(guān)于CPLD 的詳細(xì)介紹大家可以自己在網(wǎng)上瀏覽,,很多很多。
基于此,,本刊用這篇文章深入淺出的介紹一種采用51 單片機(jī)和CPLD 構(gòu)建復(fù)雜電路系統(tǒng)的設(shè)計(jì)思想,。
二、單片機(jī)系統(tǒng)中幾個(gè)典型電路介紹
首先從熟悉的最小系統(tǒng)電路電路說(shuō)起,,如圖1所示,,圖中用網(wǎng)絡(luò)標(biāo)號(hào)實(shí)現(xiàn)電路連接,這樣繪制的電路圖清晰整潔,,U1 是經(jīng)典的51 單片機(jī) IC,,復(fù)位電路和晶振電路是傳統(tǒng)電路,這里C5 電容是靠近單片機(jī)VCC 引腳的,,用來(lái)對(duì)電源濾波,,圖中其它芯片VCC 附近都有相同功能的濾波電容。U2 是經(jīng)典的低八位地址鎖存電路,,這里的74373 也可以用74573 代替,,U3 是地址譯碼電路,74138 實(shí)現(xiàn)連續(xù)8 個(gè)地址(1### #### #### #000 ~ 1####### #### #111,,# 是無(wú)關(guān)位,,可以是0 也可以是1,,取決于電路其它部分的需要)對(duì)象擴(kuò)展。
圖1 MCU最小系統(tǒng)原理圖
51 單片機(jī)給大家推薦STC 的89 或90 系列,,其中90 系列已經(jīng)有片內(nèi)ADC 了,,需要特別強(qiáng)調(diào)的是, 隨著FLASH 技術(shù)的成熟,,片內(nèi)FLASH ROM從8K 到64K 任選,,已經(jīng)足夠用了,所以現(xiàn)在很少有單片機(jī)系統(tǒng)外擴(kuò)ROM 了,,這樣使得EA/VPP 和PSEN 引腳失去了原先的功能了,,STC 的51 單片機(jī)已經(jīng)將這兩個(gè)引腳發(fā)展成P4 口了。
復(fù)雜的系統(tǒng)必然有很多輸入輸出接口,,如圖2所示,,U5 是數(shù)據(jù)鎖存器74273,擴(kuò)展一個(gè)8bits 數(shù)據(jù)輸出端口,,U6 是三態(tài)數(shù)據(jù)緩沖器74573,,擴(kuò)展一個(gè)8bits 數(shù)據(jù)輸入端口,分別用7432 實(shí)現(xiàn)讀寫時(shí)序接口匹配,。
圖2 MCU端口口擴(kuò)展原理圖
經(jīng)典LCD1602 接口如圖3 所示,,這里7408、7402 邏輯門用來(lái)實(shí)現(xiàn)6800 時(shí)序(讀寫信號(hào)有獨(dú)立接口的是8080 時(shí)序,,這里只有使能信號(hào)E,需要外邏輯電路將讀寫信號(hào)相與合并使用),。
圖3 LCD1602接口電路原理圖
以上給出的系統(tǒng)還算不上是復(fù)雜系統(tǒng),,總共采用了8 塊IC,一個(gè)實(shí)現(xiàn)特定功能的系統(tǒng)往往更復(fù)雜,,需要采用的IC 會(huì)更多,。能不能把這些分離的器件用CPLD 來(lái)實(shí)現(xiàn)呢?答案是肯定的,。
三,、單片機(jī)與CPLD接口設(shè)計(jì)
以上經(jīng)典電路中,系統(tǒng)擴(kuò)展使用了單片機(jī)總線模式,,各個(gè)對(duì)象采用的三總線連接,,根據(jù)這種電路結(jié)構(gòu),這里給出一種單片機(jī)同CPLD 的總線接口模式,,如圖4 所示,。
圖4 單片機(jī)與CPLD總線接口示意圖
這里選擇A l t e r a 公司早期的EPM7064SLC44-10 為例,這是很老的一款CPLD器件,,是5V 供電,。其實(shí)選擇什么CPLD 型號(hào)并不是關(guān)鍵,,關(guān)鍵是學(xué)習(xí)用CPLD 代替分立器件的思想和方法。數(shù)據(jù)總線P0 口同CPLD 一般IO 口相連,,完成數(shù)據(jù)和低8 位地址傳送,;控制總線包括單片機(jī)讀寫控制信號(hào)Rd(P3.7) 和Wr(P3.6),以及地址鎖存信號(hào)ALE(Address Lock Enable)和高位地址線A15(P2.7) 通過(guò)CPLD 的全局信號(hào)引腳輸入,,包括全局時(shí)鐘輸入:INPUT/GCLK1,, 全局清零輸入INPUT/GCLRn, 全局使能輸入INPUT/OE1,,INPUT/OE2,, 這幾個(gè)信號(hào)有專用連線與CPLD 中每個(gè)宏單元相連,保證信號(hào)到每個(gè)宏單元的延時(shí)相同并且延時(shí)最短,。實(shí)際電路原理圖如圖5所示,。
圖5 MCU與CPLD接口電路原理圖
這樣一塊CPLD 器件就代替以上除單片機(jī)外的7 塊芯片了,在電路板上將節(jié)約大片的PCB 面積,,好處還遠(yuǎn)不止這些,,因?yàn)镃PLD 是二次開(kāi)發(fā)的,其內(nèi)部電路可以根據(jù)需要再次設(shè)計(jì),,反復(fù)修改,,極大的增加了電路設(shè)計(jì)的靈活性。
讀者看到這里,,肯定對(duì)自己動(dòng)手設(shè)計(jì)CPLD 電路充滿了期待,,下面介紹如何借助工具軟件開(kāi)發(fā)CPLD 內(nèi)部電路。
四,、CPLD開(kāi)發(fā)介紹
一般來(lái)說(shuō),,CPLD 生產(chǎn)商都有配套的開(kāi)發(fā)工具, 這里介紹ALTERA 公司的一款易學(xué)易用的CPLD 開(kāi)發(fā)軟件MaxPlusII,,雖然該公司最新版的軟件是QuartusII,,但針對(duì)某些具體的器件,選擇MaxPlusII 還是很方便的,。該軟件入門教程請(qǐng)到百度搜索《MaxplusII 設(shè)計(jì)CPLD 入門》,,很多手把手的資料。
最容易的電路設(shè)計(jì)方法不外乎是直接繪制電路原理圖,。采用原理圖輸入,,初學(xué)者甚至不需要額外學(xué)習(xí)就可以從事CPLD 設(shè)計(jì)。我們只需要在軟件平臺(tái)上從集成器件庫(kù)調(diào)出對(duì)應(yīng)的器件,,繪制相同的電路原理圖即可,,實(shí)現(xiàn)以上功能電路原理圖繪制完成后如圖6 所示。
圖6 原理圖輸入設(shè)計(jì)CPLD
該原理圖編譯成功后,,我們還需要根據(jù)實(shí)際電路連接圖分配綁定引腳,,引腳綁定如圖7 所示,,再編譯就可以得到可供下載的文件*.pof 了,最后只需要將下載電纜連接到電路板上,,仍然通過(guò)該軟件即可完成下載,。
正因?yàn)镃PLD 的IO 腳是可以隨意分配的,通常我們會(huì)結(jié)合實(shí)際的PCB 板設(shè)計(jì)布線的便利來(lái)調(diào)整引腳分配,,引腳分配更改后,,只需要重新分配引腳再編譯下載即可。
圖7 CPLD引腳綁定
除了原理圖輸入外,,復(fù)雜的CPLD 器件開(kāi)發(fā),,一般用硬件描述語(yǔ)言設(shè)計(jì),常用的硬件描述語(yǔ)言有VHDL,,VerilogHDL,,這些硬件描述語(yǔ)言的掌握是需要系統(tǒng)學(xué)習(xí)的,基于硬件描述語(yǔ)言的片上系統(tǒng)設(shè)計(jì),,F(xiàn)PGA 開(kāi)發(fā)目前已經(jīng)成為高薪職業(yè),,社會(huì)需求巨大。用硬件描述語(yǔ)言開(kāi)發(fā)CPLD 的方法與前面的原理圖輸入法類似,,也需要編譯糾錯(cuò),,時(shí)序仿真,引腳綁定,,最后編譯下載即可,。
給CPLD 下載完程序,這塊芯片就是你所設(shè)計(jì)的邏輯時(shí)序電路了,,通常比分離元器件功耗更低,,性能更優(yōu)。
真正是基于上述思想,, 筆者將51 單片機(jī)同CPLD 相結(jié)合,,開(kāi)發(fā)了一款適合初學(xué)者使用的學(xué)習(xí)板--Mini51 板,。
五,、Mini51板概述
Mini51 板體積小巧(11×8 厘米),適合用戶隨身攜帶,,只要PC 機(jī)加一根USB 線就可以做硬件實(shí)驗(yàn)了,,特別適合大專院校學(xué)生和愛(ài)好者自主學(xué)習(xí)用。實(shí)物圖如圖8 所示,。
圖8 Mini51板實(shí)物圖
Mini51 板系統(tǒng)結(jié)構(gòu)如圖9 所示,,該板采用單片機(jī)+CPLD 結(jié)構(gòu),單片機(jī)為主,,CPLD 為輔,。與單片機(jī)相連的模塊有:P1 口接發(fā)光二極管,、蜂鳴器、繼電器,、AD/DA,,P4 口(STC 單片機(jī)PLCC-44封裝特有)接實(shí)時(shí)時(shí)鐘DS1302、紅外接收器,,P3口接232 電平轉(zhuǎn)換電路和4 個(gè)按鍵,,單片機(jī)P0 口和P2 口以及P3.6、P3.7 作為總線使用,,CPLD 直接驅(qū)動(dòng)4 位數(shù)碼管,,并給LCD 提供使能信號(hào),單片機(jī)和CPLD 引腳分別有擴(kuò)展接口,,板上集成5V穩(wěn)壓電源,,可以外接DC9V 電源,也可以從計(jì)算機(jī)USB 口直接取5V 電源,。
圖9 Mini51板結(jié)構(gòu)圖
單片機(jī)首選STC89C5X,, 該系列單片機(jī)內(nèi)部集成MAX810/STC810 專用復(fù)位電路, 內(nèi)置看門狗,, 超強(qiáng)抗干擾,, 輕松過(guò)2KV/4KV 快速脈沖干擾(EFT), 加密性強(qiáng),,STC89C52RC ~STC89C58RD+ 系列與Intel8051 管腳兼容,,寬電壓,5.5V ~ 3.4V 給復(fù)位信號(hào)后能正常工作,,PQFP-44,,PLCC-44 封裝有P4 口。
STC89C51RC 有3 個(gè)定時(shí)器/ 計(jì)數(shù)器,,1280 字節(jié)大容量?jī)?nèi)部數(shù)據(jù) RAM ,,特別是該系列單片機(jī)支持ISP 編程,開(kāi)發(fā)無(wú)需高價(jià)的編程器,,可實(shí)現(xiàn)遠(yuǎn)程升級(jí),,在ISP 下載編程時(shí)可設(shè)置6 或12 時(shí)鐘/ 機(jī)器周期模式,在6 時(shí)鐘模式,,比普通51 速度快一倍,。
CPLD 有兩種型號(hào)可選,ALTERA 的EPM7064和ATMEL 的ATF1504,。