我正在尝试实现LUT和切片的一些非常具体的行为,用VHDL编写,用于使用XST工具合成的Xilinx Virtex 5 FPGA.我不知道是否可以通过让工具推断出我的意思来实现我的行为,那么我该如何明确指出这种情况呢?
我在谈论在Virtex5上使用6输入LUT,其中有4个在CLB中.
我想明确说明: - 在一个CLB切片中输入4个LUT中的每一个 - 从4个XORCY路由"S"输出 - 指定"第一个"MUXCY(C0)的输入 - "第4个"MUXCY的路由输出(Cn) - 能够以特定的顺序指定CLB的每个LUT的输入,因为它们显然是级联的.
理想情况下,我喜欢用VHDL实例化一个带有所有输入和输出的'CLB',并且能够映射这些......
我对文档进行了大量研究,并没有找到任何真正的东西
我想自动化在 xilinx 中创建 ngs、bit 和 mcs 文件的整个过程,并让这些文件自动与 svn 存储库中的某些文件夹关联。我需要知道的是,是否有一个在 Xilinx gui 后端创建的日志文件,它记录了我运行的所有命令,例如打开项目、加载文件、合成等。
另外我还没有找到的是一个日志文件,它记录了综合、映射、布局和布线以及生成编程文件的整个过程。特别记录该工具在这些过程中遇到的任何错误。
如果你们中的任何人都可以向我指出此类文件(如果存在),那就太好了。我没有从我的搜索中得到太多,但也许我看的还不够。
谢谢!
我在学习vivadoHLS,教程u871已经介绍了HLS的使用方法,优化我的C/C++代码。但我想知道如何将它们加载到我的 zynq 7020 板上,让它在板上运行。
我要实现的是:主机(板载CPU)调用PL(FPGA)进行计算,并将参数发送给PL,PL再将结果返回给CPU。
例如,C 中的一个函数:add(int* a, int* b),它将分别添加 a[i] 和 b[i] 并返回一个数组int* 结果。, 通过HLS,我可以展开for循环,那么计算会更快。CPU将a和b的地址发送给PL,PL进行计算,并将结果地址发送回CPU。
在本教程中,它只介绍了如何使用 HLS,没有解释如何与 PL 和 CPU 通信,或者如何将其加载到板上以便它可以在板上运行。
请推荐教程或告诉我在哪里学习,非常感谢!!
我正在尝试围绕Xilinx ISE TCL Shell开发基于Python的包装器xtclsh.exe
。如果可行,我将添加对其他Shell的支持,例如PlanAhead或Vivado ...
那么,总体情况如何?我有一个构成IP核心的VHDL源文件列表。我想打开一个现有的ISE项目,搜索丢失的VHDL文件,并在必要时添加它们。由于IP内核具有重叠的文件依赖关系,所以项目可能已经包含一些文件,因此我只在寻找丢失的文件。
示例用户Python 3.x和subprocess
管道。将xtclsh.exe
启动,并将命令逐行发送到外壳。监视输出结果。为了简化示例,我将STDERR重定向到STDOUT。虚拟输出POC_BOUNDARY插入命令流中,以指示已完成的命令。
可以通过设置示例ISE项目(包含一些VHDL源文件)来测试随附的示例代码。
我的问题是显示了INFO,WARNING和ERROR消息,但是脚本无法读取TCL命令的结果。
search *.vhdl -type file
在xtclsh.exe中手动执行会导致:
% search *.vhdl -type file
D:/git/PoC/src/common/config.vhdl
D:/git/PoC/src/common/utils.vhdl
D:/git/PoC/src/common/vectors.vhdl
Run Code Online (Sandbox Code Playgroud)
执行脚本会导致:
....
press ENTER for the next step
sending 'search *.vhdl -type file'
stdoutLine='POC_BOUNDARY
'
output consumed until boundary string
....
Run Code Online (Sandbox Code Playgroud)
问题:
顺便说一句:提示符号%
对我的脚本也不可见。
Python代码重现此行为:
import subprocess
class XilinxTCLShellProcess(object):
# executable = "sortnet_BitonicSort_tb.exe"
executable = r"C:\Xilinx\14.7\ISE_DS\ISE\bin\nt64\xtclsh.exe"
boundarString = "POC_BOUNDARY"
boundarCommand = bytearray("puts {0}\n".format(boundarString), "ascii")
def create(self, …
Run Code Online (Sandbox Code Playgroud) 我正在使用带有 Zynq XC72010 的定制开发板,用于运行 Linux 4.5 内核。我正在为我们正在内部测试的芯片开发设备驱动程序,我在尝试将 GPIO 线绑定到软件 IRQ 时遇到了很多问题。到目前为止,我已经尝试了几种方法并用尽了我能想到的任何谷歌搜索。我的设备树配置的相关部分:
/ {
compatible = "xlnx,zynq-7000";
amba {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
interrupt-parent = <&intc>;
ranges;
intc: interrupt-controller@f8f01000 {
compatible = "arm,cortex-a9-gic";
#interrupt-cells = <3>;
interrupt-controller;
reg = <0xF8F01000 0x1000>,
<0xF8F00100 0x100>;
};
i2c0: i2c@e0004000 {
compatible = "cdns,i2c-r1p10";
status = "disabled";
clocks = <&clkc 38>;
interrupt-parent = <&intc>;
interrupts = <0 25 4>;
reg = <0xe0004000 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
// …
Run Code Online (Sandbox Code Playgroud) 在 Vivado 中对 VHDL 进行语法检查而无需运行完整综合的最简单方法是什么?
有时我会同时编写许多相互关联的模块,并且希望快速找到命名错误、缺少分号、端口遗漏等。我读到的建议是运行综合,但这比我只需要更长的时间语法检查。我观察到语法错误通常会导致综合在第一分钟左右中止,因此我的解决方法是运行综合并在大约一分钟后手动中止它。
我有一个 vivado 项目目录,我想将其签入 git。我的所有 VHDL 源文件都位于“../hdl/”下“vivado 项目”目录的上一级目录中。
我的猜测是我只需要签入:
git add ./hdl/*.vhd
git add ./hdl/*.xdc
git add ./vivado_project/vivado_project.xpr
git add ./vivado_project/vivado_project.srcs/
Run Code Online (Sandbox Code Playgroud)
vivado 进行编译生成的文件的重置是输出垃圾,可以通过在签入的 git 文件上运行编译来再次重新创建吗?
它是否正确???
这基本上意味着以下 vivado 目录是可以丢弃和删除的输出垃圾,因为从 git checkout 重新编译时将再次重新创建它们:
所以基本上“rm -rf”和“.gitignore”以下vivado项目文件:
*.cache/
*.runs/
*.sim/
*.hw/
*.ip_user_files/
*.jou
*.log
*.str
Run Code Online (Sandbox Code Playgroud) 我尝试在 Ubuntu 20.04 上安装 Xilinx Petalinux 时遇到此错误
dpkg-query: package 'python' is not installed and no information is available 使用 dpkg --info (= dpkg-deb --info) 检查存档文件错误:您的工具不符合版本要求:-检测到 python版本低于预期 2.7.3
我重新安装了python几次,都没有用。
我正在学习 Ultra96v2 板的“ Xilinx SoC 深度学习简介技术培训课程”课程,并达到了 5 号实验室。
我能够一直跟进,直到我应该在 SDK 中构建项目为止。它失败并告诉我这样的错误:
15:49:06 **** Incremental Build of configuration Debug for project mnist_file_io ****
make all
Building file: ../src/mnist_file_io.cc
Invoking: ARM v8 Linux g++ compiler
aarch64-linux-gnu-g++ -Wall -O0 -g3 -I/media/user/6b04b610-ff80-4702-a575-b0b1a78fbafb/training/AvnetTTC/DPU/U96AI_student_20200115/U96AI/2018_3/work/lab5/workspace/ExtraIncludes -I/usr/include -c -fmessage-length=0 -MT"src/mnist_file_io.o" --sysroot=YSROOT -MMD -MP -MF"src/mnist_file_io.d" -MT"src/mnist_file_io.o" -o "src/mnist_file_io.o" "../src/mnist_file_io.cc"
In file included from ../src/mnist_file_io.cc:9:0:
/tools/Xilinx/SDK/2018.3/gnu/aarch64/lin/aarch64-linux/aarch64-linux-gnu/include/c++/7.3.1/cmath:45:15: fatal error: math.h: No such file or directory
#include_next <math.h>
^~~~~~~~
compilation terminated.
src/subdir.mk:21: recipe for target 'src/mnist_file_io.o' failed
make: *** [src/mnist_file_io.o] Error …
Run Code Online (Sandbox Code Playgroud) 我正在 Vivado 中进行设计。我的顶层设计是一个框图。该框图包含 IP 块和我的 Verilog RTL 模块。每当我更改主模块并且 Verilog 更新框图时,它总是错误地推断出我的模块的时钟频率。我怎样才能解决这个问题?
这个问题令人气愤,问它破坏了我的设计。设计中的所有其他 AXI 总线都正确使用 10MHz,但每当我更改main
并更新框图时,Vivado 都会决定main
AXI 总线为 100MHz。只要时钟不匹配,我就无法构建。我可以手动更新框图中块的属性中的频率,但每次更新时这些更改都会被擦除main
(这很频繁,因为它是我的主模块)。
我尝试为每个 AXI 总线添加专用时钟和重置(即使它们都连接到同一网络)。我已经搞乱了X_INTERFACE_PARAMETER
(这在任何地方都有记录吗?)。一切都无济于事。
此外,M_AXIS_CMD
是一个主 AXI 接口,应该位于main
. 不知道这是怎么回事。但与时钟相比,这是一个相当小的问题。
来源: https: //gitlab.com/tessera/pcd8544-tests
模块接口:
module main #(
CLK_FREQ = 50000000// : CLK_FREQ > 0 // clock frequency
)(
(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME core_clk, ASSOCIATED_RESET core_rst, FREQ_HZ 10000000" *)
(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 core_clk CLK" *)
input clk,
(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME …
Run Code Online (Sandbox Code Playgroud) xilinx ×10
vivado ×4
python ×3
fpga ×2
linux ×2
vhdl ×2
zynq ×2
c ×1
c++ ×1
device-tree ×1
eclipse-cdt ×1
petalinux ×1
shell ×1
subprocess ×1
verilog ×1
xilinx-ise ×1