2009-03-01 13 views
1

これは59までカウントする次のコードを持っています。それはうまく始まりますが、31の後に数字の代わりに '('、 '$'、 '#'などのようなASCII文字を表示し始めます。私は間違っているつもりです任意のアイデア?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; 

答えて

2

何も印刷していないので、私はあなたが波形ビューアでこれを見ていると仮定します。示された型を整数に設定すると、あなたはAnthonyWJonesが言ったようにそれをASCIIとして持つことができます。

1

私は、しかし、今まであなたが出力を観察するために使用されていること前あなたにASCII文字が表示されない可能性が最も高いと思われるされているものVHDLさっぱりだが〜32は制御文字なので、値が妥協して表示されます.32以上は印刷可能な文字なので、ツールはその値が何であると考えているのかによって切り替わります。

+0

VHDLはハードウェアの定義に使用されます。これはチップ設計者によって使用されます。 –

+0

いいえ、実際はありません。 VHDLはモデリング言語です。現実のハードウェアまたは並行プロセスをモデル化するために使用することができます。 – Sadjad

1

挿入、追加の信号:デバッガの下や波形ビューアで

my_char <= character'val(countSVal);  

チェックmy_char信号を、あなたはASCII文字が表示されます。

signal my_char: character; 

は、その後、整数から文字への変換を行います。私はAldec Active-HDL 6.1でそれをチェックしました。

関連する問題