Skip to content

Commit 0bb5bd1

Browse files
committed
Updated XDMA Communication
1 parent f7748e2 commit 0bb5bd1

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

XDMA_Communication/README.md

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ sudo ./stream_test
213213

214214
## Creating a Memory-Mapped XDMA Block Diagram Design
215215

216-
Start Vivado and choose Create Project:
216+
This procedure will recreate the design in [`xdma_mm.tcl`](xdma_mm.tcl). Start Vivado and choose *Create Project*:
217217

218218
![Create Project](img/Vivado_Create_Project.png)
219219

@@ -408,7 +408,7 @@ Generate a Memory Configuration File and follow your board's instructions for pr
408408

409409
## Creating an AXI4-Stream XDMA Block Diagram Design
410410

411-
Start Vivado and choose Create Project:
411+
This procedure will recreate the design in [`xdma_stream.tcl`](xdma_stream.tcl). Start Vivado and choose *Create Project*:
412412

413413
![Create Project](img/Vivado_Create_Project.png)
414414

@@ -474,11 +474,11 @@ Click on the `+` next to the `S_AXIS_C2H_0` and `M_AXIS_H2C_0` channels to expan
474474

475475
#### AXI4-Stream Broadcaster Block
476476

477-
Add a *AXI4-Stream Broadcaster* block which will take a 64-Bit=8-Byte input stream and output two 32-Bit=4-Byte streams. Connect its `S_AXIS` input to `M_AXIS_H2C_0` of the XDMA Block.
477+
Add an [AXI4-Stream Broadcaster](https://docs.xilinx.com/r/en-US/pg085-axi4stream-infrastructure/AXI4-Stream-Broadcaster?tocId=lTRZ8UtIrjz6JIc8NcwYXg) block which will take a 64-Bit=8-Byte input stream and output two 32-Bit=4-Byte streams. Connect its `S_AXIS` input to `M_AXIS_H2C_0` of the XDMA Block. Its *aclk* should connect to the XDMA block's *axi_aclk*. Its *aresetn* should connect to the XDMA block's *axi_aresetn*.
478478

479479
![AXI-Stream Broadcaster Block](img/AXI4-Stream_Broadcaster_Block.png)
480480

481-
Set it up to convert a 8-Byte=64-Bit input stream into two 4-Byte=32-Bit output streams:
481+
Set it up to convert an 8-Byte=64-Bit input stream into two 4-Byte=32-Bit output streams:
482482

483483
![AXI-Stream Broadcaster Properties](img/AXI-Stream_Broadcaster_Properties.png)
484484

@@ -489,11 +489,13 @@ One of the output streams is set up to be the lower 32-bits of the input and the
489489

490490
#### Floating-Point Block
491491

492-
Add a [Floating-Point](https://docs.xilinx.com/v/u/en-US/pg060-floating-point) block to the stream as an example of something useful. Connect its `S_AXIS` inputs to the `M??_AXIS` outputs of the *AXI4-Stream Broadcaster*. Each pair of 32-bit=4-byte single precision floating-point values in the 64-Bit=8-Byte Host-to-Card (H2C) stream gets multiplied to produce a floating-point value in the 64-Bit=8-Byte Card-to-Host (C2H) stream. Half as many reads from C2H are necessary as writes to H2C.
492+
Add a [Floating-Point](https://docs.xilinx.com/v/u/en-US/pg060-floating-point) block to the stream as an example of something useful. Connect its `S_AXIS_?` inputs to the `M??_AXIS` outputs of the *AXI4-Stream Broadcaster*. Its *aclk* and *aresetn* signals should connect to *axi_aclk* and *axi_aresetn* of the XDMA Block.
493+
494+
Each pair of 32-bit=4-byte single precision floating-point values in the 64-Bit=8-Byte Host-to-Card (H2C) stream gets multiplied to produce a floating-point value in the 64-Bit=8-Byte Card-to-Host (C2H) stream. Half as many reads from C2H are necessary as writes to H2C.
493495

494496
![Floating-Point Block](img/Floating-Point_Block.png)
495497

496-
The floating-point blocks are set up to multiply their inputs.
498+
The floating-point block is set up to multiply the inputs.
497499

498500
![Floating-Point Block Settings](img/Floating-Point_Settings.png)
499501

@@ -508,7 +510,7 @@ The interface is set up as *Blocking* so that the AXI4-Stream interfaces include
508510

509511
#### Data Width Converter
510512

511-
Connect an [AXI4-Stream Data Width Converter](https://docs.xilinx.com/r/en-US/pg085-axi4stream-infrastructure/AXI4-Stream-Data-Width-Converter?tocId=XeJGiRyJ7jaFrWoPmP_A0w) input (`S_AXIS`) to the 32-Bit=4-Byte output of the Floating-Point block (`M_AXIS_RESULT`). Connect its output `M_AXIS` port to the `S_AXIS_C2H_0` port of the XDMA Block.
513+
Add an [AXI4-Stream Data Width Converter](https://docs.xilinx.com/r/en-US/pg085-axi4stream-infrastructure/AXI4-Stream-Data-Width-Converter?tocId=XeJGiRyJ7jaFrWoPmP_A0w). Connect its `S_AXIS` input to the 32-Bit=4-Byte `M_AXIS_RESULT` output of the Floating-Point block. Connect its output `M_AXIS` port to the `S_AXIS_C2H_0` port of the XDMA Block. Its *aclk* and *aresetn* signals should connect to *axi_aclk* and *axi_aresetn* of the XDMA Block.
512514

513515
![AXI4-Stream Data Width Converter Block](img/AXI4Stream_Data_Width_Converter_Block.png)
514516

@@ -517,6 +519,13 @@ Set it up to convert its 32-Bit=4-Byte input into a 64-Bit=8-Byte output compati
517519
![AXI4-Stream Data Width Converter Settings](img/AXI4Stream_Data_Width_Converter_Settings.png)
518520

519521

522+
#### M_AXI_LITE BRAM Circuit
523+
524+
The demo circuit includes a BRAM Block connected to **M_AXI_LITE**.
525+
526+
![M_AXI_LITE BRAM Circuit](img/XDMA_Stream_M_AXI_LITE_Circuit.png)
527+
528+
520529
#### M_AXI_LITE Addresses
521530

522531
If you decide to [add a BRAM Block](#add-bram-controller-blocks) or other peripheral to the **M_AXI_LITE** port, set up its addresses.
@@ -548,7 +557,7 @@ Synthesis and Implementation should take about 10 minutes:
548557

549558
## Recreating a Project from a Tcl File
550559

551-
Run the [`source`](https://docs.xilinx.com/r/2022.2-English/ug939-vivado-designing-with-ip-tutorial/Source-the-Tcl-Script?tocId=7apMNdBzAEx4udRnUANS9A) command in the Vivado *Tcl Console* to recreate a project.
560+
Run the [`source`](https://docs.xilinx.com/r/2022.2-English/ug939-vivado-designing-with-ip-tutorial/Source-the-Tcl-Script?tocId=7apMNdBzAEx4udRnUANS9A) command in the Vivado *Tcl Console* to recreate a project. The [`constraints.xdc`](constraints.xdc) file needs to be in the same directory.
552561
```
553562
pwd
554563
cd DOWNLOAD_DIRECTORY
@@ -561,6 +570,8 @@ source PROJECT_NAME.tcl
561570

562571
### Porting the Design to Another FPGA
563572

573+
If your board and target FPGA are different, the design can be re-targeted.
574+
564575
Under *Tools->Settings*, change the **Project Device**.
565576

566577
![Change Project Device](img/Change_Project_Device.png)
Loading
Loading

0 commit comments

Comments
 (0)