目录
简介
单次触发(FiniteTrig):在该触发方式下,仅在搜索到指定的触发条件时,才进行一次触发和采集,然后停止。该触发方式适用于只需要单次采集特定事件并对采集结果进行分析的情况;
正常触发(NormalTrig):在该触发方式下,仅在搜索到指定的触发条件时,才进行触发和采集。该触发方式适用于低重复率信号;
自动触发(AutoTrig):在该触发方式下,如果未到指定的触发条件,将强制进行触发和采集以显示波形。该触发方式适用于未知信号电平或需要显示直流的场景
实现原理
FiniteTrig 单次触发
抓单次瞬态脉冲
抓上电 / 掉电波形
抓单次异常事件
色选机:单次物料测试
NormalTrig 正常触发
低速率、间歇性信号
随机脉冲
不想看到空波形
没触发就不采集,节省资源
AutoTrig 自动触发
调试未知信号
直流信号(不会触发边沿)
示波器必须一直显示波形
找不到触发时强制刷新
module trig_ctrl
(input wire clk,
input wire rst_n,
input wire trig_cond, // 触发条件满足
input wire 1:0 trig_mode,// 00:Finite 01:Normal 10:Auto
output reg capture_en // 采集使能
);
localparam FINITE = 2'b00;
localparam NORMAL = 2'b01;
localparam AUTO = 2'b10;
reg 1:0 state;
reg 23:0 timeout_cnt; // 自动触发超时计数器
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
state capture_en timeout_cnt
end
else begin
case(state)
0: begin // 等待触发
timeout_cnt
if(trig_cond) begin
// 检测到真实触发
capture_en state
end
else if(trig_mode == AUTO && timeout_cnt > 1000000) begin
// 自动触发:超时强制采集
capture_en state
end
end
1: begin // 正在采集
capture_en
case(trig_mode)
FINITE: state NORMAL: state AUTO: state
endcase
end
2: begin // 单次触发完成,停止
capture_en
end
endcase
end
end
endmodule