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

        ?

        全功能SPI接口的設(shè)計(jì)與實(shí)現(xiàn)

        2012-01-18 12:03:30辛?xí)詫?/span>孫文強(qiáng)
        電子設(shè)計(jì)工程 2012年23期
        關(guān)鍵詞:設(shè)計(jì)

        辛?xí)詫?,孫文強(qiáng)

        (沈陽(yáng)工業(yè)大學(xué) 研究生學(xué)院,遼寧 沈陽(yáng) 110870)

        SPI串行通信接口是一種常用的標(biāo)準(zhǔn)接口,由于其使用簡(jiǎn)單方便且節(jié)省系統(tǒng)資源,很多芯片都支持該接口,應(yīng)用相當(dāng)廣泛[1]。但是現(xiàn)有文獻(xiàn)和設(shè)計(jì)多數(shù)僅實(shí)現(xiàn)了SPI接口的基本發(fā)送和接收功能,對(duì)SPI接口的時(shí)序控制沒有進(jìn)行深入的研究。全功能SPI接口應(yīng)具有四種不同的時(shí)鐘模式,以適應(yīng)具有不同時(shí)序要求的從控制器。文中主要研究SPI接口的時(shí)鐘時(shí)序,并用具體電路實(shí)現(xiàn)具有4種不同極性和相位的時(shí)鐘,最后通過(guò)仿真驗(yàn)證和FPGA驗(yàn)證[2]。

        1 SPI控制器典型結(jié)構(gòu)

        SPI模塊中的典型結(jié)構(gòu)是用于通信的主從2個(gè)控制器之間的連接,如圖1所示。由串行時(shí)鐘線(SPICLK)、主機(jī)輸入從機(jī)輸出線(SPISOMI)、主機(jī)輸出從機(jī)輸入線(SPISIMO)、SPI選通線(SPISTE)4條線組成[3]。當(dāng)CPU通過(guò)譯碼向主控制器寫入要傳輸?shù)臄?shù)據(jù)時(shí),主控制器通過(guò)串行時(shí)鐘線來(lái)啟動(dòng)數(shù)據(jù)傳輸,將會(huì)在串行時(shí)鐘線的一個(gè)邊沿將數(shù)據(jù)移出移位寄存器,而在串行時(shí)鐘的另一個(gè)邊沿將數(shù)據(jù)鎖存在移位寄存器中。SPI選通線是SPI控制器的使能端,可以選擇多個(gè)從機(jī),實(shí)現(xiàn)一主多從的結(jié)構(gòu),只要SPI選通信號(hào)將要選的從機(jī)處的選通信號(hào)變?yōu)榈碗娖骄湍軌蜻B接成功。

        圖1 SPI主從連接Fig.1 Master-slave link

        2 全功能SPI控制器設(shè)計(jì)

        2.1 SPI控制器內(nèi)部結(jié)構(gòu)

        SPI控制器的原理框圖如圖2所示,其中主要包括:

        1)SPI控制器的內(nèi)部寄存器

        圖2 SPI控制器原理框圖Fig.2 Functional block diagram of SPI module

        SPI操作控制寄存器(SPICTL),SPI狀態(tài)寄存器(SPISTS),SPI波特率設(shè)計(jì)寄存器 (SPIBRR),SPI接收緩沖寄存器(SPIRXBUF),SPI發(fā)送緩沖寄存器 (SPITXBUF),SPI串行數(shù)據(jù)寄存器(SPIDAT),SPI中斷優(yōu)先級(jí)控制寄存器(SPIPRI)。

        2)SPI控制器內(nèi)的功能模塊

        時(shí)鐘分頻模塊 (Frequency Divider),內(nèi)部時(shí)鐘產(chǎn)生電路(Clk_Occur), 狀 態(tài) 控 制 機(jī) (State Control), 中 斷 控 制 (Int Control),測(cè)試模塊(Test),輸出控制模塊(Dateout Control)。

        2.2 SPI控制器工作原理

        圖2給出了SPI控制器的基本原理框圖。SPI控制器可工作在主模式和從模式下,由于在主模式下需要提供相應(yīng)的時(shí)鐘給從控制器,較從模式下工作更為復(fù)雜,所以將用工作在主模式下的SPI控制器描述內(nèi)部工作原理。

        在開始傳送數(shù)據(jù)前,需將SPI控制器進(jìn)行配置,設(shè)定時(shí)鐘波特率(SPIBPR),時(shí)鐘相位和極性,需要傳送的字符位數(shù)(SPICCR)。基本配置結(jié)束后,向 SPITXBUF和SPIDAT 2個(gè)寄存器內(nèi)寫入要傳送的數(shù)據(jù)時(shí),將會(huì)起動(dòng)一次發(fā)送和接收操作。如果有正在傳送的數(shù)據(jù),向SPITXBUF內(nèi)寫入數(shù)據(jù),新的數(shù)據(jù)將在當(dāng)前數(shù)據(jù)傳送結(jié)束后自動(dòng)進(jìn)行發(fā)送和接收操作。

        寫入SPICRR寄存器里的Char0~Char3位將會(huì)配置SPI狀態(tài)控制模塊里的計(jì)數(shù)器。狀態(tài)控制是系統(tǒng)的核心部分,為了使系統(tǒng)結(jié)構(gòu)化,設(shè)計(jì)了狀態(tài)機(jī),如圖3所示,分為3種狀態(tài),分別是空閑狀態(tài)、發(fā)送命令狀態(tài)(配置SPI各個(gè)寄存器)、數(shù)據(jù)狀態(tài)。其中數(shù)據(jù)狀態(tài)包括數(shù)據(jù)的傳送和讀取[4]。

        作為全功能SPI接口,在設(shè)計(jì)時(shí)加入了測(cè)試模塊。使能相關(guān)地址譯碼,將使系統(tǒng)內(nèi)部關(guān)鍵節(jié)點(diǎn)通過(guò)輸出控制模塊傳送到數(shù)據(jù)總線。

        圖3 SPI控制器狀態(tài)機(jī)Fig.3 State machine of SPI module

        2.3 全功能SPI控制器的時(shí)鐘設(shè)計(jì)

        SPI控制器為了和外部數(shù)據(jù)進(jìn)行交換,根據(jù)外設(shè)工作要求,其輸出串行同步時(shí)鐘極性和時(shí)鐘相位可以進(jìn)行匹配。但時(shí)鐘極性對(duì)傳輸協(xié)議沒有重大影響。如圖4所示,全功能SPI控制器包括4種不同的時(shí)鐘模式:

        無(wú)延時(shí)的上升沿:SPI在SPICLK信號(hào)上升沿發(fā)送數(shù)據(jù),在SPICLK信號(hào)下降沿接

        收數(shù)據(jù);

        無(wú)延時(shí)的下降沿:SPI在SPICLK信號(hào)下降沿發(fā)送數(shù)據(jù),在SPICLK信號(hào)上升沿接收數(shù)據(jù);

        有延時(shí)的上升沿:SPI在SPICLK信號(hào)上升沿之前的半個(gè)周期發(fā)送數(shù)據(jù),在SPICLK信號(hào)下降沿接收數(shù)據(jù);

        有延時(shí)的下降沿:SPI在SPICLK信號(hào)下降沿之前的半個(gè)周期發(fā)送數(shù)據(jù),在SPICLK信號(hào)上升沿接收數(shù)據(jù)

        圖4 與發(fā)送和接收相對(duì)應(yīng)的4種時(shí)鐘模式Fig.4 Four different clocking schemes when sending and receiving

        對(duì)于SPI控制器內(nèi)部時(shí)鐘的產(chǎn)生,在對(duì)系統(tǒng)時(shí)鐘進(jìn)行分頻之后,還要對(duì)生成的時(shí)鐘進(jìn)行一定處理,因?yàn)榉诸l后的時(shí)鐘其高電平時(shí)間是幾個(gè)系統(tǒng)時(shí)鐘周期的和,控制移位寄存器的時(shí)鐘采用的是系統(tǒng)時(shí)鐘,為了在SPICLK的一個(gè)時(shí)鐘周期內(nèi)只移位一位數(shù)據(jù),必須要求內(nèi)部時(shí)鐘的高電平時(shí)間為一個(gè)系統(tǒng)時(shí)鐘的周期,才能保證在SPICLK的一個(gè)時(shí)鐘周期內(nèi),只有一位數(shù)據(jù)的接收和發(fā)送。

        圖5為實(shí)現(xiàn)上述功能的具體電路,即SPI控制器時(shí)鐘產(chǎn)生的電路結(jié)構(gòu)。在圖5中,分頻后的時(shí)鐘為DICLK,作為與門的一個(gè)輸入端進(jìn)入模塊后對(duì)其進(jìn)行處理。節(jié)點(diǎn)Y1和Y2的輸出方程為:

        分頻時(shí)鐘DICLK通過(guò)節(jié)點(diǎn)Y1和Y2后,其高電平時(shí)間僅為一個(gè)系統(tǒng)時(shí)鐘周期,且Y1較Y2延遲半個(gè)周期。MUX1的選擇端S來(lái)自配置寄存器的Phase端,選擇有延遲的Y1還是無(wú)延遲的Y2通過(guò)。分頻后的時(shí)鐘將被用于兩個(gè)用途,一是產(chǎn)生SPICLK作為從控制器的輸入時(shí)鐘。二是作為主控制器的內(nèi)部時(shí)鐘,被用于計(jì)數(shù)器的計(jì)數(shù)脈沖和用于控制串行移位寄存器SPIDAT。

        當(dāng)分頻時(shí)鐘用于產(chǎn)生SPICLK時(shí),異或門XOR1的一個(gè)輸入端來(lái)自配置寄存器的Polarity端,用于控制時(shí)鐘極性。節(jié)點(diǎn)Y3作為D觸發(fā)器MTN1的輸出端,輸出方程為:

        同時(shí)D觸發(fā)器MTN1的S0端的輸入方程為:

        S0為0,D觸發(fā)器上升沿觸發(fā)。S0為1,D觸發(fā)器保持原狀態(tài)。通過(guò)MTN1后的分頻時(shí)鐘,其高電平時(shí)間和低電平時(shí)間相等或相差一個(gè)系統(tǒng)時(shí)鐘周期,這個(gè)時(shí)鐘即為主模式下產(chǎn)生的SPICLK,通過(guò)Phase和Polarity端的選擇將會(huì)有四種不同時(shí)鐘模式。

        當(dāng)分頻時(shí)鐘用于產(chǎn)生SPI控制器的內(nèi)部時(shí)鐘時(shí),MUX2的選擇端S來(lái)自配置寄存器的主/從模式選擇端,選擇內(nèi)部時(shí)鐘還是外部時(shí)鐘通過(guò)。輸出端LANCLK用于SPI控制器的數(shù)據(jù)輸入/輸出鎖存時(shí)鐘。其方程為:

        這里的DICLKn為通過(guò)MUX2后的分頻時(shí)鐘。由于時(shí)鐘極性對(duì)傳輸協(xié)議沒有影響,所以上式將使四種時(shí)鐘模式轉(zhuǎn)變成2種,即上升沿?zé)o延遲和下降沿有延遲,而后在用于控制數(shù)據(jù)的輸入/輸出鎖存。通過(guò)節(jié)點(diǎn)Y2的分頻時(shí)鐘經(jīng)過(guò)控制邏輯傳送到輸出端CNTCLK和DATCLK,這兩個(gè)時(shí)鐘分別用于SPI控制器內(nèi)部計(jì)數(shù)器的計(jì)數(shù)時(shí)鐘和移位寄存器的控制時(shí)鐘。

        以上分析均是在SPI控制器工作在主模式的情況,當(dāng)SPI控制器工作在從模式時(shí),外部時(shí)鐘來(lái)自與門AND1的一個(gè)輸入,通過(guò)控制邏輯分別到達(dá)CNTCLK和DATCLK端。

        在時(shí)鐘生成模塊里同時(shí)具有相應(yīng)控制功能:Reset引腳,模塊的復(fù)位端,低有效。SPISTE引腳,SPI控制器的使能端,低有效。Susp_free和Susp_soft引腳,決定了當(dāng)仿真器突然中斷時(shí)SPI模塊將采取何種動(dòng)作,在時(shí)鐘生成模塊里,Susp_free和Susp_soft被置為00時(shí),將關(guān)斷SPICLK,使正在傳送的數(shù)據(jù)立即停止。

        圖5 SPI控制器時(shí)鐘產(chǎn)生電路Fig.5 Clk generating circuit of SPImodule

        3 SPI控制器的仿真實(shí)現(xiàn)

        SPI控制器的仿真使用Mentor公司的ModelSim軟件,該軟件可在windows,Linux平臺(tái)上使用,支持VHDL或Verilog硬件描述語(yǔ)言(HDL)仿真。它支持所有器件的行為級(jí)仿真、VHDL或Verilog仿真激勵(lì)。為了測(cè)試設(shè)計(jì)的正確性,編寫了testbench模塊,包括產(chǎn)生時(shí)鐘信號(hào),控制寄存器的配置,收發(fā)的數(shù)據(jù),產(chǎn)生的中斷等[5]。

        3.1 SPI控制器時(shí)鐘仿真驗(yàn)證

        當(dāng)SPI工作在主模式下,全功能SPI控制器根據(jù)從控制器的時(shí)序要求會(huì)提供具有4種不同極性和相位的時(shí)鐘。圖6為SPI控制器內(nèi)部時(shí)鐘生產(chǎn)模塊的仿真驗(yàn)證,輸入DICLK為分頻后時(shí)鐘,其對(duì)系統(tǒng)時(shí)鐘進(jìn)行了14分頻。時(shí)鐘生產(chǎn)模塊對(duì)DICLK進(jìn)行處理,產(chǎn)生LANCLK,CNTCLK,DATCLK和4種不同極性和相位的SPICLK。

        圖6 SPI控制器內(nèi)部時(shí)鐘產(chǎn)生模塊的仿真結(jié)果Fig.6 Simulation results of CLK generating circuit

        3.2 SPI控制器工作在主模式下的驗(yàn)證測(cè)試

        通過(guò)配置寄存器選擇SPI工作在主模式,此時(shí)主SPI通過(guò)引腳SPICLK提供整個(gè)串行網(wǎng)絡(luò)的串行時(shí)鐘。SPI波特率寄存器決定發(fā)送和接收的傳輸速率。發(fā)送數(shù)據(jù)時(shí),主控制器先發(fā)送SPICLK信號(hào),然后向SPIDAT和SPITXBUF寄存器寫入數(shù)據(jù)C00F和8FF,寫入這兩個(gè)寄存器都可以啟動(dòng)SPISIMO引腳上的數(shù)據(jù)發(fā)送(先發(fā)送最高有效位)。同時(shí)從控制器通過(guò)引腳SPISIMO將接收到的數(shù)據(jù)移入SPIDAT的最低位,當(dāng)選定量的位發(fā)送完時(shí),整個(gè)數(shù)據(jù)發(fā)送完畢,數(shù)據(jù)按照右對(duì)齊的格式存入SPIRXBUF中,以備系統(tǒng)讀?。ㄒ话銥閏pu),同時(shí)中斷標(biāo)志位被置為1,當(dāng)系統(tǒng)發(fā)出指令,讀取存在SPITXBUF的數(shù)據(jù)時(shí),SPI中斷標(biāo)志位被清零,仿真結(jié)果如圖7所示。

        圖7 SPI控制器工作在主模式下仿真結(jié)果Fig.7 The simulation results of master mode

        4 結(jié)束語(yǔ)

        文中提出了一種全功能硬件SPI接口設(shè)計(jì)方法,實(shí)現(xiàn)了4種具有不同極性和相位的時(shí)鐘,它吸取了傳統(tǒng)軟硬件的優(yōu)點(diǎn),具有速度快、結(jié)構(gòu)簡(jiǎn)單的特點(diǎn),并已通過(guò)功能仿真和FPGA驗(yàn)證,結(jié)果證明本設(shè)計(jì)是可靠的,可直接用于FPGA中或者作為硬件電路嵌入具體芯片內(nèi)[6]。

        [1]潘新民,王燕芳.微型計(jì)算機(jī)控制技術(shù)[M].北京電子工業(yè)出版社,2003.

        [2]楊承富,徐志軍.SPI總線接口的FPGA設(shè)計(jì)與實(shí)現(xiàn)[J].軍事通信技術(shù),2004,25(2):72-76.YANG Cheng-fu,XU Zhi-jun.Design and implement SPI bus interface with FPGA[J].Journal of Military Communication Technology,2004,25(2)72-76.

        [3]劉樂善,葉濟(jì)忠,葉永堅(jiān).微型計(jì)算機(jī)接口技術(shù)原理及應(yīng)用[M].武漢,華中理工大學(xué)出版社,1999.

        [4]俞莉瓊,付宇卓.有限狀態(tài)機(jī)的verilog設(shè)計(jì)與研究[J].微電子學(xué)與計(jì)算機(jī),2004,21(11):146-148.YU LI-qiong,F(xiàn)U Yu-zhuo.Verilog design and research of finite state machine[J].Microelectr-onics&Computer,2004,21(11):146-148.

        [5]張亮.數(shù)字電路設(shè)計(jì)與VerilogHDL[M].北京:人民郵電出版社,2000.

        [6]郭兵,沈艷,林永宏,等.SOC技術(shù)原理與應(yīng)用[M].北京清華大學(xué)出版社,2006.

        猜你喜歡
        設(shè)計(jì)
        二十四節(jié)氣在平面廣告設(shè)計(jì)中的應(yīng)用
        何為設(shè)計(jì)的守護(hù)之道?
        《豐收的喜悅展示設(shè)計(jì)》
        流行色(2020年1期)2020-04-28 11:16:38
        基于PWM的伺服控制系統(tǒng)設(shè)計(jì)
        電子制作(2019年19期)2019-11-23 08:41:36
        基于89C52的32只三色LED搖搖棒設(shè)計(jì)
        電子制作(2019年15期)2019-08-27 01:11:50
        基于ICL8038的波形發(fā)生器仿真設(shè)計(jì)
        電子制作(2019年7期)2019-04-25 13:18:16
        瞞天過(guò)海——仿生設(shè)計(jì)萌到家
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        從平面設(shè)計(jì)到“設(shè)計(jì)健康”
        商周刊(2017年26期)2017-04-25 08:13:04
        午夜短无码| 狠狠色噜噜狠狠狠777米奇小说| 男女车车的车车网站w98免费| 国产小视频网址| 中文字幕亚洲精品第一页| av男人的天堂亚洲综合网| 久久久久久久97| 黑人巨大videos极度另类| 中文字幕一区二区三区在线视频| 久久精品一区二区熟女| 四川丰满妇女毛片四川话| 亚洲综合av在线在线播放| 亚洲在战AV极品无码| 美女露出奶头扒开内裤的视频 | 国产成人精品午夜视频| 国产黄色片在线观看| 国产麻豆精品久久一二三| 精品少妇一区二区三区免费| 免费看黄a级毛片| 911香蕉视频| 亚洲第一页在线观看视频网站| 蜜桃18禁成人午夜免费网站| 小宝极品内射国产在线| 无码之国产精品网址蜜芽| 亚洲精品av一区二区日韩| 亚洲av综合av一区二区三区| 18成人片黄网站www| 久久青草亚洲AV无码麻豆| 中文字幕人妻一区二区二区| 精品国产乱码久久久久久郑州公司| 一卡二卡三卡视频| 日韩人妻中文字幕一区二区| 中文字幕一区二区中出后入| 欧美极品色午夜在线视频| 久久久精品456亚洲影院| 一区二区三区中文字幕在线观看| 国产精品欧美久久久久久日本一道| 男女扒开双腿猛进入免费看污| 久久精品这里就是精品| 丰满人妻久久中文字幕| 国产99久久久久久免费看|