前言
LMH6518 器件是一款数控可变增益放大器,其总增益在 -1.16 dB 至 38.8 dB 之间变化,40 dB 范围以 2 dB 步进。-3-dB 带宽在所有增益下为 900 MHz。每个设置的增益精度通常为 0.1 dB。
LMH6518 增益通过 SPI-1 兼容串行总线进行编程。可用于示波器前端或高速采集卡前端,具有增益和带宽可编程功能。
利用FPGA通过SPI通信,控制LMH6518内部寄存器,实现功能的配置。
LMH6518 SPI通信简介
芯片架构
控制端关注SPI通信相关引脚:
CS
串行芯片选择(SPI接口,低电平有效):当此信号拉低时,SCLK用于接受SDIO上存在的串行数据。当该信号拉高时,SDIO被忽略,SDIO处于TRI-STATE模式
SCLK
串行时钟(SPI接口):串行数据与该时钟信号同步移入和移出设备。
SDIO
串行数据输入或数据输出(SPI接口):CS拉低时,芯片在SCLK的上升沿读SDIO上的数据,芯片在SCLK的下降沿将数据写到SDIO总线上。
SPI时序图
芯片读写时序如下图所示:
芯片读写时序如下图所示
-
读操作时序
-
写操作时序
-
从图中可以看出,command命令可以区分读写操作,C7=1:表示读操作,C7=0:表示写操作,C6~C0默认是0。后面紧跟的是写入的命令或者读出的数据16bit。
LMH6518内部寄存器
控制寄存器
内部控制寄存器如下图所示:(注:D14、D11、D9、D5必须为零)
-
低通滤波器控制区
-
衰减器控制区
-
上电初始化控制寄存器状态
增益计算
- LMH6518增益理解,输入信号通过前置放大器放大10dB或者30dB(D4=0::表示选择LG模式,放大10dB;D4=1:表示选择HG模式,放大30dB),然后通过衰减器衰减(衰减值由D3~D0设置),最后通过后置放大器放大8.86dB后输出。
Verilog 实现
- Verilog代码接口如下:
module lmh6518_timing#(
parameter DIV_CNT = 50,
parameter DIV_DW = 8
)(
input wire clk_i,//--时钟
input wire rst_i,//--复位,高电平有效
input wire spi_start,//--启动0-1
output wire spi_busy,//--1:表示该模块忙
output wire spi_done,//--脉冲,完成标志
output wire rw_ctrl,//--SDIO三态控制,1:表示读
input wire [23:0] tx_data,//--发送数据
output reg [23:0] rx_data,//--接收数据
//--SPI接口
output reg spi_sclk,
output wire spi_mosi,
input wire spi_miso,
output reg spi_cs_n
);
.
.
.
Diagram
Generics
Generic name | Type | Value | Description |
---|---|---|---|
DIV_CNT | 50 | SCLK时钟频率分频系数 | |
DIV_DW | 8 | 数据位宽 |
Ports
Port name | Direction | Bit width | Description |
---|---|---|---|
clk_i | input | 1 | |
rst_i | input | 1 | |
spi_start | input | 1 | |
spi_busy | output | 1 | |
spi_done | output | 1 | |
rw_ctrl | output | 1 | |
tx_data | input | [23:0] | |
rx_data | output | [23:0] | |
spi_sclk | output | 1 | |
spi_mosi | output | 1 | |
spi_miso | input | 1 | |
spi_cs_n | output | 1 |
State machines
代码下载链接
https://download.csdn.net/download/qq_41884208/86725021