Вывод счетчика с отображением символов ASCII - PullRequest
1 голос
/ 01 марта 2009

У меня есть следующий код для подсчета до 59. Он начинается отлично, но после 31 начинает отображать символы ASCII, такие как '(', '$', '#' и т. Д., Вместо цифр. Любая идея, где я ' я иду не так?

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;

entity counter is 
    port(clk: IN STD_LOGIC;
         secs:OUT INTEGER RANGE 0 to 59);
end counter;

architecture counter_behav of counter is
signal countSVal: INTEGER RANGE 0 to 59:=0;
begin

process(clk)
begin
if(rising_edge(clk)) then
    if(countSVal>=59) then
        countSVal <= 0;     
    else
        countSVal <= countSVal + 1;     
    end if;
    secs <= countSVal;
end if;
end process;
end counter_behav;

Ответы [ 3 ]

2 голосов
/ 06 марта 2009

Поскольку вы ничего не печатаете, я предполагаю, что вы смотрите на это в средстве просмотра формы волны. Установите показанный тип целое число, у вас может быть ASCII, как сказал AnthonyWJones.

1 голос
/ 21 июня 2009

Вставить дополнительный сигнал:

signal my_char: character;  

Затем выполните преобразование из целого числа в символ:

my_char <= character'val(countSVal);       

Проверьте сигнал my_char в отладчике или в средстве просмотра сигналов, и вы увидите символы ASCII. Я проверил это с Aldec Active-HDL 6.1.

1 голос
/ 01 марта 2009

Я понятия не имею, что такое vhdl, однако, наиболее вероятно, что то, что вы используете для наблюдения за выводом, это , а не , показывающий вам символы ASCII до 32, потому что это будут управляющие символы, так что это просто компромисс и показывает вам свои ценности. Поскольку 32 и более являются печатными символами, он переключается на их использование, потому что это то, что инструмент считает значения.

...