--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中,即使我在相同的源代码上重新生成位文件两次,结果位文件的校验和永远改变。我想它会在位文件中添加一个时间戳或一些随机数?
答案 0 :(得分:3)
VHDL语言没有规定如何在设备中实现设计,例如FPGA,因此综合工具可以使用它想要的任何资源,只要生成的实现与VHDL源相同即可。
工具供应商,例如Xilinx或Altera通常不会指定实现方法,但这些工具通常非常擅长优化设计,因此可以实现最小的实现。
结果是等效的VHDL设计通常会产生相同的最优实现,特别是如果设计很简单,那么综合算法可以构建完整的内部设计结构。基于这些保留,简短的回答是:
假设所有3个设计都是等效的,因此它们将具有相同的实现。
这样做的结果是,您通常可以优先考虑易于编写,阅读,审查和测试的设计结构,从而最大限度地减少错误和时间花费,然后让综合工具处理实现。
最后,艺术是了解通常何时不适用,因此您已经编写了适合工具和设备的设计,以获得最佳性能和填充。