ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
webadm
投稿日時: 2006-6-3 14:26
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
VHDLでもはまる
基本的にVHDLもVerilog HDLから機械的に書き換えられそうなのでやってみた。

はまった。

基本的な構文は対応するものがあるものの、記述様式がかなり違うので、結局全部手入力で翻訳して打ち込んでいかなければならなかった。巷にはVHDL->Verilog HDL変換ツールがあるらしい。本職の人が使っていたのを昔見た覚えがある。しかし勉強のためには自分でやるしかない。

入力し直していると、年の替わりで上位桁が9以外の場合の桁上がりのロジックがすっかり抜けていることに気づく。9999から0000になるのは確認したが、0009から0010になるのはやってなかった。同様に0099から0100と0999から1000も。

最初に入力信号のひとつSELECTを宣言したところがエラーになる。なぜだか分からなかったが、もしかしてSELECTはVHDLのキーワードなのか?と思ったらピンポンだった。Sに名前を変えた。

デコードロジックの部分はVerilog HDLの時と同様に関数として記述した。ここでも文法を読み落として、RETURN文を書くのをすっかり忘れていた。どう書いても戻り値がすべての組み合わせをカバーしていないと怒られる。それも実際に関数を参照しないとこのエラーが出ない。他の関数はまだ参照する代入文を書いてなかったので使用されず検出されなかった。そちらではエラーが出ないのでなぜこれだけ?と悩んでしまった。良く見たら関数は戻り値をRETURN文で明示的に返さないといけない。

信号名をSELECTからSに変更したのでピンアサインをimportしたがそこだけ警告が出る。Assignment Editorを使うとピン番号はそのままで信号名だけ変更することができる。それでなおした。

でコンパイルは通りさっそくダウンロードしてみると、秒の表示が出ない。分のところがまるで秒の表示のように変化している。

シミュレーションをやってみると、確かに秒の表示がブランクになっている。そもそもデコードすらされていない。

これもだいぶ分からなかったが、7segmentコードがデコードされていないあたりを探ってみると、あった。全部手で入れ直したので分のデコードがすっぽ抜けて分の桁に秒がデコードされていた。秒のところは何も無い。

そこんところをなおしたら表示はまともになった。あとは年替わりで抜けていたロジックを追加して、動作を確認して終了。

よく考えたらVerilog HDLもVHDLも順序回路の記述では代入しなければ前回値が保持されるので、AHDLの様にわざわざ変化しない信号について代入はいらないことが判明。といっても不要な代入文を削っても使用されるLE数は変わらない。あたりまえか。

ということで慣れればVerilog HDLやVHDLは順序回路はAHDLより少ない行ですっきり記述できることが判明。

さて年替わりのバグがあったのでまた他も直して更新しないと。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   デザインのウォーミングアップ仕上げ 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)
サイト内検索