diff --git a/applications/lofar2/doc/prestudy/desp_howtools_erko.txt b/applications/lofar2/doc/prestudy/desp_howtools_erko.txt index 57967f561e1dc64a3b53a24721e3a40e139619a3..b23f9fef1919bb23d60e1129c0a5a739e4aa2118 100755 --- a/applications/lofar2/doc/prestudy/desp_howtools_erko.txt +++ b/applications/lofar2/doc/prestudy/desp_howtools_erko.txt @@ -6,6 +6,8 @@ * Latex * Markdown * Vi +* Screen to run a terminal session without ssh connection +* Quartus Qsys IP files in GIT ******************************************************************************* @@ -363,4 +365,163 @@ Table: vi "Replaced Windows LFCR by Linux LF to avoid ^R at end of line in vi. Removed trailing spaces." - in gvim replace \r --> nothing -- in uex save new file as Linux, save as, menu edit/preferences/line end \ No newline at end of file +- in uex save new file as Linux, save as, menu edit/preferences/line end + + +******************************************************************************* +* 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 + diff --git a/libraries/base/common/src/vhdl/common_mem_pkg.vhd b/libraries/base/common/src/vhdl/common_mem_pkg.vhd index 902bad7ccbbc5f746dc9f6b76200f1c89d6dca07..70490338cbf26aed3fa288c719bd18b82d671af5 100644 --- a/libraries/base/common/src/vhdl/common_mem_pkg.vhd +++ b/libraries/base/common/src/vhdl/common_mem_pkg.vhd @@ -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_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 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() @@ -169,6 +173,23 @@ END common_mem_pkg; 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 FUNCTION TO_MEM_ADDRESS(n : INTEGER) RETURN STD_LOGIC_VECTOR IS BEGIN diff --git a/libraries/base/dp/src/vhdl/dp_stream_pkg.vhd b/libraries/base/dp/src/vhdl/dp_stream_pkg.vhd index a9782fa140393c7af419f5965e4d334a17499af0..bf43a639f3c3e81a6cac5e4cbe09b0541341fb6d 100644 --- a/libraries/base/dp/src/vhdl/dp_stream_pkg.vhd +++ b/libraries/base/dp/src/vhdl/dp_stream_pkg.vhd @@ -233,6 +233,9 @@ PACKAGE dp_stream_pkg Is SIGNAL siso_arr : IN t_dp_siso_arr; 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 -- . 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 @@ -455,6 +458,17 @@ PACKAGE BODY dp_stream_pkg IS BEGIN proc_dp_siso_alert(1, clk, sosi_arr, siso_arr, ready_reg); 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 FUNCTION TO_DP_BSN(n : NATURAL) RETURN STD_LOGIC_VECTOR IS diff --git a/libraries/base/mm/src/vhdl/mm_pipeline.vhd b/libraries/base/mm/src/vhdl/mm_pipeline.vhd index 179a3d51adfa85d3b5ed77c5bb1a449a2c50ff24..8a518b18a5e23b97806a778c5471407f0fc10feb 100644 --- a/libraries/base/mm/src/vhdl/mm_pipeline.vhd +++ b/libraries/base/mm/src/vhdl/mm_pipeline.vhd @@ -127,10 +127,11 @@ BEGIN END 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) BEGIN 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 mosi_reg <= nxt_mosi_reg; END IF;