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:
- 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 |



