Forum Discussion
nios-ii-on-die-temperature-sensor example
Hi
im totally new to FPGA's...Im trying to run the following example. http://www.alteraforum.com/forum/showthread.php?t=19108&highlight=on-die+temperature+sensor+example if i load the .pof file supplied all is good :-)... I would like to build&modify the c-code for the project as described in http://www.alterawiki.com/uploads/e/ec/nios_temp_sensor_design.pdf but i cant locate the nios_setup.sopcinfo file. I tried with eth_std_main_system.sopcinfo found at https://cloud.altera.com but then i get this error fatal error: altera_modular_adc_sequencer_regs.h: No such file or directory i cant find this .h file. thanks in advance /Stefan12 Replies
- Altera_Forum
Honored Contributor
You can always regenerate the .sopcinfo file. They aren't interchangeable from design to design - the file describes the address map for a Qsys based system to the Eclipse tools. So what you need to do is launch Quartus. Then launch Qsys Tools -> Qsys. Then open the Qsys file (generally in the top directory of where you unpacked the design example). Then hit generate HDL, save and finish. Now you have the .sopcinfo file that correlates to the temperature sensor design that you can load into Eclipse. Best of luck.
- Altera_Forum
Honored Contributor
Hi thanks for the reply, that solved the problem... Now everything is building in NIOSII. How ever when i try to run the project i get no messages in the console.
Console: Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Processor is already paused Initializing CPU cache (if present) OK Downloading 00008000 ( 0%) Downloading 00009824 (94%) Downloaded 7KB in 0.0s Verifying 00008000 ( 0%) Verifying 00009824 (94%) Verified OK Starting processor at address 0x00008180 How to find out whats wrong(guess thats the plan is it goes to 100% ?) The NIOS-II Console is empty... ive been following the section: Steps to run this program (Software) in NIOS_temp_sensor_design.pdf thanks stefan - Altera_Forum
Honored Contributor
Got the debugger running...I deleted the projects i had in the workspace and now it seems runnnig...So now i can run code from NIOS-II in debugger mode via JTAG on the eval board :-)
I would like to burn it to flash but im having some problems. when i open the .par file from the on die temp example in Quartus v15, its missing the nios_setup.sip and the nios_setup.qip files so my "start compilation" (CTRL+L) fails in quartus. read about the elf2flash but cant get i to work, the flash programmer in v15 seem's to be missing some bottom compared to this 2-6 in this manual. https://www.altera.com/content/dam/altera-www/global/en_us/pdfs/literature/ug/ug_nios2_flash_programmer.pdf thanks in advance - Altera_Forum
Honored Contributor
You don't need the nios_setup.sip file to program the device. That file is a pointer to all the of the library files that you need to simulate your design. You do need the nios_setup.qip file that has a pointer to all of the files you need to map and fit your design. That file can always be regenerated the same way you generate the .sopcinfo file. Open up qsys ,read the .qsys file and generate HDL and you will find the .qip file. Make sure to use the Project --> add/remove files from project feature and add the .qip file in your design. This way the mapper/fitter knows where to look for the all IP files that make up your design project.
In terms of including the NIOS executable in flash memory so you dont need to be tethered to a host computer, perhaps checkout this design example: https://cloud.altera.com/devstore/platform/15.0.0/nios-ii-adc-lcd-controller-design-example-10m50-dev-kit/ Look at the document link and search for the section that is called: Merging the NIOS executable into the FPGA configuration file . That will show you how to get the SW executable merged with hardware image and if stored on flash removes the requirement for a connection to a host computer. Let me know if that helps. - Altera_Forum
Honored Contributor
Hi
thank you very much, just what i needed...Got it running now.. - Altera_Forum
Honored Contributor
Hi the demo project on the on-die temperature, works fine on my eval Max10 board, but the temperature is off (Room temp is 22 deg C)
raw adc 3732 -> -3 via lookup, is it just due to bad calibration ? Or has anybody experienced similar behavior - Altera_Forum
Honored Contributor
Which quartus version did you build your adc on? You might want to try on v14.1. It worked fine for me.
- Altera_Forum
Honored Contributor
im on version 15.0 of quartus...can you have both versions (v15 and v14.1)installed at the same time ?
- Altera_Forum
Honored Contributor
No problem for me. I had both the v14.1 & 15.0.
Btw, another thing that you can check is the Qsys clock, it should be 50Mhz or higher. While the ADC clock should be 10Mhz (or whatever as you declared in the ADC parameter and configured in your PLL). Dont confuse both of them. Otherwise, you may see weird stuffs like temperature reading at minus while it is actually at room temp. - Altera_Forum
Honored Contributor
hi thanks for the tip on clock freq. In the demo there is one clock source@50MHz
and the Altera Modular ADC core setting are as in the picture. http://www.alteraforum.com/forum/attachment.php?attachmentid=10801&stc=1 and setting from Quartus
is there a need for two clock sources ? PLL settings:nios_setup u0 ( .clk_clk (nios_50M_clk),// clk.clk .reset_reset_n (reset_n), // reset.reset_n .led_io_external_connection_export (LED), // led_pio_external_connection.export .sw_io_external_connection_export (SW), // switch_pio_external_connection.export .modular_adc_0_adc_pll_clock_clk (adc_10M_clk), // modular_adc_0_adc_pll_clock.clk .modular_adc_0_adc_pll_locked_export (pll_locked) // modular_adc_0_adc_pll_locked.export );defparam altpll_component.bandwidth_type = "AUTO", altpll_component.clk0_divide_by = 5, altpll_component.clk0_duty_cycle = 50, altpll_component.clk0_multiply_by = 1, altpll_component.clk0_phase_shift = "0", altpll_component.clk1_divide_by = 1, altpll_component.clk1_duty_cycle = 50, altpll_component.clk1_multiply_by = 1, altpll_component.clk1_phase_shift = "0", altpll_component.compensate_clock = "CLK0", altpll_component.inclk0_input_frequency = 20000, altpll_component.intended_device_family = "MAX 10 FPGA", altpll_component.lpm_hint = "CBX_MODULE_PREFIX=all_pll", altpll_component.lpm_type = "altpll", altpll_component.operation_mode = "NORMAL", altpll_component.pll_type = "AUTO", altpll_component.port_activeclock = "PORT_UNUSED", altpll_component.port_areset = "PORT_USED", altpll_component.port_clkbad0 = "PORT_UNUSED", altpll_component.port_clkbad1 = "PORT_UNUSED", altpll_component.port_clkloss = "PORT_UNUSED", altpll_component.port_clkswitch = "PORT_UNUSED", altpll_component.port_configupdate = "PORT_UNUSED", altpll_component.port_fbin = "PORT_UNUSED", altpll_component.port_inclk0 = "PORT_USED", altpll_component.port_inclk1 = "PORT_UNUSED", altpll_component.port_locked = "PORT_USED", altpll_component.port_pfdena = "PORT_UNUSED", altpll_component.port_phasecounterselect = "PORT_UNUSED", altpll_component.port_phasedone = "PORT_UNUSED", altpll_component.port_phasestep = "PORT_UNUSED", altpll_component.port_phaseupdown = "PORT_UNUSED", altpll_component.port_pllena = "PORT_UNUSED", altpll_component.port_scanaclr = "PORT_UNUSED", altpll_component.port_scanclk = "PORT_UNUSED", altpll_component.port_scanclkena = "PORT_UNUSED", altpll_component.port_scandata = "PORT_UNUSED", altpll_component.port_scandataout = "PORT_UNUSED", altpll_component.port_scandone = "PORT_UNUSED", altpll_component.port_scanread = "PORT_UNUSED", altpll_component.port_scanwrite = "PORT_UNUSED", altpll_component.port_clk0 = "PORT_USED", altpll_component.port_clk1 = "PORT_USED", altpll_component.port_clk2 = "PORT_UNUSED", altpll_component.port_clk3 = "PORT_UNUSED", altpll_component.port_clk4 = "PORT_UNUSED", altpll_component.port_clk5 = "PORT_UNUSED", altpll_component.port_clkena0 = "PORT_UNUSED", altpll_component.port_clkena1 = "PORT_UNUSED", altpll_component.port_clkena2 = "PORT_UNUSED", altpll_component.port_clkena3 = "PORT_UNUSED", altpll_component.port_clkena4 = "PORT_UNUSED", altpll_component.port_clkena5 = "PORT_UNUSED", altpll_component.port_extclk0 = "PORT_UNUSED", altpll_component.port_extclk1 = "PORT_UNUSED", altpll_component.port_extclk2 = "PORT_UNUSED", altpll_component.port_extclk3 = "PORT_UNUSED", altpll_component.self_reset_on_loss_lock = "OFF", altpll_component.width_clock = 5; endmodule
not sure what this is, should it be 50e6(50MHz) ? ? ? altpll_component.inclk0_input_frequency = 20000, /thanksall_pll alt_pll_inst ( .areset ( reset ), .inclk0 ( clk ), .c0 ( adc_10M_clk ), .c1 ( nios_50M_clk), .locked ( pll_locked ) );