Using the SDRAM on Altera’s DE1-SoC Board with Verilog Designs
Using the SDRAM on Altera’s
DE1-SoC Board with Verilog Designs
1.DE1-SOC Board上SDRAM资源
2.系统架构框图
3.关于SDRAM controller
SDRAM controller能生成SDRAM芯片所需要的信号,但是SDRAM芯片的时钟信号需要外部来提供。
4.DE1-SOC Board---SDRAM Controller参数配置
Memory Profile
Timing---自己直接输入参数即可
5.系统时钟与SDRAM时钟的配置
采用university program提供的IP核:
因为板上的时钟为50MHz,所以reference clock:50MHz,本实验的系统时钟也采用50MHz。
6.搭建Qsys系统
选择Reset vector 和 Exception Vector为new_sdram_controller.s1,即软件程序在SDRAM里面跑。
7.在顶层文件上对Qsys系统进行实例化
module top( new_sdram_controller_wire_addr, // new_sdram_controller_wire.addr
new_sdram_controller_wire_ba, // .ba
new_sdram_controller_wire_cas_n, // .cas_n
new_sdram_controller_wire_cke, // .cke
new_sdram_controller_wire_cs_n, // .cs_n
new_sdram_controller_wire_dq, // .dq
new_sdram_controller_wire_dqm, // .dqm
new_sdram_controller_wire_ras_n, // .ras_n
new_sdram_controller_wire_we_n, // .we_n
sys_sdram_pll_ref_clk_clk, // sys_sdram_pll_ref_clk.clk
sys_sdram_pll_sdram_clk_clk
); output [:] new_sdram_controller_wire_addr; // new_sdram_controller_wire.addr
output [:] new_sdram_controller_wire_ba; // .ba
output new_sdram_controller_wire_cas_n; // .cas_n
output new_sdram_controller_wire_cke; // .cke
output new_sdram_controller_wire_cs_n; // .cs_n
inout [:] new_sdram_controller_wire_dq; // .dq
output [:] new_sdram_controller_wire_dqm; // .dqm
output new_sdram_controller_wire_ras_n; // .ras_n
output new_sdram_controller_wire_we_n; // .we_n
input sys_sdram_pll_ref_clk_clk; // sys_sdram_pll_ref_clk.clk
output sys_sdram_pll_sdram_clk_clk; mem u1 (
.sys_sdram_pll_ref_clk_clk (sys_sdram_pll_ref_clk_clk), // sys_sdram_pll_ref_clk.clk
.sys_sdram_pll_ref_reset_reset ('b0), // sys_sdram_pll_ref_reset.reset
.new_sdram_controller_wire_addr (new_sdram_controller_wire_addr), // new_sdram_controller_wire.addr
.new_sdram_controller_wire_ba (new_sdram_controller_wire_ba), // .ba
.new_sdram_controller_wire_cas_n (new_sdram_controller_wire_cas_n), // .cas_n
.new_sdram_controller_wire_cke (new_sdram_controller_wire_cke), // .cke
.new_sdram_controller_wire_cs_n (new_sdram_controller_wire_cs_n), // .cs_n
.new_sdram_controller_wire_dq (new_sdram_controller_wire_dq), // .dq
.new_sdram_controller_wire_dqm (new_sdram_controller_wire_dqm), // .dqm
.new_sdram_controller_wire_ras_n (new_sdram_controller_wire_ras_n), // .ras_n
.new_sdram_controller_wire_we_n (new_sdram_controller_wire_we_n), // .we_n
.sys_sdram_pll_sdram_clk_clk (sys_sdram_pll_sdram_clk_clk) // sys_sdram_pll_sdram_clk.clk
); endmodule
综合结果图:
8.烧写硬件代码开启NIOS II---eclipse
9.编写C语言代码
/*
* "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 "system.h"
#include "io.h"
#include "alt_types.h" int main()
{
printf("Hello from Nios II!\n");
alt_u16 i = ;
for(i=;i<;i++)
{
IOWR(0x0, i, i);
}
return ;
}
关于函数的使用:
9.更新BSP(假设之前更改过硬件)
首先开启BSP Editor,配置相应的部分,最后点击Generate.
9.软件调试 ----Debug
10 读取memory里面的数据
11更改Reset vector 和 Exception Vector为:
即程序在on-chip RAM里面跑。
12.更改了硬件之后,得重新生成BSP
13.BSP做好后,程序就可以开始debug了:
调试结果:读取相应memory里面的数据:
Using the SDRAM on Altera’s DE1-SoC Board with Verilog Designs的更多相关文章
- arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc)
arm-linux-gnueabihf-gcc下载 qt下载 arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc) Ubuntu 16.04 安装QT arm嵌入式 ...
- altera soc体验之旅 FPGA与ARM的窃窃私语
喜大普奔,公司要评估用SOC做产品,我就自然而然的被安排了学习和评估的工作,于是,每天的工作就是开始研究soc了.其实,只要能静下心来学习,一切都还是能够弄出来的. 以前像个无头苍蝇一样到处乱撞, ...
- DS-5建工程
DS-5教程-使用ARM DS-5 和DSTREAM仿真器调试裸机程序 http://bbs.elecfans.com/jishu_453909_1_1.html i2c( 楼主 )2014-10-1 ...
- diy作品——视觉追踪小车介绍
最近刚刚完毕了一个追踪功能的小车.大体功能例如以下:小车能通过网线给电脑传图(抱歉.临时没搞wifi驱动).并在电脑端通过鼠标选中待跟踪的目标,然后小车就開始追踪.由于追踪框有缩放功能.所以也能推断物 ...
- FPGA的过去,现在和未来
我们知道,相对于专业的ASIC,FPGA有上市时间和成本上的优势.另外,在大多数情况下,FPGA执行某些功能较之CPU上的软件操作更高效.这就是为什么我们认为它不但会运用在数据中心的服务器.交换器.存 ...
- 基于FPGA的PCIe接口实现(具体讲解了数据流向)
时间:2014-12-09 来源:西安电子科技大学电子工程学院 作者:姜 宁,陈建春,王 沛,石 婷 摘要 PCI Express是一种高性能互连协议,被广泛应用于网络适配.图形加速器.网络存储.大数 ...
- Device Tree(一):背景介绍
一.前言 作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的.扯皮的俗务占据了大部分的时间.当有机会下载3.14的内核并准备学习的时候,突然 ...
- ModelSim仿真入门
ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...
- U-Boot Makefile分析(5)主控Makefile分析
这次分析源码根目录下的Makefile,它负责读入配置过的信息,通过OBJS.LIBS等变量设置能够参与镜像链接的目标文件,设定编译的目标等等. HOSTARCH := $(shell uname - ...
随机推荐
- Android Activity之间的传值示例
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
- 安装Cygwin,,以及遇到的问题
实验需要用到Cygwin,于是去下了一个,安装过程比较顺利,参考:http://blog.csdn.net/chunleixiahe/article/details/55666792 但是发现 ma ...
- Netty核心概念
一个Netty程序始于Bootstrap类,Bootstrap类是Netty提供的一个可以通过简单配置来设置或“引导”程序的一个重要的类.Netty中设计了Handlers来处理特定的"ev ...
- ubuntu ssh 与 Samba安装
ssh 安装:sudo apt-get install openssh-server 确认sshserver是否启动:ps -aux | grep ssh(/etc/init.d/ssh start, ...
- 20165228 实验一 Java开发环境的熟悉
20165228 实验一 Java开发环境的熟悉 一.实验内容及步骤 (一)使用JDK编译.运行简单的Java程序 命令行下Java程序开发 1.用VrtualBox打开Linux虚拟机 2.使用Al ...
- useradd密码无效
/********************************************************************** * useradd密码无效 * 说明: * 在测试Ubu ...
- Linux命令学习之路——变更工作目录:cd
使用权限:所有角色 使用方式:cd [ targetDir ] 作用:该命令用于在Linux中切换工作目录 注意点: 1.targetDir代表目标目录,可以采用绝对路径或相对路径表示: 2.当tar ...
- [LeetCode&Python] Problem 217. Contains Duplicate
Given an array of integers, find if the array contains any duplicates. Your function should return t ...
- 使用libcurl作为Http client
产品通过HTTP协议为外部提供接口服务,常规情况是客户通过HTTP协议请求服务,服务结束后通过HTTP协议将服务记录POST到请求方. 用原生C实现了一个简单的HTTP Client,只有简单的功能: ...
- Gym-101673 :East Central North America Regional Contest (ECNA 2017)(寒假自训第8场)
A .Abstract Art 题意:求多个多边形的面积并. 思路:模板题. #include<bits/stdc++.h> using namespace std; typedef lo ...