TLC5615模块之FPGA驱动

1、芯片介绍
      TLC5615 为美国德州仪器公司 1999 年推出的产品,是具有串行接口的数模转换器,其输出为电压型,最大输出电压是基准电压值的两倍。带有上电复位功能,即把 DAC 寄存器复位至全零。性能比早期电流型输出的 DAC 要好。只需要通过 3 根串行总线就可以完成 10 位数据的串行输入, 易于和工业标准的微处理器或微控制器(单片机) 接口, 适用于电池供电的测试仪表、移动电话,也适用于数字失调与增益调整以及工业控制场合。

DIN: 串行数据输入端;
TLC5615引脚图
TLC5615引脚图
SCLK: 串行时钟输入端;
/CS: 芯片选用通端,低电平有效;
DOUT: 用于级联时的串行数据输出端;
AGND: 模拟地;
REFIN:基准电压输入端, 2V~ (VDD - 2);
OUT: DAC 模拟电压输出端;
VDD: 正电源端,4.5~5.5V ,通常取 5V。

      TLC5615 工作时序如上图所示。 可以看出,只有当片选 CS 为低电平时, 串行输入数据才能被移入16位移位寄存器。当 CS 为低电平时,在每一个 SCLK 时钟的上升沿将 DIN 的一位数据移入 16 位移寄存器。注意, 二进制最高有效位被导前移入。接着,CS 的上升沿将 16 位移位寄存器的 10 位有效数据锁存于 10 位 DAC 寄存器, 供 DAC 电路进行转换; 当片选 CS 为高电平时,串行输入数据不能被移入 16 位移位寄存器。注意, CS 的上升和下降都必须发生在 SCL K 为低电平期间。
2、时钟确定
      根据下面时序图和芯片资料算出最大串行时钟速率近似为14M,因为核心板时钟为50M,故采用sclk串行时钟为12.5M,即采用四分频方式。

但是在芯片手册中说:为了使时钟馈通最小。CS在高电平时,sclk应该保持低电平。因此为了方便时钟的控制,不采用PLL生成的方式。采用线性序列机的方法生成可控的sclk。

3、注意
      因为DAC的寄存器为12位,但是数据位只有10位,因此要将数据位低位添加两个0,或者左移两位。

4、代码

module TLC5615_CTRL(input sys_clk,input rst,input conv_en,   //DA转换使能信号input [11:0] conv_data, //DA转换输入数据output reg cs,output reg conv_end, //DA转换完成信号output reg tlc5615_clk,output reg tlc5615_data);reg [6:0] cnt;//计数器 always @(posedge sys_clk or negedge rst)if(!rst)cnt <= 7'd0;else if(conv_en == 1 | (cnt != 7'd0)) beginif(cnt == 7'd64)cnt <= 7'd0;elsecnt <= cnt + 7'd1;endelsecnt <= 7'd0;always @(posedge sys_clk or negedge rst)if(!rst) begin conv_end <= 1'b0;tlc5615_clk <= 1'b0;tlc5615_data <= 1'b0;cs <= 1'b1;endelse begincase(cnt)0:begin conv_end <= 1'b0;tlc5615_clk <= 1'b0;tlc5615_data <= 1'b0;cs <= 1'b1;end1:  begintlc5615_data <= conv_data[11];cs <= 1'b0;end2: tlc5615_clk <= 1'b1;4: tlc5615_clk <= 1'b0;5: tlc5615_data <= conv_data[10];6: tlc5615_clk <= 1'b1;8: tlc5615_clk <= 1'b0;9: tlc5615_data <= conv_data[9];10:tlc5615_clk <= 1'b1;12:tlc5615_clk <= 1'b0;13:tlc5615_data <= conv_data[8];14:tlc5615_clk <= 1'b1;16:tlc5615_clk <= 1'b0;17:tlc5615_data <= conv_data[7];18:tlc5615_clk <= 1'b1;20:tlc5615_clk <= 1'b0;21:tlc5615_data <= conv_data[6];22:tlc5615_clk <= 1'b1;24:tlc5615_clk <= 1'b0;25:tlc5615_data <= conv_data[5];26:tlc5615_clk <= 1'b1;28:tlc5615_clk <= 1'b0;29:tlc5615_data <= conv_data[4];30:tlc5615_clk <= 1'b1;32:tlc5615_clk <= 1'b0;33:tlc5615_data <= conv_data[3];34:tlc5615_clk <= 1'b1;36:tlc5615_clk <= 1'b0;37:tlc5615_data <= conv_data[2];38:tlc5615_clk <= 1'b1;40:tlc5615_clk <= 1'b0;41:tlc5615_data <= conv_data[1];42:tlc5615_clk <= 1'b1;44:tlc5615_clk <= 1'b0;45:tlc5615_data <= conv_data[0];46:tlc5615_clk <= 1'b1;64:begintlc5615_clk <= 1'b0;cs <= 1'b1;conv_end <= 1'b1;endendcaseendendmodule 代码片

5、测试模块

`timescale 1ns/1nsmodule TLC5615_CTRL_tb;reg sys_clk;reg rst;reg conv_en;  reg [11:0] conv_data;wire cs;wire conv_end; wire tlc5615_clk;wire tlc5615_data;TLC5615_CTRL TLC5615_CTRL(.sys_clk(sys_clk),.rst(rst),.conv_en(conv_en),   .conv_data(conv_data), .cs(cs),.conv_end(conv_end), .tlc5615_clk(tlc5615_clk),.tlc5615_data(tlc5615_data)
);initial sys_clk =1;always #10 sys_clk = ~sys_clk;initial beginrst = 1'b0;conv_en = 1'b0;conv_data = 0;#201;rst = 1'b1;#100;conv_data = {10'h2aa,2'b00};conv_en = 1'b1;#100;conv_en = 1'b0;@(posedge conv_end);#400;conv_data = {10'h3e8,2'b00};conv_en = 1'b1;@(posedge conv_end);#400;$stop;endendmodule 

6、仿真图

7、验证
      将程序下载至开发板后,将对应的引脚连接至TLC5615模块上,利用万用表测出电压值与实际相符合。
PS:
V为转换后的电压值,Vref为参考电压,data为转换为十进制的值。

基于FPGA驱动TLC5615模块相关推荐

  1. FPGA实例06——FPGA驱动超声波模块

    目录 1.超声波模块原理 2.测试框架 3.FPGA驱动代码 3.1 超声波模块(ultrasonic) 3.2 串口发送模块 3.3 顶层模块 4.测试情况 1.超声波模块原理 此处的超声波模块为H ...

  2. 基于FPGA 以太网gmii_to_rgmii模块编写 附源码

    笔者使用的开发板是米联客zynq UitraScale+ xczu4ev-sfvc784-2-i开发板进行测试 由于米联客协议族源码不开源,自己写了一个简易的以太网接口转换模块只支持1000M速率. ...

  3. K_A01_002 基于单片机驱动RGB模块颜色渐变显示

    目录 一.程序功能说明 二.基本参数 1.参数 2.模块引脚说明 三.PWM驱动说明 时序: 代码: STC89C52RC STM32F103C8T6 四.部分代码说明 接线说明 1.1.STC89C ...

  4. 基于FPGA驱动DAC6004

    1. DAC6004手册研读 DAC6004相对比较简单,有4个配置通道,配置过程中使用的主要信号有SCLK .SDIN.SDO.SYNC.LDAC以及通道的配置输出. 1.1 DAC6004数字端电 ...

  5. 基于FPGA的PWM模块

    以驱动led灯实现呼吸灯为例 RTL代码: module breath_led(input sys_clk,input sys_rst,output led );reg [15:0] divider; ...

  6. 基于FPGA的FFT2048模块设计

    这里,我们的FFT2048模块,其基本结构如下所示: 仿真效果如下所示: i_rst 复位信号 1的时候复位,0的时候工作 i_clk 系统时钟

  7. 基于FPGA的EMAC模块和FIFO模块

    IP核是指在电子设计中预先设计的用于搭建系统芯片的可重用构件,可以分为软核.固核和硬核三种形式.软核通常以可综合的RTL代码的形式给出,不依赖于特定的工艺,具有最好的灵活性.硬IP核是针对某种特定工艺 ...

  8. 基于FPGA的实时图像边缘检测系统设计(上)

    今天给大侠带来基于FPGA的实时图像边缘检测系统设计,由于篇幅较长,分三篇.今天带来第一篇,上篇,话不多说,上货. 导读 随着科学技术的高速发展,FPGA在系统结构上为数字图像处理带来了新的契机.图像 ...

  9. 基于FPGA的扩频系统设计(上)

    今天给大侠带来基于FPGA的扩频系统设计,由于篇幅较长,分三篇.今天带来第一篇,上篇.话不多说,上货. 导读 在无线通信系统中,普遍使用扩频通信技术,因此扩频技术对通信系统具有重要的现实意义.直接序列 ...

  10. 基于FPGA的数字钟——(三)时钟显示模块(数码管)

    基于FPGA的数字钟--(三)数码管显示模块 一.硬件原理 本设计中使用 6 个共阳数码管,可以显示 6 个数字(包含小数点) .电路用 PNP管来反向驱动并且控制列扫描信号来选择哪个数码管.而且所有 ...

最新文章

  1. Java精选笔记_XML基础
  2. 给喜欢写博、乐于交流的你们!
  3. 向STM32串口发送数据的标准函数
  4. C++STL常用查找算法
  5. java returnAddres_JavaClient 查询ES-(重要)
  6. 当期收益率(Current Yield)
  7. 优化 recipe 达到快速启动 SAP Hybris Accelerator Storefront 的方法
  8. vue 指令 v-for 遍历数组
  9. editor.md使用php,Editor.md提示修改
  10. 一次性奖励300万?成都市武侯区促进文化产业发展系列政策影视产业专项政策出来了
  11. 全球酷站中心 html5网站,除了Behance,还有哪些优质设计资源站
  12. android 自定义控件github,GitHub - swordman20/AndroidDIYWidget: Android组合自定义控件
  13. 直接获得TP-LINK路由器外网IP地址
  14. wireshark抓web包
  15. 数学基础差怎么补救,怎么学数学最快最有效的方法
  16. 首页大广告展示——淘淘商城(十六)
  17. 计算机专业转段考试,计算机信息技术学院完成计算机网络技术专业3+2本科转段考试工作...
  18. 二维数组中根据一维数组筛选出对应数据,无数据默认为空
  19. 手机被偷后,让小偷欲哭无泪的高招
  20. 数学分析教程(科大)——1.5笔记+习题

热门文章

  1. 有益视力的食疗方法(转载)
  2. UI设计师都用什么工具?
  3. 原生JS的ajax,原生ajax传递参数格式,ajax参数传递,ajax传递参数
  4. docset文件,aviary sdk,一个bug
  5. ctfshow 菜狗杯 一言既出 wp
  6. C++动态壁纸软件的开发(含源文件)
  7. 《大数据时代》读后感,维克托
  8. 区块链安全分析:安全是重中之重,需要各方企业共同守护 | 新加坡Meetup
  9. androidstudio身高预测app
  10. 网页前端 网页换肤(js)