在SIMULINK中实现自定义计数器逻辑

时间:2013-07-25 15:47:05

标签: counter simulink

我正在尝试在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行硬件逻辑描述来实现它。

2 个答案:

答案 0 :(得分:0)

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

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

在子系统内,

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

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

答案 1 :(得分:0)

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