摘 要:介紹了一種利用雙口RAM實(shí)現(xiàn)DSP與單片機(jī)高速數(shù)據(jù)通信的方法,給出了它們之間的接口電路以及軟件實(shí)現(xiàn)方案。
1 引言
數(shù)字信號(hào)處理器(DSP)是一種適合于實(shí)現(xiàn)各種數(shù)字信號(hào)處理運(yùn)算的微處理器,具有下列主要結(jié)構(gòu)特點(diǎn):(1)采用改進(jìn)型哈佛(Harvard)結(jié)構(gòu),具有獨(dú)立的程序總線和數(shù)據(jù)總線,可同時(shí)訪問指令和數(shù)據(jù)空間,允許實(shí)際在程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器之間進(jìn)行傳輸;(2)支持流水線處理,處理器對(duì)每條指令的操作分為取指、譯碼、執(zhí)行等幾個(gè)階段,在某一時(shí)刻同時(shí)對(duì)若干條指令進(jìn)行不同階段的處理;(3)片內(nèi)含有專門的硬件乘法器,使乘法可以在單周期內(nèi)完成;(4)特殊的指令結(jié)構(gòu)和尋址方式,滿足數(shù)字信號(hào)處理FFT、卷積等運(yùn)算要求;(5)快速的指令周期,能夠在每秒鐘內(nèi)處理數(shù)以千萬(wàn)次乃至數(shù)億次定點(diǎn)或浮點(diǎn)運(yùn)算;(6)大多設(shè)置了單獨(dú)的DMA總線及其控制器,可以在基本不影響數(shù)字信號(hào)處理速度的情況下進(jìn)行高速的并行數(shù)據(jù)傳送。
由一片DSP加上存儲(chǔ)器、模/數(shù)轉(zhuǎn)換單元和外設(shè)接口就可以構(gòu)成一個(gè)完整的控制系統(tǒng),但這種方案要達(dá)到高速實(shí)時(shí)控制是不可行的。因?yàn)橐粋€(gè)實(shí)時(shí)控制系統(tǒng)一般需要完成數(shù)據(jù)采集、模/數(shù)轉(zhuǎn)換、分析計(jì)算、數(shù)/模轉(zhuǎn)換、實(shí)時(shí)過程控制以及顯示等任務(wù),單靠一片DSP來(lái)完成這些工作勢(shì)必會(huì)大大延長(zhǎng)系統(tǒng)對(duì)控制對(duì)象的控制周期,從而影響整個(gè)系統(tǒng)的性能。所以我們添加一個(gè)CPU,負(fù)責(zé)數(shù)據(jù)采集、模/數(shù)轉(zhuǎn)換、過程控制以及人機(jī)接口等任務(wù),使DSP專注于系統(tǒng)控制算法的實(shí)現(xiàn),充分利用它的高速數(shù)據(jù)處理能力。從性能價(jià)格比的角度出發(fā),這個(gè)CPU采用8位的51系列單片機(jī)。這時(shí),兩個(gè)CPU之間的數(shù)據(jù)共享就成了一個(gè)重要的問題。
采用雙口RAM(簡(jiǎn)稱DRAM)是解決CPU之間的數(shù)據(jù)共享的有效辦法。與串行通信相比,采用雙口RAM不僅數(shù)據(jù)傳輸速度高,而且抗干擾性能好。在筆者實(shí)驗(yàn)室研制的電力有源濾波器中,選用了TI公司的第三代DSP芯片TMS320C32和51系列單片機(jī)89C52作為控制系統(tǒng)的CPU。兩個(gè)CPU之間通過雙口RAM CY7C133完成數(shù)據(jù)交換。但在實(shí)際使用過程中遇到了89C52 與雙口RAM總線寬度不匹配的問題,需要進(jìn)行接口電路的設(shè)計(jì)。
2 雙口RAM CY7C133的內(nèi)部結(jié)構(gòu)和功能
CY7C133是CYPRESS公司研制的高速2K×16CMOS雙端口靜態(tài)RAM,具有兩套相互獨(dú)立、完全對(duì)稱的地址總線、數(shù)據(jù)總線和控制總線,采用68腳 PLCC封裝形式,最大訪問時(shí)間可以為25/35/55 ns。采用主從模式可以方便地將數(shù)據(jù)總線擴(kuò)展成32位或更寬。各引腳的功能如表1所示,內(nèi)部功能框圖如圖1所示。
CY7C133允許兩個(gè)CPU同時(shí)讀取任何存儲(chǔ)單元(包括同時(shí)讀同一地址單元),但不允許同時(shí)寫或一讀一寫同一地址單元,否則就會(huì)發(fā)生錯(cuò)誤。雙口RAM中引入了仲裁邏輯(忙邏輯)電路來(lái)解決這個(gè)問題:當(dāng)左右兩端口同時(shí)寫入或一讀一寫同一地址單元時(shí),先穩(wěn)定的地址端口通過仲裁邏輯電路優(yōu)先讀寫,同時(shí)內(nèi)部電路使另一個(gè)端口的信號(hào)有效,并在內(nèi)部禁止對(duì)方訪問,直到本端口操作結(jié)束。BUSY信號(hào)可以作為中斷源指明本次操作非法。在主從模式中,主芯片的信號(hào)接上拉電阻作為輸出,從芯片的信號(hào)作為寫禁止輸入。
3 DSP、單片機(jī)與雙口RAM之間的接口電路
89C52的地址總線寬度為16位,數(shù)據(jù)總線為8位;TMS320C32的數(shù)據(jù)總線寬度為32位,地址總線寬度為24位。而CY7C133的數(shù)據(jù)總線寬度為16位,地址總線寬度為11位,所以TMS320C32與雙口RAM的接口并無(wú)特別之處,但是89C52與雙口RAM之間的接口電路中就需要對(duì)89C52進(jìn)行總線擴(kuò)展了。具體做法是利用鎖存器74HC373的鎖存功能,通過對(duì)其使能信號(hào)的控制,進(jìn)行分時(shí)讀寫,實(shí)現(xiàn)數(shù)據(jù)總線的擴(kuò)展,即利用鎖存器作為虛擬總線。具體的讀寫過程、讀寫信號(hào)及鎖存器使能信號(hào)的產(chǎn)生將在下面詳細(xì)說明。DSP、單片機(jī)與雙口RAM之間的接口電路如圖2所示。
TMS320C32分配給雙口RAM的地址空間為0x800000h~0x8007FFh。通過三八譯碼器74HC138對(duì)A20~A23和STRB進(jìn)行譯碼,給出雙口RAM的片選信號(hào)CER。89C52分配給雙口RAM的地址空間為0x1000h~0x1FFFh。通過二四譯碼器74HC139對(duì)A13~A15進(jìn)行譯碼產(chǎn)生雙口RAM的片選信號(hào)CEL。雙口RAM每邊都有兩個(gè)讀/寫控制信號(hào),分別控制高位字節(jié)和低位字節(jié)的讀/寫,在使用時(shí)可以根據(jù)需要分別對(duì)數(shù)據(jù)的高位和低位進(jìn)行寫入操作。在圖2所示接口電路中,兩邊的兩個(gè)讀/寫控制信號(hào)分別被連接在一起,也就是說此時(shí)雙口RAM的讀寫都是同時(shí)讀寫16位數(shù)據(jù)。
圖2中雙口RAM CY7C133的讀寫信號(hào)以及鎖存器74HC373的使能信號(hào)的產(chǎn)生如圖3所示。其中,WR是89C52的寫控制信號(hào),RD是89C52的讀控制信號(hào),A0是89C52的地址最低位,A15是地址最高位,R/W是TMS320C32的讀寫控制信號(hào),BUSYL接89C52的P1口的一個(gè)引腳(具體可根據(jù)系統(tǒng)實(shí)際情形自行選擇,圖中未畫出),BUSYR接TMS320C32的READY信號(hào)。
下面討論一下89C52對(duì)雙口RAM的讀寫過程。當(dāng)89C52對(duì)雙口RAM進(jìn)行讀數(shù)據(jù)時(shí),由圖3可知此時(shí)A0應(yīng)為低電平,不妨假設(shè)地址為0x1000h,則存儲(chǔ)在雙口RAM中該地址處的16位數(shù)據(jù)同時(shí)被讀出,由于高8位數(shù)據(jù)線與89C52的8位數(shù)據(jù)線直接相連,所以高8位數(shù)據(jù)被立即讀入89C52中。同時(shí),根據(jù)圖3中各信號(hào)的相互邏輯關(guān)系不難判斷,U3的使能信號(hào)LE有效(高電平),OE無(wú)效(低電平),因而低8位數(shù)據(jù)被送入U(xiǎn)3 中鎖存起來(lái)。接著89C52再進(jìn)行一次讀操作,這時(shí)地址變?yōu)?x1001h,由于A0變成高電平,雙口RAM的讀使能信號(hào)變成無(wú)效電平,所以此次讀操作對(duì)雙口RAM不產(chǎn)生影響。再來(lái)看U3的使能信號(hào)LE和OE的變化情況,顯然LE變成了無(wú)效電平,而OE變成了有效電平,上次被鎖存的數(shù)據(jù)(即雙口RAM的低8位數(shù)據(jù))被送入89C52。當(dāng)89C52對(duì)雙口RAM進(jìn)行寫入操作時(shí),注意此時(shí)A0應(yīng)為高電平,不妨假設(shè)地址為0x100Ch,同樣可根據(jù)圖3判斷U2的使能信號(hào)LE和OE均為有效電平,因而數(shù)據(jù)被同時(shí)寫入雙口RAM中(即此時(shí)雙口RAM的高8位數(shù)據(jù)和低8位相同);接著89C52再進(jìn)行一次寫操作,此時(shí)地址變?yōu)?x100Dh,由于A0變成低電平,U2的片選為無(wú)效電平,U2被封鎖,數(shù)據(jù)寫入雙口RAM的高8位。從上面的分析可知,利用最低地址位A0的不同電平,89C52通過兩次連續(xù)的讀或?qū)懖僮鳎晒Φ貙?shí)現(xiàn)了對(duì)雙口RAM中數(shù)據(jù)的讀或?qū)?,只不過是讀入時(shí)是先讀入高8位,后讀入低8位;而寫入則是先寫入低8位,后寫入高8位。
4 軟件實(shí)現(xiàn)方案
雙口RAM必須采用一定的機(jī)制來(lái)協(xié)調(diào)左右兩邊CPU對(duì)它的讀寫操作,否則會(huì)出現(xiàn)讀寫數(shù)據(jù)的錯(cuò)誤。通??梢杂弥袛?、硬件、令牌和軟件這四種方式來(lái)協(xié)調(diào)雙方,本文采用的是軟件方式。從上面的分析中我們可以得知,在接口電路中實(shí)際上已經(jīng)利用89C52的最低地址位A0把雙口RAM的存儲(chǔ)空間分為奇、偶地址兩個(gè)空間。其中,奇地址空間專供89C52寫,偶地址空間專供89C52讀。那么我們只需對(duì)TMS320C32的軟件作相應(yīng)處理即可,也就是說,TMS320C32對(duì)雙口RAM的奇地址空間只讀,對(duì)偶地址空間只寫。這樣就避免了TMS320C32和89C52對(duì)雙口RAM同一地址單元的寫入操作。另外,在對(duì)雙口RAM進(jìn)行訪問之前,CPU首先對(duì)本端的BUSY信號(hào)進(jìn)行查詢,只有本端/BUSY信號(hào)無(wú)效時(shí)才進(jìn)行讀寫操作,進(jìn)一步保證了數(shù)據(jù)讀寫的可靠性。
5 結(jié)束語(yǔ)
通過雙口RAM實(shí)現(xiàn)雙CPU之間的數(shù)據(jù)通信,極大地提高了數(shù)據(jù)傳輸速度和可靠性,滿足了控制系統(tǒng)的實(shí)時(shí)、高速的控制要求。本文所設(shè)計(jì)的89C52與雙口RAM之間的接口電路簡(jiǎn)單實(shí)用,成功解決了它們總線匹配的問題,對(duì)其他類似需要總線擴(kuò)展的系統(tǒng)也有一定的參考價(jià)值。
- 實(shí)現(xiàn)方案(8055)
DSP與單片機(jī)之間串行通信的設(shè)計(jì)與實(shí)現(xiàn)
DSP與單片機(jī)的一種高速通信實(shí)現(xiàn)方案
一種基于FPGA和DSP的高速數(shù)據(jù)采集設(shè)計(jì)方案介紹
單片機(jī)串口通信協(xié)議的實(shí)現(xiàn)實(shí)例分享
LabVIEW串口通信實(shí)例:PC機(jī)與51單片機(jī)串口通信實(shí)例
LabVIEW串口通信實(shí)例:PC機(jī)與51單片機(jī)串口通信實(shí)例
利用單片機(jī)串口進(jìn)行控制LED
雙單片機(jī)串口通信實(shí)驗(yàn)
如何實(shí)現(xiàn)多個(gè)單片機(jī)之間通信
如何利用雙口RAM實(shí)現(xiàn)DSP與單片機(jī)高速數(shù)據(jù)通信?
如何去實(shí)現(xiàn)一種DSP與PC機(jī)串行通訊的設(shè)計(jì)?
如何去實(shí)現(xiàn)一種單片機(jī)通過串口方式1進(jìn)行全雙工數(shù)據(jù)通信的設(shè)計(jì)呢
如何去實(shí)現(xiàn)一種高速通信接口的設(shè)計(jì)?
如何去實(shí)現(xiàn)一種基于51單片機(jī)去點(diǎn)亮一個(gè)LED小燈的設(shè)計(jì)
如何去實(shí)現(xiàn)一種基于51單片機(jī)點(diǎn)亮led燈的設(shè)計(jì)
如何去實(shí)現(xiàn)一種基于51單片機(jī)的NRF24L01無(wú)線通信電路設(shè)計(jì)
如何去實(shí)現(xiàn)一種基于單片機(jī)RS485的多機(jī)通信液晶控制系統(tǒng)設(shè)計(jì)呢
如何去實(shí)現(xiàn)一種基于單片機(jī)的全自動(dòng)洗衣機(jī)模擬系統(tǒng)設(shè)計(jì)
如何去實(shí)現(xiàn)一種基于單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì)
如何去實(shí)現(xiàn)一種基于單片機(jī)的液體點(diǎn)滴速度監(jiān)控設(shè)計(jì)呢
如何去實(shí)現(xiàn)一種基于STC89C52單片機(jī)的庫(kù)函數(shù)呢
怎樣去實(shí)現(xiàn)一種基于DSP和ADC技術(shù)高速緩存和海量緩存?
求一種基于DSP的CAN總線通信控制方案
求一種基于單片機(jī)的太陽(yáng)能參數(shù)測(cè)試儀的設(shè)計(jì)方案
求一種基于單片機(jī)的簡(jiǎn)易洗衣機(jī)系統(tǒng)仿真設(shè)計(jì)方案
求一種基于單片機(jī)的音樂噴泉設(shè)計(jì)方案
求一種基于STC單片機(jī)的智能家具無(wú)線遙控控制設(shè)計(jì)方案
求一種基于STM8系列單片機(jī)的無(wú)線通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方案
求大神分享一種高速突發(fā)模式誤碼測(cè)試儀的FPGA實(shí)現(xiàn)方案
請(qǐng)教串口通信實(shí)現(xiàn)PC和單片機(jī)通信的問題
請(qǐng)問怎樣去設(shè)計(jì)一種高速圖像通信系統(tǒng)?
用AVR單片機(jī)實(shí)現(xiàn)高速跳頻通信
31用AVR 單片機(jī)實(shí)現(xiàn)高速跳頻通信
31PC機(jī)與單片機(jī)通信實(shí)例-表決器
70一種嵌入式Linux與Windows JVM通信實(shí)現(xiàn)
17一種實(shí)用的單片機(jī)雙CPU設(shè)計(jì)方案及其應(yīng)用
35用組態(tài)王實(shí)現(xiàn)PC機(jī)與多臺(tái)單片機(jī)的遠(yuǎn)程通信
61TMS320系列DSP與C51單片機(jī)之間一種全新串行通信模式
7一種PC與單片機(jī)多機(jī)RS232串口通信設(shè)計(jì)
074HC138/74HC139及DSP與單片機(jī)的一種高速通信
4816
單片機(jī)系統(tǒng)中高速數(shù)據(jù)采集的實(shí)現(xiàn)
193AT89系列單片機(jī)與PC機(jī)的串行通信實(shí)驗(yàn)電路圖
3044
DSP與單片機(jī)高速通信實(shí)現(xiàn)的方案
1409
PC機(jī)與單片機(jī)通信應(yīng)用
7318
一種適于單片機(jī)系統(tǒng)的網(wǎng)絡(luò)通信協(xié)議
11一種無(wú)線激光通信實(shí)驗(yàn)
0一種基于單片機(jī)系統(tǒng)的DMA控制電路的模塊化設(shè)計(jì)方案
19FPGA與單片機(jī)實(shí)現(xiàn)數(shù)據(jù)串行通信的解決方案
11617PC 機(jī)與單片機(jī)串行通信實(shí)現(xiàn)
22DSP與單片機(jī)串口通信的設(shè)計(jì)與實(shí)現(xiàn)
5DSP 和MCS51單片機(jī)的一種通信方案的設(shè)計(jì)與實(shí)現(xiàn)
0一種基于STM32單片機(jī)的視頻遙控小車的設(shè)計(jì)
13986
單片機(jī)與PLC之間的串行通信實(shí)現(xiàn)
32862
單片機(jī)遠(yuǎn)程通信實(shí)現(xiàn)
1深入理解51單片機(jī)串口通信及通信實(shí)例
27666
如何實(shí)現(xiàn)ATMEGA16單片機(jī)與PC機(jī)的通信
1654DSP與單片機(jī)到底有什么區(qū)別
6DSP與單片機(jī)的那些區(qū)別
151單片機(jī)的IO口如何模擬串行通信實(shí)現(xiàn)方法詳細(xì)說明
2DSP與PC機(jī)及單片機(jī)通信接口的擴(kuò)展設(shè)計(jì)概述
2365
單片機(jī)之間的串口通信實(shí)例keil程序和電路圖免費(fèi)下載
23單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)——雙單片機(jī)串口通信實(shí)驗(yàn)
15昆侖通態(tài)人機(jī)界面與單片機(jī)通信實(shí)戰(zhàn)教程四:單片機(jī)程序的設(shè)計(jì)
16基于STM32單片機(jī)無(wú)線通信實(shí)驗(yàn)使用庫(kù)文件設(shè)計(jì)源代碼
1基于單片機(jī)的串口通信實(shí)驗(yàn) 串口通信基礎(chǔ)知識(shí)
4876
一種點(diǎn)對(duì)點(diǎn)高速通信控制器的設(shè)計(jì)與實(shí)現(xiàn)
0單片機(jī)與Internct網(wǎng)絡(luò)通信的一種具體實(shí)現(xiàn)方案
3一種單片機(jī)多機(jī)通信系統(tǒng)的設(shè)計(jì)
0基于LabVIEW的單片機(jī)串口通信實(shí)現(xiàn)
6如何實(shí)現(xiàn)51單片機(jī)與PC機(jī)的串行通信
2549
電子發(fā)燒友App



評(píng)論