[X]关闭

pcie信号抓取

文档创建者:顾攀
浏览次数:6661
最后更新:2019-08-20
我想问一个问题,在CH06_DAQ7606课程中,assign pkg_rdy=wr_data_count[11];这个语句,我现在想抓一下pkg_rdy信号,可是抓到的pkg_rdy信号一直为1,没有出现从0到1的上升沿,我就是有个疑问,当fifo写数据的时候,wr_data_count[11]计数没有为1的时候,pkg_rdy也不为1,当wr_data_count[11]为1的时候,pkg_rdy也为1,就会出现一个上升沿,然后读fifo的时候,当读走一些数据的时候wr_data_count[11]不为1,pkg_rdy也不为1,不就出现下降沿。在我抓pkg_rdy信号的时候,没有出现上升沿和下降沿,pkg_rdy一直为1.

发表评论已发布 1

uisrc

发表于 2019-8-20 20:21:56 | 显示全部楼层

1、先看下BD设计文件如下图,本设计的技巧就是AXI4-Slave协议的应用,可以看到箭头所指的3个信号。 3.png
2、当上位机发起的取命令后,实际上数据并不会里面传输到上位机软件的,必须等到,pkg_rdy为1数据才会通过AXI4-Slave总线搬运到上位机软件。那么 assign pkg_rdy = wr_data_count[11];说明pkg_rdy 和FIFO计数器的wr_data_count[11]是有关系的,这里写通道是64bit存放了4个ADC的数据,你可以计算下,当2^11=次方2048,代表最大的采样深度是2K.

3、ad7606_ctrl 就是AD7606采样代码负责采样并把数据写入FIFO,下面再贴出接口代码方便以上解释

  ad7606_ctrl ad7606_ctrl_inst
    (
        .clk_i                                 (Clk50m),
        .reset_i             (!Rstn),
        .ad_data             (ad_data),
        .ad_busy             (ad_busy),
        .first_data          (first_data),   
        .ad_os               (ad_os),
        .ad_cs               (ad_cs),
        .ad_rd               (ad_rd),
        .ad_reset            (ad_reset),
        .ad_convsta          (ad_convsta),
        .ad_convstb          (ad_convstb),
        .ad_range            (ad_range),
        .ad_ch1_o            (ad_ch1),
        .ad_ch2_o            (ad_ch2),
        .ad_ch3_o            (ad_ch3),
        .ad_ch4_o            (ad_ch4),
        .ad_ch5_o            (),
        .ad_ch6_o            (),
        .ad_ch7_o            (),
        .ad_ch8_o            (),
        .ad_data_valid_o     (ad_data_valid)
        );  


assign pkg_rdy = wr_data_count[11];

fifo_generator_0 fifo_daq7606 (
        .wr_clk(Clk50m),                     // input wire wr_clk
        .wr_rst(!Rstn),                      // input wire wr_rst
        .rd_clk(axi_aclk),                   // input wire rd_clk
        .rd_rst(!Rstn),                      // input wire rd_rst
        .din({ad_ch4,ad_ch3,ad_ch1,ad_ch1}), // input wire [63 : 0] din
        .wr_en(ad_data_valid),               // input wire wr_en
        .rd_en(pkg_rd_en),                  // input wire rd_en
        .dout(pkg_data),                    // output wire [63 : 0] dout
        .wr_data_count(wr_data_count)   // output wire [11 : 0] wr_data_count
     );

越努力越幸运!加油!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则