SimpleVOut  1.0.0 Initial
A Simple FPGA Core for Creating VGA/DVI/HDMI/OpenLDI Signals
xilinx-zynq.h
Go to the documentation of this file.
1 /*
2  * Xilinx SystemC/TLM-2.0 Zynq Wrapper.
3  *
4  * Written by Edgar E. Iglesias <edgar.iglesias@xilinx.com>
5  *
6  * Copyright (c) 2016, Xilinx Inc.
7  * All rights reserved.
8  *
9  * Permission is hereby granted, free of charge, to any person obtaining a copy
10  * of this software and associated documentation files (the "Software"), to deal
11  * in the Software without restriction, including without limitation the rights
12  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13  * copies of the Software, and to permit persons to whom the Software is
14  * furnished to do so, subject to the following conditions:
15  *
16  * The above copyright notice and this permission notice shall be included in
17  * all copies or substantial portions of the Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25  * THE SOFTWARE.
26  */
27 
28 #include "systemc.h"
29 
30 #include "tlm_utils/simple_initiator_socket.h"
31 #include "tlm_utils/simple_target_socket.h"
32 #include "tlm_utils/tlm_quantumkeeper.h"
33 
34 #include "remote-port-tlm.h"
35 #include "remote-port-tlm-memory-master.h"
36 #include "remote-port-tlm-memory-slave.h"
37 #include "remote-port-tlm-wires.h"
38 
40 : public remoteport_tlm
41 {
42 private:
43  remoteport_tlm_memory_master rp_m_axi_gp0;
44  remoteport_tlm_memory_master rp_m_axi_gp1;
45 
46  remoteport_tlm_memory_slave rp_s_axi_gp0;
47  remoteport_tlm_memory_slave rp_s_axi_gp1;
48 
49  remoteport_tlm_memory_slave rp_s_axi_hp0;
50  remoteport_tlm_memory_slave rp_s_axi_hp1;
51  remoteport_tlm_memory_slave rp_s_axi_hp2;
52  remoteport_tlm_memory_slave rp_s_axi_hp3;
53 
54  remoteport_tlm_memory_slave rp_s_axi_acp;
55 
56  remoteport_tlm_wires rp_wires_in;
57  remoteport_tlm_wires rp_wires_out;
58  remoteport_tlm_wires rp_irq_out;
59 
60 public:
61  /*
62  * M_AXI_GP 0 - 1.
63  * These sockets represent the High speed PS to PL interfaces.
64  * These are AXI Slave ports on the PS side and AXI Master ports
65  * on the PL side.
66  *
67  * Used to transfer data from the PS to the PL.
68  */
69  tlm_utils::simple_initiator_socket<remoteport_tlm_memory_master> *m_axi_gp[2];
70 
71  /*
72  * S_AXI_GP0 - 1.
73  * These sockets represent the High speed IO Coherent PL to PS
74  * interfaces.
75  *
76  * HP0 - 3.
77  * These sockets represent the High performance dataflow PL to PS interfaces.
78  *
79  * ACP
80  * Accelerator Coherency Port, used to transfered coherent data to
81  * the PS via the Cortex-A9 subsystem.
82  *
83  * These are AXI Master ports on the PS side and AXI Slave ports
84  * on the PL side.
85  *
86  * Used to transfer data from the PL to the PS.
87  */
88  tlm_utils::simple_target_socket<remoteport_tlm_memory_slave> *s_axi_gp[2];
89  tlm_utils::simple_target_socket<remoteport_tlm_memory_slave> *s_axi_hp[4];
90  tlm_utils::simple_target_socket<remoteport_tlm_memory_slave> *s_axi_acp;
91 
92  /* PL (fabric) to PS interrupt signals. */
93  sc_vector<sc_signal<bool> > pl2ps_irq;
94 
95  /* PS to PL Interrupt signals. */
96  sc_vector<sc_signal<bool> > ps2pl_irq;
97 
98  /* FPGA out resets. */
99  sc_vector<sc_signal<bool> > ps2pl_rst;
100 
101  xilinx_zynq(sc_core::sc_module_name name, const char *sk_descr);
102  //xilinx_zynq(sc_core::sc_module_name name, const char *sk_descr,
103  // Iremoteport_tlm_sync *sync = NULL);
104 };
xilinx_zynq::rp_wires_in
remoteport_tlm_wires rp_wires_in
Definition: xilinx-zynq.h:56
xilinx_zynq::s_axi_acp
tlm_utils::simple_target_socket< remoteport_tlm_memory_slave > * s_axi_acp
Definition: xilinx-zynq.h:90
xilinx_zynq::ps2pl_irq
sc_vector< sc_signal< bool > > ps2pl_irq
Definition: xilinx-zynq.h:96
xilinx_zynq::m_axi_gp
tlm_utils::simple_initiator_socket< remoteport_tlm_memory_master > * m_axi_gp[2]
Definition: xilinx-zynq.h:69
xilinx_zynq::s_axi_hp
tlm_utils::simple_target_socket< remoteport_tlm_memory_slave > * s_axi_hp[4]
Definition: xilinx-zynq.h:89
xilinx_zynq::pl2ps_irq
sc_vector< sc_signal< bool > > pl2ps_irq
Definition: xilinx-zynq.h:93
xilinx_zynq::rp_irq_out
remoteport_tlm_wires rp_irq_out
Definition: xilinx-zynq.h:58
xilinx_zynq::rp_wires_out
remoteport_tlm_wires rp_wires_out
Definition: xilinx-zynq.h:57
xilinx_zynq::rp_m_axi_gp1
remoteport_tlm_memory_master rp_m_axi_gp1
Definition: xilinx-zynq.h:44
xilinx_zynq::rp_s_axi_hp0
remoteport_tlm_memory_slave rp_s_axi_hp0
Definition: xilinx-zynq.h:49
xilinx_zynq::rp_m_axi_gp0
remoteport_tlm_memory_master rp_m_axi_gp0
Definition: xilinx-zynq.h:43
xilinx_zynq::ps2pl_rst
sc_vector< sc_signal< bool > > ps2pl_rst
Definition: xilinx-zynq.h:99
xilinx_zynq::rp_s_axi_gp0
remoteport_tlm_memory_slave rp_s_axi_gp0
Definition: xilinx-zynq.h:46
xilinx_zynq::rp_s_axi_hp2
remoteport_tlm_memory_slave rp_s_axi_hp2
Definition: xilinx-zynq.h:51
xilinx_zynq
Definition: xilinx-zynq.h:39
xilinx_zynq::rp_s_axi_hp3
remoteport_tlm_memory_slave rp_s_axi_hp3
Definition: xilinx-zynq.h:52
xilinx_zynq::rp_s_axi_gp1
remoteport_tlm_memory_slave rp_s_axi_gp1
Definition: xilinx-zynq.h:47
xilinx_zynq::rp_s_axi_hp1
remoteport_tlm_memory_slave rp_s_axi_hp1
Definition: xilinx-zynq.h:50
xilinx_zynq::rp_s_axi_acp
remoteport_tlm_memory_slave rp_s_axi_acp
Definition: xilinx-zynq.h:54
xilinx_zynq::xilinx_zynq
xilinx_zynq(sc_core::sc_module_name name, const char *sk_descr)
xilinx_zynq::s_axi_gp
tlm_utils::simple_target_socket< remoteport_tlm_memory_slave > * s_axi_gp[2]
Definition: xilinx-zynq.h:88