我们的第一个触发因素很简单 - 我们检测到上升沿越过固定阈值。 由于我们使用的是 8 位 ADC,因此采集范围从 0x00 到 0xFF。
因此,让我们暂时将阈值设置为0x80。
检测上升沿
如果样本高于阈值,但前一个样本低于阈值,则触发!
reg Threshold1, Threshold2; always @(posedge clk_flash) Threshold1 <= (data_flash_reg>=8'h80); always @(posedge clk_flash) Threshold2 <= Threshold1; assign Trigger = Threshold1 & ~Threshold2; // if positive edge, trigger! |
中间显示触发器
的一大特点是能够看到触发前发生的事情。
这是如何工作的?
示波器不断采集。 示波器内存一遍又一遍地被覆盖 - 当我们到达终点时,我们从头开始。 但是,如果发生触发,示波器会继续获取其内存深度的一半,然后停止。 因此,它保留了一半的记忆,以及触发后发生的事情。
我们在这里使用 50% 或“中间显示触发器”(其他流行的设置本来是 25% 和 75% 设置,但这很容易在以后添加)。
实施很容易。 首先,我们必须跟踪存储了多少字节。
reg [8:0] samplecount; |
内存深度为 512 字节,我们首先确保获取至少 256 字节,然后停止计数,但在等待触发时继续获取。 一旦触发器到来,我们再次开始计数以再获取 256 个字节,然后停止。
reg PreTriggerPointReached; always @(posedge clk_flash) PreTriggerPointReached <= (samplecount==256); |
决策逻辑处理所有这些步骤:
always @(posedge clk_flash) if(~Acquiring) begin Acquiring <= startAcquisition2; // start acquiring? PreOrPostAcquiring <= startAcquisition2; end else if(&samplecount) // got 511 bytes? stop acquiring begin Acquiring <= 0; AcquiringAndTriggered <= 0; PreOrPostAcquiring <= 0; end else if(PreTriggerPointReached) // 256 bytes acquired already? begin PreOrPostAcquiring <= 0; end else if(~PreOrPostAcquiring) begin AcquiringAndTriggered <= Trigger; // Trigger? 256 more bytes and we're set PreOrPostAcquiring <= Trigger; if(Trigger) wraddress_triggerpoint <= wraddress; // keep track of where the trigger happened end always @(posedge clk_flash) if(Acquiring) wraddress <= wraddress + 1; always @(posedge clk_flash) if(PreOrPostAcquiring) samplecount <= samplecount + 1; reg Acquiring1; always @(posedge clk) Acquiring1 <= AcquiringAndTriggered; reg Acquiring2; always @(posedge clk) Acquiring2 <= Acquiring1; assign AcquisitionStarted = Acquiring2; |
请注意,我们注意记住触发发生的位置。 这用于确定要发送到 PC 的 RAM 中示例窗口的开始。
reg [8:0] rdaddress, SendCount; reg Sending; wire TxD_busy; always @(posedge clk) if(~Sending) begin Sending <= AcquisitionStarted; if(AcquisitionStarted) rdaddress <= (wraddress_triggerpoint ^ 9'h100); end else if(~TxD_busy) begin rdaddress <= rdaddress + 1; SendCount <= SendCount + 1; if(&SendCount) Sending <= 0; end |
通过这种设计,我们终于得到了一个有用的示波器。我们现在只需要自定义它。
文章来源于:电子产品世界 原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关文章
使用示波器如何测量装置防孤岛运行的断电时间(2023-05-10)
知道何时会断电),示波器就可以采用单次触发的方式来捕捉到波形。
我们将示波器的触发模式设置为自动,触发方式设置为边沿下降触发,将触发电平移动至直流电压之下,零电平之上。然后按一下单次触发。
当断......
知识详解!示波器的触发功能,鼎阳科技SDS2000X HD系列(一)(2023-08-02)
,即使再有满足条件的信号,示波器也不予理会。需要进行再次捕获须重新进行单次设置。单次模式适用于:捕获偶然出现的单次事件或非周期性信号,如上、下电波形;较为罕见的触发事件。
强制(Force):无论输入的信号是否满足触发......
使用普源示波器的常见题破解-波形(2023-02-02)
,波形重叠。通过调整触发释抑为周期稍小值可以改善。
示波器的触发释抑的作用是:根据用户设定的释抑时间,进行延时触发。主要针对一个周期内有多个符合触发条件的信号,设置触发释抑时间后,第一个满足条件的点不会被触发......
示波器触发源、耦合与存储之间存在着怎样的联系(2023-04-23)
四个单元输出端总在一段时间出现一个跳变的错误信号,但检查输出单元电路没有发现问题,怀疑是前端某个单元出现问题,检查。
把输出端信号接到示波器2通道,把中间环节一单元存储信号接到示波器1通道,以输出端2通道的跳变信号作为触发条件进行单次触发......
数字示波器 - 历史、功能、屏幕截图(2024-01-12)
器
像所有普通示波器一样,有 3 种触发器:
单次:显示一次跟踪(发生触发时)。与“手臂”按钮配合使用。
正常:每次触发发生时显示跟踪,如果触发器未发生,则不显示任何内容。
自动:触发......
示波器数字触发技术的优点(2022-12-26)
就不得不提到 R&S 示波器的另一个优点:即使在最小的1mV/div垂直刻度下,低噪声前端也可以保证精确触发,且没有带宽限制。 图 3:RTO 触发门限迟滞可以自由设定。最高灵敏度设置为 0。3.最小可检测脉冲宽度触发......
如何选择实时示波器进行抖动测试和分析,有哪些关键因素(2023-05-24)
采集、累计显示的工作方式,对于电路设计和调试而言受到较多的限制,无法进行深层的抖动分析。
图2:典型的时钟信号抖动测试参数。
2) 更为流行的方法是采用数字存储示波器的实时捕获模式,单次触发,连续......
采用实时采样和等效采样相结合实现数字示波器的设计(2023-05-25)
电平调节和存储波形的功能。
6 结束语
该数字示波器增加了垂直灵敏度和水平扫描速度的档位、AUTOSET和光标显示以及对显示波形处理的功能,显示波形无明显失真,幅度测量误差小于2%,频率测量精度优于0.01%,并能进行单次触发......
什么是示波器的触发模式?如何用好并且用活示波器?(2023-03-06)
不扫描。 而不同之处在于,这种扫描一但产生并完成后,示波器的扫描系统即进入一种休止状态,即使后面再有满足触发条件的信号出现也不再进行扫描,也就是触发一次只扫描一次,即单次,必须......
STM32F10x_ ADC三通道DMA连续转换(3通道、软件单次触发)(2023-08-30)
单条通道采集,本文是使用DMA模式单次触发三条通道采集。使用DMA传输的好处就是效率很高,我们直接读取转换的结果就是了,比如想做的示波器实例就是要求效率很高。
实例实验效果:
本文......