library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
--use IEEE.STD_LOGIC_ARITH.ALL;
--use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;
entity two_number_split is
Port (number : in integer range 0 to 99;
position0 : out STD_LOGIC_VECTOR (3 downto 0);
position1 : out STD_LOGIC_VECTOR (3 downto 0));
end two_number_split;
architecture Behavioral of two_number_split is
signal pos0, pos1 : STD_LOGIC_VECTOR(3 downto 0);
begin
convert: process(number, pos0, pos1)
begin
pos1 <= number/10;
pos0 <= number mod 10;
position0 <= std_logic_vector(pos0);
position1 <= std_logic_vector(pos1);
end process convert;
end Behavioral;
ERROR:HDLCompiler:1638 - "C:\Users\XXX\Documents\SS\ISE_Ex\seven_segment\two_numbers.vhd" Line 19: found '0' definitions of operator "/", cannot determine exact overloaded matching definition for "/"
ERROR:HDLCompiler:1638 - "C:\Users\XXX\Documents\SS\ISE_Ex\seven_segment\two_numbers.vhd" Line 20: found '0' definitions of operator "mod", cannot determine exact overloaded matching definition for "mod"
我想我只是使用了錯誤的庫。任何建議嗎?我已經嘗試了上面列出的庫的所有組合,不知道發生了什麼。
我知道一個邏輯向量是一個位數組。但我正在取一個十進制數並將其分成兩個代表每個數字的位數組。 IE瀏覽器。 99的輸入將使得pos0 1001和pos1 1001. – marshmallow 2014-09-10 22:56:01
如果你使用定義了除法和mod運算符的類型,就會發生這種情況。您有兩種選擇可以用我的答案中描述的標準庫來完成這一任務。看起來您可能試圖將其輸出到七段顯示器,在這種情況下,您可能希望使用不需要任何除法的雙重算法轉換爲BCD。 – 2014-09-10 23:28:34