First thing to note: this core supports BCD. In the VHDL there's a lookup table, which synthesis converts to a ROM. Not sure how the ROM is mapped.
The VHDL contains an 'fsm' component, but synthesis hasn't recognised it.
The headline size is even more impressive if I nobble the bcd function: it loses 65 slices (120 LUTs), which is 15%. It also goes from 34MHz to 41MHz (not that this is a carefully constrained synthesis!)
The ALU is written as a pair of nibbles, which is authentic (and may help with BCD):
Code: Select all
Macro Statistics
# ROMs : 2
20x5-bit ROM : 2
# Adders/Subtractors : 4
5-bit adder : 4
# Counters : 1
16-bit up counter : 1
# Registers : 47
1-bit register : 39
8-bit register : 8
Code: Select all
# Adders/Subtractors : 2
5-bit adder carry in : 2