|

楼主 |
发表于 2017-2-15 17:37:31
|
显示全部楼层
我用的软件是vivado2016,因为我做的是复数乘法,是关于数字信号处理的。我在ip catalog中输入mult这个关键词,signal processing下拉中会有一个complex multplier,就是用于复数乘法的,我就是调用的这个IP核,感觉是水到渠成,确实是AXI4的,插图上面也给出来了,没有native之类的选项,我选择了truncate(见图)选项后,就生成例化调用,仿真的结果让我傻眼了,跟自己计算的结果不同,我不知道它给的结果到底是什么意思。所有数据radix为有符号数。希望有人给指点一下,因为我看到它就是用来处理复数乘法的,当然用普通的乘法器也可以实现复数乘法,出现错误(反正我不懂给的结果是什么东西)难道是AXI4的错?
本身结果是有问题的。
仿真模块中例化 top U1(
.clk(clk_w),
.rst_n(rst_n_w),
.dataa_valid(1'b1),
.dataa_i(dataa_i_w),
.dataa_r(dataa_r_w),
.datab_valid(1'b1),
.datab_i(datab_i_w),
.datab_r(datab_r_w),
.data_out_valid(),
.data_out_i(data_out_i),
.data_out_r(data_out_r)
);
top模块中例化
complex_mult MULT(
.aclk(clk), // input wire aclk
.aresetn(rst_n), // input wire aresetn
.s_axis_a_tvalid(dataa_valid), // input wire s_axis_a_tvalid
.s_axis_a_tdata({dataa_i,dataa_r}), // input wire [31 : 0] s_axis_a_tdata
.s_axis_b_tvalid(datab_valid), // input wire s_axis_b_tvalid
.s_axis_b_tdata({datab_i,datab_r}), // input wire [31 : 0] s_axis_b_tdata
.m_axis_dout_tvalid(data_out_valid), // output wire m_axis_dout_tvalid
.m_axis_dout_tdata({data_out_i,data_out_r}) |
|