Hi,Rhoads,it's me again
I am reading your code eth_dma.vhd.
1. Line 110 : "send_level <= data_w(8 downto 0);"
What's the meaning of send_level? Does it mean the words waiting to transmit?
If yes, do we need to tell eth_dma the numbers of words waiting to send using C or assembly language?
2. I noticed that even we send data,which only need to read data from DDR, we still do this "data_write <= data_w;" (line 172), why?
3. Why you use address 0x13ff0000 and 0x13fe0000, any special consideration?
It seems that assignment symbol are blocked by opencores...
About question 1: I found that in ethernet.c line 194 : MemoryWrite(ETHERNET_REG, length). This is for send_level's assignment, right?
ETHERNET_REG 0x20000070 (Ethernet transmit count)
About question 1: I found that in ethernet.c line 194 : MemoryWrite(ETHERNET_REG, length). This is for send_level's assignment, right?
ETHERNET_REG 0x20000070 (Ethernet transmit count)
Yes, writing to address ETHERNET_REG will tell the Ethernet DMA engine to transfer the requested number of 32-bit words (send_level) to the Ethernet PHY starting at address ETHERNET_TRANSFER. The DMA engine will increment the send_words register which also serves as the address offset until send_words equals send_level. The address ETHERNET_RECEIVE is where the Ethernet DMA engine transfers the received Ethernet packets.