FPGA Filter Project [closed] - filter

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
Do you guys have any good ideas on FPGA projects involving a filter? I want to do something interesting... not sure what. Thanks ahead of time.

Aloha!
As an alternative you could look at implementing some audio filter effects. The I/O requirements are easier than video. This means that you can focus on the effects themeselves and also create a stand alone (board) demo for your peers and teachers to try out.
As an example, look at the Cubase64 by Pex Tufvesson. A really sweet example of constrained implementations of audio effects algorithms. There is a good paper as well as a source code available:
http://www.livet.se/mahoney/c64-files/Cubase64_White_Paper_by_Pex_Mahoney_Tufvesson.pdf
Your task would be to implement one or more of these in HW instead of in SW. How about implementing a few and have switches toggle them on and off for user controlled effects?
You would get a pipeline with ADC interace followed by one or more effect blocks, each of which would have a bypass/enable controlled by an external switch. The pipeline would end with the DAC interface.
A simple design with littre overhead control which would clearly (audible) demo the implemented effects.
Hmmm, I think I should do this myself. ;-)
If you want to here Cubase64 there is a movie on YouTube:
http://www.youtube.com/watch?v=PTGkf21UpJ8

Here's an idea - implement a fast image histogram routine in FPGA. It could just take 8 bit input data and update a 256 bin histogram. You'd also need a way of zeroing the histogram at the start and a way to read the contents of the 256 bins afterwards. This is a potentially useful application as histogramming is a very common operation in image processing and it is inherently bottlenecked on general purpose CPUs due to serial dependencies. It can also not easily be vectorized with SIMD. A fast FPGA implementation would therefore offer real advantages over a software implementation.

I always find image processing projects are great - you can see results on a screen, not just pretty graphs, but actual processed imagery. Get an FPGA board with a camera input and VGA output. Try implementing a Sobel filter first, graduate to a corner detector like Harris or Shi Tomasi after that.

Related

Which FPGA should I choose? (or should I choose another hardware) [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
You see guys, I've always been interesting in buying one of this development boards, but they were too expensive to me as a student since I had to spent in other proyects, however, I sold some things i don't use and finally made the money to buy one.
So my problem is, I am currently studying electronic engineering, but I've been dedicating a lot of time to programing, reverse engineering stuff and undesrtanding some a little bit complex math cryptographic algorithms (mainly the ones used for hashing) and prime number testing, NP-hard kind of algorithms and some graph path search algorithms, so i wanted to buy an FPGA that was anywhere under $200 that could do the job if i wanted to compute this kind of tasks with him, right now i use my computer for some.
Lets say as example if i wanted to make an architecture for wpa or md5 brute-forcing, we all know that the numbers go nuts if the password is longer than 8, and eventhough im more interested on understanding deeply how the protocols work and how to implement this ideas, it just would be nice to see it working.
Right now the options I've looked at so far are:
-Cyclone V GX Starter Kit ($179)
which has: Cyclone V GX 5CGXFC5C6F27C7N Device
https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=830
-DE10-Nano Kit ($130)
which has : Cyclone V 5CSEBA6U2317N Device
https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=1046
But since im kind of new to FPGA, I mean I've worked with them but used for university projects, with their FPGA's, so i didn't get to know them a lot.
So my final question is, does the FPGA speed depends only on the amount of logif elemnts it has? or, should i care more about that than the other "add-ons" the boards have? because eventhough the second one is cheaper it has lie 30% more Logic elements than the first on, but I don't know if that would mean i would have better performance.
Also, here's the datasheet fot the cyclone V devices:
https://www.altera.com/en_US/pdfs/literature/hb/cyclone-v/cv_51001.pdf
Also thank you for your time on reading this guys, I know it's usually more interesting to solve programming issues and that kind of stuff haha
EDIT: Forgot the "1" on the "$179"
The boards you've listed has similar speed grade, so won't be any different in raw speed.
GX series include 3Gbps transceivers, and that exact Starter kit has 2.5v levels on HSMC connector. Unless you will be using that connector with some really fast hardware (like 80Msps ADC/DAC, etc), it's unlikely you will benefit from GX. If only due to a bit larger number of hw multipliers available, but that depends on your exact project and needs.
Lots of gpio lines will be lost to hsmc connector. There's boards to fan out hsmc connector into convenient 40-pin gpio connectors, but that will cost another $56. And still you might have difficulties with external hw you will be playing with, since i/o banks on those lines will be using 2.5v levels, while most likely you will have lots of 3.3v devices. It's compatible to a degree and under some conditions, but it's safer to assume there will be issues.
If you will be playing with DIY stuff eventually, then you will need more i/o lines at more convenient voltage of 3.3v. DE10-nano kit looks more promising to me in general case. There's two arm cores that you can use to run higher level logic in linux. It has arduino-compatible connectors, so you can play with existing shields. It's also larger than Starter kit in terms of ALM and on-chip memory, you will need those to instantiate lots of parallel blocks to crunch your numbers.
Sure, if you already have some daughter boards in hsmc format, or planning to have one - you will need some kit with hsmc support.

RxJs good tutorials [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I am trying to learn ReactiveX. I have spent almost a whole day and I am not able to understand it properly. I tried to look the official documentation but is is very difficult to understand. Something like this:
"Rx.Observable.prototype.flatMapLatest(selector, [thisArg])
Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence."
How a new person is able to understand it. So if someone knows the good resource then please mention
As a commenter has said, Brian Troncone's page is a good place: https://www.learnrxjs.io/.
The reality is that learning Rx is not a snap. The hard part isn't learning the library, the operators, etc. Rx requires at least a little bit of investment in thinking differently, at least for most people (myself included).
The best way to start understanding it is to play with it. For RxJS, the interactive examples in rx-book are a great place to start. They use jsbin, so you can run the sample code to see the output, then tweak the code to see what difference it makes.
From a .Net angle, playing with Linqpad is the best way to start getting a feel for how Rx works.
Ultimately you'll need to combine different aspects of learning:
Some theory reading
Some practical examples (which is where rx-book is useful)
Some practical application to a demo or real system of your own
I have a list of helpful resources that I've compiled here. But there is so much being put out there, especially on rxjs, that it's hard to keep up.
What's not common is true examples of real world usage of Rx. Partly this is because Rx is typically applied to larger scale problems, so it's not easy to just fabricate a good use case to make a demo from.
ReactiveTrader is one example of a large scale demonstration of applying Rx. It's a good example of an app making heavy use of Rx to build a complex web app that deals with streaming data and UI events.
I've also given a talk on how to apply Rx to tweet streams to analyze the data. This is oriented around real-time manipulation, aggregation and filtering of streaming data. There's a full video of the talk, plus articles discussing the approach and results here.
Ultimately it will take you time to learn Rx, but it will be worth the effort if you follow through.
The best way to learn RxJs to play with it by going through the api reference.
Besides that you can go through the following resources:
Video courses on Egghead.io
Awesome explanation: The introduction to Reactive Programming
you've been missing
Hot vs Cold Observables ( Also All Ben Lesh Articles on Medium)
Tutorials on youtube like : Adding Even More Fun to Functional
Programming With RXJS - Ryan Anklam
Explanatory tutorial with example on
https://auth0.com/blog/understanding-reactive-programming-and-rxjs/

Anybody know of a good logic layout application? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 13 years ago.
Improve this question
I don't know exactly what to call this kind of application, but I'm looking for a good program that'll allow me to layout and test logical circuits. Something that has ands, ors, xors, nots, transistors, and all the basic logical components. Something kind of like UML except with basic electrical components. Something that could generate something like this:
(source: theseusresearch.com)
I like TinyCAD. It does SPICE simulation as well as schematic capture.
If I recall correctly, SPICE was an application that could do this sort of thing.
Perhaps Open Circuit Design.
I'm not an expert - I was a mechanical engineer, not electrical.
I'd like to mention a "fun" one that I've contributed source code to: Multimedia Logic http://www.softronix.com/logic.html
It has a lot of features and is good for educational purposes. It should easily handle circuits of the kind in your example. See http://www.dst-corp.com/james/virtualdigitalprojects/Main.asp for advanced examples.
Let me say, however, for serious non-educational work, you need something more professional.
If we're talking about the digital rather than the electron realm then you could go for Mentor Graphics or Cadence, but they cost £20000000000000000000000000000000000 each.
FYI: The term you're after is a http://en.wikipedia.org/wiki/Schematic_editor . Now you know the term, knock yourself out googling for freeware ones. I've used one or two, but they were always terribly buggy compared to Cadence/Mentor (which themselves are terribly buggy, but in really expensive ways)
Unless you're talking about a tool that makes the metal mask layout? The only one of those I've ever seen is in Cadence iteslf. I doubt there's a freeware layout tool. If you find one, let us know :)
If you don't know what you mean, here are some pictures ot help.
A metal layout tool looks like this:
http://www.cs.ucr.edu/cs168/cs168-04win/lab2/lab2_2.jpg
(That's a single invertor by the looks of it)
A schematic design tool looks like this:
http://www.ema-eda.com/images/products.orcad.tech.pcblayout.gif
EDIT: You added your own picture, which clearly shows you mean a schematic editor :)

Meta-composition during music performances [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
A couple of weeks ago, my piano teacher and I were bouncing ideas off of each other concerning meta-composing music software. The idea was this:
There is a system taking midi input from a bunch of instruments, and pushes output to the speakers and lights. The software running on this system analyzes the midi data it's getting, and determines which sounds to use, based on triggers set up by the composer (when I play an F7 chord 3 times within 2 seconds, switch from the harpsichord sound to the piano sound), pedals, or actual real-time analysis of the music. It would control the lights based on the performance and sounds of the instruments in a similar fashion - the musician would only have to vaguely specify what they wanted - and real time analysis of their playing would do the rest. On the fly procedurally generated music could play along with the musician as well. Essentially, the software would play along with the performer, with one guiding the other. I imagine that it would take some practice to get use to such a system, but that it could have quite incredible results.
I'm a big fan of improv jazz. One characteristic of improv that is lacking from other art forms is the temporalness of it. A painting can be appreciated 10 or 1000 years after it has been painted, but music (especially extemporized music) is about the performance as it is the creation. I think that the software that I described would add a great deal to the performance, as with it, as playing the exact same piece would result in a completely different show each time.
So, now for the questions.
Am I crazy?
Does software to do any or all of this exist yet? I've done some research and haven't turned up anything. The key to this system is that it is running during the performance.
Were I to write something like this, would a scripting language such as Python be fast enough to do the computations that I need? Presumably it'd be running on a fairly quick system, and could take advantage of the 2^n core processors Intel keeps releasing.
Can any of you share your experience and advice concerning interfacing with musical instruments and lights and the like?
Have any ideas or suggestions? Cold and harsh criticism?
Thanks for your time in reading this, and for any and all advice!
(And sorry for the joke in the tags, I couldn't resist.)
People have used Max MSP to do this kind of thing with Midi and creating video accompaniment, or just Midi accompaniment. It's a completely domain specific app, that probably was inspired by small talk or something, which barely any real programmer could love, but musician-programmers do.
Despite the text on the site I just linked to, and the fact that 'everyone' uses the commercial version, it wasn't always a commercial product. Ircam eventually released it's own lineage. It's called jMax. PureData, mentioned in another post here is another rewrite of that lineage.
There's also CSound; which wasn't meant to be real-time, but is likely able to be pretty real-time now that you have a decent computer compared to where CSound started.
Some people have also hacked Macromedia Director extensions to allow for doing midi stuff in Lingo... That's very outdated, and hence some of them have moved to more modern Adobe environments.
Look at PureData. It can do extensive midi analysis and folks use it for performance.
Indeed, here's a video that flashes past a puredata screen. It shows someone interacting with a rather complex instrument using PD.
Also, look at CSounds.
I have used PyAudio quite extensively for dealing with raw audio inputs, and found it to be very unpythonic, acting much more like a very thin wrapper over C code. However, if you're dealing with midi, rather then raw waveforms, then your tasks are quite a bit simpler, and python should be quite fast enough, unless you play at 10000 beats per minute :)
Some of the issues: detecting simultaneity, harmonic (formal - i.e., chord structure) analysis.
This is also an 80/20 problem that if you restrict the chord progressions allowed, then it becomes quite a bit simpler. After all, what does "playing along" mean, anyway, right?
(Also, at electronic music conf's I've been too, there are lots of people doing various real-time accompaniment experiments based on input sound and movement). Good luck!
You might also look at ChucK and SuperCollider, the two most popular 'real' realtime music programming languages.
Also, you might be surprised at how much you can accomplish with Ableton Live racks.
(and it's CSound. No 's' at the end)
see also:
Keykit
Arx
I have no idea if the second one is actually real or worth looking at. Keykit, however, is.
You might contact Gary Lee Nelson in the TIMARA department at Oberlin. 20 years ago I did a project that auto-generated the rhythm section for 12 bar blues and I recall him describing a tool that he knew of that did essentially what you're describing.
You might be interested in GenJam
The answer to your question is no - you're not crazy.
Similar systems exist, but your description is pretty
vague to begin with so it's not much of a spec to judge against.
I suggest you start writing a prototype and see how it does.
Something extremely small and simple.
Existing systems be damned.
I'm using c++ on win32 api (no mfc).
Started writing my sequencer back on the Amiga500.
It doesn't do lights, but there's plenty to do in just music.
Good luck to you.
It's an EXTREMELY fun project.
I'd say -don't- pattern your project on how other projects work.
Because, if you ask me, they don't work so great ;)
And the fun is being able to do something different.

ACM - Audio Compression Manager [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
Can anyone explain how to use the Windows Audio Compression Manager (using VC++)? thanks
And what areas do i need to study first before I start..
In addition to what Stu has said, you need to learn about the format of the WAVEFORMATEX structure for whatever compression types you want to work with. If you have WAV files, they will already contain a WAVEFORMATEX structure you can use directly, but if you want to use ACM to decompress say MP3 files, you will need to construct the WAVEFORMATEX yourself, which is often non-trivial (google is your friend).
Secondly, use of ACM is easier with constant bit rate compression as you know how much will come out given how much goes in, and you can convert entire blocks. With VBR you may need to deal with "leftovers" in source buffer.
Third, you need to realise that often conversions cannot be performed in a single step. All compressed formats will offer a decompression to PCM, but then you might need to perform a secondary conversion to get to the sample rate or bit rate you desire.
Your first point of call should be the relevant entries in MSDN, which explain ACM usage in great detail and provides sample code and tutorials.
It's actually a very easy API to use - you simply create a compression stream, specifying your required input and output formats, and then create source and destination buffers. You write your source data into your source buffers and give them to the ACM to process. The ACM will then return processed output buffers to a callback function that you provide.
MSDN has actually two branches explained (entry level)
First it explains how to write your own acm-driver (it explains how to write a program acting as codec);
Second it shows how to use the acm-drivers on your system.

Resources