参考:DesignWare低功耗流水线浮点乘法器
端口介绍
信号名称 | 位宽 | 方向 | 信号描述 |
---|
clk | 1 | IN | 时钟信号 |
rst_n | 1 | IN | 异步复位信号,若参数rst_mode=0,则该信号无效 |
a | a_width | IN | 输入乘数a |
b | b_width | IN | 输入乘数b |
product | a_width+b_width | OUT | 输出结果product=a×b |
launch | 1 | IN | 控制是否开始乘法运算 |
launch_id | 1 | IN | launch有效时,输入数据的id |
pipe_full | 1 | OUT | 计算结果处于流水线第n级且accept_n=1时,此信号拉高指示流水线已满,此后即使是有效的a、b也无法被计算 |
pipe_ovf | 1 | OUT | 流水线溢出的状态标志信号 |
accept_n | 1 | IN | 指示此模块会流水线式输出计算结果(也就是模块后有fifo接收计算结果),低有效 |
arrive | 1 | OUT | 输出结果product的有效信号 |
arrive_id | id_width | OUT | product有效时,指示product对应的输入数据的id |
push_out_n | 1 | OUT | 指示流水线中存在有效计算结果,且accept_n使能,提示此时计算结果需要被外部fifo接收,(将结果压入输出FIFO的压使能信号),低有效 |
pipe_census | M | OUT | 有效输入数据的计算结果处于第几级流水线,(当前流水线中流水线寄存器被占用的数量,M=ceil(log2(in_reg+stages+out_reg)),ceil表示向上取整) |
参数介绍
参数名称 | 值 | 描述 |
---|
a_width | 正整数,默认为8 | a的位宽 |
b_width | 正整数,默认为8 | b的位宽 |
id_width | 1-1024,默认为8 | launch_id 和 arrive_id 的位宽大小 |
in_reg | 0或1,默认为0 | 数据输入端是否包含输入寄存器,0:不包含;1:包含 |
stages | 1-1022,默认为4 | 流水线的级数 |
out_reg | 0或1,默认为0 | 数据输出端是否包含输出寄存器,0:不包含;1:包含 |
tc_mode | 0或1,默认为0 | 做有/无符号乘法,0:无符号;1:有符号 |
rst_mode | 0或1,默认为0 | 复位模式,0:异步复位;1:同步复位 |
op_iso_mode | 0-4,默认为0 | 用于设置数据路径上的门控逻辑,以实现低功耗。 |
设计算结果与有效输入之间相差的周期为num_cyc,num_cyc与stages、in_reg、out_reg之间的关系如下:
in_reg | stages | out_reg | num_cyc |
---|
0 | 1 | 0 | 0 |
1 | 1 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 1 | 1 | 2 |
0 | 2 | 0 | 1 |
1 | 2 | 0 | 2 |
0 | 2 | 1 | 2 |
1 | 2 | 1 | 3 |
num_cyc=in_reg+stages-1+out_reg.