首先构建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. 【基础】Oracle 表空间和数据文件

    多个表空间的优势:1.能够将数据字典与用户数据分离出来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突2.能够将回退数据与用户数据分离出来,避免由于硬盘损坏而导致永久性的数据丢失3 ...

  2. 关于iOS元旦http,https的规定,官方论坛回应

    先贴原文地址:https://forums.developer.apple.com/thread/48979#146140 原文: eskimoAug 2, 2016 4:17 AM(in respo ...

  3. pl/sql编程

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  4. 24种设计模式--模版方法模式【Template Method Pattern】

    周三,9:00,我刚刚坐到位置,打开电脑准备开始干活.“小三,小三,叫一下其它同事,到会议室,开会”老大跑过来吼,带着淫笑.还不等大家坐稳,老大就开讲了,“告诉大家一个好消息,昨天终于把牛叉模型公司的 ...

  5. div模块变灰

    整站变灰目前没发现什么特别好的办法,但是div(或者其他标签模块)模块变灰方法兼容性还不错. .gay_box{ filter: grayscale(100%); -webkit-filter: gr ...

  6. PHP函数补完:preg_match()

    preg_match — 进行正则表达式匹配. 语法:int preg_match ( string $pattern , string $subject [, array $matches [, i ...

  7. web常用正则表达式

    1. 平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2. "^\d+$" //非负整数(正整数 + 0) 3. "^[0-9]*[1-9] ...

  8. mysql的数据类型int、bigint、smallint 和 tinyint取值范围 及varchar

    使用整数数据的精确数字数据类型.   bigint   从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字 ...

  9. Visual Studio C/C++ 编译器选项

    优化- /O1 最小化空间                          /O2 最大化速度/Ob<n> 内联扩展(默认 n=0)               /Od 禁用优化(默认) ...

  10. BootStrap Progressbar 实现大文件上传的进度条

    1.首先实现大文件上传,如果是几兆或者几十兆的文件就用基本的上传方式就可以了,但是如果是大文件上传的话最好是用分片上传的方式.我这里主要是使用在客户端进行分片读取到服务器段,然后保存,到了服务器段读取 ...