Skip to content
Snippets Groups Projects
Commit e35fc16b authored by Pieter Donker's avatar Pieter Donker
Browse files

Merge branch 'master' of git.astron.nl:desp/hdl

parents 935d8b42 cfeff4e3
No related branches found
No related tags found
1 merge request!28Master
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
* Latex * Latex
* Markdown * Markdown
* Vi * Vi
* Screen to run a terminal session without ssh connection
* Quartus Qsys IP files in GIT
******************************************************************************* *******************************************************************************
...@@ -363,4 +365,163 @@ Table: ...@@ -363,4 +365,163 @@ Table:
vi vi
"Replaced Windows LFCR by Linux LF to avoid ^R at end of line in vi. Removed trailing spaces." "Replaced Windows LFCR by Linux LF to avoid ^R at end of line in vi. Removed trailing spaces."
- in gvim replace \r --> nothing - in gvim replace \r --> nothing
- in uex save new file as Linux, save as, menu edit/preferences/line end - in uex save new file as Linux, save as, menu edit/preferences/line end
\ No newline at end of file
*******************************************************************************
* Screen to run a terminal session without ssh connection
*******************************************************************************
https://linuxize.com/post/how-to-use-linux-screen/
screen --version
Basic Linux Screen Usage
On the command prompt, type screen.
Run the desired program.
Use the key sequence Ctrl-a + Ctrl-d to detach from the screen session.
Reattach to the screen session by typing screen -r.
To start a screen session, simply type screen in your console:
screen
screen -S session_name
This will open a screen session, create a new window, and start a shell in
that window. Now that you have opened a screen session, you can get a list of
commands by typing:
Ctrl+a ?
When you start a new screen session, it creates a single window with a shell
in it. You can have multiple windows inside a Screen session.
To create a new window with shell type Ctrl+a c, the first available number
from the range 0...9 will be assigned to it. Below are some most common
commands for managing Linux Screen Windows:
Ctrl+a c Create a new window (with shell)
Ctrl+a " List all window
Ctrl+a 0 Switch to window 0 (by number )
Ctrl+a A Rename the current window
Ctrl+a S Split current region horizontally into two regions
Ctrl+a | Split current region vertically into two regions
Ctrl+a tab Switch the input focus to the next region
Ctrl+a Ctrl+a Toggle between the current and previous region
Ctrl+a Q Close all regions but the current one
Ctrl+a X Close the current region
You can detach from the screen session at any time by typing:
Ctrl+a d
The program running in the screen session will continue to run after you detach
from the session. To resume your screen session use the following command:
screen -r
In case you have multiple screen sessions running on your machine, you will
need to append the screen session ID after the r switch.
To find the session ID list the current running screen sessions with:
screen -ls
There are screens on:
10835.pts-0.linuxize-desktop (Detached)
10366.pts-0.linuxize-desktop (Detached)
2 Sockets in /run/screens/S-linuxize.
If you want to restore screen 10835.pts-0, then type the following command:
screen -r 10835
When screen is started, it reads its configuration parameters from
/etc/screenrc and ~/.screenrc if the file is present. We can modify the default
Screen settings according to our preferences using the .screenrc file.
Here is a sample ~/.screenrc configuration with customized status line and few
additional options:
~/.screenrc
# Turn off the welcome message
startup_message off
# Disable visual bell
vbell off
# Set scrollback buffer to 10000
defscrollback 10000
# Customize the status line
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'
Copy
*******************************************************************************
* Quartus Qsys IP files in GIT
*******************************************************************************
1) Designs without QSYS: unb2b_arp_ping
Met meld blijkt dat de ip dir van unb2b_arp_ping en unb2b_minimal gelijk zijn
in de STAT-266 branch. Dat komt omdat je ze gecopieerd hebt en omdat
unb2b_arp_ping geen QSYS heeft zijn ze dus ongewijzigd.
Aangezien unb2b_arp_ping geen QSYS heeft, en ook niet zou krijgen, is het
beter om de unb2b_arp_ping/quartus/ip dir van unb2_arp_ping te deleten.
2) Designs with QSYS
Elk design op basis van unb2_minimal heeft zijn eigen QSYS ip files:
> ls $RADIOHDL_WORK/boards/uniboard2b/designs/unb2b_minimal/quartus/ip/qsys_unb2b_minimal
Als een design meer MM ports heeft dan heeft het ook meer ip files, bijv.
qsys_unb2b_heater_reg_heater.ip voor de unb2b_heater.
Het is kennelijk voor QSYS nodig om naast de .qsys file ook de ip/ files in de
repository te bewaren. Het is dus ook nodig om ze per design te bewaren, want
elk design heeft zijn eigen naam en extra MM slaves tov unb2b_minimal.
Echter het blijkt dat een nieuw design ook dezelfde ip/ files als unb2_minimal
mag gebruiken, dus zonder naamswijziging.
ll $RADIOHDL_WORK/boards/uniboard2b/designs/unb2b_jesd/quartus/
ip/
qsys_unb2b_jesd.qsys
ll $RADIOHDL_WORK/boards/uniboard2b/designs/unb2b_jesd/quartus/ip/qsys_unb2b_minimal
total 2492
-rw-r--r-- 1 kooistra users 234095 Sep 23 13:01 altjesd_ss_RX_corepll.ip
-rw-r--r-- 1 kooistra users 16145 Sep 23 13:01 altjesd_ss_RX_frame_reset.ip
-rw-r--r-- 1 kooistra users 16139 Sep 23 13:01 altjesd_ss_RX_link_reset.ip
-rw-r--r-- 1 kooistra users 104258 Sep 23 13:01 altjesd_ss_RX_reset_seq.ip
-rw-r--r-- 1 kooistra users 42930 Sep 23 13:01 altjesd_ss_RX_xcvr_reset_control.ip
-rw-r--r-- 1 kooistra users 21228 Sep 23 13:01 device_clk.ip
-rw-r--r-- 1 kooistra users 21226 Sep 23 13:01 frame_clk.ip
-rw-r--r-- 1 kooistra users 159233 Sep 23 13:01 jesd.ip
-rw-r--r-- 1 kooistra users 21347 Sep 23 13:01 link_clk.ip
-rw-r--r-- 1 kooistra users 62203 Sep 23 13:01 qsys_unb2b_minimal_avs_common_mm_0.ip
-rw-r--r-- 1 kooistra users 62217 Sep 23 13:01 qsys_unb2b_minimal_avs_common_mm_1.ip
-rw-r--r-- 1 kooistra users 162287 Sep 23 13:01 qsys_unb2b_minimal_avs_eth_0.ip
-rw-r--r-- 1 kooistra users 21256 Sep 23 13:01 qsys_unb2b_minimal_clk_0.ip
-rw-r--r-- 1 kooistra users 189801 Sep 23 13:01 qsys_unb2b_minimal_cpu_0.ip
-rw-r--r-- 1 kooistra users 211623 Sep 23 13:01 qsys_unb2b_minimal_jesd204.ip
-rw-r--r-- 1 kooistra users 57037 Sep 23 13:01 qsys_unb2b_minimal_jtag_uart_0.ip
-rw-r--r-- 1 kooistra users 66156 Sep 23 13:01 qsys_unb2b_minimal_onchip_memory2_0.ip
-rw-r--r-- 1 kooistra users 61818 Sep 23 13:01 qsys_unb2b_minimal_pio_pps.ip
-rw-r--r-- 1 kooistra users 62201 Sep 23 13:01 qsys_unb2b_minimal_pio_system_info.ip
-rw-r--r-- 1 kooistra users 60152 Sep 23 13:01 qsys_unb2b_minimal_pio_wdi.ip
-rw-r--r-- 1 kooistra users 61896 Sep 23 13:01 qsys_unb2b_minimal_reg_dpmm_ctrl.ip
-rw-r--r-- 1 kooistra users 61896 Sep 23 13:01 qsys_unb2b_minimal_reg_dpmm_data.ip
-rw-r--r-- 1 kooistra users 62108 Sep 23 13:01 qsys_unb2b_minimal_reg_epcs.ip
-rw-r--r-- 1 kooistra users 62238 Sep 23 13:01 qsys_unb2b_minimal_reg_fpga_temp_sens.ip
-rw-r--r-- 1 kooistra users 62277 Sep 23 13:01 qsys_unb2b_minimal_reg_fpga_voltage_sens.ip
-rw-r--r-- 1 kooistra users 61896 Sep 23 13:01 qsys_unb2b_minimal_reg_mmdp_ctrl.ip
-rw-r--r-- 1 kooistra users 61896 Sep 23 13:01 qsys_unb2b_minimal_reg_mmdp_data.ip
-rw-r--r-- 1 kooistra users 62108 Sep 23 13:01 qsys_unb2b_minimal_reg_remu.ip
-rw-r--r-- 1 kooistra users 62176 Sep 23 13:01 qsys_unb2b_minimal_reg_unb_pmbus.ip
-rw-r--r-- 1 kooistra users 62163 Sep 23 13:01 qsys_unb2b_minimal_reg_unb_sens.ip
-rw-r--r-- 1 kooistra users 61818 Sep 23 13:01 qsys_unb2b_minimal_reg_wdi.ip
-rw-r--r-- 1 kooistra users 62209 Sep 23 13:01 qsys_unb2b_minimal_rom_system_info.ip
-rw-r--r-- 1 kooistra users 63384 Sep 23 13:01 qsys_unb2b_minimal_timer_0.ip
...@@ -80,6 +80,10 @@ PACKAGE common_mem_pkg IS ...@@ -80,6 +80,10 @@ PACKAGE common_mem_pkg IS
TYPE t_mem_miso_arr IS ARRAY (INTEGER RANGE <>) OF t_mem_miso; TYPE t_mem_miso_arr IS ARRAY (INTEGER RANGE <>) OF t_mem_miso;
TYPE t_mem_mosi_arr IS ARRAY (INTEGER RANGE <>) OF t_mem_mosi; TYPE t_mem_mosi_arr IS ARRAY (INTEGER RANGE <>) OF t_mem_mosi;
-- Reset only the control fields of the MM record
FUNCTION RESET_MEM_MOSI_CTRL(mosi : t_mem_mosi) RETURN t_mem_mosi;
FUNCTION RESET_MEM_MISO_CTRL(miso : t_mem_miso) RETURN t_mem_miso;
-- Resize functions to fit an integer or an SLV in the corresponding t_mem_miso or t_mem_mosi field width -- Resize functions to fit an integer or an SLV in the corresponding t_mem_miso or t_mem_mosi field width
FUNCTION TO_MEM_ADDRESS(n : INTEGER) RETURN STD_LOGIC_VECTOR; -- unsigned, use integer to support 32 bit range FUNCTION TO_MEM_ADDRESS(n : INTEGER) RETURN STD_LOGIC_VECTOR; -- unsigned, use integer to support 32 bit range
FUNCTION TO_MEM_DATA( n : INTEGER) RETURN STD_LOGIC_VECTOR; -- unsigned, alias of TO_MEM_DATA() FUNCTION TO_MEM_DATA( n : INTEGER) RETURN STD_LOGIC_VECTOR; -- unsigned, alias of TO_MEM_DATA()
...@@ -169,6 +173,23 @@ END common_mem_pkg; ...@@ -169,6 +173,23 @@ END common_mem_pkg;
PACKAGE BODY common_mem_pkg IS PACKAGE BODY common_mem_pkg IS
-- Reset only the control fields of the MM record
FUNCTION RESET_MEM_MOSI_CTRL(mosi : t_mem_mosi) RETURN t_mem_mosi IS
VARIABLE v_mosi : t_mem_mosi := mosi;
BEGIN
v_mosi.rd := '0';
v_mosi.wr := '0';
RETURN v_mosi;
END RESET_MEM_MOSI_CTRL;
FUNCTION RESET_MEM_MISO_CTRL(miso : t_mem_miso) RETURN t_mem_miso IS
VARIABLE v_miso : t_mem_miso := miso;
BEGIN
v_miso.rdval := '0';
v_miso.waitrequest := '0';
RETURN v_miso;
END RESET_MEM_MISO_CTRL;
-- Resize functions to fit an integer or an SLV in the corresponding t_mem_miso or t_mem_mosi field width -- Resize functions to fit an integer or an SLV in the corresponding t_mem_miso or t_mem_mosi field width
FUNCTION TO_MEM_ADDRESS(n : INTEGER) RETURN STD_LOGIC_VECTOR IS FUNCTION TO_MEM_ADDRESS(n : INTEGER) RETURN STD_LOGIC_VECTOR IS
BEGIN BEGIN
......
...@@ -233,6 +233,9 @@ PACKAGE dp_stream_pkg Is ...@@ -233,6 +233,9 @@ PACKAGE dp_stream_pkg Is
SIGNAL siso_arr : IN t_dp_siso_arr; SIGNAL siso_arr : IN t_dp_siso_arr;
SIGNAL ready_reg : INOUT STD_LOGIC_VECTOR); SIGNAL ready_reg : INOUT STD_LOGIC_VECTOR);
-- Reset only the control fields of the DP sosi record
FUNCTION RESET_DP_SOSI_CTRL(sosi : t_dp_sosi) RETURN t_dp_sosi;
-- Resize functions to fit an integer or an SLV in the corresponding t_dp_sosi field width -- Resize functions to fit an integer or an SLV in the corresponding t_dp_sosi field width
-- . Use these functions to assign sosi data TO a record field -- . Use these functions to assign sosi data TO a record field
-- . Use the range selection [n-1 DOWNTO 0] to assign sosi data FROM a record field to an slv -- . Use the range selection [n-1 DOWNTO 0] to assign sosi data FROM a record field to an slv
...@@ -455,6 +458,17 @@ PACKAGE BODY dp_stream_pkg IS ...@@ -455,6 +458,17 @@ PACKAGE BODY dp_stream_pkg IS
BEGIN BEGIN
proc_dp_siso_alert(1, clk, sosi_arr, siso_arr, ready_reg); proc_dp_siso_alert(1, clk, sosi_arr, siso_arr, ready_reg);
END proc_dp_siso_alert; END proc_dp_siso_alert;
-- Reset only the control fields of the DP sosi record
FUNCTION RESET_DP_SOSI_CTRL(sosi : t_dp_sosi) RETURN t_dp_sosi IS
VARIABLE v_sosi : t_dp_sosi := sosi;
BEGIN
v_sosi.sync := '0';
v_sosi.valid := '0';
v_sosi.sop := '0';
v_sosi.eop := '0';
RETURN v_sosi;
END RESET_DP_SOSI_CTRL;
-- Resize functions to fit an integer or an SLV in the corresponding t_dp_sosi field width -- Resize functions to fit an integer or an SLV in the corresponding t_dp_sosi field width
FUNCTION TO_DP_BSN(n : NATURAL) RETURN STD_LOGIC_VECTOR IS FUNCTION TO_DP_BSN(n : NATURAL) RETURN STD_LOGIC_VECTOR IS
......
...@@ -127,10 +127,11 @@ BEGIN ...@@ -127,10 +127,11 @@ BEGIN
END GENERATE; END GENERATE;
gen_pipeline : IF g_pipeline = TRUE GENERATE gen_pipeline : IF g_pipeline = TRUE GENERATE
--p_reg : PROCESS(mm_rst, mosi_reg, mm_clk) -- todo: check with synthesis that it is not necessary to have mosi_reg here
p_reg : PROCESS(mm_rst, mm_clk) p_reg : PROCESS(mm_rst, mm_clk)
BEGIN BEGIN
IF mm_rst = '1' THEN IF mm_rst = '1' THEN
mosi_reg <= c_mem_mosi_rst; mosi_reg <= RESET_MEM_MOSI_CTRL(mosi_reg); -- todo: check with synthesis that mosi_reg data fields remain wires
ELSIF rising_edge(mm_clk) THEN ELSIF rising_edge(mm_clk) THEN
mosi_reg <= nxt_mosi_reg; mosi_reg <= nxt_mosi_reg;
END IF; END IF;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment