积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> SOPC >> 应用论文
  相关分类: 相关文章 | 应用论文 | 新产品 | 下载 |
多处理器系统中Nios II软核处理器启动方案的设计
 
作者:李从伟 李会方   来源:电子产品世界    点击数:74   更新时间:2008-5-26
您可以添加到网摘 让更多人关注此文章:

    引言 

       Nios II 处理器是Altera公司设计的一款基于FPGA的32位RISC嵌入式软核处理器,具有32位指令集、数据通路及地址空间,是其可编程系统芯片(SOPC)的核心。Nios II系统采用Altera公司设计的一套Avalon总线交换结构,Avalon总线上的所有信号都与系统时钟同步且地址、数据和控制信号使用独立的端口;支持各种传输方式;采用从端口仲裁机制,对于有多个主设备的系统可以提高系统的吞吐量。

       采用基于FPGA 的Nios II软核处理器很容易在嵌入式系统设计中实现多处理器系统。在这样的多处理器系统中,一般外部处理器做主处理器,Nios II处理器为从处理器,两个处理器有共用的存储器可以进行数据交互。本文将通过对Nios II系统启动的研究设计一方案,用外部处理器配置FPGA,加载程序代码到Nios II系统中的程序存储器中,最终完成Nios II系统的启动。

       在多处理器系统的启动方案 

       在多处理器系统中,为了降低成本,可以省去Nios II的一个非易失性存储器外设,如flash、EPROM等,Nios II处理器通过Avalon交换结构连接易失性存储器,一个外部主处理器及一些必要的接口外设。因此延迟Nios II的启动是必要的,解决办法是在Nios II系统中设计一启动延迟模块,把此模块的基址设为Nios II的复位地址。通过此模块,Nios II处理器上电复位后启动被延迟,直到数据被传输完毕,外部处理器通过启动延迟模块向Nios II发送一个可以开始进入程序存储器的指令,然后跳转到程序存储器开始执行,完成后续的设备初始化及应用程序的执行。 

       外部处理器通过时序转接桥连接在Avalon交换结构上和Nios II处理器共同构成的一个双处理器系统如图1所示。黑色箭头表示Nios II启动延迟模块是通过Avalon交换结构连接的。

                  
                          图1  多处理器系统的启动方案结构 

       启动方案的硬件设计 

       启动延迟模块如图2所示,它有两个从端口S1、S2:S1一端连接在启动延迟模块中的ROM单元上,另一端通过Avalon总线连接在Nios II处理器的指令主端口;S2一端连接在启动延迟模块的控制寄存器上,另一端通过Avalon总线连接在外部处理器和Nios II处理器的数据主端口。图2中箭头的方向表示数据的流向。

                 
                             图2 Nios II启动模块的硬件结构 

       在此需做两点说明:

* 在启动延迟模块中有两个寄存器,这两个寄存器定义如下: 

      

说明:控制寄存器1用于存放Nios
II程序存储器中_start程序的入口地址。控制寄存器2中跳转标志位(31_1位保留) 。

       这两个寄存器值由外部处理器来写入,其中偏移量为0的寄存器存放Nios II程序存储器中_start程序的入口地址,此值由外部处理器写入;偏移量为1的寄存器只用了第0位,其它位保留,当外部处理器配置好Nios II处理器系统后,会向此寄存器的第0位写入1,否则保持为0。

* ROM中的数据是外部处理器在配置FPGA的时候写入的,因此只要FPGA配置完成后,启动代码就存放进ROM中了。ROM的大小要根据启动程序代码的大小来决定,设计中应尽可能降低这段程序的代码存储量。

       下边是用Verilog 硬件描述语言编写的启动延迟模块的硬件代码的主体框架结构:
//ROM读端口(S1):
boot_rom       the_boot_rom
(
.clock    (s1_clk),   file://s1_clk为来自Avalon总线模块上的S1端口的时钟信号
.aclr    (s1_reset),  file://s1_reset为来自Avalon总线模块上的S1端口的复位信号
.q       (s1_readdata), file://s1_readdata为流向Avalon总线模块的S1端口的32位数据
.address  (s1_address)  file://s1_address为来自于Avalon总线模块的S1端口的地址
);
file://控制寄存器读写端口(S2):
control_register   the control_register
(
.clk         (s2_clk),  file://s2_clk为来自Avalon总线模块上的S2端口的时钟信号
.reset       (s2_reset),  file://s2_reset为来自Avalon总线模块上的S2端口的复位信号
.read        (s2_read),  file://s2_read为来自Avalon总线模块上的S2端口的读使能信号
.write       (s2_write),  file://s2_write为来自Avalon总线模块上的S2端口的写使能信号
.schipselect  (s2_chipselect), file://s2_chipselect为来自Avalon总线模块上的S2端口的片选信号
.address     (s2_address), file://s2_address为来自Avalon总线模块上的S2端口的地址 
.readdata    (s_readdata),  file://s2_chipselect为流向Avalon总线模块上的S2端口的32位读数据
.writedata   (s2_writedata) file://s2_writedata为来自Avalon总线模块上的S2端口的32位写数据
); 

       启动方案的软件设计 

       启动方案的软件设计目标是当系统复位后,在外部处理器向Nios II程序存储器和数据存储器传输数据的过程中,Nios II处理器运行要受到外部处理器的控制。当一切就绪后,外部处理器发出一条释放Nios II处理器的命令,接下来Nios II处理器就可以正常运行了。 

       软件部分主要就是存放在启动延迟模块中ROM的代码,此代码主要是检测启动延迟模块中控制寄存器2的第0位是否为1。若为1,则跳转到控制寄存器1中所存储的地址处执行。若设控制寄存器的基址为CONTROL_REG_BASE,为了减少代码量,这段代码容易用Nios II的汇编指令来实现,代码部分在此从略。 

       最后本方案在我们自己设计的一块开发板上经过测试,能够正确完成Nios II 处理器的启动。 
       
       结语 

       采用多处理器的系统虽然可以提高系统的性能,但传统的多处理器系统一般只出现在工作站及高端PC上,在嵌入式系统中由于其设计代价太高很少采用。本文设计了一种在多处理器系统中的Nios II软核处理器的启动方案,这个方案在外部处理器向Nios II的程序存储器和数据存储器加载数据时,可以控制Nios II处理器的启动。

       参考文献:
1.  Creating Multiprocessor Nios II Systems Tutorial.2005

相关文章
· 基于 TPS54310的雷达视频信号模拟器的电源设计[10]
· 基于FM2010和WinCE平台的回音消除驱动设计[6]
· NXP P89LPC901单片机设计[58]
· S3C4480X平台上μC/OS-Ⅱ的中断系统设计[37]
· S3C4480X平台上μC/OS-Ⅱ的中断系统设计[54]
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM处理器应用开发4步骤

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
ARM联手IBM等三家公司开发32n
Hitachi Elect
中国芯片供需缺口达七成
西班牙研发出视觉鼠标 眨眼
首条OLED生产线昆山投产 
宇航服电子元器件:航天员的“生命保护
美研发出可卷曲太阳能电池
美国研发嗅觉感受器获新进展 
首尔半导体就日亚(NICHIA)专利
MIPS 科技授权国家集成
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
写给迷茫中的嵌入式新手...
Arm/DSP/FPGA的比较...
Arm/DSP/FPGA的比较...
Arm/DSP/FPGA的比较...
[分享]逆变器的买与用...
[分享]电力系统直流电源装置的...
单片机如何控制TFT真彩色LC...
请教:2051的C程序...
中国为何没有世界级的企业和企业...
AVR的EEPROM,到底怎么...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网