问题标签 [nios]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
89 浏览

nios - 由多核组成的 NIOS II 系统

NIOS II 系统的最大内核数是多少?我在 Altera 提供的 Internet 论坛、文档或教程的任何地方都找不到该信息。

0 投票
1 回答
1787 浏览

fpga - 如何通过在 NIOS2 处理器上运行的软件检测我在哪个 Altera FPGA 上

我想我的标题说明了一切。我在 Altera FPGA 上的 NIOS2 处理器上运行软件。有什么方法可以检测软件运行在哪个 FPGA 上?

要回答评论中的问题:为什么我关心我在哪个 FPGA 上?对于生产,我们使用带有 EPCS 控制器的设计来对所有内容进行编程。该编程流程对 Quartus 版本不敏感,与使用 Quartus 编程器的 .jic 流程不同。不幸的是,对于新的 EPCQ 器件,您必须使用正确的等待状态和寻址模式正确地对 EPCQ 的非易失性寄存器进行编程,以便正确配置 FPGA。NIOS shell 工具没有能力做到这一点(使用 .jic 流的 Quartus 程序员可以做到),所以我编写了一个小软件来做到这一点。EPCQ 数据表中有一个表格,说明了根据 FPGA 系列和 EPCQ 的大小应该是什么等待状态。EPCQ 的大小我可以问 EPCQ。FPGA家族我不知道该问谁。因此,现在,对于每个项目,我都有其个人软件,其中包含硬编码为 FPGA 类型的数据。我希望软件是通用的,而不是特定于 FPGA 的,因此我需要知道我在哪个 FPGA 上。

0 投票
1 回答
294 浏览

zlib - 在 uCLinux 环境中使用 zlib 时的非法指令

这可能是完全不相关或非常简单的问题。

我正在尝试编写一个非常简单的应用程序,它使用libz库函数进行压缩。它应该在CPUuCLinux上的环境中运行。NIOS我的系统运行 busybox,busybox 提供所有常规gzipgunzip功能。但是它们是内置在busybox中的,据我所知,它们不使用动态 libz库。这是代码:

它部分来自zlib 示例。问题是在最后一行 -gzclose当压缩缓冲区实际刷新到文件时,我得到了illegal instruction异常。任何人都知道为什么会发生这种情况?

这是来自 GDB 的失败回溯:


更新:我已经libz.a静态链接了,但发生了同样的错误。

0 投票
0 回答
69 浏览

c - 在这种情况下我是否需要缓冲,如果需要,怎么做?

我有一个问题,数据发送到串口的速率(50Hz)比串口接收的速率(8Hz)快得多。

基本上,我所拥有的是,数据从 fpga vhdl 块发送到 NIos II 系统,Nios II 系统将数据发送到串口,Matlab 访问串口实时绘制图形。

我正在使用用 C 代码为 DE0-Nano 编程的 Quartus 12.1 sp1、vhdl 和 Nios II。在 Qsys 中,我使用了一些内核,例如 timer、sdram、uart、pios 等。

我不知道这是否可行。我很想做的事情,因为我绘制图表的速度比读取输入信号的速度慢。

如果我知道每个传入信号的开始,假设这个点由 count=0 表示,每次我检测到 count=0,我知道它是每个传入信号的开始,我会跟踪多少个周期,比如说,我只想每输入信号的 10 个周期绘制一次图表,我绘制第 1 个周期,跳过 10 个周期,绘制第 1 个周期。11,跳过第12到20个循环,下一个绘图循环。21 等...换句话说,这意味着我将失去一些周期,在这之间我可以接受。

  1. 你觉得这种方法有意义吗?

  2. 在这种情况下我还需要缓冲吗?

  3. 我怎么知道我需要跳过多少个周期?我认为这取决于输入信号速率(50 Hz)和绘图/接收速率(比如 8 Hz),但我并不完全清楚如何计算......

输入信号(50 Hz)来自 fpga vhdl,NIos 系统可以读取 50 Mhz,但串口接收速率或 Matlab 绘图速率为 8 Hz。

感谢任何输入...谢谢

0 投票
1 回答
1842 浏览

assembly - 汇编代码中的延迟循环计算

假设我希望内部循环为 1ms 长并且想要计算 delaycount 参数。我们知道 F = 50 Mhz。

我们可以清楚地看到内循环中有3条指令。我们还假设指令每个需要 1 个周期。因此结果是:

解决方案 :

F = 50 兆赫 T = 20 ns

1ms = 20ns * 3 * 延迟计数

延迟计数 = 1ms/3*20ns = 16666

但是,该解决方案提供 delaycount 等于12000。有人能证明这是正确的吗?

0 投票
1 回答
1011 浏览

fpga - Multiple Interrupt Senders in one peripheral in Qsys

Using Qsys (Quartus II x64 15.0.1 build 150) I made a system with Nios2/e and several standard peripheral components. I also add my custom component with 1 MM-Slave and 2 Interrupt Senders. For each of them I set this slave as "Associated addressable interface" in Component editor during creation of _hw.tcl file.

Qsys reports no errors or warnings, but then I tried to make BSP project in Eclipse using New | Nios 2 BSP project wizard. I select "SOPC Information File name", but "CPU" ComboBox remains empty and error appears: "No Nios II CPU Found".

Then I launch BSP Editor from main menu: Nios 2 | BSP Editor and press File | New Nios 2 BSP. I again provide SOPC file and this tool found CPU, but also reports the error: "Can only have at most one IRQ associated with the following slaves of module "my_component" : mm_slave."

I then returned to Qsys and remove one of Interrupt Senders and this time everything works fine, but I need to generate more than one interrupt.

So what to do if you have Nios2/e connected to custom peripheral with 1 MM-Slave and several Interrupt Senders?

I have some ideas but don't like them:

  1. Add MM-Slave for each irq (it looks like waste of resources).

  2. Do not specify "Associated addressable interface" in Component editor (it is by the way works, but I don't know will it work properly all the time). What this option really do? I was imprecise saying that it will work, sorry for that. In reality qsys and BSP can be generated but inside BSP's system.h IRQ number will be defined as -1, so it will not work.

  3. Merge all interrupts into one wire (they all will share the same priority).

  4. Configure Interrupt Sender to have irq signal with width more than 1 (Component Editors allows to do this but reports warning: "interrupt_sender: Signal irq_many[4] of type irq must have width [1]".) As with case 2 I don't know what will happen inside Altera's generators/compilers. After Component Editor stage is finished Qsys doesn't accept such a system.

Please help.

0 投票
0 回答
1482 浏览

reset - NIOS II - 从软件重置 FPGA(重新加载 FPGA 配置,不只是重置处理器)

语境

我正在编写在 NIOS II 处理器上的 uClinux 中运行的代码。FPGA 是 Stratix II。FPGA 设计是由不再在公司工作的其他人完成的,我不是固件设计师,只是一个软件程序员。

问题

FPGA 在上电时从闪存设备加载其配置。我编写了一个重新编程闪存的应用程序,但我需要找到一种方法让它重新加载 FPGA 配置,我需要通过软件来完成。目前,让 FPGA 重新加载的唯一方法是循环供电,但这在客户的环境中是不可能的。

我正在编写的语言并不真正相关,足以说我可以轻松地写入已知地址的硬件寄存器,例如在 Tcl 中:nioswr32 $reg_addr $value我试图找到的是某种我可以的复位寄存器利用。也许是 JTAG 接口?我找到了对 JTAG_UART 的引用,但显然这只是为了通过 JTAG 提供控制台功能。也许有一个我可以弄乱的硬件看门狗定时器?

请注意,我不只是试图重置 NIOS 处理器。我可以使用busybox轻松做到这一点,但这不会重新加载FPGA固件。

下面是我的system.h标题的副本,我相信它是由 SOPC Builder 生成的,因此您可以查看可用的资源。

0 投票
1 回答
750 浏览

c - 如何在 nios II cpu 上构建一个简单的锁(互斥锁)

我正在尝试使用altera DE0或DE2或DE1-SoC板为大学课程构建一个简单的视频游戏,我查看了nios II cpu的ISA,ISA中没有原子测试和设置指令。我将如何在这里建立一个简单的锁,任何在一小段时间内强制互斥的东西都会起作用。

我们将拥有将要运行的main()代码和将在中断服务例程中运行的代码,并且我想锁定一些变量,这可能吗?

0 投票
1 回答
986 浏览

c - int* 和 char* 写入内存

最近学习了nios II SOPC,遇到了写内存和读内存的过程。指针 int* 和 char* 的使用让我有两个不同的结果。代码如下。

“int*”的代码如下

使用 "int*" 的结果是 0,1,2,...,15 而使用 "char*" 的结果是 3,3,3,3,7,7,7,7,11,11,11 ,11,15,15,15,15。我无法解释为什么会这样。

以下是我的内存块代码

0 投票
1 回答
1624 浏览

vhdl - Nios和FPGA如何交互?

示例: 假设有一个 Nios 在 FPGA 上运行,它通过 SPI 接口随机(或每秒)向连接的显示器发送一个字符串。另一方面,有监控按钮的 FPGA 代码。每次按下此按钮都应将字符串发送到相同的附加显示器。

问题: FPGA 和 Nios 之间的交互(或通信)在一般情况下或在这种描述的情况下如何工作?当这段代码在 FPGA 代码下运行时,如何“通知”Nios 按下按钮?也许有关于这个主题的文档来了解它是如何工作的......

提前致谢