基于FPGA的PS端的Si5340的控制

1、功能
Si5340/41-D可以输出任意频率,当然有范围,100Hz1GHz。外部输入为24M或者4854M的XTAL,VCO在13500~14256Mhz之间,控制接口采用IIC或者SPI。
芯片架构图
基于FPGA的PS端的Si5340的控制_第1张图片
2、IIC控制方式
基于FPGA的PS端的Si5340的控制_第2张图片
基于FPGA的PS端的Si5340的控制_第3张图片
3、直接上控制代码
使用米联客ZU3EG,将控制接口接入到PS的IIC上
基于FPGA的PS端的Si5340的控制_第4张图片
4、控制需要注意的寄存器
输出公式
P0=IN*(M_NUM/M_DEN)/R_REG/(N_NUM/N_DEN)
(1)输入选择
基于FPGA的PS端的Si5340的控制_第5张图片
(2)输出配置
基于FPGA的PS端的Si5340的控制_第6张图片
基于FPGA的PS端的Si5340的控制_第7张图片
(3)Divider
基于FPGA的PS端的Si5340的控制_第8张图片
(4)分数倍频器 M_NUM/M_DEN
基于FPGA的PS端的Si5340的控制_第9张图片
(5)第一级整数分频器R_REG
基于FPGA的PS端的Si5340的控制_第10张图片
(6)分数分频器N_NUM/N_DEN
基于FPGA的PS端的Si5340的控制_第11张图片
5、PS控制
(1)写函数

int si5340_write(XIicPs *I2C_Ptr,u16 register_address, u8 data) {
	u8 slave = SI5340_SLAVE_ID;
	u8 page_byte;
	page_byte = (register_address >> 8);
	int status;
	u8 page_select_send_buff[2] = {0x01,page_byte};
	status = XIicPs_MasterSendPolled(I2C_Ptr, page_select_send_buff, 2, slave);
	u8 reg_byte;
	reg_byte = (register_address & 0xFF);
	u8 write_reg_send_buff[2] = {reg_byte,data};
	status = XIicPs_MasterSendPolled(I2C_Ptr, write_reg_send_buff, 2, slave);
	return status;
}

(2)读函数

u8 si5340_read(XIicPs *I2C_Ptr,u16 register_address) {
	u8 slave = SI5340_SLAVE_ID;
	u8 page_byte;
	page_byte = (register_address >> 8);
	u8 page_select_send_buff[2] = {0x01,page_byte};
	XIicPs_MasterSendPolled(I2C_Ptr, page_select_send_buff, 2, slave);
	u8 reg_byte;
	reg_byte = (register_address & 0xFF);
	XIicPs_MasterSendPolled(I2C_Ptr, ®_byte, 1, slave);
	u8 data;
	XIicPs_MasterRecvPolled(I2C_Ptr, &data, 1, slave);
	return data;
}

6、控制结束
控制函数在链接
https://download.csdn.net/download/sinat_39724439/88525099

你可能感兴趣的:(VIVADO,VITIS,fpga开发)