fpga based ethernet layer 2 switch
It mainly depneds on your application, the idea of several MAC is very hard to implement and will take alot of area you may use a software MAC, all can be done with embedded processor like Microblaze or the PowerPC, you can do a full tcp stack while handling some of MAC functions with HW, other wise it will be very costy to implement, a hardware MAC will take a large area on FPGA.
I want to note that switches have many other function for example they should serve LLC layer, like STP protocol which will be unsuitable to be done using HW,
In general a switch can be done with
1- PHYs as many as your switch should handle "V4" offers IOs that can be configured as a MAC PHY, this will be very suitable for such an applications,
2- a soft or hard processor to run the MAC at effeciently with some prepherals
3- Content Addressable RAM for the MAC table.
4- An effecient real time operating system RTOS, to handle as many MAC as it can.
there have been a good discussion about EMAC at here
hope this had helped