FPGA控制——基于FSM的TLC5615之SPI建模

本文详细介绍了如何使用FPGA基于状态机实现SPI协议来控制TLC5615 DAC芯片。讨论了TLC5615的时序控制原理,包括SPI协议、时钟限制、输出频率限制等,并通过状态机建模解决了SPI通信中的数据交互和时序控制问题。通过仿真和实物测试验证了设计的正确性,强调了状态机在FPGA设计中的重要性以及相异边沿数据处理的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

真的是好久不见!

此篇博客介绍TLC5615的控制之SPI建模。

PART1:TLC5615及其时序控制原理介绍

TLC5615是TI公司的一款10位DAC芯片,控制兼容SPI接口。其引脚图如下:

从引脚图看到,通信接口为:DIN、SCLK、CS_N和DOUT,其中DOUT用于级联方式,本次设计采用的是非级联方式,故不用到DOUT;模拟接口:OUT(模拟电压输出)、REF(基准电压输入)。

(2019.07.12)对tlc5615芯片描述进行相关补充:

1、sclk串行移位时钟的最快频率限制:该值有spi传输协议限制,一般取决于Tsclk的高低电平的最小值之和。由手册可知,tw(CH)=tw(CL)=25ns(最小值),则fsclk_max=1/50ns=20MHz,留有一定空间,故fsclk不能过大,手册给出经验值14MHz,设计时按照此值即可。

2、dac输出极限频率限制:

手册中有个概念,名为Setting time(注意不是建立时间setting up time),其义为:当输入的数字16进制码(12bit)从000变化到3ff(或者从3ff变化到000),dac输出电压保持稳定在目标电压的+-0.5LSB范围内的时间,也可以称之为广义的建立时间。按这样定义的话,这个参数决定了dac的输出频率,因为这个时间概念是一个范围概念,其包括了很多个时间之和(隐含从000à001的时间以及001à010的时间等等,他是这之间所有变换的时间之和),则fo_max=1/(2*12.5us)=40KHz,很多资料说是80KHz(只取12.5us,这里的意思是全范围内的输出的更新率,如从0V输出到5V输出,这个时间间隔是12.5us,那么输出正弦波的频率就应该小于40KHz),关于这点,我会做了验证之后再下结论。

验证:实验验证得,最大输出正弦波频率约25KHz。输出波形如下(已失真,这可能与芯片有关,这不一定是原装芯片,但从这个趋势知其输出一定是达到不了80KHz的,实际中建议控制在20KHz以内):

3、更新速率:手册上是1.21MHz,即tp(CS)=tp(CSH)+tp(CSL) = 16*tsclk+tw(CS)=16*50ns+20ns=820ns,则fupdata=1/820ns=1.21MHz

其通信协议为SPI(串行外设接口),相关spi协议知识,可参看:https://blog.youkuaiyun.com/zjy900507/article/details/79660273

因为tlc5615作为从设备,故通信数据线只需要sda即可。(2019.05.31)

 

PART2:基于状态机的spi协议的实现。(2019.6.11)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值