-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Documenter.jl
committed
Dec 13, 2024
1 parent
dd35fa5
commit 8c641fc
Showing
57 changed files
with
2,801 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
v0.8.2 | ||
v0.10.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
v0.10.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"documenter":{"julia_version":"1.11.2","generation_timestamp":"2024-12-13T15:13:24","documenter_version":"1.8.0"}} |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Architecture · RP DAQ Server</title><meta name="title" content="Architecture · RP DAQ Server"/><meta property="og:title" content="Architecture · RP DAQ Server"/><meta property="twitter:title" content="Architecture · RP DAQ Server"/><meta name="description" content="Documentation for RP DAQ Server."/><meta property="og:description" content="Documentation for RP DAQ Server."/><meta property="twitter:description" content="Documentation for RP DAQ Server."/><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="search_index.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="RP DAQ Server logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">RP DAQ Server</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="index.html">Home</a></li><li class="is-active"><a class="tocitem" href="architecture.html">Architecture</a><ul class="internal"><li class="toplevel"><a class="tocitem" href="#Communication"><span>Communication</span></a></li><li><a class="tocitem" href="#FPGA-and-CPU"><span>FPGA and CPU</span></a></li><li><a class="tocitem" href="#Client-and-Server"><span>Client and Server</span></a></li></ul></li><li><a class="tocitem" href="installation.html">Installation</a></li><li><a class="tocitem" href="cluster.html">Cluster</a></li><li><a class="tocitem" href="connections.html">Connections</a></li><li><a class="tocitem" href="acquisition.html">Data Acquisition</a></li><li><a class="tocitem" href="generation.html">Signal Generation</a></li><li><a class="tocitem" href="scpi.html">SCPI Interface</a></li><li><a class="tocitem" href="client.html">Client Library</a></li><li><span class="tocitem">Examples</span><ul><li><a class="tocitem" href="examples/simple.html">Simple</a></li><li><a class="tocitem" href="examples/waveforms.html">Waveforms</a></li><li><a class="tocitem" href="examples/ramping.html">Ramping</a></li><li><a class="tocitem" href="examples/sequence.html">Sequence</a></li><li><a class="tocitem" href="examples/sequenceMultiChannel.html">Sequence Multi-Channel and Waveform Enable</a></li><li><a class="tocitem" href="examples/seqRamping.html">Sequence Ramping</a></li><li><a class="tocitem" href="examples/cluster.html">Cluster</a></li><li><a class="tocitem" href="examples/batch.html">Batch</a></li><li><a class="tocitem" href="examples/producerConsumer.html">Continous Signal Acquisition</a></li><li><a class="tocitem" href="examples/resync.html">Resync</a></li></ul></li><li><a class="tocitem" href="fpga.html">FPGA Development</a></li><li><a class="tocitem" href="devtips.html">Development Tips</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="architecture.html">Architecture</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="architecture.html">Architecture</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/tknopp/RedPitayaDAQServer" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/tknopp/RedPitayaDAQServer/blob/master/docs/src/architecture.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Architecture"><a class="docs-heading-anchor" href="#Architecture">Architecture</a><a id="Architecture-1"></a><a class="docs-heading-anchor-permalink" href="#Architecture" title="Permalink"></a></h1><p>The RedPitayaDAQServer project is implemented as a distributed system in which one client connects to a cluster of RedPitaya boards. The project has four software components:</p><ul><li>FPGA image running on the RedPitayas FPGA</li><li>C library encapsulating access to the FPGA image</li><li>Server running on the CPU of the RedPitayas</li><li><a href="client.html">Client</a> Julia reference library </li></ul><p>The FPGA image is responsible for <a href="generation.html">generating</a> and <a href="acquisition.html">acquiring</a> synchronized out- and input signals. The server acts as an intermediary to the FPGA over a TCP/IP connection, which allows remote clients to configure the FPGA image and retrieve samples. Furthermore, the server also maintains a thread that takes part in signal generation.</p><p>The Julia client library can be used to implement a data acquisition client application, which controls a (cluster of) RedPitaya(s). This Julia library acts as a reference, but in principle it is possible to write clients in any programming language, as the communication is language agnostic. In the <a href="https://github.com/tknopp/RedPitayaDAQServer/tree/master/src/examples/python">example directory</a> we provide a rudimentary Python client that allows to perform a simple data acquisition experiment.</p><h1 id="Communication"><a class="docs-heading-anchor" href="#Communication">Communication</a><a id="Communication-1"></a><a class="docs-heading-anchor-permalink" href="#Communication" title="Permalink"></a></h1><p>The various components of the distributed system communicate over different interfaces. Communication within a RedPitaya is based on memory-mapped I/O, while communication between the server and a client is based on SCPI commands over a TCP/IP connection, usually over Ethernet. Lastly communication between RedPitayas is limited to signals distributed over cables as described in <a href="cluster.html">Cluster</a>.</p><h2 id="FPGA-and-CPU"><a class="docs-heading-anchor" href="#FPGA-and-CPU">FPGA and CPU</a><a id="FPGA-and-CPU-1"></a><a class="docs-heading-anchor-permalink" href="#FPGA-and-CPU" title="Permalink"></a></h2><p>The FPGA image is directly connected to certain memory regions that can be memory mapped on the CPU side of the RedPitaya. Both the CPU and the FPGA image access the reserved main memory region as a sample buffer. The C library <code>rp-daq-lib</code>, which is located under <code>src/lib/</code> in the project repository, encapsulates these memory accesses into a convenient C library. It is possible to use this C library directly on the RedPitaya when no communication with the host system is required, i.e. if one wants to write the acquired data into a file. When making changes to the FPGA image one may need to adapt the <code>rp-daq-lib</code> C library.</p><p>The server itself uses the <code>rp-daq-lib</code> library to interface with the FPGA image.</p><h2 id="Client-and-Server"><a class="docs-heading-anchor" href="#Client-and-Server">Client and Server</a><a id="Client-and-Server-1"></a><a class="docs-heading-anchor-permalink" href="#Client-and-Server" title="Permalink"></a></h2><p>The server on each RedPitaya has two TCP sockets to which a client needs to connect. The first is the command socket on port 5025 and the second is the data socket on port 5026. Over the former, a client can send SCPI commands to the server and receive replies, while the latter is used for sending binary data such as the samples acquired by the ADCs.</p><p>SCPI commands are ASCII strings, such as <code>RP:ADC:DECimation</code>, which the server translates into C function calls. As an example these calls could invoke a function of the <code>rp-daq-lib</code> library to set the decimation of the sampling rate or instruct the server to transmit data over the data socket. A list of the available SCPI commands can be found <a href="scpi.html">here</a>.</p><p>At any point a server is only connected to one client and establishing a new connection stops any current signal generation and acquisition.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="index.html">« Home</a><a class="docs-footer-nextpage" href="installation.html">Installation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.8.0 on <span class="colophon-date" title="Friday 13 December 2024 15:13">Friday 13 December 2024</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.