



or1k_startup not loading firmware on Nexys3
by aurabindo.j on Jan 20, 2013 |
aurabindo.j
Posts: 15 Joined: Sep 12, 2010 Last seen: Aug 20, 2015 |
||
Hi,
I`ve synthesised minsoc to have or1k_startup load from the external flash memory in nexys3 the uart firmware. But I`m not even getting garbage output at terminal. Since I`m having only digilent usb cable, I cant use adv_bridge to debug. I generated mcs file from hex with the command ( found from http://opencores.org/forum,OpenRISC,0,3628,1 ) : /opt/Xilinx/12.3/ISE_DS/ISE/bin/lin64/promgen -w -c -s 16384 -spi -p mcs -o uart.mcs -data_file up 0000 uart.hex I flashed the mcs file to nexys3 in windows ( I dont know if there is a method to do it in linux, Digilent plugin for impact fails, other utilities for linux provided by digilent dont support burning to SPI memory) What about the clock frequency required? my current setting with instantiation of DCM_SP in xilinx_dcm.v is CLKDV_DIVISOR = 4, which i believe, will provide 25 Mhz to clk. Also, the CLKIN_PERIOD parameter is set to 10, which i believe, should mean 100 Mhz input clock frequency from external crystal. Here is my full DCM_SP instatitation http://pastebin.com/EbBDGfED Isnt the uart setting 115200,8N1 ? What could be the possible reason for the failure? How can i know if minsoc itself is functional in the fpga without having a debug cable ? Thanks in Advance, Jay Aurabind |
RE: or1k_startup not loading firmware on Nexys3
by jt_eaton on Jan 20, 2013 |
jt_eaton
Posts: 142 Joined: Aug 18, 2008 Last seen: Sep 29, 2018 |
||
Hi,
What could be the possible reason for the failure? How can i know if minsoc itself is functional in the fpga without having a debug cable ? Thanks in Advance, Jay Aurabind There are to many possible reasons to even begin listing them. Heres where I would start. 1) Modify minsoc so that the uart transmit out is driven from the uart receive in instead of minsoc uart. Repeat your build and verify that your nexys3 board can echo back characters. If not then either you had a bad build/program or your terminal has a bad connection to the chip. 2) Divide the clock down by about 128 and drive it out a pin. Does it toggle? Can you measure its frequency? If you don't have a freq meter then add some logic to display a binary number on the Nexys3 hex display. Connect it to the upper bits of the divider and scale it so that you can time the MSB with a stopwatch. That will get you close enough. 3) Pass critical signals like the uart CS or ram cs out a port. This will show you if the code is running. John Eaton |



