Instructions for remote implementation of FPGA laboratories in room EA308 - remote work with FPGAs

When connected to a remote desktop, working with Vivado is no different from working locally. In addition, each remote computer set was equipped with a camera to monitor the condition of the board and the so-called "Virtual buttons". The tool fpga_remote_lab emulates the behaviour of buttons, switches and keyboard using serial connection.

  • Run Device Manager of Windows and look up the number of serial port COM associated with the device „Silicon Labs CP210x USB to UART Bridge”. For each computer the COM port number may be different.
  • Run the emulator software fpga_remote_lab  (icon on the Desktop) and connect to the serial port found. After successful connection, you should see the message "Hardware is connected", as shown below:

  • You can emulate 8 switches: SW0-SW7 and 4 buttons BTN0-BTN3 with the mouse. For the buttons BTN you can also use the keyboard (keys F1-F4).
  • The emulation of the contact bouncing SW/BTN bouncing, is switched on by default, but it can be turned off.
  • The emulator has two modes: buttons emulation and keyboard emulation, the modes can be changed with the option Keyboard Mode. The keyboard uses the same lines as SW6 i SW7, so in the keyboard mode those two switches are unavailable.
  • The option Long key-press emulation: the number of characters sent in the mode is randomly generated. In this mode, you can test the detection of the BREAK signal by FPGA.
  • What to do when the Virtual Buttons cannot find the COM port

Constraint file for virtual buttons

set_property -dict { PACKAGE_PIN H14 IOSTANDARD LVCMOS33 } [get_ports sw_virtual_i[0] ] 
set_property -dict { PACKAGE_PIN G16 IOSTANDARD LVCMOS33 } [get_ports sw_virtual_i[1] ] 
set_property -dict { PACKAGE_PIN F16 IOSTANDARD LVCMOS33 } [get_ports sw_virtual_i[2] ] 
set_property -dict { PACKAGE_PIN D14 IOSTANDARD LVCMOS33 } [get_ports sw_virtual_i[3] ] 
set_property -dict { PACKAGE_PIN G18 IOSTANDARD LVCMOS33 } [get_ports sw_virtual_i[4] ] 
set_property -dict { PACKAGE_PIN F18 IOSTANDARD LVCMOS33 } [get_ports sw_virtual_i[5] ] 
set_property -dict { PACKAGE_PIN E17 IOSTANDARD LVCMOS33 } [get_ports sw_virtual_i[6] ] 
set_property -dict { PACKAGE_PIN D17 IOSTANDARD LVCMOS33 } [get_ports sw_virtual_i[7] ] 
set_property -dict { PACKAGE_PIN C17 IOSTANDARD LVCMOS33 } [get_ports btn_virtual_i[0] ] 
set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports btn_virtual_i[1] ] 
set_property -dict { PACKAGE_PIN E18 IOSTANDARD LVCMOS33 } [get_ports btn_virtual_i[2] ] 
set_property -dict { PACKAGE_PIN G17 IOSTANDARD LVCMOS33 } [get_ports btn_virtual_i[3] ] 

set_property -dict { PACKAGE_PIN D17 IOSTANDARD LVCMOS33 } [get_ports { ps2_clk_virtual_i }]; 
set_property -dict { PACKAGE_PIN E17 IOSTANDARD LVCMOS33 } [get_ports { ps2_data_virtual_i }];

Implementation of laboratory tasks

The laboratory's website contains information on the possibility of performing individual laboratory tasks remotely. The content of the exercises is slightly different from that intended for local implementation. The changes mainly concern:

  • Changes to constraints files necessary for the operation of virtual buttons;
  • Minor modifications of tasks in order to enable their remote execution;
  • Design software changes (for certain groups);
  • Change of the prototype boards on which the tasks are carried out (in the case of some groups).