- renamed signal names

- receiver commands:
  packet request : sets fill pointer to next packet from queue
  packet free       : removes packet from queue
- added pkt_done flag (TX idle)
- transmitter commands:
  packet alloc       : request ram for packet
  packet commit   : sends packet

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@830 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2010-03-26 09:45:44 +00:00
parent 38a95c85dd
commit 2989bb688f
3 changed files with 165 additions and 51 deletions
+14 -9
View File
@@ -74,8 +74,10 @@ registers_write:
begin
if rising_edge(CLK_I) then
tx_din_vld <= '0';
tx_ctrl_in.tx_req_en <= '0';
rx_ctrl_in.uncommit <= '0';
tx_ctrl_in.pkt_alloc_en <= '0';
tx_ctrl_in.pkt_commit_en <= '0';
rx_ctrl_in.pkt_free_en <= '0';
rx_ctrl_in.pkt_req_en <= '0';
if RST_I = '1' then
rx_int_en <= '0';
tx_int_en <= '0';
@@ -86,8 +88,10 @@ registers_write:
when "0000" =>
tx_ctrl_in.tx_er <= DAT_I(31);
tx_ctrl_in.tx_req_en <= DAT_I(17);
rx_ctrl_in.uncommit <= DAT_I(16);
tx_ctrl_in.pkt_alloc_en <= DAT_I(25);
tx_ctrl_in.pkt_commit_en <= DAT_I(24);
rx_ctrl_in.pkt_free_en <= DAT_I(17);
rx_ctrl_in.pkt_req_en <= DAT_I(16);
tx_int_en <= DAT_I(5);
rx_int_en <= DAT_I(4);
@@ -108,7 +112,7 @@ registers_read:
process(CLK_I)
begin
if rising_edge(CLK_I) then
rx_ctrl_in.data_read <= '0';
rx_ctrl_in.pkt_read_en <= '0';
ACK_O <= rx_dout_vld and CYC_I and not WE_I;
DAT_O <= rx_dout;
if (STB_I and CYC_I) = '1' and WE_I = '0' then
@@ -121,9 +125,10 @@ registers_read:
DAT_O(30) <= mii_rx_er;
DAT_O(29) <= mii_col;
DAT_O(28) <= mii_crs;
DAT_O(18) <= rx_ctrl_out.ram_ovf;
DAT_O(17) <= tx_ctrl_out.tx_req;
DAT_O(16) <= rx_ctrl_out.rx_vld;
DAT_O(25) <= tx_ctrl_out.pkt_alloc_req;
DAT_O(24) <= tx_ctrl_out.pkt_done;
DAT_O(23) <= rx_ctrl_out.pkt_lost;
DAT_O(16) <= rx_ctrl_out.pkt_avail;
DAT_O(5) <= tx_int_en;
DAT_O(4) <= rx_int_en;
when "0001" =>
@@ -131,7 +136,7 @@ registers_read:
DAT_O <= tx_ctrl_out.tx_size & rx_ctrl_out.rx_size;
when "0010" =>
rx_ctrl_in.data_read <= '1';
rx_ctrl_in.pkt_read_en <= '1';
when others => null;
end case;