using System;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Xml.Serialization;
namespace Aitex.Core.Util
{
///
/// 下降沿信号检测类
///
/// 设计目的:
/// 用于信号下降沿事件检测
///
/// 使用场合:
/// 系统输入数字信号,1->0跳变检测
///
public class F_TRIG
{
///
/// 构造函数
///
public F_TRIG()
{
Q = false;
M = true;
}
///
/// 检测信号输入
///
public bool CLK
{
set
{
if (M != value && !value)
Q = true;
else
Q = false;
M = value;
}
get
{
return M;
}
}
//clear
public bool RST
{
set
{
Q = false;
M = true;
}
}
///
/// 检测结果输出
///
[XmlIgnore]
public bool Q { get; private set; }
///
/// 记录上一次输入信号值
///
[XmlIgnore]
public bool M { get; private set; }
}
///
/// 上升沿信号检测类
///
/// 设计目的:
/// 用于信号上升沿事件检测
///
/// 使用场合:
/// 系统输入数字信号,0->1跳变检测
///
public class R_TRIG
{
///
/// 构造函数
///
public R_TRIG()
{
Q = false;
M = false;
}
///
/// 检测信号输入
///
public bool CLK
{
set
{
if (M != value && value)
Q = true;
else
Q = false;
M = value;
}
get
{
return M;
}
}
public bool RST
{
set
{
Q = false;
M = false;
}
}
///
/// 检测结果输出
///
[XmlIgnore]
public bool Q { get; private set; }
///
/// 记录上一次输入信号值
///
[XmlIgnore]
public bool M { get; private set; }
}
///
/// 边沿信号检测类
///
/// 设计目的:
/// 用于信号上升沿/下降沿事件检测
///
/// 使用场合:
/// 初始值为0
/// 系统输入数字信号,0->1跳变检测 Q 触发
/// 1->0 R
///
public class RD_TRIG
{
///
/// 构造函数
///
public RD_TRIG()
{
R = false;
T = false;
M = false;
}
///
/// 检测信号输入
///
public bool CLK
{
set
{
if (M != value)
{
R = value;
T = !value;
}
else
{
R = false;
T = false;
}
M = value;
}
get
{
return M;
}
}
public bool RST
{
set
{
R = false;
T = false;
M = false;
}
}
///
/// 检测结果输出, 上升沿触发 rising edge
///
[XmlIgnore]
public bool R { get; private set; }
///
/// 检测结果输出, 下降沿触发 trailing edge
///
[XmlIgnore]
public bool T { get; private set; }
///
/// 记录上一次输入信号值
///
[XmlIgnore]
public bool M { get; private set; }
}
}