I don't know anything about Nixie tubes but I have attached code for an 8 digit 7 segment display.
The code 'with Value SELECT is the part where the decimal value is converted to segments
The process(DigitCnt, Input) selects the digit to display.
The update rate is 100,000,000 / 100,000 or 1000 digits per second. Each digit display then sees 125 updates per second.
The code breaks a 32 bit value up into 8 4-bit values...
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Display is
Port ( Input : in STD_LOGIC_VECTOR (31 downto 0);
DP : in STD_LOGIC_VECTOR ( 7 downto 0);
Clk : in STD_LOGIC;
Segments : out STD_LOGIC_VECTOR (7 downto 0);
Digits : out STD_LOGIC_VECTOR (7 downto 0));
end Display;
architecture Behavioral of Display is
signal Divider : integer range 0 to 100000;
signal DigitCnt : integer range 0 to 7 := 0;
signal Value : std_logic_vector( 3 downto 0);
begin
process(Clk) is
begin
if rising_edge(Clk) then
if Divider = 99999 then
Divider <= 0;
DigitCnt <= DigitCnt + 1;
else
Divider <= Divider + 1;
end if;
end if;
end process;
process(DigitCnt,Input) is
begin
case DigitCnt is
when 0 => Digits <= "11111110";
Value <= Input( 3 downto 0);
when 1 => Digits <= "11111101";
Value <= Input( 7 downto 4);
when 2 => Digits <= "11111011";
Value <= Input(11 downto 8);
when 3 => Digits <= "11110111";
Value <= Input(15 downto 12);
when 4 => Digits <= "11101111";
Value <= Input(19 downto 16);
when 5 => Digits <= "11011111";
Value <= Input(23 downto 20);
when 6 => Digits <= "10111111";
Value <= Input(27 downto 24);
when 7 => Digits <= "01111111";
Value <= Input(31 downto 28);
when others => Digits <= "11111111";
Value <= "1111";
end case;
end process;
with Value SELECT
Segments <= "11000000" when "0000", --0
"11111001" when "0001", --1
"10100100" when "0010", --2
"10110000" when "0011", --3
"10011001" when "0100", --4
"10010010" when "0101", --5
"10000010" when "0110", --6
"11111000" when "0111", --7
"10000000" when "1000", --8
"10010000" when "1001", --9
"10001000" when "1010", --A
"10000011" when "1011", --b
"11000110" when "1100", --C
"10100001" when "1101", --d
"10000110" when "1110", --E
"10001110" when "1111", --F
"10110110" when others; --?
end Behavioral;
[/font]