【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) begin
    if (reset) begin
        state <= IDLE;
    end else begin
        state <= next_state;
    end
end

always @(state or start or bit_cnt or wait_cnt) begin
    case (state)
        IDLE: begin
            if (start) next_state = START;
            else next_state = IDLE;
        end
        START: begin
            next_state = SHIFT;
        end
        SHIFT: begin
            if (bit_cnt == 32) next_state = STOP;
            else next_state = WAIT;
        end
        WAIT: begin
            if (wait_cnt == 100) next_state = SHIFT;
            else next_state = WAIT;
        end
        STOP: begin
            next_state = IDLE;
        end
        default: next_state = IDLE;
    endcase
end

always @(posedge clk) begin
    case (state)
        IDLE: begin
            sclk <= 0;
            enx <= 1;
            done <= 0;
            bit_cnt <= 0;
            wait_cnt <= 0;
        end
        START: begin
            shift_reg <= data_in;
            enx <= 0;
        end
        SHIFT: begin
            sdata <= shift_reg[31];
            shift_reg <= shift_reg << 1;
            sclk <= 1;
            bit_cnt <= bit_cnt + 1;
            wait_cnt <= 0;
        end
        WAIT: begin
            wait_cnt <= wait_cnt + 1;
            sclk <= 0;
        end
        STOP: begin
            enx <= 1;
            done <= 1;
        end
    endcase
end

endmodule

测试

`timescale 1ns / 1ns

module 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 begin
    clk_tb=0;
    forever #5 clk_tb=~clk_tb;// 假设系统时钟为100MHz
end

initial begin
    data_in_tb = 32'hA5A5A5A5; // 测试数据,可以根据需要修改
    reset_tb = 1;
    start_tb = 0;
    #20 reset_tb=0;
    #35 start_tb=1;
    #10 start_tb=0;
end




endmodule

频率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 begin
    ad9361_l_clk=0;
    forever #12.5 ad9361_l_clk=~ad9361_l_clk;
end
initial begin
    rst=1;
    #25 rst=0;
end

reg [15:0] freq;

always @ (posedge ad9361_l_clk or posedge rst)
begin
    if(rst)
    begin
    freq <= 16'd130;
    end
    
    else if(freq < 16'd4400)
    begin
    freq <= freq + 1'b1;
    end
    
    else 
    begin
    freq <= freq;
    end
end

wire [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)
);

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Acwing.2060 奶牛选美(DFS)

题目 听说最近两斑点的奶牛最受欢迎&#xff0c;约翰立即购进了一批两斑点牛。 不幸的是&#xff0c;时尚潮流往往变化很快&#xff0c;当前最受欢迎的牛变成了一斑点牛。 约翰希望通过给每头奶牛涂色&#xff0c;使得它们身上的两个斑点能够合为一个斑点&#xff0c;让它们…

构建卓越数据应用体系,释放企业数据资产的最大价值

随着数字化浪潮的汹涌而至&#xff0c;数据已经成为驱动社会发展的重要资源。在这个信息爆炸的时代&#xff0c;如何有效地收集、管理、分析和应用数据&#xff0c;成为摆在我们面前的一大挑战。数据应用体系的建设&#xff0c;不仅关乎企业竞争力的提升&#xff0c;更是推动整…

前端模块化开发

模块化发展历程 一个模块单独抽离成一个文件&#xff0c;&#xff08;缺点&#xff1a; 命名冲突&#xff0c;全靠约定&#xff09;命名空间的方式&#xff0c;导出一个对象&#xff08;确定&#xff1a;命名冲突还是存在&#xff0c;可在外部修改&#xff0c;没解决依赖关系的…

fastadmin实验教学管理最近新增功能的技术盘点

在与用户交流中&#xff0c;发现了有些功能不够便捷&#xff0c;特抽出时间优化了一下 一键锁定 优化背景&#xff1a;先通过实验日期或实验名称先搜索&#xff0c;然后选中对应的复选框&#xff0c;再点击“锁定”&#xff0c;这样容易漏选或错选 1.工具栏新增自定义按钮“一…

目标检测——PP-YOLOv2算法解读

PP-YOLO系列&#xff0c;均是基于百度自研PaddlePaddle深度学习框架发布的算法&#xff0c;2020年基于YOLOv3改进发布PP-YOLO&#xff0c;2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet&#xff0c;2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列&#xff0c;所以放一起解…

面向未来的前沿人工智能监管

策制定者应该为未来十年人工智能系统更加强大的世界做好准备。这些发展可能会在人工智能科学没有根本性突破的情况下发生&#xff0c;只需扩展当今的技术以在更多数据和计算上训练更大的模型即可。 用于训练前沿人工智能模型的计算量在未来十年可能会显着增加。到 2020 年代末…

Linux初识环境变量

&#x1f30e;环境变量【上】 文章目录&#xff1a; 环境变量 什么是环境变量 关于命令行参数 环境变量       简单了解       为什么需要环境变量       系统中其他环境变量 总结 前言&#xff1a; 环境变量是一种非常重要的概念&#xff0c;它们对于系统的…

springboot酒店管理系统 论文【源码】

springboot酒店管理系统开发说明 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1…

路由器级联

目录 一、实现功能二、实现步骤2.1 接线步骤 三、效果3.1 常规连接3.2 路由器级联 一、实现功能 主路由器&#xff1a;可有WiFi功能&#xff0c;LAN口下接各设备&#xff0c;并接一个辅路由器辅路由器&#xff1a;开启WiFi功能&#xff0c;有线或无线下接各设备功能&#xff1…

长安链正式发布三周年,技术更迭支撑产业变革

导语&#xff1a; 2024年1月27日长安链正式发布三周年&#xff0c;开源社区借开年之际与大家一同回顾长安链三年来的技术发展历程&#xff0c;每一个里程碑的建设都得益于与长安链同行的合作伙伴与开发者&#xff0c;希望在2024年可以共同携手继往开来&#xff0c;为数字经济发…

深入浅出前端本地储存(1)

引言 2021 年&#xff0c;如果你的前端应用&#xff0c;需要在浏览器上保存数据&#xff0c;有三个主流方案&#xff1a; CookieWeb Storage (LocalStorage)IndexedDB 这些方案就是如今应用最广、浏览器兼容性最高的三种前端储存方案 今天这篇文章就聊一聊这三种方案的历史…

安装vcenter管理esxi

安装vcenter管理esxi虚拟化操作系统 文章目录 安装vcenter管理esxi虚拟化操作系统1.安装vcenter2.vcenter的应用 1.安装vcenter esxi虚拟机具体安装步骤请参考上一篇文章&#xff0c;vcenter软件包需自己到网上下 2.vcenter的应用

蚓链帮助企业对资源进行数字化整合,加速变现实现利他多赢!

​蚓链作为一种数字化资源整合的工具或平台&#xff0c;可以帮助企业实现数字化资源整合。在当前的数字化时代&#xff0c;各种信息和资源呈现出乘方式的增长。企业要想在竞争中脱颖而出&#xff0c;就需要对这些资源进行有效的整合和利用。蚓链通过提供一套完善的数字化解决方…

Flutter Plugin中依赖aar本地包

一、首先在项目的根目录的build.gradle中&#xff0c;添加如下代码 allprojects {repositories {//...flatDir {//pay_2c2p就是你的flutter plugin插件名称dirs project(:pay_2c2p).file(libs)}} }二、然后到Plugin的android目录中 &#xff0c;在src目录的同级创建libs目录将…

Java安全基础 必备概念理解

Java安全基础 关键概念汇总 文章目录 Java安全基础 关键概念汇总前置知识1.构造器this以及包的使用2.继承3.重写/ 重载 / super4.多态5.区分和equals方法6.toString的使用7.Object的概念8.static,final,代码块static代码块final 9.动态代理10.类的动态加载1)类加载器含义&#…

LeetCode 热题 100 | 回溯(三)

目录 1 131. 分割回文串 2 51. N 皇后 菜鸟做题&#xff0c;语言是 C&#xff0c;感冒好了 ver. 1 131. 分割回文串 题眼&#xff1a;给你一个字符串 s&#xff0c;请你将 s 分割 成一些子串。 根据题眼可知&#xff0c;我们需要做的是将字符串 s 连续分割 为几段&#…

医保智慧购药:探索医保买药小程序技术开发与应用

如今&#xff0c;医保智慧购药成为了一种趋势&#xff0c;尤其是医保买药小程序的技术开发和应用&#xff0c;为患者提供了更加便捷、高效的医药购买体验。 医保买药小程序是一种基于手机移动终端的应用程序&#xff0c;它通过智能化的算法和医保系统的对接&#xff0c;为患者…

gPTP简介

1、gPTP&#xff08;generalized precision time protocol&#xff09;广义时钟同步协议 gPTP&#xff08;generalized precision time protocol&#xff09;广义时钟同步协议&#xff0c;即IEEE 802.1AS协议。它是IEEE 1588协议的延伸&#xff0c;可以为TSN提供全局精准…

Legacy|电脑Windows系统如何迁移到新安装的硬盘?系统迁移详细教程!

前言 前面讲了很多很多关于安装系统、重装系统的教程。但唯独没有讲到电脑换了新的硬盘之后&#xff0c;怎么把旧系统迁移到新的硬盘上。 今天小白就来跟各位小伙伴详细唠唠&#xff1a; 开始之前需要把系统迁移的条件准备好&#xff0c;意思就是在WinPE系统下&#xff0c;可…

【Linux】Linux权限详解(权限管理-目录权限-粘滞位)

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;Linux_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.Linux权限的概念 2.Linux权限管理 2.1 文件访问者的分类 2.2 文件类型和访问权限 ​编辑 1.文件类型 2.基本权限 2. 3 文件权…