XC7A100T-1CSG324I FPGA Setup and Programming
FPGAs Artix-7 Series 324-LFBGA, CSPBGA
Learn how to set up and program the XC7A100T-1CSG324I FPGA with step-by-step guidance on hardware, software, and design file preparation for seamless programming.
Product Introduction
Programming the XC7A100T-1CSG324I FPGA may seem complex at first, but you can master it with the right approach. This guide will help you break the process into simple, manageable steps. Whether you're connecting the hardware or working with design files, you'll find clear instructions that make the task straightforward. By following these steps, you’ll gain confidence in setting up and programming this powerful FPGA for your projects.
Tip: Take your time with each step. Rushing through could lead to errors, especially when dealing with hardware connections.
Required Tools and Software
Essential Hardware for XC7A100T-1CSG324I
To get started with the XC7A100T-1CSG324I, you need the right hardware. The FPGA development board is the centerpiece of your setup. It houses the XC7A100T-1CSG324I chip and provides the necessary interfaces for programming and testing. You also need a compatible power supply to ensure stable operation. A USB-to-JTAG cable is essential for connecting the board to your computer for programming. Without these, you cannot proceed with the setup.
Software Needed for Programming
Programming the XC7A100T-1CSG324I requires specialized software. The Vivado Design Suite is an excellent choice for synthesis and implementation. It offers a user-friendly interface and simplifies the design process. Many users find it easier to navigate compared to older tools like the ISE Design Suite. However, your choice of software may depend on your specific project needs and personal preferences. Both tools are available from Xilinx and support the XC7A100T-1CSG324I FPGA.
Additional Accessories and Cables
A few additional items can make your setup more efficient. A high-quality USB cable ensures reliable communication between your computer and the FPGA board. Breadboards and jumper wires are useful for prototyping and testing external circuits. If your project involves external sensors or modules, you may also need connectors or adapters. These accessories help you expand the functionality of your FPGA setup.
Tip: Always double-check the compatibility of your accessories with the XC7A100T-1CSG324I board to avoid connection issues.
Installing the Software
Downloading Xilinx ISE WebPACK
To begin programming the XC7A100T-1CSG324I FPGA, you need the Xilinx ISE WebPACK software. This tool is available for free on the Xilinx website. Navigate to the downloads section and locate the version compatible with your operating system. Ensure you meet the system requirements before downloading. A stable internet connection is essential, as the file size can be large.
Tip: Always download software directly from the official Xilinx website to avoid corrupted or outdated files.
Installing the Software on Your System
Once the download is complete, locate the installer file in your downloads folder. Double-click the file to start the installation process. Follow the on-screen instructions carefully. You may need to select the installation directory and agree to the terms and conditions. The process typically takes 10–20 minutes, depending on your system's speed.
For faster installation and compilation times, consider using a Linux-based system. Studies show that a dedicated Linux FPGA compile worker reduces compile time by 32% compared to a Windows worker. If you use a Windows system, expect slightly longer compile times.
Setting Up Licensing for Xilinx ISE
After installation, you must set up a license to activate the software. Open the Xilinx License Manager from the start menu. Select the "Get Free ISE WebPACK License" option. Follow the prompts to log in or create a Xilinx account. Once logged in, the system will generate a license file. Save this file and import it into the License Manager.
Note: Without a valid license, the software will not function. Double-check that the license matches your installed version.
Setting Up the Hardware
Connecting the XC7A100T-1CSG324I FPGA Board
To begin, connect the XC7A100T-1CSG324I FPGA board to your computer. Use a USB-to-JTAG cable for this connection. Plug one end of the cable into the JTAG port on the FPGA board and the other end into a USB port on your computer. Ensure the cable is securely attached to avoid interruptions during programming.
If your board includes additional interfaces, such as UART or SPI, you can connect these to external devices for testing or communication. Use jumper wires or compatible connectors for these connections. Keep the workspace organized to prevent accidental disconnections.
Tip: Label your cables and connections if you plan to work on multiple projects. This practice saves time and reduces confusion.
Powering the FPGA Board
Supplying the correct voltage is crucial for the XC7A100T-1CSG324I FPGA board to function properly. Use a compatible power supply that meets the board's requirements. Refer to the table below for the recommended voltage range:
| Voltage - Supply |
|---|
| 0.95V ~ 1.05V |
Connect the power supply to the designated power input on the board. Double-check the polarity and voltage settings before turning on the power. Incorrect settings can damage the FPGA.
If your board includes an onboard power regulator, ensure it is configured correctly. Some boards allow you to select the voltage using jumpers or switches. Consult the user manual for specific instructions.
Note: Always power off the board before making any hardware changes. This precaution prevents electrical damage.
Verifying the Hardware Setup
After connecting and powering the FPGA board, verify the setup to ensure everything is working correctly. Start by checking the power indicator LED on the board. A lit LED usually indicates that the board is receiving power.
Next, open the programming software on your computer. Use the "Hardware Manager" or equivalent tool to detect the FPGA board. If the software recognizes the board, the connection is successful.
For additional verification, run a simple test program on the FPGA. This program could blink an onboard LED or output a signal to an external device. Observe the results to confirm that the board is functioning as expected.
Tip: If the board is not detected, recheck the USB and power connections. Restarting the software or computer can also resolve detection issues.
Creating a Project in Xilinx ISE
Starting a New Project
Starting a new project in Xilinx ISE is the first step toward programming your XC7A100T-1CSG324I FPGA. Open the Xilinx ISE software and select "New Project" from the main menu. A wizard will guide you through the setup process. You will need to name your project and choose a location to save it. Use a descriptive name that reflects the purpose of your design. This practice helps you stay organized, especially when managing multiple projects.
Before diving into the design, it’s essential to understand the basics of hardware description languages (HDLs) like Verilog or VHDL. These languages allow you to describe the behavior of your FPGA design. If you’re new to HDLs, consider starting with simulation tools. Simulations let you test and debug your design before implementing it on hardware. Using development boards with peripherals like LEDs and switches can also enhance your learning experience.
Tip: Keep your project files in a dedicated folder to avoid confusion and ensure easy access.
Selecting the XC7A100T-1CSG324I FPGA Model
After creating your project, you must specify the target FPGA model. In the project settings, select the XC7A100T-1CSG324I from the list of available devices. This step ensures that the software optimizes the design for your specific FPGA. Double-check the part number to avoid compatibility issues.
The software will also prompt you to choose the preferred HDL language. Select the one you’re most comfortable with, whether it’s Verilog or VHDL. If you’re unsure, Verilog is often recommended for beginners due to its simpler syntax.
Note: Choosing the correct FPGA model and language is crucial for a successful design process.
Adding HDL Design Files
Once the project is set up, you can add HDL design files. These files define the logic and functionality of your FPGA. To add a file, right-click on the "Hierarchy" window in Xilinx ISE and select "Add Source." You can create a new file or import an existing one.
Using tools like HDL Coder can streamline this process. HDL Coder generates optimized HDL code, making it easier to detect and fix defects during synthesis. Advanced tools like LegoHDL offer even better defect detection, ensuring a robust design. Additionally, these tools support multiple languages, allowing you to choose the one that best fits your project.
Tip: Organize your HDL files into folders based on functionality. This approach simplifies debugging and future modifications.
Configuring Constraints for the Design
Configuring constraints is a critical step in FPGA design. Constraints define how your design interacts with the physical hardware, ensuring proper functionality. In Xilinx ISE, you use a User Constraints File (UCF) to specify these parameters. Follow these steps to configure constraints for your XC7A100T-1CSG324I FPGA project:
Add the UCF File to Your Project
Open your project in Xilinx ISE Project Navigator. Use the menu option Project > Add Source to include your UCF file. This file contains essential information, such as pin assignments and timing constraints. For example, if your design uses a clock signal, the UCF file specifies which FPGA pin receives the clock input.Verify Pin Assignments
Ensure the pins defined in the UCF file match the physical pins on your FPGA. TheLOCattribute in the UCF file maps logical signals to specific pins. For instance, if your UCF file includesNET "clk" LOC = "P89";, confirm that pin P89 is a valid clock input on the XC7A100T-1CSG324I.Adjust Configuration Options
Right-click on Generate Programming File in the Hierarchy window and select Process Properties. Here, you can modify settings like pull resistors. For example:Use Float to disable internal pull resistors, which improves test coverage.
Choose Pull Up or Pull Down to enable internal resistors, depending on your design requirements.
Build and Test
After configuring constraints, build the FPGA image. Use the ISE iMPACT tool to program the FPGA and verify the design. Testing ensures that your constraints work as intended.
Tip: Double-check your UCF file for errors before building the design. A single mistake in pin assignments can cause the FPGA to malfunction.
By carefully configuring constraints, you ensure your design operates seamlessly with the hardware. This step bridges the gap between your logical design and the physical FPGA.
Programming the XC7A100T-1CSG324I FPGA
Synthesizing the Design
Synthesizing your design is the first step in programming the XC7A100T-1CSG324I FPGA. This process converts your HDL code into a netlist, which represents the logical structure of your design. Open Xilinx ISE and navigate to the "Processes" tab. Right-click on "Synthesize - XST" and select "Run". The software will analyze your code and generate a netlist.
During synthesis, the tool checks for errors in your HDL code. If it detects any issues, review the error messages and correct your code. For example, missing semicolons or incorrect signal declarations are common mistakes. Once the synthesis completes successfully, you can proceed to the next step.
Tip: Always simulate your design before synthesis. Simulations help you identify logical errors early, saving time during debugging.
Generating the Programming File
After synthesis, you need to generate a programming file. This file configures the FPGA with your design. In Xilinx ISE, right-click on "Generate Programming File" under the "Processes" tab and select "Run". The tool will create a .bit file, which is used to program the FPGA.
The XC7A100T-1CSG324I FPGA offers impressive specifications that enhance its performance during this step. Here’s a quick overview:
| Specification | Value |
|---|---|
| Logic Cell Capacity | 2 million |
| I/O Bandwidth | 2.9 Tb/s |
| DSP Performance | 5.3 TMAC/s |
| Total RAM Bits | 4,976,640 |
| Number of I/O | 210 |
| Voltage - Supply | 0.95V ~ 1.05V |
| Operating Temperature | -40℃ ~ 100℃ (TJ) |
| Package / Case | 324-LFBGA, CSPBGA |
| Supplier Device Package | 324-CSPBGA (15x15) |
These specifications ensure that the FPGA can handle complex designs efficiently. Once the .bit file is ready, verify its location in the project directory for easy access during the upload process.
Note: If the programming file generation fails, check the constraints file and synthesis logs for errors.
Uploading the File to the FPGA
Uploading the programming file to the XC7A100T-1CSG324I FPGA is the final step. Connect your FPGA board to your computer using the USB-to-JTAG cable. Open the iMPACT tool in Xilinx ISE and select "Boundary Scan". Right-click in the window and choose "Initialize Chain". The tool will detect the FPGA on the board.
Next, assign the .bit file to the detected FPGA. Right-click on the FPGA icon and select "Assign New Configuration File". Browse to the location of your .bit file and select it. Once assigned, click "Program" to upload the file to the FPGA. The process takes a few seconds, depending on the file size.
After programming, test your design to ensure it works as intended. For example, if your design includes an LED blinking pattern, observe the LEDs on the board to confirm the output matches your expectations.
Tip: If the upload fails, recheck the USB connection and ensure the FPGA board is powered on.
Verifying the Programmed Design
Once you’ve uploaded the programming file to the XC7A100T-1CSG324I FPGA, the next step is to verify that your design works as intended. This process ensures that the FPGA behaves according to your specifications and that there are no errors in the implementation. Follow these steps to confirm the functionality of your programmed design:
Run a Basic Functionality Test
Start by testing simple features of your design. For example, if your design includes an LED blinking pattern, observe the LEDs on the FPGA board. Check if they blink in the expected sequence. If the LEDs do not light up or behave incorrectly, revisit your HDL code and constraints file to identify potential issues.Use a Testbench for Simulation
Before testing on hardware, you can use a testbench to simulate your design. A testbench is a virtual environment that mimics the behavior of your FPGA. It allows you to input test signals and observe the output. Use the simulation tools in Xilinx ISE to run the testbench. Compare the simulation results with your expected output to ensure accuracy.Check Signal Integrity with an Oscilloscope
For more advanced designs, use an oscilloscope to monitor the signals generated by the FPGA. Connect the oscilloscope probes to the relevant pins on the FPGA board. Verify that the signal waveforms match your design specifications. This step is especially useful for designs involving high-speed communication or precise timing.Debug Using the Hardware Manager
The Hardware Manager in Xilinx ISE provides a powerful debugging tool. Open the Hardware Manager and connect to your FPGA board. Use the "Readback" feature to retrieve the current configuration of the FPGA. Compare this with your programming file to ensure they match. If discrepancies exist, reprogram the FPGA and test again.Test External Interfaces
If your design interacts with external devices, such as sensors or displays, test these interfaces thoroughly. For instance, if your FPGA sends data to a display, check if the display shows the correct information. Use jumper wires or connectors to establish secure connections between the FPGA and external devices.
Tip: Keep a log of your test results. Documenting your observations helps you track progress and identify recurring issues.
Iterate and Improve
Verification is an iterative process. If you encounter errors, refine your design and repeat the tests. Small adjustments to your HDL code or constraints file can resolve many issues. Patience and attention to detail are key to achieving a successful design.
By following these steps, you can confidently verify the functionality of your XC7A100T-1CSG324I FPGA. Thorough testing ensures that your design performs reliably in real-world applications.
Storing Configuration to Non-Volatile Memory
Understanding Non-Volatile Memory Options
Non-volatile memory (NVM) plays a crucial role in FPGA configuration. Unlike volatile memory, NVM retains data even when the power is off. This feature ensures that your FPGA design remains intact after a reboot. You can choose between volatile and non-volatile keys for configuration storage. Each option has unique characteristics, as shown below:
| Feature | Volatile Key | Non-Volatile Key |
|---|---|---|
| Key Length | 256 bits | 256 bits |
| Key Programmability | Reprogrammable and erasable | One-time programmable |
| External Battery | Required | Not required |
| Key Programming Method | On-board | Both on-board and off-board |
| Design Protection | Secure against copying, reverse engineering, and tampering | N/A |
Non-volatile keys eliminate the need for an external battery, making them more reliable for long-term use. They also simplify the setup process by supporting both on-board and off-board programming. If your project prioritizes security, volatile keys offer better protection against tampering and reverse engineering.
Tip: Consider your project's requirements, such as security and ease of use, when selecting a memory option.
Saving the Configuration Permanently
To save your FPGA configuration permanently, you need to use a suitable storage method. Nonvolatile flash memory is a popular choice for this purpose. It stores the configuration internally, protecting the bitstream from exposure. Another option is write-once antifuse FPGAs, which provide permanent storage with higher resistance to tampering. The table below highlights these methods:
| FPGA Type | Configuration Storage Method | Security Features |
|---|---|---|
| Nonvolatile Flash Memory | Internal storage in flash memory | Does not expose bitstream, no encryption |
| Write-Once Antifuse FPGAs | Permanent configuration storage | Higher tamper resistance |
To save the configuration, use the iMPACT tool in Xilinx ISE. After generating the programming file, select the option to write the configuration to non-volatile memory. This step ensures that your design loads automatically when the FPGA powers on.
Note: Always verify the configuration file before saving it permanently. Errors in the file can lead to unexpected behavior.
Testing the Stored Configuration
Testing the stored configuration ensures that your FPGA operates as expected. Start by powering off the FPGA board and then turning it back on. Observe whether the design loads automatically. For example, if your design includes an LED blinking pattern, check if the LEDs blink correctly after the reboot.
You can also use debugging tools like the Hardware Manager to confirm the configuration. Connect to the FPGA and read back the stored data. Compare it with the original programming file to ensure accuracy. If you detect any discrepancies, reprogram the FPGA and test again.
Tip: Regularly test your stored configuration, especially after making changes to your design. This practice helps maintain reliability in your FPGA projects.
By understanding and implementing these steps, you can effectively store and test your FPGA configuration in non-volatile memory. This process ensures that your design remains functional and secure over time.
You’ve learned how to set up and program the XC7A100T-1CSG324I FPGA step by step. From installing software to verifying your design, each stage builds your confidence in working with this powerful device. Now, take your skills further by exploring advanced projects like signal processing or machine learning applications. Practice regularly to sharpen your understanding of FPGA programming. Every project you complete brings you closer to mastering this technology.
Tip: Start small with new designs and gradually increase complexity. This approach helps you learn without feeling overwhelmed.
FAQ
What makes the XC7A100T-1CSG324I FPGA unique?
This FPGA offers high logic cell capacity, fast DSP performance, and robust I/O bandwidth. Its compact package and wide operating temperature range make it ideal for diverse applications, including signal processing and embedded systems.
Can I use Vivado instead of Xilinx ISE for programming?
Yes, Vivado supports the XC7A100T-1CSG324I FPGA. It provides advanced features like block design and better synthesis tools. Beginners often prefer Vivado for its intuitive interface.
How do I debug issues during programming?
Use the Hardware Manager in Xilinx ISE or Vivado. Check connections, verify constraints, and simulate your design. Tools like oscilloscopes can help analyze signal integrity for complex designs.
Is it possible to store multiple configurations in non-volatile memory?
No, most non-volatile memory options store only one configuration. For multiple designs, use volatile memory or reprogram the FPGA as needed.
Do I need an external battery for volatile keys?
Yes, volatile keys require an external battery to retain data. Non-volatile keys eliminate this need, offering a more reliable and secure option for long-term use.
Specifications
- TypeParameter
- Factory Lead Time12 Weeks
- Mounting Type
The "Mounting Type" in electronic components refers to the method used to attach or connect a component to a circuit board or other substrate, such as through-hole, surface-mount, or panel mount.
Surface Mount - Package / Case
refers to the protective housing that encases an electronic component, providing mechanical support, electrical connections, and thermal management.
324-LFBGA, CSPBGA - Supplier Device Package
The parameter "Supplier Device Package" in electronic components refers to the physical packaging or housing of the component as provided by the supplier. It specifies the form factor, dimensions, and layout of the component, which are crucial for compatibility and integration into electronic circuits and systems. The supplier device package information typically includes details such as the package type (e.g., DIP, SOP, QFN), number of pins, pitch, and overall size, allowing engineers and designers to select the appropriate component for their specific application requirements. Understanding the supplier device package is essential for proper component selection, placement, and soldering during the manufacturing process to ensure optimal performance and reliability of the electronic system.
324-CSPBGA (15x15) - Number of I/Os210
- Operating Temperature
The operating temperature is the range of ambient temperature within which a power supply, or any other electrical equipment, operate in. This ranges from a minimum operating temperature, to a peak or maximum operating temperature, outside which, the power supply may fail.
-40°C~100°C TJ - Packaging
Semiconductor package is a carrier / shell used to contain and cover one or more semiconductor components or integrated circuits. The material of the shell can be metal, plastic, glass or ceramic.
Tray - Series
In electronic components, the "Series" refers to a group of products that share similar characteristics, designs, or functionalities, often produced by the same manufacturer. These components within a series typically have common specifications but may vary in terms of voltage, power, or packaging to meet different application needs. The series name helps identify and differentiate between various product lines within a manufacturer's catalog.
Artix-7 - Published2009
- Part Status
Parts can have many statuses as they progress through the configuration, analysis, review, and approval stages.
Active - Moisture Sensitivity Level (MSL)
Moisture Sensitivity Level (MSL) is a standardized rating that indicates the susceptibility of electronic components, particularly semiconductors, to moisture-induced damage during storage and the soldering process, defining the allowable exposure time to ambient conditions before they require special handling or baking to prevent failures
3 (168 Hours) - Max Operating Temperature
The Maximum Operating Temperature is the maximum body temperature at which the thermistor is designed to operate for extended periods of time with acceptable stability of its electrical characteristics.
100°C - Min Operating Temperature
The "Min Operating Temperature" parameter in electronic components refers to the lowest temperature at which the component is designed to operate effectively and reliably. This parameter is crucial for ensuring the proper functioning and longevity of the component, as operating below this temperature may lead to performance issues or even damage. Manufacturers specify the minimum operating temperature to provide guidance to users on the environmental conditions in which the component can safely operate. It is important to adhere to this parameter to prevent malfunctions and ensure the overall reliability of the electronic system.
-40°C - Voltage - Supply
Voltage - Supply refers to the range of voltage levels that an electronic component or circuit is designed to operate with. It indicates the minimum and maximum supply voltage that can be applied for the device to function properly. Providing supply voltages outside this range can lead to malfunction, damage, or reduced performance. This parameter is critical for ensuring compatibility between different components in a circuit.
0.95V~1.05V - Base Part Number
The "Base Part Number" (BPN) in electronic components serves a similar purpose to the "Base Product Number." It refers to the primary identifier for a component that captures the essential characteristics shared by a group of similar components. The BPN provides a fundamental way to reference a family or series of components without specifying all the variations and specific details.
XC7A100T - Max Supply Voltage
In general, the absolute maximum common-mode voltage is VEE-0.3V and VCC+0.3V, but for products without a protection element at the VCC side, voltages up to the absolute maximum rated supply voltage (i.e. VEE+36V) can be supplied, regardless of supply voltage.
1.05V - Min Supply Voltage
The minimum supply voltage (V min ) is explored for sequential logic circuits by statistically simulating the impact of within-die process variations and gate-dielectric soft breakdown on data retention and hold time.
950mV - RAM Size
RAM size refers to the amount of random access memory (RAM) available in an electronic component, such as a computer or smartphone. RAM is a type of volatile memory that stores data and instructions that are actively being used by the device's processor. The RAM size is typically measured in gigabytes (GB) and determines how much data the device can store and access quickly for processing. A larger RAM size allows for smoother multitasking, faster loading times, and better overall performance of the electronic component. It is an important factor to consider when choosing a device, especially for tasks that require a lot of memory, such as gaming, video editing, or running multiple applications simultaneously.
607.5kB - Number of Logic Elements/Cells101440
- Total RAM Bits
Total RAM Bits refers to the total number of memory bits that can be stored in a Random Access Memory (RAM) component. RAM is a type of computer memory that allows data to be accessed in any random order, making it faster than other types of memory like hard drives. The total RAM bits indicate the capacity of the RAM chip to store data temporarily for quick access by the computer's processor. The more total RAM bits a component has, the more data it can store and process at any given time, leading to improved performance and multitasking capabilities.
4976640 - Number of LABs/CLBs7925
- Number of Logic Blocks (LABs)7925
- Speed Grade
Speed grade is a specification in electronic components that indicates the maximum operating speed at which the component can reliably function. It is commonly used for integrated circuits, particularly in digital logic devices and programmable logic devices. The speed grade is typically denoted by a number or letter code that correlates to the maximum frequency or propagation delay of the device, influencing its performance in high-speed applications. Components with higher speed grades are capable of faster processing and lower signal delay compared to those with lower grades.
-1 - Number of Registers126800
- RoHS Status
RoHS means “Restriction of Certain Hazardous Substances” in the “Hazardous Substances Directive” in electrical and electronic equipment.
ROHS3 Compliant
Datasheet PDF
- Datasheets :
- PCN Design/Specification :
- PCN Assembly/Origin :
- Environmental Information :
PSoC® CY8C27143/CY8C27243/CY8C27443/CY8C27543/CY8C27643: Unleashing the Programmable System-on-Chip29 February 2024102
MSP430F20x1, MSP430F20x2, and MSP430F20x3: Mixed-Signal Microcontroller29 February 2024135
BC640 PNP Silicon Transistor: BC640, Datasheet, Equivalent07 January 20229782
MSP430 Mixed-Signal Microcontroller: MSP430 Features, Pinout and Datasheet [FAQ]13 January 20223836
M4T32-BR12SH6 Battery: Battery with CrystaL, Datasheet, and Feature08 March 20221357
ZiLOG ZLP12840 OTP MCU: Product Overview29 February 2024189
TOP224YN: Features, Applications, and Datasheet26 October 20231424
NEMA23:Stepper Servo Motor23 March 2022546
Next-Generation Flexible Display Technology - QLED11 October 20214781
Understanding the Basics of I2C Interface Controllers11 June 20251158
The Introduction to PCB Inspection Knowledge and Methods22 December 20214224
An Overview of 12 Important CPU Specs18 December 202112097
Semiconductor Foundry Market Expected to Reach US$ 161.90 Billion By 203126 September 20232111
How 10k Resistor Color Code Stacks Up Against 220 and 100k03 September 20252207
Texas Semiconductor Summit: A Step Towards Overcoming Chip Shortage14 October 20232471
A76 Battery Equivalent Pros and Cons Explained29 August 20251684
Xilinx Inc.
In Stock: 990
United States
China
Canada
Japan
Russia
Germany
United Kingdom
Singapore
Italy
Hong Kong(China)
Taiwan(China)
France
Korea
Mexico
Netherlands
Malaysia
Austria
Spain
Switzerland
Poland
Thailand
Vietnam
India
United Arab Emirates
Afghanistan
Åland Islands
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antigua & Barbuda
Argentina
Armenia
Aruba
Australia
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bonaire, Sint Eustatius and Saba
Bosnia & Herzegovina
Botswana
Brazil
British Indian Ocean Territory
British Virgin Islands
Brunei
Bulgaria
Burkina Faso
Burundi
Cabo Verde
Cambodia
Cameroon
Cayman Islands
Central African Republic
Chad
Chile
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo
Congo (DRC)
Cook Islands
Costa Rica
Côte d’Ivoire
Croatia
Cuba
Curaçao
Cyprus
Czechia
Denmark
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Eswatini
Ethiopia
Falkland Islands
Faroe Islands
Fiji
Finland
French Guiana
French Polynesia
Gabon
Gambia
Georgia
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Honduras
Hungary
Iceland
Indonesia
Iran
Iraq
Ireland
Isle of Man
Israel
Jamaica
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Kosovo
Kuwait
Kyrgyzstan
Laos
Latvia
Lebanon
Lesotho
Liberia
Libya
Liechtenstein
Lithuania
Luxembourg
Macao(China)
Madagascar
Malawi
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Micronesia
Moldova
Monaco
Mongolia
Montenegro
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Korea
North Macedonia
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestinian Authority
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn Islands
Portugal
Puerto Rico
Qatar
Réunion
Romania
Rwanda
Samoa
San Marino
São Tomé & Príncipe
Saudi Arabia
Senegal
Serbia
Seychelles
Sierra Leone
Sint Maarten
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Sudan
Sri Lanka
St Helena, Ascension, Tristan da Cunha
St. Barthélemy
St. Kitts & Nevis
St. Lucia
St. Martin
St. Pierre & Miquelon
St. Vincent & Grenadines
Sudan
Suriname
Svalbard & Jan Mayen
Sweden
Syria
Tajikistan
Tanzania
Timor-Leste
Togo
Tokelau
Tonga
Trinidad & Tobago
Tunisia
Turkey
Turkmenistan
Turks & Caicos Islands
Tuvalu
U.S. Outlying Islands
U.S. Virgin Islands
Uganda
Ukraine
Uruguay
Uzbekistan
Vanuatu
Vatican City
Venezuela
Wallis & Futuna
Yemen
Zambia
Zimbabwe



















