搜索
bottom↓
回复: 1

急啊!求助,怎么编写CORDIC算法求正余弦的仿真程序啊,用Modelsim仿真,希望看到波形图

[复制链接]

出0入0汤圆

发表于 2011-3-22 14:39:14 | 显示全部楼层 |阅读模式
这是我自己编的CORDIC求正余弦的算法程序:
module cordic1(clk, rst, phi, cos, sin);
        parameter  W = 13, Z_Width = 14;
        input clk;
        input rst;
        input signed [Z_Width-1:0]  phi;
        output [W-1:0] cos, sin;
       
        reg [W-1:0] sin;
        reg [W-1:0] cos;
       
        reg [W-1:0] x[8:0];
        reg [W-1:0] y[8:0];
        reg signed [Z_Width-1:0] z[7:0];
       
always@(posedge clk )
begin
                x[0]<=13'h4D;
                y[0]<=13'h00;
                z[0]<=phi;
       
//------------ 旋转45度
  if(z[0][Z_Width-1])
           begin
                   x[1] <= x[0] + y[0];       
                        y[1] <= y[0] - x[0];       
                        z[1] <= z[0] + 14'h65;
                end
        else
           begin
                        x[1] <= x[0] - y[0];       
                        y[1] <= y[0] + x[0];       
                        z[1] <= z[0] - 14'h65;
                end

//------------ 旋转26.57度
        if(z[1][Z_Width-1])
           begin
                        x[2] <= x[1] + {{1{y[1][W-1]}}, y[1][W-1:1]};
                        y[2] <= y[1] - {{1{x[1][W-1]}}, x[1][W-1:1]};
                        z[2] <= z[1] + 14'h3B;
                end
        else
           begin
                   x[2] <= x[1] - {{1{y[1][W-1]}}, y[1][W-1:1]};
                        y[2] <= y[1] + {{1{x[1][W-1]}}, x[1][W-1:1]};
                        z[2] <= z[1] - 14'h3B;
                end
               
//------------ 旋转14.04度
        if(z[2][Z_Width-1])
                begin
                        x[3] <= x[2] + {{2{y[2][W-1]}}, y[2][W-1:2]};
                        y[3] <= y[2] - {{2{x[2][W-1]}}, x[2][W-1:2]};
                        z[3] <= z[2] + 14'h1F;
                end
        else
           begin
         x[3] <= x[2] - {{2{y[2][W-1]}}, y[2][W-1:2]};
                        y[3] <= y[2] + {{2{x[2][W-1]}}, x[2][W-1:2]};
                        z[3] <= z[2] - 14'h1F;
                end
               
//------------ 旋转7.13度
        if(z[3][Z_Width-1])
           begin
                        x[4] <= x[3] + {{3{y[3][W-1]}}, y[3][W-1:3]};
                        y[4] <= y[3] - {{3{x[3][W-1]}}, x[3][W-1:3]};
                        z[4] <= z[3] + 14'h10;
                end
        else
           begin
         x[4] <= x[3] - {{3{y[3][W-1]}}, y[3][W-1:3]};
                        y[4] <= y[3] + {{3{x[3][W-1]}}, x[3][W-1:3]};
                        z[4] <= z[3] - 14'h10;
                end
               
//------------ 旋转3.58度
        if(z[4][Z_Width-1])
           begin
                        x[5] <= x[4] + {{4{y[4][W-1]}}, y[4][W-1:4]};
                        y[5] <= y[4] - {{4{x[4][W-1]}}, x[4][W-1:4]};
                        z[5] <= z[4] + 14'h8;
                end
        else
           begin
         x[5] <= x[4] - {{4{y[4][W-1]}}, y[4][W-1:4]};
                        y[5] <= y[4] + {{4{x[4][W-1]}}, x[4][W-1:4]};
                        z[5] <= z[4] - 14'h8;
                end
               
//------------ 旋转1.79度
        if(z[5][Z_Width-1])
           begin
                        x[6] <= x[5] + {{5{y[5][W-1]}}, y[5][W-1:5]};
                        y[6] <= y[5] - {{5{x[5][W-1]}}, x[5][W-1:5]};
                        z[6] <= z[5] + 14'h4;
                end
        else
           begin
                        x[6] <= x[5] - {{5{y[5][W-1]}}, y[5][W-1:5]};
                        y[6] <= y[5] + {{5{x[5][W-1]}}, x[5][W-1:5]};
                        z[6] <= z[5] - 14'h4;
                end
               
//------------ 旋转0.90度
        if(z[6][Z_Width-1])
           begin
                        x[7] <= x[6] + {{6{y[6][W-1]}}, y[6][W-1:6]};
                        y[7] <= y[6] - {{6{x[6][W-1]}}, x[6][W-1:6]};
                        z[7] <= z[6] + 14'h2;
                end
        else
           begin
                        x[7] <= x[6] - {{6{y[6][W-1]}}, y[6][W-1:6]};
                        y[7] <= y[6] + {{6{x[6][W-1]}}, x[6][W-1:6]};
                        z[7] <= z[6] - 14'h2;
                end
               
//------------ 旋转0.45度
        if(z[7][Z_Width-1])
           begin
                        x[8] <= x[7] + {{7{y[7][W-1]}}, y[7][W-1:7]};
                        y[8] <= y[7] - {{7{x[7][W-1]}}, x[7][W-1:7]};
                end
        else
           begin
         x[8] <= x[7] - {{7{y[7][W-1]}}, y[7][W-1:7]};
                        y[8] <= y[7] + {{7{x[7][W-1]}}, x[7][W-1:7]};
                end
               
cos <= x[8];
sin <= y[8];


end


endmodule
但是我不知怎么编写可以看到整个波形的仿真程序,看到别人用ModelSim仿真过,

(原文件名:0_2_Q(S$1R$[Y`A`1@@@NKQ.jpg)

怎么编写仿真程序才可以看到这样的效果啊

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-10-20 15:04:54 | 显示全部楼层
给phi输入,而且是连续变化的输入。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 13:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表