From 0b5a2c19093869eef32f2151adb57d02f8e11025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20Fran=C3=A7a?= Date: Wed, 12 May 2021 22:26:37 -0300 Subject: [PATCH] Modifications in SpaceWire Channel for future revisions --- .gitignore | 1 + .../spacewire_light_codec_err/spwerr.vhd | 21 +- .../spacewire_light_codec_err/spwlink.vhd | 618 ++++---- .../spacewire_light_codec_err/spwpkg.vhd | 806 +++++----- .../spacewire_light_codec_err/spwram.vhd | 35 +- .../spacewire_light_codec_err/spwrecv.vhd | 214 +-- .../spwrecvfront_fast.vhd | 301 ++-- .../spwrecvfront_generic.vhd | 68 +- .../spacewire_light_codec_err/spwstream.vhd | 555 +++---- .../spacewire_light_codec_err/spwxmit.vhd | 177 +-- .../spwxmit_fast.vhd | 420 +++-- .../spwc_spacewire_channel_top.vhd | 491 +++--- .../Development/SpaceWire_Channel_hw.tcl | 5 +- .../Testbench/SpaceWire_Channel.cr.mti | 75 +- .../Testbench/SpaceWire_Channel.mpf | 74 +- .../Development/Testbench/testbench_top.vhd | 421 ++--- .../Development/Testbench/transcript | 45 +- .../Development/Testbench/vsim.wlf | Bin 98304 -> 98304 bytes .../Development/Testbench/work/_info | 1403 +++++++++-------- .../Development/Testbench/work/_lib.qdb | Bin 98304 -> 98304 bytes .../work/{_lib1_83.qdb => _lib1_121.qdb} | Bin 32768 -> 32768 bytes .../work/{_lib1_83.qpg => _lib1_121.qpg} | Bin 1531904 -> 1744896 bytes .../work/{_lib1_83.qtl => _lib1_121.qtl} | Bin 734997 -> 792348 bytes .../Hardware_Project/Avalon/SEVEN_SEG_TOP.vhd | 402 ++--- .../spacewire_light_codec_err/spwerr.vhd | 21 +- .../spacewire_light_codec_err/spwlink.vhd | 618 ++++---- .../spacewire_light_codec_err/spwpkg.vhd | 806 +++++----- .../spacewire_light_codec_err/spwram.vhd | 35 +- .../spacewire_light_codec_err/spwrecv.vhd | 214 +-- .../spwrecvfront_fast.vhd | 301 ++-- .../spwrecvfront_generic.vhd | 68 +- .../spacewire_light_codec_err/spwstream.vhd | 555 +++---- .../spacewire_light_codec_err/spwxmit.vhd | 177 +-- .../spwxmit_fast.vhd | 420 +++-- .../spwc_spacewire_channel_top.vhd | 491 +++--- .../Avalon/SpaceWire_Channel_hw.tcl | 5 +- .../software/Simucam_R0_UART/simucam_main.c | 4 +- 37 files changed, 4874 insertions(+), 4973 deletions(-) rename FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/{_lib1_83.qdb => _lib1_121.qdb} (56%) rename FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/{_lib1_83.qpg => _lib1_121.qpg} (60%) rename FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/{_lib1_83.qtl => _lib1_121.qtl} (51%) diff --git a/.gitignore b/.gitignore index c399ac85..7a93fe24 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ *.o *.ko *.obj +*.objdump #*.elf # Linker output diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd index 3ad602e4..03ffa099 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd @@ -89,7 +89,7 @@ architecture spwerr_arch of spwerr is begin -- Combinatorial process - process(r, err_usr_i, err_link_i) is + process(r, rst, err_usr_i, err_link_i) is variable v : regs_type; begin v := r; @@ -319,16 +319,25 @@ begin end if; end if; + -- Reset + if rst = '1' then + v := regs_reset; + err_usr_o.err_stat_o <= stby; + err_link_o.err_disc_o <= '0'; + err_link_o.err_par_o <= '0'; + err_link_o.err_esc_o <= '0'; + err_link_o.err_credit_o <= '0'; + err_link_o.err_ch_seq_o <= '0'; + end if; + -- Update future state regs. rin <= v; end process; - -- Sequential process - rst, update regs. - process(clk, rst) is + -- Sequential process - update regs. + process(clk) is begin - if (rst = '1') then - r <= regs_reset; - elsif rising_edge(clk) then + if rising_edge(clk) then r <= rin; end if; end process; diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd index 8670ffd2..307ed77e 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd @@ -12,324 +12,320 @@ use work.spwpkg.all; entity spwlink is - generic( - -- Reset time expressed in system clock cycles. - -- Should be 6.4 us (5.82 us .. 7.2 us) according to the standard. - reset_time : integer - ); - - port( - -- System clock. - clk : in std_logic; - -- Synchronous reset (active-high). - -- Disconnects, resets error conditions, puts the link state machine - -- in state ErrorReset. - rst : in std_logic; - -- Link level inputs. - linki : in spw_link_in_type; - -- Link level outputs. - linko : out spw_link_out_type; - -- Receiver enable signal to spwrecv. - rxen : out std_logic; - -- Output signals from spwrecv. - recvo : in spw_recv_out_type; - -- Input signals for spwxmit. - xmiti : out spw_xmit_in_type; - -- Output signals from spwxmit. - xmito : in spw_xmit_out_type - ); + generic( + -- Reset time expressed in system clock cycles. + -- Should be 6.4 us (5.82 us .. 7.2 us) according to the standard. + reset_time : integer + ); + + port( + -- System clock. + clk : in std_logic; + -- Synchronous reset (active-high). + -- Disconnects, resets error conditions, puts the link state machine + -- in state ErrorReset. + rst : in std_logic; + -- Link level inputs. + linki : in spw_link_in_type; + -- Link level outputs. + linko : out spw_link_out_type; + -- Receiver enable signal to spwrecv. + rxen : out std_logic; + -- Output signals from spwrecv. + recvo : in spw_recv_out_type; + -- Input signals for spwxmit. + xmiti : out spw_xmit_in_type; + -- Output signals from spwxmit. + xmito : in spw_xmit_out_type + ); end entity spwlink; architecture spwlink_arch of spwlink is - -- Convert boolean to std_logic. - type bool_to_logic_type is array (boolean) of std_ulogic; - constant bool_to_logic : bool_to_logic_type := (false => '0', true => '1'); - - -- State machine. - type state_type is ( - S_ErrorReset, S_ErrorWait, S_Ready, S_Started, S_Connecting, S_Run); - - -- Registers - type regs_type is record - -- state machine - state : state_type; - -- credit accounting - tx_credit : unsigned(5 downto 0); - rx_credit : unsigned(5 downto 0); - errcred : std_ulogic; - -- reset timer - timercnt : unsigned(10 downto 0); - timerdone : std_ulogic; - -- signal to transmitter - xmit_fct_in : std_ulogic; - end record; - - -- Initial state - constant regs_reset : regs_type := ( - state => S_ErrorReset, - tx_credit => "000000", - rx_credit => "000000", - errcred => '0', - timercnt => to_unsigned(reset_time, 11), - timerdone => '0', - xmit_fct_in => '0'); - - signal r : regs_type := regs_reset; - signal rin : regs_type; - - -- Internal interface - spwerr <-> spwlink - signal link_to_err : spwerr_from_link_type; - signal err_to_link : spwerr_to_link_type; + -- Convert boolean to std_logic. + type bool_to_logic_type is array (boolean) of std_ulogic; + constant bool_to_logic : bool_to_logic_type := (false => '0', true => '1'); + + -- State machine. + type state_type is ( + S_ErrorReset, S_ErrorWait, S_Ready, S_Started, S_Connecting, S_Run); + + -- Registers + type regs_type is record + -- state machine + state : state_type; + -- credit accounting + tx_credit : unsigned(5 downto 0); + rx_credit : unsigned(5 downto 0); + errcred : std_ulogic; + -- reset timer + timercnt : unsigned(10 downto 0); + timerdone : std_ulogic; + -- signal to transmitter + xmit_fct_in : std_ulogic; + end record; + + -- Initial state + constant regs_reset : regs_type := ( + state => S_ErrorReset, + tx_credit => "000000", + rx_credit => "000000", + errcred => '0', + timercnt => to_unsigned(reset_time, 11), + timerdone => '0', + xmit_fct_in => '0'); + + signal r : regs_type := regs_reset; + signal rin : regs_type; + + -- Internal interface - spwerr <-> spwlink + signal link_to_err : spwerr_from_link_type; + signal err_to_link : spwerr_to_link_type; begin - -- Instantiate error controller. - err_inst : spwerr - port map( - clk => clk, - rst => rst, - err_link_i => link_to_err, - err_link_o => err_to_link, - err_usr_i => linki.err_usr_i, - err_usr_o => linko.err_usr_o - ); - - -- Combinatorial process - process(r, rst, linki, recvo, xmito, err_to_link) is - variable v : regs_type; - variable v_timerrst : std_logic; - variable v_xmiti : spw_xmit_in_type; - begin - v := r; - v_timerrst := '0'; - - -- State machine. - case r.state is - - when S_ErrorReset => - -- Wait for timer. - if r.timercnt = 0 then - v.state := S_ErrorWait; - v_timerrst := '1'; - end if; - v.errcred := '0'; - v.xmit_fct_in := '0'; - - when S_ErrorWait => - -- Wait for 2 timer periods. - if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or - ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') then - -- Note: spwrecv will never issue errpar, erresc, gotfct, - -- tick_out or rxchar before the first NULL has been seen. - -- Therefore it's ok here to bail on those conditions - -- without explicitly testing got_null. - v.state := S_ErrorReset; -- error, go back to reset - v_timerrst := '1'; - elsif r.timercnt = 0 then - if r.timerdone = '1' then - v.state := S_Ready; - v_timerrst := '1'; - end if; - end if; - - when S_Ready => - -- Wait for link start. - if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or - ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') then - v.state := S_ErrorReset; -- error, go back to reset - v_timerrst := '1'; - elsif (linki.linkdis = '0') and (r.xmit_fct_in = '1') and - ((linki.linkstart or (linki.autostart and recvo.gotnull)) = '1') then - v.state := S_Started; -- link enabled; start sending NULL - v_timerrst := '1'; - end if; - - when S_Started => - -- Wait for NULL. - if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or - ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') or - ((r.timercnt = 0) and r.timerdone = '1') then - v.state := S_ErrorReset; -- error, go back to reset - v_timerrst := '1'; - elsif recvo.gotnull = '1' then - v.state := S_Connecting; -- received null, continue - v_timerrst := '1'; - end if; - - when S_Connecting => - -- Wait for FCT. - if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or - ((recvo.tick_out or recvo.rxchar) = '1') or - ((r.timercnt = 0) and r.timerdone = '1') then - v.state := S_ErrorReset; -- error, go back to reset - v_timerrst := '1'; - elsif recvo.gotfct = '1' then - v.state := S_Run; -- got FCT, init completed - end if; - - when S_Run => - -- All is well. - if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or (r.errcred = '1') or - -- Spwerr can cause a disconnetion by forcing link disable - ((linki.linkdis or err_to_link.err_disc_o) = '1') then - v.state := S_ErrorReset; -- error, go back to reset - v_timerrst := '1'; - end if; - - end case; - - -- Update credit counters. - if r.state = S_ErrorReset then - - -- reset credit - v.tx_credit := to_unsigned(0, v.tx_credit'length); - v.rx_credit := to_unsigned(0, v.rx_credit'length); - - else - - -- update TX credit - if recvo.gotfct = '1' then - -- just received a FCT token - v.tx_credit := v.tx_credit + to_unsigned(8, v.tx_credit'length); - if r.tx_credit > 48 then - -- received too many FCT tokens - v.errcred := '1'; - end if; - end if; - -- Only decrements tx_credit without char sequence error injection - if (err_to_link.err_ch_seq_o = '0') then - if xmito.txack = '1' then - -- just sent one byte - v.tx_credit := v.tx_credit - to_unsigned(1, v.tx_credit'length); - end if; - end if; - - -- Only increments rx_credit without credit error injection - if (err_to_link.err_credit_o = '0') then - -- update RX credit after sending FCT - if xmito.fctack = '1' then - -- just sent a FCT token - v.rx_credit := v.rx_credit + to_unsigned(8, v.rx_credit'length); - end if; - end if; - - -- decide about sending FCT tokens - v.xmit_fct_in := bool_to_logic((v.rx_credit <= 48) and (v.rx_credit + to_unsigned(8, v.rx_credit'length) <= unsigned(linki.rxroom))); - - -- update RX credit after receiving character - if recvo.rxchar = '1' then - -- just received a character - v.rx_credit := v.rx_credit - to_unsigned(1, v.rx_credit'length); - if r.rx_credit = 0 then - -- remote transmitter violated its credit - v.errcred := '1'; - end if; - end if; - - end if; - - -- Update the initializaton reset timer. - if v_timerrst = '1' then - v.timercnt := to_unsigned(reset_time, v.timercnt'length); - v.timerdone := '0'; - else - if r.timercnt = 0 then - v.timercnt := to_unsigned(reset_time, v.timercnt'length); - v.timerdone := '1'; - else - v.timercnt := r.timercnt - 1; - end if; - end if; - - -- Reset - if rst = '1' then - v := regs_reset; - end if; - - -- Drive link level outputs. - linko.started <= bool_to_logic(r.state = S_Started); - linko.connecting <= bool_to_logic(r.state = S_Connecting); - linko.running <= bool_to_logic(r.state = S_Run); - linko.errdisc <= recvo.errdisc and bool_to_logic(r.state = S_Run); - linko.errpar <= recvo.errpar and bool_to_logic(r.state = S_Run); - linko.erresc <= recvo.erresc and bool_to_logic(r.state = S_Run); - linko.errcred <= r.errcred; - linko.txack <= xmito.txack; - linko.tick_out <= recvo.tick_out and bool_to_logic(r.state = S_Run); - linko.ctrl_out <= recvo.ctrl_out; - linko.time_out <= recvo.time_out; - linko.rxchar <= recvo.rxchar and bool_to_logic(r.state = S_Run); - linko.rxflag <= recvo.rxflag; - linko.rxdata <= recvo.rxdata; - - -- Drive receiver inputs. - rxen <= bool_to_logic(r.state /= S_ErrorReset); - - -- Drive transmitter input signals. - -- v_xmiti intercepts signals - v_xmiti.txen := bool_to_logic(r.state = S_Started or r.state = S_Connecting or r.state = S_Run); - v_xmiti.stnull := bool_to_logic(r.state = S_Started); - v_xmiti.stfct := bool_to_logic(r.state = S_Connecting); - v_xmiti.fct_in := r.xmit_fct_in; - v_xmiti.tick_in := linki.tick_in and bool_to_logic(r.state = S_Run); - v_xmiti.ctrl_in := linki.ctrl_in; - v_xmiti.time_in := linki.time_in; - v_xmiti.txwrite := linki.txwrite and bool_to_logic(r.tx_credit /= 0); - v_xmiti.txflag := linki.txflag; - v_xmiti.txdata := linki.txdata; - - -- Logic for parity, escape, charactere sequence and credit errors: update v_xmiti. - if ((err_to_link.err_par_o or err_to_link.err_esc_o) = '1') then - -- For parity and escape errors (treated directly by xmiti unity), send only null condition is a must. - v_xmiti.stnull := '1'; - elsif (err_to_link.err_credit_o = '1') then - -- Prepare conditions to send 8 x fct - -- No need to use counter or fsm, because err_credit_o pulse is long enough. - v_xmiti.tick_in := '0'; - v_xmiti.fct_in := '1'; - elsif (err_to_link.err_ch_seq_o = '1') then - -- Prepare conditions to send a N-char outside run state - v_xmiti.fct_in := '0'; - -- Send EOP outside run state - v_xmiti.txflag := '1'; - v_xmiti.txdata := "00000000"; - v_xmiti.txwrite := '1'; - end if; - - -- Write back to xmiti inputs. - -- If there is no error injection request, it is a simple bypass. - xmiti.txen <= v_xmiti.txen; - xmiti.stnull <= v_xmiti.stnull; - xmiti.stfct <= v_xmiti.stfct; - xmiti.fct_in <= v_xmiti.fct_in; - xmiti.tick_in <= v_xmiti.tick_in; - xmiti.ctrl_in <= v_xmiti.ctrl_in; - xmiti.time_in <= v_xmiti.time_in; - xmiti.txwrite <= v_xmiti.txwrite; - xmiti.txflag <= v_xmiti.txflag; - xmiti.txdata <= v_xmiti.txdata; - -- Parity, escape, char sequence, and credit error injection must also be treated directly by xmit unity - xmiti.err_inj_par <= err_to_link.err_par_o; - xmiti.err_inj_esc <= err_to_link.err_esc_o; - xmiti.err_inj_ch_seq <= err_to_link.err_ch_seq_o; - xmiti.err_inj_credit <= err_to_link.err_credit_o; - - -- Drive spwerr inputs. - link_to_err.run_state <= bool_to_logic(r.state = S_Run); - link_to_err.start_or_conn_state <= bool_to_logic(r.state = S_Started or r.state = S_Connecting); - - -- Update registers. - rin <= v; - end process; - - -- Update registers. - process(clk) is - begin - if rising_edge(clk) then - r <= rin; - end if; - end process; + -- Instantiate error controller. + err_inst : spwerr + port map( + clk => clk, + rst => rst, + err_link_i => link_to_err, + err_link_o => err_to_link, + err_usr_i => linki.err_usr_i, + err_usr_o => linko.err_usr_o + ); + + -- Combinatorial process + process(r, rst, linki, recvo, xmito, err_to_link) is + variable v : regs_type; + variable v_timerrst : std_logic; + variable v_xmiti : spw_xmit_in_type; + begin + v := r; + v_timerrst := '0'; + + -- State machine. + case r.state is + + when S_ErrorReset => + -- Wait for timer. + if r.timercnt = 0 then + v.state := S_ErrorWait; + v_timerrst := '1'; + end if; + v.errcred := '0'; + v.xmit_fct_in := '0'; + + when S_ErrorWait => + -- Wait for 2 timer periods. + if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') then + -- Note: spwrecv will never issue errpar, erresc, gotfct, + -- tick_out or rxchar before the first NULL has been seen. + -- Therefore it's ok here to bail on those conditions + -- without explicitly testing got_null. + v.state := S_ErrorReset; -- error, go back to reset + v_timerrst := '1'; + elsif r.timercnt = 0 then + if r.timerdone = '1' then + v.state := S_Ready; + v_timerrst := '1'; + end if; + end if; + + when S_Ready => + -- Wait for link start. + if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') then + v.state := S_ErrorReset; -- error, go back to reset + v_timerrst := '1'; + elsif (linki.linkdis = '0') and (r.xmit_fct_in = '1') and ((linki.linkstart or (linki.autostart and recvo.gotnull)) = '1') then + v.state := S_Started; -- link enabled; start sending NULL + v_timerrst := '1'; + end if; + + when S_Started => + -- Wait for NULL. + if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') or ((r.timercnt = 0) and r.timerdone = '1') then + v.state := S_ErrorReset; -- error, go back to reset + v_timerrst := '1'; + elsif recvo.gotnull = '1' then + v.state := S_Connecting; -- received null, continue + v_timerrst := '1'; + end if; + + when S_Connecting => + -- Wait for FCT. + if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or ((recvo.tick_out or recvo.rxchar) = '1') or ((r.timercnt = 0) and r.timerdone = '1') then + v.state := S_ErrorReset; -- error, go back to reset + v_timerrst := '1'; + elsif recvo.gotfct = '1' then + v.state := S_Run; -- got FCT, init completed + end if; + + when S_Run => + -- All is well. + if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or (r.errcred = '1') or -- Spwerr can cause a disconnetion by forcing link disable + ((linki.linkdis or err_to_link.err_disc_o) = '1') then + v.state := S_ErrorReset; -- error, go back to reset + v_timerrst := '1'; + end if; + + when others => + v.state := S_ErrorReset; -- recover from invalid state + v_timerrst := '1'; + + end case; + + -- Update credit counters. + if r.state = S_ErrorReset then + + -- reset credit + v.tx_credit := to_unsigned(0, v.tx_credit'length); + v.rx_credit := to_unsigned(0, v.rx_credit'length); + + else + + -- update TX credit + if recvo.gotfct = '1' then + -- just received a FCT token + v.tx_credit := v.tx_credit + to_unsigned(8, v.tx_credit'length); + if r.tx_credit > 48 then + -- received too many FCT tokens + v.errcred := '1'; + end if; + end if; + -- Only decrements tx_credit without char sequence error injection + if (err_to_link.err_ch_seq_o = '0') then + if xmito.txack = '1' then + -- just sent one byte + v.tx_credit := v.tx_credit - to_unsigned(1, v.tx_credit'length); + end if; + end if; + + -- Only increments rx_credit without credit error injection + if (err_to_link.err_credit_o = '0') then + -- update RX credit after sending FCT + if xmito.fctack = '1' then + -- just sent a FCT token + v.rx_credit := v.rx_credit + to_unsigned(8, v.rx_credit'length); + end if; + end if; + + -- decide about sending FCT tokens + v.xmit_fct_in := bool_to_logic((v.rx_credit <= 48) and (v.rx_credit + to_unsigned(8, v.rx_credit'length) <= unsigned(linki.rxroom))); + + -- update RX credit after receiving character + if recvo.rxchar = '1' then + -- just received a character + v.rx_credit := v.rx_credit - to_unsigned(1, v.rx_credit'length); + if r.rx_credit = 0 then + -- remote transmitter violated its credit + v.errcred := '1'; + end if; + end if; + + end if; + + -- Update the initializaton reset timer. + if v_timerrst = '1' then + v.timercnt := to_unsigned(reset_time, v.timercnt'length); + v.timerdone := '0'; + else + if r.timercnt = 0 then + v.timercnt := to_unsigned(reset_time, v.timercnt'length); + v.timerdone := '1'; + else + v.timercnt := r.timercnt - 1; + end if; + end if; + + -- Reset + if rst = '1' then + v := regs_reset; + end if; + + -- Drive link level outputs. + linko.started <= bool_to_logic(r.state = S_Started); + linko.connecting <= bool_to_logic(r.state = S_Connecting); + linko.running <= bool_to_logic(r.state = S_Run); + linko.errdisc <= recvo.errdisc and bool_to_logic(r.state = S_Run); + linko.errpar <= recvo.errpar and bool_to_logic(r.state = S_Run); + linko.erresc <= recvo.erresc and bool_to_logic(r.state = S_Run); + linko.errcred <= r.errcred; + linko.txack <= xmito.txack; + linko.tick_out <= recvo.tick_out and bool_to_logic(r.state = S_Run); + linko.ctrl_out <= recvo.ctrl_out; + linko.time_out <= recvo.time_out; + linko.rxchar <= recvo.rxchar and bool_to_logic(r.state = S_Run); + linko.rxflag <= recvo.rxflag; + linko.rxdata <= recvo.rxdata; + + -- Drive receiver inputs. + rxen <= bool_to_logic(r.state /= S_ErrorReset); + + -- Drive transmitter input signals. + -- v_xmiti intercepts signals + v_xmiti.txen := bool_to_logic(r.state = S_Started or r.state = S_Connecting or r.state = S_Run); + v_xmiti.stnull := bool_to_logic(r.state = S_Started); + v_xmiti.stfct := bool_to_logic(r.state = S_Connecting); + v_xmiti.fct_in := r.xmit_fct_in; + v_xmiti.tick_in := linki.tick_in and bool_to_logic(r.state = S_Run); + v_xmiti.ctrl_in := linki.ctrl_in; + v_xmiti.time_in := linki.time_in; + v_xmiti.txwrite := linki.txwrite and bool_to_logic(r.tx_credit /= 0); + v_xmiti.txflag := linki.txflag; + v_xmiti.txdata := linki.txdata; + + -- Logic for parity, escape, charactere sequence and credit errors: update v_xmiti. + if ((err_to_link.err_par_o or err_to_link.err_esc_o) = '1') then + -- For parity and escape errors (treated directly by xmiti unity), send only null condition is a must. + v_xmiti.stnull := '1'; + elsif (err_to_link.err_credit_o = '1') then + -- Prepare conditions to send 8 x fct + -- No need to use counter or fsm, because err_credit_o pulse is long enough. + v_xmiti.tick_in := '0'; + v_xmiti.fct_in := '1'; + elsif (err_to_link.err_ch_seq_o = '1') then + -- Prepare conditions to send a N-char outside run state + v_xmiti.fct_in := '0'; + -- Send EOP outside run state + v_xmiti.txflag := '1'; + v_xmiti.txdata := "00000000"; + v_xmiti.txwrite := '1'; + end if; + + -- Write back to xmiti inputs. + -- If there is no error injection request, it is a simple bypass. + xmiti.txen <= v_xmiti.txen; + xmiti.stnull <= v_xmiti.stnull; + xmiti.stfct <= v_xmiti.stfct; + xmiti.fct_in <= v_xmiti.fct_in; + xmiti.tick_in <= v_xmiti.tick_in; + xmiti.ctrl_in <= v_xmiti.ctrl_in; + xmiti.time_in <= v_xmiti.time_in; + xmiti.txwrite <= v_xmiti.txwrite; + xmiti.txflag <= v_xmiti.txflag; + xmiti.txdata <= v_xmiti.txdata; + -- Parity, escape, char sequence, and credit error injection must also be treated directly by xmit unity + xmiti.err_inj_par <= err_to_link.err_par_o; + xmiti.err_inj_esc <= err_to_link.err_esc_o; + xmiti.err_inj_ch_seq <= err_to_link.err_ch_seq_o; + xmiti.err_inj_credit <= err_to_link.err_credit_o; + + -- Drive spwerr inputs. + link_to_err.run_state <= bool_to_logic(r.state = S_Run); + link_to_err.start_or_conn_state <= bool_to_logic(r.state = S_Started or r.state = S_Connecting); + + -- Update registers. + rin <= v; + end process; + + -- Update registers. + process(clk) is + begin + if rising_edge(clk) then + r <= rin; + end if; + end process; end architecture spwlink_arch; diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd index b4fe8ffd..6c2ad076 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd @@ -7,454 +7,456 @@ use ieee.std_logic_1164.all; package spwpkg is - -- Indicates a platform-specific implementation. - type spw_implementation_type is (impl_generic, impl_fast); + -- Indicates a platform-specific implementation. + type spw_implementation_type is (impl_generic, impl_fast); - -- Enumerated type for spwerr error selection values - -- Obs.: esc_eop, esc_eep: future implementation - type t_spw_err_sel is (disconnection, parity, esc_eop, esc_eep, esc_esc, credit, ch_seq, reserved); + -- Enumerated type for spwerr error selection values + -- Obs.: esc_eop, esc_eep: future implementation + type t_spw_err_sel is (disconnection, parity, esc_eop, esc_eep, esc_esc, credit, ch_seq, reserved); - -- Enumerated type for spwerr error status values - type t_spw_err_stat is (stby, accepted, invalid, inconsistent, ended_ok, reserved); + -- Enumerated type for spwerr error status values + type t_spw_err_stat is (stby, accepted, invalid, inconsistent, ended_ok, reserved); - -- Input signals from toplevel to spwerr. - type spwerr_from_usr_type is record + -- Input signals from toplevel to spwerr. + type spwerr_from_usr_type is record - err_inj_i : std_logic; - err_sel_i : t_spw_err_sel; - end record; + err_inj_i : std_logic; + err_sel_i : t_spw_err_sel; + end record; - -- Output signals from spwerr to toplevel - type spwerr_to_usr_type is record + -- Output signals from spwerr to toplevel + type spwerr_to_usr_type is record - err_stat_o : t_spw_err_stat; - end record; + err_stat_o : t_spw_err_stat; + end record; - -- Input signals from spwlink to spwerr. - type spwerr_from_link_type is record + -- Input signals from spwlink to spwerr. + type spwerr_from_link_type is record - run_state : std_logic; - start_or_conn_state: std_logic; - end record; + run_state : std_logic; + start_or_conn_state : std_logic; + end record; - -- Output signals from spwerr to spwlink - type spwerr_to_link_type is record + -- Output signals from spwerr to spwlink + type spwerr_to_link_type is record - err_disc_o : std_logic; - err_par_o : std_logic; - err_esc_o : std_logic; - err_credit_o : std_logic; - err_ch_seq_o : std_logic; - end record; + err_disc_o : std_logic; + err_par_o : std_logic; + err_esc_o : std_logic; + err_credit_o : std_logic; + err_ch_seq_o : std_logic; + end record; - -- Input signals to spwlink. - type spw_link_in_type is record + -- Input signals to spwlink. + type spw_link_in_type is record - -- Enables automatic link start on receipt of a NULL character. - autostart : std_logic; + -- Enables automatic link start on receipt of a NULL character. + autostart : std_logic; - -- Enables link start once the Ready state is reached. - -- Without either "autostart" or "linkstart", the link remains in - -- state Ready. - linkstart : std_logic; + -- Enables link start once the Ready state is reached. + -- Without either "autostart" or "linkstart", the link remains in + -- state Ready. + linkstart : std_logic; - -- Do not start link (overrides "linkstart" and "autostart") and/or - -- disconnect the currently running link. - linkdis : std_logic; + -- Do not start link (overrides "linkstart" and "autostart") and/or + -- disconnect the currently running link. + linkdis : std_logic; - -- Number of bytes available in the receive buffer. Used to for - -- flow-control operation. At least 8 bytes must be available - -- initially, otherwise the link can not start. Values larger than 63 - -- are irrelevant and may be presented as 63. The available room may - -- decrease by one byte due to the reception of an N-Char; in that case - -- the "rxroom" signal must be updated on the clock following the clock - -- on which "rxchar" is high. Under no other circumstances may "rxroom" - -- be decreased. - rxroom : std_logic_vector(5 downto 0); + -- Number of bytes available in the receive buffer. Used to for + -- flow-control operation. At least 8 bytes must be available + -- initially, otherwise the link can not start. Values larger than 63 + -- are irrelevant and may be presented as 63. The available room may + -- decrease by one byte due to the reception of an N-Char; in that case + -- the "rxroom" signal must be updated on the clock following the clock + -- on which "rxchar" is high. Under no other circumstances may "rxroom" + -- be decreased. + rxroom : std_logic_vector(5 downto 0); - -- High for one clock cycle to request transmission of a TimeCode. - -- The request is registered inside spwxmit until it can be processed. - tick_in : std_logic; + -- High for one clock cycle to request transmission of a TimeCode. + -- The request is registered inside spwxmit until it can be processed. + tick_in : std_logic; - -- Control bits of the TimeCode to be sent. - -- Must be valid while tick_in is high. - ctrl_in : std_logic_vector(1 downto 0); + -- Control bits of the TimeCode to be sent. + -- Must be valid while tick_in is high. + ctrl_in : std_logic_vector(1 downto 0); - -- Counter value of the TimeCode to be sent. - -- Must be valid while tick_in is high. - time_in : std_logic_vector(5 downto 0); + -- Counter value of the TimeCode to be sent. + -- Must be valid while tick_in is high. + time_in : std_logic_vector(5 downto 0); - -- Requests transmission of an N-Char. - -- Keep this signal high until confirmed by "txack". - txwrite : std_logic; + -- Requests transmission of an N-Char. + -- Keep this signal high until confirmed by "txack". + txwrite : std_logic; - -- Control flag to be sent with the next N-Char. - -- Must be valid while "txwrite" is high. - txflag : std_logic; + -- Control flag to be sent with the next N-Char. + -- Must be valid while "txwrite" is high. + txflag : std_logic; - -- Byte to be sent, or "00000000" for EOP or "00000001" for EEP. - -- Must be valid while "txwrite" is high. - txdata : std_logic_vector(7 downto 0); + -- Byte to be sent, or "00000000" for EOP or "00000001" for EEP. + -- Must be valid while "txwrite" is high. + txdata : std_logic_vector(7 downto 0); - -- Spwerr interface in - toplevel - err_usr_i : spwerr_from_usr_type; - end record; + -- Spwerr interface in - toplevel + err_usr_i : spwerr_from_usr_type; + end record; - -- Output signals from spwlink. - type spw_link_out_type is record + -- Output signals from spwlink. + type spw_link_out_type is record - -- High if the link state machine is currently in state Started. - started : std_logic; + -- High if the link state machine is currently in state Started. + started : std_logic; - -- High if the link state machine is currently in state Connecting. - connecting : std_logic; + -- High if the link state machine is currently in state Connecting. + connecting : std_logic; - -- High if the link state machine is currently in state Run. - running : std_logic; + -- High if the link state machine is currently in state Run. + running : std_logic; - -- Disconnect detected in state Run. Triggers a reset and reconnect. - -- This indication is auto-clearing. - errdisc : std_logic; + -- Disconnect detected in state Run. Triggers a reset and reconnect. + -- This indication is auto-clearing. + errdisc : std_logic; - -- Parity error detected in state Run. Triggers a reset and reconnect. - -- This indication is auto-clearing. - errpar : std_logic; + -- Parity error detected in state Run. Triggers a reset and reconnect. + -- This indication is auto-clearing. + errpar : std_logic; - -- Invalid escape sequence detected in state Run. - -- Triggers a reset and reconnect; auto-clearing. - erresc : std_logic; + -- Invalid escape sequence detected in state Run. + -- Triggers a reset and reconnect; auto-clearing. + erresc : std_logic; - -- Credit error detected. Triggers a reset and reconnect. - -- This indication is auto-clearing. - errcred : std_logic; + -- Credit error detected. Triggers a reset and reconnect. + -- This indication is auto-clearing. + errcred : std_logic; - -- High to confirm the transmission of an N-Char. - -- This is a Wishbone-style handshake signal. It has a combinatorial - -- dependency on "txwrite". - txack : std_logic; + -- High to confirm the transmission of an N-Char. + -- This is a Wishbone-style handshake signal. It has a combinatorial + -- dependency on "txwrite". + txack : std_logic; - -- High for one clock cycle if a TimeCode was just received. - -- Verification of the TimeCode as described in 8.12.2 of ECSS-E-50 - -- is not implemented; all received timecodes are reported. - tick_out : std_logic; + -- High for one clock cycle if a TimeCode was just received. + -- Verification of the TimeCode as described in 8.12.2 of ECSS-E-50 + -- is not implemented; all received timecodes are reported. + tick_out : std_logic; - -- Control bits of last received TimeCode. - ctrl_out : std_logic_vector(1 downto 0); + -- Control bits of last received TimeCode. + ctrl_out : std_logic_vector(1 downto 0); - -- Counter value of last received TimeCode. - time_out : std_logic_vector(5 downto 0); + -- Counter value of last received TimeCode. + time_out : std_logic_vector(5 downto 0); - -- High for one clock cycle if an N-Char (data byte or EOP or EEP) was - -- just received. The data bits must be accepted immediately from - -- "rxflag" and "rxdata". - rxchar : std_logic; + -- High for one clock cycle if an N-Char (data byte or EOP or EEP) was + -- just received. The data bits must be accepted immediately from + -- "rxflag" and "rxdata". + rxchar : std_logic; - -- High if the received character is EOP or EEP, low if it is a data - -- byte. Valid when "rxchar" is high. - rxflag : std_logic; + -- High if the received character is EOP or EEP, low if it is a data + -- byte. Valid when "rxchar" is high. + rxflag : std_logic; - -- Received byte, or "00000000" for EOP or "00000001" for EEP. - -- Valid when "rxchar" is high. - rxdata : std_logic_vector(7 downto 0); + -- Received byte, or "00000000" for EOP or "00000001" for EEP. + -- Valid when "rxchar" is high. + rxdata : std_logic_vector(7 downto 0); - -- Spwerr interface out - toplevel - err_usr_o : spwerr_to_usr_type; - end record; + -- Spwerr interface out - toplevel + err_usr_o : spwerr_to_usr_type; + end record; - -- Output signals from spwrecv to spwlink. - type spw_recv_out_type is record + -- Output signals from spwrecv to spwlink. + type spw_recv_out_type is record - -- High if at least one signal change was seen since enable. - -- Resets to low when rxen is low. - gotbit : std_logic; + -- High if at least one signal change was seen since enable. + -- Resets to low when rxen is low. + gotbit : std_logic; - -- High if at least one valid NULL pattern was detected since enable. - -- Resets to low when rxen is low. - gotnull : std_logic; + -- High if at least one valid NULL pattern was detected since enable. + -- Resets to low when rxen is low. + gotnull : std_logic; - -- High for one clock cycle if an FCT token was just received. - gotfct : std_logic; + -- High for one clock cycle if an FCT token was just received. + gotfct : std_logic; - -- High for one clock cycle if a TimeCode was just received. - tick_out : std_logic; + -- High for one clock cycle if a TimeCode was just received. + tick_out : std_logic; - -- Control bits of last received TimeCode. - ctrl_out : std_logic_vector(1 downto 0); + -- Control bits of last received TimeCode. + ctrl_out : std_logic_vector(1 downto 0); - -- Counter value of last received TimeCode. - time_out : std_logic_vector(5 downto 0); + -- Counter value of last received TimeCode. + time_out : std_logic_vector(5 downto 0); - -- High for one clock cycle if an N-Char (data byte or EOP/EEP) was just received. - rxchar : std_logic; + -- High for one clock cycle if an N-Char (data byte or EOP/EEP) was just received. + rxchar : std_logic; - -- High if rxchar is high and the received character is EOP or EEP. - -- Low if rxchar is high and the received character is a data byte. - rxflag : std_logic; - - -- Received byte, or "00000000" for EOP or "00000001" for EEP. - -- Valid when "rxchar" is high. - rxdata : std_logic_vector(7 downto 0); - - -- Disconnect detected (after a signal change was seen). - -- Resets to low when rxen is low or when a signal change is seen. - errdisc : std_logic; - - -- Parity error detected (after a valid NULL pattern was seen). - -- Sticky; resets to low when rxen is low. - errpar : std_logic; - - -- Escape sequence error detected (after a valid NULL pattern was seen). - -- Sticky; resets to low when rxen is low. - erresc : std_logic; - end record; - - -- Input signals to spwxmit from spwlink. - type spw_xmit_in_type is record - - -- High to enable transmitter; low to disable and reset transmitter. - txen : std_logic; - - -- Indicates that only NULL characters may be transmitted. - stnull : std_logic; - - -- Indicates that only NULL and/or FCT characters may be transmitted. - stfct : std_logic; - - -- Requests transmission of an FCT character. - -- Keep this signal high until confirmed by "fctack". - fct_in : std_logic; - - -- High for one clock cycle to request transmission of a TimeCode. - -- The request is registered inside spwxmit until it can be processed. - tick_in : std_logic; - - -- Control bits of the TimeCode to be sent. - -- Must be valid while "tick_in" is high. - ctrl_in : std_logic_vector(1 downto 0); - - -- Counter value of the TimeCode to be sent. - -- Must be valid while "tick_in" is high. - time_in : std_logic_vector(5 downto 0); - - -- Request transmission of an N-Char. - -- Keep this signal high until confirmed by "txack". - txwrite : std_logic; - - -- Control flag to be sent with the next N-Char. - -- Must be valid while "txwrite" is high. - txflag : std_logic; - - -- Byte to send, or "00000000" for EOP or "00000001" for EEP. - -- Must be valid while "txwrite" is high. - txdata : std_logic_vector(7 downto 0); - - -- Parity error injection control bit (from spwerr: internal to link) - err_inj_par: std_logic; - - -- Escape error injection control bit (from spwerr: internal to link) - err_inj_esc: std_logic; - - -- Char sequence error injection control bit (from spwerr: internal to link) - err_inj_ch_seq: std_logic; - - -- Credit error injection control bit (from spwerr: internal to link) - err_inj_credit: std_logic; - - end record; - - -- Output signals from spwxmit to spwlink. - type spw_xmit_out_type is record - - -- High to confirm transmission on an FCT character. - -- This is a Wishbone-style handshaking signal; it is combinatorially - -- dependent on "fct_in". - fctack : std_logic; - - -- High to confirm transmission of an N-Char. - -- This is a Wishbone-style handshaking signal; it is combinatorially - -- dependent on both "fct_in" and "txwrite". - txack : std_logic; - end record; - - -- Character-stream interface - component spwstream is - generic( - sysfreq : real; -- clk freq in Hz - txclkfreq : real := 0.0; -- txclk freq in Hz - rximpl : spw_implementation_type := impl_generic; - rxchunk : integer range 1 to 4 := 1; -- max bits per clk - tximpl : spw_implementation_type := impl_generic; - rxfifosize_bits : integer range 6 to 14 := 11; -- rx fifo size - txfifosize_bits : integer range 2 to 14 := 11 -- tx fifo size - ); - port( - clk : in std_logic; -- system clock - rxclk : in std_logic; -- receiver sample clock - txclk : in std_logic; -- transmit clock - rst : in std_logic; -- synchronous reset - autostart : in std_logic; -- automatic link start - linkstart : in std_logic; -- forced link start - linkdis : in std_logic; -- stop link - txdivcnt : in std_logic_vector(7 downto 0); -- tx scale factor - tick_in : in std_logic; -- request timecode xmit - ctrl_in : in std_logic_vector(1 downto 0); - time_in : in std_logic_vector(5 downto 0); - txwrite : in std_logic; -- request character xmit - txflag : in std_logic; -- control flag of tx char - txdata : in std_logic_vector(7 downto 0); - txrdy : out std_logic; -- room in tx fifo - txhalff : out std_logic; -- tx fifo half full - tick_out : out std_logic; -- timecode received - ctrl_out : out std_logic_vector(1 downto 0); - time_out : out std_logic_vector(5 downto 0); - rxvalid : out std_logic; -- rx fifo not empty - rxhalff : out std_logic; -- rx fifo half full - rxflag : out std_logic; -- control flag of rx char - rxdata : out std_logic_vector(7 downto 0); - rxread : in std_logic; -- accept rx character - started : out std_logic; -- link in Started state - connecting : out std_logic; -- link in Connecting state - running : out std_logic; -- link in Run state - errdisc : out std_logic; -- disconnect error - errpar : out std_logic; -- parity error - erresc : out std_logic; -- escape error - errcred : out std_logic; -- credit error - spw_di : in std_logic; - spw_si : in std_logic; - spw_do : out std_logic; - spw_so : out std_logic; - -- spwerr user interface - err_inj_i : in std_logic; - err_sel_i : in t_spw_err_sel; - err_stat_o : out t_spw_err_stat - ); - end component spwstream; - - -- Link Level Interface - component spwlink is - generic( - reset_time : integer -- reset time in clocks (6.4 us) - ); - port( - clk : in std_logic; -- system clock - rst : in std_logic; -- synchronous reset (active-high) - linki : in spw_link_in_type; - linko : out spw_link_out_type; - rxen : out std_logic; - recvo : in spw_recv_out_type; - xmiti : out spw_xmit_in_type; - xmito : in spw_xmit_out_type - ); - end component spwlink; - - -- Receiver - component spwrecv is - generic( - disconnect_time : integer range 1 to 255; -- disconnect period in system clock cycles - rxchunk : integer range 1 to 4 -- nr of bits per system clock - ); - port( - clk : in std_logic; -- system clock - rxen : in std_logic; -- receiver enabled - recvo : out spw_recv_out_type; - inact : in std_logic; - inbvalid : in std_logic; - inbits : in std_logic_vector(rxchunk - 1 downto 0) - ); - end component spwrecv; - - -- Transmitter (generic implementation) - component spwxmit is - port( - clk : in std_logic; -- system clock - rst : in std_logic; -- synchronous reset (active-high) - divcnt : in std_logic_vector(7 downto 0); - xmiti : in spw_xmit_in_type; - xmito : out spw_xmit_out_type; - spw_do : out std_logic; -- tx data to SPW bus - spw_so : out std_logic -- tx strobe to SPW bus - ); - end component spwxmit; - - -- Transmitter (separate tx clock domain) - component spwxmit_fast is - port( - clk : in std_logic; -- system clock - txclk : in std_logic; -- transmit clock - rst : in std_logic; -- synchronous reset (active-high) - divcnt : in std_logic_vector(7 downto 0); - xmiti : in spw_xmit_in_type; - xmito : out spw_xmit_out_type; - spw_do : out std_logic; -- tx data to SPW bus - spw_so : out std_logic -- tx strobe to SPW bus - ); - end component spwxmit_fast; - - -- Front-end for SpaceWire Receiver (generic implementation) - component spwrecvfront_generic is - port( - clk : in std_logic; -- system clock - rxen : in std_logic; -- high to enable receiver - inact : out std_logic; -- high if activity on input - inbvalid : out std_logic; -- high if inbits contains a valid received bit - inbits : out std_logic_vector(0 downto 0); -- received bit - spw_di : in std_logic; -- Data In signal from SpaceWire bus - spw_si : in std_logic -- Strobe In signal from SpaceWire bus - ); - end component spwrecvfront_generic; - - -- Front-end for SpaceWire Receiver (separate rx clock domain) - component spwrecvfront_fast is - generic( - rxchunk : integer range 1 to 4 -- max number of bits per system clock - ); - port( - clk : in std_logic; -- system clock - rxclk : in std_logic; -- sample clock (DDR) - rxen : in std_logic; -- high to enable receiver - inact : out std_logic; -- high if activity on input - inbvalid : out std_logic; -- high if inbits contains a valid group of received bits - inbits : out std_logic_vector(rxchunk - 1 downto 0); -- received bits - spw_di : in std_logic; -- Data In signal from SpaceWire bus - spw_si : in std_logic -- Strobe In signal from SpaceWire bus - ); - end component spwrecvfront_fast; - - -- Synchronous two-port memory. - component spwram is - generic( - abits : integer; - dbits : integer); - port( - rclk : in std_logic; - wclk : in std_logic; - ren : in std_logic; - raddr : in std_logic_vector(abits - 1 downto 0); - rdata : out std_logic_vector(dbits - 1 downto 0); - wen : in std_logic; - waddr : in std_logic_vector(abits - 1 downto 0); - wdata : in std_logic_vector(dbits - 1 downto 0)); - end component spwram; - - -- Double flip-flop synchronizer. - component syncdff is - port( - clk : in std_logic; -- clock (destination domain) - rst : in std_logic; -- asynchronous reset, active-high - di : in std_logic; -- input data - do : out std_logic); -- output data - end component syncdff; - - -- Spwerr Interface - component spwerr is - port( - clk : in std_logic; -- system clock - rst : in std_logic; -- asynchronous reset (active-high) - err_link_i : in spwerr_from_link_type; - err_link_o : out spwerr_to_link_type; - err_usr_i : in spwerr_from_usr_type; - err_usr_o : out spwerr_to_usr_type - ); - end component spwerr; + -- High if rxchar is high and the received character is EOP or EEP. + -- Low if rxchar is high and the received character is a data byte. + rxflag : std_logic; + + -- Received byte, or "00000000" for EOP or "00000001" for EEP. + -- Valid when "rxchar" is high. + rxdata : std_logic_vector(7 downto 0); + + -- Disconnect detected (after a signal change was seen). + -- Resets to low when rxen is low or when a signal change is seen. + errdisc : std_logic; + + -- Parity error detected (after a valid NULL pattern was seen). + -- Sticky; resets to low when rxen is low. + errpar : std_logic; + + -- Escape sequence error detected (after a valid NULL pattern was seen). + -- Sticky; resets to low when rxen is low. + erresc : std_logic; + end record; + + -- Input signals to spwxmit from spwlink. + type spw_xmit_in_type is record + + -- High to enable transmitter; low to disable and reset transmitter. + txen : std_logic; + + -- Indicates that only NULL characters may be transmitted. + stnull : std_logic; + + -- Indicates that only NULL and/or FCT characters may be transmitted. + stfct : std_logic; + + -- Requests transmission of an FCT character. + -- Keep this signal high until confirmed by "fctack". + fct_in : std_logic; + + -- High for one clock cycle to request transmission of a TimeCode. + -- The request is registered inside spwxmit until it can be processed. + tick_in : std_logic; + + -- Control bits of the TimeCode to be sent. + -- Must be valid while "tick_in" is high. + ctrl_in : std_logic_vector(1 downto 0); + + -- Counter value of the TimeCode to be sent. + -- Must be valid while "tick_in" is high. + time_in : std_logic_vector(5 downto 0); + + -- Request transmission of an N-Char. + -- Keep this signal high until confirmed by "txack". + txwrite : std_logic; + + -- Control flag to be sent with the next N-Char. + -- Must be valid while "txwrite" is high. + txflag : std_logic; + + -- Byte to send, or "00000000" for EOP or "00000001" for EEP. + -- Must be valid while "txwrite" is high. + txdata : std_logic_vector(7 downto 0); + + -- Parity error injection control bit (from spwerr: internal to link) + err_inj_par : std_logic; + + -- Escape error injection control bit (from spwerr: internal to link) + err_inj_esc : std_logic; + + -- Char sequence error injection control bit (from spwerr: internal to link) + err_inj_ch_seq : std_logic; + + -- Credit error injection control bit (from spwerr: internal to link) + err_inj_credit : std_logic; + + end record; + + -- Output signals from spwxmit to spwlink. + type spw_xmit_out_type is record + + -- High to confirm transmission on an FCT character. + -- This is a Wishbone-style handshaking signal; it is combinatorially + -- dependent on "fct_in". + fctack : std_logic; + + -- High to confirm transmission of an N-Char. + -- This is a Wishbone-style handshaking signal; it is combinatorially + -- dependent on both "fct_in" and "txwrite". + txack : std_logic; + end record; + + -- Character-stream interface + component spwstream is + generic( + sysfreq : real; -- clk freq in Hz + txclkfreq : real := 0.0; -- txclk freq in Hz + rximpl : spw_implementation_type := impl_generic; + rxchunk : integer range 1 to 4 := 1; -- max bits per clk + tximpl : spw_implementation_type := impl_generic; + rxfifosize_bits : integer range 6 to 14 := 11; -- rx fifo size + txfifosize_bits : integer range 2 to 14 := 11 -- tx fifo size + ); + port( + clk : in std_logic; -- system clock + rxclk : in std_logic; -- receiver sample clock + txclk : in std_logic; -- transmit clock + rst : in std_logic; -- synchronous reset + autostart : in std_logic; -- automatic link start + linkstart : in std_logic; -- forced link start + linkdis : in std_logic; -- stop link + txdivcnt : in std_logic_vector(7 downto 0); -- tx scale factor + tick_in : in std_logic; -- request timecode xmit + ctrl_in : in std_logic_vector(1 downto 0); + time_in : in std_logic_vector(5 downto 0); + txwrite : in std_logic; -- request character xmit + txflag : in std_logic; -- control flag of tx char + txdata : in std_logic_vector(7 downto 0); + txrdy : out std_logic; -- room in tx fifo + txhalff : out std_logic; -- tx fifo half full + tick_out : out std_logic; -- timecode received + ctrl_out : out std_logic_vector(1 downto 0); + time_out : out std_logic_vector(5 downto 0); + rxvalid : out std_logic; -- rx fifo not empty + rxhalff : out std_logic; -- rx fifo half full + rxflag : out std_logic; -- control flag of rx char + rxdata : out std_logic_vector(7 downto 0); + rxread : in std_logic; -- accept rx character + started : out std_logic; -- link in Started state + connecting : out std_logic; -- link in Connecting state + running : out std_logic; -- link in Run state + errdisc : out std_logic; -- disconnect error + errpar : out std_logic; -- parity error + erresc : out std_logic; -- escape error + errcred : out std_logic; -- credit error + spw_di : in std_logic; + spw_si : in std_logic; + spw_do : out std_logic; + spw_so : out std_logic; + -- spwerr user interface + err_inj_i : in std_logic; + err_sel_i : in t_spw_err_sel; + err_stat_o : out t_spw_err_stat + ); + end component spwstream; + + -- Link Level Interface + component spwlink is + generic( + reset_time : integer -- reset time in clocks (6.4 us) + ); + port( + clk : in std_logic; -- system clock + rst : in std_logic; -- synchronous reset (active-high) + linki : in spw_link_in_type; + linko : out spw_link_out_type; + rxen : out std_logic; + recvo : in spw_recv_out_type; + xmiti : out spw_xmit_in_type; + xmito : in spw_xmit_out_type + ); + end component spwlink; + + -- Receiver + component spwrecv is + generic( + disconnect_time : integer range 1 to 255; -- disconnect period in system clock cycles + rxchunk : integer range 1 to 4 -- nr of bits per system clock + ); + port( + clk : in std_logic; -- system clock + rxen : in std_logic; -- receiver enabled + recvo : out spw_recv_out_type; + inact : in std_logic; + inbvalid : in std_logic; + inbits : in std_logic_vector(rxchunk - 1 downto 0); + invalid_transition : in std_logic -- high if invalid transition detected + ); + end component spwrecv; + + -- Transmitter (generic implementation) + component spwxmit is + port( + clk : in std_logic; -- system clock + rst : in std_logic; -- synchronous reset (active-high) + divcnt : in std_logic_vector(7 downto 0); + xmiti : in spw_xmit_in_type; + xmito : out spw_xmit_out_type; + spw_do : out std_logic; -- tx data to SPW bus + spw_so : out std_logic -- tx strobe to SPW bus + ); + end component spwxmit; + + -- Transmitter (separate tx clock domain) + component spwxmit_fast is + port( + clk : in std_logic; -- system clock + txclk : in std_logic; -- transmit clock + rst : in std_logic; -- synchronous reset (active-high) + divcnt : in std_logic_vector(7 downto 0); + xmiti : in spw_xmit_in_type; + xmito : out spw_xmit_out_type; + spw_do : out std_logic; -- tx data to SPW bus + spw_so : out std_logic -- tx strobe to SPW bus + ); + end component spwxmit_fast; + + -- Front-end for SpaceWire Receiver (generic implementation) + component spwrecvfront_generic is + port( + clk : in std_logic; -- system clock + rxen : in std_logic; -- high to enable receiver + inact : out std_logic; -- high if activity on input + inbvalid : out std_logic; -- high if inbits contains a valid received bit + inbits : out std_logic_vector(0 downto 0); -- received bit + invalid_transition : out std_logic; -- high if invalid transition detected + spw_di : in std_logic; -- Data In signal from SpaceWire bus + spw_si : in std_logic -- Strobe In signal from SpaceWire bus + ); + end component spwrecvfront_generic; + + -- Front-end for SpaceWire Receiver (separate rx clock domain) + component spwrecvfront_fast is + generic( + rxchunk : integer range 1 to 4 -- max number of bits per system clock + ); + port( + clk : in std_logic; -- system clock + rxclk : in std_logic; -- sample clock (DDR) + rxen : in std_logic; -- high to enable receiver + inact : out std_logic; -- high if activity on input + inbvalid : out std_logic; -- high if inbits contains a valid group of received bits + inbits : out std_logic_vector(rxchunk - 1 downto 0); -- received bits + spw_di : in std_logic; -- Data In signal from SpaceWire bus + spw_si : in std_logic -- Strobe In signal from SpaceWire bus + ); + end component spwrecvfront_fast; + + -- Synchronous two-port memory. + component spwram is + generic( + abits : integer; + dbits : integer); + port( + rclk : in std_logic; + wclk : in std_logic; + ren : in std_logic; + raddr : in std_logic_vector(abits - 1 downto 0); + rdata : out std_logic_vector(dbits - 1 downto 0); + wen : in std_logic; + waddr : in std_logic_vector(abits - 1 downto 0); + wdata : in std_logic_vector(dbits - 1 downto 0)); + end component spwram; + + -- Double flip-flop synchronizer. + component syncdff is + port( + clk : in std_logic; -- clock (destination domain) + rst : in std_logic; -- asynchronous reset, active-high + di : in std_logic; -- input data + do : out std_logic); -- output data + end component syncdff; + + -- Spwerr Interface + component spwerr is + port( + clk : in std_logic; -- system clock + rst : in std_logic; -- asynchronous reset (active-high) + err_link_i : in spwerr_from_link_type; + err_link_o : out spwerr_to_link_type; + err_usr_i : in spwerr_from_usr_type; + err_usr_o : out spwerr_to_usr_type + ); + end component spwerr; end package; diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd index cee9e8df..06e1578d 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd @@ -9,33 +9,32 @@ use ieee.numeric_std.all; entity spwram is - generic ( - abits: integer; - dbits: integer ); - - port ( - rclk: in std_logic; - wclk: in std_logic; - ren: in std_logic; - raddr: in std_logic_vector(abits-1 downto 0); - rdata: out std_logic_vector(dbits-1 downto 0); - wen: in std_logic; - waddr: in std_logic_vector(abits-1 downto 0); - wdata: in std_logic_vector(dbits-1 downto 0) ); + generic( + abits : integer; + dbits : integer); + + port( + rclk : in std_logic; + wclk : in std_logic; + ren : in std_logic; + raddr : in std_logic_vector(abits - 1 downto 0); + rdata : out std_logic_vector(dbits - 1 downto 0); + wen : in std_logic; + waddr : in std_logic_vector(abits - 1 downto 0); + wdata : in std_logic_vector(dbits - 1 downto 0)); end entity spwram; architecture spwram_arch of spwram is - type mem_type is array(0 to (2**abits - 1)) of - std_logic_vector(dbits-1 downto 0); + type mem_type is array (0 to (2**abits - 1)) of std_logic_vector(dbits - 1 downto 0); - signal s_mem: mem_type; + signal s_mem : mem_type; begin -- read process - process (rclk) is + process(rclk) is begin if rising_edge(rclk) then if ren = '1' then @@ -45,7 +44,7 @@ begin end process; -- write process - process (wclk) is + process(wclk) is begin if rising_edge(wclk) then if wen = '1' then diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd index 98c7a291..c5d58c45 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd @@ -15,33 +15,29 @@ use work.spwpkg.all; entity spwrecv is - generic ( + generic( -- Disconnect timeout, expressed in system clock cycles. -- Should be 850 ns (727 ns .. 1000 ns) according to the standard. - disconnect_time: integer range 1 to 255; - + disconnect_time : integer range 1 to 255; -- Nr of bits sampled per system clock. - rxchunk: integer range 1 to 4 + rxchunk : integer range 1 to 4 ); - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- High to enable receiver; low to disable and reset receiver. - rxen: in std_logic; - + rxen : in std_logic; -- Output signals to spwlink. - recvo: out spw_recv_out_type; - + recvo : out spw_recv_out_type; -- High if there has been recent activity on the input lines. - inact: in std_logic; - + inact : in std_logic; -- High if inbits contains a valid group of received bits. - inbvalid: in std_logic; - + inbvalid : in std_logic; -- Received bits from receiver front-end. - inbits: in std_logic_vector(rxchunk-1 downto 0) + inbits : in std_logic_vector(rxchunk - 1 downto 0); + -- High if invalid transition detected + invalid_transition : in std_logic ); end entity spwrecv; @@ -51,151 +47,151 @@ architecture spwrecv_arch of spwrecv is -- registers type regs_type is record -- receiver state - bit_seen: std_ulogic; -- got a bit transition - null_seen: std_ulogic; -- got a NULL token + bit_seen : std_ulogic; -- got a bit transition + null_seen : std_ulogic; -- got a NULL token -- input shift register - bitshift: std_logic_vector(8 downto 0); - bitcnt: std_logic_vector(9 downto 0); -- one-hot counter + bitshift : std_logic_vector(8 downto 0); + bitcnt : std_logic_vector(9 downto 0); -- one-hot counter -- parity flag - parity: std_ulogic; + parity : std_ulogic; -- decoding - control: std_ulogic; -- next code is control code - escaped: std_ulogic; -- last code was ESC + control : std_ulogic; -- next code is control code + escaped : std_ulogic; -- last code was ESC -- output registers - gotfct: std_ulogic; - tick_out: std_ulogic; - rxchar: std_ulogic; - rxflag: std_ulogic; - timereg: std_logic_vector(7 downto 0); - datareg: std_logic_vector(7 downto 0); + gotfct : std_ulogic; + tick_out : std_ulogic; + rxchar : std_ulogic; + rxflag : std_ulogic; + timereg : std_logic_vector(7 downto 0); + datareg : std_logic_vector(7 downto 0); -- disconnect timer - disccnt: unsigned(7 downto 0); + disccnt : unsigned(7 downto 0); -- error flags - errpar: std_ulogic; - erresc: std_ulogic; + errpar : std_ulogic; + erresc : std_ulogic; end record; -- Initial state - constant regs_reset: regs_type := ( - bit_seen => '0', - null_seen => '0', - bitshift => (others => '1'), - bitcnt => (others => '0'), - parity => '0', - control => '0', - escaped => '0', - gotfct => '0', - tick_out => '0', - rxchar => '0', - rxflag => '0', - timereg => (others => '0'), - datareg => (others => '0'), - disccnt => "00000000", - errpar => '0', - erresc => '0' ); + constant regs_reset : regs_type := ( + bit_seen => '0', + null_seen => '0', + bitshift => (others => '1'), + bitcnt => (others => '0'), + parity => '0', + control => '0', + escaped => '0', + gotfct => '0', + tick_out => '0', + rxchar => '0', + rxflag => '0', + timereg => (others => '0'), + datareg => (others => '0'), + disccnt => "00000000", + errpar => '0', + erresc => '0'); -- registers - signal r: regs_type := regs_reset; - signal rin: regs_type; + signal r : regs_type := regs_reset; + signal rin : regs_type; begin -- combinatorial process - process (r, rxen, inact, inbvalid, inbits) - variable v: regs_type; - variable v_inbit: std_ulogic; + process(r, rxen, inact, inbvalid, inbits, invalid_transition) + variable v : regs_type; + variable v_inbit : std_ulogic; begin - v := r; - v_inbit := '0'; + v := r; + v_inbit := '0'; -- disconnect timer if inact = '1' then -- activity on input; reset timer - v.disccnt := to_unsigned(disconnect_time, v.disccnt'length); + v.disccnt := to_unsigned(disconnect_time, v.disccnt'length); elsif r.disccnt /= 0 then -- count down - v.disccnt := r.disccnt - 1; + v.disccnt := r.disccnt - 1; end if; -- assume no new token - v.gotfct := '0'; - v.tick_out := '0'; - v.rxchar := '0'; + v.gotfct := '0'; + v.tick_out := '0'; + v.rxchar := '0'; if inbvalid = '1' then -- process incoming bits - for i in 0 to rxchunk-1 loop - v_inbit := inbits(i); + for i in 0 to rxchunk - 1 loop + v_inbit := inbits(i); -- got a bit transition - v.bit_seen := '1'; + v.bit_seen := '1'; if v.bitcnt(0) = '1' then -- received new token -- note that this will not happen before null_seen='1' if (v.parity xor v_inbit) = '0' then -- Parity check failed. - v.errpar := '1'; + v.errpar := '1'; else if v.control = '1' then -- received control code case v.bitshift(7 downto 6) is when "00" => -- FCT or NULL - v.gotfct := not r.escaped; - v.escaped := '0'; + v.gotfct := not r.escaped; + v.escaped := '0'; when "10" => -- EOP if r.escaped = '1' then - v.erresc := '1'; + v.erresc := '1'; end if; - v.escaped := '0'; - v.rxchar := not r.escaped; - v.rxflag := '1'; - v.datareg := "00000000"; + v.escaped := '0'; + v.rxchar := not r.escaped; + v.rxflag := '1'; + v.datareg := "00000000"; when "01" => -- EEP if r.escaped = '1' then - v.erresc := '1'; + v.erresc := '1'; end if; - v.escaped := '0'; - v.rxchar := not r.escaped; - v.rxflag := '1'; - v.datareg := "00000001"; + v.escaped := '0'; + v.rxchar := not r.escaped; + v.rxflag := '1'; + v.datareg := "00000001"; when others => -- ESC if r.escaped = '1' then - v.erresc := '1'; + v.erresc := '1'; end if; - v.escaped := '1'; + v.escaped := '1'; end case; else -- received 8-bit character if r.escaped = '1' then -- received Time-Code - v.tick_out := '1'; - v.timereg := v.bitshift(7 downto 0); + v.tick_out := '1'; + v.timereg := v.bitshift(7 downto 0); else -- received data character - v.rxflag := '0'; - v.rxchar := '1'; - v.datareg := v.bitshift(7 downto 0); + v.rxflag := '0'; + v.rxchar := '1'; + v.datareg := v.bitshift(7 downto 0); end if; - v.escaped := '0'; + v.escaped := '0'; end if; end if; -- prepare for next code - v.parity := '0'; - v.control := v_inbit; + v.parity := '0'; + v.control := v_inbit; if v_inbit = '1' then -- next word will be control code. - v.bitcnt := (3 => '1', others => '0'); + v.bitcnt := (3 => '1', others => '0'); else -- next word will be a data byte. - v.bitcnt := (9 => '1', others => '0'); + v.bitcnt := (9 => '1', others => '0'); end if; else -- wait until next code is completely received; -- accumulate parity - v.bitcnt := '0' & v.bitcnt(9 downto 1); - v.parity := v.parity xor v_inbit; + v.bitcnt := '0' & v.bitcnt(9 downto 1); + v.parity := v.parity xor v_inbit; end if; -- detect first NULL @@ -210,11 +206,15 @@ begin end if; -- shift new bit into register. - v.bitshift := v_inbit & v.bitshift(v.bitshift'high downto 1); + v.bitshift := v_inbit & v.bitshift(v.bitshift'high downto 1); end loop; end if; + if invalid_transition = '1' then + v.bitshift := (others => '1'); + end if; + -- synchronous reset if rxen = '0' then v.bit_seen := '0'; @@ -234,30 +234,30 @@ begin end if; -- drive outputs - recvo.gotbit <= r.bit_seen; - recvo.gotnull <= r.null_seen; - recvo.gotfct <= r.gotfct; - recvo.tick_out <= r.tick_out; - recvo.ctrl_out <= r.timereg(7 downto 6); - recvo.time_out <= r.timereg(5 downto 0); - recvo.rxchar <= r.rxchar; - recvo.rxflag <= r.rxflag; - recvo.rxdata <= r.datareg; + recvo.gotbit <= r.bit_seen; + recvo.gotnull <= r.null_seen; + recvo.gotfct <= r.gotfct; + recvo.tick_out <= r.tick_out; + recvo.ctrl_out <= r.timereg(7 downto 6); + recvo.time_out <= r.timereg(5 downto 0); + recvo.rxchar <= r.rxchar; + recvo.rxflag <= r.rxflag; + recvo.rxdata <= r.datareg; if r.bit_seen = '1' and r.disccnt = 0 then - recvo.errdisc <= '1'; + recvo.errdisc <= '1'; else - recvo.errdisc <= '0'; + recvo.errdisc <= '0'; end if; - recvo.errpar <= r.errpar; - recvo.erresc <= r.erresc; + recvo.errpar <= r.errpar; + recvo.erresc <= r.erresc; -- update registers - rin <= v; + rin <= v; end process; -- update registers on rising edge of system clock - process (clk) is + process(clk) is begin if rising_edge(clk) then r <= rin; diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd index 4ce08446..ae33ce4c 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd @@ -69,41 +69,34 @@ use work.spwpkg.all; entity spwrecvfront_fast is - generic ( + generic( -- Number of bits to pass to the application per system clock. - rxchunk: integer range 1 to 4 ); + rxchunk : integer range 1 to 4); - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- Sample clock. - rxclk: in std_logic; - + rxclk : in std_logic; -- High to enable receiver; low to disable and reset receiver. - rxen: in std_logic; - + rxen : in std_logic; -- High if there has been recent activity on the input lines. - inact: out std_logic; - + inact : out std_logic; -- High if inbits contains a valid group of received bits. -- If inbvalid='1', the application must sample inbits on -- the rising edge of clk. - inbvalid: out std_logic; - + inbvalid : out std_logic; -- Received bits (bit 0 is the earliest received bit). - inbits: out std_logic_vector(rxchunk-1 downto 0); - + inbits : out std_logic_vector(rxchunk - 1 downto 0); -- Data In signal from SpaceWire bus. - spw_di: in std_logic; - + spw_di : in std_logic; -- Strobe In signal from SpaceWire bus. - spw_si: in std_logic ); + spw_si : in std_logic); -- Turn off FSM extraction. -- Without this, XST will happily apply one-hot encoding to rrx.headptr. - attribute FSM_EXTRACT: string; - attribute FSM_EXTRACT of spwrecvfront_fast: entity is "NO"; + attribute FSM_EXTRACT : string; + attribute FSM_EXTRACT of spwrecvfront_fast : entity is "NO"; end entity spwrecvfront_fast; @@ -111,162 +104,162 @@ architecture spwrecvfront_arch of spwrecvfront_fast is -- width of bit groups in cyclic buffer; -- typically equal to rxchunk, except when rxchunk = 1 - type memwidth_array_type is array(1 to 4) of integer; - constant chunk_to_memwidth: memwidth_array_type := ( 2, 2, 3, 4 ); - constant memwidth: integer := chunk_to_memwidth(rxchunk); + type memwidth_array_type is array (1 to 4) of integer; + constant chunk_to_memwidth : memwidth_array_type := (2, 2, 3, 4); + constant memwidth : integer := chunk_to_memwidth(rxchunk); -- registers in rxclk domain type rxregs_type is record -- stage B: re-register input samples - b_di0: std_ulogic; - b_si0: std_ulogic; - b_di1: std_ulogic; - b_si1: std_ulogic; + b_di0 : std_ulogic; + b_si0 : std_ulogic; + b_di1 : std_ulogic; + b_si1 : std_ulogic; -- stage C: data/strobe decoding - c_bit: std_logic_vector(1 downto 0); - c_val: std_logic_vector(1 downto 0); - c_xor1: std_ulogic; + c_bit : std_logic_vector(1 downto 0); + c_val : std_logic_vector(1 downto 0); + c_xor1 : std_ulogic; -- stage D: collect groups of memwidth bits - d_shift: std_logic_vector(memwidth-1 downto 0); - d_count: std_logic_vector(memwidth-1 downto 0); + d_shift : std_logic_vector(memwidth - 1 downto 0); + d_count : std_logic_vector(memwidth - 1 downto 0); -- cyclic buffer access - bufdata: std_logic_vector(memwidth-1 downto 0); - bufwrite: std_ulogic; - headptr: std_logic_vector(2 downto 0); + bufdata : std_logic_vector(memwidth - 1 downto 0); + bufwrite : std_ulogic; + headptr : std_logic_vector(2 downto 0); -- activity detection - bitcnt: std_logic_vector(2 downto 0); + bitcnt : std_logic_vector(2 downto 0); end record; -- registers in system clock domain type regs_type is record -- data path from buffer to output - tailptr: std_logic_vector(2 downto 0); - inbvalid: std_ulogic; + tailptr : std_logic_vector(2 downto 0); + inbvalid : std_ulogic; -- split 2-bit groups if rxchunk=1 - splitbit: std_ulogic; - splitinx: std_ulogic; - splitvalid: std_ulogic; + splitbit : std_ulogic; + splitinx : std_ulogic; + splitvalid : std_ulogic; -- activity detection - bitcntp: std_logic_vector(2 downto 0); - inact: std_ulogic; + bitcntp : std_logic_vector(2 downto 0); + inact : std_ulogic; -- reset signal towards rxclk domain - rxdis: std_ulogic; + rxdis : std_ulogic; end record; - constant regs_reset: regs_type := ( - tailptr => "000", - inbvalid => '0', - splitbit => '0', - splitinx => '0', - splitvalid => '0', - bitcntp => "000", - inact => '0', - rxdis => '1' ); + constant regs_reset : regs_type := ( + tailptr => "000", + inbvalid => '0', + splitbit => '0', + splitinx => '0', + splitvalid => '0', + bitcntp => "000", + inact => '0', + rxdis => '1'); -- Signals that are re-synchronized from rxclk to system clock domain. type syncsys_type is record - headptr: std_logic_vector(2 downto 0); -- pointer in cyclic buffer - bitcnt: std_logic_vector(2 downto 0); -- activity detection + headptr : std_logic_vector(2 downto 0); -- pointer in cyclic buffer + bitcnt : std_logic_vector(2 downto 0); -- activity detection end record; -- Registers. - signal r: regs_type := regs_reset; - signal rin: regs_type; - signal rrx, rrxin: rxregs_type; + signal r : regs_type := regs_reset; + signal rin : regs_type; + signal rrx, rrxin : rxregs_type; -- Synchronized signals after crossing clock domains. - signal syncrx_rstn: std_logic; - signal syncsys: syncsys_type; + signal syncrx_rstn : std_logic; + signal syncsys : syncsys_type; -- Output data from cyclic buffer. - signal s_bufdout: std_logic_vector(memwidth-1 downto 0); + signal s_bufdout : std_logic_vector(memwidth - 1 downto 0); -- stage A: input flip-flops for rising/falling rxclk - signal s_a_di0: std_logic; - signal s_a_si0: std_logic; - signal s_a_di1: std_logic; - signal s_a_si1: std_logic; - signal s_a_di2: std_logic; - signal s_a_si2: std_logic; + signal s_a_di0 : std_logic; + signal s_a_si0 : std_logic; + signal s_a_di1 : std_logic; + signal s_a_si1 : std_logic; + signal s_a_di2 : std_logic; + signal s_a_si2 : std_logic; -- force use of IOB flip-flops - attribute IOB: string; - attribute IOB of s_a_di1: signal is "TRUE"; - attribute IOB of s_a_si1: signal is "TRUE"; - attribute IOB of s_a_di2: signal is "TRUE"; - attribute IOB of s_a_si2: signal is "TRUE"; + attribute IOB : string; + attribute IOB of s_a_di1 : signal is "TRUE"; + attribute IOB of s_a_si1 : signal is "TRUE"; + attribute IOB of s_a_di2 : signal is "TRUE"; + attribute IOB of s_a_si2 : signal is "TRUE"; begin -- Cyclic data buffer. - bufmem: spwram - generic map ( - abits => 3, - dbits => memwidth ) - port map ( - rclk => clk, - wclk => rxclk, - ren => '1', - raddr => r.tailptr, - rdata => s_bufdout, - wen => rrx.bufwrite, - waddr => rrx.headptr, - wdata => rrx.bufdata ); + bufmem : spwram + generic map( + abits => 3, + dbits => memwidth) + port map( + rclk => clk, + wclk => rxclk, + ren => '1', + raddr => r.tailptr, + rdata => s_bufdout, + wen => rrx.bufwrite, + waddr => rrx.headptr, + wdata => rrx.bufdata); -- Synchronize reset signal for rxclk domain. - syncrx_reset: syncdff - port map ( clk => rxclk, rst => r.rxdis, di => '1', do => syncrx_rstn ); + syncrx_reset : syncdff + port map(clk => rxclk, rst => r.rxdis, di => '1', do => syncrx_rstn); -- Synchronize signals from rxclk domain to system clock domain. - syncsys_headptr0: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.headptr(0), do => syncsys.headptr(0) ); - syncsys_headptr1: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.headptr(1), do => syncsys.headptr(1) ); - syncsys_headptr2: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.headptr(2), do => syncsys.headptr(2) ); - syncsys_bitcnt0: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.bitcnt(0), do => syncsys.bitcnt(0) ); - syncsys_bitcnt1: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.bitcnt(1), do => syncsys.bitcnt(1) ); - syncsys_bitcnt2: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.bitcnt(2), do => syncsys.bitcnt(2) ); + syncsys_headptr0 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.headptr(0), do => syncsys.headptr(0)); + syncsys_headptr1 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.headptr(1), do => syncsys.headptr(1)); + syncsys_headptr2 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.headptr(2), do => syncsys.headptr(2)); + syncsys_bitcnt0 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.bitcnt(0), do => syncsys.bitcnt(0)); + syncsys_bitcnt1 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.bitcnt(1), do => syncsys.bitcnt(1)); + syncsys_bitcnt2 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.bitcnt(2), do => syncsys.bitcnt(2)); -- sample inputs on rising edge of rxclk - process (rxclk) is + process(rxclk) is begin if rising_edge(rxclk) then - s_a_di1 <= spw_di; - s_a_si1 <= spw_si; + s_a_di1 <= spw_di; + s_a_si1 <= spw_si; end if; end process; -- sample inputs on falling edge of rxclk - process (rxclk) is + process(rxclk) is begin if falling_edge(rxclk) then - s_a_di2 <= spw_di; - s_a_si2 <= spw_si; + s_a_di2 <= spw_di; + s_a_si2 <= spw_si; -- reregister inputs in fabric flip-flops - s_a_di0 <= s_a_di2; - s_a_si0 <= s_a_si2; + s_a_di0 <= s_a_di2; + s_a_si0 <= s_a_si2; end if; end process; -- combinatorial process - process (r, rrx, rxen, syncrx_rstn, syncsys, s_bufdout, s_a_di0, s_a_si0, s_a_di1, s_a_si1) - variable v: regs_type; - variable vrx: rxregs_type; + process(r, rrx, rxen, syncrx_rstn, syncsys, s_bufdout, s_a_di0, s_a_si0, s_a_di1, s_a_si1) + variable v : regs_type; + variable vrx : rxregs_type; begin - v := r; - vrx := rrx; + v := r; + vrx := rrx; -- ---- SAMPLE CLOCK DOMAIN ---- -- stage B: re-register input samples - vrx.b_di0 := s_a_di0; - vrx.b_si0 := s_a_si0; - vrx.b_di1 := s_a_di1; - vrx.b_si1 := s_a_si1; + vrx.b_di0 := s_a_di0; + vrx.b_si0 := s_a_si0; + vrx.b_di1 := s_a_di1; + vrx.b_si1 := s_a_si1; -- stage C: decode data/strobe and detect valid bits if (rrx.b_di0 xor rrx.b_si0 xor rrx.c_xor1) = '1' then @@ -275,10 +268,8 @@ begin vrx.c_bit(0) := rrx.b_di1; end if; vrx.c_bit(1) := rrx.b_di1; - vrx.c_val(0) := (rrx.b_di0 xor rrx.b_si0 xor rrx.c_xor1) or - (rrx.b_di0 xor rrx.b_si0 xor rrx.b_di1 xor rrx.b_si1); - vrx.c_val(1) := (rrx.b_di0 xor rrx.b_si0 xor rrx.c_xor1) and - (rrx.b_di0 xor rrx.b_si0 xor rrx.b_di1 xor rrx.b_si1); + vrx.c_val(0) := (rrx.b_di0 xor rrx.b_si0 xor rrx.c_xor1) or (rrx.b_di0 xor rrx.b_si0 xor rrx.b_di1 xor rrx.b_si1); + vrx.c_val(1) := (rrx.b_di0 xor rrx.b_si0 xor rrx.c_xor1) and (rrx.b_di0 xor rrx.b_si0 xor rrx.b_di1 xor rrx.b_si1); vrx.c_xor1 := rrx.b_di1 xor rrx.b_si1; -- Note: @@ -291,24 +282,24 @@ begin -- shift incoming bits into register if rrx.c_val(1) = '1' then - vrx.d_shift := rrx.c_bit & rrx.d_shift(memwidth-1 downto 2); + vrx.d_shift := rrx.c_bit & rrx.d_shift(memwidth - 1 downto 2); else - vrx.d_shift := rrx.c_bit(0) & rrx.d_shift(memwidth-1 downto 1); + vrx.d_shift := rrx.c_bit(0) & rrx.d_shift(memwidth - 1 downto 1); end if; -- prepare to store a group of memwidth bits if rrx.d_count(0) = '1' then -- only one more bit needed - vrx.bufdata := rrx.c_bit(0) & rrx.d_shift(memwidth-1 downto 1); + vrx.bufdata := rrx.c_bit(0) & rrx.d_shift(memwidth - 1 downto 1); else - vrx.bufdata := rrx.c_bit & rrx.d_shift(memwidth-1 downto 2); + vrx.bufdata := rrx.c_bit & rrx.d_shift(memwidth - 1 downto 2); end if; -- countdown nr of needed bits (one-hot counter) if rrx.c_val(1) = '1' then - vrx.d_count := rrx.d_count(1 downto 0) & rrx.d_count(memwidth-1 downto 2); + vrx.d_count := rrx.d_count(1 downto 0) & rrx.d_count(memwidth - 1 downto 2); else - vrx.d_count := rrx.d_count(0 downto 0) & rrx.d_count(memwidth-1 downto 1); + vrx.d_count := rrx.d_count(0 downto 0) & rrx.d_count(memwidth - 1 downto 1); end if; end if; @@ -323,18 +314,18 @@ begin -- Activity detection. if rrx.c_val(0) = '1' then - vrx.bitcnt := std_logic_vector(unsigned(rrx.bitcnt) + 1); + vrx.bitcnt := std_logic_vector(unsigned(rrx.bitcnt) + 1); end if; -- Synchronous reset of rxclk domain. if syncrx_rstn = '0' then - vrx.c_val := "00"; - vrx.c_xor1 := '0'; - vrx.d_count := (others => '0'); - vrx.d_count(memwidth-1) := '1'; - vrx.bufwrite := '0'; - vrx.headptr := "000"; - vrx.bitcnt := "000"; + vrx.c_val := "00"; + vrx.c_xor1 := '0'; + vrx.d_count := (others => '0'); + vrx.d_count(memwidth - 1) := '1'; + vrx.bufwrite := '0'; + vrx.headptr := "000"; + vrx.bitcnt := "000"; end if; -- ---- SYSTEM CLOCK DOMAIN ---- @@ -344,13 +335,13 @@ begin -- not yet been written by the rxclk domain. if r.tailptr = syncsys.headptr then -- No more data in cyclic buffer. - v.inbvalid := '0'; + v.inbvalid := '0'; else -- Reading valid data from cyclic buffer. - v.inbvalid := '1'; + v.inbvalid := '1'; -- Increment tail pointer. if rxchunk /= 1 then - v.tailptr := std_logic_vector(unsigned(r.tailptr) + 1); + v.tailptr := std_logic_vector(unsigned(r.tailptr) + 1); end if; end if; @@ -358,55 +349,55 @@ begin if rxchunk = 1 then -- Select one of the two bits. if r.splitinx = '0' then - v.splitbit := s_bufdout(0); + v.splitbit := s_bufdout(0); else - v.splitbit := s_bufdout(1); + v.splitbit := s_bufdout(1); end if; -- Indicate valid bit. v.splitvalid := r.inbvalid; -- Increment tail pointer. if r.inbvalid = '1' then - v.splitinx := not r.splitinx; + v.splitinx := not r.splitinx; if r.splitinx = '0' then - v.tailptr := std_logic_vector(unsigned(r.tailptr) + 1); + v.tailptr := std_logic_vector(unsigned(r.tailptr) + 1); end if; end if; end if; -- Activity detection. - v.bitcntp := syncsys.bitcnt; + v.bitcntp := syncsys.bitcnt; if r.bitcntp = syncsys.bitcnt then - v.inact := '0'; + v.inact := '0'; else - v.inact := '1'; + v.inact := '1'; end if; -- Synchronous reset of system clock domain. if rxen = '0' then - v := regs_reset; + v := regs_reset; end if; -- Register rxen to ensure glitch-free signal to rxclk domain - v.rxdis := not rxen; + v.rxdis := not rxen; -- drive outputs - inact <= r.inact; + inact <= r.inact; if rxchunk = 1 then - inbvalid <= r.splitvalid; - inbits(0) <= r.splitbit; + inbvalid <= r.splitvalid; + inbits(0) <= r.splitbit; else - inbvalid <= r.inbvalid; - inbits <= s_bufdout; + inbvalid <= r.inbvalid; + inbits <= s_bufdout; end if; -- update registers - rrxin <= vrx; - rin <= v; + rrxin <= vrx; + rin <= v; end process; -- update registers on rising edge of rxclk - process (rxclk) is + process(rxclk) is begin if rising_edge(rxclk) then rrx <= rrxin; @@ -414,7 +405,7 @@ begin end process; -- update registers on rising edge of system clock - process (clk) is + process(clk) is begin if rising_edge(clk) then r <= rin; diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd index 2104f234..b318c4cb 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd @@ -15,79 +15,81 @@ use ieee.numeric_std.all; entity spwrecvfront_generic is - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- High to enable receiver; low to disable and reset receiver. - rxen: in std_logic; - + rxen : in std_logic; -- High if there has been recent activity on the input lines. - inact: out std_logic; - + inact : out std_logic; -- High if inbits contains a valid received bit. -- If inbvalid='1', the application must sample inbits on -- the rising edge of clk. - inbvalid: out std_logic; - + inbvalid : out std_logic; -- Received bit - inbits: out std_logic_vector(0 downto 0); - + inbits : out std_logic_vector(0 downto 0); + -- High if invalid transition detected + invalid_transition : out std_logic; -- Data In signal from SpaceWire bus. - spw_di: in std_logic; - + spw_di : in std_logic; -- Strobe In signal from SpaceWire bus. - spw_si: in std_logic ); + spw_si : in std_logic); end entity spwrecvfront_generic; architecture spwrecvfront_arch of spwrecvfront_generic is -- input flip-flops - signal s_spwdi1: std_ulogic; - signal s_spwsi1: std_ulogic; - signal s_spwdi2: std_ulogic; - signal s_spwsi2: std_ulogic; + signal s_spwdi1 : std_ulogic; + signal s_spwsi1 : std_ulogic; + signal s_spwdi2 : std_ulogic; + signal s_spwsi2 : std_ulogic; -- data/strobe decoding - signal s_spwsi3: std_ulogic; + signal s_spwsi3 : std_ulogic; -- output registers - signal s_inbvalid: std_ulogic; - signal s_inbit: std_ulogic; + signal s_inbvalid : std_ulogic; + signal s_inbit : std_ulogic; + + -- invalid transition detection + signal s_invalid_transition : std_ulogic; begin -- drive outputs - inact <= s_inbvalid; - inbvalid <= s_inbvalid; - inbits(0) <= s_inbit; + inact <= s_inbvalid; + inbvalid <= s_inbvalid; + inbits(0) <= s_inbit; + invalid_transition <= s_invalid_transition; -- synchronous process - process (clk) is + process(clk) is begin if rising_edge(clk) then -- sample input signal - s_spwdi1 <= spw_di; - s_spwsi1 <= spw_si; + s_spwdi1 <= spw_di; + s_spwsi1 <= spw_si; -- more flip-flops for safe synchronization - s_spwdi2 <= s_spwdi1; - s_spwsi2 <= s_spwsi1; + s_spwdi2 <= s_spwdi1; + s_spwsi2 <= s_spwsi1; -- keep strobe signal for data/strobe decoding - s_spwsi3 <= s_spwsi2; + s_spwsi3 <= s_spwsi2; -- keep data bit for data/strobe decoding - s_inbit <= s_spwdi2; + s_inbit <= s_spwdi2; if rxen = '1' then -- data/strobe decoding - s_inbvalid <= s_spwdi2 xor s_spwsi2 xor s_inbit xor s_spwsi3; + s_inbvalid <= s_spwdi2 xor s_spwsi2 xor s_inbit xor s_spwsi3; + s_invalid_transition <= (s_spwdi2 xor s_inbit) and (s_spwsi2 xor s_spwsi3); else -- reset receiver - s_inbvalid <= '0'; + s_inbvalid <= '0'; + s_invalid_transition <= '0'; end if; end if; diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd index fd8ccade..28fd1839 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd @@ -22,175 +22,132 @@ use work.spwpkg.all; entity spwstream is - generic ( + generic( -- System clock frequency in Hz. -- This must be set to the frequency of "clk". It is used to setup -- counters for reset timing, disconnect timeout and to transmit -- at 10 Mbit/s during the link handshake. - sysfreq: real; - + sysfreq : real; -- Transmit clock frequency in Hz (only if tximpl = impl_fast). -- This must be set to the frequency of "txclk". It is used to -- transmit at 10 Mbit/s during the link handshake. - txclkfreq: real := 0.0; - + txclkfreq : real := 0.0; -- Selection of a receiver front-end implementation. - rximpl: spw_implementation_type := impl_generic; - + rximpl : spw_implementation_type := impl_generic; -- Maximum number of bits received per system clock -- (must be 1 in case of impl_generic). - rxchunk: integer range 1 to 4 := 1; - + rxchunk : integer range 1 to 4 := 1; -- Selection of a transmitter implementation. - tximpl: spw_implementation_type := impl_generic; - + tximpl : spw_implementation_type := impl_generic; -- Size of the receive FIFO as the 2-logarithm of the number of bytes. -- Must be at least 6 (64 bytes). - rxfifosize_bits: integer range 6 to 14 := 11; - + rxfifosize_bits : integer range 6 to 14 := 11; -- Size of the transmit FIFO as the 2-logarithm of the number of bytes. - txfifosize_bits: integer range 2 to 14 := 11 + txfifosize_bits : integer range 2 to 14 := 11 ); - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- Receiver sample clock (only for impl_fast) - rxclk: in std_logic; - + rxclk : in std_logic; -- Transmit clock (only for impl_fast) - txclk: in std_logic; - + txclk : in std_logic; -- Synchronous reset (active-high). - rst: in std_logic; - + rst : in std_logic; -- Enables automatic link start on receipt of a NULL character. - autostart: in std_logic; - + autostart : in std_logic; -- Enables link start once the Ready state is reached. -- Without autostart or linkstart, the link remains in state Ready. - linkstart: in std_logic; - + linkstart : in std_logic; -- Do not start link (overrides linkstart and autostart) and/or -- disconnect a running link. - linkdis: in std_logic; - + linkdis : in std_logic; -- Scaling factor minus 1, used to scale the transmit base clock into -- the transmission bit rate. The system clock (for impl_generic) or -- the txclk (for impl_fast) is divided by (unsigned(txdivcnt) + 1). -- Changing this signal will immediately change the transmission rate. -- During link setup, the transmission rate is always 10 Mbit/s. - txdivcnt: in std_logic_vector(7 downto 0); - + txdivcnt : in std_logic_vector(7 downto 0); -- High for one clock cycle to request transmission of a TimeCode. -- The request is registered inside the entity until it can be processed. - tick_in: in std_logic; - + tick_in : in std_logic; -- Control bits of the TimeCode to be sent. Must be valid while tick_in is high. - ctrl_in: in std_logic_vector(1 downto 0); - + ctrl_in : in std_logic_vector(1 downto 0); -- Counter value of the TimeCode to be sent. Must be valid while tick_in is high. - time_in: in std_logic_vector(5 downto 0); - + time_in : in std_logic_vector(5 downto 0); -- Pulled high by the application to write an N-Char to the transmit -- queue. If "txwrite" and "txrdy" are both high on the rising edge -- of "clk", a character is added to the transmit queue. -- This signal has no effect if "txrdy" is low. - txwrite: in std_logic; - + txwrite : in std_logic; -- Control flag to be sent with the next N_Char. -- Must be valid while txwrite is high. - txflag: in std_logic; - + txflag : in std_logic; -- Byte to be sent, or "00000000" for EOP or "00000001" for EEP. -- Must be valid while txwrite is high. - txdata: in std_logic_vector(7 downto 0); - + txdata : in std_logic_vector(7 downto 0); -- High if the entity is ready to accept an N-Char for transmission. - txrdy: out std_logic; - + txrdy : out std_logic; -- High if the transmission queue is at least half full. - txhalff: out std_logic; - + txhalff : out std_logic; -- High for one clock cycle if a TimeCode was just received. - tick_out: out std_logic; - + tick_out : out std_logic; -- Control bits of the last received TimeCode. - ctrl_out: out std_logic_vector(1 downto 0); - + ctrl_out : out std_logic_vector(1 downto 0); -- Counter value of the last received TimeCode. - time_out: out std_logic_vector(5 downto 0); - + time_out : out std_logic_vector(5 downto 0); -- High if "rxflag" and "rxdata" contain valid data. -- This signal is high unless the receive FIFO is empty. - rxvalid: out std_logic; - + rxvalid : out std_logic; -- High if the receive FIFO is at least half full. - rxhalff: out std_logic; - + rxhalff : out std_logic; -- High if the received character is EOP or EEP; low if the received -- character is a data byte. Valid if "rxvalid" is high. - rxflag: out std_logic; - + rxflag : out std_logic; -- Received byte, or "00000000" for EOP or "00000001" for EEP. -- Valid if "rxvalid" is high. - rxdata: out std_logic_vector(7 downto 0); - + rxdata : out std_logic_vector(7 downto 0); -- Pulled high by the application to accept a received character. -- If "rxvalid" and "rxread" are both high on the rising edge of "clk", -- a character is removed from the receive FIFO and "rxvalid", "rxflag" -- and "rxdata" are updated. -- This signal has no effect if "rxvalid" is low. - rxread: in std_logic; - + rxread : in std_logic; -- High if the link state machine is currently in the Started state. - started: out std_logic; - + started : out std_logic; -- High if the link state machine is currently in the Connecting state. - connecting: out std_logic; - + connecting : out std_logic; -- High if the link state machine is currently in the Run state, indicating -- that the link is fully operational. If none of started, connecting or running -- is high, the link is in an initial state and the transmitter is not yet enabled. - running: out std_logic; - + running : out std_logic; -- Disconnect detected in state Run. Triggers a reset and reconnect of the link. -- This indication is auto-clearing. - errdisc: out std_logic; - + errdisc : out std_logic; -- Parity error detected in state Run. Triggers a reset and reconnect of the link. -- This indication is auto-clearing. - errpar: out std_logic; - + errpar : out std_logic; -- Invalid escape sequence detected in state Run. Triggers a reset and reconnect of -- the link. This indication is auto-clearing. - erresc: out std_logic; - + erresc : out std_logic; -- Credit error detected. Triggers a reset and reconnect of the link. -- This indication is auto-clearing. - errcred: out std_logic; - + errcred : out std_logic; -- Data In signal from SpaceWire bus. - spw_di: in std_logic; - + spw_di : in std_logic; -- Strobe In signal from SpaceWire bus. - spw_si: in std_logic; - + spw_si : in std_logic; -- Data Out signal to SpaceWire bus. - spw_do: out std_logic; - + spw_do : out std_logic; -- Strobe Out signal to SpaceWire bus. - spw_so: out std_logic; - + spw_so : out std_logic; -- Error injection main input request (active high) - err_inj_i: in std_logic; - + err_inj_i : in std_logic; -- Error injection - error type selection - err_sel_i: in t_spw_err_sel; - + err_sel_i : in t_spw_err_sel; -- Error injection - status - err_stat_o: out t_spw_err_stat + err_stat_o : out t_spw_err_stat ); end entity spwstream; @@ -198,206 +155,206 @@ end entity spwstream; architecture spwstream_arch of spwstream is -- Convert boolean to std_logic. - type bool_to_logic_type is array(boolean) of std_ulogic; - constant bool_to_logic: bool_to_logic_type := (false => '0', true => '1'); + type bool_to_logic_type is array (boolean) of std_ulogic; + constant bool_to_logic : bool_to_logic_type := (false => '0', true => '1'); -- Reset time (6.4 us) in system clocks - constant reset_time: integer := integer(sysfreq * 6.4e-6); + constant reset_time : integer := integer(sysfreq * 6.4e-6); -- Disconnect time (850 ns) in system clocks - constant disconnect_time: integer := integer(sysfreq * 850.0e-9); + constant disconnect_time : integer := integer(sysfreq * 850.0e-9); -- Initial tx clock scaler (10 Mbit). - type impl_to_real_type is array(spw_implementation_type) of real; - constant tximpl_to_txclk_freq: impl_to_real_type := - (impl_generic => sysfreq, impl_fast => txclkfreq); - constant effective_txclk_freq: real := tximpl_to_txclk_freq(tximpl); - constant default_divcnt: std_logic_vector(7 downto 0) := - std_logic_vector(to_unsigned(integer(effective_txclk_freq / 10.0e6 - 1.0), 8)); + type impl_to_real_type is array (spw_implementation_type) of real; + constant tximpl_to_txclk_freq : impl_to_real_type := (impl_generic => sysfreq, impl_fast => txclkfreq); + constant effective_txclk_freq : real := tximpl_to_txclk_freq(tximpl); + constant default_divcnt : std_logic_vector(7 downto 0) := std_logic_vector(to_unsigned(integer(effective_txclk_freq / 10.0e6 - 1.0), 8)); -- Registers. type regs_type is record -- packet state - rxpacket: std_logic; -- '1' when receiving a packet - rxeep: std_logic; -- '1' when rx EEP character pending - txpacket: std_logic; -- '1' when transmitting a packet - txdiscard: std_logic; -- '1' when discarding a tx packet + rxpacket : std_logic; -- '1' when receiving a packet + rxeep : std_logic; -- '1' when rx EEP character pending + txpacket : std_logic; -- '1' when transmitting a packet + txdiscard : std_logic; -- '1' when discarding a tx packet -- FIFO pointers - rxfifo_raddr: std_logic_vector(rxfifosize_bits-1 downto 0); - rxfifo_waddr: std_logic_vector(rxfifosize_bits-1 downto 0); - txfifo_raddr: std_logic_vector(txfifosize_bits-1 downto 0); - txfifo_waddr: std_logic_vector(txfifosize_bits-1 downto 0); + rxfifo_raddr : std_logic_vector(rxfifosize_bits - 1 downto 0); + rxfifo_waddr : std_logic_vector(rxfifosize_bits - 1 downto 0); + txfifo_raddr : std_logic_vector(txfifosize_bits - 1 downto 0); + txfifo_waddr : std_logic_vector(txfifosize_bits - 1 downto 0); -- FIFO state - rxfifo_rvalid: std_logic; -- '1' if s_rxfifo_rdata is valid - txfifo_rvalid: std_logic; -- '1' if s_txfifo_rdata is valid - rxfull: std_logic; -- '1' if RX fifo is full - rxhalff: std_logic; -- '1' if RX fifo is at least half full - txfull: std_logic; -- '1' if TX fifo is full - txhalff: std_logic; -- '1' if TX fifo is at least half full - rxroom: std_logic_vector(5 downto 0); + rxfifo_rvalid : std_logic; -- '1' if s_rxfifo_rdata is valid + txfifo_rvalid : std_logic; -- '1' if s_txfifo_rdata is valid + rxfull : std_logic; -- '1' if RX fifo is full + rxhalff : std_logic; -- '1' if RX fifo is at least half full + txfull : std_logic; -- '1' if TX fifo is full + txhalff : std_logic; -- '1' if TX fifo is at least half full + rxroom : std_logic_vector(5 downto 0); end record; - constant regs_reset: regs_type := ( - rxpacket => '0', - rxeep => '0', - txpacket => '0', - txdiscard => '0', - rxfifo_raddr => (others => '0'), - rxfifo_waddr => (others => '0'), - txfifo_raddr => (others => '0'), - txfifo_waddr => (others => '0'), - rxfifo_rvalid => '0', - txfifo_rvalid => '0', - rxfull => '0', - rxhalff => '0', - txfull => '0', - txhalff => '0', - rxroom => (others => '0') ); - - signal r: regs_type := regs_reset; - signal rin: regs_type; + constant regs_reset : regs_type := ( + rxpacket => '0', + rxeep => '0', + txpacket => '0', + txdiscard => '0', + rxfifo_raddr => (others => '0'), + rxfifo_waddr => (others => '0'), + txfifo_raddr => (others => '0'), + txfifo_waddr => (others => '0'), + rxfifo_rvalid => '0', + txfifo_rvalid => '0', + rxfull => '0', + rxhalff => '0', + txfull => '0', + txhalff => '0', + rxroom => (others => '0')); + + signal r : regs_type := regs_reset; + signal rin : regs_type; -- Interface signals to components. - signal recv_rxen: std_logic; - signal recvo: spw_recv_out_type; - signal recv_inact: std_logic; - signal recv_inbvalid: std_logic; - signal recv_inbits: std_logic_vector(rxchunk-1 downto 0); - signal xmiti: spw_xmit_in_type; - signal xmito: spw_xmit_out_type; - signal xmit_divcnt: std_logic_vector(7 downto 0); - signal linki: spw_link_in_type; - signal linko: spw_link_out_type; + signal recv_rxen : std_logic; + signal recvo : spw_recv_out_type; + signal recv_inact : std_logic; + signal recv_inbvalid : std_logic; + signal recv_inbits : std_logic_vector(rxchunk - 1 downto 0); + signal recv_invalid_transition : std_logic; + signal xmiti : spw_xmit_in_type; + signal xmito : spw_xmit_out_type; + signal xmit_divcnt : std_logic_vector(7 downto 0); + signal linki : spw_link_in_type; + signal linko : spw_link_out_type; -- Memory interface signals. - signal s_rxfifo_raddr: std_logic_vector(rxfifosize_bits-1 downto 0); - signal s_rxfifo_rdata: std_logic_vector(8 downto 0); - signal s_rxfifo_wen: std_logic; - signal s_rxfifo_waddr: std_logic_vector(rxfifosize_bits-1 downto 0); - signal s_rxfifo_wdata: std_logic_vector(8 downto 0); - signal s_txfifo_raddr: std_logic_vector(txfifosize_bits-1 downto 0); - signal s_txfifo_rdata: std_logic_vector(8 downto 0); - signal s_txfifo_wen: std_logic; - signal s_txfifo_waddr: std_logic_vector(txfifosize_bits-1 downto 0); - signal s_txfifo_wdata: std_logic_vector(8 downto 0); + signal s_rxfifo_raddr : std_logic_vector(rxfifosize_bits - 1 downto 0); + signal s_rxfifo_rdata : std_logic_vector(8 downto 0); + signal s_rxfifo_wen : std_logic; + signal s_rxfifo_waddr : std_logic_vector(rxfifosize_bits - 1 downto 0); + signal s_rxfifo_wdata : std_logic_vector(8 downto 0); + signal s_txfifo_raddr : std_logic_vector(txfifosize_bits - 1 downto 0); + signal s_txfifo_rdata : std_logic_vector(8 downto 0); + signal s_txfifo_wen : std_logic; + signal s_txfifo_waddr : std_logic_vector(txfifosize_bits - 1 downto 0); + signal s_txfifo_wdata : std_logic_vector(8 downto 0); begin -- Instantiate link controller. - link_inst: spwlink - generic map ( - reset_time => reset_time ) - port map ( - clk => clk, - rst => rst, - linki => linki, - linko => linko, - rxen => recv_rxen, - recvo => recvo, - xmiti => xmiti, - xmito => xmito ); + link_inst : spwlink + generic map( + reset_time => reset_time) + port map( + clk => clk, + rst => rst, + linki => linki, + linko => linko, + rxen => recv_rxen, + recvo => recvo, + xmiti => xmiti, + xmito => xmito); -- Instantiate receiver. - recv_inst: spwrecv + recv_inst : spwrecv generic map( disconnect_time => disconnect_time, - rxchunk => rxchunk ) - port map ( - clk => clk, - rxen => recv_rxen, - recvo => recvo, - inact => recv_inact, - inbvalid => recv_inbvalid, - inbits => recv_inbits ); + rxchunk => rxchunk) + port map( + clk => clk, + rxen => recv_rxen, + recvo => recvo, + inact => recv_inact, + inbvalid => recv_inbvalid, + inbits => recv_inbits, + invalid_transition => recv_invalid_transition); -- Instantiate transmitter. - xmit_sel0: if tximpl = impl_generic generate - xmit_inst: spwxmit - port map ( - clk => clk, - rst => rst, - divcnt => xmit_divcnt, - xmiti => xmiti, - xmito => xmito, - spw_do => spw_do, - spw_so => spw_so ); + xmit_sel0 : if tximpl = impl_generic generate + xmit_inst : spwxmit + port map( + clk => clk, + rst => rst, + divcnt => xmit_divcnt, + xmiti => xmiti, + xmito => xmito, + spw_do => spw_do, + spw_so => spw_so); end generate; - xmit_sel1: if tximpl = impl_fast generate - xmit_fast_inst: spwxmit_fast - port map ( - clk => clk, - txclk => txclk, - rst => rst, - divcnt => xmit_divcnt, - xmiti => xmiti, - xmito => xmito, - spw_do => spw_do, - spw_so => spw_so ); + xmit_sel1 : if tximpl = impl_fast generate + xmit_fast_inst : spwxmit_fast + port map( + clk => clk, + txclk => txclk, + rst => rst, + divcnt => xmit_divcnt, + xmiti => xmiti, + xmito => xmito, + spw_do => spw_do, + spw_so => spw_so); end generate; -- Instantiate receiver front-end. - recvfront_sel0: if rximpl = impl_generic generate - recvfront_generic_inst: spwrecvfront_generic - port map ( - clk => clk, - rxen => recv_rxen, - inact => recv_inact, - inbvalid => recv_inbvalid, - inbits => recv_inbits, - spw_di => spw_di, - spw_si => spw_si ); + recvfront_sel0 : if rximpl = impl_generic generate + recvfront_generic_inst : spwrecvfront_generic + port map( + clk => clk, + rxen => recv_rxen, + inact => recv_inact, + inbvalid => recv_inbvalid, + inbits => recv_inbits, + invalid_transition => recv_invalid_transition, + spw_di => spw_di, + spw_si => spw_si); end generate; - recvfront_sel1: if rximpl = impl_fast generate - recvfront_fast_inst: spwrecvfront_fast - generic map ( - rxchunk => rxchunk ) - port map ( - clk => clk, - rxclk => rxclk, - rxen => recv_rxen, - inact => recv_inact, - inbvalid => recv_inbvalid, - inbits => recv_inbits, - spw_di => spw_di, - spw_si => spw_si ); + recvfront_sel1 : if rximpl = impl_fast generate + recvfront_fast_inst : spwrecvfront_fast + generic map( + rxchunk => rxchunk) + port map( + clk => clk, + rxclk => rxclk, + rxen => recv_rxen, + inact => recv_inact, + inbvalid => recv_inbvalid, + inbits => recv_inbits, + spw_di => spw_di, + spw_si => spw_si); end generate; -- Instantiate RX memory. - rxmem: spwram - generic map ( - abits => rxfifosize_bits, - dbits => 9 ) - port map ( - rclk => clk, - wclk => clk, - ren => '1', - raddr => s_rxfifo_raddr, - rdata => s_rxfifo_rdata, - wen => s_rxfifo_wen, - waddr => s_rxfifo_waddr, - wdata => s_rxfifo_wdata ); + rxmem : spwram + generic map( + abits => rxfifosize_bits, + dbits => 9) + port map( + rclk => clk, + wclk => clk, + ren => '1', + raddr => s_rxfifo_raddr, + rdata => s_rxfifo_rdata, + wen => s_rxfifo_wen, + waddr => s_rxfifo_waddr, + wdata => s_rxfifo_wdata); -- Instantiate TX memory. - txmem: spwram - generic map ( - abits => txfifosize_bits, - dbits => 9 ) - port map ( - rclk => clk, - wclk => clk, - ren => '1', - raddr => s_txfifo_raddr, - rdata => s_txfifo_rdata, - wen => s_txfifo_wen, - waddr => s_txfifo_waddr, - wdata => s_txfifo_wdata ); + txmem : spwram + generic map( + abits => txfifosize_bits, + dbits => 9) + port map( + rclk => clk, + wclk => clk, + ren => '1', + raddr => s_txfifo_raddr, + rdata => s_txfifo_rdata, + wen => s_txfifo_wen, + waddr => s_txfifo_waddr, + wdata => s_txfifo_wdata); -- Combinatorial process - process (r, linko, s_rxfifo_rdata, s_txfifo_rdata, rst, autostart, linkstart, linkdis, - txdivcnt, tick_in, ctrl_in, time_in, txwrite, txflag, txdata, rxread, err_inj_i, err_sel_i) is - variable v: regs_type; - variable v_tmprxroom: unsigned(rxfifosize_bits-1 downto 0); - variable v_tmptxroom: unsigned(txfifosize_bits-1 downto 0); + process(r, linko, s_rxfifo_rdata, s_txfifo_rdata, rst, autostart, linkstart, linkdis, txdivcnt, tick_in, ctrl_in, time_in, txwrite, txflag, txdata, rxread, err_inj_i, err_sel_i) is + variable v : regs_type; + variable v_tmprxroom : unsigned(rxfifosize_bits - 1 downto 0); + variable v_tmptxroom : unsigned(txfifosize_bits - 1 downto 0); begin v := r; v_tmprxroom := to_unsigned(0, v_tmprxroom'length); @@ -406,24 +363,24 @@ begin -- Keep track of whether we are sending and/or receiving a packet. if linko.rxchar = '1' then -- got character - v.rxpacket := not linko.rxflag; + v.rxpacket := not linko.rxflag; end if; if linko.txack = '1' then -- send character - v.txpacket := not s_txfifo_rdata(8); + v.txpacket := not s_txfifo_rdata(8); end if; -- Update RX fifo pointers. if (rxread = '1') and (r.rxfifo_rvalid = '1') then -- read from fifo - v.rxfifo_raddr := std_logic_vector(unsigned(r.rxfifo_raddr) + 1); + v.rxfifo_raddr := std_logic_vector(unsigned(r.rxfifo_raddr) + 1); end if; if r.rxfull = '0' then if (linko.rxchar = '1') or (r.rxeep = '1') then -- write to fifo (received char or pending EEP) - v.rxfifo_waddr := std_logic_vector(unsigned(r.rxfifo_waddr) + 1); + v.rxfifo_waddr := std_logic_vector(unsigned(r.rxfifo_waddr) + 1); end if; - v.rxeep := '0'; + v.rxeep := '0'; end if; -- Keep track of whether the RX fifo contains valid data. @@ -435,22 +392,22 @@ begin v.rxfull := bool_to_logic(v_tmprxroom = 0); v.rxhalff := not v_tmprxroom(v_tmprxroom'high); if v_tmprxroom > 63 then - v.rxroom := (others => '1'); + v.rxroom := (others => '1'); else - v.rxroom := std_logic_vector(v_tmprxroom(5 downto 0)); + v.rxroom := std_logic_vector(v_tmprxroom(5 downto 0)); end if; -- Update TX fifo pointers. if (r.txfifo_rvalid = '1') and ((linko.txack = '1') or (r.txdiscard = '1')) then -- read from fifo - v.txfifo_raddr := std_logic_vector(unsigned(r.txfifo_raddr) + 1); + v.txfifo_raddr := std_logic_vector(unsigned(r.txfifo_raddr) + 1); if s_txfifo_rdata(8) = '1' then v.txdiscard := '0'; -- got EOP/EEP, stop discarding data end if; end if; if (r.txfull = '0') and (txwrite = '1') then -- write to fifo - v.txfifo_waddr := std_logic_vector(unsigned(r.txfifo_waddr) + 1); + v.txfifo_waddr := std_logic_vector(unsigned(r.txfifo_waddr) + 1); end if; -- Keep track of whether the TX fifo contains valid data. @@ -461,11 +418,11 @@ begin v_tmptxroom := unsigned(r.txfifo_raddr) - unsigned(v.txfifo_waddr) - 1; v.txfull := bool_to_logic(v_tmptxroom = 0); v.txhalff := not v_tmptxroom(v_tmptxroom'high); - + -- If the link is lost, set a flag to discard the current packet. if linko.running = '0' then - v.rxeep := v.rxeep or v.rxpacket; -- use new value of rxpacket - v.txdiscard := v.txdiscard or v.txpacket; -- use new value of txpacket + v.rxeep := v.rxeep or v.rxpacket; -- use new value of rxpacket + v.txdiscard := v.txdiscard or v.txpacket; -- use new value of txpacket v.rxpacket := '0'; v.txpacket := '0'; end if; @@ -476,32 +433,32 @@ begin end if; -- Drive control signals to RX fifo. - s_rxfifo_raddr <= v.rxfifo_raddr; -- using new value of rxfifo_raddr - s_rxfifo_wen <= (not r.rxfull) and (linko.rxchar or r.rxeep); - s_rxfifo_waddr <= r.rxfifo_waddr; + s_rxfifo_raddr <= v.rxfifo_raddr; -- using new value of rxfifo_raddr + s_rxfifo_wen <= (not r.rxfull) and (linko.rxchar or r.rxeep); + s_rxfifo_waddr <= r.rxfifo_waddr; if r.rxeep = '1' then - s_rxfifo_wdata <= "100000001"; + s_rxfifo_wdata <= "100000001"; else - s_rxfifo_wdata <= linko.rxflag & linko.rxdata; + s_rxfifo_wdata <= linko.rxflag & linko.rxdata; end if; -- Drive control signals to TX fifo. - s_txfifo_raddr <= v.txfifo_raddr; -- using new value of txfifo_raddr - s_txfifo_wen <= (not r.txfull) and txwrite; - s_txfifo_waddr <= r.txfifo_waddr; - s_txfifo_wdata <= txflag & txdata; + s_txfifo_raddr <= v.txfifo_raddr; -- using new value of txfifo_raddr + s_txfifo_wen <= (not r.txfull) and txwrite; + s_txfifo_waddr <= r.txfifo_waddr; + s_txfifo_wdata <= txflag & txdata; -- Drive inputs to spwlink. - linki.autostart <= autostart; - linki.linkstart <= linkstart; - linki.linkdis <= linkdis; - linki.rxroom <= r.rxroom; - linki.tick_in <= tick_in; - linki.ctrl_in <= ctrl_in; - linki.time_in <= time_in; - linki.txwrite <= r.txfifo_rvalid and not r.txdiscard; - linki.txflag <= s_txfifo_rdata(8); - linki.txdata <= s_txfifo_rdata(7 downto 0); + linki.autostart <= autostart; + linki.linkstart <= linkstart; + linki.linkdis <= linkdis; + linki.rxroom <= r.rxroom; + linki.tick_in <= tick_in; + linki.ctrl_in <= ctrl_in; + linki.time_in <= time_in; + linki.txwrite <= r.txfifo_rvalid and not r.txdiscard; + linki.txflag <= s_txfifo_rdata(8); + linki.txdata <= s_txfifo_rdata(7 downto 0); linki.err_usr_i.err_inj_i <= err_inj_i; linki.err_usr_i.err_sel_i <= err_sel_i; @@ -513,23 +470,23 @@ begin end if; -- Drive outputs. - txrdy <= not r.txfull; - txhalff <= r.txhalff; - tick_out <= linko.tick_out; - ctrl_out <= linko.ctrl_out; - time_out <= linko.time_out; - rxvalid <= r.rxfifo_rvalid; - rxhalff <= r.rxhalff; - rxflag <= s_rxfifo_rdata(8); - rxdata <= s_rxfifo_rdata(7 downto 0); - started <= linko.started; - connecting <= linko.connecting; - running <= linko.running; - errdisc <= linko.errdisc; - errpar <= linko.errpar; - erresc <= linko.erresc; - errcred <= linko.errcred; - err_stat_o <= linko.err_usr_o.err_stat_o; + txrdy <= not r.txfull; + txhalff <= r.txhalff; + tick_out <= linko.tick_out; + ctrl_out <= linko.ctrl_out; + time_out <= linko.time_out; + rxvalid <= r.rxfifo_rvalid; + rxhalff <= r.rxhalff; + rxflag <= s_rxfifo_rdata(8); + rxdata <= s_rxfifo_rdata(7 downto 0); + started <= linko.started; + connecting <= linko.connecting; + running <= linko.running; + errdisc <= linko.errdisc; + errpar <= linko.errpar; + erresc <= linko.erresc; + errcred <= linko.errcred; + err_stat_o <= linko.err_usr_o.err_stat_o; -- Reset. if rst = '1' then @@ -550,7 +507,7 @@ begin end process; -- Update registers. - process (clk) is + process(clk) is begin if rising_edge(clk) then r <= rin; diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd index c8a78b2d..be05a384 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd @@ -12,30 +12,24 @@ use work.spwpkg.all; entity spwxmit is - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- Synchronous reset (active-high). - rst: in std_logic; - + rst : in std_logic; -- Scaling factor minus 1, used to scale the system clock into the -- transmission bit rate. The system clock is divided by -- (unsigned(divcnt) + 1). Changing this signal will immediately -- change the transmission rate. - divcnt: in std_logic_vector(7 downto 0); - + divcnt : in std_logic_vector(7 downto 0); -- Input signals from spwlink. - xmiti: in spw_xmit_in_type; - + xmiti : in spw_xmit_in_type; -- Output signals to spwlink. - xmito: out spw_xmit_out_type; - + xmito : out spw_xmit_out_type; -- Data Out signal to SpaceWire bus. - spw_do: out std_logic; - + spw_do : out std_logic; -- Strobe Out signal to SpaceWire bus. - spw_so: out std_logic + spw_so : out std_logic ); end entity spwxmit; @@ -45,61 +39,61 @@ architecture spwxmit_arch of spwxmit is -- Registers type regs_type is record -- tx clock - txclken: std_ulogic; -- high if a bit must be transmitted - txclkcnt: unsigned(7 downto 0); + txclken : std_ulogic; -- high if a bit must be transmitted + txclkcnt : unsigned(7 downto 0); -- output shift register - bitshift: std_logic_vector(12 downto 0); - bitcnt: unsigned(3 downto 0); + bitshift : std_logic_vector(12 downto 0); + bitcnt : unsigned(3 downto 0); -- output signals - out_data: std_ulogic; - out_strobe: std_ulogic; + out_data : std_ulogic; + out_strobe : std_ulogic; -- parity flag - parity: std_ulogic; + parity : std_ulogic; -- pending time tick - pend_tick: std_ulogic; - pend_time: std_logic_vector(7 downto 0); + pend_tick : std_ulogic; + pend_time : std_logic_vector(7 downto 0); -- transmitter mode - allow_fct: std_ulogic; -- allowed to send FCTs - allow_char: std_ulogic; -- allowed to send data and time - sent_null: std_ulogic; -- sent at least one NULL token - sent_fct: std_ulogic; -- sent at least one FCT token + allow_fct : std_ulogic; -- allowed to send FCTs + allow_char : std_ulogic; -- allowed to send data and time + sent_null : std_ulogic; -- sent at least one NULL token + sent_fct : std_ulogic; -- sent at least one FCT token end record; -- Initial state - constant regs_reset: regs_type := ( - txclken => '0', - txclkcnt => "00000000", - bitshift => (others => '0'), - bitcnt => "0000", - out_data => '0', - out_strobe => '0', - parity => '0', - pend_tick => '0', - pend_time => (others => '0'), - allow_fct => '0', - allow_char => '0', - sent_null => '0', - sent_fct => '0' ); + constant regs_reset : regs_type := ( + txclken => '0', + txclkcnt => "00000000", + bitshift => (others => '0'), + bitcnt => "0000", + out_data => '0', + out_strobe => '0', + parity => '0', + pend_tick => '0', + pend_time => (others => '0'), + allow_fct => '0', + allow_char => '0', + sent_null => '0', + sent_fct => '0'); -- Registers - signal r: regs_type := regs_reset; - signal rin: regs_type; + signal r : regs_type := regs_reset; + signal rin : regs_type; begin -- Combinatorial process - process (r, rst, divcnt, xmiti) is - variable v: regs_type; + process(r, rst, divcnt, xmiti) is + variable v : regs_type; begin v := r; -- Generate TX clock. if r.txclkcnt = 0 then - v.txclkcnt := unsigned(divcnt); - v.txclken := '1'; + v.txclkcnt := unsigned(divcnt); + v.txclken := '1'; else - v.txclkcnt := r.txclkcnt - 1; - v.txclken := '0'; + v.txclkcnt := r.txclkcnt - 1; + v.txclken := '0'; end if; if xmiti.txen = '0' then @@ -122,14 +116,13 @@ begin else -- Transmitter enabled. - v.allow_fct := (not xmiti.stnull) and r.sent_null; - + v.allow_fct := (not xmiti.stnull) and r.sent_null; + -- If a char sequence error requested, force allow_char = '1' if (xmiti.err_inj_ch_seq = '1') then - v.allow_char := '1'; - else - v.allow_char := (not xmiti.stnull) and r.sent_null and - (not xmiti.stfct) and r.sent_fct; + v.allow_char := '1'; + else + v.allow_char := (not xmiti.stnull) and r.sent_null and (not xmiti.stfct) and r.sent_fct; end if; -- On tick of transmission clock, put next bit on the output. @@ -140,50 +133,50 @@ begin -- Need to start a new character. if (r.allow_char = '1') and (r.pend_tick = '1') then -- Send Time-Code. - v.out_data := r.parity; + v.out_data := r.parity; v.bitshift(12 downto 5) := r.pend_time; v.bitshift(4 downto 0) := "01111"; - v.bitcnt := to_unsigned(13, v.bitcnt'length); - v.parity := '0'; - v.pend_tick := '0'; + v.bitcnt := to_unsigned(13, v.bitcnt'length); + v.parity := '0'; + v.pend_tick := '0'; elsif (r.allow_fct = '1') and (xmiti.fct_in = '1') then -- Send FCT. - v.out_data := r.parity; - v.bitshift(2 downto 0) := "001"; - v.bitcnt := to_unsigned(3, v.bitcnt'length); - v.parity := '1'; - v.sent_fct := '1'; + v.out_data := r.parity; + v.bitshift(2 downto 0) := "001"; + v.bitcnt := to_unsigned(3, v.bitcnt'length); + v.parity := '1'; + v.sent_fct := '1'; elsif (r.allow_char = '1') and (xmiti.txwrite = '1') then -- Send N-Char. v.bitshift(0) := xmiti.txflag; - v.parity := xmiti.txflag; + v.parity := xmiti.txflag; if xmiti.txflag = '0' then -- Data byte - v.out_data := not r.parity; + v.out_data := not r.parity; v.bitshift(8 downto 1) := xmiti.txdata; - v.bitcnt := to_unsigned(9, v.bitcnt'length); + v.bitcnt := to_unsigned(9, v.bitcnt'length); else -- EOP or EEP - v.out_data := r.parity; + v.out_data := r.parity; v.bitshift(1) := xmiti.txdata(0); v.bitshift(2) := not xmiti.txdata(0); - v.bitcnt := to_unsigned(3, v.bitcnt'length); + v.bitcnt := to_unsigned(3, v.bitcnt'length); end if; else -- Send NULL. - v.out_data := r.parity; + v.out_data := r.parity; -- Parity error injection check if (xmiti.err_inj_par = '1') then - -- Force wrong parity bit in fct portion code - -- It can´t be confused with eop, eep, or another esc. - v.bitshift(6 downto 0) := "0011111"; - -- Escape error injection check + -- Force wrong parity bit in fct portion code + -- It can´t be confused with eop, eep, or another esc. + v.bitshift(6 downto 0) := "0011111"; + -- Escape error injection check elsif (xmiti.err_inj_esc = '1') then - -- Force another esc in fct portion code: esc + esc. - v.bitshift(6 downto 0) := "1110111"; + -- Force another esc in fct portion code: esc + esc. + v.bitshift(6 downto 0) := "1110111"; -- Normal null code else - v.bitshift(6 downto 0) := "0010111"; + v.bitshift(6 downto 0) := "0010111"; end if; v.bitcnt := to_unsigned(7, v.bitcnt'length); v.parity := '0'; @@ -193,10 +186,10 @@ begin else -- Shift next bit to the output. - v.out_data := r.bitshift(0); - v.parity := r.parity xor r.bitshift(0); - v.bitshift(r.bitshift'high-1 downto 0) := r.bitshift(r.bitshift'high downto 1); - v.bitcnt := r.bitcnt - 1; + v.out_data := r.bitshift(0); + v.parity := r.parity xor r.bitshift(0); + v.bitshift(r.bitshift'high - 1 downto 0) := r.bitshift(r.bitshift'high downto 1); + v.bitcnt := r.bitcnt - 1; end if; @@ -225,24 +218,20 @@ begin -- (ready for token) AND (FCTs allowed) AND -- ((characters not allowed) OR (no timecode pending)) AND -- (FCT requested) - if (xmiti.txen = '1') and - (r.txclken = '1') and (r.bitcnt = 0) and (r.allow_fct = '1') and - ((r.allow_char = '0') or (r.pend_tick = '0')) then - xmito.fctack <= xmiti.fct_in; + if (xmiti.txen = '1') and (r.txclken = '1') and (r.bitcnt = 0) and (r.allow_fct = '1') and ((r.allow_char = '0') or (r.pend_tick = '0')) then + xmito.fctack <= xmiti.fct_in; else - xmito.fctack <= '0'; + xmito.fctack <= '0'; end if; -- Set txack high if (transmitter enabled) AND -- (ready for token) AND (characters enabled) AND -- (no timecode pending) AND (no FCT requested) AND -- (character requested) - if (xmiti.txen = '1') and - (r.txclken = '1') and (r.bitcnt = 0) and (r.allow_char = '1') and - (r.pend_tick = '0') and (xmiti.fct_in = '0') then - xmito.txack <= xmiti.txwrite; + if (xmiti.txen = '1') and (r.txclken = '1') and (r.bitcnt = 0) and (r.allow_char = '1') and (r.pend_tick = '0') and (xmiti.fct_in = '0') then + xmito.txack <= xmiti.txwrite; else - xmito.txack <= '0'; + xmito.txack <= '0'; end if; -- Update registers @@ -250,7 +239,7 @@ begin end process; -- Synchronous process - process (clk) is + process(clk) is begin if rising_edge(clk) then @@ -258,8 +247,8 @@ begin r <= rin; -- Drive spacewire output signals - spw_do <= r.out_data; - spw_so <= r.out_strobe; + spw_do <= r.out_data; + spw_so <= r.out_strobe; end if; end process; diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd index fe1f9e15..034970e3 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd @@ -149,215 +149,208 @@ use work.spwpkg.all; entity spwxmit_fast is - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- Transmit clock. - txclk: in std_logic; - + txclk : in std_logic; -- Synchronous reset (active-high) -- Used asynchronously by fast clock domain (must be glitch-free). - rst: in std_logic; - + rst : in std_logic; -- Scaling factor minus 1, used to scale the system clock into the -- transmission bit rate. The system clock is divided by -- (unsigned(divcnt) + 1). Changing this signal will immediately -- change the transmission rate. - divcnt: in std_logic_vector(7 downto 0); - + divcnt : in std_logic_vector(7 downto 0); -- Input signals from spwlink. - xmiti: in spw_xmit_in_type; - + xmiti : in spw_xmit_in_type; -- Output signals to spwlink. - xmito: out spw_xmit_out_type; - + xmito : out spw_xmit_out_type; -- Data Out signal to SpaceWire bus. - spw_do: out std_logic; - + spw_do : out std_logic; -- Strobe Out signal to SpaceWire bus. - spw_so: out std_logic + spw_so : out std_logic ); -- Turn off FSM extraction to avoid synchronization problems. - attribute FSM_EXTRACT: string; - attribute FSM_EXTRACT of spwxmit_fast: entity is "NO"; + attribute FSM_EXTRACT : string; + attribute FSM_EXTRACT of spwxmit_fast : entity is "NO"; end entity spwxmit_fast; architecture spwxmit_fast_arch of spwxmit_fast is -- Convert boolean to std_logic. - type bool_to_logic_type is array(boolean) of std_ulogic; - constant bool_to_logic: bool_to_logic_type := (false => '0', true => '1'); + type bool_to_logic_type is array (boolean) of std_ulogic; + constant bool_to_logic : bool_to_logic_type := (false => '0', true => '1'); -- Data records passed between clock domains. type token_type is record - tick: std_ulogic; -- send time code - fct: std_ulogic; -- send FCT - fctpiggy: std_ulogic; -- send FCT and N-char - flag: std_ulogic; -- send EOP or EEP - char: std_logic_vector(7 downto 0); -- character or time code + tick : std_ulogic; -- send time code + fct : std_ulogic; -- send FCT + fctpiggy : std_ulogic; -- send FCT and N-char + flag : std_ulogic; -- send EOP or EEP + char : std_logic_vector(7 downto 0); -- character or time code end record; -- Registers in txclk domain type txregs_type is record -- sync to system clock domain - txflip0: std_ulogic; - txflip1: std_ulogic; + txflip0 : std_ulogic; + txflip1 : std_ulogic; -- stage B - b_update: std_ulogic; - b_mux: std_ulogic; - b_txflip: std_ulogic; - b_valid: std_ulogic; - b_token: token_type; + b_update : std_ulogic; + b_mux : std_ulogic; + b_txflip : std_ulogic; + b_valid : std_ulogic; + b_token : token_type; -- stage C - c_update: std_ulogic; - c_busy: std_ulogic; - c_esc: std_ulogic; - c_fct: std_ulogic; - c_bits: std_logic_vector(8 downto 0); + c_update : std_ulogic; + c_busy : std_ulogic; + c_esc : std_ulogic; + c_fct : std_ulogic; + c_bits : std_logic_vector(8 downto 0); -- stage D - d_bits: std_logic_vector(8 downto 0); - d_cnt4: std_ulogic; - d_cnt10: std_ulogic; + d_bits : std_logic_vector(8 downto 0); + d_cnt4 : std_ulogic; + d_cnt10 : std_ulogic; -- stage E - e_valid: std_ulogic; - e_shift: std_logic_vector(9 downto 0); - e_count: std_logic_vector(9 downto 0); - e_parity: std_ulogic; + e_valid : std_ulogic; + e_shift : std_logic_vector(9 downto 0); + e_count : std_logic_vector(9 downto 0); + e_parity : std_ulogic; -- stage F - f_spwdo: std_ulogic; - f_spwso: std_ulogic; + f_spwdo : std_ulogic; + f_spwso : std_ulogic; -- tx clock enable logic - txclken: std_ulogic; - txclkpre: std_ulogic; - txclkcnt: std_logic_vector(7 downto 0); - txclkcy: std_logic_vector(2 downto 0); - txclkdone: std_logic_vector(1 downto 0); - txclkdiv: std_logic_vector(7 downto 0); - txdivnorm: std_ulogic; + txclken : std_ulogic; + txclkpre : std_ulogic; + txclkcnt : std_logic_vector(7 downto 0); + txclkcy : std_logic_vector(2 downto 0); + txclkdone : std_logic_vector(1 downto 0); + txclkdiv : std_logic_vector(7 downto 0); + txdivnorm : std_ulogic; end record; -- Registers in system clock domain type regs_type is record -- sync status to txclk domain - txenreg: std_ulogic; - txdivreg: std_logic_vector(7 downto 0); - txdivnorm: std_ulogic; - txdivtmp: std_logic_vector(1 downto 0); - txdivsafe: std_ulogic; + txenreg : std_ulogic; + txdivreg : std_logic_vector(7 downto 0); + txdivnorm : std_ulogic; + txdivtmp : std_logic_vector(1 downto 0); + txdivsafe : std_ulogic; -- data stream to txclk domain - sysflip0: std_ulogic; - sysflip1: std_ulogic; - token0: token_type; - token1: token_type; - tokmux: std_ulogic; + sysflip0 : std_ulogic; + sysflip1 : std_ulogic; + token0 : token_type; + token1 : token_type; + tokmux : std_ulogic; -- transmitter management - pend_fct: std_ulogic; -- '1' if an outgoing FCT is pending - pend_char: std_ulogic; -- '1' if an outgoing N-Char is pending - pend_data: std_logic_vector(8 downto 0); -- control flag and data bits of pending char - pend_tick: std_ulogic; -- '1' if an outgoing time tick is pending - pend_time: std_logic_vector(7 downto 0); -- data bits of pending time tick - allow_fct: std_ulogic; -- '1' when allowed to send FCTs - allow_char: std_ulogic; -- '1' when allowed to send data and time - sent_fct: std_ulogic; -- '1' when at least one FCT token was sent + pend_fct : std_ulogic; -- '1' if an outgoing FCT is pending + pend_char : std_ulogic; -- '1' if an outgoing N-Char is pending + pend_data : std_logic_vector(8 downto 0); -- control flag and data bits of pending char + pend_tick : std_ulogic; -- '1' if an outgoing time tick is pending + pend_time : std_logic_vector(7 downto 0); -- data bits of pending time tick + allow_fct : std_ulogic; -- '1' when allowed to send FCTs + allow_char : std_ulogic; -- '1' when allowed to send data and time + sent_fct : std_ulogic; -- '1' when at least one FCT token was sent end record; -- Initial state of system clock domain - constant token_reset: token_type := ( - tick => '0', - fct => '0', - fctpiggy => '0', - flag => '0', - char => (others => '0') ); - constant regs_reset: regs_type := ( - txenreg => '0', - txdivreg => (others => '0'), - txdivnorm => '0', - txdivtmp => "00", - txdivsafe => '0', - sysflip0 => '0', - sysflip1 => '0', - token0 => token_reset, - token1 => token_reset, - tokmux => '0', - pend_fct => '0', - pend_char => '0', - pend_data => (others => '0'), - pend_tick => '0', - pend_time => (others => '0'), - allow_fct => '0', - allow_char => '0', - sent_fct => '0' ); + constant token_reset : token_type := ( + tick => '0', + fct => '0', + fctpiggy => '0', + flag => '0', + char => (others => '0')); + constant regs_reset : regs_type := ( + txenreg => '0', + txdivreg => (others => '0'), + txdivnorm => '0', + txdivtmp => "00", + txdivsafe => '0', + sysflip0 => '0', + sysflip1 => '0', + token0 => token_reset, + token1 => token_reset, + tokmux => '0', + pend_fct => '0', + pend_char => '0', + pend_data => (others => '0'), + pend_tick => '0', + pend_time => (others => '0'), + allow_fct => '0', + allow_char => '0', + sent_fct => '0'); -- Signals that are re-synchronized from system clock to txclk domain. type synctx_type is record - rstn: std_ulogic; - sysflip0: std_ulogic; - sysflip1: std_ulogic; - txen: std_ulogic; - txdivsafe: std_ulogic; + rstn : std_ulogic; + sysflip0 : std_ulogic; + sysflip1 : std_ulogic; + txen : std_ulogic; + txdivsafe : std_ulogic; end record; -- Signals that are re-synchronized from txclk to system clock domain. type syncsys_type is record - txflip0: std_ulogic; - txflip1: std_ulogic; + txflip0 : std_ulogic; + txflip1 : std_ulogic; end record; -- Registers - signal rtx: txregs_type; - signal rtxin: txregs_type; - signal r: regs_type := regs_reset; - signal rin: regs_type; + signal rtx : txregs_type; + signal rtxin : txregs_type; + signal r : regs_type := regs_reset; + signal rin : regs_type; -- Synchronized signals after crossing clock domains. - signal synctx: synctx_type; - signal syncsys: syncsys_type; + signal synctx : synctx_type; + signal syncsys : syncsys_type; -- Output flip-flops - signal s_spwdo: std_logic; - signal s_spwso: std_logic; + signal s_spwdo : std_logic; + signal s_spwso : std_logic; -- Force use of IOB flip-flops - attribute IOB: string; - attribute IOB of s_spwdo: signal is "TRUE"; - attribute IOB of s_spwso: signal is "TRUE"; + attribute IOB : string; + attribute IOB of s_spwdo : signal is "TRUE"; + attribute IOB of s_spwso : signal is "TRUE"; begin -- Reset synchronizer for txclk domain. - synctx_rst: syncdff - port map ( clk => txclk, rst => rst, di => '1', do => synctx.rstn ); + synctx_rst : syncdff + port map(clk => txclk, rst => rst, di => '1', do => synctx.rstn); -- Synchronize signals from system clock domain to txclk domain. - synctx_sysflip0: syncdff - port map ( clk => txclk, rst => rst, di => r.sysflip0, do => synctx.sysflip0 ); - synctx_sysflip1: syncdff - port map ( clk => txclk, rst => rst, di => r.sysflip1, do => synctx.sysflip1 ); - synctx_txen: syncdff - port map ( clk => txclk, rst => rst, di => r.txenreg, do => synctx.txen ); - synctx_txdivsafe: syncdff - port map ( clk => txclk, rst => rst, di => r.txdivsafe, do => synctx.txdivsafe ); + synctx_sysflip0 : syncdff + port map(clk => txclk, rst => rst, di => r.sysflip0, do => synctx.sysflip0); + synctx_sysflip1 : syncdff + port map(clk => txclk, rst => rst, di => r.sysflip1, do => synctx.sysflip1); + synctx_txen : syncdff + port map(clk => txclk, rst => rst, di => r.txenreg, do => synctx.txen); + synctx_txdivsafe : syncdff + port map(clk => txclk, rst => rst, di => r.txdivsafe, do => synctx.txdivsafe); -- Synchronize signals from txclk domain to system clock domain. - syncsys_txflip0: syncdff - port map ( clk => clk, rst => rst, di => rtx.txflip0, do => syncsys.txflip0 ); - syncsys_txflip1: syncdff - port map ( clk => clk, rst => rst, di => rtx.txflip1, do => syncsys.txflip1 ); + syncsys_txflip0 : syncdff + port map(clk => clk, rst => rst, di => rtx.txflip0, do => syncsys.txflip0); + syncsys_txflip1 : syncdff + port map(clk => clk, rst => rst, di => rtx.txflip1, do => syncsys.txflip1); -- Drive SpaceWire output signals - spw_do <= s_spwdo; - spw_so <= s_spwso; + spw_do <= s_spwdo; + spw_so <= s_spwso; -- Combinatorial process - process (r, rtx, rst, divcnt, xmiti, synctx, syncsys) is - variable v: regs_type; - variable vtx: txregs_type; - variable v_needtoken: std_ulogic; - variable v_havetoken: std_ulogic; - variable v_token: token_type; + process(r, rtx, rst, divcnt, xmiti, synctx, syncsys) is + variable v : regs_type; + variable vtx : txregs_type; + variable v_needtoken : std_ulogic; + variable v_havetoken : std_ulogic; + variable v_token : token_type; begin v := r; vtx := rtx; @@ -406,45 +399,42 @@ begin -- Time-codes are broken into two tokens: ESC + char. -- Enable c_esc on the first pass of a NULL or a time-code. - vtx.c_esc := (rtx.b_token.tick or (not rtx.b_valid)) and - (not rtx.c_esc); + vtx.c_esc := (rtx.b_token.tick or (not rtx.b_valid)) and (not rtx.c_esc); -- Enable c_fct on the first pass of an FCT and on -- the second pass of a NULL (also the first pass, but c_esc -- is stronger than c_fct). - vtx.c_fct := (rtx.b_token.fct and (not rtx.c_busy)) or - (not rtx.b_valid); + vtx.c_fct := (rtx.b_token.fct and (not rtx.c_busy)) or (not rtx.b_valid); -- Enable c_busy on the first pass of a NULL or a time-code -- or a piggy-backed FCT. This will tell stage B that we are -- not done yet. - vtx.c_busy := (rtx.b_token.tick or (not rtx.b_valid) or - rtx.b_token.fctpiggy) and (not rtx.c_busy); + vtx.c_busy := (rtx.b_token.tick or (not rtx.b_valid) or rtx.b_token.fctpiggy) and (not rtx.c_busy); if rtx.b_token.flag = '1' then if rtx.b_token.char(0) = '0' then -- prepare to send EOP - vtx.c_bits := "000000101"; -- EOP = P101 + vtx.c_bits := "000000101"; -- EOP = P101 else -- prepare to send EEP - vtx.c_bits := "000000011"; -- EEP = P110 + vtx.c_bits := "000000011"; -- EEP = P110 end if; else -- prepare to send data char - vtx.c_bits := rtx.b_token.char & '0'; + vtx.c_bits := rtx.b_token.char & '0'; end if; end if; -- Stage D: Prepare to transmit FCT, ESC, or the stuff from stage C. if rtx.c_esc = '1' then -- prepare to send ESC - vtx.d_bits := "000000111"; -- ESC = P111 - vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit + vtx.d_bits := "000000111"; -- ESC = P111 + vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit vtx.d_cnt10 := '0'; elsif rtx.c_fct = '1' then -- prepare to send FCT - vtx.d_bits := "000000001"; -- FCT = P100 - vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit + vtx.d_bits := "000000001"; -- FCT = P100 + vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit vtx.d_cnt10 := '0'; else -- send the stuff from stage C. @@ -457,11 +447,11 @@ begin if rtx.txclken = '1' then if rtx.e_count(0) = '1' then -- reload shift register; output parity bit - vtx.e_valid := '1'; + vtx.e_valid := '1'; vtx.e_shift(vtx.e_shift'high downto 1) := rtx.d_bits; - vtx.e_shift(0) := not (rtx.e_parity xor rtx.d_bits(0)); - vtx.e_count := rtx.d_cnt10 & "00000" & rtx.d_cnt4 & "000"; - vtx.e_parity := rtx.d_bits(0); + vtx.e_shift(0) := not (rtx.e_parity xor rtx.d_bits(0)); + vtx.e_count := rtx.d_cnt10 & "00000" & rtx.d_cnt4 & "000"; + vtx.e_parity := rtx.d_bits(0); else -- shift bits to output; update parity bit vtx.e_shift := '0' & rtx.e_shift(rtx.e_shift'high downto 1); @@ -493,15 +483,15 @@ begin vtx.txclkcnt(5 downto 4) := std_logic_vector(unsigned(rtx.txclkcnt(5 downto 4)) - unsigned(rtx.txclkcy(1 downto 1))); vtx.txclkcnt(7 downto 6) := std_logic_vector(unsigned(rtx.txclkcnt(7 downto 6)) - unsigned(rtx.txclkcy(2 downto 2))); -- propagate carry in blocks of two bits - vtx.txclkcy(0) := bool_to_logic(rtx.txclkcnt(1 downto 0) = "00"); - vtx.txclkcy(1) := rtx.txclkcy(0) and bool_to_logic(rtx.txclkcnt(3 downto 2) = "00"); - vtx.txclkcy(2) := rtx.txclkcy(1) and bool_to_logic(rtx.txclkcnt(5 downto 4) = "00"); + vtx.txclkcy(0) := bool_to_logic(rtx.txclkcnt(1 downto 0) = "00"); + vtx.txclkcy(1) := rtx.txclkcy(0) and bool_to_logic(rtx.txclkcnt(3 downto 2) = "00"); + vtx.txclkcy(2) := rtx.txclkcy(1) and bool_to_logic(rtx.txclkcnt(5 downto 4) = "00"); -- detect value 2 in counter - vtx.txclkdone(0) := bool_to_logic(rtx.txclkcnt(3 downto 0) = "0010"); - vtx.txclkdone(1) := bool_to_logic(rtx.txclkcnt(7 downto 4) = "0000"); + vtx.txclkdone(0) := bool_to_logic(rtx.txclkcnt(3 downto 0) = "0010"); + vtx.txclkdone(1) := bool_to_logic(rtx.txclkcnt(7 downto 4) = "0000"); -- trigger txclken - vtx.txclken := (rtx.txclkdone(0) and rtx.txclkdone(1)) or rtx.txclkpre; - vtx.txclkpre := (not rtx.txdivnorm) and ((not rtx.txclkpre) or (not rtx.txclkdiv(0))); + vtx.txclken := (rtx.txclkdone(0) and rtx.txclkdone(1)) or rtx.txclkpre; + vtx.txclkpre := (not rtx.txdivnorm) and ((not rtx.txclkpre) or (not rtx.txclkdiv(0))); -- reload counter if rtx.txclken = '1' then vtx.txclkcnt := rtx.txclkdiv; @@ -517,21 +507,21 @@ begin -- Transmitter disabled. if synctx.txen = '0' then - vtx.txflip0 := '0'; - vtx.txflip1 := '0'; - vtx.b_update := '0'; - vtx.b_mux := '0'; - vtx.b_valid := '0'; - vtx.c_update := '0'; - vtx.c_busy := '1'; - vtx.c_esc := '1'; -- need to send 2nd part of NULL - vtx.c_fct := '1'; - vtx.d_bits := "000000111"; -- ESC = P111 - vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit - vtx.d_cnt10 := '0'; - vtx.e_valid := '0'; - vtx.e_parity := '0'; - vtx.e_count := (0 => '1', others => '0'); + vtx.txflip0 := '0'; + vtx.txflip1 := '0'; + vtx.b_update := '0'; + vtx.b_mux := '0'; + vtx.b_valid := '0'; + vtx.c_update := '0'; + vtx.c_busy := '1'; + vtx.c_esc := '1'; -- need to send 2nd part of NULL + vtx.c_fct := '1'; + vtx.d_bits := "000000111"; -- ESC = P111 + vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit + vtx.d_cnt10 := '0'; + vtx.e_valid := '0'; + vtx.e_parity := '0'; + vtx.e_count := (0 => '1', others => '0'); end if; -- Reset. @@ -548,7 +538,7 @@ begin -- ---- SYSTEM CLOCK DOMAIN ---- -- Hold divcnt and txen for use by txclk domain. - v.txdivtmp := std_logic_vector(unsigned(r.txdivtmp) - 1); + v.txdivtmp := std_logic_vector(unsigned(r.txdivtmp) - 1); if r.txdivtmp = "00" then if r.txdivsafe = '0' then -- Latch the current value of divcnt and txen. @@ -569,26 +559,26 @@ begin -- Pass falling edge of txen signal as soon as possible. if xmiti.txen = '0' then - v.txenreg := '0'; + v.txenreg := '0'; end if; -- Store requests for FCT transmission. if xmiti.fct_in = '1' and r.allow_fct = '1' then - v.pend_fct := '1'; + v.pend_fct := '1'; end if; if xmiti.txen = '0' then -- Transmitter disabled; reset state. - v.sysflip0 := '0'; - v.sysflip1 := '0'; - v.tokmux := '0'; - v.pend_fct := '0'; - v.pend_char := '0'; - v.pend_tick := '0'; - v.allow_fct := '0'; - v.allow_char := '0'; - v.sent_fct := '0'; + v.sysflip0 := '0'; + v.sysflip1 := '0'; + v.tokmux := '0'; + v.pend_fct := '0'; + v.pend_char := '0'; + v.pend_tick := '0'; + v.allow_fct := '0'; + v.allow_char := '0'; + v.sent_fct := '0'; else @@ -606,23 +596,23 @@ begin -- Prepare new token. if r.allow_char = '1' and r.pend_tick = '1' then -- prepare to send time code - v_token.tick := '1'; - v_token.fct := '0'; + v_token.tick := '1'; + v_token.fct := '0'; v_token.fctpiggy := '0'; - v_token.flag := '0'; - v_token.char := r.pend_time; - v_havetoken := '1'; + v_token.flag := '0'; + v_token.char := r.pend_time; + v_havetoken := '1'; if v_needtoken = '1' then v.pend_tick := '0'; end if; else if r.allow_fct = '1' and (xmiti.fct_in = '1' or r.pend_fct = '1') then -- prepare to send FCT - v_token.fct := '1'; - v_havetoken := '1'; + v_token.fct := '1'; + v_havetoken := '1'; if v_needtoken = '1' then - v.pend_fct := '0'; - v.sent_fct := '1'; + v.pend_fct := '0'; + v.sent_fct := '1'; end if; end if; if r.allow_char = '1' and r.pend_char = '1' then @@ -630,9 +620,9 @@ begin -- Note: it is possible to send an FCT and an N-Char -- together by enabling the fctpiggy flag. v_token.fctpiggy := v_token.fct; - v_token.flag := r.pend_data(8); - v_token.char := r.pend_data(7 downto 0); - v_havetoken := '1'; + v_token.flag := r.pend_data(8); + v_token.char := r.pend_data(7 downto 0); + v_havetoken := '1'; if v_needtoken = '1' then v.pend_char := '0'; end if; @@ -643,15 +633,15 @@ begin if v_havetoken = '1' then if r.tokmux = '0' then if r.sysflip0 = syncsys.txflip0 then - v.sysflip0 := not r.sysflip0; - v.token0 := v_token; - v.tokmux := '1'; + v.sysflip0 := not r.sysflip0; + v.token0 := v_token; + v.tokmux := '1'; end if; else if r.sysflip1 = syncsys.txflip1 then - v.sysflip1 := not r.sysflip1; - v.token1 := v_token; - v.tokmux := '0'; + v.sysflip1 := not r.sysflip1; + v.token1 := v_token; + v.tokmux := '0'; end if; end if; end if; @@ -662,8 +652,8 @@ begin -- Store request for data transmission. if xmiti.txwrite = '1' and r.allow_char = '1' and r.pend_char = '0' then - v.pend_char := '1'; - v.pend_data := xmiti.txflag & xmiti.txdata; + v.pend_char := '1'; + v.pend_data := xmiti.txflag & xmiti.txdata; end if; -- Store requests for time tick transmission. @@ -684,33 +674,31 @@ begin -- Set fctack high if (FCT requested) and (FCTs allowed) AND -- (no FCT pending) - xmito.fctack <= xmiti.fct_in and xmiti.txen and r.allow_fct and - (not r.pend_fct); + xmito.fctack <= xmiti.fct_in and xmiti.txen and r.allow_fct and (not r.pend_fct); -- Set txack high if (character requested) AND (characters allowed) AND -- (no character pending) - xmito.txack <= xmiti.txwrite and xmiti.txen and r.allow_char and - (not r.pend_char); + xmito.txack <= xmiti.txwrite and xmiti.txen and r.allow_char and (not r.pend_char); -- Update registers. - rin <= v; - rtxin <= vtx; + rin <= v; + rtxin <= vtx; end process; -- Synchronous process in txclk domain - process (txclk) is + process(txclk) is begin if rising_edge(txclk) then -- drive spacewire output signals s_spwdo <= rtx.f_spwdo; s_spwso <= rtx.f_spwso; -- update registers - rtx <= rtxin; + rtx <= rtxin; end if; end process; -- Synchronous process in system clock domain - process (clk) is + process(clk) is begin if rising_edge(clk) then -- update registers diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spwc_spacewire_channel_top.vhd b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spwc_spacewire_channel_top.vhd index 9fad1246..0e16e658 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spwc_spacewire_channel_top.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spwc_spacewire_channel_top.vhd @@ -17,265 +17,266 @@ use work.spwc_errinj_pkg.all; use work.spwc_leds_controller_pkg.all; entity spwc_spacewire_channel_top is - generic( - g_SPWC_TESTBENCH_MODE : std_logic := '0' - ); - port( - reset_i : in std_logic := '0'; -- -- reset_sink.reset - clk_100_i : in std_logic := '0'; -- -- clock_sink_100mhz.clk - clk_200_i : in std_logic := '0'; -- -- clock_sink_200mhz.clk - spw_lvds_p_data_in_i : in std_logic := '0'; -- -- conduit_end_spacewire_lvds.spw_lvds_p_data_in_signal - spw_lvds_n_data_in_i : in std_logic := '0'; -- -- .spw_lvds_n_data_in_signal - spw_lvds_p_strobe_in_i : in std_logic := '0'; -- -- .spw_lvds_p_strobe_in_signal - spw_lvds_n_strobe_in_i : in std_logic := '0'; -- -- .spw_lvds_n_strobe_in_signal - spw_lvds_p_data_out_o : out std_logic; -- -- .spw_lvds_p_data_out_signal - spw_lvds_n_data_out_o : out std_logic; -- -- .spw_lvds_n_data_out_signal - spw_lvds_p_strobe_out_o : out std_logic; -- -- .spw_lvds_p_strobe_out_signal - spw_lvds_n_strobe_out_o : out std_logic; -- -- .spw_lvds_n_strobe_out_signal - spw_rx_enable_i : in std_logic := '0'; -- -- conduit_end_spacewire_enable.spw_rx_enable_signal - spw_tx_enable_i : in std_logic := '0'; -- -- .spw_tx_enable_signal - spw_red_status_led_o : out std_logic; -- -- conduit_end_spacewire_leds.spw_red_status_led_signal - spw_green_status_led_o : out std_logic; -- -- .spw_green_status_led_signal - spw_link_command_autostart_i : in std_logic := '0'; -- -- conduit_end_spacewire_channel.spw_link_command_autostart_signal - spw_link_command_linkstart_i : in std_logic := '0'; -- -- .spw_link_command_linkstart_signal - spw_link_command_linkdis_i : in std_logic := '0'; -- -- .spw_link_command_linkdis_signal - spw_link_command_txdivcnt_i : in std_logic_vector(7 downto 0) := (others => '0'); -- .spw_link_command_txdivcnt_signal - spw_timecode_tx_tick_in_i : in std_logic := '0'; -- -- .spw_timecode_tx_tick_in_signal - spw_timecode_tx_ctrl_in_i : in std_logic_vector(1 downto 0) := (others => '0'); -- .spw_timecode_tx_ctrl_in_signal - spw_timecode_tx_time_in_i : in std_logic_vector(5 downto 0) := (others => '0'); -- .spw_timecode_tx_time_in_signal - spw_data_rx_command_rxread_i : in std_logic := '0'; -- -- .spw_data_rx_command_rxread_signal - spw_data_tx_command_txwrite_i : in std_logic := '0'; -- -- .spw_data_tx_command_txwrite_signal - spw_data_tx_command_txflag_i : in std_logic := '0'; -- -- .spw_data_tx_command_txflag_signal - spw_data_tx_command_txdata_i : in std_logic_vector(7 downto 0) := (others => '0'); -- .spw_data_tx_command_txdata_signal - spw_errinj_ctrl_start_errinj_i : in std_logic := '0'; -- -- .spw_errinj_ctrl_start_errinj_signal - spw_errinj_ctrl_reset_errinj_i : in std_logic := '0'; -- -- .spw_errinj_ctrl_reset_errinj_signal - spw_errinj_ctrl_errinj_code_i : in std_logic_vector(3 downto 0) := (others => '0'); -- .spw_errinj_ctrl_errinj_code_signal - spw_link_status_started_o : out std_logic; -- -- .spw_link_status_started_signal - spw_link_status_connecting_o : out std_logic; -- -- .spw_link_status_connecting_signal - spw_link_status_running_o : out std_logic; -- -- .spw_link_status_running_signal - spw_link_error_errdisc_o : out std_logic; -- -- .spw_link_error_errdisc_signal - spw_link_error_errpar_o : out std_logic; -- -- .spw_link_error_errpar_signal - spw_link_error_erresc_o : out std_logic; -- -- .spw_link_error_erresc_signal - spw_link_error_errcred_o : out std_logic; -- -- .spw_link_error_errcred_signal - spw_timecode_rx_tick_out_o : out std_logic; -- -- .spw_timecode_rx_tick_out_signal - spw_timecode_rx_ctrl_out_o : out std_logic_vector(1 downto 0); -- -- .spw_timecode_rx_ctrl_out_signal - spw_timecode_rx_time_out_o : out std_logic_vector(5 downto 0); -- -- .spw_timecode_rx_time_out_signal - spw_data_rx_status_rxvalid_o : out std_logic; -- -- .spw_data_rx_status_rxvalid_signal - spw_data_rx_status_rxhalff_o : out std_logic; -- -- .spw_data_rx_status_rxhalff_signal - spw_data_rx_status_rxflag_o : out std_logic; -- -- .spw_data_rx_status_rxflag_signal - spw_data_rx_status_rxdata_o : out std_logic_vector(7 downto 0); -- -- .spw_data_rx_status_rxdata_signal - spw_data_tx_status_txrdy_o : out std_logic; -- -- .spw_data_tx_status_txrdy_signal - spw_data_tx_status_txhalff_o : out std_logic; -- -- .spw_data_tx_status_txhalff_signal - spw_errinj_ctrl_errinj_busy_o : out std_logic; -- -- .spw_errinj_ctrl_errinj_busy_signal - spw_errinj_ctrl_errinj_ready_o : out std_logic --- -- .spw_errinj_ctrl_errinj_ready_signal - ); + generic( + g_SPWC_TESTBENCH_MODE : std_logic := '0' + ); + port( + reset_i : in std_logic := '0'; -- -- reset_sink.reset + clk_100_i : in std_logic := '0'; -- -- clock_sink_100mhz.clk + clk_200_i : in std_logic := '0'; -- -- clock_sink_200mhz.clk + spw_lvds_p_data_in_i : in std_logic := '0'; -- -- conduit_end_spacewire_lvds.spw_lvds_p_data_in_signal + spw_lvds_n_data_in_i : in std_logic := '0'; -- -- .spw_lvds_n_data_in_signal + spw_lvds_p_strobe_in_i : in std_logic := '0'; -- -- .spw_lvds_p_strobe_in_signal + spw_lvds_n_strobe_in_i : in std_logic := '0'; -- -- .spw_lvds_n_strobe_in_signal + spw_lvds_p_data_out_o : out std_logic; -- -- .spw_lvds_p_data_out_signal + spw_lvds_n_data_out_o : out std_logic; -- -- .spw_lvds_n_data_out_signal + spw_lvds_p_strobe_out_o : out std_logic; -- -- .spw_lvds_p_strobe_out_signal + spw_lvds_n_strobe_out_o : out std_logic; -- -- .spw_lvds_n_strobe_out_signal + spw_rx_enable_i : in std_logic := '0'; -- -- conduit_end_spacewire_enable.spw_rx_enable_signal + spw_tx_enable_i : in std_logic := '0'; -- -- .spw_tx_enable_signal + spw_red_status_led_o : out std_logic; -- -- conduit_end_spacewire_leds.spw_red_status_led_signal + spw_green_status_led_o : out std_logic; -- -- .spw_green_status_led_signal + spw_link_command_enable_i : in std_logic := '0'; -- -- conduit_end_spacewire_channel.spw_link_command_enable_signal + spw_link_command_autostart_i : in std_logic := '0'; -- -- .spw_link_command_autostart_signal + spw_link_command_linkstart_i : in std_logic := '0'; -- -- .spw_link_command_linkstart_signal + spw_link_command_linkdis_i : in std_logic := '0'; -- -- .spw_link_command_linkdis_signal + spw_link_command_txdivcnt_i : in std_logic_vector(7 downto 0) := (others => '0'); -- .spw_link_command_txdivcnt_signal + spw_timecode_tx_tick_in_i : in std_logic := '0'; -- -- .spw_timecode_tx_tick_in_signal + spw_timecode_tx_ctrl_in_i : in std_logic_vector(1 downto 0) := (others => '0'); -- .spw_timecode_tx_ctrl_in_signal + spw_timecode_tx_time_in_i : in std_logic_vector(5 downto 0) := (others => '0'); -- .spw_timecode_tx_time_in_signal + spw_data_rx_command_rxread_i : in std_logic := '0'; -- -- .spw_data_rx_command_rxread_signal + spw_data_tx_command_txwrite_i : in std_logic := '0'; -- -- .spw_data_tx_command_txwrite_signal + spw_data_tx_command_txflag_i : in std_logic := '0'; -- -- .spw_data_tx_command_txflag_signal + spw_data_tx_command_txdata_i : in std_logic_vector(7 downto 0) := (others => '0'); -- .spw_data_tx_command_txdata_signal + spw_errinj_ctrl_start_errinj_i : in std_logic := '0'; -- -- .spw_errinj_ctrl_start_errinj_signal + spw_errinj_ctrl_reset_errinj_i : in std_logic := '0'; -- -- .spw_errinj_ctrl_reset_errinj_signal + spw_errinj_ctrl_errinj_code_i : in std_logic_vector(3 downto 0) := (others => '0'); -- .spw_errinj_ctrl_errinj_code_signal + spw_link_status_started_o : out std_logic; -- -- .spw_link_status_started_signal + spw_link_status_connecting_o : out std_logic; -- -- .spw_link_status_connecting_signal + spw_link_status_running_o : out std_logic; -- -- .spw_link_status_running_signal + spw_link_error_errdisc_o : out std_logic; -- -- .spw_link_error_errdisc_signal + spw_link_error_errpar_o : out std_logic; -- -- .spw_link_error_errpar_signal + spw_link_error_erresc_o : out std_logic; -- -- .spw_link_error_erresc_signal + spw_link_error_errcred_o : out std_logic; -- -- .spw_link_error_errcred_signal + spw_timecode_rx_tick_out_o : out std_logic; -- -- .spw_timecode_rx_tick_out_signal + spw_timecode_rx_ctrl_out_o : out std_logic_vector(1 downto 0); -- -- .spw_timecode_rx_ctrl_out_signal + spw_timecode_rx_time_out_o : out std_logic_vector(5 downto 0); -- -- .spw_timecode_rx_time_out_signal + spw_data_rx_status_rxvalid_o : out std_logic; -- -- .spw_data_rx_status_rxvalid_signal + spw_data_rx_status_rxhalff_o : out std_logic; -- -- .spw_data_rx_status_rxhalff_signal + spw_data_rx_status_rxflag_o : out std_logic; -- -- .spw_data_rx_status_rxflag_signal + spw_data_rx_status_rxdata_o : out std_logic_vector(7 downto 0); -- -- .spw_data_rx_status_rxdata_signal + spw_data_tx_status_txrdy_o : out std_logic; -- -- .spw_data_tx_status_txrdy_signal + spw_data_tx_status_txhalff_o : out std_logic; -- -- .spw_data_tx_status_txhalff_signal + spw_errinj_ctrl_errinj_busy_o : out std_logic; -- -- .spw_errinj_ctrl_errinj_busy_signal + spw_errinj_ctrl_errinj_ready_o : out std_logic --- -- .spw_errinj_ctrl_errinj_ready_signal + ); end entity spwc_spacewire_channel_top; architecture rtl of spwc_spacewire_channel_top is - -- Alias -- + -- Alias -- - -- Basic Alias - alias a_avs_clock is clk_100_i; - alias a_spw_clock is clk_200_i; - alias a_reset is reset_i; + -- Basic Alias + alias a_avs_clock is clk_100_i; + alias a_spw_clock is clk_200_i; + alias a_reset is reset_i; - -- Constants -- + -- Constants -- - -- Signals -- + -- Signals -- - -- SpaceWire Codec Clock Synchronization Signals (200 MHz) - signal s_spw_codec_link_command_spw : t_spwc_codec_link_command; - signal s_spw_codec_link_status_spw : t_spwc_codec_link_status; - signal s_spw_codec_link_error_spw : t_spwc_codec_link_error; - signal s_spw_codec_timecode_rx_spw : t_spwc_codec_timecode_rx; - signal s_spw_codec_data_rx_status_spw : t_spwc_codec_data_rx_status; - signal s_spw_codec_data_tx_status_spw : t_spwc_codec_data_tx_status; - signal s_spw_codec_err_inj_status_spw : t_spwc_codec_err_inj_status; - signal s_spw_codec_timecode_tx_spw : t_spwc_codec_timecode_tx; - signal s_spw_codec_data_rx_command_spw : t_spwc_codec_data_rx_command; - signal s_spw_codec_data_tx_command_spw : t_spwc_codec_data_tx_command; - signal s_spw_codec_err_inj_command_spw : t_spwc_codec_err_inj_command; + -- SpaceWire Codec Clock Synchronization Signals (200 MHz) + signal s_spw_codec_link_command_spw : t_spwc_codec_link_command; + signal s_spw_codec_link_status_spw : t_spwc_codec_link_status; + signal s_spw_codec_link_error_spw : t_spwc_codec_link_error; + signal s_spw_codec_timecode_rx_spw : t_spwc_codec_timecode_rx; + signal s_spw_codec_data_rx_status_spw : t_spwc_codec_data_rx_status; + signal s_spw_codec_data_tx_status_spw : t_spwc_codec_data_tx_status; + signal s_spw_codec_err_inj_status_spw : t_spwc_codec_err_inj_status; + signal s_spw_codec_timecode_tx_spw : t_spwc_codec_timecode_tx; + signal s_spw_codec_data_rx_command_spw : t_spwc_codec_data_rx_command; + signal s_spw_codec_data_tx_command_spw : t_spwc_codec_data_tx_command; + signal s_spw_codec_err_inj_command_spw : t_spwc_codec_err_inj_command; - -- Spacewire Error Injection Controller Signals - signal s_spw_errinj_controller_control : t_spwc_errinj_controller_control; - signal s_spw_errinj_controller_status : t_spwc_errinj_controller_status; + -- Spacewire Error Injection Controller Signals + signal s_spw_errinj_controller_control : t_spwc_errinj_controller_control; + signal s_spw_errinj_controller_status : t_spwc_errinj_controller_status; - -- SpaceWire Codec Data-Strobe Signals - signal s_spw_codec_ds_encoding_rx : t_spwc_codec_ds_encoding_rx; - signal s_spw_codec_ds_encoding_tx : t_spwc_codec_ds_encoding_tx; + -- SpaceWire Codec Data-Strobe Signals + signal s_spw_codec_ds_encoding_rx : t_spwc_codec_ds_encoding_rx; + signal s_spw_codec_ds_encoding_tx : t_spwc_codec_ds_encoding_tx; - -- SpaceWire LVDS Data-Strobe Signals - signal s_spw_logical_data_in : std_logic; - signal s_spw_logical_strobe_in : std_logic; - signal s_spw_logical_data_out : std_logic; - signal s_spw_logical_strobe_out : std_logic; + -- SpaceWire LVDS Data-Strobe Signals + signal s_spw_logical_data_in : std_logic; + signal s_spw_logical_strobe_in : std_logic; + signal s_spw_logical_data_out : std_logic; + signal s_spw_logical_strobe_out : std_logic; - -- SpaceWire Leds Controller Signals - signal s_spw_leds_control : t_spwc_spw_leds_control; + -- SpaceWire Leds Controller Signals + signal s_spw_leds_control : t_spwc_spw_leds_control; begin - -- Entities Instantiation -- - - -- SpaceWire Codec Clock Domain Synchronization Instantiation - spwc_clk_synchronization_top_inst : entity work.spwc_clk_synchronization_top - port map( - clk_avs_i => a_avs_clock, - clk_spw_i => a_spw_clock, - rst_i => a_reset, - spw_codec_link_command_avs_i.autostart => spw_link_command_autostart_i, - spw_codec_link_command_avs_i.linkstart => spw_link_command_linkstart_i, - spw_codec_link_command_avs_i.linkdis => spw_link_command_linkdis_i, - spw_codec_link_command_avs_i.txdivcnt => spw_link_command_txdivcnt_i, - spw_codec_timecode_tx_avs_i.tick_in => spw_timecode_tx_tick_in_i, - spw_codec_timecode_tx_avs_i.ctrl_in => spw_timecode_tx_ctrl_in_i, - spw_codec_timecode_tx_avs_i.time_in => spw_timecode_tx_time_in_i, - spw_codec_data_rx_command_avs_i.rxread => spw_data_rx_command_rxread_i, - spw_codec_data_tx_command_avs_i.txwrite => spw_data_tx_command_txwrite_i, - spw_codec_data_tx_command_avs_i.txflag => spw_data_tx_command_txflag_i, - spw_codec_data_tx_command_avs_i.txdata => spw_data_tx_command_txdata_i, - spw_errinj_ctrl_control_avs_i.start_errinj => spw_errinj_ctrl_start_errinj_i, - spw_errinj_ctrl_control_avs_i.reset_errinj => spw_errinj_ctrl_reset_errinj_i, - spw_errinj_ctrl_control_avs_i.errinj_code => spw_errinj_ctrl_errinj_code_i, - spw_codec_link_status_spw_i => s_spw_codec_link_status_spw, - spw_codec_link_error_spw_i => s_spw_codec_link_error_spw, - spw_codec_timecode_rx_spw_i => s_spw_codec_timecode_rx_spw, - spw_codec_data_rx_status_spw_i => s_spw_codec_data_rx_status_spw, - spw_codec_data_tx_status_spw_i => s_spw_codec_data_tx_status_spw, - spw_errinj_ctrl_status_spw_i => s_spw_errinj_controller_status, - spw_codec_link_status_avs_o.started => spw_link_status_started_o, - spw_codec_link_status_avs_o.connecting => spw_link_status_connecting_o, - spw_codec_link_status_avs_o.running => spw_link_status_running_o, - spw_codec_link_error_avs_o.errdisc => spw_link_error_errdisc_o, - spw_codec_link_error_avs_o.errpar => spw_link_error_errpar_o, - spw_codec_link_error_avs_o.erresc => spw_link_error_erresc_o, - spw_codec_link_error_avs_o.errcred => spw_link_error_errcred_o, - spw_codec_timecode_rx_avs_o.tick_out => spw_timecode_rx_tick_out_o, - spw_codec_timecode_rx_avs_o.ctrl_out => spw_timecode_rx_ctrl_out_o, - spw_codec_timecode_rx_avs_o.time_out => spw_timecode_rx_time_out_o, - spw_codec_data_rx_status_avs_o.rxvalid => spw_data_rx_status_rxvalid_o, - spw_codec_data_rx_status_avs_o.rxhalff => spw_data_rx_status_rxhalff_o, - spw_codec_data_rx_status_avs_o.rxflag => spw_data_rx_status_rxflag_o, - spw_codec_data_rx_status_avs_o.rxdata => spw_data_rx_status_rxdata_o, - spw_codec_data_tx_status_avs_o.txrdy => spw_data_tx_status_txrdy_o, - spw_codec_data_tx_status_avs_o.txhalff => spw_data_tx_status_txhalff_o, - spw_errinj_ctrl_status_avs_o.errinj_busy => spw_errinj_ctrl_errinj_busy_o, - spw_errinj_ctrl_status_avs_o.errinj_ready => spw_errinj_ctrl_errinj_ready_o, - spw_codec_link_command_spw_o => s_spw_codec_link_command_spw, - spw_codec_timecode_tx_spw_o => s_spw_codec_timecode_tx_spw, - spw_codec_data_rx_command_spw_o => s_spw_codec_data_rx_command_spw, - spw_codec_data_tx_command_spw_o => s_spw_codec_data_tx_command_spw, - spw_errinj_ctrl_control_spw_o => s_spw_errinj_controller_control - ); - - -- SpaceWire Error Injection Controller Instantiation - spwc_errinj_controller_ent_inst : entity work.spwc_errinj_controller_ent - port map( - clk_i => a_spw_clock, - rst_i => a_reset, - errinj_controller_control_i => s_spw_errinj_controller_control, - spw_codec_link_status_i => s_spw_codec_link_status_spw, - spw_codec_err_inj_status_i => s_spw_codec_err_inj_status_spw, - errinj_controller_status_o => s_spw_errinj_controller_status, - spw_codec_err_inj_command_o => s_spw_codec_err_inj_command_spw - ); - - -- SpaceWire Codec Instantiation - spwc_codec_ent_inst : entity work.spwc_codec_ent - port map( - clk_spw_i => a_spw_clock, - rst_i => a_reset, - spw_codec_link_command_i => s_spw_codec_link_command_spw, - spw_codec_ds_encoding_rx_i => s_spw_codec_ds_encoding_rx, - spw_codec_timecode_tx_i => s_spw_codec_timecode_tx_spw, - spw_codec_data_rx_command_i => s_spw_codec_data_rx_command_spw, - spw_codec_data_tx_command_i => s_spw_codec_data_tx_command_spw, - spw_codec_err_inj_command_i => s_spw_codec_err_inj_command_spw, - spw_codec_link_status_o => s_spw_codec_link_status_spw, - spw_codec_ds_encoding_tx_o => s_spw_codec_ds_encoding_tx, - spw_codec_link_error_o => s_spw_codec_link_error_spw, - spw_codec_timecode_rx_o => s_spw_codec_timecode_rx_spw, - spw_codec_data_rx_status_o => s_spw_codec_data_rx_status_spw, - spw_codec_data_tx_status_o => s_spw_codec_data_tx_status_spw, - spw_codec_err_inj_status_o => s_spw_codec_err_inj_status_spw - ); - - -- SpaceWire Data-Strobe Testbench Generate - g_spwc_ds_testbench : if (g_SPWC_TESTBENCH_MODE = '1') generate - - s_spw_logical_data_in <= spw_lvds_p_data_in_i; - s_spw_logical_strobe_in <= spw_lvds_p_strobe_in_i; - spw_lvds_p_data_out_o <= s_spw_logical_data_out; - spw_lvds_p_strobe_out_o <= s_spw_logical_strobe_out; - spw_lvds_n_data_out_o <= '0'; - spw_lvds_n_strobe_out_o <= '0'; - - end generate g_spwc_ds_testbench; - - -- SpaceWire Data-Strobe ALTIOBUF Generate - g_spwc_ds_altiobuff : if (g_SPWC_TESTBENCH_MODE = '0') generate - - -- SpaceWire Data-Strobe Rx Diferential Inputs ALTIOBUF Instantiation - spwc_spw_rx_altiobuf_inst : entity work.spwc_spw_rx_altiobuf - port map( - datain(0) => spw_lvds_p_data_in_i, - datain(1) => spw_lvds_p_strobe_in_i, - datain_b(0) => spw_lvds_n_data_in_i, - datain_b(1) => spw_lvds_n_strobe_in_i, - dataout(0) => s_spw_logical_data_in, - dataout(1) => s_spw_logical_strobe_in - ); - - -- SpaceWire Data-Strobe Tx Diferential Outputs ALTIOBUF Instantiation - spwc_spw_tx_altiobuf_inst : entity work.spwc_spw_tx_altiobuf - port map( - datain(0) => s_spw_logical_data_out, - datain(1) => s_spw_logical_strobe_out, - dataout(0) => spw_lvds_p_data_out_o, - dataout(1) => spw_lvds_p_strobe_out_o, - dataout_b(0) => spw_lvds_n_data_out_o, - dataout_b(1) => spw_lvds_n_strobe_out_o - ); - - end generate g_spwc_ds_altiobuff; - - -- SpaceWire LEDs Controller Instantiation - spwc_leds_controller_ent_inst : entity work.spwc_leds_controller_ent - port map( - clk_i => a_spw_clock, - rst_i => a_reset, - leds_channel_status_i.link_status_running => s_spw_codec_link_status_spw.running, - leds_channel_status_i.data_rx_command_rxread => s_spw_codec_data_rx_command_spw.rxread, - leds_channel_status_i.data_tx_command_txwrite => s_spw_codec_data_tx_command_spw.txwrite, - leds_control_o => s_spw_leds_control - ); - - -- SpaceWire LEDs Outputs ALTIOBUF Instantiation - spwc_leds_out_altiobuf_inst : entity work.spwc_leds_out_altiobuf - port map( - datain(1) => s_spw_leds_control.red_status_led, - datain(0) => s_spw_leds_control.green_status_led, - dataout(1) => spw_red_status_led_o, - dataout(0) => spw_green_status_led_o - ); - - -- Signals Assignments -- - - -- Spacewire Data-Strobe Input Signals Assignments - s_spw_codec_ds_encoding_rx.spw_di <= ('0') when (a_reset = '1') - else (s_spw_logical_data_in) when (spw_rx_enable_i = '1') - else ('0'); - s_spw_codec_ds_encoding_rx.spw_si <= ('0') when (a_reset = '1') - else (s_spw_logical_strobe_in) when (spw_rx_enable_i = '1') - else ('0'); - - -- Spacewire Data-Strobe Output Signals Assignments - s_spw_logical_data_out <= ('0') when (a_reset = '1') - else (s_spw_codec_ds_encoding_tx.spw_do) when (spw_tx_enable_i = '1') - else ('0'); - s_spw_logical_strobe_out <= ('0') when (a_reset = '1') - else (s_spw_codec_ds_encoding_tx.spw_so) when (spw_tx_enable_i = '1') - else ('0'); + -- Entities Instantiation -- + + -- SpaceWire Codec Clock Domain Synchronization Instantiation + spwc_clk_synchronization_top_inst : entity work.spwc_clk_synchronization_top + port map( + clk_avs_i => a_avs_clock, + clk_spw_i => a_spw_clock, + rst_i => a_reset, + spw_codec_link_command_avs_i.autostart => spw_link_command_autostart_i, + spw_codec_link_command_avs_i.linkstart => spw_link_command_linkstart_i, + spw_codec_link_command_avs_i.linkdis => spw_link_command_linkdis_i, + spw_codec_link_command_avs_i.txdivcnt => spw_link_command_txdivcnt_i, + spw_codec_timecode_tx_avs_i.tick_in => spw_timecode_tx_tick_in_i, + spw_codec_timecode_tx_avs_i.ctrl_in => spw_timecode_tx_ctrl_in_i, + spw_codec_timecode_tx_avs_i.time_in => spw_timecode_tx_time_in_i, + spw_codec_data_rx_command_avs_i.rxread => spw_data_rx_command_rxread_i, + spw_codec_data_tx_command_avs_i.txwrite => spw_data_tx_command_txwrite_i, + spw_codec_data_tx_command_avs_i.txflag => spw_data_tx_command_txflag_i, + spw_codec_data_tx_command_avs_i.txdata => spw_data_tx_command_txdata_i, + spw_errinj_ctrl_control_avs_i.start_errinj => spw_errinj_ctrl_start_errinj_i, + spw_errinj_ctrl_control_avs_i.reset_errinj => spw_errinj_ctrl_reset_errinj_i, + spw_errinj_ctrl_control_avs_i.errinj_code => spw_errinj_ctrl_errinj_code_i, + spw_codec_link_status_spw_i => s_spw_codec_link_status_spw, + spw_codec_link_error_spw_i => s_spw_codec_link_error_spw, + spw_codec_timecode_rx_spw_i => s_spw_codec_timecode_rx_spw, + spw_codec_data_rx_status_spw_i => s_spw_codec_data_rx_status_spw, + spw_codec_data_tx_status_spw_i => s_spw_codec_data_tx_status_spw, + spw_errinj_ctrl_status_spw_i => s_spw_errinj_controller_status, + spw_codec_link_status_avs_o.started => spw_link_status_started_o, + spw_codec_link_status_avs_o.connecting => spw_link_status_connecting_o, + spw_codec_link_status_avs_o.running => spw_link_status_running_o, + spw_codec_link_error_avs_o.errdisc => spw_link_error_errdisc_o, + spw_codec_link_error_avs_o.errpar => spw_link_error_errpar_o, + spw_codec_link_error_avs_o.erresc => spw_link_error_erresc_o, + spw_codec_link_error_avs_o.errcred => spw_link_error_errcred_o, + spw_codec_timecode_rx_avs_o.tick_out => spw_timecode_rx_tick_out_o, + spw_codec_timecode_rx_avs_o.ctrl_out => spw_timecode_rx_ctrl_out_o, + spw_codec_timecode_rx_avs_o.time_out => spw_timecode_rx_time_out_o, + spw_codec_data_rx_status_avs_o.rxvalid => spw_data_rx_status_rxvalid_o, + spw_codec_data_rx_status_avs_o.rxhalff => spw_data_rx_status_rxhalff_o, + spw_codec_data_rx_status_avs_o.rxflag => spw_data_rx_status_rxflag_o, + spw_codec_data_rx_status_avs_o.rxdata => spw_data_rx_status_rxdata_o, + spw_codec_data_tx_status_avs_o.txrdy => spw_data_tx_status_txrdy_o, + spw_codec_data_tx_status_avs_o.txhalff => spw_data_tx_status_txhalff_o, + spw_errinj_ctrl_status_avs_o.errinj_busy => spw_errinj_ctrl_errinj_busy_o, + spw_errinj_ctrl_status_avs_o.errinj_ready => spw_errinj_ctrl_errinj_ready_o, + spw_codec_link_command_spw_o => s_spw_codec_link_command_spw, + spw_codec_timecode_tx_spw_o => s_spw_codec_timecode_tx_spw, + spw_codec_data_rx_command_spw_o => s_spw_codec_data_rx_command_spw, + spw_codec_data_tx_command_spw_o => s_spw_codec_data_tx_command_spw, + spw_errinj_ctrl_control_spw_o => s_spw_errinj_controller_control + ); + + -- SpaceWire Error Injection Controller Instantiation + spwc_errinj_controller_ent_inst : entity work.spwc_errinj_controller_ent + port map( + clk_i => a_spw_clock, + rst_i => a_reset, + errinj_controller_control_i => s_spw_errinj_controller_control, + spw_codec_link_status_i => s_spw_codec_link_status_spw, + spw_codec_err_inj_status_i => s_spw_codec_err_inj_status_spw, + errinj_controller_status_o => s_spw_errinj_controller_status, + spw_codec_err_inj_command_o => s_spw_codec_err_inj_command_spw + ); + + -- SpaceWire Codec Instantiation + spwc_codec_ent_inst : entity work.spwc_codec_ent + port map( + clk_spw_i => a_spw_clock, + rst_i => a_reset, + spw_codec_link_command_i => s_spw_codec_link_command_spw, + spw_codec_ds_encoding_rx_i => s_spw_codec_ds_encoding_rx, + spw_codec_timecode_tx_i => s_spw_codec_timecode_tx_spw, + spw_codec_data_rx_command_i => s_spw_codec_data_rx_command_spw, + spw_codec_data_tx_command_i => s_spw_codec_data_tx_command_spw, + spw_codec_err_inj_command_i => s_spw_codec_err_inj_command_spw, + spw_codec_link_status_o => s_spw_codec_link_status_spw, + spw_codec_ds_encoding_tx_o => s_spw_codec_ds_encoding_tx, + spw_codec_link_error_o => s_spw_codec_link_error_spw, + spw_codec_timecode_rx_o => s_spw_codec_timecode_rx_spw, + spw_codec_data_rx_status_o => s_spw_codec_data_rx_status_spw, + spw_codec_data_tx_status_o => s_spw_codec_data_tx_status_spw, + spw_codec_err_inj_status_o => s_spw_codec_err_inj_status_spw + ); + + -- SpaceWire Data-Strobe Testbench Generate + g_spwc_ds_testbench : if (g_SPWC_TESTBENCH_MODE = '1') generate + + s_spw_logical_data_in <= spw_lvds_p_data_in_i; + s_spw_logical_strobe_in <= spw_lvds_p_strobe_in_i; + spw_lvds_p_data_out_o <= s_spw_logical_data_out; + spw_lvds_p_strobe_out_o <= s_spw_logical_strobe_out; + spw_lvds_n_data_out_o <= '0'; + spw_lvds_n_strobe_out_o <= '0'; + + end generate g_spwc_ds_testbench; + + -- SpaceWire Data-Strobe ALTIOBUF Generate + g_spwc_ds_altiobuff : if (g_SPWC_TESTBENCH_MODE = '0') generate + + -- SpaceWire Data-Strobe Rx Diferential Inputs ALTIOBUF Instantiation + spwc_spw_rx_altiobuf_inst : entity work.spwc_spw_rx_altiobuf + port map( + datain(0) => spw_lvds_p_data_in_i, + datain(1) => spw_lvds_p_strobe_in_i, + datain_b(0) => spw_lvds_n_data_in_i, + datain_b(1) => spw_lvds_n_strobe_in_i, + dataout(0) => s_spw_logical_data_in, + dataout(1) => s_spw_logical_strobe_in + ); + + -- SpaceWire Data-Strobe Tx Diferential Outputs ALTIOBUF Instantiation + spwc_spw_tx_altiobuf_inst : entity work.spwc_spw_tx_altiobuf + port map( + datain(0) => s_spw_logical_data_out, + datain(1) => s_spw_logical_strobe_out, + dataout(0) => spw_lvds_p_data_out_o, + dataout(1) => spw_lvds_p_strobe_out_o, + dataout_b(0) => spw_lvds_n_data_out_o, + dataout_b(1) => spw_lvds_n_strobe_out_o + ); + + end generate g_spwc_ds_altiobuff; + + -- SpaceWire LEDs Controller Instantiation + spwc_leds_controller_ent_inst : entity work.spwc_leds_controller_ent + port map( + clk_i => a_spw_clock, + rst_i => a_reset, + leds_channel_status_i.link_status_running => s_spw_codec_link_status_spw.running, + leds_channel_status_i.data_rx_command_rxread => s_spw_codec_data_rx_command_spw.rxread, + leds_channel_status_i.data_tx_command_txwrite => s_spw_codec_data_tx_command_spw.txwrite, + leds_control_o => s_spw_leds_control + ); + + -- SpaceWire LEDs Outputs ALTIOBUF Instantiation + spwc_leds_out_altiobuf_inst : entity work.spwc_leds_out_altiobuf + port map( + datain(1) => s_spw_leds_control.red_status_led, + datain(0) => s_spw_leds_control.green_status_led, + dataout(1) => spw_red_status_led_o, + dataout(0) => spw_green_status_led_o + ); + + -- Signals Assignments -- + + -- Spacewire Data-Strobe Input Signals Assignments + s_spw_codec_ds_encoding_rx.spw_di <= ('0') when (a_reset = '1') + else (s_spw_logical_data_in) when ((spw_rx_enable_i = '1') and (spw_link_command_enable_i = '1')) + else ('0'); + s_spw_codec_ds_encoding_rx.spw_si <= ('0') when (a_reset = '1') + else (s_spw_logical_strobe_in) when ((spw_rx_enable_i = '1') and (spw_link_command_enable_i = '1')) + else ('0'); + + -- Spacewire Data-Strobe Output Signals Assignments + s_spw_logical_data_out <= ('0') when (a_reset = '1') + else (s_spw_codec_ds_encoding_tx.spw_do) when ((spw_tx_enable_i = '1') and (spw_link_command_enable_i = '1')) + else ('0'); + s_spw_logical_strobe_out <= ('0') when (a_reset = '1') + else (s_spw_codec_ds_encoding_tx.spw_so) when ((spw_tx_enable_i = '1') and (spw_link_command_enable_i = '1')) + else ('0'); end architecture rtl; -- of spwc_spacewire_channel_top diff --git a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel_hw.tcl b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel_hw.tcl index 783f776c..302b68ed 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel_hw.tcl +++ b/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel_hw.tcl @@ -4,7 +4,7 @@ # -# SpaceWire_Channel "SpaceWire_Channel" v1.4 +# SpaceWire_Channel "SpaceWire_Channel" v1.5 # rfranca 2020.06.30.17:45:51 # # @@ -20,7 +20,7 @@ package require -exact qsys 16.1 # set_module_property DESCRIPTION "" set_module_property NAME SpaceWire_Channel -set_module_property VERSION 1.4 +set_module_property VERSION 1.5 set_module_property INTERNAL false set_module_property OPAQUE_ADDRESS_MAP true set_module_property AUTHOR rfranca @@ -287,6 +287,7 @@ set_interface_property conduit_end_spacewire_channel PORT_NAME_MAP "" set_interface_property conduit_end_spacewire_channel CMSIS_SVD_VARIABLES "" set_interface_property conduit_end_spacewire_channel SVD_ADDRESS_GROUP "" +add_interface_port conduit_end_spacewire_channel spw_link_command_enable_i spw_link_command_enable_signal Input 1 add_interface_port conduit_end_spacewire_channel spw_link_command_autostart_i spw_link_command_autostart_signal Input 1 add_interface_port conduit_end_spacewire_channel spw_link_command_linkstart_i spw_link_command_linkstart_signal Input 1 add_interface_port conduit_end_spacewire_channel spw_link_command_linkdis_i spw_link_command_linkdis_signal Input 1 diff --git a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/SpaceWire_Channel.cr.mti b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/SpaceWire_Channel.cr.mti index 1940b4b4..f58c6526 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/SpaceWire_Channel.cr.mti +++ b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/SpaceWire_Channel.cr.mti @@ -1,4 +1,4 @@ -../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd +../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -10,7 +10,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling architecture RTL of spwc_clk_synchronization_tx_timecode_ent -- Loading entity spwc_timecode_dc_fifo -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -30,7 +30,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwstream -- Compiling architecture spwstream_arch of spwstream -} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_status_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_status_ent.vhd +} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_status_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_status_ent.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -53,7 +53,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwrecvfront_fast -- Compiling architecture spwrecvfront_arch of spwrecvfront_fast -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -63,7 +63,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwlink -- Compiling architecture spwlink_arch of spwlink -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -72,7 +72,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwram -- Compiling architecture spwram_arch of spwram -} {} {}} ../Testbench/testbench_top.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd +} {} {}} ../Testbench/testbench_top.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -87,7 +87,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Loading entity spwc_spacewire_channel_top -- Loading entity spwstream -} {} {}} ../Testbench/testbench_synchronization_top.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_synchronization_top.vhd +} {} {}} ../Testbench/testbench_synchronization_top.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_synchronization_top.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -109,7 +109,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Loading package std_logic_1164 -- Compiling package spwpkg -} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd +} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -143,7 +143,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity config_avs_stimuli -- Compiling architecture RTL of config_avs_stimuli -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -174,7 +174,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwrecv -- Compiling architecture spwrecv_arch of spwrecv -} {} {}} ../SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -184,7 +184,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwc_spw_tx_altiobuf -- Compiling architecture RTL of spwc_spw_tx_altiobuf -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spwc_codec.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spwc_codec.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -196,7 +196,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling architecture rtl of spwc_codec_ent -- Loading entity spwstream -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -206,7 +206,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwxmit -- Compiling architecture spwxmit_arch of spwxmit -} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd +} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -219,7 +219,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling architecture RTL of spwc_clk_synchronization_commands_ent -- Loading entity spwc_command_dc_fifo -} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd +} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -263,7 +263,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwram -- Compiling architecture spwram_arch of spwram -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/streamtest.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/streamtest.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/streamtest.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/streamtest.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -273,7 +273,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity streamtest -- Compiling architecture streamtest_arch of streamtest -} {} {}} ../SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd +} {} {}} ../SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -285,7 +285,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwc_errinj_controller_ent -- Compiling architecture RTL of spwc_errinj_controller_ent -} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd +} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -306,7 +306,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwrecvfront_generic -- Compiling architecture spwrecvfront_arch of spwrecvfront_generic -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -326,7 +326,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwxmit -- Compiling architecture spwxmit_arch of spwxmit -} {} {}} ../SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd +} {} {}} ../SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -358,7 +358,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling architecture RTL of spwc_clk_synchronization_status_ent -- Loading entity spwc_status_dc_fifo -} {} {}} ../SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd +} {} {}} ../SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -368,7 +368,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling package body spwc_leds_controller_pkg -- Loading package spwc_leds_controller_pkg -} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd +} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -376,17 +376,18 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwc_command_dc_fifo -- Compiling architecture SYN of spwc_command_dc_fifo -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO -- Loading package std_logic_1164 -- Loading package NUMERIC_STD +-- Loading package MATH_REAL -- Loading package spwpkg -- Compiling entity spwerr -- Compiling architecture spwerr_arch of spwerr -} {} {}} ../SpaceWire_Channel/SPW_LEDS_CONTROLLER/altera_ip/altiobuf/spwc_leds_out_altiobuf/spwc_leds_out_altiobuf.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/altera_ip/altiobuf/spwc_leds_out_altiobuf/spwc_leds_out_altiobuf.vhd +} {} {}} ../SpaceWire_Channel/SPW_LEDS_CONTROLLER/altera_ip/altiobuf/spwc_leds_out_altiobuf/spwc_leds_out_altiobuf.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/altera_ip/altiobuf/spwc_leds_out_altiobuf/spwc_leds_out_altiobuf.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -420,7 +421,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity streamtest -- Compiling architecture streamtest_arch of streamtest -} {} {}} ../SpaceWire_Channel/spwc_spacewire_channel_top.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spwc_spacewire_channel_top.vhd +} {} {}} ../SpaceWire_Channel/spwc_spacewire_channel_top.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spwc_spacewire_channel_top.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -440,7 +441,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Loading entity spwc_leds_controller_ent -- Loading entity spwc_leds_out_altiobuf -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -448,7 +449,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity syncdff -- Compiling architecture syncdff_arch of syncdff -} {} {}} ../Testbench/config_spw_stimuli.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_spw_stimuli.vhd +} {} {}} ../Testbench/config_spw_stimuli.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_spw_stimuli.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -459,7 +460,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity config_spw_stimuli -- Compiling architecture RTL of config_spw_stimuli -} {} {}} ../Testbench/config_avs_stimuli.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_avs_stimuli.vhd +} {} {}} ../Testbench/config_avs_stimuli.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_avs_stimuli.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -482,7 +483,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling architecture RTL of spwc_clk_synchronization_rx_data_ent -- Loading entity spwc_data_dc_fifo -} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd +} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -504,7 +505,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwxmit_fast -- Compiling architecture spwxmit_fast_arch of spwxmit_fast -} {} {}} ../SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd +} {} {}} ../SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -526,7 +527,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling architecture RTL of spwc_clk_synchronization_commands_ent -- Loading entity spwc_command_dc_fifo -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -535,7 +536,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Loading package spwpkg -- Compiling package spwc_codec_pkg -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -545,7 +546,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwstream -- Compiling architecture spwstream_arch of spwstream -} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd +} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -553,7 +554,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwc_timecode_dc_fifo -- Compiling architecture SYN of spwc_timecode_dc_fifo -} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd +} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -571,7 +572,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Loading entity spwc_clk_synchronization_tx_timecode_ent -- Loading entity spwc_clk_synchronization_rx_timecode_ent -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -581,7 +582,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwrecvfront_fast -- Compiling architecture spwrecvfront_arch of spwrecvfront_fast -} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd +} {} {}} ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -589,7 +590,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity spwc_status_dc_fifo -- Compiling architecture SYN of spwc_status_dc_fifo -} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO @@ -604,7 +605,7 @@ Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct -- Compiling entity syncdff -- Compiling architecture syncdff_arch of syncdff -} {} {}} ../SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd +} {} {}} ../SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd {1 {vcom -work work -2002 -explicit -stats=none D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd Model Technology ModelSim - Intel FPGA Edition vcom 10.5b Compiler 2016.10 Oct 5 2016 -- Loading package STANDARD -- Loading package TEXTIO diff --git a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/SpaceWire_Channel.mpf b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/SpaceWire_Channel.mpf index 470339b8..5e1d7612 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/SpaceWire_Channel.mpf +++ b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/SpaceWire_Channel.mpf @@ -412,79 +412,79 @@ Project_DefaultLib = work Project_SortMethod = unused Project_Files_Count = 37 Project_File_0 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd -Project_File_P_0 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 6 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_0 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620845105 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 6 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_1 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd -Project_File_P_1 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1599275932 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 24 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_1 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 24 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_2 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd -Project_File_P_2 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1595826185 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 22 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_2 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 22 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_3 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd -Project_File_P_3 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 9 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_3 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620696974 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 9 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_4 = ../SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd -Project_File_P_4 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1599275932 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 15 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_4 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 15 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_5 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd -Project_File_P_5 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 4 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_5 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620845154 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 4 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_6 = ../SpaceWire_Channel/SPW_CODEC/spwc_codec.vhd -Project_File_P_6 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 17 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_6 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 17 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_7 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd -Project_File_P_7 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 8 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_7 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620696971 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 8 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_8 = ../SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd -Project_File_P_8 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_LEDS_CONTROLLER last_compile 1599275932 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 31 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_8 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_LEDS_CONTROLLER last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 31 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_9 = ../SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd -Project_File_P_9 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_ERRINJ last_compile 1607035842 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 12 dont_compile 0 cover_nosub 0 vhdl_use93 2002 +Project_File_P_9 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_ERRINJ last_compile 1607084436 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 12 dont_compile 0 cover_nosub 0 vhdl_use93 2002 Project_File_10 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd -Project_File_P_10 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 26 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_10 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 26 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_11 = ../SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd -Project_File_P_11 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 16 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_11 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 16 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_12 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd -Project_File_P_12 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 7 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_12 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620845081 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 7 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_13 = ../SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd -Project_File_P_13 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_LEDS_CONTROLLER last_compile 1599275932 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 30 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_13 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_LEDS_CONTROLLER last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 30 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_14 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd -Project_File_P_14 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1599275932 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 20 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_14 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 20 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_15 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd -Project_File_P_15 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1599275932 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 21 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_15 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 21 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_16 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_status_ent.vhd -Project_File_P_16 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 27 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_16 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 27 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_17 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd -Project_File_P_17 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 2 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_17 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620696820 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 2 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_18 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd -Project_File_P_18 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 5 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_18 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620696981 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 5 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_19 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd -Project_File_P_19 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 28 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_19 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 28 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_20 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd -Project_File_P_20 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 18 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_20 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 18 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_21 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd -Project_File_P_21 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 3 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_21 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620696986 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 3 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_22 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd -Project_File_P_22 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1611201882 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 1 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_22 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620698079 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 1 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_23 = ../SpaceWire_Channel/SPW_LEDS_CONTROLLER/altera_ip/altiobuf/spwc_leds_out_altiobuf/spwc_leds_out_altiobuf.vhd -Project_File_P_23 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_LEDS_CONTROLLER last_compile 1599275932 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 29 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_23 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_LEDS_CONTROLLER last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 29 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_24 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd -Project_File_P_24 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 19 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_24 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 19 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_25 = ../Testbench/testbench_top.vhd -Project_File_P_25 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 36 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_25 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1620845173 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 36 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_26 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/streamtest.vhd -Project_File_P_26 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 10 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_26 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620696968 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 10 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_27 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd -Project_File_P_27 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 0 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_27 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620844917 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 0 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_28 = ../Testbench/testbench_synchronization_top.vhd -Project_File_P_28 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 35 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_28 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 35 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_29 = ../SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd -Project_File_P_29 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_ERRINJ last_compile 1607035842 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 13 dont_compile 0 cover_nosub 0 vhdl_use93 2002 +Project_File_P_29 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_ERRINJ last_compile 1607084436 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 13 dont_compile 0 cover_nosub 0 vhdl_use93 2002 Project_File_30 = ../SpaceWire_Channel/spwc_spacewire_channel_top.vhd -Project_File_P_30 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1607035842 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 32 dont_compile 0 cover_nosub 0 vhdl_use93 2002 +Project_File_P_30 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1620848557 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 32 dont_compile 0 cover_nosub 0 vhdl_use93 2002 Project_File_31 = ../SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd -Project_File_P_31 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607035842 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 11 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_31 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1620696965 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 11 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_32 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd -Project_File_P_32 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1595826185 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 23 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_32 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 23 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_33 = ../Testbench/config_avs_stimuli.vhd -Project_File_P_33 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1595826185 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 33 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_33 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1607084436 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 33 dont_compile 0 cover_nosub 0 vhdl_use93 2002 Project_File_34 = ../Testbench/config_spw_stimuli.vhd -Project_File_P_34 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1595826185 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 34 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_34 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1607084436 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 34 dont_compile 0 cover_nosub 0 vhdl_use93 2002 Project_File_35 = ../SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd -Project_File_P_35 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1595826185 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 25 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_35 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CLK_SYNCHRONIZATION last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 25 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_File_36 = ../SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd -Project_File_P_36 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1599275932 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 14 cover_nosub 0 dont_compile 0 vhdl_use93 2002 +Project_File_P_36 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder SPW_CODEC last_compile 1607084436 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 14 cover_nosub 0 dont_compile 0 vhdl_use93 2002 Project_Sim_Count = 0 Project_Folder_Count = 4 Project_Folder_0 = SPW_CLK_SYNCHRONIZATION diff --git a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd index 982b721c..9e6af6a2 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd +++ b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd @@ -10,207 +10,230 @@ end entity testbench_top; architecture RTL of testbench_top is - -- clk and rst signals - signal clk200 : std_logic := '0'; - signal clk100 : std_logic := '0'; - signal rst : std_logic := '1'; - - -- dut signals - - -- lvds signals (comm) - signal s_spw_codec_comm_di : std_logic; - signal s_spw_codec_comm_do : std_logic; - signal s_spw_codec_comm_si : std_logic; - signal s_spw_codec_comm_so : std_logic; - - -- lvds signals (dummy) - signal s_spw_codec_dummy_di : std_logic; - signal s_spw_codec_dummy_do : std_logic; - signal s_spw_codec_dummy_si : std_logic; - signal s_spw_codec_dummy_so : std_logic; - - -- spacewire clock signal - signal s_spw_clock : std_logic; - - --dummy - signal s_dummy_spw_rxvalid : std_logic; - signal s_dummy_spw_rxhalff : std_logic; - signal s_dummy_spw_rxflag : std_logic; - signal s_dummy_spw_rxdata : std_logic_vector(7 downto 0); - signal s_dummy_spw_rxread : std_logic; - - signal s_spwcfg_autostart : std_logic; - signal s_spwcfg_linkstart : std_logic; - signal s_spwcfg_linkdis : std_logic; - signal s_spwcfg_txdivcnt : std_logic_vector(7 downto 0); - - signal s_spwerr_start_errinj : std_logic; - signal s_spwerr_reset_errinj : std_logic; - signal s_spwerr_errinj_code : std_logic_vector(3 downto 0); - - signal s_stats_spw_started : std_logic; - signal s_stats_spw_connecting : std_logic; - signal s_stats_spw_running : std_logic; - signal s_error_spw_errdisc : std_logic; - signal s_error_spw_errpar : std_logic; - signal s_error_spw_erresc : std_logic; - signal s_error_spw_errcred : std_logic; + -- clk and rst signals + signal clk200 : std_logic := '0'; + signal clk100 : std_logic := '0'; + signal rst : std_logic := '1'; + + -- dut signals + + -- lvds signals (comm) + signal s_spw_codec_comm_di : std_logic; + signal s_spw_codec_comm_do : std_logic; + signal s_spw_codec_comm_si : std_logic; + signal s_spw_codec_comm_so : std_logic; + + -- lvds signals (dummy) + signal s_spw_codec_dummy_di : std_logic; + signal s_spw_codec_dummy_do : std_logic; + signal s_spw_codec_dummy_si : std_logic; + signal s_spw_codec_dummy_so : std_logic; + + -- spacewire clock signal + signal s_spw_clock : std_logic; + + -- spacewire enable signal + signal s_spw_enable : std_logic; + + --dummy + signal s_dummy_spw_rxvalid : std_logic; + signal s_dummy_spw_rxhalff : std_logic; + signal s_dummy_spw_rxflag : std_logic; + signal s_dummy_spw_rxdata : std_logic_vector(7 downto 0); + signal s_dummy_spw_rxread : std_logic; + + signal s_spwcfg_autostart : std_logic; + signal s_spwcfg_linkstart : std_logic; + signal s_spwcfg_linkdis : std_logic; + signal s_spwcfg_txdivcnt : std_logic_vector(7 downto 0); + + signal s_spwerr_start_errinj : std_logic; + signal s_spwerr_reset_errinj : std_logic; + signal s_spwerr_errinj_code : std_logic_vector(3 downto 0); + + signal s_stats_spw_started : std_logic; + signal s_stats_spw_connecting : std_logic; + signal s_stats_spw_running : std_logic; + signal s_error_spw_errdisc : std_logic; + signal s_error_spw_errpar : std_logic; + signal s_error_spw_erresc : std_logic; + signal s_error_spw_errcred : std_logic; + + constant c_SPW_DI_RANDOM_NOISE : std_logic_vector(1023 downto 0) := "1110001000110011001111001001110101100101011010000101100110000000110110100100011110000111110001111101011111101110110101111010100010100001011111111010111110001111010101000101011010110000000111010011010110101100000110101000010110101100110111111001100001100101101100010100100101100110111010011000000111100001010000110000111111110101001011110011010011110000101101111110110000101001010110110011100011000101110000000001101111000000110110010110100011100000011100101110000111001110001000101000001101100110111001011001011000011000010111110010100110010100011010110110111011111010111011001001000000011100101101111000100000001101011011000001111111000101010101001110110010110001111000000000100011000001111110100001001100010110110010001010101000001001000000100111011111100110000000101100001101110100110110001101111000011011011100110110001100011111101111011101010111101100110111001111111000000011010111111000110100100100010100000110101001000010001110001000001011110000111011110000101100000110100111101001000001111111101100010000010100110110"; + constant c_SPW_SI_RANDOM_NOISE : std_logic_vector(1023 downto 0) := "0011101011111111011110101100111000101011100001101001011001111011100111111011110111010111100010110010101100111111100110101100110100000011110100110101101111000010001011000101111101111011101111111000111111001100111001011101100001110110000001010101111010010101100111001100000111111101010011100100001011000101001110010011010100001011001001000000101000000110110101111101001001010011000111110110010111011110010111000011101100011001100110000100110001100001011110010011101101001011100010000001000000010100110110101000110001010111111011000011000000001000100010000100011001000101001100110100110001000100001111010000001010010001100000010101010001111111100100111100000101000011101011111110100100100101111010010110111101010010110001110110101101101110001111101101011101001010011000100111001110110100011100000011110011010011100001000000010110111110110110011001000000111111001110001000111100100111110110000010000111110101100011000101001101101101100101010001010011000000011111001000111010100110010001111101111001010100000100001001000001100011"; + + signal s_random_noise_cnt : natural range 0 to 1023; begin - clk200 <= not clk200 after 2.5 ns; -- 200 MHz - clk100 <= not clk100 after 5 ns; -- 100 MHz - rst <= '0' after 100 ns; - - spwc_spacewire_channel_top_inst : entity work.spwc_spacewire_channel_top - generic map( - g_SPWC_TESTBENCH_MODE => '1' - ) - port map( - reset_i => rst, - clk_100_i => clk100, - clk_200_i => clk200, - spw_lvds_p_data_in_i => s_spw_codec_comm_di, - spw_lvds_n_data_in_i => '0', - spw_lvds_p_strobe_in_i => s_spw_codec_comm_si, - spw_lvds_n_strobe_in_i => '0', - spw_lvds_p_data_out_o => s_spw_codec_comm_do, - spw_lvds_n_data_out_o => open, - spw_lvds_p_strobe_out_o => s_spw_codec_comm_so, - spw_lvds_n_strobe_out_o => open, - spw_rx_enable_i => '1', - spw_tx_enable_i => '1', - spw_red_status_led_o => open, - spw_green_status_led_o => open, - spw_link_command_autostart_i => s_spwcfg_autostart, - spw_link_command_linkstart_i => s_spwcfg_linkstart, - spw_link_command_linkdis_i => s_spwcfg_linkdis, - spw_link_command_txdivcnt_i => s_spwcfg_txdivcnt, - spw_timecode_tx_tick_in_i => '0', - spw_timecode_tx_ctrl_in_i => (others => '0'), - spw_timecode_tx_time_in_i => (others => '0'), - spw_data_rx_command_rxread_i => '0', - spw_data_tx_command_txwrite_i => '0', - spw_data_tx_command_txflag_i => '0', - spw_data_tx_command_txdata_i => (others => '0'), - spw_errinj_ctrl_start_errinj_i => s_spwerr_start_errinj, - spw_errinj_ctrl_reset_errinj_i => s_spwerr_reset_errinj, - spw_errinj_ctrl_errinj_code_i => s_spwerr_errinj_code, - spw_link_status_started_o => open, - spw_link_status_connecting_o => open, - spw_link_status_running_o => open, - spw_link_error_errdisc_o => open, - spw_link_error_errpar_o => open, - spw_link_error_erresc_o => open, - spw_link_error_errcred_o => open, - spw_timecode_rx_tick_out_o => open, - spw_timecode_rx_ctrl_out_o => open, - spw_timecode_rx_time_out_o => open, - spw_data_rx_status_rxvalid_o => open, - spw_data_rx_status_rxhalff_o => open, - spw_data_rx_status_rxflag_o => open, - spw_data_rx_status_rxdata_o => open, - spw_data_tx_status_txrdy_o => open, - spw_data_tx_status_txhalff_o => open, - spw_errinj_ctrl_errinj_busy_o => open, - spw_errinj_ctrl_errinj_ready_o => open - ); - - -- s_spw_codec_comm_di <= s_spw_codec_comm_do; - -- s_spw_codec_comm_si <= s_spw_codec_comm_so; - - p_spw_cfg : process(clk100, rst) is - variable v_cnt : natural := 0; - begin - if rst = '1' then - s_spwcfg_autostart <= '0'; - s_spwcfg_linkstart <= '0'; - s_spwcfg_linkdis <= '0'; - s_spwcfg_txdivcnt <= x"01"; - s_spwerr_start_errinj <= '0'; - s_spwerr_reset_errinj <= '0'; - s_spwerr_errinj_code <= c_SPWC_ERRINJ_CODE_NONE; - v_cnt := 0; - elsif rising_edge(clk100) then - s_spwcfg_autostart <= '1'; - s_spwcfg_linkstart <= '0'; - s_spwcfg_linkdis <= '0'; - s_spwcfg_txdivcnt <= x"01"; - - s_spwerr_start_errinj <= '0'; - s_spwerr_reset_errinj <= '0'; - s_spwerr_errinj_code <= c_SPWC_ERRINJ_CODE_NONE; - case (v_cnt) is - when 5000 => - s_spwerr_start_errinj <= '1'; - when 6000 => - s_spwerr_reset_errinj <= '1'; - when others => - null; - end case; - v_cnt := v_cnt + 1; - - end if; - end process p_spw_cfg; - - s_spw_clock <= (s_spw_codec_comm_so) xor (s_spw_codec_comm_do); - - -- spw connection - -- SpaceWire Light Codec Component - spw_stimuli_spwstream_inst : entity work.spwstream - generic map( - sysfreq => 200000000.0, - txclkfreq => 0.0, - rximpl => impl_generic, - rxchunk => 1, - tximpl => impl_generic, - rxfifosize_bits => 11, - txfifosize_bits => 11 - ) - port map( - clk => clk200, - rxclk => clk200, - txclk => clk200, - rst => rst, - autostart => '1', - linkstart => '1', - linkdis => '0', - txdivcnt => x"01", - tick_in => '0', - ctrl_in => "00", - time_in => "000000", - txwrite => '0', - txflag => '0', - txdata => x"00", - txrdy => open, - txhalff => open, - tick_out => open, - ctrl_out => open, - time_out => open, - rxvalid => s_dummy_spw_rxvalid, - rxhalff => s_dummy_spw_rxhalff, - rxflag => s_dummy_spw_rxflag, - rxdata => s_dummy_spw_rxdata, - rxread => s_dummy_spw_rxread, - started => s_stats_spw_started, - connecting => s_stats_spw_connecting, - running => s_stats_spw_running, - errdisc => s_error_spw_errdisc, - errpar => s_error_spw_errpar, - erresc => s_error_spw_erresc, - errcred => s_error_spw_errcred, - spw_di => s_spw_codec_dummy_di, - spw_si => s_spw_codec_dummy_si, - spw_do => s_spw_codec_dummy_do, - spw_so => s_spw_codec_dummy_so, - err_inj_i => '0', - err_sel_i => reserved, - err_stat_o => open - ); - - s_spw_codec_comm_di <= s_spw_codec_dummy_do; - s_spw_codec_comm_si <= s_spw_codec_dummy_so; - s_spw_codec_dummy_di <= s_spw_codec_comm_do; - s_spw_codec_dummy_si <= s_spw_codec_comm_so; + clk200 <= not clk200 after 2.5 ns; -- 200 MHz + clk100 <= not clk100 after 5 ns; -- 100 MHz + rst <= '0' after 100 ns; + + spwc_spacewire_channel_top_inst : entity work.spwc_spacewire_channel_top + generic map( + g_SPWC_TESTBENCH_MODE => '1' + ) + port map( + reset_i => rst, + clk_100_i => clk100, + clk_200_i => clk200, + spw_lvds_p_data_in_i => s_spw_codec_comm_di, + spw_lvds_n_data_in_i => '0', + spw_lvds_p_strobe_in_i => s_spw_codec_comm_si, + spw_lvds_n_strobe_in_i => '0', + spw_lvds_p_data_out_o => s_spw_codec_comm_do, + spw_lvds_n_data_out_o => open, + spw_lvds_p_strobe_out_o => s_spw_codec_comm_so, + spw_lvds_n_strobe_out_o => open, + spw_rx_enable_i => s_spw_enable, + spw_tx_enable_i => s_spw_enable, + spw_red_status_led_o => open, + spw_green_status_led_o => open, + spw_link_command_autostart_i => s_spwcfg_autostart, + spw_link_command_linkstart_i => s_spwcfg_linkstart, + spw_link_command_linkdis_i => s_spwcfg_linkdis, + spw_link_command_txdivcnt_i => s_spwcfg_txdivcnt, + spw_timecode_tx_tick_in_i => '0', + spw_timecode_tx_ctrl_in_i => (others => '0'), + spw_timecode_tx_time_in_i => (others => '0'), + spw_data_rx_command_rxread_i => '0', + spw_data_tx_command_txwrite_i => '0', + spw_data_tx_command_txflag_i => '0', + spw_data_tx_command_txdata_i => (others => '0'), + spw_errinj_ctrl_start_errinj_i => s_spwerr_start_errinj, + spw_errinj_ctrl_reset_errinj_i => s_spwerr_reset_errinj, + spw_errinj_ctrl_errinj_code_i => s_spwerr_errinj_code, + spw_link_status_started_o => open, + spw_link_status_connecting_o => open, + spw_link_status_running_o => open, + spw_link_error_errdisc_o => open, + spw_link_error_errpar_o => open, + spw_link_error_erresc_o => open, + spw_link_error_errcred_o => open, + spw_timecode_rx_tick_out_o => open, + spw_timecode_rx_ctrl_out_o => open, + spw_timecode_rx_time_out_o => open, + spw_data_rx_status_rxvalid_o => open, + spw_data_rx_status_rxhalff_o => open, + spw_data_rx_status_rxflag_o => open, + spw_data_rx_status_rxdata_o => open, + spw_data_tx_status_txrdy_o => open, + spw_data_tx_status_txhalff_o => open, + spw_errinj_ctrl_errinj_busy_o => open, + spw_errinj_ctrl_errinj_ready_o => open + ); + + s_spw_enable <= '0', '1' after 5 us; + + -- s_spw_codec_comm_di <= s_spw_codec_comm_do; + -- s_spw_codec_comm_si <= s_spw_codec_comm_so; + + p_spw_cfg : process(clk100, rst) is + variable v_cnt : natural := 0; + begin + if rst = '1' then + s_spwcfg_autostart <= '0'; + s_spwcfg_linkstart <= '0'; + s_spwcfg_linkdis <= '0'; + s_spwcfg_txdivcnt <= x"01"; + s_spwerr_start_errinj <= '0'; + s_spwerr_reset_errinj <= '0'; + s_spwerr_errinj_code <= c_SPWC_ERRINJ_CODE_NONE; + s_random_noise_cnt <= 1023; + v_cnt := 0; + elsif rising_edge(clk100) then + s_spwcfg_autostart <= '1'; + s_spwcfg_linkstart <= '1'; + s_spwcfg_linkdis <= '0'; + s_spwcfg_txdivcnt <= x"01"; + + s_spwerr_start_errinj <= '0'; + s_spwerr_reset_errinj <= '0'; + s_spwerr_errinj_code <= c_SPWC_ERRINJ_CODE_NONE; + -- s_spwerr_errinj_code <= c_SPWC_ERRINJ_CODE_PARITY; + case (v_cnt) is + when 5000 => + -- s_spwerr_start_errinj <= '1'; + -- s_spwcfg_autostart <= '1'; + -- s_spwcfg_linkstart <= '1'; + -- s_spwcfg_linkdis <= '0'; + when 6000 => + -- s_spwerr_reset_errinj <= '1'; + when others => + null; + end case; + v_cnt := v_cnt + 1; + + if (s_random_noise_cnt = 0) then + s_random_noise_cnt <= 1023; + else + s_random_noise_cnt <= s_random_noise_cnt - 1; + end if; + + end if; + end process p_spw_cfg; + + s_spw_clock <= (s_spw_codec_comm_so) xor (s_spw_codec_comm_do); + + -- spw connection + -- SpaceWire Light Codec Component + spw_stimuli_spwstream_inst : entity work.spwstream + generic map( + sysfreq => 200000000.0, + txclkfreq => 0.0, + rximpl => impl_generic, + rxchunk => 1, + tximpl => impl_generic, + rxfifosize_bits => 11, + txfifosize_bits => 11 + ) + port map( + clk => clk200, + rxclk => clk200, + txclk => clk200, + rst => rst, + autostart => '1', + linkstart => '1', + linkdis => '0', + txdivcnt => x"01", + tick_in => '0', + ctrl_in => "00", + time_in => "000000", + txwrite => '0', + txflag => '0', + txdata => x"00", + txrdy => open, + txhalff => open, + tick_out => open, + ctrl_out => open, + time_out => open, + rxvalid => s_dummy_spw_rxvalid, + rxhalff => s_dummy_spw_rxhalff, + rxflag => s_dummy_spw_rxflag, + rxdata => s_dummy_spw_rxdata, + rxread => s_dummy_spw_rxread, + started => s_stats_spw_started, + connecting => s_stats_spw_connecting, + running => s_stats_spw_running, + errdisc => s_error_spw_errdisc, + errpar => s_error_spw_errpar, + erresc => s_error_spw_erresc, + errcred => s_error_spw_errcred, + spw_di => s_spw_codec_dummy_di, + spw_si => s_spw_codec_dummy_si, + spw_do => s_spw_codec_dummy_do, + spw_so => s_spw_codec_dummy_so, + err_inj_i => '0', + err_sel_i => reserved, + err_stat_o => open + ); + +-- s_spw_codec_comm_di <= c_SPW_DI_RANDOM_NOISE(s_random_noise_cnt); +-- s_spw_codec_comm_si <= c_SPW_SI_RANDOM_NOISE(s_random_noise_cnt); + s_spw_codec_comm_di <= s_spw_codec_dummy_do; + s_spw_codec_comm_si <= s_spw_codec_dummy_so; + s_spw_codec_dummy_di <= s_spw_codec_comm_do; + s_spw_codec_dummy_si <= s_spw_codec_comm_so; end architecture RTL; diff --git a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/transcript b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/transcript index a3ff610c..af322957 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/transcript +++ b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/transcript @@ -1,50 +1,7 @@ # Reading C:/intelFPGA/18.1/modelsim_ase/tcl/vsim/pref.tcl -# OpenFile D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/SpaceWire_Channel.mpf +# OpenFile D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/SpaceWire_Channel.mpf # Loading project SpaceWire_Channel -# Compile of spwpkg.vhd was successful. -# Compile of spwerr.vhd was successful with warnings. -# Compile of spwlink.vhd was successful. -# Compile of spwram.vhd was successful. -# Compile of spwrecv.vhd was successful. -# Compile of spwrecvfront_fast.vhd was successful. -# Compile of spwrecvfront_generic.vhd was successful. -# Compile of spwstream.vhd was successful. -# Compile of spwxmit.vhd was successful. -# Compile of spwxmit_fast.vhd was successful. -# Compile of streamtest.vhd was successful. -# Compile of syncdff.vhd was successful. -# Compile of spwc_errinj_pkg.vhd was successful. -# Compile of spwc_errinj_controller_ent.vhd failed with 4 errors. -# Compile of spwc_spw_rx_altiobuf.vhd was successful. -# Compile of spwc_spw_tx_altiobuf.vhd was successful. -# Compile of spwc_codec_pkg.vhd was successful. -# Compile of spwc_codec.vhd was successful. -# Compile of spwc_command_dc_fifo.vhd was successful. -# Compile of spwc_status_dc_fifo.vhd was successful. -# Compile of spwc_data_dc_fifo.vhd was successful. -# Compile of spwc_timecode_dc_fifo.vhd was successful. -# Compile of spwc_clk_synchronization_tx_timecode_ent.vhd was successful. -# Compile of spwc_clk_synchronization_rx_timecode_ent.vhd was successful. -# Compile of spwc_clk_synchronization_tx_data_ent.vhd was successful. -# Compile of spwc_clk_synchronization_rx_data_ent.vhd was successful. -# Compile of spwc_clk_synchronization_commands_ent.vhd was successful. -# Compile of spwc_clk_synchronization_status_ent.vhd was successful. -# Compile of spwc_clk_synchronization_top.vhd was successful. -# Compile of spwc_leds_out_altiobuf.vhd was successful. -# Compile of spwc_leds_controller_pkg.vhd was successful. -# Compile of spwc_leds_controller_ent.vhd was successful. -# Compile of spwc_spacewire_channel_top.vhd failed with 4 errors. -# Compile of config_avs_stimuli.vhd was successful. -# Compile of config_spw_stimuli.vhd was successful. -# Compile of testbench_synchronization_top.vhd was successful. -# Compile of testbench_top.vhd was successful. -# 37 compiles, 2 failed with 8 errors. -# Compile of spwerr.vhd was successful with warnings. -# Compile of spwc_errinj_controller_ent.vhd was successful. # Compile of spwc_spacewire_channel_top.vhd was successful. -# 3 compiles, 0 failed with no errors. -# Compile of spwerr.vhd was successful with warnings. -# Compile of spwerr.vhd was successful. # Compile of spwpkg.vhd was successful. # Compile of spwerr.vhd was successful. # Compile of spwlink.vhd was successful. diff --git a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/vsim.wlf b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/vsim.wlf index 4cbf909e32ee431c20f71d7df116ea73aab8303c..5fe162d2381a946786528c86b5c4bd33c118951a 100644 GIT binary patch literal 98304 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 literal 98304 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 OEI{u6CogE|zyAaEzm~uN diff --git a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_info b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_info index b3d855c0..6e61b23e 100644 --- a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_info +++ b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_info @@ -9,26 +9,26 @@ z2 cModel Technology dD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/UART_Module/Development/Testbench Econfig_avs_stimuli -Z0 w1595826185 -Z1 DPx4 work 6 spwpkg 0 22 `Z443Q00J38VTS96N;::b1 +Z0 w1607084436 +Z1 DPx4 work 6 spwpkg 0 22 a5Agjb>z@D5bUGlcjJGE70 Z2 DPx4 work 14 spwc_codec_pkg 0 22 KM8d9fViX`c_Rz8>?zAn<0 Z3 DPx4 ieee 11 numeric_std 0 22 :ASDNFgHXf_ih3J@9F3Ze1 Z4 DPx3 std 6 textio 0 22 zE1`LPoLg^DX3Oz^4Fj1K3 Z5 DPx4 ieee 14 std_logic_1164 0 22 eNV`TJ_GofJTzYa?f<@Oe1 -Z6 dD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench -Z7 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_avs_stimuli.vhd -Z8 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_avs_stimuli.vhd +Z6 dD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench +Z7 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_avs_stimuli.vhd +Z8 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_avs_stimuli.vhd l0 L7 V__;OgmV=KhMC`i;dnJoCo3 !s100 e1;0MOoZb58P_GB3]`iV20 Z9 OV;C;10.5b;63 32 -Z10 !s110 1611201892 +Z10 !s110 1620848596 !i10b 1 -Z11 !s108 1611201892.000000 -Z12 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_avs_stimuli.vhd| -Z13 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_avs_stimuli.vhd| +Z11 !s108 1620848595.000000 +Z12 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_avs_stimuli.vhd| +Z13 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_avs_stimuli.vhd| !i113 1 Z14 o-work work -2002 -explicit Z15 tExplicit 1 CvgOpt 0 @@ -61,19 +61,19 @@ R3 R4 R5 R6 -Z17 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_spw_stimuli.vhd -Z18 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_spw_stimuli.vhd +Z17 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_spw_stimuli.vhd +Z18 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_spw_stimuli.vhd l0 L7 VO:hL0Fi7AX1LLo4g9hHM51 !s100 W6PEP5BDAlGeLXj>SoeR80 R9 32 -Z19 !s110 1611201893 +R10 !i10b 1 -Z20 !s108 1611201893.000000 -Z21 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_spw_stimuli.vhd| -Z22 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_spw_stimuli.vhd| +Z19 !s108 1620848596.000000 +Z20 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_spw_stimuli.vhd| +Z21 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/config_spw_stimuli.vhd| !i113 1 R14 R15 @@ -83,50 +83,50 @@ R2 R3 R4 R5 -Z23 DEx4 work 18 config_spw_stimuli 0 22 O:hL0Fi7AX1LLo4g9hHM51 +Z22 DEx4 work 18 config_spw_stimuli 0 22 O:hL0Fi7AX1LLo4g9hHM51 l27 L23 VIPYKDRMVb[>?@D;eG4;<53 !s100 hCoT;mlYCB@@=X3TeEbNz2 R9 32 -R19 +R10 !i10b 1 +R19 R20 R21 -R22 !i113 1 R14 R15 Espacewire_channel_top -Z24 w1576892574 -Z25 DPx4 work 6 spwpkg 0 22 X0V^]0k6^b0BBTEk>VVP>0 -Z26 DPx4 work 13 spw_codec_pkg 0 22 8cXa^iN6WLUHQT46aNPhO1 +Z23 w1576892574 +Z24 DPx4 work 6 spwpkg 0 22 X0V^]0k6^b0BBTEk>VVP>0 +Z25 DPx4 work 13 spw_codec_pkg 0 22 8cXa^iN6WLUHQT46aNPhO1 R3 R4 R5 -Z27 dD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench -Z28 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spacewire_channel_top.vhd -Z29 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spacewire_channel_top.vhd +Z26 dD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench +Z27 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spacewire_channel_top.vhd +Z28 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spacewire_channel_top.vhd l0 L17 Vjc>QJE`MUfOG0lg1HK;M^1 !s100 8IPYRR?zK=dULkCaFPheE3 R9 32 -Z30 !s110 1576894148 +Z29 !s110 1576894148 !i10b 1 -Z31 !s108 1576894148.000000 -Z32 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spacewire_channel_top.vhd| -Z33 !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spacewire_channel_top.vhd| +Z30 !s108 1576894148.000000 +Z31 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spacewire_channel_top.vhd| +Z32 !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spacewire_channel_top.vhd| !i113 1 R14 R15 Artl -Z34 DEx4 work 13 spw_codec_ent 0 22 ][UJSff7Yh0 !s100 W5]]fJ]eb:k54nhc1gfYf2 R9 32 -R30 +R29 !i10b 1 +R30 R31 R32 -R33 !i113 1 R14 R15 Espw_clk_synchronization_ent -Z36 w1565836471 +Z35 w1565836471 +R24 R25 -R26 R3 R4 R5 -R27 -Z37 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spw_clk_synchronization_ent.vhd -Z38 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spw_clk_synchronization_ent.vhd +R26 +Z36 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spw_clk_synchronization_ent.vhd +Z37 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spw_clk_synchronization_ent.vhd l0 L7 V?BG_W1GmBIJ`9NQE2b3WL1 !s100 I7aTln>4TM^FcL8HK>BX[1 R9 32 -R30 +R29 !i10b 1 -R31 -Z39 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spw_clk_synchronization_ent.vhd| -Z40 !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spw_clk_synchronization_ent.vhd| +R30 +Z38 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spw_clk_synchronization_ent.vhd| +Z39 !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spw_clk_synchronization_ent.vhd| !i113 1 R14 R15 Artl -Z41 DEx4 work 20 spw_timecode_dc_fifo 0 22 G>XDQFiRglK[KUzK5SMGb0 -Z42 DEx4 work 16 spw_data_dc_fifo 0 22 I<6zf3<^8n7:`Kbadk85z3 +Z40 DEx4 work 20 spw_timecode_dc_fifo 0 22 G>XDQFiRglK[KUzK5SMGb0 +Z41 DEx4 work 16 spw_data_dc_fifo 0 22 I<6zf3<^8n7:`Kbadk85z3 +R24 R25 -R26 R3 R4 R5 -R35 +R34 l91 L33 VKXkEN@ZOi6RmfC6?41K?O2 !s100 hR4m^E5[?=Sd`Rln6O`m61 R9 32 -R30 +R29 !i10b 1 -R31 +R30 +R38 R39 -R40 !i113 1 R14 R15 Espw_codec_ent -Z43 w1550897189 -R26 +Z42 w1550897189 R25 +R24 R3 R4 R5 -R27 -Z44 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spw_codec.vhd -Z45 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spw_codec.vhd +R26 +Z43 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spw_codec.vhd +Z44 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spw_codec.vhd l0 L8 V][UJSbCdd9EY>ZO2 !s100 Bh?1i:AmId3dj0dK9fz=k2 R9 32 -R46 +R45 !i10b 1 +R46 R47 R48 -R49 !i113 1 R14 R15 Pspw_codec_pkg -R25 +R24 R3 R4 R5 -R43 -R27 +R42 +R26 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spw_codec_pkg.vhd FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spw_codec_pkg.vhd l0 @@ -253,171 +253,171 @@ V8cXa^iN6WLUHQT46aNPhO1 !s100 ]:kiVoGH?3nJ`9IaciU_Q1 R9 32 -R46 +R45 !i10b 1 -R47 +R46 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spw_codec_pkg.vhd| !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spw_codec_pkg.vhd| !i113 1 R14 R15 Espw_data_dc_fifo -Z50 w1574393811 +Z49 w1574393811 R4 R5 -R27 -Z51 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_data_dc_fifo/spw_data_dc_fifo.vhd -Z52 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_data_dc_fifo/spw_data_dc_fifo.vhd +R26 +Z50 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_data_dc_fifo/spw_data_dc_fifo.vhd +Z51 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_data_dc_fifo/spw_data_dc_fifo.vhd l0 L42 VI<6zf3<^8n7:`Kbadk85z3 !s100 RP3OUQ^5Rgb[2g6[olbW`3 R9 32 -R46 +R45 !i10b 1 -R47 -Z53 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_data_dc_fifo/spw_data_dc_fifo.vhd| -Z54 !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_data_dc_fifo/spw_data_dc_fifo.vhd| +R46 +Z52 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_data_dc_fifo/spw_data_dc_fifo.vhd| +Z53 !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_data_dc_fifo/spw_data_dc_fifo.vhd| !i113 1 R14 R15 Asyn R4 R5 -R42 +R41 l101 L60 VAjGhRN_WQG>jDEa0YBUcK2 !s100 ^[GUkD9caOW]H`dCjbjLV2 R9 32 -R46 +R45 !i10b 1 -R47 +R46 +R52 R53 -R54 !i113 1 R14 R15 Espw_timecode_dc_fifo -R50 +R49 R4 R5 -R27 -Z55 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_timecode_dc_fifo/spw_timecode_dc_fifo.vhd -Z56 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_timecode_dc_fifo/spw_timecode_dc_fifo.vhd +R26 +Z54 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_timecode_dc_fifo/spw_timecode_dc_fifo.vhd +Z55 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_timecode_dc_fifo/spw_timecode_dc_fifo.vhd l0 L42 VG>XDQFiRglK[KUzK5SMGb0 !s100 8FW;7V79ICVJ5W[PW77i>2 R9 32 -R30 +R29 !i10b 1 -R47 -Z57 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_timecode_dc_fifo/spw_timecode_dc_fifo.vhd| -Z58 !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_timecode_dc_fifo/spw_timecode_dc_fifo.vhd| +R46 +Z56 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_timecode_dc_fifo/spw_timecode_dc_fifo.vhd| +Z57 !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spw_timecode_dc_fifo/spw_timecode_dc_fifo.vhd| !i113 1 R14 R15 Asyn R4 R5 -R41 +R40 l101 L60 V_R8TJm::g06W6A2BhUlzJ0 !s100 L@l7SL8>jTVPRUlYXHK1U0 R9 32 -R30 +R29 !i10b 1 -R47 +R46 +R56 R57 -R58 !i113 1 R14 R15 Espwc_clk_synchronization_commands_ent -Z59 w1607035842 +R0 R1 R2 -Z60 DPx4 work 15 spwc_errinj_pkg 0 22 1LThXcof0?3N85O2SGL4`3 +Z58 DPx4 work 15 spwc_errinj_pkg 0 22 1LThXcof0?3N85O2SGL4`3 R3 R4 R5 R6 -Z61 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd -Z62 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd +Z59 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd +Z60 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd l0 L8 VzB>kba=1>]MZ@[HA^m^aG3 !s100 V9cmIS3hz2nZHCdW:G>Y>0 R9 32 -Z63 !s110 1611201891 +Z61 !s110 1620848594 !i10b 1 -Z64 !s108 1611201891.000000 -Z65 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd| -Z66 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd| +Z62 !s108 1620848594.000000 +Z63 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd| +Z64 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_commands_ent.vhd| !i113 1 R14 R15 Artl -Z67 DEx4 work 20 spwc_command_dc_fifo 0 22 IzK9kh0?m26[[BoNmRiaN1 +Z65 DEx4 work 20 spwc_command_dc_fifo 0 22 IzK9kh0?m26[[BoNmRiaN1 R1 R2 -R60 +R58 R3 R4 R5 -Z68 DEx4 work 37 spwc_clk_synchronization_commands_ent 0 22 zB>kba=1>]MZ@[HA^m^aG3 +Z66 DEx4 work 37 spwc_clk_synchronization_commands_ent 0 22 zB>kba=1>]MZ@[HA^m^aG3 l39 L20 VPG0;Xzz31m;MD`eQ_n`I?2 !s100 5AEDDTRGUNDR@b`GMW_[Q1 R9 32 -R63 +R61 !i10b 1 +R62 +R63 R64 -R65 -R66 !i113 1 R14 R15 Espwc_clk_synchronization_ent -Z69 w1592287558 -R25 -Z70 DPx4 work 14 spwc_codec_pkg 0 22 ?ef1B>21aYHNN`n8<3?:a2 +Z67 w1592287558 +R24 +Z68 DPx4 work 14 spwc_codec_pkg 0 22 ?ef1B>21aYHNN`n8<3?:a2 R3 R4 R5 -R27 -Z71 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_ent.vhd -Z72 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_ent.vhd +R26 +Z69 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_ent.vhd +Z70 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_ent.vhd l0 L7 VZOKa`PWc<e91 !s100 cFjQBLS0LK]_l09;j`ag`3 R9 32 -R73 +R71 !i10b 1 +R72 +R73 R74 -R75 -R76 !i113 1 R14 R15 @@ -444,41 +444,41 @@ R3 R4 R5 R6 -Z79 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd -Z80 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd +Z77 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd +Z78 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd l0 L7 V`k]D^N2fgMQ7>EIz90[`43 !s100 _AZo0M]>=JBK1TP4bAEPD0 R9 32 -R63 +R61 !i10b 1 -R64 -Z81 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd| -Z82 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd| +R62 +Z79 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd| +Z80 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_data_ent.vhd| !i113 1 R14 R15 Artl -R78 +R76 R1 R2 R3 R4 R5 -Z83 DEx4 work 36 spwc_clk_synchronization_rx_data_ent 0 22 `k]D^N2fgMQ7>EIz90[`43 +Z81 DEx4 work 36 spwc_clk_synchronization_rx_data_ent 0 22 `k]D^N2fgMQ7>EIz90[`43 l31 L19 VPMXz2m]e>F^m>d9LWnKU71 !s100 9Wj9CXTVGO_LNe5zT:K<81 R9 32 -R63 +R61 !i10b 1 -R64 -R81 -R82 +R62 +R79 +R80 !i113 1 R14 R15 @@ -490,188 +490,188 @@ R3 R4 R5 R6 -Z84 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd -Z85 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd +Z82 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd +Z83 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd l0 L7 VolSmF]2bbK^;;?IcWol>>1 !s100 :SgfJA0iXLQa5^d@5mc9k2 R9 32 -Z86 !s110 1611201890 +R61 !i10b 1 -Z87 !s108 1611201890.000000 -Z88 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd| -Z89 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd| +Z84 !s108 1620848593.000000 +Z85 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd| +Z86 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_rx_timecode_ent.vhd| !i113 1 R14 R15 Artl -R77 +R75 R1 R2 R3 R4 R5 -Z90 DEx4 work 40 spwc_clk_synchronization_rx_timecode_ent 0 22 olSmF]2bbK^;;?IcWol>>1 +Z87 DEx4 work 40 spwc_clk_synchronization_rx_timecode_ent 0 22 olSmF]2bbK^;;?IcWol>>1 l26 L17 VQ3KDiA;dz<5^WTPee?6?43 !s100 `6:Pm>fHzI:Oh7Mel1 R9 32 -R63 +R61 !i10b 1 -R64 -R93 -R94 +R62 +R90 +R91 !i113 1 R14 R15 Espwc_clk_synchronization_top -R59 -R60 +R0 +R58 R1 R2 R3 R4 R5 R6 -Z97 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd -Z98 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd +Z94 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd +Z95 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd l0 L8 VaW48BD>M7LM2lcn=cZ;JJ3 !s100 hE:3nQeELcCT8oX@ALAN53 R9 32 -R63 +Z96 !s110 1620848595 !i10b 1 -R64 -Z99 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd| -Z100 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd| +R62 +Z97 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd| +Z98 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_top.vhd| !i113 1 R14 R15 Artl -R90 -Z101 DEx4 work 40 spwc_clk_synchronization_tx_timecode_ent 0 22 cYEIf`gG<]0nRhaPMaEB03 -R83 -Z102 DEx4 work 36 spwc_clk_synchronization_tx_data_ent 0 22 DkYU832QjJ@e:cGf8S6`P1 -R96 -R68 -R60 +R87 +Z99 DEx4 work 40 spwc_clk_synchronization_tx_timecode_ent 0 22 cYEIf`gG<]0nRhaPMaEB03 +R81 +Z100 DEx4 work 36 spwc_clk_synchronization_tx_data_ent 0 22 DkYU832QjJ@e:cGf8S6`P1 +R93 +R66 +R58 R1 R2 R3 R4 R5 -Z103 DEx4 work 28 spwc_clk_synchronization_top 0 22 aW48BD>M7LM2lcn=cZ;JJ3 +Z101 DEx4 work 28 spwc_clk_synchronization_top 0 22 aW48BD>M7LM2lcn=cZ;JJ3 l40 L38 VXgJnMiPdP>;OenVBGf=Y:3 !s100 5NW:ZNVKz`o0<2D?9ALmM2 R9 32 -R63 +R96 !i10b 1 -R64 -R99 -R100 +R62 +R97 +R98 !i113 1 R14 R15 Espwc_clk_synchronization_tx_data_ent -Z104 w1599275932 +R0 R1 R2 R3 R4 R5 R6 -Z105 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd -Z106 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd +Z102 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd +Z103 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd l0 L7 VDkYU832QjJ@e:cGf8S6`P1 !s100 8<96>gzoIdU;ThzZ8^nH:3 R9 32 -R86 +R61 !i10b 1 -R87 -Z107 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd| -Z108 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd| +R62 +Z104 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd| +Z105 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_data_ent.vhd| !i113 1 R14 R15 Artl -R78 +R76 R1 R2 R3 R4 R5 -R102 +R100 l31 L19 VX6a0>V><:YMQXNVgco^h?1 !s100 gGYej6[iQ65DbKiMFoFQO1 R9 32 -R86 +R61 !i10b 1 -R87 -R107 -R108 +R62 +R104 +R105 !i113 1 R14 R15 @@ -683,87 +683,87 @@ R3 R4 R5 R6 -Z109 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd -Z110 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd +Z106 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd +Z107 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd l0 L7 VcYEIf`gG<]0nRhaPMaEB03 !s100 NVRgE[leVoa_ek8UN`[W>1 R9 32 -R86 +Z108 !s110 1620848593 !i10b 1 -R87 -Z111 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd| -Z112 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd| +R84 +Z109 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd| +Z110 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/spwc_clk_synchronization_tx_timecode_ent.vhd| !i113 1 R14 R15 Artl -R77 +R75 R1 R2 R3 R4 R5 -R101 +R99 l26 L17 Vg>2H3j8__cPLfD??OQ?UT3 !s100 P@2ab5KQE4boB5?RS7f[e0 R9 32 -R86 +R108 !i10b 1 -R87 -R111 -R112 +R84 +R109 +R110 !i113 1 R14 R15 Espwc_codec_ent -R59 +R0 R2 R1 R3 R4 R5 R6 -Z113 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec.vhd -Z114 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec.vhd +Z111 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec.vhd +Z112 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec.vhd l0 L8 VZ8c9Bb>:8jfPzUAPmKXzO_m0 +Z117 DEx4 work 9 spwstream 0 22 4QMMVh2BkQEZn`Vd9lYo51 R2 R1 R3 R4 R5 -Z120 DEx4 work 14 spwc_codec_ent 0 22 Z8c9Bb>:8jfPzUAPmKX:8jfPzUAPmKXn@Rdh1 R9 32 -R115 +R113 !i10b 1 +R114 +R115 R116 -R117 -R118 !i113 1 R14 R15 @@ -772,146 +772,146 @@ R1 R3 R4 R5 -R59 +R0 R6 -8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd -FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd +8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd +FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd l0 L7 VKM8d9fViX`c_Rz8>?zAn<0 !s100 Z?bzX42IUkhghmKEDl4nP1 R9 32 -R115 +R113 !i10b 1 -R116 -!s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd| -!s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd| +R114 +!s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd| +!s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spwc_codec_pkg.vhd| !i113 1 R14 R15 Espwc_command_dc_fifo -R59 +R0 R4 R5 R6 -Z121 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd -Z122 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd +Z119 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd +Z120 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd l0 L42 VIzK9kh0?m26[[BoNmRiaN1 !s100 ?:LTGHoVS:S0fQNaA_@TP0 R9 32 -R115 +R113 !i10b 1 -R116 -Z123 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd| -Z124 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd| +R114 +Z121 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd| +Z122 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_command_dc_fifo/spwc_command_dc_fifo.vhd| !i113 1 R14 R15 Asyn R4 R5 -R67 +R65 l102 L60 VggBb0Q7e^KJQJ`PAZ>ko91 !s100 N^onJI2A21=El]_JS5?cE1 R9 32 -R115 +R113 !i10b 1 -R116 -R123 -R124 +R114 +R121 +R122 !i113 1 R14 R15 Espwc_data_dc_fifo -R104 +R0 R4 R5 R6 -Z125 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd -Z126 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd +Z123 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd +Z124 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd l0 L42 VMRNhgaTjkQ0Dj]oTS=5Dh2 !s100 SbIfMBAaG4gihOQD1jzl70 R9 32 -R86 +R108 !i10b 1 -R87 -Z127 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd| -Z128 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd| +R84 +Z125 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd| +Z126 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_data_dc_fifo/spwc_data_dc_fifo.vhd| !i113 1 R14 R15 Asyn R4 R5 -R78 +R76 l102 L60 VKV=M`d0GX@OXZ[XN8fU5T1 !s100 `=BaZ3K7Io[OXVN@9iza41 R9 32 -R86 +R108 !i10b 1 -R87 -R127 -R128 +R84 +R125 +R126 !i113 1 R14 R15 Espwc_errinj_controller_ent -R59 +R0 R1 R2 -R60 +R58 R3 R4 R5 R6 -Z129 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd -Z130 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd +Z127 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd +Z128 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd l0 L9 VDCkmidiH]Z]R5ID?hieY63 !s100 ^=dVK]NSnAkGb_ad3oHU13 R9 32 -Z131 !s110 1611201888 +Z129 !s110 1620848591 !i10b 1 -Z132 !s108 1611201888.000000 -Z133 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd| -Z134 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd| +Z130 !s108 1620848591.000000 +Z131 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd| +Z132 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_controller_ent.vhd| !i113 1 R14 R15 Artl R1 R2 -R60 +R58 R3 R4 R5 -Z135 DEx4 work 26 spwc_errinj_controller_ent 0 22 DCkmidiH]Z]R5ID?hieY63 +Z133 DEx4 work 26 spwc_errinj_controller_ent 0 22 DCkmidiH]Z]R5ID?hieY63 l36 L21 V>`3NeG3 !s100 5`ThNfn1zB;ICFJAeiFDZ2 R9 32 -R131 +R129 !i10b 1 +R130 +R131 R132 -R133 -R134 !i113 1 R14 R15 @@ -919,26 +919,26 @@ Pspwc_errinj_pkg R3 R4 R5 -R59 +R0 R6 -Z136 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd -Z137 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd +Z134 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd +Z135 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd l0 L5 V1LThXcof0?3N85O2SGL4`3 !s100 Z4Uo1oU8V2NoggnBDb2nC1 R9 32 -R131 +R129 !i10b 1 -R132 -Z138 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd| -Z139 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd| +R130 +Z136 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd| +Z137 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_ERRINJ/spwc_errinj_pkg.vhd| !i113 1 R14 R15 Bbody -R60 +R58 R3 R4 R5 @@ -948,54 +948,54 @@ V:EXe`Lj;gln8kn=Vi7^752 !s100 z;=O8Piz0eVT@mLi@>KKS1 R9 32 -R131 +R129 !i10b 1 -R132 -R138 -R139 +R130 +R136 +R137 !i113 1 R14 R15 Espwc_leds_controller_ent -R104 -Z140 DPx4 work 24 spwc_leds_controller_pkg 0 22 hnh<9?gCbR4YCfmnE5KJ@0 +R0 +Z138 DPx4 work 24 spwc_leds_controller_pkg 0 22 hnh<9?gCbR4YCfmnE5KJ@0 R3 R4 R5 R6 -Z141 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd -Z142 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd +Z139 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd +Z140 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd l0 L7 V[PG3_z0B5m8aQlFNA6aOS3 !s100 jWR43I[;kEMkgmOXX9R3B3 R9 32 -R10 +R96 !i10b 1 R11 -Z143 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd| -Z144 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd| +Z141 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd| +Z142 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_ent.vhd| !i113 1 R14 R15 Artl -R140 +R138 R3 R4 R5 -Z145 DEx4 work 24 spwc_leds_controller_ent 0 22 [PG3_z0B5m8aQlFNA6aOS3 +Z143 DEx4 work 24 spwc_leds_controller_ent 0 22 [PG3_z0B5m8aQlFNA6aOS3 l18 L16 V8m`D7T:6EXEOJbV7>fW]03 !s100 bD]YhX7@_PO487S]@[R?S0 R9 32 -R10 +R96 !i10b 1 R11 -R143 -R144 +R141 +R142 !i113 1 R14 R15 @@ -1003,26 +1003,26 @@ Pspwc_leds_controller_pkg R3 R4 R5 -R104 +R0 R6 -Z146 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd -Z147 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd +Z144 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd +Z145 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd l0 L5 Vhnh<9?gCbR4YCfmnE5KJ@0 !s100 M`4GmJ8UI^@U8JJE[=RmB3 R9 32 -R10 +R96 !i10b 1 R11 -Z148 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd| -Z149 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd| +Z146 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd| +Z147 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_leds_controller_pkg.vhd| !i113 1 R14 R15 Bbody -R140 +R138 R3 R4 R5 @@ -1032,71 +1032,71 @@ V6TRc[3b:=E1V?9bY2E1U91 !s100 DImS1hb^7oePh^MUDZ3Qi0 R9 32 -R10 +R96 !i10b 1 R11 -R148 -R149 +R146 +R147 !i113 1 R14 R15 Espwc_leds_out_altiobuf -R104 +R0 R4 R5 R6 -Z150 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/altera_ip/altiobuf/spwc_leds_out_altiobuf/spwc_leds_out_altiobuf.vhd -Z151 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/altera_ip/altiobuf/spwc_leds_out_altiobuf/spwc_leds_out_altiobuf.vhd +Z148 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/altera_ip/altiobuf/spwc_leds_out_altiobuf/spwc_leds_out_altiobuf.vhd +Z149 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/altera_ip/altiobuf/spwc_leds_out_altiobuf/spwc_leds_out_altiobuf.vhd l0 L107 V7<U7m7:OYeS00QL>22 R9 32 -R10 +R96 !i10b 1 -R64 -R152 -R153 +R11 +R150 +R151 !i113 1 R14 R15 Espwc_leds_out_altiobuf_iobuf_out_2ts -R104 +R0 R4 R5 R6 -R150 -R151 +R148 +R149 l0 L46 VhHNZffojdNc6DTS`PhoX52 !s100 kn@Y>`DiAE]7h2_CJ@WVR3 R9 32 -R10 +R96 !i10b 1 -R64 -R152 -R153 +R11 +R150 +R151 !i113 1 R14 R15 @@ -1110,95 +1110,95 @@ VN:B>0Wk5liO^lQJ3`5?Gf1 !s100 ija1ddAN[4G[L1Q6m6Wg;3 R9 32 -R10 +R96 !i10b 1 -R64 -R152 -R153 +R11 +R150 +R151 !i113 1 R14 R15 Espwc_spacewire_channel_top -R59 -R140 -R60 +Z153 w1620848557 +R138 +R58 R1 R2 R3 R4 R5 R6 -Z155 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spwc_spacewire_channel_top.vhd -Z156 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spwc_spacewire_channel_top.vhd +Z154 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spwc_spacewire_channel_top.vhd +Z155 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/spwc_spacewire_channel_top.vhd l0 L19 -VF:oKh:kYPAm`>_UFYb<]_0 -!s100 78;^Rl=dhDSZe35mh[_eL1 +V[M[NJe6GAC[GC`_X:6m1V1 +!s100 OHKMSn;Z3aXIFJhfD_UFYb<]_0 -l117 -L74 -VG4_U7>16SJZD`kAOLV9go13 +Z160 DEx4 work 26 spwc_spacewire_channel_top 0 22 [M[NJe6GAC[GC`_X:6m1V1 +l118 +L75 +VOoXO>XIdaD[^3n0 +R67 +Z161 DPx4 work 24 spwc_leds_controller_pkg 0 22 7EDoR65aJ@7iW0=;@>^3n0 R3 R4 R5 -R27 -Z163 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_spw_leds_controller_ent.vhd -Z164 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_spw_leds_controller_ent.vhd +R26 +Z162 8D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_spw_leds_controller_ent.vhd +Z163 FD:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_spw_leds_controller_ent.vhd l0 L7 VzAQ[EMPS0lY<8[j=Mjb?D1 !s100 4?h<7YGeGHIC]E4h8FL@;2 R9 32 -Z165 !s110 1593312547 +Z164 !s110 1593312547 !i10b 1 -Z166 !s108 1593312547.000000 -Z167 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_spw_leds_controller_ent.vhd| -Z168 !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_spw_leds_controller_ent.vhd| +Z165 !s108 1593312547.000000 +Z166 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_spw_leds_controller_ent.vhd| +Z167 !s107 D:/rfranca/Development/GitHub/SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_LEDS_CONTROLLER/spwc_spw_leds_controller_ent.vhd| !i113 1 R14 R15 Artl -R162 +R161 R3 R4 R5 @@ -1209,71 +1209,71 @@ VBI>92_jo6dMicMhDn1ggi1 !s100 ;:Al`miRVYzM;mh;H17F83 R9 32 -R165 +R164 !i10b 1 +R165 R166 R167 -R168 !i113 1 R14 R15 Espwc_spw_rx_altiobuf -R104 +R0 R4 R5 R6 -Z169 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd -Z170 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd +Z168 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd +Z169 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd l0 L101 Vige=^?=mmdLiha:hoE[5o3 !s100 3V1[h^l9ojCnPMTa`E=Z21 R9 32 -R131 +R113 !i10b 1 -R132 -Z171 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd| -Z172 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd| +R114 +Z170 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd| +Z171 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_rx_altiobuf/spwc_spw_rx_altiobuf.vhd| !i113 1 R14 R15 Artl R4 R5 -R160 +R159 l125 L111 V?T1QWiFXh6[LDmn88N`^j2 !s100 ;Uj[]SJmIgfRYOIlMG9c]2 R9 32 -R131 +R113 !i10b 1 -R132 +R114 +R170 R171 -R172 !i113 1 R14 R15 Espwc_spw_rx_altiobuf_iobuf_in_iti -R104 +R0 R4 R5 R6 +R168 R169 -R170 l0 L46 VSdTbW5GdjCeRhg2jUAH762 !s100 EaGzQUXeAnbIVehdT9XgeUm=9BA<9GbXc57^2 R9 32 -R115 +R113 !i10b 1 -R132 +R114 +R182 R183 -R184 !i113 1 R14 R15 Espwc_spw_tx_altiobuf_iobuf_out_apt -R104 +R0 R4 R5 R6 +R180 R181 -R182 l0 L46 ViKHf;XaoTnc4lf:4R;:451 !s100 [F7:h78@ZQm5znAzAgBE^2 R9 32 -R115 +R113 !i10b 1 -R132 +R114 +R182 R183 -R184 !i113 1 R14 R15 @@ -1404,32 +1404,32 @@ VieU@k`SiUoH7eMAhl;CJ=0 !s100 VF8kWkgSh1ed9Hng6kH6R0 R9 32 -R115 +R113 !i10b 1 -R132 +R114 +R182 R183 -R184 !i113 1 R14 R15 Espwc_spw_tx_altiobuf_iobuf_out_vmt -Z185 w1593538196 +Z184 w1593538196 R4 R5 -R174 -Z186 8D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd -Z187 FD:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd +R173 +Z185 8D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd +Z186 FD:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd l0 L46 VO]?W[?L19IF]XeaF0if4P1 !s100 J`1?AKNbca[>KC@2e<;GQ1 R9 32 -Z188 !s110 1593631972 +Z187 !s110 1593631972 !i10b 1 -Z189 !s108 1593631972.000000 -Z190 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd| -Z191 !s107 D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd| +Z188 !s108 1593631972.000000 +Z189 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd| +Z190 !s107 D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altiobuf/spwc_spw_tx_altiobuf/spwc_spw_tx_altiobuf.vhd| !i113 1 R14 R15 @@ -1443,32 +1443,32 @@ V8zR;cNOF@:MO9=`f8HhgB1 !s100 QSCmYTPaC2neBz8>PV[YI1 R9 32 -R188 +R187 !i10b 1 +R188 R189 R190 -R191 !i113 1 R14 R15 Espwc_spw_tx_altlvds_tx -Z192 w1593538270 +Z191 w1593538270 R4 R5 -R174 -Z193 8D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altlvds_tx/spwc_spw_tx_altlvds_tx/spwc_spw_tx_altlvds_tx.vhd -Z194 FD:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altlvds_tx/spwc_spw_tx_altlvds_tx/spwc_spw_tx_altlvds_tx.vhd +R173 +Z192 8D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altlvds_tx/spwc_spw_tx_altlvds_tx/spwc_spw_tx_altlvds_tx.vhd +Z193 FD:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altlvds_tx/spwc_spw_tx_altlvds_tx/spwc_spw_tx_altlvds_tx.vhd l0 L42 VMF[J]^N8nA6ja[WK6TSf:1 !s100 [0I_iR9CddR6mT6PRdH;g3 R9 32 -R177 +R176 !i10b 1 -R178 -Z195 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altlvds_tx/spwc_spw_tx_altlvds_tx/spwc_spw_tx_altlvds_tx.vhd| -Z196 !s107 D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altlvds_tx/spwc_spw_tx_altlvds_tx/spwc_spw_tx_altlvds_tx.vhd| +R177 +Z194 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altlvds_tx/spwc_spw_tx_altlvds_tx/spwc_spw_tx_altlvds_tx.vhd| +Z195 !s107 D:/rfranca/Development/GitHub/SimuCam_Development3/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/altera_ip/altlvds_tx/spwc_spw_tx_altlvds_tx/spwc_spw_tx_altlvds_tx.vhd| !i113 1 R14 R15 @@ -1482,125 +1482,127 @@ VVHT3gm[TfW8>:C^@jED1B1 !s100 NLiTdTBa>LWIc4MBmina>0 R9 32 -R177 +R176 !i10b 1 -R178 +R177 +R194 R195 -R196 !i113 1 R14 R15 Espwc_status_dc_fifo -R59 +R0 R4 R5 R6 -Z197 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd -Z198 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd +Z196 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd +Z197 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd l0 L42 Vn`S6`CAmhK:8OToaB;d8:1 !s100 26nL824hNj4FCzf:iD8LA3 R9 32 -R115 +R108 !i10b 1 -R116 -Z199 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd| -Z200 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd| +R84 +Z198 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd| +Z199 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_status_dc_fifo/spwc_status_dc_fifo.vhd| !i113 1 R14 R15 Asyn R4 R5 -R95 +R92 l102 L60 V=SDWcjIz7ZdFG@i[dfQd80 !s100 Z0j]DHk3f:zV`<`QCfN[j2 R9 32 -R115 +R108 !i10b 1 -R116 +R84 +R198 R199 -R200 !i113 1 R14 R15 Espwc_timecode_dc_fifo -R104 +R0 R4 R5 R6 -Z201 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd -Z202 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd +Z200 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd +Z201 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd l0 L42 ViOi?ojzi1BKbfkff@eI5l0 !s100 O]hJ9MYofe17`4nEOzDVO2 R9 32 -R86 +R108 !i10b 1 -R87 -Z203 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd| -Z204 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd| +R84 +Z202 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd| +Z203 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CLK_SYNCHRONIZATION/altera_ipcore/dcfifo/spwc_timecode_dc_fifo/spwc_timecode_dc_fifo.vhd| !i113 1 R14 R15 Asyn R4 R5 -R77 +R75 l102 L60 VO822Qo41QR1FjKh?5_=nB3 !s100 IXL:30BR4VD91T@N`zSzE0 R9 32 -R86 +R108 !i10b 1 -R87 +R84 +R202 R203 -R204 !i113 1 R14 R15 Espwerr -Z205 w1611201882 +Z204 w1620698079 R1 +Z205 DPx4 ieee 9 math_real 0 22 Sk6CSihbPL3?`2 -!s100 eHaYjXCDGoe_1D3KYczR;1 +DEx4 work 6 spwerr 0 22 O7PI=de<<0EG?V0=CGd=I3 +l89 +L36 +V0RhP;@:=E[FmfjSgFlfOD1 +!s100 nhfd3>@dJ`@HY1JCLn8S30 R9 32 R208 @@ -1611,26 +1613,69 @@ R211 !i113 1 R14 R15 +Espwerr_old +Z212 w1619639168 +Z213 DPx4 work 6 spwpkg 0 22 `Z443Q00J38VTS96N;::b1 +R3 +R4 +R5 +R6 +Z214 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/spwerr_old.vhd +Z215 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/spwerr_old.vhd +l0 +L16 +V>EeH0L4:9Q[HoP>;9>5Ge0 +!s100 z6zNS4]W4ECMCZ8kK91KT2 +R9 +32 +Z216 !s110 1619639253 +!i10b 1 +Z217 !s108 1619639253.000000 +Z218 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/spwerr_old.vhd| +Z219 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/spwerr_old.vhd| +!i113 1 +R14 +R15 +Aspwerr_arch +R213 +R3 +R4 +R5 +DEx4 work 10 spwerr_old 0 22 >EeH0L4:9Q[HoP>;9>5Ge0 +l82 +L35 +VK^1BMQ275TA6B8dU3b3 -!s100 LLZ=V>PDa[[1j97dOm@`@1 +VW_?GD0mjL<:4]8E^hEElQ1 +!s100 n:JhnN4jV^Sb@z4fS?gcg2 R9 32 -Z214 !s110 1611201886 +R208 !i10b 1 -Z215 !s108 1611201886.000000 -Z216 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd| -Z217 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd| +R209 +Z223 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd| +Z224 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd| !i113 1 R14 R15 @@ -1639,61 +1684,61 @@ R1 R3 R4 R5 -DEx4 work 7 spwlink 0 22 2N1zTA>MQ275TA6B8dU3b3 +DEx4 work 7 spwlink 0 22 W_?GD0mjL<:4]8E^hEElQ1 l86 L44 -V`W?mZ8ez>cg^Wa_Tg4^E:0 -!s100 OAmLa`A8PnZ>[^0cG@WZd3 +Vd814ME2POcaYXd3Od6mAW2 +!s100 P<9XALM4NId;LEN0DiV@g1 R9 32 -R214 +R208 !i10b 1 -R215 -R216 -R217 +R209 +R223 +R224 !i113 1 R14 R15 Pspwpkg R4 R5 -R59 +w1620844917 R6 -8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd -FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd +8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd +FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd l0 L8 -V`Z443Q00J38VTS96N;::b1 -!s100 >zgL?HaeAgWm2jbbNJJ[E1 +Va5Agjb>z@D5bUGlcjJGE70 +!s100 ?@6mjB>ZUkUMzhN;JJeL50 R9 32 R208 !i10b 1 R209 -!s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd| -!s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd| +!s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd| +!s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd| !i113 1 R14 R15 Espwram -R59 +Z225 w1620696986 R3 R4 R5 R6 -Z218 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd -Z219 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd +Z226 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd +Z227 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd l0 L10 -Vio9em64ZTWROlDce^iN>C2 -!s100 EUQJ1>]QNWjIj6Zn>4WQh1 +VVaWgfTL]S[_^lRAKm;F1o1 +!s100 GGF9naSBASYh4BMcACh[I1 R9 32 -R214 +R208 !i10b 1 -R215 -Z220 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd| -Z221 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd| +R209 +Z228 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd| +Z229 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd| !i113 1 R14 R15 @@ -1701,41 +1746,41 @@ Aspwram_arch R3 R4 R5 -DEx4 work 6 spwram 0 22 io9em64ZTWROlDce^iN>C2 -l35 +DEx4 work 6 spwram 0 22 VaWgfTL]S[_^lRAKm;F1o1 +l34 L28 -V]Ea3=B_9;5YVZ>JM20JKS2 -!s100 okl6iPF>3QaCh2Ldczd@T2 +VX=aJ53Fg]kioz][H56`iA0 +!s100 SC^=[a;9^LoK@7[Bez4b<3 R9 32 -R214 +R208 !i10b 1 -R215 -R220 -R221 +R209 +R228 +R229 !i113 1 R14 R15 Espwrecv -R59 +Z230 w1620845154 R1 R3 R4 R5 R6 -Z222 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd -Z223 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd +Z231 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd +Z232 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd l0 L16 -VnElH@Q?YVh1CAIm5BaGHT1 -!s100 MI=YX3oiWafcI@TofD^@]1 +V0N=^61_TNdo@c5QEZAOLV3 +!s100 z7b;ma8?[V@[6[1NGhjT31 R9 32 -R214 +Z233 !s110 1620848590 !i10b 1 -R215 -Z224 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd| -Z225 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd| +R209 +Z234 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd| +Z235 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd| !i113 1 R14 R15 @@ -1744,41 +1789,41 @@ R1 R3 R4 R5 -DEx4 work 7 spwrecv 0 22 nElH@Q?YVh1CAIm5BaGHT1 -l101 -L49 -Vnl_6EJj_Mfe`jb1=8h]bU3 -!s100 ^c3WTJ4Ao3z@Jg7kh6P:=2 +DEx4 work 7 spwrecv 0 22 0N=^61_TNdo@c5QEZAOLV3 +l97 +L45 +VP1:Jg<<6_2h1`VVT6[d>X3 +!s100 ;abmGgNM1jo>Q1 +DEx4 work 17 spwrecvfront_fast 0 22 3@LOQ_f^NBASG?oJI6[]k2 +l192 +L103 +VYZlJ@]O:kT0 R9 32 -R214 +R233 !i10b 1 -R215 -R228 -R229 +R239 +R240 +R241 !i113 1 R14 R15 Espwrecvfront_generic -R59 +Z242 w1620845105 R3 R4 R5 R6 -Z230 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd -Z231 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd +Z243 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd +Z244 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd l0 L16 -VEl06nCMSZ=?6GcFiGIA;D3 -!s100 cQd9MjILFQD4L=2ST@9`j1 +VaJl;8`RJcz=AK^]fK2 R9 32 -Z232 !s110 1611201887 +R233 !i10b 1 -R215 -Z233 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd| -Z234 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd| +R239 +Z245 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd| +Z246 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd| !i113 1 R14 R15 @@ -1828,41 +1873,41 @@ Aspwrecvfront_arch R3 R4 R5 -DEx4 work 20 spwrecvfront_generic 0 22 El06nCMSZ=?6GcFiGIA;D3 -l59 -L44 -VY?X;jNeQ`i00595];L?CD1 -!s100 @Qjz2IQjaJ]eejN]K`WIM3 +DEx4 work 20 spwrecvfront_generic 0 22 aJl;8`RJcz=AzO_m0 -!s100 UEcOc@Gh]7]d?njM3 +!s100 7VYlfT2l^T47<]G>zY?FA1 R9 32 -R232 +R233 !i10b 1 -R237 -R238 R239 +R250 +R251 !i113 1 R14 R15 Espwxmit -R59 +Z252 w1620696971 R1 R3 R4 R5 R6 -Z240 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd -Z241 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd +Z253 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd +Z254 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd l0 L13 -V0[CGLQJbUNZ37OLkdh=Ea3 -!s100 kd;DUhQR]86fMJ0WDD`c?2 +V63YFE3Lz@S@Y1@i_YH3Nk1 +!s100 2F:VP];z`G]DWH5j>HSD71 R9 32 -R232 +R233 !i10b 1 -R237 -Z242 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd| -Z243 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd| +R239 +Z255 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd| +Z256 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd| !i113 1 R14 R15 @@ -1914,41 +1959,41 @@ R1 R3 R4 R5 -DEx4 work 7 spwxmit 0 22 0[CGLQJbUNZ37OLkdh=Ea3 -l88 -L43 -VFUcVIIWTP7<7^D`21 +DEx4 work 7 spwxmit 0 22 63YFE3Lz@S@Y1@i_YH3Nk1 +l82 +L37 +VS@^Dfl7ZFmf1:jYQWdSl23 +!s100 VcRk<]dEFLdlXHHNjagRI3 R9 32 -R232 +R233 !i10b 1 -R237 -R242 -R243 +R239 +R255 +R256 !i113 1 R14 R15 Espwxmit_fast -R59 +Z257 w1620696974 R1 R3 R4 R5 R6 -Z244 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd -Z245 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd +Z258 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd +Z259 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd l0 L150 -Vb02QZKFLXHS9beURSKh1MkMPIPNFLfC1 +VNSOP9H:mn:z6eh7C0Q6B^1 +!s100 =>Zz9^okI>8b<0?;XTKKl2 R9 32 -R232 +R129 !i10b 1 -R237 -Z246 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd| -Z247 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd| +R239 +Z260 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd| +Z261 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd| !i113 1 R14 R15 @@ -1957,41 +2002,41 @@ R1 R3 R4 R5 -DEx4 work 12 spwxmit_fast 0 22 b02QZKFLXHS9bbA;m471R]]G1 +!s100 RNQ>^;RmkmVMJ88^UP]jh2 R9 32 -R232 +R129 !i10b 1 -R237 -R250 -R251 +R130 +R265 +R266 !i113 1 R14 R15 Esyncdff -R59 +Z267 w1620696965 R4 R5 R6 -Z252 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd -Z253 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd +Z268 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd +Z269 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd l0 L16 -VI]G>AQfHR4^`PCB7]6X^;3 -!s100 jmnDgZK4I8fKM9T6giQB?2 +VD4EjVH7bbYJlSAWfhYhEj0 +!s100 ^I[[E=Sb9X2AZgad8fD7m2 R9 32 -R131 +R129 !i10b 1 -R132 -Z254 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd| -Z255 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd| +R130 +Z270 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd| +Z271 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/syncdff.vhd| !i113 1 R14 R15 Asyncdff_arch R4 R5 -DEx4 work 7 syncdff 0 22 I]G>AQfHR4^`PCB7]6X^;3 +DEx4 work 7 syncdff 0 22 D4EjVH7bbYJlSAWfhYhEj0 l52 L31 -VEVT_@k:Czz>^_@VAm4c5z1 -!s100 ;P9@79nVHoRZ2GXS^7Ulh1 +V;m:V]]z^:oWZQ9]6_MTEN0 +!s100 iW][95Z1Y46V4X0?i2 R9 32 -R131 +R129 !i10b 1 -R132 -R254 -R255 +R130 +R270 +R271 !i113 1 R14 R15 Etestbench_synchronization_top -R59 -R60 +R0 +R58 R2 R1 R3 R4 R5 R6 -Z256 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_synchronization_top.vhd -Z257 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_synchronization_top.vhd +Z272 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_synchronization_top.vhd +Z273 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_synchronization_top.vhd l0 L9 VJbl79EUlZHM@Gg?J`h[M<2 !s100 ]jFJ>JdKa2KMeLkb8ni4]1 R9 32 -R19 +R10 !i10b 1 -R20 -Z258 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_synchronization_top.vhd| -Z259 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_synchronization_top.vhd| +R19 +Z274 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_synchronization_top.vhd| +Z275 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_synchronization_top.vhd| !i113 1 R14 R15 Artl -R103 +R101 R16 -R23 -R60 +R22 +R58 R2 R1 R3 @@ -2096,60 +2141,60 @@ VJ6NDaYm[9B=D7gEPjaacl2 !s100 [ob2nG2zZNGzbo>5cY`a81 R9 32 -R19 +R10 !i10b 1 -R20 -R258 -R259 +R19 +R274 +R275 !i113 1 R14 R15 Etestbench_top -R59 -R60 +Z276 w1620845173 +R58 R1 R3 R4 R5 R6 -Z260 8D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd -Z261 FD:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd +Z277 8D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd +Z278 FD:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd l0 L8 VQ79b=g>OPnQ>U_0@zceW;1 !s100 9796^EP`05J<^TlW52dEH0 R9 32 -R19 +R10 !i10b 1 -R20 -Z262 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd| -Z263 !s107 D:/rfranca/Development/GitHub/SimuCam_Development2/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd| +R19 +Z279 !s90 -reportprogress|300|-work|work|-2002|-explicit|-stats=none|D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd| +Z280 !s107 D:/rfranca/Development/GitHub/IWF_SimuCam_Development/FPGA_Developments/SpaceWire_Channel/Development/Testbench/testbench_top.vhd| !i113 1 R14 R15 Artl -R119 -R140 +R117 +R138 R2 -R161 -R60 +R160 +R58 R1 R3 R4 R5 -Z264 DEx4 work 13 testbench_top 0 22 Q79b=g>OPnQ>U_0@zceW;1 -l59 +Z281 DEx4 work 13 testbench_top 0 22 Q79b=g>OPnQ>U_0@zceW;1 +l67 L11 -Z265 Vj>Z[_`EZLBMCdnUzlJhcj1 -Z266 !s100 F50<2c>a139OXJcfZ>JLD1 +Z282 VI[VIK_CQK:[TG05ABW`X;1 +Z283 !s100 BiJbYO5A@>R0OOV+ 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
    gY$!Hf^US} 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 literal 98304 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 DbV@K4 diff --git a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_lib1_83.qdb b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_lib1_121.qdb similarity index 56% rename from FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_lib1_83.qdb rename to FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_lib1_121.qdb index d216b45956d6c7c4c1917c374381cd36caa7650a..642f4afb8112fd72d0aa1dac0d685901ee4f0d68 100644 GIT binary patch literal 32768 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 Fe*mC}0S*8F literal 32768 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® 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®*82So5cwdE)|4_sG*MguS< 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𝔫Ba#;?25mw& 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

    (IEa(!C#Scv^Zx(AkXjB*PR0~`6?9L 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

    d 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 diff --git a/FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_lib1_83.qtl b/FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_lib1_121.qtl similarity index 51% rename from FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_lib1_83.qtl rename to FPGA_Developments/SpaceWire_Channel/Development/Testbench/work/_lib1_121.qtl index 5361b88f768c92bffd6c78cdc12f895f69883d9e..12def1b83aa3b89568ed93dbe20cb7accfdaa8d9 100644 GIT binary patch delta 259530 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 T^g$Xd@I$)A)?m_~W%U08?-;ng delta 245501 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Π~Y^rM6dZbk(e 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ⅅ&!B4fd%vK*QN$ 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

    t!ShDw7P(4q!!fqXjP8ImP3g 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 CLK, - RST => RST, - DATA_IN_AVALON => AVALON_SLAVE_WRITEDATA, - ADDRESS_IN_AVALON => AVALON_SLAVE_ADDRESS, - ENABLE_DATA_IN_AVALON => AVALON_SLAVE_WRITE, - SEG_DATA => SEG_DATA, - SEG1_ON_OFF => SEG1_ON_OFF, - SEG1_UPDATE => SEG1_UPDATE, - SEG1_TEST => SEG1_TEST, - SEG0_ON_OFF => SEG0_ON_OFF, - SEG0_UPDATE => SEG0_UPDATE, - SEG0_TEST => SEG0_TEST - ); - - DOUBLE_DABBLE : ENTITY DOUBLE_DABBLE_8BIT - PORT MAP( - CLK => CLK, - RST => RST, - DD_ENABLE => DD_ENABLE, - DD_IDLE => DD_IDLE, - DD_CLEAR => DD_CLEAR, - DD_INTEGER_IN => DD_INTEGER, - DD_BCD2_OUT => OPEN, - DD_BCD1_OUT => DD_BCD1, - DD_BCD0_OUT => DD_BCD0 - ); - - SSDP1 : ENTITY SEVEN_SEG_DPS - PORT MAP( - CLK => CLK, - RST => RST, - SEG_ENABLE => SEG1_ENABLE, - SEG_BCD_IN => SEG1_BCD_IN, - SEG_DBITS_OUT => SEG1_DBITS_OUT - ); - - SSDP0 : ENTITY SEVEN_SEG_DPS - PORT MAP( - CLK => CLK, - RST => RST, - SEG_ENABLE => SEG0_ENABLE, - SEG_BCD_IN => SEG0_BCD_IN, - SEG_DBITS_OUT => SEG0_DBITS_OUT - ); - - GLOBAL : PROCESS (CLK, RST) - VARIABLE PAST_INTEGER : UNSIGNED(7 DOWNTO 0) := (OTHERS => '0'); - VARIABLE DELAY : STD_LOGIC := '0'; - BEGIN - IF (RST = '1') THEN - PAST_INTEGER := (OTHERS => '0'); - DD_ENABLE <= '0'; - DD_CLEAR <= '1'; - SEG1_ENABLE <= '0'; - SEG0_ENABLE <= '0'; - STATE_MACHINE <= S_STANDBY; - ELSIF (RISING_EDGE(CLK)) THEN - CASE STATE_MACHINE IS - - WHEN S_STANDBY => - DD_ENABLE <= '0'; - DD_CLEAR <= '0'; - SEG1_ENABLE <= '0'; - SEG0_ENABLE <= '0'; - IF ((SEG_DATA /= PAST_INTEGER) AND (DD_IDLE = '1')) THEN - PAST_INTEGER := SEG_DATA; - DD_INTEGER <= SEG_DATA; - DD_ENABLE <= '1'; - DELAY := '1'; - STATE_MACHINE <= S_WORKING; - ELSE - STATE_MACHINE <= S_STANDBY; - END IF; - - WHEN S_WORKING => - DD_ENABLE <= '0'; - IF (DELAY = '1') THEN - DELAY := '0'; - STATE_MACHINE <= S_WORKING; - ELSE - IF (DD_IDLE = '1') THEN - STATE_MACHINE <= S_UPDATE; - ELSE - STATE_MACHINE <= S_WORKING; - END IF; - END IF; - - WHEN S_UPDATE => - - SEG1_BCD_IN <= DD_BCD1; - IF (SEG1_UPDATE = '1') THEN - SEG1_ENABLE <= '1'; - END IF; - SEG0_BCD_IN <= DD_BCD0; - IF (SEG0_UPDATE = '1') THEN - SEG0_ENABLE <= '1'; - END IF; - DD_CLEAR <= '1'; - STATE_MACHINE <= S_STANDBY; - - END CASE; - END IF; - END PROCESS GLOBAL; - - SEVEN_SEG_DSP1_OUT <= - X"FF" WHEN (SEG1_ON_OFF = '0') ELSE - X"00" WHEN ((SEG1_ON_OFF = '1') AND (SEG1_TEST = '1')) ELSE - SEG1_DBITS_OUT WHEN ((SEG1_ON_OFF = '1') AND (SEG1_TEST = '0')); - - SEVEN_SEG_DSP0_OUT <= - X"FF" WHEN (SEG0_ON_OFF = '0') ELSE - X"00" WHEN ((SEG0_ON_OFF = '1') AND (SEG0_TEST = '1')) ELSE - SEG0_DBITS_OUT WHEN ((SEG0_ON_OFF = '1') AND (SEG0_TEST = '0')); - -END ARCHITECTURE TOP; +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.NUMERIC_STD.ALL; +USE WORK.ALL; + +ENTITY SEVEN_SEG_TOP IS + PORT ( + +------------------------------------------------------------------------------- +-- GLOBAL +------------------------------------------------------------------------------- + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + +------------------------------------------------------------------------------- +-- AVALON +------------------------------------------------------------------------------- + AVALON_SLAVE_ADDRESS : IN STD_LOGIC; + AVALON_SLAVE_WRITE : IN STD_LOGIC; + AVALON_SLAVE_WRITEDATA : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + +------------------------------------------------------------------------------- +-- OUTPUTS +------------------------------------------------------------------------------- + SEVEN_SEG_DSP1_OUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); + SEVEN_SEG_DSP0_OUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) + + ); + +END ENTITY SEVEN_SEG_TOP; + + +ARCHITECTURE TOP OF SEVEN_SEG_TOP IS + + ------------------------------------------------------------------------------- + -- SEVEN SEGMENT REGISTER + ------------------------------------------------------------------------------- + SIGNAL SEG_DATA : UNSIGNED(7 DOWNTO 0); + SIGNAL SEG1_ON_OFF : STD_LOGIC; + SIGNAL SEG1_UPDATE : STD_LOGIC; + SIGNAL SEG1_TEST : STD_LOGIC; + SIGNAL SEG0_ON_OFF : STD_LOGIC; + SIGNAL SEG0_UPDATE : STD_LOGIC; + SIGNAL SEG0_TEST : STD_LOGIC; + + ------------------------------------------------------------------------------- + -- DOUBLE DABBLE + ------------------------------------------------------------------------------- + SIGNAL DD_ENABLE : STD_LOGIC; + SIGNAL DD_IDLE : STD_LOGIC; + SIGNAL DD_CLEAR : STD_LOGIC; + SIGNAL DD_INTEGER : UNSIGNED(7 DOWNTO 0); + SIGNAL DD_BCD1 : STD_LOGIC_VECTOR(3 DOWNTO 0); + SIGNAL DD_BCD0 : STD_LOGIC_VECTOR(3 DOWNTO 0); + + ------------------------------------------------------------------------------- + -- SEVEN SEGMENT DISPLAY 1 + ------------------------------------------------------------------------------- + SIGNAL SEG1_ENABLE : STD_LOGIC; + SIGNAL SEG1_BCD_IN : STD_LOGIC_VECTOR(3 DOWNTO 0); + SIGNAL SEG1_DBITS_OUT : STD_LOGIC_VECTOR(7 DOWNTO 0); + + ------------------------------------------------------------------------------- + -- SEVEN SEGMENT DISPLAY 0 + ------------------------------------------------------------------------------- + SIGNAL SEG0_ENABLE : STD_LOGIC; + SIGNAL SEG0_BCD_IN : STD_LOGIC_VECTOR(3 DOWNTO 0); + SIGNAL SEG0_DBITS_OUT : STD_LOGIC_VECTOR(7 DOWNTO 0); + + ------------------------------------------------------------------------------- + -- STATE_MACHINE + ------------------------------------------------------------------------------- + + TYPE SST_STATE_MACHINE IS ( + S_STANDBY, + S_WORKING, + S_UPDATE + ); + SIGNAL STATE_MACHINE : SST_STATE_MACHINE := S_STANDBY; + +BEGIN + + SSDP_REGISTER : ENTITY SEVEN_SEG_REGISTER + PORT MAP( + CLK => CLK, + RST => RST, + DATA_IN_AVALON => AVALON_SLAVE_WRITEDATA, + ADDRESS_IN_AVALON => AVALON_SLAVE_ADDRESS, + ENABLE_DATA_IN_AVALON => AVALON_SLAVE_WRITE, + SEG_DATA => SEG_DATA, + SEG1_ON_OFF => SEG1_ON_OFF, + SEG1_UPDATE => SEG1_UPDATE, + SEG1_TEST => SEG1_TEST, + SEG0_ON_OFF => SEG0_ON_OFF, + SEG0_UPDATE => SEG0_UPDATE, + SEG0_TEST => SEG0_TEST + ); + + DOUBLE_DABBLE : ENTITY DOUBLE_DABBLE_8BIT + PORT MAP( + CLK => CLK, + RST => RST, + DD_ENABLE => DD_ENABLE, + DD_IDLE => DD_IDLE, + DD_CLEAR => DD_CLEAR, + DD_INTEGER_IN => DD_INTEGER, + DD_BCD2_OUT => OPEN, + DD_BCD1_OUT => DD_BCD1, + DD_BCD0_OUT => DD_BCD0 + ); + + SSDP1 : ENTITY SEVEN_SEG_DPS + PORT MAP( + CLK => CLK, + RST => RST, + SEG_ENABLE => SEG1_ENABLE, + SEG_BCD_IN => SEG1_BCD_IN, + SEG_DBITS_OUT => SEG1_DBITS_OUT + ); + + SSDP0 : ENTITY SEVEN_SEG_DPS + PORT MAP( + CLK => CLK, + RST => RST, + SEG_ENABLE => SEG0_ENABLE, + SEG_BCD_IN => SEG0_BCD_IN, + SEG_DBITS_OUT => SEG0_DBITS_OUT + ); + + GLOBAL : PROCESS (CLK, RST) + VARIABLE PAST_INTEGER : UNSIGNED(7 DOWNTO 0) := (OTHERS => '0'); + VARIABLE DELAY : STD_LOGIC := '0'; + BEGIN + IF (RST = '1') THEN + PAST_INTEGER := (OTHERS => '0'); + DD_ENABLE <= '0'; + DD_CLEAR <= '1'; + SEG1_ENABLE <= '0'; + SEG0_ENABLE <= '0'; + STATE_MACHINE <= S_STANDBY; + ELSIF (RISING_EDGE(CLK)) THEN + CASE STATE_MACHINE IS + + WHEN S_STANDBY => + DD_ENABLE <= '0'; + DD_CLEAR <= '0'; + SEG1_ENABLE <= '0'; + SEG0_ENABLE <= '0'; + IF ((SEG_DATA /= PAST_INTEGER) AND (DD_IDLE = '1')) THEN + PAST_INTEGER := SEG_DATA; + DD_INTEGER <= SEG_DATA; + DD_ENABLE <= '1'; + DELAY := '1'; + STATE_MACHINE <= S_WORKING; + ELSE + STATE_MACHINE <= S_STANDBY; + END IF; + + WHEN S_WORKING => + DD_ENABLE <= '0'; + IF (DELAY = '1') THEN + DELAY := '0'; + STATE_MACHINE <= S_WORKING; + ELSE + IF (DD_IDLE = '1') THEN + STATE_MACHINE <= S_UPDATE; + ELSE + STATE_MACHINE <= S_WORKING; + END IF; + END IF; + + WHEN S_UPDATE => + + SEG1_BCD_IN <= DD_BCD1; + IF (SEG1_UPDATE = '1') THEN + SEG1_ENABLE <= '1'; + END IF; + SEG0_BCD_IN <= DD_BCD0; + IF (SEG0_UPDATE = '1') THEN + SEG0_ENABLE <= '1'; + END IF; + DD_CLEAR <= '1'; + STATE_MACHINE <= S_STANDBY; + + END CASE; + END IF; + END PROCESS GLOBAL; + + SEVEN_SEG_DSP1_OUT <= + X"FF" WHEN (RST = '1') ELSE + X"FF" WHEN (SEG1_ON_OFF = '0') ELSE + X"00" WHEN ((SEG1_ON_OFF = '1') AND (SEG1_TEST = '1')) ELSE + SEG1_DBITS_OUT WHEN ((SEG1_ON_OFF = '1') AND (SEG1_TEST = '0')) ELSE + X"FF"; + + SEVEN_SEG_DSP0_OUT <= + X"FF" WHEN (RST = '1') ELSE + X"FF" WHEN (SEG0_ON_OFF = '0') ELSE + X"00" WHEN ((SEG0_ON_OFF = '1') AND (SEG0_TEST = '1')) ELSE + SEG0_DBITS_OUT WHEN ((SEG0_ON_OFF = '1') AND (SEG0_TEST = '0')) ELSE + X"FF"; + +END ARCHITECTURE TOP; diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd index 3ad602e4..03ffa099 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwerr.vhd @@ -89,7 +89,7 @@ architecture spwerr_arch of spwerr is begin -- Combinatorial process - process(r, err_usr_i, err_link_i) is + process(r, rst, err_usr_i, err_link_i) is variable v : regs_type; begin v := r; @@ -319,16 +319,25 @@ begin end if; end if; + -- Reset + if rst = '1' then + v := regs_reset; + err_usr_o.err_stat_o <= stby; + err_link_o.err_disc_o <= '0'; + err_link_o.err_par_o <= '0'; + err_link_o.err_esc_o <= '0'; + err_link_o.err_credit_o <= '0'; + err_link_o.err_ch_seq_o <= '0'; + end if; + -- Update future state regs. rin <= v; end process; - -- Sequential process - rst, update regs. - process(clk, rst) is + -- Sequential process - update regs. + process(clk) is begin - if (rst = '1') then - r <= regs_reset; - elsif rising_edge(clk) then + if rising_edge(clk) then r <= rin; end if; end process; diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd index 8670ffd2..307ed77e 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwlink.vhd @@ -12,324 +12,320 @@ use work.spwpkg.all; entity spwlink is - generic( - -- Reset time expressed in system clock cycles. - -- Should be 6.4 us (5.82 us .. 7.2 us) according to the standard. - reset_time : integer - ); - - port( - -- System clock. - clk : in std_logic; - -- Synchronous reset (active-high). - -- Disconnects, resets error conditions, puts the link state machine - -- in state ErrorReset. - rst : in std_logic; - -- Link level inputs. - linki : in spw_link_in_type; - -- Link level outputs. - linko : out spw_link_out_type; - -- Receiver enable signal to spwrecv. - rxen : out std_logic; - -- Output signals from spwrecv. - recvo : in spw_recv_out_type; - -- Input signals for spwxmit. - xmiti : out spw_xmit_in_type; - -- Output signals from spwxmit. - xmito : in spw_xmit_out_type - ); + generic( + -- Reset time expressed in system clock cycles. + -- Should be 6.4 us (5.82 us .. 7.2 us) according to the standard. + reset_time : integer + ); + + port( + -- System clock. + clk : in std_logic; + -- Synchronous reset (active-high). + -- Disconnects, resets error conditions, puts the link state machine + -- in state ErrorReset. + rst : in std_logic; + -- Link level inputs. + linki : in spw_link_in_type; + -- Link level outputs. + linko : out spw_link_out_type; + -- Receiver enable signal to spwrecv. + rxen : out std_logic; + -- Output signals from spwrecv. + recvo : in spw_recv_out_type; + -- Input signals for spwxmit. + xmiti : out spw_xmit_in_type; + -- Output signals from spwxmit. + xmito : in spw_xmit_out_type + ); end entity spwlink; architecture spwlink_arch of spwlink is - -- Convert boolean to std_logic. - type bool_to_logic_type is array (boolean) of std_ulogic; - constant bool_to_logic : bool_to_logic_type := (false => '0', true => '1'); - - -- State machine. - type state_type is ( - S_ErrorReset, S_ErrorWait, S_Ready, S_Started, S_Connecting, S_Run); - - -- Registers - type regs_type is record - -- state machine - state : state_type; - -- credit accounting - tx_credit : unsigned(5 downto 0); - rx_credit : unsigned(5 downto 0); - errcred : std_ulogic; - -- reset timer - timercnt : unsigned(10 downto 0); - timerdone : std_ulogic; - -- signal to transmitter - xmit_fct_in : std_ulogic; - end record; - - -- Initial state - constant regs_reset : regs_type := ( - state => S_ErrorReset, - tx_credit => "000000", - rx_credit => "000000", - errcred => '0', - timercnt => to_unsigned(reset_time, 11), - timerdone => '0', - xmit_fct_in => '0'); - - signal r : regs_type := regs_reset; - signal rin : regs_type; - - -- Internal interface - spwerr <-> spwlink - signal link_to_err : spwerr_from_link_type; - signal err_to_link : spwerr_to_link_type; + -- Convert boolean to std_logic. + type bool_to_logic_type is array (boolean) of std_ulogic; + constant bool_to_logic : bool_to_logic_type := (false => '0', true => '1'); + + -- State machine. + type state_type is ( + S_ErrorReset, S_ErrorWait, S_Ready, S_Started, S_Connecting, S_Run); + + -- Registers + type regs_type is record + -- state machine + state : state_type; + -- credit accounting + tx_credit : unsigned(5 downto 0); + rx_credit : unsigned(5 downto 0); + errcred : std_ulogic; + -- reset timer + timercnt : unsigned(10 downto 0); + timerdone : std_ulogic; + -- signal to transmitter + xmit_fct_in : std_ulogic; + end record; + + -- Initial state + constant regs_reset : regs_type := ( + state => S_ErrorReset, + tx_credit => "000000", + rx_credit => "000000", + errcred => '0', + timercnt => to_unsigned(reset_time, 11), + timerdone => '0', + xmit_fct_in => '0'); + + signal r : regs_type := regs_reset; + signal rin : regs_type; + + -- Internal interface - spwerr <-> spwlink + signal link_to_err : spwerr_from_link_type; + signal err_to_link : spwerr_to_link_type; begin - -- Instantiate error controller. - err_inst : spwerr - port map( - clk => clk, - rst => rst, - err_link_i => link_to_err, - err_link_o => err_to_link, - err_usr_i => linki.err_usr_i, - err_usr_o => linko.err_usr_o - ); - - -- Combinatorial process - process(r, rst, linki, recvo, xmito, err_to_link) is - variable v : regs_type; - variable v_timerrst : std_logic; - variable v_xmiti : spw_xmit_in_type; - begin - v := r; - v_timerrst := '0'; - - -- State machine. - case r.state is - - when S_ErrorReset => - -- Wait for timer. - if r.timercnt = 0 then - v.state := S_ErrorWait; - v_timerrst := '1'; - end if; - v.errcred := '0'; - v.xmit_fct_in := '0'; - - when S_ErrorWait => - -- Wait for 2 timer periods. - if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or - ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') then - -- Note: spwrecv will never issue errpar, erresc, gotfct, - -- tick_out or rxchar before the first NULL has been seen. - -- Therefore it's ok here to bail on those conditions - -- without explicitly testing got_null. - v.state := S_ErrorReset; -- error, go back to reset - v_timerrst := '1'; - elsif r.timercnt = 0 then - if r.timerdone = '1' then - v.state := S_Ready; - v_timerrst := '1'; - end if; - end if; - - when S_Ready => - -- Wait for link start. - if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or - ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') then - v.state := S_ErrorReset; -- error, go back to reset - v_timerrst := '1'; - elsif (linki.linkdis = '0') and (r.xmit_fct_in = '1') and - ((linki.linkstart or (linki.autostart and recvo.gotnull)) = '1') then - v.state := S_Started; -- link enabled; start sending NULL - v_timerrst := '1'; - end if; - - when S_Started => - -- Wait for NULL. - if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or - ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') or - ((r.timercnt = 0) and r.timerdone = '1') then - v.state := S_ErrorReset; -- error, go back to reset - v_timerrst := '1'; - elsif recvo.gotnull = '1' then - v.state := S_Connecting; -- received null, continue - v_timerrst := '1'; - end if; - - when S_Connecting => - -- Wait for FCT. - if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or - ((recvo.tick_out or recvo.rxchar) = '1') or - ((r.timercnt = 0) and r.timerdone = '1') then - v.state := S_ErrorReset; -- error, go back to reset - v_timerrst := '1'; - elsif recvo.gotfct = '1' then - v.state := S_Run; -- got FCT, init completed - end if; - - when S_Run => - -- All is well. - if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or (r.errcred = '1') or - -- Spwerr can cause a disconnetion by forcing link disable - ((linki.linkdis or err_to_link.err_disc_o) = '1') then - v.state := S_ErrorReset; -- error, go back to reset - v_timerrst := '1'; - end if; - - end case; - - -- Update credit counters. - if r.state = S_ErrorReset then - - -- reset credit - v.tx_credit := to_unsigned(0, v.tx_credit'length); - v.rx_credit := to_unsigned(0, v.rx_credit'length); - - else - - -- update TX credit - if recvo.gotfct = '1' then - -- just received a FCT token - v.tx_credit := v.tx_credit + to_unsigned(8, v.tx_credit'length); - if r.tx_credit > 48 then - -- received too many FCT tokens - v.errcred := '1'; - end if; - end if; - -- Only decrements tx_credit without char sequence error injection - if (err_to_link.err_ch_seq_o = '0') then - if xmito.txack = '1' then - -- just sent one byte - v.tx_credit := v.tx_credit - to_unsigned(1, v.tx_credit'length); - end if; - end if; - - -- Only increments rx_credit without credit error injection - if (err_to_link.err_credit_o = '0') then - -- update RX credit after sending FCT - if xmito.fctack = '1' then - -- just sent a FCT token - v.rx_credit := v.rx_credit + to_unsigned(8, v.rx_credit'length); - end if; - end if; - - -- decide about sending FCT tokens - v.xmit_fct_in := bool_to_logic((v.rx_credit <= 48) and (v.rx_credit + to_unsigned(8, v.rx_credit'length) <= unsigned(linki.rxroom))); - - -- update RX credit after receiving character - if recvo.rxchar = '1' then - -- just received a character - v.rx_credit := v.rx_credit - to_unsigned(1, v.rx_credit'length); - if r.rx_credit = 0 then - -- remote transmitter violated its credit - v.errcred := '1'; - end if; - end if; - - end if; - - -- Update the initializaton reset timer. - if v_timerrst = '1' then - v.timercnt := to_unsigned(reset_time, v.timercnt'length); - v.timerdone := '0'; - else - if r.timercnt = 0 then - v.timercnt := to_unsigned(reset_time, v.timercnt'length); - v.timerdone := '1'; - else - v.timercnt := r.timercnt - 1; - end if; - end if; - - -- Reset - if rst = '1' then - v := regs_reset; - end if; - - -- Drive link level outputs. - linko.started <= bool_to_logic(r.state = S_Started); - linko.connecting <= bool_to_logic(r.state = S_Connecting); - linko.running <= bool_to_logic(r.state = S_Run); - linko.errdisc <= recvo.errdisc and bool_to_logic(r.state = S_Run); - linko.errpar <= recvo.errpar and bool_to_logic(r.state = S_Run); - linko.erresc <= recvo.erresc and bool_to_logic(r.state = S_Run); - linko.errcred <= r.errcred; - linko.txack <= xmito.txack; - linko.tick_out <= recvo.tick_out and bool_to_logic(r.state = S_Run); - linko.ctrl_out <= recvo.ctrl_out; - linko.time_out <= recvo.time_out; - linko.rxchar <= recvo.rxchar and bool_to_logic(r.state = S_Run); - linko.rxflag <= recvo.rxflag; - linko.rxdata <= recvo.rxdata; - - -- Drive receiver inputs. - rxen <= bool_to_logic(r.state /= S_ErrorReset); - - -- Drive transmitter input signals. - -- v_xmiti intercepts signals - v_xmiti.txen := bool_to_logic(r.state = S_Started or r.state = S_Connecting or r.state = S_Run); - v_xmiti.stnull := bool_to_logic(r.state = S_Started); - v_xmiti.stfct := bool_to_logic(r.state = S_Connecting); - v_xmiti.fct_in := r.xmit_fct_in; - v_xmiti.tick_in := linki.tick_in and bool_to_logic(r.state = S_Run); - v_xmiti.ctrl_in := linki.ctrl_in; - v_xmiti.time_in := linki.time_in; - v_xmiti.txwrite := linki.txwrite and bool_to_logic(r.tx_credit /= 0); - v_xmiti.txflag := linki.txflag; - v_xmiti.txdata := linki.txdata; - - -- Logic for parity, escape, charactere sequence and credit errors: update v_xmiti. - if ((err_to_link.err_par_o or err_to_link.err_esc_o) = '1') then - -- For parity and escape errors (treated directly by xmiti unity), send only null condition is a must. - v_xmiti.stnull := '1'; - elsif (err_to_link.err_credit_o = '1') then - -- Prepare conditions to send 8 x fct - -- No need to use counter or fsm, because err_credit_o pulse is long enough. - v_xmiti.tick_in := '0'; - v_xmiti.fct_in := '1'; - elsif (err_to_link.err_ch_seq_o = '1') then - -- Prepare conditions to send a N-char outside run state - v_xmiti.fct_in := '0'; - -- Send EOP outside run state - v_xmiti.txflag := '1'; - v_xmiti.txdata := "00000000"; - v_xmiti.txwrite := '1'; - end if; - - -- Write back to xmiti inputs. - -- If there is no error injection request, it is a simple bypass. - xmiti.txen <= v_xmiti.txen; - xmiti.stnull <= v_xmiti.stnull; - xmiti.stfct <= v_xmiti.stfct; - xmiti.fct_in <= v_xmiti.fct_in; - xmiti.tick_in <= v_xmiti.tick_in; - xmiti.ctrl_in <= v_xmiti.ctrl_in; - xmiti.time_in <= v_xmiti.time_in; - xmiti.txwrite <= v_xmiti.txwrite; - xmiti.txflag <= v_xmiti.txflag; - xmiti.txdata <= v_xmiti.txdata; - -- Parity, escape, char sequence, and credit error injection must also be treated directly by xmit unity - xmiti.err_inj_par <= err_to_link.err_par_o; - xmiti.err_inj_esc <= err_to_link.err_esc_o; - xmiti.err_inj_ch_seq <= err_to_link.err_ch_seq_o; - xmiti.err_inj_credit <= err_to_link.err_credit_o; - - -- Drive spwerr inputs. - link_to_err.run_state <= bool_to_logic(r.state = S_Run); - link_to_err.start_or_conn_state <= bool_to_logic(r.state = S_Started or r.state = S_Connecting); - - -- Update registers. - rin <= v; - end process; - - -- Update registers. - process(clk) is - begin - if rising_edge(clk) then - r <= rin; - end if; - end process; + -- Instantiate error controller. + err_inst : spwerr + port map( + clk => clk, + rst => rst, + err_link_i => link_to_err, + err_link_o => err_to_link, + err_usr_i => linki.err_usr_i, + err_usr_o => linko.err_usr_o + ); + + -- Combinatorial process + process(r, rst, linki, recvo, xmito, err_to_link) is + variable v : regs_type; + variable v_timerrst : std_logic; + variable v_xmiti : spw_xmit_in_type; + begin + v := r; + v_timerrst := '0'; + + -- State machine. + case r.state is + + when S_ErrorReset => + -- Wait for timer. + if r.timercnt = 0 then + v.state := S_ErrorWait; + v_timerrst := '1'; + end if; + v.errcred := '0'; + v.xmit_fct_in := '0'; + + when S_ErrorWait => + -- Wait for 2 timer periods. + if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') then + -- Note: spwrecv will never issue errpar, erresc, gotfct, + -- tick_out or rxchar before the first NULL has been seen. + -- Therefore it's ok here to bail on those conditions + -- without explicitly testing got_null. + v.state := S_ErrorReset; -- error, go back to reset + v_timerrst := '1'; + elsif r.timercnt = 0 then + if r.timerdone = '1' then + v.state := S_Ready; + v_timerrst := '1'; + end if; + end if; + + when S_Ready => + -- Wait for link start. + if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') then + v.state := S_ErrorReset; -- error, go back to reset + v_timerrst := '1'; + elsif (linki.linkdis = '0') and (r.xmit_fct_in = '1') and ((linki.linkstart or (linki.autostart and recvo.gotnull)) = '1') then + v.state := S_Started; -- link enabled; start sending NULL + v_timerrst := '1'; + end if; + + when S_Started => + -- Wait for NULL. + if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or ((recvo.gotfct or recvo.tick_out or recvo.rxchar) = '1') or ((r.timercnt = 0) and r.timerdone = '1') then + v.state := S_ErrorReset; -- error, go back to reset + v_timerrst := '1'; + elsif recvo.gotnull = '1' then + v.state := S_Connecting; -- received null, continue + v_timerrst := '1'; + end if; + + when S_Connecting => + -- Wait for FCT. + if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or ((recvo.tick_out or recvo.rxchar) = '1') or ((r.timercnt = 0) and r.timerdone = '1') then + v.state := S_ErrorReset; -- error, go back to reset + v_timerrst := '1'; + elsif recvo.gotfct = '1' then + v.state := S_Run; -- got FCT, init completed + end if; + + when S_Run => + -- All is well. + if ((recvo.errdisc or recvo.errpar or recvo.erresc) = '1') or (r.errcred = '1') or -- Spwerr can cause a disconnetion by forcing link disable + ((linki.linkdis or err_to_link.err_disc_o) = '1') then + v.state := S_ErrorReset; -- error, go back to reset + v_timerrst := '1'; + end if; + + when others => + v.state := S_ErrorReset; -- recover from invalid state + v_timerrst := '1'; + + end case; + + -- Update credit counters. + if r.state = S_ErrorReset then + + -- reset credit + v.tx_credit := to_unsigned(0, v.tx_credit'length); + v.rx_credit := to_unsigned(0, v.rx_credit'length); + + else + + -- update TX credit + if recvo.gotfct = '1' then + -- just received a FCT token + v.tx_credit := v.tx_credit + to_unsigned(8, v.tx_credit'length); + if r.tx_credit > 48 then + -- received too many FCT tokens + v.errcred := '1'; + end if; + end if; + -- Only decrements tx_credit without char sequence error injection + if (err_to_link.err_ch_seq_o = '0') then + if xmito.txack = '1' then + -- just sent one byte + v.tx_credit := v.tx_credit - to_unsigned(1, v.tx_credit'length); + end if; + end if; + + -- Only increments rx_credit without credit error injection + if (err_to_link.err_credit_o = '0') then + -- update RX credit after sending FCT + if xmito.fctack = '1' then + -- just sent a FCT token + v.rx_credit := v.rx_credit + to_unsigned(8, v.rx_credit'length); + end if; + end if; + + -- decide about sending FCT tokens + v.xmit_fct_in := bool_to_logic((v.rx_credit <= 48) and (v.rx_credit + to_unsigned(8, v.rx_credit'length) <= unsigned(linki.rxroom))); + + -- update RX credit after receiving character + if recvo.rxchar = '1' then + -- just received a character + v.rx_credit := v.rx_credit - to_unsigned(1, v.rx_credit'length); + if r.rx_credit = 0 then + -- remote transmitter violated its credit + v.errcred := '1'; + end if; + end if; + + end if; + + -- Update the initializaton reset timer. + if v_timerrst = '1' then + v.timercnt := to_unsigned(reset_time, v.timercnt'length); + v.timerdone := '0'; + else + if r.timercnt = 0 then + v.timercnt := to_unsigned(reset_time, v.timercnt'length); + v.timerdone := '1'; + else + v.timercnt := r.timercnt - 1; + end if; + end if; + + -- Reset + if rst = '1' then + v := regs_reset; + end if; + + -- Drive link level outputs. + linko.started <= bool_to_logic(r.state = S_Started); + linko.connecting <= bool_to_logic(r.state = S_Connecting); + linko.running <= bool_to_logic(r.state = S_Run); + linko.errdisc <= recvo.errdisc and bool_to_logic(r.state = S_Run); + linko.errpar <= recvo.errpar and bool_to_logic(r.state = S_Run); + linko.erresc <= recvo.erresc and bool_to_logic(r.state = S_Run); + linko.errcred <= r.errcred; + linko.txack <= xmito.txack; + linko.tick_out <= recvo.tick_out and bool_to_logic(r.state = S_Run); + linko.ctrl_out <= recvo.ctrl_out; + linko.time_out <= recvo.time_out; + linko.rxchar <= recvo.rxchar and bool_to_logic(r.state = S_Run); + linko.rxflag <= recvo.rxflag; + linko.rxdata <= recvo.rxdata; + + -- Drive receiver inputs. + rxen <= bool_to_logic(r.state /= S_ErrorReset); + + -- Drive transmitter input signals. + -- v_xmiti intercepts signals + v_xmiti.txen := bool_to_logic(r.state = S_Started or r.state = S_Connecting or r.state = S_Run); + v_xmiti.stnull := bool_to_logic(r.state = S_Started); + v_xmiti.stfct := bool_to_logic(r.state = S_Connecting); + v_xmiti.fct_in := r.xmit_fct_in; + v_xmiti.tick_in := linki.tick_in and bool_to_logic(r.state = S_Run); + v_xmiti.ctrl_in := linki.ctrl_in; + v_xmiti.time_in := linki.time_in; + v_xmiti.txwrite := linki.txwrite and bool_to_logic(r.tx_credit /= 0); + v_xmiti.txflag := linki.txflag; + v_xmiti.txdata := linki.txdata; + + -- Logic for parity, escape, charactere sequence and credit errors: update v_xmiti. + if ((err_to_link.err_par_o or err_to_link.err_esc_o) = '1') then + -- For parity and escape errors (treated directly by xmiti unity), send only null condition is a must. + v_xmiti.stnull := '1'; + elsif (err_to_link.err_credit_o = '1') then + -- Prepare conditions to send 8 x fct + -- No need to use counter or fsm, because err_credit_o pulse is long enough. + v_xmiti.tick_in := '0'; + v_xmiti.fct_in := '1'; + elsif (err_to_link.err_ch_seq_o = '1') then + -- Prepare conditions to send a N-char outside run state + v_xmiti.fct_in := '0'; + -- Send EOP outside run state + v_xmiti.txflag := '1'; + v_xmiti.txdata := "00000000"; + v_xmiti.txwrite := '1'; + end if; + + -- Write back to xmiti inputs. + -- If there is no error injection request, it is a simple bypass. + xmiti.txen <= v_xmiti.txen; + xmiti.stnull <= v_xmiti.stnull; + xmiti.stfct <= v_xmiti.stfct; + xmiti.fct_in <= v_xmiti.fct_in; + xmiti.tick_in <= v_xmiti.tick_in; + xmiti.ctrl_in <= v_xmiti.ctrl_in; + xmiti.time_in <= v_xmiti.time_in; + xmiti.txwrite <= v_xmiti.txwrite; + xmiti.txflag <= v_xmiti.txflag; + xmiti.txdata <= v_xmiti.txdata; + -- Parity, escape, char sequence, and credit error injection must also be treated directly by xmit unity + xmiti.err_inj_par <= err_to_link.err_par_o; + xmiti.err_inj_esc <= err_to_link.err_esc_o; + xmiti.err_inj_ch_seq <= err_to_link.err_ch_seq_o; + xmiti.err_inj_credit <= err_to_link.err_credit_o; + + -- Drive spwerr inputs. + link_to_err.run_state <= bool_to_logic(r.state = S_Run); + link_to_err.start_or_conn_state <= bool_to_logic(r.state = S_Started or r.state = S_Connecting); + + -- Update registers. + rin <= v; + end process; + + -- Update registers. + process(clk) is + begin + if rising_edge(clk) then + r <= rin; + end if; + end process; end architecture spwlink_arch; diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd index b4fe8ffd..6c2ad076 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwpkg.vhd @@ -7,454 +7,456 @@ use ieee.std_logic_1164.all; package spwpkg is - -- Indicates a platform-specific implementation. - type spw_implementation_type is (impl_generic, impl_fast); + -- Indicates a platform-specific implementation. + type spw_implementation_type is (impl_generic, impl_fast); - -- Enumerated type for spwerr error selection values - -- Obs.: esc_eop, esc_eep: future implementation - type t_spw_err_sel is (disconnection, parity, esc_eop, esc_eep, esc_esc, credit, ch_seq, reserved); + -- Enumerated type for spwerr error selection values + -- Obs.: esc_eop, esc_eep: future implementation + type t_spw_err_sel is (disconnection, parity, esc_eop, esc_eep, esc_esc, credit, ch_seq, reserved); - -- Enumerated type for spwerr error status values - type t_spw_err_stat is (stby, accepted, invalid, inconsistent, ended_ok, reserved); + -- Enumerated type for spwerr error status values + type t_spw_err_stat is (stby, accepted, invalid, inconsistent, ended_ok, reserved); - -- Input signals from toplevel to spwerr. - type spwerr_from_usr_type is record + -- Input signals from toplevel to spwerr. + type spwerr_from_usr_type is record - err_inj_i : std_logic; - err_sel_i : t_spw_err_sel; - end record; + err_inj_i : std_logic; + err_sel_i : t_spw_err_sel; + end record; - -- Output signals from spwerr to toplevel - type spwerr_to_usr_type is record + -- Output signals from spwerr to toplevel + type spwerr_to_usr_type is record - err_stat_o : t_spw_err_stat; - end record; + err_stat_o : t_spw_err_stat; + end record; - -- Input signals from spwlink to spwerr. - type spwerr_from_link_type is record + -- Input signals from spwlink to spwerr. + type spwerr_from_link_type is record - run_state : std_logic; - start_or_conn_state: std_logic; - end record; + run_state : std_logic; + start_or_conn_state : std_logic; + end record; - -- Output signals from spwerr to spwlink - type spwerr_to_link_type is record + -- Output signals from spwerr to spwlink + type spwerr_to_link_type is record - err_disc_o : std_logic; - err_par_o : std_logic; - err_esc_o : std_logic; - err_credit_o : std_logic; - err_ch_seq_o : std_logic; - end record; + err_disc_o : std_logic; + err_par_o : std_logic; + err_esc_o : std_logic; + err_credit_o : std_logic; + err_ch_seq_o : std_logic; + end record; - -- Input signals to spwlink. - type spw_link_in_type is record + -- Input signals to spwlink. + type spw_link_in_type is record - -- Enables automatic link start on receipt of a NULL character. - autostart : std_logic; + -- Enables automatic link start on receipt of a NULL character. + autostart : std_logic; - -- Enables link start once the Ready state is reached. - -- Without either "autostart" or "linkstart", the link remains in - -- state Ready. - linkstart : std_logic; + -- Enables link start once the Ready state is reached. + -- Without either "autostart" or "linkstart", the link remains in + -- state Ready. + linkstart : std_logic; - -- Do not start link (overrides "linkstart" and "autostart") and/or - -- disconnect the currently running link. - linkdis : std_logic; + -- Do not start link (overrides "linkstart" and "autostart") and/or + -- disconnect the currently running link. + linkdis : std_logic; - -- Number of bytes available in the receive buffer. Used to for - -- flow-control operation. At least 8 bytes must be available - -- initially, otherwise the link can not start. Values larger than 63 - -- are irrelevant and may be presented as 63. The available room may - -- decrease by one byte due to the reception of an N-Char; in that case - -- the "rxroom" signal must be updated on the clock following the clock - -- on which "rxchar" is high. Under no other circumstances may "rxroom" - -- be decreased. - rxroom : std_logic_vector(5 downto 0); + -- Number of bytes available in the receive buffer. Used to for + -- flow-control operation. At least 8 bytes must be available + -- initially, otherwise the link can not start. Values larger than 63 + -- are irrelevant and may be presented as 63. The available room may + -- decrease by one byte due to the reception of an N-Char; in that case + -- the "rxroom" signal must be updated on the clock following the clock + -- on which "rxchar" is high. Under no other circumstances may "rxroom" + -- be decreased. + rxroom : std_logic_vector(5 downto 0); - -- High for one clock cycle to request transmission of a TimeCode. - -- The request is registered inside spwxmit until it can be processed. - tick_in : std_logic; + -- High for one clock cycle to request transmission of a TimeCode. + -- The request is registered inside spwxmit until it can be processed. + tick_in : std_logic; - -- Control bits of the TimeCode to be sent. - -- Must be valid while tick_in is high. - ctrl_in : std_logic_vector(1 downto 0); + -- Control bits of the TimeCode to be sent. + -- Must be valid while tick_in is high. + ctrl_in : std_logic_vector(1 downto 0); - -- Counter value of the TimeCode to be sent. - -- Must be valid while tick_in is high. - time_in : std_logic_vector(5 downto 0); + -- Counter value of the TimeCode to be sent. + -- Must be valid while tick_in is high. + time_in : std_logic_vector(5 downto 0); - -- Requests transmission of an N-Char. - -- Keep this signal high until confirmed by "txack". - txwrite : std_logic; + -- Requests transmission of an N-Char. + -- Keep this signal high until confirmed by "txack". + txwrite : std_logic; - -- Control flag to be sent with the next N-Char. - -- Must be valid while "txwrite" is high. - txflag : std_logic; + -- Control flag to be sent with the next N-Char. + -- Must be valid while "txwrite" is high. + txflag : std_logic; - -- Byte to be sent, or "00000000" for EOP or "00000001" for EEP. - -- Must be valid while "txwrite" is high. - txdata : std_logic_vector(7 downto 0); + -- Byte to be sent, or "00000000" for EOP or "00000001" for EEP. + -- Must be valid while "txwrite" is high. + txdata : std_logic_vector(7 downto 0); - -- Spwerr interface in - toplevel - err_usr_i : spwerr_from_usr_type; - end record; + -- Spwerr interface in - toplevel + err_usr_i : spwerr_from_usr_type; + end record; - -- Output signals from spwlink. - type spw_link_out_type is record + -- Output signals from spwlink. + type spw_link_out_type is record - -- High if the link state machine is currently in state Started. - started : std_logic; + -- High if the link state machine is currently in state Started. + started : std_logic; - -- High if the link state machine is currently in state Connecting. - connecting : std_logic; + -- High if the link state machine is currently in state Connecting. + connecting : std_logic; - -- High if the link state machine is currently in state Run. - running : std_logic; + -- High if the link state machine is currently in state Run. + running : std_logic; - -- Disconnect detected in state Run. Triggers a reset and reconnect. - -- This indication is auto-clearing. - errdisc : std_logic; + -- Disconnect detected in state Run. Triggers a reset and reconnect. + -- This indication is auto-clearing. + errdisc : std_logic; - -- Parity error detected in state Run. Triggers a reset and reconnect. - -- This indication is auto-clearing. - errpar : std_logic; + -- Parity error detected in state Run. Triggers a reset and reconnect. + -- This indication is auto-clearing. + errpar : std_logic; - -- Invalid escape sequence detected in state Run. - -- Triggers a reset and reconnect; auto-clearing. - erresc : std_logic; + -- Invalid escape sequence detected in state Run. + -- Triggers a reset and reconnect; auto-clearing. + erresc : std_logic; - -- Credit error detected. Triggers a reset and reconnect. - -- This indication is auto-clearing. - errcred : std_logic; + -- Credit error detected. Triggers a reset and reconnect. + -- This indication is auto-clearing. + errcred : std_logic; - -- High to confirm the transmission of an N-Char. - -- This is a Wishbone-style handshake signal. It has a combinatorial - -- dependency on "txwrite". - txack : std_logic; + -- High to confirm the transmission of an N-Char. + -- This is a Wishbone-style handshake signal. It has a combinatorial + -- dependency on "txwrite". + txack : std_logic; - -- High for one clock cycle if a TimeCode was just received. - -- Verification of the TimeCode as described in 8.12.2 of ECSS-E-50 - -- is not implemented; all received timecodes are reported. - tick_out : std_logic; + -- High for one clock cycle if a TimeCode was just received. + -- Verification of the TimeCode as described in 8.12.2 of ECSS-E-50 + -- is not implemented; all received timecodes are reported. + tick_out : std_logic; - -- Control bits of last received TimeCode. - ctrl_out : std_logic_vector(1 downto 0); + -- Control bits of last received TimeCode. + ctrl_out : std_logic_vector(1 downto 0); - -- Counter value of last received TimeCode. - time_out : std_logic_vector(5 downto 0); + -- Counter value of last received TimeCode. + time_out : std_logic_vector(5 downto 0); - -- High for one clock cycle if an N-Char (data byte or EOP or EEP) was - -- just received. The data bits must be accepted immediately from - -- "rxflag" and "rxdata". - rxchar : std_logic; + -- High for one clock cycle if an N-Char (data byte or EOP or EEP) was + -- just received. The data bits must be accepted immediately from + -- "rxflag" and "rxdata". + rxchar : std_logic; - -- High if the received character is EOP or EEP, low if it is a data - -- byte. Valid when "rxchar" is high. - rxflag : std_logic; + -- High if the received character is EOP or EEP, low if it is a data + -- byte. Valid when "rxchar" is high. + rxflag : std_logic; - -- Received byte, or "00000000" for EOP or "00000001" for EEP. - -- Valid when "rxchar" is high. - rxdata : std_logic_vector(7 downto 0); + -- Received byte, or "00000000" for EOP or "00000001" for EEP. + -- Valid when "rxchar" is high. + rxdata : std_logic_vector(7 downto 0); - -- Spwerr interface out - toplevel - err_usr_o : spwerr_to_usr_type; - end record; + -- Spwerr interface out - toplevel + err_usr_o : spwerr_to_usr_type; + end record; - -- Output signals from spwrecv to spwlink. - type spw_recv_out_type is record + -- Output signals from spwrecv to spwlink. + type spw_recv_out_type is record - -- High if at least one signal change was seen since enable. - -- Resets to low when rxen is low. - gotbit : std_logic; + -- High if at least one signal change was seen since enable. + -- Resets to low when rxen is low. + gotbit : std_logic; - -- High if at least one valid NULL pattern was detected since enable. - -- Resets to low when rxen is low. - gotnull : std_logic; + -- High if at least one valid NULL pattern was detected since enable. + -- Resets to low when rxen is low. + gotnull : std_logic; - -- High for one clock cycle if an FCT token was just received. - gotfct : std_logic; + -- High for one clock cycle if an FCT token was just received. + gotfct : std_logic; - -- High for one clock cycle if a TimeCode was just received. - tick_out : std_logic; + -- High for one clock cycle if a TimeCode was just received. + tick_out : std_logic; - -- Control bits of last received TimeCode. - ctrl_out : std_logic_vector(1 downto 0); + -- Control bits of last received TimeCode. + ctrl_out : std_logic_vector(1 downto 0); - -- Counter value of last received TimeCode. - time_out : std_logic_vector(5 downto 0); + -- Counter value of last received TimeCode. + time_out : std_logic_vector(5 downto 0); - -- High for one clock cycle if an N-Char (data byte or EOP/EEP) was just received. - rxchar : std_logic; + -- High for one clock cycle if an N-Char (data byte or EOP/EEP) was just received. + rxchar : std_logic; - -- High if rxchar is high and the received character is EOP or EEP. - -- Low if rxchar is high and the received character is a data byte. - rxflag : std_logic; - - -- Received byte, or "00000000" for EOP or "00000001" for EEP. - -- Valid when "rxchar" is high. - rxdata : std_logic_vector(7 downto 0); - - -- Disconnect detected (after a signal change was seen). - -- Resets to low when rxen is low or when a signal change is seen. - errdisc : std_logic; - - -- Parity error detected (after a valid NULL pattern was seen). - -- Sticky; resets to low when rxen is low. - errpar : std_logic; - - -- Escape sequence error detected (after a valid NULL pattern was seen). - -- Sticky; resets to low when rxen is low. - erresc : std_logic; - end record; - - -- Input signals to spwxmit from spwlink. - type spw_xmit_in_type is record - - -- High to enable transmitter; low to disable and reset transmitter. - txen : std_logic; - - -- Indicates that only NULL characters may be transmitted. - stnull : std_logic; - - -- Indicates that only NULL and/or FCT characters may be transmitted. - stfct : std_logic; - - -- Requests transmission of an FCT character. - -- Keep this signal high until confirmed by "fctack". - fct_in : std_logic; - - -- High for one clock cycle to request transmission of a TimeCode. - -- The request is registered inside spwxmit until it can be processed. - tick_in : std_logic; - - -- Control bits of the TimeCode to be sent. - -- Must be valid while "tick_in" is high. - ctrl_in : std_logic_vector(1 downto 0); - - -- Counter value of the TimeCode to be sent. - -- Must be valid while "tick_in" is high. - time_in : std_logic_vector(5 downto 0); - - -- Request transmission of an N-Char. - -- Keep this signal high until confirmed by "txack". - txwrite : std_logic; - - -- Control flag to be sent with the next N-Char. - -- Must be valid while "txwrite" is high. - txflag : std_logic; - - -- Byte to send, or "00000000" for EOP or "00000001" for EEP. - -- Must be valid while "txwrite" is high. - txdata : std_logic_vector(7 downto 0); - - -- Parity error injection control bit (from spwerr: internal to link) - err_inj_par: std_logic; - - -- Escape error injection control bit (from spwerr: internal to link) - err_inj_esc: std_logic; - - -- Char sequence error injection control bit (from spwerr: internal to link) - err_inj_ch_seq: std_logic; - - -- Credit error injection control bit (from spwerr: internal to link) - err_inj_credit: std_logic; - - end record; - - -- Output signals from spwxmit to spwlink. - type spw_xmit_out_type is record - - -- High to confirm transmission on an FCT character. - -- This is a Wishbone-style handshaking signal; it is combinatorially - -- dependent on "fct_in". - fctack : std_logic; - - -- High to confirm transmission of an N-Char. - -- This is a Wishbone-style handshaking signal; it is combinatorially - -- dependent on both "fct_in" and "txwrite". - txack : std_logic; - end record; - - -- Character-stream interface - component spwstream is - generic( - sysfreq : real; -- clk freq in Hz - txclkfreq : real := 0.0; -- txclk freq in Hz - rximpl : spw_implementation_type := impl_generic; - rxchunk : integer range 1 to 4 := 1; -- max bits per clk - tximpl : spw_implementation_type := impl_generic; - rxfifosize_bits : integer range 6 to 14 := 11; -- rx fifo size - txfifosize_bits : integer range 2 to 14 := 11 -- tx fifo size - ); - port( - clk : in std_logic; -- system clock - rxclk : in std_logic; -- receiver sample clock - txclk : in std_logic; -- transmit clock - rst : in std_logic; -- synchronous reset - autostart : in std_logic; -- automatic link start - linkstart : in std_logic; -- forced link start - linkdis : in std_logic; -- stop link - txdivcnt : in std_logic_vector(7 downto 0); -- tx scale factor - tick_in : in std_logic; -- request timecode xmit - ctrl_in : in std_logic_vector(1 downto 0); - time_in : in std_logic_vector(5 downto 0); - txwrite : in std_logic; -- request character xmit - txflag : in std_logic; -- control flag of tx char - txdata : in std_logic_vector(7 downto 0); - txrdy : out std_logic; -- room in tx fifo - txhalff : out std_logic; -- tx fifo half full - tick_out : out std_logic; -- timecode received - ctrl_out : out std_logic_vector(1 downto 0); - time_out : out std_logic_vector(5 downto 0); - rxvalid : out std_logic; -- rx fifo not empty - rxhalff : out std_logic; -- rx fifo half full - rxflag : out std_logic; -- control flag of rx char - rxdata : out std_logic_vector(7 downto 0); - rxread : in std_logic; -- accept rx character - started : out std_logic; -- link in Started state - connecting : out std_logic; -- link in Connecting state - running : out std_logic; -- link in Run state - errdisc : out std_logic; -- disconnect error - errpar : out std_logic; -- parity error - erresc : out std_logic; -- escape error - errcred : out std_logic; -- credit error - spw_di : in std_logic; - spw_si : in std_logic; - spw_do : out std_logic; - spw_so : out std_logic; - -- spwerr user interface - err_inj_i : in std_logic; - err_sel_i : in t_spw_err_sel; - err_stat_o : out t_spw_err_stat - ); - end component spwstream; - - -- Link Level Interface - component spwlink is - generic( - reset_time : integer -- reset time in clocks (6.4 us) - ); - port( - clk : in std_logic; -- system clock - rst : in std_logic; -- synchronous reset (active-high) - linki : in spw_link_in_type; - linko : out spw_link_out_type; - rxen : out std_logic; - recvo : in spw_recv_out_type; - xmiti : out spw_xmit_in_type; - xmito : in spw_xmit_out_type - ); - end component spwlink; - - -- Receiver - component spwrecv is - generic( - disconnect_time : integer range 1 to 255; -- disconnect period in system clock cycles - rxchunk : integer range 1 to 4 -- nr of bits per system clock - ); - port( - clk : in std_logic; -- system clock - rxen : in std_logic; -- receiver enabled - recvo : out spw_recv_out_type; - inact : in std_logic; - inbvalid : in std_logic; - inbits : in std_logic_vector(rxchunk - 1 downto 0) - ); - end component spwrecv; - - -- Transmitter (generic implementation) - component spwxmit is - port( - clk : in std_logic; -- system clock - rst : in std_logic; -- synchronous reset (active-high) - divcnt : in std_logic_vector(7 downto 0); - xmiti : in spw_xmit_in_type; - xmito : out spw_xmit_out_type; - spw_do : out std_logic; -- tx data to SPW bus - spw_so : out std_logic -- tx strobe to SPW bus - ); - end component spwxmit; - - -- Transmitter (separate tx clock domain) - component spwxmit_fast is - port( - clk : in std_logic; -- system clock - txclk : in std_logic; -- transmit clock - rst : in std_logic; -- synchronous reset (active-high) - divcnt : in std_logic_vector(7 downto 0); - xmiti : in spw_xmit_in_type; - xmito : out spw_xmit_out_type; - spw_do : out std_logic; -- tx data to SPW bus - spw_so : out std_logic -- tx strobe to SPW bus - ); - end component spwxmit_fast; - - -- Front-end for SpaceWire Receiver (generic implementation) - component spwrecvfront_generic is - port( - clk : in std_logic; -- system clock - rxen : in std_logic; -- high to enable receiver - inact : out std_logic; -- high if activity on input - inbvalid : out std_logic; -- high if inbits contains a valid received bit - inbits : out std_logic_vector(0 downto 0); -- received bit - spw_di : in std_logic; -- Data In signal from SpaceWire bus - spw_si : in std_logic -- Strobe In signal from SpaceWire bus - ); - end component spwrecvfront_generic; - - -- Front-end for SpaceWire Receiver (separate rx clock domain) - component spwrecvfront_fast is - generic( - rxchunk : integer range 1 to 4 -- max number of bits per system clock - ); - port( - clk : in std_logic; -- system clock - rxclk : in std_logic; -- sample clock (DDR) - rxen : in std_logic; -- high to enable receiver - inact : out std_logic; -- high if activity on input - inbvalid : out std_logic; -- high if inbits contains a valid group of received bits - inbits : out std_logic_vector(rxchunk - 1 downto 0); -- received bits - spw_di : in std_logic; -- Data In signal from SpaceWire bus - spw_si : in std_logic -- Strobe In signal from SpaceWire bus - ); - end component spwrecvfront_fast; - - -- Synchronous two-port memory. - component spwram is - generic( - abits : integer; - dbits : integer); - port( - rclk : in std_logic; - wclk : in std_logic; - ren : in std_logic; - raddr : in std_logic_vector(abits - 1 downto 0); - rdata : out std_logic_vector(dbits - 1 downto 0); - wen : in std_logic; - waddr : in std_logic_vector(abits - 1 downto 0); - wdata : in std_logic_vector(dbits - 1 downto 0)); - end component spwram; - - -- Double flip-flop synchronizer. - component syncdff is - port( - clk : in std_logic; -- clock (destination domain) - rst : in std_logic; -- asynchronous reset, active-high - di : in std_logic; -- input data - do : out std_logic); -- output data - end component syncdff; - - -- Spwerr Interface - component spwerr is - port( - clk : in std_logic; -- system clock - rst : in std_logic; -- asynchronous reset (active-high) - err_link_i : in spwerr_from_link_type; - err_link_o : out spwerr_to_link_type; - err_usr_i : in spwerr_from_usr_type; - err_usr_o : out spwerr_to_usr_type - ); - end component spwerr; + -- High if rxchar is high and the received character is EOP or EEP. + -- Low if rxchar is high and the received character is a data byte. + rxflag : std_logic; + + -- Received byte, or "00000000" for EOP or "00000001" for EEP. + -- Valid when "rxchar" is high. + rxdata : std_logic_vector(7 downto 0); + + -- Disconnect detected (after a signal change was seen). + -- Resets to low when rxen is low or when a signal change is seen. + errdisc : std_logic; + + -- Parity error detected (after a valid NULL pattern was seen). + -- Sticky; resets to low when rxen is low. + errpar : std_logic; + + -- Escape sequence error detected (after a valid NULL pattern was seen). + -- Sticky; resets to low when rxen is low. + erresc : std_logic; + end record; + + -- Input signals to spwxmit from spwlink. + type spw_xmit_in_type is record + + -- High to enable transmitter; low to disable and reset transmitter. + txen : std_logic; + + -- Indicates that only NULL characters may be transmitted. + stnull : std_logic; + + -- Indicates that only NULL and/or FCT characters may be transmitted. + stfct : std_logic; + + -- Requests transmission of an FCT character. + -- Keep this signal high until confirmed by "fctack". + fct_in : std_logic; + + -- High for one clock cycle to request transmission of a TimeCode. + -- The request is registered inside spwxmit until it can be processed. + tick_in : std_logic; + + -- Control bits of the TimeCode to be sent. + -- Must be valid while "tick_in" is high. + ctrl_in : std_logic_vector(1 downto 0); + + -- Counter value of the TimeCode to be sent. + -- Must be valid while "tick_in" is high. + time_in : std_logic_vector(5 downto 0); + + -- Request transmission of an N-Char. + -- Keep this signal high until confirmed by "txack". + txwrite : std_logic; + + -- Control flag to be sent with the next N-Char. + -- Must be valid while "txwrite" is high. + txflag : std_logic; + + -- Byte to send, or "00000000" for EOP or "00000001" for EEP. + -- Must be valid while "txwrite" is high. + txdata : std_logic_vector(7 downto 0); + + -- Parity error injection control bit (from spwerr: internal to link) + err_inj_par : std_logic; + + -- Escape error injection control bit (from spwerr: internal to link) + err_inj_esc : std_logic; + + -- Char sequence error injection control bit (from spwerr: internal to link) + err_inj_ch_seq : std_logic; + + -- Credit error injection control bit (from spwerr: internal to link) + err_inj_credit : std_logic; + + end record; + + -- Output signals from spwxmit to spwlink. + type spw_xmit_out_type is record + + -- High to confirm transmission on an FCT character. + -- This is a Wishbone-style handshaking signal; it is combinatorially + -- dependent on "fct_in". + fctack : std_logic; + + -- High to confirm transmission of an N-Char. + -- This is a Wishbone-style handshaking signal; it is combinatorially + -- dependent on both "fct_in" and "txwrite". + txack : std_logic; + end record; + + -- Character-stream interface + component spwstream is + generic( + sysfreq : real; -- clk freq in Hz + txclkfreq : real := 0.0; -- txclk freq in Hz + rximpl : spw_implementation_type := impl_generic; + rxchunk : integer range 1 to 4 := 1; -- max bits per clk + tximpl : spw_implementation_type := impl_generic; + rxfifosize_bits : integer range 6 to 14 := 11; -- rx fifo size + txfifosize_bits : integer range 2 to 14 := 11 -- tx fifo size + ); + port( + clk : in std_logic; -- system clock + rxclk : in std_logic; -- receiver sample clock + txclk : in std_logic; -- transmit clock + rst : in std_logic; -- synchronous reset + autostart : in std_logic; -- automatic link start + linkstart : in std_logic; -- forced link start + linkdis : in std_logic; -- stop link + txdivcnt : in std_logic_vector(7 downto 0); -- tx scale factor + tick_in : in std_logic; -- request timecode xmit + ctrl_in : in std_logic_vector(1 downto 0); + time_in : in std_logic_vector(5 downto 0); + txwrite : in std_logic; -- request character xmit + txflag : in std_logic; -- control flag of tx char + txdata : in std_logic_vector(7 downto 0); + txrdy : out std_logic; -- room in tx fifo + txhalff : out std_logic; -- tx fifo half full + tick_out : out std_logic; -- timecode received + ctrl_out : out std_logic_vector(1 downto 0); + time_out : out std_logic_vector(5 downto 0); + rxvalid : out std_logic; -- rx fifo not empty + rxhalff : out std_logic; -- rx fifo half full + rxflag : out std_logic; -- control flag of rx char + rxdata : out std_logic_vector(7 downto 0); + rxread : in std_logic; -- accept rx character + started : out std_logic; -- link in Started state + connecting : out std_logic; -- link in Connecting state + running : out std_logic; -- link in Run state + errdisc : out std_logic; -- disconnect error + errpar : out std_logic; -- parity error + erresc : out std_logic; -- escape error + errcred : out std_logic; -- credit error + spw_di : in std_logic; + spw_si : in std_logic; + spw_do : out std_logic; + spw_so : out std_logic; + -- spwerr user interface + err_inj_i : in std_logic; + err_sel_i : in t_spw_err_sel; + err_stat_o : out t_spw_err_stat + ); + end component spwstream; + + -- Link Level Interface + component spwlink is + generic( + reset_time : integer -- reset time in clocks (6.4 us) + ); + port( + clk : in std_logic; -- system clock + rst : in std_logic; -- synchronous reset (active-high) + linki : in spw_link_in_type; + linko : out spw_link_out_type; + rxen : out std_logic; + recvo : in spw_recv_out_type; + xmiti : out spw_xmit_in_type; + xmito : in spw_xmit_out_type + ); + end component spwlink; + + -- Receiver + component spwrecv is + generic( + disconnect_time : integer range 1 to 255; -- disconnect period in system clock cycles + rxchunk : integer range 1 to 4 -- nr of bits per system clock + ); + port( + clk : in std_logic; -- system clock + rxen : in std_logic; -- receiver enabled + recvo : out spw_recv_out_type; + inact : in std_logic; + inbvalid : in std_logic; + inbits : in std_logic_vector(rxchunk - 1 downto 0); + invalid_transition : in std_logic -- high if invalid transition detected + ); + end component spwrecv; + + -- Transmitter (generic implementation) + component spwxmit is + port( + clk : in std_logic; -- system clock + rst : in std_logic; -- synchronous reset (active-high) + divcnt : in std_logic_vector(7 downto 0); + xmiti : in spw_xmit_in_type; + xmito : out spw_xmit_out_type; + spw_do : out std_logic; -- tx data to SPW bus + spw_so : out std_logic -- tx strobe to SPW bus + ); + end component spwxmit; + + -- Transmitter (separate tx clock domain) + component spwxmit_fast is + port( + clk : in std_logic; -- system clock + txclk : in std_logic; -- transmit clock + rst : in std_logic; -- synchronous reset (active-high) + divcnt : in std_logic_vector(7 downto 0); + xmiti : in spw_xmit_in_type; + xmito : out spw_xmit_out_type; + spw_do : out std_logic; -- tx data to SPW bus + spw_so : out std_logic -- tx strobe to SPW bus + ); + end component spwxmit_fast; + + -- Front-end for SpaceWire Receiver (generic implementation) + component spwrecvfront_generic is + port( + clk : in std_logic; -- system clock + rxen : in std_logic; -- high to enable receiver + inact : out std_logic; -- high if activity on input + inbvalid : out std_logic; -- high if inbits contains a valid received bit + inbits : out std_logic_vector(0 downto 0); -- received bit + invalid_transition : out std_logic; -- high if invalid transition detected + spw_di : in std_logic; -- Data In signal from SpaceWire bus + spw_si : in std_logic -- Strobe In signal from SpaceWire bus + ); + end component spwrecvfront_generic; + + -- Front-end for SpaceWire Receiver (separate rx clock domain) + component spwrecvfront_fast is + generic( + rxchunk : integer range 1 to 4 -- max number of bits per system clock + ); + port( + clk : in std_logic; -- system clock + rxclk : in std_logic; -- sample clock (DDR) + rxen : in std_logic; -- high to enable receiver + inact : out std_logic; -- high if activity on input + inbvalid : out std_logic; -- high if inbits contains a valid group of received bits + inbits : out std_logic_vector(rxchunk - 1 downto 0); -- received bits + spw_di : in std_logic; -- Data In signal from SpaceWire bus + spw_si : in std_logic -- Strobe In signal from SpaceWire bus + ); + end component spwrecvfront_fast; + + -- Synchronous two-port memory. + component spwram is + generic( + abits : integer; + dbits : integer); + port( + rclk : in std_logic; + wclk : in std_logic; + ren : in std_logic; + raddr : in std_logic_vector(abits - 1 downto 0); + rdata : out std_logic_vector(dbits - 1 downto 0); + wen : in std_logic; + waddr : in std_logic_vector(abits - 1 downto 0); + wdata : in std_logic_vector(dbits - 1 downto 0)); + end component spwram; + + -- Double flip-flop synchronizer. + component syncdff is + port( + clk : in std_logic; -- clock (destination domain) + rst : in std_logic; -- asynchronous reset, active-high + di : in std_logic; -- input data + do : out std_logic); -- output data + end component syncdff; + + -- Spwerr Interface + component spwerr is + port( + clk : in std_logic; -- system clock + rst : in std_logic; -- asynchronous reset (active-high) + err_link_i : in spwerr_from_link_type; + err_link_o : out spwerr_to_link_type; + err_usr_i : in spwerr_from_usr_type; + err_usr_o : out spwerr_to_usr_type + ); + end component spwerr; end package; diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd index cee9e8df..06e1578d 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwram.vhd @@ -9,33 +9,32 @@ use ieee.numeric_std.all; entity spwram is - generic ( - abits: integer; - dbits: integer ); - - port ( - rclk: in std_logic; - wclk: in std_logic; - ren: in std_logic; - raddr: in std_logic_vector(abits-1 downto 0); - rdata: out std_logic_vector(dbits-1 downto 0); - wen: in std_logic; - waddr: in std_logic_vector(abits-1 downto 0); - wdata: in std_logic_vector(dbits-1 downto 0) ); + generic( + abits : integer; + dbits : integer); + + port( + rclk : in std_logic; + wclk : in std_logic; + ren : in std_logic; + raddr : in std_logic_vector(abits - 1 downto 0); + rdata : out std_logic_vector(dbits - 1 downto 0); + wen : in std_logic; + waddr : in std_logic_vector(abits - 1 downto 0); + wdata : in std_logic_vector(dbits - 1 downto 0)); end entity spwram; architecture spwram_arch of spwram is - type mem_type is array(0 to (2**abits - 1)) of - std_logic_vector(dbits-1 downto 0); + type mem_type is array (0 to (2**abits - 1)) of std_logic_vector(dbits - 1 downto 0); - signal s_mem: mem_type; + signal s_mem : mem_type; begin -- read process - process (rclk) is + process(rclk) is begin if rising_edge(rclk) then if ren = '1' then @@ -45,7 +44,7 @@ begin end process; -- write process - process (wclk) is + process(wclk) is begin if rising_edge(wclk) then if wen = '1' then diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd index 98c7a291..c5d58c45 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecv.vhd @@ -15,33 +15,29 @@ use work.spwpkg.all; entity spwrecv is - generic ( + generic( -- Disconnect timeout, expressed in system clock cycles. -- Should be 850 ns (727 ns .. 1000 ns) according to the standard. - disconnect_time: integer range 1 to 255; - + disconnect_time : integer range 1 to 255; -- Nr of bits sampled per system clock. - rxchunk: integer range 1 to 4 + rxchunk : integer range 1 to 4 ); - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- High to enable receiver; low to disable and reset receiver. - rxen: in std_logic; - + rxen : in std_logic; -- Output signals to spwlink. - recvo: out spw_recv_out_type; - + recvo : out spw_recv_out_type; -- High if there has been recent activity on the input lines. - inact: in std_logic; - + inact : in std_logic; -- High if inbits contains a valid group of received bits. - inbvalid: in std_logic; - + inbvalid : in std_logic; -- Received bits from receiver front-end. - inbits: in std_logic_vector(rxchunk-1 downto 0) + inbits : in std_logic_vector(rxchunk - 1 downto 0); + -- High if invalid transition detected + invalid_transition : in std_logic ); end entity spwrecv; @@ -51,151 +47,151 @@ architecture spwrecv_arch of spwrecv is -- registers type regs_type is record -- receiver state - bit_seen: std_ulogic; -- got a bit transition - null_seen: std_ulogic; -- got a NULL token + bit_seen : std_ulogic; -- got a bit transition + null_seen : std_ulogic; -- got a NULL token -- input shift register - bitshift: std_logic_vector(8 downto 0); - bitcnt: std_logic_vector(9 downto 0); -- one-hot counter + bitshift : std_logic_vector(8 downto 0); + bitcnt : std_logic_vector(9 downto 0); -- one-hot counter -- parity flag - parity: std_ulogic; + parity : std_ulogic; -- decoding - control: std_ulogic; -- next code is control code - escaped: std_ulogic; -- last code was ESC + control : std_ulogic; -- next code is control code + escaped : std_ulogic; -- last code was ESC -- output registers - gotfct: std_ulogic; - tick_out: std_ulogic; - rxchar: std_ulogic; - rxflag: std_ulogic; - timereg: std_logic_vector(7 downto 0); - datareg: std_logic_vector(7 downto 0); + gotfct : std_ulogic; + tick_out : std_ulogic; + rxchar : std_ulogic; + rxflag : std_ulogic; + timereg : std_logic_vector(7 downto 0); + datareg : std_logic_vector(7 downto 0); -- disconnect timer - disccnt: unsigned(7 downto 0); + disccnt : unsigned(7 downto 0); -- error flags - errpar: std_ulogic; - erresc: std_ulogic; + errpar : std_ulogic; + erresc : std_ulogic; end record; -- Initial state - constant regs_reset: regs_type := ( - bit_seen => '0', - null_seen => '0', - bitshift => (others => '1'), - bitcnt => (others => '0'), - parity => '0', - control => '0', - escaped => '0', - gotfct => '0', - tick_out => '0', - rxchar => '0', - rxflag => '0', - timereg => (others => '0'), - datareg => (others => '0'), - disccnt => "00000000", - errpar => '0', - erresc => '0' ); + constant regs_reset : regs_type := ( + bit_seen => '0', + null_seen => '0', + bitshift => (others => '1'), + bitcnt => (others => '0'), + parity => '0', + control => '0', + escaped => '0', + gotfct => '0', + tick_out => '0', + rxchar => '0', + rxflag => '0', + timereg => (others => '0'), + datareg => (others => '0'), + disccnt => "00000000", + errpar => '0', + erresc => '0'); -- registers - signal r: regs_type := regs_reset; - signal rin: regs_type; + signal r : regs_type := regs_reset; + signal rin : regs_type; begin -- combinatorial process - process (r, rxen, inact, inbvalid, inbits) - variable v: regs_type; - variable v_inbit: std_ulogic; + process(r, rxen, inact, inbvalid, inbits, invalid_transition) + variable v : regs_type; + variable v_inbit : std_ulogic; begin - v := r; - v_inbit := '0'; + v := r; + v_inbit := '0'; -- disconnect timer if inact = '1' then -- activity on input; reset timer - v.disccnt := to_unsigned(disconnect_time, v.disccnt'length); + v.disccnt := to_unsigned(disconnect_time, v.disccnt'length); elsif r.disccnt /= 0 then -- count down - v.disccnt := r.disccnt - 1; + v.disccnt := r.disccnt - 1; end if; -- assume no new token - v.gotfct := '0'; - v.tick_out := '0'; - v.rxchar := '0'; + v.gotfct := '0'; + v.tick_out := '0'; + v.rxchar := '0'; if inbvalid = '1' then -- process incoming bits - for i in 0 to rxchunk-1 loop - v_inbit := inbits(i); + for i in 0 to rxchunk - 1 loop + v_inbit := inbits(i); -- got a bit transition - v.bit_seen := '1'; + v.bit_seen := '1'; if v.bitcnt(0) = '1' then -- received new token -- note that this will not happen before null_seen='1' if (v.parity xor v_inbit) = '0' then -- Parity check failed. - v.errpar := '1'; + v.errpar := '1'; else if v.control = '1' then -- received control code case v.bitshift(7 downto 6) is when "00" => -- FCT or NULL - v.gotfct := not r.escaped; - v.escaped := '0'; + v.gotfct := not r.escaped; + v.escaped := '0'; when "10" => -- EOP if r.escaped = '1' then - v.erresc := '1'; + v.erresc := '1'; end if; - v.escaped := '0'; - v.rxchar := not r.escaped; - v.rxflag := '1'; - v.datareg := "00000000"; + v.escaped := '0'; + v.rxchar := not r.escaped; + v.rxflag := '1'; + v.datareg := "00000000"; when "01" => -- EEP if r.escaped = '1' then - v.erresc := '1'; + v.erresc := '1'; end if; - v.escaped := '0'; - v.rxchar := not r.escaped; - v.rxflag := '1'; - v.datareg := "00000001"; + v.escaped := '0'; + v.rxchar := not r.escaped; + v.rxflag := '1'; + v.datareg := "00000001"; when others => -- ESC if r.escaped = '1' then - v.erresc := '1'; + v.erresc := '1'; end if; - v.escaped := '1'; + v.escaped := '1'; end case; else -- received 8-bit character if r.escaped = '1' then -- received Time-Code - v.tick_out := '1'; - v.timereg := v.bitshift(7 downto 0); + v.tick_out := '1'; + v.timereg := v.bitshift(7 downto 0); else -- received data character - v.rxflag := '0'; - v.rxchar := '1'; - v.datareg := v.bitshift(7 downto 0); + v.rxflag := '0'; + v.rxchar := '1'; + v.datareg := v.bitshift(7 downto 0); end if; - v.escaped := '0'; + v.escaped := '0'; end if; end if; -- prepare for next code - v.parity := '0'; - v.control := v_inbit; + v.parity := '0'; + v.control := v_inbit; if v_inbit = '1' then -- next word will be control code. - v.bitcnt := (3 => '1', others => '0'); + v.bitcnt := (3 => '1', others => '0'); else -- next word will be a data byte. - v.bitcnt := (9 => '1', others => '0'); + v.bitcnt := (9 => '1', others => '0'); end if; else -- wait until next code is completely received; -- accumulate parity - v.bitcnt := '0' & v.bitcnt(9 downto 1); - v.parity := v.parity xor v_inbit; + v.bitcnt := '0' & v.bitcnt(9 downto 1); + v.parity := v.parity xor v_inbit; end if; -- detect first NULL @@ -210,11 +206,15 @@ begin end if; -- shift new bit into register. - v.bitshift := v_inbit & v.bitshift(v.bitshift'high downto 1); + v.bitshift := v_inbit & v.bitshift(v.bitshift'high downto 1); end loop; end if; + if invalid_transition = '1' then + v.bitshift := (others => '1'); + end if; + -- synchronous reset if rxen = '0' then v.bit_seen := '0'; @@ -234,30 +234,30 @@ begin end if; -- drive outputs - recvo.gotbit <= r.bit_seen; - recvo.gotnull <= r.null_seen; - recvo.gotfct <= r.gotfct; - recvo.tick_out <= r.tick_out; - recvo.ctrl_out <= r.timereg(7 downto 6); - recvo.time_out <= r.timereg(5 downto 0); - recvo.rxchar <= r.rxchar; - recvo.rxflag <= r.rxflag; - recvo.rxdata <= r.datareg; + recvo.gotbit <= r.bit_seen; + recvo.gotnull <= r.null_seen; + recvo.gotfct <= r.gotfct; + recvo.tick_out <= r.tick_out; + recvo.ctrl_out <= r.timereg(7 downto 6); + recvo.time_out <= r.timereg(5 downto 0); + recvo.rxchar <= r.rxchar; + recvo.rxflag <= r.rxflag; + recvo.rxdata <= r.datareg; if r.bit_seen = '1' and r.disccnt = 0 then - recvo.errdisc <= '1'; + recvo.errdisc <= '1'; else - recvo.errdisc <= '0'; + recvo.errdisc <= '0'; end if; - recvo.errpar <= r.errpar; - recvo.erresc <= r.erresc; + recvo.errpar <= r.errpar; + recvo.erresc <= r.erresc; -- update registers - rin <= v; + rin <= v; end process; -- update registers on rising edge of system clock - process (clk) is + process(clk) is begin if rising_edge(clk) then r <= rin; diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd index 4ce08446..ae33ce4c 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_fast.vhd @@ -69,41 +69,34 @@ use work.spwpkg.all; entity spwrecvfront_fast is - generic ( + generic( -- Number of bits to pass to the application per system clock. - rxchunk: integer range 1 to 4 ); + rxchunk : integer range 1 to 4); - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- Sample clock. - rxclk: in std_logic; - + rxclk : in std_logic; -- High to enable receiver; low to disable and reset receiver. - rxen: in std_logic; - + rxen : in std_logic; -- High if there has been recent activity on the input lines. - inact: out std_logic; - + inact : out std_logic; -- High if inbits contains a valid group of received bits. -- If inbvalid='1', the application must sample inbits on -- the rising edge of clk. - inbvalid: out std_logic; - + inbvalid : out std_logic; -- Received bits (bit 0 is the earliest received bit). - inbits: out std_logic_vector(rxchunk-1 downto 0); - + inbits : out std_logic_vector(rxchunk - 1 downto 0); -- Data In signal from SpaceWire bus. - spw_di: in std_logic; - + spw_di : in std_logic; -- Strobe In signal from SpaceWire bus. - spw_si: in std_logic ); + spw_si : in std_logic); -- Turn off FSM extraction. -- Without this, XST will happily apply one-hot encoding to rrx.headptr. - attribute FSM_EXTRACT: string; - attribute FSM_EXTRACT of spwrecvfront_fast: entity is "NO"; + attribute FSM_EXTRACT : string; + attribute FSM_EXTRACT of spwrecvfront_fast : entity is "NO"; end entity spwrecvfront_fast; @@ -111,162 +104,162 @@ architecture spwrecvfront_arch of spwrecvfront_fast is -- width of bit groups in cyclic buffer; -- typically equal to rxchunk, except when rxchunk = 1 - type memwidth_array_type is array(1 to 4) of integer; - constant chunk_to_memwidth: memwidth_array_type := ( 2, 2, 3, 4 ); - constant memwidth: integer := chunk_to_memwidth(rxchunk); + type memwidth_array_type is array (1 to 4) of integer; + constant chunk_to_memwidth : memwidth_array_type := (2, 2, 3, 4); + constant memwidth : integer := chunk_to_memwidth(rxchunk); -- registers in rxclk domain type rxregs_type is record -- stage B: re-register input samples - b_di0: std_ulogic; - b_si0: std_ulogic; - b_di1: std_ulogic; - b_si1: std_ulogic; + b_di0 : std_ulogic; + b_si0 : std_ulogic; + b_di1 : std_ulogic; + b_si1 : std_ulogic; -- stage C: data/strobe decoding - c_bit: std_logic_vector(1 downto 0); - c_val: std_logic_vector(1 downto 0); - c_xor1: std_ulogic; + c_bit : std_logic_vector(1 downto 0); + c_val : std_logic_vector(1 downto 0); + c_xor1 : std_ulogic; -- stage D: collect groups of memwidth bits - d_shift: std_logic_vector(memwidth-1 downto 0); - d_count: std_logic_vector(memwidth-1 downto 0); + d_shift : std_logic_vector(memwidth - 1 downto 0); + d_count : std_logic_vector(memwidth - 1 downto 0); -- cyclic buffer access - bufdata: std_logic_vector(memwidth-1 downto 0); - bufwrite: std_ulogic; - headptr: std_logic_vector(2 downto 0); + bufdata : std_logic_vector(memwidth - 1 downto 0); + bufwrite : std_ulogic; + headptr : std_logic_vector(2 downto 0); -- activity detection - bitcnt: std_logic_vector(2 downto 0); + bitcnt : std_logic_vector(2 downto 0); end record; -- registers in system clock domain type regs_type is record -- data path from buffer to output - tailptr: std_logic_vector(2 downto 0); - inbvalid: std_ulogic; + tailptr : std_logic_vector(2 downto 0); + inbvalid : std_ulogic; -- split 2-bit groups if rxchunk=1 - splitbit: std_ulogic; - splitinx: std_ulogic; - splitvalid: std_ulogic; + splitbit : std_ulogic; + splitinx : std_ulogic; + splitvalid : std_ulogic; -- activity detection - bitcntp: std_logic_vector(2 downto 0); - inact: std_ulogic; + bitcntp : std_logic_vector(2 downto 0); + inact : std_ulogic; -- reset signal towards rxclk domain - rxdis: std_ulogic; + rxdis : std_ulogic; end record; - constant regs_reset: regs_type := ( - tailptr => "000", - inbvalid => '0', - splitbit => '0', - splitinx => '0', - splitvalid => '0', - bitcntp => "000", - inact => '0', - rxdis => '1' ); + constant regs_reset : regs_type := ( + tailptr => "000", + inbvalid => '0', + splitbit => '0', + splitinx => '0', + splitvalid => '0', + bitcntp => "000", + inact => '0', + rxdis => '1'); -- Signals that are re-synchronized from rxclk to system clock domain. type syncsys_type is record - headptr: std_logic_vector(2 downto 0); -- pointer in cyclic buffer - bitcnt: std_logic_vector(2 downto 0); -- activity detection + headptr : std_logic_vector(2 downto 0); -- pointer in cyclic buffer + bitcnt : std_logic_vector(2 downto 0); -- activity detection end record; -- Registers. - signal r: regs_type := regs_reset; - signal rin: regs_type; - signal rrx, rrxin: rxregs_type; + signal r : regs_type := regs_reset; + signal rin : regs_type; + signal rrx, rrxin : rxregs_type; -- Synchronized signals after crossing clock domains. - signal syncrx_rstn: std_logic; - signal syncsys: syncsys_type; + signal syncrx_rstn : std_logic; + signal syncsys : syncsys_type; -- Output data from cyclic buffer. - signal s_bufdout: std_logic_vector(memwidth-1 downto 0); + signal s_bufdout : std_logic_vector(memwidth - 1 downto 0); -- stage A: input flip-flops for rising/falling rxclk - signal s_a_di0: std_logic; - signal s_a_si0: std_logic; - signal s_a_di1: std_logic; - signal s_a_si1: std_logic; - signal s_a_di2: std_logic; - signal s_a_si2: std_logic; + signal s_a_di0 : std_logic; + signal s_a_si0 : std_logic; + signal s_a_di1 : std_logic; + signal s_a_si1 : std_logic; + signal s_a_di2 : std_logic; + signal s_a_si2 : std_logic; -- force use of IOB flip-flops - attribute IOB: string; - attribute IOB of s_a_di1: signal is "TRUE"; - attribute IOB of s_a_si1: signal is "TRUE"; - attribute IOB of s_a_di2: signal is "TRUE"; - attribute IOB of s_a_si2: signal is "TRUE"; + attribute IOB : string; + attribute IOB of s_a_di1 : signal is "TRUE"; + attribute IOB of s_a_si1 : signal is "TRUE"; + attribute IOB of s_a_di2 : signal is "TRUE"; + attribute IOB of s_a_si2 : signal is "TRUE"; begin -- Cyclic data buffer. - bufmem: spwram - generic map ( - abits => 3, - dbits => memwidth ) - port map ( - rclk => clk, - wclk => rxclk, - ren => '1', - raddr => r.tailptr, - rdata => s_bufdout, - wen => rrx.bufwrite, - waddr => rrx.headptr, - wdata => rrx.bufdata ); + bufmem : spwram + generic map( + abits => 3, + dbits => memwidth) + port map( + rclk => clk, + wclk => rxclk, + ren => '1', + raddr => r.tailptr, + rdata => s_bufdout, + wen => rrx.bufwrite, + waddr => rrx.headptr, + wdata => rrx.bufdata); -- Synchronize reset signal for rxclk domain. - syncrx_reset: syncdff - port map ( clk => rxclk, rst => r.rxdis, di => '1', do => syncrx_rstn ); + syncrx_reset : syncdff + port map(clk => rxclk, rst => r.rxdis, di => '1', do => syncrx_rstn); -- Synchronize signals from rxclk domain to system clock domain. - syncsys_headptr0: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.headptr(0), do => syncsys.headptr(0) ); - syncsys_headptr1: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.headptr(1), do => syncsys.headptr(1) ); - syncsys_headptr2: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.headptr(2), do => syncsys.headptr(2) ); - syncsys_bitcnt0: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.bitcnt(0), do => syncsys.bitcnt(0) ); - syncsys_bitcnt1: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.bitcnt(1), do => syncsys.bitcnt(1) ); - syncsys_bitcnt2: syncdff - port map ( clk => clk, rst => r.rxdis, di => rrx.bitcnt(2), do => syncsys.bitcnt(2) ); + syncsys_headptr0 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.headptr(0), do => syncsys.headptr(0)); + syncsys_headptr1 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.headptr(1), do => syncsys.headptr(1)); + syncsys_headptr2 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.headptr(2), do => syncsys.headptr(2)); + syncsys_bitcnt0 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.bitcnt(0), do => syncsys.bitcnt(0)); + syncsys_bitcnt1 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.bitcnt(1), do => syncsys.bitcnt(1)); + syncsys_bitcnt2 : syncdff + port map(clk => clk, rst => r.rxdis, di => rrx.bitcnt(2), do => syncsys.bitcnt(2)); -- sample inputs on rising edge of rxclk - process (rxclk) is + process(rxclk) is begin if rising_edge(rxclk) then - s_a_di1 <= spw_di; - s_a_si1 <= spw_si; + s_a_di1 <= spw_di; + s_a_si1 <= spw_si; end if; end process; -- sample inputs on falling edge of rxclk - process (rxclk) is + process(rxclk) is begin if falling_edge(rxclk) then - s_a_di2 <= spw_di; - s_a_si2 <= spw_si; + s_a_di2 <= spw_di; + s_a_si2 <= spw_si; -- reregister inputs in fabric flip-flops - s_a_di0 <= s_a_di2; - s_a_si0 <= s_a_si2; + s_a_di0 <= s_a_di2; + s_a_si0 <= s_a_si2; end if; end process; -- combinatorial process - process (r, rrx, rxen, syncrx_rstn, syncsys, s_bufdout, s_a_di0, s_a_si0, s_a_di1, s_a_si1) - variable v: regs_type; - variable vrx: rxregs_type; + process(r, rrx, rxen, syncrx_rstn, syncsys, s_bufdout, s_a_di0, s_a_si0, s_a_di1, s_a_si1) + variable v : regs_type; + variable vrx : rxregs_type; begin - v := r; - vrx := rrx; + v := r; + vrx := rrx; -- ---- SAMPLE CLOCK DOMAIN ---- -- stage B: re-register input samples - vrx.b_di0 := s_a_di0; - vrx.b_si0 := s_a_si0; - vrx.b_di1 := s_a_di1; - vrx.b_si1 := s_a_si1; + vrx.b_di0 := s_a_di0; + vrx.b_si0 := s_a_si0; + vrx.b_di1 := s_a_di1; + vrx.b_si1 := s_a_si1; -- stage C: decode data/strobe and detect valid bits if (rrx.b_di0 xor rrx.b_si0 xor rrx.c_xor1) = '1' then @@ -275,10 +268,8 @@ begin vrx.c_bit(0) := rrx.b_di1; end if; vrx.c_bit(1) := rrx.b_di1; - vrx.c_val(0) := (rrx.b_di0 xor rrx.b_si0 xor rrx.c_xor1) or - (rrx.b_di0 xor rrx.b_si0 xor rrx.b_di1 xor rrx.b_si1); - vrx.c_val(1) := (rrx.b_di0 xor rrx.b_si0 xor rrx.c_xor1) and - (rrx.b_di0 xor rrx.b_si0 xor rrx.b_di1 xor rrx.b_si1); + vrx.c_val(0) := (rrx.b_di0 xor rrx.b_si0 xor rrx.c_xor1) or (rrx.b_di0 xor rrx.b_si0 xor rrx.b_di1 xor rrx.b_si1); + vrx.c_val(1) := (rrx.b_di0 xor rrx.b_si0 xor rrx.c_xor1) and (rrx.b_di0 xor rrx.b_si0 xor rrx.b_di1 xor rrx.b_si1); vrx.c_xor1 := rrx.b_di1 xor rrx.b_si1; -- Note: @@ -291,24 +282,24 @@ begin -- shift incoming bits into register if rrx.c_val(1) = '1' then - vrx.d_shift := rrx.c_bit & rrx.d_shift(memwidth-1 downto 2); + vrx.d_shift := rrx.c_bit & rrx.d_shift(memwidth - 1 downto 2); else - vrx.d_shift := rrx.c_bit(0) & rrx.d_shift(memwidth-1 downto 1); + vrx.d_shift := rrx.c_bit(0) & rrx.d_shift(memwidth - 1 downto 1); end if; -- prepare to store a group of memwidth bits if rrx.d_count(0) = '1' then -- only one more bit needed - vrx.bufdata := rrx.c_bit(0) & rrx.d_shift(memwidth-1 downto 1); + vrx.bufdata := rrx.c_bit(0) & rrx.d_shift(memwidth - 1 downto 1); else - vrx.bufdata := rrx.c_bit & rrx.d_shift(memwidth-1 downto 2); + vrx.bufdata := rrx.c_bit & rrx.d_shift(memwidth - 1 downto 2); end if; -- countdown nr of needed bits (one-hot counter) if rrx.c_val(1) = '1' then - vrx.d_count := rrx.d_count(1 downto 0) & rrx.d_count(memwidth-1 downto 2); + vrx.d_count := rrx.d_count(1 downto 0) & rrx.d_count(memwidth - 1 downto 2); else - vrx.d_count := rrx.d_count(0 downto 0) & rrx.d_count(memwidth-1 downto 1); + vrx.d_count := rrx.d_count(0 downto 0) & rrx.d_count(memwidth - 1 downto 1); end if; end if; @@ -323,18 +314,18 @@ begin -- Activity detection. if rrx.c_val(0) = '1' then - vrx.bitcnt := std_logic_vector(unsigned(rrx.bitcnt) + 1); + vrx.bitcnt := std_logic_vector(unsigned(rrx.bitcnt) + 1); end if; -- Synchronous reset of rxclk domain. if syncrx_rstn = '0' then - vrx.c_val := "00"; - vrx.c_xor1 := '0'; - vrx.d_count := (others => '0'); - vrx.d_count(memwidth-1) := '1'; - vrx.bufwrite := '0'; - vrx.headptr := "000"; - vrx.bitcnt := "000"; + vrx.c_val := "00"; + vrx.c_xor1 := '0'; + vrx.d_count := (others => '0'); + vrx.d_count(memwidth - 1) := '1'; + vrx.bufwrite := '0'; + vrx.headptr := "000"; + vrx.bitcnt := "000"; end if; -- ---- SYSTEM CLOCK DOMAIN ---- @@ -344,13 +335,13 @@ begin -- not yet been written by the rxclk domain. if r.tailptr = syncsys.headptr then -- No more data in cyclic buffer. - v.inbvalid := '0'; + v.inbvalid := '0'; else -- Reading valid data from cyclic buffer. - v.inbvalid := '1'; + v.inbvalid := '1'; -- Increment tail pointer. if rxchunk /= 1 then - v.tailptr := std_logic_vector(unsigned(r.tailptr) + 1); + v.tailptr := std_logic_vector(unsigned(r.tailptr) + 1); end if; end if; @@ -358,55 +349,55 @@ begin if rxchunk = 1 then -- Select one of the two bits. if r.splitinx = '0' then - v.splitbit := s_bufdout(0); + v.splitbit := s_bufdout(0); else - v.splitbit := s_bufdout(1); + v.splitbit := s_bufdout(1); end if; -- Indicate valid bit. v.splitvalid := r.inbvalid; -- Increment tail pointer. if r.inbvalid = '1' then - v.splitinx := not r.splitinx; + v.splitinx := not r.splitinx; if r.splitinx = '0' then - v.tailptr := std_logic_vector(unsigned(r.tailptr) + 1); + v.tailptr := std_logic_vector(unsigned(r.tailptr) + 1); end if; end if; end if; -- Activity detection. - v.bitcntp := syncsys.bitcnt; + v.bitcntp := syncsys.bitcnt; if r.bitcntp = syncsys.bitcnt then - v.inact := '0'; + v.inact := '0'; else - v.inact := '1'; + v.inact := '1'; end if; -- Synchronous reset of system clock domain. if rxen = '0' then - v := regs_reset; + v := regs_reset; end if; -- Register rxen to ensure glitch-free signal to rxclk domain - v.rxdis := not rxen; + v.rxdis := not rxen; -- drive outputs - inact <= r.inact; + inact <= r.inact; if rxchunk = 1 then - inbvalid <= r.splitvalid; - inbits(0) <= r.splitbit; + inbvalid <= r.splitvalid; + inbits(0) <= r.splitbit; else - inbvalid <= r.inbvalid; - inbits <= s_bufdout; + inbvalid <= r.inbvalid; + inbits <= s_bufdout; end if; -- update registers - rrxin <= vrx; - rin <= v; + rrxin <= vrx; + rin <= v; end process; -- update registers on rising edge of rxclk - process (rxclk) is + process(rxclk) is begin if rising_edge(rxclk) then rrx <= rrxin; @@ -414,7 +405,7 @@ begin end process; -- update registers on rising edge of system clock - process (clk) is + process(clk) is begin if rising_edge(clk) then r <= rin; diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd index 2104f234..b318c4cb 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwrecvfront_generic.vhd @@ -15,79 +15,81 @@ use ieee.numeric_std.all; entity spwrecvfront_generic is - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- High to enable receiver; low to disable and reset receiver. - rxen: in std_logic; - + rxen : in std_logic; -- High if there has been recent activity on the input lines. - inact: out std_logic; - + inact : out std_logic; -- High if inbits contains a valid received bit. -- If inbvalid='1', the application must sample inbits on -- the rising edge of clk. - inbvalid: out std_logic; - + inbvalid : out std_logic; -- Received bit - inbits: out std_logic_vector(0 downto 0); - + inbits : out std_logic_vector(0 downto 0); + -- High if invalid transition detected + invalid_transition : out std_logic; -- Data In signal from SpaceWire bus. - spw_di: in std_logic; - + spw_di : in std_logic; -- Strobe In signal from SpaceWire bus. - spw_si: in std_logic ); + spw_si : in std_logic); end entity spwrecvfront_generic; architecture spwrecvfront_arch of spwrecvfront_generic is -- input flip-flops - signal s_spwdi1: std_ulogic; - signal s_spwsi1: std_ulogic; - signal s_spwdi2: std_ulogic; - signal s_spwsi2: std_ulogic; + signal s_spwdi1 : std_ulogic; + signal s_spwsi1 : std_ulogic; + signal s_spwdi2 : std_ulogic; + signal s_spwsi2 : std_ulogic; -- data/strobe decoding - signal s_spwsi3: std_ulogic; + signal s_spwsi3 : std_ulogic; -- output registers - signal s_inbvalid: std_ulogic; - signal s_inbit: std_ulogic; + signal s_inbvalid : std_ulogic; + signal s_inbit : std_ulogic; + + -- invalid transition detection + signal s_invalid_transition : std_ulogic; begin -- drive outputs - inact <= s_inbvalid; - inbvalid <= s_inbvalid; - inbits(0) <= s_inbit; + inact <= s_inbvalid; + inbvalid <= s_inbvalid; + inbits(0) <= s_inbit; + invalid_transition <= s_invalid_transition; -- synchronous process - process (clk) is + process(clk) is begin if rising_edge(clk) then -- sample input signal - s_spwdi1 <= spw_di; - s_spwsi1 <= spw_si; + s_spwdi1 <= spw_di; + s_spwsi1 <= spw_si; -- more flip-flops for safe synchronization - s_spwdi2 <= s_spwdi1; - s_spwsi2 <= s_spwsi1; + s_spwdi2 <= s_spwdi1; + s_spwsi2 <= s_spwsi1; -- keep strobe signal for data/strobe decoding - s_spwsi3 <= s_spwsi2; + s_spwsi3 <= s_spwsi2; -- keep data bit for data/strobe decoding - s_inbit <= s_spwdi2; + s_inbit <= s_spwdi2; if rxen = '1' then -- data/strobe decoding - s_inbvalid <= s_spwdi2 xor s_spwsi2 xor s_inbit xor s_spwsi3; + s_inbvalid <= s_spwdi2 xor s_spwsi2 xor s_inbit xor s_spwsi3; + s_invalid_transition <= (s_spwdi2 xor s_inbit) and (s_spwsi2 xor s_spwsi3); else -- reset receiver - s_inbvalid <= '0'; + s_inbvalid <= '0'; + s_invalid_transition <= '0'; end if; end if; diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd index fd8ccade..28fd1839 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwstream.vhd @@ -22,175 +22,132 @@ use work.spwpkg.all; entity spwstream is - generic ( + generic( -- System clock frequency in Hz. -- This must be set to the frequency of "clk". It is used to setup -- counters for reset timing, disconnect timeout and to transmit -- at 10 Mbit/s during the link handshake. - sysfreq: real; - + sysfreq : real; -- Transmit clock frequency in Hz (only if tximpl = impl_fast). -- This must be set to the frequency of "txclk". It is used to -- transmit at 10 Mbit/s during the link handshake. - txclkfreq: real := 0.0; - + txclkfreq : real := 0.0; -- Selection of a receiver front-end implementation. - rximpl: spw_implementation_type := impl_generic; - + rximpl : spw_implementation_type := impl_generic; -- Maximum number of bits received per system clock -- (must be 1 in case of impl_generic). - rxchunk: integer range 1 to 4 := 1; - + rxchunk : integer range 1 to 4 := 1; -- Selection of a transmitter implementation. - tximpl: spw_implementation_type := impl_generic; - + tximpl : spw_implementation_type := impl_generic; -- Size of the receive FIFO as the 2-logarithm of the number of bytes. -- Must be at least 6 (64 bytes). - rxfifosize_bits: integer range 6 to 14 := 11; - + rxfifosize_bits : integer range 6 to 14 := 11; -- Size of the transmit FIFO as the 2-logarithm of the number of bytes. - txfifosize_bits: integer range 2 to 14 := 11 + txfifosize_bits : integer range 2 to 14 := 11 ); - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- Receiver sample clock (only for impl_fast) - rxclk: in std_logic; - + rxclk : in std_logic; -- Transmit clock (only for impl_fast) - txclk: in std_logic; - + txclk : in std_logic; -- Synchronous reset (active-high). - rst: in std_logic; - + rst : in std_logic; -- Enables automatic link start on receipt of a NULL character. - autostart: in std_logic; - + autostart : in std_logic; -- Enables link start once the Ready state is reached. -- Without autostart or linkstart, the link remains in state Ready. - linkstart: in std_logic; - + linkstart : in std_logic; -- Do not start link (overrides linkstart and autostart) and/or -- disconnect a running link. - linkdis: in std_logic; - + linkdis : in std_logic; -- Scaling factor minus 1, used to scale the transmit base clock into -- the transmission bit rate. The system clock (for impl_generic) or -- the txclk (for impl_fast) is divided by (unsigned(txdivcnt) + 1). -- Changing this signal will immediately change the transmission rate. -- During link setup, the transmission rate is always 10 Mbit/s. - txdivcnt: in std_logic_vector(7 downto 0); - + txdivcnt : in std_logic_vector(7 downto 0); -- High for one clock cycle to request transmission of a TimeCode. -- The request is registered inside the entity until it can be processed. - tick_in: in std_logic; - + tick_in : in std_logic; -- Control bits of the TimeCode to be sent. Must be valid while tick_in is high. - ctrl_in: in std_logic_vector(1 downto 0); - + ctrl_in : in std_logic_vector(1 downto 0); -- Counter value of the TimeCode to be sent. Must be valid while tick_in is high. - time_in: in std_logic_vector(5 downto 0); - + time_in : in std_logic_vector(5 downto 0); -- Pulled high by the application to write an N-Char to the transmit -- queue. If "txwrite" and "txrdy" are both high on the rising edge -- of "clk", a character is added to the transmit queue. -- This signal has no effect if "txrdy" is low. - txwrite: in std_logic; - + txwrite : in std_logic; -- Control flag to be sent with the next N_Char. -- Must be valid while txwrite is high. - txflag: in std_logic; - + txflag : in std_logic; -- Byte to be sent, or "00000000" for EOP or "00000001" for EEP. -- Must be valid while txwrite is high. - txdata: in std_logic_vector(7 downto 0); - + txdata : in std_logic_vector(7 downto 0); -- High if the entity is ready to accept an N-Char for transmission. - txrdy: out std_logic; - + txrdy : out std_logic; -- High if the transmission queue is at least half full. - txhalff: out std_logic; - + txhalff : out std_logic; -- High for one clock cycle if a TimeCode was just received. - tick_out: out std_logic; - + tick_out : out std_logic; -- Control bits of the last received TimeCode. - ctrl_out: out std_logic_vector(1 downto 0); - + ctrl_out : out std_logic_vector(1 downto 0); -- Counter value of the last received TimeCode. - time_out: out std_logic_vector(5 downto 0); - + time_out : out std_logic_vector(5 downto 0); -- High if "rxflag" and "rxdata" contain valid data. -- This signal is high unless the receive FIFO is empty. - rxvalid: out std_logic; - + rxvalid : out std_logic; -- High if the receive FIFO is at least half full. - rxhalff: out std_logic; - + rxhalff : out std_logic; -- High if the received character is EOP or EEP; low if the received -- character is a data byte. Valid if "rxvalid" is high. - rxflag: out std_logic; - + rxflag : out std_logic; -- Received byte, or "00000000" for EOP or "00000001" for EEP. -- Valid if "rxvalid" is high. - rxdata: out std_logic_vector(7 downto 0); - + rxdata : out std_logic_vector(7 downto 0); -- Pulled high by the application to accept a received character. -- If "rxvalid" and "rxread" are both high on the rising edge of "clk", -- a character is removed from the receive FIFO and "rxvalid", "rxflag" -- and "rxdata" are updated. -- This signal has no effect if "rxvalid" is low. - rxread: in std_logic; - + rxread : in std_logic; -- High if the link state machine is currently in the Started state. - started: out std_logic; - + started : out std_logic; -- High if the link state machine is currently in the Connecting state. - connecting: out std_logic; - + connecting : out std_logic; -- High if the link state machine is currently in the Run state, indicating -- that the link is fully operational. If none of started, connecting or running -- is high, the link is in an initial state and the transmitter is not yet enabled. - running: out std_logic; - + running : out std_logic; -- Disconnect detected in state Run. Triggers a reset and reconnect of the link. -- This indication is auto-clearing. - errdisc: out std_logic; - + errdisc : out std_logic; -- Parity error detected in state Run. Triggers a reset and reconnect of the link. -- This indication is auto-clearing. - errpar: out std_logic; - + errpar : out std_logic; -- Invalid escape sequence detected in state Run. Triggers a reset and reconnect of -- the link. This indication is auto-clearing. - erresc: out std_logic; - + erresc : out std_logic; -- Credit error detected. Triggers a reset and reconnect of the link. -- This indication is auto-clearing. - errcred: out std_logic; - + errcred : out std_logic; -- Data In signal from SpaceWire bus. - spw_di: in std_logic; - + spw_di : in std_logic; -- Strobe In signal from SpaceWire bus. - spw_si: in std_logic; - + spw_si : in std_logic; -- Data Out signal to SpaceWire bus. - spw_do: out std_logic; - + spw_do : out std_logic; -- Strobe Out signal to SpaceWire bus. - spw_so: out std_logic; - + spw_so : out std_logic; -- Error injection main input request (active high) - err_inj_i: in std_logic; - + err_inj_i : in std_logic; -- Error injection - error type selection - err_sel_i: in t_spw_err_sel; - + err_sel_i : in t_spw_err_sel; -- Error injection - status - err_stat_o: out t_spw_err_stat + err_stat_o : out t_spw_err_stat ); end entity spwstream; @@ -198,206 +155,206 @@ end entity spwstream; architecture spwstream_arch of spwstream is -- Convert boolean to std_logic. - type bool_to_logic_type is array(boolean) of std_ulogic; - constant bool_to_logic: bool_to_logic_type := (false => '0', true => '1'); + type bool_to_logic_type is array (boolean) of std_ulogic; + constant bool_to_logic : bool_to_logic_type := (false => '0', true => '1'); -- Reset time (6.4 us) in system clocks - constant reset_time: integer := integer(sysfreq * 6.4e-6); + constant reset_time : integer := integer(sysfreq * 6.4e-6); -- Disconnect time (850 ns) in system clocks - constant disconnect_time: integer := integer(sysfreq * 850.0e-9); + constant disconnect_time : integer := integer(sysfreq * 850.0e-9); -- Initial tx clock scaler (10 Mbit). - type impl_to_real_type is array(spw_implementation_type) of real; - constant tximpl_to_txclk_freq: impl_to_real_type := - (impl_generic => sysfreq, impl_fast => txclkfreq); - constant effective_txclk_freq: real := tximpl_to_txclk_freq(tximpl); - constant default_divcnt: std_logic_vector(7 downto 0) := - std_logic_vector(to_unsigned(integer(effective_txclk_freq / 10.0e6 - 1.0), 8)); + type impl_to_real_type is array (spw_implementation_type) of real; + constant tximpl_to_txclk_freq : impl_to_real_type := (impl_generic => sysfreq, impl_fast => txclkfreq); + constant effective_txclk_freq : real := tximpl_to_txclk_freq(tximpl); + constant default_divcnt : std_logic_vector(7 downto 0) := std_logic_vector(to_unsigned(integer(effective_txclk_freq / 10.0e6 - 1.0), 8)); -- Registers. type regs_type is record -- packet state - rxpacket: std_logic; -- '1' when receiving a packet - rxeep: std_logic; -- '1' when rx EEP character pending - txpacket: std_logic; -- '1' when transmitting a packet - txdiscard: std_logic; -- '1' when discarding a tx packet + rxpacket : std_logic; -- '1' when receiving a packet + rxeep : std_logic; -- '1' when rx EEP character pending + txpacket : std_logic; -- '1' when transmitting a packet + txdiscard : std_logic; -- '1' when discarding a tx packet -- FIFO pointers - rxfifo_raddr: std_logic_vector(rxfifosize_bits-1 downto 0); - rxfifo_waddr: std_logic_vector(rxfifosize_bits-1 downto 0); - txfifo_raddr: std_logic_vector(txfifosize_bits-1 downto 0); - txfifo_waddr: std_logic_vector(txfifosize_bits-1 downto 0); + rxfifo_raddr : std_logic_vector(rxfifosize_bits - 1 downto 0); + rxfifo_waddr : std_logic_vector(rxfifosize_bits - 1 downto 0); + txfifo_raddr : std_logic_vector(txfifosize_bits - 1 downto 0); + txfifo_waddr : std_logic_vector(txfifosize_bits - 1 downto 0); -- FIFO state - rxfifo_rvalid: std_logic; -- '1' if s_rxfifo_rdata is valid - txfifo_rvalid: std_logic; -- '1' if s_txfifo_rdata is valid - rxfull: std_logic; -- '1' if RX fifo is full - rxhalff: std_logic; -- '1' if RX fifo is at least half full - txfull: std_logic; -- '1' if TX fifo is full - txhalff: std_logic; -- '1' if TX fifo is at least half full - rxroom: std_logic_vector(5 downto 0); + rxfifo_rvalid : std_logic; -- '1' if s_rxfifo_rdata is valid + txfifo_rvalid : std_logic; -- '1' if s_txfifo_rdata is valid + rxfull : std_logic; -- '1' if RX fifo is full + rxhalff : std_logic; -- '1' if RX fifo is at least half full + txfull : std_logic; -- '1' if TX fifo is full + txhalff : std_logic; -- '1' if TX fifo is at least half full + rxroom : std_logic_vector(5 downto 0); end record; - constant regs_reset: regs_type := ( - rxpacket => '0', - rxeep => '0', - txpacket => '0', - txdiscard => '0', - rxfifo_raddr => (others => '0'), - rxfifo_waddr => (others => '0'), - txfifo_raddr => (others => '0'), - txfifo_waddr => (others => '0'), - rxfifo_rvalid => '0', - txfifo_rvalid => '0', - rxfull => '0', - rxhalff => '0', - txfull => '0', - txhalff => '0', - rxroom => (others => '0') ); - - signal r: regs_type := regs_reset; - signal rin: regs_type; + constant regs_reset : regs_type := ( + rxpacket => '0', + rxeep => '0', + txpacket => '0', + txdiscard => '0', + rxfifo_raddr => (others => '0'), + rxfifo_waddr => (others => '0'), + txfifo_raddr => (others => '0'), + txfifo_waddr => (others => '0'), + rxfifo_rvalid => '0', + txfifo_rvalid => '0', + rxfull => '0', + rxhalff => '0', + txfull => '0', + txhalff => '0', + rxroom => (others => '0')); + + signal r : regs_type := regs_reset; + signal rin : regs_type; -- Interface signals to components. - signal recv_rxen: std_logic; - signal recvo: spw_recv_out_type; - signal recv_inact: std_logic; - signal recv_inbvalid: std_logic; - signal recv_inbits: std_logic_vector(rxchunk-1 downto 0); - signal xmiti: spw_xmit_in_type; - signal xmito: spw_xmit_out_type; - signal xmit_divcnt: std_logic_vector(7 downto 0); - signal linki: spw_link_in_type; - signal linko: spw_link_out_type; + signal recv_rxen : std_logic; + signal recvo : spw_recv_out_type; + signal recv_inact : std_logic; + signal recv_inbvalid : std_logic; + signal recv_inbits : std_logic_vector(rxchunk - 1 downto 0); + signal recv_invalid_transition : std_logic; + signal xmiti : spw_xmit_in_type; + signal xmito : spw_xmit_out_type; + signal xmit_divcnt : std_logic_vector(7 downto 0); + signal linki : spw_link_in_type; + signal linko : spw_link_out_type; -- Memory interface signals. - signal s_rxfifo_raddr: std_logic_vector(rxfifosize_bits-1 downto 0); - signal s_rxfifo_rdata: std_logic_vector(8 downto 0); - signal s_rxfifo_wen: std_logic; - signal s_rxfifo_waddr: std_logic_vector(rxfifosize_bits-1 downto 0); - signal s_rxfifo_wdata: std_logic_vector(8 downto 0); - signal s_txfifo_raddr: std_logic_vector(txfifosize_bits-1 downto 0); - signal s_txfifo_rdata: std_logic_vector(8 downto 0); - signal s_txfifo_wen: std_logic; - signal s_txfifo_waddr: std_logic_vector(txfifosize_bits-1 downto 0); - signal s_txfifo_wdata: std_logic_vector(8 downto 0); + signal s_rxfifo_raddr : std_logic_vector(rxfifosize_bits - 1 downto 0); + signal s_rxfifo_rdata : std_logic_vector(8 downto 0); + signal s_rxfifo_wen : std_logic; + signal s_rxfifo_waddr : std_logic_vector(rxfifosize_bits - 1 downto 0); + signal s_rxfifo_wdata : std_logic_vector(8 downto 0); + signal s_txfifo_raddr : std_logic_vector(txfifosize_bits - 1 downto 0); + signal s_txfifo_rdata : std_logic_vector(8 downto 0); + signal s_txfifo_wen : std_logic; + signal s_txfifo_waddr : std_logic_vector(txfifosize_bits - 1 downto 0); + signal s_txfifo_wdata : std_logic_vector(8 downto 0); begin -- Instantiate link controller. - link_inst: spwlink - generic map ( - reset_time => reset_time ) - port map ( - clk => clk, - rst => rst, - linki => linki, - linko => linko, - rxen => recv_rxen, - recvo => recvo, - xmiti => xmiti, - xmito => xmito ); + link_inst : spwlink + generic map( + reset_time => reset_time) + port map( + clk => clk, + rst => rst, + linki => linki, + linko => linko, + rxen => recv_rxen, + recvo => recvo, + xmiti => xmiti, + xmito => xmito); -- Instantiate receiver. - recv_inst: spwrecv + recv_inst : spwrecv generic map( disconnect_time => disconnect_time, - rxchunk => rxchunk ) - port map ( - clk => clk, - rxen => recv_rxen, - recvo => recvo, - inact => recv_inact, - inbvalid => recv_inbvalid, - inbits => recv_inbits ); + rxchunk => rxchunk) + port map( + clk => clk, + rxen => recv_rxen, + recvo => recvo, + inact => recv_inact, + inbvalid => recv_inbvalid, + inbits => recv_inbits, + invalid_transition => recv_invalid_transition); -- Instantiate transmitter. - xmit_sel0: if tximpl = impl_generic generate - xmit_inst: spwxmit - port map ( - clk => clk, - rst => rst, - divcnt => xmit_divcnt, - xmiti => xmiti, - xmito => xmito, - spw_do => spw_do, - spw_so => spw_so ); + xmit_sel0 : if tximpl = impl_generic generate + xmit_inst : spwxmit + port map( + clk => clk, + rst => rst, + divcnt => xmit_divcnt, + xmiti => xmiti, + xmito => xmito, + spw_do => spw_do, + spw_so => spw_so); end generate; - xmit_sel1: if tximpl = impl_fast generate - xmit_fast_inst: spwxmit_fast - port map ( - clk => clk, - txclk => txclk, - rst => rst, - divcnt => xmit_divcnt, - xmiti => xmiti, - xmito => xmito, - spw_do => spw_do, - spw_so => spw_so ); + xmit_sel1 : if tximpl = impl_fast generate + xmit_fast_inst : spwxmit_fast + port map( + clk => clk, + txclk => txclk, + rst => rst, + divcnt => xmit_divcnt, + xmiti => xmiti, + xmito => xmito, + spw_do => spw_do, + spw_so => spw_so); end generate; -- Instantiate receiver front-end. - recvfront_sel0: if rximpl = impl_generic generate - recvfront_generic_inst: spwrecvfront_generic - port map ( - clk => clk, - rxen => recv_rxen, - inact => recv_inact, - inbvalid => recv_inbvalid, - inbits => recv_inbits, - spw_di => spw_di, - spw_si => spw_si ); + recvfront_sel0 : if rximpl = impl_generic generate + recvfront_generic_inst : spwrecvfront_generic + port map( + clk => clk, + rxen => recv_rxen, + inact => recv_inact, + inbvalid => recv_inbvalid, + inbits => recv_inbits, + invalid_transition => recv_invalid_transition, + spw_di => spw_di, + spw_si => spw_si); end generate; - recvfront_sel1: if rximpl = impl_fast generate - recvfront_fast_inst: spwrecvfront_fast - generic map ( - rxchunk => rxchunk ) - port map ( - clk => clk, - rxclk => rxclk, - rxen => recv_rxen, - inact => recv_inact, - inbvalid => recv_inbvalid, - inbits => recv_inbits, - spw_di => spw_di, - spw_si => spw_si ); + recvfront_sel1 : if rximpl = impl_fast generate + recvfront_fast_inst : spwrecvfront_fast + generic map( + rxchunk => rxchunk) + port map( + clk => clk, + rxclk => rxclk, + rxen => recv_rxen, + inact => recv_inact, + inbvalid => recv_inbvalid, + inbits => recv_inbits, + spw_di => spw_di, + spw_si => spw_si); end generate; -- Instantiate RX memory. - rxmem: spwram - generic map ( - abits => rxfifosize_bits, - dbits => 9 ) - port map ( - rclk => clk, - wclk => clk, - ren => '1', - raddr => s_rxfifo_raddr, - rdata => s_rxfifo_rdata, - wen => s_rxfifo_wen, - waddr => s_rxfifo_waddr, - wdata => s_rxfifo_wdata ); + rxmem : spwram + generic map( + abits => rxfifosize_bits, + dbits => 9) + port map( + rclk => clk, + wclk => clk, + ren => '1', + raddr => s_rxfifo_raddr, + rdata => s_rxfifo_rdata, + wen => s_rxfifo_wen, + waddr => s_rxfifo_waddr, + wdata => s_rxfifo_wdata); -- Instantiate TX memory. - txmem: spwram - generic map ( - abits => txfifosize_bits, - dbits => 9 ) - port map ( - rclk => clk, - wclk => clk, - ren => '1', - raddr => s_txfifo_raddr, - rdata => s_txfifo_rdata, - wen => s_txfifo_wen, - waddr => s_txfifo_waddr, - wdata => s_txfifo_wdata ); + txmem : spwram + generic map( + abits => txfifosize_bits, + dbits => 9) + port map( + rclk => clk, + wclk => clk, + ren => '1', + raddr => s_txfifo_raddr, + rdata => s_txfifo_rdata, + wen => s_txfifo_wen, + waddr => s_txfifo_waddr, + wdata => s_txfifo_wdata); -- Combinatorial process - process (r, linko, s_rxfifo_rdata, s_txfifo_rdata, rst, autostart, linkstart, linkdis, - txdivcnt, tick_in, ctrl_in, time_in, txwrite, txflag, txdata, rxread, err_inj_i, err_sel_i) is - variable v: regs_type; - variable v_tmprxroom: unsigned(rxfifosize_bits-1 downto 0); - variable v_tmptxroom: unsigned(txfifosize_bits-1 downto 0); + process(r, linko, s_rxfifo_rdata, s_txfifo_rdata, rst, autostart, linkstart, linkdis, txdivcnt, tick_in, ctrl_in, time_in, txwrite, txflag, txdata, rxread, err_inj_i, err_sel_i) is + variable v : regs_type; + variable v_tmprxroom : unsigned(rxfifosize_bits - 1 downto 0); + variable v_tmptxroom : unsigned(txfifosize_bits - 1 downto 0); begin v := r; v_tmprxroom := to_unsigned(0, v_tmprxroom'length); @@ -406,24 +363,24 @@ begin -- Keep track of whether we are sending and/or receiving a packet. if linko.rxchar = '1' then -- got character - v.rxpacket := not linko.rxflag; + v.rxpacket := not linko.rxflag; end if; if linko.txack = '1' then -- send character - v.txpacket := not s_txfifo_rdata(8); + v.txpacket := not s_txfifo_rdata(8); end if; -- Update RX fifo pointers. if (rxread = '1') and (r.rxfifo_rvalid = '1') then -- read from fifo - v.rxfifo_raddr := std_logic_vector(unsigned(r.rxfifo_raddr) + 1); + v.rxfifo_raddr := std_logic_vector(unsigned(r.rxfifo_raddr) + 1); end if; if r.rxfull = '0' then if (linko.rxchar = '1') or (r.rxeep = '1') then -- write to fifo (received char or pending EEP) - v.rxfifo_waddr := std_logic_vector(unsigned(r.rxfifo_waddr) + 1); + v.rxfifo_waddr := std_logic_vector(unsigned(r.rxfifo_waddr) + 1); end if; - v.rxeep := '0'; + v.rxeep := '0'; end if; -- Keep track of whether the RX fifo contains valid data. @@ -435,22 +392,22 @@ begin v.rxfull := bool_to_logic(v_tmprxroom = 0); v.rxhalff := not v_tmprxroom(v_tmprxroom'high); if v_tmprxroom > 63 then - v.rxroom := (others => '1'); + v.rxroom := (others => '1'); else - v.rxroom := std_logic_vector(v_tmprxroom(5 downto 0)); + v.rxroom := std_logic_vector(v_tmprxroom(5 downto 0)); end if; -- Update TX fifo pointers. if (r.txfifo_rvalid = '1') and ((linko.txack = '1') or (r.txdiscard = '1')) then -- read from fifo - v.txfifo_raddr := std_logic_vector(unsigned(r.txfifo_raddr) + 1); + v.txfifo_raddr := std_logic_vector(unsigned(r.txfifo_raddr) + 1); if s_txfifo_rdata(8) = '1' then v.txdiscard := '0'; -- got EOP/EEP, stop discarding data end if; end if; if (r.txfull = '0') and (txwrite = '1') then -- write to fifo - v.txfifo_waddr := std_logic_vector(unsigned(r.txfifo_waddr) + 1); + v.txfifo_waddr := std_logic_vector(unsigned(r.txfifo_waddr) + 1); end if; -- Keep track of whether the TX fifo contains valid data. @@ -461,11 +418,11 @@ begin v_tmptxroom := unsigned(r.txfifo_raddr) - unsigned(v.txfifo_waddr) - 1; v.txfull := bool_to_logic(v_tmptxroom = 0); v.txhalff := not v_tmptxroom(v_tmptxroom'high); - + -- If the link is lost, set a flag to discard the current packet. if linko.running = '0' then - v.rxeep := v.rxeep or v.rxpacket; -- use new value of rxpacket - v.txdiscard := v.txdiscard or v.txpacket; -- use new value of txpacket + v.rxeep := v.rxeep or v.rxpacket; -- use new value of rxpacket + v.txdiscard := v.txdiscard or v.txpacket; -- use new value of txpacket v.rxpacket := '0'; v.txpacket := '0'; end if; @@ -476,32 +433,32 @@ begin end if; -- Drive control signals to RX fifo. - s_rxfifo_raddr <= v.rxfifo_raddr; -- using new value of rxfifo_raddr - s_rxfifo_wen <= (not r.rxfull) and (linko.rxchar or r.rxeep); - s_rxfifo_waddr <= r.rxfifo_waddr; + s_rxfifo_raddr <= v.rxfifo_raddr; -- using new value of rxfifo_raddr + s_rxfifo_wen <= (not r.rxfull) and (linko.rxchar or r.rxeep); + s_rxfifo_waddr <= r.rxfifo_waddr; if r.rxeep = '1' then - s_rxfifo_wdata <= "100000001"; + s_rxfifo_wdata <= "100000001"; else - s_rxfifo_wdata <= linko.rxflag & linko.rxdata; + s_rxfifo_wdata <= linko.rxflag & linko.rxdata; end if; -- Drive control signals to TX fifo. - s_txfifo_raddr <= v.txfifo_raddr; -- using new value of txfifo_raddr - s_txfifo_wen <= (not r.txfull) and txwrite; - s_txfifo_waddr <= r.txfifo_waddr; - s_txfifo_wdata <= txflag & txdata; + s_txfifo_raddr <= v.txfifo_raddr; -- using new value of txfifo_raddr + s_txfifo_wen <= (not r.txfull) and txwrite; + s_txfifo_waddr <= r.txfifo_waddr; + s_txfifo_wdata <= txflag & txdata; -- Drive inputs to spwlink. - linki.autostart <= autostart; - linki.linkstart <= linkstart; - linki.linkdis <= linkdis; - linki.rxroom <= r.rxroom; - linki.tick_in <= tick_in; - linki.ctrl_in <= ctrl_in; - linki.time_in <= time_in; - linki.txwrite <= r.txfifo_rvalid and not r.txdiscard; - linki.txflag <= s_txfifo_rdata(8); - linki.txdata <= s_txfifo_rdata(7 downto 0); + linki.autostart <= autostart; + linki.linkstart <= linkstart; + linki.linkdis <= linkdis; + linki.rxroom <= r.rxroom; + linki.tick_in <= tick_in; + linki.ctrl_in <= ctrl_in; + linki.time_in <= time_in; + linki.txwrite <= r.txfifo_rvalid and not r.txdiscard; + linki.txflag <= s_txfifo_rdata(8); + linki.txdata <= s_txfifo_rdata(7 downto 0); linki.err_usr_i.err_inj_i <= err_inj_i; linki.err_usr_i.err_sel_i <= err_sel_i; @@ -513,23 +470,23 @@ begin end if; -- Drive outputs. - txrdy <= not r.txfull; - txhalff <= r.txhalff; - tick_out <= linko.tick_out; - ctrl_out <= linko.ctrl_out; - time_out <= linko.time_out; - rxvalid <= r.rxfifo_rvalid; - rxhalff <= r.rxhalff; - rxflag <= s_rxfifo_rdata(8); - rxdata <= s_rxfifo_rdata(7 downto 0); - started <= linko.started; - connecting <= linko.connecting; - running <= linko.running; - errdisc <= linko.errdisc; - errpar <= linko.errpar; - erresc <= linko.erresc; - errcred <= linko.errcred; - err_stat_o <= linko.err_usr_o.err_stat_o; + txrdy <= not r.txfull; + txhalff <= r.txhalff; + tick_out <= linko.tick_out; + ctrl_out <= linko.ctrl_out; + time_out <= linko.time_out; + rxvalid <= r.rxfifo_rvalid; + rxhalff <= r.rxhalff; + rxflag <= s_rxfifo_rdata(8); + rxdata <= s_rxfifo_rdata(7 downto 0); + started <= linko.started; + connecting <= linko.connecting; + running <= linko.running; + errdisc <= linko.errdisc; + errpar <= linko.errpar; + erresc <= linko.erresc; + errcred <= linko.errcred; + err_stat_o <= linko.err_usr_o.err_stat_o; -- Reset. if rst = '1' then @@ -550,7 +507,7 @@ begin end process; -- Update registers. - process (clk) is + process(clk) is begin if rising_edge(clk) then r <= rin; diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd index c8a78b2d..be05a384 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit.vhd @@ -12,30 +12,24 @@ use work.spwpkg.all; entity spwxmit is - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- Synchronous reset (active-high). - rst: in std_logic; - + rst : in std_logic; -- Scaling factor minus 1, used to scale the system clock into the -- transmission bit rate. The system clock is divided by -- (unsigned(divcnt) + 1). Changing this signal will immediately -- change the transmission rate. - divcnt: in std_logic_vector(7 downto 0); - + divcnt : in std_logic_vector(7 downto 0); -- Input signals from spwlink. - xmiti: in spw_xmit_in_type; - + xmiti : in spw_xmit_in_type; -- Output signals to spwlink. - xmito: out spw_xmit_out_type; - + xmito : out spw_xmit_out_type; -- Data Out signal to SpaceWire bus. - spw_do: out std_logic; - + spw_do : out std_logic; -- Strobe Out signal to SpaceWire bus. - spw_so: out std_logic + spw_so : out std_logic ); end entity spwxmit; @@ -45,61 +39,61 @@ architecture spwxmit_arch of spwxmit is -- Registers type regs_type is record -- tx clock - txclken: std_ulogic; -- high if a bit must be transmitted - txclkcnt: unsigned(7 downto 0); + txclken : std_ulogic; -- high if a bit must be transmitted + txclkcnt : unsigned(7 downto 0); -- output shift register - bitshift: std_logic_vector(12 downto 0); - bitcnt: unsigned(3 downto 0); + bitshift : std_logic_vector(12 downto 0); + bitcnt : unsigned(3 downto 0); -- output signals - out_data: std_ulogic; - out_strobe: std_ulogic; + out_data : std_ulogic; + out_strobe : std_ulogic; -- parity flag - parity: std_ulogic; + parity : std_ulogic; -- pending time tick - pend_tick: std_ulogic; - pend_time: std_logic_vector(7 downto 0); + pend_tick : std_ulogic; + pend_time : std_logic_vector(7 downto 0); -- transmitter mode - allow_fct: std_ulogic; -- allowed to send FCTs - allow_char: std_ulogic; -- allowed to send data and time - sent_null: std_ulogic; -- sent at least one NULL token - sent_fct: std_ulogic; -- sent at least one FCT token + allow_fct : std_ulogic; -- allowed to send FCTs + allow_char : std_ulogic; -- allowed to send data and time + sent_null : std_ulogic; -- sent at least one NULL token + sent_fct : std_ulogic; -- sent at least one FCT token end record; -- Initial state - constant regs_reset: regs_type := ( - txclken => '0', - txclkcnt => "00000000", - bitshift => (others => '0'), - bitcnt => "0000", - out_data => '0', - out_strobe => '0', - parity => '0', - pend_tick => '0', - pend_time => (others => '0'), - allow_fct => '0', - allow_char => '0', - sent_null => '0', - sent_fct => '0' ); + constant regs_reset : regs_type := ( + txclken => '0', + txclkcnt => "00000000", + bitshift => (others => '0'), + bitcnt => "0000", + out_data => '0', + out_strobe => '0', + parity => '0', + pend_tick => '0', + pend_time => (others => '0'), + allow_fct => '0', + allow_char => '0', + sent_null => '0', + sent_fct => '0'); -- Registers - signal r: regs_type := regs_reset; - signal rin: regs_type; + signal r : regs_type := regs_reset; + signal rin : regs_type; begin -- Combinatorial process - process (r, rst, divcnt, xmiti) is - variable v: regs_type; + process(r, rst, divcnt, xmiti) is + variable v : regs_type; begin v := r; -- Generate TX clock. if r.txclkcnt = 0 then - v.txclkcnt := unsigned(divcnt); - v.txclken := '1'; + v.txclkcnt := unsigned(divcnt); + v.txclken := '1'; else - v.txclkcnt := r.txclkcnt - 1; - v.txclken := '0'; + v.txclkcnt := r.txclkcnt - 1; + v.txclken := '0'; end if; if xmiti.txen = '0' then @@ -122,14 +116,13 @@ begin else -- Transmitter enabled. - v.allow_fct := (not xmiti.stnull) and r.sent_null; - + v.allow_fct := (not xmiti.stnull) and r.sent_null; + -- If a char sequence error requested, force allow_char = '1' if (xmiti.err_inj_ch_seq = '1') then - v.allow_char := '1'; - else - v.allow_char := (not xmiti.stnull) and r.sent_null and - (not xmiti.stfct) and r.sent_fct; + v.allow_char := '1'; + else + v.allow_char := (not xmiti.stnull) and r.sent_null and (not xmiti.stfct) and r.sent_fct; end if; -- On tick of transmission clock, put next bit on the output. @@ -140,50 +133,50 @@ begin -- Need to start a new character. if (r.allow_char = '1') and (r.pend_tick = '1') then -- Send Time-Code. - v.out_data := r.parity; + v.out_data := r.parity; v.bitshift(12 downto 5) := r.pend_time; v.bitshift(4 downto 0) := "01111"; - v.bitcnt := to_unsigned(13, v.bitcnt'length); - v.parity := '0'; - v.pend_tick := '0'; + v.bitcnt := to_unsigned(13, v.bitcnt'length); + v.parity := '0'; + v.pend_tick := '0'; elsif (r.allow_fct = '1') and (xmiti.fct_in = '1') then -- Send FCT. - v.out_data := r.parity; - v.bitshift(2 downto 0) := "001"; - v.bitcnt := to_unsigned(3, v.bitcnt'length); - v.parity := '1'; - v.sent_fct := '1'; + v.out_data := r.parity; + v.bitshift(2 downto 0) := "001"; + v.bitcnt := to_unsigned(3, v.bitcnt'length); + v.parity := '1'; + v.sent_fct := '1'; elsif (r.allow_char = '1') and (xmiti.txwrite = '1') then -- Send N-Char. v.bitshift(0) := xmiti.txflag; - v.parity := xmiti.txflag; + v.parity := xmiti.txflag; if xmiti.txflag = '0' then -- Data byte - v.out_data := not r.parity; + v.out_data := not r.parity; v.bitshift(8 downto 1) := xmiti.txdata; - v.bitcnt := to_unsigned(9, v.bitcnt'length); + v.bitcnt := to_unsigned(9, v.bitcnt'length); else -- EOP or EEP - v.out_data := r.parity; + v.out_data := r.parity; v.bitshift(1) := xmiti.txdata(0); v.bitshift(2) := not xmiti.txdata(0); - v.bitcnt := to_unsigned(3, v.bitcnt'length); + v.bitcnt := to_unsigned(3, v.bitcnt'length); end if; else -- Send NULL. - v.out_data := r.parity; + v.out_data := r.parity; -- Parity error injection check if (xmiti.err_inj_par = '1') then - -- Force wrong parity bit in fct portion code - -- It can´t be confused with eop, eep, or another esc. - v.bitshift(6 downto 0) := "0011111"; - -- Escape error injection check + -- Force wrong parity bit in fct portion code + -- It can´t be confused with eop, eep, or another esc. + v.bitshift(6 downto 0) := "0011111"; + -- Escape error injection check elsif (xmiti.err_inj_esc = '1') then - -- Force another esc in fct portion code: esc + esc. - v.bitshift(6 downto 0) := "1110111"; + -- Force another esc in fct portion code: esc + esc. + v.bitshift(6 downto 0) := "1110111"; -- Normal null code else - v.bitshift(6 downto 0) := "0010111"; + v.bitshift(6 downto 0) := "0010111"; end if; v.bitcnt := to_unsigned(7, v.bitcnt'length); v.parity := '0'; @@ -193,10 +186,10 @@ begin else -- Shift next bit to the output. - v.out_data := r.bitshift(0); - v.parity := r.parity xor r.bitshift(0); - v.bitshift(r.bitshift'high-1 downto 0) := r.bitshift(r.bitshift'high downto 1); - v.bitcnt := r.bitcnt - 1; + v.out_data := r.bitshift(0); + v.parity := r.parity xor r.bitshift(0); + v.bitshift(r.bitshift'high - 1 downto 0) := r.bitshift(r.bitshift'high downto 1); + v.bitcnt := r.bitcnt - 1; end if; @@ -225,24 +218,20 @@ begin -- (ready for token) AND (FCTs allowed) AND -- ((characters not allowed) OR (no timecode pending)) AND -- (FCT requested) - if (xmiti.txen = '1') and - (r.txclken = '1') and (r.bitcnt = 0) and (r.allow_fct = '1') and - ((r.allow_char = '0') or (r.pend_tick = '0')) then - xmito.fctack <= xmiti.fct_in; + if (xmiti.txen = '1') and (r.txclken = '1') and (r.bitcnt = 0) and (r.allow_fct = '1') and ((r.allow_char = '0') or (r.pend_tick = '0')) then + xmito.fctack <= xmiti.fct_in; else - xmito.fctack <= '0'; + xmito.fctack <= '0'; end if; -- Set txack high if (transmitter enabled) AND -- (ready for token) AND (characters enabled) AND -- (no timecode pending) AND (no FCT requested) AND -- (character requested) - if (xmiti.txen = '1') and - (r.txclken = '1') and (r.bitcnt = 0) and (r.allow_char = '1') and - (r.pend_tick = '0') and (xmiti.fct_in = '0') then - xmito.txack <= xmiti.txwrite; + if (xmiti.txen = '1') and (r.txclken = '1') and (r.bitcnt = 0) and (r.allow_char = '1') and (r.pend_tick = '0') and (xmiti.fct_in = '0') then + xmito.txack <= xmiti.txwrite; else - xmito.txack <= '0'; + xmito.txack <= '0'; end if; -- Update registers @@ -250,7 +239,7 @@ begin end process; -- Synchronous process - process (clk) is + process(clk) is begin if rising_edge(clk) then @@ -258,8 +247,8 @@ begin r <= rin; -- Drive spacewire output signals - spw_do <= r.out_data; - spw_so <= r.out_strobe; + spw_do <= r.out_data; + spw_so <= r.out_strobe; end if; end process; diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd index fe1f9e15..034970e3 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/SPW_CODEC/spacewire_light_codec_err/spwxmit_fast.vhd @@ -149,215 +149,208 @@ use work.spwpkg.all; entity spwxmit_fast is - port ( + port( -- System clock. - clk: in std_logic; - + clk : in std_logic; -- Transmit clock. - txclk: in std_logic; - + txclk : in std_logic; -- Synchronous reset (active-high) -- Used asynchronously by fast clock domain (must be glitch-free). - rst: in std_logic; - + rst : in std_logic; -- Scaling factor minus 1, used to scale the system clock into the -- transmission bit rate. The system clock is divided by -- (unsigned(divcnt) + 1). Changing this signal will immediately -- change the transmission rate. - divcnt: in std_logic_vector(7 downto 0); - + divcnt : in std_logic_vector(7 downto 0); -- Input signals from spwlink. - xmiti: in spw_xmit_in_type; - + xmiti : in spw_xmit_in_type; -- Output signals to spwlink. - xmito: out spw_xmit_out_type; - + xmito : out spw_xmit_out_type; -- Data Out signal to SpaceWire bus. - spw_do: out std_logic; - + spw_do : out std_logic; -- Strobe Out signal to SpaceWire bus. - spw_so: out std_logic + spw_so : out std_logic ); -- Turn off FSM extraction to avoid synchronization problems. - attribute FSM_EXTRACT: string; - attribute FSM_EXTRACT of spwxmit_fast: entity is "NO"; + attribute FSM_EXTRACT : string; + attribute FSM_EXTRACT of spwxmit_fast : entity is "NO"; end entity spwxmit_fast; architecture spwxmit_fast_arch of spwxmit_fast is -- Convert boolean to std_logic. - type bool_to_logic_type is array(boolean) of std_ulogic; - constant bool_to_logic: bool_to_logic_type := (false => '0', true => '1'); + type bool_to_logic_type is array (boolean) of std_ulogic; + constant bool_to_logic : bool_to_logic_type := (false => '0', true => '1'); -- Data records passed between clock domains. type token_type is record - tick: std_ulogic; -- send time code - fct: std_ulogic; -- send FCT - fctpiggy: std_ulogic; -- send FCT and N-char - flag: std_ulogic; -- send EOP or EEP - char: std_logic_vector(7 downto 0); -- character or time code + tick : std_ulogic; -- send time code + fct : std_ulogic; -- send FCT + fctpiggy : std_ulogic; -- send FCT and N-char + flag : std_ulogic; -- send EOP or EEP + char : std_logic_vector(7 downto 0); -- character or time code end record; -- Registers in txclk domain type txregs_type is record -- sync to system clock domain - txflip0: std_ulogic; - txflip1: std_ulogic; + txflip0 : std_ulogic; + txflip1 : std_ulogic; -- stage B - b_update: std_ulogic; - b_mux: std_ulogic; - b_txflip: std_ulogic; - b_valid: std_ulogic; - b_token: token_type; + b_update : std_ulogic; + b_mux : std_ulogic; + b_txflip : std_ulogic; + b_valid : std_ulogic; + b_token : token_type; -- stage C - c_update: std_ulogic; - c_busy: std_ulogic; - c_esc: std_ulogic; - c_fct: std_ulogic; - c_bits: std_logic_vector(8 downto 0); + c_update : std_ulogic; + c_busy : std_ulogic; + c_esc : std_ulogic; + c_fct : std_ulogic; + c_bits : std_logic_vector(8 downto 0); -- stage D - d_bits: std_logic_vector(8 downto 0); - d_cnt4: std_ulogic; - d_cnt10: std_ulogic; + d_bits : std_logic_vector(8 downto 0); + d_cnt4 : std_ulogic; + d_cnt10 : std_ulogic; -- stage E - e_valid: std_ulogic; - e_shift: std_logic_vector(9 downto 0); - e_count: std_logic_vector(9 downto 0); - e_parity: std_ulogic; + e_valid : std_ulogic; + e_shift : std_logic_vector(9 downto 0); + e_count : std_logic_vector(9 downto 0); + e_parity : std_ulogic; -- stage F - f_spwdo: std_ulogic; - f_spwso: std_ulogic; + f_spwdo : std_ulogic; + f_spwso : std_ulogic; -- tx clock enable logic - txclken: std_ulogic; - txclkpre: std_ulogic; - txclkcnt: std_logic_vector(7 downto 0); - txclkcy: std_logic_vector(2 downto 0); - txclkdone: std_logic_vector(1 downto 0); - txclkdiv: std_logic_vector(7 downto 0); - txdivnorm: std_ulogic; + txclken : std_ulogic; + txclkpre : std_ulogic; + txclkcnt : std_logic_vector(7 downto 0); + txclkcy : std_logic_vector(2 downto 0); + txclkdone : std_logic_vector(1 downto 0); + txclkdiv : std_logic_vector(7 downto 0); + txdivnorm : std_ulogic; end record; -- Registers in system clock domain type regs_type is record -- sync status to txclk domain - txenreg: std_ulogic; - txdivreg: std_logic_vector(7 downto 0); - txdivnorm: std_ulogic; - txdivtmp: std_logic_vector(1 downto 0); - txdivsafe: std_ulogic; + txenreg : std_ulogic; + txdivreg : std_logic_vector(7 downto 0); + txdivnorm : std_ulogic; + txdivtmp : std_logic_vector(1 downto 0); + txdivsafe : std_ulogic; -- data stream to txclk domain - sysflip0: std_ulogic; - sysflip1: std_ulogic; - token0: token_type; - token1: token_type; - tokmux: std_ulogic; + sysflip0 : std_ulogic; + sysflip1 : std_ulogic; + token0 : token_type; + token1 : token_type; + tokmux : std_ulogic; -- transmitter management - pend_fct: std_ulogic; -- '1' if an outgoing FCT is pending - pend_char: std_ulogic; -- '1' if an outgoing N-Char is pending - pend_data: std_logic_vector(8 downto 0); -- control flag and data bits of pending char - pend_tick: std_ulogic; -- '1' if an outgoing time tick is pending - pend_time: std_logic_vector(7 downto 0); -- data bits of pending time tick - allow_fct: std_ulogic; -- '1' when allowed to send FCTs - allow_char: std_ulogic; -- '1' when allowed to send data and time - sent_fct: std_ulogic; -- '1' when at least one FCT token was sent + pend_fct : std_ulogic; -- '1' if an outgoing FCT is pending + pend_char : std_ulogic; -- '1' if an outgoing N-Char is pending + pend_data : std_logic_vector(8 downto 0); -- control flag and data bits of pending char + pend_tick : std_ulogic; -- '1' if an outgoing time tick is pending + pend_time : std_logic_vector(7 downto 0); -- data bits of pending time tick + allow_fct : std_ulogic; -- '1' when allowed to send FCTs + allow_char : std_ulogic; -- '1' when allowed to send data and time + sent_fct : std_ulogic; -- '1' when at least one FCT token was sent end record; -- Initial state of system clock domain - constant token_reset: token_type := ( - tick => '0', - fct => '0', - fctpiggy => '0', - flag => '0', - char => (others => '0') ); - constant regs_reset: regs_type := ( - txenreg => '0', - txdivreg => (others => '0'), - txdivnorm => '0', - txdivtmp => "00", - txdivsafe => '0', - sysflip0 => '0', - sysflip1 => '0', - token0 => token_reset, - token1 => token_reset, - tokmux => '0', - pend_fct => '0', - pend_char => '0', - pend_data => (others => '0'), - pend_tick => '0', - pend_time => (others => '0'), - allow_fct => '0', - allow_char => '0', - sent_fct => '0' ); + constant token_reset : token_type := ( + tick => '0', + fct => '0', + fctpiggy => '0', + flag => '0', + char => (others => '0')); + constant regs_reset : regs_type := ( + txenreg => '0', + txdivreg => (others => '0'), + txdivnorm => '0', + txdivtmp => "00", + txdivsafe => '0', + sysflip0 => '0', + sysflip1 => '0', + token0 => token_reset, + token1 => token_reset, + tokmux => '0', + pend_fct => '0', + pend_char => '0', + pend_data => (others => '0'), + pend_tick => '0', + pend_time => (others => '0'), + allow_fct => '0', + allow_char => '0', + sent_fct => '0'); -- Signals that are re-synchronized from system clock to txclk domain. type synctx_type is record - rstn: std_ulogic; - sysflip0: std_ulogic; - sysflip1: std_ulogic; - txen: std_ulogic; - txdivsafe: std_ulogic; + rstn : std_ulogic; + sysflip0 : std_ulogic; + sysflip1 : std_ulogic; + txen : std_ulogic; + txdivsafe : std_ulogic; end record; -- Signals that are re-synchronized from txclk to system clock domain. type syncsys_type is record - txflip0: std_ulogic; - txflip1: std_ulogic; + txflip0 : std_ulogic; + txflip1 : std_ulogic; end record; -- Registers - signal rtx: txregs_type; - signal rtxin: txregs_type; - signal r: regs_type := regs_reset; - signal rin: regs_type; + signal rtx : txregs_type; + signal rtxin : txregs_type; + signal r : regs_type := regs_reset; + signal rin : regs_type; -- Synchronized signals after crossing clock domains. - signal synctx: synctx_type; - signal syncsys: syncsys_type; + signal synctx : synctx_type; + signal syncsys : syncsys_type; -- Output flip-flops - signal s_spwdo: std_logic; - signal s_spwso: std_logic; + signal s_spwdo : std_logic; + signal s_spwso : std_logic; -- Force use of IOB flip-flops - attribute IOB: string; - attribute IOB of s_spwdo: signal is "TRUE"; - attribute IOB of s_spwso: signal is "TRUE"; + attribute IOB : string; + attribute IOB of s_spwdo : signal is "TRUE"; + attribute IOB of s_spwso : signal is "TRUE"; begin -- Reset synchronizer for txclk domain. - synctx_rst: syncdff - port map ( clk => txclk, rst => rst, di => '1', do => synctx.rstn ); + synctx_rst : syncdff + port map(clk => txclk, rst => rst, di => '1', do => synctx.rstn); -- Synchronize signals from system clock domain to txclk domain. - synctx_sysflip0: syncdff - port map ( clk => txclk, rst => rst, di => r.sysflip0, do => synctx.sysflip0 ); - synctx_sysflip1: syncdff - port map ( clk => txclk, rst => rst, di => r.sysflip1, do => synctx.sysflip1 ); - synctx_txen: syncdff - port map ( clk => txclk, rst => rst, di => r.txenreg, do => synctx.txen ); - synctx_txdivsafe: syncdff - port map ( clk => txclk, rst => rst, di => r.txdivsafe, do => synctx.txdivsafe ); + synctx_sysflip0 : syncdff + port map(clk => txclk, rst => rst, di => r.sysflip0, do => synctx.sysflip0); + synctx_sysflip1 : syncdff + port map(clk => txclk, rst => rst, di => r.sysflip1, do => synctx.sysflip1); + synctx_txen : syncdff + port map(clk => txclk, rst => rst, di => r.txenreg, do => synctx.txen); + synctx_txdivsafe : syncdff + port map(clk => txclk, rst => rst, di => r.txdivsafe, do => synctx.txdivsafe); -- Synchronize signals from txclk domain to system clock domain. - syncsys_txflip0: syncdff - port map ( clk => clk, rst => rst, di => rtx.txflip0, do => syncsys.txflip0 ); - syncsys_txflip1: syncdff - port map ( clk => clk, rst => rst, di => rtx.txflip1, do => syncsys.txflip1 ); + syncsys_txflip0 : syncdff + port map(clk => clk, rst => rst, di => rtx.txflip0, do => syncsys.txflip0); + syncsys_txflip1 : syncdff + port map(clk => clk, rst => rst, di => rtx.txflip1, do => syncsys.txflip1); -- Drive SpaceWire output signals - spw_do <= s_spwdo; - spw_so <= s_spwso; + spw_do <= s_spwdo; + spw_so <= s_spwso; -- Combinatorial process - process (r, rtx, rst, divcnt, xmiti, synctx, syncsys) is - variable v: regs_type; - variable vtx: txregs_type; - variable v_needtoken: std_ulogic; - variable v_havetoken: std_ulogic; - variable v_token: token_type; + process(r, rtx, rst, divcnt, xmiti, synctx, syncsys) is + variable v : regs_type; + variable vtx : txregs_type; + variable v_needtoken : std_ulogic; + variable v_havetoken : std_ulogic; + variable v_token : token_type; begin v := r; vtx := rtx; @@ -406,45 +399,42 @@ begin -- Time-codes are broken into two tokens: ESC + char. -- Enable c_esc on the first pass of a NULL or a time-code. - vtx.c_esc := (rtx.b_token.tick or (not rtx.b_valid)) and - (not rtx.c_esc); + vtx.c_esc := (rtx.b_token.tick or (not rtx.b_valid)) and (not rtx.c_esc); -- Enable c_fct on the first pass of an FCT and on -- the second pass of a NULL (also the first pass, but c_esc -- is stronger than c_fct). - vtx.c_fct := (rtx.b_token.fct and (not rtx.c_busy)) or - (not rtx.b_valid); + vtx.c_fct := (rtx.b_token.fct and (not rtx.c_busy)) or (not rtx.b_valid); -- Enable c_busy on the first pass of a NULL or a time-code -- or a piggy-backed FCT. This will tell stage B that we are -- not done yet. - vtx.c_busy := (rtx.b_token.tick or (not rtx.b_valid) or - rtx.b_token.fctpiggy) and (not rtx.c_busy); + vtx.c_busy := (rtx.b_token.tick or (not rtx.b_valid) or rtx.b_token.fctpiggy) and (not rtx.c_busy); if rtx.b_token.flag = '1' then if rtx.b_token.char(0) = '0' then -- prepare to send EOP - vtx.c_bits := "000000101"; -- EOP = P101 + vtx.c_bits := "000000101"; -- EOP = P101 else -- prepare to send EEP - vtx.c_bits := "000000011"; -- EEP = P110 + vtx.c_bits := "000000011"; -- EEP = P110 end if; else -- prepare to send data char - vtx.c_bits := rtx.b_token.char & '0'; + vtx.c_bits := rtx.b_token.char & '0'; end if; end if; -- Stage D: Prepare to transmit FCT, ESC, or the stuff from stage C. if rtx.c_esc = '1' then -- prepare to send ESC - vtx.d_bits := "000000111"; -- ESC = P111 - vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit + vtx.d_bits := "000000111"; -- ESC = P111 + vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit vtx.d_cnt10 := '0'; elsif rtx.c_fct = '1' then -- prepare to send FCT - vtx.d_bits := "000000001"; -- FCT = P100 - vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit + vtx.d_bits := "000000001"; -- FCT = P100 + vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit vtx.d_cnt10 := '0'; else -- send the stuff from stage C. @@ -457,11 +447,11 @@ begin if rtx.txclken = '1' then if rtx.e_count(0) = '1' then -- reload shift register; output parity bit - vtx.e_valid := '1'; + vtx.e_valid := '1'; vtx.e_shift(vtx.e_shift'high downto 1) := rtx.d_bits; - vtx.e_shift(0) := not (rtx.e_parity xor rtx.d_bits(0)); - vtx.e_count := rtx.d_cnt10 & "00000" & rtx.d_cnt4 & "000"; - vtx.e_parity := rtx.d_bits(0); + vtx.e_shift(0) := not (rtx.e_parity xor rtx.d_bits(0)); + vtx.e_count := rtx.d_cnt10 & "00000" & rtx.d_cnt4 & "000"; + vtx.e_parity := rtx.d_bits(0); else -- shift bits to output; update parity bit vtx.e_shift := '0' & rtx.e_shift(rtx.e_shift'high downto 1); @@ -493,15 +483,15 @@ begin vtx.txclkcnt(5 downto 4) := std_logic_vector(unsigned(rtx.txclkcnt(5 downto 4)) - unsigned(rtx.txclkcy(1 downto 1))); vtx.txclkcnt(7 downto 6) := std_logic_vector(unsigned(rtx.txclkcnt(7 downto 6)) - unsigned(rtx.txclkcy(2 downto 2))); -- propagate carry in blocks of two bits - vtx.txclkcy(0) := bool_to_logic(rtx.txclkcnt(1 downto 0) = "00"); - vtx.txclkcy(1) := rtx.txclkcy(0) and bool_to_logic(rtx.txclkcnt(3 downto 2) = "00"); - vtx.txclkcy(2) := rtx.txclkcy(1) and bool_to_logic(rtx.txclkcnt(5 downto 4) = "00"); + vtx.txclkcy(0) := bool_to_logic(rtx.txclkcnt(1 downto 0) = "00"); + vtx.txclkcy(1) := rtx.txclkcy(0) and bool_to_logic(rtx.txclkcnt(3 downto 2) = "00"); + vtx.txclkcy(2) := rtx.txclkcy(1) and bool_to_logic(rtx.txclkcnt(5 downto 4) = "00"); -- detect value 2 in counter - vtx.txclkdone(0) := bool_to_logic(rtx.txclkcnt(3 downto 0) = "0010"); - vtx.txclkdone(1) := bool_to_logic(rtx.txclkcnt(7 downto 4) = "0000"); + vtx.txclkdone(0) := bool_to_logic(rtx.txclkcnt(3 downto 0) = "0010"); + vtx.txclkdone(1) := bool_to_logic(rtx.txclkcnt(7 downto 4) = "0000"); -- trigger txclken - vtx.txclken := (rtx.txclkdone(0) and rtx.txclkdone(1)) or rtx.txclkpre; - vtx.txclkpre := (not rtx.txdivnorm) and ((not rtx.txclkpre) or (not rtx.txclkdiv(0))); + vtx.txclken := (rtx.txclkdone(0) and rtx.txclkdone(1)) or rtx.txclkpre; + vtx.txclkpre := (not rtx.txdivnorm) and ((not rtx.txclkpre) or (not rtx.txclkdiv(0))); -- reload counter if rtx.txclken = '1' then vtx.txclkcnt := rtx.txclkdiv; @@ -517,21 +507,21 @@ begin -- Transmitter disabled. if synctx.txen = '0' then - vtx.txflip0 := '0'; - vtx.txflip1 := '0'; - vtx.b_update := '0'; - vtx.b_mux := '0'; - vtx.b_valid := '0'; - vtx.c_update := '0'; - vtx.c_busy := '1'; - vtx.c_esc := '1'; -- need to send 2nd part of NULL - vtx.c_fct := '1'; - vtx.d_bits := "000000111"; -- ESC = P111 - vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit - vtx.d_cnt10 := '0'; - vtx.e_valid := '0'; - vtx.e_parity := '0'; - vtx.e_count := (0 => '1', others => '0'); + vtx.txflip0 := '0'; + vtx.txflip1 := '0'; + vtx.b_update := '0'; + vtx.b_mux := '0'; + vtx.b_valid := '0'; + vtx.c_update := '0'; + vtx.c_busy := '1'; + vtx.c_esc := '1'; -- need to send 2nd part of NULL + vtx.c_fct := '1'; + vtx.d_bits := "000000111"; -- ESC = P111 + vtx.d_cnt4 := '1'; -- 3 bits + implicit parity bit + vtx.d_cnt10 := '0'; + vtx.e_valid := '0'; + vtx.e_parity := '0'; + vtx.e_count := (0 => '1', others => '0'); end if; -- Reset. @@ -548,7 +538,7 @@ begin -- ---- SYSTEM CLOCK DOMAIN ---- -- Hold divcnt and txen for use by txclk domain. - v.txdivtmp := std_logic_vector(unsigned(r.txdivtmp) - 1); + v.txdivtmp := std_logic_vector(unsigned(r.txdivtmp) - 1); if r.txdivtmp = "00" then if r.txdivsafe = '0' then -- Latch the current value of divcnt and txen. @@ -569,26 +559,26 @@ begin -- Pass falling edge of txen signal as soon as possible. if xmiti.txen = '0' then - v.txenreg := '0'; + v.txenreg := '0'; end if; -- Store requests for FCT transmission. if xmiti.fct_in = '1' and r.allow_fct = '1' then - v.pend_fct := '1'; + v.pend_fct := '1'; end if; if xmiti.txen = '0' then -- Transmitter disabled; reset state. - v.sysflip0 := '0'; - v.sysflip1 := '0'; - v.tokmux := '0'; - v.pend_fct := '0'; - v.pend_char := '0'; - v.pend_tick := '0'; - v.allow_fct := '0'; - v.allow_char := '0'; - v.sent_fct := '0'; + v.sysflip0 := '0'; + v.sysflip1 := '0'; + v.tokmux := '0'; + v.pend_fct := '0'; + v.pend_char := '0'; + v.pend_tick := '0'; + v.allow_fct := '0'; + v.allow_char := '0'; + v.sent_fct := '0'; else @@ -606,23 +596,23 @@ begin -- Prepare new token. if r.allow_char = '1' and r.pend_tick = '1' then -- prepare to send time code - v_token.tick := '1'; - v_token.fct := '0'; + v_token.tick := '1'; + v_token.fct := '0'; v_token.fctpiggy := '0'; - v_token.flag := '0'; - v_token.char := r.pend_time; - v_havetoken := '1'; + v_token.flag := '0'; + v_token.char := r.pend_time; + v_havetoken := '1'; if v_needtoken = '1' then v.pend_tick := '0'; end if; else if r.allow_fct = '1' and (xmiti.fct_in = '1' or r.pend_fct = '1') then -- prepare to send FCT - v_token.fct := '1'; - v_havetoken := '1'; + v_token.fct := '1'; + v_havetoken := '1'; if v_needtoken = '1' then - v.pend_fct := '0'; - v.sent_fct := '1'; + v.pend_fct := '0'; + v.sent_fct := '1'; end if; end if; if r.allow_char = '1' and r.pend_char = '1' then @@ -630,9 +620,9 @@ begin -- Note: it is possible to send an FCT and an N-Char -- together by enabling the fctpiggy flag. v_token.fctpiggy := v_token.fct; - v_token.flag := r.pend_data(8); - v_token.char := r.pend_data(7 downto 0); - v_havetoken := '1'; + v_token.flag := r.pend_data(8); + v_token.char := r.pend_data(7 downto 0); + v_havetoken := '1'; if v_needtoken = '1' then v.pend_char := '0'; end if; @@ -643,15 +633,15 @@ begin if v_havetoken = '1' then if r.tokmux = '0' then if r.sysflip0 = syncsys.txflip0 then - v.sysflip0 := not r.sysflip0; - v.token0 := v_token; - v.tokmux := '1'; + v.sysflip0 := not r.sysflip0; + v.token0 := v_token; + v.tokmux := '1'; end if; else if r.sysflip1 = syncsys.txflip1 then - v.sysflip1 := not r.sysflip1; - v.token1 := v_token; - v.tokmux := '0'; + v.sysflip1 := not r.sysflip1; + v.token1 := v_token; + v.tokmux := '0'; end if; end if; end if; @@ -662,8 +652,8 @@ begin -- Store request for data transmission. if xmiti.txwrite = '1' and r.allow_char = '1' and r.pend_char = '0' then - v.pend_char := '1'; - v.pend_data := xmiti.txflag & xmiti.txdata; + v.pend_char := '1'; + v.pend_data := xmiti.txflag & xmiti.txdata; end if; -- Store requests for time tick transmission. @@ -684,33 +674,31 @@ begin -- Set fctack high if (FCT requested) and (FCTs allowed) AND -- (no FCT pending) - xmito.fctack <= xmiti.fct_in and xmiti.txen and r.allow_fct and - (not r.pend_fct); + xmito.fctack <= xmiti.fct_in and xmiti.txen and r.allow_fct and (not r.pend_fct); -- Set txack high if (character requested) AND (characters allowed) AND -- (no character pending) - xmito.txack <= xmiti.txwrite and xmiti.txen and r.allow_char and - (not r.pend_char); + xmito.txack <= xmiti.txwrite and xmiti.txen and r.allow_char and (not r.pend_char); -- Update registers. - rin <= v; - rtxin <= vtx; + rin <= v; + rtxin <= vtx; end process; -- Synchronous process in txclk domain - process (txclk) is + process(txclk) is begin if rising_edge(txclk) then -- drive spacewire output signals s_spwdo <= rtx.f_spwdo; s_spwso <= rtx.f_spwso; -- update registers - rtx <= rtxin; + rtx <= rtxin; end if; end process; -- Synchronous process in system clock domain - process (clk) is + process(clk) is begin if rising_edge(clk) then -- update registers diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/spwc_spacewire_channel_top.vhd b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/spwc_spacewire_channel_top.vhd index 9fad1246..0e16e658 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/spwc_spacewire_channel_top.vhd +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel/spwc_spacewire_channel_top.vhd @@ -17,265 +17,266 @@ use work.spwc_errinj_pkg.all; use work.spwc_leds_controller_pkg.all; entity spwc_spacewire_channel_top is - generic( - g_SPWC_TESTBENCH_MODE : std_logic := '0' - ); - port( - reset_i : in std_logic := '0'; -- -- reset_sink.reset - clk_100_i : in std_logic := '0'; -- -- clock_sink_100mhz.clk - clk_200_i : in std_logic := '0'; -- -- clock_sink_200mhz.clk - spw_lvds_p_data_in_i : in std_logic := '0'; -- -- conduit_end_spacewire_lvds.spw_lvds_p_data_in_signal - spw_lvds_n_data_in_i : in std_logic := '0'; -- -- .spw_lvds_n_data_in_signal - spw_lvds_p_strobe_in_i : in std_logic := '0'; -- -- .spw_lvds_p_strobe_in_signal - spw_lvds_n_strobe_in_i : in std_logic := '0'; -- -- .spw_lvds_n_strobe_in_signal - spw_lvds_p_data_out_o : out std_logic; -- -- .spw_lvds_p_data_out_signal - spw_lvds_n_data_out_o : out std_logic; -- -- .spw_lvds_n_data_out_signal - spw_lvds_p_strobe_out_o : out std_logic; -- -- .spw_lvds_p_strobe_out_signal - spw_lvds_n_strobe_out_o : out std_logic; -- -- .spw_lvds_n_strobe_out_signal - spw_rx_enable_i : in std_logic := '0'; -- -- conduit_end_spacewire_enable.spw_rx_enable_signal - spw_tx_enable_i : in std_logic := '0'; -- -- .spw_tx_enable_signal - spw_red_status_led_o : out std_logic; -- -- conduit_end_spacewire_leds.spw_red_status_led_signal - spw_green_status_led_o : out std_logic; -- -- .spw_green_status_led_signal - spw_link_command_autostart_i : in std_logic := '0'; -- -- conduit_end_spacewire_channel.spw_link_command_autostart_signal - spw_link_command_linkstart_i : in std_logic := '0'; -- -- .spw_link_command_linkstart_signal - spw_link_command_linkdis_i : in std_logic := '0'; -- -- .spw_link_command_linkdis_signal - spw_link_command_txdivcnt_i : in std_logic_vector(7 downto 0) := (others => '0'); -- .spw_link_command_txdivcnt_signal - spw_timecode_tx_tick_in_i : in std_logic := '0'; -- -- .spw_timecode_tx_tick_in_signal - spw_timecode_tx_ctrl_in_i : in std_logic_vector(1 downto 0) := (others => '0'); -- .spw_timecode_tx_ctrl_in_signal - spw_timecode_tx_time_in_i : in std_logic_vector(5 downto 0) := (others => '0'); -- .spw_timecode_tx_time_in_signal - spw_data_rx_command_rxread_i : in std_logic := '0'; -- -- .spw_data_rx_command_rxread_signal - spw_data_tx_command_txwrite_i : in std_logic := '0'; -- -- .spw_data_tx_command_txwrite_signal - spw_data_tx_command_txflag_i : in std_logic := '0'; -- -- .spw_data_tx_command_txflag_signal - spw_data_tx_command_txdata_i : in std_logic_vector(7 downto 0) := (others => '0'); -- .spw_data_tx_command_txdata_signal - spw_errinj_ctrl_start_errinj_i : in std_logic := '0'; -- -- .spw_errinj_ctrl_start_errinj_signal - spw_errinj_ctrl_reset_errinj_i : in std_logic := '0'; -- -- .spw_errinj_ctrl_reset_errinj_signal - spw_errinj_ctrl_errinj_code_i : in std_logic_vector(3 downto 0) := (others => '0'); -- .spw_errinj_ctrl_errinj_code_signal - spw_link_status_started_o : out std_logic; -- -- .spw_link_status_started_signal - spw_link_status_connecting_o : out std_logic; -- -- .spw_link_status_connecting_signal - spw_link_status_running_o : out std_logic; -- -- .spw_link_status_running_signal - spw_link_error_errdisc_o : out std_logic; -- -- .spw_link_error_errdisc_signal - spw_link_error_errpar_o : out std_logic; -- -- .spw_link_error_errpar_signal - spw_link_error_erresc_o : out std_logic; -- -- .spw_link_error_erresc_signal - spw_link_error_errcred_o : out std_logic; -- -- .spw_link_error_errcred_signal - spw_timecode_rx_tick_out_o : out std_logic; -- -- .spw_timecode_rx_tick_out_signal - spw_timecode_rx_ctrl_out_o : out std_logic_vector(1 downto 0); -- -- .spw_timecode_rx_ctrl_out_signal - spw_timecode_rx_time_out_o : out std_logic_vector(5 downto 0); -- -- .spw_timecode_rx_time_out_signal - spw_data_rx_status_rxvalid_o : out std_logic; -- -- .spw_data_rx_status_rxvalid_signal - spw_data_rx_status_rxhalff_o : out std_logic; -- -- .spw_data_rx_status_rxhalff_signal - spw_data_rx_status_rxflag_o : out std_logic; -- -- .spw_data_rx_status_rxflag_signal - spw_data_rx_status_rxdata_o : out std_logic_vector(7 downto 0); -- -- .spw_data_rx_status_rxdata_signal - spw_data_tx_status_txrdy_o : out std_logic; -- -- .spw_data_tx_status_txrdy_signal - spw_data_tx_status_txhalff_o : out std_logic; -- -- .spw_data_tx_status_txhalff_signal - spw_errinj_ctrl_errinj_busy_o : out std_logic; -- -- .spw_errinj_ctrl_errinj_busy_signal - spw_errinj_ctrl_errinj_ready_o : out std_logic --- -- .spw_errinj_ctrl_errinj_ready_signal - ); + generic( + g_SPWC_TESTBENCH_MODE : std_logic := '0' + ); + port( + reset_i : in std_logic := '0'; -- -- reset_sink.reset + clk_100_i : in std_logic := '0'; -- -- clock_sink_100mhz.clk + clk_200_i : in std_logic := '0'; -- -- clock_sink_200mhz.clk + spw_lvds_p_data_in_i : in std_logic := '0'; -- -- conduit_end_spacewire_lvds.spw_lvds_p_data_in_signal + spw_lvds_n_data_in_i : in std_logic := '0'; -- -- .spw_lvds_n_data_in_signal + spw_lvds_p_strobe_in_i : in std_logic := '0'; -- -- .spw_lvds_p_strobe_in_signal + spw_lvds_n_strobe_in_i : in std_logic := '0'; -- -- .spw_lvds_n_strobe_in_signal + spw_lvds_p_data_out_o : out std_logic; -- -- .spw_lvds_p_data_out_signal + spw_lvds_n_data_out_o : out std_logic; -- -- .spw_lvds_n_data_out_signal + spw_lvds_p_strobe_out_o : out std_logic; -- -- .spw_lvds_p_strobe_out_signal + spw_lvds_n_strobe_out_o : out std_logic; -- -- .spw_lvds_n_strobe_out_signal + spw_rx_enable_i : in std_logic := '0'; -- -- conduit_end_spacewire_enable.spw_rx_enable_signal + spw_tx_enable_i : in std_logic := '0'; -- -- .spw_tx_enable_signal + spw_red_status_led_o : out std_logic; -- -- conduit_end_spacewire_leds.spw_red_status_led_signal + spw_green_status_led_o : out std_logic; -- -- .spw_green_status_led_signal + spw_link_command_enable_i : in std_logic := '0'; -- -- conduit_end_spacewire_channel.spw_link_command_enable_signal + spw_link_command_autostart_i : in std_logic := '0'; -- -- .spw_link_command_autostart_signal + spw_link_command_linkstart_i : in std_logic := '0'; -- -- .spw_link_command_linkstart_signal + spw_link_command_linkdis_i : in std_logic := '0'; -- -- .spw_link_command_linkdis_signal + spw_link_command_txdivcnt_i : in std_logic_vector(7 downto 0) := (others => '0'); -- .spw_link_command_txdivcnt_signal + spw_timecode_tx_tick_in_i : in std_logic := '0'; -- -- .spw_timecode_tx_tick_in_signal + spw_timecode_tx_ctrl_in_i : in std_logic_vector(1 downto 0) := (others => '0'); -- .spw_timecode_tx_ctrl_in_signal + spw_timecode_tx_time_in_i : in std_logic_vector(5 downto 0) := (others => '0'); -- .spw_timecode_tx_time_in_signal + spw_data_rx_command_rxread_i : in std_logic := '0'; -- -- .spw_data_rx_command_rxread_signal + spw_data_tx_command_txwrite_i : in std_logic := '0'; -- -- .spw_data_tx_command_txwrite_signal + spw_data_tx_command_txflag_i : in std_logic := '0'; -- -- .spw_data_tx_command_txflag_signal + spw_data_tx_command_txdata_i : in std_logic_vector(7 downto 0) := (others => '0'); -- .spw_data_tx_command_txdata_signal + spw_errinj_ctrl_start_errinj_i : in std_logic := '0'; -- -- .spw_errinj_ctrl_start_errinj_signal + spw_errinj_ctrl_reset_errinj_i : in std_logic := '0'; -- -- .spw_errinj_ctrl_reset_errinj_signal + spw_errinj_ctrl_errinj_code_i : in std_logic_vector(3 downto 0) := (others => '0'); -- .spw_errinj_ctrl_errinj_code_signal + spw_link_status_started_o : out std_logic; -- -- .spw_link_status_started_signal + spw_link_status_connecting_o : out std_logic; -- -- .spw_link_status_connecting_signal + spw_link_status_running_o : out std_logic; -- -- .spw_link_status_running_signal + spw_link_error_errdisc_o : out std_logic; -- -- .spw_link_error_errdisc_signal + spw_link_error_errpar_o : out std_logic; -- -- .spw_link_error_errpar_signal + spw_link_error_erresc_o : out std_logic; -- -- .spw_link_error_erresc_signal + spw_link_error_errcred_o : out std_logic; -- -- .spw_link_error_errcred_signal + spw_timecode_rx_tick_out_o : out std_logic; -- -- .spw_timecode_rx_tick_out_signal + spw_timecode_rx_ctrl_out_o : out std_logic_vector(1 downto 0); -- -- .spw_timecode_rx_ctrl_out_signal + spw_timecode_rx_time_out_o : out std_logic_vector(5 downto 0); -- -- .spw_timecode_rx_time_out_signal + spw_data_rx_status_rxvalid_o : out std_logic; -- -- .spw_data_rx_status_rxvalid_signal + spw_data_rx_status_rxhalff_o : out std_logic; -- -- .spw_data_rx_status_rxhalff_signal + spw_data_rx_status_rxflag_o : out std_logic; -- -- .spw_data_rx_status_rxflag_signal + spw_data_rx_status_rxdata_o : out std_logic_vector(7 downto 0); -- -- .spw_data_rx_status_rxdata_signal + spw_data_tx_status_txrdy_o : out std_logic; -- -- .spw_data_tx_status_txrdy_signal + spw_data_tx_status_txhalff_o : out std_logic; -- -- .spw_data_tx_status_txhalff_signal + spw_errinj_ctrl_errinj_busy_o : out std_logic; -- -- .spw_errinj_ctrl_errinj_busy_signal + spw_errinj_ctrl_errinj_ready_o : out std_logic --- -- .spw_errinj_ctrl_errinj_ready_signal + ); end entity spwc_spacewire_channel_top; architecture rtl of spwc_spacewire_channel_top is - -- Alias -- + -- Alias -- - -- Basic Alias - alias a_avs_clock is clk_100_i; - alias a_spw_clock is clk_200_i; - alias a_reset is reset_i; + -- Basic Alias + alias a_avs_clock is clk_100_i; + alias a_spw_clock is clk_200_i; + alias a_reset is reset_i; - -- Constants -- + -- Constants -- - -- Signals -- + -- Signals -- - -- SpaceWire Codec Clock Synchronization Signals (200 MHz) - signal s_spw_codec_link_command_spw : t_spwc_codec_link_command; - signal s_spw_codec_link_status_spw : t_spwc_codec_link_status; - signal s_spw_codec_link_error_spw : t_spwc_codec_link_error; - signal s_spw_codec_timecode_rx_spw : t_spwc_codec_timecode_rx; - signal s_spw_codec_data_rx_status_spw : t_spwc_codec_data_rx_status; - signal s_spw_codec_data_tx_status_spw : t_spwc_codec_data_tx_status; - signal s_spw_codec_err_inj_status_spw : t_spwc_codec_err_inj_status; - signal s_spw_codec_timecode_tx_spw : t_spwc_codec_timecode_tx; - signal s_spw_codec_data_rx_command_spw : t_spwc_codec_data_rx_command; - signal s_spw_codec_data_tx_command_spw : t_spwc_codec_data_tx_command; - signal s_spw_codec_err_inj_command_spw : t_spwc_codec_err_inj_command; + -- SpaceWire Codec Clock Synchronization Signals (200 MHz) + signal s_spw_codec_link_command_spw : t_spwc_codec_link_command; + signal s_spw_codec_link_status_spw : t_spwc_codec_link_status; + signal s_spw_codec_link_error_spw : t_spwc_codec_link_error; + signal s_spw_codec_timecode_rx_spw : t_spwc_codec_timecode_rx; + signal s_spw_codec_data_rx_status_spw : t_spwc_codec_data_rx_status; + signal s_spw_codec_data_tx_status_spw : t_spwc_codec_data_tx_status; + signal s_spw_codec_err_inj_status_spw : t_spwc_codec_err_inj_status; + signal s_spw_codec_timecode_tx_spw : t_spwc_codec_timecode_tx; + signal s_spw_codec_data_rx_command_spw : t_spwc_codec_data_rx_command; + signal s_spw_codec_data_tx_command_spw : t_spwc_codec_data_tx_command; + signal s_spw_codec_err_inj_command_spw : t_spwc_codec_err_inj_command; - -- Spacewire Error Injection Controller Signals - signal s_spw_errinj_controller_control : t_spwc_errinj_controller_control; - signal s_spw_errinj_controller_status : t_spwc_errinj_controller_status; + -- Spacewire Error Injection Controller Signals + signal s_spw_errinj_controller_control : t_spwc_errinj_controller_control; + signal s_spw_errinj_controller_status : t_spwc_errinj_controller_status; - -- SpaceWire Codec Data-Strobe Signals - signal s_spw_codec_ds_encoding_rx : t_spwc_codec_ds_encoding_rx; - signal s_spw_codec_ds_encoding_tx : t_spwc_codec_ds_encoding_tx; + -- SpaceWire Codec Data-Strobe Signals + signal s_spw_codec_ds_encoding_rx : t_spwc_codec_ds_encoding_rx; + signal s_spw_codec_ds_encoding_tx : t_spwc_codec_ds_encoding_tx; - -- SpaceWire LVDS Data-Strobe Signals - signal s_spw_logical_data_in : std_logic; - signal s_spw_logical_strobe_in : std_logic; - signal s_spw_logical_data_out : std_logic; - signal s_spw_logical_strobe_out : std_logic; + -- SpaceWire LVDS Data-Strobe Signals + signal s_spw_logical_data_in : std_logic; + signal s_spw_logical_strobe_in : std_logic; + signal s_spw_logical_data_out : std_logic; + signal s_spw_logical_strobe_out : std_logic; - -- SpaceWire Leds Controller Signals - signal s_spw_leds_control : t_spwc_spw_leds_control; + -- SpaceWire Leds Controller Signals + signal s_spw_leds_control : t_spwc_spw_leds_control; begin - -- Entities Instantiation -- - - -- SpaceWire Codec Clock Domain Synchronization Instantiation - spwc_clk_synchronization_top_inst : entity work.spwc_clk_synchronization_top - port map( - clk_avs_i => a_avs_clock, - clk_spw_i => a_spw_clock, - rst_i => a_reset, - spw_codec_link_command_avs_i.autostart => spw_link_command_autostart_i, - spw_codec_link_command_avs_i.linkstart => spw_link_command_linkstart_i, - spw_codec_link_command_avs_i.linkdis => spw_link_command_linkdis_i, - spw_codec_link_command_avs_i.txdivcnt => spw_link_command_txdivcnt_i, - spw_codec_timecode_tx_avs_i.tick_in => spw_timecode_tx_tick_in_i, - spw_codec_timecode_tx_avs_i.ctrl_in => spw_timecode_tx_ctrl_in_i, - spw_codec_timecode_tx_avs_i.time_in => spw_timecode_tx_time_in_i, - spw_codec_data_rx_command_avs_i.rxread => spw_data_rx_command_rxread_i, - spw_codec_data_tx_command_avs_i.txwrite => spw_data_tx_command_txwrite_i, - spw_codec_data_tx_command_avs_i.txflag => spw_data_tx_command_txflag_i, - spw_codec_data_tx_command_avs_i.txdata => spw_data_tx_command_txdata_i, - spw_errinj_ctrl_control_avs_i.start_errinj => spw_errinj_ctrl_start_errinj_i, - spw_errinj_ctrl_control_avs_i.reset_errinj => spw_errinj_ctrl_reset_errinj_i, - spw_errinj_ctrl_control_avs_i.errinj_code => spw_errinj_ctrl_errinj_code_i, - spw_codec_link_status_spw_i => s_spw_codec_link_status_spw, - spw_codec_link_error_spw_i => s_spw_codec_link_error_spw, - spw_codec_timecode_rx_spw_i => s_spw_codec_timecode_rx_spw, - spw_codec_data_rx_status_spw_i => s_spw_codec_data_rx_status_spw, - spw_codec_data_tx_status_spw_i => s_spw_codec_data_tx_status_spw, - spw_errinj_ctrl_status_spw_i => s_spw_errinj_controller_status, - spw_codec_link_status_avs_o.started => spw_link_status_started_o, - spw_codec_link_status_avs_o.connecting => spw_link_status_connecting_o, - spw_codec_link_status_avs_o.running => spw_link_status_running_o, - spw_codec_link_error_avs_o.errdisc => spw_link_error_errdisc_o, - spw_codec_link_error_avs_o.errpar => spw_link_error_errpar_o, - spw_codec_link_error_avs_o.erresc => spw_link_error_erresc_o, - spw_codec_link_error_avs_o.errcred => spw_link_error_errcred_o, - spw_codec_timecode_rx_avs_o.tick_out => spw_timecode_rx_tick_out_o, - spw_codec_timecode_rx_avs_o.ctrl_out => spw_timecode_rx_ctrl_out_o, - spw_codec_timecode_rx_avs_o.time_out => spw_timecode_rx_time_out_o, - spw_codec_data_rx_status_avs_o.rxvalid => spw_data_rx_status_rxvalid_o, - spw_codec_data_rx_status_avs_o.rxhalff => spw_data_rx_status_rxhalff_o, - spw_codec_data_rx_status_avs_o.rxflag => spw_data_rx_status_rxflag_o, - spw_codec_data_rx_status_avs_o.rxdata => spw_data_rx_status_rxdata_o, - spw_codec_data_tx_status_avs_o.txrdy => spw_data_tx_status_txrdy_o, - spw_codec_data_tx_status_avs_o.txhalff => spw_data_tx_status_txhalff_o, - spw_errinj_ctrl_status_avs_o.errinj_busy => spw_errinj_ctrl_errinj_busy_o, - spw_errinj_ctrl_status_avs_o.errinj_ready => spw_errinj_ctrl_errinj_ready_o, - spw_codec_link_command_spw_o => s_spw_codec_link_command_spw, - spw_codec_timecode_tx_spw_o => s_spw_codec_timecode_tx_spw, - spw_codec_data_rx_command_spw_o => s_spw_codec_data_rx_command_spw, - spw_codec_data_tx_command_spw_o => s_spw_codec_data_tx_command_spw, - spw_errinj_ctrl_control_spw_o => s_spw_errinj_controller_control - ); - - -- SpaceWire Error Injection Controller Instantiation - spwc_errinj_controller_ent_inst : entity work.spwc_errinj_controller_ent - port map( - clk_i => a_spw_clock, - rst_i => a_reset, - errinj_controller_control_i => s_spw_errinj_controller_control, - spw_codec_link_status_i => s_spw_codec_link_status_spw, - spw_codec_err_inj_status_i => s_spw_codec_err_inj_status_spw, - errinj_controller_status_o => s_spw_errinj_controller_status, - spw_codec_err_inj_command_o => s_spw_codec_err_inj_command_spw - ); - - -- SpaceWire Codec Instantiation - spwc_codec_ent_inst : entity work.spwc_codec_ent - port map( - clk_spw_i => a_spw_clock, - rst_i => a_reset, - spw_codec_link_command_i => s_spw_codec_link_command_spw, - spw_codec_ds_encoding_rx_i => s_spw_codec_ds_encoding_rx, - spw_codec_timecode_tx_i => s_spw_codec_timecode_tx_spw, - spw_codec_data_rx_command_i => s_spw_codec_data_rx_command_spw, - spw_codec_data_tx_command_i => s_spw_codec_data_tx_command_spw, - spw_codec_err_inj_command_i => s_spw_codec_err_inj_command_spw, - spw_codec_link_status_o => s_spw_codec_link_status_spw, - spw_codec_ds_encoding_tx_o => s_spw_codec_ds_encoding_tx, - spw_codec_link_error_o => s_spw_codec_link_error_spw, - spw_codec_timecode_rx_o => s_spw_codec_timecode_rx_spw, - spw_codec_data_rx_status_o => s_spw_codec_data_rx_status_spw, - spw_codec_data_tx_status_o => s_spw_codec_data_tx_status_spw, - spw_codec_err_inj_status_o => s_spw_codec_err_inj_status_spw - ); - - -- SpaceWire Data-Strobe Testbench Generate - g_spwc_ds_testbench : if (g_SPWC_TESTBENCH_MODE = '1') generate - - s_spw_logical_data_in <= spw_lvds_p_data_in_i; - s_spw_logical_strobe_in <= spw_lvds_p_strobe_in_i; - spw_lvds_p_data_out_o <= s_spw_logical_data_out; - spw_lvds_p_strobe_out_o <= s_spw_logical_strobe_out; - spw_lvds_n_data_out_o <= '0'; - spw_lvds_n_strobe_out_o <= '0'; - - end generate g_spwc_ds_testbench; - - -- SpaceWire Data-Strobe ALTIOBUF Generate - g_spwc_ds_altiobuff : if (g_SPWC_TESTBENCH_MODE = '0') generate - - -- SpaceWire Data-Strobe Rx Diferential Inputs ALTIOBUF Instantiation - spwc_spw_rx_altiobuf_inst : entity work.spwc_spw_rx_altiobuf - port map( - datain(0) => spw_lvds_p_data_in_i, - datain(1) => spw_lvds_p_strobe_in_i, - datain_b(0) => spw_lvds_n_data_in_i, - datain_b(1) => spw_lvds_n_strobe_in_i, - dataout(0) => s_spw_logical_data_in, - dataout(1) => s_spw_logical_strobe_in - ); - - -- SpaceWire Data-Strobe Tx Diferential Outputs ALTIOBUF Instantiation - spwc_spw_tx_altiobuf_inst : entity work.spwc_spw_tx_altiobuf - port map( - datain(0) => s_spw_logical_data_out, - datain(1) => s_spw_logical_strobe_out, - dataout(0) => spw_lvds_p_data_out_o, - dataout(1) => spw_lvds_p_strobe_out_o, - dataout_b(0) => spw_lvds_n_data_out_o, - dataout_b(1) => spw_lvds_n_strobe_out_o - ); - - end generate g_spwc_ds_altiobuff; - - -- SpaceWire LEDs Controller Instantiation - spwc_leds_controller_ent_inst : entity work.spwc_leds_controller_ent - port map( - clk_i => a_spw_clock, - rst_i => a_reset, - leds_channel_status_i.link_status_running => s_spw_codec_link_status_spw.running, - leds_channel_status_i.data_rx_command_rxread => s_spw_codec_data_rx_command_spw.rxread, - leds_channel_status_i.data_tx_command_txwrite => s_spw_codec_data_tx_command_spw.txwrite, - leds_control_o => s_spw_leds_control - ); - - -- SpaceWire LEDs Outputs ALTIOBUF Instantiation - spwc_leds_out_altiobuf_inst : entity work.spwc_leds_out_altiobuf - port map( - datain(1) => s_spw_leds_control.red_status_led, - datain(0) => s_spw_leds_control.green_status_led, - dataout(1) => spw_red_status_led_o, - dataout(0) => spw_green_status_led_o - ); - - -- Signals Assignments -- - - -- Spacewire Data-Strobe Input Signals Assignments - s_spw_codec_ds_encoding_rx.spw_di <= ('0') when (a_reset = '1') - else (s_spw_logical_data_in) when (spw_rx_enable_i = '1') - else ('0'); - s_spw_codec_ds_encoding_rx.spw_si <= ('0') when (a_reset = '1') - else (s_spw_logical_strobe_in) when (spw_rx_enable_i = '1') - else ('0'); - - -- Spacewire Data-Strobe Output Signals Assignments - s_spw_logical_data_out <= ('0') when (a_reset = '1') - else (s_spw_codec_ds_encoding_tx.spw_do) when (spw_tx_enable_i = '1') - else ('0'); - s_spw_logical_strobe_out <= ('0') when (a_reset = '1') - else (s_spw_codec_ds_encoding_tx.spw_so) when (spw_tx_enable_i = '1') - else ('0'); + -- Entities Instantiation -- + + -- SpaceWire Codec Clock Domain Synchronization Instantiation + spwc_clk_synchronization_top_inst : entity work.spwc_clk_synchronization_top + port map( + clk_avs_i => a_avs_clock, + clk_spw_i => a_spw_clock, + rst_i => a_reset, + spw_codec_link_command_avs_i.autostart => spw_link_command_autostart_i, + spw_codec_link_command_avs_i.linkstart => spw_link_command_linkstart_i, + spw_codec_link_command_avs_i.linkdis => spw_link_command_linkdis_i, + spw_codec_link_command_avs_i.txdivcnt => spw_link_command_txdivcnt_i, + spw_codec_timecode_tx_avs_i.tick_in => spw_timecode_tx_tick_in_i, + spw_codec_timecode_tx_avs_i.ctrl_in => spw_timecode_tx_ctrl_in_i, + spw_codec_timecode_tx_avs_i.time_in => spw_timecode_tx_time_in_i, + spw_codec_data_rx_command_avs_i.rxread => spw_data_rx_command_rxread_i, + spw_codec_data_tx_command_avs_i.txwrite => spw_data_tx_command_txwrite_i, + spw_codec_data_tx_command_avs_i.txflag => spw_data_tx_command_txflag_i, + spw_codec_data_tx_command_avs_i.txdata => spw_data_tx_command_txdata_i, + spw_errinj_ctrl_control_avs_i.start_errinj => spw_errinj_ctrl_start_errinj_i, + spw_errinj_ctrl_control_avs_i.reset_errinj => spw_errinj_ctrl_reset_errinj_i, + spw_errinj_ctrl_control_avs_i.errinj_code => spw_errinj_ctrl_errinj_code_i, + spw_codec_link_status_spw_i => s_spw_codec_link_status_spw, + spw_codec_link_error_spw_i => s_spw_codec_link_error_spw, + spw_codec_timecode_rx_spw_i => s_spw_codec_timecode_rx_spw, + spw_codec_data_rx_status_spw_i => s_spw_codec_data_rx_status_spw, + spw_codec_data_tx_status_spw_i => s_spw_codec_data_tx_status_spw, + spw_errinj_ctrl_status_spw_i => s_spw_errinj_controller_status, + spw_codec_link_status_avs_o.started => spw_link_status_started_o, + spw_codec_link_status_avs_o.connecting => spw_link_status_connecting_o, + spw_codec_link_status_avs_o.running => spw_link_status_running_o, + spw_codec_link_error_avs_o.errdisc => spw_link_error_errdisc_o, + spw_codec_link_error_avs_o.errpar => spw_link_error_errpar_o, + spw_codec_link_error_avs_o.erresc => spw_link_error_erresc_o, + spw_codec_link_error_avs_o.errcred => spw_link_error_errcred_o, + spw_codec_timecode_rx_avs_o.tick_out => spw_timecode_rx_tick_out_o, + spw_codec_timecode_rx_avs_o.ctrl_out => spw_timecode_rx_ctrl_out_o, + spw_codec_timecode_rx_avs_o.time_out => spw_timecode_rx_time_out_o, + spw_codec_data_rx_status_avs_o.rxvalid => spw_data_rx_status_rxvalid_o, + spw_codec_data_rx_status_avs_o.rxhalff => spw_data_rx_status_rxhalff_o, + spw_codec_data_rx_status_avs_o.rxflag => spw_data_rx_status_rxflag_o, + spw_codec_data_rx_status_avs_o.rxdata => spw_data_rx_status_rxdata_o, + spw_codec_data_tx_status_avs_o.txrdy => spw_data_tx_status_txrdy_o, + spw_codec_data_tx_status_avs_o.txhalff => spw_data_tx_status_txhalff_o, + spw_errinj_ctrl_status_avs_o.errinj_busy => spw_errinj_ctrl_errinj_busy_o, + spw_errinj_ctrl_status_avs_o.errinj_ready => spw_errinj_ctrl_errinj_ready_o, + spw_codec_link_command_spw_o => s_spw_codec_link_command_spw, + spw_codec_timecode_tx_spw_o => s_spw_codec_timecode_tx_spw, + spw_codec_data_rx_command_spw_o => s_spw_codec_data_rx_command_spw, + spw_codec_data_tx_command_spw_o => s_spw_codec_data_tx_command_spw, + spw_errinj_ctrl_control_spw_o => s_spw_errinj_controller_control + ); + + -- SpaceWire Error Injection Controller Instantiation + spwc_errinj_controller_ent_inst : entity work.spwc_errinj_controller_ent + port map( + clk_i => a_spw_clock, + rst_i => a_reset, + errinj_controller_control_i => s_spw_errinj_controller_control, + spw_codec_link_status_i => s_spw_codec_link_status_spw, + spw_codec_err_inj_status_i => s_spw_codec_err_inj_status_spw, + errinj_controller_status_o => s_spw_errinj_controller_status, + spw_codec_err_inj_command_o => s_spw_codec_err_inj_command_spw + ); + + -- SpaceWire Codec Instantiation + spwc_codec_ent_inst : entity work.spwc_codec_ent + port map( + clk_spw_i => a_spw_clock, + rst_i => a_reset, + spw_codec_link_command_i => s_spw_codec_link_command_spw, + spw_codec_ds_encoding_rx_i => s_spw_codec_ds_encoding_rx, + spw_codec_timecode_tx_i => s_spw_codec_timecode_tx_spw, + spw_codec_data_rx_command_i => s_spw_codec_data_rx_command_spw, + spw_codec_data_tx_command_i => s_spw_codec_data_tx_command_spw, + spw_codec_err_inj_command_i => s_spw_codec_err_inj_command_spw, + spw_codec_link_status_o => s_spw_codec_link_status_spw, + spw_codec_ds_encoding_tx_o => s_spw_codec_ds_encoding_tx, + spw_codec_link_error_o => s_spw_codec_link_error_spw, + spw_codec_timecode_rx_o => s_spw_codec_timecode_rx_spw, + spw_codec_data_rx_status_o => s_spw_codec_data_rx_status_spw, + spw_codec_data_tx_status_o => s_spw_codec_data_tx_status_spw, + spw_codec_err_inj_status_o => s_spw_codec_err_inj_status_spw + ); + + -- SpaceWire Data-Strobe Testbench Generate + g_spwc_ds_testbench : if (g_SPWC_TESTBENCH_MODE = '1') generate + + s_spw_logical_data_in <= spw_lvds_p_data_in_i; + s_spw_logical_strobe_in <= spw_lvds_p_strobe_in_i; + spw_lvds_p_data_out_o <= s_spw_logical_data_out; + spw_lvds_p_strobe_out_o <= s_spw_logical_strobe_out; + spw_lvds_n_data_out_o <= '0'; + spw_lvds_n_strobe_out_o <= '0'; + + end generate g_spwc_ds_testbench; + + -- SpaceWire Data-Strobe ALTIOBUF Generate + g_spwc_ds_altiobuff : if (g_SPWC_TESTBENCH_MODE = '0') generate + + -- SpaceWire Data-Strobe Rx Diferential Inputs ALTIOBUF Instantiation + spwc_spw_rx_altiobuf_inst : entity work.spwc_spw_rx_altiobuf + port map( + datain(0) => spw_lvds_p_data_in_i, + datain(1) => spw_lvds_p_strobe_in_i, + datain_b(0) => spw_lvds_n_data_in_i, + datain_b(1) => spw_lvds_n_strobe_in_i, + dataout(0) => s_spw_logical_data_in, + dataout(1) => s_spw_logical_strobe_in + ); + + -- SpaceWire Data-Strobe Tx Diferential Outputs ALTIOBUF Instantiation + spwc_spw_tx_altiobuf_inst : entity work.spwc_spw_tx_altiobuf + port map( + datain(0) => s_spw_logical_data_out, + datain(1) => s_spw_logical_strobe_out, + dataout(0) => spw_lvds_p_data_out_o, + dataout(1) => spw_lvds_p_strobe_out_o, + dataout_b(0) => spw_lvds_n_data_out_o, + dataout_b(1) => spw_lvds_n_strobe_out_o + ); + + end generate g_spwc_ds_altiobuff; + + -- SpaceWire LEDs Controller Instantiation + spwc_leds_controller_ent_inst : entity work.spwc_leds_controller_ent + port map( + clk_i => a_spw_clock, + rst_i => a_reset, + leds_channel_status_i.link_status_running => s_spw_codec_link_status_spw.running, + leds_channel_status_i.data_rx_command_rxread => s_spw_codec_data_rx_command_spw.rxread, + leds_channel_status_i.data_tx_command_txwrite => s_spw_codec_data_tx_command_spw.txwrite, + leds_control_o => s_spw_leds_control + ); + + -- SpaceWire LEDs Outputs ALTIOBUF Instantiation + spwc_leds_out_altiobuf_inst : entity work.spwc_leds_out_altiobuf + port map( + datain(1) => s_spw_leds_control.red_status_led, + datain(0) => s_spw_leds_control.green_status_led, + dataout(1) => spw_red_status_led_o, + dataout(0) => spw_green_status_led_o + ); + + -- Signals Assignments -- + + -- Spacewire Data-Strobe Input Signals Assignments + s_spw_codec_ds_encoding_rx.spw_di <= ('0') when (a_reset = '1') + else (s_spw_logical_data_in) when ((spw_rx_enable_i = '1') and (spw_link_command_enable_i = '1')) + else ('0'); + s_spw_codec_ds_encoding_rx.spw_si <= ('0') when (a_reset = '1') + else (s_spw_logical_strobe_in) when ((spw_rx_enable_i = '1') and (spw_link_command_enable_i = '1')) + else ('0'); + + -- Spacewire Data-Strobe Output Signals Assignments + s_spw_logical_data_out <= ('0') when (a_reset = '1') + else (s_spw_codec_ds_encoding_tx.spw_do) when ((spw_tx_enable_i = '1') and (spw_link_command_enable_i = '1')) + else ('0'); + s_spw_logical_strobe_out <= ('0') when (a_reset = '1') + else (s_spw_codec_ds_encoding_tx.spw_so) when ((spw_tx_enable_i = '1') and (spw_link_command_enable_i = '1')) + else ('0'); end architecture rtl; -- of spwc_spacewire_channel_top diff --git a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel_hw.tcl b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel_hw.tcl index 783f776c..302b68ed 100644 --- a/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel_hw.tcl +++ b/G3U_HW_V02_2GB/Hardware_Project/Avalon/SpaceWire_Channel_hw.tcl @@ -4,7 +4,7 @@ # -# SpaceWire_Channel "SpaceWire_Channel" v1.4 +# SpaceWire_Channel "SpaceWire_Channel" v1.5 # rfranca 2020.06.30.17:45:51 # # @@ -20,7 +20,7 @@ package require -exact qsys 16.1 # set_module_property DESCRIPTION "" set_module_property NAME SpaceWire_Channel -set_module_property VERSION 1.4 +set_module_property VERSION 1.5 set_module_property INTERNAL false set_module_property OPAQUE_ADDRESS_MAP true set_module_property AUTHOR rfranca @@ -287,6 +287,7 @@ set_interface_property conduit_end_spacewire_channel PORT_NAME_MAP "" set_interface_property conduit_end_spacewire_channel CMSIS_SVD_VARIABLES "" set_interface_property conduit_end_spacewire_channel SVD_ADDRESS_GROUP "" +add_interface_port conduit_end_spacewire_channel spw_link_command_enable_i spw_link_command_enable_signal Input 1 add_interface_port conduit_end_spacewire_channel spw_link_command_autostart_i spw_link_command_autostart_signal Input 1 add_interface_port conduit_end_spacewire_channel spw_link_command_linkstart_i spw_link_command_linkstart_signal Input 1 add_interface_port conduit_end_spacewire_channel spw_link_command_linkdis_i spw_link_command_linkdis_signal Input 1 diff --git a/G3U_HW_V02_2GB/Qsys_Project/software/Simucam_R0_UART/simucam_main.c b/G3U_HW_V02_2GB/Qsys_Project/software/Simucam_R0_UART/simucam_main.c index b763e0c5..6867c77c 100644 --- a/G3U_HW_V02_2GB/Qsys_Project/software/Simucam_R0_UART/simucam_main.c +++ b/G3U_HW_V02_2GB/Qsys_Project/software/Simucam_R0_UART/simucam_main.c @@ -555,7 +555,7 @@ int main(void) fprintf(fp, "Failure to initialize SimuCam Critical HW!\n"); fprintf(fp, "Initialization attempt %lu, ", uliRstcGetResetCounter()); #endif - /* Need to reset 2 times (3 tries) before locking the SimuCam */ + /* Need to reset 2 times (3 tries) before halting the SimuCam */ if (3 > uliRstcGetResetCounter()) { /* There are more initialization tries to make */ #if DEBUG_ON @@ -566,7 +566,7 @@ int main(void) /* No more tries, lock the SimuCam */ #if DEBUG_ON - fprintf(fp, "SimuCam will be locked now!\n"); + fprintf(fp, "SimuCam will be halted now!\n"); #endif vFailTestCriticasParts(); }