cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
john321
Adventurer
Adventurer
5,397 Views
Registered: ‎05-01-2017

cpu architecture experimentation

Jump to solution

looking for a dev board suggestion

 

I'm interested in experimenting with different designs of CPU architecture

(various register counts, data widths, instruction sets, etc) 

 

I'm not in a hurry with this so no market pressure but

I'd like to be able to not worry about interfacing so memory and perhaps MMU

onboard - USB control or plugin to a win7-64 pc would work. 

I'd want to have 2-3 cpu paralell running if possible.

Speed isn't critical - I'm more interested in flexibility and ease of

changing things.

 

I'm not sure how to define my needs in term of fpga so perhaps

someone could suggest something or even tell me it can't be done?

I'm not looking for the cheapest - just something that will help me

get on and try things out.

 

cheers

j.

 

 

0 Kudos
1 Solution

Accepted Solutions
u4223374
Advisor
Advisor
8,745 Views
Registered: ‎04-26-2015

Right, that budget changes things a bit; I was expecting more like a $200 US budget. 1000 GPB gives you a lot more flexibility.

Some general points:

Licensing - if you want Matlab you will have to buy that, but you absolutely do not need Matlab to use Vivado; in fact my experiences with Matlab's HDL tools suggest that you're much better-off not using Matlab with Vivado.

For small devices, you can use a free Vivado WebPack license. Development kits for larger devices often include device-locked Vivado Design Edition licenses, which is great for a while but you only get a year of updates. If you bought a kit now, you'd be able to use Vivado up to version 2018.1, and then to keep getting new versions you'd have to buy a full Vivado Design Edition license (£2300). For boards that aren't designed as development kits you'd need to buy the license straight away, which obviously puts them out of reach.

Realistically, I'd try for a WebPack-supported part. There aren't going to be many larger parts that fit in your budget anyway.

Memory - I don't think I've ever seen dual-ported RAM on an FPGA board. The chips have internal dual-ported RAM, but only a few MB of that. Most of the Artix 7 boards will only have 16-bit RAM which makes them unsuitable for your needs.

On the Zynq you can turn off the PS to stop it interfering with RAM access (not that it does anyway) but there's no way to get access to the memory controller's pins through the fabric. You're forced to use the memory controller.

High-speed I/O - each pin on a modern FPGA can manage better than 1Gbps. All the ones worth looking at for this project have transceivers ranging from around 6Gbps (Artix 7) to 16Gbps (Kintex Ultrascale). Most of the development kits will include appropriate hardware to convert I/O pins to ethernet, USB, etc.

 


On to selecting a board. With the WebPack license you really have three options:

(1) Kintex Ultrascale XCKU035 and XCKU025 - by far the biggest and fastest chips, but extremely hard to find. I've only found a single module using them, the Trenz TE0841, and it's too expensive.

(2) Kintex 7 (up to the XC7K160T) - much more common, and more affordable. Faster fabric than the Artix 7, but not as quick as Ultrascale.

(3) Artix 7 (up to the XC7A200T) - slowest chip, but the biggest WebPack-supported Artix 7 is bigger than the biggest WebPack-supported Kintex 7. The main downside, apart from the speed, is that Artix boards tend to be designed with price as the primary concern, so nice features like fast 64-bit RAM are rare (actually, the most I've found so far is 16-bit RAM).

 


I've had a look at the options available from Avnet, Trenz, Digilent, and Enclustra. The result is two that look like they'll do the job within-budget.

Avnet Kintex Ultrascale Development Kit (around £880) - a much more traditional development kit, with an XCKU40 (not WebPack-friendly) and a device-locked Vivado license included. 1GB of 32-bit DDR4-1600 RAM should give it 6.4GB/s bandwidth. Includes its own JTAG programmer, two ethernet ports, etc.

Enclustra Mercury+ KX2 with XC7K160T-2I (around £580 plus £390 for the base board) - a Kintex 7 XC7K160T board. The really nice thing about this is that it's got 2GB of 64-bit DDR3-1600 RAM installed (12.8GB/s bandwidth). This is a module like the TE0841; it will require the PE1-300 base-board, which brings you awfully close to the maximum budget. The PE1-300 includes a JTAG programmer, ethernet, USB, etc.

All the other options either go well over budget (eg. Trenz TE0841) or don't come close to meeting the requirements (eg. Digilent Nexys Video).


I'd probably take the Enclustra option. My feeling is that the Kintex Ultrascale never really became a popular chip (it was a stepping-stone between the widely-used Kintex 7 and the not-quite-available-yet Kintex Ultrascale Plus) and so the Kintex 7 is likely to have better community support. Being Webpack-compatible is an added bonus.

View solution in original post

0 Kudos
14 Replies
austin
Scholar
Scholar
5,373 Views
Registered: ‎02-27-2008

j,

 

The Digilent Basys3 is sufficient.  You may create a dual MicroBlaze(tm) system with all peripherals in the Artix 7 lx50t device.  If you have a student email (.edu) you may be eligible for a student discount price for the board.  The Basys3 is used by many schools, so there is a wealth of examples online for it.

Austin Lesea
Principal Engineer
Xilinx San Jose
0 Kudos
john321
Adventurer
Adventurer
5,318 Views
Registered: ‎05-01-2017

Thanks for the suggestion Austin.

 

I've had a read of the PDF for the board and think it is perhaps not going to do what I need.

( I know I didn't post full details) although I can see it's a decent enough dev board for someone

working on embedded control.

 

I think I need more ram on board - perhaps 1GB to evaluate both block and random movement

and throughput - and some other stuff. I don't need or want IO pins for embedded use or anything like

that. I'm solely interested in core functionality and how to get data through it of course.

Perhaps a bigger FPGA chip with fewer outputs dedicated to general purpose IO and more

towards simple processing. (How many pins the FPGA has I can use for buses could be an issue

if I wanted to try comparing 64 bit v 32 bit for example. )

 

Do you know of anything more suited to that sort of approach? (I know its a bit academic and not

market oriented but that's where I am right now)

 

Also I'm not sure of the microblaze suggestion - isn't that just a core? (which is what I'm working

on to design in the first place?) I expect I could use it as an example but there's lots about for that.

(I'd rather pick apart something much simpler to start with - I understand theres a few 6502 clones about)

Unless you have something in mind I don't know about?

 

I'm buying something next monday - I'll just spend the rest of this time sifting ideas.

If I'm wrong on anything please don't be shy about correcting me.

 

cheers

j.

 

 

 

0 Kudos
austin
Scholar
Scholar
5,303 Views
Registered: ‎02-27-2008

Look at the AC701,

 

Or, the Zybo, or Zedboard (you have the FPGA programmable logic in the Zynq devices to play with, and the ARM processors support linux and there is 1 Gb (or more) of DDR that you could communicate with through the PS-PL GPIO or HP ports.

 

 

Austin Lesea
Principal Engineer
Xilinx San Jose
0 Kudos
u4223374
Advisor
Advisor
5,272 Views
Registered: ‎04-26-2015

@john321

You've got three main options.

(1) Implement not just the CPU, but the whole system on the FPGA. This is often used by people trying to recreate old computers; when the system you're recreating only has 128B - 128KB of RAM you might as well just use the on-chip RAM. The only pins that need to be broken out are display and user I/O. In this case all you need is a board with a large-ish FPGA and a couple of I/O pins.

(2) Implement a CPU and memory controller on the FPGA similar to how it'd be done in an ASIC, designing everything yourself. This is pretty difficult; I'm not actually sure whether Xilinx provides enough documentation to create a high-speed memory interface or whether the customer is just expected to use the Xilinx Memory Interface Generator (MIG) IP to do that. In any case, to do this you'll want a board with schematics available (eg. almost anything made by Digilent or Xilinx).

(3) Implement a CPU which communicates using standard protocols. For Xilinx FPGAs, that'll mean using the AMBA AXI bus. An AXI Master can then be connected to a MIG or to the HP AXI Slave ports on a Zynq, giving the CPU access to the RAM with very little work. The downside is that you don't have direct access any more; if you were aiming to learn about memory interfacing then this approach won't work.


I'd be going for (3), both because it's a whole lot easier and because it opens up the option of using a Zynq (none of the cheap Zynq boards allow direct access to the RAM from the FPGA, so you can't do option (2)). The Zynq has a dual-core ARM CPU on it which can act as a supervisor for whatever is going on in the FPGA. It's got full access to everything in the RAM so you can see what's happening there, it can send and receive data over USB or ethernet, it can reprogram the FPGA easily, etc. Any board that can do (3) can also do (1) so that option is available too. 

Within the Zynq family, the 7020 is the chip to buy. It's got over twice the resources size of the 7010 for a marginal extra cost, and it's the largest "practical" part supported by the free WebPack version of Vivado (technically the Zynq 7030 is WebPack-supported, but boards with the 7030 cost far more). Some of the 7020 boards (eg. the new Arty-Z7) only have 16-bit RAM; try to find one with 32-bit RAM. The Zedboard is a good example, although pretty expensive. I've recently bought a MYIR Z-Turn, simply because it was the best value I could find ($120 US for a Zynq 7020 with 1GB 32-bit RAM). If money is a major issue, that's the board I'd recommend.

In terms of what you can do with a processor: one of my early projects was building a 16-bit CPU on an Digilent Pegasus (XC2S50, 1536 LUTs). The processor wasn't optimized for FPGA use, but I managed to get two of those into the chip with room to spare. A Zynq 7020 has 53,200 LUTs, and each one is much more powerful than the LUTs on an XC2S50. You won't be building a Core i7 on there, and clock speeds will be limited (anything more than about 200MHz will be pushing your luck on a low-end Zynq), but a basic 32-bit or 64-bit processor should be fine.

0 Kudos
john321
Adventurer
Adventurer
5,262 Views
Registered: ‎05-01-2017

Thanks for the info - I'll respond in more detail later but for now could someone just explain

something that's puzzling me?

 

I keep being told to by a SOC board with ARM on board.

 

I'm having trouble understanding why I would want the ARM on board? I have no knowledge

or interest in ARM technology and I'm not building an embedded system. I'm building just a core.

I don't need to run linux for anything. I have vivado on a win7-64 machine.

 

I will need support to evaluate the results but I would use intel based software to do that.

(Presumably vivado as a start then my own diagnostics).

 

Is there something I don't understand about designing an FPGA core that requires an ARM on board?

 

I will of course check out the suggestions in the mean time so

thanks

 

j.

 

0 Kudos
u4223374
Advisor
Advisor
5,255 Views
Registered: ‎04-26-2015

@john321 There's nothing that specifically requires the ARM CPU onboard. However, it does give you a few advantages:

 

  • Easy access to the RAM from a "known good" system (eg. Linux on the ARM CPU) so you can figure out just what the soft-CPU has been doing.
  • Easy initial debugging. Most of the devkits only have a couple of LEDs available so initial debugging can be tricky. You can add a debug core, but that can only log a small-ish amount of data (whatever it can fit in block RAM) triggered on specific events. With the Zynq CPU, you can have hundreds of "internal" GPIOs from your design, which get read by the CPU and displayed in any form you like (eg. printed out over the UART) - without having to write a separate UART module.
  • Easy advanced processing. Say you've got a machine-code file on your PC that you want to feed to the soft-CPU on the FPGA. One option is to use a UART, but those are slow and error-prone, and something on the FPGA board will have to copy it to RAM before starting the soft-CPU. Or you can write a separate FPGA block that understands SD cards and another block that understands FAT32. On the Zynq chips, you just plug in a USB drive or microSD card (it probably boots from a microSD card anyway), let Linux mount that and load appropriate filesystem drivers, then copy the file to shared RAM. This tends to be both easier and faster.
  • Free memory controller (the PS has one built-in, which is available to the FPGA fabric via the HP AXI). On an Artix-based board you'll have to dedicate a significant amount of FPGA logic to the memory controller.
  • Fast reconfiguration; the ARM CPU can reload the FPGA bitstream to switch between soft-CPU designs. With a regular system you'd have to reconnect via JTAG and load a new bitstream.

 

 

Edit: apart from the above points, there's another very simple one. Because the Zynq has been sold as a "CPU with an FPGA attached" it's been taken up by companies that normally build Systems on Modules (SoMs). They've followed their usual approach, which has resulted in CPU-oriented boards with lots of fast-ish RAM. A CPU-oriented board is probably just what you need.

 

There have been a couple of "CPU-oriented" pure-FPGA boards (eg. designed for OpenSPARC), but none that are (a) recent and (b) cheap.

0 Kudos
john321
Adventurer
Adventurer
5,136 Views
Registered: ‎05-01-2017

OK - I must admit I'm dithering a bit here.

 

Short question - In a word what would you buy given:

 

What I'm interested in as above

 

A budget of up to around 1K GBP for everything - software, toolchain (must I buy matlab?)  licenses, books etc

(Can go up a little if there's good reason) But I don't want to spend on kits designed with loads of peripherals and specific market tools. IE. no interest in RF, LCD displays, keypads, touchscreens etc. 

 

More info if it helps:

 

Desire for fastest CPU system and good size FPGA -  I'm interested in prototyping concepts - some high speed I/O

lines would be very good.

 

Bearing in mind your comments above - I will need to design memory access switching and width

changes and different paths  - can the zynq with ARM be disabled to allow me to bypass the built in

interface? I need as much flexibility as I can get  - I have no interest in conforming to existing standards

apart from getting things running (clearly important but I must be able to bypass) - my whole raison d'etre is to experiment with alternatives.

 

My design path is expected to be - CPU  internals outwards in rough sequence - ALU - registers - cache - control - I/O  If I can use an IP platform (as explained in Vivado docs) around this and drop the parts no longer needed as I go that would be great.

 

I don't want to be crippled by by short term licensing or other such artificial impediments.

 

I'd like about 1GB off chip ram ideally dual ported and obviously a means to communicate with the host.

I don't need switches and displays or other hardware on board apart from useful reset, power on etc.

it should be 32bit minimum and 64bit ram would be better.

 

All cables/power etc to communicate with the host vivado system should be included.

 

In a word  - what would you buy?

 

thanks

j.

 

 

 

 

0 Kudos
u4223374
Advisor
Advisor
8,746 Views
Registered: ‎04-26-2015

Right, that budget changes things a bit; I was expecting more like a $200 US budget. 1000 GPB gives you a lot more flexibility.

Some general points:

Licensing - if you want Matlab you will have to buy that, but you absolutely do not need Matlab to use Vivado; in fact my experiences with Matlab's HDL tools suggest that you're much better-off not using Matlab with Vivado.

For small devices, you can use a free Vivado WebPack license. Development kits for larger devices often include device-locked Vivado Design Edition licenses, which is great for a while but you only get a year of updates. If you bought a kit now, you'd be able to use Vivado up to version 2018.1, and then to keep getting new versions you'd have to buy a full Vivado Design Edition license (£2300). For boards that aren't designed as development kits you'd need to buy the license straight away, which obviously puts them out of reach.

Realistically, I'd try for a WebPack-supported part. There aren't going to be many larger parts that fit in your budget anyway.

Memory - I don't think I've ever seen dual-ported RAM on an FPGA board. The chips have internal dual-ported RAM, but only a few MB of that. Most of the Artix 7 boards will only have 16-bit RAM which makes them unsuitable for your needs.

On the Zynq you can turn off the PS to stop it interfering with RAM access (not that it does anyway) but there's no way to get access to the memory controller's pins through the fabric. You're forced to use the memory controller.

High-speed I/O - each pin on a modern FPGA can manage better than 1Gbps. All the ones worth looking at for this project have transceivers ranging from around 6Gbps (Artix 7) to 16Gbps (Kintex Ultrascale). Most of the development kits will include appropriate hardware to convert I/O pins to ethernet, USB, etc.

 


On to selecting a board. With the WebPack license you really have three options:

(1) Kintex Ultrascale XCKU035 and XCKU025 - by far the biggest and fastest chips, but extremely hard to find. I've only found a single module using them, the Trenz TE0841, and it's too expensive.

(2) Kintex 7 (up to the XC7K160T) - much more common, and more affordable. Faster fabric than the Artix 7, but not as quick as Ultrascale.

(3) Artix 7 (up to the XC7A200T) - slowest chip, but the biggest WebPack-supported Artix 7 is bigger than the biggest WebPack-supported Kintex 7. The main downside, apart from the speed, is that Artix boards tend to be designed with price as the primary concern, so nice features like fast 64-bit RAM are rare (actually, the most I've found so far is 16-bit RAM).

 


I've had a look at the options available from Avnet, Trenz, Digilent, and Enclustra. The result is two that look like they'll do the job within-budget.

Avnet Kintex Ultrascale Development Kit (around £880) - a much more traditional development kit, with an XCKU40 (not WebPack-friendly) and a device-locked Vivado license included. 1GB of 32-bit DDR4-1600 RAM should give it 6.4GB/s bandwidth. Includes its own JTAG programmer, two ethernet ports, etc.

Enclustra Mercury+ KX2 with XC7K160T-2I (around £580 plus £390 for the base board) - a Kintex 7 XC7K160T board. The really nice thing about this is that it's got 2GB of 64-bit DDR3-1600 RAM installed (12.8GB/s bandwidth). This is a module like the TE0841; it will require the PE1-300 base-board, which brings you awfully close to the maximum budget. The PE1-300 includes a JTAG programmer, ethernet, USB, etc.

All the other options either go well over budget (eg. Trenz TE0841) or don't come close to meeting the requirements (eg. Digilent Nexys Video).


I'd probably take the Enclustra option. My feeling is that the Kintex Ultrascale never really became a popular chip (it was a stepping-stone between the widely-used Kintex 7 and the not-quite-available-yet Kintex Ultrascale Plus) and so the Kintex 7 is likely to have better community support. Being Webpack-compatible is an added bonus.

View solution in original post

0 Kudos
john321
Adventurer
Adventurer
5,074 Views
Registered: ‎05-01-2017

WOW - You've really put some work into this - thank you u4223374

 

I have to agree with your conclusions - and I take the matlab comment onboard too.

 

That enclustra setup looks about as perfect as I'm going to get.

I didn't find that while trawling around for some  reason - maybe I got lost

in all the variations and emphasis companies place on vertical market targeting.

(my interests don't seem to exist outside of academia)

 

Anyway I've asked for a quote and all being well that's what I'm going for.

I've ordered a couple books from amazon too for background reading.

(Including the designing with Xilinx one - I got it for about £54+post)

And a VHDL resource book - I forget the title.

 

If anyone wants to suggest books I'm all ears.

 

again thanks.

 

j.

 

 

 

0 Kudos
u4223374
Advisor
Advisor
3,943 Views
Registered: ‎04-26-2015

@john321 The only reason I knew about the Enclustra modules is that we use the Zynq versions of them at work. Enclustra doesn't advertise much, but in my experience their hardware is excellent.

 

Regarding books - my only advice is to make sure you get a modern-ish book that covers VHDL-2008. There are lots of handy new features compared to the older VHDL standards and it'd be annoying to buy a few second-hand books on eBay/Amazon only to find that they're not up-to-date. Of course, 2008 is approaching ten years ago now, so you should still be able to get cheap books that do include the new material.

0 Kudos
john321
Adventurer
Adventurer
3,936 Views
Registered: ‎05-01-2017

Yeah I spotted the dates on some of the books on Amazon.

There's quite a few that don't have very good reviews too.

You can get some bargains though - I bought a few on 

Z (specification language) a while back  at 1penny each.

They were ex-college/uni books I suspect.

 

I had my quote through this morning - the boards will be available

at the end of June. I can spend the time reading up and setting

up what I want to start with - maybe even buy something cheap and

cheerful to see how to configure vivado etc.

 

Again - thanks for the assistance.

 

j.

 

 

0 Kudos
u4223374
Advisor
Advisor
3,918 Views
Registered: ‎04-26-2015

No worries, glad to be of service.

 

You can get a long way without having a board at all. You can write the code, simulate it, and synthesize it without ever having a board to work with. I'd get started on that ASAP, because many textbooks tend to teach "complete VHDL" rather than the subset of VHDL that can actually be synthesized. The simulator will also let you get away with a lot of un-synthesizable code, so make sure that you do run code through synthesis often just to check that it's acceptable.

 

If you do buy a cheap board, make sure that it's either a Zynq or Artix one. The cheapest new devkits are based on the Spartan 6, and most of the second-hand ones use the Spartan 3. Either of those will require you to use ISE instead of Vivado (Vivado only supports the 7-series and upwards) which makes them much less useful as preparation for the Kintex. You might even find an old Virtex 4 or Virtex 5 board cheaply on eBay, but that has the added disadvantage that it'll require a full ($3000) ISE license.

0 Kudos
u4223374
Advisor
Advisor
3,887 Views
Registered: ‎04-26-2015

@john321 one more thing - Enclustra is currently running a short survey on "your ideal module". If you fill it in (link) they'll give you a 10% discount. This seems like it'd be worth doing.

0 Kudos
john321
Adventurer
Adventurer
3,868 Views
Registered: ‎05-01-2017

Some good points - I do have a lot of reading to do.

It may also be worth my dowloading some designs from opencores.com and see what

I can do in Vivado with them. Fortunately I don't have market pressures to worry about.

 

Yes I did the survey and they credited me in the quote. It pays for the shipping I guess.

(They do charge a lot for shipping) . In fact there are one or two curious things I've noticed.

 

 

 

 

 

0 Kudos