|
例說FPGA連載41:DDR控制器集成與讀寫測試之DDR2 IP核接口描述 特權同學,版權所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1c0nf6Qc
如圖4.13所示,這是DDR2 IP核與外部接口的功能框圖。
圖4.13 DDR IP核功能框圖 ● 圖左側為用戶邏輯(User logic),它與DDR2 IP核的接口通常命名為“local_*”;圖右側為FPGA外部的DDR2芯片,它與DDR2 IP核的接口通常命名為“mem_*”。 ● DDR2 IP核內部分兩個部分,即圖示的“ALTMEMPHY”和“存儲控制器(Memory Controller)”,正如圖中所示,它們各有分工。存儲控制器產生DDR2芯片實際讀寫操作需要的時序;ALTMEMPHY有兩部分功能,一個功能是對DDR2做自動校正(Aoto-Calibration),另一個功能是實現DDR2所需的物理接口。 ● DDR2的自動校正是在初始化階段進行的,此時ALTMEMPHY斷開用戶邏輯和存儲控制器之間的接口,ALTMEMPHY產生存儲控制器所需的DDR2讀寫控制,直到校正完成。在初始化過后,ALTMEMPHY將不再需要控制存儲控制器,而是一直保持用戶邏輯和存儲控制器的連通。 ● 另外,圖中未明確示意,實際上這個DDR2 IP核還包括了一個PLL,用于時鐘的管理。 現在我們來看ddr2_controller模塊例化的接口。這里可以分為三大類,第一類為系統類接口,主要是一些系統或PLL的復位、時鐘等接口;第二類為帶“local_*”的接口,是DDR2 IP核與用戶邏輯間的接口;第三類為帶“mem_*”的接口,是DDR2 IP核與FPGA外部DDR2芯片的接口。 對于第一類接口,功能描述如表4.1所示。 表4.1 DDR2 IP核系統接口列表
注:方向是相對DDR2 IP核而言的。 對于第二類帶“local_*”的用戶邏輯接口,功能描述如表4.2所示。 表4.2 DDR2 IP核本地接口列表
注:方向是相對DDR2 IP核而言的。 第三類是帶“mem_*”的DDR2芯片接口,前面已經給出基本的功能描述,這里不再贅述。DDR2的在我們設計中例化的接口映射代碼如下所示。 //////////////////////////////////////////////////// //DDR2 controller and phy IP core ddr2_controller ddr2_controller_inst ( .local_address(local_address), .local_write_req(local_write_req), .local_read_req(local_read_req), .local_burstbegin(local_read_req | local_write_req), .local_wdata(local_wdata), .local_be(8'hff), .local_size(3'd1), .global_reset_n(sys_rst_n), .pll_ref_clk(clk_100m), .soft_reset_n(1'b1), .local_ready(local_ready), .local_rdata(local_rdata), .local_rdata_valid(local_rdata_valid), .local_refresh_ack( ), .local_init_done(local_init_done), .reset_phy_clk_n(reset_phy_clk_n), .mem_odt(mem_odt), .mem_cs_n(mem_cs_n), .mem_cke(mem_cke), .mem_addr(mem_addr), .mem_ba(mem_ba), .mem_ras_n(mem_ras_n), .mem_cas_n(mem_cas_n), .mem_we_n(mem_we_n), .mem_dm(mem_dm), .phy_clk(phy_clk), .aux_full_rate_clk( ), .aux_half_rate_clk( ), .reset_request_n( ), .mem_clk(mem_clk), .mem_clk_n(mem_clk_n), .mem_dq(mem_dq), .mem_dqs(mem_dqs) ); |