1. Introduction
While browsing the Internet, I came across one interesting FPGA board. The board has a GW1NSR-LV4C FPGA chip from the Chinese company GoWin Semiconductor Corp, this company was founded in 2014. The headquarters and main development office is located in China. Also, the board was equipped with a DVP camera interface and an HDMI interface, a built-in USB-JTAG debugger and a Cortex-M3 core with 4608 LUT. In addition, this board had a very tempting price of $14, so I decided to buy it for my experiments.
2. Board Description
The board came to me in a transparent plastic case inside which were two pin strips, a USB Type-C wire and the board itself.
Tang Nano 4K Board Specifications:
All documents for this board are located here at this link: Board Manual
3. IDE License
In order to work with this board, you need to download and install the GOWIN EDA development environment. But here various difficulties may arise. Therefore, I will write in detail how to do it. I'll show you how to install a development environment for Windows, but there are versions for LInux as well.
1. Register on the website www.gowinsemi.com
2. Downloading the GOWIN EDA development environment.
There are two versions (at the time of publication of the article):
- Gowin V1.9.8.03 Education Edition is a heavily cut version for educational institutions. Does not require a license.
- Gowin V1.9.8.06 Standard Edition is a standard full-featured item. Requires a license. The license is free, but it is impossible to get it on the official site. The form on the site does not work.
3. How to get a license. There are several options.
a) There is a so-called floating license. The server ip and port are shown below. But she has two drawbacks. The first disadvantage of the Float license is only support IDE version before 1.9.8 and the second disadvantage is that it requires a permanent connection to the network to use it.
b) The second way is to find an official representative company that can issue a license. One of these representatives is Sipeed, which I contacted. Here is a link to the form and email address where you can send an email: https://wiki.sipeed.com/hardware/en/tang/Tang-Nano-Doc/install-the-ide.html#Get-license-from-sipeed
But there is one peculiarity here. There is a column in the form where you need to specify the MAC address of your network card, otherwise the license will not work. For many, this can be intimidating for security reasons. Since the MAC address is a unique identifier assigned to each network card. In addition, if you want to install the IDE on another computer and work on it, you will not be able to do this.
But there is one way to avoid this. In the device manager in Network adapters(1), you need to select a Network card(2) and press the right mouse button and select Properties(3) from the pop-up menu.
In the properties window of the network card, go to the Advanced(1) tab, select the Network Address(2) item and in the right part, the Value(3) item will appear where you can enter any MAC address.
After filling out the form and sending it to the specified e-mail address, in a few days you will receive an email containing two license files, one license for the version of the IDE below 1.9.8 and the other for the version above 1.9.8. These licenses are issued for a period of one year.
4. IDE Overview
Gowin EDA is an easy-to-use IDE that provides a one-stop solution from design entry to validation. The IDE uses its own Gowin Synthesis to synthesize projects. As tools there are:
- Programmer - to download the bitstream files to the chip.(SUG502)
- IP Core Generator - is used to generate hard and soft IP addresses that you can call to implement the required functionality.(SUG100E)
- Analysis Oscilloscope - it is a digital signal analyzer.(SUG114)
- Physical Constraints Editor (Gowin FloorPlanner) - reading and editing the attributes and locations of I/O, Primitive, Block (BSRAM and DSP). It also supports the generation of new placement and constraints files according to your configuration. These files define the I/O attributes, primitives and locations, etc.(SUG935E)
- Timing Constraints Editor - supports multiple timing constraints commands, including clock constraints, I/O constraints, path constraints, and clock report editing.(SUG940E)
- Schematic Viewer - Schematic Viewer uses common component symbols to build circuits, including adders, multipliers, registers, and gates, non-gates, and inverters, etc.(SUG100E)
I will not focus on the interface, it is described in sufficient detail in the documentation(SUG100E). We find an example of blinking an LED and assemble it. Examples can be found at: https://github.com/sipeed/TangNano-4K-example. There are several examples such as flashing an LED, outputting an image from a camera connected to a DVP to HDMI, and outputting a test image via HDMI. Since flashing the LED is too boring and I don't have a camera, I decided to choose the third option for demonstration.
We open the example and see on the Design (1) tab the files of our project and in the Design Summaru (2) window a brief description of our microcircuit.
On the Process tab, click Synthesize(1). We look at the console (3) and make sure that the synthesis was successful. You can also open Synthesis Report(1) and see a detailed report. I highlighted only the summary report(2) in which you can see that only 459 logic elements are used, which is only 10%.
Next, click the Place & Route(1) item and also look at the console (3) and make sure that the process went well. There is also a detailed report(2) on the placement process here.
We can also look at the FloorPlanner(1) item on the Process(2) tab and see what elements are being used.
To do this, in the FloorPlanner window in the Chip Array tab, right-click and select Show Multi-View.
And we will see how the logical elements were used.
Next, to upload the finished project file to the board. Click on Program Device.
The programmer window opens. It is already configured by default on our FPGA chip. Click the Programm icon and at the bottom make sure that the download process was successful.
Difficulties may arise here due to a long cable or USB port. I did not detect a cable inserted into the USB on the front panel of the system unit. When I plugged the cable into the motherboard's USB port, everything worked.
After uploading the file to the board, we connect the HDMI cable to the TV and observe the result.
Summary
The board is an interesting very cheap and efficient chip. I liked the development environment, it's quite fast. All examples worked great. I also liked the presence of a DVP interface for the camera and an HDMI output. I have a couple of projects where this board can be applied, so I will continue to try to experiment with it.
Top Comments