3036|1

569

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

CORDIC IP 核后仿结果 [复制链接]

最近在用Xilinx IP核实现CORDIC的仿真。 我用的仿真平台是ISE10.1 选择的芯片是Virtex-4 SX55T。下面是我的程序和测试程序:

module My_Arctan(

input clk,
input rst_n,
input [15:0] d_real,
input [15:0] d_imag,
input data_en,

output [15:0] phase_out,
output rdy
);


Arctan UArctan(
.clk(clk),
.x_in(d_real),
.y_in(d_imag),
.ce(data_en),
.phase_out(phase_out),
.rdy(rdy)
);

endmodule


///-----------------------test bench----

`timescale 1ns/1ps

module My_Arctan_tb;

//input
reg clk;
reg rst_n;
reg [15:0] d_real,d_imag;
reg data_en;


//output

wire [15:0] phase_out;
wire rdy;

//---Instantiate the Unit Under Test (UUT)
My_Arctan UUT(

        .clk(clk),
        .rst_n(rst_n),
        .d_real(d_real),
        .d_imag(d_imag),
        .data_en(data_en),
        ,phase_out(phase_out),
        .rdy(rdy)
);

//----clock
always #10 clk = ~clk;


initial begin
  clk = 0;
  rst_n = 0;
  d_imag = 0;
  d_real = 0;
  data_en = 0;

#200   rst_n = 1;

end

reg [2:0] cnt_8;
always @(posedge clk or negedge rst_n)
begin
     if(!rst_n)
        cnt_8 <= 3'd0;
     else
        cnt_8 <=cnt_8 +3'd1;
end


always @(posedge clk or negedge rst_n)
begin
      if(!rst_n)
        data_en<=1'b0;
      else if(cnt_8 == 3'd7)
        data_en<=1'b1;
     else
        data_en<=1'b0;
end

always @(posedge clk or negedge rst_n)
begin
      if(!rst_n)
      begin
          d_real<=16'd0;
          d_imag<=16'd0;
      end
      else if(cnt_8 ==3'd7)
      begin
         d_real<=$random%32768;
         d_imag<=$random%32768;
      end
      else
      begin
         d_real<=d_real;
         d_imag<=d_imag;  
      end
end

endmodule


////////////////////////////////////////////////////////////

这个模块前仿没有问题,结果是正确的。但是后仿时,Modelsim 就报错了,错误信息如下:

#**Error:C:/Modeltech_6.2b/Xilinx/Simprims_ver/Simprims_ver_source.v[17637]:$setup(negedge CE &&& (ce_clk_enable1 == 1):864125 ps, posedge CLK: 864420 ps , 440 ps);
#   TimeL864420 ps Iteration:0 instance :/My_Arctan_tb/UUT/\UArctan/BU740\
......

上述错误一直出现。信号phase_out是X态。
此帖出自FPGA/CPLD论坛

最新回复

从报错的结果上看:在仿真源程序的Simprims_ver_source.v[17637],17637行。   错误的原因上看:negedge CE &&& (ce_clk_enable1 == 1) 建立时间不够; posedge CLK: 864420 ps  时钟运行在这个时间点中断。从上面的错误看,源程序没有采用全同步设计造成。   采用的门控时钟设计。个人认为:如果采用门控时钟设计,一定要很好规划时钟利用      详情 回复 发表于 2010-10-25 12:43
点赞 关注
 

回复
举报

6892

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

从报错的结果上看:在仿真源程序的Simprims_ver_source.v[17637],17637行。

 

错误的原因上看:negedge CE &&& (ce_clk_enable1 == 1) 建立时间不够;

posedge CLK: 864420 ps  时钟运行在这个时间点中断。从上面的错误看,源程序没有采用全同步设计造成。

 

采用的门控时钟设计。个人认为:如果采用门控时钟设计,一定要很好规划时钟利用

 

 

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表