NIOS II 15:AD7606共享SDRAM
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相关推荐
- 小插曲:我和Nios II的故事
想必学习Altera家FPGA的小码农们都会有一个共同的困扰吧,那就是Nios II该不该学的问题.这个问题说白了,就是学Nios II到底有没有用.观点1.无用论,常常会听FPGA群里的某位前辈说道 ...
- NIOS II 创建示例设计_Quartus II 9.0
安装设计文件 在继续之前,您必须安装 Quartus II 软件和 Nios II 嵌入式设计套件. 分析系统要求 本部分介绍的教程示例设计的系统要求.设计的目标如下: 有关这些和其他组件,完整详细信 ...
- 【转载】基于Nios II的DMA传输总结(附源码)
转载:http://blog.ednchina.com/chactor/185802/message.aspx#92932 最近练了一段时间的DMA传输,现做如下的总结,分享自己获得心得以及遇到的一些 ...
- (原創) 如何使用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明明是嵌入式系統,怎 ...
- 音频电平vu显示表软件下载_正点原子开拓者 Nios II资料连载第十章MCU TFT-LCD图片显示实验...
1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者 Nios II开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://w ...
- 基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程移植到自己做的板子上
原程序是运行在小梅哥AC620开发板上的:基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程_ZLK1214的专栏-CSDN博客_小梅哥ac620[开发板]开发板型号:小梅哥AC620 ...
- 【连载】【FPGA黑金开发板】NIOS II那些事儿--NIOS II 常见问题(FAQ)
为了帮助初学者快速入门NIOS II,在此建立NIOS II FAQ,希望大家把自己遇到的问题提出来,然后在这里总结起来,以帮助以后遇到同样问题的人. 首先需要声明一点,下面部分问题来自网络,如果版权 ...
- HDMI系列之一:基于Nios II的HDMI显示图片
一休哥将在本文中介绍一个基于Nios II的HDMI显示图片的工程.我将主要分三个部分来介绍这一工程,从而实现工程效果. 1. Nios II的常规使用套路 2. 自定义HDMI IP核的制作 3. ...
- [原创][连载].基于SOPC的简易数码相框 - Nios II SBTE部分(软件部分) - 从SD卡内读取图片文件,然后显示在TFT-LCD上...
实在很抱歉,时间紧张,我只讲怎样从SD卡内读取bin文件(二进制文件),然后现在TFT-LCD上. 准备工具 1. Image2Lcd.zip 操作步骤 步骤1 寻找或制作240x320的图片 简单起 ...
最新文章
- netty tcp服务端主动断开客户端_「Netty核心技术」6-ChannelPipeline源码
- LeetCode 6 Z 字形变换
- OpenCV场景文本识别的实例(附完整代码)
- .NET中Flags枚举的使用
- 解决针对ubuntu11.04安装中文包后不能正常查看或使用pdf和Archiver的问题
- Java描述设计模式(18):享元模式
- Oracle修改表空间为自动扩展
- $(obj).each 和 $.each() 区别
- Oracle数据库学习笔记
- 三菱FX3U与三菱变频器 modbus RTU通讯案例 采用485方式,modbus RTU协议。 与变频器通讯,控制启停,频率,加减速时间设定,频率
- 数据库-SQL语句创建与修改
- BAPI_PO_CREATE1 创建采购订单
- windows11常用快捷键
- 强制使用ie浏览器使用最高版本
- vmware安装winxp
- 选择恐惧症福音!教你三种思维方式,像计算机一样做出最优决策
- 自适应旁瓣matlab,相控阵雷达自适应旁瓣对消技术的研究
- 提示语默认显示标签:placeholder
- 台式机和计算机有什么区别吗,台式机CPU和笔记本计算机CPU有什么区别
- 3.15UiPath图片操作保存图片的介绍和使用
热门文章
- C语言的良好编程习惯
- 外卖CPS小程序部署指南,个人获取美团外卖小程序跳转链接
- mouseenter事件java_javaScript事件(五)事件类型之鼠标事件
- UE4 Sequencer的事件调用
- 这台计算机上没有安装驱动程序,这台计算机上没有安装‘HP LaserJet Pro M402-403 PLC6'打印机驱动程序,如果不安装...
- mysql 导入 没有数据库文件怎么打开_没有SQL Server数据库时如何打开.MDF文件
- CS231n:Python Numpy教程
- 《Adobe Premiere Pro CS4经典教程》——复习
- 获取Orcal编码格式为US7ASCII中文数据乱码问题;
- 荧光标记毛细管电泳应用---InDel标记筛选与验证