Skip to content
Snippets Groups Projects
Commit 2fb67ea5 authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Updated SDP timing description and BSN aligner selection to almost final...

Updated SDP timing description and BSN aligner selection to almost final state. Updated other txt files at some points.
parent d78945af
No related branches found
No related tags found
No related merge requests found
. Distinguish beteen state registers and pipeline registers. Idea / rule: Distinguish beteen state registers and pipeline registers.
The state registers keep the state of the function and the function itself is programmed in combinatorial logic.
. The state registers keep the state of the function and the function itself is programmed in combinatorial logic.
In this way the pipelining that is needed to achieve timing closure can be added independent of the function. In this way the pipelining that is needed to achieve timing closure can be added independent of the function.
This approach could be described in a paper, because it is quite significant and differs from the well known This approach could be described in a paper, because it is quite significant and differs from the well known
Gailser approach (that uses RL=1 and does not separate state from pipeline). AXI uses RL=0 but need to check Gailser approach (that uses RL=1 and does not separate state from pipeline). AXI uses RL=0 but need to check
...@@ -28,5 +29,5 @@ ...@@ -28,5 +29,5 @@
Ref: Ref:
tools/oneclick/doc/desp_firmware_dag_erko.txt : Secion 6) VHDL design $RADIOHDL/tools/oneclick/doc/desp_firmware_dag_erko.txt
tools/oneclick/doc/desp_firmware_overview.txt $RADIOHDL/tools/oneclick/doc/desp_firmware_overview.txt
\ No newline at end of file \ No newline at end of file
...@@ -22,25 +22,32 @@ UDP link control ...@@ -22,25 +22,32 @@ UDP link control
- UDP/IPv4 - UDP/IPv4
. UDP checksum (not used in LOFAR1) . UDP checksum (not used in LOFAR1)
> nslookup <hostname> # e.g. <astron.nl> to find IP address
> sudo arp
> ping <IP address> # to find MAC address for IP address ?
LFAA-CSP_Low : OSI (Open Systems Interconnection) layers LFAA-CSP_Low : OSI (Open Systems Interconnection) layers
7 Application : Not applicable, this is the level where the STAT and CEP products each perform their allocated functions. 7 Application : Not applicable, this is the level where the STAT and CEP products each perform their
allocated functions.
6 Presentation : 6 Presentation :
- SPEAD header - SPEAD header
header first word: header first word:
magic = 0x53 ='S' 8b, version = 0x4 8b, itemPointerWidth = 0x2 8b, HeapAddrWidth = 0x0 8b, rsvd=0 16b, number of items = 0x8 16b magic = 0x53 ='S' 8b, version = 0x4 8b, itemPointerWidth = 0x2 8b, HeapAddrWidth = 0x0 8b, rsvd=0 16b,
number of items = 0x8 16b
header items: header items:
heap_counter = coarse channel number (1-511) 16b, packet counter 32b # restart at 0 for new observation, 2k samples per packet --> packet counter wraps after few days heap_counter = coarse channel number (1-511) 16b, packet counter 32b # restart at 0 for new
observation, 2k samples per packet --> packet counter wraps after few days
pkt_len = packet payload length 48b pkt_len = packet payload length 48b
sync_time = unix_epoch_time [s] 48b # last time system was syncrhonised by PPS in seconds since 1 Jan 1970 sync_time = unix_epoch_time [s] 48b # last time system was syncrhonised by PPS in seconds since 1 Jan 1970
timestamp = timestamp [ns] 48b # time of center of first sample in packet since sync_time in ADC sample periods of 1.25 ns timestamp = timestamp [ns] 48b # time of center of first sample in packet since sync_time in
ADC sample periods of 1.25 ns
center_freq = frequency [Hz] 48b # center frequency of coarse channel (1-511) * 781250 in Hz center_freq = frequency [Hz] 48b # center frequency of coarse channel (1-511) * 781250 in Hz
csp_channel_info = rsvd 16b, beam_id 16b, freq_id 16b csp_channel_info = rsvd 16b, beam_id 16b, freq_id 16b
csp_antenna_info = substation_id (1-512) 8b, subarray_id (1-16) 8b, station_id 16b, nof_contributing_antenna (typ. 256) 16b csp_antenna_info = substation_id (1-512) 8b, subarray_id (1-16) 8b, station_id 16b, nof_contributing_antenna
(typ. 256) 16b
sample_offset = payload_offset = 0x0 sample_offset = payload_offset = 0x0
data data
...@@ -68,7 +75,10 @@ LFAA-CSP_Low : OSI (Open Systems Interconnection) layers ...@@ -68,7 +75,10 @@ LFAA-CSP_Low : OSI (Open Systems Interconnection) layers
L1 ICD 11109 : STAT - CEP L1 ICD 11109 : STAT - CEP
. Beamlet data . Beamlet data
. Transient buffer read out . Transient buffer read out
. Subband offload (for AARTFAAC)
Not included:
. SST, BST, XST, because these are for monitoring and calibration, not for science data
. Subband offload for AARTFAAC2.0 will have own EICD
STAT-CEP Beamlet data interface: STAT-CEP Beamlet data interface:
...@@ -82,10 +92,14 @@ STAT-CEP Beamlet data interface: ...@@ -82,10 +92,14 @@ STAT-CEP Beamlet data interface:
. 1b critically PFB, oversampled PFB (or p, q for R_os = p/q) . 1b critically PFB, oversampled PFB (or p, q for R_os = p/q)
. 4b beamlet width in number of bits (default 8 for W_beamlet = 8 bit, instead of BM = beamlet mode) . 4b beamlet width in number of bits (default 8 for W_beamlet = 8 bit, instead of BM = beamlet mode)
. 5b UniBoard2 FPGA id (16 FPGAs for LBA, 16 for HBA in International Station, instead of RSP ID) . 5b UniBoard2 FPGA id (16 FPGAs for LBA, 16 for HBA in International Station, instead of RSP ID)
. ==> Also beamlet scale setting
. ==> Number of antenna in beam (core, LBA, HBA inner to make HBA international look like HBA remote)
- CONFIGURATION_ID 8b (used in LOFAR1? intended to refer to the parset that defines this observation) - CONFIGURATION_ID 8b (used in LOFAR1? intended to refer to the parset that defines this observation)
==> observation ID 32b
- STATION_ID 16b (idem as LOFAR1) - STATION_ID 16b (idem as LOFAR1)
==> or 8b because there are only ~50 stations
- One packet per range of Station beamlets out of 488 beamlets - One packet per range of Station beamlets out of 488 beamlets
. Full band : S_sub_bf * W_beamlet * N_complex / W_byte = 488 * 8b * 2 / 8b = 976 octets . Full band : S_sub_bf * W_beamlet * N_complex / W_byte = 488 * 8b * 2 / 8b = 976 octets
...@@ -126,6 +140,9 @@ STAT-CEP Beamlet data interface: ...@@ -126,6 +140,9 @@ STAT-CEP Beamlet data interface:
- TX_PACKET_COUNT 32b - TX_PACKET_COUNT 32b
==> Not useful, because then CEP needs to count Rx packets. Better send filler packets to keep the
packet rate at the nominal rate, so that any packet loss is due to the Network and already
clear at OSI 2 layer using lower level tools like Wireshark.
. OSI transport layer 4 . OSI transport layer 4
. Per stream . Per stream
. Started at Station power up, increments by 1 for every transmitted packet. . Started at Station power up, increments by 1 for every transmitted packet.
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Station Control software: * Station Control software:
******************************************************************************* *******************************************************************************
The Station contains hardware and software devices that deliver the funnctionality of the application The Station contains hardware and software devices that deliver the functionality of the application
[4.1.2.1]. The Station Control software consist of Control and M&C. The Control determines the behaviour [4.1.2.1]. The Station Control software consist of Control and M&C. The Control determines the behaviour
of the devices in time. Via the M&C the Control can control the devices and monitor them. The M&C uses of the devices in time. Via the M&C the Control can control the devices and monitor them. The M&C uses
a standard software interface for the Control to access the devices. For the Station M&C the M&C will a standard software interface for the Control to access the devices. For the Station M&C the M&C will
...@@ -48,8 +48,12 @@ FPGAs in parallel. The synchronous M&C can be for a single PPS instant or for ev ...@@ -48,8 +48,12 @@ FPGAs in parallel. The synchronous M&C can be for a single PPS instant or for ev
- Use fixed internal sync aligned to PPS - Use fixed internal sync aligned to PPS
. The disadvantage of a fixed interval is that it is inflexible and cannot be controlled by the SCU, . In LOFAR1 and APERTIF the sync period is used as fixed update interval for periodic monitoring,
This could also be considered an advantage, because it is well defined and does not need control. periodic control (the beamformer weights) and periodic integration intervals (AST, SST, BST and
XST).
. The advantage of a fixed update interval is that it is well defined and does not need control.
This can also be a disadvantage because a fixed interval is inflexible and cannot be controlled
by the SCU. Probably only for the XST this flexibility is nice to have.
. With a fixed interval the monitored information may only reflect what happened during the previous . With a fixed interval the monitored information may only reflect what happened during the previous
period. Therefore if the monitoring has to be without gaps in time then the SCU needs to monitor period. Therefore if the monitoring has to be without gaps in time then the SCU needs to monitor
and aggregate the information at every period. Using a configurable period this aggregation in the and aggregate the information at every period. Using a configurable period this aggregation in the
...@@ -167,4 +171,9 @@ Behaviour of the data points: ...@@ -167,4 +171,9 @@ Behaviour of the data points:
Conclusion:
- Identify casue of error preferrably via a single monitoring point
- With proper monitoring no test time is needed
- Support writing status fields in a test mpd for SW - FW interface testing
- Use 1 s sync interval of PPS to time period M&C events for all. Optionally support a local BSN scheduler
for the XST.
This diff is collapsed.
...@@ -62,10 +62,110 @@ export SVN=${HOME}/svnroot/UniBoard_FP7 ...@@ -62,10 +62,110 @@ export SVN=${HOME}/svnroot/UniBoard_FP7
* GIT workflow * GIT workflow
******************************************************************************* *******************************************************************************
git add <dir>/<file> # cannot add empty dir, need empty file in it difftool ?
mergetool ?
* Pro Git book by Scott Chacon: https://git-scm.com/book/en/v2
* YouTube : David Mahler part 1,2,3
Part 1:
# After GIT install
git version
git config --global http://user.name "EricKooistra"
git config --global http://user.email "erkooi@gmail.com"
git config --list
touch .gitignore # create .gitignore if it does not already exist
.gitignore # file with working tree dirs and files to ignore, must also be commited
# To start a repo
git init # start new repo at this dir, creates .git/
git clone # get and start with existing repo
git status # what is in stage area and what is modified
Three areas:
* working tree # local directory tree
| git add
v
* staging area (index)
|
v git commit
* history # .git repository with entire commit graph
# To use a repo
git add <dir>/<file> # add to stage area, set for commit. Cannot add empty dir, need empty file in it
git add . # add all new and modified to stageing area
git diff # diff between file in working tree and staging area
git diff --staged # diff between file in staging area and history
git rm <filename> # remove file from working tree and stage the delete
git checkout -- <filename> # revert a working tree change
git reset # clear stage area
git reset HEAD <filename> # revert staged change
git log -- <filename> # show history of file
git checkout <version hash> -- s2 # retrieve file from history into staged area and working tree
Part 2:
git commit -m "" # commit what is in stage area
git commit -a -m "" # add to stage area and commit what is in stage area
alias graph="git log --all --decorate --oneline --graph"
git branch <branch name> # creat branch
git branch # show branches
git checkout <branch name> # change working tree and stage area to branch
git checkout master
git merge <branch name> # Fast forward merge of branch name to master if there is a direct path
# by moving master to branch name, this is when there have been no updates
# on the master branch since the branch was created.
# Three way merge combine the differences of the branch and the master
# compared to their common version, this can lead to merge conflicts if
# changes on both branches occur at same parts of a file.
git branch --merged # show branches that ghave been merged to master
git branch -d <branch name> # remove branch
git checkout <commit hash> # detached HEAD because it points to a version not a branch
git branch <branch name> # start a branch from the commit hash, HEAD is attached again
# Stash area to store working tree
git stash save "comment" # store working tree and stage area to get a clean
git stash list # show all stashes
git stash apply <label> # restore stash
git stash apply # restore last stash
Part 3: Remote repositories (Github, Gitlab, Bitbucket, ...)
create repo on Github
http://README.md # md = mark down
git clone <url:.../<repo name>.git> # get copy from url
cd <repo name>
git config --local http://user.name "EricKooistra"
git config --local http://user.email "erkooi@gmail.com"
git remote # origin
git remote -v # full url
# To align with remote repo
# update from remote
git status # shows also origin/master, but not live
git fetch origin
git status # shows also origin/master, now with latest remote
git merge origin/master
git pull # get latest from remote repo, combines fetch and merge
# upload to remote
git push
git push origin master # put local repo to remote repo
# On Github fork is a copy of the a repo in Github to get a repo on your account
git clone <url of fork> # get copy of fork repo, will be origin
git remote add upstream <url of original repo on Github> # will be upstream
git fetch upstream
git status git status
git commit -a <dir> -m "Commit comment" # commit local change on branch
# git push origin <branch name> # push to my fork repo on Github
# pull request on Github
# delete branch and fetch npstream if the pull request was accepted
git remote remove <remote name> # remove a remote repo
...@@ -75,6 +175,14 @@ git commit -a <dir> -m "Commit comment" ...@@ -75,6 +175,14 @@ git commit -a <dir> -m "Commit comment"
- space tools menu links onder om secties the ordenen. - space tools menu links onder om secties the ordenen.
*******************************************************************************
* RadioHDL
*******************************************************************************
Open issues:
- Central HDL_IO_FILE_SIM_DIR = build/sim --> Project local sim dir
- avs_eth_coe.vhd per tool version? Because copying avs_eth_coe_<buildset>_hw.tcl to $HDL_BUILD_DIR copies the
last <buildset>, using more than one buildset at a time gices conflicts.
******************************************************************************* *******************************************************************************
...@@ -107,6 +215,19 @@ git commit -a <dir> -m "Commit comment" ...@@ -107,6 +215,19 @@ git commit -a <dir> -m "Commit comment"
. buffer all beamlets per T_sub at sync . buffer all beamlets per T_sub at sync
. buffer one beamlet for some T_sub time series after sync . buffer one beamlet for some T_sub time series after sync
- Use GIT
- Understand AXI4 streaming (versus avalon, RL =0)
- Use ARGS to define peripherals
. check docs and article
- Learn how gmi_minimal HDL code works to prepare for porting to unb2b_minimal_gmi
- Update RadioHDL docs
- Write RadioHDL article
- Write HDL RL=0 article - desp_hdl_design_article.txt
- RCU2S-SDP signal input allocation: - RCU2S-SDP signal input allocation:
Decided: Decided:
. LBA and HBA on seperate RCUs and also on seperate subracks and on independent rings, so SDP is independent . LBA and HBA on seperate RCUs and also on seperate subracks and on independent rings, so SDP is independent
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment