av免费国产_美女一级_丰满少妇在线观看网站_日本孕交_亚洲精品久久久_国产精华一区二区三区

紫光同創PGL22G開發平臺試用連載(3)- PGL22G DDR3控制器帶寬測試

日期:2020-09-07 來源:電子創新網作者:LuoGuibin閱讀:713

FPGA是否具有高速通信接口和高速內存接口已經是高端FPGA和低端FPGA的分水嶺了。低端FPGA一般只提供低速通用IO,速度最高的就是LVDS了。但是LVDS只提供了PHY層的邏輯,即串轉并,還需要自己實現數據鏈路層和應用層的邏輯。

高速FPGA的高速接口非常的豐富,一般包括用于高速通信的Serdes,PCIe硬核;用于高速存儲接口的DDR3、DDR4接口。另一方面,同樣的接口,不同廠家實現的方案也不同,比如Xilinx提供的DDR接口是用FPGA邏輯實現的軟核,而PCIe是直接硬核的資源;而PGL22G這款FPGA的DDR接口是使用硬核的HMEMC。

DDR內存控制器是非常復雜的一個IP,在實現的過程中會使用了非常多的資源,直接使用FPGA資源實現DDR控制器的缺點就是占用資源,但是優點是實現靈活,根據引腳分配規則可以分布在各個BANK上,這對于引腳分配和PCB布局布線是非常方便的,尤其在使用多個顆粒或DIMM實現32位或者64位總線內存的時候。而使用硬核的DDR控制器剛好相反,占用邏輯資源少,但是只能在固定位置。比如PGL22G包含兩個硬核HMEMC,分別在BANK L1/L2和BANK R1/R2,可以看到HMEMC的位置靠近器件封裝的兩側,可以直接和引腳相鄰,這樣的布局應該是方便布線和時序。

圖1.HMEMC在PGL22G中的位置

根據PANGO官方的數據手冊,HMEMC是可以bypass,從而使用軟核實現,個人感覺有這個需求的應該是很少的吧?

圖2.HMEMCdatasheet描述

這里可以看出DDR控制器的組成有兩個主要部分:DDRC和DDRPHY,如圖3圖4所示。這個看綜合后RTL視圖也可以看到,例化了DDR控制器之后,會在ipcore目錄下生成相應的RTL代碼。主要是對DDR控制器硬核資源進行配置和例化,而一些復位控制,鏈路訓練等是通過邏輯資源實現的。有興趣的可以直接看源代碼,只不過可讀性差了點。

圖3.HMEMC硬核DDRC

圖4.HMEMC硬核DDRPHY

再來看HMEMC的使用方法,可以通過IP_Compiler例化DDR控制器,最多支持3組AXI,1個128bit,2個64bit。在配置IP的時候可以選擇使用哪組,或者全部都用。支持多組AXI總線是有必要的,因為項目中經常有多個模塊需要訪問DDR,支持多個端口可以減少使用外部的Crossbar做多端口的仲裁和互聯。DDR控制器輸入的時鐘不需要硬件上額外提供,直接使用系統時鐘即可,在內部使用PLL倍頻到DDR速率。這里我有一點困惑,因為系統時鐘是50Mhz,但是DDR控制器最高速率支持1066Mhz,也就是PLL的輸出頻率是533Mhz,并不是整數倍分頻的。這里PGL22G的PLL真的可以做到這一點,還是工具有問題?(Xilinx的FPGA中只有MMCM才能實現分數倍頻率綜合)

DDR3帶寬測試

帶寬測試的基本方法是:向DDR里寫入數據(可以是遞增的數或偽隨機數),然后讀出進行比對,如果出錯則立即停止,否則對整個地址空間進行讀寫,然后記錄所用的時間,即可計算出帶寬。

首選對DDR控制器進行配置和例化,選擇一組128bit的AXI總線,DDR速率配置為800Mhz。頂層主要包括兩個模塊,ipsl_hmemc_top和ddr_wr_ctrl,ddr_wr_ctrl使用DDRIP輸出的100Mhz時鐘ui_clk作為時鐘。通過狀態機,首先對整個DDR空間進行寫入測試,然后再讀出整個空間進行比對,寫入的數據為遞增的數據。對整個寫入和讀出過程進行計時,計時精度1us。

圖5.DDR讀寫測試工程RTL視圖

計時值的讀出是通過debug_core讀出的,這樣可以不使用其他通信接口而簡化設計。這里需要注意如果計時值在頂層沒有輸出連接的話,會被綜合器優化掉,在添加調試信號的時候會搜索不到這個網絡。這里有兩種方法可以避免未連接的端口被優化掉:一種是使用Synplify的綜合Directive如“Syn_keep”、“ syn_preserve”告訴綜合器不要優化;另外一種是直接將計數值通過組合邏輯連接到IO上。這里使用第二種方法,通過組合邏輯連接到LED上。計數值直接通過debug_core讀出,測試的開始觸發是通過檢測按鍵的邊沿。

// LED active low

assign led = {clk_led, pll_lock&ddrphy_rst_done&ddr_init_done,(|test_time), err_flag};

DDR工作在800Mhz,物理位寬16bit,理論物理帶寬為800Mhz*16bit = 12.8Gbps;

AXI總線頻率100Mhz,總線位寬128bit,理論帶寬為100Mhz*128bit = 12.8Gbps;

二者帶寬是匹配的,即通過AXI總線可以測出DDR的最大帶寬。

ddr_band_width = 128MB / test_time

在操作DDR控制器AXI接口的時候有幾個地方一定要注意,特別是對AXI4協議不太熟悉的朋友。axi_awsize指的是AXI的總線的有效位寬,這里需要和總線的實際進行區別,比如128bit的總線是可以傳輸64bit/32bit/16bit/8bit的數據,稱為Narrow Burst。所以axi_awsize才決定了實際傳輸有效數據的位寬,這里設為4,即2^4=16Byte。axi_awburst指定了地址的增長模式,這里設為2’b01,即地址遞增。

assign axi_awid = 4'h0 ;

assign axi_awlen = 8'hFF ;

assign axi_awsize = 3'b100; // 128b = 16B = 2^4

assign axi_awburst = 2'b01 ; // incremental burst

通過布局布線的結果,我們可以很直觀的看到,使用硬核資源,只占用了非常少的邏輯資源。

圖6.HMEMC布局布線結果

打賞
聯系客服 投訴反饋  頂部
主站蜘蛛池模板: 亚洲成av人在线看 | 色wwww全部免费 | 日本高清黄色网站 | 精品综合久久 | 91影视国产 | 国产精品国内免费一区二区三区 | 女人做爰全过程免费观看美女 | 亚洲日本欧美在线 | 久久精品人人做人人综合 | 久久国产品| 日本视频三区 | mv大片免费 | 日本一级理论片在线大全 | 精品粉嫩aⅴ一区二区三区四区 | 99国产精品久久久久 | 噜噜噜久久亚洲精品国产品小说 | 黄色影院一级片 | 噜噜噜久久亚洲精品国产品91 | 欧美日韩精品免费 | www.47久久青青 | 日韩福利视频一区二区 | 成人午夜天 | 国产色视频网站2 | 一区二区三区毛片免费 | 狠狠色噜噜狠狠狠狠色综合久 | 国产777精品精品热热热一区二区 | 涩涩婷婷 | 精品不卡视频 | 国产精品乱码久久久久久 | 深夜福利在线免费观看 | 成人国产1314www色视频 | 欧美日韩最好看的视频 | 色婷婷国产精品综合在线观看 | 成年免费观看黄页网站 | 久久国产色av老熟蜜臀av | 国产精品一区二区av | 麻豆91精品 | 91国内精精品久久久久久婷婷 | 99视频偷拍 | 国产欧美另类久久久精品九一 | 日本最新高清不卡中文字幕 |