vivado仿真时使用的代码与实际不一致的解决办法

这篇具有很好参考价值的文章主要介绍了vivado仿真时使用的代码与实际不一致的解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在使用仿真软件时经常会遇到实际需要时间较长,而仿真需要改写实际代码运行时间的问题,在vivado软件中找到了解决办法

代码部分

这里使用一个最简单的例子来说明一下,学过FPGA的朋友肯定可以看出来就是一个简单的计数器使LED每500ms交替闪烁一次

module cnt_sim(
    input  clk,  
    input  rst_n, 

    output [1:0] led       
);

reg  [25:0]  cnt ;

always @ (posedge clk or negedge rst_n) begin
    if(!rst_n)
        cnt <= 26'd0;
    else if(cnt < 26'd5000_0000)
        cnt <= cnt + 1'b1;
    else
        cnt <= 26'd0;
end

assign led = (cnt < 26'd2500_0000) ? 2'b01 : 2'b10 ;

endmodule

这里简单做一下仿真

`timescale 1ns / 1ps
module tb_cnt_sim;

reg clk,rst_n;
wire [1:0] led;

always #10 clk = ~clk;

initial begin
    clk = 1'b0;
    rst_n = 1'b0;
    #200
    rst_n = 1'b1;
end

cnt_sim u_cnt_sim(
    .clk(clk),  
    .rst_n(rst_n), 

    .led(led)       
);
endmodule

可以看的仿真的结果是和我们的设计一致的
vivado每次编译结果不一致,vivado,FPGA,fpga开发
但其实在实际工程应用中仿真500ms需要很长时间,甚至要几十个小时,所以我们希望我们的代码在仿真中只是验证逻辑即可,因此常见的方法一般是在代码中修改

module cnt_sim(
    input  clk,  
    input  rst_n, 

    output [1:0] led       
);

reg  [25:0]  cnt ;

always @ (posedge clk or negedge rst_n) begin
    if(!rst_n)
        cnt <= 26'd0;
//	else if(cnt < 26'd5000_0000)
    else if(cnt < 26'd50)  //仅用于仿真		
        cnt <= cnt + 1'b1;
    else
        cnt <= 26'd0;
end

//assign led = (cnt < 26'd2500_0000) ? 2'b01 : 2'b10 ;
assign led = (cnt < 26'd25)        ? 2'b01 : 2'b10 ;  //仅用于仿真

endmodule

改进方法

显然反复修改逻辑很麻烦,这里提供一种vivado软件自带的功能和语法类型,来解决这个问题


 `ifdef  变量名称
 仿真运行代码
 `else 
 实际运行代码
`endif

然后再软件中设置识别变量名称即可
例如:

module cnt_sim(
    input  clk,  
    input  rst_n, 

    output [1:0] led       
);

reg  [25:0]  cnt ;

always @ (posedge clk or negedge rst_n) begin
    if(!rst_n)
        cnt <= 26'd0;
    `ifdef  Simdem
	else if(cnt < 26'd50)
	`else 
	else if(cnt < 26'd5000_0000)
	`endif
        cnt <= cnt + 1'b1;
    else
        cnt <= 26'd0;
end

`ifdef  Simdem
assign led = (cnt < 26'd25) ? 2'b01 : 2'b10 ;
`else 
assign led = (cnt < 26'd2500_0000) ? 2'b01 : 2'b10 ;
`endif

endmodule

软件中设置
vivado每次编译结果不一致,vivado,FPGA,fpga开发
vivado每次编译结果不一致,vivado,FPGA,fpga开发
将自己设置的变量名称添加即可

结果

在实际代码结果不变的情况下,仿真时间大大减少
同时可以通过这个功能做写一下初值预留给仿真、预留接口等等,最后放一下没有修改仿真代码,添加语句后的仿真结果
vivado每次编译结果不一致,vivado,FPGA,fpga开发文章来源地址https://www.toymoban.com/news/detail-754114.html

到了这里,关于vivado仿真时使用的代码与实际不一致的解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Vivado】 [Place 30-574] 时钟使用普通IO时的报错解决办法

    今天在创建工程时,由于只是一个测试用的工程,给时钟信号分配管脚时只是简单的使用了普通的IO管脚,在实现时报了以下错误 报错原因为,编译器在综合时会自动的为工程中的时钟信号生成一个全局时钟BUF,然后如果管脚分配将这个BUFG连接到普通管脚上,就会报以上错误

    2024年02月11日
    浏览(30)
  • 自定义鼠标指针图案每次开机或者重启都会重置的解决办法

    一款漂亮的鼠标指针常常能使我们身心愉快                                                                                       ...........................................................................................................................................................           

    2024年02月11日
    浏览(67)
  • Excel2013每次打开都弹出配置进度窗口的分步解决办法

    今天重新安装电脑系统,并初次安装了Office 2013软件。打开word,一切正常。但打开excel,每次都会弹出配置进度窗口,等安装进度完成后,Excel可以正常使用。通过度娘、csdn等途径,顺利解决了这个问题。其实原因很简单,即重装系统时默认安装了WPS,WPS与Office发生冲突的缘

    2024年02月08日
    浏览(41)
  • Vivado中文注释乱码的解决办法

    Vivado中文注释乱码,如下图。原因是Vivado 默认编辑器是ANSI编码 ,Notepad++中文编码一般是UTF-8,才会导致乱码。所以,写注释推荐用英文。 【 解决办法 】 方法一 :用Windows自带的记事本打开,另存为,编码选择ANSI编码即可。 方法二 :用SublimeText打开,File-Set File Encoding to

    2024年02月11日
    浏览(33)
  • VIVADO软件错误及解决办法汇总

    在VIVADO软件编写程序时会遇到很多类型的错误,写个博客记录下来防止再犯,短期可能只有几个问题,会长期保持更新,遇到问题就记录。 2022.4.09 【问题1】 The debug port ‘u_ila_0/probe4’ has 1 unconnected channels (bits). This will cause errors during implementation 这在使用ILA时常见的错误,意

    2024年02月02日
    浏览(28)
  • TIA博途安装后,电脑每次开机都会弹出通信设置弹窗的解决办法

    大家在安装完博途之后,电脑每次开机的时候都会弹出这样一个弹窗,如下图所示,让我们选择网络适配器,这里可以直接点击右上角关闭,对博途软件的使用没有影响, 那么,如果不想每次电脑开机都看见这个弹窗,有没有办法可以设置呢? 答案是有的 。 具体操作步骤可

    2024年02月10日
    浏览(161)
  • 解决Vivado仿真卡在executing simulate step

    问题描述: 偶然打开vivado仿真时,一直卡在executing simulate step,卡的时间不等,过一段时间之后,vivado直接闪退。 解决办法: 1、强制关闭vivado软件。 2、虽然vivado软件关了,但是系统后台还在运行着xsimk进程,需要打开资源监视器,搜索xsimk进程,再强制关闭所有与之有关的

    2024年02月11日
    浏览(33)
  • Vivado Synth8-5535 报错解决办法

    报错内容: [Synth 8-5535] port sys_clk has illegal connections. It is illegal to have a port connected to an input buffer and other components. The following are the port connections : Input Buffer: Port I of instance clkin1_ibufg(IBUF) in module clk_wiz_0_clk_wiz Other Components: Port C of instance sys_rst_n_reg(FD) in module ddr3_rw_top... 报错原因

    2024年01月22日
    浏览(28)
  • .Net 6 SignalR 实际业务开发中遇到的问题及解决办法

    1.websocket即时通讯协议 2.Server-Sent Events(SSE)服务器事件 3.longpolling 长轮询。 如果客户端开启协商,会按顺序选择可兼容的协议。(默认开启协议协商) 如果客户端禁用协商,只能websocket协议。 客户端未禁用协商 1.客户端向服务器发http请求,询问服务器支持什么协议。 服务

    2024年02月10日
    浏览(21)
  • Vivado仿真中输出高阻态FPGA故障分析与解决

    Vivado仿真中输出高阻态FPGA故障分析与解决 在FPGA的设计中,Vivado仿真常常被用来验证设计的正确性。但是,有时候仿真结果会出现输出高阻态的情况,这个问题可能导致设计无法正常工作。本篇文章将详细分析这个问题出现的原因,并提供一些可能的解决方法。 当我们进行

    2024年02月09日
    浏览(96)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包