RoadTest: AVNET MiniZed
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: Used Diligent Pmods
What were the biggest problems encountered?: Xilinx tool stream is ominous and at times intractable with extensive computer demands.
Much of the commentary I have is from the perspective of a maker, student or hobbyist rather than a professional electrical engineer. We can’t all spend days reading hundreds (or thousands ?) of pages of documentation to get ta project up and running. My overall opinion is that the MiniZed is really good for the aspiring FPGA user. In particular the deep and broad network of amateurs and professionals who contribute tutorials, blogs and projects make for ample learning opportunities and support online. I also do not intend to go step-by-step through unboxing and getting it running as there are multiple sources out there that have that and there is no point in repeating it.
Before getting to some details on this board, I’d like to mention that one recurring theme during my time testing this board was how much programmable logic systems (including the embedded processor system) have advanced since I last worked on them (~5 years ago.) At that time the leading edge of Xilinx programming tools was adding a few IP modules to a system, but most of the heavy lifting was still done in VHDL and Verlog. Simple projects were limited to basic logic, streams and simple manipulations. Now it’s very easy to complete an entire project with extensive custom logic on complex data streams without a single line of the hardware languages. I think this is a big help to get started in FPGAs without as much new stuff to learn and significant benefit to the amateur.
While there are many sites with tutorials for this board, I’ll mention a few that I went to most while woking with this board.
Tutorials from zedboard.org worked without any problems (tutorials # 1-5) using Vivado HDL 2017.4. However, I found these tutorials lacking much instructive information. They are minimal in the sense that you get the examples running, but the tutorials do little else. What could they do? I suspect anyone relying on some basic tutorials would appreciate For example, You are shown what steps to take to get through synthesis, implementation and device programming, but don’t expect to come out of the tutorial knowing what any of those words mean or what options you may want to change for your own project. However, there's lots of additional documentation available on the Xilinx website that covers all of this stuff, but could take a very long time to work through for the hobbyist.
While many sets of tutorials are written with a narrow goal in mind, or as a basic introduction, the massive breath of information available from a professional source. Just about any common application of Zynq chips is covert on this blog with over 230 articles as of this writing. Many articles include some sample materials on github and videos showing how things work. The breath of material is commendable, but this may not be the best place for a new FPGA user to start. Much of the older entries require earlier versions of Vivado for the scripts to run and adding several old versions at up to 100GB each will tax most any computer hard drive, let alone require the aspiring hardware programmer’s computer to spend many an hour in downloads. Moreover, many of the topics are sequential without a clear starting post. After finding a project you would like to build onto of it may take some hunting to find where the string of posts starts so you understand what’s going on.
Programming an FPGA, with or without a dedicated processor core, is perhaps the most intractable and perhaps frustrating part of getting this and similar boards woking for the new user. While you may be experienced in simple microcontrolers of slightly more complex single board computers, there is no single-line compile for programmable logic. This is where Xilinx Vivado comes in, but the process has multiple steps, several of which have little utility to the hobbyist or new user. For example, splitting various steps of synthesis, implementation and packaging to be sent off to the SDx are all steps that can confuse the novice and adds little to nonprofessional use. Perhaps after you start having complex designs that require careful consideration of logic race conditions it would be good to be able to stop and simulate before sending out to the chip, but at that point ons could imagine enabling some ‘expert’ options and simplify it for many users. Then again, I don’t work with these types of systems most days and perhaps someone who’s written more extensively in hardware languages may disagree. Since smooch of the power of this system comes from the high-level to low-level optimization in the background (such as creating custom logic to replace C-code) I don’t see why so many of the ‘compiling’ steps must be waded through. I think the genius of the Arduino over a decade ago was the fact that you could go from code to running on the chip in one click. After you learned enough to take advantage of compiler options and split up the processes you could, but the barrier to entry was tiny.
But I digress….My second frustration with Vivado is the immense size of the installation. For me the light end of the installation was over 80 GB to cover both hardware development (HDL) and software (SDx). For someone who normally has little need to upgrade their laptop often and still has an early solid state drive, this is a huge installation taking up a significant portion of the total hard drive space. Moreover, many sets of tutorials are written on old versions of the software and suggest you install the old versions to prevent issues with changes from one version to another. For me, HDL and SDx software in multiple versions was simply not an option. I suspect many of the tutorials and sample code limited to a specific version would function fine on other versions, but it isn’t a novice task to convert many of the settings and adds considerably to the burden to getting a tutorial to work for your own setup.
Hard drive requirements aside, the software works well once installed. I would mention that, having used FPGAs some time ago (pre-Vivado) that I was a bit surprised how far down simple VHDL and Verlog was hidden in the system. I’m not sure if Xilinx thinks that few people want to use the system this way, or that they are better at implementation than most users, but some simple logical applications are not so obvious to link up to each pin now as (to the best of my knowledge) they must be embedded in a custom IP module setup as it’s own entity. Sure this helps in re-use of code, but adds a lot to setting up, say tigger & clock logic with inputs to control several settings while maintaining very low jitter and no time to wait for the programmable logic to change a setting whenever it gets around to it.
It shouldn’t come as a surprise that this demo board from a reputable supplier worked as intended out of the (fairly small) box. The build quality of this particular board is good with nice touches adding to the prototyping value such as clearly labeled pin-outs and rubber feet on the bottom. I didn’t find any problems with the functionality or rigidity of the board (but I didn’t push it.) Now that I write this I’m contemplating if it would survive a few hundred foot fall off a drone. My first guess is yes. I may have to test that….
For testing function of some simple IO using Programmable logic and the programming system, I used a few Diligent PMODs including a temperature sensor, the rgb OLED screen and a level shifter. For interacting with the programmable logic, the tutorials on digelent’s website proved pretty easy and worked fine on this board. However, If I just wanted to use PMODs with a micro controller, I would have no need for a chip with programable logic. There are plenty of good micro controller boards out there that would work fine for that. Getting the PMOD to talk to the programmable logic took more work as the default IP from diligent don’t seem to have direct work in the programmable logic in mind. Creating some custom IP modules took some doing, but seemed more cumbersome than FPGA programming pre-Vivado.
Keeping with the student/hobibyist theme I monitors signals on an OpenScope MZ from Diligent. Or rather I monitored signals on it until it stopped communicating with my computer and refused to do so for some days. Without going into more detail, I can’t recommend that particular board. Moving back to a real oscilloscope, I naturally had no reliability issues and had little trouble seeing all the signals at the fastest timescales.
As one might expect from simple logic tasks and a relatively powerful processor core, there wasn’t much I could come up with outside of linux programs that could push this board anywhere near it’s limits. At least on the commutation and logic front. While I didn’t run into the problem here, As with many similar sized boards I expect the physical I/O pins are where there are likely to be limitations for many projects long before there are limits on processing capability. Myself, I would have liked to try some images processing code written in C and run through the SDx system for a custom logic implementation. Unfortunately, I never got to far with that as the application requires HDMI inputs and outputs and this board doesn’t have either.
I’ll admit I wasn’t aware of Xilinx PetaLinux before I started to look at options for this board. As another case of the current state-of-the-art being much higher than I thought, I was impressed by the Linux options for running on this chip and the relatively robust support Xilinx has for customizing and deploying Linux on this and other chips. I’ll admit this was an area I wish I had looked at sooner and I’ll be spending more time on it soon.
Good write-up, Matthew. Well done on using Pmods and a scope on this board. MiniZed is of course an entry-level development board and to harness the versatility and power of Xilinx, as well as the more advanced peripherals, you will probably have to move to another (currently more expensive) development platform. Fortunately there are a couple on zedboard.org. You seem to have had good success with this one though and the mere fact that you are comparing it to Arduino and similar platforms illustrates that there is a place for these single-core Zynq devices. The board is of course not industrial temp or ruggedized, but if you succeed in dropping it from up there as part of a drone, it will have served its purpose in terms of a learning and prototyping platform. Or proof-of-concept demo. Agree with you that the initial learning curve for the tools is steep and that FPGA technology has come a long way.