日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內不再提示

睿擎平臺 FPGA 高速通信:DSMC 總線讀寫實戰(zhàn)

RT-Thread官方賬號 ? 2026-04-15 18:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

工業(yè)控制和數(shù)據(jù)采集場景中,處理器FPGA 之間的高速數(shù)據(jù)交換是一個常見需求。傳統(tǒng)方案通常采用SPI(速度受限,一般 < 10Mbps)或?PCIE(帶寬高但引腳多、設計復雜)。有沒有一種方案,既能達到?幾十 MB/s 的帶寬,又只需要少量引腳,設計簡單?


今天分享一個基于睿擎派 RC3506的方案——利用 RK3506 芯片內置的DSMC(Double Data Rate Serial Memory Controller)總線,與 PGL22GB FPGA 實現(xiàn) 高速通信,完整演示從硬件連接到代碼驗證的全流程。


一、DSMC 是什么?

DSMC(Double Data Rate Serial Memory Controller)是瑞芯微 SoC 內部的一種高速存儲與本地總線控制器,支持通過 DDR(雙倍數(shù)據(jù)速率)方式與外部 PSRAM 或 LocalBus 設備(如 FPGA)進行數(shù)據(jù)通信。


DSMC 核心特性

89fa6ed8-38b3-11f1-ab55-92fbcf53809c.png


二、硬件準備

8a109b04-38b3-11f1-ab55-92fbcf53809c.png


連接方式

RC-PI-3506 開發(fā)板與 FPGA 擴展板通過 DSMC 接口連接:

8a2295b6-38b3-11f1-ab55-92fbcf53809c.png


睿擎派 RC3506 與 PGL22GB FPGA 擴展板連接示意

8a62eb0c-38b3-11f1-ab55-92fbcf53809c.png

睿擎派 RC3506 開發(fā)板


三、DSMC 讀寫原理

3.1 內存映射

DSMC 將外部設備映射到處理器的物理地址空間,軟件可以通過直接讀寫內存地址的方式訪問 FPGA:

處理器地址空間 │ ├── 0xC0000000 ──→ DSMC CS0 區(qū)域(FPGA RAM) │ 16KB 可讀寫 │ └── 其他外設...

3.2 讀寫流程

寫入流程

1.處理器執(zhí)行 writel(data, 0xC0000000 + offset)2.DSMC 控制器將數(shù)據(jù)通過 DDR 串行總線發(fā)送給 FPGA3.FPGA LocalBus 接口接收數(shù)據(jù),寫入內部 RAM

讀取流程

1.處理器執(zhí)行 readl(0xC0000000 + offset)2.DSMC 控制器向 FPGA 發(fā)送讀請求3.FPGA LocalBus 接口從內部 RAM 讀出數(shù)據(jù),返回給 DSMC4.DSMC 控制器將數(shù)據(jù)返回給處理器

3.3 關鍵約束

4字節(jié)對齊訪問:RK3506 的 DSMC 讀寫必須 4 字節(jié)對齊,即地址必須是 4 的倍數(shù)

默認頻率 12MHz:可在設備樹中修改,但需確保 FPGA 側時序匹配

8 位寬模式:當前示例使用 8 線傳輸,可配置為 16 線提升帶寬


四、代碼實戰(zhàn)

4.1 示例代碼結構

完整示例代碼位于 SDK 的 02_peripheral_dsmc 目錄,核心邏輯如下:

staticinttest_dsmc_read_write(void){ inti; interr_count =0; rt_uint64_tt_start, t_end; rt_uint64_twrite_cycles, read_cycles; constintWORD_NUM =4*1024; // 4K word = 16KB uintptr_tBASE_ADDR =0xC0000000; // DSMC CS0 基地址 rt_uint32_t*write_buf =rt_malloc(WORD_NUM *4); rt_uint32_t*read_buf =rt_malloc(WORD_NUM *4); if(!write_buf || !read_buf) { rt_kprintf("malloc failed!\n"); return-1; } // 準備測試數(shù)據(jù) for(i =0; i < WORD_NUM; i++)? ? {? ? ? ? write_buf[i] =?0x12345678?+ i;? ? }? ? // ========== 寫入測試 ==========? ? t_start =?rt_hw_global_timer_get();? ? for?(i =?0; i < WORD_NUM; i++)? ? {? ? ? ? writel(write_buf[i], BASE_ADDR + i *?4);?// 4字節(jié)對齊寫入? ? }? ? t_end =?rt_hw_global_timer_get();? ? write_cycles = t_end - t_start;? ? // ========== 讀取測試 ==========? ? t_start =?rt_hw_global_timer_get();? ? for?(i =?0; i < WORD_NUM; i++)? ? {? ? ? ? read_buf[i] =?readl(BASE_ADDR + i *?4);? ? }? ? t_end =?rt_hw_global_timer_get();? ? read_cycles = t_end - t_start;? ? // ========== 數(shù)據(jù)校驗 ==========? ? for?(i =?0; i < WORD_NUM; i++)? ? {? ? ? ? if?(read_buf[i] != write_buf[i])? ? ? ? {? ? ? ? ? ? err_count++;? ? ? ? ? ? rt_kprintf("ERR[%d]: R=0x%08X W=0x%08X\n",? ? ? ? ? ? ? ? ? ? ? ? i, read_buf[i], write_buf[i]);? ? ? ? ? ? if?(err_count >10) { rt_kprintf("......\n"); break; } } } // ========== 性能統(tǒng)計 ========== floatwrite_time_us = (float)write_cycles /24.0f; // 24MHz 定時器 floatread_time_us = (float)read_cycles /24.0f; floattotal_bytes = WORD_NUM *4.0f; floatwrite_speed = (total_bytes / (1024*1024)) / (write_time_us /1e6); floatread_speed = (total_bytes / (1024*1024)) / (read_time_us /1e6); if(err_count ==0) { rt_kprintf("\n==== DSMC TEST PASS ====\n"); rt_kprintf("Write: %lu cycles, %.2f us, %.2f MB/s\n", write_cycles, write_time_us, write_speed); rt_kprintf("Read : %lu cycles, %.2f us, %.2f MB/s\n", read_cycles, read_time_us, read_speed); } else { rt_kprintf("\n==== DSMC TEST FAIL ====\n"); rt_kprintf("Error count: %d\n", err_count); } rt_free(write_buf); rt_free(read_buf); return0;}MSH_CMD_EXPORT(test_dsmc_read_write, test dsmc read write);

4.2 關鍵代碼解析

① 基地址定義

uintptr_tBASE_ADDR =0xC0000000; // DSMC CS0 區(qū)域

DSMC 的 CS0 片選對應的物理地址是 0xC0000000,軟件直接讀寫該地址即可訪問 FPGA。

② 4 字節(jié)對齊訪問

writel(write_buf[i], BASE_ADDR + i *4); // 每次寫入4字節(jié)read_buf[i] = readl(BASE_ADDR + i *4); // 每次讀取4字節(jié)

RK3506 的 DSMC 控制器要求訪問地址 4 字節(jié)對齊,因此使用 writel/readl 函數(shù),偏移量每次增加 4。

③ 性能測量

t_start = rt_hw_global_timer_get(); // 獲取硬件定時器計數(shù)值// ... 執(zhí)行寫入或讀取 ...t_end = rt_hw_global_timer_get();cycles = t_end - t_start;time_us = cycles / 24.0f; // 定時器頻率 24MHz

通過硬件定時器精確測量讀寫耗時,計算出實際帶寬。


五、運行結果

將示例工程編譯下載到睿擎派 RC3506,在串口終端執(zhí)行:

msh/>test_dsmc_read_write

輸出結果

==== DSMC TEST PASS ====Write: 73640 cycles, 3068.33 us, 5.09 MB/sRead : 240044 cycles, 10001.83 us, 1.56 MB/s

結果解讀

指標

寫入

讀取

數(shù)據(jù)量

16KB

16KB

耗時

3.07 ms

10.00 ms

帶寬

5.09 MB/s

1.56 MB/s

校驗結果

全部通過

全部通過

寫入帶寬達到5MB/s,讀取帶寬1.5MB/s,通過調整demo的時序和位寬,以及dma的加持,帶寬可以達到200MB/s。


六、FPGA 工程說明

6.1 FPGA 實現(xiàn)的功能

FPGA 側實現(xiàn)了一個LocalBus Server,功能如下:

接收 DSMC 發(fā)來的寫請求,將數(shù)據(jù)存入 16KB 內部 RAM

響應 DSMC 的讀請求,從 RAM 中讀出數(shù)據(jù)返回

提供狀態(tài) LED 指示通信活動

6.2 FPGA 工程遷移

如果需要將 FPGA 工程遷移到不同版本的 IDE,步驟如下:

在目標 IDE 上創(chuàng)建 PGL22GB-6MBG324 工程

添加源文件:dsmc.fdc、dsmc_port.v、led.v

配置 RAM 和 PLL IP 核

RAM IP 核配置:

8a8b4c14-38b3-11f1-ab55-92fbcf53809c.png

PGL22GB RAM IP 核配置:16KB 容量,32 位數(shù)據(jù)寬度

PLL IP 核配置:

8a9e4968-38b3-11f1-ab55-92fbcf53809c.png

PGL22GB PLL IP 核配置:生成 DSMC 所需時鐘


七、設備樹配置

DSMC 的引腳復用和時鐘頻率在設備樹中配置:

&dsmc { status ="okay"; clock-frequency = <12000000>; /* 12MHz,可修改 */ pinctrl-names ="default"; pinctrl-0= <&dsmc_pins>; dsmc_pins: dsmc-pins { pins ="GPIO0_A0","GPIO0_A1","GPIO0_A2","GPIO0_A3", "GPIO0_A4","GPIO0_A5","GPIO0_A6","GPIO0_A7", "GPIO0_B0","GPIO0_B1"; function="dsmc"; };};

注意事項

修改 clock-frequency 后,需同步修改 FPGA 側 PLL 配置

引腳復用配置需與硬件原理圖對應

當前示例使用 CS0,如需使用其他片選需修改設備樹


八、工程實現(xiàn)說明

當前 DSMC 為8 位寬模式,開啟 DSMC 的 CS0 的 FIFO region

默認頻率為12MHz,在示例工程的 board.dts 中可修改

除 DSMC 的引腳復用與時鐘,其他配置暫時不支持修改

DSMC 的 DMA 以及中斷暫時不支持開啟


九、應用場景

DSMC 與 FPGA 高速通信的典型應用場景:

場景

說明

高速 ADC 采集

FPGA 采集高速 ADC 數(shù)據(jù),通過 DSMC 傳輸給處理器

電機控制

FPGA 實現(xiàn)多路 PWM 和編碼器接口,處理器下發(fā)控制參數(shù)

視頻預處理

FPGA 做 ISP 前處理,通過 DSMC 傳輸給處理器編碼

協(xié)險品檢測

FPGA 實現(xiàn)多傳感器并行采集,處理器做 AI 推理


十、總結

這篇文章完整演示了睿擎派 RC3506 通過 DSMC 總線與 FPGA 實現(xiàn)高速通信:

理解 DSMC 的工作原理和內存映射機制

掌握 DSMC 與 FPGA 的硬件連接方式

學會使用 writel/readl 直接讀寫 DSMC 地址空間

完成 16KB 數(shù)據(jù)的讀寫測試和校驗

了解 FPGA 工程的配置和遷移方法

DSMC 為處理器與 FPGA 之間提供了一種帶寬適中、設計簡單、引腳可控的高速通信方案,非常適合工業(yè)控制和數(shù)據(jù)采集場景。

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

    關注

    1664

    文章

    22508

    瀏覽量

    639495
  • 總線
    +關注

    關注

    10

    文章

    3061

    瀏覽量

    91889
  • 高速通信
    +關注

    關注

    0

    文章

    57

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RK3576+紫光同創(chuàng)FPGA并口通信方案 基于DSMC/FlexBus并口的RK3576J與FPGA通信方案

    為大家?guī)砘?b class='flag-5'>DSMC/FlexBus并口的RK3576J與FPGA通信方案
    的頭像 發(fā)表于 05-20 11:45 ?5303次閱讀
    RK3576+紫光同創(chuàng)<b class='flag-5'>FPGA</b>并口<b class='flag-5'>通信</b>方案 基于<b class='flag-5'>DSMC</b>/FlexBus并口的RK3576J與<b class='flag-5'>FPGA</b><b class='flag-5'>通信</b>方案

    基于派輕松玩轉Modbus工業(yè)通信

    。今天,我們就帶來一篇實戰(zhàn)教程,教大家如何基于派/工業(yè)平臺,分別作為ModbusRTU主
    的頭像 發(fā)表于 07-23 17:05 ?4009次閱讀
    基于<b class='flag-5'>睿</b><b class='flag-5'>擎</b>派輕松玩轉Modbus工業(yè)<b class='flag-5'>通信</b>

    平臺實戰(zhàn):溫濕度采集到MQTT云端通信

    前言在物聯(lián)網(wǎng)時代,環(huán)境數(shù)據(jù)采集是構建智能系統(tǒng)的基礎能力。本文將帶您實戰(zhàn)一個完整的物聯(lián)網(wǎng)傳感器項目:使用平臺通過I2C總線讀取溫濕度數(shù)據(jù),
    的頭像 發(fā)表于 11-19 17:55 ?5451次閱讀
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平臺</b><b class='flag-5'>實戰(zhàn)</b>:溫濕度采集到MQTT云端<b class='flag-5'>通信</b>

    派】CANOpen總線之IO模塊讀寫(DS401協(xié)議)

    派以瑞芯微RK3506為主控芯片,底層搭載RT-Thread操作系統(tǒng),基于專為工業(yè)場景打造的工業(yè)平臺進行開發(fā)。該
    的頭像 發(fā)表于 12-24 18:01 ?7610次閱讀
    【<b class='flag-5'>睿</b><b class='flag-5'>擎</b>派】CANOpen<b class='flag-5'>總線</b>之IO模塊<b class='flag-5'>讀寫</b>(DS401協(xié)議)

    派】EtherCAT總線之IO模塊讀寫

    在上一篇文章《【派】CANOpen總線之IO模塊讀寫(DS401協(xié)議)》我寫了關于派上C
    的頭像 發(fā)表于 12-31 19:07 ?5979次閱讀
    【<b class='flag-5'>睿</b><b class='flag-5'>擎</b>派】EtherCAT<b class='flag-5'>總線</b>之IO模塊<b class='flag-5'>讀寫</b>

    平臺極簡開發(fā)重要實踐—— PinMux 配置工具 | 派試用名單公示

    RT-Thread工業(yè)開發(fā)平臺是為工業(yè)場景設計的軟硬件一體化開發(fā)方案,全棧自主可控,賦能用戶聚焦核心業(yè)務創(chuàng)新,大幅提升開發(fā)效率。
    的頭像 發(fā)表于 06-11 17:05 ?1678次閱讀
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平臺</b>極簡開發(fā)重要實踐—— PinMux 配置工具 | <b class='flag-5'>睿</b><b class='flag-5'>擎</b>派試用名單公示

    最后召集!明日工業(yè)平臺Workshop上海站開啟!現(xiàn)場體驗工業(yè)設備實戰(zhàn)開發(fā),最終席位即將關閉!

    明天(9月4日)下午1點,工業(yè)平臺深度實戰(zhàn)Workshop上海站將準時開啟!所有技術設備已調試完畢,開發(fā)套件、全套資料均已就位,僅剩最后少量席位,報名通道將于今日24:00正式關閉
    的頭像 發(fā)表于 09-03 14:47 ?1023次閱讀
    最后召集!明日<b class='flag-5'>睿</b><b class='flag-5'>擎</b>工業(yè)<b class='flag-5'>平臺</b>Workshop上海站開啟!現(xiàn)場體驗工業(yè)設備<b class='flag-5'>實戰(zhàn)</b>開發(fā),最終席位即將關閉!

    上海站圓滿收官!工業(yè)開發(fā)平臺Workshop深圳站報名開啟!9.18,現(xiàn)場體驗工業(yè)設備實戰(zhàn)開發(fā)|知行工坊

    工業(yè)開發(fā)平臺深度實戰(zhàn)Workshop上海站已圓滿結束!現(xiàn)場50余位開發(fā)者經(jīng)歷了4小時的高強度實戰(zhàn)?,F(xiàn)場氛圍熱烈,交流深入。這是一個充滿技
    的頭像 發(fā)表于 09-07 11:10 ?1186次閱讀
    上海站圓滿收官!<b class='flag-5'>睿</b><b class='flag-5'>擎</b>工業(yè)開發(fā)<b class='flag-5'>平臺</b>Workshop深圳站報名開啟!9.18,現(xiàn)場體驗工業(yè)設備<b class='flag-5'>實戰(zhàn)</b>開發(fā)|知行工坊

    上海站圓滿收官!工業(yè)開發(fā)平臺Workshop深圳站報名開啟!9.18,現(xiàn)場體驗工業(yè)設備實戰(zhàn)開發(fā) | 知行工坊

    上周四,工業(yè)開發(fā)平臺深度實戰(zhàn)Workshop上海站已圓滿結束!現(xiàn)場50余位開發(fā)者經(jīng)歷了4小時的高強度實戰(zhàn)?,F(xiàn)場氛圍熱烈,交流深入。這是一
    的頭像 發(fā)表于 09-09 17:26 ?1387次閱讀
    上海站圓滿收官!<b class='flag-5'>睿</b><b class='flag-5'>擎</b>工業(yè)開發(fā)<b class='flag-5'>平臺</b>Workshop深圳站報名開啟!9.18,現(xiàn)場體驗工業(yè)設備<b class='flag-5'>實戰(zhàn)</b>開發(fā) | 知行工坊

    深圳站報名火熱進行中!工業(yè)平臺線下實戰(zhàn) Workshop,親手實戰(zhàn)4小時解鎖工業(yè)級開發(fā)!|活動預告

    想一站式實戰(zhàn)QT圖形開發(fā)、EtherCAT通信、RPMSG多核交互?工業(yè)平臺深度實戰(zhàn)Work
    的頭像 發(fā)表于 09-14 10:04 ?1456次閱讀
    深圳站報名火熱進行中!<b class='flag-5'>睿</b><b class='flag-5'>擎</b>工業(yè)<b class='flag-5'>平臺</b>線下<b class='flag-5'>實戰(zhàn)</b> Workshop,親手<b class='flag-5'>實戰(zhàn)</b>4小時解鎖工業(yè)級開發(fā)!|活動預告

    【直播預告】10月14日晚8點|平臺首場實戰(zhàn)直播:從快速上手到實現(xiàn)遠程監(jiān)控網(wǎng)關

    一次直播,帶你完整走通工業(yè)網(wǎng)關開發(fā)全流程面對新的開發(fā)平臺,你是否也在為環(huán)境配置而頭疼?想要快速驗證平臺能力卻不知從何入手?好消息!平臺
    的頭像 發(fā)表于 10-09 14:46 ?735次閱讀
    【直播預告】10月14日晚8點|<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平臺</b>首場<b class='flag-5'>實戰(zhàn)</b>直播:從快速上手到實現(xiàn)遠程監(jiān)控網(wǎng)關

    【直播預告】10月14日 本周二晚8點|平臺首場實戰(zhàn)直播:從快速上手到實現(xiàn)遠程監(jiān)控網(wǎng)關

    一次直播,帶你完整走通工業(yè)網(wǎng)關開發(fā)全流程面對新的開發(fā)平臺,你是否也在為環(huán)境配置而頭疼?想要快速驗證平臺能力卻不知從何入手?好消息!平臺
    的頭像 發(fā)表于 10-13 16:29 ?1054次閱讀
    【直播預告】10月14日 本周二晚8點|<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平臺</b>首場<b class='flag-5'>實戰(zhàn)</b>直播:從快速上手到實現(xiàn)遠程監(jiān)控網(wǎng)關

    平臺 V26.04.02 發(fā)布:DSMC 驅動正式上線,共享內存 NFS 掛載全面支持

    親愛的開發(fā)者朋友們,平臺于2026年4月2日正式發(fā)布了V26.04.02版本更新。本次更新在RC3506與RC3562雙平臺上同步發(fā)力,帶來了D
    的頭像 發(fā)表于 04-08 20:31 ?390次閱讀
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平臺</b> V26.04.02 發(fā)布:<b class='flag-5'>DSMC</b> 驅動正式上線,共享內存 NFS 掛載全面支持

    直播預告 | V26.04.02 新特性實戰(zhàn)DSMC 雙向讀寫 + 共享內存 NFS 開箱即用

    雙系統(tǒng)之間傳數(shù)據(jù),還在用串口、拷文件?AMP混合部署,每次都要手配IP才能ping通?新版本發(fā)布了一堆特性,文檔看了兩遍還是不知道怎么上手?4月15日(周三)晚8點,我們把平臺V26.04.02
    的頭像 發(fā)表于 04-10 18:41 ?188次閱讀
    直播預告 | <b class='flag-5'>睿</b><b class='flag-5'>擎</b> V26.04.02 新特性<b class='flag-5'>實戰(zhàn)</b>:<b class='flag-5'>DSMC</b> 雙向<b class='flag-5'>讀寫</b> + 共享內存 NFS 開箱即用

    平臺AMP共享內存:Linux 與 RT-Thread 高速數(shù)據(jù)交換

    個核心問題。上一篇文章介紹了DSMC總線方案,適合與FPGA等外部設備高速通信。今天我們聚焦另一個場景——
    的頭像 發(fā)表于 04-22 18:09 ?328次閱讀
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平臺</b>AMP共享內存:Linux 與 RT-Thread <b class='flag-5'>高速</b>數(shù)據(jù)交換
    阳西县| 东乌珠穆沁旗| 博罗县| 增城市| 高唐县| 灵山县| 长白| 盐边县| 任丘市| 册亨县| 阿勒泰市| 江北区| 依安县| 衡东县| 崇州市| 武穴市| 湘潭市| 宁河县| 三台县| 汾阳市| 金秀| 寻乌县| 长白| 鹿泉市| 铁岭县| 凌云县| 阿坝| 阜康市| 靖江市| 屯留县| 太谷县| 许昌县| 玛沁县| 武定县| 开远市| 繁昌县| 读书| 温州市| 景德镇市| 承德县| 旬邑县|