报名编号:CICC1907
团队名称:Hollow-SEKIRO-ARCAEA
学校名称:东南大学
指导老师:刘昊
团队成员:申烁、徐轶凡、林昊
这是我们第六篇分享文章。
我们的设计方案中,FPU计算单元将收到的三条数据和使能信号同步发给20多个模块,同时只有一个模块被时钟使能,进行计算,但结果都会保留,发给数选。计算单元还需接受和给出握手信号。在RISC v架构中每个模块(包括FPU)的握手信号都有一个i_valid、i_ready,FPU内部需要三个输入数据的握手信号、一个输出结果的握手信号。
根据AXI协议,模块的握手信号有输入valid、ready和输出valid、ready,因为是AXIS(S指数据流模式,数据是一次性并行输进来、不会中断)模式,故没有tuser、tlast(当然也可以自己设置,如果数据是1bit1bit进来的,则需要tlast,发完最后一个bit时拉高,tuser可以用来配置表示一些用户需要的信息)。
需要注意的是,本以为只有当数据数据的valid拉高后,IP核才能接受数据,但仿真的波形表明,只要当时钟使能信号(若有)有效、复位无效,输入数据有效,不论其他所有的握手信号是什么,都开始计算并输出结果。另外,IP核的输入ready与输出ready一致,输出valid与输入valid一致,这与EXU中的其他握手信号的处理方式一致。
在处理整个FPU的握手信号时,输入的valid信号将输给对应的子模块(不需要的出0,用判断语句实现),需要计算的子模块再输出ready信号。该模块的多个输入信号(也有可能只有一个)的ready相与(即全1才可输入,ready置零表示在计算,无法输入)成该模块的ready信号,每个模块的ready信号通过一个数选给到FPU的ready。输出握手信号的valid也是通过数选给到FPU的valid。(输出信号的valid由模块给出,ready由接收模块发给FPU,且一个模块只会有一个输出)。
如果要实现非阻塞模式,IP核将取消输入ready和输出valid信号
本文介绍的内容是为了完成基础功能:对蜂鸟E203 RISC-V内核的微架构实现进行一定优化,在添加F拓展的过程中的一些记录。