Skip to content

Peripheral

This section (#1) has a clear relation with the pin configuration.

For the EP4CE6E22C8 model it has a length of 5415 bytes.

The whole section follows a pattern consisting of a byte value repeated 4 times (probably some kind of redundancy).

Raw dump:

100:     04040404 04040404 04040404 04040404
104:     04040404 04040404 04040404 00000000
108:     00000000 01010101 01010101 00000000
112:     00000000 00000000 01010101 01010101
116:     01010101 01010101 01010101 05050505
120:     05050505 01010101 01010101 41414141
124:     45454545 05050505 45454545 05050505
128:     05050505 05050505 05050505 04040404
132:     04040404 04040404 04040404 04040404
136:     04040404 04040404 04040404 04040404
140:     04040404 00000000 00000000 00000000
144:     00000000 00000000 00000000 01010101
148:     01010101 00000000 00000000 00000000
152:     01010101 05050505 05050505 11111111
156:     15151515 41414141 41414141 01010101
160:     41414141 01010101 01010101 01010101
164:     01010101 01010101 01010101 01010101
168:     01010101 00000000 00000000 00000000
172:     00000000 00000000 00000000 00000000
176:     00000000 00000000 00000000 00000000
180:     00000000 00000000 00000000 00000000
184:     00000000 01010101 01010101 04040404
188:     04040404 00000000 04040404 40404040
192:     40404040 10101010 50505050 00000000
196:     00000000 00000000 00000000 00000000
200:     00000000 00000000 00000000 00000000
204:     00000000 00000000 00000000 00000000
208:     00000000 00000000 00000000 00000000
212:     00000000 00000000 00000000 00000000
216:     00000000 00000000 00000000 00000000
220:     00000000 04040404 04040404 01010101

Once collapsed, it can been seen a CRC every 208 bytes, similar to the routing section. In total it has 6 sections, which made a size of 1260 bytes.

Analysis

Check this notebook.

Following the research method described, there is a visible pattern regarding the changing pin. The heatmap color represents when a interger is different between files.

We can see that there is always 2 fixes integers (that configure pin 2) and 2-3 moving (that configures the new pins). At the botom of the page there is a table with the values of that changing integers.

Findings

So looking into the values we can deduce that:

  1. Each value, even for the same configuration is different, so there must be some kind of mask applying.
    • After comparing the sections, seems to be a clear pattern across the changes.

Example of diff and XOR of the same section in both files:

(247, ('0xac', '0xa4'), '0x8')
(248, ('0xac00', '0xa400'), '0x800')
(249, ('0x840', '0x48'), '0x808')
(314, ('0x5497', '0x218b'), '0x751c')
(556, ('0x202', '0x303'), '0x101')
(557, ('0x2', '0x3'), '0x1')
(558, ('0x8d8c', '0x8c8c'), '0x100')
(629, ('0xdfd9', '0x9232'), '0x4deb')

(230, ('0x8c', '0x84'), '0x8')
(231, ('0x8c00', '0x8400'), '0x800')
(232, ('0x850', '0x58'), '0x808')
(314, ('0x5497', '0x55fa'), '0x16d')
(556, ('0x202', '0x303'), '0x101')
(557, ('0x2', '0x3'), '0x1')
(558, ('0x8d8c', '0x8c8c'), '0x100')
(629, ('0xdfd9', '0x9232'), '0x4deb')

(213, ('0x9e', '0x96'), '0x8')
(214, ('0x9c02', '0x9402'), '0x800')
(215, ('0x1842', '0x104a'), '0x808')
(314, ('0x5497', '0x68ae'), '0x3c39')
(556, ('0x202', '0x303'), '0x101')
(557, ('0x2', '0x3'), '0x1')
(558, ('0x8d8c', '0x8c8c'), '0x100')
(629, ('0xdfd9', '0x9232'), '0x4deb')

(556, ('0x202', '0x303'), '0x101')
(557, ('0x2', '0x3'), '0x1')
(558, ('0x8d8c', '0x8c8c'), '0x100')
(560, ('0x50d0', '0x40c0'), '0x1010')
(561, ('0x8090', '0x8080'), '0x10')
(562, ('0x80c0', '0x90c0'), '0x1000')
(629, ('0xdfd9', '0x8685'), '0x595c')

Differences table

/home/fran/trasteo/RZ-easyFPGA-A2.2/simple/key1_1_2.rbf /home/fran/trasteo/RZ-easyFPGA-A2.2/simple/key1_1_3.rbf /home/fran/trasteo/RZ-easyFPGA-A2.2/simple/key1_1_7.rbf /home/fran/trasteo/RZ-easyFPGA-A2.2/simple/key1_1_10.rbf /home/fran/trasteo/RZ-easyFPGA-A2.2/simple/key1_1_11.rbf /home/fran/trasteo/RZ-easyFPGA-A2.2/simple/key1_1_23.rbf /home/fran/trasteo/RZ-easyFPGA-A2.2/simple/key1_1_24.rbf /home/fran/trasteo/RZ-easyFPGA-A2.2/simple/key1_1_25.rbf /home/fran/trasteo/RZ-easyFPGA-A2.2/simple/key1_1_28.rbf /home/fran/trasteo/RZ-easyFPGA-A2.2/simple/key1_1_30.rbf
73 0x0001 nan nan nan nan nan nan 0x0000 nan nan
74 0x0104 nan nan nan nan nan nan 0x0004 nan nan
75 0x0400 nan nan nan nan nan nan 0x0401 nan nan
92 0x0401 nan nan nan nan nan 0x0400 nan nan nan
93 0x0540 nan nan nan nan nan 0x0440 nan nan nan
94 0x4000 nan nan nan nan nan 0x4001 nan nan nan
104 0xde03 nan nan nan nan nan 0xfeaf 0x1dbc nan nan
113 0x0141 nan nan nan nan 0x0040 nan nan nan nan
115 0x0000 nan nan nan nan 0x0100 nan nan nan nan
209 0xbbe4 nan nan nan nan 0x13e1 nan nan nan nan
304 0x0c2f nan nan nan 0x0c2e nan nan nan nan nan
305 0x2f0c nan nan nan 0x2e0c nan nan nan nan nan
306 0x0d0c nan nan nan 0x0c0d nan nan nan nan nan
314 0x5497 nan nan nan 0x3807 nan nan nan nan nan
325 0xe7e7 nan nan 0xe6e6 nan nan nan nan nan nan
326 0xc4c5 nan nan 0xc4c4 nan nan nan nan nan nan
327 0xc4e6 nan nan 0xc5e6 nan nan nan nan nan nan
419 0xa39f nan nan 0x1433 nan nan nan nan nan nan
459 0x88ab nan 0x88aa nan nan nan nan nan nan nan
460 0xab88 nan 0xaa88 nan nan nan nan nan nan nan
461 0xab88 nan 0xaa89 nan nan nan nan nan nan nan
497 0x84a7 nan nan nan nan nan nan nan nan 0x84a5
498 0xa784 nan nan nan nan nan nan nan nan 0xa584
499 0x8600 nan nan nan nan nan nan nan nan 0x8402
524 0xb786 nan 0xd58b nan nan nan nan nan nan 0x1f9f
537 0x0303 0x0202 nan nan nan nan nan nan nan nan
538 0x0001 0x0000 nan nan nan nan nan nan nan nan
539 0x0002 0x0102 nan nan nan nan nan nan nan nan
556 0x0202 0x0303 0x0303 0x0303 0x0303 0x0303 0x0303 0x0303 0x0101 0x0303
557 0x0002 0x0003 0x0003 0x0003 0x0003 0x0003 0x0003 0x0003 0x0001 0x0003
558 0x8d8c 0x8c8c 0x8c8c 0x8c8c 0x8c8c 0x8c8c 0x8c8c 0x8c8c 0x8e8c 0x8c8c
629 0xdfd9 0x254f 0x9232 0x9232 0x9232 0x9232 0x9232 0x9232 0x0ba4 0x9232