FPGA初学习2

1,

CPU:中央处理器

大脑,来去计算核心,执行指令,是具体的执行者,是根据 ARM 标准造出来的具体芯片。

ARM:处理器架构/IP

设计图纸/标准,ARM 设计了一套CPU 的指令集和架构方案,规定CPU长什么样,怎么干活。

PS:处理系统

集成了各种部件的完整系统级芯片 (SoC) 。在 FPGA(现场可编程门阵列)开发中,PS 特指 Zynq 等芯片中那部分类似于单片机 / 手机的完整操作系统区域 。它不仅仅是一个 CPU,而是包含了 CPU + 内存(DDR内存控制器) + 接口 + 总线 的一整套完整系统。

在 Zynq 芯片中,PS 区域通常包含 2-4 个 ARM 架构的 CPU 核。

PS 端控制寄存器:强调的是数据从"硬核区"传到了你的"逻辑区(PL)"。

ARM 跑代码:强调的是你在用 C 语言写指令,而不是在写 Verilog 线网。

CPU 占用率:是在关心这个核心算力够不够处理你的通信协议栈。

2,

发射链路(TX):

PS(DDR内存)→AXI DMA→(MM2S)→mac_inst→phy_inst→adda-intf_inst→出去

接收链路(RX):

进来→adda_intf_inst→phy_inst→mac_inst→AXI DMA→(S2MM)→PS(DDR内存)

2.1,DMA(直接内存访问)数据搬运

在通信系统中,如果你想发一个 1MB 的文件,靠 CPU 一个寄存器一个寄存器地写会把 ARM 累死。于是 ARM 会把数据放在 DDR 内存里,然后告诉 DMA 控制器:"去,把这块内存搬到 FPGA 里。"

msg_receive 模块就是负责在 PL(FPGA)这一端,把 DMA 搬过来的高速数据流接收下来,并转换成你的物理层能听懂的格式。

2.2, AXI-Stream (AXIS) 协议:数据流的黄金标准

注意端口名里的 tdatatlasttreadytvalid。这是 Xilinx 甚至整个业界通用的 AXI-Stream 协议

  • ps2pl_msg_tdata:这是货车上的"货物"(数据)。

  • ps2pl_msg_tvalid:货车说:"我现在有货,这批货是有效的。"

  • ps2pl_msg_tready:FPGA(接收端)说:"我准备好了,你卸货吧。"

  • ps2pl_msg_tlast :货车说:"这是这批货的最后一箱!"(在通信里通常表示一帧数据的结束)。

2.3,内部秘密:FIFO 缓冲

虽然代码里只看到一个实例化的壳子,但 msg_receive 内部通常藏着一个 FIFO (先进先出存储器)

  • 为什么要 FIFO? 因为 ARM 发数据的速度(AXI 总线速度)和你的物理层发射的速度(比如 SC-FDE 的符号速率)往往是不匹配的。

  • 缓存作用 :DMA 像倒水一样猛冲一波数据进来,存进 FIFO,然后你的 Physical_layer_core3 再像吸管一样,按照采样率一点点把数据抽走。

2.4,流序

<1>,先从DDR内存获取user_msg_rd_dout,

经由DMA控制器到MAC层,

在MAC层里处理换成写进物理层的数据phy_wr_dout,

令assign phy_bytes_in_tdata = phy_wr_dout;,

送进去物理层 .bytes_in ( phy_bytes_in_tdata ),

2.5,重点

控制信号(寄存器)通常先于数据到达。

  1. 第一步 :ARM 通过 reg_ctrl 先把 phy_mcs 设置好(比如设为 4,代表 16QAM)。

  2. 第二步 :ARM 再启动 DMA 往 msg_receive 灌数据。

  3. 第三步:物理层根据已经设置好的"4号模式"去处理这些进来的数据。

数据链路层物理层射频芯片

  • 数据源头ps2pl_msg_tdata (由 PS 端产生)。

  • 中转站 :进入 msg_receive 模块,输出 user_msg_rd_dout

  • 核心加工 :进入 Physical_layer_core3bytes_in 端口。

  • 输出波形 :从 Physical_layer_core3data_dac_i / q 出来。

  • 物理出口 :连到 system_wrapper 的引脚上,最终流向 AD9361。

相关推荐
劈星斩月4 小时前
监督学习算法 之 决策树
学习·算法·决策树
AOwhisky4 小时前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
woshihuanglaoshi4 小时前
数据迁移与版本管理 - Flutter在鸿蒙平台实现数据库升级策略
数据库·学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
世人万千丶14 小时前
参数管理_Flutter在鸿蒙平台路由参数最佳实践
学习·flutter·华为·harmonyos·鸿蒙
遇乐的果园17 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园18 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
从零开始的代码生活_19 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
可乐奶茶sky19 小时前
AI Agent 学习
人工智能·学习
茯苓gao20 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习
RD_daoyi21 小时前
外链权重暴跌至13%,品牌提及反超传统链接——2026年不做Digital PR,你的独立站等于隐形
运维·网络·学习·机器学习·搜索引擎