Nios® II 多处理器设计示例

建议用于:

  • 设备:Cyclone®II

  • Quartus®:不详

author-image

作者

Nios II 多处理器设计示例演示了在英特尔® FPGA 中使用多个 Nios II 处理器。虽然这个示例主要是为了展示一个正确构建的分层硬件系统,但也包含了执行系统处理器间协调能力的软件。

此示例实施经典的“哲学家用餐”同步问题。想象一下五名哲学家坐在一张圆桌旁。每位哲学家之间放置一根筷子。每位哲学家都试图先抓住他左边的筷子,然后再抓住他右边的筷子。如果拿到两根筷子,哲学家就可以用餐了。在代表吃饭时间的一小段延迟之后,每位哲学家都放下了两只筷子,这样相邻的哲学家便可以使用筷子了。又过了一段代表思考时间的小延迟之后,这个循环重复一遍。为了防止僵局,如果任何哲学家在抓住左边的筷子后不能立即抓住右边的筷子,他必须放下左边的筷子,稍后再试。

由 Qsys 创建的分层硬件设计使用五个处理器来实施五位用餐哲学家中的每一位,以及五个硬件互斥体来实施五根筷子中的每一根。第六个 Nios II 处理器和片上 RAM 以及 JTAG UART 和计时器位于顶层。五个子系统中的每一个都共享顶级片上 RAM,并包含 Nios II 处理器、JTAG UART、计时器和互斥体,互斥体是为处理器提供互斥协调的硬件外设。Avalon® 内存映射 (Avalon-MM) 管道桥接器支持子系统和顶级组件之间以及处理器与互斥体之间的通信,这些互斥体位于连接成环的逻辑相邻子系统中。

dining_philosophers.c 软件运行在五个子系统处理器的每个处理器上,实施思考、进食和筷子获取和释放过程。顶级处理器执行 philosophers_monitor.c,接受数字命令以获取任何互斥体。这可以防止逻辑上相邻的“哲学家”处理器在“筷子”互斥体被释放之前进食。

硬件设计规格

  • 板支持
    • Cyclone® III 3C120 FPGA 开发板
  • Nios II/f 处理器内核,启用调试,具有 4 KB 指令缓存和 2 KB 数据缓存:6
  • 系统计时器:6
  • 片上 RAM:64 KB
  • JTAG UART 外设:6
  • 互斥体外设:5
  • 系统 ID 外设:1

此设计示例基于创建多处理器 Nios II 系统教程 (PDF)中构建的系统。有关实施 Nios II 多处理器系统的详细信息,请参阅上述教程。

结构图

图 1.分层 Nios II 多处理器系统框图

下载本示例中使用的文件:

.zip 文件包含重现该示例的所有必要硬件和软件文件,以及一个 readme.txt 文件。

该设计的使用受英特尔设计示例许可协议中条款和条件的管理和约束。