Hi everyone. This is my first post on Lemmy. I'm a senior Computer Engineering student. And I'm working on my senior design project with my friends.

  • BACKGROUND INFO

My friends have basically near 0 hardware knowledge but are willing to work. I have more experience with computer architecture and digital electronics but still I never made something as complex as this before.

The project is a comparison between hardware solutions to image processing. We will implement 3 types of hardware to process live (or pre recorded) video and output it to vga. Then compare their efficieny.

First one is a CPU core (will implement in system verilog which I have some experience with thank god). It will support RV32IM instructions and my friend will write an assembly program to control it.

Second one is an extension to the first CPU core.

Third one will be a specialized hardware for this purpose.

We have 2.5 months to complete half of the project and the other parts will be completed in next semester.

  • ACTUAL QUESTION

So my plan is to create the CPU and measure its performance in these months and leave the other parts for next semester.

I'm planning on creating a 5 stage pipelined in order CPU. I also want to use wishbone since it's easier. But I have a problem.

First is the fact that videos take up a lot of space and we don't have enough RAM (Basys 3). We can buy an Arty S7 50 for it's DDR3 but the controller for it is AXI. I don't have time to learn AXI and I could not find any open source bridges that would work between that and WB B3.

One other option might be to send and process the video from an external camera or my laptop. But how can I make this work? USB is not nearly fast enough for 640x480 24fps.

Note: We won't use any AI in this project. So the time is more crucial.

Any tips? Should we buy a new board or will streaming work? Maybe we can use ethernet port? Idk.

Thanks.

you are viewing a single comment's thread
view the rest of the comments
[–] 4 points 10 hours ago (3 children)

That's quite a senior design project. I would look into existing camera interfaces, it looks like mipi is common. https://www.displaywiki.com/knowledge/posts/mipi-interface-basics/

You probably don't want to implement Ethernet or USB, those are very big interfaces with a lot of overhead.

  • source
  • hideshow 3 child comments
  • [–] [S] 2 points 10 hours ago (2 children)

    Thanks.

    I would need a MIPI camera board I'm guessing?

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 7 hours ago

    I think you should look in to MIPI from a hardware protocol perspective before committing to that route. The issue isn't the physical connector, but the complexity of the protocol. I found some open MIPI cores. idk if you're allowed to use open cores, but if they fit in your FPGA (with whatever other logic you need for your CPU and glue logic), then that may work, but if I were a student I'd probably be looking for a simpler interface where I can have the FPGA control the flow of data (like request 1 row of pixels at a time given the memory constraints).

  • source
  • parent
  • [–] 2 points 10 hours ago

    Yes, but it looks like the connector is a tiny thing, I don't know what you have available on your fpga board. Play around with the filters on digikey/mouser/whatever electronics distributor you use to find the part with the least effort to connect, as the interface might be enough of a task as it is.

  • source
  • parent