队伍编号:CICC1842
针对RV所特有的扩展指令,e203使用NICE接口进行通信,以下对自定义指令情况下的NICE各个端口配置进行详细介绍。
由于NICE模块的输入端口由CPU发送相关信号,因此仅对NICE返回给CPU的端口进行介绍。
NICE返回给CPU的端口分为返回给DTCM和返回给CPU CORE两种,首先对返回CPU CORE的端口进行介绍。
nice_rsp_err | 由nice_icb_rsp_err和nice_icb_rsp_valid决定,本设计中该端口与demo中保持一致,未进行改变。 |
nice_active | 该值为NICE是否处于活跃状态(非睡眠)。当NICE为空闲状态时,该值取决于CPU的输入nice_req_valid,指令状态时为1. |
nice_req_ready | 当NICE为空闲状态时输出1,需要访问DTCM时要求DTCM的传输给NICE端口的信号nice_icb_cmd_ready为1。 |
对于返回给DTCM的端口信号:
nice_icb_rsp_ready | 原demo设计为恒1,故不变 |
nice_mem_holdup | 为1时表明需要访问dtcm,占用dtcm,后一周期 nice_icb_cmd_valid置1 |
nice_icb_cmd_valid | 为1时访问dtcm,当前周期开始向输入地址写数据 |
nice_icb_cmd_addr | 地址 |
nice_icb_cmd_read | 为0时表示向dtcm写数据 |
nice_icb_cmd_wdata | 写入的数据 |
nice_icb_cmd_size | 每次写的规格,规定为2’b10为字 |
由于本队伍设计没有DTCM进行访问的需求,因此未对其进行深入的研究,仅仅是将nice_icb_cmd_valid横置为低电平。
基于原有的NICE端口信号,同样将NICE接口设计为状态机,其分为空闲状态和工作状态。当其为空闲状态时,接收收到的指令编码,判断其为哪一条指令,跳转至工作状态并将对应模块启动使能信号置为1。
值得注意的是,demo上板获得的信号时序可能和一版e203的参考书的时序略有不同。
对于demo上板时ila捕捉的nice信号如下:
本队设计上板后捕捉信号波形如下