在現代汽車電子中,一般有多個微控制器共同協(xié)調工作。dsp控制器采用哈佛結構,運算速度快,所以在汽車電子中廣泛采用dsp芯片來實現汽車動力系統(tǒng)的控制。arm是一種32位微控制器,有豐富的外擴接口,因此在汽車電子中一般用arm來實現大容最的數據存儲和人機交互或gps全球定位系統(tǒng),故在dsp和arm之間需要進行數據交換。
cpld(complex programmable logic device)是一種復雜的用戶可編程邏輯器件,由于采用硬件可編程技術,從而使沒計硬件電路也像設計軟件一樣方便。dsp2407a是t1公司設計的一款專為滿足大范圍的數字電動機控制應用的微控制器。s3c4480是三星公司專為手持設備設計的高性價比的微榨制器。本設計以xilinx公司的xc95108為例,通過在cpld中開辟2塊獨立的sram區(qū)域(各1字節(jié))來實現dsp2407a與s3c4480的并行通信。采用這種通信方式,數據傳輸準確、高速,基本可以滿足dsp2407a與s3c4480總線接口實時通信的要求,從而將整車動力控制和人機交互有機地統(tǒng)一起來。
1 整體系統(tǒng)結構設計
dsp2407a負責采集汽車所有的數據,再將數據通過cpld發(fā)給s3c44b0進行數據存儲和人機交互。有時s3c4480要接收觸摸屏命令,命令也通過cpld發(fā)給dsp2407a控制器,從而控制整臺汽車的動作。對dsp2407a,要及時響應由s3c44b0發(fā)過來的命令;而對于s3c4480,要隨時接收dsp2407a送來的數據,這樣,雙方通信的實時性就要很強。因此在系統(tǒng)設計中,dsp2407a用中斷方式接收數據,s3c44bo用查詢方式接收數據。
在dsp2407a中,[do~d7]是數據線,[a15~a12]是地址線,is是i/0空間選通引腳,當訪問外部的存儲器或i/o空間時為低電平。we是寫使能,rd是讀使能。iopc7足通用i/o引腳,用來判斷dsp2407a是否可以往cpld寫數據。當iopc7為低電平時,代表dsp2407a可以往cpld中寫數據;若為高電平,則表示cpld中已有數據,這時dsp2407a不能往cpld中寫數據。xint1是外部中斷,用來通知dsp2407a準備讀取cpld中的數據。
在cpld中,用l片xc95l08來實現。xc95108共有108個宏單元,有足夠的空間來實現2個8位的sram區(qū);主要用來實現dsp2407a和s3c44b0之間的數據交換,沒置dsp2407a和s3c44b0讀/寫控制的狀態(tài)位。在s3c44b0中’[d0~d7]是數據線,ngcsl是芯片選擇信號,當存儲器地址在相應段的地址區(qū)域時芯片被激活。nwe是寫允許信號,noe是讀允許信號。iopf0是通用i/o口,用來監(jiān)視可否從cpld中讀取數據:當它為高電平時,代表cpld中有數據,可以讀取數據;當它為低電平時。表示cpld中無數據可讀取。iopf1是通用i/o口,用來監(jiān)視可否向cpld中寫數據:當它為高電平時,代表cpld中無數據,可以向cpld中寫數據;當它為低電平時,代表cpld中已有數據,s3c44b0不能向cpld中寫數據。系統(tǒng)結構如圖1所示。
2 cpld的設計
采用xilinx ise8.1為設計工具,用國際上通用的vhdl語言來編寫源程序。
2.1 8位數據從dsp中傳送到arm中
當[a15~a12]是1100時,dsp2407a開始向cpld中寫數據,并置dspsign_write和armsign_read為1;表示cpld中已經有數據了,通知s3c4480可以讀取數據和dsp2407a暫時不能向cpld中寫數據;同時將數據寫入鎖存器sraml中。
當arm發(fā)出讀取數據信號,開始將數據從sraml中讀出,并且置dspsign_write和armsign_read為0時,表示cpld中沒有數據了,dsp2407a可以向cpld中重新寫數據。
2.2 8位數據從83ca480中傳送到dsp2407a中
當s3c4480向cpld寫數據時,將數據寫入到鎖存器sram2中,同時置dsp_int為0,通知dsp2407a產生一個外部中斷,可以從cpld中取數據;置armsign_write為0,表示cpld中已有數據,s3c4480不能再向cpld中寫數據。
當[a15~12]是1101時,dsp2407a向cpld中發(fā)出一個讀取信號,數據從鎖存器sram2傳送給dsp2407a中,并且置dsp_int為1,armsign_write為l,表示數據已被dsp2407a讀走,s3c4480可以繼續(xù)向cpld中寫數據。
3 s3c4480和dsp2407a通信軟件設計
在本程序中,dsp2407a采用中斷方式接收數據,s3c4480采用查詢端口方式接收數據。
(1)dsp2407a程序
(2)s3c44b0程序





