问题标签 [vivado]
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.
vhdl - 在 VHDL 仿真中获取 U 的信号值
我正在尝试做 xilinx 提供的学生实验室,但我在编写这个测试台时遇到了麻烦。当我在我的 Nexys 4 上测试它时,实际的源代码可以工作。为它编写一个测试台是我现在正在研究的一个后来的实验室。
源代码如下
我的测试台如下
当我运行模拟时,a 和 b 都设置为 1111,我希望 sum_out 变为 11110。但是,我得到的是 1UUU0。我认为问题出在源代码的信号 'c' 中的某个地方,没有以某种方式到达 fa1、fa2 和 fa3,但我不知道从哪里开始调试此类问题。非常感谢您的帮助!
编辑:
下面是carry_look_ahead
下面是完整的代码:
vhdl - VHDL - 综合结果与行为不同
我必须用 VHDL 编写程序,使用牛顿法计算 sqrt。我编写的代码在我看来还可以,但它不起作用。行为模拟提供了适当的输出值,但后期合成(并在硬件上启动)没有。程序被实现为状态机。输入值是一个整数(使用的格式是 std_logic_vector),输出是定点(为了计算目的,输入值乘以 64^2 所以输出值有 6 个 LSB 位是小数部分)。
我使用函数将 vhdl 与 vhdlguru blogspot 分开。在行为模拟中计算 sqrt 大约需要 350 ns (Tclk=10 ns),但在后期合成中仅需要 50 ns。
使用的代码:
下面是行为和综合后仿真结果的屏幕截图:
我对 VHDL 的经验很少,我不知道我能做些什么来解决问题。我试图排除其他用于计算的过程,但它也不起作用。
我希望你能帮助我。平台:Zynq ZedBoard IDE:Vivado 2014.4
问候, 迈克尔
git - 如何仅显示源文件中的差异
我目前正在尝试在 git 上设置 Xilinx Vivado 项目。问题是 Vivado 使用了大量烦人的文件,我不想在文件 diff 中看到这些文件。我希望能够在其他地方克隆该项目并让它正常工作。所以我不仅想跟踪源文件,而且只想查看文件 diff 中的源文件。如何才能做到这一点?
vhdl - 在 VHDL 中应该是 1.001 us 等于 1001 ns 吗?
我目前正在编写一个测试,以检查该类型time
是否在各种 FPGA 供应商工具中正确合成/模拟。一种极端情况是使用真实文字作为时间值的抽象文字,例如:1.001 us
.
IEEE标准。1076-2008,第 5.2.4.1 节或 IEEE 标准。1076-1993,第 3.1.3 节,第 8 段规定:
每个物理类型的值对应一个位置编号。一个单元名称对应的值的位置编号是该单元名称所代表的主要单元的数量。带有抽象文字部分的物理文字对应的值的位置编号是不大于抽象文字的值与所附单元名称的位置编号的乘积的最大整数。
根据定义TIME
(见16.2或14.2节),主要单位是飞秒,因此,位置数1 us
是1,000,000,000。因此, 的位置编号1.001 us
应该是 1,001,000,000,这也是 的位置编号1001 ns
。因此,两个值应该相等。
但是,当我尝试合成或模拟以下精简单元时,我会得到不同的结果。我已经检查过,最小时间分辨率是 1 fs 或 1 ps。
QuestaSim (ModelSim) 是唯一报告预期结果的工具:
但是,使用 Quartus 15.0 或 ISE 14.7 进行综合时的实际结果是:
因此, 的值C2
并不像预期的那样。如果我将引用的文本写成一个等式,那么我会在常量中得到预期的结果C3
。当我使用 ISE 14.7 或 Vivado 2015.4 的集成模拟器时,我得到了类似的结果:
那么,Quartus / ISE / Vivado 的行为是否应该被视为错误?还是VHDL标准允许1.001 us
不等于1001 ns
?
编辑:当我比较以及比较时1.001 ps
,也会发生错误。由于人工计算也是正确的,因此真实的准确性应该不成问题。1001 fs
1.001 ns
1001 ps
C3
需要注意的是,Vivado 的合成器报告了奇怪的结果:
c++ - 没有“new”关键字的循环C++中的多个对象
我有一个场景,我需要在“for”循环的每次迭代中创建不同的对象。这里的问题是我正在使用的合成器不支持“new”关键字。我使用的合成器将 C/C++ 代码转换为 RTL 代码(硬件)。编译器不支持 C++ 中的许多构造。
我想实现这样的事情:
我用谷歌搜索了这个问题,但我遇到的所有解决方案都使用“新”关键字。我需要一种在没有“new”关键字的情况下在循环的每次迭代中创建不同对象的方法。有没有办法这样做?
本质上,我试图在 VHDL 中模拟“生成”构造的行为。非常感谢任何帮助或建议。
vhdl - Vivado:综合后仿真无法启动,尽管行为运行
我在 Xilinx Vivado 中有一个模块无法运行综合后仿真并出现以下错误:
但行为模拟和综合本身运行正常。
这是模块的描述
array_of_ints 在包中定义为
在测试台中实例化模块
希望我提供了足够的信息。预先感谢您的帮助
编辑:根据 Paebbels 的要求,vivado 创建的新文件中的实体描述。
comparison - /= 如何在 vhdl 中转换为实际硬件
我是 VHDL/FPGA 编程的初学者。我想比较两个 32-bit std_logic_vector
。我目前正在使用:
这里是 2RX_FRAME
个REF_FRAME
数组std_logic_vector(31 downto 0)
我想知道综合工具是如何转化/=
为硬件的。建议使用这个吗?或者我应该做一个XOR
相关的向量并检查结果向量是否为零?如果我做一个XOR
并检查零,它不会增加所需的硬件数量吗?我正在使用 Vivado 设计套件 2015.3。
syntax-error - 从 Vivado 获得“没有这样的设计单元”
我需要有人检查我的代码并给我一个健全性检查。这是用 VHDL 编写的。Vivado 不断抱怨错误:
[Synth 8-493] 没有这样的设计单元 'onesevenseg'
但是,我可以清楚地看到我的项目中的文件,并且项目管理器源窗口正在以正确的方式列出文件。
这是发生错误的行。
这是有错误的顶级文件。它被编译到库xil_defaultlib
中。
这是由上述文件实例化的文件,也编译到库xil_defaultlib
中。
vhdl - “预期类型无效” - VHDL 函数错误
我编写了一个简单的函数,它对任何整数进行 log2 计算,然后将其“ceils”到下一个整数:
工作正常。问题在于模拟。每次我尝试在测试台上用一个简单的函数调用来模拟它:
它给了我以下错误:
为什么它期望类型 Void?以及如何避免出现此错误?
verilog - 在 vivado 中实例化 ip core 期间传递参数
尽管研究似乎不可能: 将参数传递给xci核心
我正在设计一个使用 Xilinx FIFO 实例的自定义内核。但是,顶层模块具有在 IP Packager 中公开的参数,并且应该修改包含的 FIFO 内核。
这样,当有人实例化我的模块时,通过覆盖参数 C_FIFO_DEPTH,他们也会改变嵌入式 FIFO 的深度。
虽然这适用于用户编写的模块,但它不适用于 IP 内核 (xci) 的实例,它似乎只能通过“自定义 IP”gui 进行配置。
我已经禁用了脱离上下文的生成,但仍然没有骰子。
我目前正在使用打包核心中的 tcl 脚本开发一个(非常混乱的)解决方案,但是迫切需要一个优雅的解决方案。