FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6355 Discussions

Virtual JTAG Mega function transfer speed is about 6kbps. Is there any other IP with a higher speed ?

ABoel
Novice
640 Views

I'm using DE10-Lite Board to project a rgb picture on a 480 by 640 VGA screen.

The picture size 460800 bytes. So 12 times 480*640 pixels.

Due to limited resources on DE-10 LITE platform I have to upload this picture at startup.

I'm using Virtual JTAG mega function along with tcl script on Quartus_stp to upload this file into the SDRAM.

The upload speed is about 6kbps.So it takes about between 10 to 11 minutes to upload the picture file.

 

tclscreen.JPG

 

Intel Hex format:

hexfile.JPG

 

 

 

 

After that I'm able to see the picture on the VGA screen.

 

For example the .sof file generated for this project is about 3.2MB and it loads within 5 seconds.

 

Is there a faster IP Mega function that can do this file transfer in seconds and pairing with Quartus_stp or custom C#, C to host the file. ? Let me know if there is a sample project I can sample from.

 

Find tcl script used for the file transfer below

 

 

#upload file to SDRAM using VJTAG   global usbblaster_name global test_device foreach hardware_name [get_hardware_names] { puts $hardware_name if { [string match "USB-Blaster*" $hardware_name] } { set usbblaster_name $hardware_name } } puts "\nSelect JTAG chain connected to $usbblaster_name.\n" foreach device_name [get_device_names -hardware_name $usbblaster_name] { puts $device_name if { [string match "@1*" $device_name] } { set test_device $device_name } } puts "\nSelect device: $test_device.\n";   #open_device -hardware_name $usbblaster_name -device_name $test_device ###################################################################################################### #########decimal to binary string############## proc dec2bin n { incr n 0 set r {} while {$n > 0} { set r [expr {$n & 1}]$r set n [expr {$n >> 1}] } return $r } #########end decimal to binary string###########   ##############3 MAX 10 lite########################## open_device -hardware_name {USB-Blaster [USB-0]} -device_name {@1: 10M50DA(.|ES)/10M50DC (0x031050DD)}   ###########################TEST################################# for {set i 0} {$i < 0} {incr i} { set ln [format %08s [dec2bin $i]] device_lock -timeout 10000 device_virtual_ir_shift -instance_index 0 -ir_value 3 -no_captured_ir_value puts "writing=$ln" device_virtual_dr_shift -dr_value 3deaf4321 -instance_index 0 -length 35 -no_captured_dr_value -value_in_hex device_virtual_ir_shift -instance_index 0 -ir_value 0 -no_captured_ir_value device_unlock after 100 } ##########################END TEST##############################   ########################File transfer module###############################   #set fname "C:\\vga1short.hex" #set fname "C:\\vga1.hex" set fname "C:\\vga2.hex" #set fname "C:\\secuence.hex"     set file [open $fname r] set num_row 0 set segment 0     #while { $num_row <1024 && [gets $file line]>= 0 } { while { [gets $file line]>= 0 } { set segment_data [string range $line 1 12] set EOF_len [string length $line] if { $segment_data =="020000040001" | $segment_data =="020000040002" | $segment_data =="020000040003" | $segment_data =="020000040004" } { if { $segment_data =="020000040001" } { set segment 1 } elseif { $segment_data =="020000040002" } { set segment 2 } elseif { $segment_data =="020000040003" } { set segment 3 } elseif { $segment_data =="020000040004" } { set segment 4 } #incr segment puts $segment_data } elseif { $EOF_len<15} { puts "End of data" } else { incr num_row set address [string range $line 3 6] set data [string range $line 9 12] #puts "address:$segment$address : $data"   ##################### JTAG TRANSFER ####################### set ln $segment$address$data #set ln $data set data_length [string length $ln] device_lock -timeout 10000 device_virtual_ir_shift -instance_index 0 -ir_value 3 -no_captured_ir_value #puts "writing=$ln" device_virtual_dr_shift -dr_value $ln -instance_index 0 -length 35 -no_captured_dr_value -value_in_hex device_unlock #after 1000 ##################### END JTAG TRANSFER ####################### } } puts "rows:$num_row" close $file   ########################End File transfer module###############################   close_device  

 

 

 

 

 

 

0 Kudos
1 Solution
ABoel
Novice
550 Views
Got it.
In the meantime I came accros an article using jtag_atlantic dll with C# and using JtagUART IP. Doqnload happens in seconds.

View solution in original post

0 Kudos
2 Replies
ShafiqY_Intel
Employee
598 Views

Hi ABoel,

 

You can use Intel FPGA Download Cable II ( previously known as USB Blaster II) for faster speed rate.

Intel FPGA Download Cable II can support up to 24 MHz TCK frequency. 

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_usb_blstr_ii_cable.pdf

 

Regards,

Matt

0 Kudos
ABoel
Novice
551 Views
Got it.
In the meantime I came accros an article using jtag_atlantic dll with C# and using JtagUART IP. Doqnload happens in seconds.
0 Kudos
Reply