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

53 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`,当`enq``isAbrt`同时到来,`enq`的优先级更高,对整个大系统工作功能会不会产生问题需要测,或者系统正常运行时不会发生这种情况**
*`deq`且fifo不为空读指针加1
*`isComf`时提交指针`cPtr`前进到写指针`wPtr`的位置
* 根据写指针`wPtr`的有效比特位的值sram对外写接口连接到内部实际例化特定SRAM的写接口其余未指向的接口保持为0不活动或者悬空
* 根据读指针`rPtr`的有效比特位的值sram对外读接口连接到内部实际例化特定SRAM的读接口其余未指向的接口保持为0不活动或者悬空
---------------------------------------
以下是大模型补充区域
---------------------------------------