大家好,我们团队的名字叫小白联盟,参赛编号是CICC2611。本篇文章主要是想和大家分享一下在学习协处理器的一些收获。
我们对官方提供的蜂鸟E203协处理器参考示例进行分析,例子实现对一个3行3列的矩阵按顺序进行累加和列累加计算。
所以定义了三条指令lbuf、sbuf、rowsome
lbuf指令实现从内存中Load数据至行数据缓存,需要读取操作数rs1,不需要读取rs2,无需返回结果,故func3字段010,此时func7有2^8选择,例子定义了func7为1。
sbuf指令实现从行数据缓存中 store数据至内存,需要读取操作数rs1,不需要读取rs2无需返回结果,故func3字段010,定义func7为2。
rowsome指令实现行累加值的计算,并通过结果寄存器返回累加值,需要读取操作数rs1,不需要读取rs2,且需返回结果,故func3字段010,func7为6。
三条指令均使用custom3指令类型扩展成自定义指令,故opcode字段均为7‘b11111011’
Nice_core信号解读
译码段,对输入指令,将指令func3字段func7字段及opcode段译码
判断是否是custom3类型扩展指令,判断func3字段以及func7对指令进行译码,判断输入那一条指令
当判断输入指令为其中一条时,将custom_multi_cyc_op和custom_mem_op置1,用于后续操作和存储判断
状态机,判断指令的状态切换