Hi, I want to know why ATmega16 is used in Arduino Uno R3. What is the purpose of placing ATmega16 and ATmega328p on same board? Is ATmega328 is not enough?
The second chip (ATmega16) is used to perform the USB interface to allow programming the ATmega328p with Arduino code without the need of any extra external device between your computer and the Arduino board, just it.
I got another doubt. They can use USB-UART chip like CH340 to provide USB interface instead. Because cost of ATmega16 is more than CH340. And use ATmega328p with bootloader installed?
You are free to use the bootloader of your choice and the interface if your choice.
But mind that the bootloader has to be programmed on the chip first.