在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Xilinx FPGA IP之Block Memory Generator仿真

CHANBAEK ? 來源: FPGA自學筆記分享 ? 作者: FPGA自學筆記分享 ? 2023-11-14 18:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

上文對BMG ip的基本情況進行了簡單的描述,本文通過例化仿真來實際使用功能一下這個IP。

首先使用簡單雙端口BRAM實現一個簡單的跨時鐘域操作:將16bit的a時鐘域的數據跨到b時鐘域,b時鐘頻率是a時鐘頻率的一半,為了操作方便,直接將b數據位寬擴展到32bit(這樣就不用增加控制信息,數據流是滿的)。BMG IP輸入輸出位寬比支持:1:32, 1:16, 1:8, 1:4, 1:2, 1:1, 2:1, 4:1, 8:1, 16:1, 32:1.位寬變換時BMG的AB端口數據映射關系如下:

圖片

例化一個簡單的ip,設置如下。這里選擇簡單雙端口模式的本地接口,采用面積最小原則,端口A為16bit,深度為16,ram大小就是16*16bit,控制信號就使用ENA。對于端口B,將位寬設置為32bit,此時深度自動變換為8,使用寫優先模式,同樣使能ENB端口作為控制端口。

圖片

圖片

圖片

這里對續寫模式再做一個簡單的說明,支持WRITE_FIRST, READ_FIRST或NO_CHANGE三種模式,這三種模式的讀寫時序如下圖所示。

圖片

圖片

圖片

WRITE_FIRST模式下,寫優先級最高,同一地址,一旦寫入,數據直接會透傳到輸出端。READ_FIRST模式,數據輸出端口會鎖存輸出數據,有數據寫入時,輸出數據是上一次的數據。NO_CHANGE模式下,在寫使能拉高后,輸出將保持開始拉高時刻的數據,保持不變。注意這三種模式針對的是單端口,即端口A或者B。

編寫一個簡單的仿真測試代碼如下:

// ============================================================
// File Name: tb_blk_mem_gen_sdp
// VERSION  : V1.0
// DATA     : 2023/8/5
// Author   : FPGA干貨分享
// ============================================================
// 功能:xilinx blk_mem_gen_sdp ip 代碼仿真
//       使用簡單雙端口實現一個簡單的跨時鐘域
// delay : 
// ============================================================




`timescale 1ns/100ps
module tb_blk_mem_gen_sdp ;


reg             clka   = 'd0 ;
reg             ena    = 'd1 ; 
reg  [0 : 0]    wea    = 'd1 ; 
reg  [3 : 0]    addra  = 'd0 ;
reg  [15 : 0]   dina   = 'd0 ;
reg             clkb   = 'd0 ;
reg             enb    = 'd1 ; 
reg  [2 : 0]    addrb  = 'd0 ;
wire [31 : 0]   doutb        ;




reg [2:0]   S_addr_a_flag   ='d0 ;
reg         S_a_flag        ='d0 ;
reg [2:0]   S_a_flag_2_b    ='d0 ;
reg         S_b_flag        ='d0 ;


reg [2:0]   S_clk_cnt8      ='d3   ;


always #1 clka = ~clka;
always #2 clkb = ~clkb;




//----------- clk_a  ---// 
always @(posedge clka)
    if(ena && wea)
        begin
            addra <= addra + 'd1;
            dina  <= dina + 'd1;
        end


always @(posedge clka)
    S_addr_a_flag[0] <= (addra == 4'd10);

always @(posedge clka)
    S_addr_a_flag[2:1] <= S_addr_a_flag[1:0] ; 


always @(posedge clka)
    S_a_flag <= |S_addr_a_flag ;


//----------- clk_b  ---// 
always @(posedge clkb)
    S_a_flag_2_b <= {S_a_flag_2_b[1:0],S_a_flag} ;


always @(posedge clkb)
    S_b_flag <= (!S_a_flag_2_b[2])&& S_a_flag_2_b[1] ;

always @(posedge clkb)
    if((S_clk_cnt8 > 3'd2)&&S_b_flag)
        S_clk_cnt8 <= 3'd2;
    else 
        S_clk_cnt8 <= S_clk_cnt8 + 'd1;




always @(posedge clkb)
    if(S_clk_cnt8 == 3'd1)
        addrb <= 'd0;
    else 
        addrb <= addrb + 'd1;




//----------- Begin Cut here for INSTANTIATION Template ---// 
blk_mem_gen_sdp blk_mem_gen_sdp (
  .clka     (clka       ), // input wire clka   
  .ena      (ena        ), // input wire ena     
  .wea      (wea        ), // input wire [0 : 0] wea     
  .addra    (addra      ), // input wire [3 : 0] addra 
  .dina     (dina       ), // input wire [15 : 0] dina   
  .clkb     (clkb       ), // input wire clkb   
  .enb      (enb        ), // input wire enb     
  .addrb    (addrb      ), // input wire [2 : 0] addrb 
  .doutb    (doutb      )  // output wire [31 : 0] doutb 
);


endmodule

仿真結果如下:clkb時鐘頻率是clka時鐘頻率的一半,dataa數據位寬16bit,datab數據位寬32bit,輸入輸出均為滿速率,同時在代碼中增加了防抖保護措施,防止跨時鐘域中因為出現時鐘抖動而產生的數據異常問題。

圖片

以上就是Xilinx Block Memory Generator(BMG) IP的仿真。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1644

    文章

    22007

    瀏覽量

    616315
  • Xilinx
    +關注

    關注

    73

    文章

    2184

    瀏覽量

    124768
  • 仿真
    +關注

    關注

    52

    文章

    4252

    瀏覽量

    135523
  • 時鐘
    +關注

    關注

    11

    文章

    1891

    瀏覽量

    133013
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    XILINX FPGA IPClocking Wizard詳解

    鎖相環基本上是每一個fpga工程必不可少的模塊,之前文檔xilinx 7 系列FPGA時鐘資源對xilinx fpga的底層時鐘資源做過說明
    發表于 06-12 17:42 ?7103次閱讀
    <b class='flag-5'>XILINX</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>IP</b><b class='flag-5'>之</b>Clocking Wizard詳解

    XILINX FPGA IPMMCM PLL DRP時鐘動態重配詳解

    上文XILINX FPGA IPClocking Wizard詳解說到時鐘IP的支持動態重配的,本節介紹通過DRP進行MMCM PLL的重
    發表于 06-12 18:24 ?1.4w次閱讀
    <b class='flag-5'>XILINX</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>IP</b><b class='flag-5'>之</b>MMCM PLL DRP時鐘動態重配詳解

    Xilinx FPGA IPBlock Memory Generator功能概述

    Xilinx Block Memory Generator(BMG)是一個先進的內存構造器,它使用Xilinx
    的頭像 發表于 11-14 17:49 ?3789次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>IP</b><b class='flag-5'>之</b><b class='flag-5'>Block</b> <b class='flag-5'>Memory</b> <b class='flag-5'>Generator</b>功能概述

    Xilinx FPGA IPBlock Memory Generator AXI接口說明

    之前的文章對Block Memory Generator的原生接口做了說明和仿真,本文對AXI接口進行說明。
    的頭像 發表于 11-14 18:25 ?2738次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>IP</b><b class='flag-5'>之</b><b class='flag-5'>Block</b> <b class='flag-5'>Memory</b> <b class='flag-5'>Generator</b> AXI接口說明

    Distributed Memory Generator IP核簡介

    Distributed Memory Generator IP 核采用 LUT RAM 資源創建各種不同的存儲器結構。IP可用來創建只讀存儲器 (ROM)、單端口隨機存取存儲器 (RA
    的頭像 發表于 11-17 17:00 ?2701次閱讀
    Distributed <b class='flag-5'>Memory</b> <b class='flag-5'>Generator</b> <b class='flag-5'>IP</b>核簡介

    XILINX FPGA IPAXI Traffic Generator

    AXI Traffic Generator IP 用于在AXI4和AXI4-Stream互連以及其他AXI4系統外設上生成特定序列(流量)。它根據IP的編程和選擇的操作模式生成各種類型的AXI事務。是一個比較好用的AXI4協議測
    的頭像 發表于 11-23 16:03 ?3803次閱讀
    <b class='flag-5'>XILINX</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>IP</b><b class='flag-5'>之</b>AXI Traffic <b class='flag-5'>Generator</b>

    Xilinx FPGA無痛入門,海量教程免費下載

    -- 波形發生器IP核CORDIC(正弦波)仿真Lesson77 特權Xilinx FPGA SF-SP6入門指南 -- 波形發生器
    發表于 07-22 11:49

    Xilinx FPGA入門連載44:FPGA片內ROM實例ROM配置

    `Xilinx FPGA入門連載44:FPGA片內ROM實例ROM配置特權同學,版權所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1jGjAhEm 1
    發表于 01-08 13:12

    Xilinx FPGA入門連載48:FPGA片內RAM實例RAM配置

    `Xilinx FPGA入門連載48:FPGA片內RAM實例RAM配置特權同學,版權所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1jGjAhEm 1
    發表于 01-22 13:39

    xilinx FPGA的FFT IP核的調用

    有沒有大神可以提供xilinx FPGA的FFT IP核的調用的verilog 的參考程序,最近在學習FFT的IP核的使用,但是仿真結果有問
    發表于 12-25 17:05

    ARM embedded memory ip的產生,couldn't run spreadsheet generator to fetch results

    如題,在Linux下,產生memory,使用的是ARM的 memory IP 工具,無法產生,提示:couldn't run spreadsheet generator to fetc
    發表于 08-15 15:56

    Xilinx FPGA片內ROM實例ROM配置

    Xilinx FPGA入門連載44:FPGA片內ROM實例ROM配置特權同學,版權所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1jGjAhEm 1
    發表于 01-09 16:02

    創建Block RAM IP不起作用

    在我的一個FPGA類中,我被要求使用coregen創建一個blcok ram(8dx16w),單端口ram IP。我在Windows XP,Service Pack 3上使用Xilinx ISE
    發表于 06-05 13:39

    FPGA開發算法開發System Generator

    的對應關系: System generator 安裝之后會在Simulin模塊庫中添加一些Xilinx FPGA專用的模塊庫,包括Basic Element,Communication,Control
    發表于 11-17 14:29 ?8428次閱讀

    XILINX FPGA IPFIFO Generator例化仿真

    上文XILINX FPGA IPFIFO對XILINX FIFO Generator
    的頭像 發表于 09-07 18:31 ?2651次閱讀
    <b class='flag-5'>XILINX</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>IP</b><b class='flag-5'>之</b>FIFO <b class='flag-5'>Generator</b>例化<b class='flag-5'>仿真</b>
    主站蜘蛛池模板: 日本视频免费高清一本18 | 成人免费无毒在线观看网站 | 男女交黄 | 狠狠色丁香久久婷婷综合丁香 | 欧美视频不卡一区二区三区 | 日日夜夜天天人人 | 不卡午夜 | 啪啪中文字幕 | 欧美性猛片xxxxⅹ免费 | 国内a级毛片免费··· | 日韩一级片在线 | 农村妇女色又黄一级毛片卡 | 男女刺激性视频大片 | 欧美成人午夜精品免费福利 | 四虎影院中文字幕 | 狠狠色丁香久久综合婷婷 | 成人在线a | 天天在线天天综合网色 | 国产精品五月天 | 1024毛片基地 | 国产一区二区三区不卡观 | 4438x成人网全国最大 | 免费看真人a一级毛片 | 色wwwwww| 韩国朴银狐诱感在线观看 | 亚洲男人天堂岛 | 三级成人影院 | 免费观看色视频 | 色爱区综合激情五月综合激情 | 欧美日韩性猛交xxxxx免费看 | 欧美性xx18一19 | 国产色窝 | 猛操在线| 婷婷色在线播放 | 天天鲁天天爽精品视频 | 久操视频免费 | 老色鬼久久综合第一 | 中文字幕一区二区三区精品 | 男女视频免费观看 | 欧美性受视频 | 永久在线免费观看 |