This tutorial will show how to get started with Instant SoC. It is assumed that the user is familiar with Vivado or a similar VHDL simulator.
Start Instant SoC application that is found in the Windows start menu.
Select or create a folder where you want your project to be placed.
Select the gcc root directory. This is located in the [Instant SoC install directory]/gcc.
Select “Create Example”.
Press “Setup Project Folder” to generate necessary files.
Now start Visual Studio Code. Open the folder you created, [File] – [Open Folder…]
Click on the “example.cpp” file to open it.
The “example-cpp” file looks like:
#include "fc_io.h" #include "fc_system.h" int main() { //% hw_begin FC_IO_Clk clk(100); FC_IO_Out counter(8); FC_System_Timer timer; //% hw_end int counter_value = 0; timer.Start(1, TU_us); for (;;) { timer.WaitTimer(); counter = counter_value++; } }
The hardware (peripherals) are defined between //% hw_begin and //%hw_end. The first hardware component has to be a clock. In this case the system clock (clk) is 100 MHz.
Build the system by pressing Ctrl+Shift+B.
You can now see that “example.vhd”, “example_TB.vhd” and “example.vh” files are created in your folder.
Now we will add an UART that sends a “Hello World” message. Place the cursor in the “hw” section.
When you type “FC_IO” a drop-list with all IO classes is displayed.
Add an FC_IO_UART_TX object with the baudrate as constructor argument.
Add a stream “hello world” message. The code should now look like:
#include "fc_io.h" #include "fc_system.h" int main() { //% hw_begin FC_IO_Clk clk(100); FC_IO_Out counter(8); FC_IO_UART_TX tx(115200); FC_System_Timer timer; //% hw_end int counter_value = 0; tx << "Hello World!"; timer.Start(1, TU_us); for (;;) { timer.WaitTimer(); counter = counter_value++; } }
Build the system (Ctrl+Shift+B). This results in the following entity:
-- library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; entity example is port( clk : in std_logic; counter : out std_logic_vector(7 downto 0); tx : out std_logic ); end entity; architecture IMPL of example is ...
Open Vivado (or other vhdl simulator) and create a new project. Add these two vhdl files to the project (simulation). Select tutorial_TB as top-level and run the simulation.
The “example.vhd” can be used as a top level or a lower level component.