999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于DW8051 的SPI 控制器設計*

2012-12-22 06:00:04孫永琦李曉明
電子器件 2012年3期
關鍵詞:信號設計

孫永琦,李曉明

(浙江理工大學機械與自動控制學院,杭州310018)

DW8051 是Synopsys 公司設計的一款高性能、可配置、可綜合的8051 軟核,該軟核同工業標準的803x/805x 微控制器兼容。DW8051 在很多基于ASIC和FPGA 技術的應用中得到廣泛使用。DW8051 作為一個軟核,只提供了最基本的標準8051 外設,包括通用串口、定時/計數器和中斷控制器。為了擴展其應用,DW8051 提供了一組用戶SFR(Special Function Register)外設總線,該總線可以讓用戶將自己設計的外設模塊連接到DW8051 上面。本文設計的SPI 控制器,可作為一個外設掛載在DW8051 的SFR 外設總線上。

1 SPI 總線的概念和基本原理

串行外圍接口SPI(Serial Peripheral Interface)是芯片內部串行通信的一種,該協議由Motorola 命名。SPI 是一種同步串行接口,可傳輸8 位字節格式數據,同一時刻只能傳輸1 位,具有I/O 資源占用少、協議實現簡單、傳輸速度快等優點。目前,還沒有公共領域規范對SPI 協議進行定義,也沒有IEEE 的認定。然而,Motorola 設計的SPI 規范已經被廣泛采用,可看做事實上的標準,而且得到很多半導體生產商的支持和認可[1]。目前,很多的MCU 和DSP 芯片以及AD器件和Flash 都支持SPI 總線接口。

SPI 的一個重要特性就是主/從模式,串行SPI總線僅要求4 根信號線,其中兩根為控制線,兩根為數據線。SPI 總線的信號定義如下:控制信號,串行時鐘(SCLK)和從片選擇(SS);數據信號,主機輸入/從機輸出(MISO)和主機輸出/從機輸入(MOSI)。SPI 數據傳輸速率可達幾Mbit/s,通常只受限于主/從接口信號規范。該接口的主要問題是地址容量不足,每一從芯片都需要一根獨立的從芯片選擇線。對于簡單的主/從設計來說,SPI 是非常不錯的選擇[1]。

2 SPI 控制器模塊設計

本文設計的SPI 控制器模塊是作為DW8051 的一個外設,根據具體的應用需求(沒有多控制器應用),該控制器僅被設計成一個SPI 主機,其在整個系統的位置和與外部設備的關系如圖1。在微控制器(MCU)內部,SPI 控制器通過SFR 總線與DW8051 內核相連,其地位和普通I/O 端口(P0、P1、P2 和P3)相同;在外部,從MCU 頂層引出SPI的四根信號線,通過這些信號線與基于SPI 總線的外設相連。本文設計的SPI 控制器用硬件描述語言描述,成為一個可復用的IP 核,可以方便的集成到其他的數字系統中去。

圖1 系統總結構

2.1 SPI 控制器頂層模塊設計

本文最終目標是設計出如圖2 所示的SPI 頂層模塊。該頂層模塊的端口主要分為兩個部分:左邊的端口為控制信號端口,包括系統信號和與DW8051 連接的SFR 總線信號;右邊的端口為SPI的四根信號線。

各端口功能定義與描述如下:

i_clk:系統時鐘信號,由MCU 外部提供,與DW8051 內核共用。

i_rst_n:系統復位信號,低電平有效,由MCU 外部提供,與DW8051 內核共用。

i_sfr_addr:SFR 總線地址輸入信號,由DW8051內核提供。

i_sfr_data_out:SFR 總線數據輸出信號,由DW8051 內核提供。

i_sfr_wr:SFR 總線寫使能信號,由DW8051 內核提供。

i_sfr_rd:SFR 總線讀使能信號,由DW8051 內核提供。

o_sfr_data_in:SFR 總線數據輸入信號,輸出給DW8051 內核。

o_spi_sfr_cs:SFR 總線選擇信號,輸出給DW8051 內核。

i_miso:主機輸入/從機輸出信號,由SPI 外設輸入。

o_ss:從片選擇信號,使能SPI 外設。

o_mosi:主機輸出/從機輸入,輸出給SPI 外設。

o_sclk:串行時鐘,由SPI 控制器產生。

2.2 SPI 控制器內部電路設計

根據設計目標,將SPI 控制器分為兩個部分,一個是SFR 總線控制單元,一個是SPI 總線控制單元。將設計分塊可以有效的劃分功能,讓整個設計的邏輯更加清楚,符合模塊化設計的要求,也更有利于硬件描述語言的實現。

如圖3 所示,上面虛線框內為SFR 總線控制單元,該部分主要負責與微控制器交互,包括SFR 總線控制接口和4 個寄存器;下面虛線框內為SPI 總線控制單元,該部分主要負責產生和接收SPI 信號,包括sclk 產生模塊,SPI 控制狀態機,發送/接收FIFO 和發送/接收移位寄存器。SPI 控制器的兩個部分擁有統一的系統時鐘,系統復位信號僅供SFR總線控制單元使用。

圖3 SPI 控制模塊內部結構

SPI 主要的組成部分功能闡述如下:

SFR 總線控制接口——與DW8051 的接口。控制SFR 總線控制單元中的四個寄存器的讀取與寫入。

控制寄存器——由微控制器進行隨機讀寫,用來配置SPI 控制器的各種控制信號,包括SPI 使能信號、SPI 的時鐘極性、相位以及傳輸數率。

擴展控制寄存器——對控制寄存器的擴展,包括SPI 讀使能信號、讀取數據數目控制信號、從設備選擇信號(可以根據外設數目進行擴展位數)。該寄存器有未定義位,可以作為以后升級擴展用。

狀態寄存器——控制器運行時的狀態標志,該寄存器為只讀,微控制器根據狀態寄存器來控制SPI 的數據傳輸。包括傳輸結束標志位、SPI 讀沖突和寫溢出位以及發送/接收FIFO 的滿空標志位。

數據寄存器——在邏輯上只有一個數據寄存器,既表示發送又表示接收,對于微控制器來說只有一個單元地址。在物理上分為發送寄存器和接收寄存器兩個。

CLK 分頻計數器——由控制寄存器控制,用于產生SCLK 信號,頻率分別為系統頻率的1/2、1/20、1/26 和1/64。

SPI 控制狀態機——根據控制寄存器和擴展控制寄存器來產生控制邏輯,用以控制發送FIFO 和移位寄存器以及接收FIFO 和移位寄存器。

緩沖FIFO 和移位寄存器——獨立的發送緩沖FIFO 和接收緩沖FIFO,同步FIFO 的深度為16,寬度為8。發送FIFO 的輸出為寄存輸出,接收FIFO的輸出為非寄存,主要是為了配合微控制器的讀寫時序,兩者其他都相同。當發送緩沖FIFO 為滿且仍向FIFO 中寫入時,產生寫溢出;當接收緩沖FIFO為滿且仍在接收數據時,產生讀沖突。發送和接收移位寄存器在SPI 控制狀態機的控制下,串行的發送和接收數據,當發送或接收完一個字節時,將該字節存入相應的FIFO,然后繼續下一個字節的發送或者接收。

2.3 SPI 控制器的Verilog HDL 的實現

Verilog HDL 是硬件描述語言的一種,用于數字電子系統設計。該語言允許設計者進行各種級別的邏輯設計,進行邏輯系統的仿真驗證、時序分析、邏輯綜合。它是目前應用最廣泛的一種硬件描述語言。用Verilog HDL 描述的電路設計就是該電路的Verilog HDL 模型,也稱模塊[3]。本文對SPI 控制器模塊采用RTL(寄存器傳輸級)進行描述,編寫的RTL 模型可以進行綜合并在FPGA 上進行驗證。

大型數字系統一般采用自頂向下(Top_Down)的設計方法。本文設計的SPI 控制器規模比較小,所以沒有采用該方法,而是把主要電路設計在一個模塊內完成,發送FIFO 和接收FIFO 分別在另外兩個模塊內完成。

有限狀態機是實現時序電路常用的方式,很多數字系統的控制模型都采用這種方式,它是大多數數字電路的核心。相比其他的設計方案,狀態機的機構模式簡單、運行速度快、程序層次分明、可靠性更高。

根據電路設計,本文設計的SPI 控制器主要分為SFR 總線控制單元和SPI 總線控制單元。SFR 總線控制單元主要是根據DW8051 的時序來進行寄存器的讀寫操作,結構比較簡單,在本文中不做詳細介紹;SPI 總線控制單元是設計重點,本文采用有限狀態機來實現SPI 總線控制單元的核心時序電路。SPI 控制狀態機主要完成的任務是:根據CLK 分頻計數器和控制寄存器產生SCLK 信號;控制SPI 總線的工作模式;產生讀FIFO 信號,從發送緩沖FIFO中讀取數據;產生寫FIFO 信號,向接收緩沖FIFO中寫入數據;控制發送和接收移位寄存器的移位輸出和輸入;產生傳輸結束標志。SPI 控制狀態機的狀態轉換如圖4 所示。

圖4 SPI 控制狀態機轉換結構圖

狀態機開始處于初始狀態(IDLE),設置SPI 時鐘極性,當從設備選擇信號有效后,如果發送使能信號有效則狀態轉移到發送開始狀態(S1),如果接收使能信號有效則狀態轉移到接收開始狀態(R1);發送狀態S1 啟動發送,打開傳輸標志位,產生讀發送緩沖FIFO 信號;發送狀態S2 延遲一個節拍;發送狀態S3 讀取發送緩沖FIFO 數據,并設置SPI 時鐘相位;發送狀態S4 翻轉SLCK 信號;發送狀態S5 移位輸出發送數據的一位,翻轉SLCK 信號并計數,當減一計數器歸零狀態轉移到IDLE,當減一計數器不為零則狀態轉移到S4;接收狀態R1 啟動接收,打開傳輸標志位,并設置SPI 時鐘相位;接收狀態R2 翻轉SLCK信號;接收狀態R3 移位接收一位SPI 輸入信號,翻轉SLCK 信號并計數,當減一計數器歸零狀態轉移到IDLE,當減一計數器不為零則狀態轉移到R2。

在本文的設計中,采用獨熱(One Hot)碼對狀態進行編碼。這種編碼方式用n 個觸發器實現n 個狀態的狀態機,雖然使用了較多的觸發器,但所用組合電路可以省一些,因而使電路的速度和可靠性有顯著提高,而總的單元數并無增加。采用獨熱編碼后由了多余的狀態,就有一些不可到達的狀態。為此,在case 語句的最后需要增加default 分支項。這可以用默認項表示該項,也可以用確定項表示,以確保回到IDLE 狀態[3]。用Verilog HDL 來描述狀態機時有多種方法,在本文中采用兩段式方法,用最常用的always 語句和case 語句。

parameter Idle = 9’b000_000_001,

S1 = 9’b000_000_010,

……

R3 = 9’b100_000_000;

always @(posedge i_clk)

if(~SPE)

state <= 8’h00;

else

state <= next_state;

always @(state or …)

case(state)

Idle:begin

……

end

……

default:next_state = 9’b000_000_001;

endcase

3 仿真與驗證

在完成整個SPI 控制器模型設計以后,要對其進行功能仿真和在FPGA 上進行實際驗證,本文功能仿真使用的工具是Modelsim 6.5f,FPGA 使用的是Altera 公司Cyclone Ⅱ系列的EP2C8Q208C8 芯片,工具是Quartus Ⅱ9.0。為了驗證SPI 控制器功能的正確性,在本文中選用了一款SPI 接口的Flash,通過編程向Flash 中寫入指令,然后讀取指令。Flash 的型號為旺宏微電子的MX25L512C,該公司的Flash 提供的有Verilog 仿真模型,方便仿真。Flash 的連接方式如圖1 中的SPI 外設。仿真波形如圖5 所示,有波形圖可以看出,首先cs 線拉低使能FLASH,接著發送讀數據指令及地址0x03,0x00,0x00,然后可以從Flash 中讀取數據。在實際的仿真過程中,還做了更加詳細的驗證,包括擦出Flash中的內容,然后寫入新的數據,最后再讀出顯示。對于SPI 控制器,我們還設置了4 種傳輸速率,以及對控制寄存器進行不同的賦值,以產生不同的控制信號,最后都證明了SPI 控制器模塊功能的正確性。

圖5 仿真波形圖

然后在FPGA 上驗證SPI 控制器模塊,整個過程同功能仿真類似,只是整個設計包括DW8051 內核下載到FPGA 上,然后將真實的Flash(MX25L512C)連接到FPGA 的I/O 端口口上面,對Flash 進行各種操作,驗證整個設計的正確性。

4 結論

本文設計了一款基于DW8051 的SPI 控制器,該控制器基于DW8051 的SFR 總線,特點在于具有獨立的深度為16 的發送和接收緩沖FIFO、功能豐富的控制寄存器以及其擴展性。本文設計的SPI 控制器不僅限于DW8051 的使用,通過對SFR 總線控制單元的修改,同樣可以作為其他微控制器的外圍設備使用。

[1] Greg Osborn.嵌入式微控制器與處理器設計[M]. 北京:機械工業出版社,2011:79-81.

[2] 李曉林,朱昱光,李臨生,等.單片機原理與接口技術[M].第2版.北京:電子工業出版社,2011:198-203.

[3] 夏宇聞.Verilog 數字系統設計教程[M].第2 版. 北京:北京航空航天大學出版社,2009:11,19.

[4] 孫豐軍,余春暄.SPI 串行總線接口的Verilog 實現[J].現代電子計數,2005,16(207):105-109.

[5] 楊承富,徐志軍.SPI 總線接口的FPGA 設計與實現[J].軍事通信計數,2004,25(2):72-76.

[6] 趙新麗,許忠仁,付貴增,等.基于FPGA 與單片機的SPI 接口的實現[J].工業儀表與自動化裝置,2010,2:32-33.

[7] Liu Tianxiang,Wang Yunfeng.IP Design of Universal Multiple Devices SPI Interface[C]//Anti-Counterfeiting,Security and Identification(ASID),2011 IEEE International Conference on,2011:169-172.

[8] Zhang Jianlong,Wu Chunyu,Zhang Wenjing,et al.The Design and Realization of a Comprehensive SPI Interface Controller[C]//Mechanic Automation and Control Engineering(MACE),2011 Second International Conference on,2011:4529-4532.

[9] Wikipedia,the free encyclopedia,“Serial Peripheral Interface Bus”[EB/OL].Available http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus.

[10] Deepak Kumar Tala,“Verilog Tutorial”[EB/OL]. Available http://www.asicworld.com.

[11] Oudjida A K,Berrandjia M L,Liacha A,et al. Design and Test of General-Purpose SPI Master/Slave IPs on OPB bus[C]//2010 7th International Multi-Conference on Systems Signals and Devices(SSD).2010:1-6.

[12] Oudjida A K,Berrandjia ,M L,Tiar R,et al. FPGA Implementation of I2C & SPI Protocols:A Comparative Study[C]//2009 16th IEEE International Conference on Electronics,Circuits,and Systems(ICECS),2009:507-510.

猜你喜歡
信號設計
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
孩子停止長個的信號
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
基于LabVIEW的力加載信號采集與PID控制
一種基于極大似然估計的信號盲抽取算法
主站蜘蛛池模板: 国产乱子伦视频在线播放| 91精品情国产情侣高潮对白蜜| 免费看的一级毛片| 无码有码中文字幕| 亚洲综合婷婷激情| 人妻丰满熟妇av五码区| 日韩AV手机在线观看蜜芽| 日本成人在线不卡视频| 国产男人天堂| 超薄丝袜足j国产在线视频| 国产国拍精品视频免费看 | 日本手机在线视频| 91成人在线免费视频| 国产免费羞羞视频| 亚洲v日韩v欧美在线观看| 在线欧美一区| 在线观看国产精品一区| 亚洲欧美另类日本| 欧美日韩国产在线观看一区二区三区| 久久毛片基地| 中文字幕2区| 偷拍久久网| 亚洲第一成人在线| 久久夜色精品| 国产精品久久精品| 欧美黑人欧美精品刺激| 国产精品无码AV片在线观看播放| 日韩 欧美 小说 综合网 另类 | 亚洲一级无毛片无码在线免费视频| 波多野结衣第一页| 亚洲日韩精品综合在线一区二区 | 亚洲无码视频图片| 精品精品国产高清A毛片| 国产成人乱无码视频| 色婷婷丁香| 中文字幕中文字字幕码一二区| 亚洲综合国产一区二区三区| 乱人伦视频中文字幕在线| 日韩123欧美字幕| 日本免费福利视频| 国产精品久久久精品三级| AV熟女乱| 漂亮人妻被中出中文字幕久久| 国产欧美视频一区二区三区| 亚洲欧美在线综合一区二区三区| 狠狠色丁香婷婷综合| 国产浮力第一页永久地址| 婷婷色中文网| 在线免费无码视频| 在线亚洲精品福利网址导航| 五月婷婷欧美| 久久精品女人天堂aaa| 狼友视频国产精品首页| 香蕉久久永久视频| 高潮爽到爆的喷水女主播视频 | www.狠狠| 国产成人av一区二区三区| 国产成人高精品免费视频| 欧美亚洲综合免费精品高清在线观看 | 亚洲人成色77777在线观看| 伊人91视频| 亚洲第一视频网站| 国产精品女主播| 啪啪免费视频一区二区| 国产一二视频| 久久黄色免费电影| 日本免费高清一区| 国产又色又刺激高潮免费看| 欧美精品导航| 日韩一级二级三级| 国产凹凸视频在线观看| 狠狠v日韩v欧美v| 无码精品国产VA在线观看DVD| 久久久久亚洲AV成人网站软件| 伊人AV天堂| 日本精品视频| yjizz视频最新网站在线| 国产一区二区三区日韩精品| 女人天堂av免费| 国产精品视频导航| 亚洲黄色视频在线观看一区| 亚卅精品无码久久毛片乌克兰|