• Rocket


    https://mp.weixin.qq.com/s/82iLT-fmDg9Comp2p9bxKg

     

    简单介绍RegisterCrossing的实现。

     

    1. BusyRegisterCrossing

     

    简单的控制状态机,用于控制是否可以发起请求,即是否已经存在正在处理的请求:

     

    1) io

     

    控制接口如下图:

     

    a. master_request_valid/master_request_ready

     

    表示上游是否发起请求(valid),下游是否准备好接收(ready)。

     

    b. master_response_valid/master_response_ready

     

    表示是否有响应信息(valid),上游是否准备好接收(ready)响应消息。

     

    c. crossing_request_valid/crossing_request_ready

     

    表示要发送给跨时钟结构的请求(valid),以及经过跨时钟结构传递过来的下游是否准备好接收的信号(ready)。

     

    2) busy

     

    表示是否有请求正在处理,此时不可以接收新的请求:

     

    3) bypass

     

    相当于loopback,如果bypass为真,则不把请求向跨时钟结构传递,而是直接向上游返回响应消息:

     

    2. RegisterCrossingAssertion

     

    这个断言通过的条件为:

    a. io.master_bypass:即上游要求绕过跨时钟结构,直接回复响应消息,则不需要关注下游的状态;

    b. !up:下游没有up,那么也不会使用跨时钟结构;

    c. !io.slave_reset:下游不在复位状态,那么可以正常使用跨时钟结构;

     

    3. RegisterWriteIO

     

    写寄存器的接口:

    a. request:写请求的valid/ready控制接口;

    b. gen:要写的数据;

    c. response:写请求的响应消息的valid/ready控制接口;

    d. Bool():响应消息;

     

    4. RegisterWriteCrossingIO

     

    增加了时钟和复位信号的跨时钟写寄存器接口:

    a. master是指跨时钟结构上游,slave是指跨时钟结构下游;

    b. master_clock/master_reset:主时钟和复位信号;

    c. master_bypass:是否绕过跨时钟结构;

    d. master_port:写接口,包括valid/ready控制及数据;

    e. slave_clock/slave_reset:从时钟和复位信号;

    f. slave_register:跨越时钟过来的写的数据;

    g. slave_valid:slave_register中的内容是否合法;

     

    5. RegisterWriteCrossing

     

    跨时钟域写寄存器模块:

    分为三个主要部分:

    a. io:输入输出接口;

    b. control:控制模块;

    c. crossing:跨时钟模块;

     

    1) 连接时钟和复位信号

     

     

    2) 连接control模块

     

     

    3) crossing上游连接

     

     

    4) crossing下游连接

     

     

    5) assert

     

     

    6. RegisterReadIO

     

    读寄存器接口:

    a. request:请求控制接口;

    b. response:响应消息控制及数据接口;

     

    7. RegisterReadCrossingIO

     

    加入时钟和复位信号的跨时钟读寄存器接口:

     

    8. RegisterReadCrossing

     

    跨时钟域读寄存器模块:

     

    9. AsyncRWSlaveRegField

     

    用于生成异步读写的逻辑和寄存器域:

     

    1) 参数

     

     

    2) 异步复位寄存器

     

     

    3) 跨时钟写模块

     

     

    4) 跨时钟数据写入寄存器

     

     

    5) 跨时钟读模块

     

     

    6) 从寄存器跨时钟读取

     

     

    7) 返回参数

     

    a. async_slave_reg.io.q:寄存器中存储的数据;

    b. RegField(width, rd_crossing.io.master_port, wr_crossing.io.master_port, desc):使用跨时钟读写模块的寄存器域;

     

     

  • 相关阅读:
    历史版本xcode的下载
    mac上安装hg
    xcode不能抓帧
    window buffer alignment
    highp 和 mediump
    AFBC mali
    AO composition
    gpu memory wait
    L2 cache//bifrost --- cortex-A55
    效果样式
  • 原文地址:https://www.cnblogs.com/wjcdx/p/11605211.html
Copyright © 2020-2023  润新知