これは私のエレクトロニクス学位のVHDLを勉強しており、1つのシーケンスの各クロックパルスでLEDシーケンスを変更するプログラムを作成する必要があります。私はそれをクラックしたと思うが、これはVHDL言語を使用する私の初めてのので、私は最も効率的な方法を使用していないかわからない。私のコードはです。VHDLクロックLEDシーケンス
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity REG_LED is
PORT(CLK: IN std_logic; -- CLK input
LEDS: Out std_logic_vector (4 downto 0):= "11111"); -- initialise output
End REG_LED;
ARCHITECTURE behavioral OF REG_LED IS
SIGNAL Temp: std_logic_vector (3 downto 0):= "0000"; -- initailise comparison signal
BEGIN
CLK_0_Process: PROCESS (CLK) -- begin
BEGIN
if Temp <= "0000" Then -- State 0
if rising_edge(CLK) Then
Temp <= "0001" ;
LEDS <= "00001";
END IF;
ELSIF Temp <= "0001" Then -- State 1
if rising_edge(CLK) Then
Temp <= "0010" ;
LEDS <= "00001";
END IF;
ELSIF Temp <= "0010" Then -- State 2
if rising_edge(CLK) Then
Temp <= "0011" ;
LEDS <= "11111";
END IF;
ELSIF Temp <= "0011" Then -- State 3
if rising_edge(CLK) Then
Temp <= "0100" ;
LEDS <= "00000";
END IF;
ELSIF Temp <= "0100" Then -- State 4
if rising_edge(CLK) Then
Temp <= "0101" ;
LEDS <= "11111";
END IF;
ELSIF Temp <= "0101" Then -- State 5
if rising_edge(CLK) Then
Temp <= "0110" ;
LEDS <= "00100";
END IF;
ELSIF Temp <= "0110" Then -- State 6
if rising_edge(CLK) Then
Temp <= "0111" ;
LEDS <= "01010";
END IF;
ELSIF Temp <= "0111" Then -- State 7
if rising_edge(CLK) Then
Temp <= "1000" ;
LEDS <= "10001";
END IF;
ELSIF Temp <= "1000" Then -- State 8
if rising_edge(CLK) Then
LEDS <= "10001";
END IF;
END IF;
END PROCESS ;
END behavioral;
ivが逃した代替ルートがある場合は誰にでも教えてください。
感謝
お返事ありがとうございました。私はアセンブリでプログラミングしてCで触れましたが、これはVHDLの約3週目ですので、私の頭の中でまだ頭を握っていますが、このモジュールは自己学習モジュールです新しいプログラミング言語を学ぶときには理想的ではない講師の限られた入力がありますが、なぜ度を正しく取得するのは難しいのでしょうか?コードを合成不可能にするものを中に入れないのですか?私はシミュレーションを使用して模擬したときのように、波動シミュレーションは期待通りに各クロック状態の出力を示しました。あなたの正しいTemp信号でこれ –
〜があります。一時信号はマーカーのようにそこにあります。そのため、シーケンスはプログラム内のどの位置にあるのかを知り、シーケンスの次の状態を判断できます。私たちはケースステートメントに触れているが、私はcase文とnumeric_stdパッケージについてもっと読んでおく必要があると思う。これは現在の形式のプログラムが非常に扱いにくく見えるので、これをもっとエレガントにするために探している。 –
重要な点はVHDL実際に_programming_言語ではなく、_ハードウェア記述_言語です。その機能は、シミュレーションのためだけに、またはハードウェアへの合成のために、ハードウェアを記述することです。かなり多くのものがシミュレートされますが、合成したい場合は、VHDLのサブセットに限定して、特定のスタイルに制限する必要があります。テンプレートは、そのスタイルの一部です。 –