我的问题
我想模拟一个名为“确认者”的块。规范是输出将SIMPLY为基于边沿(上升/下降)的输入的延迟版本。为了澄清,我将尝试将时序图放在下面:
___________________________
| |
Input _______| |____________________________
(Tdelay) _____________________
| |
Output ______________| |____________________________
和
____________________________
| |
Input _______________| |____________________________
(Tdelay)
______________________________________
| |
Output _______________| |_____________________
当我试图在上面绘制时,上升沿意味着我的输出将仅在Tdelay之后跟随变化输入。但是当它从1变回0时,没有延迟。这是上升沿触发的确认块的图表。
对于下降沿触发的确认者,情况正好相反。当存在下降沿时,输出将在Tdelay秒之后跟随输入的变化,即保持Tdelay的最后一个输入。
我的目标平台
SIMULINK和MATLAB。
我的初步解决方案
我知道有办法通过使用触发的子系统块来触发某些操作。但我正在努力使用SIMULINK中的延迟/单位延迟模块来实现触发延迟。我已设法使用另一个名为resettable delayer的块,但它在上升沿复位时无法正常工作;它只是根据边缘重置。
之前有没有人尝试过这种问题?
自@ PhilGoddard回答后更新
我认为这应该有效,因为我已设法重现问题中的时序图。
我是如何设计的:
1)使用重复序列楼梯作为我的输入。
2)配置单位延迟程序段,以便在上升沿或下降沿启用复位。这将允许以下任何一个“
i)输入(下降沿)=输出(下降沿)[上升沿被Tdelay延迟 ii)输入(上升沿)=输出(上升沿)[前沿延迟由Tdelay延迟]
除非我丢失弹珠,否则我认为这个解决方案没问题?
答案 0 :(得分:2)
使用启用和触发的子系统。
从Ports和Subsystems库中拖动该块,并仅对其属性进行两处更改:打开子系统,打开outport(称为Out1),并将“禁用时输出”属性更改为“reset”和“初始输出“为0。
然后,将输入提供给启用端口;将输入的延迟版本输入触发端口(默认情况下设置为上升沿);并将一个常量块(值为1)送入信号输入端。 子系统的输出应符合要求。
答案 1 :(得分:0)
这是我提出的问题的案例2的解决方案。输出是两个相反值信号的总和,它在触发信号的每个上升沿或下降沿增加。这很可能是一种过度杀伤力,而且可能有一个更简单的解决方案,但建议的解决方案并不适合我,而且确实如此。
如何创建计数器(归功于How to create a counter in simulink):
答案 2 :(得分:0)
尝试开/关延迟。它完全满足您的需求。
(应该有它的图标,但似乎我不能发布低于10声望的图像)
来自help page的说明:
当Select type参数设置为On delay:
时,On / Off Delay块实现以下逻辑
当输入变为真时,在预设的时间延迟后输出变为真。只要输入为真,输出就为真。
当输入为false或变为false时,输出变为false而没有延迟。
当前一个输入参数的初始条件设置为1,并且输入在t = 0时为真时,输出为真,没有延迟。
当选择类型参数设置为关闭延迟时,开/关延迟块实现以下逻辑:
当输入变为false时,在预设的时间延迟后输出变为false。只要输入为false,输出就为false。
当输入为true或变为true时,输出为true且没有延迟。
当前一个输入参数的初始条件设置为0,并且在t = 0时输入为假时,输出为假,没有延迟。
答案 3 :(得分:0)