当前位置:首页 > 后端开发 > 正文内容

FPGA驱动adc128s052的几个问题

邻居的猫1个月前 (12-09)后端开发1289

FPGA驱动adc128s052的若干细节问题

usbblaster最好是直接与电脑USB口衔接, 运用拓宽坞会呈现古怪驱动问题.

adc数据手册阐明

附上adc128s052时序手册
image
ADC芯片cs引脚持续拉低,则每次采完16bit后持续新的16bit
留意 : adc128s052数据手册信号针对于芯片自身,而非外部接口,即adc芯片DIN芯片引脚需求外接控制板输出引脚, DOUT引脚接控制板din引脚,adc芯片时序也仅针对芯片作业自身!!!

规划原理图

因为之前遗留问题, 故特规划次板用于adc验证, 图中可知, IN0与IN7均为地电平, 因而通道数据为16'h0000
image

ADC收集数据通道数据通道不对齐

signaltap 波形抓取图画

此为通道数据与通道不对齐状况

image

依据测验板规划结构, 通道0与通道7接gnd, 因而adc采纳数据为零. 可是在代码编写过程中, adc收集数据与通道数据产生不一致

代码剖析

原规划代码如下

assign done		= 	(cnt == CNT_MAX) ? 1'b1 : 1'b0;

// done为第16个上升沿时钟

always@(posedge clk or negedge rst_n) begin
	if(!rst_n) begin
		data <= 16'h5a5a;
		cnt_channel <= 'd0;
	end else if(done) begin
		data <= t_data;
		cnt_channel <= cnt_channel + 1'b1;
	end else begin
		data <= data;
		cnt_channel <= cnt_channel;
	end
end

在代码中, 当完结信号来暂时, 将数据更新到data之中, 在此刻通道数也进行加1, 正是因为这个操作导致了通道数与通道数据不对齐.即数据更新与通道更新同步进行,可是此刻的数据是上一个通道的数据,例 : 当通道0数据收集完后, 数据更新到寄存器, 可是此刻,通道数却变成了1.

通道数据与通道不对齐批改

既然是因为数据与通道同步更新导致不对齐问题, 那么就运用adc时序中,DIN在前俩bit不必赋值来进行修正 : 现在将通道数自加的操作向后延时, 代码如下

always@(posedge clk or negedge rst_n) begin
	if(!rst_n)
		channel_d <= 2'd0;
	else
		channel_d <= {channel_d[0], done};
end

always@(posedge clk or negedge rst_n) begin
	if(!rst_n)
		cnt_channel <= 'd0;
	else if(channel_d[1])
		cnt_channel <= cnt_channel + 1'b1;
	else
		cnt_channel <= cnt_channel;
end

先将done信号进行二级打拍处理, 运用延时标志信号进行通道数自加的规范,以此完结了不对齐问题

现在只需求在done信号降临的时分进行数据读取即可得到正确的通道数以及对那个的通道数据
image

代码规划部分

全体思路仍是运用计数器驱动时钟信号, 剩余的便是依据芯片时序图进行编写代码.
code url : click here.

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=255

分享给朋友:

“FPGA驱动adc128s052的几个问题” 的相关文章

go人体,基因本体与生物信息学的桥梁

go人体,基因本体与生物信息学的桥梁

您好,关于“go人体”的搜索结果中,大部分内容与围棋相关,并未找到直接与“人体”相关的信息。请问您是否需要了解有关围棋的内容,例如围棋的基本规则、历史背景、艺术价值等?如果您有其他具体需求,请告诉我,我会尽力为您提供帮助。探索GO人体:基因本体与生物信息学的桥梁随着生物信息学的发展,基因本体(Gen...

r语言attach,深入理解R语言中的attach与detach函数

r语言attach,深入理解R语言中的attach与detach函数

在R语言中,`attach`函数用于将数据框(data frame)或列表(list)中的变量自动绑定到全局环境中,使得这些变量可以直接使用它们的名称而不需要前缀。这可以简化代码,使得对数据框或列表中的变量进行操作时更加方便。例如,假设你有一个名为`data`的数据框,其中包含变量`x`、`y`和`...

怎么打开php文件,全面指南

在Windows系统中,你可以通过以下步骤打开PHP文件:1. 安装PHP环境:确保你的计算机上安装了PHP环境。你可以从PHP官方网站下载并安装PHP。2. 安装文本编辑器:安装一个文本编辑器,如Notepad 、Sublime Text或Visual Studio Code等。这些编辑器支持多...

c语言定义全局变量, 什么是全局变量

c语言定义全局变量, 什么是全局变量

在C语言中,全局变量是在函数外部声明的变量,它们可以被程序中的所有函数访问。全局变量在整个程序的生命周期中都是存在的,除非被显式地修改。全局变量通常用于存储在整个程序执行期间都需要访问的数据。定义全局变量的基本语法如下:```c数据类型 变量名 = 初始值;```这里的数据类型可以是任何有效的C语言...

scala伴生对象,深入理解其概念与用法

Scala中的伴生对象(Companion Object)是一种特殊的对象,它和类有相同的名称,并被放置在同一个源文件中。伴生对象通常用于存放与类相关的静态方法或字段。在Scala中,没有静态方法或静态字段的概念,但是伴生对象提供了类似的功能。 创建伴生对象在Scala中,创建伴生对象非常简单。你只...

c语言英文,Introduction to C Programming Language

c语言英文,Introduction to C Programming Language

C语言(C Programming Language)是一种通用的、过程式的编程语言,广泛应用于系统软件、嵌入式软件以及一些高级应用软件的编写。它由Dennis Ritchie在1972年设计,最初用于编写UNIX操作系统。C语言具有高效、灵活和可移植性强的特点,因此被广泛应用于各种操作系统、编译器...