Forum Discussion
How to let FPGA get access to HPS pins
I've got an Arrow SOCkit and it has a USB-UART connected to the HPS' pins, but I'd like to access the UART from the FPGA logic. Is this possible? If so how is it done?
Thank you!17 Replies
- SanaGuezguez
New Contributor
Hello everyone,
I'm having an issue implementing an FPGA to HPS communication and vice versa. I'm using the MitySOM 5csx with a Cyclone V SoC. The purpose of the project is to setup the bridges between the HPS and FPGA in such a way that a program running on the HPS will send data to the FPGA which will process it and return a result. I've generated a QSYS design, composed by the HPS (with Cyclone V settings), two fifos, a clock bridge, a clock and an SDRAM.
When I run the simulation and synthesis and the TCL pin-assignment script generated by Qsys everything works fine. The issue comes when I try to compile the whole design, because I get an error message saying there are 375 IO input pads in the design, but only 331 IO input pad locations are available on the device. I don't know what I'm missing or doing wrong. Any suggestion is welcome - Altera_Forum
Honored Contributor
Have you got the ARM processor up and running?
LoanIO only works if the processor is running because the system control registers must be configured by software running on the processor in order to allow the LoanIO interface to run. You'll need to generate a design which include the hard processor system with the require LoanIO parameters. From there you will need to generate a BSP and compile a preloader. Once you have the preloader up and running you'll need a simple bare metal program of an infinite loop resetting the watchdog (if enabled) to stop the processor crashing. The preloader will use the BSP information to set the system control registers to the required. The reason RX works is that the ports default to input which means you can get data in without the processor running. However for TX you need to get be able to set the TX pin to be an output which can only be done once the processor is running. - Altera_Forum
Honored Contributor
acyril, did you find solution to this?
- Altera_Forum
Honored Contributor
--- Quote Start --- Thanks Marcopoliptica. After hours of trying all these different multiplexing options I have got it working ;) I used to Pin Assignments window to identify the correct GPIO routing for the UART/USB external connector (PIN_B25 and PIN_C25). Both of these are NOT on the loan 61 and 62 but in fact 49 and 50! ... so I used the same LOANIO method and exported 49 and 50 which worked and the fitter assigned them to the desired pins. 61 and 62 would always (correctly) get fitted to PIN_B22 and PIN_G22 respectively, but of course the external connector is physically routed to the above pins. Thanks again for your help, I can now use the external UART/USB with my softcore processor ;) RE the voltage error, yes I later realised I just change them from '2.5 V (default)' to '3.3-V LVTTL' and it compiles. --- Quote End --- Hi, I know this thread was started long ago. I have same issue as discussed here and need your help with this. I am playing around with the de1 soc board, so I implemented a UART module and need to test it on the board. However, even after following your solution of loaning 49 and 50, I am unable to get it to work. I have LOAN_IO_OE[49] assigned to 1'b0 and LOAN_IO_OE[50] assigned to 1'b1. LOAN_IO_IN[49] and LOAN_IO_OUT[50] connected to RX and TX of the FPGA logic respectively. The TX light (of the UART) on the board does not blink when I execute the logic to transfer via UART. Not sure where the problem could be from. I hope you can help me with this. - Altera_Forum
Honored Contributor
Hi,
I try to route HPS CAN1 & CAN2 Peripheral pins over to FPGA I/O, since those are available at the connector. My question is mainly, whether it is possible to pick whatever I/O PIN I desire for the routed HPS CAN PINs (CANx_RX, CANx_TX)... Thanks! Ran - Altera_Forum
Honored Contributor
Hi, If I may interfere with the discussion... I'm using the DE0-Nano-SoC Kit, and would like to access both HPS CPS CAN1/2 peripherals. The convenient way looks like attaching my CAN PHY to the FPGA expansion pins. Therefore, I need to route the CAN TX/RX HPS pins to existing FPGA I/O. Can I choose which FPGA PIN with be used? Thank you 😊Ran
- Altera_Forum
Honored Contributor
Hi,
I'm having similar problem. I cannot get to output anything on the pins I loan to FPGA from HPS. I'm just trying to have four GPIO pins and make the LEDs of the HPS on SoCKit board blink. According to the schematic, GPIO 53:56 are connected to the LEDs. When I compile, Quartus is assigning the right pins to these LEDs. But I don't see the LEDs blink. In the peripherals mux table, there is 'mux_select_1', mux_select_2' and 'mux_select_3'. What is this? What does it do? Karthik - Altera_Forum
Honored Contributor
The loan_io_in, loan_io_out and loan_io_oe conduits are all 66 bits wide to allow for all possible loan I/O signals. I'm only using some of the loan I/O signals though, and I'm setting the bits in loan_io_oe to set the loan I/O signals I use to be inputs or outputs as required, and providing a method of driving my loan I/O outputs and reading my loan I/O inputs. I'm confused about what I should do with the bits in loan_io_in, loan_io_out and loan_io_oe that correspond to the loan I/O signals I'm not using though, as these signals are mapped to peripherals instead of loan I/O - what should I set these bits to?
- Altera_Forum
Honored Contributor
Hello all,
Coming from here (http://www.alteraforum.com/forum/showthread.php?t=48691) I'm trying to edit this into my verilog project.. I have built the HPS system, and found, the verilog files. From the verilog file I found three things could be done in the middle, but I don't understand how to get this right.. Do I need to call the hps_0 in my toplevel file? Or is it sufficient to declare the inputs and use them myself? (since the generated verilog file has the input declarations declared, and then calls the HPS_0) The "hps_io_hps_io_gpio_inst_LOANIO 01..x" do they need to be connected to the pins, (and declared in the QSF pin planning) despite that they are connected to the hardprocessor? Does the QIP file do anything to configure anything? Checking in after hrs, Will delve into this again tomorrow (Maybe find the golden formula), but if anyone knows and could save me and future readers some compiler time, Id be very thankfull. - Altera_Forum
Honored Contributor
Please help me!
I try to use Loan IO, there are a few issues. What should be the procedure for loading FPGA and HPS work Loan IO? Should HPS configured FPGA? From what source it is necessary to configure the FPGA and HPS? That in addition Loan IO need to include HPS? Please share 100% of the working project. For any development board.