基于FPGA的cordic IP核设计Verilog代码VIVADO仿真

名称:基于FPGA的cordic IP核设计Verilog代码VIVADO仿真(文末获取)

软件:VIVADO

语言:Verilog

代码功能:cordic IP核设计及仿真

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
源代码

 扫描文章末尾的公众号二维码

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值