fpga 可以實現高速硬體電路,如各種時鐘,pwm,高速介面,dsp計算等硬體功能。這是cortex-m 處理器軟體無法比擬的。要實現fpga 的邏輯設計,對於嵌入式系統工程師又是比較複雜和具有一定難度。而且要更改fpga內部的邏輯也不是十分靈活。本文**一種在嵌入式系統中,靈活,方便地動態配置fpga 的方法。
具有fpga 設計能力的硬體工程師可以設計各種fpga ip 庫。而軟體應用工程師可以不關注內部的設計邏輯就能直接地應用這些ip核。實現硬體ip庫重複使用和分享。
本系統由乙個cortex-m 單片微處理器和乙個intel cyclone fpga 構成。這樣的結構是為了實現cyclone fpga 的動態配置。第三方可以設計各種fpga 的ip核。通過方便的方式寫入板上的fpga 晶元中。為每個fpga ip編寫了cortex-m 的c++驅動類。應用程式可以方便地使用該硬體ip外設。
動態配置fpga 的具體方法如下:
使用intel 提供的fpga 設計工具quartus 設計fpga 的控制邏輯。產生fpga 二進位制**檔案(sof 格式,或者rbf格式)。拷貝到sd卡中。
當系統上電時,cortex-m 應用程式將程式首先檢測sd卡上是否有sof檔案,如果存在,就首先讀入二進位制檔案,通過spi1 寫入spi flash 儲存器。然後從spi flash 中讀出,通過passtive serial 串列埠寫入fpga。
理論上fpga的二進位制**可以燒寫到cortex-m 的flash rom 中。不過要占用大量處理器的flash rom。所以使用外部 spi flash rom 是乙個折中的方法。
當然,也可以通過網路,實現fpga 邏輯的雲更新。
fpga 配置的模式
intel cyclone fpga 配置方式有如下幾種方式:
as –主動串列埠模式
ps-被動串列埠模式
jtag 模式
intel 的cyclone fpga 通過msel1和msel0來選擇:
msel1
msel0
mode00
as01ps
00 or 1
jtag
注意:不能讓msel 懸空。可以接高電平,或者低電平。用於非jtag模式下使用。如果你的設計中只使用jtag 應將msel0接vcc。
jtag 模式優先於其它模式,這時可以或略msel 的設定。
二進位制檔案的大小
資料的壓縮
存放二進位制檔案的是spi flash 儲存器。例如:micron 公司的m25p16 就是16mbits 的flash 儲存器。
在stm32f4xx_stdperiph_examples中可以找到spi flash儲存器的驅動的例子。
研究fpga 動態配置的目的,有開發乙個產品的想法:
設計乙個基於stm32f4 的單板嵌入式單板產品,執行arm 公司的mbed os。板上配置乙個fpga 晶元,sd 卡座,dap-link,usb 。引腳主要由fpga 引出。使該低**平台成為學習,交流fpga技術,嵌入式程式設計的智慧型硬體平台。也將arm 公司的mbed os 物聯網作業系統和fpga 緊密結合。拓展mbed os 新的應用領域。
嵌入式系統
嵌入式開發的相關領域 搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關 領域包括 a 數字影象壓縮技術 這是嵌入式最重要最熱門的應用領域之一,主要是應掌握mpeg 編譯碼演算法和技術,如 pda 高精電視 機頂盒等都涉及mpeg高速解碼問 題。b 通訊協議及程式設計技術 這...
嵌入式系統
嵌入式系統就是計算機系統的一類,就是被塞進其他裝置的計算機作業系統。我的嵌入式老師只用了三個詞語就總結了嵌入式系統的精髓 專用的可裁剪的 計算機系統。包括嵌入式軟體開發的知識體系和背景 先說背景 計算機,領域內,知識體系,按層次分,可以分為 其中 此處,暫且不討論上層的純軟體,以及底層的硬體,只是簡...
嵌入式系統
硬體結構 軟體結構 作業系統 vxworks商用嵌入式系統的代表 嵌入式linux 採用的是linux的核心,大多數採用的是linux的微核心 微核心本身只提供一些最基本的作業系統功能,如任務排程 記憶體管理 中斷處理等,而類似於檔案系統和網路協議等附加功能則執行在使用者空間中 交叉編譯 交叉編譯 ...