Files
eb001/doc/spec/SmUnit.md
2026-07-28 17:28:49 +08:00

2.2 KiB
Raw Blame History

SMUnit


以下是用户区域


SMUnit本质是一个SRAM队列FIFO的维护模块

接口

对外接口包括:

  • sram对外写接口
  • sram对外读接口
  • enq 输入Bool 压栈
  • deq 输入Bool 弹出
  • SRAM对内接口接入实际例化的多个SRAM
  • cnt 输出当前fifo内有多少个数据
  • flush 输入软件复位整个SMUnit
  • isComf 输入Bool确认正式写入
  • isAbrt 输入Bool放弃写入

指针

  • FIFO内部除了常见的读指针rPtr和写指针wPtr,额外增加了一个提交指针cPtr
  • 提交指针是为了在系统错误写入时进行撤销而设计的当eb01从站接收数据过程中有可能收到了部分数据进而写入fifo并进行压栈但是本次传输并没有完全完成例如后续数据错误crc校验失败。这时我们需要回滚fifo的状态抛弃掉之前写入的数据

  • 三个指针的位宽比fifo实际需要位宽多1bits用于指示空满log2Ceil(depth)+1
  • 当读指针rPtr和提交指针cPtr相等时fifo为空
  • 当读指针rPtr和写指针wPtr最高位不同其余比特相同fifo为满
  • 复位或者使用flush软复位时,所有指针归零
  • enq时且fifo不为满写指针加1
  • isAbrt了,写指针wPtr回退到提交指针cPtr的位置
  • 对于写指针wPtr,当enqisAbrt同时到来,enq的优先级更高,对整个大系统工作功能会不会产生问题需要测,或者系统正常运行时不会发生这种情况
  • deq且fifo不为空读指针加1
  • isComf时提交指针cPtr前进到写指针wPtr的位置
  • 根据写指针wPtr的有效比特位的值sram对外写接口连接到内部实际例化特定SRAM的写接口其余未指向的接口保持为0不活动或者悬空
  • 根据读指针rPtr的有效比特位的值sram对外读接口连接到内部实际例化特定SRAM的读接口其余未指向的接口保持为0不活动或者悬空

以下是大模型补充区域