首页 > 技术 > 内容

FPGA Vivado-TLC549驱动设计介绍

时间:2025-11-29  作者:Diven  阅读:0

在生活中,数模转换的例子到处可见。但是在我们做FPGA设计时,需要对数字信号进行处理,但是,不是所有的信号都是以数字信号的形式体现的,比如光信号、声信号、电信号等等。那么此时就需要我们先进行一下模数转换之后再进行处理。在此,我们将介绍一款模数转换芯片TLC549。

TLC549是一款串行总线控制的8bit模数转换芯片,封装如下图:

管脚说明:

芯片特征:

1、8bit A/D转换器

2、最大转换时间为17us。

3、供电3V~6V之间。

4、低功耗最大功率为15mW。

在官方手册中,对此芯片有这样的一段描述:

在这段描述中,大致说出了这个芯片的一些控制。比如:TLC548和TLC549都是8bit的模数转换器。这个芯片使用I/O CLOCK和CS_N来控制数据。TLC548的I/O CLOCK最大频率为2.048MHz,TLC549的I/O CLOCK最大频率为1.1MHz。

在这段描述中可以看出,AD芯片的数据输出,需要在I/O CLOCK和CS_N的控制下才能进行。

芯片示意图:

从图中可以看出,参考电压是模数转换的一个标准,CS_N和I/O CLOCK给到逻辑控制和输出计数。数据通过一个输出寄存器给到一个并串转换的模块。DATA_OUT数据是给到我们的FPGA的,所以,对于我们来说需要做的就是输出CS_N和I/O CLOCK的波形,将给进来的数据采到。

上图为驱动的时序图,可以看到,当数据输出的时候,CS_N为低电平,总共输出8bit,输出完之后,CS_N拉高。我们在做驱动时。可以将一次转换过程看成一个周期,后续也是重复过程。那么,我们就需要搞清楚每段时间的要求,有助于我们写驱动。

在上图中,我们可以知道:

1、CS_N从拉低到第一bit数据出现在数据线上的时间最大为1.4us。

2、CS_N从拉低到第一个时钟上升沿出现,时间最小为1.4us。

3、I/O CLOCK频率最大为1.1MHz。为了方便计算,我们采取1MHz。

4、Tconv转换时间最大为17us。

5、CS_N拉高时间最小为17us。

在知道了以上信息后,我们开始写驱动,首先新建一下工程。

选择好之后点击完成,新建文件写代码。

代码如下:

 

1 Module TLC549_driver(2 3 input wire clk,4 input wire rst_n,5 6 output reg ad_clk,7 output reg ad_cs_n,8 input wire ad_data,9 10 output reg [7:0] data11 );1213 paRAMeter t = 1300;1415 reg [10:0] cnt;16 reg [7:0] data_temp;17 18 always @ (posedge clk, negedge rst_n)19 begin20 if(rst_n == 1'b0)21 cnt <= 11'd0;22 else if(cnt == t - 1)23 cnt <= 11'd0;24 else25 cnt <= cnt + 1'b1;26 end27 28 always @ (posedge clk, negedge rst_n)29 begin30 if(rst_n == 1'b0)31 begin32 ad_clk <= 1'b0;33 ad_cs_n <= 1'b1;34 data_temp <= 8'd0;35 data <= 8'd0;36 end37 else38 case(cnt)39 0 : begin ad_cs_n <= 1'b0; ad_clk <= 1'b0; end40 74 : begin ad_clk <= 1'b1; data_temp[7] <= ad_data; end41 99 : begin ad_clk <= 1'b0; end42 124 : begin ad_clk <= 1'b1; data_temp[6] <= ad_data; end43 149 : begin ad_clk <= 1'b0; end44 174 : begin ad_clk <= 1'b1; data_temp[5] <= ad_data; end45 199 : begin ad_clk <= 1'b0; end46 224 : begin ad_clk <= 1'b1; data_temp[4] <= ad_data; end47 249 : begin ad_clk <= 1'b0; end48 274 : begin ad_clk <= 1'b1; data_temp[3] <= ad_data; end49 299 : begin ad_clk <= 1'b0; end50 324 : begin ad_clk <= 1'b1; data_temp[2] <= ad_data; end51 349 : begin ad_clk <= 1'b0; end52 374 : begin ad_clk <= 1'b1; data_temp[1] <= ad_data; end53 399 : begin ad_clk <= 1'b0; end54 424 : begin ad_clk <= 1'b1; data_temp[0] <= ad_data; end55 449 : begin ad_clk <= 1'b0; ad_cs_n <= 1'b1; end56 1299: begin data <= data_temp; end57 default : ;58 endcase59 end60 61 endModule

 

代码写好之后,我们做一下仿真看一下数据能否被正确采集,代码如下:

 

1 `timescale 1ns / 1ps2 3 module TLC549_driver_tb;4 5 reg clk;6 reg rst_n;7 8 wire ad_clk;9 wire ad_cs_n;10 reg ad_data;11 12 wire [7:0] data;13 14 initial begin15 clk = 0;16 rst_n = 0;17 ad_data = 0;18 #100;19 rst_n = 1;20 #1000;21 ad_data = 1; //1010011022 #1000;23 ad_data = 0;24 #1000;25 ad_data = 1;26 #1000;27 ad_data = 0;28 #1000;29 ad_data = 0;30 #1000;31 ad_data = 1;32 #1000;33 ad_data = 1;34 #1000;35 ad_data = 0;36 #20000;37 $stop;38 end3940 always #10 clk = ~clk;41 42 TLC549_driver TLC549_driver_inst(43 44 .clk (clk),45 .rst_n (rst_n),46 47 .ad_clk (ad_clk),48 .ad_cs_n (ad_cs_n),49 .ad_data (ad_data),50 51 .data (data)52 );53 54 endmodule

 

编译无误,打开波形观察。

仿真中给出的数据位8’b10100110,换算成16进制为8’ha6。与波形中显示一致,仿真正确。

 


审核编辑:刘清

猜您喜欢


贴片电阻1B02表示其阻值为10kΩ,误差为±0.1%。其中,1代表阻值的首位有效数字,B代表10的1次方,也就是10,02代表两位有效数字0和2。组合起来就是...
2024-11-29 10:26:23
电解电容是电子元件中常见的部件。很多人问,电解电容脚间距都是一样的吗?这个问题并不简单。接下来,我们就来探讨一下这个问题。 电解电容的定义电解电容是通过电解液来...
2025-04-02 12:00:03
贴片电阻0805是一种表面贴装电阻器,因其尺寸为0.08英寸长,0.05英寸宽而得名。它小巧的体积使其成为电子电路设计中的理想选择,广泛应用于各种电子产品,从智...
2024-11-26 11:30:06
贴片电阻的公差是指其实际阻值与标称阻值之间允许的最大偏差百分比。公差越小,电阻的精度越高,价格也相对更贵。常见的贴片电阻公差等级有±0.1%、±0.25%、±0...
2024-11-29 10:26:06
电子元器件中,贴片电阻因其体积小、性能稳定而被应用于各种电路设计中。对于工程师和电子爱好者来说,准确读取贴片电阻的数值是保证电路正常工作的关键步骤。由于贴片电阻...
2025-11-01 10:00:05
焊缝量规是重要的检测工具,应用于焊接质量控制中。主要优势体现在以下几个方面。焊缝量规能够精确测量焊缝的高度和宽度,确保焊接质量符合标准。这种精确性对于保证焊接结...
2011-02-06 00:00:00
电子元器件中,贴片电阻体积小、功耗低而被应用于各种电路设计中。对于工程师和电子爱好者来说,快速识别贴片电阻的阻值是非常重要的。本文将通过一些简单易记的口诀顺口溜...
2025-03-16 21:01:39
贴片电阻,这种小小的电子元件,在各种电子设备中是很重要的配件。如果你的电子设备上的贴片电阻掉了,先别慌,这并不一定是世界末日。很多时候,这个问题是可以解决的。你...
2024-11-29 10:26:03
UFS(通用闪存存储)是现代存储技术,应用于智能手机、平板电脑和其电子设备。UFS与传统的eMMC存储有几个显著的区别。速度方面,UFS的读写速度远超eMMC。...
2011-12-31 00:00:00
计量泵是用于精确输送液体的设备,其主要参数直接影响其性能和应用效果。流量是最重要的参数,通常以升每小时(L/h)或毫升每分钟(mL/min)表示。流量的稳定性和...
2009-10-04 00:00:00