首先构建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. vs2013 使用vs调试器,发现调试器显示的数据错误。查看内存,发现内存是正确的。

    有可能只是调试器的问题,程序可以正常运行的! 网上没找到此种情况解释.感觉有可能是那里堆被破坏了.

  2. 【随记】还原SQL Server数据库步骤

    情景:在一台机器上备份数据库,然后在另一台机器上还原数据库,可能会出现错误提示:System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 'XXX' 数据库不同. ...

  3. swift从0加到1000(不包括1000)的五种写法

    用了while, do...while, for in, for in ... { temp += i i++ } println(temp) do { temp2 += j j++ } ) prin ...

  4. Smarty实现HTML静态化页面

    <?phprequire_once("./config/config.php"); ob_start();$id=$_GET[id];$sql="select * ...

  5. Android中通过typeface设置字体

    Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace",除此之外还可以使用其他字体文件(*.ttf)方法一:XML中使用android默认字体 ...

  6. vscode编写插件详细过程

    前言 之前编写了一个vscode插件用vscode写博客和发布,然后有园友要求写一篇来介绍如何开发一个vscode扩展插件,或者说介绍开发这个插件的过程.然而文章还没有写,园子里面已经有人发布一个文章 ...

  7. 监视/etc/passwd文件是否正常

    帮助监视/etc/passwd文件是否正常(P90 练习6.7) 1)找出有UID0的所有项 2)找出有重复UID的所有项 3)找出有重复登录名的所有项 4)找出没有口令的所有项 5)找出没有作废日期 ...

  8. 对Gearman中client,worker,jobserver的理解

    在gearman的官网http://gearman.org/有以下的一段说明 A Gearman powered application consists of three parts: a clie ...

  9. "_OBJC_CLASS_$_WeiboApi", referenced from: objc-class-ref in libtuyoo.a(TuYoo.o)

    Undefined symbols for architecture i386: "_OBJC_CLASS_$_WeiboApi", referenced from: objc-c ...

  10. 【技术贴】解决127.0.0.1和http://localhost均被拦截跳转到另一个网页

    很艰难的历程. 今天安装一个OA系统,要用到http://127.0.0.1输入完成之后,可以进入安装界面,but,我输入完了之后,自动跳到了129129垃圾网站,艹,我真TM服了,我把本地连接网线都 ...