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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 雙口RAM在嵌入式系統(tǒng)調(diào)試中的應(yīng)用

          雙口RAM在嵌入式系統(tǒng)調(diào)試中的應(yīng)用

          作者: 時(shí)間:2002-02-01 來源: 收藏

          IDT7130在嵌入式

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

          PLC

          為較合理地解決目前可編程邏輯控制器(PLC)自身的軟硬件分配及其與上位機(jī)通信協(xié)調(diào)工作中存在的問題,筆者基于ISA總線自行設(shè)計(jì)了一種插卡式可編程控制器。該嵌入式PLC實(shí)質(zhì)是一個(gè)智能化I/O接口卡,CPU采用AT89C52,實(shí)驗(yàn)用上位機(jī)為Pentium100。主從CPU協(xié)同工作中,要注意雙方信息交換實(shí)時(shí)性高;其次傳輸信息容量大,數(shù)據(jù)傳送要求準(zhǔn)確無誤;第三硬件設(shè)計(jì)受機(jī)箱空間限制,不能過于復(fù)雜龐大。

          目前已有的主從CPU間的通信方式,或因結(jié)構(gòu)復(fù)雜,或因傳遞效率低,都不能很好地滿足本系統(tǒng)的要求,而近年來新型的雙口RAM芯片卻獨(dú)具特點(diǎn):具有兩套完全獨(dú)立的數(shù)據(jù)線、地址線、讀/寫控制線,允許兩個(gè)CPU對雙端口的同一單元進(jìn)行同時(shí)存??;具有兩套完全獨(dú)立的中斷邏輯來實(shí)現(xiàn)兩個(gè)CPU之間的握手控制信號;具有兩套獨(dú)立的邏輯,保證兩個(gè)CPU同時(shí)對同一單元進(jìn)行讀/寫操作的正確性;兼容性強(qiáng),讀/寫時(shí)序與普通單端口完全一樣,存取速度完全滿足各種CPU的要求。

          IDT7130是美國IDT公司采用高性能的CMOS工藝生產(chǎn)的高速1K×8雙端口靜態(tài)RAM,典型功耗550mW,最大存取時(shí)間有25/35/55/100ns,可采用中斷、硬件、令牌、和軟件四種方式來協(xié)調(diào)信息交換雙方。該芯片運(yùn)用有別于同類的中斷標(biāo)志進(jìn)行總線仲裁:存儲陣列中的×3FEH×3FFH單元被用做通信郵箱,左端口向×3FFH寫入訪問的同時(shí),右端口的中斷標(biāo)志被設(shè)置,直到右端口進(jìn)行讀取×3FFH時(shí)清除,與此類似。中斷時(shí)序關(guān)系示意如圖1,其中tINStINR分別為ns級的中斷設(shè)置時(shí)間和中斷清除時(shí)間,其提供的中斷信號的有效時(shí)間可以滿足各種CPU的要求。

          嵌入式PLC系統(tǒng)采用IDT7130作為與上位機(jī)共享的通信數(shù)據(jù)區(qū),如圖2所示,該器件的高集成度大大簡化了信息交換窗口的接口硬件邏輯設(shè)計(jì),有效縮小系統(tǒng)規(guī)模和減小印制電路板面積。配合ISA總線采用中斷方式傳送信息,不僅可滿足上位機(jī)多任務(wù)控制系統(tǒng)的需要,還可提高本系統(tǒng)實(shí)時(shí)數(shù)據(jù)的處理時(shí)效。IDT7130(U6) 在上位機(jī)地址分配空間,可通過GAL16V8(U7)J2靈活選擇為0D0000000~03FF、0D8000000~03FF0E0000000~03FF、0E8000000~03FF;在嵌入式PLC中占用地址為2000H~23FFH。在使用中斷方式中,筆者將左端信號線接上拉電阻拉至高電平,才能保證中斷信號的產(chǎn)生,同樣將兩信號也接上拉電阻,保證中斷申請能被及時(shí)清除。

           

          雙口RAM在系統(tǒng)調(diào)試中的應(yīng)用

          單片機(jī)系統(tǒng)的調(diào)試通常是在開發(fā)仿真系統(tǒng)上完成,后者把它的硬件(CPU)和軟件資源(被調(diào)試程序和參數(shù))暫時(shí)出借給前者,并模擬其工作環(huán)境,對其軟、硬件進(jìn)行調(diào)試和修改。

          嵌入式PLC屬于單片機(jī)系統(tǒng),在調(diào)試過程中沒有購買價(jià)格昂貴的仿真裝置,而是充分利用雙端口RAM IDT7130的中介作用,以及上位機(jī)操作方便、運(yùn)行結(jié)果直觀的特點(diǎn),通過編寫一特殊程序,將其固化在89C52的EPROM中,根據(jù)該程序中設(shè)置的標(biāo)志條件,把硬件電路和軟件模塊按照分塊、聯(lián)調(diào)的順序進(jìn)行調(diào)試,具體做法結(jié)合圖3所示流程描述如下:

          1)在上位機(jī)中以子程序的形式編寫好將要調(diào)試的嵌入式PLC系統(tǒng)的程序功能模塊,借助于工具軟件ASM51將其匯編為二進(jìn)制(.BIN)文件。

          2)在上位機(jī)執(zhí)行DEBUG命令把該二進(jìn)制文件送到雙端口RAM對應(yīng)下位機(jī)地址#2100H開始的存儲單元中。

          3)在下位機(jī)源程序中對#2000H和#2001H兩個(gè)存儲單元清零操作,當(dāng)程序執(zhí)行到RESET處,在這兩個(gè)存儲單元中定義了兩個(gè)程序開始運(yùn)行的標(biāo)志:99H和88H,從上位機(jī)可以利用DEBUG命令對這兩個(gè)標(biāo)志進(jìn)行改變,以控制嵌入式PLC中固化的程序是否繼續(xù)往下執(zhí)行;為了確認(rèn)兩個(gè)標(biāo)志被正確設(shè)置和程序往下運(yùn)行的情況,在存儲單元#2002H和#2003H中同樣定義了兩個(gè)確認(rèn)標(biāo)志:99H和88H。

          4)運(yùn)行標(biāo)志設(shè)置正確后,執(zhí)行調(diào)用語句LCALL 2100H,使得程序指針PC指向所要調(diào)試的程序功能塊首地址處,開始調(diào)用執(zhí)行該程序功能模塊;子程序是否運(yùn)行正常,并且是否返回可通過存儲單元#2002H和#2003H標(biāo)志由99H和88H變?yōu)?2H來確認(rèn)。

          5)另外在硬件方面可借助輔助調(diào)試手段,使用示波器來測試P1口高四位的波形變化狀況,來判斷程序的運(yùn)行情況。

          6)最后返回RESET繼續(xù)判斷運(yùn)行標(biāo)志調(diào)試程序。

          7)結(jié)合中斷產(chǎn)生原理,在IDT7130的下位機(jī)地址2100H處裝入中斷服務(wù)程序,上位機(jī)向存儲單元#23FEH中寫1產(chǎn)生中斷,下位機(jī)轉(zhuǎn)而執(zhí)行中斷功能調(diào)試。

          利用這種調(diào)試方法,可以通過上位機(jī)在雙口RAM中設(shè)置每一程序模塊的啟動(dòng)和確認(rèn)標(biāo)志位,即可方便地控制單個(gè)模塊的調(diào)試或多個(gè)模塊的聯(lián)調(diào),最終實(shí)現(xiàn)系統(tǒng)的功能。

           

          結(jié)語

          實(shí)驗(yàn)證明,本系統(tǒng)采用雙口RAM作為主從CPU的中介,是一種實(shí)用、高效的系統(tǒng)設(shè)計(jì)方法。該方法使得信息交換方便快速可靠。利用雙口RAM的共享特點(diǎn),可將上下位機(jī)自身構(gòu)成一種開發(fā)裝置,簡捷有效地實(shí)現(xiàn)工程環(huán)境下的在線調(diào)試?!?/font>

          系統(tǒng)中的應(yīng)用


          關(guān)鍵詞: 存儲器

          評論


          相關(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); })();