- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I am new to nios ii and find some strange things when running just hello_world or memory_test examples programs... First it works fine with these simple programs, but when I do synthesis again and run again, nothing appears in the Nios II console. The downloading and verifying are good as below: Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Processor is already paused Initializing CPU cache (if present) OK Downloading 00080020 ( 0%) Downloading 01000000 ( 0%) Downloading 01010000 (60%) Downloaded 107KB in 1.8s (59.4KB/s) Verifying 00080020 ( 0%) Verifying 01000000 ( 0%) Verifying 01010000 (60%) Verified OK Starting processor at address 0x01000000 However after showing this the Nios II console is just blank. I also tried program the .soc file again or do synthesis again or build the SOPC system again, but it still doesn't work... I am sure the pin assignments are ok and it works before. Any one can tell me the reason? Many thanks.Link Copied
13 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Maybe your JTAG_BASE_ADRESS changed?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Check if jtag_uart is selected as stdin/stdout/stderr device for terminal communication in Run/Debug properties.
Also make sure your program is actually running: if you have a spare LED on your board, toggle it in the very beginning of your program.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
aprado thank you for your reply
but i didn't change JTAG_BASE_ADRESS in software... and I used a same sopc info file- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Cris,
thank you for your answer, but can you tell me how to check the jtag_uart config? I can't find it in the Nios II SBT, thanks a lot!- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi srhikari,
At the moment I have here only a machine with Quartus 9 and old Nios IDE. So I can't tell you the exact steps for Nios SBT for Eclipse you are probably using. Somewhere in bsp properties you should find the configuration settings for stdin/stdout/stderr: you must make sure jtag_uart is selected for them. Then after you have rebuilt the application, select the Run properties for your Nios II hardware: check if jtag_uart is correctly selected as terminal communication device.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I found the jtag configuration in the NiosII SBT and it is set as you said.
However the bad case still happens sometimes... it really looks like that the program is running but the console doesn't show the result. Maybe I will try another board for my project. Thanks a lot for your time.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- the bad case still happens sometimes... --- Quote End --- The 'sometimes' means you definitely have a timing problem. Did you get any critical warning upon Quartus compilation? Is your design correctly constrained?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am new in FPGA design so don't know how to "correctly constrain" the design.
Could you give me some advises what should I do for the timing constrain? I have a camera (D5M) streaming data at 50MHz and NiosII Processor working at 100MHz to store the pixels in SDRAM (by DMA) and do some processing. What should I notice to this design? Thank you very much!- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You'd better read the TimeQuest tutorial for more comprehensive information. Anyway these are the minimal steps:
First of all check if the .sdc file generated by SOPC system is correctly included in project files. If not, add it (usually is cpu.sdc if you kept the default cpu name for Nios) Then create a new sdc file for your project (if not already done) and insert at least these commands: - create_clock for your input clock (if the input pin clock is clk50 it would be: create_clock -name {clk50} -period 20.000 -waveform { 0.000 10.000 } [get_ports {clk50}] - derive_pll_clocks - derive_clock_uncertainty Include also this file into the project and recompile. At the end, check if Quartus notifies any critical warning, about timing requirements not met. If you have them you can follow the hints from the timing optimization advisor (Tools menu). If you can't solve the problem immediately, further analysis with TQ is required in order to find out the failing paths.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It's very detailed thank you Cris!
I also saw these steps without explanation in the reference design, it seems i have to further analysis with TQ for my asynchronous part.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Cris,
I added some timing constraints to my project. Although there is a Critical Warning doesn't meet the timing requirement, the project works most of times. Thank you for your help!- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
"most of the times" is not good. It must ALWAYS work.
If you recognized there are critical timing paths you have to fix them. It can affect your system behaviour in very subtle and impredictable ways. Problems could appear also in other modules, not only jtag uart. First of all make sure you activated the timing driven synthesis option in Quartus settings. Sometimes these timing warnings can be avoided by placing jtag_uart behind a cc bridge and operating it at a lower frequency with respect to system clock. This can help a lot with meeting timing requirements; the price paid is a slight increase system complexity, then more fpga resource used.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Cris, I tried to solve those critical timing warnings, but with the SDC file, the warnings appear just with 'create clock' lines. It is just:
# Original Clock Setting Name: CLOCK_50 create_clock -period "20.000 ns" \ -name {CLOCK_50} {CLOCK_50} --------------------------------------------- create_clock -period "50.0MHz" [get_ports GPIO_1[16]] create_clock -period "50.0MHz" [get_ports GPIO_1[0]] I really don't understand why, CLOCK_50 is a real 50MHz clock pin and when I comment the last two lines the critical warning is still there. Could you help me?![](/skins/images/7B0AB6865064EAE32B30EC9A4E94B48A/responsive_peak/images/icon_anonymous_message.png)
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page