initial commit, add dds_par module
@@ -0,0 +1,27 @@
|
||||
####################################################################################
|
||||
## Copyright (c) 2018 - 2023 Analog Devices, Inc.
|
||||
### SPDX short identifier: BSD-1-Clause
|
||||
## Auto-generated, do not modify!
|
||||
####################################################################################
|
||||
|
||||
LIBRARY_NAME := data_offload
|
||||
|
||||
GENERIC_DEPS += ../common/ad_axis_inf_rx.v
|
||||
GENERIC_DEPS += ../common/ad_mem_asym.v
|
||||
GENERIC_DEPS += ../common/up_axi.v
|
||||
GENERIC_DEPS += data_offload.v
|
||||
GENERIC_DEPS += data_offload_fsm.v
|
||||
GENERIC_DEPS += data_offload_regmap.v
|
||||
|
||||
XILINX_DEPS += data_offload_ip.tcl
|
||||
XILINX_DEPS += data_offload_sv.ttcl
|
||||
|
||||
XILINX_DEPS += ../interfaces/if_do_ctrl.xml
|
||||
XILINX_DEPS += ../interfaces/if_do_ctrl_rtl.xml
|
||||
|
||||
XILINX_LIB_DEPS += util_axis_fifo_asym
|
||||
XILINX_LIB_DEPS += util_cdc
|
||||
|
||||
XILINX_INTERFACE_DEPS += interfaces
|
||||
|
||||
include ../scripts/library.mk
|
||||
@@ -0,0 +1,392 @@
|
||||
|
||||
# Data offload IP core
|
||||
|
||||
## Description, general use cases
|
||||
|
||||
Data offload module for high-speed converters:
|
||||
|
||||
**NOTE**: This IP will always have a storage unit (internal or external to the FPGA) and is
|
||||
designed to handle high data rates. If your data paths will run in a lower data
|
||||
rate, and your intention is just to transfer the data to another clock domain or
|
||||
to adjust the bus width of the data path, you may want to check out the util_axis_fifo or
|
||||
util_axis_fifo_asym IPs.
|
||||
|
||||
The initialization and data transfer looks as follows:
|
||||
|
||||
* in case of DAC, the DMA initialize the storage unit, after that the controller
|
||||
will push the data to the DAC interface in one-shot or cyclic way
|
||||
|
||||
* in case of ADC, the DMA request a transfer, the controller will save the data into
|
||||
the storage unit, after that will push it to the DMA
|
||||
|
||||
* BYPASS mode: simple streaming FIFO in case of clock rate or data width differences
|
||||
between source and sink interfaces (data rate MUST match in order to work); the BYPASS
|
||||
mode is used when an initially high rate path is downgraded to lower rates.
|
||||
|
||||
## Table of content
|
||||
|
||||
* [Block diagrams](README.md#block-diagram)
|
||||
* [Parameters](README.md#parameters)
|
||||
* [Interfaces](README.md#interfaces)
|
||||
* [Register map](README.md#register-map)
|
||||
* [Clock tree](README.md#clock-tree)
|
||||
* [Data path](README.md#data-path)
|
||||
* [Control path](README.md#control-path-offload-fsm)
|
||||
|
||||
## Generic arhitecture
|
||||
|
||||
The main role of our data paths, is to stream data from point A to point B
|
||||
in a particular system. There are always a SOURCE and a DESTINATION
|
||||
point, which can be a device (ADC or DAC), a DMA (for system memory) or any other
|
||||
data processing IP.
|
||||
|
||||
In the context of Data Offload IP, we don't need to know who is the source and
|
||||
who is the destination. Both interface is a AXI4 Stream interface, which can be
|
||||
supported in both Xilinx's an Intel's architecture, and can be connected to any device
|
||||
core or DMA.
|
||||
|
||||
The storage unit is connected to the Data Offload controller via two FIFO interface.
|
||||
This way the same controller can be used for various storage solutions. (BRAM,
|
||||
URAM, external memory etc.)
|
||||
|
||||
## Block diagram
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
| NAME | TYPE | DEFAULT | DESCRIPTION |
|
||||
|----------------------|:-----------:|:----------:|:---------------------------:|
|
||||
|ID | integer | 0 | Instance ID number |
|
||||
|MEM_TYPE | [ 0:0] | 0 | Define the used storage type: FPGA RAM - 0; external DDR - 1 |
|
||||
|MEM_SIZE_LOG2 | integer | 10 | Log2 value of storage size, defines the width of transfer length control signals. |
|
||||
|TX_OR_RXN_PATH | [ 0:0] | 1 | If set TX path enabled, otherwise RX |
|
||||
|SRC_DATA_WIDTH | integer | 64 | The data width of the source interface |
|
||||
|DST_DATA_WIDTH | integer | 124 | The data width of the destination interface |
|
||||
|DST_CYCLIC_EN | [ 0:0] | 0 | Enables CYCLIC mode for destinations like DAC |
|
||||
|AUTO_BRINGUP | [ 0:0] | 1 | If enabled the IP runs automatically after bootup |
|
||||
|SYNC_EXT_ADD_INTERNAL_CDC | [ 0:0] | 1 | If enabled the external sync pin is synchronized to the internal clock domain with a CDC. |
|
||||
|HAS_BYPASS | [ 0:0] | 1 | If set to zero the bypass FIFO is not implemented. |
|
||||
|
||||
## Interfaces
|
||||
|
||||
### AXI4 Lite Memory Mapped Slave (S_AXI4_LITE)
|
||||
|
||||
This interface is used to access the register map.
|
||||
|
||||
```verilog
|
||||
// interface clock -- system clock -- 100 MHz
|
||||
input s_axi_aclk
|
||||
// interface resetn -- synchronous reset active low
|
||||
input s_axi_aresetn
|
||||
|
||||
/* write address channel */
|
||||
|
||||
// validates the address on the bus
|
||||
input s_axi_awvalid
|
||||
// write address
|
||||
input [15:0] s_axi_awaddr
|
||||
// protection type -- not used in the core
|
||||
input [ 2:0] s_axi_awprot
|
||||
// write ready, indicates that the slave can accept the address
|
||||
output s_axi_awready
|
||||
|
||||
/* write data channel */
|
||||
|
||||
// validate the data on the bus
|
||||
input s_axi_wvalid
|
||||
// write data
|
||||
input [31:0] s_axi_wdata
|
||||
// write strobe, indicates which byte lanes to update
|
||||
input [ 3:0] s_axi_wstrb
|
||||
// write ready, indicates that the slave can accept the data
|
||||
output s_axi_wready
|
||||
|
||||
/* write response channel */
|
||||
|
||||
// validates the write response of the slave
|
||||
output s_axi_bvalid
|
||||
// write response, indicate the status of the transfer
|
||||
output [ 1:0] s_axi_bresp
|
||||
// response ready, indicates that the master can accept the data
|
||||
input s_axi_bready
|
||||
|
||||
/* read address channel */
|
||||
|
||||
// validates the address on the bus
|
||||
input s_axi_arvalid
|
||||
// read address
|
||||
input [15:0] s_axi_araddr
|
||||
// protection type -- not used in the core
|
||||
input [ 2:0] s_axi_arprot
|
||||
// read ready, indicates that the slave can accept the address
|
||||
output s_axi_arready
|
||||
|
||||
/* read data channel */
|
||||
|
||||
// validate the data on the bus
|
||||
output s_axi_rvalid
|
||||
// read response, indicate the status of the transfer
|
||||
output [ 1:0] s_axi_rresp
|
||||
// read data drivers by the slave
|
||||
output [31:0] s_axi_rdata
|
||||
// read ready, indicates that the master can accept the data
|
||||
input s_axi_rready
|
||||
```
|
||||
|
||||
### Supported data interfaces
|
||||
|
||||
**NOTE**: To simplify the design both the source and destination data interface is
|
||||
an AXI4 streaming interface. A FIFO write (ADC) interface can be treated as AXI4
|
||||
stream where only the master controls the data rate (s_axis_ready is always asserted),
|
||||
and a FIFO read (DAC) interface can be treated as an AXI4 stream where only the slave
|
||||
controls the data rate. (m_axis_valid is always asserted).
|
||||
|
||||
#### AXI4 Stream interface (S_AXIS | M_AXIS)
|
||||
|
||||
* The AXI Stream Slave (S_AXIS) interface is used to receive AXI stream from
|
||||
the transmit DMA or ADC device.
|
||||
|
||||
* The AXI Stream Master (M_AXIS) interface is used to transmit AXI stream
|
||||
to receive DMA or DAC device
|
||||
|
||||
```verilog
|
||||
// NOTE: this reference is a master interface
|
||||
|
||||
// interface clock -- can be device/core clock or DMA clock
|
||||
input m_axis_aclk
|
||||
// interface resetn -- synchronous reset with the system clock
|
||||
input m_axis_resetn
|
||||
// indicates that the slave can accept a transfer in the current cycle (in case of an ADC core, this will control the stream)
|
||||
input m_axis_ready
|
||||
// indicates that the master is driving a valid transfer
|
||||
output m_axis_valid
|
||||
// primary payload
|
||||
output [DATA_WIDTH-1:0] m_axis_data
|
||||
// indicates the boundary of a packet
|
||||
output m_axis_last
|
||||
// byte qualifier, we need this so we can have different DMA and device data widths
|
||||
output [(DATA_WIDTH/8)-1:0] m_axis_tkeep
|
||||
```
|
||||
|
||||
**NOTE**: A packet will always be a full buffer. All the data beats going to be
|
||||
full beats (all the bytes of the bus are valid), except the last one. **axis_last**
|
||||
and **axis_tkeep** will be used to indicate a partial last beat. This information
|
||||
should be transferred from the source domain to the sink domain, so we can read
|
||||
back the data from memory correctly.
|
||||
|
||||
#### AXIS source and destination interface to the storage unit
|
||||
|
||||
This is blocking (back-pressure) interface for the storage unit,
|
||||
with similar behavior of main AXIS data interfaces.
|
||||
|
||||
### Initialization request interface
|
||||
|
||||
Define a simple request interface to initialize the memory:
|
||||
|
||||
* The request will comes from the system and will put the data offload FSM
|
||||
into a standby/ready state.
|
||||
|
||||
|
||||
#### Synchronization modes
|
||||
|
||||
* **AUTOMATIC**
|
||||
* ADC: The IP will start to fill up the buffer with samples as soon as possible.
|
||||
* DAC: As the DMA will send a valid last, the FSM will start to send the
|
||||
stored data to the device.
|
||||
|
||||
* **HARDWARE**
|
||||
* ADC and DAC: An external signal will trigger the write or read into or from
|
||||
the memory.
|
||||
* **NOTE**: In case of DAC, if the DMA does not sent all the data into the
|
||||
buffer, before a hardware sync event, the unsent data will be ignored. It's the
|
||||
user/software responsibility to sync up these events accordingly.
|
||||
|
||||
* **SOFTWARE**
|
||||
* The software write a RW1C register which will trigger the reads or writes
|
||||
into or from the memory.
|
||||
|
||||
## Register Map
|
||||
|
||||
| WORD | BYTE | BITS | NAME | TYPE | CLOCK DOMAIN | DESCRIPTION |
|
||||
|-------:|:--------:|:--------:|:---------------------:|:-----:|:------------:|:-----------------------:|
|
||||
| 0x0000 | 0x0000 | | `VERSION` | RO | SYS | Version number |
|
||||
| | | [31:16] | `MAJOR` | | | |
|
||||
| | | [15: 8] | `MINOR` | | | |
|
||||
| | | [ 7: 0] | `PATCH` | | | |
|
||||
| 0x0001 | 0x0004 | | `PERIPHERAL_ID` | RO | SYS | Value of the IP configuration parameter |
|
||||
| 0x0002 | 0x0008 | | `SCRATCH` | RW | SYS | Scratch register |
|
||||
| 0x0003 | 0x000C | | `IDENTIFICATION` | RO | SYS | Peripheral identification. Default value: 0x44414F46 - ('D','A','O','F') |
|
||||
| 0x0004 | 0x0010 | | `SYNTHESIS_CONFIG` | RO | SYS | Core configuration registers |
|
||||
| | | [13: 8] | `MEM_SIZE_LOG2` | | | Log2 of memory size in bytes |
|
||||
| | | [ 2: 2] | `HAS_BYPASS` | | | If not set the bypass logic is not implemented. |
|
||||
| | | [ 1: 1] | `TX_OR_RXN_PATH` | | | RX Path => 0, TX => 1 |
|
||||
| | | [ 0: 0] | `MEMORY_TYPE` | | | The used storage type (embedded => 0 or external => 1) |
|
||||
| 0x0007 | 0x001C | | `TRANSFER_LENGTH` | RW | SRC | Transfer length |
|
||||
| 0x0020 | 0x0080 | | `MEM_PHY_STATE` | RO | DDR | Status bits of the memory controller IP |
|
||||
| | | [ 5: 5] | `UNDERFLOW` | RW1C | | Indicates that storage could not handle data rate during play. Available when core is in TX mode.|
|
||||
| | | [ 4: 4] | `OVERFLOW` | RW1C | | Indicates that storage could not handle data rate during capture. Available when core is in RX mode. |
|
||||
| | | [ 0: 0] | `CALIB_COMPLETE` | | | Indicates that the memory initialization and calibration have completed successfully |
|
||||
| 0x0021 | 0x0084 | | `RESETN_OFFLOAD` | RW | DST/SRC | Reset all the internal address registers and state machines |
|
||||
| | | [ 0: 0] | `RESETN` | | | |
|
||||
| 0x0022 | 0x0088 | | `CONTROL` | RW | DST | A global control register |
|
||||
| | | [ 1: 1] | `ONESHOT_EN` | | | By default the TX path runs on CYCLIC mode, set this bit to switch it to ONE-SHOT mode |
|
||||
| | | [ 0: 0] | `OFFLOAD_BYPASS` | | | Bypass the offload storage, the data path consist just of a CDC FIFO |
|
||||
| 0x0040 | 0x0100 | | `SYNC_TRIGGER` | RW1C | SRC | Synchronization setup for RX and TX path |
|
||||
| | | [ 0: 0] | `SYNC_TRIGGER` | | | Trigger the data capture |
|
||||
| 0x0041 | 0x0104 | | `SYNC_CONFIG` | RW | SRC | Synchronization setup |
|
||||
| | | [ 1: 0] | `SYNC_CONFIG` | | | Auto - '0'; hardware - '1'; software - '2' |
|
||||
| 0x0080 | 0x0200 | | `FSM_DBG` | RO | | Debug register for the offload FSM |
|
||||
| | | [11: 8] | `FSM_STATE_READ` | | SRC | The current state of the read-offload state machine |
|
||||
| | | [ 4: 0] | `FSM_STATE_WRITE` | | DST | The current state of the write-offload state machine |
|
||||
|
||||
## Clock tree
|
||||
|
||||
In general there are at least two different clock in the data offload module:
|
||||
|
||||
* DMA or system clock : on this clock will run all the front end interfaces
|
||||
* Memory Controller user clock : user interface clock of the DDRx controller (**optional**)
|
||||
* Device clock : the digital interface clock of the converter
|
||||
|
||||

|
||||
|
||||
A general frequency relationship of the above clocks are:
|
||||
|
||||
```
|
||||
CLKdma <= CLKddr <= CLKconverter
|
||||
```
|
||||
|
||||
The clock domain crossing should be handled by the [util_axis_fifo](https://github.com/analogdevicesinc/hdl/tree/master/library/util_axis_fifo) module.
|
||||
* **TODO** : Make sure that we support both AXIS and FIFO
|
||||
* **TODO** : Add support for asymmetric aspect ratio.
|
||||
|
||||
All the back end paths (device side) are time critical. The module must read or
|
||||
write from or into the storage at the speed of the device.
|
||||
|
||||
```
|
||||
DDR data rate >= Device data rate
|
||||
DDR data rate >= ADC data rate + DAC data rate
|
||||
```
|
||||
|
||||
## Data path
|
||||
|
||||

|
||||
|
||||
* The data path should be designed to support any kind of difference between
|
||||
the source, memory and sink data width.
|
||||
|
||||
* The data width adjustments will be made by the CDC_FIFO.
|
||||
|
||||
* In both path (ADC and DAC) the data stream at the front-end side is packatized,
|
||||
meaning there is a valid TLAS/TKEEP in the stream. While in the back-end side
|
||||
the stream is continuous. (no TLAST/TKEEP)
|
||||
* The DAC path have to have a depacketizer to get rid of the last partial beat
|
||||
from the stream.
|
||||
* Because the ADC path already arrive in a packed form, and we always will
|
||||
fill up the whole storage, we don't need to treat special use-cases.
|
||||
|
||||
### Used storage elements
|
||||
|
||||
| | ZC706 | ZCU102 | A10SOC |
|
||||
|:----------------------|:------------------:|:-----------------:|:----------------:|
|
||||
| FPGA | XC7Z045 FFG900 – 2 | XCZU9EG-2FFVB1156 | 10AS066N3F40E2SG |
|
||||
| External Memory Type | DDR3 SODIMM | DDR4 | DDR4 HILO |
|
||||
| External Memory Size | 1 GB | 512 MB | 2 GB |
|
||||
| Embedded Memory Type | BRAM | BRAM | M20K |
|
||||
| Embedded Memory Size | 19.1 Mb | 32.1 Mb | 41 Mb |
|
||||
|
||||
### Data width manipulation
|
||||
|
||||
* data width differences should be treated by the CDC FIFO
|
||||
|
||||
* the smallest granularity should be 8 bits. This constraints mainly will generate
|
||||
additional logic just in the TX path, taking the fact that the data from the ADC
|
||||
will come packed.
|
||||
|
||||
* the gearbox main role is to improve the DDR's bandwidth, strips the padding bits
|
||||
of each samples, so the raw data could be stored into the memory.
|
||||
|
||||
### Xilinx's MIG vs. Intel's EMIF
|
||||
|
||||
* Incrementing burst support for 1 to 256 beats, the length of the burst should
|
||||
be defined by the internal controller
|
||||
|
||||
* Concurrent read/write access, the external memory to be shared between an ADC
|
||||
and DAC
|
||||
* Dynamic burst length tuning: an FSM reads and writes dummy data until both
|
||||
ADC's overflow and DAC's underflow lines are de-asserted. Pre-requisites : both
|
||||
device's interface should be up and running.
|
||||
|
||||
* **TODO**: prefetch the next transfer if it's possible, by driving the address channels ahead (e.g. Overlapping read burst in case of AXI4)
|
||||
|
||||
* Optional gearbox to congest the samples in order to increase the maximum data rate.
|
||||
* In general we packing all samples into 16 bits. This can add a significant
|
||||
overhand to the maximum real data rate on the memory interface. The gearbox main
|
||||
role is to pack and unpack the device's samples into the required data width. (in general 512 or 1024 bit)
|
||||
|
||||
Boards with FPGA side DDR3/4 SODIMMs/HILO: ZC706, ZCU102, A10SOC
|
||||
|
||||
| | ZC706 | ZCU102 | A10SOC |
|
||||
|------------------------------|:---------:|:----------:|:----------:|
|
||||
| Max data throughputs (MT/s) | 1600 | 2400 | 2133 |
|
||||
| DDRx reference clocks | 200 MHz | 300 MHz | 133 MHz |
|
||||
| DDRx Data bus width | 64 | 16 | 64 |
|
||||
| Memory to FPGA clock ratio | 4:1 | 4:1 | 4:1 |
|
||||
| UI type & burst length | AXI4-256 | AXI4-256 | Avalon Memory Map |
|
||||
| UI data width | 512 | 128 | 512 |
|
||||
|
||||
### Internal cyclic buffer support for the TX path
|
||||
|
||||

|
||||
|
||||
* On the front end side if the TX path, a special buffer will handle the data
|
||||
width up/down conversions and run in cyclic mode if the length of the data set
|
||||
is smaller than 4/8 AXI/Avalon burst. This way we can avoid to overload the memory
|
||||
interface with small bursts.
|
||||
|
||||
* On the back end side, because the smallest granularity can be 8 bytes, we need
|
||||
a dynamic 'depackatizer' or re-aligner, which will filter out the invalid data
|
||||
bytes from the data stream. (this module will use the tlast and tkeep signal of
|
||||
the AXI stream interface)
|
||||
|
||||
## Control path - Offload FSM
|
||||
|
||||
### RX control FSM for internal RAM mode
|
||||
|
||||

|
||||
|
||||
### TX control FSM for internal RAM mode
|
||||
|
||||

|
||||
|
||||
**TODO** FSMs for the external DDR mode
|
||||
|
||||
## References
|
||||
|
||||
### AMBA AXI
|
||||
* [AMBA specification](http://infocenter.arm.com/help/topic/com.arm.doc.set.amba/index.html#specs)
|
||||
* [UG761 AXI Reference Guide](https://www.xilinx.com/support/documentation/ip_documentation/ug761_axi_reference_guide.pdf)
|
||||
|
||||
### Avalon
|
||||
* [Avalon Interface Specification](https://www.altera.com/en_US/pdfs/literature/manual/mnl_avalon_spec.pdf)
|
||||
|
||||
### Xilinx
|
||||
* [Device Memory Interface Solutions](https://www.xilinx.com/support/documentation/ip_documentation/mig_7series/v4_2/ds176_7Series_MIS.pdf)
|
||||
* [Device Memory Interface Solutions User Guide](https://www.xilinx.com/support/documentation/ip_documentation/mig_7series/v4_2/ug586_7Series_MIS.pdf)
|
||||
* [Ultrascale Architecutre-Based FPGAs Memory IP (v1.4)](https://www.xilinx.com/support/documentation/ip_documentation/ultrascale_memory_ip/v1_4/pg150-ultrascale-memory-ip.pdf)
|
||||
* [Xilinx FIFO Generator](https://www.xilinx.com/products/intellectual-property/fifo_generator.html#documentation)
|
||||
* [7 Series FPGAs Memory Resources](https://www.xilinx.com/support/documentation/user_guides/ug473_7Series_Memory_Resources.pdf)
|
||||
* [Ultrascale Memory Resources](https://www.xilinx.com/support/documentation/user_guides/ug573-ultrascale-memory-resources.pdf)
|
||||
|
||||
### Intel
|
||||
* [Intel Arria 10 Core Fabric and General Purpose I/Os Handbook](https://www.altera.com/en_US/pdfs/literature/hb/arria-10/a10_handbook.pdf)
|
||||
* [Intel Arria 10 External Memory Interface IP User Guide](https://www.altera.com/en_US/pdfs/literature/ug/ug-20115.pdf)
|
||||
* [Intel Arria 10 External Memory Interface IP Design Example](https://www.altera.com/en_US/pdfs/literature/ug/ug-20118.pdf)
|
||||
* [Intel SCFIFO and DCFIFO](https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_fifo.pdf)
|
||||
* [Intel Startix 10 High-Performance Design Handbook](https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/stratix-10/s10_hp_hb.pdf)
|
||||
* [Intel Stratix 10 Embedded Memory User Guide](https://www.altera.com/en_US/pdfs/literature/hb/stratix-10/ug-s10-memory.pdf)
|
||||
|
||||
### Supported FPGA boards
|
||||
* [ZC706](https://www.xilinx.com/products/boards-and-kits/ek-z7-zc706-g.html)
|
||||
* [ZCU102](https://www.xilinx.com/products/boards-and-kits/ek-u1-zcu102-g.html)
|
||||
* [A10SOC](https://www.altera.com/products/boards_and_kits/dev-kits/altera/arria-10-soc-development-kit.html)
|
||||
@@ -0,0 +1,384 @@
|
||||
// ***************************************************************************
|
||||
// ***************************************************************************
|
||||
// Copyright (C) 2021-2023 Analog Devices, Inc. All rights reserved.
|
||||
//
|
||||
// In this HDL repository, there are many different and unique modules, consisting
|
||||
// of various HDL (Verilog or VHDL) components. The individual modules are
|
||||
// developed independently, and may be accompanied by separate and unique license
|
||||
// terms.
|
||||
//
|
||||
// The user should read each of these license terms, and understand the
|
||||
// freedoms and responsibilities that he or she has by using this source/core.
|
||||
//
|
||||
// This core 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.
|
||||
//
|
||||
// Redistribution and use of source or resulting binaries, with or without modification
|
||||
// of this file, are permitted under one of the following two license terms:
|
||||
//
|
||||
// 1. The GNU General Public License version 2 as published by the
|
||||
// Free Software Foundation, which can be found in the top level directory
|
||||
// of this repository (LICENSE_GPL2), and also online at:
|
||||
// <https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
|
||||
//
|
||||
// OR
|
||||
//
|
||||
// 2. An ADI specific BSD license, which can be found in the top level directory
|
||||
// of this repository (LICENSE_ADIBSD), and also on-line at:
|
||||
// https://github.com/analogdevicesinc/hdl/blob/master/LICENSE_ADIBSD
|
||||
// This will allow to generate bit files and not release the source code,
|
||||
// as long as it attaches to an ADI device.
|
||||
//
|
||||
// ***************************************************************************
|
||||
// ***************************************************************************
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module data_offload #(
|
||||
|
||||
parameter ID = 0,
|
||||
parameter MEM_TYPE = 0, // 1'b0 -FPGA RAM; 1'b1 - external memory
|
||||
parameter MEM_SIZE_LOG2 = 10, // log2 of memory size in bytes
|
||||
|
||||
parameter TX_OR_RXN_PATH = 0, // if set IP is used in TX path, other wise in RX path
|
||||
|
||||
parameter SRC_DATA_WIDTH = 64,
|
||||
|
||||
parameter DST_DATA_WIDTH = 128,
|
||||
parameter DST_CYCLIC_EN = 1'b0, // 1'b1 - CYCLIC mode enabled; 1'b0 - CYCLIC mode disabled
|
||||
|
||||
parameter AUTO_BRINGUP = 1,
|
||||
parameter SYNC_EXT_ADD_INTERNAL_CDC = 1,
|
||||
parameter HAS_BYPASS = 1
|
||||
) (
|
||||
|
||||
// AXI4 Slave for configuration
|
||||
|
||||
input s_axi_aclk,
|
||||
input s_axi_aresetn,
|
||||
input s_axi_awvalid,
|
||||
input [15:0] s_axi_awaddr,
|
||||
input [ 2:0] s_axi_awprot,
|
||||
output s_axi_awready,
|
||||
input s_axi_wvalid,
|
||||
input [31:0] s_axi_wdata,
|
||||
input [ 3:0] s_axi_wstrb,
|
||||
output s_axi_wready,
|
||||
output s_axi_bvalid,
|
||||
output [ 1:0] s_axi_bresp,
|
||||
input s_axi_bready,
|
||||
input s_axi_arvalid,
|
||||
input [15:0] s_axi_araddr,
|
||||
input [ 2:0] s_axi_arprot,
|
||||
output s_axi_arready,
|
||||
output s_axi_rvalid,
|
||||
input s_axi_rready,
|
||||
output [ 1:0] s_axi_rresp,
|
||||
output [31:0] s_axi_rdata,
|
||||
|
||||
// AXI4 stream slave for source stream (TX_DMA or ADC) -- Source interface
|
||||
|
||||
input s_axis_aclk,
|
||||
input s_axis_aresetn,
|
||||
|
||||
output s_axis_ready,
|
||||
input s_axis_valid,
|
||||
input [SRC_DATA_WIDTH-1:0] s_axis_data,
|
||||
input s_axis_last,
|
||||
input [SRC_DATA_WIDTH/8-1:0] s_axis_tkeep,
|
||||
|
||||
// AXI4 stream master for destination stream (RX_DMA or DAC) -- Destination
|
||||
// interface
|
||||
|
||||
input m_axis_aclk,
|
||||
input m_axis_aresetn,
|
||||
|
||||
input m_axis_ready,
|
||||
output m_axis_valid,
|
||||
output [DST_DATA_WIDTH-1:0] m_axis_data,
|
||||
output m_axis_last,
|
||||
output [DST_DATA_WIDTH/8-1:0] m_axis_tkeep,
|
||||
|
||||
// initialization request interface
|
||||
|
||||
input init_req,
|
||||
|
||||
input sync_ext,
|
||||
|
||||
// AXIS - Memory UI to storage
|
||||
|
||||
// AXI stream master for source stream to storage (BRAM/URAM/DDR/HBM)
|
||||
// runs on s_axis_aclk and s_axis_aresetn
|
||||
input m_storage_axis_ready,
|
||||
output m_storage_axis_valid,
|
||||
output [SRC_DATA_WIDTH-1:0] m_storage_axis_data,
|
||||
output m_storage_axis_last,
|
||||
output [SRC_DATA_WIDTH/8-1:0] m_storage_axis_tkeep,
|
||||
|
||||
// AXI stream slave for destination stream from storage (BRAM/URAM/DDR/HBM)
|
||||
// runs on m_axis_aclk and m_axis_aresetn
|
||||
output s_storage_axis_ready,
|
||||
input s_storage_axis_valid,
|
||||
input [DST_DATA_WIDTH-1:0] s_storage_axis_data,
|
||||
input s_storage_axis_last,
|
||||
input [DST_DATA_WIDTH/8-1:0] s_storage_axis_tkeep,
|
||||
|
||||
// Control interface for storage for m_storage_axis interface
|
||||
output wr_request_enable,
|
||||
output wr_request_valid,
|
||||
input wr_request_ready,
|
||||
output [MEM_SIZE_LOG2-1:0] wr_request_length,
|
||||
input [MEM_SIZE_LOG2-1:0] wr_response_measured_length,
|
||||
input wr_response_eot,
|
||||
input wr_overflow,
|
||||
|
||||
// Control interface for storage for s_storage_axis interface
|
||||
output rd_request_enable,
|
||||
output rd_request_valid,
|
||||
input rd_request_ready,
|
||||
output reg [MEM_SIZE_LOG2-1:0] rd_request_length,
|
||||
input rd_response_eot,
|
||||
input rd_underflow,
|
||||
|
||||
// Status and monitor
|
||||
|
||||
input ddr_calib_done
|
||||
);
|
||||
|
||||
// local parameters -- to make the code more readable
|
||||
|
||||
localparam SRC_ADDR_WIDTH_BYPASS = (SRC_DATA_WIDTH > DST_DATA_WIDTH) ? 4 : 4 + $clog2(SRC_DATA_WIDTH/DST_DATA_WIDTH);
|
||||
localparam DST_ADDR_WIDTH_BYPASS = (SRC_DATA_WIDTH <= DST_DATA_WIDTH) ? 4 + $clog2(DST_DATA_WIDTH/SRC_DATA_WIDTH) : 4;
|
||||
|
||||
localparam SRC_BEAT_BYTE = $clog2(SRC_DATA_WIDTH/8);
|
||||
|
||||
// NOTE: Clock domain prefixes
|
||||
// src_* - AXI4 Stream Slave interface's clock domain
|
||||
// dst_* - AXI4 Stream Master interface's clock domain
|
||||
|
||||
// internal signals
|
||||
wire up_clk;
|
||||
wire up_rstn;
|
||||
wire up_wreq_s;
|
||||
wire [13:0] up_waddr_s;
|
||||
wire [31:0] up_wdata_s;
|
||||
wire up_rreq_s;
|
||||
wire [13:0] up_raddr_s;
|
||||
wire up_wack_s;
|
||||
wire up_rack_s;
|
||||
wire [31:0] up_rdata_s;
|
||||
|
||||
wire src_clk;
|
||||
wire src_rstn;
|
||||
wire dst_clk;
|
||||
wire dst_rstn;
|
||||
|
||||
wire src_bypass_s;
|
||||
wire dst_bypass_s;
|
||||
wire oneshot_s;
|
||||
wire [ 1:0] sync_config_s;
|
||||
wire sync_int_s;
|
||||
wire valid_bypass_s;
|
||||
wire [DST_DATA_WIDTH-1:0] data_bypass_s;
|
||||
wire ready_bypass_s;
|
||||
wire [ 4:0] src_fsm_status_s;
|
||||
wire [ 3:0] dst_fsm_status_s;
|
||||
|
||||
wire [MEM_SIZE_LOG2-1:0] src_transfer_length_s;
|
||||
wire [MEM_SIZE_LOG2-1:0] rd_wr_response_measured_length;
|
||||
wire rd_ml_valid;
|
||||
wire rd_ready;
|
||||
wire rd_ml_ready;
|
||||
wire wr_ready;
|
||||
|
||||
assign src_clk = s_axis_aclk;
|
||||
assign dst_clk = m_axis_aclk;
|
||||
|
||||
// internal registers
|
||||
|
||||
// Offload FSM and control
|
||||
data_offload_fsm #(
|
||||
.TX_OR_RXN_PATH (TX_OR_RXN_PATH),
|
||||
.SYNC_EXT_ADD_INTERNAL_CDC (SYNC_EXT_ADD_INTERNAL_CDC)
|
||||
) i_data_offload_fsm (
|
||||
.up_clk (up_clk),
|
||||
.wr_clk (src_clk),
|
||||
.wr_resetn_in (src_rstn),
|
||||
.wr_request_enable (wr_request_enable),
|
||||
.wr_request_valid (wr_request_valid),
|
||||
.wr_request_ready (wr_request_ready),
|
||||
.wr_response_eot (wr_response_eot),
|
||||
.wr_ready (wr_ready),
|
||||
.rd_clk (dst_clk),
|
||||
.rd_resetn_in (dst_rstn),
|
||||
.rd_request_enable (rd_request_enable),
|
||||
.rd_request_valid (rd_request_valid),
|
||||
.rd_request_ready (rd_request_ready),
|
||||
.rd_response_eot (rd_response_eot),
|
||||
.rd_ready (rd_ready),
|
||||
.rd_valid (s_storage_axis_valid),
|
||||
.rd_ml_valid (rd_ml_valid),
|
||||
.rd_ml_ready (rd_ml_ready),
|
||||
.rd_oneshot (oneshot_s),
|
||||
.wr_bypass (src_bypass_s),
|
||||
.init_req (init_req),
|
||||
.sync_config (sync_config_s),
|
||||
.sync_external (sync_ext),
|
||||
.sync_internal (sync_int_s),
|
||||
.wr_fsm_state_out (src_fsm_status_s),
|
||||
.rd_fsm_state_out (dst_fsm_status_s));
|
||||
|
||||
assign m_axis_valid = dst_bypass_s ? valid_bypass_s : (rd_ready & s_storage_axis_valid);
|
||||
// For DAC paths set zero as IDLE data on the axis bus, avoid repeating last
|
||||
// sample.
|
||||
assign m_axis_data = TX_OR_RXN_PATH[0] & ~m_axis_valid ? {DST_DATA_WIDTH{1'b0}} :
|
||||
(dst_bypass_s) ? data_bypass_s : s_storage_axis_data;
|
||||
assign m_axis_last = (dst_bypass_s) ? 1'b0 : s_storage_axis_last;
|
||||
assign m_axis_tkeep = (dst_bypass_s) ? {DST_DATA_WIDTH/8{1'b1}} : s_storage_axis_tkeep;
|
||||
|
||||
assign s_axis_ready = src_bypass_s ? ready_bypass_s : (wr_ready & m_storage_axis_ready);
|
||||
|
||||
assign m_storage_axis_valid = s_axis_valid & wr_ready;
|
||||
assign m_storage_axis_data = s_axis_data;
|
||||
assign m_storage_axis_last = s_axis_last;
|
||||
assign m_storage_axis_tkeep = s_axis_tkeep;
|
||||
|
||||
assign s_storage_axis_ready = rd_ready & m_axis_ready;
|
||||
|
||||
// Bypass module instance -- the same FIFO, just a smaller depth
|
||||
// NOTE: Generating an overflow is making sense just in BYPASS mode, and
|
||||
// it's supported just with the FIFO interface
|
||||
util_axis_fifo_asym #(
|
||||
.S_DATA_WIDTH (SRC_DATA_WIDTH),
|
||||
.S_ADDRESS_WIDTH (SRC_ADDR_WIDTH_BYPASS),
|
||||
.M_DATA_WIDTH (DST_DATA_WIDTH),
|
||||
.ASYNC_CLK (1)
|
||||
) i_bypass_fifo (
|
||||
.m_axis_aclk (m_axis_aclk),
|
||||
.m_axis_aresetn (dst_rstn),
|
||||
.m_axis_ready (m_axis_ready),
|
||||
.m_axis_valid (valid_bypass_s),
|
||||
.m_axis_data (data_bypass_s),
|
||||
.m_axis_tlast (),
|
||||
.m_axis_empty (),
|
||||
.m_axis_almost_empty (),
|
||||
.m_axis_tkeep (),
|
||||
.m_axis_level (),
|
||||
.s_axis_aclk (s_axis_aclk),
|
||||
.s_axis_aresetn (src_rstn),
|
||||
.s_axis_ready (ready_bypass_s),
|
||||
.s_axis_valid (s_axis_valid & src_bypass_s),
|
||||
.s_axis_data (s_axis_data),
|
||||
.s_axis_tlast (),
|
||||
.s_axis_full (),
|
||||
.s_axis_almost_full (),
|
||||
.s_axis_tkeep (),
|
||||
.s_axis_room ());
|
||||
|
||||
// register map
|
||||
|
||||
data_offload_regmap #(
|
||||
.ID (ID),
|
||||
.MEM_TYPE (MEM_TYPE),
|
||||
.MEM_SIZE_LOG2 (MEM_SIZE_LOG2),
|
||||
.TX_OR_RXN_PATH (TX_OR_RXN_PATH),
|
||||
.AUTO_BRINGUP (AUTO_BRINGUP),
|
||||
.HAS_BYPASS (HAS_BYPASS)
|
||||
) i_regmap (
|
||||
.up_clk (up_clk),
|
||||
.up_rstn (up_rstn),
|
||||
.up_rreq (up_rreq_s),
|
||||
.up_rack (up_rack_s),
|
||||
.up_raddr (up_raddr_s),
|
||||
.up_rdata (up_rdata_s),
|
||||
.up_wreq (up_wreq_s),
|
||||
.up_wack (up_wack_s),
|
||||
.up_waddr (up_waddr_s),
|
||||
.up_wdata (up_wdata_s),
|
||||
.src_clk (s_axis_aclk),
|
||||
.dst_clk (m_axis_aclk),
|
||||
.src_sw_resetn (src_rstn),
|
||||
.dst_sw_resetn (dst_rstn),
|
||||
.ddr_calib_done (ddr_calib_done),
|
||||
.src_bypass (src_bypass_s),
|
||||
.dst_bypass (dst_bypass_s),
|
||||
.oneshot (oneshot_s),
|
||||
.sync (sync_int_s),
|
||||
.sync_config (sync_config_s),
|
||||
.src_transfer_length (wr_request_length),
|
||||
.dst_transfer_length (),
|
||||
.src_fsm_status (src_fsm_status_s),
|
||||
.dst_fsm_status (dst_fsm_status_s),
|
||||
.src_overflow (wr_overflow),
|
||||
.dst_underflow (rd_underflow));
|
||||
|
||||
// axi interface wrapper
|
||||
|
||||
assign up_clk = s_axi_aclk;
|
||||
assign up_rstn = s_axi_aresetn;
|
||||
|
||||
up_axi #(
|
||||
.AXI_ADDRESS_WIDTH (16)
|
||||
) i_up_axi (
|
||||
.up_rstn (up_rstn),
|
||||
.up_clk (up_clk),
|
||||
.up_axi_awvalid (s_axi_awvalid),
|
||||
.up_axi_awaddr (s_axi_awaddr),
|
||||
.up_axi_awready (s_axi_awready),
|
||||
.up_axi_wvalid (s_axi_wvalid),
|
||||
.up_axi_wdata (s_axi_wdata),
|
||||
.up_axi_wstrb (s_axi_wstrb),
|
||||
.up_axi_wready (s_axi_wready),
|
||||
.up_axi_bvalid (s_axi_bvalid),
|
||||
.up_axi_bresp (s_axi_bresp),
|
||||
.up_axi_bready (s_axi_bready),
|
||||
.up_axi_arvalid (s_axi_arvalid),
|
||||
.up_axi_araddr (s_axi_araddr),
|
||||
.up_axi_arready (s_axi_arready),
|
||||
.up_axi_rvalid (s_axi_rvalid),
|
||||
.up_axi_rresp (s_axi_rresp),
|
||||
.up_axi_rdata (s_axi_rdata),
|
||||
.up_axi_rready (s_axi_rready),
|
||||
.up_wreq (up_wreq_s),
|
||||
.up_waddr (up_waddr_s),
|
||||
.up_wdata (up_wdata_s),
|
||||
.up_wack (up_wack_s),
|
||||
.up_rreq (up_rreq_s),
|
||||
.up_raddr (up_raddr_s),
|
||||
.up_rdata (up_rdata_s),
|
||||
.up_rack (up_rack_s));
|
||||
|
||||
// Measured length handshake CDC
|
||||
util_axis_fifo #(
|
||||
.DATA_WIDTH(MEM_SIZE_LOG2),
|
||||
.ADDRESS_WIDTH(0),
|
||||
.ASYNC_CLK(1)
|
||||
) i_measured_length_cdc (
|
||||
.s_axis_aclk(s_axis_aclk),
|
||||
.s_axis_aresetn(s_axis_aresetn),
|
||||
.s_axis_valid(wr_response_eot),
|
||||
.s_axis_ready(),
|
||||
.s_axis_full(),
|
||||
.s_axis_data(wr_response_measured_length),
|
||||
.s_axis_room(),
|
||||
.s_axis_tkeep(),
|
||||
.s_axis_tlast(),
|
||||
.s_axis_almost_full(),
|
||||
|
||||
.m_axis_aclk(m_axis_aclk),
|
||||
.m_axis_aresetn(m_axis_aresetn),
|
||||
.m_axis_valid(rd_ml_valid),
|
||||
.m_axis_ready(rd_ml_ready),
|
||||
.m_axis_data(rd_wr_response_measured_length),
|
||||
.m_axis_level(),
|
||||
.m_axis_empty(),
|
||||
.m_axis_tkeep(),
|
||||
.m_axis_tlast(),
|
||||
.m_axis_almost_empty());
|
||||
|
||||
always @(posedge m_axis_aclk) begin
|
||||
if (rd_ml_valid & rd_ml_ready)
|
||||
rd_request_length <= rd_wr_response_measured_length;
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,437 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Product Version: Vivado v2023.2.1 (64-bit) -->
|
||||
<!-- -->
|
||||
<!-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -->
|
||||
<!-- Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved. -->
|
||||
|
||||
<Project Product="Vivado" Version="7" Minor="65" Path="/home/josh/tmp/hdl/library/data_offload/data_offload.xpr">
|
||||
<DefaultLaunch Dir="$PRUNDIR"/>
|
||||
<Configuration>
|
||||
<Option Name="Id" Val="1f7d1faac4524c79b3614f3e7268bcb1"/>
|
||||
<Option Name="Part" Val="xc7vx485tffg1157-1"/>
|
||||
<Option Name="CompiledLibDir" Val="$PCACHEDIR/compile_simlib"/>
|
||||
<Option Name="CompiledLibDirXSim" Val=""/>
|
||||
<Option Name="CompiledLibDirModelSim" Val="$PCACHEDIR/compile_simlib/modelsim"/>
|
||||
<Option Name="CompiledLibDirQuesta" Val="$PCACHEDIR/compile_simlib/questa"/>
|
||||
<Option Name="CompiledLibDirXcelium" Val="$PCACHEDIR/compile_simlib/xcelium"/>
|
||||
<Option Name="CompiledLibDirVCS" Val="$PCACHEDIR/compile_simlib/vcs"/>
|
||||
<Option Name="CompiledLibDirRiviera" Val="$PCACHEDIR/compile_simlib/riviera"/>
|
||||
<Option Name="CompiledLibDirActivehdl" Val="$PCACHEDIR/compile_simlib/activehdl"/>
|
||||
<Option Name="SimulatorInstallDirModelSim" Val=""/>
|
||||
<Option Name="SimulatorInstallDirQuesta" Val=""/>
|
||||
<Option Name="SimulatorInstallDirXcelium" Val=""/>
|
||||
<Option Name="SimulatorInstallDirVCS" Val=""/>
|
||||
<Option Name="SimulatorInstallDirRiviera" Val=""/>
|
||||
<Option Name="SimulatorInstallDirActiveHdl" Val=""/>
|
||||
<Option Name="SimulatorGccInstallDirModelSim" Val=""/>
|
||||
<Option Name="SimulatorGccInstallDirQuesta" Val=""/>
|
||||
<Option Name="SimulatorGccInstallDirXcelium" Val=""/>
|
||||
<Option Name="SimulatorGccInstallDirVCS" Val=""/>
|
||||
<Option Name="SimulatorGccInstallDirRiviera" Val=""/>
|
||||
<Option Name="SimulatorGccInstallDirActiveHdl" Val=""/>
|
||||
<Option Name="SimulatorVersionXsim" Val="2023.2"/>
|
||||
<Option Name="SimulatorVersionModelSim" Val="2023.2"/>
|
||||
<Option Name="SimulatorVersionQuesta" Val="2023.2"/>
|
||||
<Option Name="SimulatorVersionXcelium" Val="23.03.002"/>
|
||||
<Option Name="SimulatorVersionVCS" Val="U-2023.03-1"/>
|
||||
<Option Name="SimulatorVersionRiviera" Val="2022.10"/>
|
||||
<Option Name="SimulatorVersionActiveHdl" Val="14.1"/>
|
||||
<Option Name="SimulatorGccVersionXsim" Val="9.3.0"/>
|
||||
<Option Name="SimulatorGccVersionModelSim" Val="7.4.0"/>
|
||||
<Option Name="SimulatorGccVersionQuesta" Val="7.4.0"/>
|
||||
<Option Name="SimulatorGccVersionXcelium" Val="9.3.0"/>
|
||||
<Option Name="SimulatorGccVersionVCS" Val="9.2.0"/>
|
||||
<Option Name="SimulatorGccVersionRiviera" Val="9.3.0"/>
|
||||
<Option Name="SimulatorGccVersionActiveHdl" Val="9.3.0"/>
|
||||
<Option Name="BoardPart" Val=""/>
|
||||
<Option Name="ActiveSimSet" Val="sim_1"/>
|
||||
<Option Name="DefaultLib" Val="xil_defaultlib"/>
|
||||
<Option Name="ProjectType" Val="Default"/>
|
||||
<Option Name="IPRepoPath" Val="$PPRDIR/../../library"/>
|
||||
<Option Name="IPOutputRepo" Val="$PCACHEDIR/ip"/>
|
||||
<Option Name="IPDefaultOutputPath" Val="$PGENDIR/sources_1"/>
|
||||
<Option Name="IPCachePermission" Val="read"/>
|
||||
<Option Name="IPCachePermission" Val="write"/>
|
||||
<Option Name="EnableCoreContainer" Val="FALSE"/>
|
||||
<Option Name="EnableResourceEstimation" Val="FALSE"/>
|
||||
<Option Name="SimCompileState" Val="TRUE"/>
|
||||
<Option Name="CreateRefXciForCoreContainers" Val="FALSE"/>
|
||||
<Option Name="IPUserFilesDir" Val="$PIPUSERFILESDIR"/>
|
||||
<Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/>
|
||||
<Option Name="EnableBDX" Val="FALSE"/>
|
||||
<Option Name="FeatureSet" Val="FeatureSet_Classic"/>
|
||||
<Option Name="WTXSimLaunchSim" Val="0"/>
|
||||
<Option Name="WTModelSimLaunchSim" Val="0"/>
|
||||
<Option Name="WTQuestaLaunchSim" Val="0"/>
|
||||
<Option Name="WTIesLaunchSim" Val="0"/>
|
||||
<Option Name="WTVcsLaunchSim" Val="0"/>
|
||||
<Option Name="WTRivieraLaunchSim" Val="0"/>
|
||||
<Option Name="WTActivehdlLaunchSim" Val="0"/>
|
||||
<Option Name="WTXSimExportSim" Val="0"/>
|
||||
<Option Name="WTModelSimExportSim" Val="0"/>
|
||||
<Option Name="WTQuestaExportSim" Val="0"/>
|
||||
<Option Name="WTIesExportSim" Val="0"/>
|
||||
<Option Name="WTVcsExportSim" Val="0"/>
|
||||
<Option Name="WTRivieraExportSim" Val="0"/>
|
||||
<Option Name="WTActivehdlExportSim" Val="0"/>
|
||||
<Option Name="GenerateIPUpgradeLog" Val="TRUE"/>
|
||||
<Option Name="XSimRadix" Val="hex"/>
|
||||
<Option Name="XSimTimeUnit" Val="ns"/>
|
||||
<Option Name="XSimArrayDisplayLimit" Val="1024"/>
|
||||
<Option Name="XSimTraceLimit" Val="65536"/>
|
||||
<Option Name="SimTypes" Val="rtl"/>
|
||||
<Option Name="SimTypes" Val="bfm"/>
|
||||
<Option Name="SimTypes" Val="tlm"/>
|
||||
<Option Name="SimTypes" Val="tlm_dpi"/>
|
||||
<Option Name="MEMEnableMemoryMapGeneration" Val="TRUE"/>
|
||||
<Option Name="DcpsUptoDate" Val="TRUE"/>
|
||||
<Option Name="ClassicSocBoot" Val="FALSE"/>
|
||||
<Option Name="LocalIPRepoLeafDirName" Val="ip_repo"/>
|
||||
</Configuration>
|
||||
<FileSets Version="1" Minor="32">
|
||||
<FileSet Name="sources_1" Type="DesignSrcs" RelSrcDir="$PSRCDIR/sources_1" RelGenDir="$PGENDIR/sources_1">
|
||||
<Filter Type="Srcs"/>
|
||||
<File Path="$PPRDIR/data_offload_fsm.v">
|
||||
<FileInfo>
|
||||
<Attr Name="UsedIn" Val="synthesis"/>
|
||||
<Attr Name="UsedIn" Val="implementation"/>
|
||||
<Attr Name="UsedIn" Val="simulation"/>
|
||||
</FileInfo>
|
||||
</File>
|
||||
<File Path="$PPRDIR/data_offload_regmap.v">
|
||||
<FileInfo>
|
||||
<Attr Name="UsedIn" Val="synthesis"/>
|
||||
<Attr Name="UsedIn" Val="implementation"/>
|
||||
<Attr Name="UsedIn" Val="simulation"/>
|
||||
</FileInfo>
|
||||
</File>
|
||||
<File Path="$PPRDIR/../common/up_axi.v">
|
||||
<FileInfo>
|
||||
<Attr Name="UsedIn" Val="synthesis"/>
|
||||
<Attr Name="UsedIn" Val="implementation"/>
|
||||
<Attr Name="UsedIn" Val="simulation"/>
|
||||
</FileInfo>
|
||||
</File>
|
||||
<File Path="$PPRDIR/data_offload.v">
|
||||
<FileInfo>
|
||||
<Attr Name="UsedIn" Val="synthesis"/>
|
||||
<Attr Name="UsedIn" Val="implementation"/>
|
||||
<Attr Name="UsedIn" Val="simulation"/>
|
||||
</FileInfo>
|
||||
</File>
|
||||
<File Path="$PPRDIR/data_offload_sv.ttcl"/>
|
||||
<File Path="$PPRDIR/../common/ad_mem_asym.v">
|
||||
<FileInfo>
|
||||
<Attr Name="AutoDisabled" Val="1"/>
|
||||
<Attr Name="UsedIn" Val="synthesis"/>
|
||||
<Attr Name="UsedIn" Val="implementation"/>
|
||||
<Attr Name="UsedIn" Val="simulation"/>
|
||||
</FileInfo>
|
||||
</File>
|
||||
<File Path="$PPRDIR/../common/ad_axis_inf_rx.v">
|
||||
<FileInfo>
|
||||
<Attr Name="AutoDisabled" Val="1"/>
|
||||
<Attr Name="UsedIn" Val="synthesis"/>
|
||||
<Attr Name="UsedIn" Val="implementation"/>
|
||||
<Attr Name="UsedIn" Val="simulation"/>
|
||||
</FileInfo>
|
||||
</File>
|
||||
<File Path="$PPRDIR/component.xml">
|
||||
<FileInfo SFType="IPXACT"/>
|
||||
</File>
|
||||
<Config>
|
||||
<Option Name="DesignMode" Val="RTL"/>
|
||||
<Option Name="TopModule" Val="data_offload"/>
|
||||
</Config>
|
||||
</FileSet>
|
||||
<FileSet Name="constrs_1" Type="Constrs" RelSrcDir="$PSRCDIR/constrs_1" RelGenDir="$PGENDIR/constrs_1">
|
||||
<Filter Type="Constrs"/>
|
||||
<Config>
|
||||
<Option Name="ConstrsType" Val="XDC"/>
|
||||
</Config>
|
||||
</FileSet>
|
||||
<FileSet Name="sim_1" Type="SimulationSrcs" RelSrcDir="$PSRCDIR/sim_1" RelGenDir="$PGENDIR/sim_1">
|
||||
<Config>
|
||||
<Option Name="DesignMode" Val="RTL"/>
|
||||
<Option Name="TopAutoSet" Val="TRUE"/>
|
||||
<Option Name="TransportPathDelay" Val="0"/>
|
||||
<Option Name="TransportIntDelay" Val="0"/>
|
||||
<Option Name="SelectedSimModel" Val="rtl"/>
|
||||
<Option Name="PamDesignTestbench" Val=""/>
|
||||
<Option Name="PamDutBypassFile" Val="xil_dut_bypass"/>
|
||||
<Option Name="PamSignalDriverFile" Val="xil_bypass_driver"/>
|
||||
<Option Name="PamPseudoTop" Val="pseudo_tb"/>
|
||||
<Option Name="SrcSet" Val="sources_1"/>
|
||||
</Config>
|
||||
</FileSet>
|
||||
<FileSet Name="utils_1" Type="Utils" RelSrcDir="$PSRCDIR/utils_1" RelGenDir="$PGENDIR/utils_1">
|
||||
<Filter Type="Utils"/>
|
||||
<Config>
|
||||
<Option Name="TopAutoSet" Val="TRUE"/>
|
||||
</Config>
|
||||
</FileSet>
|
||||
</FileSets>
|
||||
<Simulators>
|
||||
<Simulator Name="XSim">
|
||||
<Option Name="Description" Val="Vivado Simulator"/>
|
||||
<Option Name="CompiledLib" Val="0"/>
|
||||
</Simulator>
|
||||
<Simulator Name="ModelSim">
|
||||
<Option Name="Description" Val="ModelSim Simulator"/>
|
||||
</Simulator>
|
||||
<Simulator Name="Questa">
|
||||
<Option Name="Description" Val="Questa Advanced Simulator"/>
|
||||
</Simulator>
|
||||
<Simulator Name="Xcelium">
|
||||
<Option Name="Description" Val="Xcelium Parallel Simulator"/>
|
||||
</Simulator>
|
||||
<Simulator Name="VCS">
|
||||
<Option Name="Description" Val="Verilog Compiler Simulator (VCS)"/>
|
||||
</Simulator>
|
||||
<Simulator Name="Riviera">
|
||||
<Option Name="Description" Val="Riviera-PRO Simulator"/>
|
||||
</Simulator>
|
||||
</Simulators>
|
||||
<Runs Version="1" Minor="21">
|
||||
<Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7vx485tffg1157-1" ConstrsSet="constrs_1" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="true" WriteIncrSynthDcp="false" State="current" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/synth_1">
|
||||
<Strategy Version="1" Minor="2">
|
||||
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2023">
|
||||
<Desc>Vivado Synthesis Defaults</Desc>
|
||||
</StratHandle>
|
||||
<Step Id="synth_design"/>
|
||||
</Strategy>
|
||||
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2023"/>
|
||||
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||
<RQSFiles/>
|
||||
</Run>
|
||||
<Run Id="impl_1" Type="Ft2:EntireDesign" Part="xc7vx485tffg1157-1" ConstrsSet="constrs_1" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" SynthRun="synth_1" IncludeInArchive="true" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/impl_1" AutoRQSDir="$PSRCDIR/utils_1/imports/impl_1">
|
||||
<Strategy Version="1" Minor="2">
|
||||
<StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2023">
|
||||
<Desc>Default settings for Implementation.</Desc>
|
||||
</StratHandle>
|
||||
<Step Id="init_design"/>
|
||||
<Step Id="opt_design"/>
|
||||
<Step Id="power_opt_design"/>
|
||||
<Step Id="place_design"/>
|
||||
<Step Id="post_place_power_opt_design"/>
|
||||
<Step Id="phys_opt_design"/>
|
||||
<Step Id="route_design"/>
|
||||
<Step Id="post_route_phys_opt_design"/>
|
||||
<Step Id="write_bitstream"/>
|
||||
</Strategy>
|
||||
<ReportStrategy Name="Vivado Implementation Default Reports" Flow="Vivado Implementation 2023"/>
|
||||
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||
<RQSFiles/>
|
||||
</Run>
|
||||
</Runs>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="WARNING"/>
|
||||
<MsgAttr Name="Id" Val="Vivado 12-1790"/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="1"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
<MsgAttr Name="StringsToMatch" Val="Evaluation"/>
|
||||
<MsgAttr Name="StringsToMatch" Val="features"/>
|
||||
<MsgAttr Name="StringsToMatch" Val="should"/>
|
||||
<MsgAttr Name="StringsToMatch" Val="NOT"/>
|
||||
<MsgAttr Name="StringsToMatch" Val="be"/>
|
||||
<MsgAttr Name="StringsToMatch" Val="used"/>
|
||||
<MsgAttr Name="StringsToMatch" Val="in"/>
|
||||
<MsgAttr Name="StringsToMatch" Val="production"/>
|
||||
<MsgAttr Name="StringsToMatch" Val="systems."/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="INFO"/>
|
||||
<MsgAttr Name="Id" Val="Designutils 20-3303"/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="10"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
<MsgAttr Name="StringsToMatch" Val="HDPYFinalizeIO"/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="WARNING"/>
|
||||
<MsgAttr Name="Id" Val="Place 30-73"/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="11"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
<MsgAttr Name="StringsToMatch" Val="axi_spi"/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="WARNING"/>
|
||||
<MsgAttr Name="Id" Val=""/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="12"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
<MsgAttr Name="StringsToMatch" Val="PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY"/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="WARNING"/>
|
||||
<MsgAttr Name="Id" Val="BD 41-1343"/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="2"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="WARNING"/>
|
||||
<MsgAttr Name="Id" Val="BD 41-1306"/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="3"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="ERROR"/>
|
||||
<MsgAttr Name="Id" Val="BD 41-1276"/>
|
||||
<MsgAttr Name="Severity" Val="CRITICAL WARNING"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="4"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="INFO"/>
|
||||
<MsgAttr Name="Id" Val="IP_Flow 19-3656"/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="5"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="INFO"/>
|
||||
<MsgAttr Name="Id" Val="IP_Flow 19-4623"/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="6"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="INFO"/>
|
||||
<MsgAttr Name="Id" Val="IP_Flow 19-459"/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="7"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="INFO"/>
|
||||
<MsgAttr Name="Id" Val="Synth 8-3331"/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="8"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
</MsgRule>
|
||||
<MsgRule>
|
||||
<MsgAttr Name="RuleType" Val="1"/>
|
||||
<MsgAttr Name="Limit" Val="-1"/>
|
||||
<MsgAttr Name="NewSeverity" Val="WARNING"/>
|
||||
<MsgAttr Name="Id" Val="Synth 8-2490"/>
|
||||
<MsgAttr Name="Severity" Val="ANY"/>
|
||||
<MsgAttr Name="ShowRule" Val="1"/>
|
||||
<MsgAttr Name="RuleSource" Val="2"/>
|
||||
<MsgAttr Name="StringIsRegExp" Val="0"/>
|
||||
<MsgAttr Name="RuleId" Val="9"/>
|
||||
<MsgAttr Name="Note" Val=""/>
|
||||
<MsgAttr Name="Author" Val=""/>
|
||||
<MsgAttr Name="CreatedTimestamp" Val=""/>
|
||||
</MsgRule>
|
||||
<Board/>
|
||||
<DashboardSummary Version="1" Minor="0">
|
||||
<Dashboards>
|
||||
<Dashboard Name="default_dashboard">
|
||||
<Gadgets>
|
||||
<Gadget Name="drc_1" Type="drc" Version="1" Row="2" Column="0">
|
||||
<GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_drc_0 "/>
|
||||
</Gadget>
|
||||
<Gadget Name="methodology_1" Type="methodology" Version="1" Row="2" Column="1">
|
||||
<GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_methodology_0 "/>
|
||||
</Gadget>
|
||||
<Gadget Name="power_1" Type="power" Version="1" Row="1" Column="0">
|
||||
<GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_power_0 "/>
|
||||
</Gadget>
|
||||
<Gadget Name="timing_1" Type="timing" Version="1" Row="0" Column="1">
|
||||
<GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_route_report_timing_summary_0 "/>
|
||||
</Gadget>
|
||||
<Gadget Name="utilization_1" Type="utilization" Version="1" Row="0" Column="0">
|
||||
<GadgetParam Name="REPORTS" Type="string_list" Value="synth_1#synth_1_synth_report_utilization_0 "/>
|
||||
<GadgetParam Name="RUN.STEP" Type="string" Value="synth_design"/>
|
||||
<GadgetParam Name="RUN.TYPE" Type="string" Value="synthesis"/>
|
||||
</Gadget>
|
||||
<Gadget Name="utilization_2" Type="utilization" Version="1" Row="1" Column="1">
|
||||
<GadgetParam Name="REPORTS" Type="string_list" Value="impl_1#impl_1_place_report_utilization_0 "/>
|
||||
</Gadget>
|
||||
</Gadgets>
|
||||
</Dashboard>
|
||||
<CurrentDashboard>default_dashboard</CurrentDashboard>
|
||||
</Dashboards>
|
||||
</DashboardSummary>
|
||||
</Project>
|
||||
@@ -0,0 +1,171 @@
|
||||
###############################################################################
|
||||
## Copyright (C) 2021-2023 Analog Devices, Inc. All rights reserved.
|
||||
### SPDX short identifier: ADIBSD
|
||||
###############################################################################
|
||||
|
||||
<: set ComponentName [getComponentNameString] :>
|
||||
<: setOutputDirectory "./" :>
|
||||
<: setFileName [ttcl_add $ComponentName "_constr"] :>
|
||||
<: setFileExtension ".xdc" :>
|
||||
<: setFileProcessingOrder late :>
|
||||
<: set mem_type [getBooleanValue "MEM_TYPE"] :>
|
||||
<: set tx_enable [getBooleanValue "TX_OR_RXN_PATH"] :>
|
||||
<: set internal_cdc [getBooleanValue "SYNC_EXT_ADD_INTERNAL_CDC"] :>
|
||||
<: set has_bypass [getBooleanValue "HAS_BYPASS"] :>
|
||||
|
||||
## for all synchronization registers from util_cdc modules
|
||||
set_property ASYNC_REG TRUE \
|
||||
[get_cells -hier {*cdc_sync_stage1_reg*}] \
|
||||
[get_cells -hier {*cdc_sync_stage2_reg*}]
|
||||
|
||||
## For RX in case of BRAMs
|
||||
<: if { !$tx_enable } { :>
|
||||
|
||||
<: if { $internal_cdc } { :>
|
||||
set_false_path \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*/i_sync_wr_sync/cdc_sync_stage1_reg[*]/D}]
|
||||
<: } :>
|
||||
|
||||
<: } :>
|
||||
|
||||
set_false_path \
|
||||
-from [get_cells -hierarchical * -filter {NAME=~*/i_sync_src_transfer_length/cdc_hold_reg[*]}] \
|
||||
-to [get_cells -hierarchical * -filter {NAME=~*/i_sync_src_transfer_length/out_data_reg[*]}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter {NAME=~*/i_sync_src_transfer_length/in_toggle_d1_reg/C}] \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*/i_sync_src_transfer_length/i_sync_out/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter {NAME=~*/i_sync_src_transfer_length/out_toggle_d1_reg/C}] \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*/i_sync_src_transfer_length/i_sync_in/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
## For TX in case of BRAMs
|
||||
<: if { $tx_enable } { :>
|
||||
|
||||
<: if { $internal_cdc } { :>
|
||||
set_false_path \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*/i_sync_rd_sync/cdc_sync_stage1_reg[*]/D}]
|
||||
<: } :>
|
||||
|
||||
|
||||
<: } :>
|
||||
|
||||
## For external DDRx memory
|
||||
|
||||
<: if { $mem_type } { :>
|
||||
|
||||
set_false_path \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*i_ddr_calib_done_sync/cdc_sync_stage1_reg[0]/D}]
|
||||
|
||||
<: } :>
|
||||
|
||||
## Common constraints
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter {NAME=~*/i_dst_fsm_status/in_toggle_d1_reg/C}] \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*/i_dst_fsm_status/i_sync_out/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter {NAME=~*/i_dst_fsm_status/out_toggle_d1_reg/C}] \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*/i_dst_fsm_status/i_sync_in/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_cells -hierarchical * -filter {NAME=~*/i_dst_fsm_status/cdc_hold_reg[*]}] \
|
||||
-to [get_cells -hierarchical * -filter {NAME=~*/i_dst_fsm_status/out_data_reg[*]}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter {NAME=~*/i_src_fsm_status/in_toggle_d1_reg/C}] \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*/i_src_fsm_status/i_sync_out/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter {NAME=~*/i_src_fsm_status/out_toggle_d1_reg/C}] \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*/i_src_fsm_status/i_sync_in/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_cells -hierarchical * -filter {NAME=~*/i_src_fsm_status/cdc_hold_reg[*]}] \
|
||||
-to [get_cells -hierarchical * -filter {NAME=~*/i_src_fsm_status/out_data_reg[*]}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter {NAME=~*/i_wr_empty_sync/in_toggle_d1_reg/C}] \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*/i_wr_empty_sync/i_sync_out/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter {NAME=~*/i_wr_empty_sync/out_toggle_d1_reg/C}] \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*/i_wr_empty_sync/i_sync_in/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter {NAME=~*i_sync_xfer_control/in_toggle_d1_reg/C}] \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*i_sync_xfer_control/i_sync_out/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter {NAME=~*i_sync_xfer_control/out_toggle_d1_reg/C}] \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*i_sync_xfer_control/i_sync_in/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-from [get_cells -hierarchical * -filter {NAME=~*i_sync_xfer_control/cdc_hold_reg[*]}] \
|
||||
-to [get_cells -hierarchical * -filter {NAME=~*i_sync_xfer_control/out_data_reg[*]}]
|
||||
|
||||
|
||||
<: if { $tx_enable } { :>
|
||||
set_false_path \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*i_rd_init_req_sync/cdc_sync_stage1_reg[*]/D}]
|
||||
<: } else { :>
|
||||
set_false_path \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*i_wr_init_req_sync/cdc_sync_stage1_reg[*]/D}]
|
||||
<: } :>
|
||||
|
||||
set_false_path \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*i_src_xfer_control/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*i_dst_xfer_control/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*i_dst_oneshot_sync/cdc_sync_stage1_reg[0]/D}]
|
||||
|
||||
|
||||
# measured transfer length util_axis_fifo
|
||||
set src_clk [get_clocks -of_objects [get_ports s_axis_aclk]]
|
||||
set dest_clk [get_clocks -of_objects [get_ports m_axis_aclk]]
|
||||
|
||||
set_max_delay -quiet -datapath_only \
|
||||
-from $src_clk \
|
||||
-to [get_cells -quiet -hier *cdc_sync_stage1_reg* \
|
||||
-filter {NAME =~ *i_measured_length_cdc/zerodeep.i_waddr_sync* && IS_SEQUENTIAL}] \
|
||||
[get_property -min PERIOD $src_clk]
|
||||
|
||||
set_max_delay -quiet -datapath_only \
|
||||
-from $dest_clk \
|
||||
-to [get_cells -quiet -hier *cdc_sync_stage1_reg* \
|
||||
-filter {NAME =~ *i_measured_length_cdc/zerodeep.i_raddr_sync* && IS_SEQUENTIAL}] \
|
||||
[get_property -min PERIOD $dest_clk]
|
||||
|
||||
set_max_delay -quiet -datapath_only \
|
||||
-from [get_cells -quiet -hier *cdc_sync_fifo_ram_reg* \
|
||||
-filter {NAME =~ *i_measured_length_cdc* && IS_SEQUENTIAL}] \
|
||||
-to $dest_clk \
|
||||
[get_property -min PERIOD $dest_clk]
|
||||
|
||||
## Constraints for the bypass module
|
||||
<: if { $has_bypass } { :>
|
||||
set_false_path \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*i_waddr_sync_gray/cdc_sync_stage1_reg[*]/D}]
|
||||
|
||||
set_false_path \
|
||||
-to [get_pins -hierarchical * -filter {NAME=~*i_raddr_sync_gray/cdc_sync_stage1_reg[*]/D}]
|
||||
<: } :>
|
||||
|
||||
## Constraints for the overflow/underflow status
|
||||
<: if { $tx_enable } { :>
|
||||
set flow_cdc i_rd_underflow_sync
|
||||
<: } else { :>
|
||||
set flow_cdc i_wr_overflow_sync
|
||||
<: } :>
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter NAME=~*/$flow_cdc/in_toggle_d1_reg/C] \
|
||||
-to [get_pins -hierarchical * -filter NAME=~*/$flow_cdc/i_sync_out/cdc_sync_stage1_reg[*]/D]
|
||||
|
||||
set_false_path \
|
||||
-from [get_pins -hierarchical * -filter NAME=~*/$flow_cdc/out_toggle_d1_reg/C] \
|
||||
-to [get_pins -hierarchical * -filter NAME=~*/$flow_cdc/i_sync_in/cdc_sync_stage1_reg[*]/D]
|
||||
@@ -0,0 +1,321 @@
|
||||
// ***************************************************************************
|
||||
// ***************************************************************************
|
||||
// Copyright (C) 2018-2023 Analog Devices, Inc. All rights reserved.
|
||||
//
|
||||
// In this HDL repository, there are many different and unique modules, consisting
|
||||
// of various HDL (Verilog or VHDL) components. The individual modules are
|
||||
// developed independently, and may be accompanied by separate and unique license
|
||||
// terms.
|
||||
//
|
||||
// The user should read each of these license terms, and understand the
|
||||
// freedoms and responsibilities that he or she has by using this source/core.
|
||||
//
|
||||
// This core 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.
|
||||
//
|
||||
// Redistribution and use of source or resulting binaries, with or without modification
|
||||
// of this file, are permitted under one of the following two license terms:
|
||||
//
|
||||
// 1. The GNU General Public License version 2 as published by the
|
||||
// Free Software Foundation, which can be found in the top level directory
|
||||
// of this repository (LICENSE_GPL2), and also online at:
|
||||
// <https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
|
||||
//
|
||||
// OR
|
||||
//
|
||||
// 2. An ADI specific BSD license, which can be found in the top level directory
|
||||
// of this repository (LICENSE_ADIBSD), and also on-line at:
|
||||
// https://github.com/analogdevicesinc/hdl/blob/master/LICENSE_ADIBSD
|
||||
// This will allow to generate bit files and not release the source code,
|
||||
// as long as it attaches to an ADI device.
|
||||
//
|
||||
// ***************************************************************************
|
||||
// ***************************************************************************
|
||||
`timescale 1ns/100ps
|
||||
|
||||
/* This module controls the read and write access to the storage unit. It is
|
||||
* used for both transmit and receive use cases
|
||||
*/
|
||||
|
||||
module data_offload_fsm #(
|
||||
|
||||
parameter TX_OR_RXN_PATH = 0,
|
||||
parameter SYNC_EXT_ADD_INTERNAL_CDC = 1
|
||||
) (
|
||||
input up_clk,
|
||||
|
||||
// Control interface for storage for m_storage_axis interface
|
||||
output reg wr_request_enable = 1'b0,
|
||||
output wr_request_valid,
|
||||
input wr_request_ready,
|
||||
input wr_response_eot,
|
||||
|
||||
// Control interface for storage for s_storage_axis interface
|
||||
output reg rd_request_enable = 1'b0,
|
||||
output rd_request_valid,
|
||||
input rd_request_ready,
|
||||
input rd_response_eot,
|
||||
|
||||
input rd_ml_valid,
|
||||
output rd_ml_ready,
|
||||
|
||||
// Data path gating
|
||||
output wr_ready,
|
||||
output rd_ready,
|
||||
input rd_valid,
|
||||
|
||||
// write control interface
|
||||
input wr_clk,
|
||||
input wr_resetn_in,
|
||||
input wr_bypass,
|
||||
|
||||
// read control interface
|
||||
input rd_clk,
|
||||
input rd_resetn_in,
|
||||
input rd_oneshot, // 0 - CYCLIC; 1 - ONE_SHOT;
|
||||
|
||||
// Synchronization interface - synchronous to the external DMA clock
|
||||
input init_req,
|
||||
input [ 1:0] sync_config,
|
||||
|
||||
input sync_external,
|
||||
input sync_internal,
|
||||
|
||||
// FSM debug
|
||||
output [ 4:0] wr_fsm_state_out,
|
||||
output [ 3:0] rd_fsm_state_out
|
||||
);
|
||||
|
||||
// FSM states
|
||||
|
||||
localparam WR_STATE_IDLE = 5'b00001;
|
||||
localparam WR_STATE_PRE_WR = 5'b00010;
|
||||
localparam WR_STATE_SYNC = 5'b00100;
|
||||
localparam WR_STATE_WR = 5'b01000;
|
||||
localparam WR_STATE_WAIT_RD = 5'b10000;
|
||||
|
||||
localparam WR_BIT_IDLE = 0;
|
||||
localparam WR_BIT_PRE_WR = 1;
|
||||
localparam WR_BIT_SYNC = 2;
|
||||
localparam WR_BIT_WR = 3;
|
||||
|
||||
localparam RD_STATE_IDLE = 4'b0001;
|
||||
localparam RD_STATE_PRE_RD = 4'b0010;
|
||||
localparam RD_STATE_SYNC = 4'b0100;
|
||||
localparam RD_STATE_RD = 4'b1000;
|
||||
|
||||
localparam RD_BIT_IDLE = 0;
|
||||
localparam RD_BIT_PRE_RD = 1;
|
||||
localparam RD_BIT_SYNC = 2;
|
||||
localparam RD_BIT_RD = 3;
|
||||
|
||||
// Synchronization options
|
||||
|
||||
localparam AUTOMATIC = 2'b00;
|
||||
localparam HARDWARE = 2'b01;
|
||||
localparam SOFTWARE = 2'b10;
|
||||
|
||||
// internal registers
|
||||
reg rd_cyclic_en = 1'b0;
|
||||
|
||||
// internal signals
|
||||
wire wr_sync_external_s;
|
||||
wire wr_init_req_s;
|
||||
wire wr_rd_response_eot;
|
||||
wire rd_sync_external_s;
|
||||
wire rd_last_eot;
|
||||
wire rd_init_req_s;
|
||||
|
||||
reg [4:0] wr_fsm_state = WR_STATE_IDLE;
|
||||
reg [4:0] wr_fsm_next_state;
|
||||
reg [3:0] rd_fsm_state = RD_STATE_IDLE;
|
||||
reg [3:0] rd_fsm_next_state;
|
||||
reg [1:0] rd_outstanding = 2'd0;
|
||||
|
||||
assign wr_fsm_state_out = wr_fsm_state;
|
||||
assign rd_fsm_state_out = rd_fsm_state;
|
||||
|
||||
always @(*) begin
|
||||
wr_fsm_next_state = wr_fsm_state;
|
||||
case (wr_fsm_state)
|
||||
WR_STATE_IDLE:
|
||||
if (wr_init_req_s & ~wr_bypass) begin
|
||||
wr_fsm_next_state = WR_STATE_PRE_WR;
|
||||
end
|
||||
WR_STATE_PRE_WR:
|
||||
if (wr_request_ready) begin
|
||||
wr_fsm_next_state = TX_OR_RXN_PATH ? WR_STATE_WR : WR_STATE_SYNC;
|
||||
end
|
||||
WR_STATE_SYNC:
|
||||
case (sync_config)
|
||||
AUTOMATIC:
|
||||
wr_fsm_next_state = WR_STATE_WR;
|
||||
HARDWARE:
|
||||
if (wr_sync_external_s) begin
|
||||
wr_fsm_next_state = WR_STATE_WR;
|
||||
end
|
||||
SOFTWARE:
|
||||
if (sync_internal) begin
|
||||
wr_fsm_next_state = WR_STATE_WR;
|
||||
end
|
||||
default:
|
||||
wr_fsm_next_state = WR_STATE_WR;
|
||||
endcase
|
||||
WR_STATE_WR:
|
||||
if (wr_response_eot) begin
|
||||
wr_fsm_next_state = WR_STATE_WAIT_RD;
|
||||
end
|
||||
WR_STATE_WAIT_RD:
|
||||
if (wr_rd_response_eot) begin
|
||||
wr_fsm_next_state = WR_STATE_IDLE;
|
||||
end
|
||||
default:
|
||||
wr_fsm_next_state = WR_STATE_IDLE;
|
||||
endcase
|
||||
end
|
||||
|
||||
always @(posedge wr_clk) begin
|
||||
if (wr_resetn_in == 1'b0) begin
|
||||
wr_fsm_state <= WR_STATE_IDLE;
|
||||
end else begin
|
||||
wr_fsm_state <= wr_fsm_next_state;
|
||||
end
|
||||
end
|
||||
|
||||
always @(*) begin
|
||||
rd_fsm_next_state = rd_fsm_state;
|
||||
case (rd_fsm_state)
|
||||
RD_STATE_IDLE:
|
||||
if (rd_ml_valid) begin
|
||||
rd_fsm_next_state = RD_STATE_PRE_RD;
|
||||
end
|
||||
RD_STATE_PRE_RD:
|
||||
if (rd_request_ready) begin
|
||||
rd_fsm_next_state = TX_OR_RXN_PATH ? RD_STATE_SYNC : RD_STATE_RD;
|
||||
end
|
||||
RD_STATE_SYNC:
|
||||
if (rd_valid) // Wait until storage is valid
|
||||
case (sync_config)
|
||||
AUTOMATIC:
|
||||
rd_fsm_next_state = RD_STATE_RD;
|
||||
HARDWARE:
|
||||
if (rd_sync_external_s) begin
|
||||
rd_fsm_next_state = RD_STATE_RD;
|
||||
end
|
||||
SOFTWARE:
|
||||
if (sync_internal) begin
|
||||
rd_fsm_next_state = RD_STATE_RD;
|
||||
end
|
||||
default:
|
||||
rd_fsm_next_state = RD_STATE_RD;
|
||||
endcase
|
||||
RD_STATE_RD:
|
||||
if (rd_last_eot) begin
|
||||
rd_fsm_next_state = (rd_cyclic_en == 1'b0) ? RD_STATE_IDLE :
|
||||
(TX_OR_RXN_PATH & (sync_config != AUTOMATIC)) ? RD_STATE_SYNC :
|
||||
RD_STATE_RD;
|
||||
end
|
||||
default:
|
||||
rd_fsm_next_state = RD_STATE_IDLE;
|
||||
endcase
|
||||
end
|
||||
|
||||
always @(posedge rd_clk) begin
|
||||
if (rd_resetn_in == 1'b0) begin
|
||||
rd_fsm_state <= RD_STATE_IDLE;
|
||||
end else begin
|
||||
rd_fsm_state <= rd_fsm_next_state;
|
||||
end
|
||||
end
|
||||
|
||||
always @(posedge rd_clk) begin
|
||||
if (rd_resetn_in == 1'b0)
|
||||
rd_outstanding <= 2'b0;
|
||||
else if (rd_request_ready & rd_request_valid & ~rd_response_eot)
|
||||
rd_outstanding <= rd_outstanding + 2'd1;
|
||||
else if (~(rd_request_ready & rd_request_valid) & (rd_response_eot & rd_fsm_state[RD_BIT_RD]))
|
||||
rd_outstanding <= rd_outstanding - 2'd1;
|
||||
end
|
||||
assign rd_last_eot = (rd_outstanding == 1) & (rd_response_eot & rd_fsm_state[RD_BIT_RD]) & !(rd_request_ready & rd_request_valid);
|
||||
|
||||
always @(posedge rd_clk) begin
|
||||
if (rd_init_req_s) begin
|
||||
rd_cyclic_en <= 1'b0;
|
||||
end else if (rd_fsm_state[RD_BIT_PRE_RD]) begin
|
||||
rd_cyclic_en <= ~rd_oneshot;
|
||||
end
|
||||
end
|
||||
|
||||
assign rd_ready = rd_fsm_state[RD_BIT_RD];
|
||||
assign wr_ready = wr_fsm_state[WR_BIT_WR];
|
||||
|
||||
assign wr_request_valid = wr_fsm_state[WR_BIT_PRE_WR];
|
||||
assign rd_request_valid = rd_fsm_state[RD_BIT_PRE_RD] | rd_cyclic_en;
|
||||
|
||||
always @(posedge rd_clk) begin
|
||||
if (rd_resetn_in == 1'b0 || (~rd_init_req_s & ~TX_OR_RXN_PATH[0]))
|
||||
rd_request_enable <= 1'b0;
|
||||
else
|
||||
rd_request_enable <= 1'b1;
|
||||
end
|
||||
|
||||
always @(posedge wr_clk) begin
|
||||
if (wr_resetn_in == 1'b0)
|
||||
wr_request_enable <= 1'b0;
|
||||
else
|
||||
wr_request_enable <= 1'b1;
|
||||
end
|
||||
|
||||
assign rd_ml_ready = rd_fsm_state[RD_BIT_IDLE];
|
||||
|
||||
// CDC circuits
|
||||
sync_event #(
|
||||
.NUM_OF_EVENTS (1),
|
||||
.ASYNC_CLK (1)
|
||||
) i_wr_empty_sync (
|
||||
.in_clk (rd_clk),
|
||||
.in_event (rd_last_eot && rd_fsm_state[RD_BIT_RD]),
|
||||
.out_clk (wr_clk),
|
||||
.out_event (wr_rd_response_eot));
|
||||
|
||||
sync_bits #(
|
||||
.NUM_OF_BITS (1),
|
||||
.ASYNC_CLK (TX_OR_RXN_PATH[0])
|
||||
) i_rd_init_req_sync (
|
||||
.in_bits (init_req),
|
||||
.out_clk (rd_clk),
|
||||
.out_resetn (1'b1),
|
||||
.out_bits (rd_init_req_s));
|
||||
|
||||
sync_bits #(
|
||||
.NUM_OF_BITS (1),
|
||||
.ASYNC_CLK (~TX_OR_RXN_PATH[0])
|
||||
) i_wr_init_req_sync (
|
||||
.in_bits (init_req),
|
||||
.out_clk (wr_clk),
|
||||
.out_resetn (1'b1),
|
||||
.out_bits (wr_init_req_s));
|
||||
|
||||
// When SYNC_EXT_ADD_INTERNAL_CDC is deasserted, one of these signals will end
|
||||
// up being synchronized to the "wrong" clock domain. This shouldn't matter
|
||||
// because the incorrectly synchronized signal is guarded by a synthesis constant.
|
||||
sync_bits #(
|
||||
.NUM_OF_BITS (1),
|
||||
.ASYNC_CLK (SYNC_EXT_ADD_INTERNAL_CDC)
|
||||
) i_sync_wr_sync (
|
||||
.in_bits ({ sync_external }),
|
||||
.out_clk (wr_clk),
|
||||
.out_resetn (1'b1),
|
||||
.out_bits ({wr_sync_external_s}));
|
||||
|
||||
sync_bits #(
|
||||
.NUM_OF_BITS (1),
|
||||
.ASYNC_CLK (SYNC_EXT_ADD_INTERNAL_CDC)
|
||||
) i_sync_rd_sync (
|
||||
.in_bits ({ sync_external }),
|
||||
.out_clk (rd_clk),
|
||||
.out_resetn (1'b1),
|
||||
.out_bits ({ rd_sync_external_s }));
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,284 @@
|
||||
###############################################################################
|
||||
## Copyright (C) 2021-2023 Analog Devices, Inc. All rights reserved.
|
||||
### SPDX short identifier: ADIBSD
|
||||
###############################################################################
|
||||
|
||||
source ../../scripts/adi_env.tcl
|
||||
source $ad_hdl_dir/library/scripts/adi_ip_xilinx.tcl
|
||||
|
||||
global VIVADO_IP_LIBRARY
|
||||
|
||||
adi_ip_create data_offload
|
||||
adi_ip_files data_offload [list \
|
||||
"data_offload_sv.ttcl" \
|
||||
"$ad_hdl_dir/library/common/up_axi.v" \
|
||||
"$ad_hdl_dir/library/common/ad_mem_asym.v" \
|
||||
"$ad_hdl_dir/library/common/ad_axis_inf_rx.v" \
|
||||
"data_offload_regmap.v" \
|
||||
"data_offload_fsm.v" \
|
||||
"data_offload.v" ]
|
||||
|
||||
## NOTE: To solve the issue AR# 70646 we need to call the following command
|
||||
##set_property source_mgmt_mode DisplayOnly [current_project]
|
||||
|
||||
adi_ip_properties data_offload
|
||||
adi_ip_ttcl data_offload "data_offload_constr.ttcl"
|
||||
adi_ip_sim_ttcl data_offload "data_offload_sv.ttcl"
|
||||
|
||||
adi_ip_add_core_dependencies [list \
|
||||
analog.com:$VIVADO_IP_LIBRARY:util_cdc:1.0 \
|
||||
analog.com:$VIVADO_IP_LIBRARY:util_axis_fifo_asym:1.0 \
|
||||
]
|
||||
|
||||
set_property display_name "ADI Data Offload Controller" [ipx::current_core]
|
||||
set_property description "ADI Data Offload Controller" [ipx::current_core]
|
||||
|
||||
## Interface definitions
|
||||
|
||||
## destination interfaces (e.g. RX_DMA or DAC core)
|
||||
|
||||
adi_add_bus "m_axis" "master" \
|
||||
"xilinx.com:interface:axis_rtl:1.0" \
|
||||
"xilinx.com:interface:axis:1.0" \
|
||||
[ list \
|
||||
{"m_axis_ready" "TREADY"} \
|
||||
{"m_axis_valid" "TVALID"} \
|
||||
{"m_axis_data" "TDATA"} \
|
||||
{"m_axis_last" "TLAST"} \
|
||||
{"m_axis_tkeep" "TKEEP"} ]
|
||||
|
||||
## source interface (e.g. TX_DMA or ADC core)
|
||||
|
||||
adi_add_bus "s_axis" "slave" \
|
||||
"xilinx.com:interface:axis_rtl:1.0" \
|
||||
"xilinx.com:interface:axis:1.0" \
|
||||
[ list \
|
||||
{"s_axis_ready" "TREADY"} \
|
||||
{"s_axis_valid" "TVALID"} \
|
||||
{"s_axis_data" "TDATA"} \
|
||||
{"s_axis_last" "TLAST"} \
|
||||
{"s_axis_tkeep" "TKEEP"} ]
|
||||
|
||||
adi_add_bus "wr_ctrl" "master" \
|
||||
"analog.com:interface:if_do_ctrl_rtl:1.0" \
|
||||
"analog.com:interface:if_do_ctrl:1.0" \
|
||||
[list {"wr_request_enable" "request_enable"} \
|
||||
{"wr_request_valid" "request_valid"} \
|
||||
{"wr_request_ready" "request_ready"} \
|
||||
{"wr_request_length" "request_length"} \
|
||||
{"wr_response_measured_length" "response_measured_length"} \
|
||||
{"wr_response_eot" "response_eot"} \
|
||||
{"wr_overflow" "status_overflow"} \
|
||||
]
|
||||
|
||||
adi_add_bus "rd_ctrl" "master" \
|
||||
"analog.com:interface:if_do_ctrl_rtl:1.0" \
|
||||
"analog.com:interface:if_do_ctrl:1.0" \
|
||||
[list {"rd_request_enable" "request_enable"} \
|
||||
{"rd_request_valid" "request_valid"} \
|
||||
{"rd_request_ready" "request_ready"} \
|
||||
{"rd_request_length" "request_length"} \
|
||||
{"rd_response_eot" "response_eot"} \
|
||||
{"rd_underflow" "status_underflow"} \
|
||||
]
|
||||
|
||||
adi_add_bus "s_storage_axis" "slave" \
|
||||
"xilinx.com:interface:axis_rtl:1.0" \
|
||||
"xilinx.com:interface:axis:1.0" \
|
||||
[list {"s_storage_axis_ready" "TREADY"} \
|
||||
{"s_storage_axis_valid" "TVALID"} \
|
||||
{"s_storage_axis_data" "TDATA"} \
|
||||
{"s_storage_axis_tkeep" "TKEEP"} \
|
||||
{"s_storage_axis_last" "TLAST"}]
|
||||
|
||||
adi_add_bus "m_storage_axis" "master" \
|
||||
"xilinx.com:interface:axis_rtl:1.0" \
|
||||
"xilinx.com:interface:axis:1.0" \
|
||||
[list {"m_storage_axis_ready" "TREADY"} \
|
||||
{"m_storage_axis_valid" "TVALID"} \
|
||||
{"m_storage_axis_data" "TDATA"} \
|
||||
{"m_storage_axis_tkeep" "TKEEP"} \
|
||||
{"m_storage_axis_last" "TLAST"}]
|
||||
|
||||
adi_add_bus_clock "m_axis_aclk" "s_storage_axis:m_axis" "m_axis_aresetn"
|
||||
adi_add_bus_clock "s_axis_aclk" "m_storage_axis:s_axis" "s_axis_aresetn"
|
||||
|
||||
set cc [ipx::current_core]
|
||||
|
||||
set_property -dict [list \
|
||||
enablement_resolve_type dependent \
|
||||
driver_value 0 \
|
||||
enablement_dependency {MEM_TYPE == 1} \
|
||||
] \
|
||||
[ipx::get_ports ddr_calib_done -of_objects $cc]
|
||||
|
||||
set_property -dict [list \
|
||||
driver_value 0 \
|
||||
] \
|
||||
[ipx::get_ports wr_overflow -of_objects $cc]
|
||||
|
||||
set_property -dict [list \
|
||||
driver_value 0 \
|
||||
] \
|
||||
[ipx::get_ports rd_underflow -of_objects $cc]
|
||||
|
||||
## Parameter validations
|
||||
|
||||
## MEM_TPYE
|
||||
set_property -dict [list \
|
||||
"value_format" "long" \
|
||||
"value_validation_type" "pairs" \
|
||||
"value_validation_pairs" { \
|
||||
"Internal memory" "0" \
|
||||
"External memory" "1" \
|
||||
} \
|
||||
] \
|
||||
[ipx::get_user_parameters MEM_TYPE -of_objects $cc]
|
||||
|
||||
set_property -dict [list \
|
||||
"value_format" "long" \
|
||||
] \
|
||||
[ipx::get_hdl_parameters MEM_TYPE -of_objects $cc]
|
||||
|
||||
set_property -dict [list \
|
||||
"value_validation_type" "pairs" \
|
||||
"value_validation_pairs" { \
|
||||
"RX path" "0" \
|
||||
"TX path" "1" \
|
||||
} \
|
||||
] \
|
||||
[ipx::get_user_parameters TX_OR_RXN_PATH -of_objects $cc]
|
||||
|
||||
set_property -dict [list \
|
||||
"value_validation_type" "pairs" \
|
||||
"value" "10" \
|
||||
"value_validation_pairs" {\
|
||||
"1kB" "10" \
|
||||
"2kB" "11" \
|
||||
"4kB" "12" \
|
||||
"8kB" "13" \
|
||||
"16kB" "14" \
|
||||
"32kB" "15" \
|
||||
"64kB" "16" \
|
||||
"128kB" "17" \
|
||||
"256kB" "18" \
|
||||
"512kB" "19" \
|
||||
"1MB" "20" \
|
||||
"2MB" "21" \
|
||||
"4MB" "22" \
|
||||
"8MB" "23" \
|
||||
"16MB" "24" \
|
||||
"32MB" "25" \
|
||||
"64MB" "26" \
|
||||
"128MB" "27" \
|
||||
"256MB" "28" \
|
||||
"512MB" "29" \
|
||||
"1GB" "30" \
|
||||
"2GB" "31" \
|
||||
"4GB" "32" \
|
||||
"8GB" "33" \
|
||||
"16GB" "34" \
|
||||
} \
|
||||
] \
|
||||
[ipx::get_user_parameters MEM_SIZE_LOG2 -of_objects $cc]
|
||||
|
||||
## Boolean parameters
|
||||
foreach {k v} { \
|
||||
"HAS_BYPASS" "true" \
|
||||
"DST_CYCLIC_EN" "true" \
|
||||
"SYNC_EXT_ADD_INTERNAL_CDC" "true" \
|
||||
} { \
|
||||
set_property -dict [list \
|
||||
"value_format" "bool" \
|
||||
"value_format" "bool" \
|
||||
"value" $v \
|
||||
] \
|
||||
[ipx::get_user_parameters $k -of_objects $cc]
|
||||
set_property -dict [list \
|
||||
"value_format" "bool" \
|
||||
"value_format" "bool" \
|
||||
"value" $v \
|
||||
] \
|
||||
[ipx::get_hdl_parameters $k -of_objects $cc]
|
||||
}
|
||||
|
||||
### Customize IP Layout
|
||||
|
||||
## Remove the automatically generated GUI page
|
||||
ipgui::remove_page -component $cc [ipgui::get_pagespec -name "Page 0" -component $cc]
|
||||
ipx::save_core [ipx::current_core]
|
||||
|
||||
## Create a new GUI page
|
||||
ipgui::add_page -name {Data Offload} -component [ipx::current_core] -display_name {Data Offload}
|
||||
set page0 [ipgui::get_pagespec -name "Data Offload" -component $cc]
|
||||
|
||||
## General Configurations
|
||||
set general_group [ipgui::add_group -name "General Configuration" -component $cc \
|
||||
-parent $page0 -display_name "General Configuration" ]
|
||||
|
||||
ipgui::add_param -name "ID" -component $cc -parent $general_group
|
||||
set_property -dict [list \
|
||||
"display_name" "Core ID" \
|
||||
] [ipgui::get_guiparamspec -name "ID" -component $cc]
|
||||
|
||||
ipgui::add_param -name "TX_OR_RXN_PATH" -component $cc -parent $general_group
|
||||
set_property -dict [list \
|
||||
"widget" "comboBox" \
|
||||
"display_name" "Data path type" \
|
||||
] [ipgui::get_guiparamspec -name "TX_OR_RXN_PATH" -component $cc]
|
||||
|
||||
ipgui::add_param -name "MEM_TYPE" -component $cc -parent $general_group
|
||||
set_property -dict [list \
|
||||
"widget" "comboBox" \
|
||||
"display_name" "Storage Type" \
|
||||
] [ipgui::get_guiparamspec -name "MEM_TYPE" -component $cc]
|
||||
|
||||
ipgui::add_param -name "MEM_SIZE_LOG2" -component $cc -parent $general_group
|
||||
set_property -dict [list \
|
||||
"display_name" "Storage Size" \
|
||||
"tooltip" "Log2 value of Storage Size in bytes" \
|
||||
] [ipgui::get_guiparamspec -name "MEM_SIZE_LOG2" -component $cc]
|
||||
|
||||
## Transmit and receive endpoints
|
||||
set source_group [ipgui::add_group -name "Source Endpoint Configuration" -component $cc \
|
||||
-parent $page0 -display_name "Source Endpoint Configuration" \
|
||||
-layout "horizontal"]
|
||||
set destination_group [ipgui::add_group -name "Destination Endpoint Configuration" -component $cc \
|
||||
-parent $page0 -display_name "Destination Endpoint Configuration" \
|
||||
-layout "horizontal"]
|
||||
|
||||
ipgui::add_param -name "SRC_DATA_WIDTH" -component $cc -parent $source_group
|
||||
set_property -dict [list \
|
||||
"display_name" "Source Interface data width" \
|
||||
] [ipgui::get_guiparamspec -name "SRC_DATA_WIDTH" -component $cc]
|
||||
|
||||
ipgui::add_param -name "DST_DATA_WIDTH" -component $cc -parent $destination_group
|
||||
set_property -dict [list \
|
||||
"display_name" "Destination Interface data width" \
|
||||
] [ipgui::get_guiparamspec -name "DST_DATA_WIDTH" -component $cc]
|
||||
|
||||
## Other features
|
||||
set features_group [ipgui::add_group -name "Features" -component $cc \
|
||||
-parent $page0 -display_name "Features" ]
|
||||
|
||||
ipgui::add_param -name "HAS_BYPASS" -component $cc -parent $features_group
|
||||
set_property -dict [list \
|
||||
"display_name" "Internal Bypass Data Path Enabled" \
|
||||
] [ipgui::get_guiparamspec -name "HAS_BYPASS" -component $cc]
|
||||
|
||||
ipgui::add_param -name "DST_CYCLIC_EN" -component $cc -parent $features_group
|
||||
set_property -dict [list \
|
||||
"display_name" "Destination Cyclic Mode Enabled" \
|
||||
] [ipgui::get_guiparamspec -name "DST_CYCLIC_EN" -component $cc]
|
||||
set_property enablement_tcl_expr {$TX_OR_RXN_PATH == 1} [ipx::get_user_parameters DST_CYCLIC_EN -of_objects $cc]
|
||||
|
||||
ipgui::add_param -name "SYNC_EXT_ADD_INTERNAL_CDC" -component $cc -parent $features_group
|
||||
set_property -dict [list \
|
||||
"display_name" "Generate CDC Circuit for sync_ext" \
|
||||
] [ipgui::get_guiparamspec -name "SYNC_EXT_ADD_INTERNAL_CDC" -component $cc]
|
||||
|
||||
## Create and save the XGUI file
|
||||
ipx::create_xgui_files $cc
|
||||
|
||||
ipx::save_core [ipx::current_core]
|
||||
|
||||
@@ -0,0 +1,408 @@
|
||||
// ***************************************************************************
|
||||
// ***************************************************************************
|
||||
// Copyright (C) 2021-2023 Analog Devices, Inc. All rights reserved.
|
||||
//
|
||||
// In this HDL repository, there are many different and unique modules, consisting
|
||||
// of various HDL (Verilog or VHDL) components. The individual modules are
|
||||
// developed independently, and may be accompanied by separate and unique license
|
||||
// terms.
|
||||
//
|
||||
// The user should read each of these license terms, and understand the
|
||||
// freedoms and responsibilities that he or she has by using this source/core.
|
||||
//
|
||||
// This core 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.
|
||||
//
|
||||
// Redistribution and use of source or resulting binaries, with or without modification
|
||||
// of this file, are permitted under one of the following two license terms:
|
||||
//
|
||||
// 1. The GNU General Public License version 2 as published by the
|
||||
// Free Software Foundation, which can be found in the top level directory
|
||||
// of this repository (LICENSE_GPL2), and also online at:
|
||||
// <https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
|
||||
//
|
||||
// OR
|
||||
//
|
||||
// 2. An ADI specific BSD license, which can be found in the top level directory
|
||||
// of this repository (LICENSE_ADIBSD), and also on-line at:
|
||||
// https://github.com/analogdevicesinc/hdl/blob/master/LICENSE_ADIBSD
|
||||
// This will allow to generate bit files and not release the source code,
|
||||
// as long as it attaches to an ADI device.
|
||||
//
|
||||
// ***************************************************************************
|
||||
// ***************************************************************************
|
||||
`timescale 1ns/100ps
|
||||
|
||||
module data_offload_regmap #(
|
||||
|
||||
parameter ID = 0,
|
||||
parameter [ 0:0] MEM_TYPE = 1'b0,
|
||||
parameter MEM_SIZE_LOG2 = 10,
|
||||
parameter TX_OR_RXN_PATH = 0,
|
||||
parameter AUTO_BRINGUP = 0,
|
||||
parameter HAS_BYPASS = 1
|
||||
) (
|
||||
|
||||
// microprocessor interface
|
||||
input up_clk,
|
||||
input up_rstn,
|
||||
|
||||
input up_rreq,
|
||||
output reg up_rack,
|
||||
input [13:0] up_raddr,
|
||||
output reg [31:0] up_rdata,
|
||||
input up_wreq,
|
||||
output reg up_wack,
|
||||
input [13:0] up_waddr,
|
||||
input [31:0] up_wdata,
|
||||
|
||||
// source clock domain
|
||||
input src_clk,
|
||||
|
||||
// destination clock domain
|
||||
input dst_clk,
|
||||
|
||||
// resets for all clock domains
|
||||
output reg src_sw_resetn,
|
||||
output reg dst_sw_resetn,
|
||||
|
||||
// status bit from the memory controller
|
||||
input ddr_calib_done,
|
||||
|
||||
// bypass control
|
||||
output src_bypass,
|
||||
output dst_bypass,
|
||||
output oneshot,
|
||||
|
||||
// synchronization
|
||||
output sync,
|
||||
output [ 1:0] sync_config,
|
||||
|
||||
output [MEM_SIZE_LOG2-1:0] src_transfer_length,
|
||||
output [MEM_SIZE_LOG2-1:0] dst_transfer_length,
|
||||
|
||||
// FSM control and status
|
||||
input [ 4:0] src_fsm_status,
|
||||
input [ 3:0] dst_fsm_status,
|
||||
|
||||
input src_overflow,
|
||||
input dst_underflow
|
||||
);
|
||||
|
||||
// local parameters
|
||||
|
||||
localparam [31:0] CORE_VERSION = 32'h00010061; // 1.00.a
|
||||
localparam [31:0] CORE_MAGIC = 32'h44414F46; // DAOF
|
||||
|
||||
localparam [33:0] MEM_SIZE = 1 << MEM_SIZE_LOG2;
|
||||
|
||||
// internal registers
|
||||
|
||||
reg [31:0] up_scratch = 'd0;
|
||||
reg up_sw_resetn = 'd0;
|
||||
reg up_bypass = 'd0;
|
||||
reg up_sync = 'd0;
|
||||
reg [ 1:0] up_sync_config = 'd0;
|
||||
reg up_oneshot = 1'b0;
|
||||
reg [MEM_SIZE_LOG2-1:0] up_transfer_length = 'd0;
|
||||
reg up_src_overflow = 1'b0;
|
||||
reg up_dst_underflow = 1'b0;
|
||||
|
||||
//internal signals
|
||||
|
||||
wire up_ddr_calib_done_s;
|
||||
wire [ 4:0] up_wr_fsm_status_s;
|
||||
wire [ 3:0] up_rd_fsm_status_s;
|
||||
wire src_sw_resetn_s;
|
||||
wire dst_sw_resetn_s;
|
||||
wire [33:0] src_transfer_length_s;
|
||||
wire up_src_overflow_set_s;
|
||||
wire up_dst_underflow_set_s;
|
||||
|
||||
// write interface
|
||||
always @(posedge up_clk) begin
|
||||
if (up_rstn == 1'b0) begin
|
||||
up_wack <= up_wreq;
|
||||
up_scratch <= 'd0;
|
||||
up_sw_resetn <= AUTO_BRINGUP;
|
||||
up_oneshot <= ~TX_OR_RXN_PATH;
|
||||
up_bypass <= 'd0;
|
||||
up_sync <= 'd0;
|
||||
up_sync_config <= 'd0;
|
||||
up_transfer_length <= {MEM_SIZE_LOG2{1'b1}};
|
||||
up_src_overflow <= 1'b0;
|
||||
up_dst_underflow <= 1'b0;
|
||||
end else begin
|
||||
up_wack <= up_wreq;
|
||||
/* Scratch Register */
|
||||
if ((up_wreq == 1'b1) && (up_waddr[13:0] == 14'h02)) begin
|
||||
up_scratch <= up_wdata;
|
||||
end
|
||||
/* Transfer Length Register */
|
||||
if ((up_wreq == 1'b1) && (up_waddr[13:0] == 14'h07)) begin
|
||||
up_transfer_length <= {up_wdata[MEM_SIZE_LOG2-7:0], {6{1'b1}}};
|
||||
end
|
||||
/* Memory interface status register */
|
||||
if ((up_wreq == 1'b1) && (up_waddr[13:0] == 14'h20) && up_wdata[4]) begin
|
||||
up_src_overflow <= 1'b0;
|
||||
end else if (up_src_overflow_set_s) begin
|
||||
up_src_overflow <= 1'b1;
|
||||
end
|
||||
if ((up_wreq == 1'b1) && (up_waddr[13:0] == 14'h20) && up_wdata[5]) begin
|
||||
up_dst_underflow <= 1'b0;
|
||||
end else if (up_dst_underflow_set_s) begin
|
||||
up_dst_underflow <= 1'b1;
|
||||
end
|
||||
/* Reset Offload Register */
|
||||
if ((up_wreq == 1'b1) && (up_waddr[13:0] == 14'h21)) begin
|
||||
up_sw_resetn <= up_wdata[0];
|
||||
end
|
||||
/* Control Register */
|
||||
if ((up_wreq == 1'b1) && (up_waddr[13:0] == 14'h22)) begin
|
||||
up_oneshot <= up_wdata[1];
|
||||
up_bypass <= up_wdata[0] & HAS_BYPASS;
|
||||
end
|
||||
/* SYNC Offload Register - self cleared, one pulse signal */
|
||||
if ((up_wreq == 1'b1) && (up_waddr[13:0] == 14'h40)) begin
|
||||
up_sync <= up_wdata[0];
|
||||
end else begin
|
||||
up_sync <= 1'b0;
|
||||
end
|
||||
/* SYNC RX Configuration Register */
|
||||
if ((up_wreq == 1'b1) && (up_waddr[13:0] == 14'h41)) begin
|
||||
up_sync_config <= up_wdata[1:0];
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
//read interface for common registers
|
||||
always @(posedge up_clk) begin
|
||||
if (up_rstn == 1'b0) begin
|
||||
up_rack <= 1'b0;
|
||||
up_rdata <= 32'b0;
|
||||
end else begin
|
||||
up_rack <= up_rreq;
|
||||
case(up_raddr)
|
||||
|
||||
/* Version Register */
|
||||
14'h000: up_rdata <= {
|
||||
CORE_VERSION[31:16], /* MAJOR */
|
||||
CORE_VERSION[15: 8], /* MINOR */
|
||||
CORE_VERSION[ 7: 0] /* PATCH */
|
||||
};
|
||||
/* Peripheral ID Register */
|
||||
14'h001: up_rdata <= ID;
|
||||
|
||||
/* Peripheral ID Register */
|
||||
14'h002: up_rdata <= up_scratch;
|
||||
|
||||
/* Identification Register */
|
||||
14'h003: up_rdata <= CORE_MAGIC;
|
||||
|
||||
/* Configuration Register */
|
||||
14'h004: up_rdata <= {
|
||||
29'b0,
|
||||
/* 2 */ HAS_BYPASS[0],
|
||||
/* 1 */ TX_OR_RXN_PATH[0],
|
||||
/* 0 */ MEM_TYPE[0]
|
||||
};
|
||||
/* Configuration Storage Unit Size LSB Register */
|
||||
14'h005: up_rdata <= MEM_SIZE[31:0];
|
||||
|
||||
/* Configuration Storage Unit Size MSB Register */
|
||||
14'h006: up_rdata <= {
|
||||
30'b0,
|
||||
/* 00-01 */ MEM_SIZE[33:32]
|
||||
};
|
||||
|
||||
/* Configuration data transfer length */
|
||||
14'h007: up_rdata <= {
|
||||
{32-(MEM_SIZE_LOG2-6){1'b0}},
|
||||
up_transfer_length[MEM_SIZE_LOG2-1:6]
|
||||
};
|
||||
|
||||
/* 0x08-0x1f reserved for future use */
|
||||
|
||||
/* Memory Physical Interface Status */
|
||||
14'h020: up_rdata <= {
|
||||
26'b0,
|
||||
up_dst_underflow,
|
||||
up_src_overflow,
|
||||
3'b0,
|
||||
/* 0 */ up_ddr_calib_done_s
|
||||
};
|
||||
/* Reset Offload Register */
|
||||
14'h021: up_rdata <= {
|
||||
31'b0,
|
||||
/* 0 */ up_sw_resetn
|
||||
};
|
||||
/* Control Register */
|
||||
14'h022: up_rdata <= {
|
||||
30'b0,
|
||||
/* 1 */ up_oneshot,
|
||||
/* 0 */ up_bypass
|
||||
};
|
||||
/* 0x24-0x3f reserved for future use */
|
||||
|
||||
/* SYNC Offload Register */
|
||||
14'h040: up_rdata <= {
|
||||
31'b0,
|
||||
/* 0 */ up_sync
|
||||
};
|
||||
/* SYNC RX Configuration Register */
|
||||
14'h041: up_rdata <= {
|
||||
30'b0,
|
||||
/* 00-01 */ up_sync_config
|
||||
};
|
||||
/* 0x42-0x7f reserved for future use */
|
||||
|
||||
/* FMS Debug Register */
|
||||
14'h080: up_rdata <= {
|
||||
20'b0,
|
||||
/* 11-08 */ up_rd_fsm_status_s,
|
||||
3'b0,
|
||||
/* 04-00 */ up_wr_fsm_status_s
|
||||
};
|
||||
|
||||
default: up_rdata <= 32'h00000000;
|
||||
endcase
|
||||
end
|
||||
end /* read interface */
|
||||
|
||||
// Clock Domain Crossing Logic for reset, control and status signals
|
||||
|
||||
sync_data #(
|
||||
.NUM_OF_BITS (4),
|
||||
.ASYNC_CLK (1)
|
||||
) i_dst_fsm_status (
|
||||
.in_clk (dst_clk),
|
||||
.in_data (dst_fsm_status),
|
||||
.out_clk (up_clk),
|
||||
.out_data (up_rd_fsm_status_s));
|
||||
|
||||
sync_data #(
|
||||
.NUM_OF_BITS (5),
|
||||
.ASYNC_CLK (1)
|
||||
) i_src_fsm_status (
|
||||
.in_clk (src_clk),
|
||||
.in_data (src_fsm_status),
|
||||
.out_clk (up_clk),
|
||||
.out_data (up_wr_fsm_status_s));
|
||||
|
||||
generate
|
||||
if (TX_OR_RXN_PATH) begin : sync_tx_path
|
||||
|
||||
sync_data #(
|
||||
.NUM_OF_BITS (3),
|
||||
.ASYNC_CLK (1)
|
||||
) i_sync_xfer_control (
|
||||
.in_clk (up_clk),
|
||||
.in_data ({up_sync_config,
|
||||
up_sync}),
|
||||
.out_clk (dst_clk),
|
||||
.out_data ({sync_config,
|
||||
sync}));
|
||||
|
||||
end else begin : sync_rx_path
|
||||
|
||||
sync_data #(
|
||||
.NUM_OF_BITS (3),
|
||||
.ASYNC_CLK (1)
|
||||
) i_sync_xfer_control (
|
||||
.in_clk (up_clk),
|
||||
.in_data ({up_sync_config,
|
||||
up_sync}),
|
||||
.out_clk (src_clk),
|
||||
.out_data ({sync_config,
|
||||
sync}));
|
||||
|
||||
end
|
||||
endgenerate
|
||||
|
||||
sync_bits #(
|
||||
.NUM_OF_BITS (2),
|
||||
.ASYNC_CLK (1)
|
||||
) i_src_xfer_control (
|
||||
.in_bits ({ up_sw_resetn, up_bypass }),
|
||||
.out_clk (src_clk),
|
||||
.out_resetn (1'b1),
|
||||
.out_bits ({ src_sw_resetn_s, src_bypass }));
|
||||
|
||||
sync_bits #(
|
||||
.NUM_OF_BITS (2),
|
||||
.ASYNC_CLK (1)
|
||||
) i_dst_xfer_control (
|
||||
.in_bits ({ up_sw_resetn, up_bypass }),
|
||||
.out_clk (dst_clk),
|
||||
.out_resetn (1'b1),
|
||||
.out_bits ({ dst_sw_resetn_s, dst_bypass }));
|
||||
|
||||
sync_bits #(
|
||||
.NUM_OF_BITS (1),
|
||||
.ASYNC_CLK (1)
|
||||
) i_ddr_calib_done_sync (
|
||||
.in_bits (ddr_calib_done),
|
||||
.out_clk (up_clk),
|
||||
.out_resetn (1'b1),
|
||||
.out_bits (up_ddr_calib_done_s));
|
||||
|
||||
sync_bits #(
|
||||
.NUM_OF_BITS (1),
|
||||
.ASYNC_CLK (1)
|
||||
) i_dst_oneshot_sync (
|
||||
.in_bits (up_oneshot),
|
||||
.out_clk (dst_clk),
|
||||
.out_resetn (1'b1),
|
||||
.out_bits (oneshot));
|
||||
|
||||
sync_data #(
|
||||
.NUM_OF_BITS (MEM_SIZE_LOG2),
|
||||
.ASYNC_CLK (1)
|
||||
) i_sync_src_transfer_length (
|
||||
.in_clk (up_clk),
|
||||
.in_data (up_transfer_length),
|
||||
.out_clk (src_clk),
|
||||
.out_data (src_transfer_length));
|
||||
|
||||
sync_data #(
|
||||
.NUM_OF_BITS (MEM_SIZE_LOG2),
|
||||
.ASYNC_CLK (1)
|
||||
) i_sync_dst_transfer_length (
|
||||
.in_clk (up_clk),
|
||||
.in_data (up_transfer_length),
|
||||
.out_clk (dst_clk),
|
||||
.out_data (dst_transfer_length));
|
||||
|
||||
always @(posedge src_clk) begin
|
||||
src_sw_resetn <= src_sw_resetn_s;
|
||||
end
|
||||
|
||||
always @(posedge dst_clk) begin
|
||||
dst_sw_resetn <= dst_sw_resetn_s;
|
||||
end
|
||||
|
||||
generate if (TX_OR_RXN_PATH == 0) begin
|
||||
sync_event #(
|
||||
.NUM_OF_EVENTS (1),
|
||||
.ASYNC_CLK (1)
|
||||
) i_wr_overflow_sync (
|
||||
.in_clk (src_clk),
|
||||
.in_event (src_overflow),
|
||||
.out_clk (up_clk),
|
||||
.out_event (up_src_overflow_set_s));
|
||||
assign up_dst_underflow_set_s = 1'b0;
|
||||
end else begin
|
||||
sync_event #(
|
||||
.NUM_OF_EVENTS (1),
|
||||
.ASYNC_CLK (1)
|
||||
) i_rd_underflow_sync (
|
||||
.in_clk (dst_clk),
|
||||
.in_event (dst_underflow),
|
||||
.out_clk (up_clk),
|
||||
.out_event (up_dst_underflow_set_s));
|
||||
assign up_src_overflow_set_s = 1'b0;
|
||||
end
|
||||
endgenerate
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,46 @@
|
||||
###############################################################################
|
||||
## Copyright (C) 2021-2023 Analog Devices, Inc. All rights reserved.
|
||||
# SPDX short identifier: ADIBSD
|
||||
###############################################################################
|
||||
|
||||
<: :>
|
||||
<: set ComponentName [getComponentNameString] :>
|
||||
<: setOutputDirectory "./sim/" :>
|
||||
<: setFileName ${ComponentName}_pkg :>
|
||||
<: setFileExtension ".sv" :>
|
||||
<: set id [get_property MODELPARAM_VALUE.ID] :>
|
||||
<: set mem_type [get_property MODELPARAM_VALUE.MEM_TYPE] :>
|
||||
<: set mem_size_log2 [get_property MODELPARAM_VALUE.MEM_SIZE_LOG2] :>
|
||||
<: set tx_or_rxn_path [get_property MODELPARAM_VALUE.TX_OR_RXN_PATH] :>
|
||||
<: set src_data_width [get_property MODELPARAM_VALUE.src_data_width] :>
|
||||
<: set dst_data_width [get_property MODELPARAM_VALUE.dst_data_width] :>
|
||||
<: set dst_cyclic_en [get_property MODELPARAM_VALUE.dst_cyclic_en] :>
|
||||
|
||||
// boolean to intiger
|
||||
<: proc b2i {b} { if {$b==true} {return 1} else {return 0}} :>
|
||||
|
||||
// C hex to verilog hex
|
||||
<: proc h2vh {a} { return [string replace $a 0 1 "'h"]} :>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//NOTE: This file has been automatically generated by Vivado.
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
package <=: ComponentName :>_pkg;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// These parameters are named after the component for use in your verification
|
||||
// environment.
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
parameter <=: ComponentName :>_ID = <=: $id :>;
|
||||
parameter <=: ComponentName :>_MEM_TYPE = <=: $mem_type :>;
|
||||
parameter <=: ComponentName :>_MEM_SIZE_LOG2 = <=: $mem_size_log2 :>;
|
||||
parameter <=: ComponentName :>_TX_OR_RXN_PATH = <=: b2i $tx_or_rxn_path :>;
|
||||
parameter <=: ComponentName :>_SRC_DATA_WIDTH = <=: b2i $src_data_width :>;
|
||||
parameter <=: ComponentName :>_DST_DATA_WIDTH = <=: b2i $dst_data_width :>;
|
||||
parameter <=: ComponentName :>_DST_CYCLIC_EN = <=: b2i $dst_cyclic_en :>;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
endpackage : <=: ComponentName :>_pkg
|
||||
|
After Width: | Height: | Size: 58 KiB |
@@ -0,0 +1,761 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="800"
|
||||
height="400"
|
||||
viewBox="0 0 800.00001 400.00001"
|
||||
id="svg4885"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="clocks.svg">
|
||||
<defs
|
||||
id="defs4887">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4385">
|
||||
<stop
|
||||
style="stop-color:#f05028;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop4387" />
|
||||
<stop
|
||||
style="stop-color:#100def;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop4389" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4377">
|
||||
<stop
|
||||
style="stop-color:#f05028;stop-opacity:0.9254902"
|
||||
offset="0"
|
||||
id="stop4379" />
|
||||
<stop
|
||||
style="stop-color:#100def;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop4381" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4369">
|
||||
<stop
|
||||
style="stop-color:#006400;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop4371" />
|
||||
<stop
|
||||
style="stop-color:#100def;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop4373" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4361">
|
||||
<stop
|
||||
style="stop-color:#100def;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4363" />
|
||||
<stop
|
||||
style="stop-color:#c8c800;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop4365" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4349">
|
||||
<stop
|
||||
style="stop-color:#0000ff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop4351" />
|
||||
<stop
|
||||
style="stop-color:#ffc800;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop4353" />
|
||||
</linearGradient>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker8368"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path8370"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker7024"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path7026"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker6894"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path6896"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker6770"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path6772"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker6384"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6386"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5850"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5852"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5774"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5776"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7-7"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1-3"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4349"
|
||||
id="linearGradient4359"
|
||||
x1="670"
|
||||
y1="632.36218"
|
||||
x2="720"
|
||||
y2="632.36218"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,148)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4361"
|
||||
id="linearGradient4367"
|
||||
x1="667.95374"
|
||||
y1="813.99072"
|
||||
x2="735"
|
||||
y2="812.36218"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,148)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4369"
|
||||
id="linearGradient4375"
|
||||
x1="400"
|
||||
y1="512.36218"
|
||||
x2="400"
|
||||
y2="592.36218"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,148)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4377"
|
||||
id="linearGradient4383"
|
||||
x1="75"
|
||||
y1="632.36218"
|
||||
x2="130.82559"
|
||||
y2="634.90942"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,148)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4385"
|
||||
id="linearGradient4391"
|
||||
x1="75"
|
||||
y1="817.36218"
|
||||
x2="130.4312"
|
||||
y2="815.65063"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,148)" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.9899495"
|
||||
inkscape:cx="356.24123"
|
||||
inkscape:cy="318.17777"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
showguides="true"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1005"
|
||||
inkscape:window-x="1911"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid5889" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata4890">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-652.36216)">
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4383);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="56.692612"
|
||||
y="705.2146" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="192.66696"
|
||||
y="705.2146" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2-3"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="547.71106"
|
||||
y="705.2146" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4359);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2-3-3"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="667.95624"
|
||||
y="705.2146" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4731"
|
||||
width="164.03253"
|
||||
height="153.97696"
|
||||
x="325.40378"
|
||||
y="773.92096" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4733"
|
||||
width="164.25298"
|
||||
height="63.581898"
|
||||
x="325.39706"
|
||||
y="933.32959" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4375);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4733-2"
|
||||
width="167.27"
|
||||
height="63.568466"
|
||||
x="322.86417"
|
||||
y="664.914" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="93.016663"
|
||||
y="778.31653"
|
||||
id="text4777"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4779"
|
||||
x="93.016663"
|
||||
y="778.31653"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="93.016663"
|
||||
y="800.19153"
|
||||
id="tspan4781"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">FIFO</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="704.28027"
|
||||
y="778.31653"
|
||||
id="text4777-0"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4779-0"
|
||||
x="704.28027"
|
||||
y="778.31653"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="704.28027"
|
||||
y="800.19153"
|
||||
id="tspan4781-0"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">FIFO</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="406.37463"
|
||||
y="692.875"
|
||||
id="text4804"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4806"
|
||||
x="406.37463"
|
||||
y="692.875"
|
||||
style="text-align:center;text-anchor:middle">AXI REGISTER</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="406.37463"
|
||||
y="711.625"
|
||||
id="tspan4808"
|
||||
style="text-align:center;text-anchor:middle">MAP</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="367.93396"
|
||||
y="857.27112"
|
||||
id="text4810"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4812"
|
||||
x="367.93396"
|
||||
y="857.27112"
|
||||
style="font-size:17.5px">MEMORY</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-826.38171"
|
||||
y="235.72015"
|
||||
id="text4814"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4816"
|
||||
x="-826.38171"
|
||||
y="235.72015"
|
||||
style="font-size:17.5px">GEARBOX</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-826.38171"
|
||||
y="590.76422"
|
||||
id="text4814-5"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4816-3"
|
||||
x="-826.38171"
|
||||
y="590.76422"
|
||||
style="font-size:17.5px">GEARBOX</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:14.86567879px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="348.77411"
|
||||
y="962.638"
|
||||
id="text4836"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.99083586,1.0092489)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4838"
|
||||
x="348.77411"
|
||||
y="962.638"
|
||||
style="font-size:17.5px">OFFLOAD FSM</tspan></text>
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4391);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-7"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="56.298218"
|
||||
y="885.95581" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2-8"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="192.27258"
|
||||
y="885.95581" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="92.622276"
|
||||
y="959.05774"
|
||||
id="text4777-7"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4779-4"
|
||||
x="92.622276"
|
||||
y="959.05774"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="92.622276"
|
||||
y="980.93274"
|
||||
id="tspan4781-4"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">FIFO</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-1007.1229"
|
||||
y="235.32578"
|
||||
id="text4814-0"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4816-0"
|
||||
x="-1007.1229"
|
||||
y="235.32578"
|
||||
style="font-size:17.5px">GEARBOX</tspan></text>
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2-3-7"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="548.45856"
|
||||
y="884.2959" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4367);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2-3-3-0"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="668.70374"
|
||||
y="884.2959" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="705.02777"
|
||||
y="957.39783"
|
||||
id="text4777-0-5"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4779-0-5"
|
||||
x="705.02777"
|
||||
y="957.39783"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="705.02777"
|
||||
y="979.27283"
|
||||
id="tspan4781-0-0"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">FIFO</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-1005.463"
|
||||
y="591.51172"
|
||||
id="text4814-5-4"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4816-3-7"
|
||||
x="-1005.463"
|
||||
y="591.51172"
|
||||
style="font-size:17.5px">GEARBOX</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 56.599504,823.30859 7.955357,7.23214 -7.642857,7.1875"
|
||||
id="path5891"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 130.15505,823.30859 -7.95536,7.23214 7.64286,7.1875"
|
||||
id="path5891-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 56.199504,1008.3086 7.955358,7.2321 -7.642858,7.1875"
|
||||
id="path5891-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 129.75505,1008.3086 -7.95536,7.2321 7.64286,7.1875"
|
||||
id="path5891-5-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 668.4995,1008.1082 7.95536,7.2321 -7.64286,7.1875"
|
||||
id="path5891-7-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 742.05505,1008.1082 -7.95536,7.2321 7.64286,7.1875"
|
||||
id="path5891-5-7-2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 667.7995,823.10816 7.95536,7.23214 -7.64286,7.1875"
|
||||
id="path5891-7-0-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 741.35505,823.10816 -7.95536,7.23214 7.64286,7.1875"
|
||||
id="path5891-5-7-2-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 548.4995,1008.2082 7.95536,7.2321 -7.64286,7.1875"
|
||||
id="path5891-7-0-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 547.3995,823.20816 7.95536,7.23214 -7.64286,7.1875"
|
||||
id="path5891-7-0-7-3"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 322.7995,688.20816 7.95536,7.23214 -7.64286,7.1875"
|
||||
id="path5891-7-0-7-3-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 192.3995,1008.3086 7.95536,7.2321 -7.64286,7.1875"
|
||||
id="path5891-7-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 192.6995,823.20816 7.95536,7.23214 -7.64286,7.1875"
|
||||
id="path5891-7-8-4"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 325.1995,958.30859 7.95536,7.23214 -7.64286,7.1875"
|
||||
id="path5891-7-8-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="383.5553"
|
||||
y="784.36218"
|
||||
id="text4252"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4254"
|
||||
x="383.5553"
|
||||
y="784.36218"
|
||||
style="font-size:10px;fill:#000000;fill-opacity:1">USR_CLK</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 405,775.36216 0,-30 120,0 0,85 23,0"
|
||||
id="path4256"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 525,830.36216 0,185.00004 23,0"
|
||||
id="path4258"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 525,870.36216 120,0 0,-40 23,0"
|
||||
id="path4260"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 645,870.36216 0,145.00004 24,0"
|
||||
id="path4262"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 405,745.36216 -110,0 0,125 -135,0 0,-40 33,0"
|
||||
id="path4264"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 160,830.36216 -30,0"
|
||||
id="path4266"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 160,870.36216 0,145.00004 32,0"
|
||||
id="path4268"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 160,1015.3622 -30,0"
|
||||
id="path4270"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 295,870.36216 0,95 30,0"
|
||||
id="path4272"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#006400;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 321.84327,695.23589 275,695.36216"
|
||||
id="path4274"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="270"
|
||||
y="690.36218"
|
||||
id="text4276"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4278"
|
||||
x="270"
|
||||
y="690.36218"
|
||||
style="font-size:10px;fill:#006400;fill-opacity:1">SYS_CLK</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#f05028;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 55,830.36216 -45,0"
|
||||
id="path4280"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="3"
|
||||
y="827.36218"
|
||||
id="text4282"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4284"
|
||||
x="3"
|
||||
y="827.36218"
|
||||
style="font-size:10px;fill:#f05028;fill-opacity:1">DMA_CLK</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#f05028;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 55.500438,1015.3622 -45,0"
|
||||
id="path4280-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="3.5004375"
|
||||
y="1012.3619"
|
||||
id="text4282-5"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4284-5"
|
||||
x="3.5004375"
|
||||
y="1012.3619"
|
||||
style="font-size:10px;fill:#f05028;fill-opacity:1">DMA_CLK</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffc800;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 742,830.36216 38,0"
|
||||
id="path4307"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="748.92859"
|
||||
y="824.64789"
|
||||
id="text4324"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4326"
|
||||
x="748.92859"
|
||||
y="824.64789"
|
||||
style="font-size:10px;fill:#ffc800;fill-opacity:1">DAC_CLK</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#c8c800;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 742.7,1015.3622 38,0"
|
||||
id="path4307-5"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="749.62842"
|
||||
y="1009.6479"
|
||||
id="text4324-8"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4326-5"
|
||||
x="749.62842"
|
||||
y="1009.6479"
|
||||
style="font-size:10px;fill:#c8c800;fill-opacity:1">ADC_CLK</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 36 KiB |
@@ -0,0 +1,501 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="800"
|
||||
height="350"
|
||||
viewBox="0 0 799.99999 350.00001"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="datapath.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4988"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow2Lend"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4867"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7-7"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1-3"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7-7-3"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1-3-5"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7-7-3-2"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1-3-5-5"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="348.22607"
|
||||
inkscape:cy="303.83366"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1005"
|
||||
inkscape:window-x="1911"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid4199" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-702.36203)">
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="67.780487"
|
||||
y="806.93774" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="203.75484"
|
||||
y="806.93774" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2-3"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="544.79895"
|
||||
y="806.93774" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2-3-3"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="681.04413"
|
||||
y="806.93774" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4731"
|
||||
width="144.92928"
|
||||
height="154.06659"
|
||||
x="336.44684"
|
||||
y="807.5993" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.2278322;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4733"
|
||||
width="146.32896"
|
||||
height="48.688343"
|
||||
x="336.35559"
|
||||
y="974.92328" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4733-2"
|
||||
width="145.93925"
|
||||
height="63.66629"
|
||||
x="335.90314"
|
||||
y="728.58832" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="237.14285"
|
||||
y="-124.78075"
|
||||
id="text4765"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4767"
|
||||
x="237.14285"
|
||||
y="-124.78075" /></text>
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot4769"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
|
||||
id="flowRegion4771"><rect
|
||||
id="rect4773"
|
||||
width="105.05586"
|
||||
height="88.893425"
|
||||
x="-250.51784"
|
||||
y="-1177.8685" /></flowRegion><flowPara
|
||||
id="flowPara4775" /></flowRoot> <text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="105.65424"
|
||||
y="875.4939"
|
||||
id="text4777"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4779"
|
||||
x="105.65424"
|
||||
y="875.4939"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="105.65424"
|
||||
y="897.3689"
|
||||
id="tspan4781"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">FIFO</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="719.76984"
|
||||
y="878.98224"
|
||||
id="text4777-0"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4779-0"
|
||||
x="719.76984"
|
||||
y="878.98224"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="719.76984"
|
||||
y="900.85724"
|
||||
id="tspan4781-0"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">FIFO</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:14.0217495px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="437.95517"
|
||||
y="706.1637"
|
||||
id="text4804"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.93334698,1.0714129)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4806"
|
||||
x="437.95517"
|
||||
y="706.1637"
|
||||
style="text-align:center;text-anchor:middle">AXI REGISTER</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="437.95517"
|
||||
y="723.69086"
|
||||
id="tspan4808"
|
||||
style="text-align:center;text-anchor:middle">MAP</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="369.42538"
|
||||
y="890.99426"
|
||||
id="text4810"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4812"
|
||||
x="369.42538"
|
||||
y="890.99426"
|
||||
style="font-size:17.5px">MEMORY</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-924.72638"
|
||||
y="246.7325"
|
||||
id="text4814"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4816"
|
||||
x="-924.72638"
|
||||
y="246.7325"
|
||||
style="font-size:17.5px">GEARBOX</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-924.01697"
|
||||
y="587.26031"
|
||||
id="text4814-5"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4816-3"
|
||||
x="-924.01697"
|
||||
y="587.26031"
|
||||
style="font-size:17.5px">GEARBOX</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.27832222px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="329.5993"
|
||||
y="1073.3921"
|
||||
id="text4836"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(1.0687213,0.93569764)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4838"
|
||||
x="329.5993"
|
||||
y="1073.3921"
|
||||
style="font-size:15px">OFFLOAD FSM</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL)"
|
||||
d="m 20.879445,878.77691 38.1485,0"
|
||||
id="path4840"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-5)"
|
||||
d="m 141.14299,880.71918 52.77607,0"
|
||||
id="path4840-5"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-5-7)"
|
||||
d="m 277.75778,880.36203 49.69617,0"
|
||||
id="path4840-5-8"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="0.13198304"
|
||||
y="857.85449"
|
||||
id="text5814"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5816"
|
||||
x="0.13198304"
|
||||
y="857.85449">SOURCE</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="762.85712"
|
||||
y="859.64771"
|
||||
id="text5818"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5820"
|
||||
x="762.85712"
|
||||
y="859.64771">SINK</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-5-7-7)"
|
||||
d="m 481.79772,881.21917 53.77091,0"
|
||||
id="path4840-5-8-1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-5-7-7-3)"
|
||||
d="m 617.91211,883.21917 55.40942,0"
|
||||
id="path4840-5-8-1-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-5-7-7-3-2)"
|
||||
d="m 754.184,884.64775 39.6379,0"
|
||||
id="path4840-5-8-1-9-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-947.0343"
|
||||
y="40.237045"
|
||||
id="text4195"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4197"
|
||||
x="-947.0343"
|
||||
y="40.237045"
|
||||
style="font-size:12.5px">SRC_DW</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 32,884.36203 10,-10"
|
||||
id="path4201"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 166,886.36203 10,-10"
|
||||
id="path4201-1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 300,886.36203 10,-10"
|
||||
id="path4201-1-5"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-949.83179"
|
||||
y="175.86974"
|
||||
id="text4195-7"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4197-7"
|
||||
x="-949.83179"
|
||||
y="175.86974"
|
||||
style="font-size:12.5px">MEM_DW</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-949.83179"
|
||||
y="310.86975"
|
||||
id="text4195-7-3"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4197-7-4"
|
||||
x="-949.83179"
|
||||
y="310.86975"
|
||||
style="font-size:12.5px">MEM_DW</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-952.83179"
|
||||
y="517.86975"
|
||||
id="text4195-7-3-5"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4197-7-4-2"
|
||||
x="-952.83179"
|
||||
y="517.86975"
|
||||
style="font-size:12.5px">MEM_DW</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-954.83179"
|
||||
y="652.86975"
|
||||
id="text4195-7-3-9"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4197-7-4-3"
|
||||
x="-954.83179"
|
||||
y="652.86975"
|
||||
style="font-size:12.5px">MEM_DW</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-955.96399"
|
||||
y="779.16675"
|
||||
id="text4195-8"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4197-0"
|
||||
x="-955.96399"
|
||||
y="779.16675"
|
||||
style="font-size:12.5px">SINK_DW</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 502.90033,886.3617 10,-10"
|
||||
id="path4201-1-5-6"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 642.90033,888.9617 10,-10"
|
||||
id="path4201-1-5-6-7"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 769.90033,889.9617 10,-10"
|
||||
id="path4201-1-5-6-7-6"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 24 KiB |
@@ -0,0 +1,532 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="800"
|
||||
height="500"
|
||||
viewBox="0 0 800.00001 500.00001"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="generic_bd.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker8368"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path8370"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker7024"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path7026"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker6894"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path6896"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker6770"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path6772"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker6384"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6386"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5850"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5852"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5774"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5776"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7-7-3-2"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1-3-5-5"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7-7"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1-3"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7-7-2"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1-3-6"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5850-1"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5852-8"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5774-7"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5776-7"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7-7-9"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1-3-9"
|
||||
d="M 5.77,0 -2.88,5 V -5 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker8368-5"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path8370-8"
|
||||
d="M 5.77,0 -2.88,5 V -5 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker8368-5-6"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path8370-8-4"
|
||||
d="M 5.77,0 -2.88,5 V -5 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="316.268"
|
||||
inkscape:cy="214.56695"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="968"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:document-rotation="0" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-552.36216)">
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4733-3"
|
||||
width="164.25298"
|
||||
height="63.581898"
|
||||
x="315.31018"
|
||||
y="816.20074" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="338.61417"
|
||||
y="845.6026"
|
||||
id="text4836-1"
|
||||
transform="scale(0.99083586,1.0092489)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4838-5"
|
||||
x="338.61417"
|
||||
y="845.6026"
|
||||
style="font-size:17.5px;line-height:1.25">OFFLOAD FSM</tspan></text>
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.32155;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4731"
|
||||
width="215.73892"
|
||||
height="280.43463"
|
||||
x="292.3212"
|
||||
y="633.37317" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4733"
|
||||
width="164.25298"
|
||||
height="63.581898"
|
||||
x="318.16766"
|
||||
y="729.90399" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4733-2"
|
||||
width="167.27"
|
||||
height="63.568466"
|
||||
x="316.15479"
|
||||
y="660.90887" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="399.66528"
|
||||
y="688.86981"
|
||||
id="text4804"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4806"
|
||||
x="399.66528"
|
||||
y="688.86981"
|
||||
style="font-size:15px;line-height:1.25;text-align:center;text-anchor:middle">AXI REGISTER</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="399.66528"
|
||||
y="707.61981"
|
||||
id="tspan4808"
|
||||
style="font-size:15px;line-height:1.25;text-align:center;text-anchor:middle">MAP</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="370.04385"
|
||||
y="760.27722"
|
||||
id="text4836"
|
||||
transform="scale(0.99083586,1.0092489)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4838"
|
||||
x="370.04385"
|
||||
y="760.27722"
|
||||
style="font-size:17.5px;line-height:1.25">BYPASS</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-5-7-7)"
|
||||
d="m 242.97845,769.43533 h 38.1485"
|
||||
id="path4840"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-794.03333"
|
||||
y="308.69855"
|
||||
id="text5814"
|
||||
transform="rotate(-90)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5816"
|
||||
x="-794.03333"
|
||||
y="308.69855"
|
||||
style="font-size:15px;line-height:1.25">S_AXIS</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8368)"
|
||||
d="m 400.27564,615.49458 v 37.14286"
|
||||
id="path8360"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="408.83658"
|
||||
y="615.24005"
|
||||
id="text8660"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan8662"
|
||||
x="408.83658"
|
||||
y="615.24005"
|
||||
style="font-size:15px;line-height:1.25">AXI_MM</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:21.33329964px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="214.00826"
|
||||
y="713.12866"
|
||||
id="text2292"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2290"
|
||||
x="214.00826"
|
||||
y="732.00366"
|
||||
style="text-align:center;text-anchor:middle" /><tspan
|
||||
sodipodi:role="line"
|
||||
x="214.00826"
|
||||
y="758.67023"
|
||||
id="tspan2294"
|
||||
style="text-align:center;text-anchor:middle">SOURCE</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-797.50403"
|
||||
y="500.55988"
|
||||
id="text5814-4"
|
||||
transform="rotate(-90)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5816-4"
|
||||
x="-797.50403"
|
||||
y="500.55988"
|
||||
style="font-size:15px;line-height:1.25">M_AXIS</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-5-7-7-9)"
|
||||
d="m 509.23369,768.74654 h 38.1485"
|
||||
id="path4840-4"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:21.33329964px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="608.48108"
|
||||
y="708.69513"
|
||||
id="text2292-9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2290-3"
|
||||
x="608.48108"
|
||||
y="727.57013"
|
||||
style="text-align:center;text-anchor:middle" /><tspan
|
||||
sodipodi:role="line"
|
||||
x="608.48108"
|
||||
y="754.23669"
|
||||
id="tspan2294-9"
|
||||
style="text-align:center;text-anchor:middle">DESTINATION</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8368-5)"
|
||||
d="m 340.42141,914.39756 v 37.14286"
|
||||
id="path8360-3"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8368-5-6)"
|
||||
d="M 443.45697,962.08331 V 924.94045"
|
||||
id="path8360-3-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="298.78723"
|
||||
y="907.06915"
|
||||
id="text5814-3"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5816-8"
|
||||
x="298.78723"
|
||||
y="907.06915"
|
||||
style="font-size:10.66666698px;line-height:0">M_STORAGE_AXIS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="407.59558"
|
||||
y="907.33258"
|
||||
id="text5814-3-0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5816-8-3"
|
||||
x="407.59558"
|
||||
y="907.33258"
|
||||
style="font-size:10.66666698px;line-height:1.25">S_STORAGE_AXIS</tspan></text>
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4733-3-2"
|
||||
width="164.25298"
|
||||
height="63.581898"
|
||||
x="312.84314"
|
||||
y="963.01801" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="342.2413"
|
||||
y="991.07446"
|
||||
id="text4836-1-1"
|
||||
transform="scale(0.99083586,1.0092489)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4838-5-5"
|
||||
x="342.2413"
|
||||
y="991.07446"
|
||||
style="font-size:17.5px;line-height:1.25">Storage Unit</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1,572 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="800"
|
||||
height="500"
|
||||
viewBox="0 0 799.99999 500.00001"
|
||||
id="svg8759"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="interface.svg">
|
||||
<defs
|
||||
id="defs8761">
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker9999"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10001"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker9893"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path9895"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker9805"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path9807"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker8368"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path8370"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker7024"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path7026"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker6894"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path6896"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker6770"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path6772"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker6384"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6386"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5850"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5852"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5774"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5776"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-5-7-7"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4988-2-1-3"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="492.95261"
|
||||
inkscape:cy="273.34624"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1005"
|
||||
inkscape:window-x="1911"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata8764">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-552.36216)">
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="184.82431"
|
||||
y="673.53949" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2-3"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="539.86841"
|
||||
y="673.53949" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4731"
|
||||
width="164.03253"
|
||||
height="153.97696"
|
||||
x="317.5611"
|
||||
y="742.24585" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4733-2"
|
||||
width="167.27"
|
||||
height="63.568466"
|
||||
x="315.02148"
|
||||
y="633.23889" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="398.53198"
|
||||
y="661.19989"
|
||||
id="text4804"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4806"
|
||||
x="398.53198"
|
||||
y="661.19989"
|
||||
style="text-align:center;text-anchor:middle">AXI REGISTER</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="398.53198"
|
||||
y="679.94989"
|
||||
id="tspan4808"
|
||||
style="text-align:center;text-anchor:middle">MAP</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="360.09128"
|
||||
y="825.59601"
|
||||
id="text4810"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4812"
|
||||
x="360.09128"
|
||||
y="825.59601"
|
||||
style="font-size:17.5px">MEMORY</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-752.0119"
|
||||
y="216.94"
|
||||
id="text4814"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4816"
|
||||
x="-748.93573"
|
||||
y="216.94"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC FIFO & </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="-752.0119"
|
||||
y="238.815"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle"
|
||||
id="tspan10101">GEARBOX</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5774)"
|
||||
d="m 122.21245,747.32086 52.77607,0"
|
||||
id="path4840-5"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker9893)"
|
||||
d="m 258.82724,746.96371 51.71647,58.58885"
|
||||
id="path4840-5-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.47677636;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6894)"
|
||||
d="m 481.26529,812.76648 51.91399,-58.15992"
|
||||
id="path4840-5-8-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6770)"
|
||||
d="m 612.98157,749.82085 39.6379,0"
|
||||
id="path4840-5-8-1-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2-8"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="184.42993"
|
||||
y="854.2807" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6384)"
|
||||
d="m 183.01679,928.06206 -52.77607,0"
|
||||
id="path4840-5-4"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8368)"
|
||||
d="m 317.56183,831.74042 -54.63489,94.89306"
|
||||
id="path4840-5-8-3"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4684-2-3-7"
|
||||
width="73.38298"
|
||||
height="155.3896"
|
||||
x="540.61591"
|
||||
y="852.62079" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.47677636;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker9805)"
|
||||
d="M 540.07616,926.90214 486.74411,845.55948"
|
||||
id="path4840-5-8-1-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5850)"
|
||||
d="m 661.78962,928.90214 -39.6379,0"
|
||||
id="path4840-5-8-1-9-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker9999)"
|
||||
d="m 399.14237,587.82464 0,37.14286"
|
||||
id="path8360"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="401.64236"
|
||||
y="598.68176"
|
||||
id="text8660"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan8662"
|
||||
x="401.64236"
|
||||
y="598.68176"
|
||||
style="fill:#ff0000;fill-opacity:1">AXI_MM</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-932.75311"
|
||||
y="216.54562"
|
||||
id="text4814-7"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4816-0"
|
||||
x="-929.67694"
|
||||
y="216.54562"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC FIFO & </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="-932.75311"
|
||||
y="238.42062"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle"
|
||||
id="tspan10101-8">GEARBOX</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-752.0119"
|
||||
y="571.98407"
|
||||
id="text4814-7-4"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4816-0-7"
|
||||
x="-748.93573"
|
||||
y="571.98407"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC FIFO & </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="-752.0119"
|
||||
y="593.85907"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle"
|
||||
id="tspan10101-8-4">GEARBOX</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-931.0932"
|
||||
y="572.73157"
|
||||
id="text4814-7-9"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="matrix(0,-1,1,0,0,0)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4816-0-2"
|
||||
x="-928.01703"
|
||||
y="572.73157"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC FIFO & </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="-931.0932"
|
||||
y="594.60657"
|
||||
style="font-size:17.5px;text-align:center;text-anchor:middle"
|
||||
id="tspan10101-8-6">GEARBOX</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="719.14288"
|
||||
y="756.64789"
|
||||
id="text10159"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan10161"
|
||||
x="719.14288"
|
||||
y="756.64789"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:25px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:0.53465349">DAC</tspan></text>
|
||||
<g
|
||||
id="g10305"
|
||||
transform="translate(-8,120)">
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text10171"
|
||||
y="654.48474"
|
||||
x="129.54361"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="fill:#ff0000;fill-opacity:1"
|
||||
y="654.48474"
|
||||
x="129.54361"
|
||||
id="tspan10173"
|
||||
sodipodi:role="line">S_AXIS</tspan><tspan
|
||||
style="fill:#ff0000;fill-opacity:1"
|
||||
y="673.23474"
|
||||
x="129.54361"
|
||||
sodipodi:role="line"
|
||||
id="tspan10311" /></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text10175"
|
||||
y="675.93359"
|
||||
x="108.85715"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="fill:#ff0000;fill-opacity:1"
|
||||
y="675.93359"
|
||||
x="108.85715"
|
||||
id="tspan10177"
|
||||
sodipodi:role="line" /></text>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="630.44104"
|
||||
y="951.24744"
|
||||
id="text10175-7"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan10177-0"
|
||||
x="630.44104"
|
||||
y="951.24744"
|
||||
style="fill:#ff0000;fill-opacity:1">FIFO_WR</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="120.79704"
|
||||
y="952.88525"
|
||||
id="text10171-16"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan10173-9"
|
||||
x="120.79704"
|
||||
y="952.88525"
|
||||
style="fill:#ff0000;fill-opacity:1">M_AXIS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="98.86956"
|
||||
y="974.81885"
|
||||
id="text10175-0"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan10177-9"
|
||||
x="98.86956"
|
||||
y="974.81885"
|
||||
style="fill:#ff0000;fill-opacity:1" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="632.30347"
|
||||
y="774.81891"
|
||||
id="text10171-16-1"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan10173-9-7"
|
||||
x="632.30347"
|
||||
y="774.81891"
|
||||
style="fill:#ff0000;fill-opacity:1" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="630.16058"
|
||||
y="775.53314"
|
||||
id="text10175-0-0"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan10177-9-9"
|
||||
x="630.16058"
|
||||
y="775.53314"
|
||||
style="fill:#ff0000;fill-opacity:1">FIFO_RD</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="720.15607"
|
||||
y="935.73602"
|
||||
id="text10159-6"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan10161-5"
|
||||
x="720.15607"
|
||||
y="935.73602"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:25px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:0.53465349">ADC</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="26.13398"
|
||||
y="935.73602"
|
||||
id="text10159-6-2"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan10161-5-1"
|
||||
x="26.13398"
|
||||
y="935.73602"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:25px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:0.53465349">DMA</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="26.13398"
|
||||
y="753.59314"
|
||||
id="text10159-6-2-0"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan10161-5-1-5"
|
||||
x="26.13398"
|
||||
y="753.59314"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:25px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:0.53465349">DMA</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 26 KiB |
@@ -0,0 +1,518 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="300"
|
||||
height="500"
|
||||
viewBox="0 0 300 500.00001"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="rx_bram_fsm.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker9309"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path9311"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker6301"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleInL">
|
||||
<path
|
||||
transform="scale(-0.8,-0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path6303"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleInL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleInL"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path4277"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(-0.8,-0.8)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker5051"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path5053"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4286"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow2Mend"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4171"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="scale(-0.6,-0.6)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-7"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4286-7"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-7-6"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4286-7-1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-7-6-9"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4286-7-1-4"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-7-6-9-5"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4286-7-1-4-3"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-7-6-9-1"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4286-7-1-4-4"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleInL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleInL-8"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4277-1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(-0.8,-0.8)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="-131.10973"
|
||||
inkscape:cy="391.16567"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1005"
|
||||
inkscape:window-x="1911"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1"
|
||||
units="px" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-552.36216)">
|
||||
<circle
|
||||
style="opacity:1;fill:#000000;fill-opacity:0.62871291;fill-rule:evenodd;stroke:#000000;stroke-width:3.70838189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4136"
|
||||
cx="142.30228"
|
||||
cy="567.51868"
|
||||
r="2.1458092" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)"
|
||||
d="m 142.32998,571.09798 0,33.58757"
|
||||
id="path4138"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="122.65087"
|
||||
y="641.23425"
|
||||
id="text4448"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4450"
|
||||
x="122.65087"
|
||||
y="641.23425"
|
||||
style="font-size:12.5px">IDLE</tspan></text>
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.07112432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4452"
|
||||
width="108.90761"
|
||||
height="48.907616"
|
||||
x="86.148735"
|
||||
y="611.32751"
|
||||
ry="27.857143"
|
||||
rx="27.857143" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL-7)"
|
||||
d="m 142.32998,661.15123 0,33.58757"
|
||||
id="path4138-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.07112432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4452-8"
|
||||
width="108.90761"
|
||||
height="48.907616"
|
||||
x="86.148735"
|
||||
y="701.19751"
|
||||
ry="27.857143"
|
||||
rx="27.857143" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="110.18262"
|
||||
y="730.19543"
|
||||
id="text4694"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4696"
|
||||
x="110.18262"
|
||||
y="730.19543"
|
||||
style="font-size:12.5px">STANDBY</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="157.54358"
|
||||
y="683.91382"
|
||||
id="text4698"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4700"
|
||||
x="157.54358"
|
||||
y="683.91382">INIT_REQ</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL-7-6)"
|
||||
d="m 142.32998,751.09423 0,33.58757"
|
||||
id="path4138-9-4"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="157.90179"
|
||||
y="773.67969"
|
||||
id="text4698-9"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4700-3"
|
||||
x="157.90179"
|
||||
y="773.67969">SYNC</tspan></text>
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.07112432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4452-8-8"
|
||||
width="108.90761"
|
||||
height="48.907616"
|
||||
x="86.148735"
|
||||
y="791.32751"
|
||||
ry="27.857143"
|
||||
rx="27.857143" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="140.0105"
|
||||
y="812.41833"
|
||||
id="text5019"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="142.20776"
|
||||
y="812.41833"
|
||||
id="tspan5023"
|
||||
style="font-size:12.5px;text-align:center;text-anchor:middle">FILL UP </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="140.0105"
|
||||
y="828.04333"
|
||||
id="tspan5027"
|
||||
style="font-size:12.5px;text-align:center;text-anchor:middle">MEMORY</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#TriangleInL)"
|
||||
d="m 79.516711,815.40697 c -89.9568,11.26187 6.0188,110.65331 29.691799,25.54968"
|
||||
id="path5043"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="46.316845"
|
||||
y="853.63855"
|
||||
id="text5603"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5605"
|
||||
x="46.316845"
|
||||
y="853.63855">~FULL</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL-7-6-9)"
|
||||
d="m 142.32998,841.19423 0,33.58757"
|
||||
id="path4138-9-4-6"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.07112432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4452-8-5"
|
||||
width="108.90761"
|
||||
height="48.907616"
|
||||
x="86.148735"
|
||||
y="881.21661"
|
||||
ry="27.857143"
|
||||
rx="27.857143" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5051)"
|
||||
d="M 254.97521,901.88704 C 253.44054,746.73328 271.35206,632.54305 200.91883,634.34455"
|
||||
id="path6293"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="212.22296"
|
||||
y="895.43372"
|
||||
id="text7115"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7117"
|
||||
x="212.22296"
|
||||
y="895.43372">TLAST</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="140.0105"
|
||||
y="902.30737"
|
||||
id="text7119"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7121"
|
||||
x="140.0105"
|
||||
y="902.30737"
|
||||
style="font-size:12.5px;text-align:center;text-anchor:middle">READ</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="140.0105"
|
||||
y="917.93237"
|
||||
id="tspan7123"
|
||||
style="font-size:12.5px;text-align:center;text-anchor:middle">MEMORY</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL-7-6-9-5)"
|
||||
d="m 142.32998,930.10858 0,33.58757"
|
||||
id="path4138-9-4-6-7"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.07112432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4452-8-5-7"
|
||||
width="108.90761"
|
||||
height="48.907616"
|
||||
x="86.148735"
|
||||
y="969.18469"
|
||||
ry="27.857143"
|
||||
rx="27.857143" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="140.94977"
|
||||
y="987.92419"
|
||||
id="text7365"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="140.94977"
|
||||
y="987.92419"
|
||||
id="tspan7369"
|
||||
style="font-size:12.5px;text-align:center;text-anchor:middle">PAD IT</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="140.94977"
|
||||
y="1003.5492"
|
||||
id="tspan7373"
|
||||
style="font-size:12.5px;text-align:center;text-anchor:middle">WITH ZEROS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="151.67398"
|
||||
y="953.99561"
|
||||
id="text7375"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7377"
|
||||
x="151.67398"
|
||||
y="953.99561">EMPTY</tspan></text>
|
||||
<circle
|
||||
style="opacity:1;fill:#000000;fill-opacity:0.62871291;fill-rule:evenodd;stroke:#000000;stroke-width:3.70838189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4136-1"
|
||||
cx="254.88828"
|
||||
cy="905.95996"
|
||||
r="2.1458092" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL-7-6-9-1)"
|
||||
d="m 195.95162,906.00952 49.48043,-0.17857"
|
||||
id="path4138-9-4-6-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker9309)"
|
||||
d="m 196.3145,997.6248 c 74.49078,-0.037 58.50486,-20.38178 58.58885,-82.3274"
|
||||
id="path9301"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="157.37436"
|
||||
y="861.42065"
|
||||
id="text5603-2"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5605-2"
|
||||
x="157.37436"
|
||||
y="861.42065">FULL</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#TriangleInL-8)"
|
||||
d="m 80.110885,905.21697 c -89.9568,11.26187 6.0188,110.65333 29.691805,25.54968"
|
||||
id="path5043-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="46.919117"
|
||||
y="942.97766"
|
||||
id="text7375-5"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7377-4"
|
||||
x="46.919117"
|
||||
y="942.97766">~EMPTY</tspan></text>
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot9944"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
transform="translate(0,252.36216)"><flowRegion
|
||||
id="flowRegion9946"><rect
|
||||
id="rect9948"
|
||||
width="482.85291"
|
||||
height="621.24384"
|
||||
x="-84.852814"
|
||||
y="-268.74139" /></flowRegion><flowPara
|
||||
id="flowPara9950"></flowPara></flowRoot> </g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 23 KiB |
@@ -0,0 +1,225 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="300"
|
||||
height="300"
|
||||
viewBox="0 0 300 300"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="simple_fifo.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutM"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="TriangleOutM"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4291"
|
||||
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
transform="scale(0.4)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="TriangleOutL"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4288"
|
||||
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
transform="scale(0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutM"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutM-6"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4291-7"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.4,0.4)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutM"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutM-6-6"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4291-7-0"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.4,0.4)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutM"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutM-6-6-8"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4291-7-0-7"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.4,0.4)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="-67.891819"
|
||||
inkscape:cy="146.4896"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1005"
|
||||
inkscape:window-x="1911"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid4136" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-752.36216)">
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.40730953;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4138"
|
||||
width="150"
|
||||
height="200"
|
||||
x="76"
|
||||
y="802.36218"
|
||||
rx="27.8571"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="121.00732"
|
||||
y="911.45032"
|
||||
id="text5177"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5179"
|
||||
x="121.00732"
|
||||
y="911.45032"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25px;font-family:sans-serif;-inkscape-font-specification:sans-serif">FIFO</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.66752243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM)"
|
||||
d="m 11.808377,875.04952 c 55.34415,0 55.34415,0 55.34415,0"
|
||||
id="path4140"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.66752243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-6)"
|
||||
d="m 11.808375,944.94799 c 55.344153,0 55.344153,0 55.344153,0"
|
||||
id="path4140-8"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="12.582211"
|
||||
y="866.00897"
|
||||
id="text5193"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5195"
|
||||
x="12.582211"
|
||||
y="866.00897"
|
||||
style="font-size:17.5px">WREN</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="5.908627"
|
||||
y="935.04956"
|
||||
id="text5215"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5217"
|
||||
x="5.908627"
|
||||
y="935.04956"
|
||||
style="font-size:17.5px">WDATA</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.66752243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-6-6)"
|
||||
d="m 290.40064,875.78305 c -55.34416,0 -55.34416,0 -55.34416,0"
|
||||
id="path4140-8-4"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.66752243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-6-6-8)"
|
||||
d="m 227.56726,945.68151 c 55.34416,0 55.34416,0 55.34416,0"
|
||||
id="path4140-8-4-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="240.95631"
|
||||
y="865.27545"
|
||||
id="text5193-4"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5195-8"
|
||||
x="240.95631"
|
||||
y="865.27545"
|
||||
style="font-size:17.5px">RDEN</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="234.94923"
|
||||
y="935.78308"
|
||||
id="text5219"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5221"
|
||||
x="234.94923"
|
||||
y="935.78308"
|
||||
style="font-size:17.5px">RDATA</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.0 KiB |
@@ -0,0 +1,549 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="300"
|
||||
height="500"
|
||||
viewBox="0 0 300 500.00001"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="tx_bram_fsm.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker5642"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path5644"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5524"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5526"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker5412"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path5414"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5306"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5308"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker5206"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleInL">
|
||||
<path
|
||||
transform="scale(-0.8)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
|
||||
id="path5208" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleInL"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="TriangleInL"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path4823"
|
||||
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
transform="scale(-0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lstart"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="marker5020"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path5022"
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
transform="scale(1.1) translate(1,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lstart"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="Arrow2Lstart"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4708"
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
transform="scale(1.1) translate(1,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker4616"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path4618"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker4546"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4548"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker4482"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="TriangleOutL"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.8,0.8)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
id="path4484"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker9309"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path9311"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-7-6-9-1"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4286-7-1-4-4"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-7-6-9-5"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4286-7-1-4-3"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-7-6-9"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4286-7-1-4"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL-7-6"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4286-7-1"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="TriangleOutL"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="TriangleOutL"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4286"
|
||||
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="scale(0.8,0.8)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:cx="54.982409"
|
||||
inkscape:cy="216.72107"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1005"
|
||||
inkscape:window-x="1911"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-552.36216)">
|
||||
<circle
|
||||
style="opacity:1;fill:#000000;fill-opacity:0.62871291;fill-rule:evenodd;stroke:#000000;stroke-width:3.70838189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4136"
|
||||
cx="143.36578"
|
||||
cy="574.15137"
|
||||
r="2.1458092" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker9309)"
|
||||
d="m 143.39349,577.73064 0,33.58757"
|
||||
id="path4138"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="123.71438"
|
||||
y="647.86694"
|
||||
id="text4448"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4450"
|
||||
x="123.71438"
|
||||
y="647.86694"
|
||||
style="font-size:12.5px">IDLE</tspan></text>
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.07112432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4452"
|
||||
width="108.90761"
|
||||
height="48.907616"
|
||||
x="87.21225"
|
||||
y="617.96021"
|
||||
ry="27.857143"
|
||||
rx="27.857143" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4482)"
|
||||
d="m 143.39349,667.78389 0,33.58757"
|
||||
id="path4138-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.07112432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4452-8"
|
||||
width="108.90761"
|
||||
height="48.907616"
|
||||
x="87.21225"
|
||||
y="707.8302"
|
||||
ry="27.857143"
|
||||
rx="27.857143" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="111.24612"
|
||||
y="736.82813"
|
||||
id="text4694"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4696"
|
||||
x="111.24612"
|
||||
y="736.82813"
|
||||
style="font-size:12.5px">STANDBY</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="152.60709"
|
||||
y="690.54651"
|
||||
id="text4698"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4700"
|
||||
x="152.60709"
|
||||
y="690.54651">INIT_REQ</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4546)"
|
||||
d="m 143.39349,757.72689 0,33.58757"
|
||||
id="path4138-9-4"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="154.96529"
|
||||
y="780.31238"
|
||||
id="text4698-9"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4700-3"
|
||||
x="154.96529"
|
||||
y="780.31238">SYNC</tspan></text>
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.07112432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4452-8-8"
|
||||
width="108.90761"
|
||||
height="48.907616"
|
||||
x="87.21225"
|
||||
y="797.96021"
|
||||
ry="27.857143"
|
||||
rx="27.857143" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="141.07401"
|
||||
y="819.05103"
|
||||
id="text5019"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="143.27127"
|
||||
y="819.05103"
|
||||
id="tspan5023"
|
||||
style="font-size:12.5px;text-align:center;text-anchor:middle">FILL UP </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="141.07401"
|
||||
y="834.67603"
|
||||
id="tspan5027"
|
||||
style="font-size:12.5px;text-align:center;text-anchor:middle">MEMORY</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#TriangleInL)"
|
||||
d="M 85.223079,805.9682 C 1.4432297,773.13993 29.451134,893.18977 110.27202,847.58931"
|
||||
id="path5043"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="17.380356"
|
||||
y="868.12842"
|
||||
id="text5603"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5605"
|
||||
x="17.380356"
|
||||
y="868.12842">~FULL | ~TLAST</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4616)"
|
||||
d="m 143.39349,847.82689 0,33.58757"
|
||||
id="path4138-9-4-6"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.07112432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
id="rect4452-8-5"
|
||||
width="108.90761"
|
||||
height="48.907616"
|
||||
x="87.21225"
|
||||
y="887.8493"
|
||||
ry="27.857143"
|
||||
rx="27.857143" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5642)"
|
||||
d="M 256.03872,908.5197 C 254.50405,753.36594 272.41557,639.17571 201.98234,640.97721"
|
||||
id="path6293"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="224.96887"
|
||||
y="893.776"
|
||||
id="text7115"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7117"
|
||||
x="224.96887"
|
||||
y="893.776">INIT_REQ</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="141.07401"
|
||||
y="908.94006"
|
||||
id="text7119"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7121"
|
||||
x="141.07401"
|
||||
y="908.94006"
|
||||
style="font-size:12.5px;text-align:center;text-anchor:middle">READ</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="141.07401"
|
||||
y="924.56506"
|
||||
id="tspan7123"
|
||||
style="font-size:12.5px;text-align:center;text-anchor:middle">MEMORY</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="163.34409"
|
||||
y="977.29578"
|
||||
id="text7375"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7377"
|
||||
x="163.34409"
|
||||
y="977.29578">ONE-SHOT</tspan></text>
|
||||
<circle
|
||||
style="opacity:1;fill:#000000;fill-opacity:0.62871291;fill-rule:evenodd;stroke:#000000;stroke-width:3.70838189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4136-1"
|
||||
cx="255.95178"
|
||||
cy="912.59265"
|
||||
r="2.1458092" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5306)"
|
||||
d="m 197.01513,912.64218 49.48043,-0.17857"
|
||||
id="path4138-9-4-6-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5524)"
|
||||
d="m 142.6126,938.08147 c -10.1524,62.73503 115.66179,88.25203 113.35426,-16.15141"
|
||||
id="path9301"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="156.43787"
|
||||
y="868.05334"
|
||||
id="text5603-2"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5605-2"
|
||||
x="156.43787"
|
||||
y="868.05334">FULL | TLAST</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5206)"
|
||||
d="M 81.174396,911.84963 C -8.7824,923.1115 87.193196,1022.503 110.8662,937.39931"
|
||||
id="path5043-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="47.982628"
|
||||
y="949.61035"
|
||||
id="text7375-5"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7377-4"
|
||||
x="47.982628"
|
||||
y="949.61035">CYCLIC</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 23 KiB |
@@ -0,0 +1,2 @@
|
||||
# This file is automatically written. Do not modify.
|
||||
proc gen_USERPARAMETER_DST_CYCLIC_EN_ENABLEMENT {TX_OR_RXN_PATH } {expr $TX_OR_RXN_PATH == 1}
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
# Loading additional proc with user specified bodies to compute parameter values.
|
||||
source [file join [file dirname [file dirname [info script]]] gui/data_offload_v1_0.gtcl]
|
||||
|
||||
# Definitional proc to organize widgets for parameters.
|
||||
proc init_gui { IPINST } {
|
||||
ipgui::add_param $IPINST -name "Component_Name"
|
||||
#Adding Page
|
||||
set Data_Offload [ipgui::add_page $IPINST -name "Data Offload"]
|
||||
#Adding Group
|
||||
set General_Configuration [ipgui::add_group $IPINST -name "General Configuration" -parent ${Data_Offload}]
|
||||
ipgui::add_param $IPINST -name "ID" -parent ${General_Configuration}
|
||||
ipgui::add_param $IPINST -name "TX_OR_RXN_PATH" -parent ${General_Configuration} -widget comboBox
|
||||
ipgui::add_param $IPINST -name "MEM_TYPE" -parent ${General_Configuration} -widget comboBox
|
||||
set MEM_SIZE_LOG2 [ipgui::add_param $IPINST -name "MEM_SIZE_LOG2" -parent ${General_Configuration} -widget comboBox]
|
||||
set_property tooltip {Log2 value of Storage Size in bytes} ${MEM_SIZE_LOG2}
|
||||
|
||||
#Adding Group
|
||||
set Source_Endpoint_Configuration [ipgui::add_group $IPINST -name "Source Endpoint Configuration" -parent ${Data_Offload} -layout horizontal]
|
||||
ipgui::add_param $IPINST -name "SRC_DATA_WIDTH" -parent ${Source_Endpoint_Configuration}
|
||||
|
||||
#Adding Group
|
||||
set Destination_Endpoint_Configuration [ipgui::add_group $IPINST -name "Destination Endpoint Configuration" -parent ${Data_Offload} -layout horizontal]
|
||||
ipgui::add_param $IPINST -name "DST_DATA_WIDTH" -parent ${Destination_Endpoint_Configuration}
|
||||
|
||||
#Adding Group
|
||||
set Features [ipgui::add_group $IPINST -name "Features" -parent ${Data_Offload}]
|
||||
ipgui::add_param $IPINST -name "HAS_BYPASS" -parent ${Features}
|
||||
ipgui::add_param $IPINST -name "DST_CYCLIC_EN" -parent ${Features}
|
||||
ipgui::add_param $IPINST -name "SYNC_EXT_ADD_INTERNAL_CDC" -parent ${Features}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.DST_CYCLIC_EN { PARAM_VALUE.DST_CYCLIC_EN PARAM_VALUE.TX_OR_RXN_PATH } {
|
||||
# Procedure called to update DST_CYCLIC_EN when any of the dependent parameters in the arguments change
|
||||
|
||||
set DST_CYCLIC_EN ${PARAM_VALUE.DST_CYCLIC_EN}
|
||||
set TX_OR_RXN_PATH ${PARAM_VALUE.TX_OR_RXN_PATH}
|
||||
set values(TX_OR_RXN_PATH) [get_property value $TX_OR_RXN_PATH]
|
||||
if { [gen_USERPARAMETER_DST_CYCLIC_EN_ENABLEMENT $values(TX_OR_RXN_PATH)] } {
|
||||
set_property enabled true $DST_CYCLIC_EN
|
||||
} else {
|
||||
set_property enabled false $DST_CYCLIC_EN
|
||||
}
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.DST_CYCLIC_EN { PARAM_VALUE.DST_CYCLIC_EN } {
|
||||
# Procedure called to validate DST_CYCLIC_EN
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.AUTO_BRINGUP { PARAM_VALUE.AUTO_BRINGUP } {
|
||||
# Procedure called to update AUTO_BRINGUP when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.AUTO_BRINGUP { PARAM_VALUE.AUTO_BRINGUP } {
|
||||
# Procedure called to validate AUTO_BRINGUP
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.DST_DATA_WIDTH { PARAM_VALUE.DST_DATA_WIDTH } {
|
||||
# Procedure called to update DST_DATA_WIDTH when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.DST_DATA_WIDTH { PARAM_VALUE.DST_DATA_WIDTH } {
|
||||
# Procedure called to validate DST_DATA_WIDTH
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.HAS_BYPASS { PARAM_VALUE.HAS_BYPASS } {
|
||||
# Procedure called to update HAS_BYPASS when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.HAS_BYPASS { PARAM_VALUE.HAS_BYPASS } {
|
||||
# Procedure called to validate HAS_BYPASS
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.ID { PARAM_VALUE.ID } {
|
||||
# Procedure called to update ID when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.ID { PARAM_VALUE.ID } {
|
||||
# Procedure called to validate ID
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.MEM_SIZE_LOG2 { PARAM_VALUE.MEM_SIZE_LOG2 } {
|
||||
# Procedure called to update MEM_SIZE_LOG2 when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.MEM_SIZE_LOG2 { PARAM_VALUE.MEM_SIZE_LOG2 } {
|
||||
# Procedure called to validate MEM_SIZE_LOG2
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.MEM_TYPE { PARAM_VALUE.MEM_TYPE } {
|
||||
# Procedure called to update MEM_TYPE when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.MEM_TYPE { PARAM_VALUE.MEM_TYPE } {
|
||||
# Procedure called to validate MEM_TYPE
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.SRC_DATA_WIDTH { PARAM_VALUE.SRC_DATA_WIDTH } {
|
||||
# Procedure called to update SRC_DATA_WIDTH when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.SRC_DATA_WIDTH { PARAM_VALUE.SRC_DATA_WIDTH } {
|
||||
# Procedure called to validate SRC_DATA_WIDTH
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.SYNC_EXT_ADD_INTERNAL_CDC { PARAM_VALUE.SYNC_EXT_ADD_INTERNAL_CDC } {
|
||||
# Procedure called to update SYNC_EXT_ADD_INTERNAL_CDC when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.SYNC_EXT_ADD_INTERNAL_CDC { PARAM_VALUE.SYNC_EXT_ADD_INTERNAL_CDC } {
|
||||
# Procedure called to validate SYNC_EXT_ADD_INTERNAL_CDC
|
||||
return true
|
||||
}
|
||||
|
||||
proc update_PARAM_VALUE.TX_OR_RXN_PATH { PARAM_VALUE.TX_OR_RXN_PATH } {
|
||||
# Procedure called to update TX_OR_RXN_PATH when any of the dependent parameters in the arguments change
|
||||
}
|
||||
|
||||
proc validate_PARAM_VALUE.TX_OR_RXN_PATH { PARAM_VALUE.TX_OR_RXN_PATH } {
|
||||
# Procedure called to validate TX_OR_RXN_PATH
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
proc update_MODELPARAM_VALUE.ID { MODELPARAM_VALUE.ID PARAM_VALUE.ID } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.ID}] ${MODELPARAM_VALUE.ID}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.MEM_TYPE { MODELPARAM_VALUE.MEM_TYPE PARAM_VALUE.MEM_TYPE } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.MEM_TYPE}] ${MODELPARAM_VALUE.MEM_TYPE}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.MEM_SIZE_LOG2 { MODELPARAM_VALUE.MEM_SIZE_LOG2 PARAM_VALUE.MEM_SIZE_LOG2 } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.MEM_SIZE_LOG2}] ${MODELPARAM_VALUE.MEM_SIZE_LOG2}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.TX_OR_RXN_PATH { MODELPARAM_VALUE.TX_OR_RXN_PATH PARAM_VALUE.TX_OR_RXN_PATH } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.TX_OR_RXN_PATH}] ${MODELPARAM_VALUE.TX_OR_RXN_PATH}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.SRC_DATA_WIDTH { MODELPARAM_VALUE.SRC_DATA_WIDTH PARAM_VALUE.SRC_DATA_WIDTH } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.SRC_DATA_WIDTH}] ${MODELPARAM_VALUE.SRC_DATA_WIDTH}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.DST_DATA_WIDTH { MODELPARAM_VALUE.DST_DATA_WIDTH PARAM_VALUE.DST_DATA_WIDTH } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.DST_DATA_WIDTH}] ${MODELPARAM_VALUE.DST_DATA_WIDTH}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.DST_CYCLIC_EN { MODELPARAM_VALUE.DST_CYCLIC_EN PARAM_VALUE.DST_CYCLIC_EN } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.DST_CYCLIC_EN}] ${MODELPARAM_VALUE.DST_CYCLIC_EN}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.AUTO_BRINGUP { MODELPARAM_VALUE.AUTO_BRINGUP PARAM_VALUE.AUTO_BRINGUP } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.AUTO_BRINGUP}] ${MODELPARAM_VALUE.AUTO_BRINGUP}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.SYNC_EXT_ADD_INTERNAL_CDC { MODELPARAM_VALUE.SYNC_EXT_ADD_INTERNAL_CDC PARAM_VALUE.SYNC_EXT_ADD_INTERNAL_CDC } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.SYNC_EXT_ADD_INTERNAL_CDC}] ${MODELPARAM_VALUE.SYNC_EXT_ADD_INTERNAL_CDC}
|
||||
}
|
||||
|
||||
proc update_MODELPARAM_VALUE.HAS_BYPASS { MODELPARAM_VALUE.HAS_BYPASS PARAM_VALUE.HAS_BYPASS } {
|
||||
# Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value
|
||||
set_property value [get_property value ${PARAM_VALUE.HAS_BYPASS}] ${MODELPARAM_VALUE.HAS_BYPASS}
|
||||
}
|
||||
|
||||