ΣSigmaStudio Ask AI Русский Log in

Question: Resources used by Sigma divide-by block

SigmaDSP & SigmaStudio jimwoodElectrojim Sep 21, 2013 00:00 5 replies Original on forum ↗
Subscribe
jimwoodElectrojim Question
Sep 21, 2013 00:00

(Using Sigma 3.8) I have a design that uses six divide-by blocks, all in near-identical applications. When I check the resources used in the Output window, I see that three of them have twice the MIPS, etc. of the other three. I checked the Sigma Wiki and saw that one can ostensibly choose the precision of this block, but when I right-click I don't see the choices mentioned. All three divide-bys were simply pulled from the Tool Tree, and I've tried copying and pasting the more parsimonious ones, but despite where the block comes from, the first three are resource hogs. This project is running near the limit and I'm trying to minimize resources, otherwise it would not be a problem. Anyway, "Youth Wants to Know!"

KJBob Reply
Sep 21, 2013 00:00

Hello Jim,

And, "Old age wants to find out", so I tried to duplicate your result in a project with six divides as shown below. Here I got the same 53 instructions for all of them:

I'm using SigmaStudio 3.9, in case that makes a difference. In any event, I could not find the precision tradeoff described in the wiki, either. ADI needs to work on their documentation, which is a shame because I remember when their data sheets were exquisite -- back when I was young, and analog meant -- well, analog. Hopefully someone from ADI can explain, fix, or help work around the double-resource problem you're experiencing -- they will probably need to see your project file.

Here's an idea you might use if your application can tolerate divisions at only half sample rate:

It multiplexes one divide block between two sets of operands, providing two results. The zero comparator with feedback chases its tail to provide a clock at fs/2. This drives the ABCD logic blocks to share the single divide block between two separate uses. It looks complicated but all the blocks are cheap ones. As shown, this conserves 14 instructions compared with individual divide blocks. It gets better with more divides (they use the same clock), and better still when two divides share an operand (eliminating an input multiplexer).

Best regards,

Bob

b4efdd95a0e413c9a4ca019b66df1370.jpg
b4efdd95a0e413c9a4ca019b66df1370.jpg
b4efdd95a0e413c9a4ca019b66df1370.jpg-528x337.jpg
b4efdd95a0e413c9a4ca019b66df1370.jpg-528x337.jpg
b33965bd661677923e24767ace025e71.jpg
b33965bd661677923e24767ace025e71.jpg
b33965bd661677923e24767ace025e71.jpg-540x288.jpg
b33965bd661677923e24767ace025e71.jpg-540x288.jpg
KJBob Reply
Sep 21, 2013 00:00

Hi once again,

BTW -- the method used by Sigma's division algorithm is explained at

http://en.wikipedia.org/wiki/Division_algorithm#Newton.E2.80.93Raphson_division

Bob

jimwoodElectrojim Reply
Sep 24, 2013 00:00

Robert:

Thanks for your tips. I've posted the question again because it disappeared from the General Discussion section.

That's a clever way to 'multiplex' the divider, I'll keep that in mind for other blocks that don't need sample-rate updates.

jimwoodElectrojim Reply
Sep 25, 2013 00:00

Found it. See similar post, same date.

ADIApproved Reply
Sep 26, 2013 00:00