名称:基于FPGA的cordic IP核设计Verilog代码VIVADO仿真
软件:VIVADO
语言:Verilog
代码功能:cordic IP核设计及仿真
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1、工程文件
2、程序文件
3、Testbench
4、工程编译
5、程序仿真
Input:x+y*i
求arctan(y,x)
仿真图分析:
1.
输入数据格式:第1位为符号位,第2位为整数位,其余为小数位
输出数据格式:第1位为符号位,第2、3位为整数位,其余为小数位
实部x=16’h0400=0000010000000000=00.00010000000000=0.0625
虚部y=16’h06ed=0000011011101101=00.00011011101101=0.1082
仿真结果arctan_data=16’h2182=0010000110000010=001.0000110000010=1.04712
atan2(y,x)是matlab中用于求反正切的函数
使用matlab验证计算如下,与仿真结果一直,计算正确
2.
实部x=32’hfaa5=111110*********1=11.11101010100101
实部为负数,取反加1
not(111110*********1)+1=0000010101011011=00.00010101011011=0.08368
故实部x=-0.08368
虚部y=32’h05f1=0000010111110001=00.00010111110001=0.09283
仿真结果arctan_data=16’=010*********
使用matlab验证计算如下,与仿真结果一直,计算正确
部分代码展示:
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2019/01/23 21:40:34
// Design Name:
// Module Name: cordic_arctan
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module cordic_arctan(
input clk,
input [15:0] data_real,//x是实部
input [15:0] data_imag,//y虚部
output [15:0] arctan_data//输出结果
);
// s_axis_cartesian_tdata_real <= s_axis_cartesian_tdata(31 downto 0);
// s_axis_cartesian_tdata_imag <= s_axis_cartesian_tdata(63 downto 32);
// m_axis_dout_tdata_phase <= m_axis_dout_tdata(31 downto 0);
wire [31 : 0] s_axis_cartesian_tdata;
wire s_axis_cartesian_tvalid;
wire m_axis_dout_tvalid;
assign s_axis_cartesian_tdata={data_imag,data_real};//输入,虚部在前,实部在后
assign s_axis_cartesian_tvalid=1;//valid保持为1,即保持有效
//调用cordic
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=844
1487