通用多路复用器警告
Generic Multiplexer warning
我在 VHDL 中创建了一个通用多路复用器(基于输入数量和每个输入的位数)。我测试了它,它工作正常,但我收到宽度不匹配警告:
宽度不匹配。 < output > 的宽度为 8 位,但分配的表达式为 64 位宽。
这是我的通用 MUX 的代码。谁能解释我为什么会收到此警告?我的代码有什么问题?我的教授希望我在不使用过程的情况下实现它。谢谢
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use work.package_log.all;
use IEEE.NUMERIC_STD.ALL;
entity mux_generic is
generic(N : natural :=8;
M : natural := 8);
-- N: number of inputs
-- M: bit per input/output
Port ( input : in STD_LOGIC_VECTOR (N*M-1 downto 0);
sel: in STD_LOGIC_VECTOR (log2ceil(N)-1 downto 0);
output : out STD_LOGIC_VECTOR (M-1 downto 0));
end mux_generic;
architecture DataFlow of mux_generic is
begin
output <= input(M*(to_integer(unsigned(sel))+1) - 1 downto M*(to_integer(unsigned(sel))));
end DataFlow;
函数log2ceil是这样定义的:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
package package_log is
function log2ceil( n : natural) return natural;
end package_log;
package body package_log is
function log2ceil (N : natural) return natural is
variable i, j : natural;
begin
i := 0;
j := 1;
while (j < N) loop
i := i+1;
j := 2*j;
end loop;
return i;
end function log2ceil;
end package_log;
请更新到最新的 ISE 版本 14.7(如果您目前尚未更新)。然后为您的 Spartan-3E FPGA 启用新的解析器:
- 右键单击“合成”->“进程属性”。
- 将 属性 显示级别更改为 "Advanced"。
- 对于 属性 "Other XST Command Line Options" 输入
-use_new_parser yes
.
现在警告消失了。出现一条新警告,只是指出新解析器不是默认解析器。但是,我还没有遇到这个问题。
顺便说一下,您的多路复用器描述还不够高效。查看 ,了解不同的实现及其对资源使用和时序分析的影响。
我在 VHDL 中创建了一个通用多路复用器(基于输入数量和每个输入的位数)。我测试了它,它工作正常,但我收到宽度不匹配警告: 宽度不匹配。 < output > 的宽度为 8 位,但分配的表达式为 64 位宽。 这是我的通用 MUX 的代码。谁能解释我为什么会收到此警告?我的代码有什么问题?我的教授希望我在不使用过程的情况下实现它。谢谢
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use work.package_log.all;
use IEEE.NUMERIC_STD.ALL;
entity mux_generic is
generic(N : natural :=8;
M : natural := 8);
-- N: number of inputs
-- M: bit per input/output
Port ( input : in STD_LOGIC_VECTOR (N*M-1 downto 0);
sel: in STD_LOGIC_VECTOR (log2ceil(N)-1 downto 0);
output : out STD_LOGIC_VECTOR (M-1 downto 0));
end mux_generic;
architecture DataFlow of mux_generic is
begin
output <= input(M*(to_integer(unsigned(sel))+1) - 1 downto M*(to_integer(unsigned(sel))));
end DataFlow;
函数log2ceil是这样定义的:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
package package_log is
function log2ceil( n : natural) return natural;
end package_log;
package body package_log is
function log2ceil (N : natural) return natural is
variable i, j : natural;
begin
i := 0;
j := 1;
while (j < N) loop
i := i+1;
j := 2*j;
end loop;
return i;
end function log2ceil;
end package_log;
请更新到最新的 ISE 版本 14.7(如果您目前尚未更新)。然后为您的 Spartan-3E FPGA 启用新的解析器:
- 右键单击“合成”->“进程属性”。
- 将 属性 显示级别更改为 "Advanced"。
- 对于 属性 "Other XST Command Line Options" 输入
-use_new_parser yes
.
现在警告消失了。出现一条新警告,只是指出新解析器不是默认解析器。但是,我还没有遇到这个问题。
顺便说一下,您的多路复用器描述还不够高效。查看