亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種SPI串口模塊的FPGA實(shí)現(xiàn)

        2012-07-12 05:06:56四川九洲電器集團(tuán)公司王維維
        電子世界 2012年18期
        關(guān)鍵詞:信號(hào)設(shè)計(jì)

        四川九洲電器集團(tuán)公司 王維維 馮 碩 昌 暢

        一種SPI串口模塊的FPGA實(shí)現(xiàn)

        四川九洲電器集團(tuán)公司 王維維 馮 碩 昌 暢

        主要介紹了一種在FPGA中實(shí)現(xiàn)SPI總線通信串口模塊的方法,并給出了設(shè)計(jì)方案、仿真結(jié)果以及硬件測(cè)試結(jié)果。本設(shè)計(jì)可以廣泛應(yīng)用于常規(guī)處理控制器件(單片機(jī)、DSP等)同外部外設(shè)及其它處理器之間進(jìn)行SPI數(shù)據(jù)通信的系統(tǒng)中,特別是需要快速構(gòu)建數(shù)據(jù)通信系統(tǒng)的應(yīng)用環(huán)境,在通信、消費(fèi)電子及工業(yè)控制等諸多領(lǐng)域有廣闊的應(yīng)用前景。

        SPI接口;VHDL;FPGA

        1.引言

        串行外設(shè)接口(SPI)是一個(gè)高速同步的串行輸入/輸出口。SPI通常用于處理器和外部外設(shè)以及其它處理器之間進(jìn)行通信。很多新型器件如LCD模塊、FLASH、ADC、EEPROM存儲(chǔ)器以及時(shí)鐘芯片等都采用了SPI接口。但在實(shí)際開(kāi)發(fā)應(yīng)用中,若主控制器無(wú)SPI接口或需要與多個(gè)具有SPI接口的外設(shè)通信,就要使用主控制器的I/O口通過(guò)軟件來(lái)模擬,這在很大程度上限制了其應(yīng)用給數(shù)據(jù)傳輸帶來(lái)不便。所以采用硬件來(lái)實(shí)現(xiàn)SPI接口擴(kuò)充的方法最為可行。

        當(dāng)前,基于主從處理器結(jié)構(gòu)的系統(tǒng)架構(gòu)已經(jīng)成為一種主流(如DSP+FPGA,MCU+FPGA等)。FPGA優(yōu)點(diǎn)主要在于它有很強(qiáng)的靈活性,即其內(nèi)部的具體邏輯功能可以根據(jù)需要配置,對(duì)電路的修改和維護(hù)很方便。傳統(tǒng)SPI接口的FPGA實(shí)現(xiàn)往往采用廠家提供的IP核實(shí)現(xiàn),這種方法雖能基本滿足SPI通信要求,但設(shè)計(jì)不夠靈活,不利于功能擴(kuò)展。基于此,提出一種新的基于FPGA的SPI串口模塊實(shí)現(xiàn)方法。

        2.SPI總線接口及時(shí)序

        SPI串行接口運(yùn)用4條線可與多種標(biāo)準(zhǔn)中心器件間接接口:串行時(shí)鐘線SPICLK,主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線SPISIMO,主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線SPISOMI和低電平有效的從機(jī)選通信號(hào)線SPI_CS。

        SPICLK為主機(jī)時(shí)鐘線,是從機(jī)的一個(gè)輸入,為SPISOMI數(shù)據(jù)的發(fā)送和接收提供同步時(shí)鐘信號(hào)。時(shí)鐘的相位(CPHA)與極性(CPOL)可以用來(lái)控制數(shù)據(jù)的傳輸。CPOL=“0”表示SCLK的靜止?fàn)顟B(tài)為低電平,CPOL=“1”則表示SCLK的靜止?fàn)顟B(tài)為高電平。時(shí)鐘相位(CPHA)可以用來(lái)選擇兩種不同的數(shù)據(jù)傳輸模式。如果CPHA=“0”,數(shù)據(jù)在信號(hào)SPI_CS聲明后的第一個(gè)SCLK邊沿有效。而當(dāng)CPHA=“1”時(shí),數(shù)據(jù)在信號(hào)SPI_CS聲明后的第二個(gè)SCLK邊沿才有效。因此,主機(jī)與從機(jī)中SPI設(shè)備的時(shí)鐘相位和極性必須要一致才能進(jìn)行通信。

        SPI有兩種工作模式:主模式和從模式。工作在主模式下,不管是發(fā)送還是接收數(shù)據(jù),SPICLK為整個(gè)串行通信網(wǎng)絡(luò)提供時(shí)鐘。串行數(shù)據(jù)發(fā)送時(shí),首先發(fā)送的是最高有效位(MSB),時(shí)鐘信號(hào)的1次作用對(duì)應(yīng)1位數(shù)據(jù)的發(fā)送(SPISIMO)和另1位數(shù)據(jù)的接收(SPISOMI)。工作在從模式下,不管是發(fā)送還是接收數(shù)據(jù),一直必需在SPICLK信號(hào)作用下停止,并且SPI_CS信號(hào)必需有效。1個(gè)典型的SPI系統(tǒng)包括一個(gè)主MCU和1個(gè)或幾個(gè)從外圍器件。

        SPI主模式的數(shù)據(jù)接收時(shí)序見(jiàn)圖1。

        SPI主模式的數(shù)據(jù)發(fā)送時(shí)序見(jiàn)圖2。

        3.FPGA設(shè)計(jì)方案

        本設(shè)計(jì)按一個(gè)默認(rèn)數(shù)據(jù)通信速率(10Mbps)、時(shí)鐘模式(無(wú)相位延時(shí)的下降沿)、主/從工作方式(主SPI模式)進(jìn)行SPI數(shù)據(jù)的收發(fā)??赏ㄟ^(guò)外部處理控制器對(duì)本模塊進(jìn)行各種通信參數(shù)的動(dòng)態(tài)配置,以適應(yīng)不同的通信速率、時(shí)鐘模式、工作方式、數(shù)據(jù)長(zhǎng)度等情況。配置完畢后,即可開(kāi)始SPI數(shù)據(jù)的收發(fā)過(guò)程。

        圖1 SPI主模式數(shù)據(jù)接收時(shí)序

        圖2 SPI主模式數(shù)據(jù)發(fā)送時(shí)序

        圖3 SPI串口模塊系統(tǒng)框圖

        圖5 SPI主模式數(shù)據(jù)發(fā)送流程

        圖4 SPI主模式數(shù)據(jù)接收流程

        圖6 仿真結(jié)果圖

        本設(shè)計(jì)中增加了一根主/從SPI方的握手信號(hào)線SPI_STATUS,該信號(hào)線在從SPI方發(fā)送數(shù)據(jù)時(shí)被從方拉為低電平,而在從SPI方接收數(shù)據(jù)時(shí)被從方設(shè)置為高電平。

        根據(jù)SPI總線的原理,本設(shè)計(jì)分為兩大功能模塊:數(shù)據(jù)接收及協(xié)議解析、數(shù)據(jù)發(fā)送處理。該SPI串口模塊系統(tǒng)框圖如圖3所示。

        在這些子模塊中,數(shù)據(jù)接收FIFO和數(shù)據(jù)發(fā)送FIFO用來(lái)做接收、發(fā)送數(shù)據(jù)的FIFO。通信參數(shù)配置單元供處理控制器讀寫(xiě)配置SPI的各種參數(shù)。對(duì)外并行接口單元負(fù)責(zé)與外部處理控制器進(jìn)行數(shù)據(jù)交互。串行數(shù)據(jù)接收、命令解析及中斷產(chǎn)生單元完成串行數(shù)據(jù)接收、通信命令解析及產(chǎn)生中斷信號(hào)通知處理控制器進(jìn)行數(shù)據(jù)接收操作。串行時(shí)鐘產(chǎn)生及收發(fā)控制單元用來(lái)發(fā)生主模式下的時(shí)鐘信號(hào),同時(shí)對(duì)數(shù)據(jù)的接收或者發(fā)送進(jìn)行功能切換。串行數(shù)據(jù)發(fā)送處理單元負(fù)責(zé)把并行進(jìn)來(lái)的數(shù)據(jù)串行傳出,完成對(duì)數(shù)據(jù)發(fā)送的處理。

        (1)數(shù)據(jù)接收及協(xié)議解析

        當(dāng)從SPI方發(fā)送數(shù)據(jù)的時(shí)刻到來(lái)時(shí),本設(shè)計(jì)檢測(cè)到狀態(tài)線SPI_STATUS為“低”,則串行時(shí)鐘產(chǎn)生及收發(fā)控制單元立即啟動(dòng)接收邏輯,對(duì)外輸出串行時(shí)鐘SPICLK信號(hào)和選通信號(hào)SPI_CS,同時(shí)在SPICLK上升沿時(shí)刻進(jìn)行數(shù)據(jù)采樣,并將串行數(shù)據(jù)進(jìn)行相應(yīng)緩存。

        每當(dāng)采樣數(shù)據(jù)構(gòu)成一個(gè)完整字節(jié)時(shí),由接收模塊將收到的數(shù)據(jù)存入“數(shù)據(jù)接收FIFO”,同時(shí)對(duì)串口數(shù)據(jù)中的特殊字段進(jìn)行協(xié)議解析。過(guò)程如下:先檢索收全數(shù)據(jù)同步頭字節(jié)“AAH AAH”后,對(duì)后面接收的完整字節(jié)進(jìn)行+1計(jì)數(shù)處理,再檢索收到串口數(shù)據(jù)總長(zhǎng)度字節(jié)后,判斷已收到的字節(jié)總數(shù)是否達(dá)到串口數(shù)據(jù)總長(zhǎng)度值。如果達(dá)到接收數(shù)據(jù)總長(zhǎng)度值,則表示一幀數(shù)據(jù)命令接收完整,此處由接收模塊置出“命令數(shù)據(jù)接收完整”標(biāo)志;同時(shí),當(dāng)檢測(cè)到狀態(tài)線SPI_STATUS的上升沿到來(lái),給出數(shù)據(jù)接收完畢中斷標(biāo)志信號(hào)int_rxd及時(shí)中斷處理控制器,通知外部控制器讀取數(shù)據(jù)進(jìn)行處理,而不必每接收到1個(gè)字節(jié)就中斷一次,避免了主程序被頻繁中斷。

        目前,本設(shè)計(jì)的接收FIFO和發(fā)送FIFO深度均設(shè)定為2048字節(jié),可以緩存大量的通信數(shù)據(jù),而不會(huì)將先前收到的數(shù)據(jù)覆蓋,外部處理控制器可以在處理完其它緊要任務(wù)后,再來(lái)進(jìn)行SPI數(shù)據(jù)的讀取和后續(xù)處理,而不必?fù)?dān)心已接收的SPI數(shù)據(jù)會(huì)丟掉。

        接收數(shù)據(jù)的流程圖如圖4所示。

        (2)數(shù)據(jù)發(fā)送處理

        當(dāng)需要發(fā)送SPI數(shù)據(jù)時(shí),外部處理控制器將需要發(fā)送的所有數(shù)據(jù)依次寫(xiě)入本設(shè)計(jì)的“數(shù)據(jù)發(fā)送FIFO”中,再對(duì)本設(shè)計(jì)另一個(gè)地址單元寫(xiě)入“啟動(dòng)發(fā)送命令”后,即可啟動(dòng)數(shù)據(jù)發(fā)送模塊發(fā)送數(shù)據(jù)。該模塊實(shí)時(shí)判定數(shù)據(jù)發(fā)送FIFO是否為空,若FIFO內(nèi)有數(shù)據(jù)則立即對(duì)外輸出串行時(shí)鐘SPICLK信號(hào)和選通信號(hào)SPI_CS,并在SPICLK的下降沿時(shí)刻對(duì)取出的數(shù)據(jù)進(jìn)行發(fā)送,首先發(fā)送的是最高有效位(MSB)。即對(duì)主程序而言,就是向一特定地址寫(xiě)入所有需要發(fā)送的數(shù)據(jù),再寫(xiě)入一個(gè)啟動(dòng)發(fā)送命令即可自動(dòng)完成全部數(shù)據(jù)的發(fā)送,無(wú)需進(jìn)行發(fā)送流程控制。

        發(fā)送數(shù)據(jù)的流程圖如圖5所示。

        4.電路完成

        為了保證代碼的準(zhǔn)確性,首先應(yīng)根據(jù)模塊功能需求來(lái)編寫(xiě)相應(yīng)測(cè)試向量作為本SPI模塊的輸入激勵(lì),然后經(jīng)過(guò)查看模塊的輸出結(jié)果,判定本SPI模塊的各項(xiàng)功能是否正確。

        采用了XILINX公司的EDA編譯軟件平臺(tái)ISE10.1,將用VHDL語(yǔ)言描述好的SPI接口模塊進(jìn)行了綜合,然后用modelsim軟件進(jìn)行仿真。在建立測(cè)試平臺(tái)時(shí),首先建立模擬從SPI方數(shù)據(jù)發(fā)送的模塊,同時(shí)建立模擬主SPI方數(shù)據(jù)發(fā)送的模塊,再將接收/發(fā)送數(shù)據(jù)內(nèi)容進(jìn)行比較、驗(yàn)證。在仿真軟件的輔助分析下,得到了正確的結(jié)果。仿真結(jié)果如圖6所示。

        仿真通過(guò)后,將整個(gè)設(shè)計(jì)工程文件經(jīng)綜合后的EDIF文件提交給ISE進(jìn)行布局、布線后,把所生成的mcs文件下載到XILINX公司的FPGA芯片XC3S400中運(yùn)行,結(jié)果與在modelsim中的仿真結(jié)果一致,該SPI總線接口模塊能達(dá)到所要求實(shí)現(xiàn)的性能,具有很強(qiáng)的實(shí)用性。

        5.結(jié)束語(yǔ)

        本設(shè)計(jì)以FPGA為硬件平臺(tái),應(yīng)用VHDL語(yǔ)言進(jìn)行程序編制??蓪?shí)現(xiàn)對(duì)SPI通信數(shù)據(jù)的自動(dòng)接收和發(fā)送,也可由外部程序?qū)υ揝PI串口進(jìn)行快速配置,從而完成串口通信速率、時(shí)鐘模式、工作方式、數(shù)據(jù)長(zhǎng)度等的動(dòng)態(tài)更改。

        通過(guò)簡(jiǎn)單的程序復(fù)用,該設(shè)計(jì)可擴(kuò)充為多路SPI數(shù)據(jù)通信接口,一方面彌補(bǔ)了常規(guī)處理控制器件(單片機(jī)、DSP等)所自帶的SPI硬件串口操作繁瑣、功能受限的不足,另一方面也把單片機(jī)、DSP從頻繁的數(shù)據(jù)查詢或數(shù)據(jù)中斷中解放出來(lái),從而投入更多精力到其它的功能控制中。

        [1]侯伯亨,顧新,編著.VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)[M].西安電子科技大學(xué)出版社,1999.

        [2]孫豐軍,余春暄.SPI串行總線接口的Verilog實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2005.

        王維維(1980—),男,陜西人,2002年畢業(yè)于武漢大學(xué),主要從事電子信息方面工作。

        馮碩(1984—),男,四川人,2007年畢業(yè)于電子科技大學(xué),主要從事電子信息方面工作。

        昌暢(1987—),男,重慶人,2009年畢業(yè)于四川大學(xué),主要從事電子信息方面工作。

        猜你喜歡
        信號(hào)設(shè)計(jì)
        信號(hào)
        鴨綠江(2021年35期)2021-04-19 12:24:18
        完形填空二則
        何為設(shè)計(jì)的守護(hù)之道?
        《豐收的喜悅展示設(shè)計(jì)》
        流行色(2020年1期)2020-04-28 11:16:38
        孩子停止長(zhǎng)個(gè)的信號(hào)
        瞞天過(guò)?!律O(shè)計(jì)萌到家
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        基于LabVIEW的力加載信號(hào)采集與PID控制
        一種基于極大似然估計(jì)的信號(hào)盲抽取算法
        男女肉粗暴进来动态图| 久久婷婷免费综合色啪| 国产一区二区在线观看av| 免费黄片小视频在线播放| 国产精品久久777777| 在线视频精品免费| 国产高潮精品一区二区三区av| 日本美女在线一区二区| 先锋五月婷婷丁香草草| 天天做天天爱天天综合网| 成激情人妻视频| 亚洲男人的天堂av一区| 亚洲av成人网| 麻豆乱码国产一区二区三区| 国产亚洲日韩AV在线播放不卡| 成人高清在线播放视频| 中文字幕网伦射乱中文| 特级毛片a级毛片在线播放www| 无码人妻丰满熟妇区免费| 99精品久久精品一区| 免费人成网站在线观看欧美| 日韩国产精品一区二区Hd| 中文字幕一二区中文字幕| 国产日产桃色精品久久久| 色欲av蜜桃一区二区三| 国产白丝在线| 亚洲在线一区二区三区| 亚洲免费观看视频| 中出内射颜射骚妇| 亚洲无码图| 青青草手机在线观看视频在线观看| 亚洲国产成人久久综合| 特黄aa级毛片免费视频播放| 中文字幕一区二区三区在线看一区 | 欧美一区二区三区视频在线观看| 在线精品国产一区二区| 日本精品人妻一区二区三区 | 欧美老肥妇做爰bbww| 国产午夜激无码av毛片| 亚洲av天堂久久精品| 久久精品国产亚洲av网|