Greetings!I am Shashank Gangrade, fourth year undergraduate student at Indian Institute of Technology, Mumbai. I am doing an integrated dual degree course with Bachelors in Electrical Engineering and Masters in Microelectronics and VLSI. I have been interested in VLSI Design and Embedded Systems, and would like to apply for GSoC under HDMI2USB project of TimVideos.
I am familiar with HDLs (Verilog and VHDL) and PCB Design Suite(Eagle).
I am interested in the project regarding adding USB 3.0 support to HDMI2USB-misoc-firmware.(link)
I have reading about the USB 3.0 support issue on github. As proposed Daisho USB 3.0 core can be used for this purpose. As Daisho was developed for Altera Cyclone V and the FPGA currently being used is Spartan-6, porting to a different FPGA will be the initial task. Also the Daisho USB 3.0 core uses TUSB1310A transceiver IC, whereas we can use inbuilt high speed transceiver in Spartan-6. Further work will be development of ULPI compatible core initially and then further development of PIPE compatible core for using the high speed transceivers.
I am not sure how the two protocols(ULPI and PIPE) are different? Is related to 2.0 and 3.0? Or is it something related to different protocol at different abstraction layer? I believe this is the core part of project and understanding this should be important.
Also the USB 3.0 support will be through a TOFE expansion board. I have some experience with Eagle for PCB design, but I can also start exploring KiCad for the same.
I am currently exploring the possibility of issuing an high speed FPGA from the HPC Lab of my department so that I can do some initial work on that.
Can the prospective mentors please guide me regarding how to proceed with furthers tasks for GSoC application. I was thinking of implementing basic hardware with misoc-firmware, which I am not familiar with right now.
59(PIPE) + 12(ULPI) + 4(JTAG) = 75
Hi Tim,Thanks for your detailed reply.I would like to focus on the first project
Port the Daisho core to the Spartan 6 FPGA + Create a TOFE expansion board with TUSB1310A. I assume the final goal of this project would be working USB 3.0 port for the Numato Opsis Board.
Regarding validation of pin count for Opsis's TOFE connecter. After a lot of research on USB 3.0 and 2.0 protocols and how it communicates with TUSB1310A, I found this little spreadsheet, which had all the relevant work done before hand.
Available on TOFE:
LVDS Pair (upto 34) + Clock Pairs (upto 7) + Low speed IO (11)
Total IO Pins: 79
Required:59(PIPE) + 12(ULPI) + 4(JTAG) = 75
Total 75 I/O Connections and 3 clock. So the USB 3.0 connection should be alright, which I guessed you guys would have kept in mind during the design iterations of Opsis board.
| DIFF IO* | 34 |
| DIFF GCLK* | 10 |
| IO* | 1 |
| Total IO Pins | 45 |
I have also started to play around with the KiCad for PCB designing part of the project.
In a few days I can submit patch for the current open issues, when I get more acquainted with the software.
I am also looking to get the misoc framework up and running on my system. I am asking around for hardware requirements (FPGA and High speed oscilloscope) in my department.
I have also started looking into the Daisho's USB3.0 Core, which will be the fundamental non-trivial part fo the project. The core is written for Altera Cyclone IV, using the Altera Quartus II build system.
The controller uses a lot of Quartus specific features like PLLs, pipelined DDR I/O, distributed block RAM. So porting to Spartan would require using the Xilinx equivalent tools for the same results. I will read more about the core and USB implementation in coming days and will keep you informed regarding the same.
Although I am looking into these things, what initial qualification tasks would you propose I should do for my GSoC application.
Hi Tim,
Apologies for the late reply. I also tried to connecting with you on IRC but couldn't so I am posting my detailed findings and questions here.
So I had somehow assumed that Opsis had 16x TOFE connector. But with 8x connector, there are total 45 I/O between the expansion board and Opsis board.
For USB 3.0, PIPE interface will have 16bit RX and TX along with clock which makes a total of 34 high speed pins @250MHz, rest of them are control/status bits.
For USB 2.0, ULPI interface will have 8bit data + clock@60MHz, 9 pins rest are control bits.
Referred from datasheet of TUSB1310A IC.
Availability is 45 I/O pins, which includes 34 LVDS (DIFF I/O) +10 GCLK + 1 I/O.
I had a few ideas regarding this,
1. Can we use a MUX kind of logic to share pins between PIPE and ULPI interface. This is because at any point of time only one of them will be used.
2. Can the 34 DIFF I/O pins be configured such that each pin is independent I/O, that will then directly give 68 pins.
3. Assuming the above two don't work, then excluding the requirements for high speed PIPE interface(34) + ULPI interface(9) , only 2 pins will be left for rest all of the control signals and other overhead connections. This will be very close call and will require more research regarding I2C expanders.
If the pin count is not sufficient, then we might need to look into using the high speed transceivers in Spartan-6 instead of using transceiver IC. But this will be a more difficult task because daisho core is developed to using with transceiver IC, and will require a lot more development.
I was also asking around for high speed oscilloscope, and the maximum available was around 5GHz bandwidth. I read somewhere the recommended specifications are upto 10GHz. So will this be a problem for final testing and working of the boards. Is there a cheap alternative to using high speed oscilloscopes.
I had already created the doc you had mentioned. I will also share my first proposal draft by Saturday to get it reviewed.
But, before this pin count validity needs to be verified. Also if possible we can discuss these ideas on IRC by fixing a common time.