I worked through a second and third video and then I realized that the PicoZed board didn't have enough pins for what I wanted. I started designing my own Zynq carrier board from the ground up... This was something I didn't want to do. I have a few other projects for work and I wanted this to be fun quick project so I was becoming dissuaded until I saw this:
I spent a day reviewing it and then was back on track with the carrier board. Now with an open source design and a team supporting it.
I still had to make trade offs regarding the number of connectors but I think I ended up with something I will be happy with. Well at least I'll have a lot of HDL and kernel work to do to get this thing up and running.
I was watching a Spacex launch and saw that they played some electronic music when there was nothing particularly interesting going on it inspired me. I was about to do a small layout for a client of mine when I had the idea of capturing a frame every second of my layout. Then reducing it down so that 1 minute equals 1 hour. Partly because I thought it was cool and partly because I wanted to show them how long a layout took.
I put these two ideas together and came up with this video. It took roughly 28 hours of pure layout. I found an artist who let me put his music in the video.
I am a little concerned about seizures. There are some flashing images.
I would have been done sooner except my son was born right in the middle of it and you wouldn't believe how much energy a small 10 pound little boy takes up!
It's been a month and I've had a chance to finish this off.
I plan to add more instructional videos about different aspects of the design, specifically about
I made the first video of the project:
and pushed everything to Github.
My next video was going to talk about pin planning, and then I started doing that... Before I started working on the project I naively figured that the Picozed would have more than enough processor IO to support the following peripherals:
Not a chance!
I opened up Vivado and selected the chip on the for the Picozed board, created a block diagram and dropped in a Zynq block on the page. When you open up that Zynq block you get this neat interface:
It shows how the processor is connected to the outside world as well as to the FPGA.
When you select the 'Peripheral I/O Pins' you get this:
In order to configure the processor to use a specific peripheral you just need to highlight it.
As an example the 'SD1' is selected on pins: 10 - 15, this will be used for the EMMC or SD card. If those physical pins don't work for your physical design, you can use the 'SD1' on pins: 22-27 but if you do you won't have access to 'Enet0' (Ethernet) so to use this you will need to make tradeoffs.
This information along with a lot of other configuration data is used to write the "Device Tree Source" for the Linux kernel, which configures the kernel to use those peripherals.
Unfortunately the Picozed board uses the Ethernet so if you don't want to use the Ethernet you are out of luck.
I thought about it for a while. Should I drop the WIFI in favor of the Ethernet. I ended up answering no to this. I think it would be more convenient for the user to have WIFI so I'm going to drop Ethernet and use 'SD0' for WIFI. I was thinking about a board mounted USB WIFI chip but they are hard to find.
I really want to have both the WIFI and SDIO. I'm hoping I can do this with a multiplexer or a 'chip select' but I don't know just yet. If I can get both the WIFI and SD card support I'll be very happy.
Either way the only way to accomplish this is to capture the entire Zynq chip on Enigma itself instead of using the Picozed connectors. This may not be that hard because the reference design is available and it's already in Altium so the process of adding a routed Zynq and DDR3 memory to my board may just be a matter of dragging and dropping it into my design and layout. It's not trivial but it's far from starting from zero.
Unfortunately this will drive up the price of the board! I was hoping I could get away with a 6 layer board but I think at minimum I'll need an 8-layer board to accomplish the routing of the DDR3 and FPGA signals. Not to mention the chip by itself is $209 where the Picozed module is $250!
I'll make my decision in the next video.
The project is being built on the back of a lot of older projects so throughout the build process there will be parts of the design that will just appear like:
I'm still working through part selection for the following:
I've solidified on the following elements:
I'll talk more about the different components as I start working on them.
If I can bear hearing my own voice I should get the first video up soon.