<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    FPGA研發之道(13)-設計不是湊波形(三)RAM

    發布時間:2016-2-26 14:24    發布者:designapp
    關鍵詞: FPGA , RAM , ROM
      在FPGA內部資源中,RAM是較為常用的一種資源。
      通常實例化RAM中,一種使用為BLOCK RAM 也就是塊RAM 。另外資源可以通過寄存器搭,也就是分布式RAM。前者一般用于提供較大的存儲空間,后者則提供小的存儲空間。
      在實際應用過程中,一般使用的包括,單端口、雙端口RAM,ROM等形式等不同的形式。 實際應用中FIFO也是利用RAM和邏輯一起實現的。
      對于一塊RAM中,其能夠例化的深度是有限的。例如cyclone4的RAM9k中可以例化的資源如下所示:
      


      因此:例化化深度


      那是不是可以例化成雙端口RAM,通過高位地址區分,變為兩個單端口RAM(width:32,depth:128)來使用,這樣就可以節省資源了?
      而對于雙端口RAM來說,每個M9K能夠配置是的最小深度就變成是512,而最大寬度為18,如下圖所示,因此作為真雙端口RAM使用,深度小于512的話,仍然會占用1塊RAM。且寬度》18就會多占用額外的一塊RAM,因此上述的節省資源的方式是不正確的。
      


      通過查看datasheet的中RAM能夠配置的方式,從而能夠正確的使用RAM資源,從而達到高的利用效率?梢钥闯,RAM9K其應用方式受限,主要是因為RAM的端口的連接信號受限,例如:該RAM9K的讀端口最大支持36根信號線,因此對于單端口其支持的寬度為36,雙端口為18(兩個端口,總共36根數據線),作為FPGA來說,其布線資源是有限的,不可能無限制的增加其端口數。
      RAM例化時,有時需要初始化RAM,ALTERA和XLINX的初始化方法如下所示:
      (1)ALTERA RAM中,例化時為MIF文件,其格式為:
      DEPTH = 32; -- The size of memory in words
      WIDTH = 8; -- The size of data in bits
      ADDRESS_RADIX = HEX; -- The radix for address values
      DATA_RADIX = HEX; -- The radix for data values
      CONTENT -- start of (address : data pairs)
      BEGIN
      00 : 0; -- memory address : data
      01 : 1;
      END;
      (2)在XILINX的RAM中,RAM出示化文件為COE文件,其格式為:
      MEMORY_INITIALIZATION_RADIX=2; 設定進制
      MEMORY_INITIALIZATION_VECTOR= 初始化向量
      值得注意的是:XILINX的RAM初始化后會自動生成MIF文件,而此mif文件與ALTERA mif文件格式不同。不能用于初始化ALTERA的 RAM。
      鑒于例化不同IP的復雜性,現在編譯工具也支持利用VERILOG語言來描述RAM,而編譯工具自動識別為RAM,自動產生相應的IP核,下面以XILINX的EDA工具為例簡要介紹。
      module ram(
      clk, wr,addr,din,dout
      );
      input clk;
      input [7:0] addr;
      input wr;
      input [31:0] din;
      output [31:0] dout;
      reg [31:0] mem [0:255];
      reg [31:0] dout;
      always@(posedge clk)
      if(wr)
      mem[addr] FPGA內部一種基本資源,掌握RAM的特性和基本用法,則是FPGA工程師的基本技能,能夠充分利用FPGA內部的資源,畢竟對于FPGA來說“資源就是金錢”,節省資源就是省錢。
                                   
                   
    本文地址:http://www.portaltwn.com/thread-161308-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷