Using the Memory Controller Interface: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
(10 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface. | * The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface. | ||
* Each of the even and odd ports has its request signals and response signals. | * Each of the even and odd ports has its request signals and response signals. | ||
* Refer to section 9.3.3.1 in the PDK for further | * Refer to section 9.3.3.1 in the PDK reference manual for further information. | ||
== Memory Controller Interface Signals == | == Memory Controller Interface Signals == | ||
Line 42: | Line 42: | ||
== Reading from Memory == | == Reading from Memory == | ||
Before requesting any read from the memory, you have to make sure that <code> | * Before requesting any read from the memory, you have to make sure that <code>'''mc'''''i''_rd_rq_stall_* = '0'</code>, where <code>i</code> is the MC interface port number (could be from 0 to 7). | ||
* To request a read from memory, you have to assert the signal <code>'''mc'''''i''_req_ld_*</code> and put the address of the data you want to read on the port <code>'''mc'''''i''_req_vadr_*</code>. | |||
* The <code>'''mc'''''i''_req_size_*<1:0></code> is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word). | |||
* You can get requested data from the <code>'''mc'''''i''_rsp_data_*<63:0></code> bus when the signal <code>'''mc'''''i''_rsp_push_*</code> is asserted. | |||
* The lower 32 bits of <code>'''mc'''''i''_req_wrd_rdctl_*<63:0></code> will be returned as <code>'''mc'''''i''_rsp_rdctl_o<31:0></code>. You should set it while requesting a read and check it in the response to identify your request. | |||
== Writing to Memory == | == Writing to Memory == | ||
* Before requesting any write to the memory, you have to make sure that <code>'''mc'''''i''_wr_rq_stall_* = '0'</code>. | |||
* To request a write to memory, you have to assert the signal <code>'''mc'''''i''_req_st_*</code> and put the address of the data you want to write to on the port <code>'''mc'''''i''_req_vadr_*</code>. | |||
* The <code>'''mc'''''i''_req_size_*<1:0></code> is used to indicate the size as in the read scenario above. | |||
* The data you want to write should goes on <code>'''mc'''''i''_req_wrd_rdctl_*<63:0></code> bus. | |||
== References == | |||
* [[Media:ConveyPDKReferenceManual.pdf | Convey PDK Reference Manual (.pdf)]] - Sections 9.3.3 |
Latest revision as of 00:11, 6 February 2013
Memory Controller Interface functionality
- Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.
- Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.
- The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.
- Each of the even and odd ports has its request signals and response signals.
- Refer to section 9.3.3.1 in the PDK reference manual for further information.
Memory Controller Interface Signals
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix _e
and the signals for the odd port use the suffix _o
Even Port | Odd Port |
---|---|
mc4_req_ld_e | mc4_req_ld_o |
mc4_req_st_e | mc4_req_st_o |
mc4_req_size_e<1:0> | mc4_req_size_o<1:0> |
mc4_req_vadr_e<47:0> | mc4_req_vadr_o<47:0> |
mc4_req_wrd_rdctl_e<63:0> | mc4_req_wrd_rdctl_o<63:0> |
mc4_req_flush_e | mc4_req_flush_o |
mc4_rd_rq_stall_e | mc4_rd_rq_stall_o |
mc4_wr_rq_stall_e | mc4_wr_rq_stall_o |
mc4_rsp_push_e | mc4_rsp_push_o |
mc4_rsp_stall_e | mc4_rsp_stall_o |
mc4_rsp_data_e<63:0> | mc4_rsp_data_o<63:0> |
mc4_rsp_rdctl_e<31:0> | mc4_rsp_rdctl_o<31:0> |
mc4_rsp_flush_cmplt_e | mc4_rsp_flush_cmplt_o |
Reading from Memory
- Before requesting any read from the memory, you have to make sure that
mci_rd_rq_stall_* = '0'
, wherei
is the MC interface port number (could be from 0 to 7). - To request a read from memory, you have to assert the signal
mci_req_ld_*
and put the address of the data you want to read on the portmci_req_vadr_*
. - The
mci_req_size_*<1:0>
is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word). - You can get requested data from the
mci_rsp_data_*<63:0>
bus when the signalmci_rsp_push_*
is asserted. - The lower 32 bits of
mci_req_wrd_rdctl_*<63:0>
will be returned asmci_rsp_rdctl_o<31:0>
. You should set it while requesting a read and check it in the response to identify your request.
Writing to Memory
- Before requesting any write to the memory, you have to make sure that
mci_wr_rq_stall_* = '0'
. - To request a write to memory, you have to assert the signal
mci_req_st_*
and put the address of the data you want to write to on the portmci_req_vadr_*
. - The
mci_req_size_*<1:0>
is used to indicate the size as in the read scenario above. - The data you want to write should goes on
mci_req_wrd_rdctl_*<63:0>
bus.
References
- Convey PDK Reference Manual (.pdf) - Sections 9.3.3