完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用vivado2019.2建立工程,工程中调用cordic IP核进行atan求解,功能仿真时正常且满足要求;综合时正常;实现时报错提示多重驱动。 如果经cordic计算后的输出值不用于后续的操作,只将该值引出,则能通过实现。如果将cordic输出值经寄存器打拍后再输出,能进行实现,但是message有电路警告,仍旧提示多重驱动。 本工程中,将cordic计算后的输出值用于 1、数值范围判断(if...else...);2、做位拼接,拼接后的数据用于做加。 问题:不知道什么原因,IP核不应该有这种问题吧,但是回看自己的工程代码,也不觉得哪里有问题,目的是要把计算结果用于后续操作,并没有对将其作为操作数进行赋值。 当局者迷,敬请各前辈赐教! 调用cordic ip的代码模块如下:
cordic ip配置页面如下: vivado message窗口,实现时报错信息截图如下: RTL视图多重驱动的信号线截图如下: 附加,综合时关于cordic ip的一些警告信息,如下: |
|
相关推荐
3个回答
|
|
已解决,顶层引出使用的线网再声明时赋了初值,导致多驱动冲突。去掉赋初值问题就解决了。
|
|
|
|
clk,
input wire rst_n, //reset信号(低电平有效) input wire [31:0] x_in, //输入角度 output reg [31:0] atan_out, //atan(x_in)的输出 output reg [31:0] y_out, //cordic计算结果(sin(x_in)) output reg [31:0] x_out //cordic计算结果(cos(x_in)) ); /* 定义CORDIC IP的I/O端口 */ wire [31:0] atan_out_wire; wire [31:0] y_out_wire; wire [31:0] x_out_wire; reg [31:0] reset_val = 1; //CORDIC IP的reset值 /* 实例化CORDIC IP核 */ CORDIC_IP u_cordic_ip ( .ATAN_OUT(atan_out_wire), .Y_OUT(y_out_wire), .X_OUT(x_out_wire), .CLK(clk), .RSTN(~rst_n), //注意:IP的reset要取反输入 .X_IN(x_in) ); /* 赋值 */ always @(posedge clk or negedge rst_n) begin if (~rst_n) begin atan_out <= reset_val; y_out <= reset_val; x_out <= reset_val; end else begin atan_out <= atan_out_wire; y_out <= y_out_wire; x_out <= x_out_wire; end end endmodule 这是调用CORDIC IP核的代码模块,如果代码中没有问题,可能是IP核配置或者使用不当导致的问题。建议检查IP核的配置是否与硬件平台和使用场景相符合。同时,也可以尝试在IP核上增加控制信号,控制输出信号是否有效,或者将输出信号经过寄存器等数据缓存后再引出,以减小IP核输出对后续电路的影响。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1367 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1046 浏览 0 评论
2442 浏览 1 评论
2146 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2408 浏览 0 评论
1897 浏览 50 评论
6018 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 01:26 , Processed in 0.739181 second(s), Total 90, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号