我目前正在制造12至6的转换器。 基数12中的数字是二进制编码的,最多3个数字(例如:7A9-> 0111 1010 1001),我需要将其转换为基数6((7A9)_12->(5133)_6-> 0101 0001 0011 0011)显示在7段显示器上。
我的解决方法是将输入信号的每个数字转换为整数并转换为基数10,然后使用mod和除法转换为以6为基数,然后将每个数字转换为4位二进制。
这是我当前的代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity R12_3digToR6_4digConv is
port(
d : in STD_LOGIC_VECTOR (11 downto 0);
n : out STD_LOGIC_VECTOR (15 downto 0)
);
end R12_3digToR6_4digConv;
architecture arch_R12M7A9_3digToR6_4digConv of R12_3digToR6_4digConv is
signal d_sum10,d_temp,d_sum6 : integer := 0;
begin
process(d)
begin
--Getting digits and converting to base 10
d_sum10 <= to_integer(unsigned(d(11 downto 8))*"10010000" + unsigned(d(7 downto 4))*"1010" + unsigned(d(3 downto 0)));
--Convert base 10 to base 6
for i in 0 to 3 loop
d_temp <= d_sum10 mod 6;
d_sum10 <= d_sum10 / 6;
n((15 - 4*i) downto (12 - 4*i)) <= std_logic_vector(to_unsigned(d_temp,4));
end loop;
end process;
end arch_R12M7A9_3digToR6_4digConv;
我正在使用Quartus Prime对其进行编译,结果是 Vector Waveform Output
无论我的输入信号是什么,结果都将为零,并且我不知道该如何修改,任何帮助都会很棒。
谢谢:)