FPGA零基础学习之TLC5620驱动教程

时间:2025-04-28  作者:Diven  阅读:0

在FPGA处理完数字信号之后,我们有些情况下是需要将数字信号转变为模拟信号再输出的。比如音频信号在滤波后,需要转换为声音信号进行输出。此次,我们要讲数字信号转换为电压信号进行输出,以便我们后续可以用示波器之类的器械观察信号。

FPGA零基础学习之TLC5620驱动教程

我们采用的芯片为TLC5620,是一款8bit四通道的数模转换器。

在四路通道中,我们可以设置4种不同的参考电压进行转换使用。但是在此次实验中,我们采用的四路参考电压一样,如下图:

接下来我们介绍一下此芯片的一些特征以及手册对芯片的描述。下图为官方手册对芯片的一段描述:

TLC5620是一款使用3线串行总线控制的芯片。11bit的命令中包含8bit数据、2bit通道选择、1bit输出范围选择bit。输出范围选择,可以输出一倍或者两倍的参考电压差值范围。当两级锁存器都打开时,新的数据可以进入到芯片。下图为芯片的框图:

端口介绍:

我们的数据为8bit,那也就是将电压范围划分为256份,我们的数字信号会对应成电压进行输出,所以我们的输出电压的计算公式为:

接下来我们看一下时序图:

当LOAD为高电平时,数据被锁存进DATA在每一个时钟下降沿,一旦数据所有的bit被采集到,LOAD被拉低,将寄存器中的数据传输到被选择的DAC中。如图一所示,当LDAC为低电平时,LOAD信号拉低,被选择的DAC芯片输出电压会更新。如果LDAC为高电平,电压更新将会被禁止,直到我们将LDAC拉低,如图二:

对于我们的通道选择,如下图:

当RNG=0时,输出电压为一倍范围,当RNG=1时,输出电压为两倍范围。

接下来,我们来做一下芯片的驱动,同样可以使用线性序列机。转换总周期为11us的时间。

首先我们先新建工程。

新建代码文件,写入代码:

驱动代码如下:

 

1 Module tlc5620_driver(2 3 input wire clk,4 input wire rst_n,5 input wire [7:0] data,6 7 output reg da_clk,8 output reg da_data,9 output wire da_ldac,10 output reg da_load11 );1213 parameter t = 550;14 parameter select_bit = 2'b00;15 parameter RNG = 1'b1; //0代表输出1倍,1代表输出两�??16 17 reg [9:0] cnt;18 19 assign da_ldac = 1'b0;2021 always @ (posedge clk, negedge rst_n)22 begin23 if(rst_n == 1'b0)24 cnt <= 10'd0;25 else if(cnt == t - 1)26 cnt <= 10'd0;27 else28 cnt <= cnt + 1'b1;29 end30 31 always @ (posedge clk, negedge rst_n)32 begin33 if(rst_n == 1'b0)34 begin35 da_clk <= 1'b0;36 da_data <= 1'b0;37 da_load <= 1'b1;38 end39 else40 case(cnt)41 0 : begin da_clk <= 1'b1; da_data <= select_bit[1]; da_load <= 1'b1; end42 24 : begin da_clk <= 1'b0; end43 49 : begin da_clk <= 1'b1; da_data <= select_bit[0]; end44 74 : begin da_clk <= 1'b0; end45 99 : begin da_clk <= 1'b1; da_data <= RNG; end46 124 : begin da_clk <= 1'b0; end47 149 : begin da_clk <= 1'b1; da_data <= data[7]; end48 174 : begin da_clk <= 1'b0; end49 199 : begin da_clk <= 1'b1; da_data <= data[6]; end50 224 : begin da_clk <= 1'b0; end51 249 : begin da_clk <= 1'b1; da_data <= data[5]; end52 274 : begin da_clk <= 1'b0; end53 299 : begin da_clk <= 1'b1; da_data <= data[4]; end54 324 : begin da_clk <= 1'b0; end55 349 : begin da_clk <= 1'b1; da_data <= data[3]; end56 374 : begin da_clk <= 1'b0; end57 399 : begin da_clk <= 1'b1; da_data <= data[2]; end58 424 : begin da_clk <= 1'b0; end59 449 : begin da_clk <= 1'b1; da_data <= data[1]; end60 474 : begin da_clk <= 1'b0; end61 499 : begin da_clk <= 1'b1; da_data <= data[0]; end62 524 : begin da_clk <= 1'b0; end63 529 : begin da_load <= 1'b0; end64 default : ;65 endcase66 end67 68 endModule

 

在写驱动代码时,我们需要注意时序图中的一些时间要求,比如,数字信号的建立时间和保持时间,以及load信号的建立时间与保持时间。时间要求如下图:

由上图可以得出,芯片的驱动时钟最大为1MHz。数据的建立时间与保持时间最小值都为50ns。如果我们在时钟上升沿发送数据,那么我们发送的数据,建立时间与保持时间最小值为500ns。满足条件。

接下来我们写一下仿真看一下波形。

代码如下:

 

1 `timescale 1ns / 1ps2 3 module tlc5620_driver_tb;4 5 reg clk;6 reg rst_n;7 reg [7:0] data;8 9 wire da_clk;10 wire da_data;11 wire da_ldac;12 wire da_load;1314 initial begin15 clk = 1'b0;16 rst_n = 1'b0;17 data = {$random}%256;18 #105;19 rst_n = 1'b1;20 #11000;21 repeat(10) begin22 data = {$random}%256;23 #11000;24 end25 #1000;26 $stop;27 end2829 always #10 clk = ~clk;30 31 tlc5620_driver tlc5620_driver_inst(32 33 .clk (clk ),34 .rst_n (rst_n ),35 .data (data ),36 37 .da_clk (da_clk),38 .da_data (da_data),39 .da_ldac (da_ldac),40 .da_load (da_load)41 );4243 endmodule

 

运行波形,观察仿真波形:

观察da_clk、da_data、da_load、da_ldac波形全部正常,即说明驱动正确。


审核编辑:刘清

猜您喜欢

贴片电阻上标注的100代表其阻值为100欧姆。这种三位数的标识法是贴片电阻常用的表示方式,前两位数字表示有效数值,最后一位数字表示10的n次方(n为最后一位数字...
2024-11-29 10:26:26

贴片电阻盘通常以卷带包装,要快速确定数量,主要看两个地方:盘上标签和卷带本身。盘上标签一般会直接印有电阻数量,例如1000pcs表示一千个。如果没有明确数量,标...
2024-11-29 10:26:22

LED分段驱动器在现代照明系统中是很重要的配件。当无法正常工作时,可能会导致整套照明系统效率降低。对于一般用户来说,了解如何判断LED分段驱动器是否损坏,是维护...
2024-06-21 00:00:00

贴片电阻在电子电路中应用广泛,准确测量其阻值至关重要。常用的测量方法主要有以下几种:万用表测量: 这是最常见且便捷的方法。将万用表调至电阻档位,表笔接触电阻两端...
2024-11-26 11:29:51

现代电子产品中,贴片电阻作为重要的基础元件,被应用于各种电路设计中。了解贴片电阻的规格型号对照表,不仅有助于工程师在选型时做出更明智的决策,也能提高电路设计的效...
2025-03-17 23:30:02

EMC滤波器是重要的电气设备,主要用于抑制电磁干扰(EMI),保护电子设备的正常运行。通过滤波技术,能够有效地减少来自电源线或信号线的高频噪声,确保设备之间的信...
2023-05-12 00:00:00

流量开关是工业自动化中常用的设备,主要用于监测流体的流动状态。根据工作原理和应用场景的不同,流量开关可以分为几种类型。机械式流量开关通过浮球或叶片的运动来感应流...
2011-01-23 00:00:00

贴片电阻上的「122」并不是直接代表阻值,而是一种编码方式。它代表的是1200欧姆,也就是1.2kΩ的阻值。这种编码方式通常用于三位数的贴片电阻。前两位数字代表...
2024-11-26 11:29:54

数字比较器是重要的电子元件,应用于多个领域。在通信领域,数字比较器用于信号处理和数据传输,确保信息的准确性和可靠性。在计算机系统中,用于算术运算和逻辑判断,提升...
2013-08-23 00:00:00

贴片电阻6803,别看身材小巧,却是电子电路中很重要的基础元件。表面印有6803字样,代表着68000欧姆的阻值,也就是68kΩ。这种电阻应用于各种电子产品,从...
2024-11-29 10:26:42