目录
- 1. Function Description
- 2. Feature List
- 3. Block Diagram
- 4. Interface Description
- 5. Timing Description
- 5. Finite State Machine Description
- 5. Pipeline Description
- 5. Pingpong Description
- (6. Register Description)
- (7. Command Description)
- 8. Submodule Design
- 9. RTL coding
- 10. Testbench coding
- 12. Verification
旨在总结工作和练习中常用的算法设计方法,以下框架遵循一个子系统的设计流程。
1. Function Description
按照:综述→时序/状态机/流水过程→寄存器→子功能→接口协议的框架介绍模块,必要时加入时序图、架构图
1.1. Overview
1.2. Timing / Finite State Machine / Pipeline Operation
1.3. Registers
1.4. Function1
1.5. Function2
1.6. Interface protocols
2. Feature List
列表描述要具备的功能和具体指标
● 使用APB接口接受数据,再采用SPI发送出去
● 时钟采用100MHZ
● 具备仲裁和时钟同步功能
● 可实现快速(100kbps)、高速(400kbps)和超速(1Mkbps)变化
3. Block Diagram
基于自顶向下的思路,划分为顶层模块和多个子模块,子模块包括寄存器模块、状态机控制模块、桥模块、其他子模块,作出架构图
下图中top_module_fsm用来对其他子模块进行控制、调度,以实现top_module的正确功能
当然有的架构不需要状态机
4. Interface Description
接口、参数描述
Group | Signal | Direction | Width(bits) | Description |
---|---|---|---|---|
rstn | input | 1 | 复位 | |
clk | input | 1 | 时钟 | |
A_intf | cmd1 | input | CMD_WIDTH | 命令1 |
rsp1 | output | RSP_WIDTH | 响应1 | |
B_intf | cmd2 | input | CMD_WIDTH | 命令2 |
rsp2 | output | RSP_WIDTH | 响应2 | |
... | ... | input or output | ... | ... |
之后是需要配置的参数描述
Parameter | Units | Description |
---|---|---|
CMD_WIDTH | bit | 命令位宽 |
RSP_WIDTH | bit | 响应位宽 |
RSP_GRADE | bit | 响应级别 |
VELOCITY | bit per second | 执行速率 |
... | ... | ... |
5. Timing Description
…
5. Finite State Machine Description
绘制状态机图
6.3 Verilog 状态机
握手时序
RTL协议包拼凑
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)
RTL仲裁器设计
RTL乒乓运算设计
State1
绘制State1下的时序图
例如
State2
…
State3
…
5. Pipeline Description
作出状态时序图,包括各状态下的逻辑、状态转移条件,并表明数据路径
例如下图,红色箭头表示数据从输入到输出经过的通路
图中的状态转换表示各组信号流水中的状