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

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 用CPLD實(shí)現(xiàn)DSP2407A與S3C4480的通信

          用CPLD實(shí)現(xiàn)DSP2407A與S3C4480的通信

          作者: 時(shí)間:2007-07-10 來(lái)源:網(wǎng)絡(luò) 收藏
          在現(xiàn)代汽車電子中,一般有多個(gè)微控制器共同協(xié)調(diào)工作。DSP控制器采用哈佛結(jié)構(gòu),運(yùn)算速度快,所以在汽車電子中廣泛采用DSP芯片來(lái)實(shí)現(xiàn)汽車動(dòng)力系統(tǒng)的控制。ARM是一種32位微控制器,有豐富的外擴(kuò)接口,因此在汽車電子中一般用ARM來(lái)實(shí)現(xiàn)大容最的數(shù)據(jù)存儲(chǔ)和人機(jī)交互或GPS全球定位系統(tǒng),故在DSP和ARM之間需要進(jìn)行數(shù)據(jù)交換。

          (Complex Programmable Logic Device)是一種復(fù)雜的用戶可編程邏輯器件,由于采用硬件可編程技術(shù),從而使沒(méi)計(jì)硬件電路也像設(shè)計(jì)軟件一樣方便。DSPA是T1公司設(shè)計(jì)的一款專為滿足大范圍的數(shù)字電動(dòng)機(jī)控制應(yīng)用的微控制器。是三星公司專為手持設(shè)備設(shè)計(jì)的高性價(jià)比的微榨制器。本設(shè)計(jì)以Xilinx公司的XC95108為例,通過(guò)在中開(kāi)辟2塊獨(dú)立的SRAM區(qū)域(各1字節(jié))來(lái)實(shí)現(xiàn)DSPA的并行通信。采用這種通信方式,數(shù)據(jù)傳輸準(zhǔn)確、高速,基本可以滿足DSPA總線接口實(shí)時(shí)通信的要求,從而將整車動(dòng)力控制和人機(jī)交互有機(jī)地統(tǒng)一起來(lái)。

          1 整體系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
          DSP2407A負(fù)責(zé)采集汽車所有的數(shù)據(jù),再將數(shù)據(jù)通過(guò)發(fā)給S3C44B0進(jìn)行數(shù)據(jù)存儲(chǔ)和人機(jī)交互。有時(shí)S3C4480要接收觸摸屏命令,命令也通過(guò)CPLD發(fā)給DSP2407A控制器,從而控制整臺(tái)汽車的動(dòng)作。對(duì)DSP2407A,要及時(shí)響應(yīng)由S3C44B0發(fā)過(guò)來(lái)的命令;而對(duì)于S3C4480,要隨時(shí)接收DSP2407A送來(lái)的數(shù)據(jù),這樣,雙方通信的實(shí)時(shí)性就要很強(qiáng)。因此在系統(tǒng)設(shè)計(jì)中,DSP2407A用中斷方式接收數(shù)據(jù),S3C44BO用查詢方式接收數(shù)據(jù)。

          在DSP2407A中,[DO~D7]是數(shù)據(jù)線,[A15~A12]是地址線,IS是I/0空間選通引腳,當(dāng)訪問(wèn)外部的存儲(chǔ)器或I/O空間時(shí)為低電平。WE是寫使能,RD是讀使能。IOPC7足通用I/O引腳,用來(lái)判斷DSP2407A是否可以往CPLD寫數(shù)據(jù)。當(dāng)IOPC7為低電平時(shí),代表DSP2407A可以往CPLD中寫數(shù)據(jù);若為高電平,則表示CPLD中已有數(shù)據(jù),這時(shí)DSP2407A不能往CPLD中寫數(shù)據(jù)。XINT1是外部中斷,用來(lái)通知DSP2407A準(zhǔn)備讀取CPLD中的數(shù)據(jù)。

          在CPLD中,用l片XC95l08來(lái)實(shí)現(xiàn)。XC95108共有108個(gè)宏單元,有足夠的空間來(lái)實(shí)現(xiàn)2個(gè)8位的SRAM區(qū);主要用來(lái)實(shí)現(xiàn)DSP2407A和S3C44B0之間的數(shù)據(jù)交換,沒(méi)置DSP2407A和S3C44B0讀/寫控制的狀態(tài)位。在S3C44B0中’[D0~D7]是數(shù)據(jù)線,nGCSl是芯片選擇信號(hào),當(dāng)存儲(chǔ)器地址在相應(yīng)段的地址區(qū)域時(shí)芯片被激活。nWE是寫允許信號(hào),nOE是讀允許信號(hào)。IOPF0是通用I/O口,用來(lái)監(jiān)視可否從CPLD中讀取數(shù)據(jù):當(dāng)它為高電平時(shí),代表CPLD中有數(shù)據(jù),可以讀取數(shù)據(jù);當(dāng)它為低電平時(shí)。表示CPLD中無(wú)數(shù)據(jù)可讀取。IOPF1是通用I/O口,用來(lái)監(jiān)視可否向CPLD中寫數(shù)據(jù):當(dāng)它為高電平時(shí),代表CPLD中無(wú)數(shù)據(jù),可以向CPLD中寫數(shù)據(jù);當(dāng)它為低電平時(shí),代表CPLD中已有數(shù)據(jù),S3C44B0不能向CPLD中寫數(shù)據(jù)。系統(tǒng)結(jié)構(gòu)如圖1所示。

          2 CPLD的設(shè)計(jì)
          采用Xilinx ISE8.1為設(shè)計(jì)工具,用國(guó)際上通用的VHDL語(yǔ)言來(lái)編寫源程序。

          2.1 8位數(shù)據(jù)從DSP中傳送到ARM中

          當(dāng)[A15~A12]是1100時(shí),DSP2407A開(kāi)始向CPLD中寫數(shù)據(jù),并置dspsign_write和armsign_read為1;表示CPLD中已經(jīng)有數(shù)據(jù)了,通知S3C4480可以讀取數(shù)據(jù)和DSP2407A暫時(shí)不能向CPLD中寫數(shù)據(jù);同時(shí)將數(shù)據(jù)寫入鎖存器sraml中。

          當(dāng)ARM發(fā)出讀取數(shù)據(jù)信號(hào),開(kāi)始將數(shù)據(jù)從sraml中讀出,并且置dspsign_write和armsign_read為0時(shí),表示CPLD中沒(méi)有數(shù)據(jù)了,DSP2407A可以向CPLD中重新寫數(shù)據(jù)。



          2.2 8位數(shù)據(jù)從83CA480中傳送到DSP2407A中
          當(dāng)S3C4480向CPLD寫數(shù)據(jù)時(shí),將數(shù)據(jù)寫入到鎖存器sram2中,同時(shí)置dsp_int為0,通知DSP2407A產(chǎn)生一個(gè)外部中斷,可以從CPLD中取數(shù)據(jù);置armsign_write為0,表示CPLD中已有數(shù)據(jù),S3C4480不能再向CPLD中寫數(shù)據(jù)。

          當(dāng)[A15~12]是1101時(shí),DSP2407A向CPLD中發(fā)出一個(gè)讀取信號(hào),數(shù)據(jù)從鎖存器sram2傳送給DSP2407A中,并且置dsp_int為1,armsign_write為l,表示數(shù)據(jù)已被DSP2407A讀走,S3C4480可以繼續(xù)向CPLD中寫數(shù)據(jù)。


          3 S3C4480和DSP2407A通信軟件設(shè)計(jì)
          在本程序中,DSP2407A采用中斷方式接收數(shù)據(jù),S3C4480采用查詢端口方式接收數(shù)據(jù)。
          (1)DSP2407A程序

          (2)S3C44B0程序



          關(guān)鍵詞: S3C4480 2407A CPLD 2407

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