详细代码及仿真源文件已同步上传至个人主页资源(原创不易,转载请注明出处)

目录

模块图

代码实现

时序图

仿真图

HMC7044介绍

一、概述

        HMC7044是带有 JESD204B 接口的高性能、3.2 GHz、14 路输出抖动衰减器,提供 14 路低噪声且可配置的输出,可以灵活地与许多不同器件接口,包括数据转换器、现场可编程门阵列(FPGA)和混频器本振(LO)。

查阅官方手册,这里我们需要关心的是:

1.查找SPI总线频率

2.SPI的发送时序,发送模式,发送多少数据

由官网手册可知,每次通过SPI发送24bit数据,且SPI工作模式为模式0

模块图

模块分析:

PLL模块:用于生成所需时钟,这里低于10MHZ即可,本实验设置为5MHZ

SPI_send模块:用于发送配置的24bit数据

SPI_ctrl模块:用于对所需要发送的数据进行控制,以满足HMC7044芯片的时序要求

代码实现

module spi_send(input   wire    div_clk     ,//分频时钟5MHzinput   wire    sys_rst_n   ,//复位信号,低电平有效input   wire    str_flag    ,//开始标志信号input   wire    [23:0]data  ,//数据24位
/*     input   wire    spi_done    ,//全部配置完成信号 */output  reg     slen        ,//cs#片选信号,低电平有效output  wire    sclk        ,//spi传输时钟output  reg     sdata       ,//spi传输数据,MSBoutput  reg     send_done                             
);/**************define code*********************/parameter   IDLE    =   5'd0    ,S0      =   5'd1    ,S1      =   5'd2    ,S2      =   5'd3    ,S3      =   5'd4    ;reg[2:0] state      ;//状态机5个状态reg[4:0] cnt_bit    ;//对数计数0-23reg clk_en          ;//时钟使能信号wire div_clk_n      ;//对分频时钟取反
/**************main code*********************/
//describe div_clk_nassign div_clk_n = ~div_clk ;//describe cnt_bitalways@(posedge div_clk , negedge sys_rst_n)beginif(~sys_rst_n)cnt_bit <= 5'd0 ;else    if(cnt_bit == 5'd25)cnt_bit <= 5'd0 ;else    if(state == S1)cnt_bit <= cnt_bit + 1'd1   ;end//describe clk_enalways@(posedge div_clk , negedge sys_rst_n)beginif(~sys_rst_n)clk_en <= 1'd0 ;else    if(((cnt_bit >= 5'd0) && (cnt_bit <= 5'd23))&&(state == S1)) clk_en <= 1'd1 ;else    clk_en <= 1'd0 ;end//两段式状态机,第一段,时序逻辑,描述状态转移always@(posedge div_clk , negedge sys_rst_n)beginif(~sys_rst_n)state <= IDLE   ;else    case(state)IDLE    :beginif(str_flag)state <= S0 ;elsestate <= state  ;endS0      :   state <= S1 ;S1      :beginif(cnt_bit == 5'd24)state <= S2 ;elsestate <= state  ;endS2      :   state <= S3 ;S3      :   beginif(send_done)state <= IDLE   ;elsestate <= state  ;enddefault :   state <= IDLE   ;endcaseend//第二段,时序逻辑,描述输出always@(posedge div_clk , negedge sys_rst_n)beginif(~sys_rst_n)slen <= 1'd1    ;else    if(str_flag)slen <= 1'd0    ;else    if(state == S2)slen <= 1'd1    ;elseslen <= slen    ;end
//describe sclk    assign sclk = (clk_en == 1'd1) ? div_clk_n : 1'd0    ;//describe sdata    always@(posedge div_clk , negedge sys_rst_n)beginif(~sys_rst_n)sdata <= 1'd0  ;else    case(cnt_bit)5'd1    :   sdata <=    data[23]    ;//MSB5'd2    :   sdata <=    data[22]    ;5'd3    :   sdata <=    data[21]    ;5'd4    :   sdata <=    data[20]    ;5'd5    :   sdata <=    data[19]    ;5'd6    :   sdata <=    data[18]    ;5'd7    :   sdata <=    data[17]    ;5'd8    :   sdata <=    data[16]    ;5'd9    :   sdata <=    data[15]    ;5'd10   :   sdata <=    data[14]    ;5'd11   :   sdata <=    data[13]    ;5'd12   :   sdata <=    data[12]    ;5'd13   :   sdata <=    data[11]    ;5'd14   :   sdata <=    data[10]    ;5'd15   :   sdata <=    data[9]     ;5'd16   :   sdata <=    data[8]     ;5'd17   :   sdata <=    data[7]     ;5'd18   :   sdata <=    data[6]     ;5'd19   :   sdata <=    data[5]     ;5'd20   :   sdata <=    data[4]     ;5'd21   :   sdata <=    data[3]     ;5'd22   :   sdata <=    data[2]     ;5'd23   :   sdata <=    data[1]     ;5'd24   :   sdata <=    data[0]     ;default :   sdata <= 1'd0   ;endcaseend//describe send_done    always@(posedge div_clk , negedge sys_rst_n)beginif(~sys_rst_n)        send_done <= 1'd0   ;else    if(state == S2)send_done <= 1'd1   ;else    send_done <= 1'd0   ;endendmodule

由于篇幅有限,其他模块已经上传至个人主页资源

时序图

参考SPI发送数据时序,将数据位改为24bit即可

仿真图

可以看到FPGA通过SPI发送了8'h98条数据进行HMC7044配置,当配置完成的时候,进行正常工作,即配置完成

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

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

相关文章

Dify开发教程笔记(一): 文件及系统参数变量说明及使用

开始 Copy page 定义“开始” 节点是每个工作流应用&#xff08;Chatflow / Workflow&#xff09;必备的预设节点&#xff0c;为后续工作流节点以及应用的正常流转提供必要的初始信息&#xff0c;例如应用使用者所输入的内容、以及上传的文件等。 配置节点在开始节点的设置页…

iOS 26,双版本更新来了

7 月 25 日&#xff0c;苹果终于给用户推送了 iOS 26 的首个公测版本。参与了公测版计划的小伙伴在软件更新页面选择 iOS 26 Public Beta 就能升级 iOS 26 的公测版。同时苹果还推送了 iOS 26 Beta 4 的第二个版本 。也就是说之前已经升级了 iOS 26 Beta 4 的小伙伴&#xff0c…

什么是JSON,如何与Java对象转化

JSON概念 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它易于人阅读和编写&#xff0c;同时也易于机器解析和生成。JSON 基于 JavaScript&#xff08;ECMAScript&#xff08;欧洲计算机协会制定的js规范&#xff09;&#xff09; 编程语言的一个子集&…

从零开始的云计算生活——第三十六天,山雨欲来,Ansible入门

目录 一.故事背景 二.Ansible简介 什么是Ansible&#xff1f; Ansible的特点 Ansible的架构 三.Ansible任务执行解析 ansible任务执行模式 ansible执行流程 ansible命令执行过程&#xff08;重要&#xff09; 四.Ansible配置解析 ansible的安装方式 ansible的程序结…

【6G新技术探索】AG-UI(Agent User Interaction Protocol) 协议介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

线性代数 下

文章目录十一、方程组解的结构和性质1、齐次线性方程组2、非齐次线性方程组十二、Ax0的基础解系十三、两个方程组的公共解十四、同解方程十五、求特征值、特征向量十六、判断A能否相似对角化十七、若A可以相似对角化&#xff0c;求P(Q)十八、二次型化标准型1、拉格朗日配方法2、…

Go语言实战案例-自定义队列结构

以下是《Go语言100个实战案例》中的 数据结构与算法篇 - 案例24&#xff1a;自定义队列结构 的完整内容&#xff0c;帮助初学者通过自定义结构体来实现队列的数据结构。&#x1f3af; 案例目标实现一个自定义的队列结构&#xff0c;并提供常见的队列操作&#xff1a;入队&#…

Windows-WSL-Docker端口开放

本文介绍如何在局域网内访问Windows服务器端口&#xff0c;特别是针对已安装WSL环境并在其中运行Docker服务的情况。主要解决Docker服务向局域网开放端口的配置问题步骤一&#xff1a;配置转发当你的应用程运行在WSL中时&#xff0c;需要执行此步骤。在宿主机&#xff08;windo…

面试知识梳理-vue3和vue2区别

vue3相对于vue2的优势 性能更好体积更小更好的ts支持&#xff08;vue3 ts开发&#xff09;更好的代码组织更好的逻辑抽离更多新功能&#xff08;vue2其实也都能自己做出来&#xff09; 更好的代码组织 Composition API 的革新 Vue 2 采用 ​​Options API​​&#xff0c;通过 …

栈的核心原理

1 栈的概念及结构栈是一种特殊的线性表&#xff0c;其特点是只允许在固定的一端进行插入和删除操作。进行操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的元素遵循后进先出&#xff08;LIFO&#xff0c;Last In First Out&#xff09; 原则。压\入\进栈&#xff08;Push…

【无标题】暗物质暗能量——以下是用11维拓扑量子色动力学模型解释暗物质和暗能量的完整理论框架。

暗物质暗能量——以下是用11维拓扑量子色动力学模型解释暗物质和暗能量的完整理论框架。暗物质的拓扑本质 1. 跨桥零模振动理论 暗物质对应跨桥结构的基态振动模&#xff1a; math \phi_{\text{DM}} \frac{1}{\sqrt{6}} \sum_{f1}^6 \mathcal{B}_f^{(0)} $$ 其中 $\mathcal{B}…

【接口自动化】-1- 初识接口

一、什么是接口 接口涉及到四个实体&#xff1a;&#xff08;我去饭店点餐&#xff09; 我是客人 &#xff1a;客户端 厨师&#xff1a;服务器 服务员&#xff1a;接口 菜单&#xff1a;接口文档 接口定义了一套信息规则让两个系统之间互相不必知道对方的内部&#xff0c…

华为FTTR光猫V173 F30改公开版界面 附带真正的s161补全一体固件

【本文介绍】 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 这款FTTR的V173 F30看着颜值很高 也很实用 毕竟是XGPON万兆的光猫…

【学习】数字化车间与智能工厂如何推进制造业转型

在制造业转型升级的浪潮中&#xff0c;数字化车间与智能工厂已成为推动产业变革的核心引擎。前者通过物联网、大数据与自动化技术的深度融合&#xff0c;实现生产流程的精细化管控与资源优化&#xff1b;后者则依托人工智能、5G通信与数字孪生技术&#xff0c;构建起具备自感知…

HTML元素与高级功能完全教程:从基础到精通

目录 章节1:HTML的灵魂——元素的本质与结构化思维 1.1 元素的核心:标签、属性与内容 1.2 语义化的革命 1.3 常见的“坑”与避坑指南 章节2:表单元素:打造交互的基石 2.1 表单基础:与核心控件 2.2 高级输入类型与验证 2.3 表单的可访问性与用户体验 章节3:HTML5多媒…

IP证书:构建数字世界知识产权安全防线的基石

引言 在数字化浪潮席卷全球的今天&#xff0c;知识产权&#xff08;IP&#xff09;的保护已成为企业、机构乃至个人面临的重要挑战。无论是商业秘密、专利技术&#xff0c;还是数字版权&#xff0c;其安全性和可信度都直接影响着创新生态的健康发展。而作为数字安全的核心工具…

CAD插件『PDF转CAD格式』安装教程

在工程设计领域&#xff0c;常规流程是将完成的CAD图纸直接转换为PDF格式或输出为纸质蓝图进行分发。由于PDF文件具有跨平台兼容性强、防篡改等特性&#xff0c;在工程交付环节被广泛采用。但当需要对既有图纸进行二次修改时&#xff0c;PDF格式的编辑局限性便凸显出来&#xf…

【硬件-笔试面试题】硬件/电子工程师,笔试面试题-26,(知识点:硬件电路的调试方法:信号追踪,替换,分段调试)

目录 1、题目 2、解答 一、信号追踪法&#xff08;Signal Tracing&#xff09; 原理 操作步骤 应用场景 二、替换法&#xff08;Replacement Method&#xff09; 原理 操作要点 应用场景 三、分段调试法&#xff08;Segmented Debugging&#xff09; 原理 操作步骤…

Qt中QObject类的核心作用与使用

一、QObject类简介 各位小伙伴&#xff0c;在Qt的世界里&#xff0c;QObject类就像是"万物之母"&#xff0c;它是Qt对象模型的核心基类。几乎所有的Qt类都直接或间接地继承自QObject。QObject提供了很多重要的功能&#xff0c;比如对象树管理、信号与槽机制、元对象系…

TVBOXOS6.0双端APP二开源码完整版全开源源码重构版

今天介绍的TVBOXOS手机版App源码采用了纯64位的前端架构&#xff0c;版本则基于本站修正过的6.0前端进行构建。经过多次优化&#xff0c;这款应用不仅操作流畅&#xff0c;界面设计也颇具美感。前端完全集成了安卓原生Java架构&#xff0c;而后端管理采用的是PHP的如意系统。前…