0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【紫光同创国产FPGA教程】【第二十章】AD9767双通道正弦波产生例程

FPGA技术专栏 来源:芯驿电子科技 作者:芯驿电子科技 2021-03-10 13:29 次阅读

原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处(alinx.com)。

适用于板卡型号:

PGL22G/PGL12G

1. 实验简介

本实验练习使用AN9767模块,实验中使用的模块是采用ANALOG DEVICES公司的AD9767芯片,支持独立双通道、14位、125MSPS的数模转换。在教程中介绍了利用该模块与FPGA开发板相连输出双通道14位的正弦波,然后通过示波器查看把输出的正弦波的波形。

AN9767模块实物照片如下:

AN9767模块正面图AN9767模块背面图

AN9767双通道DA模块的详细参数:

  • DA转换芯片:AD9767;

  • 通道数:2通道;

  • DA转换位数:14bit;

  • DA更新速率:125 MSPS;

  • 输出电压范围:-5V~+5V;

  • 模块PCB层数:4层,独立的电源层和GND层;

  • 模块接口:40针2.54mm间距排座,方向向下;

  • 工作温度:-40°~85°模块使用芯片均满足工业级温度范围

  • 输出接口:2路BNC模拟输出接口(用BNC线可以直接连接到示波器);

2. 实验原理

2.1 AN9767模块原理框图

AN9767模块的原理设计框图如下:

2.2 AD9767芯片简介

AD9767是双端口、高速、双通道、14位CMOS DAC,芯片集成两个高品质TxDAC+®内核、一个基准电压源和数字接口电路,采用48引脚小型LQFP封装。器件提供出色的交流和直流性能,同时支持最高125 MSPS的更新速率。AD9767的功能框图如下:

pIYBAGBAcESAXGQKAAB_-WSPMtY989.jpg

2.3 电流电压转换及放大

AD9767的两路DA输出都为补码形式的电流输出IoutA和IoutB。当AD9767数字输入为满量程时(DAC的输入的14位数据都为高),IoutA输出满量程的电流输出20mA。IoutB输出的电流为0mA。具体的电流和DAC的数据的关系如下公式所示:

其中IoutFS=32 x Iref,在AN9767模块设计中, Iref的值由电阻R16的值决定,如果R16=19.2K,那Iref的值就是0.625mA。这样IoutFS的值就是20mA。

AD9767输出的电流通过第一级运放AD6045转换成-1V~+1V的电压。具体的转换电路如下图所示:

第一级运放转换后的-1V~+1V的电压通过第二级运放变换到更高幅度的电压信号,这个运放的幅度大小可以通过调整板上的可调电阻来改变。通过第二级运放,模拟信号的输出范围高达-5V~+5V。

o4YBAGBAcEWAfJajAAASo6rEYGg810.jpg

下表为数字输入信号和各级运放输出后的电压对照表:

DAC数据输入值 AD9767电流输出 第一级运放输出 第二级运放输出
3fff(14位全高) +20mA -1V +5V
0(14位全低) -20mA +1V -5V
2000(中间值) 0mA 0V 0V

AD9767芯片的数字接口可以通过芯片的模式管脚(MODE)来配置成双端口模式(Dual)或者交叉(Interleaved)模式。在AN9767模块设计中,AD9767芯片是工作在双端口模式,双通道的DA数字输入接口是独立分开的。双端口模式(Dual)的数据时序图如下图所示:

给AD9767芯片的DA数据通过时钟CLK和写信号WRT的上升沿输入到芯片进行DA转换。

3. 程序设计

例程中提供了AN9767模块的DA测试程序,通过AN9767模块来实现正弦波信号的输出。

正弦波测试程序是通过读取FPGA内部的一个ROM中存储的正弦波数据,然后把正弦波的数据输出到AN9767模块进行数模的转换,从而得到正弦波的模拟信号。正弦波测试程序的示意图如下:

3.1 生成ROM初始化文件

程序中我们会用到一个ROM用于存储1024个14位的正弦波数据, 首先我们需要准备ROM的初始化文件。以下为生成正弦波ROM数据文件的方法:

在软件工具及驱动文件夹下找到工具,其图标如下所示:

  1. 双击.exe打开工具,打开界面如下:

2. 可以根据需要自选波形,本例程中选择正弦波,数据长度1024,数据位宽14,其它默认:

3. 点击保存按钮,将生成的数据文件保存到工程目录文件下(注意保存的文件类型.dat):

4. 保存后点击确定后关闭工具

将 .dat文件保存到生成的Rom IP核中即可,在字符显示实验教程中已做介绍,这里不再重复。

3.2 双通道正弦波发生程序

`timescale1ns/1ps////////////////////////////////////////////////////////////////////////////////////Twosinewaveoutputs-10V~+10V//////////////////////////////////////////////////////////////////////////////////modulead9767_test(inputsys_clk,//inputclock50Mhzoutputda1_clk,//AD9767CH1clockoutputda1_wrt,//AD9767CH1enableoutput[13:0]da1_data,//AD9767CH1dataoutputoutputda2_clk,//AD9767CH2clockoutputda2_wrt,//AD9767CH2enableoutput[13:0]da2_data//AD9767CH2dataoutput);reg[9:0]rom_addr;wire[13:0]rom_data;wireclk_125M;assignda1_clk=clk_125M;assignda1_wrt=clk_125M;assignda1_data=rom_data;assignda2_clk=clk_125M;assignda2_wrt=clk_125M;assignda2_data=rom_data;//DAoutputsinwaveformalways@(negedgeclk_125M)begin
rom_addr<= rom_addr +1'b1;//The output sine wave frequency is 122Khz// rom_addr <= rom_addr + 4 ;              //The output sine wave frequency is 488Khz// rom_addr <= rom_addr + 128 ;            //The output sine wave frequency is 15.6Mhz                         
endROM ROM_inst(.clka(clk_125M),// input clka.addra(rom_addr),// input [8 : 0] addra.douta(rom_data)// output [7 : 0] douta);PLL PLL_inst(// Clock in ports.clk_in1    (sys_clk        ),// IN// Clock out ports.clk_out1   (),// OUT.clk_out2   (clk_125M       ),// OUT// Status and control signals.reset      (1'b0),// IN.locked     ());endmodule

程序中通过一个PLL IP来产生125M的DA输出时钟,然后就是循环读取存放在ROM中的1024个数据,并同时输出到通道1和通道2的DA数据线上。程序中可以通过地址的加1,加4, 或者加128来选择输出不同的频率的正弦波。

4. 实验现象

1)将AN9767模块插入开发板扩展口J8,注意1脚对齐,不要插错、插偏,不能带电操作。

2)用我们提供的BNC线连接AN9767的输出到示波器的输入如下图,然后开发板上电,下载程序就可以从示波器上观察从DA模块输出的模拟信号的波形了。

AN9767与开发板连接图

3)示波器上看到的正弦波如下:

4)我们可以把程序中的地址修改成+4的方式,如下修改,这样一个正弦波的输出的点为256个,输出的正弦波的频率会提高4倍:

程序修改后,重新下载FPGA后,正弦波的频率变高,示波器显示的波形如下:

用户也可以通过调节AN9767模块上的可调电阻来改变2个通道输出波形的幅度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1600

    文章

    21281

    浏览量

    592851
  • 正弦波
    +关注

    关注

    11

    文章

    561

    浏览量

    54277
  • adc
    adc
    +关注

    关注

    95

    文章

    5643

    浏览量

    539293
  • 数模转换
    +关注

    关注

    3

    文章

    106

    浏览量

    28524
  • 紫光同创
    +关注

    关注

    4

    文章

    68

    浏览量

    27242
收藏 人收藏

    评论

    相关推荐

    紫光同创国产FPGA教程】【第二十一章】AD9767双通道三角波产生例程

    例程中提供了AN9767模块的DA测试程序,通过AN9767模块来实现三角波信号的输出。 三角波测试程序是通过在FPGA产生一个计数模块
    的头像 发表于 03-10 13:30 1.1w次阅读

    国产FPGA介绍-紫光同创

    紫光同创紫光集团旗下紫光国微的子公司,成立于2013年,有十余年可编程逻辑器件研发经历,布局覆盖高中低端FPGA产品。 早在2015年,
    发表于 01-24 10:45

    紫光同创FPGA有哪些型号

    请问紫光同创FPGA有哪些型号?分别用于什么场景?
    发表于 01-24 10:48

    AD9767的verilog驱动

    小弟刚开始学习verilog,也刚接触FPGA不久,先要写一个AD9767的驱动,但是却无从下手呀!!麻烦各位大神帮帮忙呀!!!!!!!!
    发表于 07-30 23:06

    明德扬视频分享点拨FPGA课程--第二十章  提高效率技巧

    第二十章提高效率技巧1. 利用GVIM制作模板http://yunpan.cn/cjZTiDA9pY56x访问密码 c359
    发表于 11-07 09:22

    运用FPGA生成正弦波的具体步骤,特别是如何产生正弦波表格。

    我是FPGA的新手,学了3天。因为急着用,现在有点着急。自己需要用FPGA做SPWM的调制。具体如何产生正弦波和载波的方法还不是很明白。大概知道用DDS输出波形的原理,但ROM里的
    发表于 01-11 14:59

    怎么调制极性SPWM正弦波

    DSPF2812怎么调制极性正弦波?DSP里只能发生正向三角,而极性要产生正、负两向三角
    发表于 01-15 17:22

    产生mv级别的正弦波

    小弟最近在做可调正弦波的设计。任务书要求产生30mv~3.3v有效值的正弦波。我现在是用FPGA控制AD9744,然后接一个AD818,。用示波器测到的AD818输出端倒是能生成30m
    发表于 04-13 17:24

    fpga如何控制AD9910产生正弦波

    fpga产生控制指令控制AD9910产生正弦波
    发表于 07-01 20:13

    【小梅哥FPGA】带上位机的高速双通道DDS信号发生器

    ,在源码基础上修改了系统时钟为100MHz,添加了AD9767双通道高速DAC接口,以使实验能够输出高达20MHz的正弦信号。同时原来板上的TLV5618的两个通道也能继续同步输出信号
    发表于 06-01 09:57

    请问能用NI9073 FPGA模式产生正弦波吗?

    能不能用NI 9073FPGA模块产生一个500HZ的标准正弦波,然后通过9264AO输出??我用FPGA正弦波
    发表于 04-18 15:10

    AD9767FPGA驱动程序?

    小弟刚开始学习verilog,也刚接触FPGA不久,现在要写一个AD9767的驱动,但是却无从下手呀!!麻烦各位大神帮帮忙呀 ,各位大神是否有AD9767FPGA驱动程序?
    发表于 11-08 09:58

    STM32产生极性正弦波

    项目需要产生100mv极性正弦波,STM32的DAC只能输出正电压单极性,有没有不使用双电源运放的方案?
    发表于 09-19 17:53

    紫光同创FPGA开发套件,高性能国产FPGA方案

    紫光同创FPGA开发套件,高性能国产FPGA方案,100%国产化,全系列产品,方案可定制,满足多
    发表于 11-16 17:25

    AD9767/9765/9763 IBIS型号

    AD9767/9765/9763 IBIS Model
    发表于 03-24 13:31 10次下载
    <b class='flag-5'>AD9767</b>/9765/9763 IBIS型号