问题标签 [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.
syntax-error - 时钟约束 VHDL Vivado FPGA 的 place_design 错误
所以我试图在 Vivado 中为 ZYBO FPGA 板设计一个“自动售货机”时序电路。然而,每次我试图通过实施阶段时,我都会遇到一堆错误,主要是
我确实尝试了 Auto I/O 规划,但最终所做的只是移除了引脚约束。那时它通过了实现,但当然无法生成比特流,因为没有一个端口被映射到引脚。
这是我的 VHDL 设计
这是我的限制
我正在使用 Vivado 2015.2 并为 ZYBO 开发板进行设计。
任何和所有的帮助表示赞赏。
2015 年 8 月 26 日编辑
好吧,我的代码大部分都在工作。我能够使用
为我的时钟。但是,这个时钟比我想要的(125MHz)快得多,所以我知道我必须使用时钟分频并在约束文件中生成一个时钟,但是我需要将生成的时钟分配给一个引脚吗?是否有人对如何在我当前的 vhdl 代码中包含时钟分频器有任何提示?我只是让它成为另一个进程,并添加另一个端口,还是比这更复杂?
vhdl - 如何将时钟分频器集成到现有的 VHDL 代码和约束文件中
所以我有一个简单的 2 位计数器,可以在按下按钮时从一个状态移动到下一个状态。但是,我唯一可以访问的时钟运行在 125MHz,这对于按下按钮来说太快了,所以我需要将时钟分频到一个更合理的速度。我在这个网站上看到了一些时钟分频器的例子,但我不知道的是:
- 如何将时钟分频器添加到现有的 VHDL 代码中,我是否只需将分频时钟添加为新的输出或输入端口?以及如何设置它以使状态更改仅在分频时钟之后发生?
在约束文件中,如何包含分频时钟?我想我使用生成的时钟作为语句的一部分,但它是否必须分配给它自己的单独引脚?现在我将主时钟分配为:
set_property PACKAGE_PIN L16 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
create_clock -period 10.000 -name clk -waveform {0.000 5.000} [get_ports clk]
这是VHDL代码:
我正在使用 Vivado 2015.2 为 ZYBO 编程,感谢任何和所有帮助,谢谢!
vhdl - 如何使用 Vivado 的 I/O 规划工具将端口设置为接地
所以,我设计了一个 2 位全加器,由全加器和半加器组成。我刚开始使用 Vivado 的 I/O 规划工具进行端口引脚分配,但遇到了问题。我的一个输入,第一位的初始进位输入,我想设置为接地,因为它应该始终为 0。我知道我可以在我的 VHDL 代码中将其强制为 0,但有人告诉我这不是正确的方法去做吧。我试图将该端口设置为 i/o 规划器中的一个接地引脚,但 Vivado 只是告诉我我不能将终端放置在空引脚位置。有人知道怎么做吗?
作为一个临时解决方案,我刚刚将进位端口分配给一个按钮输入,我将保持未按下状态,因此它始终为 0。当它被编程到板上时,一切都按应有的方式工作。
*使用 Vivado 2015.2 并在 ZYBO 开发板上工作。
这是顶级 2 位全加器代码:
这就是我从 I/O 规划器中得到的约束。一切正常,我只想将 carry_in 设置为接地而不是未使用的按钮。
json - readline(fh, line) 调用后的一行多长时间?
我用 VHDL 编写了一个JSON解析器。解析器核心使用两个嵌套循环:
1. 遍历所有行直到 EOF
2. 遍历每个 char 直到行结束
为了清除:它不是硬件解析器。解析器用于在综合时读取综合设置以配置实例化实体,例如 UART 模块中的波特率。)
内部循环如下所示:loopj : for j in CurrentLine.all'range loop
Source: JSON.pkg.vhdl
此代码适用于 XST 14.7、iSim 14.7 和 GHDL,但不适用于 Vivado。Vivado 不支持.all
。错误消息是这样的:
错误:[Synth 8-27] 不支持访问类型取消引用 [D:/git/GitHub/JSON-for-VHDL/vhdl/JSON.pkg.vhdl:293]
由于 kraigher 的提示,更新了代码:
@Paebbles 您是否尝试过 foo'range 而不是 foo.all'range?我想我记得它应该隐含地工作。- 克莱格
我之前尝试过,但出现错误。也许这个错误与另一个有关。现在它的工作。所以我当前的 loopj 行看起来像这样:
loopj : for j in CurrentLine'range loop
这条线在 XST、iSim、GHDL 和 QuestaSim 中运行良好,但 Vivado 仍然存在问题:
信息:[Synth 8-638] 合成模块 'Boards2' [.../Boards2.vhdl:16]
错误:[Synth 8-278] 表达式 0 超出范围 [.../JSON.pkg.vhdl:293]
错误:[Synth 8-421] 分配的 rhs 和 lhs 中的数组大小不匹配 [.../Boards2.vhdl:20]
错误:[Synth 8-285] 合成模块“Boards2”失败 [.../Boards2.vhdl :16]
表达式如何超出范围?这个消息很奇怪。
是否有另一种方法来获取循环的范围,具体取决于当前行的长度?
tcl - 使用Tcl设置一个verilog净值预合成
我在 main.sv 中定义了以下值,只需要设置一次:
我不想浪费资源在合成的 HDL 中随机化这个值,所以我想到我可以在 Tcl 脚本中这样做。我的目标是:
使用 Tcl 脚本重写 HDL 文件,初始化值如下:
logic [31:0] random_number = 32'd1057;
使用 Tcl 脚本在 pre-hook 中将值设置为网络。
不幸的是,我不确定如何使用 tcl 做这些事情。任何建议将不胜感激。
cygwin - 在 Cygwin 中运行 Vivado HLS
我有一个与 Vivado HLS (vivado_hls -f run_vhls.tcl) 一起运行的 tcl 脚本。
当我使用内置的Vivado HLS tcl shell运行它时,一切正常。注意:显然外壳是基于 Cygwin 的(当我执行 pwd 时,它给出:/cygdrive/c/etc)
当我使用Cygwin shell运行 tcl 脚本时,它会生成所有 hls 输出,与内置的 VHLS shell 相比有两个警告/错误:
- 在运行开始时:
@I [HLS-10] 运行 'C:/Xilinx/Vivado_HLS/2015.2/bin/unwrapped/win64.o/vivado_hls.exe' C:/Xilinx/Vivado_HLS/2015.2/tps/tcl/tcl8.5/tzdata/Europe /伦敦打不开。 对于主机“ee-at3410”上的用户“at3410”
给定路径中没有“tzdata”文件夹。
- 最后,当生成所有 hls 输出时,说:
@I [WVLOG-307] 为“CalcSpatConsts”生成 RTL Verilog。 > @E [HLS-70] 调用 'vivado_hls' 时出错;尝试“-help”。 @I [HLS-112] 总经过时间:262.13 秒;峰值内存使用量:1.59 GB。@I [LIC-101] 签入功能 [ap_opencl]
我在生成文件中调用 vhls 命令
并在显示第 2 条消息后很快中断,并显示以下消息:
Makefile:103: 目标“/cygdrive/c/path/latency_values.tcl”的配方失败 make: *** [/cygdrive/c/path/latency_values.tcl] 错误 2
有人知道为什么我只在 Cygwin shell 中看到此消息吗?
问题是什么?我该如何解决?
由于所有 hls 结果都是使用 Cygwin shell 正确生成的,有没有办法告诉 vivad_hls 忽略这个错误?这样我的 makefile 程序就不会中断。
fpga - 添加串口vivado/ISE microzed board-Xilinx
我在我的微型板上运行 xillinux。我需要使用 vivado 在板上定义一个新的串口。我能够将它添加到 IP 内核中,并且设备已准备就绪。但是,我如何让这个端口在 ubuntu (xillinux) 上可见,比如 ttyPS0。我是否需要将此端口添加到设备树并生成 dtb 文件和 boot.bin 文件?如果是这样,我该如何修改设备树?
1.) 现在,如果我使用 ISE 而不是 vivado,那么我是否能够更新 ISE 软件本身中的设备树源文件并生成设备树 .dtb 文件?如果是这样,我在哪里可以找到和编辑这个 dts 文件?
2.) 为了在 ISE 中构建新的 boot.bin 文件,我可以使用http://xillybus.com/downloads/u-boot...ux-1.3.elf.zip作为 microzed 或者我可以使用 bin来自 xillybus.com/downloads/xillin...rozed-1.3c.zip 的 microzed 文件?
3.) 即使在使用 ISE 并创建新的 .dtb(如果可能在 ISE 中)之后,我是否必须在 micozed 板上的 xillinux 操作系统上编辑 dtc 文件?
4.)如果我需要按照上面的第 3 步来让一切正常工作,请基于此链接, http: //xillybus.com/tutorials/device-tree-zynq-1
我只能到 cd /usr/src/kernels/3.12.0-xillinux-1.3/scripts/dtc/
如果我再次键入 cd /dtc,它会说 dtc 不是目录。
如何访问设备树脚本并将地址映射添加到外设部分的总线?如何编译它并使新设备树在每次启动时启动?
vivado - 这条消息是什么意思:“请检查 Tcl 控制台输出”?
我尝试使用 Vivado 2014.4 运行此代码,但出现此错误:
“[USF-XSim-62] 'compile' 步骤因错误而失败。请检查 Tcl 控制台输出”
编码:
代码中的错误是什么?
synthesis - 用 Vivado 合成 SystemC 不能提供所需的 VHDL 信号
我正在写一个项目是systemC,我有几个sc_in<bool>
和sc_out<bool>
我的模块之间的通信。当我合成项目时,在 vhdl 代码中生成每个sc_in
并sc_out
创建如下信号块:
这对于我的硬件设计来说太复杂了,因为我只想像这样声明 1 个信号:
将变量声明为sc_bit
,我对生成的 VHDL 没有任何问题,但是在我尝试在我的信号中使用sc_in<sc_bit>
而不是sc_in<bool>
在模块之间进行通信之后,项目不再编译。如果我分配这样的值:
我收到以下消息:
../../../../source.cpp:67:16:错误:请求从“int”转换为非标量类型“sc_dt::sc_bit”
如果我分配这样的值:
我收到以下消息:
../../../../source.cpp:68:14: 错误: '((source*)this)->source::asdf = '0'' 中的 'operator=' 不匹配
有没有其他方法可以在 SystemC 中声明 I/O 信号,以便在综合后我std_logic
在 VHDL 中只有 1 个信号?
测试台中的SC_MODULE
源代码是这样的
头文件:
cpp文件: