ADC采集、緩存

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…