Most programmable logic vendors, e.g. Altera, Lattice, Xilinx have free synthesis tools that support both CPLD and FPGA. The said functions can be implemented with CPLD, but number of required logic elements respectively CPLD macro cells might seriously restrict the design size. You can implement a design first and then try out which device will be sufficient in the synthesis tool.