首先构建SOPC系统,先分别添加两个CPU,分别命名为CPU1和CPU2,设置如下图,其中CPU1运行VGA的乒乓游戏,CPU2运行音乐,这里为了简单,音乐用LED来表示。

这里CPU1选择是中等容量的CPU,其他后面的选项为默认,注意:Reset Vector从0X0开始,Exception Vector从0X20开始。由于笔者板子上带的是EPCS4,容量有限,所以这里都从SDRAM启动,也就是不能固化程序了。

这里CPU2选择是最小容量的CPU,其他后面的选项为默认,注意:Reset Vector从0X100000开始,Exception Vector从0X100020开始。因为VGA模块占用了大量的双口RAM,所以只能选择小容量的,选择中等容量编译不通过。为各自的CPU添加timer,其设置保证默认即可。

最后构建整个SOPC系统,VGA的IP核使用的是http://www.cnblogs.com/hunningtu/p/3151016.html,一定要注意左边的线的连接,cpu1_timer只能够让cpu1使用,cpu2_timer只能够使cpu2使用,注意自动添加进去的timer相互都有连接,有的部分可以去去掉。还有对外设的控制,如果想让两个cpu都控制同一个外设,需要将cpu1和cpu2的data_master接到外设的avalon_slave中去。将构建好的sopc系统,自动地址分配,自动IRQ分配。

刚开始参考了《系统晶片设计-使用NIOS》中推荐的SOPC构建方法见下图:

参考书中那种构建方法,主要的不同点在于中断的分配,书中的分配方法是每个CPU各有一套中断系统,但是笔者做了实验,还是自动分配之后的中断系统用起来不出问题。上图张cpu2也可以访问VGA模块,这种形式在DE2上平跑没事,偶尔会跑偏,因为程序本来就是打算只有cpu1来控制VGA,所以将左边的点去掉,只能让cpu1来控制vga比较稳定。

接下来NIOS构建软件系统,分别建立两个工程,单核程序是最后下载程序运行时,运行的是单个程序,如果是双核的话是每次运行两个程序

cpu那个选项是可以选择的,然后设置cpu1和cpu2的环境,注意只有CPU1有jtag,

还有设置一下Window--Preferences,这样双核下载程序不报错

最后的工程效果:

分别build,事先下载好sof文件,然后run--run..选中两个工程,run一下,两个cpu的程序都下载进去了。

实物图:

NIOS中双CPU系统的构建的更多相关文章

  1. 如何获取多核、多cpu系统中指定cpu的序列号

    如何获取多核.多cpu系统中指定cpu的序列号作者:SkyJacker(转贴请保持完整并注明作者和出处)http://www.cnpack.orgCnPack IV  QQ Group: 130970 ...

  2. 如何移除双系统mac中的windows系统

    双系统 双系统即在电脑的不同分区中安装两个系统,两个系统不会互相影响,但是同时只能有一个系统正在运行,并且必须通过重启的方式来更换系统. 双系统一般由于解决对不同系统的需求,而且在电脑中直接安装系统也 ...

  3. linux top命令中各cpu占用率含义

    linux top命令中各cpu占用率含义 [尊重原创文章摘自:http://www.iteye.com/topic/1137848]0.3% us 用户空间占用CPU百分比 1.0% sy 内核空间 ...

  4. 嵌入式linux系统的构建

    前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍 b.开发板可以pc,linux 三者可以互相ping通 c.配置好nfs服务器:同样在嵌入式的童年中有介绍 一.嵌入式linux内核的制作( ...

  5. (转)linux top命令中各cpu占用率含义及案例分析

    原文:https://blog.csdn.net/ydyang1126/article/details/72820349 linux top命令中各cpu占用率含义 0 性能监控介绍 1 确定应用类型 ...

  6. Windows内核中的CPU架构-6-中断门(32-Bit Interrupt Gate)

    Windows内核中的CPU架构-6-中断门(32-Bit Interrupt Gate) 中断门和调用门类似,也是一种系统段.同样的它也可以用来提权. 中断门: 虽然中断门的段描述符如下: 但是中断 ...

  7. 如何设计一个高内聚低耦合的模块——MegEngine 中自定义 Op 系统的实践经验

    作者:褚超群 | 旷视科技 MegEngine 架构师 背景介绍 在算法研究的过程中,算法同学们可能经常会尝试定义各种新的神经网络层(neural network layer),比如 Layer No ...

  8. Android中关于cpu/cpuset/schedtune的应用

    Android中关于cpu/cpuset/schedtune的应用都是基于进程优先级的,根据不同优先级划分进程类型.AMS(ActivityManagerService)和PMS(PackageMan ...

  9. include包含头文件的语句中,双引号和尖括号的区别是什么?

    include包含头文件的语句中,双引号和尖括号的区别是什么?  #include <> 格式:引用标准库头文件,编译器从标准库目录开始搜索 尖括号表示只在系统默认目录或者括号内的路径查找 ...

随机推荐

  1. Java SE (5)之 线程使用

    JAVA有两种线程的方法Thread 和Runnable 能够使用,这是为了弥补不能多继承的缺陷 首先是 Thread package com.sunzhiyan03; /* * 演示线程 * */ ...

  2. C#语法糖之第六篇: 泛型委托- Predicate<T>、Func<T>

    今天继续分享泛型委托的Predicate<T>,上篇文章讲了Action委托,这个比Action委托功不一样的地方就是委托引用方法是Bool返回值的方法,Action为无返回值.首先我们看 ...

  3. 使用 C# 编程对RTF文档的支持

    http://www.68design.net/Development/Aspnet/Basis-AspNet/26011-1.html

  4. 最新的C#SqlHelper 类苏飞修改版(转载)

    /// <summary> /// 类说明:公共的数据库访问访问类 /// 编码日期:2010-4-22 /// 编 码 人:苏飞 /// 联系方式:361983679 Email:[ur ...

  5. javascript:console.log()是什么js库里的?

    这个不是什么库的,这个是浏览器的函数,如果你使用firefox并且装有firebug插件,当使用console.log(……)时,会把括号内的字符串输出到控制台,当然,在IE中这个是没有的,要报错.相 ...

  6. 前端----表格的具体使用(jquery)

    表格在页面布局中常常会用到.在不同的框架中有不同的使用方法,现在,我先总结下表格在jquery中具体使用: 1.增--insertAfter() function addTr(){ $("& ...

  7. java开发规范总结_代码编码规范

    规范需要平时编码过程中注意,是一个慢慢养成的好习惯 1.基本原则 强制性原则:     1.字符串的拼加操作,必须使用StringBuilder:     2.try…catch的用法 try{ }c ...

  8. 【html】【5】html class属性css样式

    必看参考: http://www.divcss5.com/css3-style/ http://www.jb51.net/css/142448.html http://www.w3school.com ...

  9. codevs 4511 信息传递(NOIP2015 day1 T2)

    4511 信息传递 NOIP2015 day1 T2 时间限制: 1 s 空间限制: 128000 KB 传送门 题目描述 Description 有个同学(编号为 1 到)正在玩一个信息传递的游戏. ...

  10. Apache提示You don't have permission to access / on this server问题解决

    测试时遇到将一本地目录设置为一apache的虚拟主机,在httpd-vhosts.conf文件中进行简单设置,然后在hosts文件中将访问地址指向本地,启动apache,进行访问,却出现了You do ...