how to implement Simplest down counter

I recently started to try my hands at matlab and simulink , was implementing a counter in simulink , and implemented a simple up counter which counts upto 50
now i want to implement the simplest down counter , but i found my logic for implementing down counter in simulink is quite big , can anyone suggest a simpler logic for down counter with the explanation .

5 个评论

Please check, whether this satisfies your requirement.
thanks britto... i feel that the second input is for the initialization part , can you please tell how we can get that inputs for the delay block
right click on the block and select "block parameters" (or double-click on the block)
Next to the initial condition box there is a drop-down which defaults to "dialog". Change this to "input port" (note that you have the same option on the "delay length")
After you close the block parameters window, If you can't see the port labels, (as in britto's example) increase the size of the block and they will appear.
Thanks Jim for the help..
Design Down counter from the value of 50 to 5 after counter have to maintain the value of 5

请先登录,再进行评论。

 采纳的回答

Jim Riggs
Jim Riggs 2018-7-15
编辑:Jim Riggs 2018-7-15
Your logic seems to suggest that you want something more than just a decrement counter. A simple decrement counter would work exactly the same as an increment counter:
This logic will count down by one. To set a starting value, set the initial condition in the memory block to the desired starting value + 1. So, to start the counter from 20, set the memory initial condition to 21, and the first output from this network is 21-1 = 20.
If you want the counter to stop and hold a value, zero for example, simply add a saturation block:
Set the upper limit in the saturation block to a very large value, and set the lower limit to the desired floor value (0 maybe). This will count down from the initial value in the memory block and hold the lower limit value from the saturation block.

3 个评论

Note that the initial condition in the memory block does not need to be a numeric value. You can set the initial condition to
CounterStartValue + 1
Then, define CounterStartValue in the Matlab workspace before you run the Simulink model.
You can likewise set the saturation limits with variables that you can define in the Matlab workspace.
Thanks for the explanation Jim.. i was not aware of the initial conditions in the memory blocks , i was using the delay block to introduce the delay to get rid of Algebraic Loop . Is is possible to add initial condition in the delay block..?? What other elements in Matlab can be used to work as Memory blocks you specified in your example .
There are a number of delay function blocks in Simulink, including the one in your sample above. All of these have initial conditions which can be set. Just right-click on the block and select "block parameters".
(also, if you find my answer helpful, please "accept" my answer)

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Additional Math and Discrete 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by