标签: intel-fpga

你应该删除Verilog或VHDL设计中的所有警告吗?为什么或者为什么不?

在(常规)软件中,我曾在使用gcc选项-Wall显示所有警告的公司工作.然后他们需要处理.使用Verilog或VHDL中的非平凡FPGA/ASIC设计通常会有许多警告.我应该担心所有这些吗?你有什么特别的技巧可以建议吗?我的流程主要针对FPGA(特别是Altera和Xilinx),但我认为相同的规则适用于ASIC设计,可能更多,因为在构建之后无法更改设计.

2010年4月29日更新:我最初考虑的是综合和P&R(布局布线)警告,但模拟警告也是有效的.

verilog fpga vhdl asic intel-fpga

5
推荐指数
1
解决办法
2992
查看次数

VHDL分配文字

我正在尝试在VHDL中使用具有良好定义的位宽的无符号整数.似乎VHDL不喜欢我试图将文字值分配给定义为:

variable LCD_DATA: unsigned(19 downto 0) := 0;
Run Code Online (Sandbox Code Playgroud)

但是在我的IDE(Quartus)中,我得到一个投诉"UNSIGNED类型与整数文字不匹配".我还抱怨将数字添加到这样定义的类型中.我需要做出的首选改变是什么?

vhdl intel-fpga unsigned-integer

5
推荐指数
1
解决办法
3万
查看次数

如何在报告语句中将字符串与整数连接起来?

我无法使以下报告语句起作用:

report "ERROR: instruction address '" & CONV_INTEGER(a(7 downto 2)) & "' out of memory range." severity failure;
Run Code Online (Sandbox Code Playgroud)

哪里a是 类型in std_logic_vector(31 downto 0)

我得到的错误是:

No feasible entries for infix operator "&".
Run Code Online (Sandbox Code Playgroud)

我想打印出一个字符串,连接整数值,然后连接另一个字符串。

我究竟做错了什么?

vhdl modelsim intel-fpga quartus

5
推荐指数
1
解决办法
7902
查看次数

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 生成的,因此您可以看到哪些资源可用。

#ifndef __SYSTEM_H_
#define __SYSTEM_H_

/*

DO NOT MODIFY THIS FILE

   Changing this file will have subtle consequences
   which will almost certainly lead to a nonfunctioning
   system. If you do modify this file, be aware that …
Run Code Online (Sandbox Code Playgroud)

fpga reset uclinux intel-fpga nios

5
推荐指数
1
解决办法
1938
查看次数

configfs 不挂载设备树/覆盖

我正在使用 Altera 的带有双 Cortex-A9 处理器的 Cyclone V SOC FPGA。嵌入式系统(linux 4.15.7)是用 Buildroot-2018.02 创建的。U-boot 用于加载系统,即 FPGA.rbf 文件、设备树 blob 和 zImage,一切正常。

我现在想将 RBF 文件集成到我的 linux 并从 Linux 对 FPGA 进行编程。我找到了几种方法,我理解的一种最常见的是将 CONFIGFS 与设备树覆盖一起使用。

因此,我更改了我的设备树以集成覆盖、u-boot 引导脚本以禁用 FPGA 加载以及 linux“.config”文件中的以下选项make linux-xconfig

+CONFIG_OF_OVERLAY=y
+CONFIG_ALTERA_STAPL=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_SAMPLES=y
+CONFIG_SAMPLE_CONFIGFS=m
Run Code Online (Sandbox Code Playgroud)

这些选项是我经过多次尝试后的状态。

在 make 和重新启动后,一旦加载了内核,我就会在控制台中输入以下命令:

mkdir /config
mount -t configfs none /config
Run Code Online (Sandbox Code Playgroud)

在这种状态下,我希望在 /config 文件夹中看到一些设备树文件,但没有,只有一个 rdma_cm 文件夹:

# ls /config
rdma_cm
Run Code Online (Sandbox Code Playgroud)

我继续阅读这个主题,发现我必须在我的 linux 内核中启用 CONFIG_OF_CONFIGFS 选项。

问题:此选项在我的 linux 内核中不可用。此外,文件drivers/of/configfs.c也不在这里。我徒劳地搜索了如何为我的内核版本启用设备树覆盖。

如何配置我的内核以使设备树在 configfs 中可用?

linux-kernel intel-fpga device-tree

5
推荐指数
1
解决办法
2079
查看次数

使用 OpenOCD 闪存/运行 Altera Cyclone IV

我想使用 OpenOCD 运行 Altera Cyclone IV IP。无论我需要 quartus 提供什么文件,但执行都应该由 OpenOCD 完成。我目前正在尝试使用 sof 文件来完成此操作。quartus 供程序员使用的。

也欢迎额外的提示来刷新它。

.sof 文件是否适合与 openbcd 一起使用?

我的板子是“Altera Cyclone IV FPGA学习板EP4CE6E22C8N和USB Blaster编程器”品牌是[zrTech]

在 Quartus 中,此配置有时可用于执行它(sof 文件),但并非每次都有效。但当它开始工作时,它会继续这样做: 进入quartus设置 这就是我目前收集的似乎不错的内容(除了评论):

altera_ep4ce6e22.cfg :

interface usb_blaster
usb_blaster_lowlevel_driver ftdi
transport select jtag
set CHIPNAME ep4ce6mb
set FPGA_TAPID 0x020f10dd

jtag newtap $CHIPNAME tap -irlen 10 -ircapture 0x01 -irmask 0x3 -expected-id $FPGA_TAPID

##no errors but not sure about those 
pld init 
init

## Some stuff I tried with the errors of the results ###
#pld load …
Run Code Online (Sandbox Code Playgroud)

fpga intel-fpga openocd flashing

5
推荐指数
1
解决办法
2194
查看次数

重塑鼠标健全性检查

我实际上是在创建一种控制屏幕上光标的新方法.现在我有一个Altera Stratix iv FPGA,我希望它能通过USB向计算机发送信息并控制光标.

这是可行的,有没有人知道类似的东西?这最终会是什么样的?我意识到我可能必须在机器上编写一些侦听端口并移动鼠标的代码,我很好,但是可以使用FPGA上的代码移动鼠标吗?

谢谢!

usb mouse fpga intel-fpga

4
推荐指数
1
解决办法
297
查看次数

从命令行使用Quartus

我正在尝试从命令行在Linux(Kubuntu 12.04 LTS)上使用Quartus II 13.0(免费Web软件包)从Verilog RTL生成Verilog技术网表。在一个项目中,我需要此项目,在该项目中,我将针对数千个生成的Verilog文件的不同工具生成的综合结果进行比较。因此,使用GUI并不是真正的选择。

例如,对于Xilinx Vivado,我可以使用以下TCL命令执行此操作:

read_verilog input.v
synth_design -part xc7k70t -top top_module
write_verilog output.v
Run Code Online (Sandbox Code Playgroud)

我使用过的大多数ASIC工具都提供类似的接口。

使用Xilinx XST,它会变得更加复杂:

1.)生成work.xst文件:

run -ifn work.prj ..some..more..options..
Run Code Online (Sandbox Code Playgroud)

2.)生成work.prj文件:

verilog work "input.v"
Run Code Online (Sandbox Code Playgroud)

3.)运行综合:

xst -ifn work.xst
Run Code Online (Sandbox Code Playgroud)

4.)从verilog二进制文件生成verilog网表:

netgen -w -ofmt verilog work.ngc output
Run Code Online (Sandbox Code Playgroud)

但是对于Quartus II,我根本找不到任何有关如何使用命令行工具的文档。我所能找到的只是图形化IDE界面的文档。也许我只是在错误的地方寻找?

因此,在我开始使用strace和类似工具戳Quartus II IDE之前:是否有人从命令行使用Quartus II,并且可以向我指出正确的方向?

verilog fpga intel-fpga

4
推荐指数
1
解决办法
5559
查看次数

Nios 2“ Hello World”?

我设法在Nios 2 Altera DE2板上运行了一个复杂的项目,在其中我使用输入和输出使用汇编和C代码创建了一个计时器。使用Nios 2 IDE,我可以将项目下载到DE2 FPGA,并且时钟按预期运行。但是我不了解有关编程模型的所有知识,并且还试图了解IDE附带的基本Hello World示例和诊断示例。

Hello World示例只是

/*
 * "Hello World" example.
 *
 * This example prints 'Hello from Nios II' to the STDOUT stream. It runs on
 * the Nios II 'standard', 'full_featured', 'fast', and 'low_cost' example
 * designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT
 * device in your system's hardware.
 * The memory footprint of this hosted application is ~69 kbytes by default
 * using the standard reference design. …
Run Code Online (Sandbox Code Playgroud)

c fpga intel-fpga nios

4
推荐指数
1
解决办法
6155
查看次数

VHDL整数范围包括在内?FPGA与仿真的区别

我是FPGA的新手.我一直在做一些简单的测试,我发现了一个我不完全理解的问题.

我有一个50MHz的时钟源.

我有一个信号定义为:

SIGNAL ledCounter : integer range 0 to 25000000 := 0;
Run Code Online (Sandbox Code Playgroud)

当ledCounter达到25,000,000时,我切换LED并重置计数器.这在FPGA上直接起作用.

IF (rising_edge(CLK)) THEN
    ledCounter <= ledCounter + 1;

    IF (ledCounter = 25000000) THEN
        ledCounter <= 0;
        toggle <= not toggle;
        LED(0) <= toggle;
    END IF;
END IF;
Run Code Online (Sandbox Code Playgroud)

当在ModelSim内部运行时,当计数器达到25000000时,我得到一个错误.为了在模拟器中运行,我必须将范围定义为:

SIGNAL ledCounter : integer range 0 to 25000001 := 0;
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么会这样?代码在FPGA上运行良好,但如果没有上述修改,则无法在模拟器中运行.

编辑:modelsim错误是非描述性的:由于致命错误无法继续.HDL呼叫序列.停在C:/Users/robert/Documents/fpga/testsim/test.vhd 20 Process line__17

fpga vhdl modelsim intel-fpga

4
推荐指数
1
解决办法
772
查看次数