0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个简单的Wishbone从设备的RTL代码

SwM2_ChinaAET 来源:未知 作者:李倩 2018-07-31 09:11 次阅读

一个8比特从设备

前文曾经指出,Wishbone总线规范是"轻量级(Lightweight)"规范,它实现起来非常简单紧凑,接口需要的互联逻辑非常少。这里给出一个Wishbone从设备的一个例子,如图21所示。该从设备由一个与门和8个D触发器构成。在写周期,当STB_I和WE_I同时有效,数据DAT_I[7:0]在时钟CLK_I的上升沿被写到触发器中。

图21 一个简单的Wishbone从设备

该从设备的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

该从设备的Wishbone文档如表5。

表5从设备的Wishbone文档

一个32比特RTL级随机数生成器从设备

下面我们举一个实用一点的例子,一个随机数生成器。随机数生成理论和随机数生成器随机数生成理论和随机数生成器模块的RTL代码见附录2。该模块端口定义如下:

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

number_o为随机数输出,当loadseed_I有效时,种子seed_I被送入number_o成为随机数的第一个值。

我们的目的是将其包装成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; //随机数生成器的莉化 rngunit_rng(.clk(CLK_I),.reset(RST_I), .loadseed_i(loadseed),.seed_i(seed), .number_o(rand_number)); endmodule

该从设备的Wishbone文档如表6。

表6从设备的Wishbone文档

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 触发器
    +关注

    关注

    14

    文章

    2000

    浏览量

    61148
  • Wishbone
    +关注

    关注

    0

    文章

    16

    浏览量

    10429

原文标题:【博文连载】Wishbone总线从设备接口示例

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在不改变RTL代码的情况下,优化FPGA HLS设计

    用软件 C 转化来的 RTL 代码其实并不好理解。今天我们就来谈谈,如何在不改变 RTL 代码的情况下,提升设计性能。 本项目所需应用与工
    的头像 发表于 12-20 11:46 1793次阅读
    如何在不改变<b class='flag-5'>RTL</b><b class='flag-5'>代码</b>的情况下,优化FPGA HLS设计

    可综合的RTL代码的角度聊聊interface

    SystemVerilog引入了interface,这里我们可综合的RTL代码的角度聊聊interface。
    的头像 发表于 10-12 09:06 1821次阅读
    <b class='flag-5'>从</b>可综合的<b class='flag-5'>RTL</b><b class='flag-5'>代码</b>的角度聊聊interface

    RTL代码和仿真代码的区别

    RTL代码和仿真代码的区别,哪些verilog语句是可综合的??哪些不能??
    发表于 07-21 13:08

    wishbone总线

    想请教各位前辈,wishbone在工作中很常用吗?我最近在学关于这个的代码,感觉很难懂,而时间又感觉不大够用,需要重点攻击, 所以想知道是否值得投入大量的时间去研究它。望各位前辈不吝赐教
    发表于 03-02 23:37

    基于WISHBONE总线的FLASH闪存接口设计

    总线的另一个优点。由于IP核种类多样,其间并没有种统的间接方式。为满足不同系统的需要,WISHBONE总线提供了四种不同的IP核互连方式:点到点(point-to-point),用
    发表于 12-05 10:35

    AXI互连RTL将1设备连接到2设备怎么实现?

    嗨,我正在使用AXI互连RTL将1设备连接到2设备。以下是IP的规范地址宽度为maste
    发表于 05-20 09:27

    基于Wishbone总线的UART IP核设计

    本文介绍的基于Wishbone总线的UART IP核的设计方法,通过验证表明了各项功能达到预期要求,为IP核接口的标准化设计提供了依据。此外,该IP核代码全部采用模块化的Verilog-HDL语言编写,
    发表于 06-10 11:47 3776次阅读
    基于<b class='flag-5'>Wishbone</b>总线的UART IP核设计

    基于WISHBONE总线的FLASH闪存接口设计

    本文简要介绍了AMD 公司Am29LV160D 芯片的特点,并对WISHBONE总线作了简单的介绍,详细说明了FLASH memory 与WISHBONE 总线的硬件接口设计及部分Verilog HDL 程序源
    发表于 06-23 16:32 18次下载
    基于<b class='flag-5'>WISHBONE</b>总线的FLASH闪存接口设计

    设计复用的RTL指导原则

    设计可复用的基本要求是RTL 代码可移植。通常的软件工程指导原则在RTL 编码时也适用。类似软件开发,基本的编码指导原则要求RTL 代码
    发表于 12-24 00:46 32次下载

    HLS系列 – High Level Synthesis(HLS) 从简单的fir滤波器开始2

    在这个系列的上篇文章“HighLevel Synthesis(HLS) 从简单的fir滤波器开始1”中,我们从
    发表于 02-08 05:10 531次阅读

    用Elaborated Design优化RTL代码

    在Vivado FlowNavigator中有Elaborated Design,如下图所示,属于RTL Analysis这步对应的设计。可能很多工程师都没有使用到,而实际上对于
    的头像 发表于 10-21 10:56 5342次阅读
    用Elaborated Design优化<b class='flag-5'>RTL</b>的<b class='flag-5'>代码</b>

    python设计简单推荐系统的资料和完整代码

    本文档的主要内容详细介绍的是python设计简单推荐系统的资料和完整代码免费下载。
    发表于 03-30 09:32 14次下载

    RTL追踪到Scala

      在三天前SpinalHDL1.8.0正式上线,在这次更新中增加了Scala代码和生成的RTL代码之间的对照功能,也就是说我们可以在生成的RTL
    的头像 发表于 12-09 10:32 1268次阅读

    简单RTL同步FIFO设计

    FIFO 是FPGA设计中最有用的模块之。FIFO 在模块之间提供简单的握手和同步机制,是设计人员将数据从模块传输到另一个模块的常用选
    发表于 06-14 08:59 454次阅读

    简单设备激活器电路

    设备激活器是能够使用简单组件切换大功率电器的电路。通常,设备激活器电路使用简单的按钮和开关作为激活元件来触发设备的操作。然而,在这个
    的头像 发表于 06-29 16:05 889次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>简单</b>的<b class='flag-5'>设备</b>激活器电路