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的更多相关文章

  1. arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc)

    arm-linux-gnueabihf-gcc下载 qt下载 arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc) Ubuntu 16.04 安装QT arm嵌入式 ...

  2. altera soc体验之旅 FPGA与ARM的窃窃私语

      喜大普奔,公司要评估用SOC做产品,我就自然而然的被安排了学习和评估的工作,于是,每天的工作就是开始研究soc了.其实,只要能静下心来学习,一切都还是能够弄出来的. 以前像个无头苍蝇一样到处乱撞, ...

  3. DS-5建工程

    DS-5教程-使用ARM DS-5 和DSTREAM仿真器调试裸机程序 http://bbs.elecfans.com/jishu_453909_1_1.html i2c( 楼主 )2014-10-1 ...

  4. diy作品——视觉追踪小车介绍

    最近刚刚完毕了一个追踪功能的小车.大体功能例如以下:小车能通过网线给电脑传图(抱歉.临时没搞wifi驱动).并在电脑端通过鼠标选中待跟踪的目标,然后小车就開始追踪.由于追踪框有缩放功能.所以也能推断物 ...

  5. FPGA的过去,现在和未来

    我们知道,相对于专业的ASIC,FPGA有上市时间和成本上的优势.另外,在大多数情况下,FPGA执行某些功能较之CPU上的软件操作更高效.这就是为什么我们认为它不但会运用在数据中心的服务器.交换器.存 ...

  6. 基于FPGA的PCIe接口实现(具体讲解了数据流向)

    时间:2014-12-09 来源:西安电子科技大学电子工程学院 作者:姜 宁,陈建春,王 沛,石 婷 摘要 PCI Express是一种高性能互连协议,被广泛应用于网络适配.图形加速器.网络存储.大数 ...

  7. Device Tree(一):背景介绍

    一.前言 作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的.扯皮的俗务占据了大部分的时间.当有机会下载3.14的内核并准备学习的时候,突然 ...

  8. ModelSim仿真入门

    ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...

  9. U-Boot Makefile分析(5)主控Makefile分析

    这次分析源码根目录下的Makefile,它负责读入配置过的信息,通过OBJS.LIBS等变量设置能够参与镜像链接的目标文件,设定编译的目标等等. HOSTARCH := $(shell uname - ...

随机推荐

  1. [转]Spark 踩坑记:数据库(Hbase+Mysql)

    https://cloud.tencent.com/developer/article/1004820 Spark 踩坑记:数据库(Hbase+Mysql) 前言 在使用Spark Streaming ...

  2. Java中的面向对象II

    既然要创建一个对象那么就需要有一个类,下面介绍类的构建. 一.类的两个元素: 1.字段 字段也就是类变量,每一个类变量都是类的成员. <1.>类变量访问指定通常是私有的(private)或 ...

  3. seo:网站被黑的预防及处理方法

    一.网站被黑的类型有哪些 1.网站挂木马  :通过网站后台 FTP等植入恶意代码 2.网站域名被恶意泛解析 3.跳转 4.百度快照劫持:黑客劫持快照在你不工作的时候进入你的网站的,一般是凌晨1点到5. ...

  4. es6的let与es5的var定义变量的区别

    es6的let与es5的var定义变量的区别 自身新手第一次接触let关键字的时候,不知道let与var的区别,本能认为是一样,但非如此,比如下述的代码运行就会报错: let hello = 'hel ...

  5. EasyUI datagrid 选择单元格 出现文本框 修改 四

    @disabled = "disabled", 只读属性 数据初始化 public JsonResult RateList(string dispatch_number, stri ...

  6. JavaScript 缓存基本原理

    // 这是个闭包函数,接收一个函数,可以把接收的函数转换成具有缓存能力的函数 var memoize = function(f) { // 使用一个 cache 对象来进行缓存 var cache = ...

  7. ios-根据单元格里的控件tag值,在方法外获得对应的section与row的值

    在cell的代理方法里:cellForRowAtIndexPath btn.tag = indexPath.section *100 + indexPath.row; [cell.exitPerson ...

  8. Python知识点整理,基础1 - 基本语法

  9. POJ3904 Sky Code

    题意 Language:Default Sky Code Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3980 Accepte ...

  10. WebService 学习记录

    -------------------------------------------PS:这个WebService 服务必须一直开着,关闭就没法访问了 Web Service 教程 一.webser ...