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