用FPGA驱动DA芯片TLV5618
来源:互联网 发布:软件腰带剑多少钱 编辑:程序博客网 时间:2024/05/16 03:38
1.TLV5618简介
TLV5618这款芯片是TI(美国德州仪器)公司生产的 双路12位电压输出 数/模 转换器。该TLV5618是一个双通道12位电压输出DAC具有灵活的3线串行接口。串行接口与TMS320 , SPI兼容,QSPI ™和MICROWIRE ™串行端口。这是用含有一个16位串行串编4控制和12个数据位。电阻串的输出电压是由一个缓冲2倍增益的轨到轨输出缓冲。缓冲区拥有AB类输出级,以提高稳定性和减少建立时间。该编程的DAC序的建立时间使设计人员优化速度和功耗的关系。实现了CMOS工艺,该装置是专为单电源供电,从2.7 V至5.5 V在采用8引脚SOIC封装标准的商用和工业温度范围内工作。该TLV5618AC的特点是操作从0℃至70℃。该TLV5618AI的特点是操作从 - 40 ° C至85°C 。该TLV5618AQ的特点是从操作 - 40 ° C至125°C 。该TLV5618AM特点是从操作 - 55 ° C至125°C 。
2.TLV5618引脚
3.TLV5618时序图
4.Verilog代码
文件1:TLV5618.v
module TLV5618
(
input CLK,
input nRST,
input [15:0]DA_Data,
input DA_Start_Sig,
output SCLK,output DIN,output DA_Done_Sig,output CS
);
/*TLV5618数据格式 DA_Data[15:12]
D15 D14 D13 D12 D11~D0
R1 SPD PWR R0 12Data Bits
SPD:转换速度控制位
1:快速模式
0:慢速模式(上电默认)
PWR:电源控制位
1:省电模式
0:正常模式(上电默认)
R1,R0:寄存器选择位
00:写数据到B路和缓冲器
01:写数据到缓冲器
10:写数据到A路,同时使用缓冲器的数据 更新B路输出
11:保留
*/
parameter T5US=8'd50;//5us
reg [7:0]Count;
always @(posedge CLK or negedge nRST)
if( !nRST )
Count <= 8'd0;
else if( DA_Start_Sig & ( Count == T5US ) )
Count <= 8'd0;
else if( DA_Start_Sig )
Count <= Count + 1'b1;
else
Count <= 8'd0;
reg [ 5:0 ]i;
reg isDIN;
reg isSCLK;
reg isDone;
reg isCS;
always @( posedge CLK or negedge nRST )
if( !nRST )
begin
i <= 6'd0;
isSCLK <= 1'b0;
isDIN <= 1'b0;
isDone <= 1'b0;
isCS <= 1'b1;
end
else if( DA_Start_Sig )
case( i )
6'd0: begin isCS <= 1'b0; i <= i + 1'b1; end
1,3,5,7,9,11,13,15, 17,19,21,23,25,27,29,31: if( Count == T5US ) i <= i + 1'b1; else begin isSCLK <= 1'b0; isDIN <= DA_Data[ 15 - (( i - 1'b1) >>1 ) ]; end 2,4,6,8,10,12,14,16, 18,20,22,24,26,28,30,32: if( Count == T5US ) i <= i + 1'b1; else isSCLK <= 1'b1; 6'd33: begin isDone <= 1'b1; isCS <= 1'b1; i <= i + 1'b1; end 6'd34: begin isDone <= 1'b0; i <= 6'd0; end endcase assign SCLK = isSCLK; assign DIN =isDIN; assign DA_Done_Sig = isDone; assign CS =isCS; endmodule
文件2:DA_Control_Module.v
module DA_Control_Module
(
input CLK,
input nRST,
input DA_Done_Sig,output DA_Start_Sig,output [ 15:0 ]DA_Data
);
reg [ 15:0 ]rDATA;
reg [ 4:0 ]i;
reg isStart;
always @( posedge CLK or negedge nRST )
if( !nRST )
begin
rDATA <= 16'd0;
i <= 5'd0;
end
else case( i )
5'd0:if( DA_Done_Sig ) begin isStart <= 1'b0; i <= i + 1'b1; end
else begin rDATA <= 16'b0100_1011_0111_0001; isStart <= 1'b1; end
5'd1: i <= 5'd1;endcaseassign DA_Data = rDATA;assign DA_Start_Sig = isStart;endmodule
文件3:DA.v
module DA
(
input CLK,
input nRST,
output DIN,output SCLK,output CS
);
wire [ 15:0 ]DA_Data;
wire DA_Done_Sig;
wire DA_Start_Sig;
DA_Control_Module U1
(
.CLK( CLK ),
.nRST( nRST ),
.DA_Done_Sig( DA_Done_Sig ),.DA_Start_Sig( DA_Start_Sig ),.DA_Data( DA_Data )
);
TLV5618 U2
(
.CLK( CLK ),
.nRST( nRST ),
.DA_Data( DA_Data ),
.DA_Start_Sig( DA_Start_Sig ),
.SCLK( SCLK ),.DIN( DIN ),.DA_Done_Sig( DA_Done_Sig ),.CS( CS )
);
endmodule
4.仿真
激励文件
`timescale 1 ns/ 1 ns
module DA_Simulation();
reg CLK;
reg nRST;
wire DIN;
wire SCLK;
wire CS;
DA I1
(
.CLK( CLK ),
.nRST( nRST ),
.SCLK( SCLK ),
.DIN( DIN ),
.CS( CS )
);
initial
begin
nRST = 1'b0;
#500
nRST = 1'b1;
CLK = 1'b1;
forever #100 CLK = ~CLK;
end
endmodule
- 用FPGA驱动DA芯片TLV5618
- TLV5618芯片驱动程序
- FPGA驱动PCI9054芯片,VHDL,Xinlinx XC4VLX100
- 常用AD/DA芯片
- 目前常用AD/DA芯片简介
- 【转】目前常用AD/DA芯片简介
- 目前常用AD/DA芯片简介
- 常用高速AD/DA转换芯片
- STM8L 芯片 DA 功能初始化注意
- FPGA芯片结构
- FPGA芯片结构
- FPGA芯片结构
- FPGA实现8080接口驱动TFL LCD屏(ILI9486芯片)
- FPGA基础知识1(FPGA芯片结构)
- FPGA,DSP,CPU,基带芯片,射频芯片
- STM32 HAL库实战(一)使用STM32驱动双通道12位DAC(TLV5618)
- da
- da
- android之activity
- Android,iOS打开手机QQ与指定用户聊天界面
- Log4j.properties配置详解
- ubuntu系统从中文环境改成英文环境
- 20150718--面试常见问题(1)
- 用FPGA驱动DA芯片TLV5618
- Ext.apply 详解
- Web 通信 之 长连接、长轮询(long polling)
- mysql root 无法在 linux 本地登陆
- ETL技术入门之ETL初认识
- 2012年5月SAT香港真题解析
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
- GRE写作必备句型
- 黑马程序员