Complex Multiplier IP核的使用,尤其是输出数据的截位到底怎么弄,我感觉官方文档PG104写的不清楚。我个人在网上也没找到好的讲解文章,就自己琢磨了下,然后写成文档记录在此,方便将来也有疑问的同学。
目录
1、当IP输出位宽为默认的最大值25时,此时IP没有截位。如仿真例子中第一种方法:
2、当IP输出位宽设置为20时,此时IP相对于最大值25就截掉了5位。如仿真例子中第二种方法:
3、如上第2点使用同一个IP设置:IP输出位宽设置为20时,此时IP相对于最大值25就截掉了5位。但修改输入数据的使用方法,如仿真例子中第三种方法:
4、modelsim仿真结果如下所示,可以看到仿真结果是正确的。
一、如下是我的仿真代码:
/*-------------------------------------------------------------------------------------------------------------------
Author: Zheng Wei
Date: 2022-10-10
Version: 1.0
Description: It is a tb_cmpy test.
-------------------------------------------------------------------------------------------------------------------*/
`timescale 1ns / 1ps
module tb_cmpy;
reg i_sys_clk ;
reg i_sys_rst ;
reg din_ena ;
reg [9 :0] din_re0 ;
reg [9 :0] din_im0 ;
reg [9 :0] din_re1 ;
reg [9 :0] din_im1 ;
// clock generate module
parameter period = 10; // 100MHz
initial begin
i_sys_clk = 1'b0;
forever #(period/2) i_sys_clk = ~i_sys_clk;
end
//-------------------------------------------------------------------
// system initialization
task task_sysinit;
begin
end
endtask
// system reset
task task_reset;
begin
i_sys_rst = 1'b1;
repeat(2) @(negedge i_sys_clk);
i_sys_rst = 1'b0;
end
endtask
initial begin
task_sysinit;
task_reset ;
repeat(10) @(posedge i_sys_clk);
// 10bit: 1 sign bit, 1 integer bit, 8 fraction bit
// case1: x0 = 0.5 + j; x1 = 1 - 0.5j
// result: x0 * x1 = 1 + 0.75j, 1 sign bit, 1 integer bit, 8 fraction bit
din_ena = 1;
din_re0 = 10'b00_1000_0000;
din_im0 = 10'b01_0000_0000;
din_re1 = 10'b01_0000_0000;
din_im1 = 10'b11_1000_0000;
@(posedge i_sys_clk);
din_ena = 0;
repeat(20) @(posedge i_sys_clk);
// 10bit: 1 sign bit, 1 integer bit, 8 fraction bit
// case2: x0 = 0.5 - j; x1 = 1 - 0.75j
// result: x0 * x1 = -0.25 - 1.375j, 1 sign bit, 1 integer bit, 8 fraction bit
din_ena = 1;
din_re0 = 10'b00_1000_0000;
din_im0 = 10'b11_0000_0000;
din_re1 = 10'b01_0000_0000;
din_im1 = 10'b11_0100_0000;
@(posedge i_sys_clk);
din_ena = 0;
repeat(500) @(posedge i_sys_clk);
$stop;
end

本文详细解析ComplexMultiplierIP核的使用方法,重点介绍输出数据截位原理,并通过三种不同的仿真示例阐述如何正确配置IP核及进行数据处理。
1997

被折叠的 条评论
为什么被折叠?



