UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Adventurer
Adventurer
13,436 Views
Registered: ‎12-02-2010

ICAPE2 documentation

Jump to solution

I have an Artix-7 design and I am looking for documentation for the ICAPE2 primitive.  Everything I've found so far appears to be tribal folklore instead of solid documentation.  What would be useful is some basic timing diagrams for reads and writes and how to transition between the two states.  My design uses a Picoblaze to control the ICAPE2.

 

Thanks,

 

Michael

Tags (3)
0 Kudos
1 Solution

Accepted Solutions
Adventurer
Adventurer
22,843 Views
Registered: ‎12-02-2010

Re: ICAPE2 documentation

Jump to solution

Athandr,

 

By digging around online I found that the 7-series ICAPE2 has a fixed 3 cycle latency for reads.

http://www.xilinx.com/support/answers/44942.htm

 

Using this information I modified my design as follows (changes on step 14):

 

1) Enable is negated, rdwr = read, data = FFFFFFFF (negate enable)

2) Enable is negated, rdwr = write, data = FFFFFFFF (change to write mode while not enabled)

3) Enable is asserted, rdwr == write, data = FFFFFFFF (write dummy word)

4) Enable is asserted, rdwr == write, data = 000000BB (write Bus Width Sync Word)

5) Enable is asserted, rdwr == write, data = 11220044 (write Bus Width Detect pattern)

6) Enable is asserted, rdwr == write, data = FFFFFFFF (write dummy word)

7) Enable is asserted, rdwr == write, data = AA995566 (write Sync word)

8) Enable is asserted, rdwr == write, data = 20000000 (write noop)

9) Enable is asserted, rdwr == write, data = 28018001 (write Type1, Read, register IDCODE, count = 1)

10) Enable is asserted, rdwr == write, data = 20000000 (write noop)

11) Enable is asserted, rdwr == write, data = 20000000 (write noop)

12) Enable is negated, rdwr == write, data = 20000000 (negate enable)

13) Enable is negated, rdwr == read, data = 20000000 (change to read mode while not enabled)

14a) Enable is asserted, rdwr == read, data = 20000000 (dummy read cycle - invalid data is read from ICAP - FFFFFFDB)

14b) Enable is asserted, rdwr == read, data = 20000000 (dummy read cycle - invalid data is read from ICAP - 00000000)

14c) Enable is asserted, rdwr == read, data = 20000000 (actual read cycle - valid data is read from ICAP - 13632093)

15) Enable is negated, rdwr == read, data = 20000000 (negate enable)

16) Enable is negated, rdwr == write, data = 20000000 (change to write mode while not enabled)

17) Enable is asserted, rdwr == write, data = 30008001 (write Type 1, write, register CMD, count = 1)

18) Enable is asserted, rdwr == write, data = 0000000D (desync command)

19) Enable is asserted, rdwr == write, data = 20000000 (write noop)

20) Enable is asserted, rdwr == write, data = 20000000 (write noop)

21) Enable is negated, rdwr == write, data = 20000000 (negate enable)

 

With this sequence I am able to read configuration registers.  I appreciate your help and I thank you for the additional material you provided.  I think Xilinx could make our jobs easier by providing more detail regarding ICAP in the Configuration User Guide (UG470) along with the existing multiboot/IPROG information.  There's a lot of good information there but not quite enough to get the job done.  I am using a Picoblaze to talk to the ICAP in my design so detailed timing information for reads, writes and transitions between the two states (to prevent aborts) would be very useful.

 

Thanks,

Michael

 

Tags (1)
6 Replies
Adventurer
Adventurer
13,423 Views
Registered: ‎12-02-2010

Re: ICAPE2 documentation

Jump to solution

Thanks, I will take a look.

 

Michael

0 Kudos
Adventurer
Adventurer
13,409 Views
Registered: ‎12-02-2010

Re: ICAPE2 documentation

Jump to solution

Very useful information but I'm still missing something.  I have attached a captured waveform file that shows my ICAP signals but something is still off.

 

Counting each of the clock cycles, I see the following in this file:

 

1) Enable is negated, rdwr = read, data = FFFFFFFF (negate enable)

2) Enable is negated, rdwr = write, data = FFFFFFFF (change to write mode while not enabled)

3) Enable is asserted, rdwr == write, data = FFFFFFFF (write dummy word)

4) Enable is asserted, rdwr == write, data = 000000BB (write Bus Width Sync Word)

5) Enable is asserted, rdwr == write, data = 11220044 (write Bus Width Detect pattern)

6) Enable is asserted, rdwr == write, data = FFFFFFFF (write dummy word)

7) Enable is asserted, rdwr == write, data = AA995566 (write Sync word)

8) Enable is asserted, rdwr == write, data = 20000000 (write noop)

9) Enable is asserted, rdwr == write, data = 28018001 (write Type1, Read, register IDCODE, count = 1)

10) Enable is asserted, rdwr == write, data = 20000000 (write noop)

11) Enable is asserted, rdwr == write, data = 20000000 (write noop)

12) Enable is negated, rdwr == write, data = 20000000 (negate enable)

13) Enable is negated, rdwr == read, data = 20000000 (change to read mode while not enabled)

14) Enable is asserted, rdwr == read, data = 20000000 (actual read cycle - invalid data is read from ICAP - FFFFFFDB)

15) Enable is negated, rdwr == read, data = 20000000 (negate enable)

16) Enable is negated, rdwr == write, data = 20000000 (change to write mode while not enabled)

17) Enable is asserted, rdwr == write, data = 30008001 (write Type 1, write, register CMD, count = 1)

18) Enable is asserted, rdwr == write, data = 0000000D (desync command)

19) Enable is asserted, rdwr == write, data = 20000000 (write noop)

20) Enable is asserted, rdwr == write, data = 20000000 (write noop)

21) Enable is negated, rdwr == write, data = 20000000 (negate enable)

...

Data out of the ICAP actually changes to 00000000 on clock cycle 15 and to 13632093 on clock cycle 16.

 

What am I doing wrong here?  I have bit swapped each individual byte on icap_din and icap_dout.  What is shown here is the unswapped version of the signals.

 

Michael

 

Xilinx Employee
Xilinx Employee
13,379 Views
Registered: ‎07-31-2012

Re: ICAPE2 documentation

Jump to solution

Hi,

 

There is design of multiboot with ICAEP2 with the AC701 Evaluation kit. Please have a look at the PDF and use the design files for your exact part name. This should give you an idea about the usage of  ICAPE2.

 

PDF - LINK

Design - link

Thanks,
Anirudh

PS: Please MARK this as an answer in case it helped resolve your query.Give kudos in case the post guided you to a solution.
Adventurer
Adventurer
22,844 Views
Registered: ‎12-02-2010

Re: ICAPE2 documentation

Jump to solution

Athandr,

 

By digging around online I found that the 7-series ICAPE2 has a fixed 3 cycle latency for reads.

http://www.xilinx.com/support/answers/44942.htm

 

Using this information I modified my design as follows (changes on step 14):

 

1) Enable is negated, rdwr = read, data = FFFFFFFF (negate enable)

2) Enable is negated, rdwr = write, data = FFFFFFFF (change to write mode while not enabled)

3) Enable is asserted, rdwr == write, data = FFFFFFFF (write dummy word)

4) Enable is asserted, rdwr == write, data = 000000BB (write Bus Width Sync Word)

5) Enable is asserted, rdwr == write, data = 11220044 (write Bus Width Detect pattern)

6) Enable is asserted, rdwr == write, data = FFFFFFFF (write dummy word)

7) Enable is asserted, rdwr == write, data = AA995566 (write Sync word)

8) Enable is asserted, rdwr == write, data = 20000000 (write noop)

9) Enable is asserted, rdwr == write, data = 28018001 (write Type1, Read, register IDCODE, count = 1)

10) Enable is asserted, rdwr == write, data = 20000000 (write noop)

11) Enable is asserted, rdwr == write, data = 20000000 (write noop)

12) Enable is negated, rdwr == write, data = 20000000 (negate enable)

13) Enable is negated, rdwr == read, data = 20000000 (change to read mode while not enabled)

14a) Enable is asserted, rdwr == read, data = 20000000 (dummy read cycle - invalid data is read from ICAP - FFFFFFDB)

14b) Enable is asserted, rdwr == read, data = 20000000 (dummy read cycle - invalid data is read from ICAP - 00000000)

14c) Enable is asserted, rdwr == read, data = 20000000 (actual read cycle - valid data is read from ICAP - 13632093)

15) Enable is negated, rdwr == read, data = 20000000 (negate enable)

16) Enable is negated, rdwr == write, data = 20000000 (change to write mode while not enabled)

17) Enable is asserted, rdwr == write, data = 30008001 (write Type 1, write, register CMD, count = 1)

18) Enable is asserted, rdwr == write, data = 0000000D (desync command)

19) Enable is asserted, rdwr == write, data = 20000000 (write noop)

20) Enable is asserted, rdwr == write, data = 20000000 (write noop)

21) Enable is negated, rdwr == write, data = 20000000 (negate enable)

 

With this sequence I am able to read configuration registers.  I appreciate your help and I thank you for the additional material you provided.  I think Xilinx could make our jobs easier by providing more detail regarding ICAP in the Configuration User Guide (UG470) along with the existing multiboot/IPROG information.  There's a lot of good information there but not quite enough to get the job done.  I am using a Picoblaze to talk to the ICAP in my design so detailed timing information for reads, writes and transitions between the two states (to prevent aborts) would be very useful.

 

Thanks,

Michael

 

Tags (1)
Adventurer
Adventurer
13,370 Views
Registered: ‎12-02-2010

Re: ICAPE2 documentation

Jump to solution

The post containing the 7-Series ICAP PowerPoint seems to have disappeared.

0 Kudos
Highlighted
Teacher muzaffer
Teacher
13,350 Views
Registered: ‎03-31-2012

Re: ICAPE2 documentation

Jump to solution
do you still have the link? it's possible that someone didn't like the idea of having that information public. I'd appreciate a copy of the ppt file if you have a copy.
- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos