Home    Bloggers    Messages    Webinars    Resources   
Tw  |  Fb  |  In  |  Rss
Warren Miller

IP for FPGAs: Where Have We Been?

Warren Miller
Page 1 / 2   >   >>
jacklsw86
jacklsw86
11/5/2012 9:01:27 PM
User Rank
Blogger
JTAG UART core
I come across someone who had a board (with Altera's Arria V FPGA) to play around with but it has no UART interface for debugging. Then I remembered the NIOS II soft processor can utilize JTAG interface to emulate UART, that is the JTAG UART core. But there are some problems:

- JTAG UART core must be instantiated in SOPC/QSYS, meaning it must come together with the NIOS II CPU.

- In the computer side, a normal terminal window won't work, we must use NIOS2-terminal.

He only needs a UART interface to test his design, but the board doesn't have it. He can use the JTAG UART core, but he needs to understand the basics of NIOS II before he can even use the core.

50%
50%
Jacek Hanke
Jacek Hanke
11/5/2012 3:44:59 AM
User Rank
Blogger
Re: Trusting vendor cores
@ Jezmo: " The thing with open cores is you can try before.you don't actually buy"

 

Not exactly, cause as I wrote in my previous blog, you can always evaluate IP Core before buying. So both vendor and customer will do everything to make sure that the IP is really working... http://www.programmableplanet.com/author.asp?section_id=2109&doc_id=252730

50%
50%
rfindley
rfindley
11/4/2012 12:22:21 PM
User Rank
Blogger
Re: Trusting vendor cores
@Karl,

The "Central Interconnect" is what controls how the peripherals are connected to the CPU, and you configure it by just writing to a set of configuration registers.  So no FPGA code is needed for the CPU to connect and use the peripherals.

The Processor System (PS) portion of the chip contains the following hard AXI interfaces:
  2x AXI 32b master
  2x AXI 32b slave
  4x AXI 64b/32b memory interface
  AXI 64b ACP (Accelerator Coherency Port)

If you want to connect the CPU to a synthesized IP, you would use one of the hard AXI Masters.
* Master 1 has 1GB address space starting at 0x40000000
* Master 2 has 1GB address space starting at 0x80000000

And, of course, you would need to synthesize a soft AXI Slave to communicate with the hard AXI Master.

The hard AXI Slaves are used when you want the FPGA fabric to control one or more of the hard peripherals.  Of course, to control an AXI Slave, you would need to synthesize a soft AXI Master... so I'm guessing that is what you saw in the Vivado documentation.

In a Zynq tutorial that I was browsing, they connected a soft GPIO core to the CPU.  Here's the basic flow:

CPU <--> hard AXI Master <--> soft AXI Interconnect <--> soft AXI GPIO

Strictly speaking, I'm not sure the AXI Interconnect is necessary if you only plan to connect a single slave.  But the interconnect provides a few useful services if you want them:

* Data width conversion
* Clock rate conversion
* Pipelining
* Multiplexing between multiple slaves (or masters)

As for memory and cache, the amounts on the Zynq are pretty typical for ARM processors (256KB on-chip RAM, and I don't remember the cache size).  The assumption is that if you need more memory, you can use the hard DDR2/3 controller to add the right amount of memory for your design.  So this is also a pretty typical ARM design.

As for dual-core, you can use them independently, though they share the same address space.  So as long as you run them on separate areas of memory, I think you could do whatever you like (e.g. an OS on one, and bare-metal code on the other??).  In the bootstrap code, you could have something like this:

if (cpu_id==0)
  jump to address xxxx
else
  jump to address yyyy (or just sleep, if you only need one core)

Once I get my hands on a Zynq board, I plan to go through this process myself, and will write a blog series about it.  So stay tuned :-)

50%
50%
Karl
Karl
11/4/2012 9:15:54 AM
User Rank
Guru
Re: Trusting vendor cores
@rfindley:  Thanks for good comments, my points are based on the Vivado documentation with its emphasis on  synthesis and the cores that are listed.

There are 3 AXI4 cores and some other standard cores.  I think the ARM core uses the AXI master and since it is a synthesis core that means that the user must add it to the Zynq.  Synthesis generates HDL so the whole physical design must be done.

An MCU with an ARM core has a set of peripherals physically connected to the cpu in a fixed configuration.  The user must live with what is there rather than define and connect a custom configuration, but the point is that it is ready to be programmed, not ready to build then program.

So the FPGA fabric must be configured before use, as I see it.

What about memory and/or cache?  It seems unlikely that there is enough on chip memory to satisfy a dual core ARM that almost certainly must have an OS that can use dual cores.

Hoping to be wrong, but feel that this is what you will see when looking under the hood.

50%
50%
rfindley
rfindley
11/4/2012 1:38:45 AM
User Rank
Blogger
Re: Trusting vendor cores
Karl,

First, let me say:  I have no affiliation with Xilinx.  I'm just an interested developer, and it seems to me that a lot of people don't really understand Zynq yet.

So, with that in mind....  I'm not sure I understand the points you are making.

1) Zynq comes with all the usual hard-IP peripherals that you'll find in any standalone MCU.  In fact, you could even ignore the fact that it has FPGA fabric in it, and just treat it like any other MCU.  Nothing special needed.

2) You can still use the same development process for Zynq as you do with a separate MCU and FPGA.  You can use any 3rd-party ARM compiler that supports the common Cortex-A9, and you can continue to use Xilinx ISE design suite for the FPGA portion.  There's no need to use the Xilinx tools for the MCU portion.

3) I think you are overlooking a lot of advantages of the Zynq that you can't get with a two-chip (MCU and FPGA) solution.

* Higher-bandwidth, lower-latency interconnect between processor and FPGA fabric, with multiple buses that can work in parallel.
* Dedicated hardware FIFOs some of the above-mentioned interconnects.
* Direct access from FPGA fabric to processor on-chip memory (you could achieve some pretty unique accelerators this way)
* Processor and FPGA can both use the on-chip peripherals, so you can divide the workload as you see fit.

Granted, many FPGA+MCU applications don't need those features.  Even so, there are some additional benefits that have a more general appeal:

* Chipscope on steroids (use a spare internal AXI connection to dump a large number of internal logic signals directly into ARM-accessible RAM.  No external pins needed, and fully user-programmable analysis.... HELLO!!).
* Better board space utilization
* Direct software-based FPGA configuration, giving many new possibilities.
* Possibly longer product life cycle (many ARMs follow short mobile electronics lifecycles.  Xilinx is likely to keep their solutions around longer.)

Of course, there are downsides to consider:
* Highly-integrated solutions are more difficult to replace if they go defunct.  But at least it is a marriage fairly capable of surviving a split (... that doesn't work very well as a metaphor, does it?  :-) )
* Can't upgrade the constituent parts piecemeal.
* GPU not included with the MCU (this can be good or bad)

50%
50%
Karl
Karl
11/3/2012 4:17:08 PM
User Rank
Guru
Re: Trusting vendor cores
@devel:  The hard ARM core is slower than a separate chip and a lot of other things have to be put on the FPGA and verified so it is hard to see if there is real advantage over an MCU.  If they don't come up with a good set of cores that can  be used easily and quickly then it is a waste. 

Starting with HDL/RTL and going through the whole tool process looks like a bad idea.

50%
50%
JezmoSSL
JezmoSSL
11/2/2012 5:33:21 PM
User Rank
Blogger
Re: Wishbone interface
Ooh do you really need help to do that ? cos I will if you want but I have got eleventy six other things on at the moment

50%
50%
Karl
Karl
11/2/2012 5:24:18 PM
User Rank
Guru
Re: Wishbone interface
@Jezmo:  Reminds me of a bumper sticker -- "Yes, this is my truck.  NO! I will not help you move.

50%
50%
JezmoSSL
JezmoSSL
11/2/2012 2:40:25 PM
User Rank
Blogger
Re: Trusting vendor cores
The thing with open cores is you can try before.you don't actually buy

50%
50%
devel@latke.net
devel@latke.net
11/2/2012 2:39:05 PM
User Rank
Guru
Trusting vendor cores
A lot of us have been burned by the pretty shitty cores provided by the FPGA vendors. It will take us a lot to convince us that Zynq or whatever will be better.

50%
50%
Page 1 / 2   >   >>
More Blogs from Warren Miller
Warren has finally started to write some HDL code to implement his chess-playing FPGA, but he's not a professional coder, so he needs our help and advice.
What might we see in new Ultra Low Density (ULD) CPLD families three-to-five years down the road? Are there new technologies or programmable structures that will find their way into ULD devices?
Following our evaluations, the resources required by a chess-playing FPGA implementation would seem reasonable, even for a small or midsized device.
A number of challenges are faced by the users and manufacturers of ultra-low-density devices (ULDs).
We are ready to consider how to use our Move Generator to traverse the tree of possible moves efficiently and find the sequence that produces the best board position.
flash poll
follow us on twitter
follow Xilinx on twitter
like us on facebook
like Xilinx on facebook
All Programmable Planet     About Us     Contact Us     Help     Register     Twitter     Facebook     RSS