zoukankan      html  css  js  c++  java
  • Vivado Logic Analyzer的使用

    chipscope中,通常有两种方法设置需要捕获的信号。
    1.添加cdc文件,然后在网表中寻找并添加信号
    2.添加ICON、ILA和VIO的IP Core

     

    第一种方法,代码的修改量小,适当的保留设计的层级和网线名,图形化界面便于找到 
    需要捕获的信号。

    第二种方法,对代码的改动量大一些,同时需要熟悉相关IP的设置,优点是,可以控制 
    ICON,并调用VIO。 

     

    与之类似,Vivado也有着两种方法进行设置。
    1.在综合后的网表中寻找相关信号,右键点开菜单,然后设置mark debug

     

    2.添加ILA,VIO的IP Core

     

    第一种方法与chipscope的第一种方法极为类似:
    1.都需要综合后才能设置;
    2.都需要保留一定的设计层级或者网线名来便于寻找信号;
    3.并非所有信号都可以被捕获,不能捕获的信号,chipscope中是显示为灰色,vivado 
    中是没有mark debug的选项在右键菜单中; 

     

    第二种方法就更为类似了,vivado可以兼容ISE的IP,所以可以直接调用chipscope的相 
    关IP,调试时也只是用Chipscope,另外可以使用Vivado自己的ILA IP,来进行设计, 
    但最大的问题是Vivado不提供ICON的IP以供选择,进一步埋没了ICON的地位。 

     

    另外,早起的Vivado IP Catalog提供Chipscope的ICON、ILA和VIO IP Core可以选择,目前已经取消了这些IP,只支持Vivado自己的ILA/VIO IP Core。

    这里提供一个非常简单的设计代码,用于Vivado Logic Analyzer的研究。

     

    `timescale 1ns / 1ps
    
    module Nexy_4 (
        input                   I_CLK,
        output      [3:0]       O_ST_COUNTER,
        output                  O_TIMECOUNTER_OUTPUT
        
    );
        wire            CLK_100;
        
        clk_wiz_0 CLK_UNIT
        (
            .clk_in1    (I_CLK),      
            .clk_out1   (CLK_100),   
            .locked     ()
        );  
        
        
        reg     [7:0]   startup_counter = 'b0;
    
        always @ (posedge CLK_100)begin
            if(startup_counter == 8'b11111111)begin
                startup_counter <= 8'b00000011;
            end else begin
                startup_counter <= startup_counter + 8'b1;
            end
        end
        
        assign O_ST_COUNTER = startup_counter[7:4];
        
        wire     [47:0]  TimeCounter_Result_wire        ;
        reg      [47:0]  TimeCounter_Result_reg = 'b0   ;
        reg              TimeCounter_Output ;
        always @ (posedge CLK_100)begin
            TimeCounter_Result_reg <= TimeCounter_Result_wire;
        end
        TimeCounter TimeCounter_Unit (
            .CLK    (   CLK_100                  ),  // input wire CLK
            .A      (   2'b01                    ),      // input wire [1 : 0] A
            .C      (   TimeCounter_Result_reg   ),      // input wire [47 : 0] C
            .P      (   TimeCounter_Result_wire  )       // output wire [47 : 0] P
        );
        always @ ( posedge  CLK_100 )begin
            TimeCounter_Output <= TimeCounter_Result_reg[47];
        end
        assign O_TIMECOUNTER_OUTPUT = TimeCounter_Output ;
    endmodule

    转载:http://blog.chinaaet.com/ad604/p/37239
  • 相关阅读:
    第十章第二节 阿基米德原理
    python-文件读写操作
    pyqt5-控件的显示与隐藏
    pyqt5-控件是否可用
    使用Visual Studio 2015开发Android 程序
    字节序(byte order)和位序(bit order)
    庖丁解牛-----Live555源码彻底解密(根据MediaServer讲解Rtsp的建立过程)
    H264系列(9):H264中的时间戳(DTS和PTS)
    EMIPLIB简介
    minidump-DMP文件的生成和使用
  • 原文地址:https://www.cnblogs.com/chengqi521/p/7977741.html
Copyright © 2011-2022 走看看