- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个向量数组,我想使用 ISE 13.4 将它们存储在 Virtex-5 上的 Block RAM 中。它是 32Kb,应该适合 1 个 BRAM,但它都存储在逻辑中。我的系统使用 AMBA APB 总线,所以我检查选择线和启用线。请帮助我理解为什么这段代码不能推断出 BRAM。注意:这是一个更容易理解的虚拟示例,应该可以帮助我处理其他代码。
architecture Behavioral of top is
type memory_array is array (63 downto 0) of std_logic_vector(31 downto 0);
signal memory : memory_array;
attribute ram_style: string;
attribute ram_style of memory : signal is "block";
begin
process(Clk)
begin
if(rising_edge(Clk)) then
if(Sel and Wr_en and Enable) = '1' then
memory(to_integer(Paddr(5 downto 0))) <= Data_in;
elsif(Sel and not Wr_en and Enable) = '1' then
Data_out <= memory(to_integer(Paddr(5 downto 0)));
end if;
end if;
end process;
end Behavioral;
ram_style
数组的
block
但 XST 报告说:
WARNING:Xst:3211 - Cannot use block RAM resources for signal <Mram_memory>. Please check that the RAM contents is read synchronously.
enable
和
write_enable
在 BRAM 硬 block 上。我可以一直驱动输出,但我不想这样做,那样会浪费功率。还有其他想法吗?
最佳答案
您的逻辑可能与您设备的 BRAM 的工作方式不匹配(取决于设备,存在各种限制)。通常,data_out
在启用 RAM 的每个时钟周期更新,而不仅仅是“不写入时” - 试试这个:
process(Clk)
begin
if(rising_edge(Clk)) then
if(Sel and Enable) = '1' then
Data_out <= memory(to_integer(Paddr(5 downto 0)));
if wr_en = '1' then
memory(to_integer(Paddr(5 downto 0))) <= Data_in;
end if;
end if;
end if;
end process;
sel
混淆。和
enable
和
write
全部在一个
if
声明 - 这是因为它们在推断 BRAM 时主要是“模板匹配”而不是“功能匹配”。您可能会发现,简单地将“enable if”和“write if”(如我上面所做的)分开,同时保持其余功能相同,就足以使合成器完成所需的工作。
关于xilinx - 为什么这个 VHDL 不能在 XST 中推断 BRAM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11130764/
有谁知道内存中的纵横比是什么意思?以及 Xilinx FPGA 中的 block ram 和分布式 ram 有何不同?谢谢 最佳答案 “纵横比”是指访问内存时地址位数和数据位数。 例如,假设您的内存有
我使用 VHDL 在 Xilinx 中设计了一个 MIPS 单周期处理器。抽象设计是基于Patterson和Henessy的书提供的理论。完成设计后,我运行了一些汇编代码来检查它的功能并给出了预期的结
我是通过 xilinx 编写 verilog 的初学者。 我了解到端口声明必须如下所示 module mealy( nReset, clk, in, out ); input n
我有一个带有一些设计参数的自定义 IP。 它们从 IP 公开,因此我可以在块设计中使用 IP 时自定义它们。 我希望能够在我的固件代码中使用这些参数。 例如,当使用一个简单的 GPIO 时,在 xpa
我有一个针对 MicroBlaze CPU 的“c”代码。 当我在 Eclipse + GCC 或 Visual Studio 中调试代码作为 c 程序时,我得到了我想要的结果。 然而,当我在目标上奔
在 Xilinx 板的 Linux 内核版本 3.2.52 中, https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.gi
我正在 Xilinx 中用 VHDL 编写 8051 指令集。编写逻辑并生成综合报告后,我看到延迟为 13.330ns(频率为 75.020 MHz),逻辑电平 = 10。 这个值非常小(频率),我需
我在装有 Win7(64 位)的 ACER 笔记本电脑上安装了 Xilinx ISE 13.1。 安装软件(WebPACK 版本)后,我创建了一个空的 VHDL 模块并运行“检查语法”。该过程失败并出
我有一个 Xilinx SDK 工作区,其中包含: - 硬件规范(hw); - 板级支持包 (bsp); - C 语言应用程序。 换句话说,不需要像这里描述的那样创建工作区 http://www.xi
我正在尝试使用 Xilinx ISim 模拟我的 VHDL 代码。 当我尝试为模拟生成测试平台时,模拟器抛出以下错误: FATAL_ERROR:Simulator:Fuse.cpp:500:1.133
我正在尝试围绕 Xilinx ISE TCL shell xtclsh.exe 开发一个基于 Python 的包装器。如果它有效,我将添加对 PlanAhead 或 Vivado 等其他 shell
我提出并回答这个问题是为了以后能再次找到它... 我如何防止 XST 将两个逻辑上等效的网络合并为一个(这通常是节省资源的好主意,但从时序角度来看可能不是一个好主意)? 我的设计有 2 个由同一个时钟
我有两个结构: Struct _size1 { union{ short a; struct { char
我有一个用 C 编写的应用程序,用于 Xilinx Microblaze核。然而,性能并不是我想要的,所以我正在考虑重写汇编中的一些核心功能。我无法弄清楚如何让 Xilinx Platform Stu
我的问题是,这个函数 XGpio_SetDataDirection 的作用是什么,en C。例如 XGpio_SetDataDirection (&gp_out, 1, 0x00) ? 最佳答案 您可
我正在尝试使用带有 AXI4-lite 接口(interface)的 Xilinx uartlite 2.0 IP 在没有 microblaze 处理器的情况下传输字节。不幸的是,在我设置数据和有效信
我在做什么 我开始使用 Xilinx ISE 设计套件,并在 verilog 中编写了简单的算术逻辑单元。使用 Verilog Unit Under Tests 为 ISim 创建输入和输出信号,我验
我想在我的 AC701 kit 上写一个简单的 chisel3 闪烁 LED 设计(第 7 条)。但要做到这一点,我必须实例化一个时钟输入差分缓冲区。 Xilinx 提供以下 verilog 模板来执
我对 Xilinx ISE block ram 推理的稳健性有疑问。 我的机器上没有安装 xilinx ise(今天),但我通常使用专用编码完美地推断 block rams,基本上依赖于: type
我的团队正在使用 microblaze,但我们在 ip 堆栈方面遇到了一些问题。 我通常不是嵌入式程序员,但我想学习如何提供帮助。 有没有关于IP栈的教程?这些是什么?它们是如何编程的?如何解决 IP
我是一名优秀的程序员,十分优秀!