OpenCores
URL https://opencores.org/ocsvn/udp_ip_stack/udp_ip_stack/trunk

Subversion Repositories udp_ip_stack

[/] [udp_ip_stack/] [trunk/] [rtl/] [vhdl/] [ml605/] [UDP_integration_example.vhd] - Diff between revs 2 and 6

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 2 Rev 6
Line 139... Line 139...
        signal set_tx_start                                     : set_clr_type;
        signal set_tx_start                                     : set_clr_type;
        signal set_last                                         : std_logic;
        signal set_last                                         : std_logic;
        signal set_tx_started                           : set_clr_type;
        signal set_tx_started                           : set_clr_type;
        signal set_tx_fin                                               : set_clr_type;
        signal set_tx_fin                                               : set_clr_type;
        signal set_udp_rx_start_reg             : set_clr_type;
        signal set_udp_rx_start_reg             : set_clr_type;
 
        signal first_byte_rx                                    : STD_LOGIC_VECTOR(7 downto 0);
 
 
begin
begin
 
 
        process (
        process (
                our_ip, our_mac, udp_rx_int, udp_tx_start_int, udp_rx_start_int, ip_rx_hdr_int, udp_rx_start_reg,
                our_ip, our_mac, udp_rx_int, udp_tx_start_int, udp_rx_start_int, ip_rx_hdr_int, udp_rx_start_reg,
Line 169... Line 170...
                display (7 downto 4) <= ip_pkt_count_int (3 downto 0);
                display (7 downto 4) <= ip_pkt_count_int (3 downto 0);
                display (3 downto 0) <= arp_pkt_count_int (3 downto 0);
                display (3 downto 0) <= arp_pkt_count_int (3 downto 0);
 
 
        end process;
        end process;
 
 
        -- AUTO TX process - on receipt of any UDP pkt, send a response
        -- AUTO TX process - on receipt of any UDP pkt, send a response,
 
 
        -- TX response process - COMB
        -- TX response process - COMB
   tx_proc_combinatorial: process(
   tx_proc_combinatorial: process(
                -- inputs
                -- inputs
                udp_rx_start_int, udp_tx_data_out_ready_int, udp_tx_int.data.data_out_valid, PBTX, reset_leds,
                udp_rx_start_int, udp_tx_data_out_ready_int, udp_tx_int.data.data_out_valid,
 
                udp_rx_int, PBTX, reset_leds,
                -- state
                -- state
                state, count, tx_hdr, tx_start_reg, tx_started_reg, tx_fin_reg, udp_rx_start_reg,
                state, count, tx_hdr, tx_start_reg, tx_started_reg, tx_fin_reg, udp_rx_start_reg,
                -- controls
                -- controls
                next_state, set_state, set_count, set_hdr, set_tx_start, set_last,
                next_state, set_state, set_count, set_hdr, set_tx_start, set_last,
                set_tx_started, set_tx_fin, set_udp_rx_start_reg
                set_tx_started, set_tx_fin, set_udp_rx_start_reg, first_byte_rx
                )
                )
   begin
   begin
                -- set output_followers
                -- set output_followers
                udp_tx_int.hdr <= tx_hdr;
                udp_tx_int.hdr <= tx_hdr;
                udp_tx_int.data.data_out_last <= set_last;
                udp_tx_int.data.data_out_last <= set_last;
Line 197... Line 199...
                set_tx_start <= HOLD;
                set_tx_start <= HOLD;
                set_last <= '0';
                set_last <= '0';
                set_tx_started <= HOLD;
                set_tx_started <= HOLD;
                set_tx_fin <= HOLD;
                set_tx_fin <= HOLD;
                set_udp_rx_start_reg <= HOLD;
                set_udp_rx_start_reg <= HOLD;
 
                first_byte_rx <= (others => '0');
 
 
                -- FSM
                -- FSM
                case state is
                case state is
 
 
                        when IDLE =>
                        when IDLE =>
                                udp_tx_int.data.data_out <= (others => '0');
                                udp_tx_int.data.data_out <= (others => '0');
                                udp_tx_int.data.data_out_valid <= '0';
                                udp_tx_int.data.data_out_valid <= '0';
                                if udp_rx_start_int = '1' or PBTX = '1' then
                                if udp_rx_start_int = '1' or PBTX = '1' then
 
                                        if udp_rx_start_int = '1' then
 
                                                first_byte_rx <= udp_rx_int.data.data_in;
 
                                        else
 
                                                first_byte_rx <= x"00";
 
                                        end if;
                                        set_udp_rx_start_reg <= SET;
                                        set_udp_rx_start_reg <= SET;
                                        set_tx_started <= SET;
                                        set_tx_started <= SET;
                                        set_hdr <= '1';
                                        set_hdr <= '1';
                                        set_tx_start <= SET;
                                        set_tx_start <= SET;
                                        set_tx_fin <= CLR;
                                        set_tx_fin <= CLR;
Line 276... Line 284...
                                        when HOLD =>            count <= count;
                                        when HOLD =>            count <= count;
                                end case;
                                end case;
 
 
                                -- set tx hdr
                                -- set tx hdr
                                if set_hdr = '1' then
                                if set_hdr = '1' then
 
                                        -- if the first byte of the rx pkt is 'B' then send to broadcast, otherwise send to reply IP
 
                                        if first_byte_rx = x"42" then
 
                                                tx_hdr.dst_ip_addr <= IP_BC_ADDR;
 
                                        else
                                        tx_hdr.dst_ip_addr <= udp_rx_int.hdr.src_ip_addr;
                                        tx_hdr.dst_ip_addr <= udp_rx_int.hdr.src_ip_addr;
 
                                        end if;
                                        tx_hdr.dst_port <= udp_rx_int.hdr.src_port;
                                        tx_hdr.dst_port <= udp_rx_int.hdr.src_port;
                                        tx_hdr.src_port <= udp_rx_int.hdr.dst_port;
                                        tx_hdr.src_port <= udp_rx_int.hdr.dst_port;
                                        tx_hdr.data_length <= x"0004";
                                        tx_hdr.data_length <= x"0004";
                                        tx_hdr.checksum <= x"0000";
                                        tx_hdr.checksum <= x"0000";
                                else
                                else

powered by: WebSVN 2.1.0

© copyright 1999-2022 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.