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

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

3天内不再提示

BMD64与BMD128比较

NJ90_gh_bee81f8 来源:面包板社区 2020-01-29 09:36 次阅读

结合排查之前pio_writeReadBack_test0测试出现的问题,需要参考前人写的相关博客,大部分都是基于BMD64,而我的示例是基于BMD128。

pio_writeReadBack_test0测试HOST发起一个MEM32写,然后再启动MEM32读回,所以先要探究MEM32写,分析BMD RX 引擎(用于接收、解析TLP)。下图是https://blog.csdn.net/ningjinghai11/article/details/80924209博文中给出的BMD64模式下的MEM32写时序仿真图,可以看到存储器写请求TLP有2个,所以相应的bmd_64_rx_state分别有MEM_WR32_QW1和MEM_WR32_WT两个状态对应。

而我在仿真BMD128模式时,由于数据位宽为128bit,所以存储器写只有一个128bit的TLP就足够,而bmd_rx_state只一个MEM_WR32_WT就结束并进入RST状态,具体时序图如下:


(注:BMD_MEM_RD32_FMT_TYPE 和BMD_MEM_WR32_FMT_TYPE 两种标头对应的TLP是以PIO的模式传输,所以只会传输一个DW数据,再加上3DW标头;所以在BMD64模式下,一共两帧数据,而在上一个状态已经传输了一帧,本状态传输最后一帧数据,所以需要判断trn_reof_n 帧结束信号,同样需要主、从设备都准备好,即trn_rsrc_rdy_n 和trn_rdst_rdy_n 同时有效才能传输。而在BMD128模式下,只需一帧数据就足够了。这可以从上面两个时序图中可以清晰看出来。)
下面比较下BMD64和BMD128的RX引擎中对几个状态机的定义。
先来看看BMD64:

//接收引擎关键状态机的8个状态 `define BMD_64_RX_RST 8'b00000001//接收引擎复位状态 `define BMD_64_RX_MEM_RD32_QW1 8'b00000010//存储器读状态 `define BMD_64_RX_MEM_RD32_WT 8'b00000100//等待存储器读结束 `define BMD_64_RX_MEM_WR32_QW1 8'b00001000//存储器写状态 `define BMD_64_RX_MEM_WR32_WT 8'b00010000//等待存储器写结束 `define BMD_64_RX_CPL_QW1 8'b00100000//不带数据的完成 `define BMD_64_RX_CPLD_QW1 8'b01000000//带数据完成 `define BMD_64_RX_CPLD_QWN 8'b10000000//带数据完成 //接收引擎4种标头 `define BMD_MEM_RD32_FMT_TYPE 7'b00_00000//存储器读请求:TLP头大小为3个双字,不带数据 `define BMD_MEM_WR32_FMT_TYPE 7'b10_00000//存储器写请求:TLP头大小为3个双字,带数据 `define BMD_CPL_FMT_TYPE 7'b00_01010//完成报文:TLP头大小为3个双字,不带数据;包括存储器、配置和I/O写完成 `define BMD_CPLD_FMT_TYPE 7'b10_01010//带数据完成报文:TLP头大小为3个双字;包括存储器读、配置读、I/O读和原子读操作完成先来看看BMD128:

//定义了8种关键状态机状态 `define BMD_128_RX_RST 8'b00000001 `define BMD_128_RX_MEM_RD32_STRAD 8'b00000010 `define BMD_128_RX_MEM_RD32_WT 8'b00000100 `define BMD_128_RX_MEM_WR32_STRAD 8'b00001000 `define BMD_128_RX_MEM_WR32_WT 8'b00010000 `define BMD_128_RX_CPL_STRAD 8'b00100000 `define BMD_128_RX_CPLD_STRAD 8'b01000000 `define BMD_128_RX_CPLD_QWN 8'b10000000 //定义了4种标头 `define BMD_MEM_RD32_FMT_TYPE 7'b00_00000 `define BMD_MEM_WR32_FMT_TYPE 7'b10_00000 `define BMD_CPL_FMT_TYPE 7'b00_01010 `define BMD_CPLD_FMT_TYPE 7'b10_01010

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

    关注

    1629

    文章

    21735

    浏览量

    603172
  • 存储器
    +关注

    关注

    38

    文章

    7487

    浏览量

    163808

原文标题:FPGA图文笔记:BMD64与BMD128比较

文章出处:【微信号:gh_bee81f890fc1,微信公众号:面包板社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ADS1232增益无法达到64或者128怎么解决?

    我将GAIN0设置成1就可以增加两倍我在将GIAN1设置成1就无法达到64或者128.原采样值28000,两倍后56000. 128倍好70000
    发表于 12-17 06:58

    替换MB85RS128,FRAM SF25C128应用于电力弧光保护装置

    替换MB85RS128,FRAM SF25C128应用于电力弧光保护装置
    的头像 发表于 11-11 09:51 163次阅读
    替换MB85RS<b class='flag-5'>128</b>,FRAM SF25C<b class='flag-5'>128</b>应用于电力弧光保护装置

    base64在前端开发中的应用

    Base64是一种编码方法,用于将二进制数据转换为ASCII字符串。这种编码方式在前端开发中有着广泛的应用,尤其是在数据传输和存储方面。 1. Base64编码的基本概念 Base64编码是一种
    的头像 发表于 11-10 14:24 521次阅读

    从TMS320C64x迁移到TMS320C64x+

    电子发烧友网站提供《从TMS320C64x迁移到TMS320C64x+.pdf》资料免费下载
    发表于 10-16 10:26 0次下载
    从TMS320C<b class='flag-5'>64</b>x迁移到TMS320C<b class='flag-5'>64</b>x+

    DM64xx、DM64x和C6000器件的散热注意事项

    电子发烧友网站提供《DM64xx、DM64x和C6000器件的散热注意事项.pdf》资料免费下载
    发表于 10-15 09:15 0次下载
    DM<b class='flag-5'>64</b>xx、DM<b class='flag-5'>64</b>x和C6000器件的散热注意事项

    请问PCM5121是否支持BCK为128FS的输入?如果支持怎样设置初始化CODE?

    1.使用I2C模式 2.使用三线BCK/LRCK/DIN模式 3.使用标准I2S模式 4.采样率为44.1K或48KHZ 5.BCK为128FS 当BCK为64FS时正常,当为128
    发表于 10-09 07:59

    RV6464位地址指令

    们的位置,RV64C 添加了更受欢迎的字加减指令(c.addw,c.addiw,c.subw)以及加载和存储双字指令(c.ld,c.sd,c.ldsp,c.sdsp)。 二、使用插入排序来比较RV64
    发表于 09-04 15:15

    ADC128S052、ADC128S052-Q1模数转换器数据表

    电子发烧友网站提供《ADC128S052、ADC128S052-Q1模数转换器数据表.pdf》资料免费下载
    发表于 07-22 11:12 0次下载
    ADC<b class='flag-5'>128</b>S052、ADC<b class='flag-5'>128</b>S052-Q1模数转换器数据表

    Traveo T2G SRAM不是32位的吗?如何得到一个64位的?

    。 按照此步骤生成 8 位 ECC 奇偶校验。 CODEWORD_SW[127:0] = {128 {1\'b0}}; codeword_sw[63:0] = actualword[63:0
    发表于 06-03 08:49

    什么是Base64,如何编解码?

    Base64编码的原理是将输入数据分割成固定长度的块(通常是3个字节),然后将每个块转换为4个Base64字符。这四个字符由64个特定的ASCII字符组成,包括大写字母A-Z、小写字母a-z、数字0-9以及两个额外的字符+/。编
    发表于 05-03 17:36 720次阅读

    32位基于ARM核心的带64128K字节闪存的微控制器数据手册

    电子发烧友网站提供《32位基于ARM核心的带64128K字节闪存的微控制器数据手册.pdf》资料免费下载
    发表于 03-21 09:07 1次下载

    128 x 64点阵式OLED/PLED段/带控制器的通用驱动器SSD1306数据手册

    电子发烧友网站提供《128 x 64点阵式OLED/PLED段/带控制器的通用驱动器SSD1306数据手册.pdf》资料免费下载
    发表于 03-19 11:01 3次下载

    使用MTFC128GAJAEDN-AIT和cyusb3035时,不能枚举出存储盘,请问MTFC128GAJAEDN-AIT是否被支持?

    之前做过64G的存储盘,用的是MTFC64GJDDN-4M IT这个emmc芯片和cyusb3035成功了。但是当我使用MTFC128GAJAEDN-AIT和cyusb3035时,不能枚举出存储盘
    发表于 02-29 06:01

    哪吒汽车与禾赛合作升级,年内新车搭载 128 线激光雷达 AT128

    在2024哪吒汽车价值链大会上,哪吒汽车与禾赛科技宣布合作升级,将在哪吒汽车新车型上搭载 128 线超高清激光雷达 AT128,打造覆盖出行全场景的高阶智驾系统 NETA PILOT,新车将于
    的头像 发表于 02-22 10:27 364次阅读
    哪吒汽车与禾赛合作升级,年内新车搭载 <b class='flag-5'>128</b> 线激光雷达 AT<b class='flag-5'>128</b>

    全志R128 SDK架构与目录结构

    R128 S2 是全志提供的一款 M33(ARM)+C906(RISCV-64)+HIFI5(Xtensa) 三核异构 SoC,同时芯片内部 SIP 有 1M SRAM、8M LSPSRAM、8M
    发表于 01-05 10:05