哪种配置管理工具最适合FPGA设计,特别是Xilinx FPGA采用VHDL和C编程,用于嵌入式(微型激光)软件?
我合成了一个小设备来测试block-ram推理.
我收到了来自XST的消息:
小型RAM将在LUT上实现,以最大限度地提高性能并节省Block RAM资源.如果要在块上强制执行,请使用 选项/约束ram_style.
但是,我不知道在ISE(在我的情况下为11.1)或约束文件中哪里可以找到此选项/约束...
我不想在我的代码中直接使用VHDL属性.
我有一个问题,关于我正在研究的AGC/SPI控制器的奇怪行为.它是在Verilog中完成的,目标是Xilinx Spartan 3e FPGA.控制器是一个依赖外部输入启动的FSM.FSM的状态存储在未明确初始化的state_reg中,因为我认为未初始化的寄存器默认为零.当我实现控制器时,FSM将无法运行.监控SPI总线我没有观察到任何活动.为了监视FSM,我将state_reg路由到一个输出总线,该总线连接到LED组.这就是分配data_out = state_reg的行正在进行的操作.我发现当我这样做时,FSM和AGC/SPI控制器在SPI总线上观察到正确.似乎正在发生的事情是,state_reg在初始化时处于未确定状态,因此FSM永远不会处于任何状态,因此它不会运行.但是通过将state_reg分配给输出,它初始化为00000000,正如我预期的那样从头开始.所以我的问题是,一个未初始化的寄存器是否应该假设值为0?通过为输出分配一个未初始化的寄存器,是否会强制它假设为零?或者是其他事情发生在我不明白的地方?以下是我的代码.我已经评论了*state_reg**被分配给输出线[7:0] data_out的相关部分.我知道这是一个很长的问题,但我真的想了解我应该期待什么类型的行为.谢谢.
module agc_control
(
input wire [7:0] agc_data,
input wire clk,
input wire agc_start,
input wire AMP_DO,
output reg MOSI,
output reg SCK,
output reg CS_AMP,
output wire inhibit_ADC,
output wire [7:0] data_out
);
//signals
reg [4:0] state_reg,
reg [2:
0] ampclkreg;
reg ampclk;
reg [7:0] agc_data_reg;
reg agc_running;
reg [7:0] data_out_reg;
wire agc_done;
//ampclk generation
always @(posedge clk)
begin …
Run Code Online (Sandbox Code Playgroud) 非常基本的问题:
我怎么知道端口/信号/值应放在箭头的哪一侧?我注意到通过切换
port_a => x
到x <= port_a
看起来非常平等,我得到了一个错误.另外,x => port_a
不要工作
我甚至不知道箭头指向哪个方向.
答案非常感谢!
我问并回答这个问题,以便将来再找到它...
如何让XST不要将两个逻辑上等效的网络合并为一个(这通常是节省资源的好主意,但从时序视图来看可能不是一个好主意)?
我有一个设计有2个计数器,由相同的clk驱动.XST将计数器的最低位合并为一个计数器,但这是一个问题,因为由于IOB放置约束,计数器需要在设计中分开.我需要计数器(特别是计数器的最低位)是不同的.
我想要参数化模块.它具有以下定义:
module example (...);
parameter A = 2;
parameter B = 2;
parameter C = A + B;
endmodule
Run Code Online (Sandbox Code Playgroud)
但是,当我打印出参数值时,我得到A = 2,B = 2和C = 1 ...任何想法为什么?
什么是FPGA(Xilinx Virtex 5/7)上的执行线程,理论上它可以有多少个(最小和最大)?
I2C主设备是否可以与另一个I2C主设备通信?
谢谢
我想写一个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)