0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数字电压表设计教程之使用FPGA实现SPI协议通讯

友晶FPGA 来源:友晶FPGA 2025-10-07 09:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

代码解析

LTC2308通过一个标准4线SPI数字接口进行通信。LTC2308模数转换芯片有8个ADC通道和12位的分辨率,输入信号时钟频率范围不超过500KHz,按照Nyquist采样定理则建议输入信号在250KHz以下。

以下是DE10-Standard开发板上的LTC2308电路:

c92816c8-8c65-11f0-8c8f-92fbcf53809c.png

从电路图可知,LTC2308的COM引脚接GND,代表当前DE10-Standard开发板上的LTC2308被固定为单极性输入。

LTC2308的SPI协议时序图如下:

c989f690-8c65-11f0-8c8f-92fbcf53809c.png

LTC2308控制模块(adc_ltc2308.v)框图如下:

c9ea0724-8c65-11f0-8c8f-92fbcf53809c.png

信号列表如下:

ca443168-8c65-11f0-8c8f-92fbcf53809c.png

模块参数设计:

DE10-Standard开发板手册(DE10-Standard_User_manual.pdf)提到如果想设置采样率100Ksps,只需设置tHCONVST 为 320即可。接下来看看320这个数值是如何计算出来的。

根据LTC2308数据手册我们知道其最高采样率是500ksps, SCK最高能达到40MHz, tCONV 的典型值是1.3 us,最大值是 1.6 us。100Ksps的时间周期是10us,40MHz的时间周期是25ns。一次整个过程(包括转换和采样)要占用10us/25ns=400 个周期。1.6us/25ns= 64, 那么tCONV 最多占用64个时钟周期。

caa64cb8-8c65-11f0-8c8f-92fbcf53809c.png

根据时序图和代码来看,64+12+320=396大约是400 。

adc_ltc2308.v代码里面参数设定如下:

cb03b56a-8c65-11f0-8c8f-92fbcf53809c.png

代码详解:

一旦检测到触发信号measure_start的上升沿,adc_ltc2308 模块的系统复位信号就置0:

cb62783e-8c65-11f0-8c8f-92fbcf53809c.png

设计一个计数器,对LTC2308的一次完整转换和采集过程所需的时钟周期数进行数节拍:

cbba2c96-8c65-11f0-8c8f-92fbcf53809c.png

输出ADC_CONVST信号(也就是标记出tWHCONV时间段):

cc126b7c-8c65-11f0-8c8f-92fbcf53809c.png

输出SCK时钟,ADC_SCK周期为40MHz,但每一次只有12个周期输出,其他时间输出低电平0 :

cc6f7fec-8c65-11f0-8c8f-92fbcf53809c.png

在clk下降沿时刻,将转换完成的数据写入到到寄存器中:

ccc84f14-8c65-11f0-8c8f-92fbcf53809c.png

measure_done是一次采集完成标志,每次检测到LTC2308的触发信号上升沿时measure_done信号归0,当一次采集完成后置1:

measure_done是一次转换+传输+采样完成的标志,measure_done信号在开始新一轮采样后清0,当传输完成后置1:

cd2131b0-8c65-11f0-8c8f-92fbcf53809c.png

reset_n、clk_enable、measure_done、ADC_CONVST和ADC_SCK信号波形标出如下:

cd7c7e6c-8c65-11f0-8c8f-92fbcf53809c.png

根据输入(measure_ch)的通道选择不同的配置字存储到寄存器config_cmd:

cdd7c736-8c65-11f0-8c8f-92fbcf53809c.png

然后根据LTC2308的时序图标记出配置字的三个阶段(三个状态):config_init(配置初始化时间段) 、config_enable(可配置时间段) 和 config_done(配置完成时间段)。

config_init(配置初始化时间段):初始状态下,将配置字的高字节赋给ADC_SDI

config_enable(可配置时间段):将配置字剩余的5个bit逐个赋给ADC_SDI

config_done(配置完成时间段):配置完成阶段将0赋给ADC_SDI

ce390f46-8c65-11f0-8c8f-92fbcf53809c.png

ce9a4022-8c65-11f0-8c8f-92fbcf53809c.png

打开~DE10_Standard_ADCstp1.stp 文件(关于Signaltap调试工具的使用请参考之前的推文:SDRAM读写),采样时钟设置的是PLL outclk_0输出的100M,ADC_CONVST作为触发信号:

cef44770-8c65-11f0-8c8f-92fbcf53809c.png

可得到 LTC2308控制模块(adc_ltc2308.v)内部信号的波形如下。

测量11次,第一次的数据忽略, 取后面10次的数据:

cf5d2dc6-8c65-11f0-8c8f-92fbcf53809c.png

ADC_CLK 输出12个时钟周期:

cfbb2a84-8c65-11f0-8c8f-92fbcf53809c.png

若 stp1.stp 文件采样时钟设置为PLL outclk_1输出的40M,则波形细节如下:

ADC_CONVST占用4个时钟周期(tick=0、1、2、3):

d017cce4-8c65-11f0-8c8f-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22280

    浏览量

    630047
  • 接口
    +关注

    关注

    33

    文章

    9443

    浏览量

    156108
  • adc
    adc
    +关注

    关注

    100

    文章

    7377

    浏览量

    553672
  • 引脚
    +关注

    关注

    16

    文章

    2085

    浏览量

    55114
  • SPI协议
    +关注

    关注

    0

    文章

    23

    浏览量

    8785

原文标题:05-基于FPGA和LTC2308的数字电压表设计-用FPGA实现SPI协议通讯

文章出处:【微信号:友晶FPGA,微信公众号:友晶FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于FPGA和LTC2308模数转换芯片的数字电压表设计

    通过FPGA对模数转换芯片(LTC2308)的采样控制,实现一个简易的数字电压表
    的头像 发表于 08-16 08:58 5107次阅读
    基于<b class='flag-5'>FPGA</b>和LTC2308模数转换芯片的<b class='flag-5'>数字</b><b class='flag-5'>电压表</b>设计

    源码系列:基于FPGA数字电压表(AD)设计

    今天给大侠带来基于FPGA数字电压表设计,附源码,获取源码,请在“FPGA技术江湖”公众号内回复“数字
    发表于 05-28 17:29

    基于Labview串口通讯的虚拟数字电压表的设计

    基于Labview串口通讯的虚拟数字电压表的设计
    发表于 09-04 13:47

    版主 你好,我在论坛查到FPGA数字电压表的设计已经过期了。

    版主你好,我在论坛查到FPGA数字电压表的设计已经过期了。能不能重新发一份FPGA数字电压表
    发表于 04-08 14:42

    请问如何利用CPLD实现智能数字电压表的设计?

    如何利用CPLD实现智能数字电压表的设计?数字电压表系统是如何组成的?其工作原理是什么?如何实现
    发表于 04-13 06:07

    怎么利用FPGA实现数字电压表的设计

    怎么利用FPGA实现数字电压表的设计?
    发表于 05-06 10:19

    数字电压表的VHDL设计与实现

    数字电压表的VHDL设计与实现 介绍数字电压表的组成及工作原理,论述了基于VHDL语言和FPGA
    发表于 10-12 19:14 2124次阅读
    <b class='flag-5'>数字</b><b class='flag-5'>电压表</b>的VHDL设计与<b class='flag-5'>实现</b>

    数字电压表的设计

    数字电压表的设计 设计内容与要求: 1)设计数字电压表电路;要求直流电压测量范围:0V~1.999V,0V~19.99V, 0V~199
    发表于 05-24 18:10 5835次阅读
    <b class='flag-5'>数字</b><b class='flag-5'>电压表</b>的设计

    电压表protues仿真 基于51数字电压表仿真设计 电压表程序

    电压表protues仿真 基于51数字电压表仿真设计 电压表程序设计
    发表于 01-14 22:32 242次下载

    基于LabVIEW8.2的虚拟数字电压表的设计和实现

    。对虚拟数字电压表的设计和实现进行了详细描述,包括基于LabVIEW 8.2的虚拟信号发生器的实现过程,它能产生正弦、方波、三角波及由输入数学公式确定的复杂自编辑波形。最后,对设计的虚
    的头像 发表于 08-13 08:08 8392次阅读
    基于LabVIEW8.2的虚拟<b class='flag-5'>数字</b><b class='flag-5'>电压表</b>的设计和<b class='flag-5'>实现</b>

    FPGA数字电压表的程序资料免费下载

    本文档的主要内容详细介绍的是FPGA数字电压表的程序资料免费下载。
    发表于 02-26 16:26 29次下载
    <b class='flag-5'>FPGA</b><b class='flag-5'>数字</b><b class='flag-5'>电压表</b>的程序资料免费下载

    如何使用FPGA实现数字电压表的设计

    :采用 EDA(电子设计自动化)技术和 FPGA(现场可编程门阵列)芯片设计数字电压表。 整个设计采用 VHDL由 ADC0809转换控制模块、数据转换模块、译码模块组成。并在 MAX +PLUSⅡ 下进行软件编程
    发表于 04-28 08:00 8次下载
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b><b class='flag-5'>数字</b><b class='flag-5'>电压表</b>的设计

    基于FPGASPI协议及设计实现

    基于FPGASPI协议及设计实现博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨询,欢迎大家前来投稿,谢谢!引言介绍在电子通信领域里采用的通信
    发表于 11-05 19:05 24次下载
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>SPI</b><b class='flag-5'>协议</b>及设计<b class='flag-5'>实现</b>

    数字电压表的原理与特点

    数字电压表(DVM,也称为数字多用表或简称DMM)是现代电子测量领域中不可或缺的一种测量仪器。与传统的模拟电压表相比,数字
    的头像 发表于 05-21 16:54 4489次阅读

    数字电压表概述_数字电压表的作用

    数字电压表(Digital Voltmeter,简称DVM)是一种采用数字化测量技术,将连续的模拟量转换成不连续、离散的数字形式并加以显示的电子仪器。以下是对
    的头像 发表于 01-28 14:14 2256次阅读