Hi,
the triangular wareform can be simply generated by an up counter, if you want an asymmentrical carrier. Otherwise, you can implement and up-down counter on the FPGA to have symmentrical carrier signal.
Use smallest integer data-type that fits your requirements, FPGA resources are precious.