0

我正在尝试在 SIMULINK 中实现计数器逻辑,其中

in1, in2 are inputs

out1 is the output

if in2 = 0, out1 = 0;

if in2 = 1, out1 = 1 after x high edges of in1

我曾尝试使用“Detect Rise Positive”块,但失败得很惨,因为我没有足够的经验在 SIMULINK 中正确实现时序图。谁能给我指出正确的方向?

更新

自从我发布这个问题以来,我采取的一种方法是“触发和启用子系统”。我正在尝试进行设置,以便:

in2 becomes the enable signal
in1 becomes the trigger
in2 becomes the intput to the subsystem
Out1 becomes the output of the subsystem

但我认为上面的内容很垃圾。不幸的是,它不是 VHDL,我可以使用 4-5 行硬件逻辑描述来实现它。

4

2 回答 2

0

在 simulink 中可以很容易地实现计数器逻辑。取一个开关,给控制输入为int1。如果 int1 为 1,则您的输出应为 0,否则使用另一个开关将其控制输入作为 int2。如果 int2 为 1,则您的输出应为 1+ 反馈 funit 延迟块中给出的先前值

于 2013-08-19T12:24:46.937 回答
0

使用触发和启用子系统是正确的方法,但是您的输入(毫无疑问是子系统内部的内容)需要修改。

子系统没有任何输入(触发和启用信号除外)。

在子系统内部,

  • 设置启用块属性以在禁用时重置状态。
  • 将 outport 属性设置为禁用时重置,并将初始条件设为 0。
  • 用一个常数(值=1)、一个求和和一个单位延迟块创建一个计数器。
  • 将计数器输入到设置为您问题中的“x”值的“比较常量”块中。
  • 将该块喂给出口。

启用后,计数器应在输出变高之前计算所需的步数(触发时)。

于 2013-07-28T15:58:33.680 回答