色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

FPGA跨時鐘域處理方法(三)

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

掃碼添加小助手

加入工程師交流群

所謂數據流跨時鐘域即:時鐘不同但是時間段內的數據量一定要相同。

常用的數據流跨時鐘域可以使用fifo或者ram實現。fifo的實現我們之前文章中fifo資源的介紹中已經詳細講解過了,xilinx FIFO 硬核的結構如下:

圖片

但是FIFO實現有一個問題,由于沒有地址控制,需要固定時延是不方便,另外就是xilinx IP的fifo深度較大,可能存在資源浪費。

第二種方法就是使用ram自己搭建跨時鐘域模塊。我們使用bram做數據流跨時鐘域。

例示代碼如下 ,代碼時鐘比例為5:4,a時鐘每5個clk寫入4個數據,b時鐘每個clk輸出,代碼中有兩個點要注意:

1、0地址的寫是能;

2、有一個防抖處理。

// ============================================================
// File Name: cm_cdc_bram
// VERSION  : V1.0
// DATA     : 2022/10/4
// Author   : FPGA干貨分享
// ============================================================
// 功能:數據流使用bram跨時鐘域模塊
// ============================================================




`timescale 1ns/1ps
module cm_cdc_bram (
    input wire          I_clk_a         , ///輸入時鐘a,500Mhz
    input wire          I_clk_b         , ///輸入時鐘b,400Mhz
    input wire          I_data_a_valid  , ///輸入時鐘b
    input wire [31:0]   I_data_a        , ///a時鐘輸入信號
    output wire[31:0]   O_data_b          ///b時鐘輸出信號
    );
// ============================================================
// wire reg
// ============================================================
reg     [8:0]           S_wr_addr           ;
reg                     S_wr_zero_flag      ;


wire                    S_wr_zero_flag_rd   ;
reg     [3:0]           S_clk_cnt           ;
reg                     S_wr_clr_falg_temp  ;
reg                     S_wr_clr_falg       ;
reg     [8:0]           S_rd_addr           ;


// ============================================================
// main code
// ============================================================




// ============================================================
// clk_a
// ============================================================


always @(posedge I_clk_a)
    if(I_data_a_valid)
        S_wr_addr <= S_wr_addr + 9'd1;
    else
        S_wr_addr <= S_wr_addr ; 


always @(posedge I_clk_a)
    S_wr_zero_flag <= (!(|S_wr_addr));


// ============================================================
// clk_b
// ============================================================


cm_cdc_1bit cm_cdc_1bit (
    .I_clk_a        (I_clk_a            ) , ///輸入時鐘a
    .I_clk_b        (I_clk_b            ) , ///輸入時鐘b
    .I_single_a     (S_wr_zero_flag     ) , ///a時鐘輸入信號
    .O_single_b     (S_wr_zero_flag_rd  )   ///b時鐘輸出信號
    );

always @(posedge I_clk_b)
    if(S_wr_zero_flag_rd & (S_clk_cnt > 4'd2))
        S_clk_cnt <= 4'd2;
    else
        S_clk_cnt <= S_clk_cnt + 4'd1;


always @(posedge I_clk_b)
    if(S_wr_zero_flag_rd)
        S_wr_clr_falg_temp <= 1'b1;
    else if(&S_clk_cnt)
        S_wr_clr_falg_temp <= 1'b0;
    else
        S_wr_clr_falg_temp <= S_wr_clr_falg_temp ;


always @(posedge I_clk_b)
    S_wr_clr_falg <= S_wr_clr_falg_temp & (&S_clk_cnt) ;

always @(posedge I_clk_b)
    if(S_wr_clr_falg)
        S_rd_addr <= 9'd256;
    else
        S_rd_addr <= S_rd_addr + 'd1;


BRAM_SDP_MACRO #(
   .BRAM_SIZE    ("18Kb"         ), // Target BRAM, "18Kb" or "36Kb" 
   .DEVICE       ("7SERIES"      ), // Target device: "7SERIES" 
   .WRITE_WIDTH  (32             ), // Valid values are 1-72 (37-72 only valid when BRAM_SIZE="36Kb")
   .READ_WIDTH   (32             ), // Valid values are 1-72 (37-72 only valid when BRAM_SIZE="36Kb")
   .DO_REG       (1              ), // Optional output register (0 or 1)
   .INIT_FILE    ("NONE"         )
) BRAM_SDP_MACRO_inst (
   .DO           (O_data_b       ), // Output read data port, width defined by READ_WIDTH parameter
   .DI           (I_data_a       ), // Input write data port, width defined by WRITE_WIDTH parameter
   .RDADDR       (S_rd_addr      ), // Input read address, width defined by read port depth
   .RDCLK        (I_clk_b        ), // 1-bit input read clock
   .RDEN         (1'b1           ), // 1-bit input read port enable
   .REGCE        (1'b1           ), // 1-bit input read output register enable
   .RST          (1'b0           ), // 1-bit input reset
   .WE           (4'hf           ), // Input write enable, width defined by write port depth
   .WRADDR       (S_wr_addr      ), // Input write address, width defined by write port depth
   .WRCLK        (I_clk_a        ), // 1-bit input write clock
   .WREN         (I_data_a_valid )  // 1-bit input write port enable
);






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

    關注

    1646

    文章

    22066

    瀏覽量

    619415
  • Xilinx
    +關注

    關注

    73

    文章

    2185

    瀏覽量

    125587
  • fifo
    +關注

    關注

    3

    文章

    402

    瀏覽量

    44862
  • 數據流
    +關注

    關注

    0

    文章

    125

    瀏覽量

    14995
  • 時鐘域
    +關注

    關注

    0

    文章

    53

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    FPGA設計中解決時鐘大方案

    介紹3種時鐘處理方法,這3種方法可以說是FPGA
    的頭像 發表于 11-21 11:13 ?4623次閱讀
    <b class='flag-5'>FPGA</b>設計中解決<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>的<b class='flag-5'>三</b>大方案

    關于時鐘信號的處理方法

    我在知乎看到了多bit信號時鐘的問題,于是整理了一下自己對于時鐘信號的處理
    的頭像 發表于 10-09 10:44 ?7219次閱讀

    如何處理FPGA設計中時鐘問題?

    時鐘處理方法,這三種方法可以說是 FPGA 界最常用也最實用的
    發表于 09-22 10:24

    探尋FPGA時鐘處理方法

    時鐘處理方法,這三種方法可以說是 FPGA 界最常用也最實用的
    發表于 10-20 09:27

    時鐘處理方法

    時鐘處理方法,這三種方法可以說是FPGA界最常用也最實用的
    發表于 01-08 16:55

    FPGA界最常用的時鐘處理法式

    處理方法,這三種方法可以說是FPGA界最常用也最實用的方法,這三種方法包含了單bit和多bit
    發表于 02-21 07:00

    FPGA初學者的必修課:FPGA時鐘處理3大方法

    處理方法,這三種方法可以說是FPGA界最常用也最實用的方法,這三種方法包含了單bit和多bit
    發表于 03-04 09:22

    如何處理FPGA設計中時鐘間的數據

    介紹3種時鐘處理方法,這3種方法可以說是FPGA
    發表于 07-29 06:19

    FPGA時鐘處理簡介

    (10)FPGA時鐘處理1.1 目錄1)目錄2)FPGA簡介3)Verilog HDL簡介4
    發表于 02-23 07:47

    FPGA界最常用也最實用的3種時鐘處理方法

    介紹3種時鐘處理方法,這3種方法可以說是FPGA
    發表于 11-15 20:08 ?1.4w次閱讀

    揭秘FPGA時鐘處理方法

    時鐘處理方法,這三種方法可以說是 FPGA
    的頭像 發表于 12-05 16:41 ?2007次閱讀

    介紹3種方法時鐘處理方法

    介紹3種時鐘處理方法,這3種方法可以說是FPGA
    的頭像 發表于 09-18 11:33 ?2.3w次閱讀
    介紹3種<b class='flag-5'>方法</b><b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b><b class='flag-5'>方法</b>

    時鐘處理方法

    時鐘處理FPGA設計中經常遇到的問題,而如何處理
    的頭像 發表于 10-18 09:12 ?9179次閱讀

    FPGA時鐘處理方法(一)

    時鐘FPGA設計中最容易出錯的設計模塊,而且一旦時鐘
    的頭像 發表于 05-25 15:06 ?2541次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b><b class='flag-5'>方法</b>(一)

    FPGA時鐘處理方法(二)

    上一篇文章已經講過了單bit時鐘處理方法,這次解說一下多bit的
    的頭像 發表于 05-25 15:07 ?1346次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b><b class='flag-5'>方法</b>(二)
    主站蜘蛛池模板: 国产精品久久久久成人免费 | 国产免费福利在线视频 | 九九99热久久精品在线6 | 中文成人在线视频 | 欧美巨大巨粗黑人性AAAAAA | 秋霞伦理机在线看片 | 亚洲无人区码二码三码区别图 | 伊人香蕉在线播放视频免费 | 国产在线aaa片一区二区99 | 自拍 偷拍 亚洲 经典 | 美女的隐私蜜桃传媒免费看 | 乳交高H糙汉宠文 | 亚洲2017久无码 | 国产 亚洲 中文在线 字幕 | 超碰免费视频caopoom9 | 国产女人喷潮视频免费 | 最新毛片网 | 女教师の诱惑 | 伊人久久大香网 | 98久久人妻少妇激情啪啪 | 久久精品国产在热亚洲 | 伊人久久综在合线影院 | 久久久久国产精品嫩草影院 | 四虎永久精品视频在线 | 人禽l交视频在线播放 视频 | 蜜芽在线播放免费人成日韩视频 | 草莓西瓜樱桃香蕉直播视频 | 久久综合伊人 | 亚洲香蕉视频在线播放 | 亚洲综合AV色婷婷五月蜜臀 | 小蝌蚪视频在线观看免费观看WWW | 天天躁日日躁狠狠躁AV麻豆 | 国产亚洲精品久久久久久国 | 日本精品卡一卡2卡3卡四卡三卡 | 伊人网综合 | 性一交一乱一色一视频 | 无修肉动漫在线观看影片 | 学生无码AV一区二区三区 | 7723手机游戏破解版下载 | 最新国产亚洲亚洲精品视频 | 国产中文在线 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品