VHDL中的无符号文字

VHDL中的无符号文字,vhdl,Vhdl,如何在赋值中使用无符号文字 看看这个例子: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.numeric_std.all; entity myTest is Port ( clk : in STD_LOGIC ); end myTest; architecture Behavioral of myTest is signal testSignal : unsigned (31 downto 0); begin

如何在赋值中使用无符号文字

看看这个例子:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all; 

entity myTest is
    Port ( clk : in STD_LOGIC );
end myTest;

architecture Behavioral of myTest is

  signal testSignal : unsigned (31 downto 0);

begin
    process (clk) is
    begin
        if (rising_edge (clk)) then

           -- this compiles fine:
            testSignal <= testSignal + 1;

            -- this causes an error. Why?
            testSignal <= 1;

        end if;
    end process;
end Behavioral;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
使用ieee.numeric_std.all;
实体myTest是
端口(时钟:在标准逻辑中);
结束我的测试;
myTest的架构是
信号测试信号:无符号(31到0);
开始
过程(clk)是
开始
如果(上升沿(clk)),则
--这很好:

testSignalieee中的
+
运算符重载。对于
无符号的
整数的
而言,numeric_std
,这就是第一行工作的原因;但是,赋值不是(也不能是),而且由于
1
是一个整数文本,因此不能将其直接赋值给
无符号的
(这是一个向量);它必须先转换。标准方法是:

testSignal <= to_unsigned(1, testSignal'length);

testSignal在
ieee中,
+
运算符被重载。对于
无符号
整数
,数字std
,这就是第一行工作的原因;但是,赋值不是(也不能是),而且由于
1
是一个整数文本,因此不能将其直接赋值给
无符号的
(这是一个向量);它必须先转换。标准方法是:

testSignal <= to_unsigned(1, testSignal'length);

testSignal在
ieee中,
+
运算符被重载。对于
无符号
整数
,数字std
,这就是第一行工作的原因;但是,赋值不是(也不能是),而且由于
1
是一个整数文本,因此不能将其直接赋值给
无符号的
(这是一个向量);它必须先转换。标准方法是:

testSignal <= to_unsigned(1, testSignal'length);

testSignal在
ieee中,
+
运算符被重载。对于
无符号
整数
,数字std
,这就是第一行工作的原因;但是,赋值不是(也不能是),而且由于
1
是一个整数文本,因此不能将其直接赋值给
无符号的
(这是一个向量);它必须先转换。标准方法是:

testSignal <= to_unsigned(1, testSignal'length);

testSignal谢谢。现在有意义了。除了fru1tbat的答案,您还可以使用二进制或十六进制值的直接向量赋值,如下面的
testSignal。现在有意义了。除了fru1tbat的答案,您还可以使用二进制或十六进制值的直接向量赋值,如下面的
testSignal。现在有意义了。除了fru1tbat的答案,您还可以使用二进制或十六进制值的直接向量赋值,如下面的
testSignal。现在有意义了。除了fru1tbat的答案,你还可以使用直接向量赋值和二进制或十六进制值,比如
testSignal