A bit about me
I thought I'd start this with a little background about me. This is not, as you might suspect, because I like talking about myself. I think it's good to give a bit of context and let you know from what perspective this review is being undertaken. I've had a lot of fun with FPGAs, but this experience has all been from a hobbyist perspective. I looked back over my posts here on the E14 community and found this from September 2019: Where to start for an easy intro to FPGAs?
That's it. My first tentative foray into the world of programmable logic started less than 2 years ago. My experience has mainly been gained thanks to Element14 via various workshops, challenges, and road tests. I've enjoyed learning about FPGAs and every now and then I find myself confident enough to think that I know what I'm doing "climbing the cliffs of insanity" - before being rudely reminded that I'm still very much a beginner. In particular I have found that I struggled with video processing and AI on FPGAs. I find it's hard work and it can be very confusing when things just don't seem to work as expected.
I knew for a little while that I would be testing a new Xilinx board but when I found out it involved both vision and AI... well, I must admit that my heart sank a little. My spirits lifted when I found out it was supposed to be an easy device to use. Perhaps my lack of skills in this area actually makes me a better guinea pig than an FPGA guru? If you also feel you're not an expert with FPGA vision processing then perhaps my experience of the new Kria K26 board might be helpful.
Anyway, enough about me. Now that you know where this review is starting from, I'm sure you really want to find out about the hardware!
I'm not one for wasting time on an unboxing, but I'll quickly summarize what I'm testing and how it differs slightly from what you might purchase if you decide to try a Kria kit for yourself. For this test Xilinx supplied pretty much the Xilinx KV260 Vision AI Starter Kit and the Kria KV260 Basic Accessory Pack.
There were however a few differences. For some reason the AR1335 camera that is supposed to be supplied with the accessory pack wasn't included. It's the bottom one on this page. I'm not sure, but it I suspect supplies are limited and they're being kept for those purchasing the kit from Xilinx. It doesn't seem easy to get this component on it's own. (Avnet have them listed for sale but require you to request a quote rather than giving a price.) This is a 4K colour camera with a MIPI interface. In place of this there was a Logitech BRIO 4K webcam that connected using USB. It's nice to see that the KV260 can happily switch between MIPI and USB without any drama.
A small point to note is that the 12V 3A power supply that comes as part of the accessory kit has plenty of adapters (5) so that it should work in most countries. Other devices I've tested were limited to US/EU and meant I needed a clunky adapter to use them in the UK. Including these adapters may be a small detail but a nice one.
Xilinx also supplied a very neatly 3D printed adapter to hold the board. (It even matches the red fan shroud on the Kria module.) I can see that this might be useful if you had a PCB-mounted MIPI camera but when using the Kria with a webcam it wasn't entirely necessary - the Kira carrier board has little rubber feet so it sits nicely on the desk. I almost didn't mention it - especially as I don't think the kit normally comes with one - but someone has obviously spent a while on this. The base has even been designed to flex so that the carrier board is held firmly but can be released easily.
KV260 SoM and carrier board
Finally, on to the bones of the kit - the SoM (System on Module) and a carrier board that helps you connect it to the real world. The 2 devices came connected out of the box, but I decided it would be more interesting to see the Kria KV260 SoM and its carrier board separately, so I removed the SoM from the board before taking a photo. Interestingly, both the SoM and the carrier board only have one of the 240-pin connectors populated, despite photos of the Commercial and Industrial SoMs on Xilinx's website showing both headers populated.
Whilst this might seem odd, this is all down to how these devices are intended to be used. The "end goal" for customers using Kira SoMs is for the customer to create their own carrier board with the required connectors and to purchases either the Commercial or Industrial SoMs to go on these boards. Having a pre-built SoM should greatly simplify production of a device and reduce the time to market. The starter kit is intended to be a way to evaluate the SoM and quickly provide connectivity to the sort of peripherals that are likely to be used. The SoM supplied with the starter kit is listed as a "non-production" version. It's not intended to be the final device in a commercial solution. In fact at $199 the Starter Kit including SoM is cheaper than just a production SoM on its own ($250 for the Commerical and $350 for the Industrial version). Whilst the Starter Kit is obviously intended for evaluation rather than production use, I have no doubts about its quality or suitability for use in non-commercial projects. The details of exactly what the difference between the production and non-production SoMs, I've managed to glean a little more information.
- The non-production SoM has only one connector
- The production SoMs have 16GB of on-board eMMC storage, allowing applications to be booted entirely on the SoM. The non-production SoM must use external microSD storage on the carrier.
- The production SoMs have a larger temperature range.
Whilst the Xilinx website shows the Commercial and Industrial versions of the K26 SoM. The Commercial SoM should be available by the end of May and the Industrial SoM in July. There are also two others listed as "coming soon" - the Cost Optimized and Highest Compute versions. There seems to be little information available on these apart from their names.
Starter Kit versions
The starter kit also appears to have two versions. The data sheet lists SK-KV260-G-ED as having encryption disabled and SK-KV260-G with encryption enabled. The board I'm testing has a manually placed -ED sticker, so I assume encryption has been disabled. I'll let you know if this impacts testing in any way but I suspect it will not.
Apparently further starter kits are planned for next year, but no details on these are available. There are also production carrier cards expected from Xilinx partners. This should make it easier to pair a production SoM, a production carrier card and a production app in order to quickly set set up with an entire well-supported product.
As this was supposed to be easy to get started with, I decided to be awkward and just start plugging it in without reading any instructions. I plugged in a monitor using DisplayPort (because that was the first cable I grabbed), a keyboard, the webcam, and an ethernet cable. I inserted the supplied microSD card as powered up the board. I was greeted by a petalinux boot up screen asking me to log in. Unfortunately, someone had very kindly imaged the card with Petalinux (2020.2) but hadn't thought to let anyone know the password. I tried a few likely combinations, but nothing worked. Considering I was deliberately trying to be a pain I think this OK. I open the getting started guide at https://www.xilinx.com/KV260-Start and - as I should have done in teh first place - I did some reading before I started typing.
I downloaded the card image and burned it with the Raspberry Pi imaging tool - rather than the recommended Balena Etcher. I did this just because I has it installed already and because (if you didn't already realise) I ignore instructions. The Pi imager worked just fine, I booted into Petalinux and logged in - changing the default password and making a mental note of it. The instructions were pretty much what I did before - apart from also connecting a micro USB cable to use as a serial terminal. The instruction talk about using the IAS camera module, but as I've already mentioned I was supplied with a webcam instead. The nice animated image to the right is taken from the getting started guide. It also seems that it's not important whether you use HDMI or DisplayPort. Both work just fine and the same image is output to both at the same time.
The provided guide is really good, so a written description of the getting started process would probably just be a worse version of that. I decided a good way to test things out would be to take if from the point of having a microSD card flashed with the downloaded image and do a live recording from there to displaying the smartcam face recognition on a monitor. Is the claim of having this running in under an hour valid? Let's try it and see!
As you can see, it's very easy to have everything up and running in under 25 minutes - even when starting by downloading the SD card image. My apologies for the rather washed-out video - although this doesn't seem to bother the AI. We must have had an unexpected flash of sunshine in an otherwise dreary day here in the UK! Whilst the "filming one monitor with a second webcam" approach seemed to work OK, I initially tried using a cheap HDMI capture device to more cleanly show the output from the KV260. Whilst the device seemed to work surprisingly well - especially as it cost less that £8 - it wouldn't capture the Kria's output. I think this was down to the output being 60fps and the device only being able to handle 30fps, but I'm not sure.
More about the smartcam and other apps
It was very easy to get the smartcam app up and running, but it doesn't end there. The documentation on all 3 of the Xilinx supplied apps in the app store is very good. This section for instance does a great job of explaining how to configure the smartcam application to consume video from a MIPI camera, USB camera or a file, and to output it a monitor, a RTSP stream or to disk. It also exlains all the options that are available.
One thing I noticed is that the Kria hardware supports connecting a RaspberryPi Camera 2 (via the Pi camera connector). It also supports a monochrome AR0114 camera (as on the Ultra96 Dual Camera Mezzanine) connected to the IAS conector. However, whilst the hardware supports these, none of the current App Store application can handle these out of the box. I'm sure this is where the applications can be tweaked and extended using Vitis. This may be something I look into later, but is out of the scope of this review. During a recent webinar I asked about both these camera and received the following reply:
Both the Raspberry Pi camera and the AR0144 IAS camera module should be compatible with the Kria Vision AI Starter Kit and SOM. We plan to have Accelerated Applications that leverage the AR0144 module.
Whilst the Logitech Brio is the only webcam that is officially supported, I decided to see how it handled a different one. I had a Logitech C920 which is a fairly standard HD webcam. It is rather shown up by the 4K Brio, although strangely enough I have recently had issues with the Brio at work. It seems that Unreal Engine is happy with the lowly C920 but really doesn't get on with the Brio! (Mor eon this later.) The Kria had no such problems. It recognised the C920 and processed the images as normal - easily detecting faces. One strange thing was that the frame rate dropped from an impressive 30fps to a rather choppy 5fps. It's very difficult to determine exactly where the issue lies, but if you are using a webcam then I'd recommend sticking with the Brio.
Not just petalinux
The image that's provided to flash to the microSD card is probably familiar to anyone who's worked with Xilinx's Zynq range. Petalinux is a lightweight Yocto based embedded linux. There's plenty of documentation on how to build petalinux for a custom hardware design, although it can be heavy going. It's nice that a pre-built image is provided and certainly helped get thing started quickly.
Another software platform that helps you get started quickly is PYNQ. PYNQ has been covered fairly thoroughly here on E14 and has a large fan base. Whilst PYNQ is not yet available for the Kria, it is apparently coming "in the summer". In the meantime, it is possible to run a Jupyter notebook from the petalinux command line and get a PYNQ-like experience right now.
Another interesting bit of news, and something which I believe is quite new for Xilinx boards is the planned support for Ubuntu. Once again, there's not a huge amount of information available but little snippets have appeared in a tweet from Ubuntu and Xilinx themselves have mentioned "Ubuntu Linux on Kria K26 SOMs is expected to be available in July of 2021" as part of this press release. I'm assuming it is likely to be an Ubuntu for IoT build, but who knows!
Using the KV260 with Vivado and Vitis 2020.2.2
Whilst the KV260 starter kit is designed that you don't need to delve into Vivado and Vitis to make use of powerful vision applications, this is of course supported. I made sure that I had Vivado 2020.2 installed before receiving the board and decided to at least try to create a simple project for the device. It's worth noting that the device on board the SoM is unique to the Kria. The XCK26-SFVC784-2LV-C part is not available elsewhere, although it is similar to other Zynq Ultrascale+ parts. As I said, I had 2020.2 installed. I hadn't seen any need to do the huge (14GB) minor version update to 2020.2.2. According to the release notes, the update seemed to include a few more devices but there was no mention of the Kria part. When connecting the starter kit to my PC and running Vvado's hardware manager I could see the device but couldn't do much with it.
As part of a Kria webinar, it was suggested that the following TCL command in Vivado would create a project for the new part, although I was just presented with "part not found"
create_project -part XCK26-SFVC784-2LV-C MyKriaProject
I decided it was worth trying an update to 2020.2.2 and that seemed to do the trick! It then dawned on me that the point release had come out in February - when the Kria was still top secret. Now it was possible not only to create a project manually but even to select the part or board when creating a new project using the GUI. Much better!
I'm not going to delve any deeper into creating things using Vivado or Vitis right now. As I said at the beginning, this is where I find I struggle with vision and AI on Xilinx devices. Many people will be very happy here, and now have the opportunity to package their designs for delivery via the App Store to Kria devices. I have to admit that I'm far more comfortable using the new Kria ecosystem. I know the depths are there if I ever need them, but downloading and configuring an App for the module may be all I need. Xilinx have certainly concentrated on making the power of FPGAs more accessible over the last few years. Vitis was a large step forward in letting C++ function be synthesised into hardware. PYNQ joined the world of Python and programmable logic. I feel that the Kria SoMs and their associated App Store will serve to further increase this accessibility. For those of us who find the world of FPGAs to often be two steps forward and one back (or sometimes the other way around).
I shall give you an example which seems particularly pertinent. Last week at work I genuinely found a situation where the Kria SoM may have been an ideal way to do something that I'd previously been out of reach.
A few months ago I'd been asked to find a way to do face detection using a web cam and Unreal Engine (a game development engine). I'd looked at trying to integrate OpenCV with Unreal but it seemed to be a bit of rabbit hole and not easily achieved. Because of this, the face detection feature was then dropped. More recently, it turned out that Unreal also had a bit of a problem with the Brio webcam that had been selected for the hardware side of things. Other webcams worked fine, but not the Brio. With an Kria Starter Kit - and coincidentally a Brio webcam - sitting on my desk, a potential solution was obvious. The Kria would happily consume the Brio webcam output, perform face detection at 30fps and then stream it out over RTSP. Unfortunately it's a bit too late to add to the project hardware, and the production Kria devices are not yet available. Had this been happening in a few months time however, the Kria could have provided a quick and relatively cheap way of doing exactly what was required - and all without needing in-house FPGA experience. This seems to be the sort of use that Xilinx are aiming for, and it would have been a bullseye.