本原創(chuàng)教程由深圳市小眼睛科技有限公司創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處
適用于板卡型號(hào):
紫光同創(chuàng)PGL22G開發(fā)平臺(tái)(盤古22K)
一:盤古22K開發(fā)板(紫光同創(chuàng)PGL22G開發(fā)平臺(tái))簡(jiǎn)介
盤古22K開發(fā)板是基于紫光同創(chuàng)Logos系列PGL22G芯片設(shè)計(jì)的一款FPGA開發(fā)板,全面實(shí)現(xiàn)國(guó)產(chǎn)化方案,板載資源豐富,高容量、高帶寬,外圍接口豐富,不僅適用于高校教學(xué),還可以用于實(shí)驗(yàn)項(xiàng)目、項(xiàng)目開發(fā),一板多用,滿足多方位的開發(fā)需求。
二:實(shí)驗(yàn)?zāi)康?/strong>
MES22GP 開發(fā)板上有一片 Micron 的 DDR3(MT41K256M16 TW107:P)內(nèi)存組件,擁有 16bit 位寬的存儲(chǔ)空間(MT41J系列是舊的產(chǎn)品,目前很多型號(hào)已經(jīng)停產(chǎn),后續(xù)替代就是MT41K系列。硬件上的差異是MT41K支持1.35V低電壓,同時(shí)也兼容1.5V電壓,所以可以用MT41K直接替換相應(yīng)型號(hào)的MT41J芯片)。該DDR3 存儲(chǔ)系統(tǒng)直接連接到了 PGL22G 的 Bank L1 及 Bank L2 上。PGL22G的DDR IP為硬核IP,需選擇正確的IP添加。
本次實(shí)驗(yàn)?zāi)康臑樯蒁DR3 IP,實(shí)現(xiàn)DDR3的基于AXI4的簡(jiǎn)單讀寫控制,了解其工作原理和用戶接口,然后通過在線Debugger工具查看寫入和讀出的數(shù)據(jù)是否一致。
?
三:DDR3控制器簡(jiǎn)介
HMIC_H IP 是深圳市紫光同創(chuàng)電子有限公司FPGA 產(chǎn)品中用于實(shí)現(xiàn)對(duì)SDRAM 讀寫而設(shè)計(jì)的IP,通過公司Pango Design Suite 套件(后文簡(jiǎn)稱PDS)中IP Compiler 工具(后文簡(jiǎn)稱IPC)例化生成IP 模塊。
?
HMIC_H IP 系統(tǒng)框圖如下圖所示:
?
HMIC_H IP 包括了DDR Controller、DDR PHY 和 PLL,用戶通過 AXI4 接口實(shí)現(xiàn)數(shù)據(jù)的 讀寫,通過 APB 接口可配置 DDR Controller 內(nèi)部寄存器,PLL 用于產(chǎn)生需要的各種時(shí)鐘。
AXI4 接口:HMIC_H IP 提供三組 AXI4 Host Port:AXI4 Port0(128bit)、AXI4 Port1(64bit)、
AXI4 Port2(64bit)。用戶通過 HMIC_H IP 界面可以選擇使能這三組 AXI4 Port。三組 AXI4 Host Port 均為標(biāo)準(zhǔn) AXI4 接口。
APB 接口:HMIC_H IP 提供一個(gè) APB 配置接口,通過該接口,可配置 DDR Controller 內(nèi)部寄存器。HMIC_H IP 初始化完成后使能該接口。
詳細(xì)的端口說(shuō)明請(qǐng)點(diǎn)擊IP配置界面的View Datasheet查看IP手冊(cè)。
DDR的IP需要手動(dòng)添加,操作流程請(qǐng)查閱文件目錄1_Demo_document/工具使用篇的《03_IP核安裝與查看用戶指南》。
?
DDR3 IP例化流程簡(jiǎn)述
打開IPC 軟件,進(jìn)入 IP 選擇界面,如下圖所示,選取 System/DDR/Hard 目錄下的 Logos HMIC_H,然后在右側(cè)頁(yè)面設(shè)置 Instance Name 名稱,并選擇 FPGA 的器件類型。
?
IP 選擇完成后點(diǎn)擊Customize 進(jìn)入Logos HMIC_H IP 參數(shù)設(shè)置界面,如下圖所示,左邊Symbol 為接口框圖,右邊為參數(shù)配置窗口:
?
參數(shù)配置完成后點(diǎn)擊左上角的Generate按鈕,生成 IP,即可生成相應(yīng)于用戶特定設(shè)置的 HMIC_H IP 代碼。生成 IP 的信息報(bào)告界面如下圖所示:
?
注?:?IP 自帶生成的.pds 文件和.fdc 文件僅供參考,需要根據(jù)實(shí)際單板進(jìn)行修改。成功生成 IP 后會(huì)在生產(chǎn)IP時(shí)指定的Pathname 路徑下輸出如下文件:
?
DDR3 IP配置說(shuō)明
HMIC_H IP 配置分為四個(gè)頁(yè)面,分別為 Step1: Basic Options,Step2: Memory Options,Step3: Interface Options,Step4: Summary,請(qǐng)務(wù)必按照該頁(yè)面順序配置。
?Step 1: Basic Options
是 IP 的基本配置頁(yè)面,頁(yè)面如下圖所示:
?
?
?
Step 2: Memory Options
是Memory 參數(shù)的配置頁(yè)面,頁(yè)面如下圖所示:
?
?
?
Step 3: Interface Options
是接口參數(shù)的配置頁(yè)面,頁(yè)面如下圖所示:
?
?
Step 4: Summary
用于打印當(dāng)前的配置信息,不需要配置參數(shù),頁(yè)面如下圖所示:
?
四:?實(shí)驗(yàn)源碼
DDR3 IP配置完成后會(huì)生成一個(gè)可用于例化的模塊。
DDR3 IP 模塊接口說(shuō)明
如下圖所示為DDR3 IP的Memory Interface(PHY),不需要我們直接操作。
?
以下所示為外部輸入時(shí)鐘,復(fù)位,輸出的用戶時(shí)鐘axi4 port0/port1/port2以及一些復(fù)位或者初始化完成的標(biāo)志信號(hào)(可以通過連接LED燈來(lái)直觀顯示,更易觀察)。
?
以下所示為AXI4協(xié)議的讀寫控制端口,也是用戶可以直接操作用于控制DDR3讀寫的端口。
?
AXI4協(xié)議的讀寫控制這里不進(jìn)行具體講解。
?
?
?DDR3 讀寫測(cè)試頂層模塊設(shè)計(jì)
頂層模塊的輸入輸出端口便是DDR3例化模塊中的Memory Interface(PHY)和一些直連LED燈的用于觀察的標(biāo)志信號(hào),因?yàn)楸敬螌?shí)驗(yàn)通過按鍵來(lái)控制開始向DDR3寫入數(shù)據(jù),所以還需要一個(gè)輸入按鍵。
?
然后對(duì)應(yīng)DDR3的AXI4讀寫我們單獨(dú)用一個(gè)模塊來(lái)控制,頂層模塊中的例化如下所示。
?
使用按鍵,所以需要一個(gè)按鍵消抖模塊,頂層模塊中的例化如下所示。
?
DDR3 AXI4讀寫控制模塊
本次實(shí)驗(yàn)只是一個(gè)簡(jiǎn)單的讀寫測(cè)試實(shí)驗(yàn),故可以將一些AXI4的信號(hào)配置為常量。
?
使用按鍵控制數(shù)據(jù)開始寫入DDR3,通過一個(gè)移位寄存器來(lái)產(chǎn)生這個(gè)寫標(biāo)志。
?
使用狀態(tài)機(jī)來(lái)控制寫地址信號(hào),寫數(shù)據(jù)信號(hào),讀地址信號(hào),讀數(shù)據(jù)信號(hào)的產(chǎn)生及狀態(tài)的切換和跳轉(zhuǎn)。
當(dāng)按鍵按下,寫標(biāo)志觸發(fā),狀態(tài)機(jī)進(jìn)入寫地址狀態(tài),awvalid_0信號(hào)為高電平,當(dāng)awready_0和awvalid_0同時(shí)為高電平時(shí),寫地址被有效寫入,下一個(gè)周期awvalid_0為低電平同時(shí)狀態(tài)機(jī)跳轉(zhuǎn)到寫數(shù)據(jù)的狀態(tài);
寫數(shù)據(jù)狀態(tài)中,wvalid_0為高電平,當(dāng)wready_0和wvalid_0同時(shí)為高電平時(shí),數(shù)據(jù)開始被寫入,一共寫入5~20總計(jì)16個(gè)數(shù)據(jù)(從0開始計(jì)數(shù)長(zhǎng)度便為15)。當(dāng)寫到最后一個(gè)數(shù)據(jù)時(shí)wlast_0保持一個(gè)周期的高電平。這里我們用一個(gè)計(jì)數(shù)器來(lái)產(chǎn)生寫入數(shù)據(jù),當(dāng)wready_0和wvalid_0同時(shí)為高電平時(shí)開始計(jì)數(shù)器開始自加,當(dāng)計(jì)數(shù)到15時(shí)(最后一個(gè)寫入數(shù)據(jù)),下一個(gè)周期計(jì)數(shù)器清零,狀態(tài)機(jī)跳轉(zhuǎn)至等待寫響應(yīng)的狀態(tài);
?
?
寫響應(yīng)的狀態(tài)中,通過一個(gè)移位寄存器抓取寫響應(yīng)有效bvalid_0信號(hào)為高電平的時(shí)刻,當(dāng)bvalid_0且bresp_0為2’b00(表示寫響應(yīng)ok)時(shí)觸發(fā)讀開始的標(biāo)志,狀態(tài)機(jī)進(jìn)入讀地址寫入狀態(tài);
?
讀地址寫入狀態(tài)中,arvalid_0為高電平,當(dāng)arready_0和arvalid_0同時(shí)為高電平時(shí),讀地址被有效寫入(地址與寫數(shù)據(jù)地址一致),下一個(gè)周期arvalid_0為低電平同時(shí)狀態(tài)機(jī)跳轉(zhuǎn)到讀數(shù)據(jù)的狀態(tài);
讀數(shù)據(jù)狀態(tài)中,當(dāng)rvalid_0 和 rready_和 rlast_0均為高電平時(shí),狀態(tài)機(jī)跳轉(zhuǎn)至最初的狀態(tài)等待按鍵被再次按下。讀出的數(shù)據(jù)可以通過在線調(diào)試Debugger工具來(lái)查看。
?
DDR3 IP的時(shí)鐘約束
IP 有 5 個(gè)時(shí)鐘,分別為 pll_refclk_in、phy_clk、pll_aclk0、pll_aclk1、pll_aclk2、pll_pclk,其中 pll_refclk_in 是輸入時(shí)鐘,phy_clk、pll_aclk0、pll_aclk1、pll_aclk2、pll_pclk 都是 PLL 倍頻得到,phy_clk 用作 HMIC_H 硬核的輸入時(shí)鐘,pll_aclk0 用做 AXI4 port0 的輸入時(shí)鐘,pll_aclk1 用做 AXI4 port1 的輸入時(shí)鐘,pll_aclk2 用做 AXI4 port2 的輸入時(shí)鐘,pll_pclk 用做APB port的輸入時(shí)鐘。phy_clk 是HMIC_H專用時(shí)鐘,在IP內(nèi)部使用,不允許外接使用。pll_pclk,pll_aclk_0,pll_aclk_1,pll_aclk_2 四路時(shí)鐘供外部邏輯使用,彼此沒有相位關(guān)系,都是異步時(shí)鐘。
外部輸入時(shí)鐘約束如下。
?
Pll產(chǎn)生的時(shí)鐘約束如下。
?
五:實(shí)驗(yàn)現(xiàn)象
點(diǎn)擊Debugger按鈕,下載程序,便可通過Debugger工具進(jìn)行在線調(diào)試,查看具體信號(hào)的波形情況。
?
?
?
?
?
?
按下開發(fā)板的按鍵,產(chǎn)生寫觸發(fā)信號(hào),awvalid_0信號(hào)為高電平,當(dāng)awready_0和awvalid_0同時(shí)為高電平時(shí),awvalid_0拉低同時(shí)進(jìn)入寫數(shù)據(jù)狀態(tài),wvalid_0拉高,隨后wready_0和wvalid_0同時(shí)為高電平時(shí)開始寫入數(shù)據(jù)5~20,wlast_0在寫入最后一個(gè)數(shù)據(jù)時(shí)拉高。一段時(shí)間后bvalid_0拉高且bresp_0為2’b00,表示寫入數(shù)據(jù)成功,然后進(jìn)入讀數(shù)據(jù)狀態(tài)。
?
讀地址寫入狀態(tài)中,arvalid_0為高電平,當(dāng)arready_0和arvalid_0同時(shí)為高電平時(shí),讀地址被有效寫入(地址與寫數(shù)據(jù)地址一致),下一個(gè)周期arvalid_0拉低同時(shí)狀態(tài)機(jī)跳轉(zhuǎn)到讀數(shù)據(jù)的狀態(tài)。
?
?
?
通過Debugger工具查看DDR3先寫入后讀出的數(shù)據(jù)是一致的,表明DDR3的讀寫測(cè)試正常。
同時(shí)在燒錄程序后,可以觀察LED燈的亮滅情況來(lái)查看DDR的PLL輸出的時(shí)鐘是否已經(jīng)穩(wěn)定,DDR PHY復(fù)位是否完成和DDR的控制器是否初始化成功。
?
ddr3 axi4 讀寫控制模塊源碼如下:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-819181.html
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-819181.html
到了這里,關(guān)于【兩周學(xué)會(huì)FPGA】從0到1學(xué)習(xí)紫光同創(chuàng)FPGA開發(fā)|盤古PGL22G開發(fā)板學(xué)習(xí)之DDR3 IP簡(jiǎn)單讀寫測(cè)試(六)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!