本文介绍了使用情况Vivado中乘法器的使用方法。
文章目录
- Multiplier
- 仿真
- Complex Multiplier
- 仿真
Multiplier
首先在IP Catalog中搜索Multiplier,找到后双击打开。 Parallel Multiplier:并行乘法器。 Constant Coefficient Multiplier:恒定系数乘法器。 Data Type:Signed 二进制补码有符号数或符号数 Unsigned二进制无符号数。 Width:操作数位宽。 Multiplier Construction: LUT或乘法器。 Optimization Options:Area Optimized 资源优先或Speed Optimized速度优先。 当乘法器类型选择为恒定系数时, Constant Value (Integer):输入恒定系数的整数值,支持正负系数。 Memory Type:内存类型,Distributed Memory,Block Memory,Dedicated Multiplier。 Use Custom Output Width:定制输出宽度。 ** Pipelining and Control Signals:** Pipeline Stages: Clock Enable:时钟使能。 Synchronous Clear: 同步清除。 SCLR/CE Priority: 设置SCLR引脚和CE引脚的优先级。
仿真
设置输入数据位宽为16位符号,输出为32位,模拟结果如下。
Complex Multiplier
首先在IP Catalog中搜索Complex Multiplier,找到后双击打开。 ** Input and Implementation:** Channel A: AR/AI Operand Width:操作数位宽。 当其设置为11时,输入端口s_axis_a_tdata如下图所示。 TLAST、TUSER、TUSER Width为AXI4-Stream通道选项。 选择使用LUT或Multiplier。 选择资源优化或性能优化。 选择阻塞模式或非阻塞模式。 Truncate 截断 或 Random Rounding 随机舍入。 选择随机舍入时,启用CTRL此时,通道由舍入类型组成s_axis_ctrl_tdata的第0位ROUND_CY的值确定。 Automatic 自动或 Manual 手动。 ACLKEN 或 ARESETn
仿真
在非阻塞模式下输入a=10 j20,b=20 j10,dout=ab=j500=j0x1F4 ;a=20 j40,b=40 j20,dout=ab=j2000=j0x7d0。 输入实部和虚部位宽16,输出实部和虚部位宽16 16 1=由于使用,33AXI4-Stream接口需要字节对齐,所以m_axis_dout_tdata位宽80,前五个字节为输出虚部,后五个字节为输出实部。当以资源优化为目标时,输出结果将延迟5个时钟周期,在非阻塞模式下输出tvalid如果输入通道受到有效影响,tvalid当输出通道输出时tvalid。 在官方手册中,方手册中,时序如下(其输出延迟为时钟周期)。
当阻塞模式和性能优化时,模拟结果如下。 当设置为阻塞模式时,将启用内核tready引脚。 官方手册中,阻塞模式下时序如下。 特别注意输入通道和输出通道tready分析了阻塞模式与非阻塞模式的区别。
- 在使用所有输入通道之前,不会执行新数据,例如A1*B1,A3*B3。
- 当DOUT_TREADY无效时,数据将积累到输出缓冲区,数据将不再更新A3*B3.此时,输入的数据将存储在通道的输入缓存区,如A4-A8、B4-B直到输入通道TREADY被拉低。
- 当DOUT_TREADY有效时,输出结果是输入缓存区数据运行后的结果,如A4*B4-A8*B8。