FPGA实战(52): FPGA数据生成与DMA上传模块设计详解 一、引言在FPGA开发中,经常需要模拟数据源或进行DMA(直接内存访问)测试。本文介绍一套通用的数据生成与上传控制模块,包含复位同步延迟、可调速测试数据生成、FIFO反压处理以及数据源选择功能。该设计已应用于某高速采集系统,稳定可靠,可复用性强。二、整体架构系统由三个独立模块组成:rst_block– 上电/手动复位同步与延迟模块,输出系统所需的正、负极性复位信号。gen_test_data– 可变速的测试数据发生器,支持FIFO满反压。gen_dma_data– DMA上传数据选择器,可选择内部测试数据或外部输入数据,并驱动DMA上传使能。三、模块详细说明3.1 复位模块rst_block功能点输入手动复位信号man_rst(高有效异步复位)。输出两个系统复位信号:sys_rst_n:低电平有效,用于复位大多数逻辑。sys_rst:高电平有效,方便某些需要正电平复位的模块。内部实现复位延迟计数器,计数满0x131_2D00(约20ms @ 100MHz)后释放复位,确保电源和时钟稳定。创新点双极性输出:同时提供正、负有效复位,适应不同IP核的复位极性需求。可配置延时:延迟值可根据实际时钟频率调整,确保系统完全初始化。异步复位同步释放:采用同步释放逻辑(此处用异步复位、同步释放的计数器计数方式),避免复位释放时的亚稳态。关键代码片段// 复位延迟计数器 always @(posedge i_clk , posedge i_rst) begin if(i_rst) r_sys_rst_cnt = 'd0; else if(r_sys_rst_cnt 'h131_2D00) r_sys_rst_cnt = r_sys_rst_cnt + 'd1; else r_sys_rst_cnt = r_sys_rst_cnt; end // 产生低有效复位 always @(posedge i_clk , posedge i_rst) begin if(i_rst) ro_sys_rst_n = 'd0; else if(r_sys_rst_cnt 'h131_2D00) ro_sys_rst_n = 'd0; else ro_sys_rst_n = 'd1; end3.2 测试数据发生器gen_test_data功能点输入speed_div(16位分频值),控制数据生成速率。输入fifo_full(FIFO满信号),反压停止输出。输出test_en(1个时钟周期的脉冲使能)和test_data(32位递增值)。内部计数逻辑:当fifo_full无效且计数达到speed_div时,产生一个有效脉冲,同时测试数据加1。创新点速率灵活可调:通过speed_div寄存器可动态改变生成频率,适应不同测试场景。FIFO反压机制

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/29 2:52:50
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/29 2:52:51
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/29 1:29:30
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/29 1:39:24
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/28 17:20:49
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/29 2:52:53

日新闻

周新闻