ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
webadm
投稿日時: 2006-5-28 4:38
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
Verilog HDLではまる
ふと思い立って万年時計のデザインをAHDLから今風にVerilog HDLに書き直してみることに。

しかしはまった。

Verilog HDLはC言語ぽいかと思ってよく文法とか調べずに機械的に書き直してみたところ、最後に余分にendをつけないと怒られてしまう。

使ったツールはMAX+PLUS II Advanced Syhnthesisという無償でダウンロードできるMAX+PLUS II用のVerilog/VHDLコンパイラーである。

原因はVerilogとAHDLのIF構文の決定的な違いにあった。AHDLはIF ELSIF ELSE ENDIFと少し複雑な条件が記述できるが、VerilogはIF ELSEしかない。従ってC言語のようにIF ELSE IF ELSE IF...ELSEとかいう感じで複数の条件分岐を書こうとするととんでもない間違いを犯してしまう。

IF (式) 文;
ELSE IF (式) 文;
ELSE IF (式) 文;
ELSE 文;

と書くとVerilogでは以下のように解釈されることがやっと理解できた。

IF (式) 文;
ELSE
begin
IF (式) 文;
ELSE
begin
IF (式) 文;
ELSE 文;
end
end

これでは意図したのとまるで違う。Verilogでは複雑にIF構文をネストするのは鬼門らしい。しかたなくbegin endブロックで明示的に文の評価順序が決まるようにしてようやく意図した通りの論理を合成することができるようになった。

この副産物として実は万年時計にバグがあったことが判明。確認してはいないが、30日しかない月で日の下1桁が9以外の日の日替わりで日付が変わらないようだ。その条件の論理がすっぽり抜けていた。

Verilogで合成したデザインをダウンロードして動くのを確認したが、そのVerilogソースをQuartus IIでコンパイルするとなんとコンパイラが途中で異常終了してしまう。その前に簡単にテストしたjyankenunitでは試してなかったのでやってみると、簡単な組み合わせ倫理だけのファイルだが同じように最後の最後でこけてしまう。



なにか設定がまずいのか、それともQuartus IIのバグなのか。そういえば内藤さんのautosigはVHDLで書かれていてそれはQuartus IIでコンパイルされているのでVHDLならよかったのか。

Verilogから手をつけたのがまずかったか。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   デザインのウォーミングアップ仕上げ webadm 2006-3-20 1:00
     仕上げた結果 webadm 2006-3-20 21:10
       仕上げの感想 webadm 2006-3-21 23:10
         7セグメントLEDデコーダー内蔵版もできた webadm 2006-3-22 22:05
           いよいよ製作開始と思ったら webadm 2006-4-2 2:14
             Max+plus IIでもFLEX10Kは使える webadm 2006-4-2 2:48
             先行手配した部品が届いた webadm 2006-4-9 1:01
               FPGAまわりの回路図作成にとりかかる webadm 2006-4-15 21:30
                 部品ライブラリから作らないといけない webadm 2006-4-15 23:38
                   あともう少し webadm 2006-4-19 0:31
                     部品を載せ忘れていた webadm 2006-4-21 2:01
                       図面完成 webadm 2006-4-22 9:32
                         FPGAのピンアサインではまる webadm 2006-4-23 21:01
                           いよいよ万年時計基板製作開始 webadm 2006-5-5 20:59
                             やっとLEDスイッチボード製作完了 webadm 2006-5-7 14:02
                               ダイナミック点灯テスト webadm 2006-5-8 11:25
                                 またしても原因はハンダ付け不良だった webadm 2006-5-9 2:00
                                   FPGAボードも組み上がった webadm 2006-5-12 12:41
                                     火入れしてみた結果 webadm 2006-5-13 2:49
                                       メタステーブルとかではなさそうな気がする webadm 2006-5-13 14:44
                                         条件付きでPassive Serialでのダウンロードは出来た webadm 2006-5-15 2:46
                                           誤動作の例 webadm 2006-5-15 4:25
                                             また一つの事実が明らかに webadm 2006-5-15 5:47
                                               やはり電源とグランドの引き回しが悪いのか webadm 2006-5-17 0:29
                                                 とりあえず万年時計としての動作確認 webadm 2006-5-17 0:49
                                                   自作FPGAボード挙動不審のまとめ webadm 2006-5-20 19:28
                                                     純正ByteBlaster IIだとJTAGが正常に使える時がある webadm 2006-5-20 20:17
                                                       更に驚くべき事実が発覚 webadm 2006-5-20 22:49
                                                         純正でも再現性が悪い事実 webadm 2006-5-20 23:27
                                                           とおもったら今度はまともになった webadm 2006-5-20 23:42
                                                             今度は魔法の手出現 webadm 2006-5-21 4:37
                                                               一転して問題は収束の方向へ向かう webadm 2006-5-21 5:11
                                                                 ぬか喜びだった webadm 2006-5-21 5:54
                                                                 » Verilog HDLではまる webadm 2006-5-28 4:38
                                                                     まっさらなディレクトリから始めればVerilog HDLも問題なかった webadm 2006-5-28 19:25
                                                                       verilog HDL版の万年カレンダー時計 webadm 2006-5-30 20:34
                                                                         AHDLとVerilog HDLの比較 webadm 2006-5-31 12:50
                                                                           VHDLでもはまる webadm 2006-6-3 14:26
                                                                             Config ROMでの動作確認はどうしたものか webadm 2006-6-10 14:04
                                                                               15.974MHzのキンセキのオシレーターの謎 webadm 2006-6-11 13:35
                                                                                 Re: 15.974MHzのキンセキのオシレーターの謎 webadm 2006-6-11 15:02
                                                                                   BTTFごっこ webadm 2006-6-12 4:39
                                                                                     NICTのコンテスト webadm 2006-6-15 1:45
                                                                                       FPGAベースIPパケットフィルター webadm 2006-6-15 4:05
                                                                                         AHDLでフィルタリング判定論理書いてみた webadm 2006-6-15 10:15
                                                                                           EP1C6T144C6に入るみたいだ webadm 2006-6-15 18:18
                                                                                             少し工夫 webadm 2006-6-15 20:55
                                                                                               とどのつまりCAM(Content Adressable Memory)だな webadm 2006-6-16 0:59
                                                                                                 CACHEメモリでも良い webadm 2006-6-16 5:08
                                                                                                   とりあえず2wayなら webadm 2006-6-18 16:51

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索