吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于SPI串行總線接口的Verilog實現

電子工程師 ? 來源:現代電子技術 ? 作者:孫豐軍;余春暄 ? 2021-05-29 10:16 ? 次閱讀

簡 介:

集成電路設計越來越向系統級的方向發展,并且越來越強調模塊化的設計。SPI(Serial Peripheral Bus)總線是Motorola公司提出的一個同步串行外設接口,容許CPU 與各種外圍接口器件以串行方式進行通信、交換信息。本文簡述了SPI總線的特點,介紹了其4條信號線,SPI串行總線接口的典型應用。

重點描述了SPI串行總線接口在一款802.11b芯片中的位置,及該接口作為基帶和射頻的通訊接口所完成的功能,并給出了用硬件描述語言Verilog HDL 實現該接口的部分程序。該實現已經在Modelsim 中完成了仿真, 并經過了FPGA 驗證, 最后給出了仿真和驗證的結果。

在SOC設計中,利用EDA 工具設計芯片實現系統功能已經成為支撐電子設計的通用平臺。并逐步向支持系統級的設計方向發展。而且,在設計過程中,越來越強調模塊化設計。

SPI總線是Motorola公司提出的一個同步串行外設接口,具有接口線少、通訊效率高等特點。本文給出的是利用Verilog HDL實現的SPI總線模塊,該模塊是802.11b無線局域網芯片中一個子模塊,該模塊完成了芯片中基帶(base band)與RF的通訊工作。

1 SPI總線接口概述

SPI(Serial Parallel Bus)總線是Motorola公司提出的一個同步串行外設接口,允許CPU 與各種外圍接口器件(包括模/數轉換器、數/模轉換器、液晶顯示驅動器等)以串行方式進行通信、交換信息。他使用4條線:串行時鐘線(SCK)、主機輸入/從機輸出線(MISO)、主機輸出/從機輸入線(MOSI)、低電平有效的使能信號線(CS)。這樣,僅需3~4根數據線和控制線即可擴展具有SPI接口的各種I/O器件 其典型結構如圖1所示。

7a171ac8-bfed-11eb-9e57-12bb97331649.png

SPI總線具有以下特點:

(1)連線較少,簡化電路設計。并行總線擴展方法通常需要8根數據線、8~16根地址線、2~3根控制線。而這種設計,僅需4根數據和控制線即可完成并行擴展所實現的功能。

(2)器件統一編址,并與系統地址無關,操作SPI獨立性好。

(3)器件操作遵循統一的規范,使系統軟硬件具有良好的通用性。

2 SPI總線接口的設計與實現

該模塊是802.1lb無線局域網芯片中的一子模塊,其在芯片中的位置如圖2所示。

7d27bda8-bfed-11eb-9e57-12bb97331649.png

其中base band(基帶)為SPI的主控器(master),RF(射頻)為SPI的受控器(slave)。SPI interface作為baseband與RF的通訊接口,主要完成以下工作:

(1)將從base band接收到的16位的并行數據,轉換為RF所能接收的串行數據,并將該數據根據SPI協議送給RF。

(2)產生RF所需的時鐘信號SCLK,使能信號CSB。

(3)接收從RF傳回的串行數據,并將其轉換為并行數據。

(4)將base band發送的數據,與RF返回的數據進行比較,并把比較結果傳給base band。

下面給出用Verilog HDL語言實現前兩項功能的關鍵程序,相關變量的聲明在此略去。

//generate a counter

always@ (posedge clock or negedge reset)

begin

if(!reset)

counter《= 0;

else if(enable)

begin

if(counter《 53)

counter=counter + 1;

end

end

//generate signal “csb”

always@ (posedge clock or negedge reset)

begin

if(!reset)

csb 《=1;

else if(counter》= 1 && counter 《= 50)

csb = 0;

else

csb = 1;

end

//Generate “sclk”

always@ (posedge clock or negedge reset)

begin

case(counter)

6‘d02: sclk = 1;

6’d05: sclk = 1;

6‘d08: sclk = 1;

6’d11: sclk = 1;

6‘d14: sclk = 1;

6’d17: sclk = 1;

6‘d20: sclk = 1;

6’d23: sclk = 1;

6‘d26: sclk = 1;

6’d29: sclk = 1;

6‘d32: sclk = 1;

6’d35: sclk = 1;

6‘d38: sclk = 1;

6’d41: sclk = 1;

6‘d44: sclk = 1;

6’d47: sclk = 1;

default sclk = 0;

endcase

end

always@ (counter or csb)

begin

if(csb == 0)

case(counter)

6‘h00,

6’h01,

6‘h02,

6’h03:mosi_index = 5‘h00;

6’h04,

6‘h05,

6’h06:mosi_index = 5‘h01;

6’h07,

6‘h08,

6’h09:mosi_index = 5‘h02;

6’h0A,

6‘h0B,

6’h0C:mosi_index = 5‘h03;

6’h0D,

6‘h0E,

6’h0F:mosi_index = 5‘h04;

6’h10,

6‘h11,

6’h12:mosi_index = 5‘h05;

6’h13,

6‘h14,

6’h15:mosi_index = 5‘h06;

6’h16,

6‘h17,

6’h18:mosi_index = 5‘h07;

6’h19,

6‘h1A,

6’h1B:mosi_index = 5‘h08;

6’h1C,

6‘h1D,

6’hlE:mosi_index = 5‘h09;

6’h1F,

6‘h20,

6’h21:mosi_index = 5‘h0A ;

6’h22,

6‘h23,

6’h24:mosi_index = 5‘h0B;

6’h25,

6‘h26,

6’h27:mosi_index = 5‘h0C ;

6’h28,

6‘h29,

6’h2A:mosi_index = 5‘h0D ;

6’h2B,

6‘h2C,

6’h2D:mosi_index = 5‘h0E;

6’h2E,

6‘h2F,

6’h30:mosi_index = 5‘h0F;

default:mosi_index = 5’h00;

endcase

else

mosi_index = 5‘h00:

end

assign mosi=spi_data[mosi_index3];

用Verilog HDL實現的SPI總線接口模塊,在ModelSim 中編譯、調試,并做了前仿真。

前仿真通過后,又在Altera公司的EPXA10 Develop Board上做了FPGA驗證,結果與在ModelSim 中的仿真結果一致。最后在base band與RF的聯合調試過程中,該SPI總線接口模塊達到了預期的要求。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10902

    瀏覽量

    212997
  • soc
    soc
    +關注

    關注

    38

    文章

    4204

    瀏覽量

    219082
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1721

    瀏覽量

    92116
  • CS
    CS
    +關注

    關注

    0

    文章

    54

    瀏覽量

    24616
  • MOSI
    +關注

    關注

    0

    文章

    5

    瀏覽量

    4030

原文標題:SPI串行總線接口的Verilog實現

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    工業串行總線中的“安全守護者”-隔離接口芯片

    當前,華普微的數字隔離芯片,即在微距離上實現無線射頻收發系統的“射頻芯片”,可完美解決工業總線中的隔離需求,有力保障RS-485、CAN、I2C與SPI等工業串行通信的穩定運行
    的頭像 發表于 12-30 11:39 ?179次閱讀
    工業<b class='flag-5'>串行</b><b class='flag-5'>總線</b>中的“安全守護者”-隔離<b class='flag-5'>接口</b>芯片

    如何使用Arduino實現CAN總線通信呢

    ,這些是常見的CAN控制器芯片,可以通過SPI接口與Arduino通信。 CAN總線轉接板 :用于將CAN控制器芯片與Arduino連接。 CAN總線終端電阻 :通常需要在
    的頭像 發表于 12-23 09:06 ?505次閱讀

    TMS320C672x DSP串行外設接口(SPI)參考指南

    電子發燒友網站提供《TMS320C672x DSP串行外設接口(SPI)參考指南.pdf》資料免費下載
    發表于 12-17 16:09 ?0次下載
    TMS320C672x DSP<b class='flag-5'>串行</b>外設<b class='flag-5'>接口</b>(<b class='flag-5'>SPI</b>)參考指南

    KeyStone架構串行外設接口(SPI)手冊

    SPI(Serial Peripheral Interface)是一種高速、全雙工、同步的串行通信協議,它允許微控制器與一個或多個外圍設備進行通信。SPI通信通常使用四根線:SCK(時鐘線
    發表于 12-16 10:33 ?0次下載

    能否在純fpga上通過verilog實現SPI控制器去配置adc12dj3200?

    ti工程師,您好,我最近想用adc12dj3200實現L波段信號采樣,可以問一下上圖中的FPGA可以是支持jesd204b總線的任何FPGA芯片嗎?是否可以通過verilog實現
    發表于 11-18 07:28

    spi master接口的fpga實現

    串行外圍接口 大致了解: spi是個同步協議,數據在master和slaver間交換通過時鐘sck,由于它是同步協議,時鐘速率就可以各種變換。 sck:主機提供,從機不能操控,從器件由主機產生的時鐘控制。數據只有在sck來了的
    的頭像 發表于 11-16 10:35 ?575次閱讀
    <b class='flag-5'>spi</b> master<b class='flag-5'>接口</b>的fpga<b class='flag-5'>實現</b>

    如何使用Arduino實現CAN總線通信

    可以通過SPI接口與Arduino通信。 CAN總線轉接板 :用于將CAN總線模塊與Arduino連接。 跳線 :用于連接Arduino和CAN總線
    的頭像 發表于 11-12 10:09 ?1349次閱讀

    SPI接口靜電放電防護方案

    SPI(Serial Peripheral Interface,串行外圍設備接口),是Motorola公司提出的一種同步串行接口技術,是一種
    的頭像 發表于 09-20 15:31 ?456次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>接口</b>靜電放電防護方案

    航天級100krad隔離式串行外設接口(SPI)LVDS電路

    電子發燒友網站提供《航天級100krad隔離式串行外設接口(SPI)LVDS電路.pdf》資料免費下載
    發表于 09-20 10:54 ?3次下載
    航天級100krad隔離式<b class='flag-5'>串行</b>外設<b class='flag-5'>接口</b>(<b class='flag-5'>SPI</b>)LVDS電路

    航天級100krad隔離式串行外設接口SPI)RS-422電路

    電子發燒友網站提供《航天級100krad隔離式串行外設接口SPI)RS-422電路.pdf》資料免費下載
    發表于 09-19 13:15 ?2次下載
    航天級100krad隔離式<b class='flag-5'>串行</b>外設<b class='flag-5'>接口</b>(<b class='flag-5'>SPI</b>)RS-422電路

    串行接口PCB設計指南:優化布局與布線策略

    和B)進行通信,可以實現點對點或者總線式的通信方式。由于其良好的傳輸特性和可靠性,RS485接口常用于工業自動化、遠程監控、智能家居等領域。 3、SPI
    發表于 09-18 12:02

    CAN總線接口類型

    CAN總線(Controller Area Network)是一種基于廣播的串行通信協議,廣泛用于連接分布式系統中的各個設備,實現它們之間的數據交換和控制。CAN總線
    的頭像 發表于 09-03 14:13 ?2324次閱讀

    SPI總線的定義和特點

    SPI總線(Serial Peripheral Interface),全稱為串行外圍設備接口,是由Motorola公司提出并定義的一種同步、串行
    的頭像 發表于 09-03 14:05 ?1235次閱讀

    串行外設接口的菊花鏈實現

    電子發燒友網站提供《串行外設接口的菊花鏈實現.pdf》資料免費下載
    發表于 08-27 09:45 ?1次下載
    <b class='flag-5'>串行</b>外設<b class='flag-5'>接口</b>的菊花鏈<b class='flag-5'>實現</b>

    TUSB2046x 4端口集線器,用于帶可選串行EEPROM接口的通用串行總線數據表

    電子發燒友網站提供《TUSB2046x 4端口集線器,用于帶可選串行EEPROM接口的通用串行總線數據表.pdf》資料免費下載
    發表于 06-25 09:36 ?0次下載
    TUSB2046x 4端口集線器,用于帶可選<b class='flag-5'>串行</b>EEPROM<b class='flag-5'>接口</b>的通用<b class='flag-5'>串行總線</b>數據表
    百家乐官网游戏单机牌| 环球棋牌评测网| 宝鸡市| 大发百家乐现金网| 百家乐缩水软件| 网上百家乐官网有哪些玩法| 大发888娱乐代理| 百家乐官网高手论| 一二博国际| 缅甸百家乐博彩真假| 百家乐官网不倒翁注码| 百家乐官网牌九| 九游棋牌大厅| 在线百家乐电脑| 豪华百家乐官网桌子厂家| 德晋百家乐的玩法技巧和规则| 哪个百家乐官网网站信誉好| 武强县| 威尼斯人娱乐棋牌下载| 大佬百家乐官网的玩法技巧和规则 | 百家乐天下第一庄| 百家乐官网博彩通博彩网皇冠网澳门赌场真人赌博 | 百家乐赌场老千| 百家乐官网博彩技巧视频| 新全讯网353788| 广州百家乐筹码| 百家乐官网tt娱乐场| 娱乐城开户| 南宁百家乐的玩法技巧和规则| 百合百家乐官网的玩法技巧和规则 | 威尼斯人娱乐城真钱赌博| 百家乐游戏真人游戏| 百家乐官网赌现金| 百家乐官网博彩策略论坛| 百家乐官网开户送百元| 南通棋牌游戏中心| 盛世国际娱乐城| 全讯网备用网址| 大发888网页游戏平台| 大发888下载客户端| 百家乐高手长胜攻略|