1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

Add intial header file for Aurora

This commit is contained in:
Hatim Kanchwala 2020-05-26 14:46:35 +02:00
parent dd1a17c4a5
commit 73e85f2e5a
2 changed files with 400 additions and 0 deletions

317
fpga/etc/vc707_villas.json Normal file
View file

@ -0,0 +1,317 @@
{
"affinity": 1,
"stats": 3,
"name": "villas-acs",
"logging": {
"level": 5,
"faciltities": [
"path",
"socket"
],
"file": "/var/log/villas-node.log",
"syslog": true
},
"http": {
"enabled": true,
"htdocs": "/villas/web/socket/",
"port": 80
},
"plugins": [
"simple_circuit.so",
"example_hook.so"
],
"fpgas": {
"vc707": {
"id": "10ee:7022",
"do_reset": true,
"ips":
{
"hier_0_aurora_0": {
"vlnv": "acs.eonerc.rwth-aachen.de:user:aurora:1.9",
"ports": [
{
"role": "master",
"target": "hier_0_axis_interconnect_0_axis_interconnect_0_xbar:S00_AXIS",
"name": "m_axis"
},
{
"role": "slave",
"target": "hier_0_axis_interconnect_0_axis_interconnect_0_xbar:M00_AXIS",
"name": "s_axis"
}
]
},
"pcie_0_axi_reset_0": {
"vlnv": "xilinx.com:ip:axi_gpio:2.0"
},
"hier_0_axis_data_fifo_1": {
"vlnv": "xilinx.com:ip:axis_data_fifo:2.0",
"ports": [
{
"role": "master",
"target": "hier_0_axis_interconnect_0_axis_interconnect_0_xbar:S04_AXIS",
"name": "AXIS"
},
{
"role": "slave",
"target": "hier_0_axis_interconnect_0_axis_interconnect_0_xbar:M04_AXIS",
"name": "AXIS"
}
]
},
"hier_0_axi_dma_axi_dma_0": {
"vlnv": "xilinx.com:ip:axi_dma:7.1",
"ports": [
{
"role": "master",
"target": "hier_0_axis_interconnect_0_axis_interconnect_0_xbar:S01_AXIS",
"name": "MM2S"
},
{
"role": "slave",
"target": "hier_0_axis_interconnect_0_axis_interconnect_0_xbar:M01_AXIS",
"name": "S2MM"
}
],
"memory-view": {
"M_AXI_MM2S": {
"pcie_0_axi_pcie_0": {
"BAR0": {
"highaddr": 4294967295,
"baseaddr": 0,
"size": 4294967296
}
}
},
"M_AXI_S2MM": {
"pcie_0_axi_pcie_0": {
"BAR0": {
"highaddr": 4294967295,
"baseaddr": 0,
"size": 4294967296
}
}
}
},
"irqs": {
"mm2s_introut": "pcie_0_axi_pcie_intc_0:2",
"s2mm_introut": "pcie_0_axi_pcie_intc_0:3"
}
},
"timer_0_axi_timer_0": {
"vlnv": "xilinx.com:ip:axi_timer:2.0",
"irqs": {
"generateout0": "pcie_0_axi_pcie_intc_0:0"
}
},
"pcie_0_axi_pcie_0": {
"pcie_bars": {
"BAR0": {
"translation": 0
}
},
"axi_bars": {
"BAR0": {
"highaddr": 4294967295,
"translation": 0,
"baseaddr": 0,
"size": 4294967296
}
},
"vlnv": "xilinx.com:ip:axi_pcie:2.9",
"memory-view": {
"M_AXI": {
"hier_0_aurora_0": {
"reg0": {
"highaddr": 28671,
"baseaddr": 24576,
"size": 4096
}
},
"pcie_0_axi_pcie_0": {
"CTL0": {
"highaddr": 536870911,
"baseaddr": 268435456,
"size": 268435456
}
},
"hier_0_axi_dma_axi_dma_0": {
"Reg": {
"highaddr": 16383,
"baseaddr": 12288,
"size": 4096
}
},
"pcie_0_axi_pcie_intc_0": {
"reg0": {
"highaddr": 8191,
"baseaddr": 4096,
"size": 4096
}
},
"timer_0_axi_timer_0": {
"Reg": {
"highaddr": 20479,
"baseaddr": 16384,
"size": 4096
}
},
"hier_0_axi_fifo_mm_s_0": {
"Mem1": {
"highaddr": 57343,
"baseaddr": 49152,
"size": 8192
},
"Mem0": {
"highaddr": 40959,
"baseaddr": 32768,
"size": 8192
}
},
"pcie_0_axi_reset_0": {
"Reg": {
"highaddr": 32767,
"baseaddr": 28672,
"size": 4096
}
},
"hier_0_axis_interconnect_0_axis_interconnect_0_xbar": {
"Reg": {
"highaddr": 24575,
"baseaddr": 20480,
"size": 4096
}
}
}
}
},
"hier_0_axis_interconnect_0_axis_interconnect_0_xbar": {
"num_ports": 5,
"vlnv": "xilinx.com:ip:axis_switch:1.1",
"ports": [
{
"role": "slave",
"target": "hier_0_aurora_0:m_axis",
"name": "S00_AXIS"
},
{
"role": "master",
"target": "hier_0_aurora_0:s_axis",
"name": "M00_AXIS"
},
{
"role": "slave",
"target": "hier_0_axi_dma_axi_dma_0:MM2S",
"name": "S01_AXIS"
},
{
"role": "master",
"target": "hier_0_axi_dma_axi_dma_0:S2MM",
"name": "M01_AXIS"
},
{
"role": "slave",
"target": "hier_0_axi_fifo_mm_s_0:STR_TXD",
"name": "S02_AXIS"
},
{
"role": "master",
"target": "hier_0_axi_fifo_mm_s_0:STR_RXD",
"name": "M02_AXIS"
},
{
"role": "slave",
"target": "hier_0_axis_data_fifo_0:AXIS",
"name": "S03_AXIS"
},
{
"role": "master",
"target": "hier_0_axis_data_fifo_0:AXIS",
"name": "M03_AXIS"
},
{
"role": "slave",
"target": "hier_0_axis_data_fifo_1:AXIS",
"name": "S04_AXIS"
},
{
"role": "master",
"target": "hier_0_axis_data_fifo_1:AXIS",
"name": "M04_AXIS"
}
]
},
"hier_0_axis_data_fifo_0": {
"vlnv": "xilinx.com:ip:axis_data_fifo:2.0",
"ports": [
{
"role": "master",
"target": "hier_0_axis_interconnect_0_axis_interconnect_0_xbar:S03_AXIS",
"name": "AXIS"
},
{
"role": "slave",
"target": "hier_0_axis_interconnect_0_axis_interconnect_0_xbar:M03_AXIS",
"name": "AXIS"
}
]
},
"pcie_0_axi_pcie_intc_0": {
"vlnv": "acs.eonerc.rwth-aachen.de:user:axi_pcie_intc:1.3"
},
"hier_0_axi_fifo_mm_s_0": {
"vlnv": "xilinx.com:ip:axi_fifo_mm_s:4.2",
"ports": [
{
"role": "master",
"target": "hier_0_axis_interconnect_0_axis_interconnect_0_xbar:S02_AXIS",
"name": "STR_TXD"
},
{
"role": "slave",
"target": "hier_0_axis_interconnect_0_axis_interconnect_0_xbar:M02_AXIS",
"name": "STR_RXD"
}
],
"irqs": {
"interrupt": "pcie_0_axi_pcie_intc_0:1"
}
}
}
}
},
"nodes": {
"dma_0": {
"type": "fpga",
"datamover": "dma_0",
"use_irqs": false
},
"dma_1": {
"type": "fpga",
"datamover": "dma_1",
"use_irqs": false
},
"fifo_0": {
"type": "fpga",
"datamover": "fifo_mm_s_0",
"use_irqs": false
},
"simple_circuit": {
"type": "cbuilder",
"model": "simple_circuit",
"timestep": 2.5000000000000001e-5,
"parameters": [
1.0,
0.001
]
}
},
"paths": [
{
"in": "dma_1",
"out": "simple_circuit",
"reverse": true
}
]
}

View file

@ -0,0 +1,83 @@
/** Driver for wrapper around Aurora (acs.eonerc.rwth-aachen.de:user:aurora)
*
* @file
* @author Hatim Kanchwala <hatim@hatimak.me>
* @copyright 2020, Hatim Kanchwala
* @license GNU General Public License (version 3)
*
* VILLASfpga
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************************/
/** @addtogroup fpga VILLASfpga
* @{
*/
#pragma once
#include <villas/fpga/ip_node.hpp>
namespace villas {
namespace fpga {
namespace ip {
class Aurora : public IpNode {
public:
static constexpr const char* masterPort = "m_axis";
static constexpr const char* slavePort = "s_axis";
void dump();
double getDt();
std::list<std::string> getMemoryBlocks() const
{ return { registerMemory }; }
const StreamVertex&
getDefaultSlavePort() const
{ return getSlavePort(slavePort); }
const StreamVertex&
getDefaultMasterPort() const
{ return getMasterPort(masterPort); }
private:
static constexpr const char registerMemory[] = "reg0";
};
class AuroraFactory : public IpNodeFactory {
public:
AuroraFactory();
IpCore* create()
{ return new Aurora; }
std::string
getName() const
{ return "Aurora"; }
std::string
getDescription() const
{ return "Aurora 8B/10B and additional support modules, like, communication with NovaCor and read/write status/control registers."; }
Vlnv getCompatibleVlnv() const
{ return {"acs.eonerc.rwth-aachen.de:user:aurora:"}; }
};
} // namespace ip
} // namespace fpga
} // namespace villas
/** @} */