Digital Filter Block (DFB) - Mini development environment

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
PaPh_3333911
Level 2
Level 2
First like received

For anyone thinking about writing DSP programs in the Digital Filter Block (DFB), I built an enhanced mini development environment that is available at no cost at the Github link below.

I was new to the DFB block (and DSP in general) and creating this tool helped me learn it much faster. It also significantly accelerates my DFB programming and testing. The mini-IDE produces a diagram of the device state for each instruction cycle indicating the areas of the DFB, the q.23 values in each, and the pipeline delays. Active (used) datapath is bold blue, active (unused) datapath is thin weight blue, and inactive datapath is gray:

Mini-IDE Example Diagram.png

Other features:

  • Entire environment is saved in a single project file
  • Global (In1, In2, Sem0, Sem1, Sem2) values can be pre-scheduled to be fed tot he simulator at specific cycles
  • You can 'Scrub' back and forth through the instructions from one cycle to the next and see the diagram changes
  • Enhanced ACU and Data Ram visualization showing hex, DFB q.23, and signed integer values at each cycle, and ability to add symbolic names to display
  • Value converter between hex, DFB q.23, and signed integer
  • Jump diagram
  • Jump condition overview
  • Output values listed by cycle number

userc_39164​ - I understand you moved on from Cypress, but wanted to thank you for your postings and earnest efforts to find a better way to communicate or visualize the pipelining delays. I hope the diagrams generated by this tool come close to your goals there.

maluc_1580471​​ - your blog postings about the DFB were a help in understanding the DFB - thanks!

The C# source code for this tool is available on github for anyone who wants it:

GitHub - paphillips/DFB: A mini development environment for developing and troubleshooting the Cypre...

Regards,

Paul

[I edited this post on 2019-11-07 to remove the link to dfbdev.com, which I stopped maintaining. The Github repo is still up.]

10 Replies
odissey1
Level 9
Level 9
First comment on KBA 1000 replies posted 750 replies posted

Paul,

Thank you for the great job you've done! Always wanted to employ the DFB, but learning barrier kept me away. Now I have no excuses.

odissey1

0 Likes
cadi_1014291
Level 6
Level 6
25 likes received 10 likes received 10 likes given

Hi Paul,

Thanks for the tool you had developed, i would also like to thank Magnus as he helped me a lot here on the forum and his blog. Are you planing to post some use cases or examples using the DFB mini IDE?

Regards,

Carlos

0 Likes
Anonymous
Not applicable

The DFB mini-IDE is not complex to use - put the assembler code in the code window, enter the number of cycles to run, hit start (F5) and step through the code using page up / down buttons. The diagram and other information panes are updated for each cycle.

There is a basic help guide here: https://github.com/paphillips/DFB/raw/master/DFBUtility/Documentation/DFB%20Utility%20Help.pdf 

If you are looking for example DFB assembler code I have a few samples posted here: PSoC DFB Topics and Tools | DFB Topics

I'm interested in example requests from the community - let me know of any general DSP filter kernels or other examples you would like to see. if they look like they would be informative to others I can take a crack at them if time permits.

Paul

Hi Paul,

I shared your work with some friends, the response was great, most of us didn't worked with the DFB because the entry barrier was high, your IDE breaks that barrier .

Are you also accepting examples from the community? Maybe you can post the original code and then another approaches to achieve the same.

Also it would be interesting to throw some DFB code challenges, compare algos from the users, etc. i'm thinking out loud.

Regards,

Carlos

0 Likes
Anonymous
Not applicable

Yes, I can accept examples from the community to add to the website and will credit the author. Since the site is for educational purposes additional detailed comments will be added to each line of the assembler code explaining what is going on, like the other examples. I probably wouldn't have time to change the assembler to show alternate approaches. In order to be helpful, examples should be general purpose, such as standard DSP filter kernels or computations. For example, FIR or IIR implementations would be good.

To submit an example for consideration please private message me on this site. You must be the original author, have full rights to share the code, and intend it to be made public as open source under the MIT license. Sharing someone else's proprietary code would bring a lot of legal liability to the submitter and is not allowed under any circumstances.

As for code challenges that sounds like a good idea for Cypress to run with - my only goal was to reduce the learning curve of the DFB. A number of folks have expressed a desire to use it in their designs but shied away due to the up front commitment/complexity.

0 Likes

Note that the www.dfbdev.com site is no longer being maintained. The Github repo is still up and contains information about the tool and how it works.

0 Likes
cadi_1014291
Level 6
Level 6
25 likes received 10 likes received 10 likes given

I agree about the code challenges should be handled by Cypress. I will play with the DFB mini IDE this weekend and post if i had any difficulties.

Thanks again for the tool

Carlos

0 Likes
Len_CONSULTRON
Level 9
Level 9
Beta tester 500 solutions authored 1000 replies posted

Paul,

Thank you!  Superior!

I have yet to learn the DSP capabilities of the PSoC.  Your tool will help.

Len

Len
"Engineering is an Art. The Art of Compromise."
0 Likes

Could someone please share example projects, sample code, anything ? At the moment the DFB Utility program comes with nothing and it may be broken since the diagram area is completely empty. 

0 Likes
npnz852
Level 1
Level 1
5 sign-ins First reply posted Welcome!

Looked great so I tried it. Unfortunately it throws an exception, possibly due to Graphviz. The code executes but without the Graphviz visualisation. Tried to recompile from the source but I think the repo is not complete - CyDesigner is missing. I am not familiar with VisualStudio so perhaps its me.

The tool looks like a great timesaver and I would like to use it. 

0 Likes