两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于FPGA的SPI接口配置方法與流程

文檔序號(hào):11250638閱讀:1478來源:國(guó)知局
一種基于FPGA的SPI接口配置方法與流程

本發(fā)明屬于spi接口配置技術(shù)領(lǐng)域,更具體的是一種基于fpga的spi接口配置方法。



背景技術(shù):

現(xiàn)場(chǎng)可編程陣列(fpga)具有靈活性、時(shí)效性等優(yōu)點(diǎn),通過靈活的編程可以設(shè)計(jì)成為很多通用接口。

spi(串行外設(shè)接口)總線系統(tǒng)是一種同步串行外設(shè)接口,用于處理主設(shè)備與各種外圍設(shè)備以串行方式進(jìn)行通信信息交換。它以主從方式工作,這種模式通常有一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,需要至少4根線,事實(shí)上3根也可以(單向傳輸時(shí))。分別是sdi(數(shù)據(jù)輸入)、sdo(數(shù)據(jù)輸出)、sclk(時(shí)鐘)、cs(片選)。sdi為主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出;sdo是主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入;sclk是時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生;cs是從設(shè)備使能信號(hào),由主設(shè)備控制。

通常實(shí)現(xiàn)中fpga與外圍設(shè)備的spi通信具有準(zhǔn)實(shí)時(shí)的交互性,多數(shù)情況下需要上位機(jī)進(jìn)行配合,增加交互用的串口、網(wǎng)口或是增加cpu器件的參與。不論哪一種都既增加開發(fā)難度,又需要增加開發(fā)人員,進(jìn)而增加了開發(fā)周期及開發(fā)成本。

相關(guān)術(shù)語:

spiserialperipheralinterface串行外設(shè)接口

fpgafiledprogrammablegatearray現(xiàn)場(chǎng)可編程門陣列

romread-onlymemory只讀存儲(chǔ)器

cpucentralprocessingunit中央處理器

jtagjointtestactiongroup聯(lián)合測(cè)試工作組



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提出了一種基于fpga的spi接口配置方法,可以在沒有上位機(jī)的情況下完成spi接口的配置。并在線修改spi配置參數(shù),實(shí)現(xiàn)準(zhǔn)實(shí)時(shí)交互性。

本發(fā)明技術(shù)方案提供一種基于fpga的spi接口配置方法,用于在沒有上位機(jī)的情況下完成spi接口的配置,并支持在線修改spi配置參數(shù),實(shí)現(xiàn)如下,

設(shè)置jtag下載器連接jtag接口,jtag接口通過配置連線連接fpga,fpga通過spi總線連接到作為外圍設(shè)備的spi器件;

fpga包括依次連接的rom模塊、spictrl模塊和spi接口模塊,spi模塊通過spi總線連接到spi器件;

所述rom模塊用于存儲(chǔ)二進(jìn)制編碼文件;

所述spictrl模塊,用于從rom模塊中讀取數(shù)據(jù),并轉(zhuǎn)化成spi接口接受的命令格式;

spi接口模塊用于產(chǎn)生spi接口信號(hào),輸出spi接口信號(hào)給外圍設(shè)備;

對(duì)外圍設(shè)備的初始配置包括以下步驟,

步驟1,將外圍設(shè)備的配置腳本文件轉(zhuǎn)換成fpga內(nèi)部的rom模塊能夠存儲(chǔ)并識(shí)別的二進(jìn)制編碼文件;

步驟2,例化fpga內(nèi)部的rom模塊,rom模塊的存儲(chǔ)大小由步驟1生成的二進(jìn)制編碼文件大小決定;用步驟1生成的二進(jìn)制編碼文件對(duì)rom模塊進(jìn)行初始化;

步驟3,fpga通過spictrl模塊配置的狀態(tài)機(jī),從rom模塊中將二進(jìn)制編碼命令傳到spi接口模塊上;所述二進(jìn)制編碼命令是用步驟1生成的二進(jìn)制編碼文件對(duì)rom模塊進(jìn)行初始化的結(jié)果;

步驟4,fpga的spi接口模塊形成符合外圍設(shè)備的spi接口命令,對(duì)外圍設(shè)備進(jìn)行串行通信配置。

而且,當(dāng)需要對(duì)外圍設(shè)備重新配置時(shí),在線修改rom模塊中的二進(jìn)制編碼文件,fpga復(fù)位釋放后,實(shí)現(xiàn)對(duì)外圍設(shè)備的重新配置。

而且,采用以下方式實(shí)現(xiàn)對(duì)外圍設(shè)備的重新配置。

首先,在應(yīng)用中根據(jù)實(shí)際需要,確定要修改的外圍設(shè)備spi接口的地址和數(shù)據(jù)值;

然后,加載用于rom模塊初始化的二進(jìn)制編碼文件;找到相應(yīng)的spi地址,填入確定要修改的數(shù)據(jù)值;

最后,fpga芯片復(fù)位,在fpga內(nèi)部重復(fù)運(yùn)行步驟3和步驟4;修改后的值被重新配置到外圍設(shè)備。

而且,使用fpga編程軟件實(shí)現(xiàn)加載用于rom模塊初始化的二進(jìn)制編碼文件;找到相應(yīng)的spi地址,填入確定要修改的數(shù)據(jù)值。

本發(fā)明提出的一種基于fpga的spi接口配置方法,沒有采用串口、網(wǎng)口等需要cpu參與的交互方式。兩者相比,本發(fā)明實(shí)現(xiàn)節(jié)省了開發(fā)難度及開發(fā)人員投入,節(jié)約了開發(fā)成本,適于通信公司大規(guī)模應(yīng)用,具有重要的經(jīng)濟(jì)意義和市場(chǎng)價(jià)值。

附圖說明

圖1為本發(fā)明實(shí)施例中硬件模塊連接框圖。

圖2為本發(fā)明實(shí)施例中fpga實(shí)現(xiàn)模塊框圖。

圖3為本發(fā)明實(shí)施例中配置流程圖。

圖4為本發(fā)明實(shí)施例中二進(jìn)制編碼文件結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說明。

本發(fā)明實(shí)施例,提出一種基于fpga的spi接口配置方法。無需開發(fā)上位機(jī)軟件,節(jié)省了開發(fā)難度及開發(fā)人員投入,節(jié)約了開發(fā)成本。fpga的內(nèi)部rom模塊存儲(chǔ)外圍設(shè)備需要配置的spi寄存器命令。通過狀態(tài)機(jī)控制將存儲(chǔ)在rom中的命令,生成spi接口信號(hào)對(duì)外圍設(shè)備進(jìn)行配置。在線修改rom中的內(nèi)容實(shí)現(xiàn)對(duì)外圍設(shè)備的重新配置。

本發(fā)明采用的fpga芯片是intel公司的fpga芯片,fpga的開發(fā)綜合軟件是qutursii。

圖1為整個(gè)硬件模塊的連接圖,fpgajtag下載器連接jtag接口,jtag接口通過配置連線連接fpga,fpga通過spi總線連接到作為外圍設(shè)備的spi器件。電路板上電,通過fpgajtag下載器,將編程好的fpga文件下載到fpga芯片。fpga開始運(yùn)行后,從內(nèi)部的rom取出數(shù)據(jù)通過spi接口對(duì)外圍設(shè)備進(jìn)行配置。

圖2為fpga內(nèi)部實(shí)現(xiàn)框圖,包括依次連接的rom模塊、spictrl模塊和spi接口模塊(圖中記為spi),spi模塊通過spi總線連接到spi器件。rom模塊用于存儲(chǔ)二進(jìn)制編碼文件。spictrl模塊(串行外設(shè)接口控制模塊)用于從rom模塊中讀取數(shù)據(jù),并轉(zhuǎn)化成spi接口接受的命令格式。spi接口模塊用于產(chǎn)生spi接口信號(hào),輸出spi接口信號(hào)給外圍設(shè)備。具體實(shí)施時(shí),本領(lǐng)域技術(shù)人員可以采用fpga軟件技術(shù)實(shí)現(xiàn)模塊化。

參見圖3,本發(fā)明實(shí)施例的具體實(shí)現(xiàn)如下:

對(duì)外圍設(shè)備的初始配置包括以下步驟:步驟1,將外圍設(shè)備配置腳本文件轉(zhuǎn)換成fpga內(nèi)部的rom模塊可以存儲(chǔ)并可識(shí)別的二進(jìn)制編碼文件。

實(shí)施例中,先將外圍器件ad9361的配置腳本轉(zhuǎn)換成二進(jìn)制編碼文件。二進(jìn)制編碼結(jié)構(gòu)如圖4。每個(gè)二進(jìn)制編碼位寬為20位,由3部分組成:2位讀寫操作(w/r),第18、19位;10位spi地址(spiaddr),第8~17位和8位數(shù)據(jù)(spidata),第0~7位。寫操作,二進(jìn)制編碼的最高2位編碼為11;讀操作,二進(jìn)制編碼的最高2位編碼為10。ad9361配置腳本中的等待命令,二進(jìn)制編碼的最高2位編碼為01。在控制狀態(tài)機(jī)中如果讀到等待命令,fpga會(huì)等待一段時(shí)間,不操作spi接口。

步驟2,例化fpga內(nèi)部的rom模塊,rom模塊的存儲(chǔ)大小由步驟1生成的二進(jìn)制編碼文件大小決定。并用步驟1生成的二進(jìn)制編碼文件對(duì)rom進(jìn)行初始化。

例化fpga中的rom模塊,rom模塊的存儲(chǔ)位寬和深度由步驟1生成的二進(jìn)制編碼文件決定。實(shí)施例中設(shè)置的rom位寬為20位,存儲(chǔ)深度為4096。rom模塊用步驟1生成的二進(jìn)制編碼文件對(duì)進(jìn)行初始化。

步驟3,fpga通過spictrl模塊配置的狀態(tài)機(jī),從rom模塊中將二進(jìn)制編碼命令傳到spi接口模塊上。所述二進(jìn)制編碼命令是用步驟1生成的二進(jìn)制編碼文件對(duì)rom模塊進(jìn)行初始化的結(jié)果。

fpga中的spictrl模塊控制從rom中讀出數(shù)據(jù),轉(zhuǎn)換成spi模塊可以執(zhí)行的spi命令。實(shí)施例中spictrl模塊的狀態(tài)機(jī)具體設(shè)置為,如讀到的二進(jìn)制編碼命令最高2位為11,則spi串行接口中的讀寫位置1,進(jìn)行寫操作;如讀到的二進(jìn)制編碼命令最高2位為11,則spi串行接口中的讀寫位置0,進(jìn)行讀操作。如讀到的二進(jìn)制編碼命令最高2位為01,則spi串行接口不進(jìn)行讀或是寫操作,等待外圍設(shè)備(本實(shí)施例中是ad9361芯片)進(jìn)行內(nèi)部的校準(zhǔn)/鎖相環(huán)鎖定等操作。

步驟4,fpga的spi接口模塊形成符合外圍設(shè)備的spi接口命令,對(duì)外圍設(shè)備進(jìn)行串行配置。

fpga中的spi接口模塊將得到的spi讀寫、寄存器地址和寫入數(shù)據(jù)等命令,形成外圍設(shè)備可識(shí)別的spi接口信號(hào)。與外圍設(shè)備進(jìn)行串行通信。

進(jìn)一步地,當(dāng)需要對(duì)外圍設(shè)備的重新配置時(shí),使用fpga編程軟件,在線修改rom中的二進(jìn)制編碼命令文件,fpga復(fù)位釋放后,實(shí)現(xiàn)對(duì)外圍設(shè)備的重新配置。

實(shí)施例實(shí)現(xiàn)如下:

首先,在應(yīng)用中根據(jù)實(shí)際需要,確定要修改的外圍設(shè)備spi接口的地址和數(shù)據(jù)值。例如,根據(jù)實(shí)際需要調(diào)整ad9361的發(fā)送端內(nèi)部衰減值,即對(duì)應(yīng)的spi寄存器地址為0x073或是0x075的衰減值。

然后,打開fpga芯片的qutursii軟件的in‐systemmemorycontenteditor工具加載用于rom初始化的二進(jìn)制編碼文件。找到相應(yīng)的spi地址,填入確定的修改值。例如,在in‐systemmemorycontenteditor工具里加載rom初始化二進(jìn)制編碼文件,找到ad9361發(fā)送端內(nèi)部衰減寄存器0x73或是0x75所在的位置。修改二進(jìn)制編碼中的8位數(shù)據(jù)部分,填入所需要的數(shù)值。

最后,fpga芯片復(fù)位,在fpga內(nèi)部重復(fù)運(yùn)行步驟3和步驟4。修改后的值被重新配置到外圍設(shè)備。例如,ad9361發(fā)送端內(nèi)部衰減會(huì)變成實(shí)際需要的值,使發(fā)送端輸出信號(hào)滿足實(shí)際需求。

具體實(shí)施時(shí),本領(lǐng)域技術(shù)人員可以采用fpga軟件技術(shù)實(shí)現(xiàn)上述方法的自動(dòng)運(yùn)行。

本發(fā)明中所描述的具體實(shí)施例僅僅是對(duì)本發(fā)明進(jìn)行舉例說明。任何熟悉該技術(shù)的技術(shù)人員在本發(fā)明做揭露的技術(shù)范圍內(nèi),都可輕易得到其變化或替換,因此本發(fā)明保護(hù)范圍都應(yīng)涵蓋在由權(quán)利要求書所限定的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
京山县| 祁东县| 赣榆县| 松阳县| 新密市| 屯留县| 锡林浩特市| 故城县| 霍城县| 西平县| 苍南县| 武强县| 界首市| 商南县| 西乌珠穆沁旗| 株洲市| 凤山市| 德阳市| 邮箱| 康保县| 临沂市| 藁城市| 尚志市| 兰溪市| 敖汉旗| 泰兴市| 赣榆县| 雅江县| 茶陵县| 科尔| 得荣县| 黎城县| 株洲县| 府谷县| 昌邑市| 友谊县| 碌曲县| 永川市| 五原县| 从化市| 长白|