FPGA学习笔记_李敏儿oc的博客-CSDN博客

TLV5618.v:实现DAC数模转换,产生模拟信号,输出指定电压值

时序图

FPGA学习笔记:数据采集传输系统设计(二):TLV5618型DAC驱动-CSDN博客

ADC128S052.v:实现ADC模数转换,将采集到的模拟信号转换为12位数字信号,实现单次AD采集

FIFO存储器:调用Quartus II自带的FIFO IP核,用于存储连续ADC采样的数据

FPGA学习笔记:数据采集传输系统设计(四):FIFO IP核调用与仿真波形解读_fpga dma传输来自fifo的数据-CSDN博客

UART串口:包含串口发送和串口接收,用于实现串口通信

ADC_FIFO.v:调用ADC128S052.v,实现连续AD采样,并将采样数据存储至FIFO存储器

module adc_fifo(input Clk,						//系统时钟input Rst_n,					//系统复位input Start,					//开始采集标志位output reg AD_Done,				//采集完成标志位input wire ADC_OUT,				//ADC串行数字信号output wire ADC_CS_N,			//ADC片选output wire ADC_DIN,			//串行数据送给ADC芯片output wire ADC_SCLK,			//ADC时钟output wire ADC_Done,			//单次AD采集完成标志位,仿真时使用input full,						//FIFO满标志位output reg wrreq,				//FIFO写使能output reg [11:0] FIFO_DATA		//FIFO数据输入
);parameter ADC_Cnt_MAX = 11'd128;  //AD采集次数/*****模块间信号连线*****/	reg ADC_Start;			//单次AD采集开始标志位wire [11:0] ADC_DATA;	//单次AD采集数据/*****本模块内部寄存器、参数定义*****/	reg ADC_State;			//连续采集状态reg [10:0] ADC_Cnt;		//采集128次计数器reg [2:0] state;localparam IDLE 			= 3'b001,	//空闲状态WAIT_ADC_DONE 	= 3'b010,	//等待单次AD采集完成WRITE_FIFO 		= 3'b100;	//延时一拍,数据写入FIFOalways@(posedge Clk or negedge Rst_n)if(!Rst_n) beginADC_Cnt <= 11'd0;ADC_Start <= 1'b0;wrreq <= 1'b0;FIFO_DATA <= 12'd0;state <= IDLE;endelse begincase(state)IDLE:if(ADC_State) beginADC_Start <= 1'b1;//开启单次AD采集state <= WAIT_ADC_DONE;endelsestate <= IDLE;WAIT_ADC_DONE:beginADC_Start <= 1'b0;if(ADC_Done == 1'b1) begin//等待AD采集完成FIFO_DATA <= ADC_DATA;wrreq = 1'b1;ADC_Cnt <= ADC_Cnt + 1'b1;state <= WRITE_FIFO;endelsestate <= WAIT_ADC_DONE;endWRITE_FIFO:beginwrreq = 1'b0;if(ADC_Cnt == ADC_Cnt_MAX)ADC_Cnt <= 11'd0;state <= IDLE;enddefault:state <= IDLE;endcaseendalways@(posedge Clk or negedge Rst_n)if(!Rst_n)AD_Done <= 1'b0;else	if(ADC_Cnt == ADC_Cnt_MAX)AD_Done <= 1'b1;else AD_Done <= 1'b0;always@(posedge Clk or negedge Rst_n)if(!Rst_n)ADC_State <= 1'b0;else if(Start)ADC_State <= 1'b1;else if(ADC_Cnt == ADC_Cnt_MAX)ADC_State <= 1'b0;//ADC采集模块adc128s052 adc1(.Clk(Clk),.Rst_n(Rst_n),.DATA(ADC_DATA),		//并行数字信号.Channel(3'd6),		//通道选择.Start(ADC_Start),   //开始标志位.Conv_done(ADC_Done),//完成标志位.ADC_CS_N(ADC_CS_N),	//片选.ADC_DIN(ADC_DIN), 	//串行数据送给ADC芯片.ADC_SCLK(ADC_SCLK),	//ADC时钟.ADC_OUT(ADC_OUT)		//串行数字信号);defparam adc1.DIV_PARAM = 8;//ADC时钟50/8 = 6.25Mhz
endmodule

FIFO_UART.v:从FIFO中读取转换后的数字信号,并将其通过UART发送至PC端

module fifo_uart_tx(input Clk,						//系统时钟input Rst_n,					//系统复位input Start,					//开始发送数据标志位input empty,					//FIFO空标志位input [11:0] FIFO_Q,			//FIFO数据输入output reg rdreq,				//FIFO读使能output reg Uart_done,		//所有数据发送完毕output wire uart_tx 			//串口数据发送端
);parameter UART_Cnt_MAX = 11'd128; //发送数据个数/*****模块间信号连线*****/	reg send_en;				//单次发送使能reg [7:0] send_data;		//单次发送数据wire tx_done;				//单次发送结束标志/*****本模块内部寄存器、参数定义*****/		reg [10:0] UART_Cnt;		//发送128次计数器reg [4:0] state;localparamIDLE 				= 5'b00001,		//空闲状态DELY 				= 5'b00010,		//空一拍延时,等待FIFO_Q数据更新SEND_HIGH 		= 5'b00100,		//发送ADC高四位数据SEND_LOW 		= 5'b01000,		//发送ADC低八位数据WAIT_SEND_DONE = 5'b10000;		//等待发送结束always@(posedge Clk or negedge Rst_n)if(!Rst_n) beginrdreq <= 1'b0;send_en <= 1'b0;send_data <= 8'd0;UART_Cnt <= 11'd0;state <= IDLE;endelse begincase(state)IDLE:if(empty == 1'b1) beginif(UART_Cnt == UART_Cnt_MAX)UART_Cnt <= 11'd0;state <= IDLE;endelse beginrdreq <= 1'b1;state <= DELY;endDELY:begin//空一拍延时,此状态FIFO_Q数据更新rdreq <= 1'b0;state <= SEND_HIGH;endSEND_HIGH:beginsend_en <= 1'b1;send_data <= {4'd0,FIFO_Q[11:8]};//发送ADC高四位state <= SEND_LOW;endSEND_LOW:beginif(tx_done)begin//等待发送完成send_en <= 1'b1;send_data <= FIFO_Q[7:0];//发送ADC低八位state <= WAIT_SEND_DONE;endelse beginstate <= SEND_LOW;send_en <= 1'b0;endendWAIT_SEND_DONE:beginif(tx_done) begin//等待发送完成UART_Cnt <= UART_Cnt + 1'b1;state <= IDLE;endelse beginstate <= WAIT_SEND_DONE;send_en <= 1'b0;endenddefault:state <= IDLE;	endcaseendalways@(posedge Clk or negedge Rst_n)if(!Rst_n)Uart_done <= 1'b0;else if(UART_Cnt == UART_Cnt_MAX)Uart_done <= 1'b1;elseUart_done <= 1'b0;//串口发送模块uart_data_tx data_tx(   .Clk(Clk),.Rst_n(Rst_n),.send_en(send_en),.data(send_data),.baud_set(3'd2),		//波特率9600.tx(uart_tx),			//数据发送端.tx_done(tx_done));
endmodule

FPGA学习笔记:数据采集传输系统设计(六):ADC采集FIFO缓存UART发送系统顶层及仿真_fpga adc-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88911.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88911.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/88911.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(C++)STL:stack、queue简单使用解析

stack 栈 简介 stack 栈——容器适配器 container adapter 与前面学的容器vector、list的底层实现不同&#xff0c;stack功能的实现是要借助其他容器的功能的&#xff0c;所以看stack的第二个模板参数是容器。 最大特点&#xff1a;LIFO&#xff1a;Last In, First Out&#xf…

在Adobe Substance 3D Painter中,已经有基础图层,如何新建一个图层A,clone基础图层的纹理和内容到A图层

在Adobe Substance 3D Painter中&#xff0c;已经有基础图层&#xff0c;如何新建一个图层A&#xff0c;clone基础图层的纹理和内容到A图层 在 Substance 3D Painter 中克隆底层纹理到新图层的最快做法 操作步骤 添加空白 Paint Layer 在 Layer Stack 顶部点击 → Paint La…

视频编码中熵编码之基于上下文的变长编码(Huffman霍夫曼编码和指数哥伦布)

视频编码中熵编码之基于上下文的变长编码&#xff08;Huffman霍夫曼编码和指数哥伦布&#xff09; 视频编码中熵编码之基于上下文的变长编码Huffman霍夫曼编码和指数哥伦布&#xff09;视频编码中熵编码之基于上下文的变长编码&#xff08;Huffman霍夫曼编码和指数哥伦布&#…

游戏玩法的专利博弈

首席数据官高鹏律师数字经济团队创作 AI辅助一、数字战场的护城河&#xff1a;游戏玩法的专利价值觉醒在数字经济的浪潮中&#xff0c;游戏行业正以每年超15%的增速重塑全球娱乐版图。2024年中国游戏市场规模突破3257亿元&#xff0c;用户规模达6.74亿&#xff08;数据来源&…

小架构step系列11:单元测试引入

1 概述 在还没有写什么代码之前&#xff0c;就引入单元测试&#xff0c;是要强调单元测试的重要性。当一套代码的生命周期比较长的时候&#xff0c;单元测试更加重要。生命周期长的代码&#xff0c;不管是产品人员还是开发人员&#xff0c;可能都会换了一批又一批&#xff0c;…

Linux 文件共享之 HGFS 共享配置全解析

一、前言在使用 VMware 虚拟机搭建 Linux&#xff08;以 Ubuntu 为例&#xff09;环境时&#xff0c;常常需要实现主机与虚拟机之间的文件共享&#xff0c;HGFS&#xff08;VMware Host-Guest File System&#xff09;就是一种常用的文件共享方式。通过它&#xff0c;我们可以方…

模块化设计赋能:定制组装锂电池设备的柔性生产解决方案

在锂电池行业快速迭代的背景下&#xff0c;定制化需求与规模化生产之间的矛盾日益凸显。传统锂电池组装设备采用固定式架构&#xff0c;功能模块高度耦合&#xff0c;导致设备换型周期长、兼容性差&#xff0c;难以适应电芯规格频繁变化、工艺路线持续升级的市场需求。模块化设…

Kubernetes 架构原理与集群环境部署

一&#xff1a;为什么需要 Kubernetes在业务开始进行容器化时&#xff0c;前期需要容器化的项目可能并不多&#xff0c;涉及的容器也并不多&#xff0c;此时基于 Docker 容器直接部署至宿主机也能实现基本的需求。但是随着项目越来越多&#xff0c;管理的容器也会越来越多&…

JavaScript中关于环境对象的拓展

1.环境对象的定义环境对象指的是函数内的特殊变量this&#xff0c;this指向函数的调用者它代表当前函数的运行环境在平常我们判断this经常用口诀谁调用它&#xff0c;它就指向谁&#xff0c;以下是几种常见情况1. 在全局作用域中&#xff0c;this指向window2.在函数中&#xff…

202507中央城市工作会议

国家终于要给城市"升级系统"了&#xff01;未来城市不再拼命盖新楼&#xff0c;而是让现有城区更安全、舒适、智能&#xff0c;且每个城市都要找到自己的特色发展路径 2025年7月北京“中央城市工作会议”。领导人聚在一起&#xff0c;讨论“怎么把中国城市搞得更好”…

springboot如何redis锁

如何解决超卖问题?超卖问题&#xff1a;就是多个线程并发执行&#xff0c;目前唯一方案是加锁。如图&#xff1a;悲观锁其实还有数据库的互斥锁。悲观锁是最常见的乐观锁实现的原理&#xff1a;版本号&#xff1a;这种方案就是&#xff1a;扣款库存的时候首先先查询版本号&…

minio批量删除对象不生效

下午在写minio上批量删除对象的逻辑&#xff0c;各种改对象名称&#xff0c;各种核对代码&#xff0c;发现啥都没错&#xff0c;但是删除就是不生效。 代码如下&#xff1a; from minio.deleteobjects import DeleteObjectdelete_object_list [DeleteObject("20250626/20…

如何设计实现开发自助重启工具-01-设计篇

自助重启系列 如何设计实现开发自助重启工具-01-设计篇 应用部署作业-02-流程 如何实现自助重启-03-实现篇 开发自助重启 说明&#xff1a;有时候研发产线需要重启&#xff0c;为了保证安全、或者说提升效率&#xff0c;最好有一个统一的研发自助重启页面。 这个功能可应…

ChatTongyi × LangChain:开启多模态AI应用创新之门

阿里云通义实验室推出的ChatTongyi&#xff08;基于通义千问大模型&#xff09;与LangChain框架的深度集成&#xff0c;为开发者打造了一套高效、灵活、全面的AI开发工具链。无论是文本对话、复杂任务自动化&#xff0c;还是图像理解&#xff0c;这一组合都为多场景智能应用的落…

Android Studio C++/JNI/Kotlin 示例 二

MainActivity.ktpackage com.demo.learn1import android.os.Bundle import android.util.Log import androidx.activity.ComponentActivityclass MainActivity : ComponentActivity() {// 加载原生库init {System.loadLibrary("native_code")}// 声明原生方法// 数学…

B树和B+树

B树B树&#xff0c;⼜称多路平衡查找树&#xff0c;B树中所被允许的孩⼦个数的最⼤值称为B树的阶&#xff0c;通常⽤m表示。⼀棵m阶B树或为空树&#xff0c;或为满⾜如下特性的m叉树&#xff1a; 1&#xff09;树中每个结点⾄多有m棵⼦树&#xff0c;即⾄多含有m-1个关键字。 2…

【版本控制】Perforce Helix Core (P4V) 完全入门指南(含虚幻引擎实战)

目录引言第一章&#xff1a;认识 Perforce Helix Core1.1 什么是 Perforce&#xff1f;1.2 P4V 是什么&#xff1f;1.3 核心概念速览1.4 为什么选择 Perforce&#xff1f;1.5 与 Git 的核心区别本章总结第二章&#xff1a;安装与配置2.1 安装原则&#xff1a;先服务端后客户端2…

LlamaFactory/unsloth Demo

内部叫Tuning-Factory 参数文档https://llamafactory.readthedocs.io/zh-cn/latest/index.html 高级技巧&#xff0c;如加速&#xff1a;https://llamafactory.readthedocs.io/zh-cn/latest/advanced/acceleration.html 0.环境 conda env list conda remove --name llm --all c…

水务工程中自动化应用:EtherNet/IP转PROFIBUS DP连接超声波流量计

在水务工程领域&#xff0c;自动化技术的应用愈发广泛。随着工业4.0概念的普及&#xff0c;不同通信协议的设备之间实现高效互联互通变得尤为关键。EtherNet/IP和PROFIBUS DP作为两种常见的工业通信协议&#xff0c;各有优势&#xff0c;在实际应用中&#xff0c;常需要将它们进…

网络协议和基础通信原理

网络协议和基础通信原理是理解互联网和各种网络应用的关键。让我用通俗易懂的方式&#xff0c;带你逐一深入讲解这些内容。 一、基础概念总览 TCP/IP协议族&#xff1a;互联网通信的基础&#xff0c;由一组协议组成&#xff0c;包括TCP、IP、UDP等。HTTP协议&#xff1a;基于T…