20.1.2.2 Interrupts
(Ask a Question)20.1.2.2.1 F2H Interrupts
(Ask a Question)The MSS simulation model acknowledges assertion of the F2H interrupts. There are 64 F2H interrupt ports. When the MSS receives a valid active-high interrupt, it acknowledges them by printing a message as shown in the following code block.
# INFO : F2H_INTERRUPT[0] is asserted
# INFO : F2H_INTERRUPT[1] is asserted
# INFO : F2H_INTERRUPT[2] is asserted
# INFO : F2H_INTERRUPT[3] is asserted
# INFO : F2H_INTERRUPT[4] is asserted
# INFO : F2H_INTERRUPT[5] is asserted
# INFO : F2H_INTERRUPT[6] is asserted
# INFO : F2H_INTERRUPT[7] is asserted
# INFO : F2H_INTERRUPT[8] is asserted
# INFO : F2H_INTERRUPT[9] is asserted
# INFO : F2H_INTERRUPT[10] is asserted
The interrupt inputs should be high for one MSS clock; otherwise, the MSS model rejects the interrupt for being too low and prints a message as shown in the following code block.# ERROR : F2H_INTERRUPT[0] must stay high for at least one MSS clock cycle
# ERROR : F2H_INTERRUPT[1] must stay high for at least one MSS clock cycle
# ERROR : F2H_INTERRUPT[2] must stay high for at least one MSS clock cycle
# ERROR : F2H_INTERRUPT[3] must stay high for at least one MSS clock cycle
# ERROR : F2H_INTERRUPT[4] must stay high for at least one MSS clock cycle
# ERROR : F2H_INTERRUPT[5] must stay high for at least one MSS clock cycle
# ERROR : F2H_INTERRUPT[6] must stay high for at least one MSS clock cycle
# ERROR : F2H_INTERRUPT[7] must stay high for at least one MSS clock cycle
# ERROR : F2H_INTERRUPT[8] must stay high for at least one MSS clock cycle
# ERROR : F2H_INTERRUPT[9] must stay high for at least one MSS clock cycle
20.1.2.2.2 H2F Interrupts
(Ask a Question)run.do
file:vsim -L polarfire -L presynth -t 1ps -g H2F_MEMFILE=(path)/*.txt presynth.tb
For example: vsim -L polarfire -L presynth -t 1ps -g H2F_MEMFILE=E:/mss_sim/h2f_sim.txt presynth.tb
There are 16 H2F interrupts. The following table lists their allocation in MSS.H2F Line | Group |
---|---|
0 | GPIO |
1 | MMUART, SPI, CAN |
2 | I2C |
3 | MAC0 |
4 | MAC1 |
5 | WATCHDOGS |
6 | Maintenance |
7 | SCB |
8 | PolarFire®C-Message |
9 | DDRC |
10 | PolarFireC-DEVRST |
11 | RTC/USOC |
12 | TIMER |
13 | ENVM, QSPI |
14 | USB |
15 | MMC/SDIO |
Wait Time (Time to wait in number MSS PLL clock cycles, Hex)
Interrupt Value (16-bit value, Hex)
Wait time (Time to wait in number MSS PLL clock cycles, Hex)
Interrupt Value (16-bit value, Hex)
...
Example:
100 (Wait for 100 (256 in DEC) MSS PLL clock cycles)
FFFF (Set all 16 interrupts)
1000 (Wait for 1000 (4096 in DEC) MSS clock cycles)
0000 (Clear all 16 interrupts)
...
The H2F interrupts can be cleared by clearing an interrupt register bit in the corresponding peripheral. These AXI transactions can be generated by an Initiator in FPGA fabric.
H2F Line | Group | AXI Address and Data Bits to Clear an Interrupt | |
---|---|---|---|
0 | GPIO | Reg | PolarFire SoC_mss_regmap:GPIO:INTR |
Physical Address | 0x2012 0080 0x2012 1080 0x2012 2080 0x2812 0080 0x2812 1080 0x2812 2080 | ||
Data | Bit-0: To clear an interrupt, write the bit with 1. | ||
1 | MMUART | Reg | PolarFire SoC_mss_regmap:MMUART:IIM |
Physical Address | 0x2000 0028 0x2010 0028 0x2010 2028 0x2010 4028 0x2010 6028 0x2800 0028 0x2810 0028 0x2810 2028 0x2810 4028 0x2810 6028 | ||
Data | Reading the IIM register clears this interrupt. | ||
Reg | PolarFire SoC_mss_regmap:MMUART:MM2 | ||
Physical Address | 0x2000 0038 0x2010 0038 0x2010 2038 0x2010 4038 0x2010 6038 0x2800 0038 0x2810 0038 0x2810 2038 0x2810 4038 0x2810 6038 | ||
Data | Reading the MM2 clears the interrupt. | ||
1 | MMUART | Reg | PolarFire SoC_mss_regmap:MMUART:RTO |
Physical Address | 0x2000 004C 0x2010 004C 0x2010 204C 0x2010 404C 0x2010 604C 0x2800 004C 0x2810 004C 0x2810 204C 0x2810 404C 0x2810 604C | ||
Data | Writing the RTO register clears this interrupt. | ||
1 | SPI | Reg | PolarFire SoC_mss_regmap:SPI:INT_CLEAR |
Physical Address | 0x2010 800C 0x2010 900C 0x2810 800C 0x2810 900C | ||
Data | Bit-5: Write 1 to clear the interrupt. Bit-4: Write 1 to clear the interrupt. | ||
1 | CAN | — | Not supported. |
2 | I2C | — | Not supported. |
3 | MAC0 | — | Not supported. |
4 | MAC1 | — | Not supported. |
5 | WATCHDOGS | — | Not supported. |
6 | Maintenance | — | Not supported. |
7 | SCB | — | Not supported. |
8 | PolarFireC-Message | — | Not supported. |
9 | DDRC | — | Not supported. |
10 | PolarFireC-DEVRST | — | Not supported. |
11 | RTC/USOC | — | Not supported. |
12 | TIMER | — | Not supported. |
13 | ENVM,QSPI | — | Not supported. |
14 | USB | — | Not supported. |
15 | MMC/SDIO | — | Not supported. |