DAC8531用于16位低功耗数模转换芯片SPI最大转换频率为30MHz(5V供电)/20MHz(3.3V供电)。
输出电压范围为参考电压 V r e f V_{ref} Vref 决定, 0 < V o u t < V r e f 0<V_{out}<V_{ref} 0<Vout<Vref,通常, V r e f V_{ref} Vref 可直接拉到 V C C V_{CC} VCC ,即与供电电压相同。
除输出电压数字量 D15 ∼ \sim ∼D0 外,控制字还包含两个配置位 PD1、PD0,用于进行输出阻抗配置,{PD1,PD0}=00为一般模式,其 V o u t V_{out} Vout 直接由放大器输出,而不接任何电阻网络,01则表示芯片内放大器输出端接 1 k Ω 1k\Omega 1kΩ 电阻网络到 GND,10则将电阻网络改为 100 k Ω 100k\Omega 100kΩ,11表示高阻,此时断开放大器输出端与 V o u t V_{out} Vout 端口的连接。
DAC8531的FPGA驱动代码如下
/******************************FILE HEAD**********************************
* file_name : DAC8531.v
* function : DAC8531 SPI接口 低功耗16位数模转换芯片
* author : 今朝无言
* date : 2021/11/16
*************************************************************************/
module DAC8531(
input clk_50M,
input [15:0] data,
input tx_en, //上升沿启动一次DA转换 高电平请保持至少2个10MHz的clk
output reg SYNC, //即CS,低电平有效
output SCLK, //最大30MHz(3.6~5.5V供电)/20MHz(2.7~3.6V供电) 下降沿有效
output reg DIN //串行数据,会存入芯片里的24位移位寄存器
);
//发送顺序:DB23,DB22,...DB1,DB0
//数据格式:x,x,x,x,x,x,PD1,PD0,D15,D14,...,D1,D0
//PD1,PD0对应模式说明:00,Normal; 01,1kOhm to GND; 10,100kOhm to GND; 11,High-Z
//Vout范围:0~Vref
//-------------产生10MHz驱动时钟----------------
reg clk_10M = 0;
reg [3:0] cnt = 0;
always@(posedge clk_50M)begin
if(cnt>=4)begin
cnt <= 0;
end
else begin
cnt <= cnt + 1;
end
if(cnt<=1)begin
clk_10M <= 1;
end
else begin
clk_10M <= 0;
end
end
//-------------------SPI-----------------------
reg start = 0;
reg tx_en_buf = 1;
reg tx_en_up;
reg [5:0] state;
reg [23:0] DB;
assign SCLK = clk_10M;
always@(posedge clk_10M)begin //上升沿改变数据,在SCLK下降沿正好方便芯片读入DIN
tx_en_buf <= tx_en;
tx_en_up <= tx_en&(~tx_en_buf);
if(tx_en_up)begin
start <= 1;
state <= 29; //这里设为29,则30个clk_10M周期完成一次发送,state至少要大于等于24
DB <= {6'd0,2'b00,data}; //PD1PD0这里设为00,可根据自身需要修改
SYNC <= 1;
DIN <= 0;
end
else if(start)begin
state <= state-1;
if(state>=24+1)begin
SYNC <= 1;
DIN <= 0;
end
else if(state>=1)begin
SYNC <= 0;
DIN <= DB[state-1];
end
else begin //state=0
SYNC <= 1;
DIN <= 0;
start <= 0;
end
end
else begin
SYNC <= 1;
DIN <= 0;
end
end
endmodule
//END OF DAC8531.v FILE***************************************************