资讯详情

DAC8531驱动代码(FPGA)

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***************************************************

标签: 576kohm电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台