1. 程式人生 > >ARM和FPGA之間的通訊(硬體原理圖篇)

ARM和FPGA之間的通訊(硬體原理圖篇)

設計該開發板的初衷是為了學習,但也希望今後能擴充套件其功能,看到大家都在diy示波器,自己也非常衝動的想DIY一把,於是呼選了arm+fpga的方案,fpga主要用來實現資料的高速取樣,而ARM則提供資料的顯示,以及一些人機互動的功能。那麼該方案中最重要的地方就是ARM和FPGA之間的通訊如何實現了。在網上查了很多的資料,有說將FPGA作為ARM的一個外設,可以通過DMA的方式來直接訪問;也有說把FPGA當做arm的一個儲存裝置,可以通過匯流排的方式將FPGA掛載到ARM的一個bank,這樣就可以通過向訪問儲存器那樣來訪問FPGA,在linux系統中應該是通過ioremap這個函式來訪問儲存器,那麼也就是說可以用ioremap來訪問FPGA。

ARM 和FPGA之間連線的功能圖如下所示:


如上圖所示,Addr1---Addr8為地址匯流排,D0---D15為資料匯流排,nGCS5為ARM的bank片選,nOE為讀使能訊號,nWE為寫使能訊號,EINT0為中斷訊號。

 s3c2440的bank0---bank5為固定128MB,bank6和bank7的容量可程式設計改變,可以是2、4、8、16、32、64、128MB(可以參考s3c2440 datasheet)。bank0---bank5可以連線ROM和SRAM, BANK6,7只能連線SDRAM。我把FPGA當做ARM的一個sram 掛載到bank5,所以選擇nGCS5訊號。為什麼是Addr1---Addr8,而不是從Addr0開始?參考s3c2440 datasheet,如下圖所示,當使用16位的資料匯流排時,是從A1開始連線。雖然BANK5有128M空間,但因為只使用了Addr1---Addr8,所以只使用了256byte*2地址空間。

CPU定址是以位元組為單位的,也就是說BANK0---BANK5 能定址128M*1位元組(1byte/8bit)的儲存空間,但是因為是16位的資料匯流排,CPU地址要每次加2才能定址一個16位的資料,所以才是從A1開始連線地址線。所以使用Addr1---Addr8,就使用了2^8 *16bit =256 *16 bit =256Byte*2=512 Byte 的空間。 

相關推薦

ARMFPGA之間通訊硬體原理

設計該開發板的初衷是為了學習,但也希望今後能擴充套件其功能,看到大家都在diy示波器,自己也非常衝動的想DIY一把,於是呼選了arm+fpga的方案,fpga主要用來實現資料的高速取樣,而ARM則提供資料的顯示,以及一些人機互動的功能。那麼該方案中最重要的地方就是ARM和F

【Linux開發】Linux及Arm-Linux程式開發筆記零基礎入門

Linux及Arm-Linux程式開發筆記(零基礎入門篇)  目錄 一、Arm-Linux程式開發平臺簡要介紹... 3 1.1程式開發所需系統及開發語言... 3 1.2系統平臺搭建方式... 4 二、Linux開發平臺搭建... 5 2.1安裝虛擬工作站...

組件之間通訊:兄弟組件之間的相互通訊中央事件總線

temp logs created str 總線 復雜 log 做的 ted 組件之間的通訊: 父->子:通過props,data屬性, 子->父:通過派發事件 兄弟組件:中央事件總線(......data{ Bus:new Vue()}.....) 更為復雜

C# 兩個進程之間通訊管道通信

click 失敗 != else iss nbsp obj c# cal #region 客戶端 NamedPipeClientStream pipeClient = new NamedPipeClientStream("localhost

Qt:Qt實現Winsock網路程式設計—TCP服務端客戶端通訊多執行緒

Qt實現Winsock網路程式設計—TCP服務端和客戶端通訊(多執行緒) 前言 感覺Winsock網路程式設計的api其實和Linux下網路程式設計的api非常像,其實和其他程式語言的網路程式設計都差不太多。博主用Qt實現的,當然不想用黑視窗唄,有介面可以看到,由於GUI程式設計

ServiceIntentService,ServiceActivity之間通訊

Service /** * Android四大元件之一,Service 是長期執行在後臺的應用程式元件。 * Service 不是程序,也不是執行緒,它和應用程式在同一個程序中 * Service中不能

vue元件之間通訊非父子之間通訊

檢視如下: 單擊點選後: 下列為實現程式碼: html: <dvi id="app"> <brother></brother> <hr> <sbrother></sbrother&g

java web中jspaction之間通訊小結

jsp和action之間通訊 *傳值****************************************** ?a=<s:property value="#allrole.roleid" />a<s:property value="#allrole.role

QT之程序程序間通訊IPC

程序是作業系統的基礎之一。一個程序可以認為是一個正在執行的程式。我們可以把程序當做計算機執行時的一個基礎單位。關於程序的討論已經超出了本章的範疇,現在我們假定你是瞭解這個概念的。 在 Qt 中,我們使用QProcess來表示一個程序。這個類可以允許我們的應用程式開啟一個新的外部程式

跳一跳輔助工具的原理分析,Java實現。其實沒那麼複雜

一、前言(Java程式碼的實現是基於另外一篇部落格,我精簡了計算方法而成,參考部落格地址http://blog.csdn.net/lihushiwoa/article/details/78942322)先說一說我的感受,之前覺得能做出做出輔助工具的技術要求一定很高,然而當自己

vuenode進行通訊使用socket.io

socket.io現在越來越頻繁的應用於通訊中,於是,我也摸索了一點。 接下來是我的一點小小見解。 這是vue-cli搭建的前端框架 前端Vue main.js import VueSocketio from 'vue-socket.io'; impo

虛擬機器電腦之間通訊

環境: 虛擬機器: linux 電腦: win7 虛擬機器通過電腦上網:設定虛擬機器為NAT模式,並在設定虛擬機器ip獲取方式為自動獲取即可 2:虛擬機器和電腦組成區域網 a: 如果宿主機可以插網線,則將虛擬機器設定為橋接模式,並將宿主機和虛擬機器ip設定成一個網段即可。

serviceactivity之間通訊

         service和activity通訊一般可以通過繫結service獲取service的引用呼叫service的方法。如果service要訪問activity可以通過單利模式,最好是使用廣播接受者實現通訊最優方案。 下面介紹通過廣播接受者實現activit

組態王stm32之間通訊筆錄

組態王是亞控科技開發的一款上位機軟體,上位機是一種軟體只能在電腦上執行,對控制的裝置而言沒有任何意義,和MCU通訊進行資料交換,最終還是由MCU控制裝置執行 上位機主要是現實作用,之所以能控制MCU是某個按鈕或資料經過通訊連結到MCU的相應地址從而改變MCU程式資料狀

深入學習Kafka:叢集中ControllerBroker之間通訊機制分析

Kafka叢集中,首先會選舉出一個broker作為controller,然後該controller負責跟其他broker進行協調topic建立,partition主副本選舉,topic刪除等事務。 下面我們來分析controller和其他broker的通訊

linux程式設計——pipe呼叫在兩程序之間通訊第十三章

13.4    pipe呼叫 在看過高階的popen函式之後,再來看看底層的pipe函式.通過這個函式在兩個程式之間傳遞資料不需要啟動一個shell來解釋請求的命令.它同時提供了對讀寫資料的更多控制.pipe函式的原型如下所示:#include <unistd.h&g

利用Handler實現ActivityService之間通訊

Activity和Service之間通訊,最簡單的方式就是通過broadcast廣播來實現,但針對一些頻繁的資料傳輸,用廣播來實現,效能上會降低很多,例如:更新下載進度等 接下來介紹下handler來代替broadcast來實現Activity和Service之間通訊,這

如何使用socket實現unityWinform之間通訊

實現思路: 在Unity和Winform兩個應用程式中都引入socket,這裡使用TcpClient 伺服器端我們使用Java的mina長連線框架 客戶端的通訊主體框架有兩種,一種是處理器類的,一種是事件繫結的: 伺服器端主體通訊

前端H5與安卓ios之間通訊

在一些app場景中,經常看到app裡面巢狀H5頁面, 安卓和ios提供一個空殼子,方法兩者互相呼叫。上一週就是寫H5頁面讓安卓和ios呼叫使用,中間傳參,接受引數。通過 window.wx 物件呼叫一些原生 app 的功能。這個H5頁面,我用的是vue來寫的。用到了vue全家桶。 1.呼叫app方法

mysql中varcharchar區別思維導整理

var 但是 系統 mysql 由於 varchar .html nbsp 了解   由於mysql一直是我的弱項(其實各方面我都是很弱的),所以最近在看msyql,正好看到varchar和char區別,所以整理一下,便於以後遺忘。      0.0圖片已經說明一切,但是系