VHDL 3位二进制编码的十进制(以12为基数)到4位二进制编码的senary(以6为基数)转换器

时间:2018-11-14 15:34:54

标签: vhdl base-conversion

我目前正在制造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

无论我的输入信号是什么,结果都将为零,并且我不知道该如何修改,任何帮助都会很棒。

谢谢:)

0 个答案:

没有答案