From 175cf3a4f44be3ecb07ace83a0664f7d608fe594 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 22 Sep 2013 10:43:17 +0000 Subject: [PATCH] - put pkt_re outside of record Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ git-svn-id: http://moon:8086/svn/vhdl/trunk@1033 cc03376c-175c-47c8-b038-4cd826a8556b --- lib/emac/sim/tb_emac_top_jb.wdo | 6 +++--- lib/emac/src/emac_rx.vhd | 12 +++++++----- lib/emac/src/emac_top_jb.vhd | 8 ++++---- lib/emac/src/emac_types.vhd | 1 - 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lib/emac/sim/tb_emac_top_jb.wdo b/lib/emac/sim/tb_emac_top_jb.wdo index dd68f73..30d062e 100644 --- a/lib/emac/sim/tb_emac_top_jb.wdo +++ b/lib/emac/sim/tb_emac_top_jb.wdo @@ -56,7 +56,7 @@ add wave -noupdate -format Logic /tb_emac_top_jb/pktgen_en add wave -noupdate -divider RX add wave -noupdate -format Logic /tb_emac_top_jb/inst_emac_top_jb/inst_emac_rx/clk add wave -noupdate -format Logic /tb_emac_top_jb/inst_emac_top_jb/inst_emac_rx/rst -add wave -noupdate -format Logic /tb_emac_top_jb/inst_emac_top_jb/inst_emac_rx/dout_vld +add wave -noupdate -format Logic /tb_emac_top_jb/inst_emac_top_jb/inst_emac_rx/dout_re add wave -noupdate -format Literal -radix hexadecimal /tb_emac_top_jb/inst_emac_top_jb/inst_emac_rx/dout add wave -noupdate -format Literal -radix hexadecimal -expand /tb_emac_top_jb/inst_emac_top_jb/inst_emac_rx/ctrl_in add wave -noupdate -format Literal -radix unsigned -expand /tb_emac_top_jb/inst_emac_top_jb/inst_emac_rx/ctrl_out @@ -190,7 +190,7 @@ add wave -noupdate -format Literal /tb_emac_top_jb/inst_emac_top_jb/inst_emac_tx add wave -noupdate -format Logic /tb_emac_top_jb/inst_emac_top_jb/inst_emac_tx/mem_free_req add wave -noupdate -format Literal /tb_emac_top_jb/inst_emac_top_jb/inst_emac_tx/mem_free_ack TreeUpdate [SetDefaultTree] -WaveRestoreCursors {{Cursor 1} {242561800 ps} 0} {{Cursor 2} {49999967706 ps} 0} {{Cursor 3} {42725669958 ps} 0} {{Cursor 4} {16290550071 ps} 0} {{Cursor 5} {4181100 ps} 0} +WaveRestoreCursors {{Cursor 1} {242561800 ps} 0} {{Cursor 2} {49999967706 ps} 0} {{Cursor 3} {42725669958 ps} 0} {{Cursor 4} {10461869973 ps} 0} {{Cursor 5} {4181100 ps} 0} configure wave -namecolwidth 150 configure wave -valuecolwidth 100 configure wave -justifyvalue left @@ -204,4 +204,4 @@ configure wave -gridperiod 100 configure wave -griddelta 40 configure wave -timeline 1 update -WaveRestoreZoom {0 ps} {52500 us} +WaveRestoreZoom {10461583799 ps} {10462629245 ps} diff --git a/lib/emac/src/emac_rx.vhd b/lib/emac/src/emac_rx.vhd index 0a72063..e121746 100644 --- a/lib/emac/src/emac_rx.vhd +++ b/lib/emac/src/emac_rx.vhd @@ -16,7 +16,7 @@ ENTITY emac_rx IS ( clk : in STD_LOGIC; rst : in STD_LOGIC; - dout_vld : out STD_LOGIC; + dout_re : in STD_LOGIC; dout : out unsigned(31 downto 0); ctrl_in : in rx_ctrl_in_t; ctrl_out : out rx_ctrl_out_t; @@ -47,6 +47,7 @@ ARCHITECTURE behavior OF emac_rx IS signal reset_en : std_logic; signal host_ptr : word_ptr_t; + signal host_ptr_next : word_ptr_t; signal host_ram_limit : word_ptr_t; signal host_ram_base : word_ptr_t; @@ -143,7 +144,7 @@ begin dout <= ram_dout_b; ram_en_b <= '1'; - ram_addr_b <= host_ptr; + ram_addr_b <= host_ptr_next; ram_en_a <= '1'; ram_din_a <= sipo32_dout; @@ -183,15 +184,16 @@ fill_pointer: process(clk) begin if rising_edge(clk) then - dout_vld <= ctrl_in.pkt_read_en; if ctrl_in.pkt_req_en = '1' then host_ptr <= cmd_base_out; - elsif ctrl_in.pkt_read_en = '1' then - host_ptr <= host_ptr + 1; + elsif dout_re = '1' then + host_ptr <= host_ptr_next; end if; end if; end process; + host_ptr_next <= host_ptr + 1 when dout_re = '1' else host_ptr; + ------------------------------------------------------------------ -- Transfer stuff ------------------------------------------------------------------ diff --git a/lib/emac/src/emac_top_jb.vhd b/lib/emac/src/emac_top_jb.vhd index 44c2e8d..cf7c2ec 100644 --- a/lib/emac/src/emac_top_jb.vhd +++ b/lib/emac/src/emac_top_jb.vhd @@ -55,7 +55,7 @@ ARCHITECTURE behavior OF emac_top_jb IS signal rx_ctrl_out : rx_ctrl_out_t; signal rx_dout : unsigned(31 downto 0); - signal rx_dout_vld : std_logic; + signal rx_dout_re : std_logic; signal rx_int_en : std_logic; signal tx_int_en : std_logic; @@ -91,7 +91,7 @@ begin tx_din_vld <= data_write; tx_din <= DAT_I; - rx_ctrl_in.pkt_read_en <= data_read; + rx_dout_re <= data_read; ------------------------------------------------------------------ registers_write: @@ -177,7 +177,7 @@ registers_read: process(CLK_I) begin if rising_edge(CLK_I) then - ACK_O <= rx_dout_vld; + ACK_O <= data_read; DAT_O <= rx_dout; if reg_read = '1' then @@ -266,7 +266,7 @@ inst_emac_rx : entity work.emac_rx ( clk => CLK_I, rst => RST_I, - dout_vld => rx_dout_vld, + dout_re => rx_dout_re, dout => rx_dout, ctrl_in => rx_ctrl_in, ctrl_out => rx_ctrl_out, diff --git a/lib/emac/src/emac_types.vhd b/lib/emac/src/emac_types.vhd index 450d5be..8e10a23 100644 --- a/lib/emac/src/emac_types.vhd +++ b/lib/emac/src/emac_types.vhd @@ -36,7 +36,6 @@ package emac_types is Gbps_en : std_logic; reset : std_logic; fcs_chk_en : std_logic; - pkt_read_en : std_logic; pkt_req_en : std_logic; pkt_free_en : std_logic; mac_addr : mac_addr_t;