在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    10863

    瀏覽量

    211763
  • soc
    soc
    +關注

    關注

    38

    文章

    4165

    瀏覽量

    218257
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1706

    瀏覽量

    91582
  • CS
    CS
    +關注

    關注

    0

    文章

    54

    瀏覽量

    24522
  • MOSI
    +關注

    關注

    0

    文章

    5

    瀏覽量

    3997

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

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

收藏 人收藏

    評論

    相關推薦

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

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

    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 ?391次閱讀
    <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 ?849次閱讀

    SPI接口靜電放電防護方案

    SPI(Serial Peripheral Interface,串行外圍設備接口),是Motorola公司提出的一種同步串行接口技術,是一種
    的頭像 發表于 09-20 15:31 ?379次閱讀
    <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電路

    CAN總線接口類型

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

    SPI總線的定義和特點

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

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

    電子發燒友網站提供《串行外設接口的菊花鏈實現.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>數據表

    一文詳解SPI串行外設接口

    SPI也是MCU最常見的對外通信口之一,由摩托羅拉在上世紀80年代中開發,用于嵌入式系統中器件之間的短距離數據通信,標準模式使用四條信號線。目前常見的應用器件有:LCD模組、以太網模塊、SPI串行Flash和很多傳感器等,大部分
    的頭像 發表于 01-18 09:45 ?6927次閱讀
    一文詳解<b class='flag-5'>SPI</b><b class='flag-5'>串行</b>外設<b class='flag-5'>接口</b>

    能否用MCU訪問非標準SPI接口

    當前許多精密模數轉換器(ADC)具有串行外設接口(SPI)或某種串行接口,用以與包括微控制器單元(MCU)、DSP和FPGA在內的控制器進行
    的頭像 發表于 01-09 08:23 ?575次閱讀
    能否用MCU訪問非標準<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>?
    主站蜘蛛池模板: 天天操天天干天天玩| 久久天天躁狠狠躁夜夜| 国产精品久久女同磨豆腐| 日本免费一区二区在线观看| 色综合天天综合中文网| 国产三级日本三级韩国三级在线观看| 中国一级特黄aa毛片大片| 日本三级黄色| 午夜无遮挡怕怕怕免费视频| 欧美色穴| 色精品一区二区三区| 在线视频图片小说| 欧美区在线| 色wwwww| 亚洲精品久久久久午夜三| 黄色在线播放视频| 色噜噜网站| 闲人综合| 男女交性视频播放 视频 视频 | 花怜write. as| 国产午夜在线观看视频播放| 亚洲一区二区色| 国产乱理论片在线观看理论| 在线观看的黄网| 色色色色色色色色色色色色| 午夜免费网站| 久久 在线播放| 狠狠操综合| abc欧美成人影院| 色婷婷六月天| 爽爽爽爽爽爽a成人免费视频| 国产午夜免费| 天堂网最新| 天天拍天天干| 宅男午夜| 97人人做人人爱| 日本不卡一区| 国产高清色视频免费看的网址| 国产黄色大片网站| 你懂的网站在线观看网址| 国产精品久久久久久福利|