我目前正在建立一个基于 Cocotb 的验证环境。
我刚刚发现,如果使用 VHDL,Cocotb 提供的示例在我的情况下不起作用,因为我的模拟器没有 FLI(外语界面)。我收到以下消息:
错误(可抑制):(vsim-FLI-3155) 此版本的 ModelSim 中未启用 FLI。
(我有 ModelSim 的 Altera Starter 版本,确实不包括 FLI)。
令我惊讶的是,该示例适用于 Verilog。据我了解,Verilog 使用的不是 FLI,而是 VPI。
如果 FLI 的需求是强制性的,那么有人可以解释一下,Cocotb 中可以启用它的功能是什么?
另一个问题:如果我的顶层是 Verilog,而我的其余设计是 VHDL 呢?它应该工作吗?
我们正在考虑将一些代码转移到CPLD或FPGA中,以使其更快.之前我曾与Xilinks及其工具套件合作过,但出于某种原因决定我们这次使用Altera,所以我试着习惯Quartus II.
特别是,我正在寻找一种方法来明确地将引脚分配给我正在使用的芯片.在Xilinx中,我编辑了网表文件,但我在Quartus中找不到这样的东西.这里是一个程序(作业=>引脚规划),做这一点,但它有一个笨重的GUI,我会远远宁愿在文本编辑器编辑引脚,所以我的两个方面的问题是
答:如何找到存储引脚分配的文件?它没有列在项目导航器中的我的文件下,但是我在Pin Planner中分配的引脚在会话之间保持不变,所以它们必须存储在某个地方.
B:这是一个可怕的想法吗?
IDE是Quartus II 10.1开发套件是MAX II开发板语言是VHDL
编辑:现在,我遇到了我试图通过USB与Dev Kit接口的问题.我正在制作一个串行数据接收器并给它一个数据输入引脚.开发套件有一个USB接收器,所以我试图将din映射到USB连接器所在的任何引脚.根据我的文件(rm_maxII-develop_board-rev1.pdf),USB连接器在"Board Designation U13"上,但是当我进入Pin PLanner并尝试分配它时,没有PIN_U13.我怀疑这是pdf中的一个错误,而不是Pin Planner,但因为我之前从未使用过Altera产品,所以我很困惑.
我试图在VHDL中使用'浮点和定点包'作为我的滤波器设计的一部分.我使用Altera Quartus II作为开发环境.我从以下网站下载了文件包:http://www.vhdl.org/fphdl/,现可在http://web.archive.org/web/20160305202256/http://www.vhdl.org/fphdl上找到/
在他们的用户指南中,提到了以下内容:
'fixed_float_types_c.vhdl', 'fixed_pkg_c.vhdl' and 'float_pkg_c.vhdl'
should be compiled into a library called "ieee_proposed".
Run Code Online (Sandbox Code Playgroud)
但是,我并不确切知道如何使用Altera Quartus II工具将提到的*.vhdl文件编译到库中.
任何提示将不胜感激.
什么是 .rbf 文件,我如何从 Windows 上的 Quartus 输出文件 .sof 生成它们?
我是VHDL的新手,我正试图弄清楚如何在Altera Cyclone II上做一些相当基本的事情.FPGA有四个按钮 - 其中两个需要编程以增加和减少所选寄存器(0-F),两者需要编程以增加和减少将在注册.这是我到目前为止:
entity raminfr is
port (
clk : in std_logic;
we : in std_logic;
a : in unsigned(3 downto 0);
di : in unsigned(7 downto 0);
do : out unsigned(7 downto 0)
);
end raminfr;
architecture rtl of raminfr is
type ram_type is array (0 to 15) of unsigned(7 downto 0);
signal RAM : ram_type;
signal read_a : unsigned(3 downto 0);
begin
process (clk)
begin
if rising_edge(clk) then
if we = '1' then
RAM(to_integer(a)) <= di; …Run Code Online (Sandbox Code Playgroud) 当我尝试这个时,我正面临着来自quartus的一些奇怪的错误.
这是代码(所有未签名和其他奇怪的函数都是我试图说服Quartus编译它.)
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
...
variable data : std_logic_vector(17 downto 0) := "000000000000000011";
...
-- 00000000111111000 original
-- 00000000000011111 shifted
-- 00000000000011000 result (AND)
data := std_logic_vector(unsigned(data) & shift_right(unsigned(data), 4));
-- 00000000011111000 original
-- 00000000111110000 shifted
-- 00000000111111000 result (OR)
data := std_logic_vector(unsigned(data) or shift_left(unsigned(data), 1));
Run Code Online (Sandbox Code Playgroud)
我遗漏了很多代码,但破碎的部分保持不变.
我越来越
错误(10344):snake_driver.vhd上的VHDL表达式错误(66):表达式有36个元素,但必须有18个元素
怎么做对了?
我想要实现什么
我尝试建立一个工具链来编译适用于英特尔 FPGA 的 OpenCL 应用程序。因此,在构建基于 C++ 的主机应用程序时,我需要为 OpenCL 内核调用英特尔 OpenCL 离线编译器。
仅当编辑了 cl 源文件或生成的二进制文件丢失时才应执行此步骤。我的方法是添加一个自定义命令来调用 CL 编译器并创建一个取决于该命令生成的输出的自定义目标。离线 Open CL 编译器被调用aoc,并且由于系统上可能存在多个 SDK 版本,我使用存储在aocExecutable. 这是我的 CMakeLists.txt 的相关部分
set (CLKernelName "vector_add")
set (CLKernelSourceFile "${PROJECT_SOURCE_DIR}/${CLKernelName}.cl")
set (CLKernelBinary "${PROJECT_BINARY_DIR}/${CLKernelName}.aocx")
add_executable (HostApplication main.cpp)
# ------ a lot of unneccessary details here ------
add_custom_command (OUTPUT "${CLKernelBinary}"
COMMAND "${aocExecutable} -march=emulator ${CLKernelSourceFile} -o ${CLKernelBinary}"
DEPENDS "${CLKernelSourceFile}"
)
add_custom_target (CompileCLSources DEPENDS "${CLKernelBinary}")
add_dependencies (HostApplication CompileCLSources)
Run Code Online (Sandbox Code Playgroud)
什么不起作用 在 Linux 下的 CLion IDE 中运行此命令会导致以下错误:
/bin/sh: 1: /home/me/SDKsAndFrameworks/intelFPGA/18.1/hld/bin/aoc -march=emulator …Run Code Online (Sandbox Code Playgroud) 我最近转移到 Linux 并习惯了操作系统,我设法安装并运行了 Quartus 20.1 Lite,我正在用一个旧的工作项目对其进行测试。当我打开波形并运行模拟时,我得到
root/intelFPGA_lite/20.1/modelsim_ase/linuxaloem//vish:加载共享库时出错:libXft.so.2:无法打开共享目标文件:没有这样的文件或目录
我安装了 libXft.so.2,因为我可以在终端中使用 locate 找到它。有什么我想念的吗?该文件是否需要在上面列出的文件中,或者我是否需要以某种方式使用权限?
我有Altera DE2-115 FPGA,我尝试自学Verilog.我决定制作一个烟雾探测器,每当它闻到烟雾时,蜂鸣器响起(烟雾探测器输出一个数字信号).
这是我的试用版:
module fire(flag,clock,reset,fire,fire_state,firealarm);
input clock, reset, flag, fire;
output [2:0] fire_state;
output firealarm;
wire fire;
reg [2:0] fire_state;
assign firealarm = (fire_state == 1) ? (flag ? 0 : 1) : 0;
always @ (posedge clock)
fire_state<= fire ? 1: 0;
end module
Run Code Online (Sandbox Code Playgroud)
但它没有运行,我认为这段代码中有很多逻辑错误,请问有什么帮助吗?:)
我学习了 nand2tetris 课程 ( https://www.nand2tetris.org/course ),主要目的是学习如何在真正的 FPGA 上构建软处理器。
虽然课程很简单,但现在我开始使用 FPGA 实现,我觉得有点迷茫。
我买了一个 Intel de10 nano FPGA(http://de10-nano.terasic.com/),并且从 Uni 获得了一些 Verilog 知识,我能够下载“Quartus Prime Lite”并使用简单的东西引导,比如 LED 闪烁,等等...
但是,在实现处理器时,有几件事我不清楚:
这些是我目前正在努力解决的主要问题。你能指出我对一个完整的新手有用的任何资源吗?
谢谢,
intel-fpga ×10
fpga ×5
quartus ×5
vhdl ×5
verilog ×2
clion ×1
cmake ×1
cocotb ×1
fixed-point ×1
intel ×1
modelsim ×1
module ×1
nand2tetris ×1
ubuntu ×1