我有一个包含许多TCL文件的文件夹,我需要全部运行它们(在Vivado中).如何节省一次运行所有这些的时间?有没有这么简单:source [path /]*.tcl?
我是Vivado和VHDL的新手,我想就一个基本问题提供一些指导.
我猜我可以创建自己的库并在我的项目中使用它们,就像我使用默认库和基本库一样
例如:
library IEEE;
use IEEE.std_logic_1164.ALL;
use IEEE.std_logic_unsigned.ALL;
Run Code Online (Sandbox Code Playgroud)
现在,通过在网上浏览,我没有找到任何具体的答案,没有任何直接的方式来"添加库"(至少在我的Vivado版本中).
有没有办法构建VHDL代码,让我们说类型定义,并在任何你喜欢的文件中使用它们,例如在C中完成?
我正在使用赛灵思的 vivado 进行 verilog 编程。
我想知道为什么我们使用某些输出 reg
例如,reg [3:0] encoder_output
我们使用它是因为我们的 16 到 4 编码器有 4 个输出,对吗?我假设我们使用reg在需要“存储一些东西”时使用
我的想法对吗??
我正在尝试在 Vivado GUI Tcl 控制台中执行 tcl 脚本,我的脚本采用一个参数来决定必须配置哪种类型的运行(synth、impl、bitgen 等)。我知道,-tclargs如果脚本在 Vivado 命令行模式下执行,则使用它可以传递参数。就像是:
vivado -mode batch -source <filename> -tclargs <arguments>
Run Code Online (Sandbox Code Playgroud)
我在 Vivado gui 模式下尝试了相同的操作,但出现错误。
ERROR: [Common 17-170] Unknown option '-tclargs', please type 'source -help' for usage info.
Run Code Online (Sandbox Code Playgroud)
跑步'source -help':
Syntax:
source [-encoding <arg>] [-notrace] [-quiet] [-verbose] <file>
Usage:
Name Description
------------------------
[-encoding] specify the encoding of the data stored in filename
[-notrace] disable tracing of sourced commands
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution
<file> …Run Code Online (Sandbox Code Playgroud) 我正在 Vivado 中进行设计。我的顶层设计是一个框图。该框图包含 IP 块和我的 Verilog RTL 模块。每当我更改主模块并且 Verilog 更新框图时,它总是错误地推断出我的模块的时钟频率。我怎样才能解决这个问题?
这个问题令人气愤,问它破坏了我的设计。设计中的所有其他 AXI 总线都正确使用 10MHz,但每当我更改main并更新框图时,Vivado 都会决定mainAXI 总线为 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) 我收到了错误
[Synth 8-2576]不允许对非登记结果进行程序性分配["lpm_mult.v":29]
我究竟做错了什么?
module lpm_mult (
dataa, datab, // multiplicand,multiplier
sum, // partial sum
clock, // pipeline clock
clken, // clock enable
aclr, // asynch clear
result // product
);
input clock;
input clken;
input aclr;
input [31:0] dataa;
input [31:0] datab;
input [63:0] sum;
output [63:0] result;
always @ (clken or posedge clock) begin
if (1==clken) begin
assign result = dataa * datab;
end
end
endmodule
Run Code Online (Sandbox Code Playgroud) 我在Vivado SDK中编写了一个简单的项目,以测试我在Vivado中开发的HW平台.我的问题是SDK无法识别sin()函数.我已经包含了"math.h"库而没有任何错误,程序识别出包含sin()函数的库(我自己检查过它).
我得到了这个错误:
C:\PATH...\Debug/../src/helloworld.c: undefined reference to `sin' collect2.exe: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我已经在这里阅读了答案,它太笼统,所以解决我的问题毫无用处.显然存在库的问题,但目前尚不清楚如何在Vivado SDK中专门解决它.
我正在使用:操作系统:Windows 7
Vivado:2016.1
Vivado SDK:2016.1
有什么办法吗
我想写一个IP来使用BRAM存储/读取数据.
到目前为止,我使用(C)DMA从RAM读取存储器映射数据并获得AXIS.
然后我用VHDL创建了一个新的源文件,接受AXIS的一面就像魅力一样.另一方面,我想创建一个BRAM接口,但vivado不会为BRAM接口组合端口.
位于"vivado/data/ip/interfaces/bram_v1_0"文件夹中,存在文件"bram_rtl.xml".我试图使用xml文件中使用的端口.特别是带有"必需"标签的端口.
AXI BRAM控制器正在将它们组合在一起,所以我很确定我犯了一个错误.使用与AXI BRAM Controller相同的命名也不起作用.
我的VHDL看起来像这样:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity AXIS_TO_BRAM is
generic (
addr_size : integer range 1 to 12 := 10
);
Port (
--axistream
tdata : in std_logic_vector(31 downto 0);
tkeep : in std_logic_vector(3 downto 0);
tlast : in std_logic;
tready : out std_logic;
tvalid : in std_logic;
aclk : in std_logic;
--BRAM
en : out std_logic;
dout : in std_logic_vector(31 downto 0);
din : out std_logic_vector(31 downto 0);
we : out std_logic; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Xilinx 的 Vivado 工具编译一些 FPGA 代码。但是,当我运行“综合”然后选择“报告方法”时......我得到以下不良实践列表:
TIMING-17
TIMING #1 Warning The clock pin last_anthony_reg.C is not reached by a timing clock
TIMING #2 Warning The clock pin last_paul_reg.C is not reached by a timing clock
TIMING #3 Warning The clock pin last_steven_reg.C is not reached by a timing clock
Run Code Online (Sandbox Code Playgroud)
我想知道是什么导致了这个“警告”消息...我尝试查看原理图...但对我来说看起来不错...只看到 FDCE 和一些 LUTS,那里没有什么异常。
这是我的 FPGA 顶层 VHDL 实体:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity example1 is
port(
clk :in std_logic;
clear :in std_logic;
richard :out std_logic;
james :in …Run Code Online (Sandbox Code Playgroud) 我对 Verilog 还很陌生,正在学习入门知识。我有一些代码生成一个 8 位向上计数器(模块counter.v ),然后由顶部模块( top_module.v )调用。有一个模拟测试夹具(test_fixture.v)调用顶层模块进行测试。
我试图使用参数(参数COUNTER_WIDTH)定义计数器的宽度,但遇到困难。一位同事为我修复了代码,现在它确实可以工作,但我想了解一些事情,以便我能够了解实际发生的情况。
这是计数器模块的代码:
module counter
#(parameter COUNTER_WIDTH = 8)
(
input wire CLK,
input wire RST,
input wire CE,
output reg[COUNTER_WIDTH-1:0] out = {COUNTER_WIDTH{1'b0}}
);
always @(posedge CLK) begin
if (RST == 1) begin
out <= {COUNTER_WIDTH{1'b0}};
end else begin
if (CE == 1) begin
out <= out + 1'b1;
end
end
end
endmodule
Run Code Online (Sandbox Code Playgroud)
顶层模块:
module top_module
#(parameter COUNTER_WIDTH = 8)
(
input wire CLK,
input wire CE, …Run Code Online (Sandbox Code Playgroud)