Commit 5592ad8a authored by Theodor-Adrian Stana's avatar Theodor-Adrian Stana

Update wb_i2c_slave in gencores and instantiation in top-level

The previous wb_i2c_slave was sensitive to writemregs commands which
may extend for too long, resulting in the I2C bridge watchdog timer
timing out and refusing the communication. This all results in multiboot
failing.

This issue has been fixed in the gencores repo via a generic to set the
watchdog timer timeout value. Then, an appropriate setting was applied to
the top-level of the Golden release project to account for these long
writemregs commands. The setting for the watchdog generic is six times
higher than the expected writemregs duration.
Signed-off-by: Theodor-Adrian Stana's avatarTheodor Stana <t.stana@cern.ch>
parent 30d0941d
general-cores @ 7a8e3f17
Subproject commit e848b421868886e0d539a24c4978e62b0e48f2f2
Subproject commit 7a8e3f1768e929e05c261082ad1eb52b324f8e07
......@@ -446,8 +446,20 @@ begin
-- Set the I2C address signal according to ELMA protocol [1]
i2c_addr <= "10" & fpga_ga_i;
-- Instantiate VBCP bridge component
-- Instantiate I2C bridge component
--
-- FSM watchdog timeout timer:
-- * consider bit period of 30 us
-- * 10 bits / byte transfer => 300 us
-- * 40 bytes in one transfer => 12000 us
-- * clk_i period = 50 ns => g_fsm_wdt = 12000 us / 50 ns = 240000
-- * multiply by two for extra safety => g_fsm_wdt = 480000
-- * Time to watchdog timeout: 480000 * 50ns = 24 ms
cmp_i2c_bridge : wb_i2c_bridge
generic map
(
g_fsm_wdt => 480000
)
port map
(
-- Clock, reset
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment