0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于SPI串行總線接口的Verilog實(shí)現(xiàn)

電子工程師 ? 來(lái)源:現(xiàn)代電子技術(shù) ? 作者:孫豐軍;余春暄 ? 2021-05-29 10:16 ? 次閱讀

簡(jiǎn) 介:

集成電路設(shè)計(jì)越來(lái)越向系統(tǒng)級(jí)的方向發(fā)展,并且越來(lái)越強(qiáng)調(diào)模塊化的設(shè)計(jì)。SPI(Serial Peripheral Bus)總線是Motorola公司提出的一個(gè)同步串行外設(shè)接口,容許CPU 與各種外圍接口器件以串行方式進(jìn)行通信、交換信息。本文簡(jiǎn)述了SPI總線的特點(diǎn),介紹了其4條信號(hào)線,SPI串行總線接口的典型應(yīng)用。

重點(diǎn)描述了SPI串行總線接口在一款802.11b芯片中的位置,及該接口作為基帶和射頻的通訊接口所完成的功能,并給出了用硬件描述語(yǔ)言Verilog HDL 實(shí)現(xiàn)該接口的部分程序。該實(shí)現(xiàn)已經(jīng)在Modelsim 中完成了仿真, 并經(jīng)過(guò)了FPGA 驗(yàn)證, 最后給出了仿真和驗(yàn)證的結(jié)果。

在SOC設(shè)計(jì)中,利用EDA 工具設(shè)計(jì)芯片實(shí)現(xiàn)系統(tǒng)功能已經(jīng)成為支撐電子設(shè)計(jì)的通用平臺(tái)。并逐步向支持系統(tǒng)級(jí)的設(shè)計(jì)方向發(fā)展。而且,在設(shè)計(jì)過(guò)程中,越來(lái)越強(qiáng)調(diào)模塊化設(shè)計(jì)。

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

1 SPI總線接口概述

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

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

SPI總線具有以下特點(diǎn):

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

(2)器件統(tǒng)一編址,并與系統(tǒng)地址無(wú)關(guān),操作SPI獨(dú)立性好。

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

2 SPI總線接口的設(shè)計(jì)與實(shí)現(xiàn)

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

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

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

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

(2)產(chǎn)生RF所需的時(shí)鐘信號(hào)SCLK,使能信號(hào)CSB。

(3)接收從RF傳回的串行數(shù)據(jù),并將其轉(zhuǎn)換為并行數(shù)據(jù)。

(4)將base band發(fā)送的數(shù)據(jù),與RF返回的數(shù)據(jù)進(jìn)行比較,并把比較結(jié)果傳給base band。

下面給出用Verilog HDL語(yǔ)言實(shí)現(xiàn)前兩項(xiàng)功能的關(guān)鍵程序,相關(guān)變量的聲明在此略去。

//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實(shí)現(xiàn)的SPI總線接口模塊,在ModelSim 中編譯、調(diào)試,并做了前仿真。

前仿真通過(guò)后,又在Altera公司的EPXA10 Develop Board上做了FPGA驗(yàn)證,結(jié)果與在ModelSim 中的仿真結(jié)果一致。最后在base band與RF的聯(lián)合調(diào)試過(guò)程中,該SPI總線接口模塊達(dá)到了預(yù)期的要求。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11049

    瀏覽量

    216163
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4356

    瀏覽量

    221867
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1785

    瀏覽量

    94915
  • CS
    CS
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    24972
  • MOSI
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    4159

原文標(biāo)題:SPI串行總線接口的Verilog實(shí)現(xiàn)

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MAX3421E USB外設(shè)/主機(jī)控制器,SPI接口技術(shù)手冊(cè)

    串行接口引擎(SIE)處理底層USB協(xié)議,如錯(cuò)誤校驗(yàn)和總線重試。通過(guò)頻率高達(dá)26MHz的SPI?接口訪問(wèn)寄存器組,
    的頭像 發(fā)表于 05-22 16:39 ?190次閱讀
    MAX3421E USB外設(shè)/主機(jī)控制器,<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>技術(shù)手冊(cè)

    基于RK3576開(kāi)發(fā)板的SPI使用說(shuō)明

    SPI串行外設(shè)接口(Serial Peripheral Interface)的縮寫,是 Motorola 公司推出的一種同步串行接口技術(shù),
    的頭像 發(fā)表于 05-07 10:31 ?627次閱讀
    基于RK3576開(kāi)發(fā)板的<b class='flag-5'>SPI</b>使用說(shuō)明

    串行通信接口SPI與QSPI的區(qū)別

    在嵌入式系統(tǒng)的世界里,選擇正確的通信技術(shù)可以對(duì)項(xiàng)目的性能和可擴(kuò)展性產(chǎn)生重大影響。讓我們比較兩個(gè)流行的串行通信接口SPI串行外設(shè)接口)和Q
    的頭像 發(fā)表于 04-09 15:24 ?987次閱讀
    <b class='flag-5'>串行</b>通信<b class='flag-5'>接口</b><b class='flag-5'>SPI</b>與QSPI的區(qū)別

    SPI通信總線概述和Verilog實(shí)現(xiàn)

    SPI = Serial Peripheral Interface,是串行外圍設(shè)備接口,是一種高速,全雙工,同步的通信總線。
    的頭像 發(fā)表于 02-07 14:28 ?1303次閱讀
    <b class='flag-5'>SPI</b>通信<b class='flag-5'>總線</b>概述和<b class='flag-5'>Verilog</b><b class='flag-5'>實(shí)現(xiàn)</b>

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

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

    KeyStone架構(gòu)串行外設(shè)接口(SPI)手冊(cè)

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

    能否在純fpga上通過(guò)verilog實(shí)現(xiàn)SPI控制器去配置adc12dj3200?

    ti工程師,您好,我最近想用adc12dj3200實(shí)現(xiàn)L波段信號(hào)采樣,可以問(wèn)一下上圖中的FPGA可以是支持jesd204b總線的任何FPGA芯片嗎?是否可以通過(guò)verilog實(shí)現(xiàn)
    發(fā)表于 11-18 07:28

    spi master接口的fpga實(shí)現(xiàn)

    串行外圍接口 大致了解: spi是個(gè)同步協(xié)議,數(shù)據(jù)在master和slaver間交換通過(guò)時(shí)鐘sck,由于它是同步協(xié)議,時(shí)鐘速率就可以各種變換。 sck:主機(jī)提供,從機(jī)不能操控,從器件由主機(jī)產(chǎn)生的時(shí)鐘控制。數(shù)據(jù)只有在sck來(lái)了的
    的頭像 發(fā)表于 11-16 10:35 ?1081次閱讀
    <b class='flag-5'>spi</b> master<b class='flag-5'>接口</b>的fpga<b class='flag-5'>實(shí)現(xiàn)</b>

    如何使用Arduino實(shí)現(xiàn)CAN總線通信

    可以通過(guò)SPI接口與Arduino通信。 CAN總線轉(zhuǎn)接板 :用于將CAN總線模塊與Arduino連接。 跳線 :用于連接Arduino和CAN總線
    的頭像 發(fā)表于 11-12 10:09 ?2539次閱讀

    SPI接口靜電放電防護(hù)方案

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

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

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

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

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

    CAN總線接口類型

    CAN總線(Controller Area Network)是一種基于廣播的串行通信協(xié)議,廣泛用于連接分布式系統(tǒng)中的各個(gè)設(shè)備,實(shí)現(xiàn)它們之間的數(shù)據(jù)交換和控制。CAN總線
    的頭像 發(fā)表于 09-03 14:13 ?3952次閱讀

    SPI總線的定義和特點(diǎn)

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

    串行外設(shè)接口的菊花鏈實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《串行外設(shè)接口的菊花鏈實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 08-27 09:45 ?1次下載
    <b class='flag-5'>串行</b>外設(shè)<b class='flag-5'>接口</b>的菊花鏈<b class='flag-5'>實(shí)現(xiàn)</b>

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品