<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 單片機(jī)+CPLD結(jié)構(gòu)體系在電子設(shè)計(jì)中的應(yīng)用

          單片機(jī)+CPLD結(jié)構(gòu)體系在電子設(shè)計(jì)中的應(yīng)用

          作者: 時(shí)間:2012-10-19 來源:網(wǎng)絡(luò) 收藏

          自20世紀(jì)80年代引入我國以來,學(xué)習(xí)和應(yīng)用的熱潮始終不減,特別是MCS51系列。這是由的特點(diǎn)決定的。實(shí)際上,從單片機(jī)/應(yīng)用通用數(shù)字集成電路系統(tǒng),到廣泛應(yīng)用單片機(jī),是我國在智能化應(yīng)用水平上質(zhì)的飛躍。據(jù)統(tǒng)計(jì)分析,單片機(jī)的銷量單片機(jī)/到目前為止依然逐年遞增,而且在很長(zhǎng)一段的時(shí)間內(nèi),單片機(jī)依然會(huì)是的主角(雖然這一地址已經(jīng)受到了的挑戰(zhàn))。

          本文引用地址:http://www.ex-cimer.com/article/189840.htm

          1 純單片機(jī)系統(tǒng)優(yōu)缺點(diǎn)

          ①大量單片機(jī)/CPLD的外圍芯片和接口電路使得單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)變得簡(jiǎn)單而且快捷,新型單片機(jī)的上市和高級(jí)語言的支持(如C51)進(jìn)一步延長(zhǎng)了單片機(jī)的壽命。

          ②長(zhǎng)期穩(wěn)定的發(fā)展和使單片機(jī)性價(jià)比非常高,而且單片機(jī)/CPLD積累了大量的資料并擁有了大量的工程技術(shù)為員。這一點(diǎn)是CPLD目前難以達(dá)到的。

          但是,單片機(jī)的缺點(diǎn)也有目共睹:

          ①低速。即使是高速度單片機(jī)也只能工作在μs級(jí),這是由單片機(jī)串行工作的特點(diǎn)所決定的。

          ②低可靠性。雖然單片機(jī)/CPLD目前有很多器件與設(shè)計(jì)在一定程序上解決了部分問題,如看門狗的廣泛應(yīng)用,但在某些情況下瞬間的復(fù)位也會(huì)造成嚴(yán)重后果。

          2 純CPLD設(shè)計(jì)的優(yōu)缺點(diǎn)

          即使單純單片機(jī)/CPLD的單片機(jī)結(jié)構(gòu)能完成的功能,在某些情況下也寧可使用純數(shù)字電路完成。而當(dāng)前開始流行的CPLD,則不但克服了單片機(jī)的缺點(diǎn),而且由于可采用VHDL語言編程,進(jìn)一步單片機(jī)/CPLD打破了軟硬件工程師的界限,加速了產(chǎn)品的開發(fā)過程,使純數(shù)字電路的設(shè)計(jì)變得簡(jiǎn)單。人們甚至在討論用C作為下一代硬件描述語言。

          難怪有專家指出,的單片機(jī)時(shí)代即將過去,而以PLD為核心的EDA(電子設(shè)計(jì)自動(dòng)化)將是單片機(jī)/CPLD未來設(shè)計(jì)的方向。由于超大規(guī)模集成電路技術(shù)的發(fā)展,單片PLD芯片上已經(jīng)可以集成上百萬門,就系統(tǒng)規(guī)模而言,將單片機(jī)設(shè)計(jì)在內(nèi)也沒什么問題。美國的可編程器件廠商已經(jīng)以軟核和硬核嵌入兩種形式(將單片機(jī)電路嵌入PLD)為設(shè)計(jì)人員提供幫助。PLD器件取代單片機(jī)是早晚的事。但是,在我國當(dāng)前的普遍應(yīng)用中,單純依靠PLD器件還有點(diǎn)早,原因如下:

          ①由于歷史單片機(jī)/CPLD的原因,我國的電子設(shè)計(jì)人員大部分應(yīng)用的是MCS51系列單片機(jī),還沒聽說哪家公司提供軟核或硬核集成。而讓這么多人改學(xué)其它系列單片機(jī)還需要一段時(shí)間,而且原有的程序更使人不愿改動(dòng)。

          ②單片機(jī)價(jià)格低廉,而PLD如果增加單片機(jī)內(nèi)核的話,至少在目前形勢(shì)下價(jià)格會(huì)比較昂貴。

          所以,由于單片機(jī)和PLD的互補(bǔ)性,利用單片機(jī)加PLD的結(jié)構(gòu)至少在近期內(nèi)將一種較好的選擇。下面通過作者設(shè)計(jì)的實(shí)例,介紹MCS51+EMP703S系的特點(diǎn)及注意事項(xiàng)。

          3 單片機(jī)+CPLD系設(shè)計(jì)實(shí)例

          本設(shè)計(jì)用于單片機(jī)/CPLD自動(dòng)化控制,設(shè)計(jì)要求如圖1所示。

          對(duì)于一個(gè)熟悉單片機(jī)系統(tǒng)設(shè)計(jì)的工程師而言,上述設(shè)計(jì)不會(huì)有技術(shù)上的困難,問題在于:

          ①要用兩個(gè)全雙工串口;

          ②要求比較多的輸入輸出口。如果用傳統(tǒng)設(shè)計(jì)方法,勢(shì)必要用比較多的芯片,電路板的設(shè)計(jì)也較麻煩,一旦設(shè)計(jì)有誤,必須重新設(shè)計(jì)整個(gè)電路板,費(fèi)時(shí)、費(fèi)力、費(fèi)錢。而采用MCS51+EMP7032S設(shè)計(jì)后,基本上做到了模塊化設(shè)計(jì),電路的修改只是編程而已。從開始設(shè)計(jì)到定型所用的時(shí)間,基本上就是制作電路板的時(shí)間。由于設(shè)計(jì)了輸出信號(hào)鎖存,完全避免了單片機(jī)程序跑飛和看門狗復(fù)位所引起的輸出的跳變,這時(shí)設(shè)備完全至關(guān)重要。圖2是設(shè)計(jì)原理電路圖。

          從設(shè)計(jì)的原理圖可以看出,主要部分單片機(jī)/CPLD只需要兩片集成電路:?jiǎn)纹瑱C(jī)AT89C51和CPLD——EPM7032S,并且電路板采用模塊化設(shè)計(jì),預(yù)留了擴(kuò)展接口,只需要配上不同的處理模塊,就可以實(shí)現(xiàn)數(shù)據(jù)采集、鍵盤掃描、顯示驅(qū)動(dòng)和繼電器控制等許多功能。單片機(jī)和EPM7032S之間采用了類似SPI接口的通信方法。如圖2所示。采用這種方法,既實(shí)現(xiàn)了單片機(jī)和CPLD之間的通信,又具有靈活性,并且節(jié)約了大量的端口資源。

          EPM7032S有36個(gè)I/O口,除去用于和單片機(jī)通信的7個(gè)端口,還有29個(gè)端口可以使用。可滿足大部分對(duì)于端口擴(kuò)展設(shè)計(jì)的需求。圖3是為EPM7032編寫的測(cè)試程序的波形仿真圖。

          圖3中:CLK為同步時(shí)鐘;SEND為數(shù)據(jù)接收;END為SEND信號(hào)的控制端;S為位選端,用業(yè)控制串行通信端口選擇;RXD、TDX為單片機(jī)和EPM7032之間的串行通信端口;RXD1、TXD1、RXD2、TDX2為串行通信擴(kuò)展口。這種方案,已經(jīng)過多次檢驗(yàn),對(duì)于節(jié)省PCB板的面積和布線難度、提高設(shè)計(jì)可靠性和提高設(shè)計(jì)效率都非常有幫助。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();