-
Notifications
You must be signed in to change notification settings - Fork 0
Manual
You can download the Heat Core and the TimeBase at https://github.com/hangmann/fpga-heater
Open the “pcores” folder in your project’s directory and paste the Heat Core and the TimeBase directories.
Open your XPS project and rescan the user repositories.
You can easily add the PCores by right-clicking and adding them.
You can now choose the amount of LUT-Oscillators, which create the heat, by changing the value of C_NUM_LUTS.
To avoid the trimming of the heat core, open the Implementation Options File and add -u to the mapper options.
It is mandatory to ignore timing errors for your project, because the Heat Core will produce them in order to work properly. Therefore go to your project options and uncheck “Treat timing closure failure as an error”.
You can either use the example project heat_control, which can be found in the GitHub repository or download the header files and follow these steps:
First, add the C header files to your project
- heat_core.h
- time_base.h
- system_monitor.h
Now you can use the HeatCore with the following functions
- int get_active_heater( unsigned int* heat_core ) - returns the number of active heat blocks (1 - 32)
- void set_active_heater( unsigned int* heat_core, int active ) - sets the number of active heat blocks (1 - 32)
- void enable( unsigned int* heat_core ) - enables the HeatCore
- void disable( unsigned int* heat_core ) - disables the HeatCore
- void increase( unsigned int* heat_core) - increases the HeatCore's intensity level
- void decrease( unsigned int* heat_core) - decreases the HeatCore's intensity level
- int enabled( unsigned int* heat_core ) - returns "1" if heater is enabled
- unsigned int sysmon_get_mcelsius( ) - returns the temperature of your FPGA in millicelsius
- unsigned int sysmon_get_vcc() - returns the voltage of your FPGA
- void wait_for_ms(int duration) - waits for duration ms
Open the UCF file of your project. You can easily constraint your HeatCores by typing e.g.
INST "heat_core_1" AREA_GROUP = "heat_cores";
INST "heat_core_2" AREA_GROUP = "heat_cores";
AREA_GROUP "heat_cores" RANGE = SLICE_X0Y50:SLICE_X61Y111;