MATLAB Answers

HDL FIFO and (not so) algebraic loop errors

1 view (last 30 days)
Florian Rössing
Florian Rössing on 29 Sep 2020
Commented: Florian Rössing on 30 Sep 2020
Hi everyone, thanks for checking in on my question.
What I am trying to do is build a sorting network based on mergesort. For every sorting step I use a HDL FIFO Block to store the sorted results. The next sorting node will compare the outputs of wo fifos and togehter with some additional logic decide which value to forward. The corresponding fifo from the layer will be poped according to this decision. Therefor I loop back the pop from one stage to the previous stage.
This lead to an algebraic loop error in his pop signal. I could resolve this by use of an delay, but it will destroy the sorting. I was able to somehow resolve this error for my test setup, but after migrating the concept to my special problem, I could not get it to work again. Do you have any Ideas which settings might be involved in this error, that I might tweak to get it running?
I am sure, that actually there should not be an algeraic loop in the model at all, therefor I have trouble understanding what is going on.
Greetings and thanks in advance
Edit:
Uploaded the software here: https://www.mathworks.com/matlabcentral/fileexchange/80578-sorter-to-sort-4-presorted-datasets

Answers (2)

Kiran Kintali
Kiran Kintali on 29 Sep 2020
Can you share the model with the algberaic loop error? What version of MATLAB and HDL Coder are you currently using? Thanks.
  5 Comments
Kiran Kintali
Kiran Kintali on 29 Sep 2020
Thank you. I need a model that does pass update diagram phase (ctrl-d) without initialization issues. It looks like few initialization of variables missing. it would be great if you can show the algebraic loop error.

Sign in to comment.


Florian Rössing
Florian Rössing on 30 Sep 2020
Good Morning,
have you ran testbench.m, which should also be in the folder minimalexample? It fills the parameters into the workspace in order to be capable of running the simulink file. I didnt know how to create all this in a simulink function block.
  1 Comment
Florian Rössing
Florian Rössing on 30 Sep 2020
OK renaming the INP1_POP and INP2_POP in POP1 and POP2 resolves the issue for reasons i do not understand...

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!