雙處理器通信方案的研習(xí)與策劃_第1頁
雙處理器通信方案的研習(xí)與策劃_第2頁
雙處理器通信方案的研習(xí)與策劃_第3頁
雙處理器通信方案的研習(xí)與策劃_第4頁
雙處理器通信方案的研習(xí)與策劃_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

雙處理器通信方案的研習(xí)與策劃

雙處理器之間通信方式

目前,基于FPGA的雙處理器之間的通信根據(jù)通信方式來劃分,主要有:共享存儲器、郵箱核(mailbox)、串口通訊和DMA等四種方式。共享存儲器通信是一種兩個處理器之間的堵塞通信方式。在雙處理器系統(tǒng)中,可以通過共享片上RAM的方式來實現(xiàn)處理器之間的數(shù)據(jù)交互。為了防止死鎖的發(fā)生,需要通過設(shè)置標(biāo)志位或者中斷信號的方式,實現(xiàn)雙處理器的異步接收或發(fā)送。同時發(fā)送進程和接收進程必需在兩個處理器上成對消失,只有當(dāng)兩個處理器上的發(fā)送進程和接收進程同時到來時,兩個處理器才能共同退出當(dāng)前通信進程,進入下一條指令。郵箱核主要供應(yīng)了兩組互斥體,一個用于保證對共享存儲器的唯一寫訪問,另外一個用于保證對共享存儲器唯一的讀訪問。郵箱核結(jié)合片上RAM,可以實現(xiàn)雙處理器之間的數(shù)據(jù)交換。郵箱核加片上RAM的組合方式,適合于雙處理器之間的單向傳輸數(shù)據(jù),具有實時性好,速度快的優(yōu)點,但是對于通信的數(shù)據(jù)構(gòu)造有一些要求。串口通訊在雙處理器之間的數(shù)據(jù)交換主要是通過串口通信設(shè)備完成的。將系統(tǒng)中的處理器分為主設(shè)備和從設(shè)備,當(dāng)主設(shè)備要讀取從設(shè)備數(shù)據(jù)時,就向從設(shè)備發(fā)送一個讀取的指令,從設(shè)備接收到指令后將數(shù)據(jù)發(fā)送到主設(shè)備中。主設(shè)備向從設(shè)備寫入數(shù)據(jù)過程也是如此。這種通信方式,對于軟件程序方面依靠性較小,但是傳輸模式單一,存在肯定的延時。DMA方式主要是用于數(shù)據(jù)量比擬大的狀況下,通過對數(shù)據(jù)整塊的處理,能夠有效的縮減數(shù)據(jù)通信占用處理器的時間。

互聯(lián)模塊概要設(shè)計

通過對以上雙處理器之間通信方式的優(yōu)缺點分析,結(jié)合本系統(tǒng)通信的特點,設(shè)計出符合本系統(tǒng)的FIFO互聯(lián)模塊。在該系統(tǒng)中,使用的是定制IP核的方式來設(shè)計該模塊,在IP核中設(shè)計相關(guān)的存放器,設(shè)計出相關(guān)的讀寫掌握規(guī)律。該IP核的設(shè)計主要分為以下幾個方面。第一是對于系統(tǒng)的非實時局部而言,要在操作系統(tǒng)的層次上,讀取FIFO緩沖區(qū)數(shù)據(jù)和將數(shù)據(jù)寫入FIFO緩沖區(qū),保證數(shù)據(jù)的讀取和寫入正常。在操作系統(tǒng)中編寫該FIFO緩沖區(qū)設(shè)備的驅(qū)動,在驅(qū)動中推斷該設(shè)備的讀寫狀態(tài)。其次是對系統(tǒng)的實時局部而言,要在規(guī)定的時間內(nèi),將數(shù)據(jù)從該FIFO緩沖區(qū)中讀取,同時將反應(yīng)數(shù)據(jù)在規(guī)定的時間內(nèi)寫入到FIFO緩沖區(qū)中。通過對該IP核中定義的掌握存放器的讀取,實時的推斷該FIFO設(shè)備的狀態(tài),保證準(zhǔn)時的讀取或?qū)懭霐?shù)據(jù)。第三就是要實現(xiàn)對該FIFO緩沖區(qū)的互斥訪問,保證每次讀取或者寫入的數(shù)據(jù)都是完整的,確保數(shù)據(jù)的精確。通過對緩沖區(qū)的大小進展設(shè)定,當(dāng)讀或者寫完成時,設(shè)置掌握存放器中相應(yīng)的標(biāo)志位,到達(dá)互斥訪問的目的。

具體設(shè)計

1IP核的設(shè)計

該IP核主要的功能一是對寫入的數(shù)據(jù)進展緩沖,二是對輸入的數(shù)據(jù)進展分隔,保證每次讀寫的數(shù)據(jù)都是完整的一幀。該IP核在QuartusII環(huán)境中頂層模塊如圖2所示。該FIFO的緩沖區(qū)大小為128位,寬度為32。使用了一個讀指針READ_POINTER和一個寫指針WRITE_POINTER來掌握CPU對該緩沖區(qū)的讀寫,讀寫指針大小都設(shè)置為2。該FIFO的讀寫數(shù)據(jù)模型如圖3所示。當(dāng)對該緩沖區(qū)進展讀或者寫操作時,相應(yīng)的指針發(fā)生變化。當(dāng)讀或?qū)懼羔樀竭_(dá)肯定的條件時,就設(shè)置相關(guān)存放器的狀態(tài)。當(dāng)從該緩沖區(qū)中讀取數(shù)據(jù)完成時,就將READ_DONE置1,同時將READ_ENABLE置0,將WRITE_ENABLE置1,從而完成讀操作,保證讀取數(shù)據(jù)的完整性。同理,當(dāng)寫數(shù)據(jù)完成了,將WRITE_DONE置1,同時將READ_ENABLE置1,將WRITE_ENABLE置0,完成寫操作。這樣就可以掌握CPU對緩沖區(qū)的讀寫,保證數(shù)據(jù)的唯一性。

可以看出通過對讀寫標(biāo)志位的推斷,可以到達(dá)對該FIFO狀態(tài)的推斷,從而掌握讀寫數(shù)據(jù)的時機。整個狀態(tài)的推斷和掌握是通過掌握存放器(CONTROL_REG)來實現(xiàn)的,在掌握存放器中推斷FIFO可讀或者可寫狀態(tài)是由CONTROL_REG[7:6]來掌握的,而向FIFO中每次寫入或讀取數(shù)據(jù)的大小是由CONTROL_REG[1:0]來掌握的,系統(tǒng)可以隨時讀取該存放器來確定FIFO的讀寫狀況。該IP核的掌握存放器構(gòu)造如圖4所示。在QuartusII下進展功能仿真如圖5所示。從圖5中可以看出,IP核復(fù)位后,F(xiàn)IFO的狀態(tài)是可寫的。此時,讀取存放器的狀態(tài)位0x80,說明該FIFO是可寫的。將0x2寫入到掌握存放器(CONTROL_REG[1:0])中,就確定了FIFO中每幀的大小。讀取存放器,為0x82,說明數(shù)據(jù)已經(jīng)寫入到掌握存放器中。然后向FIFO中寫入數(shù)據(jù)0x12345678和0x87654321后,可以看到WRITE_DONE置1,READ_ENABLE被置1,WRITE_ENABLE被置0,同時寫指針WRITE_POINTER也是正確的,此時讀取存放器,為0x42,說明寫操作完成,數(shù)據(jù)可讀。在后面對FIFO進展讀操作可以看出,各個標(biāo)志位和讀寫指針都是正確的,可以看到讀出的數(shù)據(jù)為0x87654321和0x12345678。此時,讀取存放器中數(shù)據(jù),為0x82,說明數(shù)據(jù)可寫。

2FIFO的驅(qū)動的設(shè)計

在實時局部和非實時局部之間通過FIFO傳遞數(shù)據(jù),非實時局部運行的是Clinux操作系統(tǒng),需要對FIFO編寫驅(qū)動。在Clinux下開發(fā)FIFO設(shè)備的驅(qū)動和常規(guī)Linux下開發(fā)驅(qū)動流程一樣。在Linux系統(tǒng)中,設(shè)備的驅(qū)動程序被組織為一組完全不同任務(wù)的函數(shù)的集合,通過這些函數(shù)使得設(shè)備操作如同文件一般。在應(yīng)用程序看來,硬件設(shè)備只是一個設(shè)備文件,應(yīng)用程序可以像操作一般文件一樣對硬件進展操作。如open()、close()、read()、write()等等。Linux主要將設(shè)備分為兩類:字符設(shè)備和塊設(shè)備。字符設(shè)備是指設(shè)備發(fā)送和接收數(shù)據(jù)以字符的形式進展;而塊設(shè)備則以整個數(shù)據(jù)緩沖區(qū)的形式進展。本文中FIFO設(shè)備屬于字符設(shè)備,其設(shè)備驅(qū)動主要定義一下幾個函數(shù)初始化完成后,對設(shè)備的讀寫主要是通過調(diào)用write_data()和read_data()來實現(xiàn)的。Clinux針對無MMU的處理器做了移植,與Linux使用虛擬內(nèi)存不同,Clinux采納真實地址方式,這樣操作硬件設(shè)備特別便利。SOPC系統(tǒng)把存儲設(shè)備,IO映射為統(tǒng)一編制的存儲設(shè)備。

自定義IP核在雙處理器中應(yīng)用

1雙處理器平臺的搭建

依據(jù)設(shè)計的需要,構(gòu)建一個完整的SOPC系統(tǒng)后,才能真正實現(xiàn)雙處理器的設(shè)計。在SOPCBuilder中參加CPU1和CPU2,一個Timer,定制的FIFO組件以及sdram、flash、JTAG等外圍設(shè)備。其中非實時局部的CPU1選擇NIOSII/f,復(fù)位向量設(shè)置為flash,特別向量設(shè)置為sdram。另外連接CPU1的Timer要選擇全功能型(Full-featured),并將該Timer的優(yōu)先級設(shè)置為0。而實時局部的CPU2也要選擇NIOSII/f,復(fù)位向量設(shè)置為flash,特別向量設(shè)置為sdram。

2自定義IP核功能驗證

將定制的IP組件添參加到系統(tǒng)中,在CPU1上運行Clinux操作系統(tǒng),CPU2的程序是在NIOSIIIDE環(huán)境下運行。在CPU1上運行的程序首先使用函數(shù)open()翻開該FIFO設(shè)備,然后通過讀函數(shù)read()和寫函數(shù)write()區(qū)讀寫數(shù)據(jù),從而實現(xiàn)CPU1讀取和發(fā)送數(shù)據(jù)。而在NIOSIIIDE環(huán)境下,使用查詢方式,來讀取該定制FIFO數(shù)據(jù),使用函數(shù)IORD()存器CONTROL_REG的狀態(tài),假如為可讀的,則執(zhí)行讀操作,假如為不行讀,則什么都不執(zhí)行。寫數(shù)據(jù)也是如此。經(jīng)過驗證,數(shù)據(jù)都能按時按序到達(dá),該IP核很好的滿意了設(shè)計的需要。

完畢語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論