在VHDL中,声明一个大向量和使用它的切片与声明多个小向量之间有区别吗?

时间:2015-11-05 16:00:47

标签: vhdl fpga

--Example 1:
    signal x : STD_LOGIC_VECTOR(15 downto 0);
    --do something with x(15 downto 8);
    --do soemthing else with x(7 downto 0);

--Example 2:
    signal x0 : STD_LOGIC_VECTOR(7 downto 0);
    signal x1 : STD_LOGIC_VECTOR(7 downto 0);
    --do something with x0(7 downto 0);
    --do something else with x1(7 downto 0);

上面关于如何在FPGA内实现,门/ LUT使用,性能等方面有什么不同吗?     什么时候使用别名,如。

--Example 3:
    signal x : STD_LOGIC_VECTOR(15 downto 0);
    alias x0 is x(15 downto 8);
    alias x1 is x(7 downto 0);
    --do something with x0(7 downto 0);
    --do something else with x1(7 downto 0);

我是新手,所以无法弄清楚如何自己验证它,因为在Xilinx ISE中,即使我在相同的源代码上重新生成位文件两次,结果位文件的校验和永远改变。我想它会在位文件中添加一个时间戳或一些随机数?

1 个答案:

答案 0 :(得分:3)

VHDL语言没有规定如何在设备中实现设计,例如FPGA,因此综合工具可以使用它想要的任何资源,只要生成的实现与VHDL源相同即可。

工具供应商,例如Xilinx或Altera通常不会指定实现方法,但这些工具通常非常擅长优化设计,因此可以实现最小的实现。

结果是等效的VHDL设计通常会产生相同的最优实现,特别是如果设计很简单,那么综合算法可以构建完整的内部设计结构。基于这些保留,简短的回答是:

假设所有3个设计都是等效的,因此它们将具有相同的实现。

这样做的结果是,您通常可以优先考虑易于编写,阅读,审查和测试的设计结构,从而最大限度地减少错误和时间花费,然后让综合工具处理实现。

最后,艺术是了解通常何时不适用,因此您已经编写了适合工具和设备的设计,以获得最佳性能和填充。