国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Nios II的SPI接口實(shí)現(xiàn)

2014-08-30 06:26:30康賓孫亮周玉娟
關(guān)鍵詞:寄存器時(shí)序時(shí)鐘

康賓孫亮周玉娟

(1中國(guó)電子科技集團(tuán)公司第五十四研究所河北石家莊050081)

(2解放軍理工大學(xué)江蘇南京210007)

1 引言

SPI作為一個(gè)通用的接口在越來越多的芯片上使用,是一種4線的低速接口;AD9517-1ABCPZ就是一款支持SPI接口的時(shí)鐘芯片,SPI接口是該芯片的配置接口。Nios II處理器作為一個(gè)簡(jiǎn)單的CPU,在很多SOPC系統(tǒng)中都被使用;在FPGA設(shè)計(jì)中搭建Nios II系統(tǒng),結(jié)合SPIMASTER模塊,可以用于配置AD9517-1ABCPZ,讓其輸出所需頻率的時(shí)鐘。

2 簡(jiǎn)介

2.1 Nios

Nios II系列軟核處理器是Altera公司的第二代FPGA嵌入式處理器,其性能超過200DMIPS。Nios II包括3種產(chǎn)品,分別是:NiosⅡ/f(快速)最高的系統(tǒng)性能、中等FPGA使用量;NiosⅡ/s(標(biāo)準(zhǔn))高性能和低FPGA使用量;NiosⅡ/e(經(jīng)濟(jì))低性能,最低的FPGA使用量。這3種產(chǎn)品采用32位處理器的基本結(jié)構(gòu)單元:32位指令大小、32位數(shù)據(jù)和地址路徑32位通用寄存器和32個(gè)外部中斷源;使用同樣的指令集架構(gòu)(ISA),100%二進(jìn)制代碼兼容,可以根據(jù)系統(tǒng)需求的變化更改CPU,選擇滿足性能和成本的最佳方案[1,2]。

2.2 AD9517-1ABCPZ

AD9517-1ABCPZ是Analog Device公司生產(chǎn)的時(shí)鐘發(fā)生器,其工作電壓+3.3 V,最大輸入頻率2 400 MHz,最大輸出頻率2 650 MHz,輸出時(shí)鐘為TTL電平或LVPEL電平[3]。

2.3 SPI總線

SPI總線系統(tǒng)是一種同步串行外設(shè)接口,可以使MCU與各種外圍設(shè)備以串行方式進(jìn)行通信以交換信息。SPI總線系統(tǒng)可直接與各個(gè)廠家生產(chǎn)的多種標(biāo)準(zhǔn)外圍器件直接相連,該總線一般使用4條線:SDO(主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入)、SDI(主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出)、SCLK(時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生)和CS(從設(shè)備使能信號(hào),由主設(shè)備控制)等信號(hào)[4]。

3 實(shí)現(xiàn)方案

使用Nios II初始化、配置AD9517-1ABCPZ的實(shí)現(xiàn)方案可以分為兩部分:硬件設(shè)計(jì)和軟件設(shè)計(jì)[4]。硬件設(shè)計(jì)主要包括基于Nios II的SOPC系統(tǒng)的搭建,SPI-MASTER接口FPGA程序設(shè)計(jì)。軟件設(shè)計(jì)主要包括:SPI讀寫函數(shù)設(shè)計(jì),AD9517-1ABCPZ寄存器配置函數(shù)設(shè)計(jì)。

3.1 硬件設(shè)計(jì)

硬件設(shè)計(jì)包括:Nios II的SOPC系統(tǒng)和SPI-MASTER模塊兩部分。Nios II的SOPC系統(tǒng)通過并行的CPU接口與SPI-MASTER模塊相連,SPI-MASTER通過 SPI接口與AD9517相連,其原理框圖如圖1所示:

圖1 硬件系統(tǒng)原理框圖

Nios II的SOPC系統(tǒng),采用硬件程序和軟件程序都存儲(chǔ)在EPCS芯片的方式,采用該方式FPGA無需外接FLASH、SDRAM芯片,節(jié)省了電路板的布局空間以及成本,其主要包括以下幾個(gè)部分[5]:①Nios II,系統(tǒng)的CPU;②On-chip Memory RAM,存儲(chǔ)系統(tǒng)啟動(dòng)后的程序指令以及數(shù)據(jù);③On-chip Memory ROM,存儲(chǔ)只讀數(shù)據(jù),例如波形數(shù)據(jù)等;④EPCSSerial Flash Controller,控制EPCS芯片,指定啟動(dòng)地址;⑤JTAG UART,程序調(diào)試輸出接口,相當(dāng)于系統(tǒng)串行接口輸出,用于觀察調(diào)試過程中輸出信息;⑥Avalon-MM Tristate Bridge,其用于連接以上5個(gè)部分;⑦Typical Avalon-MM Tristate Slave,系統(tǒng)的CPU接口,控制片選,讀寫信號(hào)等。以上7個(gè)部分組成一個(gè)簡(jiǎn)單的帶有CPU接口的SOPC系統(tǒng),用于承載AD9517-1ABCPZ配置程序。

NIOS系統(tǒng)數(shù)據(jù)線是32位的,也就是按照32位進(jìn)行讀寫操作。但圖1所示的原理框圖中DATA寬度是8位的,這樣的話就會(huì)出現(xiàn)一個(gè)問題:若不對(duì)CS信號(hào)作調(diào)整,在一個(gè)讀周期內(nèi)CS信號(hào)會(huì)出現(xiàn)4次有效狀態(tài)。要完成8位的讀操作,就必須對(duì)CS信號(hào)進(jìn)行調(diào)整:在Typical Avalon-MM Tristate Slave里加入4位Byteenable[3..0]信號(hào),當(dāng)Byteenable信號(hào)和RD信號(hào)同時(shí)有效時(shí),CS信號(hào)才有效,這樣就可以避免一個(gè)讀周期內(nèi)CS信號(hào)出現(xiàn)4次有效狀態(tài)的情況。NIOS系統(tǒng)的讀操作不會(huì)出現(xiàn)類似情況,所以數(shù)據(jù)讀過程CS信號(hào)不需要調(diào)整[6]。AD9517-1ABCPZ的SPI接口默認(rèn)是MSB方式,SPI-MASTER模塊以MSB的方式設(shè)計(jì),其讀寫時(shí)序圖如圖2和圖3所示。

圖2 SPI接口寫時(shí)序

圖3 SPI接口讀時(shí)序

在FPGA內(nèi)部,SPI-MASTER模塊有以下幾個(gè)寄存器,用于存儲(chǔ)命令以及數(shù)據(jù):①R/W寄存器,用于指示本次操作是SPI讀操作還是SPI寫操作;②W1WO寄存器,用于指示本次SPI讀寫操作要訪問AD9517-1ABCPZ的寄存器個(gè)數(shù);③地址寄存器,用于指示本次SPI讀寫操作要訪問的AD9517-1ABCPZ的寄存器起始地址;④開始SPI讀寫寄存器,用于發(fā)起SPI讀寫操作;⑤狀態(tài)指示寄存器,用于指示SPI讀寫操作是否為空閑;⑥寫數(shù)據(jù)寄存器,用于暫存本次SPI寫操作的數(shù)據(jù);⑦讀數(shù)據(jù)寄存器,用于暫存本次SPI讀操作的數(shù)據(jù)。

R/W寄存器、W1WO寄存器、地址寄存器、開始SPI讀寫寄存器和狀態(tài)指示寄存器等的內(nèi)容用于指定本次SPI操作的屬性,其決定了SPI接口的指令周期;寫數(shù)據(jù)寄存器和讀數(shù)據(jù)寄存器用于存儲(chǔ)SPI接口的讀寫數(shù)據(jù),其決定SPI接口的數(shù)據(jù)周期。

SPI的接口時(shí)序設(shè)計(jì)分為SPI讀時(shí)序和SPI寫時(shí)序2個(gè)部分。

SPI寫時(shí)序:SPI接口的CS信號(hào)只有在“開始SPI讀寫寄存器”被置位后有效,其有效狀態(tài)要一直保持到最后一個(gè)數(shù)據(jù)傳輸完成;SCLK信號(hào)的頻率一要在AD9517-1ABCPZ的SPI接口SCLK頻率范圍內(nèi),其是SDO、SDI信號(hào)的同步時(shí)鐘,可以由其他高頻率時(shí)鐘分頻得到;SDO信號(hào)在SCLK時(shí)鐘上升延依次輸出“R/W寄存器”、“W1WO寄存器”、“地址寄存器”的內(nèi)容,完成SPI接口的指令周期;SD0信號(hào)在SCLK時(shí)鐘上升延依次輸出由“W1WO寄存器”決定數(shù)據(jù)字節(jié)數(shù),完成SPI接口的數(shù)據(jù)周期。

SPI讀時(shí)序:SPI接口的CS信號(hào)只有在“開始SPI讀寫寄存器”被置位后有效,其有效狀態(tài)要一直保持到最后一個(gè)數(shù)據(jù)傳輸完成;SD0信號(hào)在SCLK時(shí)鐘上升延依次輸出“R/W寄存器”、“W1WO寄存器”、“地址寄存器”的內(nèi)容,完成SPI接口的指令周期;SD0信號(hào)在SCLK時(shí)鐘上升延依次儲(chǔ)存由“W1WO寄存器”決定數(shù)據(jù)字節(jié)數(shù),完成SPI接口的數(shù)據(jù)周期。

3.2 軟件設(shè)計(jì)

配置AD9517-1ABCPZ的NOIS系統(tǒng)軟件設(shè)計(jì)可以分為2個(gè)主要的部分:SPI讀寫函數(shù)設(shè)計(jì)和AD9517-1ABCPZ寄存器配置函數(shù)設(shè)計(jì)。AD9517-1ABCPZ寄存器配置主要包括:SPI接口MSB或LSB寄存器配置、PLL使能寄存器配置、REFCLK選擇寄存器配置、分頻寄存器配置和倍頻寄存器配置等,按照其手冊(cè)進(jìn)行配置就可以讓其輸出相應(yīng)頻率的時(shí)鐘。SPI讀寫函數(shù)設(shè)計(jì)是該系統(tǒng)程序設(shè)計(jì)的重點(diǎn),其決定SPI接口能否正常配置AD9517-1ABCPZ時(shí)鐘芯片。

SPI讀函數(shù)設(shè)計(jì)流程:①設(shè)置“R/W寄存器”為讀指令狀態(tài);②設(shè)置“W1WO寄存器”,指示被讀寄存器的個(gè)數(shù);③設(shè)置“地址寄存器”,指示本次SPI讀操作要訪問的AD9517-1ABCPZ寄存器起始地址;④判斷“狀態(tài)指示寄存器”是否為空閑狀態(tài),若為空閑狀態(tài),則進(jìn)行⑤的操作,若為忙狀態(tài),則等待;⑤設(shè)置“開始SPI讀寫寄存器”為開始讀狀態(tài),發(fā)起SPI讀操作;⑥等待SPI讀操作完成,把暫存的數(shù)據(jù)讀入Nios II的CPU接口;⑦SPI讀操作完成后,由硬件FPGA程序,清除“開始SPI讀寫寄存器”的開始讀狀態(tài),為下次讀操作做準(zhǔn)備。

在開始SPI讀操作后,“狀態(tài)指示寄存器”指示SPI讀操作為忙狀態(tài),直到SPI讀操作完成,“狀態(tài)指示寄存器”再次指示SPI讀操作為空閑狀態(tài)。在2次SPI讀之間,上一次讀操作完成,才能開始下一次的讀操作。本次SPI讀操作完成后,才能把數(shù)據(jù)讀入Nios II的CPU接口。何時(shí)把數(shù)據(jù)讀入到Nios II的CPU接口的程序有2種方法設(shè)計(jì):①不作任何判斷,只在程序中加入足夠的時(shí)延;②對(duì)“狀態(tài)指示寄存器”的指示狀態(tài)進(jìn)行判斷,在其指示忙狀態(tài)時(shí)程序一直處于等待狀態(tài),但是等待要有一定的限度,在等待足夠的SCLK時(shí)鐘周期后,要跳出等待狀態(tài),若此時(shí)“狀態(tài)指示寄存器”還是處于忙狀態(tài),則輸出告警信息。

方法①的設(shè)計(jì)比較簡(jiǎn)單,其執(zhí)行效率不高,可靠性比較低,適合于程序處于理想狀態(tài)下運(yùn)行的情況;方法2對(duì)狀態(tài)進(jìn)行判斷,執(zhí)行效率較高,雖然也進(jìn)行了等待,但是在足夠的SCLK周期以后就跳出等待狀態(tài),防止了程序死鎖,程序執(zhí)行的可靠性較高。

SPI寫函數(shù)設(shè)計(jì)流程:①設(shè)置“R/W寄存器”為寫指令狀態(tài);②設(shè)置“W1WO寄存器”,指示被寫寄存器的個(gè)數(shù);③設(shè)置“地址寄存器”,指示本次SPI寫操作要訪問的AD9517-1ABCPZ寄存器起始地址;④判斷“狀態(tài)指示寄存器”是否為空閑狀態(tài),若為空閑狀態(tài),則進(jìn)行⑤的操作,若為忙狀態(tài),則等待;⑤設(shè)置“開始SPI讀寫寄存器”為開始寫狀態(tài),發(fā)起SPI寫操作;⑥等待SPI寫操作完成;⑦SPI寫操作完成后,由硬件FPGA程序,清除“開始SPI讀寫寄存器”的開始寫狀態(tài),為下次寫操作做準(zhǔn)備。

在開始SPI寫操作后,“狀態(tài)指示寄存器”指示SPI寫操作為忙狀態(tài),直到SPI寫操作完成,“狀態(tài)指示寄存器”再次指示SPI寫操作為空閑狀態(tài)。在2次SPI寫之間,上一次寫操作完成,才能開始下一次的寫操作。這樣的話在2次SPI寫操作之間,要加入延時(shí)判斷程序,若在每次SPI寫操作之間都加入延時(shí)判斷程序,會(huì)對(duì)程序執(zhí)行效率帶來較大影響。在SPI MASTER模塊了加入適量的FIFO,用于緩存SPI寫指令,結(jié)合FPGA程序的乒乓設(shè)計(jì),可以較大的提高程序的運(yùn)行效率。

4 結(jié)束語

使用NOIS II搭建的SOPC結(jié)合自主設(shè)計(jì)的SPI MASTER模塊,可以靈活輕松的完成AD9517-1ABCPZ配置工作,讓其輸出系統(tǒng)所需的多種時(shí)鐘?;贜ios II的SOPC系統(tǒng)設(shè)計(jì)簡(jiǎn)單靈活、開發(fā)周期短、成本低和系統(tǒng)維護(hù)升級(jí)方便,是許多中、低速系統(tǒng)設(shè)計(jì)不錯(cuò)的選擇,今后必將在各個(gè)領(lǐng)域得到更廣泛的應(yīng)用。

[1]孟 芳,于立佳,張文志.基于NiosⅡ的SOPC系統(tǒng)設(shè)計(jì)分析[J].無線電通信技術(shù).2012,38(1):73-76.

[2]ALTERA ComPany,Nios IIprocess Reference handbook.Ver13.1.0[R].ALTERA ComPany,2014.

[3]ANALOG DEVICESComPany,AD9517-1ABCPZ datasheet.Rev.D[R].ALTERA ComPany,2012.

[4]Freescale ComPany,The Freescale SPIBus Specification.VERSION 4.01[R].ALTERA ComPany,2004.

[5]侯建軍,郭 勇.SOPC技術(shù)基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2008.

[6]ALTERA ComPany,Embeded Design handbook.Ver2.9[R].ALTERA ComPany,2011.

猜你喜歡
寄存器時(shí)序時(shí)鐘
時(shí)序坐標(biāo)
基于Sentinel-2時(shí)序NDVI的麥冬識(shí)別研究
別樣的“時(shí)鐘”
古代的時(shí)鐘
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
分簇結(jié)構(gòu)向量寄存器分配策略研究*
有趣的時(shí)鐘
一種毫米波放大器時(shí)序直流電源的設(shè)計(jì)
電子制作(2016年15期)2017-01-15 13:39:08
時(shí)鐘會(huì)開“花”
DPBUS時(shí)序及其設(shè)定方法
河南科技(2014年15期)2014-02-27 14:12:36
拉萨市| 株洲县| 乌拉特中旗| 蓬溪县| 峨眉山市| 新建县| 平和县| 台东市| 松阳县| 靖远县| 邵东县| 拉萨市| 清水县| 通辽市| 化州市| 酒泉市| 石景山区| 绥芬河市| 平湖市| 诸暨市| 古田县| 永城市| 定陶县| 黑河市| 云林县| 沁源县| 沧源| 宣恩县| 天津市| 商城县| 延庆县| 天门市| 澳门| 香格里拉县| 札达县| 夏邑县| 和田市| 新巴尔虎右旗| 定结县| 师宗县| 潼南县|