设为首页 加入收藏

TOP

数字信号处理专题(2)——利用FPGA进行基本运算及特殊函数定点运算(二)
2019-08-24 00:06:35 】 浏览:144
Tags:数字 信号处理 专题 利用 FPGA 进行 基本 运算 特殊 函数定点
signed [DOUT_W-1:0] sinh,cosh; 18 19 // ex = sinhx + coshx <1Q14+1Q14 = 2Q14> 20 always @(posedge clk)begin 21 dout <= sinh + cosh; 22 end 23 24 assign sinh = m_axis_dout_tdata[DOUT_W*2-1 -:DOUT_W]; 25 assign cosh = m_axis_dout_tdata[DOUT_W-1 -:DOUT_W]; 26 27 always @(posedge clk)begin 28 if(m_axis_dout_tvalid)begin 29 dout_vld <= 1'b1; 30 end 31 else 32 dout_vld <= 0; 33 end 34 35 cordic_0 cordic_cosh_sinh ( 36 .aclk(clk), // input wire aclk 37 .s_axis_phase_tvalid(din_vld), // input wire s_axis_phase_tvalid 38 .s_axis_phase_tdata(din), // input wire [15 : 0] s_axis_phase_tdata 39 .m_axis_dout_tvalid(m_axis_dout_tvalid), // output wire m_axis_dout_tvalid 40 .m_axis_dout_tdata(m_axis_dout_tdata) // output wire [31 : 0] m_axis_dout_tdata 41 ); 42 43 endmodule cordic_ex

  用MATLAB产生两组数据,并将角度值定点化后作为设计模块数据激励:

testbench:

 1 `timescale 1ns / 1ps
 2 
 3 module cordic_ex_tb();
 4 
 5 parameter CYC = 20;
 6 
 7 reg clk;
 8 reg [16-1:0] din;
 9 reg din_vld;
10 
11 wire signed [17-1:0] dout;
12 wire dout_vld;
13 
14 cordic_ex#(.DIN_W(16),
15            .DOUT_W(16))
16  uut(
17    .clk       (clk)  ,
18    .din       (din)  ,//2Q13
19    .din_vld   (din_vld)  ,
20    .dout      (dout)  ,//2Q14
21    .dout_vld  (dout_vld)     
22 );
23 
24     initial begin
25         clk = 1;
26         forever #(CYC/2) clk = ~clk;
27     end
28 
29     initial begin
30         #1;
31         din = 0;
32         din_vld = 0;
33         #(CYC*10);
34 
35         din_vld = 1;
36         din = 16'b0001010000011011;//pi * 1/5
37         #(CYC*1);
38         din = 16'b1110011011011110;//-pi * 1/4
39         #5;
40         $stop;
41     end
42 
43 endmodule
cordic_ex_tb

仿真结果:

   仿真波形表明,计算结果与MATLAB浮点运算相近,满足一般计算需求。若想提高精度,可以增加CORDIC输出数据位宽。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

参考文献:

1 ug479 7 Series DSP48E1 Slice User Guide.

2 Xilinx CORDIC算法(非常经典)_图文_百度文库 https://wenku.baidu.com/view/6c623aa8910ef12d2bf9e732.html

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【转载】异步复位,同步释放保证.. 下一篇你真的会Xilinx FPGA的复位吗?

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目