1

私は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;
4

3 に答える 3

2

何も印刷していないので、波形ビューアでこれを見ていると思います。表示されているタイプを整数に設定します。AnthonyWJones が言ったように、ASCII にすることができます。

于 2009-03-06T16:57:24.097 に答える
1

vhdlが何であるかはわかりませんが、出力を観察するために使用しているものは、制御文字であるため32より前のASCII文字を表示していない可能性が高いため、妥協して値を表示します。 。32以上は印刷可能な文字であるため、ツールが値を認識しているため、それらを使用するように切り替えます。

于 2009-03-01T20:10:16.983 に答える
1

追加の信号を挿入:

signal my_char: character;  

次に、整数から文字への変換を行います。

my_char <= character'val(countSVal);       

デバッガーまたは波形ビューアーで my_char 信号を確認すると、ASCII 文字が表示されます。Aldec Active-HDL 6.1 で確認しました。

于 2009-06-21T14:42:39.693 に答える