【ADF4351】使用FPGA进行SPI寄存器配置、使用FPGA计算各个频率的频点,ADF4351配置程序

简介

特性

输出频率范围:35 MHz至4,400 MHz
小数N分频频率合成器和整数N分频频率合成器
具有低相位噪声的VCO
可编程的1/2/4/8/16/32/64分频输出
典型抖动:0.3 ps rms
EVM(典型值,2.1 GHz): 0.4%
电源:3.0 V至3.6 V
逻辑兼容性: 1.8 V
可编程双模预分频器:4/5或8/9
可编程的输出功率
RF输出静音功能
三线式串行接口
模拟和数字锁定检测
在宽带宽内快速锁定模式
周跳减少

应用

无线基础设施(W-CDMA、TD-SCDMA、WiMAX、GSM、
PCS、DCS、DECT)
测试设备
无线局域网(LAN)、有线电视设备
时钟产生

简介

ADF4351结合外部环路滤波器和外部参考频率使用时,可实现小数N分频或整数N分频锁相环(PLL)频率合成器。

ADF4351具有一个集成电压控制振荡器(VCO),其基波输出频率范围为2200 MHz至4400 MHz。此外,利用1/2/4/8/ 16/32/64分频电路,用户可以产生低至35 MHz的RF输出频率。对于要求隔离的应用,RF输出级可以实现静音。静音功能既可以通过引脚控制,也可以通过软件控制。同时提供辅助RF输出,且不用时可以关断。

所有片内寄存器均通过简单的三线式接口进行控制。该器件采用3.0 V至3.6 V电源供电,不用时可以关断。

功能图

在这里插入图片描述

芯片引脚说明

芯片引脚图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SPI 时序配置寄存器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

module spi_adf4351(input wire clk,  // 主时钟信号input wire reset,  // 复位信号input wire [31:0] data_in,  // 要发送的数据input wire start,  // 开始发送信号output reg sclk,  // SPI时钟output reg sdata,  // SPI数据output reg enx,  // SPI片选output reg done  // 数据发送完成信号
);// 状态定义
localparam IDLE = 3'b000,START = 3'b001,SHIFT = 3'b010,WAIT = 3'b011,STOP = 3'b100;reg [2:0] state = IDLE;  // 当前状态
reg [2:0] next_state;  // 下一个状态
reg [31:0] shift_reg;  // 移位寄存器
reg [5:0] bit_cnt;  // 位计数器
reg [7:0] wait_cnt;  // 等待计数器,用于产生延时always @(posedge clk or posedge reset) beginif (reset) beginstate <= IDLE;end else beginstate <= next_state;end
endalways @(state or start or bit_cnt or wait_cnt) begincase (state)IDLE: beginif (start) next_state = START;else next_state = IDLE;endSTART: beginnext_state = SHIFT;endSHIFT: beginif (bit_cnt == 32) next_state = STOP;else next_state = WAIT;endWAIT: beginif (wait_cnt == 100) next_state = SHIFT;else next_state = WAIT;endSTOP: beginnext_state = IDLE;enddefault: next_state = IDLE;endcase
endalways @(posedge clk) begincase (state)IDLE: beginsclk <= 0;enx <= 1;done <= 0;bit_cnt <= 0;wait_cnt <= 0;endSTART: beginshift_reg <= data_in;enx <= 0;endSHIFT: beginsdata <= shift_reg[31];shift_reg <= shift_reg << 1;sclk <= 1;bit_cnt <= bit_cnt + 1;wait_cnt <= 0;endWAIT: beginwait_cnt <= wait_cnt + 1;sclk <= 0;endSTOP: beginenx <= 1;done <= 1;endendcase
endendmodule

测试

`timescale 1ns / 1nsmodule spi_adf4351_tb;reg clk_tb;
reg reset_tb;
reg start_tb;
reg [31:0] data_in_tb;
wire sclk_tb;
wire sdata_tb;
wire enx_tb;
wire done_tb;// 实例化spi_adf4351模块
spi_adf4351 DUT (.clk(clk_tb),.reset(reset_tb),.data_in(data_in_tb),.start(start_tb),.sclk(sclk_tb),.sdata(sdata_tb),.enx(enx_tb),.done(done_tb)
);// 生成时钟信号
initial beginclk_tb=0;forever #5 clk_tb=~clk_tb;// 假设系统时钟为100MHz
endinitial begindata_in_tb = 32'hA5A5A5A5; // 测试数据,可以根据需要修改reset_tb = 1;start_tb = 0;#20 reset_tb=0;#35 start_tb=1;#10 start_tb=0;
endendmodule

频率FPGA 计算

原理

在这里插入图片描述

INT、FRAC、MOD与R分频器的关系

利用INT、FRAC和MOD的值以及R分频器,可以产生间隔为PFD频率的分数的输出频率。
在这里插入图片描述
在这里插入图片描述

R分频器

利用10位R分频器,可以细分输入参考频率(REFIN)以产生PFD的参考时钟。分频比可以为1至1023。

寄存器映射

REGISTER 0

在这里插入图片描述
在这里插入图片描述

REGISTER 1

在这里插入图片描述
在这里插入图片描述

REGISTER 2

在这里插入图片描述
在这里插入图片描述

REGISTER 3

在这里插入图片描述
在这里插入图片描述

REGISTER 4

在这里插入图片描述
在这里插入图片描述

REGISTER 5

在这里插入图片描述
在这里插入图片描述

寄存器初始化序列

初始上电时,对电源引脚施加正确的电压后,ADF4351寄存器应按以下顺序启动:

  1. 寄存器5
  2. 寄存器4
  3. 寄存器3
  4. 寄存器2
  5. 寄存器1
  6. 寄存器0

FPGA 根据频率计算寄存器数值

输入频率:4400M到35M

module adf4351_LUT_freq();
reg ad9361_l_clk,rst;   initial beginad9361_l_clk=0;forever #12.5 ad9361_l_clk=~ad9361_l_clk;
end
initial beginrst=1;#25 rst=0;
endreg [15:0] freq;always @ (posedge ad9361_l_clk or posedge rst)
beginif(rst)beginfreq <= 16'd130;endelse if(freq < 16'd4400)beginfreq <= freq + 1'b1;endelse beginfreq <= freq;end
endwire [31:0] reg0,reg1,reg2,reg3,reg4,reg5;adf4351_reg_lut LUT(.clk_40(ad9361_l_clk),.rst(rst),.frequency(freq),.reg0(reg0),.reg1(reg1),.reg2(reg2),.reg3(reg3),.reg4(reg4),.reg5(reg5)
);

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/754854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Selenium 自动化 —— 使用WebDriverManager自动下载驱动

上一篇文章 入门和 Hello World 实例 中&#xff0c;我们提供了一个最简单的 Selenium 上手的例子。 但是某一天&#xff0c;突然发现相同的代码居然运行报错了。这是怎么回事呢&#xff1f; 日志排查 日志中其实提示的很明显了&#xff1a;Chrome浏览器和Chrome WebDriver的…

adobe animate 时间轴找不到编辑多个帧按钮

如题&#xff0c;找了半天&#xff0c;在时间轴上找不到编辑多个帧按钮,导致无法批量处理帧 然后搜索发现原来是有些版本被隐藏了&#xff0c;需要再设置一下 勾选上就好了

day0 3r文档docker部署

3R编码 | 3R教室 - 最好的数字游民学习与交流俱乐部! (3rcd.com) window安装wsl下载不下来&#xff0c;正好有个服务器&#xff0c;就用linux吧密钥长度不匹配&#xff0c;设置一下长度即可 文档启动不成功&#xff0c;单独下载了下nginx&#xff0c;docker pull nginx:latest …

笔记本固态硬盘损坏数据恢复两种方法 笔记本固态硬盘损坏如何恢复

大家好&#xff01;今天要跟大家分享的是笔记本固态硬盘损坏数据恢复的两种方法。相信很多小伙伴都遇到过这种情况&#xff0c;电脑突然蓝屏或者死机&#xff0c;再开机后发现自己的数据不见了&#xff0c;这时候该怎么办呢&#xff1f;这可真是让人头疼。毕竟&#xff0c;我们…

PSCA复位控制集成之复位信号

组件可能支持两种基本的复位类型。 • 冷复位&#xff1a;重置组件中的所有逻辑。用作上电复位。 • 热复位&#xff1a;重置组件中的大部分逻辑。通常&#xff0c;复位的范围是所有功能逻辑。不包括在热复位中的逻辑会随组件类型而变化&#xff0c;但通常会排除诸如调试和 R…

SAP前台处理:物料主数据创建<MM01>之基础视图

一、背景&#xff1a; 终于来到了物料主数据&#xff0c;我觉得物料账是SAP最重要的一项发明&#xff0c;也一直是SAP的一项重要优势&#xff0c;物料账记录了一个个物料的生生不息&#xff1b; 本章主要讲解物料主数据和财务相关的主要内容&#xff1a;这里特别提示由于作者…

MySql安装与卸载—我耀学IT

1.MySql安装 打开下载的mysql安装文件mysql-5.5.27-win32.zip&#xff0c;双击解压缩&#xff0c;运行“setup.exe”。 选择安装类型&#xff0c;有“Typical&#xff08;默认&#xff09;”、“Complete&#xff08;完全&#xff09;”、“Custom&#xff08;用户自定义&…

日志 | 日志级别 | c/c++ | 终端显示不同的颜色

日志想必都知道 优先级从高到低依次为&#xff1a;OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL日志参考1 #define RED "\x1B[31m" #define GRN "\x1B[32m" #define YEL "\x1B[33m" #define BLU "\x1B[34m" #define MAG "…

鸿蒙4.0ArkUI快速入门(一)应用模型

ArkUI篇 应用模型Stage模型FA模型模型对比 应用模型 应用模型是HarmonyOS为开发者提供的应用程序所需能力的抽象提炼&#xff0c;它提供了应用程序必备的组件和运行机制。 HarmonyOS先后提供了两种应用模型&#xff1a; FA&#xff08;Feature Ability&#xff09;模型&…

VSCode下使用github初步

由于各种需要&#xff0c;现在需要统一将一些代码提交搞github&#xff0c;于是有了在VSCode下使用github的需求。之前只是简单的使用git clone&#xff0c;代码提交这些用的是其他源代码工具&#xff0c;于是得学习实操下&#xff0c;并做一记录以备后用。 安装 VSCode安装 …

HCIP的学习(2)

TCP----传输控制协议 是一种面向连接的可靠传输协议。 注&#xff1a;与我之前博客HCIA的学习&#xff08;2&#xff09;结合一起看 面向连接&#xff1a;数据传输前收发双方建立一条逻辑通路 特点&#xff1a; TCP是一种面向连接的传输协议每一条TCP连接有且只能存在两个端…

杂记8---多线激光雷达与相机外参标定

背景&#xff1a;本人开源的标定程序&#xff0c;提供大家参考学习 基于棋盘格的多线激光雷达和鱼眼/针孔模型相机外参标定的程序 前言 标定数据&#xff0c;只需要一个棋盘格标定板。把标定板放置lidar 与camera 共视区域&#xff0c;拜拍几个pose进行采集。 基于简谐原则…

MeterSphere和Jmeter使用总结

一、MeterSphere 介绍 MeterSphere 是⼀站式开源持续测试平台&#xff0c;涵盖测试跟踪、接⼝测试、UI 测试和性能测试等&#xff0c;全 ⾯兼容 JMeter、Selenium 等主流开源标准&#xff0c;能够有效助⼒开发和测试团队在线共享协作&#xff0c;实现端到 端的测试管理跟踪…

如何在个人Windows电脑搭建Cloudreve云盘并实现无公网IP远程访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

【深度学习】手动实现全连接神经网络(FCNN)

&#x1f33b;个人主页&#xff1a;相洋同学 &#x1f947;学习在于行动、总结和坚持&#xff0c;共勉&#xff01; 神经网络的本质就是通过参数、线性函数与激活函数来拟合特征与目标之间的真实函数关系。 01 神经网络简介 1.1 引入 神经网络是一门重要的机器学习技术&…

光度立体法的简化求解(已知特殊光源方向)

原理这个博主写的很好 如何获取物体表面的法向量&#xff1f;好好谈谈光度立体法-CSDN博客 Photometric Stereo 光度立体三维重建&#xff08;一&#xff09;——介绍-CSDN博客 ​ 不过当图片较大的时候,比如4048*4000这种量级的,矩阵很大,速度要10秒,加了openmp也需要2s; …

项目中遇到的sql问题记录

有一张表&#xff0c;表结构及数据如下&#xff1a; INSERT INTO test.test_approve(approve_no, tra_date, tablename, part_dt) VALUES (approve001, 2021-02-18 00:00:00, tableA, 2024-03-18); INSERT INTO test.test_approve(approve_no, tra_date, tablename, part_dt) …

深度学习03价值学习

Q*类似于先知&#xff0c;知道动作的后果 价值学习是得到一个近似的价值函数

【ARM】DSTREAM上面的各个指示灯代表什么意思?

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 对于DStream仿真器上面的指示灯亮灭代表的意义进行分析。 2、 问题场景 主要对于DStream仿真器的使用过程中&#xff0c;不同的情况下面仿真器的指示灯会进行相应的亮灭。了解一下不同指示灯的亮灭所提示的信息…

【nfs报错】rpc mount export: RPC: Unable to receive; errno = No route to host

NFS错误 问题现象解决方法 写在前面 这两天搭建几台服务器&#xff0c;需要使用nfs服务&#xff0c;于是六台选其一做服务端&#xff0c;其余做客户端&#xff0c;搭建过程写在centos7离线搭建NFS共享文件&#xff0c;但是访问共享时出现报错&#xff1a;rpc mount export: RPC…