Hello,
I'm trying to run a layout that has a module with a fixed block size (24) in native mode. My server "Basic block size" is currently set to 16 which results in build errors at the HW pins. I haven't found any documentation on how to change this parameter. I understand there may be limitations in increasing its value, but is there a way to set it to a smaller number such as 8?
Thanks,
4:50am
Hello Sam U,
The basic/fundamental block size listed in the AWE Server is determined by the target hardware. In Audio Weaver Designer, the input pin can only be set to multiples of the basic block size. In Native mode (running on your PC), the basic block size is set to 16, and thus a layout with an end to end block size of 16 would throw an error with a module specifying a fixed block size of 24. For this use-case, you could try using our Buffer modules (BufferUp, BufferDown, Rebuffer).
Hope that helps!
Thanks,
Kevin
6:13am
Hi Kevin,
Thanks for your quick response. I have tried using buffer up/down blocks to get from 16 to 24 and back, and it looks like if our only module input was audio it would work fine, but I ran into issues with a control input to the same module. I also ended up with an error because of a non-integer clock divider when reconverting to frame size 16 at the output because of the requirement to match input and output frame sizes.
I may need to spend more time on it, but so far I have not found a way to solve this. If I can get authorization, I will share the layout and module with you, possibly some time next week.
Thanks,
11:06am
Hi Sam, please feel free to share your .awd so Kevin and myself can better assist you.
12:14pm
In the attached awd, I replaced our custom module with a scaler block with control input. I am getting the same kind of issues. Thanks.
11:01am
Hi Sam,
Thanks for your .awd file. Just wanted to update and let you know I'm still looking into this. I am getting the same error that the clock dividers must be an integer error. Will hopefully have an update soon.
2:34am
Thanks, Kyle, I look forward to your feedback.
3:47pm
Hi Sam,
The problem lies in your design buffering down below the layout block size. While the target's fundamental block size may be 24, your design end to end block size is 48 which cannot be reduced, as the DMA interrupt clock would not reach a full cycle to pump the audio. This is what gives the "clock divider must be an integer" error. You might try setting your design's end to end block size lower on your input and output pins, then buffering up /down from there. Hope this helps.
2:19am
Thanks, Kyle. Were you able to get the layout to run that way?
If I set the I/O frame size to 8 and buffer up/down by a factor of 3 I get an error because frame size has to be at least 16, or an integer multiple.
If I set it to 16, I end up with fractional clock dividers again.
Right now, the only option I see would be to rebuild the module for a frame size of 32 for the purpose of running "native", and it's not a great option.
Regards,
Sam U
12:33pm
Sorry forgot to mention that you'll also need to buffer up the DC source. I've attached an example awd with an end to end block size of 16, buffering up then down by a factor of 3.
This builds for me, but does it give you a fractional clock divider?
1:10am
Hi Kyle,
My apologies, I should have been clearer. Although I shared an example with a scaler block that would accommodate any frame size, the one I am concerned with would only work with 24. In your example that would require an additional two down/up buffers that would result in fractional clock dividers. If you know a trick that would make you example run with block size 24 at the scaler module, that would resolve my problem.
Thanks.
4:25pm
Hi Sam,
What is the fundamental block size of your target? If it is above 24, then I don't think it's possible to use a block size smaller than that, even when re-buffered within the layout. If it's 24, I would change the input pin of the design to 24. My PC's fundamental block size is 16, but I still got the clock divider error when re-buffering to 24 for the scaler, then up x2 to 48 and down /3 to 16 at the output pin.
5:42am
Hi Kyle,
My embedded target will run with frame size 24, so it should be fine without extra buffering. What I was trying to get to was a module test that could be used without hardware. My PC's block size is 16 as well, and I have not been able to run my F24 block natively. If I read you correctly, this could potentially require a separate build/module to support a frame size that is a multiple of 16. Is that your view as well?
Thanks.
10:57pm
Hi Sam,
My initial thought was that this should be possible by rebuffering from 16 to 24, then up to a block size divisible by 16, then buffering down to 16 from there, but hence we get the divider error. I will double check internally just in case there may be some way to get around this.
3:32am
Thanks, please let me know if you find out anything.