0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

一個(gè)簡單的Wishbone從設(shè)備的RTL代碼

SwM2_ChinaAET ? 來源:未知 ? 作者:李倩 ? 2018-07-31 09:11 ? 次閱讀

一個(gè)8比特從設(shè)備

前文曾經(jīng)指出,Wishbone總線規(guī)范是"輕量級(jí)(Lightweight)"規(guī)范,它實(shí)現(xiàn)起來非常簡單緊湊,接口需要的互聯(lián)邏輯非常少。這里給出一個(gè)Wishbone從設(shè)備的一個(gè)例子,如圖21所示。該從設(shè)備由一個(gè)與門和8個(gè)D觸發(fā)器構(gòu)成。在寫周期,當(dāng)STB_I和WE_I同時(shí)有效,數(shù)據(jù)DAT_I[7:0]在時(shí)鐘CLK_I的上升沿被寫到觸發(fā)器中。

圖21 一個(gè)簡單的Wishbone從設(shè)備

該從設(shè)備的RTL代碼如下:

moduleslave8bit( inputCLK_I,//這里使用了Verilog2001語法 inputRST_I, input[7:0]DAT_I, inputSTB_I,inputWE_I, outputreg[7:0]DAT_O,outputACK_O); always@(posedgeCLK_IorposedgeRST_I) begin if(RST_I) begin DAT_O<=8'h00; ???????????????????????????end ???????????????????else?if(STB_I&WE_I) ???????????????????????????begin ??????????????????????????????????DAT_O<=DAT_I; ???????????????????????????end ???????????end ?????????? ????assign?ACK_O=STB_I; endmodule

該從設(shè)備的Wishbone文檔如表5。

表5從設(shè)備的Wishbone文檔

一個(gè)32比特RTL級(jí)隨機(jī)數(shù)生成器從設(shè)備

下面我們舉一個(gè)實(shí)用一點(diǎn)的例子,一個(gè)隨機(jī)數(shù)生成器。隨機(jī)數(shù)生成理論和隨機(jī)數(shù)生成器隨機(jī)數(shù)生成理論和隨機(jī)數(shù)生成器模塊的RTL代碼見附錄2。該模塊端口定義如下:

module rng(clk,reset,loadseed_i,seed_i,number_o);

number_o為隨機(jī)數(shù)輸出,當(dāng)loadseed_I有效時(shí),種子seed_I被送入number_o成為隨機(jī)數(shù)的第一個(gè)值。

我們的目的是將其包裝成WISHBONE兼容的從模塊,其Verilog RTL代碼如下:

moduleRng_wbc( inputCLK_I, inputRST_I, input[31:0]DAT_I, inputSTB_I,inputWE_I, input[3:0]SEL_I, output[31:0]DAT_O,outputACK_O); assignACK_O=STB_I; wireloadseed=WE_I&STB_I&(|SEL_I); wire[31:0]seed; assignseed[7:0]=SEL_I[0]?DAT_I[7:0]:8'h00; assignseed[15:8]=SEL_I[1]?DAT_I[15:8]:8'h00; assignseed[23:16]=SEL_I[2]?DAT_I[23:16]:8'h00; assignseed[31:24]=SEL_I[3]?DAT_I[31:24]:8'h00; wire[31:0]rand_number; assignDAT_O[7:0]=SEL_I[0]?rand_number[7:0]:8'h00; assignDAT_O[15:8]=SEL_I[1]?rand_number[15:8]:8'h00; assignDAT_O[23:16]=SEL_I[2]?rand_number[23:16]:8'h00; assignDAT_O[31:24]=SEL_I[3]?rand_number[31:24]:8'h00; //隨機(jī)數(shù)生成器的莉化 rngunit_rng(.clk(CLK_I),.reset(RST_I), .loadseed_i(loadseed),.seed_i(seed), .number_o(rand_number)); endmodule

該從設(shè)備的Wishbone文檔如表6。

表6從設(shè)備的Wishbone文檔

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

    關(guān)注

    14

    文章

    2000

    瀏覽量

    61169
  • Wishbone
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    10438

原文標(biāo)題:【博文連載】Wishbone總線從設(shè)備接口示例

文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在不改變RTL代碼的情況下,優(yōu)化FPGA HLS設(shè)計(jì)

    用軟件 C 轉(zhuǎn)化來的 RTL 代碼其實(shí)并不好理解。今天我們就來談?wù)?,如何在不改?RTL 代碼的情況下,提升設(shè)計(jì)性能。 本項(xiàng)目所需應(yīng)用與工
    的頭像 發(fā)表于 12-20 11:46 ?1807次閱讀
    如何在不改變<b class='flag-5'>RTL</b><b class='flag-5'>代碼</b>的情況下,優(yōu)化FPGA HLS設(shè)計(jì)

    可綜合的RTL代碼的角度聊聊interface

    SystemVerilog引入了interface,這里我們可綜合的RTL代碼的角度聊聊interface。
    的頭像 發(fā)表于 10-12 09:06 ?1841次閱讀
    <b class='flag-5'>從</b>可綜合的<b class='flag-5'>RTL</b><b class='flag-5'>代碼</b>的角度聊聊interface

    RTL級(jí)代碼和仿真代碼的區(qū)別

    RTL級(jí)代碼和仿真代碼的區(qū)別,哪些verilog語句是可綜合的??哪些不能??
    發(fā)表于 07-21 13:08

    wishbone總線

    想請(qǐng)教各位前輩,wishbone在工作中很常用嗎?我最近在學(xué)關(guān)于這個(gè)的代碼,感覺很難懂,而時(shí)間又感覺不大夠用,需要重點(diǎn)攻擊, 所以想知道是否值得投入大量的時(shí)間去研究它。望各位前輩不吝賜教
    發(fā)表于 03-02 23:37

    基于WISHBONE總線的FLASH閃存接口設(shè)計(jì)

    總線的另一個(gè)優(yōu)點(diǎn)。由于IP核種類多樣,其間并沒有種統(tǒng)的間接方式。為滿足不同系統(tǒng)的需要,WISHBONE總線提供了四種不同的IP核互連方式:點(diǎn)到點(diǎn)(point-to-point),用
    發(fā)表于 12-05 10:35

    AXI互連RTL將1個(gè)設(shè)備連接到2個(gè)設(shè)備怎么實(shí)現(xiàn)?

    嗨,我正在使用AXI互連RTL將1個(gè)設(shè)備連接到2個(gè)設(shè)備。以下是IP的規(guī)范地址寬度為maste
    發(fā)表于 05-20 09:27

    基于Wishbone總線的UART IP核設(shè)計(jì)

    本文介紹的基于Wishbone總線的UART IP核的設(shè)計(jì)方法,通過驗(yàn)證表明了各項(xiàng)功能達(dá)到預(yù)期要求,為IP核接口的標(biāo)準(zhǔn)化設(shè)計(jì)提供了依據(jù)。此外,該IP核代碼全部采用模塊化的Verilog-HDL語言編寫,
    發(fā)表于 06-10 11:47 ?3784次閱讀
    基于<b class='flag-5'>Wishbone</b>總線的UART IP核設(shè)計(jì)

    基于WISHBONE總線的FLASH閃存接口設(shè)計(jì)

    本文簡要介紹了AMD 公司Am29LV160D 芯片的特點(diǎn),并對(duì)WISHBONE總線作了簡單的介紹,詳細(xì)說明了FLASH memory 與WISHBONE 總線的硬件接口設(shè)計(jì)及部分Verilog HDL 程序源
    發(fā)表于 06-23 16:32 ?18次下載
    基于<b class='flag-5'>WISHBONE</b>總線的FLASH閃存接口設(shè)計(jì)

    設(shè)計(jì)復(fù)用的RTL指導(dǎo)原則

    設(shè)計(jì)可復(fù)用的基本要求是RTL 代碼可移植。通常的軟件工程指導(dǎo)原則在RTL 編碼時(shí)也適用。類似軟件開發(fā),基本的編碼指導(dǎo)原則要求RTL 代碼
    發(fā)表于 12-24 00:46 ?32次下載

    HLS系列 – High Level Synthesis(HLS) 從個(gè)簡單的fir濾波器開始2

    在這個(gè)系列的上篇文章“HighLevel Synthesis(HLS) 從個(gè)簡單的fir濾波器開始1”中,我們從
    發(fā)表于 02-08 05:10 ?532次閱讀

    用Elaborated Design優(yōu)化RTL代碼

    在Vivado FlowNavigator中有個(gè)Elaborated Design,如下圖所示,屬于RTL Analysis這步對(duì)應(yīng)的設(shè)計(jì)??赡芎芏喙こ處煻紱]有使用到,而實(shí)際上對(duì)于
    的頭像 發(fā)表于 10-21 10:56 ?5351次閱讀
    用Elaborated Design優(yōu)化<b class='flag-5'>RTL</b>的<b class='flag-5'>代碼</b>

    python設(shè)計(jì)個(gè)簡單推薦系統(tǒng)的資料和完整代碼

    本文檔的主要內(nèi)容詳細(xì)介紹的是python設(shè)計(jì)個(gè)簡單推薦系統(tǒng)的資料和完整代碼免費(fèi)下載。
    發(fā)表于 03-30 09:32 ?14次下載

    RTL追蹤到Scala

      在三天前SpinalHDL1.8.0正式上線,在這次更新中增加了Scala代碼和生成的RTL代碼之間的對(duì)照功能,也就是說我們可以在生成的RTL
    的頭像 發(fā)表于 12-09 10:32 ?1273次閱讀

    個(gè)簡單RTL同步FIFO設(shè)計(jì)

    FIFO 是FPGA設(shè)計(jì)中最有用的模塊之。FIFO 在模塊之間提供簡單的握手和同步機(jī)制,是設(shè)計(jì)人員將數(shù)據(jù)從個(gè)模塊傳輸?shù)搅?b class='flag-5'>一個(gè)模塊的常用選
    發(fā)表于 06-14 08:59 ?456次閱讀

    個(gè)簡單設(shè)備激活器電路

    設(shè)備激活器是能夠使用簡單組件切換大功率電器的電路。通常,設(shè)備激活器電路使用簡單的按鈕和開關(guān)作為激活元件來觸發(fā)設(shè)備的操作。然而,在這個(gè)
    的頭像 發(fā)表于 06-29 16:05 ?904次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>簡單</b>的<b class='flag-5'>設(shè)備</b>激活器電路