VHDL中的无符号文字

时间:2014-09-04 18:34:03

标签: 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
    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;

该行:

            testSignal <= 1;

在Xilinx ISE上产生以下错误消息:

Line 22. Type of testSignal is incompatible with type of 1.

任何人都可以解释为什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

+运算符在ieee.numeric_std unsignedinteger重载,这就是第一行有效的原因;但是,赋值不是(也可能不是),并且因为1是一个整数文字,所以不能直接赋值给unsigned(它是一个向量);它必须先转换。标准方法是:

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

to_unsigned()有两个参数:要转换的natural和要转换为的矢量长度。