1、首先登陆analog官网下载此文件

下载此文档如下

2、解压后一会这个文件复制到我们工程内

3、把之前SDRAM工程复制一份,在ip文件夹内复制第2步里边的AD7606文件夹。

4、打开qsys,左侧能看到如下,如果看不到。点击tools--options,里边加入路径就能看到了

5、qsys加入ad7606IP核,连线。注意avalon master 一定要连接到sdram的S1,因为我们AD数据要存在sdram内。

正常下载的ad7606ip核他的输出端口是一个conduit,但是我把每个都变成了一个conduit,原因是因为我的quartus18版本不这样改会报错,对于低版本的是没问题的,不需要改成这样

6、生成。之后修改verilog顶层文件如下,有些多余的忽略,是我测试用的。由于我没有使用AD7606很多range、os什么之类的,所以这里没有给出io,这个无所谓的。

module SDRAMTEST
(
    CLK_50M,
    RST_N,
    LEDOUT,    
    sdram_clk,
    sdram_addr,
    sdram_ba,
    sdram_cas_n,
    sdram_cke,
    sdram_cs_n,
    sdram_dq,
    sdram_dqm,
    sdram_ras_n,
    sdram_we_n,
    uart_0_rxd,
    uart_0_txd,
    
    ad7606_busy,
    ad7606_convst,
    ad7606_cs,
    ad7606_rd,
    ad7606_reset,
    ad7606_data,
    
    ad7606_busy1,
    ad7606_convst1,
    ad7606_cs1,
    ad7606_rd1,
    ad7606_reset1

);

input             CLK_50M;
    input                    RST_N;
    output    [7:0]       LEDOUT;
    output                sdram_clk;
    output    [12:0]    sdram_addr;
    output    [1:0]        sdram_ba;
    output                sdram_cas_n;
    output                sdram_cke;
    output                sdram_cs_n;
    inout        [15:0]    sdram_dq;
    output    [1:0]        sdram_dqm;
    output                sdram_ras_n;
    output                sdram_we_n;
    input                    uart_0_rxd;
    output                uart_0_txd;

input                    ad7606_busy;
    output                ad7606_convst;
    output                ad7606_cs;
    output                ad7606_rd;
    output                ad7606_reset;
    input        [15:0]    ad7606_data;

output                ad7606_busy1;
    output                ad7606_convst1;
    output                ad7606_cs1;
    output                ad7606_rd1;
    output                ad7606_reset1;

assign     ad7606_busy1=ad7606_busy;
assign     ad7606_convst1=ad7606_convst;
assign     ad7606_cs1=ad7606_cs;
assign     ad7606_rd1=ad7606_rd;
assign     ad7606_reset1=ad7606_reset;

mysys u0 (
    .clk_clk                                 (CLK_50M),
    .pio_led_export                          (LEDOUT),
    .reset_reset_n                           (RST_N),
    .sdram_clk_clk                           (sdram_clk),
    .sdram_addr                              (sdram_addr),
    .sdram_ba                                (sdram_ba),
    .sdram_cas_n                             (sdram_cas_n),
    .sdram_cke                              (sdram_cke),
    .sdram_cs_n                              (sdram_cs_n),
    .sdram_dq                                (sdram_dq),
    .sdram_dqm                               (sdram_dqm),
    .sdram_ras_n                             (sdram_ras_n),
    .sdram_we_n                              (sdram_we_n),
    .uart_0_rxd                              (uart_0_rxd),
    .uart_0_txd                              (uart_0_txd),
    
    .ad7606_0_busy_beginbursttransfer            (ad7606_busy), 
    .ad7606_0_convst_writeresponsevalid_n        (ad7606_convst),
    .ad7606_0_cs_n_export                         (ad7606_cs),
    .ad7606_0_os_readdata                            (ad7606_os),
    .ad7606_0_range_writeresponsevalid_n        (ad7606_range),
    .ad7606_0_rd_writeresponsevalid_n            (ad7606_rd),
    .ad7606_0_adreset_writeresponsevalid_n        (ad7606_reset),
    .ad7606_0_stdby_writeresponsevalid_n        (ad7606_stdby),
    .ad7606_0_data_writebyteenable_n                (ad7606_data),
    );

endmodule

7、例化管脚之后全编译。

8、打开elipse。在这里我使用的方法比较笨,我不知道怎么把那个ad7606.c还有.h文件调用不报错,总是报错,所以我自己重新新建了文件。

9、右键1处新建文件夹AD7606,之后右键AD7606在里边分别建两个文件夹inc和src如下

10、之后在这两个文件夹内分别生成如下文件。这个文件不是我写的,而是从analog官网第1步下载的文件里边就有,我都复制过来了。

11、之后主程序如下写,这是从小梅哥的程序里边拷贝的

/*
 * "Hello World" example.
 *
 * This example prints 'Hello from Nios II' to the STDOUT stream. It runs on
 * the Nios II 'standard', 'full_featured', 'fast', and 'low_cost' example
 * designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT
 * device in your system's hardware.
 * The memory footprint of this hosted application is ~69 kbytes by default
 * using the standard reference design.
 *
 * For a reduced footprint version of this template, and an explanation of how
 * to reduce the memory footprint for a given application, see the
 * "small_hello_world" template.
 *
 */

#include <stdio.h>
#include <unistd.h>
#include <alt_types.h>
#include <io.h>
#include <system.h>
#include <ad7606.h>

void send_voltage(alt_16 *data, alt_u8 size, alt_u8 channel){
    int i = 0,j=0;
    volatile float Voltage;

printf("\n\n");
    for(j=0;j<size/channel;j++)
    {
        printf("voltage :");
        for(i=0;i<channel;i++)
        {
            Voltage = *data * (10.0/65536);

if(Voltage < 0)
                printf("%2.4f,%4x;",Voltage,(alt_u16) *data);
            else
                printf("+%2.4f,%4x;",Voltage,(alt_u16) *data);
            data ++;
        }
        printf("\n");

}
}

int main()
{

alt_u32 data_base = (SDRAM_BASE | 0x80000000) + 65536 * 8;

alt_u32 size;

alt_16 *data;
    AD7606_Reset();    //复位AD7606控制器

unsigned i=0;
 while(1)
 {
        //采样8个通道
        AD7606_WriteRegister(CHAN8 | OS16 | NO_STAND_BY);
        //采样size个数据,存储到SDRAM中
        size = 16;
        AD7606_StartAcquisition(size, data_base);
        usleep(1000000);
        //等待采样完成
        while (!(AD7606_ReadStatus() & 0x00000001));
        data = data_base;

send_voltage(data,size,8);
        usleep(1000000);

//printf("Hello from Nios II!,i is %d\n",i);
  i++;
//  usleep(1000000);
 }
  return 0;
}

12、下载后运行如下,运行发现貌似不太对,因为貌似一个数占了32位,不是16位呢。

13、于是乎这个地方每次地址+2

14、这样便对了,究竟是哪里位宽没对上,暂时不知道

NIOS II 15:AD7606共享SDRAM相关推荐

  1. 小插曲:我和Nios II的故事

    想必学习Altera家FPGA的小码农们都会有一个共同的困扰吧,那就是Nios II该不该学的问题.这个问题说白了,就是学Nios II到底有没有用.观点1.无用论,常常会听FPGA群里的某位前辈说道 ...

  2. NIOS II 创建示例设计_Quartus II 9.0

    安装设计文件 在继续之前,您必须安装 Quartus II 软件和 Nios II 嵌入式设计套件. 分析系统要求 本部分介绍的教程示例设计的系统要求.设计的目标如下: 有关这些和其他组件,完整详细信 ...

  3. 【转载】基于Nios II的DMA传输总结(附源码)

    转载:http://blog.ednchina.com/chactor/185802/message.aspx#92932 最近练了一段时间的DMA传输,现做如下的总结,分享自己获得心得以及遇到的一些 ...

  4. (原創) 如何使用ModelSim-Altera對Nios II仿真? (SOC) (Nios II) (SOPC Builder) (ModelSim) (DE2)...

    Abstract 在剛學習Nios II時,每次在Run As Nios II Hardware下方,看到Run As Nios II ModelSim就覺得很好奇,Nios II明明是嵌入式系統,怎 ...

  5. 音频电平vu显示表软件下载_正点原子开拓者 Nios II资料连载第十章MCU TFT-LCD图片显示实验...

    1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者 Nios II开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://w ...

  6. 基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程移植到自己做的板子上

    原程序是运行在小梅哥AC620开发板上的:基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程_ZLK1214的专栏-CSDN博客_小梅哥ac620[开发板]开发板型号:小梅哥AC620 ...

  7. 【连载】【FPGA黑金开发板】NIOS II那些事儿--NIOS II 常见问题(FAQ)

    为了帮助初学者快速入门NIOS II,在此建立NIOS II FAQ,希望大家把自己遇到的问题提出来,然后在这里总结起来,以帮助以后遇到同样问题的人. 首先需要声明一点,下面部分问题来自网络,如果版权 ...

  8. HDMI系列之一:基于Nios II的HDMI显示图片

    一休哥将在本文中介绍一个基于Nios II的HDMI显示图片的工程.我将主要分三个部分来介绍这一工程,从而实现工程效果. 1. Nios II的常规使用套路 2. 自定义HDMI IP核的制作 3. ...

  9. [原创][连载].基于SOPC的简易数码相框 - Nios II SBTE部分(软件部分) - 从SD卡内读取图片文件,然后显示在TFT-LCD上...

    实在很抱歉,时间紧张,我只讲怎样从SD卡内读取bin文件(二进制文件),然后现在TFT-LCD上. 准备工具 1. Image2Lcd.zip 操作步骤 步骤1 寻找或制作240x320的图片 简单起 ...

最新文章

  1. netty tcp服务端主动断开客户端_「Netty核心技术」6-ChannelPipeline源码
  2. LeetCode 6 Z 字形变换
  3. OpenCV场景文本识别的实例(附完整代码)
  4. .NET中Flags枚举的使用
  5. 解决针对ubuntu11.04安装中文包后不能正常查看或使用pdf和Archiver的问题
  6. Java描述设计模式(18):享元模式
  7. Oracle修改表空间为自动扩展
  8. $(obj).each 和 $.each() 区别
  9. Oracle数据库学习笔记
  10. 三菱FX3U与三菱变频器 modbus RTU通讯案例 采用485方式,modbus RTU协议。 与变频器通讯,控制启停,频率,加减速时间设定,频率
  11. 数据库-SQL语句创建与修改
  12. BAPI_PO_CREATE1 创建采购订单
  13. windows11常用快捷键
  14. 强制使用ie浏览器使用最高版本
  15. vmware安装winxp
  16. 选择恐惧症福音!教你三种思维方式,像计算机一样做出最优决策
  17. 自适应旁瓣matlab,相控阵雷达自适应旁瓣对消技术的研究
  18. 提示语默认显示标签:placeholder
  19. 台式机和计算机有什么区别吗,台式机CPU和笔记本计算机CPU有什么区别
  20. 3.15UiPath图片操作保存图片的介绍和使用

热门文章

  1. C语言的良好编程习惯
  2. 外卖CPS小程序部署指南,个人获取美团外卖小程序跳转链接
  3. mouseenter事件java_javaScript事件(五)事件类型之鼠标事件
  4. UE4 Sequencer的事件调用
  5. 这台计算机上没有安装驱动程序,这台计算机上没有安装‘HP LaserJet Pro M402-403 PLC6'打印机驱动程序,如果不安装...
  6. mysql 导入 没有数据库文件怎么打开_没有SQL Server数据库时如何打开.MDF文件
  7. CS231n:Python Numpy教程
  8. 《Adobe Premiere Pro CS4经典教程》——复习
  9. 获取Orcal编码格式为US7ASCII中文数据乱码问题;
  10. 荧光标记毛细管电泳应用---InDel标记筛选与验证