本文為明德揚原創文章,轉載請注明出處!
很多朋友在學習FPGA的時候會發現模塊劃分很令人頭大,今天我就通過明德揚溫度檢測工程來與大家分享一下本人的劃分思路。
明德揚溫度檢測工程是基于FPGA的一個實用項目,可以在明德揚的MP801開發板上進行實驗學習。本工程功能雖小,但基本上涉及了FPGA的常見功能,如接口傳輸、指令解析、外設的控制等,是比較好的入門工程。
一、模塊劃分要點總結
1、列出項目的功能要求(客戶提出的產品功能要求)
2、畫出硬件的系統結構框圖(添加外設)
3、框圖中每個外圍接口都對應有一個接口轉換模塊
接口轉換模塊的作用是將外圍器件的接口時序轉為通用的接口時序,或者將通用接口時序轉換為外圍器件接口時序,這樣使得FPGA內部其他模塊不用再關心外圍接口的時序了。
MDY規范通用接口時序:
l data以及對應的vld,傳輸單個數據格式
l MDY的包文格式,din,vld,SOP,EOP,MTY,ERR
l wren,waddr,wdata;rden,raddr,rdata,rdata_vld
4、考慮是否涉及指令系統(操作碼+數據格式)
上位機,例如PC,ARM,DSP或者其他的器件,只涉及到一個接口,但是卻有很多指令或者命令功能要發送,因此就需要一個指令系統。
指令系統一定會涉及到命令、地址和數據。這種情況,肯定會有一個“寄存器解析模塊”,根據命令、地址和數據,改變相應的寄存器的值。
5、考慮外圍器件是否涉及寄存器配置
項目中有某些外設,上電工作前需要進行配置才能按要求工作。因此需要對外設內部寄存器進行讀寫,這一流程是通過FPGA來進行配置。
遇到這個情況,使用MDY推薦的模塊寄存器配置結構:
寄存器配置表模塊+寄存器讀寫配置模塊+外設配置接口時序轉換模塊
6、根據實際情況,增加、補充或者拆分,優化對應模塊,隨時調整
原則:根據接口信號,看模塊間是否方便對接。接口就決定了模塊功能。所以在這一層的調整,一定要清楚接口的定義。
7、考慮是否涉及多路進一路出,要用FIFO
調度FIFO要考慮自身帶寬能否滿足多路一起突發發送時的數據量情況。如果帶寬不滿足,就要要輸出給上游模塊RDY信號。此時RDY信號有效取決于自己設置FIFO的Almost Full信號。如果帶寬滿足則不必設RDY信號。
8、考慮是否涉及到速率匹配問題,要加上RDY信號或者FIFO
首先考慮與外圍器件通信的接口上是否需要rdy信號(FPGA內部運行頻率往往與設接口速率不一致),然后考慮FPGA內部模塊間數據帶寬是否不一致,有等一等的情況。
二、溫度檢測案例分析
接下來根據上面的總結的要點,通過實際項目案例來分析一下FPGA內部功能模塊是怎樣劃分的。這里我們選取已經做過的溫度檢測項目,接下來按照上面總結的模塊劃分步驟,一步步完成模塊初步劃分!
1.列出項目的功能要求
本項目功能要求:上位機通過發送一系列不同命令給FPGA,FPGA接收到指令后執行各個指令對應的操作。同時將DS18B20采集到的溫度值實時在數碼管上實時顯示出來并傳給上位機。要求上位機可以發送命令設置報警溫度上限和下限值。當溫度值超過溫度上限或者下限,蜂鳴器就開始鳴響。可以發送命令關閉或打開數碼管顯示。
功能分析:
a) 上位機發送命令給FPGA(開關數碼管顯示、開關蜂鳴器、復位溫度傳感器、開啟溫度轉換,讀轉換后溫度值、設置報警溫度上限下限值);
b) 讀寫DS18B20;
c) 數碼管顯示;
d) 數碼管顯示開關控制;
e) 計算溫度值;
f) 將計算后的溫度值發送給上位機;
g) 設置溫度上限、下限;
h) 蜂鳴器開關控制。
2.畫出硬件系統結構框圖
根據步驟1總結出的功能要求,找到除FPGA外需要哪些外圍器件。
外圍器件總共需要四個:
a) PC
b) 數碼管
c) 溫度傳感器DS18B20
d) 蜂鳴器
畫出系統框圖如下所示:
3.框圖中每個外圍接口都對應有一個接口轉換模塊
首先要思考PC與FPGA通信需要哪種方式?
上位機PC與FPGA通信既有發送也有接收,由于PC發送命令給FPGA的速度慢于FPGA回傳溫度值給PC的速度,所以上位機PC與FPGA通信接口速度取決于FPGA回傳溫度值給PC的速度。
查閱手冊如上圖所示,得知DS18B20轉換一次采集的溫度值需要750ms。所以FPGA與上位機通信接口速率大于750ms就不會丟傳數據。因此選用串口作為上位機與FPGA的通信接口足夠滿足要求了。
a) 數碼管段選位選接口模塊: 完成數碼管位選和段選的輸出
b) DS18B20單bit轉換接口模塊:DS18B20是單總線協議,只支持1bit數據傳輸,所以需要將MDY規范接口轉換為1bit
c) 蜂鳴器開關使能接口模塊:完成蜂鳴器開關使能
將串口接口轉換模塊功能細分為“串口接收串轉并模塊”和“串口發送并轉串模塊”,進一步轉化為符合MDY規范的接口。如下圖所示:
未完待續》》》