アプリ版:「スタンプのみでお礼する」機能のリリースについて

VHDLで回路を記述する際に、立ち上がりと立ち下がりの両方を検出する際にはどうすればよいでしょうか?
立ち上がりだけなら
if CLK_2M'event and CLK_2M='1' then
とすればよいですが、立ち上がりと立ち下がりとなると、
if CLK_2M'event and CLK_2M='0' then
elsif CLK_2M'event and CLK_2M='1' then
と記述すると、うまくSynthesizeしてくれません。
また、
if CLK_2M'event then
if CLK_2M='1' then
elsif CLK_2M='0' then
と書いてもエラーを出してしまいます。

エラーの内容は1番目のコードの場合はCLK_2Mに関係無い内容ですが、念のため乗せておきます。
1番目の場合
Signal ANSOUT<0> cannot be synthesized, bad synchronous description.
ちなみにANSOUTというのはLEDに出力を出すためのsignalです
signal ANSOUT : std_logic_vector(7 downto 0);
LEDOUT <= ANSOUT; -- LEDOUTはLED出力用PIN
2番目の場合
line 39: unsupported Clock statement.

A 回答 (1件)

ここ3年以上VHDLを使っていないので、有効な回答か自信がありませんが……。



立ち下りまたは立ち上がりで同じ動作をさせるのであれば、
if CLK_2M'event then
で出力結果を記述すればいいと思うのですが、
違う動作をさせようと思うのなら、
if CLK_2M'event and CLK_2M='1' then

if CLK_2M'event and CLK_2M='0' then
を別々に記述すればいいと思います。

VHDLは順序処理を記述するのではなく、並列処理を記述する言語だということを思い出してください。
    • good
    • 1
この回答へのお礼

回答ありがとうございました。
ご指導の通り記述を書き直すと、無事動作しました。ありがとうございます。

お礼日時:2005/07/18 19:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!