VIVADO自定义IP核以及调用,还有遇到的有警告的问题[IP_Flow 19-315]和[IP_Flow 19-5661]

        vivado的ip核应该比较常用的设计工具,但有时候官方的ip核设计的比较复杂而我们不需要如此多功能的ip核时,就可以我们自己去设计自己想要的ip核。

一、RTL设计

首先需要你提前设计好自己的模块,包括源文件,以及模块仿真。我的源设计如下

module mid_data(
    input clk ,rst_n,
    
    input [7:0] a,b,c,
    output reg [7:0] mid_data
    );
   wire  A,B,C; 
   wire  [2:0] state;
    assign A=(a>b)?1:0;
    assign B=(b>c)?1:0;
    assign C=(c>a)?1:0;
    assign   state={A,B,C};
  
always@(posedge clk)
    if(!rst_n)
    begin
       mid_data<=8'b0;
     end
       else case(state)
                3'd2,3'd5: begin  mid_data<=a;  end   
                3'd1,3'd6: begin  mid_data<=b;  end
                3'd0,3'd3,3'd4: begin  mid_data<=c;  end                
              default: begin mid_data<=mid_data; end 
             endcase         
endmodule

实现的是一个数据比较器,主要是在一个周期以内找出3个8bit数的中间数。下面是仿真激励代码

module mid_data_tb;
    reg clk,rst_n;
    
    reg [7:0] a,b,c;
    
    wire [7:0] mid_data;

mid_data i0(
    .clk(clk),
    .rst_n(rst_n),
    
    .a(a),
    .b(b),
    .c(c),
    .mid_data(mid_data)
    );
initial
begin
    clk=0;
    rst_n=0;
        a=0;
        b=0;
        c=0;
    #95
        rst_n=1;     
     #100
        a=1;
        b=15;
        c=21;
     #100
        a=30;
        b=10;
        c=20;
     #100
        a=15;
        b=12;
        c=26;
     #100
        a=13;
        b=13;
        c=20;
     #100
        a=15;
        b=14;
        c=14;
     #100
        a=50;
        b=50;
        c=50;
     #100
        a=15;
        b=12;
        c=26;   
     #200
     $stop;                
end    
always #5 clk=!clk;    
endmodule

代码的设计就到处结束,接下来开始ip封装

二、封装IP核

打开tool选择create and packape new ip,点击next,

         选择第一个继续点击next

         这里需要选择一个文件夹存放你的IP核封装文件,最好是新建一个文件夹,将你的所有自己设计的ip核放在这里,每个ip核单独一个文件,方便以后的工程调用。

         创建完了就点击next,然后是ok,最后是finished,接着就会生成一个专门的ip核封装工程和自定义窗口,

         在这里打绿色勾勾的地方我们不关注,都是一些基础配置,vivado已经自动配置好了,包括ip核它的库,源文件,适用的芯片系列。需要关注的是下面这个Ports and interfaces这个选项里面的两个黄色的警告。顺便说一句vivado这里可以自动识别匹配我们源文件中的端口。

产生的警告也可以在下面的messages提示里看到 ,其实忽略这两个警告也是可以的,但为了追求完美可以通过下面的方法来解决。

 先看第一个警告,[IP_Flow 19-315]bus Interface 'rst n " : Bus parameter POLARITY is ACTIVE_LOW but port ' rst_n is not*resetn - please double check the POLARITY setting

什么意思呢,英语比较差百度翻译直接翻译就是[IP_Flow 19-315]总线接口“rst n”:总线参数极性为ACTIVE_LOW,但端口“rst_n”不是*resetn-请仔细检查极性设置。

再翻译一下就是rst_n这个信号没有检测到用作低电平有效。首先说明我们的源文件设计是没有问题的,但是vivado就是检查出有警告,那么怎么解决呢,有两种方式:

1,更改源文件包括仿真文件中的“rst_n”这个信号的名字为“*resetn”例如全部改成“aresetn”,亲测有效。

2,有的小伙伴有很多的源文件那改起来就很麻烦,需要替换等操作,这里还有一个方法就是点击一下Ports and interfaces这个选项里面的"rst_n"在弹出的窗口中选择parameters,可以看到有个属性是ACTIVE_LOW,对就是这个直接改成ACTIVE_HIGH。警告接解决的,同时这里不会影响源文件的逻辑,后面通过仿真也可以看到是不影响逻辑的。

 接下来就是第二个警告,[IP Flow 19-5661] Bus Interface ' clk' does not have any bus interfaces associated with it 。直接翻译就是:总线接口“clk”没有与之关联的任何总线接口。

解决方式也很简单,添加总线接口,同样点击一下Ports and interfaces这个选项里面的"clk"在parameters当中给clk添加属性,选中ASSOXIATED_BUSIF,接着选中间的右移小箭头move

 然后就可以看到他出现在了右边的Overridden选项当中,最后在数数值当中写上你的时钟接口“clk”,就可以了。点击ok,然后就可以看到警告都消失了,出现了绿色的勾勾。

 最后选中最下面的Review and package选项,点击package IP,点击ok就完成了。

三、IP核调用

 接下来打开你自己的最开始的工程,然后点开IP核搜索界面就可以调用了,无论是在基础的源文件例化还是在bd工程中调用都可以。

 最后就是简单的测试,生成ip核过后,还需要改一下最开始上面测试激励文件的例化,只需要将mid_data改为mid_data_0即可

 然后最后出来的仿真结果没有问题,大功告成!

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vivado是一种流行的FPGA设计工具,它提供了许多IP核来加速开发过程。然而,并不是所有的需求都可以通过Vivado自带的IP核来满足。在这种情况下,设计师可以创建自己的自定义IP核以实现特定的功能或加速系统性能。 创建自定义IP核的方法与使用Xilinx官方IP核的方法类似。首先,你需要使用VivadoIP Integrator界面来创建一个新的IP。在创建过程中,你可以指定IP的输入输出接口、功能和参数等信息。接下来,你需要使用HDL语言(如Verilog或VHDL)编写IP的逻辑代码。这些代码将定义IP的行为和功能。 一旦你完成了IP的逻辑设计,你可以将它综合到FPGA设备中进行验证。你可以使用Vivado的综合和实现工具来生成bitstream文件,并将其加载到FPGA设备中进行测试。 对于其他工程中使用封装好的IP核的情况,你需要将IP核文件添加到IP核库中。这样,在其他工程中就可以直接使用这个封装好的IP核了。 总的来说,Vivado提供了强大的功能来创建自定义IP核,以满足特定的设计需求。通过设计自定义IP核开发者可以更好地定制化设计,提高开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vivado自定义IP核](https://blog.csdn.net/mengzaishenqiu/article/details/130048317)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值