芯路恒电子技术论坛

 找回密码
 立即注册

扫一扫,访问微社区

热搜: 活动
查看: 204|回复: 8

求助:AC501-SoC DSO工程中,触发检测原理是什么?

[复制链接]
  • TA的每日心情
    开心
    2018-11-10 09:01
  • 1

    主题

    6

    帖子

    22

    积分

    新手上路

    Rank: 2

    积分
    22
    发表于 2018-11-9 11:14:19 | 显示全部楼层 |阅读模式
    AC501-SoC  DSO工程中,FPGA程序中有触发检测的功能。代码如下:

    //-------AC501_DSO.v部分代码:------------------

    //寄存一拍数据,方便用来检测触发
    always@(posedge CLOCK_50)
    begin
      ADCA_IN_US_r <= ADCA_IN_US;
      ADCB_IN_US_r <= ADCB_IN_US;
    end

    //触发检测
    always@(posedge CLOCK_50)
    if(trig_set[31])begin
      if((ADCA_IN_US_r <= trig_set[27:16]) && (ADCA_IN_US >= trig_set[27:16]))
       get_trig <= 1;
      else
       get_trig <= 0;
    end
    else if(trig_set[15])begin
      if((ADCB_IN_US_r <= trig_set[11:0]) && (ADCB_IN_US >= trig_set[11:0]))
       get_trig <= 1;
      else
       get_trig <= 0;
    end
    else
      get_trig <= 0;

    //-------DSO/main.c部分代码----------------------------
    HPS侧传入的参数代码为:
    *pio_trig_addr = 2047 | 0x8000;  //设置 wire [31:0]trig_set;  触发参数设置

    请教:
    1.上面的代码是如何实现触发检测功能的?
    2.  *pio_trig_addr的计算结果是什么?   FPGA中使用了该结果的高16位和低16位,该结果的高16位与低16位都是什么?


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-10-24 21:56
  • 93

    主题

    201

    帖子

    8647

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    8647
    发表于 2018-11-9 12:36:06 | 显示全部楼层
    ADC总共两个通道,可以设置两个通道中的任意一个通道的采样值作为触发,所以32位的pio_trig应该当成2个16位值来看,高16位指定通道A的触发、低16位指定通道B的触发,具体哪个通道使能触发,由这两个16位的数据的最高位决定,1就使能该通道触发,0就不使能触发,所以*pio_trig_addr = 2047 | 0x8000;  //设置 wire [31:0]trig_set;  触发参数设置相当于指定通道A触发,触发值为采样值2047.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-11-10 09:01
  • 1

    主题

    6

    帖子

    22

    积分

    新手上路

    Rank: 2

    积分
    22
     楼主| 发表于 2018-11-9 13:03:40 | 显示全部楼层
    admin 发表于 2018-11-9 12:36
    ADC总共两个通道,可以设置两个通道中的任意一个通道的采样值作为触发,所以32位的pio_trig应该当成2个16位 ...

    谢谢回答!

    但还是没懂。
    请问:*pio_trig_addr = 2047 | 0x8000; 这是c语言吧,该语句计算完的结果是什么? “2047”和"0x8000"是“按位或”吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-11-10 09:01
  • 1

    主题

    6

    帖子

    22

    积分

    新手上路

    Rank: 2

    积分
    22
     楼主| 发表于 2018-11-9 13:35:02 | 显示全部楼层
    继续提问:
    上面的问题,从FPGA代码能够看出是高6位控制A通道触发检测,低16位是控制B通道触发检测的。但是从HPS侧传递过来的参数只看见下面的一条语句,那么“*pio_trig_addr = 2047 | 0x8000”的结果中,trig_set[31]和trig_set[15]都是“1”吗?
    请对“*pio_trig_addr = 2047 | 0x8000”语句详解
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-10-24 21:56
  • 93

    主题

    201

    帖子

    8647

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    8647
    发表于 2018-11-9 13:42:20 | 显示全部楼层
    wx_uohQ5rFC 发表于 2018-11-9 13:35
    继续提问:
    上面的问题,从FPGA代码能够看出是高6位控制A通道触发检测,低16位是控制B通道触发检测的。但 ...

    C语言不懂?基本的或操作运算而已,31位是0.应该是我上述回复有问题。程序指定B通道触发。这样就对了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-11-10 09:01
  • 1

    主题

    6

    帖子

    22

    积分

    新手上路

    Rank: 2

    积分
    22
     楼主| 发表于 2018-11-10 08:47:42 | 显示全部楼层
    谢谢老师!


    主要是看DSO例程,屏幕一直同时画A通道和B通道的曲线。
    开始我也认为就是普通的按位或运算,可是得到的结果却是A通道不能触发检测,既然A通道没有数据了,那么A通道的屏幕曲线又从哪里得来的呢。所以才怀疑“*pio_trig_addr = 2047 | 0x8000”语句是不是有特殊用法。


    那么,既然“*pio_trig_addr = 2047 | 0x8000”仅是指定B通道触发。
    请教:A通道如何触发的?
    在DSO工程的main.c中,我只找到了int sample_init(void)采样初始化中设置了B通道触发参数。未找到A通道的触发 参数设置。并且在主函数的        while(1)循环里面,每次设置*pio_en_addr = 1;就可以进行新的数据采集了。所以对A通道的触发很困惑。
    请老师继续指教,谢谢!



    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-11-10 09:01
  • 1

    主题

    6

    帖子

    22

    积分

    新手上路

    Rank: 2

    积分
    22
     楼主| 发表于 2018-11-10 08:59:18 | 显示全部楼层
    DSO数字示波器例程里,老师使用了“pio_trig_set”IP核来传递触发检测的参数到FPGA,所以我就一直在DSO的main.c里面查找A通道是如何设置触发检测的,可琢磨了很长时间,也没看懂。学生愚笨,请老师继续指教。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-10-24 21:56
  • 93

    主题

    201

    帖子

    8647

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    8647
    发表于 2018-11-10 10:28:49 | 显示全部楼层

    触发与采样是两个不同的概念,一旦一个通道触发了采样过程,两个通道即开始都采样,触发只是设置一个合理的开始采样的时间,设置触发通道是为了根据某个通道的特定电压值开始采样过程,并不是你理解的,要采样必须两个通道全部使能触发。商业的示波器不都是这样的么
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-11-10 09:01
  • 1

    主题

    6

    帖子

    22

    积分

    新手上路

    Rank: 2

    积分
    22
     楼主| 发表于 2018-11-10 13:56:48 | 显示全部楼层
    谢谢老师回答。这回知道了。

    以前是一直使用商业示波器,但是对内部的触发原理还真的不知道。谢谢老师!
    回复 支持 反对

    使用道具 举报

    *滑动验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|手机版|Archiver|芯路恒电子技术论坛  

    GMT+8, 2018-12-19 11:44 , Processed in 0.106516 second(s), 11 queries , File On.

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表