Using FPGA: Difference between revisions
(40 intermediate revisions by 2 users not shown) | |||
Line 12: | Line 12: | ||
=== FPGA Interfaces === | === FPGA Interfaces === | ||
'''APF9328''': [[IMX9328-Spartan3 interface description]] | * '''APF9328''': [[IMX9328-Spartan3 interface description]] | ||
'''APF27''': [[IMX27-Spartan3A interface description]] | * '''APF27''': [[IMX27-Spartan3A interface description]] | ||
'''APF51''': [[IMX51-Spartan6 interface description]] | * '''APF51''': [[IMX51-Spartan6 interface description]] | ||
'''APF6_SP''': [[APF6_SP Interfaces description]] | * '''APF6_SP''': [[APF6_SP Interfaces description]] | ||
* '''OPOS6UL_SP''': [[OPOS6UL_SP Interfaces description]] | |||
* '''OPOS93_SP''': [[OPOS93_SP Interfaces description]] | |||
==== Accessing the FPGA address domain from Linux userspace ==== | |||
* [[FPGA_registers_access_from_Linux_userspace_on_APF9328,_APF27_SP,_APF51_SP_and_OPOS6UL_SP | APF9328, APF27_SP, APF51_SP and OPOS6UL_SP]] | |||
* [[FPGA_registers_access_from_Linux_userspace_on_APF6_SP | APF6_SP]] | |||
* [[FPGA_registers_access_from_Linux_userspace_on_OPOS93_SP | OPOS93_SP]] | |||
==== Accessing the FPGA address domain from Linux kernel ==== | |||
* [[FPGA_registers_access_from_Linux_kernel_on_OPOS93_SP | OPOS93_SP]] | |||
| width="50%" | | | width="50%" | | ||
=== | === FPGA designing on Armadeus platforms === | ||
These examples give the basis to make VHDL design for FPGA. | |||
* | *'''APF9328''', '''APF27''', '''APF51''', '''OPOS6UL_SP''': | ||
* | ** [[Simple blinking LED | LED]] | ||
* [[ | ** [[A simple design with Wishbone bus | Complete example with button and led on wishbone bus communication and Linux drivers]] | ||
*'''APF6_SP''' | |||
** [[APF6_SP_FPGA_designing | FPGA designing]] | |||
*'''OPOS93_SP''' | |||
** [[OPOS93_SP_FPGA_designing | FPGA designing]] | |||
|---------------- | |---------------- | ||
Line 30: | Line 46: | ||
| width="50%" | | | width="50%" | | ||
=== | === Configuring Armadeus platform's FPGA === | ||
'''Platforms''' | |||
* '''APF9328''', '''APF27''', '''APF51''', '''OPOS6UL_SP''': [[APF9328_APF27_APF51_OPOS6UL_SP FPGA_configuration | Configure APF9328, APF27, APF51 or OPOS6UL_SP FPGA]] | |||
* '''APF6_SP''': [[APF6_SP_FPGA_configuration | Configure APF6_SP FPGA]] | |||
* '''OPOS93_SP''': [[OPOS93_SP_FPGA_configuration | Configure OPOS93_SP FPGA]] | |||
'''Tools''' | |||
* [[FPGA_loader | FPGA loader Linux driver]] | |||
| width="50%" | | | width="50%" | | ||
Line 49: | Line 66: | ||
'''Altera''' | '''Altera''' | ||
* [[Quartus | Quartus | * [[Quartus | Quartus Prime (Altera/Intel's free devt tool)]] | ||
* [[Modelsim-Altera | Install Modelsim-Altera (starter edition)]] | * [[Modelsim-Altera | Install Modelsim-Altera (starter edition)]] | ||
'''Efinix''' | |||
* [[Efinity]] | |||
'''Lattice''' | |||
* [[IceCube | Install IceCube]] | |||
* [[Diamond | Install Lattice Diamond]] | |||
'''Microsemi''' | |||
* [http://www.fabienm.eu/flf/installing-libero-on-debian-9/ Install Libero] | |||
|---------------- | |---------------- | ||
Line 63: | Line 90: | ||
For complex projects, POD should be used to simplify design. | For complex projects, POD should be used to simplify design. | ||
==== [[ | ==== [[FuseSoC]] ==== | ||
FuseSoC is a builder written in Python used to automatize FPGA constructions | |||
==== CactusII ==== | |||
[http://funbase.cs.tut.fi/ Graphical IDE] for managing FPGA/ASIC design with IPX-ACT standard. | |||
| width="50%" | | | width="50%" | | ||
=== HDL === | |||
===VHDL === | ===VHDL === | ||
Line 81: | Line 110: | ||
=== Verilog === | === Verilog === | ||
* [https://www.veripool.org/wiki/verilator Verilator] an High speed verilog simulator | |||
* [http://iverilog.icarus.com/ Icarus] Famous open-source verilog simulator | |||
* [https://symbiyosys.readthedocs.io/en/latest/ SymbiYosys] open-source Verilog formal verification | |||
=== Synthesizable Synchronous HDL === | |||
==== [[Migen]] ==== | |||
With migen, it's possible to develop FPGA design in Python then generate Verilog for synthezis. | |||
==== [[Chisel]] ==== | |||
With Chisel, it's possible to develop FPGA design in Scala then generate C++ model for simulation and Verilog model for synthesis. Armadeus system can help you to integrate a Chisel project on Armadeus board. | |||
==== [[SpinalHDL]] ==== | |||
[https://github.com/SpinalHDL/SpinalHDL Another HDL generator] (VHDL) written in Scala. | |||
|---------------- | |---------------- | ||
Line 99: | Line 143: | ||
''' CycloneV''' | ''' CycloneV''' | ||
* [https://www.altera.com/products/fpga/cyclone-series/cyclone-v/overview.html CycloneV overview from altera] | * [https://www.altera.com/products/fpga/cyclone-series/cyclone-v/overview.html CycloneV overview from altera] | ||
''' OpenSource ''' | |||
* [http://www.fabienm.eu/flf/wp-content/uploads/2017/05/fpgamap-1.svg OpenSource FPGA map] | |||
| width="50%" | | | width="50%" | | ||
|} | |} |
Latest revision as of 17:31, 9 October 2025
Developing on the APF FPGA
FPGA Interfaces
Accessing the FPGA address domain from Linux userspaceAccessing the FPGA address domain from Linux kernel |
FPGA designing on Armadeus platformsThese examples give the basis to make VHDL design for FPGA.
|
Configuring Armadeus platform's FPGAPlatforms
Tools |
Design ToolsDescription of tools used to simulate, to synthesize, and to download/configure FGPA. Xilinx Altera Efinix Lattice Microsemi |
Automatize FPGA design makingPeripherals On DemandFor complex projects, POD should be used to simplify design. FuseSoCFuseSoC is a builder written in Python used to automatize FPGA constructions CactusIIGraphical IDE for managing FPGA/ASIC design with IPX-ACT standard. |
HDLVHDL
Verilog
Synthesizable Synchronous HDLMigenWith migen, it's possible to develop FPGA design in Python then generate Verilog for synthezis. ChiselWith Chisel, it's possible to develop FPGA design in Scala then generate C++ model for simulation and Verilog model for synthesis. Armadeus system can help you to integrate a Chisel project on Armadeus board. SpinalHDLAnother HDL generator (VHDL) written in Scala. |
LinksSome useful links. Wishbone Spartan CycloneV OpenSource |
|