队伍编号CICC1842 队伍名称为数据流不队
以下对自定义指令情况下的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信号如下:
本队设计上板后捕捉信号波形如下
最后通过SDK 成功执行指令。