用fpga控制带有寄存器的ad芯片进行spi传输

求一些有利用fpga配置带有寄存器的ad转换芯片。有关于fpga如何对ad寄存器的地址操作进行spi传输的相关verilog代码及解释。

0

2个回答

使用Spartan6控制AD9613进行采样,
module testmode_spi(

input clk_25,
input rst,

output reg csb,
output reg oeb,
output clk_spi,
output reg [7:0] state,
output write,
output reg [7:0] tr_delay,

//output reg [7:0] sdio_spi_id,

output reg fin_ad_reg,

inout sdio

);


reg     rd_wr   = 0;        //璇诲啓
parameter       phase   =   2'b00;      //w1鍜寃0

parameter       spi_syn =           {8'h3a,8'h01};



reg         wr_valid;
reg         [23:0]  sdio_data1;
reg         [23:0]  sdio_data2;

reg         sdio_out;
reg         [15:0]  sdio_rd;

// reg [7:0] sdio_spi_id;
// reg [7:0] state;

reg         [7:0]   id_cnt;
reg         [3:0]   num;

// reg [7:0] tr_delay;
reg write;
reg [15:0] cnt;
reg [23:0] sdio_data_te;

parameter   st_idle = 4'd0;
parameter   wr_cmd1 = 4'd1;
parameter   waite   = 4'd2;

// parameter wr_cmd3 = 4'd3;
// parameter wr_cmd4 = 4'd4;
// parameter wr_cmd5 = 4'd5;
parameter rd_delay = 4'd6;
parameter rd_cmd1 = 4'd7;
parameter rd_cmd2 = 4'd8;
parameter re_delay = 4'd9;

parameter   w2r_delay   =   5000;


assign sdio = write ? sdio_out:1'bz;
assign clk_spi = ~clk_25;

always @(posedge clk_25)
    if(!rst)
        wr_valid <= 0;
    else if(state == wr_cmd1)
        wr_valid <= 1;
    else 
        wr_valid <= wr_valid;






always @(posedge clk_25)begin
    if(!rst)begin
        state <= st_idle;
        sdio_data1 <= 0;
        sdio_data2 <= 0;

        sdio_rd <= 0;


        waite : begin
            state <= waite;
            fin_ad_reg <= 1;
        end


        default :state <= st_idle;
        endcase
    end
end




always @(posedge clk_25)
    if(!rst)
        num <= 0;
    else if(state == wr_cmd1)
        num <= 1;
    else if(state == waite)
        num <= 2;

    else 
        num <= num;

always @(posedge clk_25)
    if(!rst)
        tr_delay <= 0;
    else if(num == 2 && tr_delay <= 30)
        tr_delay <= tr_delay + 1;

    else
        tr_delay <= 0;


always @(posedge clk_25)
    if(!rst)
        csb <= 1;
    else if(tr_delay > 2 && tr_delay <= 26 && num == 2 )
        csb <= 0;                       

        csb <= 1;

always @(posedge clk_25 )
    if(!rst)
        sdio_out <= 0;
    else if(num == 2 && tr_delay > 2)
        sdio_out <= sdio_data1['d26-tr_delay];

    else 
        sdio_out <= 0;

always @(posedge clk_25)
    if(!rst)
        oeb <= 1;
    else if(num >= 2)
        oeb <= 0;
    else 
        oeb <= 1;

endmodule

0

ADI官方也有例程,不难的。

0
goodbyeday
goodbyeday 能详细说说在哪里找吗。我搜了ADI不知道在哪里找
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
FPGA与ADC的SPI配置实战篇1_AD9639四线SPI配置
前端时间写过几篇关于FPGA通过SPI接口配置ADC的文章,收到了很多朋友的意见和建议,如今实现方式上又有了很大改进。因此笔者打算再更新几篇关于这方面的内容,并且为了不和以前的内容重复,这次主要以实际操作为主,一些基本的概念就不介绍了。 本篇以ADI公司的多通道高速ADC—AD9639为实例,向大家演示FPGA是如何通过SPI协议向该ADC读写寄存器配置数据的。如下图所示为AD9639的功能...
FPGA通过SPI对ADC配置简介(三)-------3线SPI配置时序分析
上篇以德州仪器(TI)的高速ADC芯片——ads52j90为例,介绍完了4线SPI配置时序。本篇将以Analog Device(ADI)的多通道高速ADC芯片AD9249为例,介绍3线SPI读写配置时序。另外,大家如果想详细了解Analog Device(ADI)公司的关于SPI的所有内容,推荐大家在其官网阅读AN-877。 ...
FPGA通过SPI对ADC配置简介(二)-------4线SPI配置时序分析
本篇将以德州仪器(TI)的高速ADC芯片——ads52j90为例,进行ADC的4线SPI配置时序介绍与分析。 从ads52j90的数据手册我们不难发现,其SPI控制模块主要包含4根信号线,即SEN、SCLK、SDIN以及SDOUT。TI公司对其产品SPI配置信号的命名方式与通用的SPI信号命名方式不一样,但实际上SEN对应CSB、SDIN对应SDI、SDOUT对应...
FPGA通过SPI对ADC配置简介(四)-------Verilog实现4线SPI配置
第二篇以德州仪器(TI)的高速ADC芯片——ads52j90为例,介绍完了 4线SPI配置时序。本篇将以该芯片SPI结构为例,具体介绍如何利用verilog 实现4线SPI配置时序。 无论实现读还是写功能,都先要提供SCLK。假如FPGA系统工作时钟40MHz,我们可以利用计数器产生一个n分频的时钟作为SCLK,本例中n取8,SCLK频率5MHz。SCLK产生的代码如下: SCLK时...
【芯片学习】【AD】AD9265
  SPI时序: 可看出一条指令的格式和AD9520相同。     代码: v0.01 单个adc,验证了其测试功能。 https://download.csdn.net/download/u012135070/10497612 初稿,配的很烂。不过还好能工作。 -------------------------------------------- v0.02 四个个...
有关DSP2812与SPI接口DA芯片的通信(AD5640,AD5682)
使用DSP2812控制SPI接口DA芯片总结: 本文只针对SPI接口的DA芯片,通常用到的DA芯片有精度位16位/14位/12位的。我在这次过程中用到的都是14位的,刚开始使用的是AD5640的DA芯片,其精度为14位,移位寄存器为16位,前2位是工作模式位(一般选正常工作模式就行),后14位是数据,刚刚好,DSP2812的数据输出寄存器(SPITXBUF)也是16位,只需要设置SPICCR寄存
学习笔记:FPGA学习之AD通信协议
一,AD控制原理 https://baike.baidu.com/item/%E6%A8%A1%E6%95%B0%E8%BD%AC%E6%8D%A2/94393 二,AD通信协议 在AD TLC549中,vcc引脚是 系统电源输入端,I/O CLOCK引脚是外接时钟输入端,DATA OUT是转换结果数据串行输出端,CS引脚是片选信号,GND是接地端,REF+引脚是正基准电压输入端,ANA...
stm32通过SPI与adc124s021通信读取ad
/**  * 配置用于操作ADC124S21的模拟SPI GPIO端口  */ static void U11ADC124S021_GPIO_init() {              SPI_InitTypeDef  SPI_InitStructure;  //定义SPI结构体    GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO结构体
ad9516-4时钟芯片配置注意事项
ad9516-4时钟芯片的配置注意事项,vhdl语言编程实现
FPGA通过SPI对ADC配置简介(五)-----Verilog实现3线SPI配置
上篇介绍了如何利用verilog 实现4线SPI配置时序,本篇将以AD9249介绍其3线SPI配置的verilog实现。 3线SPI的时钟产生方式和上一篇的4线SPI相同,这里不在叙述。两者的不同点在于:三线SPI模式需要FPGA管脚三态控制SDIO的输入/输出状态。下图所示的代码即为三态控制逻辑。SDI、SDO成为了内部逻辑信号,和上篇的4线SPI配置相同操作即可,而SDIO为三态管脚,需...
FPGA构造spi时序——AD7176为例
    项目中用到了一种常见的低速接口(spi),于是整理了一下关于spi相关的知识,与AD采样的芯片7176通信的协议为spi一.对spi协议的理解spi扫盲    除了供电、接地两个模拟连接以外,SPI总线定义四组数字信号:    - 接口时钟SCLK(Serial Clock,也叫SCK、CLK),master输出至slave的通讯时钟。    - MOSI( Master Output S...
FPGA进阶篇--SPI控制双通道16bit串行DAC8532
本文记录了SPI控制双通道DAC,从芯片手册开始介绍,到verilog编写,全程代码注释。
SPI总线方式实现基于xpt2046的AD转换和PWM
一、SPI总线传送数据和读取数据,AD转换实现读取电位器的值。 XPT2046 时序图 SPI总线写数据,赋予DIN数据-&gt;上升沿写入void SPI_Write(uchar dat) { uchar i; CLK = 0; for(i=0; i&lt;8; i++) { DIN = dat &gt;&gt; 7; //右移七位,最高位先写入 dat &lt;&lt;= 1;
通过SPI配置高速ADC接口
FPGA通过SPI口配置高速ADC,AD9653
FPGA基础设计(五):并行ADC与DAC
概述 ADC和DAC是FPGA与外部信号的接口,从数据接口类型的角度划分,有低速的串行接口和高速的并行接口。FPGA经常用来采集中高频信号,因此使用并行ADC和DAC居多。本文将介绍如何使用FPGA驱动并行ADC和并行DAC芯片。 并行接口包括两种数字编码方式:带符号数signed与无符号数unsigned。本文还将介绍使用不同编码方式的ADC与DAC时需要注意的问题。 接口协议 以A...
学习笔记:FPGA学习之DA通信协议
一:DA控制原理 http://www.dzsc.com/data/2016-8-16/110442.html 二,DA通信协议  在TLC5615原理图中,DIN引脚为串行二进制输入端口,SCLK引脚是串行时钟输入端,CS是片选信号,DOUT引脚是用于级联的串行数据输出,AGND引脚是模拟地,REFIN引脚是基准电压输入端,OUT引脚是DA模拟电压输出端,VCC是电源电压输入端。 ...
ARM和FPGA之间的通信(硬件原理图篇)
设计该开发板的初衷是为了学习,但也希望今后能扩展其功能,看到大家都在diy示波器,自己也非常冲动的想DIY一把,于是呼选了arm+fpga的方案,fpga主要用来实现数据的高速采样,而ARM则提供数据的显示,以及一些人机交互的功能。那么该方案中最重要的地方就是ARM和FPGA之间的通信如何实现了。在网上查了很多的资料,有说将FPGA作为ARM的一个外设,可以通过DMA的方式来直接访问;也有说把FP
基于verilog的ad采样
通过fpga对ad采样的5路信号进行处理
FPGA在AD采集中的应用
AD转换,也叫模数转换,是将模拟信号转换为数字信号。目前包括电脑CPU,ARM,FPGA,处理的信号都只能是数字信号,所以数据信号在进入处理芯片前必须要进行AD转换。 在高速的AD转换中,FPGA以其高速的处理能力,并行的运行结构,丰富的IO资源,往往承担者不可替代的作用。 下面给出一个实际的设计方案。 AD芯片的时钟为25M,FPGA内部系统时钟频率为100M,FPGA内部处理
AD9516-1时钟芯片配置
特性: VCO频率范围:1750Mhz~2250Mhz,6对LVPECL(最大输出频率1.6Ghz)输出和4对LVDS输出(800Mhz)。 内部结构:          如下图所示,常用引脚说明: REF1:参考输入1, REF2:参考输入2, REF_SEL:选择是参考输入1或者参考输入2 LF:环路滤波器输出,使用内部VCO时使用 CLK:外部VCO输入 SYNC:同步输入...
Verilog语法_7(SPI接口驱动)
September 24, 2016 作者:dengshuai_super 出处:http://blog.csdn.net/dengshuai_super/article/details/52649265 声明:转载请注明作者及出处。 百度百科定义: SPI(Serial Peripheral Interface–串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各
FPGA驱动OLED动态显示(Verilog代码)——SPI写操作
/*--------------------------------------------------------------*\ Filename : spi_write.v Author : Cwang Description : Revision History : 2017-10-16 Revision 1.0 Email : wangcp@hitrobot
【芯片学习】【pLL】AD9520
相关公式: 1、     限制条件: ((B&amp;gt;=3)||(B = 1))&amp;amp;&amp;amp;(B&amp;gt;A) 2、    N = (P × B) + Awhere P can be 2, 4, 8, 16, or 32 1)Prescaler,The prescaler of the AD9520 allows for two modes of operation  ...
SPI配置高精度采集8通道24位ADS1256(卷一---datasheet阅读总结篇)
0、引言 断断续续又隔了一个月,看datasheet总共加起来应该有10遍吧,第一遍十分慢的读,第二遍慢读,第三遍快读。。。直到第10遍略读标记重点。看得滚瓜烂熟了,现在终于开始打算写代码了,虽然datasheet有的模拟电路的地方,我也看不太明白,但是把对应的寄存器看明白了,大概功能能用了,也就差不多可以写代码了。本篇文章先总结一下24位的8通道24bit高精度采集的24位ADS1256,本篇文...
ADS1271驱动程序
ADS1271驱动程序
AD7779芯片的驱动方法
由于项目中要对外部传感器进行同步采集,故选用AD7779芯片。AD7779的功能介绍,大家可以看网络上的介绍,不在累述。同样,也是从网站看资料,具体http://www.analog.com/cn/products/analog-to-digital-converters/standard-adc/precision-adc-20msps/multi-channel-ad-converters/a...
ads8318 TI 16bit 高速AD转换芯片
ads8318 16bit 高速AD转换芯片 转换速度可达到500kps,数据线少,三根数据线,节约了硬件资源和时间
FPGA配置 - 基于SPI FLASH的FPGA多重配置(Xilinx)
原文地址:http://www.elecfans.com/emb/fpga/20140124334884_2.html IPROG指令的作用是对FPGA芯片进行复位操作,该复位操作对FPGA内部的应用程序进行复位,复位过程中除专用配置管脚和JTAG管脚,其他输入/输出管脚均为高阻态。完成复位操作后,将默认的加载地址用热启动地址寄存器(Warm Boot Start Address,WB-STAR...
基于Verilog的ADC配置代码
用Verilog描述了SPI总线协议,然后对ADC进行配置
tlvaic3101音频芯片开发笔记调试技巧
tlvaic3101音频芯片开发笔记调试技巧          4、解读芯片寄存器设置 TLV320AIC3101IRHBT寄存器共分两组:page0和page1,每页127个寄存器, 我们需要关心的主要是page0的127个寄存器 page0中寄存器,按照功能分类如下: page选择:    register 0 复位:           register 1 配置采样率: re
AD9268芯片FPGA驱动程序
AD9268芯片的FPGA驱动程序,成功的应用与实践。AD9268是一款ADI公司的模数转换芯片
学会Zynq(28)SPI控制器简介
本文简单介绍Zynq中的SPI控制器。本文将“master”称为“主机”;将“slave”称为“从机”;将“slave slect”从机选择简称为SS。 SPI控制器 Zynq中的SPI总线控制器能够与各种外设通信,如存储器、温度传感器、压力传感器、模拟转换器、实时时钟、任何支持串行模式的SD卡。SPI控制器可以工作在主机模式、从机模式、舵主模式。Zynq-7000系列包括2个SPI控制器。 ...
转:STM32操作24位AD芯片ADS1246
ADS1246是TI公司大致在2009年中期推出的24位ADC,最高采样速率可达2Ksps,其为单通道器件,与之相对应的还有ADS1247和ADS1248三通道器件,但特性并非完全一致。据TI资料介绍,ADS1246在ADS1247/ADS1248功能上做出简化,保留了其部分特性。本次设计,需要用到24位单通道转换器件,于是考虑用到ADS1246,主控制器用STM32L系列。以下为ADS1246的
PHY88E1111配置Verilog程序
使用Verilog语言,可以对PHY88E1111芯片通过MDIO口进行寄存器的读写工作,以完成相应的配置。
用Verilog正确配置AD9957
用Verilog正确配置AD9957
stm32使用AD7799芯片读取ad值
stm32f103单片机操作ad7799的整个工程,ad7799芯片为24位adc器件,工程里使用的是双极性,具体看芯片手册,已亲自验证,要修改其他模式也比较简单,也可以采用spi方式。
tm7705芯片手册中的例程
给出了 AD7705/7706 和微控制器接口的用 C 代码写成的一组读、写程序。此程序的几个步骤是: 1.向通信寄存器写数据,选择通道 1 作为有效通道,将下一个操作设为对时钟寄存器进行写操作。 2.对时钟寄存器写操作,设置 CLKDIV 位,将外部时钟除二,假定外部时钟频率为 4.9512MHz,更新率选为 50Hz。 3.向通信寄存器写数据。选择通道 1 作为有效通道。将下一个操作设为对设置寄存器的写操作。 4.向设置寄存器写数据,将增益设为 1,设置为双极性、非缓冲模式,清除滤波器同步,开始自校准。 ———— 5.查询DRDY输出。 6.从数据寄存器上读数据。 7.跳回第 5、第 6 步,直到从选定的通道中取出指定数量的采样。
AD9361_SPI控制(无代码,只是一个总结)
本人学习AD9361的阶段性总结。详细介绍了如何通过SPI对AD9361进行配置。verilog代码已经完成。如果需要可以加qq互相交流。(无代码,只是一个总结)
AD7606原理图库+并口,串口原理图
AD7606原理图库+并口,串口原理图。还有完整的并口接口原理图
FPGA并行驱动AD9850,verilog
FPGA并行驱动AD9850的verilog代码工程,可直接综合下载至FPGA的芯片中。
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo