【Verilog】記述言語で論理設計 Project3【VHDL】/
>>546 >もちろんそういう場合は外部リセット必須。ここで問題になってるのは、
それはお前が勝手に限定しているだけだ。勝手なことをほざくな。
イニシャル込みでリセットを検討するのは当然だ。
まぁ、それがわからんID:x7FD3lGo のような誰にも支持されんリセット不要を必死にホザいてるアホって、
軽石本人か?もしくは軽石並みってこったな。もう消えろ。邪魔だから。
大体FPGAのメーカリセットをユーザ回路の中でやってどうするよ。アホかホンマに。 そこからして軽石同レベル
論点がだんだんずれてくるのはじじいで耄碌してるから? 新しい技術を理解できずに過去の栄光だけで生きてる 勘違い管理職に多いタイプだよな。 誰にも支持されてないのはお前だし、 軽石と同レベルのこだわり方してるのもお前だろうが。 狂人は出てくるなよ。
>>547 まぁ、アマチュア相手にそんな確認求めても仕方ないよ。プロの仕事したことのない奴に何を言ってもかみ合わん。
無駄なだけだ。お遊びやってんじゃないんだから。
>外部リセット不要と一言書いておけば、それで伝わることだしね。
話にならんね。こいつこんな仕事の仕方でよく金もらってるな。ほとんど詐欺だな。内仕と外仕の違いも分からんDQNとみた。
まぁこいつの仕事ぶりは推して知るべし。トラブル続きで周りが尻拭いに明け暮れてるんだろうな。
そもそもエンジニア云々じゃなく、社会生活できんやつだわ。ゴミ拾いでもやるのが分相応。
相手にするな。Qだから。
>>552 >新しい技術を理解できずに過去の栄光だけで生きてる
リセットが新しい技術とは片腹痛いわ。
>勘違い管理職に多いタイプだよな
大丈夫お前のような低レベルのアホは管理職には就けんから安心しとけ。
多分同じようなことを上司に言われてるんだろな。大したスキルもなければ、注意力にも欠く、
コミュニケーション能力も無ければ、プライドだけは山ほど高い。手に取るように分かるよ。
そしてつくづく同情するねお前の上司と、給料支払う羽目になって簡単に首切れないお前の会社。
ほんとに可愛そうだね。皆のためにさっさとやめろよ。組織の癌なんだよお前。
なんか思うんだけど、絡んでる方も絡まれてる方も 同じ人間っぽいような気がしてならん。 しかもどっちも軽石の自演くさい。
同じ穴の狢 団栗の背比べ 類は友を呼ぶ 能ある鷹は爪を隠す
自演荒らしっぽいな
男優の鷹さんって深爪になるほど爪詰めてるらしいよ
560 :
774ワット発電中さん :2005/11/18(金) 23:30:56 ID:GnYqV4ca
トラ技の付録(予定)MAX-IIについてのスレはありますか
このスレも 【ARETERA】
馬鹿同士の喧嘩は詰まらんな
あぼーん
あぼーん
あぼーん
軽もさすがに息切れか。
ふー、やっとリセットに関する議論を全部読んだ。終わった話なのかもしれないけど、 今のFPGAは外部リセットいらないとおもいますよ。 FPGAメーカーの評価ボードとかでもコンフィギュレーションを開始するための 外部リセットはあっても、コンフィギュレーション直後にさらにリセットの ための外部リセットなんて見たことない。 何が何でも外部リセットが必要というのは、ゲートICを並べてロジック回路を 組んでいたころの話では?
FPGAがリセットを出すと思ってました。
System Cも仲間に入れとくれ。
VHDLで記述した回路を回路図の形で出力する方法を知っている人がいたら教えてください。 自分が書いたVHDLで、意図通りの回路が生成されているか確認するのが目的です。
自動出力される回路じゃだめ?
572 :
570 :2005/11/20(日) 18:44:20 ID:bT+BYqQl
>>571 自動出力とはどういうものでしょうか?
私が無知なだけだったらすみません。
合成ツールが吐き出したネットリストを嫁 というのはあんまりか。 しんぷりふぁいとかの合成ツールなら合成後の回路図普通に見れるよね。 ACTELのLiberoでも見れたような気がする いまISE7.1 WebPack立ち上げてみたんだけど、Synthesize>View Technology Schematicてのが それっぽいから試してみては? そして報告してクレwww
>>570 自分が書いたHDLなら脳内にあるだろ。
その脳内どおりに合成がなってることを確認したいんだろ。でふぉでSynplify使ってたけど
>>573 の言うようにXSTでもちゃんとあるじゃん。ISEはSynplifyのエラーメッセージを解釈してくれないからXSTに乗り換えよかな。
>>572 は未だISEのいろんなとこクリックしつくしてないだろ?まぁあっちこっちクリックし倒すことだな。
いいかげんうさくなってくるが、我慢していじってると機能が見えてくる。
576 :
570 :2005/11/20(日) 22:07:54 ID:bT+BYqQl
>>573-575 Quartus2とLiberoとispLeverの開発環境は構築出来ているので、
(全部フリーライセンスですが)もう少しいろいろとクリックして探して見ます。
Latticeのデバイスを使っていて、一応回路は動いてるので大丈夫だと思うのですが、
VHDLで設計をするのが初めてなので、本当に意図したとおりの回路が出来ているのか不安なんです。
回路規模も小さいし、見られるならどんな回路が生成されているのか見てみたいとおもいまして・・・
>>576 いやいや、
>>573 の言うことちゃんと読んだ?
>ISE7.1 WebPack立ち上げてみたんだけど、Synthesize>View Technology Schematicてのが
俺は製品版で同項目があるのを確かめたけど
>>573 がいうにはWebPackにもあるって書いてるじゃん。
うむ さすがに自宅には製品版いれてないのでなw くおたすではみてないけど、多分ある予感 らてぃすはつかったことないので知らない で、回路を確認したいという主張はもうみんな理解してるので再度主張する必要はないw がんばってみんなのレスを100回ほど読んでみるべし。 環境かいてなかったからISEに賭けたんだけど外れたなぁw
ここでソース晒してみればみんなが回路図にしてくれる
>>576 Quartus II 5.1でもRTL Viewerがあるけどこれじゃあかんの?
>>576 合成後のネットを図面でみたいのか?
無意味だからやめれ。
綺麗にゲートレベルの図面を出力するツールなんて
この世にはないよ。
どうしてもというならDebussyを何百万出してくれる
がっこの先生か会社の上司かわからんがだしてもらいなさい。
同期設計してる限りは波形とにらめっこしてるうちに、そんなの無意味だとわかってくると思われ。
図面を出力するツールなんて他人の書いた過去の非同期設計を検証する
地獄をみてからにしなさい。
まあ、意図したとおりの回路ができないこともあって確認することが無意味なことを 悟ることは決して無意味ではないであろう、といいほうに考えてみる。 Cで書いたコードを毎回逆汗するようなもんだな
考え付く限りのテストベクタを書いてチェックって方向の発想しないとダメっぽ
>>584 検証済みの回路を引っ張ってくるのが正解。
間違った状態に遷移しても正常な状態に速やかに戻れるのが理想
>>586 間違った状態(書き込み)しても開き直るのが現実なのね?w
正常な状態 → 遷移 → 間違った状態 → 遷移 → 正常な状態 ↑いまこのへん
ひとつ曲がり角 ひとつ間違えて 迷い道 く〜ねく〜ね〜
2chのスレの状態遷移図っていつもこんな感じなんだよね 1)質問 ↓ 2)回答 ↓ 3)叩く香具師が出てくる ↓ 4)雑談が始まる→(2)へ ↓ 5)まともな回答が出る ↓ 6)みんな黙る
6)間違った回答を正当化しようと粘着する奴がでてくる ↓ 7)疲れるまで言い争い
>>591 エロイ奴は7)疲れるまで言い争いの後に出てきて仕切る。
593 :
774ワット発電中さん :2005/11/25(金) 10:21:34 ID:MZXYiZN2
>図面を出力するツールなんて他人の書いた過去の非同期設計を検証する >地獄をみてからにしなさい。 何この漏れが退職した理由 オマヘもしかして漏れの分身?
594 :
774ワット発電中さん :2005/11/25(金) 12:24:20 ID:VUApj2n/
軽石さん、いい加減にしてよう(´・ω・`) 生協の白石さんみたいに、笑える語録集ができるがな。
お前の回路を検証すると言われて不眠症になりました。
>>596 気の利いたやつなら
そこで腱鞘炎になる。
598 :
774ワット発電中さん :2005/11/26(土) 13:08:39 ID:lZtl69Wz
質問させてください。 (VHDL勉強中の初心者です) プロセス文のセンシティビティリストについてですが、 このセンシティビティリストを書いても書かなくても論理合成ツール(今使っているのはXST)は、 警告は出しますが、同じ回路を出力します。 センシティビティリストは何のためにあるのですか? もし正しく書かなければ出力回路が異なる例があれば、その例を教えてください。お願いします。 (実験例) EX1: process(A) if (A = '1') then B <= C; end if; end process EX2 ; EX2: process() if (A = '1') then B <= C; end if; end process EX2; 上記、EX1とEX2は実際に同じ回路を出力します。
599 :
774ワット発電中さん :2005/11/26(土) 13:12:57 ID:lZtl69Wz
訂正、 実験例の一つ目 誤) end process EX2; 正) end process EX1; すみません。
センシビティリストはその信号線に変化があったときにそのプロセスが動くという解釈で書く。 シミュレーションはそういう解釈でいいが実際の回路ではポーリングしてるわけではないので、 思ったとおりに動作しない回路が出来上がるかもしれん。 process内部でセンシビティリストに列挙した信号線をいじるような場合は注意が必要だ。 つーかそういう回路は書かないほうがいいね。
>>582 うちの会社ではDebussyだなぁ・・・必須。あとはspyglassも・・・
うちはDebussyで出来ることはDebussyでしか出来ねぇ(他のソフト無い)から、 ちょっとした作業でも重くてかなわん。ライセンスも少ねえし。 大は小を兼ねるにも程があるっつーの。
うちはChopinで出来ることはChopinでしか出来ねぇ(他のソフト無い)から、 ちょっとした作業でも重くてかなわん。ライセンスも少ねえし。 大は小を兼ねるにも程があるっつーの。
604 :
774ワット発電中さん :2005/11/27(日) 04:20:41 ID:oVa/9WcN
うちの会社ではBachだなぁ・・・必須。あとはkgbbottleも・・・
>>598 まあ、最近の合成ツールはかかなくても合成できる。
これは想像での話だけど、ユーザーの記述したセンシティビティリストは信用してないと思う。
コンパイラによってはセンシティビティリストの過不足を指摘するぐらいだからね。
まあ、合成されると想像していた回路の解釈とはちがう解釈をコンパイラがして、それを
センシティビティリストの過不足エラーから推測することはできたりすることがあるようなないような。
(そんなケースは未経験だけど)
ちなみにシミュレーション上では違いが出る。ModelSimではセンシティビティリストに書いてない信号は
変化しても無視される。つまり、EX2ではB<=Cが未来永劫実行されない。
コンパイラ、と書くとあれかな。コンパイラ→合成ツール、と読んでね。 細かくてすまんが。
607 :
774ワット発電中さん :2005/11/28(月) 00:58:52 ID:3DkgujRu
質問させてください。Verilog勉強中の初心者です。 XilinxのISEの使い方にも少し慣れてきて、 なんとかエラーも少なくなってきて、考えたように動くようになってきて、 HDLが面白くなってきたところです。 数をカウントするとき、count <= count + 1; と記述しますが、 Cで言う count++; のような書き方は Verilogではできないでしょうか? count+=2; count*=2l; とかも書きたいのですが、これもだめなんでしょうか? また、x <= count % 10; (countを10で割ったときの余り)とかが、 使えるかどうかを調べるには、ISEのどこを見ればよいのでしょうか? 関数というかコマンドリストみたいなものが、どこにあるのか.... 以上、宜しくお願いします。
>>607 Verilogのランゲージリファレンスはなかったかな?
たぶんヘルプはザイリンクスのサイト上かも。
一番いいのはVerilogを扱っているサイトでLanguage Referenceを探す。
609 :
774ワット発電中さん :2005/11/28(月) 02:11:50 ID:3DkgujRu
「ランゲージリファレンス」ですね。この言葉がわかりませんでした。 調べてみます。ありがとうございました。
ランゲージリファレンスなんか読んでもわからんだろ。HDLに限らずコンピュータ言語の規格書なんて独特な記法でそれに慣れるのに一苦労だ。
よっぽどのマニアか、シミュレータとかツールでも作る香具師でないと必要ないよ。
一般ユーザならそんなの読むよりVerilogの解説本読めば
>>607 が必要としてる情報はほとんど載ってる。
611 :
774ワット発電中さん :2005/11/28(月) 02:52:58 ID:3DkgujRu
607です。ありがとうございましす。 解説本でしたら、何冊も持っています。(買っただけ?) が、ソースの例は数多く見られますが、a++; などの表記については、 どの本にも書かれていませんでした。 Cでは、小型でちょっと厚めの「C言語辞典」というのを重宝しているんですが 「Verilog言語辞典」みたいなのがあればいいなと 思っています。
書かれてないというのはそういう書式は許さないんだよ
普段C++その他「高級」言語を使ってると うっかり書いてしまうことはある。 別に無くても困らないけどね。
>>607 きみはcounter()を使いなさい。
>>610 独特の記法といわれてるけど、BNF覚えるのは簡単だと思うけどなあ。
K&RのThe C Language(2nd edition)は(後半)規格書だけど、まともなCプログラマで持ってないやつは、いない本。
74ロジックにしろ、トランジスタ・ダイオードにしろ規格書は必要だぜ。
そうか。最近は無手勝流でやってるやつが多いからまともにプロジェクト進行しないのかw
>>616 K&Rを規格書として持ち出すとはあきれかえるね。あれは立派な解説本だ。著者の個人名が記載されてる規格書か?恐れ入った。
しかも特性を要求仕様とマッチするかどうか確認しながら選定せにゃならん部品のスペックを対比させて持ち出してくるとは開いた口がふさがらんね。
規格を読まないから進行しないんじゃなくてお前のような規格本と解説本の区別もつかんマヌケばっか
揃えてるからプロジェクトが収束せんのだろ?
言語の場合は規格にマッチしなければ規格チェッカでもあるコンパイラもしくはlintがWarningなりErrorなりを表示してくれる。
それ以上にHDLは合成ツールが規格以上を要求してくる、規格に合ってるかどうかはそこでチェックされるから解説本以上
のものは通常はなくても特に困らんのだ。さらに解説本なら"Cの書式に似てはいるが++や--は許しません"と注意書きしてるが
規格書には他のプログラミング言語を引き合いに出した注意書きなどしてないはずだ。
まぁ、俺自身Verilogの規格書もSystemVerilogの規格書も持ってはいるが、
>>607 の現状では解説本だけで十分なはずだ。
ちゃんと記載されてるのに、読んでない。
>>617 それとだK&RのSecond Editionは原著も邦訳もAppendixは規格書じゃない。
マニュアルだ。マニュアルが何を意味するかは、
"規格書ではなく、ANSIに対するひとつの解釈です"
とAppendixの冒頭に明確に記載されてる。それすら知らずに抜けぬけとよくも引き合いに出せたなお前。
何物か確認もせず間違いを正しいと思い込んでるような奴がプロジェクトメンバじゃお先真っ暗だな。
人に規格書を勧める前に解説本をしっかり読めや。
リセットじじい降臨? それとも軽石か?
つーかエンジニアって俺が規格だって顔してるヤシ多し
>>617 必死すぎるなw
C言語の成り立ち知ってるなら、K&Rが規格書だった時代だって知ってるはずだよなあ。
2ndEditionの話が不適切だったのは認めようw。
コミュニケーション能力に難がありすぎるのは団塊の世代の特徴か?
>>621 >必死すぎるなw
>コミュニケーション能力に難がありすぎるのは団塊の世代の特徴か?
K&Rの2'nd edition の原著が出版されたのは88年だ。それから17年、その間ずーっとこの本をもって言語スペックと思い込んでて、
それを明確に否定されればわけのわからん戯言でもほざいて、まったく責任の無い俺にうっぷんをぶつけないと人格破綻するってか?
お前の人生そんなもん。
>C言語の成り立ち知ってるなら、K&Rが規格書だった時代だって知ってるはずだよなあ。
ひとから聞きかじった生半可な知識でC言語の成り立ちを語るなどと片腹痛いわ!
あと、
読む奴がどういう気持ちで読んでいるかはこの際関係ない。K&R本にしろStraustrap本にしろは自ら考案した言語を
世に紹介するための解説本であって、言語仕様書ではない
でもよかったじゃねえか?馬鹿にされてもひとつはっきり覚えられて。聞くは一時の恥。挙句にお前が誰かも分からんしな。
感謝しな。
>>607 ちなみにな
[3:0] count のような 4 ビット長のレジスタ・配線があったら
count + 1 はキャリー込みで5ビットになることを
覚えとくとよい。
加算をするのでなく、加算器を生成するのだよ。
count = count + 1; で、左右でビット数が違うってwarningが出るんだけど、 警告されないようないちばんスマートな書き方ってどうすればいいの?
>>607 あと、
> また、x <= count % 10; (countを10で割ったときの余り)とかが、
> 使えるかどうかを
低レイテンシで商・剰余をひねりだせる機構を組み込んだFPGAなんてあるのか?
高速なマイクロプロセッサでも、除算レイテンシは大きいでしょ?
(加減乗算は非同期回路でも組めるけど除算は困難)
除算を行わない代替手段を用いよう。
ちなみに、count % 8 とかだと、count & 7 とほぼ同義なので、
なるべく 10 などのキリの悪い定数を用いず、 2^n が使えるなら
それを用いるべき。
>>624 ヲーニング回避なら
(carry, count) <= count + 1;
とか書くといいかもしれんが、
今度は「参照されないレジスタ carry が消え失せます」類の
ヲーニングが出る悪寒。
困難っていうより無理だわな。 商だけならニュートン法で5〜6クロックでほぼ実用精度は出せると思う。 実質除算回路は使わないから。 ただ、この方法で剰余までやろうとすると、商を使って再び乗算して引き算して・・・になるからさらに要クロック
Boothみたいにいいアルゴリズムだれか発明してよ
628 :
774ワット発電中さん :2005/11/29(火) 01:20:09 ID:8lDJPwCB
>>600 さん。
>>605 さん。
>>598 です。ご回答ありがとうございます。
センシティビティリストはネットリストには影響しないということですね。
このような事を書いている参考書がいまだ見つけられないのが気になりますが、
いろいろ考えてみて、多分正しいのではないかと思います。
どうもありがとうございました。
>>622 ここに、社会人として恥ずかしい奴が一人いる!
おまえじゃああ。
匿名だからと言って、うそまきちらかすのと他人の罵倒はやめような。
諭すならもっと大人な書き込みしな。
621が全てを知ってて煽っている可能性もありうるんだけどねw
630 :
774ワット発電中さん :2005/11/29(火) 11:56:29 ID:3VrDWOI5
>>629 また、ごみか?うざいだけなんだよ。この雑魚
罵倒されなくなかったらもうちょっとまともなこと書き込めボケ
魂が引き合うのかな なんにせよ仲むつまじいのはよきことだ
こら、おまいら30%ゲート数減らせ。出来なきゃ姉歯にたのむ。
黙って頼め。
あんた設計検証済んだ自信あんの。
ターゲットデバイスのマージンを信じろww
タイミングレポート、偽造しろw
最近HDLの話題なくて 喧嘩ばっかりで欝
いちおマジレスもしてるぞ。
なにか効率の良いテストベンチの作成方法はないものかねぇ。 systemCがんばって覚えてみようかな。ツール自体はフリーでDLできるみたいだし。
姉歯 藤田
>>638 ↓ ↓ ↓
・∀・)・∀・)つ (;´Д`)
ケコーン ケコーン
SystemCからRTL呼び出すのか? どういうテストベンチを考えてるか知らんがVerilogやVHDLでSimもかなり書けるだろ。 RTL書いてるのとはふんいきは違うけど。 フィッタに付属のテストベンチャーあたり使って文句言ってるんとちゃうか?
645 :
774ワット発電中さん :2005/12/01(木) 08:13:48 ID:eAbBG69F
>>624 "1"もcountと同じbit数に指定するのはどう?
8bitならば、8'h01 のように。
回路はHDLで作ったけどテストベンチもHDLで作ることを知らんのじゃないのか? HDL設計でエディタ使った作業としては、 回路作成モードとテストベンチ作成モードの2つあるんだけど。 確かに頭を切り替える必要はあるね。
いや、普段はVHDLなりVerilogなりでテストベンチごりごり書いてるんですけどね。 SystemCは検証用につかうのがいいって小耳に挟んだので、書きやすいのかなーとか妄想してみた。
テストベンチそのものはC++ベースのSystemCで書いてもVerilogで書いてもあんまり大差ないんじゃないかな? せいぜいテストデータ食わせるだけでしょ?
オブジェクト指向(OO)っていうのは実在する事象を抽象的なプログラム上で シミュレートするのに意味ある設計手法であって、 アルゴリズムという抽象世界を回路という実体上に構築するHDL設計に有益か どうかあやしい。 OOをプログラムに持ち込んだところでハードウェア効率としてはデメリットが多いわけだし。
誤爆?
時代はSystemVerilogだ! VHDLもVerilog HDLも無くなるんだ と信じたい。 読みにくいVHDLは滅びてくれないかなぁ… とりあえず一個に収束してくれればさらにいいのになぁ…
VHDL = Pascal Verilog = Perl っていう感じ
>>655 VHDL = Ada
verilog = c
出自はこんなもんだが?
VHDLのほうが読みやすいと思ってしまうのは何故だろう いっぱい書く方が安心するwww
Verilog が C っぽくなく Perl っぽいのは
>>655 に胴衣
…ヲーニングレベルを上げることができれば Verilog でもイケると思われ。
でもいけるって? 現状Verilogが圧倒的に多いし、その後のSystemVerilogまでスムーズに移行できる VHDLみたいなアホ言語で安心する奴はオツムのわるいバカエンジニア
同意してくれる人がいて良かったです。 個人的にはどっちでも大して変わらないと思います。 どっちかがどっちかを攻撃しても目糞鼻糞ですから。
両方使っている身としては、一長一短あってどっちが良いとかって ものじゃ無いような気がするが・・・ 個人的にはVerilogの方が好きだけどね。 まあ確かにどっちかに収束して欲しいとは思う。
入門用には訳わからんミスを起こしにくい分VHDLでしょ。 実用性はVerilogの方が格段に上と思うけど。
>>663 教育用にpascalだけど実用はcと言っていた90年代のプログラマみたいな感じ。
80年代だとCを実用に使うにはまだ敷居が高かったな コンパイラのバグ回避の手間がかかったから
667 :
774ワット発電中さん :2005/12/07(水) 20:03:02 ID:E0m3pgny
今、Xilinx を勉強しているのですが、ISEおしえてください。 Verilog言語の取り扱い説明に、 「XSTでは、Verilogメタコメントがサポートされています」と 書いてあるのですが、この「メタ」ってどのように理解すれば 良いのでしょうか? ハードウェアでも「メタステーブル」という言葉 もありますし。以前から全くわからなかったです。 宜しくお願いします。
メタステーブルが準安定だから、 準注釈?
「一段上の見地から」って感じがするが
670 :
774ワット発電中さん :2005/12/08(木) 02:05:10 ID:lEKrjuYh
メタメタのコメントでもコンパイラは文句言いませんってことじゃあるまいか?
672 :
774ワット発電中さん :2005/12/08(木) 13:33:52 ID:j3O3ku9l
667です。
>>668 -
>>671 ありがとうございました。
「背後の、後ろの、より包括的な、超えた」という意味らしいですね。
>>671 ご紹介のページには、オブジェクト指向を例にメタの説明がありました。
が、この言葉を使いこなせるほどの理解は得ていません。
メタコメントってどんなコメントなのか.....
メタステーブルって....うーん、わからん。
どっちの言語も中途半端にしか使えない俺様が来ましたよ
つまりHiでもLowでも無い人間メタステーブルだと?
675 :
774ワット発電中さん :2005/12/08(木) 16:26:29 ID:j3O3ku9l
みなさん、先ほどはありがとうこざいました。 すみませんが、またひとつ、教えてください。 Xilinx ISE7.1.04で、次のようなソースを書いたのですが、 「32行目で、知ってるFFかラッチと Qがマッチしない」というエラーが出てしまいます。 何がマッチしていないのかわからないのです。 Qは、ちゃんと4bitでreg宣言してあるし、0という表記は何bitでも共通だと 思いますし、何がいけないといっているのか、さっぱりわかりません。 0の代わりに4'b0や4'h0なども試しましたが、同じメッセージが出てしまいます。 ケツの青い若者に どうぞ宜しくご指導願います。 module main(reset, clock, Q); input reset; input clock; output [3:0] Q; wire reset; wire clock; reg [3:0] Q; always @( negedge reset or posedge clock ) begin if( ( reset == 0 ) || ( Q == 9 ) ) Q <= 0; else Q <= Q + 1; end end endmodule ERROR:Xst:899 - "test.v" line 32: The logic for <Q> does not match a known FF or Latch template. ERROR: XST failed
まず end の数多くね
つーかQ=9でリセットってどういう意味よ? これじゃエラーがとれてもまともな回路にはならんだろ
678 :
774ワット発電中さん :2005/12/08(木) 17:04:16 ID:j3O3ku9l
すみません。先ほどのものは、コピペのミスで、 endの数が多かったです。次のように修正して always @( negedge reset or posedge clock ) begin if( ( reset == 0 ) || ( Q == 9 ) ) Q <= 0; else Q <= Q + 1; end XSTかけたのですが、同じ結果になりました。 そこで、次のようにif()の条件を分けたら、通りました。 always @( negedge reset or posedge clock ) begin if ( reset== 0 )Q <= 0; else if( Q == 9 )Q <= 0; else Q <= Q + 1; end ifに複数条件は使ってはいけないのでしょうか? Verilogは、Cベースとはいうものの、勝手がちがうのかなぁ。
>>675 end の数はともかく、リセット条件は別個に書いた方がいいんでね?
FPGAのF/Fにおいてはリセットは特別扱いでしょ。
…ほとんどのFPGAアーキテクチャではF/Fリセットは非同期だよね?
680 :
774ワット発電中さん :2005/12/08(木) 17:08:18 ID:j3O3ku9l
>>677 現在が9だったら、次は0にするということで、
10進カウンタのつもりなんですが。
....8→9→0→1→2→3→4→5→6→7→8→9→0→1→2→....という具合です。
682 :
774ワット発電中さん :2005/12/08(木) 17:27:46 ID:j3O3ku9l
>>681 678で合っているというのは、678の
エラーの出る
if( ( reset == 0 ) || ( Q == 9 ) ) のほうでしょうか?
それともエラーの出ない
if ( reset== 0 )Q <= 0;
else if( Q == 9 )Q <= 0;
の事でしょうか? 意図としては、非同期リセット、同期カウントアップの
つもりです。どちら場合も、Qの値を0にするという意味で同じなので、
2つの条件を || でくくっても良いのではないかと思っているんですが、どうでしょう。
何か大きな勘違いをしているような気もするんですが。
だから if( ( reset == 0 ) || ( Q == 9 ) )が間違いなんだって そんな回路ありえないじゃん
684 :
774ワット発電中さん :2005/12/08(木) 17:49:33 ID:j3O3ku9l
>>683 ありがとうございます。 ありえない....ですか?
always @( negedge reset or posedge clock ) としてあるので
このalwaysの中に入ってくる条件は、
resetが↓に変化したとき または clockが↑に変化したとき の2つなので、
resetはclockに関係なくいつでもalwaysの中に入ってこれる。
そしてresetはif()の条件の1つなので、Q <= 0; が実行される。
またclockも同じだと思うのですが、この理解は間違いでしょうか?
うん、間違ってるよ if( ( reset == 0 ) || ( Q == 9 ) )て書いたら resetとQがデコードされた信号が作られるじゃん だからありえない
686 :
774ワット発電中さん :2005/12/08(木) 19:08:55 ID:j3O3ku9l
>>685 ありがとうございます。 やっぱりありえないですか
>if( ( reset == 0 ) || ( Q == 9 ) )て書いたら
>resetとQがデコードされた信号が作られるじゃん
それなんですが、
( reset == 0 ) で1つの条件で、真か偽かの論理
( Q == 9 ) で1つの条件で、真か偽かの論理
であり、||はこの2つの論理orだと思うので、
直接Qとresetの中身同士をorする(デコードする)のとは
違うと思うんですが どうでしょうか?
>>j3O3ku9l 「ノイマン型」の呪いから解き放たれるまで修行しなさい。
>>684 ハード的なものを想像できてないから、そうなっちゃうんだろうけどね
実際に合成できなくはないけど、推奨されない回路だね。
それを実際の論理回路で作ると、
FFの非同期reset入力に、" reset == 0 ) || ( Q == 9 ) "が入る。
そうすると、例えば 7→8に変化する時、君の意図しないリセットが
掛かる可能性がある。なぜかというと、
7は"0111"、8は"1000"なんだけど、Q(1)〜Q(3)がすばやく変化して
先にQ(3:1)が"100"になると、一瞬"1001"になってこれは9、リセットがかかる。
物理的な遅延時間が引き起こす現象だね。
これがいやなのでなるべく非同期設計は止め、同期設計を行うのだ。
>> ID:b2vmk+3X ありえないって部分を説明してくれ.。 always @( negedge reset or posedge clock ) begin こういうふうにセンシビティリストを書いた場合、リスト信号に同期した条件処理が一番外側から 見えてないと合成できない。 >if( ( reset == 0 ) || ( Q == 9 ) ) と書くとQ==9がclockに同期して動くのか、resetに同期して動くのかわからないので合成できない と思ってるんだけど?違うのか?
>>688 >実際に合成できなくはないけど、推奨されない回路だね。
>それを実際の論理回路で作ると、
いや俺の知ってる限り合成できるようなツールは見たことない。
resetに対する回路合成不能で止まるはずだ。
>そうすると、例えば 7→8に変化する時、君の意図しないリセットが
>掛かる可能性がある。なぜかというと、
>
>7は"0111"、8は"1000"なんだけど、Q(1)〜Q(3)がすばやく変化して
>先にQ(3:1)が"100"になると、一瞬"1001"になってこれは9、リセットがかかる。
だからalways @( negedge reset or posedge clock )
と書いた場合、always内部での同期回路では上で>688が書いたような心配事は杞憂だろ?
ちゃんとツールが止めてくれる。
>>678 > always @( negedge reset or posedge clock ) begin
> if ( reset== 0 )Q <= 0;
> else if( Q == 9 )Q <= 0;
> else Q <= Q + 1;
> end
こうでも通ったかもしれないけど、センシビティリストに対応させた書き方
としては
always @( negedge reset or posedge clock ) begin
if ( reset== 0 )Q <= 0; //非同期resetに同期
else begin //clockに同期
if( Q == 9 )Q <= 0;
else Q <= Q + 1;
end
end
と書くべきだと思う。
>「ノイマン型」の呪いから解き放たれるまで修行しなさい。 プ!こいつノイマン型の意味わかってるのか? 少なくとも ID:j3O3ku9l の言う話はノイマン型とは一切関係ない
>「ノイマン型」の呪いから解き放たれるまで修行しなさい。 わかる人にはわかるうまい表現だと思った。 ノイマン型の定義は 「プログラムをデータとして記憶装置に格納し、 これを順番に読み込んで実行するコンピュータ。」 であり順番に処理するのが基本。 パーフォーマンスをあげるために割込を使ったタイムシェアリングや グリッドコンピューティングなどの工夫はされているが 処理は順番におこなうというのが基本概念。 一方、Verilog・VHDLが相手にする回路は基本的に並列処理なので シーケンシャル処理を確実におこなうための同期回路などが不可欠に なってくる。 要するに、記述はノイマン型コンピュータのプログラムっぽくても 相手にしてるのがロジック回路なんだからそれを忘れちゃだめだよ。 ってことでは?
>>693 仮にわかってる人でも、日本語が読める人でないと、うまい表現とは認識できません。
往々にして見かけます。
ストアドプログラムってのがノイマン型 そもそもノイマン型とは全く無関係な順序回路の記述をしてるのに ノイマン型を持ってくるほうがどうかしてる。 それをたとえに出すこと自体わけがわかってないことを露呈してる。 自らのアホをさらしたにすぎん
>>693 もっというなら
プログラム記述から解き放たれるまでHDLを修行しなさい。
っていうのが正しい表現だろ。
ノイマンとは一切関係ないし、全くもって不適切な表現だ。
>>696 ベクトルコンピュータのプログラム記述を知らないんですね?
ノンマン型
699 :
774ワット発電中さん :2005/12/10(土) 12:43:41 ID:htiFVHn0
>>697 言うに事欠いてベクトルコンピュータか?あほ
ベクトル型にしかあてはまらないことならはじめからベクトル型と言え。
そうすりゃさらに徹底的に叩いてやったんだがな。
ベクトル型のいったいに何が関係するか言ってみろ。
700 :
774ワット発電中さん :2005/12/10(土) 13:11:36 ID:8QNbC2tN
/⌒ヽ / ´_ゝ`)すいません、ちょっと通りますよ・・・ | / | /| | // | | U .U
あんまり関係ないけど、 if (Q >= 9) Q <= 0; としてくれ。
>>699 は軽石じゃなくてリセットじじいでしょ。
ageてるし。無駄にえらそうだし。
704 :
774ワット発電中さん :2005/12/11(日) 19:24:53 ID:ofsbGLFg
>あんまり関係ないけど、 >if (Q >= 9) Q <= 0; >としてくれ。 if (Q[3] & Q[0]) Q <= 0; とすれば使用ゲート数がケチれると思ったが4入力LUTだからカンケーねえやと気がついた23歳最後の日 P.S. 明日がバースデーなのだ
705 :
774ワット発電中さん :2005/12/11(日) 22:10:19 ID:5oHbkPvh
その歳最後の日の次の日は、普通誕生日だろ あえて言わなくてもいい
法律上は誕生日の前の日に年をとるから
>>704 はすでに24歳です。
いや、今日が命日になれば誕生日どころじゃないぞ。
708 :
774ワット発電中さん :2005/12/12(月) 10:35:17 ID:+Xsn+ubB
>707 盆と正月が一緒に来るようなもんすかね?
誕生日と葬式がいっしょ
12月は誕生日で酒が飲めるそ 飲める飲める飲めるぞ 酒が飲めるぞ
誰か漏れの部屋の掃除手伝ってくれ
>696 プログラムは狭義では「コンピュータを動作させる命令を組み合わせた文書」だが、 もともとは「行事などの計画、予定」つまり プログラム=HDL なので > プログラム記述から解き放たれるまでHDLを修行しなさい。 それこそ矛盾してて意味不明。 一方、「ストアドプログラム」の基本は「処理を順番におこなう」ということ。 HDLの記述対象である「回路」は並列処理が基本だから それに対する順序処理の象徴としてノイマン型を持ち出すのはうまい表現だ。 ブロッキング代入とノンブロッキング代入の使い分けがちゃんと出来る人ならば ノイマン型という比喩で思わずニヤリとしたのではないかと思った。
>>712 >もともとは「行事などの計画、予定」つまり プログラム=HDL なので
はぁ?
HDLはプログラムなんかじゃない。回路だ。
プログラムは手順だ。
それすらわかってない奴が糞レスつけるな。
>一方、「ストアドプログラム」の基本は「処理を順番におこなう」ということ。
がきでもわかる英語がわからんかね?
ストアドプログラムは言葉どおり、蓄積されたプログラム。もう少し詳しく言っても
"動作手順であるプログラムがメモリに蓄積されていること"だ。
>それに対する順序処理の象徴としてノイマン型を持ち出すのはうまい表現だ。
順序処理の象徴がノイマン型だと?順序回路がノイマン型か?
もっというと、非ノイマン型コンピュータが順序処理をするならそれがノイマン型か?
非ノイマン型==ノイマン型か?
あほが。もう一回勉強しなおして来い。ノイマン/非ノイマンはコンピュータの構造の話だ。
>ブロッキング代入とノンブロッキング代入の使い分けがちゃんと出来る人ならば
ブロッキング、ノンブロッキングとノイマンは何の関係もない。
見てると並列処理==非ノイマン型と思ってるようだがそれは大きな間違いだ。
非ノイマン型は、 並列処理コンピュータも包含しているが、
ノイマン型構造はないでないコンピュータの総称だ。
しかも、お前とんでもない間違いしてるだろ?
>ノイマン型という比喩で思わずニヤリとしたのではないかと思った。
上の繰り返しになるが、
ノイマン/非ノイマンはコンピュータの話だ。回路記述の話に持ち出すような形容詞じゃない。
×ノイマン型構造はないでないコンピュータの総称だ。 ○ノイマン型構造でないコンピュータの総称だ。
>>712 =
>>687 ジサクジエン乙
>それに対する順序処理の象徴としてノイマン型を持ち出すのはうまい表現だ。
自画自賛乙。あ〜ハズカシ。穴があったらはいりたいよ〜
ノイマン型ってハーバード型とかと同じレイヤーの言葉だよな
いまどきのマルチコアCPUは並列処理をするノイマン型だし 並列処理すなわち非ノイマン型ってするのも問題ありだな
ノイマン型:EDSAC 非ノイマン型:ENIAC
>ノイマン型ってハーバード型とかと同じレイヤーの言葉だよな ノイマン型⊃ハーバード型 ハーバードを非ノイマンという香具師がいるがとんでもない間違い。 ハーバードアーキテクチャが多いDSPは当然乃胃萬型
のいまん型は定義できるが非のいまん型はのいまん型を定義して Complementary(のいまん型)としか定義できない。 組み合わせロジックだけで実現したコンピュータなら当然非ノイマンだけどな。
>712 :774ワット発電中さん :2005/12/13(火) 14:58:04 ID:dEEsepzT
>>696 >プログラムは狭義では「コンピュータを動作させる命令を組み合わせた文書」だが、
>もともとは「行事などの計画、予定」つまり プログラム=HDL なので
ダウト
正直、もうどうでもいい
j3O3ku9の話(FPGAの場合では非同期リセットにヒゲがのる回路)はノイマン型と関係ないと思う。 しかし、オレとしてはHDLで書くときの基本的な心構えとして、 そこに書いてあるのがノイマン型っぽく振舞うのを期待するような気分で いてはいけないというのには同意できる。
別件なんだけど、FPGAの人に文句あり たとえば always @( negedge reset or ...) ・負論理なら負論理っぽい信号名にしろよ、なんでみんなresetなんだよ、 ・そもそもレベルで決まる信号なのに何でedgeなんだよ、 それともFPGAはセット/リセットもedgeなのか!? シミュレーション結果がHDLとgateで変わっちゃうだろ。 たとえばif(reset == 0) Q <= 0; ・なんで非同期(そもそも本当に非同期?)なのに「<=」!? FPGAが便利なのは認めるが、 この記述でFPGAの開発環境を立ち上げることにOK出したヤツはアホだろ。 と思ってしまう。
↑こいつもアホ
>>724 んでは、アホじゃない記述を提示してもらえますか
>>720 アナログコンピューターはノイマン型でしょうかw
>>724 うちの会社では
always @( negedge nreset or posedge hogehoge)
みたいな記述してますよん。
あと、xxxedge表記されているのはedgeで見てると説明書にありますけど、違うのですか?
>>724 >なんでみんなresetなんだよ、
俺は「nreset」だよ。あなたが見たソースの設計者がそういう信号名つけただけなのでは?
>そもそもレベルで決まる信号なのに何でedgeなんだよ
非同期リセットだから、次のクロックエッジまで待ってられないの。
同期リセットを使う場合は、エッジは使わない。
>なんで非同期(そもそも本当に非同期?)なのに「<=」!?
「<=」の意味をわかってないとおもわれ
>>724 そんなに気に入らないならABELとかPALASMとかでも使え
「更に気に入らず文句を言う」 に100スライス
>>730 結構食うな…
信号名は、不論理ならxやらnやらつけて論理をわかるようにするのがいい
ってのはあるだろうね。ほかには入出力にi/o/bつけたりレジスタ(FF出力)
にrつけたり。ほかになにか知ってる人下記子よろ
>>724 いや、それは違うと思う
http://toolbox.xilinx.com/docsan/xilinx7j/books/docs/lib/lib.pdf のP440参照
always @ (posedge C or posedge CLR) begin
if (CLR)
Q <= 0;
else
Q <= D;
end
と、リセット付きDフリップフロップの推奨記述は財リンクスでは↑なわけで。
確認はしないけど他メーカもそんなものでしょう
simと差分がでない理由は、エッジでイベント発生と、if文の優先順位かな
リセット中にクロックのエッジがきてもif文でリセット状態が優先されるよね
<=については主張がよくわからないのでなんとも。とりあえず:=は使わないと
思うのだが・・・。
ライブラリガイド見てて思ったのだが、 always @ ( CLR or posedge C ) begin if (CLR) Q <= 0; else Q <= D; end と書いてもいいのかな?こっちのほうがより物理デバイスに近い記述だとは 思うけど。なぜ推奨記述じゃないのか知ってる人おせえて VHDLだと、 if ( CLR='1' ) then Q <= 0; elsif ( C'event and C='1') then Q <= D; end if; とか書くのが推奨になってるし、たしかにこう書くなぁ。
俺も知りたいな。 always @ ( CLR or posedge C ) begin と書くと、文法的にはCLRに変化があったときにHi->Lo,Lo->Hiで必ず2回チェックされるって意味だよな。 シミュレーションでは必ず遅くなるようには思う。
>>731 > 信号名は、不論理ならxやらnやらつけて論理をわかるようにするのがいい
Reset や Clock はともかく、他の信号は入出力ピンの部分で全部正論理に
変換してから書いてるから気にした事無い。
ABELやPALASMの頃は、いろいろ考えたなー。
非同期リセットが好きだぁ〜。
ごめんなさい。おともだちからなら
>>732 非同期でDをQにいれるのか・・・
多分ネットリストではSRにつなぐ構成になると思う。
つまり VHDL と Verilog は等価な回路を吐かないということですね
739 :
774ワット発電中さん :2005/12/16(金) 13:36:18 ID:Nc5aRPqw
>>732 のどこが等価なんだよ。
posedgeで入るときは値が1でnegedgeで入るときは0
それを抜くと値が1になったときも0になったときもalwaysくぐらなきゃならんから
CLRが1->0の変化でalways入ってif(CLR)で偽になってQ<=Dが実行されることになる。
VHDLのほうはCLRが1->0のときでもelsif(C'event and C='1')ではじかれてQ<=Dは実行されない。
つまり記述された動作が等価じゃない。
>>730 ザイ使いさんですね。
今までアルばかり使ってたもんで、
きのう初めてザイの営業さんと話をしたときに
「スライス?それって何の単位ですか?」
と聞き返してしまった。
741 :
724 (アホかも) :2005/12/17(土) 02:42:08 ID:kpCnHQtg
みんなの反響があってオレ様もうれしいよ、 ちなみにオレ様の片edgeの場合の 標準記述は↓コレ(本当は1つ1つもっと厳密にbeginとendを書くけど) always @(resetz or posedge clk) begin if (resetz == 1b'0) Q = 1'b0; else if (en == 1'b1) Q <= ???; end zを後付けで、他人のはn _ bなんかが付いてたら負論理との理解。 もしCMOS系(負論理のプロセス)で何も付いてない場合は差し戻し。 (ここのスレにも蝶! FPGA系の世界がすべてのヤツが住んでる気がすると思う。) 個人的にSET/RESETとかのレベルラッチは絶対領域の不可侵回路。 ちょっとでもそのレベルに触ったらラッチの出力が変化すると認識してる。 クロックとリセットのタイミングによっては不定を出すライブラリもあるけど、 リセット非同期優先で考えてる。 そんなカンジ。 みんな仕事は問題無いの?
どうして技術屋って言語能力が不自由な人が多いのか。 日本語も不自由なら、プログラム系言語も不自由だ。 俺ルールやら職場方言やらを振りかざして、 標準語を喋ってるつもりなんだろうか。
>>741 その標準記述とやらは、規格的に間違いだが。
そんなアホな記述が標準で罷り通ってるようなとこに
仕事出したくねえ。
>>741 D type Flip-Flop with asynchrounus reset を生成しているつもりなら、
その記述は普通に間違いですが何か?
ってか、724 は Verilog 知らんやろ。もっぺん入門書で勉強しなおせや。
本当に初心者レベルの間違いだ。
ここは奇妙なHDL講座のスレでつね
>>741 氏の記述をDesignCompilerに喰わしてみました。
下記の通り2点エラーが出て合成できませんですた。
ライブラリによっては合成できるかもしれないけど、
これが標準記述とおっしゃる方と一緒に仕事はちょっとできません。
sim専用の方なのでしょうか。
The event depends on both edge and nonedge expressions, which synthesis
does not support.
Register 'Q' is the target of both blocking and non-blocking assignments
in the same process.
742の釣り宣言が来るのを待ってるんだが、 一向に音沙汰がないところをみると、もしやマジだったのだろうか。
748 :
安井某 :2005/12/20(火) 00:55:21 ID:P7zS+tCZ
何だかVerilog HDLに不満の人多いのかな.そんならVHDLにすれば? 少なくても非同期resetとCLKの関係についてはずっと書きやすいけど!?
749 :
774ワット発電中さん :2005/12/20(火) 18:53:33 ID:VogncZom
負論理だから名前がどうとかそんなこたぁ問題じゃない。 第一、いまドキのコンパイラはちゃぁんとインバータ挟んでくれてますがな。 モジュールのインターフェースは全部正論理で扱ってだいじょぶだいじょぶ。 Switch Levelまで考えてたじぃさんの時代はともかく Gate Levelはおろか下手すると全部ツール任せのおぢちゃんの時代にそんな議論は無意味だ。 それとも数十年の歴史を誇る門外不出、秘伝のコンパイラとか自社開発してたりするの?
マスターリセット発生、解除の回路はどう作ればいいですか?
リセットの話題禁止
人生のリセットボタンがみつかりません(つД`)
つ【輪廻転生】
FPGAのRESET端子を何も操作しない場合、 電源ON時の内部FFって、確定しているんでしょうか? マイコンみたいに、count=0; みたいなことをしなくても良いのでしょうか? デバイスの機種依存とかで、OKの場合もNGの場合もあるとか..... ですか?
電源投入後の初期化シーケンスで、ROMからデータをロードして configurationが完了した時点で、すべてのFFの状態が決まる
757 :
774ワット発電中さん :2005/12/21(水) 18:18:45 ID:DoerUSJU
どなたか教えて下さい。 Q1.Verilogで、ユーザ定義文字(parameterやdefineで 定義した文字)を、複数のモジュールそれぞれに書くの ではなく、別のファイルに格納して共有したいのです が、可能ですか? Q2.Verilogで、taskを使って順序回路を記述し、「論理 合成」したいと思います。その場合、例えばD-FFはどの ように記述できますか? Q3.Verilogで、「論理合成」したい場合、taskはalways文の 中でしか呼び出せないと理解していますが、正しいでしょうか? またそうであるとすればtaskの出力は全てreg型にしなくていけ なくなりますが、taskではwire型の出力は使えないのでしょうか? Q4.Verilogで、組み合わせ回路をwire型で統一表現したいので、 function文を使うとします。function文は出力を1つしか持て ません。ところが実際の組み合わせ回路では、case文の分岐先で 複数の変数を同時に操作したい事が良くあります。各変数毎に function文を書けば良いのですが、それでは膨大なステップ数に なってしまいます。何か手はありますか?
学校の宿題みたいだな。
>>757 Q1.includeで呼び出せばいいのでは?
Q2.回答ではないですが、taskって、テストベンチの世界の物であって
回路記述では使わない物、と思っていますが・・・
Q4. assign {hoge,huga} = func(hage,hego); ってできなかったっけ?
>>760 頭いーーーーー。なるほど、それはいいですね。ちょっと感激しました。
757ではないですが。
特定bitの抽出ってマイコンでもやるけど、HDLのほうが圧倒的に楽ですよね。
reg [7:0] merry;
reg [2:0] christmas;
christmas <= merry [5:3];
Cで書くと、
unsigned char merry, christmas;
christmas = ( (merry
>>3 ) & 0x10);
....... 変わらんか。
762 :
774ワット発電中さん :2005/12/22(木) 13:01:31 ID:0PDvtMb4
VHDLのsignalで23bit定義しています。 計算後その内の下位10bitだけ出力ピンに渡しています。 これをコンパイルするとコンパイラが勝手にsignalを10bitにしてしまっているようで間違った計算結果になってしまいます。 これはどのように回避するのでしょうか? QuartusII使用です。
763 :
774ワット発電中さん :2005/12/22(木) 14:06:57 ID:1TypyvYm
>>762 間違っているのは藻前の回路だ。
上位13bitがそもそもまったく動かん回路になっとるはずだ。
764 :
774ワット発電中さん :2005/12/22(木) 14:44:59 ID:0PDvtMb4
>>763 なんかそんな感じです。
間違いがありました。
もう少し調べてみます。
> 間違った計算結果になってしまいます。 具体例を挙げてくれると、叩くネタになったり、躓いてる人への蜘蛛の糸になったり いろいろ膨らむと思うんだが・・・・
766 :
火魔人 :2005/12/24(土) 02:30:02 ID:WIMAA1cu
>739 自分はFPGAは使わないので、ASIC or ゲートアレイ用の記述でDesignCompilerを使う場合で言うと・・・ A1. parameterの定義はincludeで共有できるが、defineは二重定義になるので共有不可。 と言う前に、defineの仕様を考えれば共有する必要は無い事は解る筈。 A2. ラッチになるかF/Fになるかゲートになるかは、taskの呼び出し元の記述で決まる。 task文の中で足掻いても無駄。 A3. そもそも、普通initial文は論理合成には使わない。 それと、taskの出力をregやwireで定義する必要は無い。 A4. function文の使い方を間違っているので、そんな考えは捨てる。 functionを使う場合は、"異なる信号に対して同じ処理を行う場合"に使う。 "同じ信号に対して異なる処理を行う場合"は三項演算子("?")を使う。 ステートマシンを記述する場合にtaskを使っているけど、自分で意図して使った事は無いねー。 Visual Eliteでステートマシンを書くと、taskを使った記述になる。(そう指定してるから) functionは、条件分岐の必要な演算回路を書く時に使ってるけど、wireで定義する物には 使わない。 論理+F/Fの論理部分にfunctionを使うので、代入相手はregだけ。
>>766 A4 だか、組み合わせ回路でも条件が複雑で case を使いたいときは、
function で書いてもいいジャマイカ。
>>766 >ステートマシンを記述する場合にtaskを使っているけど
マジ?taskってシミュレーション用のサブルーチンじゃないの?
回路記述なんかで使えるの?もっぱらテストベンチだけで使ってた。
>>766 は
>>757 を火星に飛ばすためのネタと見た。
>>739 にアンカーつけてるし。
>functionを使う場合は、"異なる信号に対して同じ処理を行う場合"に使う。
どーいう意味?
>"同じ信号に対して異なる処理を行う場合"は三項演算子("?")を使う
三項演算子で記述できる組み合わせ回路はfunctionでまったく問題なく記述出来るはずだが?
組み合わせ→function
順序→always
組み合わせもalwaysで記述できるが上のように書くとぱっと見てすぐわかるから。
組み合わせ回路を明示できるところが、個人的にVerilogが好きな理由なんだが。
taskを回路記述で使う件も初耳だ。
>functionは、条件分岐の必要な演算回路を書く時に使ってるけど、wireで定義する物には
>使わない。 論理+F/Fの論理部分にfunctionを使うので、代入相手はregだけ。
これって hoge を functionで定義してるとして、
assign pappara = hoge( sig );
のpappara がregってこと言ってるのかな?
そんな文法見たことない。
少なくとも
>>757 は真面目に聞いてきてるみたいだし、ネタで火星に打ち上げちゃかわいそうじゃないの?
>>766 じゃないけど、
>>functionを使う場合は、"異なる信号に対して同じ処理を行う場合"に使う。
>どーいう意味?
同じような処理はfunctionでまとめて、信号をインスタンスするだけってことだろ。
俺的には「組み合わせ回路をwire型で統一表現したいので、 function文を使う」ってのは
どうかと思う。別に組み合わせはfunction、順序回路はalwaysなんて書き分けをしなくても
Verilog HDLをある程度身につけたエンジニアならばソースコード見るだけで
どっちになるかぐらいわかると思うけどなあ。
人間ならalwaysを使って組み合わせ回路を記述するより functionで記述した方がはるかに見やすい。
組み合わせ回路の記述の基本はassign文なんだが・・・ function文はあのとってつけたような構文が示すとおり、継続的代入文の補助的な意味合いしかない。 always文では変則的に組み合わせ回路を部分的に記述できるといっても、シミュではクロックが入ってから演算するが、 実際の回路でクロックが入ったときにregに代入されるのは、その時点で既に根元まで来ている信号だ。 regの値を使った演算の結果をそのままregに代入するのでなければalways文中に書くべきではない。
>実際の回路でクロックが入ったときにregに代入されるのは、その時点で既に根元まで来ている信号だ。 当たり前なんだけど、さらに「セットアップ・ホールド時間を満たしたもの」が代入される。
>always文では変則的に組み合わせ回路を部分的に記述できるといっても、シミュではクロックが入ってから演算するが、 組み合わせ回路の話なのになんでクロックが?? もしかしてセンシティビティ・リストの中は(posedge clock)しか書いたことないんじゃないの。 always文で組み合わせ回路を記述しちゃイケナイなんて聞いたことないよ。 SystemVerilogじゃalways_combやalways_latchが用意されているくらいだぜ?
それは現状のVerilogではalwaysで組み合わせ回路を書くと 色々ややこしいからではないか? VHDL感覚ならalwaysで組み合わせになりそうだが、 順序回路か組み合わせ回路か解読する手間を考えると、 組み合わせはfunctionのほうがVerilog流でしょ。
>>775 >もしかしてセンシティビティ・リストの中は(posedge clock)しか書いたことないんじゃないの。
まったく。自分の無知を棚に上げて大暴れか?
>always文で組み合わせ回路を記述しちゃイケナイなんて聞いたことないよ。
ちゃんと調べてから言え。調べもせず。聞いたことないだと?笑わせるな。
古めのVerilog解説本には組み合わせにfunctionを使うように推薦してる。
最近になって出版された書籍はどちらでもいいと書いてるものもあるがな。
>>SystemVerilogじゃalways_combやalways_latchが用意されているくらいだぜ?
だれがSystemVerilogの話をしとんねん。
そして議論は永遠に収束しないと…
まあ宗教戦争みたいなもんだからな。 いつまでもかみ合わんでしょ。 こういう時こそリセットじじいに登場してもらって 経験を生かしたコメントを出して欲しいもんだが。 まあ、暇な様だけど建設的な事は嫌いらしいから無理かな。
自分は775擁護だな。 alway の組み合わせ回路が sim でクロックが入って演算ていうのは意味が 分からないな。実際にシミュレーションして確かめた? イケナイ==禁止 で、推薦 != 禁止 じゃない。 ちゃんと調べても、推薦しかしてないのならイケナイという 結果はでてこないだろうな。 推薦ていうのは、"したほうがよい"という意味ですよね?
>>780 >自分は775擁護だな。
ヲイヲイ
>>780 ==
>>775 の癖に
自分で書き込んどいて擁護も何も無いだろ。笑止千万。しかも必死
>推薦ていうのは、"したほうがよい"という意味ですよね?
そーだなーお前が生きてるのも生きてたほうがいいよって一般論としての推薦だ。
なんなら、死んでもいいぞ。お前が死ぬのは勝手だしな。死ぬことを禁止なんかしてない。
>>781 775じゃないよ。
なんだかな、こういう汚いことしか言えない奴ってのはどうしようもないな。
自分が正しいと思うんなら、きちんと反論してみたら。
781の書き込みみたいのを、必死っていうんじゃない。
>>782 >なんだかな、こういう汚いことしか言えない奴ってのはどうしようもないな。
そーだなー、お前のような反省もせずにくっだらん理屈こねくり回すようなアホじゃどうしようのないよな。
まともなVerilogの本だったらたいてい書いてるお勧め事項を知らん事自体何も読んでない証拠。
>781の書き込みみたいのを、必死っていうんじゃない。
まー、なんとでもほざけ。
functionは組み合わせ回路を記述するために用意された経緯を今ここで初めて
知って目から鱗か?
せいぜいがんばれや。
>>782 >きちんと反論してみたら。
そいうやお前立派なこと書いてるよな。
>>780 >>782 で、これまで知らずにやってきて自己弁護に必死ってか?
大笑い!!!
-─=三=- 、 /イイイ ヽ三\ヽ\ ///イ ___ ヽ トトト i:|:/ミ -_-__--_−_-_ トト|:i |:|:|イ へ、 ̄ /ヽ |:|:| |:|:|| _、 ,.-_、 |:|:| <functionわかってない奴が自己弁護の ト:!:| ヽ´´´ノ ヽ´´´ノ |:|リ <偽装工作に必死 ヽ_|  ̄ ノ 丶 ̄ |_ノ | \/ (_i i_)\/ | | | /  ̄ \ | | \ -=^^=- / ヽ  ̄ ノ
>functionは組み合わせ回路を記述するために用意された経緯
どこのことを言っているのだろうか。
まさか
>>773 じゃないよね?
VHDLでよく推奨になってる if ( CLR='1' ) then Q <= 0; elsif ( C'event and C='1') then Q <= D; end if; こんな感じの記述を if CLR='1' then Q <= 0; elsif rising_edge(C) then Q <= D; end if; って記述される方っています?私はあんまり見慣れないんですが・・・
>>787 人によってはある。
先日納品されたVHDLソースには両方混在していた。
(複数人のプロジェクトだったので)
設計ガイドラインの無い会社には次たのまんことにした。
設計ガイドラインなんて俺の会社にゃ無えーよ。 HDL記述してるの俺だけだし。(FPGAだけどな。) ある意味好き勝手自由にできる。 その日の気分で変えてもだれも文句言わない。(上司はだれも理解していないから。) でもどういう記述するのが一番スマートなのかさっぱりワカラン。 文法とかって話じゃなく、セオリー的なガイドラインみたいな事を解説してるような 書籍や資料ってないもんだろうか? 詳しい人、教えて!
791 :
789 :2005/12/27(火) 12:36:22 ID:LToaNK80
>>790 おぉー! 情報サンクス。
プレビュー見た感じ良さげだね。 ありがとう。
非同期リセットは本当に必要なのか。
リセットの話題は危険だぞ・・・ 過去の遺物が出てくるぞ・・・・ ・・・個人的にはリセットは同期で使う物と思う。 非同期はタイミングで誤動作する可能性が高いので 使わないことにしている。
794 :
774ワット発電中さん :2005/12/31(土) 02:44:16 ID:ivuw4a3s
言語記述というか、論理回路自体初心社な者です。 VHDL記述に関して質問です。 例えば3ビットの信号(cnt)をカウントしていき”111”になったら”000”に戻したいのですが、 この場合、ただ単に cnt <= cnt + 1; と記述してオーバーフローを無視して勝手に0に戻る記述をしていいのでしょうか? それとも、 cnt <= cnt + 1; if (cnt = "111") then cnt <= "000"; とういように、最大値までいったら0に戻す記述をするべきなのでしょうか?
795 :
774ワット発電中さん :2005/12/31(土) 07:30:40 ID:HilpXGcr
>>794 わざわざ0に戻す記述はいらないでしょ。
3bitしか宣言してないんでしょ?
796 :
774ワット発電中さん :2005/12/31(土) 17:11:07 ID:wtHxwa1p
HDLの話とはちょっと違うかもしれませんが、バイトオーダをBig Endianから Little Endianに論理修正したいのですが、ひとまずバイトレーンの変更修正は 済ましたけど、修正前の論理がメモリのアドレス線をバイトレーン信号を使って チップセレクトする仕様なんだけど、このチップセレクト論理もイジる必要あり? 基本的なことをわかってなくてスマソ ↓現状、こんな感じ。 ┌─────┐┌─────┐ │上位 16bit││下位 16bit│ └─────┘└─────┘ ↑ ↑ ↑ ↑ │ │ │ └─── bytelane #0 CS │ │ └───── bytelane #1 CS │ └────────── bytelane #2 CS └──────────── bytelane #3 CS ↓こんな感じにCS信号を修正する必要があるんすかね? ┌─────┐┌─────┐ │上位 16bit││下位 16bit│ └─────┘└─────┘ ↑ ↑ ↑ ↑ │ │ │ └─── bytelane #3 CS │ │ └───── bytelane #2 CS │ └────────── bytelane #1 CS └──────────── bytelane #0 CS
>>794 それはバス仕様依存だからどのバスを使うのか言わないとなんとも返事できん
たとえばPCIバスなら、データバスに乗るデータのエンディアンに関わらず
C/BE3 → AD31-24
C/BE2 → AD23-16
C/BE1 → AD15-8
C/BE0 → AD7-0
の対応は変わらない
独自に設計したバスならバスを設計したヤシに聞くしかないな
798 :
794 :2005/12/31(土) 22:27:10 ID:ivuw4a3s
>>795 3bitしか宣言しないです。
実機で確認した所どちらの記述でも結果は同じになったのですが、
どっちの記述が適しているのかと思いまして・・・
>>797 すみません。勉強不足で仰ってる意味がわかりません。
勉強してから、ここにこい(#゚Д゚)ゴルァ!
800 :
794 :2005/12/31(土) 23:02:58 ID:ivuw4a3s
あけましておめでとうございます
>>800 >>797 は
>>796 へのレスだからわかんなくてもおk
>>796 アクセス先が電源ONでまっさらになるDRAMみたいなやつで
アクセス元がひとつ かつ
図のように常に同じ単位(この場合16ビット)でアクセスするなら
何もいじらなくていい
なぜなら
書くときバイトがねじれても
読むときもねじれて結局元にもどるから
しかし 例えば
上・下16ビット=2バイト単位で書いたところを
1バイトだけとか 4バイトまとめて読むこともあるのなら
エンディアンの違いが響いてくる
(説明は面倒なので省略 絵を描いて考えてみて)
アクセス元がCPUで ソフト屋がそんな使い方してたら
ハード屋がバイトのセレクト信号をつなぎ変えるだけじゃ
対処しきれない ソフト屋も要変更
> しかし 例えば > 上・下16ビット=2バイト単位で書いたところを > 1バイトだけとか 4バイトまとめて読むこともあるのなら > エンディアンの違いが響いてくる > (説明は面倒なので省略 絵を描いて考えてみて) まっさらから始めるって条件なら、説明が面倒なんじゃなくてただの大嘘だろ バイトイネーブル信号がデータバスと対応した然るべきイネーブル入力に 接続されてたら違いなんて見えない 要は信号の名前(正確には添数字)をどうつけるかだけの問題 実行中に動的にエンディアンを切り替えたいから悩ましいんじゃないのか?
バイト単位でアクセスするデバイスだけなら そもそもエンディアンの違いで悩む必要はない だがビット位置が関係するデバイスがからむと 一気に厄介になる 16ビット幅でabcdと下位2バイトに書き込むと ビッグエンディアン (bit15)abcd(bit0) リトルエンディアン (bit15)cdab(bit0) これだとバスにビット位置を意識しているデバイスが ぶら下がっていると不具合を起こすのは自明 だからといって16ビット幅でのアクセスなら リトルエンディアンでもそのままabcdと書くと 突っ込まれた点が問題になりえる
一般的な記憶デバイスなら、アドレスバスはまだしも データバスのビット位置は意識しないよね たとえデータバスのビット位置を意識するデバイスを使う場合にしても 動的にエンディアンが変化しないなら、PWBAの配線でよしなに接続すれば いいだけの話だよな
>>798 > 3bitしか宣言しないです。
溢れようが桁上がろうが、その下位3bitしか見ないなら同じことじゃん。
806 :
796 :2006/01/03(火) 20:53:09 ID:RDnvM8Wg
>>797 >>801-804 ご丁寧にどうもです。
>>796 では、メモリ構成をハーフワードアクセスのイメージで書いてますが、
実際のハード仕様は、8bit*4でバイト/ハーフワード/フルワードのアクセスに
対応しています。(バイトレーンセレクタを実装)
このメモリにアクセスするのはMCUなんだけど、バイトアクセスってあるのかね?
一応、Big Endianの頃からハードではバイトアクセスにも対応する仕様なんだけど、
基本はハーフワードアクセスだと思うんですけどねぇ。。。
>>802 さんの指摘で・・・
>実行中に動的にエンディアンを切り替えたいから悩ましいんじゃないのか?
・・・ってあるけど、Bi Endianの仕様はないっす。
MCUのFirmwareはIntel系Chipからの流用らしいんで。
10桁くらいの乱数を発生させたいのですが、うまい方法はありませんか?
10ビット?10進10桁?あと乱雑さの程度は? ある程度適当でよければ、M系列とか、LFSRでググれ
10進10桁です。10桁の数字を何十個取って乱数っぽく見えればいいんですが、LFSRでやったら数字の流れの規則性が読み取れてしまいました・・・
>>809 じゃ「Mersenne Twister」をハードで実装せよ。
何十個レベルで乱数っぽくするだけなら、ちょっと長いLFSRで十分だろ どんなフィードバックで何ビットのLFSR作ったんだ?
Verilogで設計するときのための入門〜中級者向けの参考書でお勧めのものを教えてください。 多少内容に問題がある本でも、問題点が分かっていれば構わないので……。
Verilogにしても、VHDLにしても入門書と呼べるのは 1冊ずつしかないな
はじめてのVerilog と 独習Verilog-HDL がいいよ あと中級は HDL言語Verilog がお勧めだ
書き忘れ 定本Verilog-HDL設計 と 続・定本Verilog-HDL設計 も
>>813 もしプログラミング経験が無いのなら、先にプログラミング経験を積んでからの方が良いよ。
>>813 もし回路設計経験が無いのなら、先に回路設計経験を積んでからの方が良いよ。
>>813 もし基板設計経験が無いのなら、先に基板設計経験を積んでからの方が良いよ。
>>813 もし筐体設計経験が無いのなら、先に筐体設計経験を積んでからの方が良いよ。
>>813 もしLSI設計経験が無いのなら、先にLSI設計経験を積んでからの方が良いよ。
822 :
774ワット発電中さん :2006/01/22(日) 13:05:55 ID:+Rkm6cL8
何だ、もうネタ切れかよw
>>813 もしレンズ設計経験が無いのなら、先にレンズ設計経験を積んでからの方が良いよ。
>>815-816 ありがとうございます。ググっても見つからなかったので、書店に問い合わせてみます。
>>817 プログラム経験は C++ Pascal Fortran Lisp Occam Postscript 等ありますが、
不足でしょうか。
>>818 昔、74を組み合わせて数千ゲート相当規模の回路を設計したことがありますが、
74 時代の経験は無意味でしょうか。
>>819 基板設計はあまりやったことがありません。別の業者がやったVME基板数枚の設計が悪く、
手作業で直しをいれたぐらいです。高周波を扱う予定はないので、
それぐらいでなんとかならないでしょうか。
>>820 筐体は詳しい人間が側にいるので、その人の経験を借ります。
>>821 LSI 設計経験は、もちろんあります。昔、スケマティックで数万ゲート規模のものを作っていました。
たしかプロセスはES2 社のものでした。デバッグが大変で、もう二度とやりたくありません。
>>823 HOYA が LSI の設計製造業務を展開していたころに、
その繋がりで半出向のような形でレンジの設計も聞きかじったことがあります。
シミュレーションツール的な部分で経験が役に立つのでしょうか。
>>824 作った物がちゃんと売れるかどうか考えた方が良いよ。
>>824 ネタにマジレス?カコイイ
てか、それだけ経験あるなら、HDLとか書いてる場合じゃないだろ。
そんなもん参考書籍一つ挙げられない土方連中
>>815-823 に任せりゃオケ
土方連中を監督したり
>>825 が言ってるような経営判断とかヤットケ
>>826 >そんなもん参考書籍一つ挙げられない土方連中
>>815-823 に任せりゃオケ
お 前 も 全 く の 同 類 だ 。 糞 ガ キ が
>>827 同類ですが何か?
てか、土方に決まってるじゃん、HDLコーダーなんて。
いまさら図星さされたぐらいで逆上する
>>827 ハゲワロス
HDLコードなんて書いてませんが何か? や ー い、 や ー い H D L 土 方 や ー い
830 :
774ワット発電中さん :2006/01/22(日) 17:16:39 ID:yDTy3rFm
┐(´ー`)┌
831 :
774ワット発電中さん :2006/01/22(日) 17:27:54 ID:Uic7tjTD
vhdlもverilogもちゃんと本を読んで勉強した覚えはないな。人の持ってる 奴をちょっと読んだくらい。基本的にはインターネットで基本を覚えて あとは人のソースを見て独学で勉強って感じか。
LSI設計やるならテスト戦略は初めに必須。
834 :
774ワット発電中さん :2006/01/23(月) 15:51:20 ID:2jctE1Rl
Perlilog: Perl コードからVerilog ソース 使い物になるのか?
ペログリ?
>> 834 使い物になる。 ただ、再起呼び出しとかはやめてくれよ。 問題はPerlの構文をどうやってHDLに落とすかだ。 それがなかなか出来なくて大変なんだ。
他にもPerlプログラムでVHDL、Verilogを生成してる実例はあるけど AlteraのEuropa 仕様のドキュメント公開してくれないかな
なぜスケマ設計は廃れたのですか?
2chで書けないから
>>838 生産性がよくないからと言われてる。
個人的には順序回路のような手順がスケマだと見えにくいな。
すみません 複数ファイルで使用するパラメータを`include "common.h"とかやって共有したいのですがcommon.hの中身はどのように書けばよいのでしょうか? なにか、文法とかありますでしょうか parameter A=1; parameter B=2; とかだけ書いていてはダメなのでしょうか。 Cの#includeのようにただ単純に文字列が挿入されるだけだと考えていたのですが、間違いでしょうか よろしくお願いいたします。
それで構わない筈だけど? まさか、moduleの外に`includeを書いてるとか・・・
>>842 レスありがとうございます
Cの#includeと同様だと解釈していましたので`includeの位置はmoduleの内部に書いてあります
文法チェックは通るのですが、modelsimに突っ込むと怒られてしまうのです
common.hがうんたらと言われてしまいます
うんたらじゃあわからんなぁ
おおかた、common.hの場所がincludeするファイルのパスに 入っていないとかだろう
Modelsimの吐くメッセージ: common.hがうんたら〜 のうんたらの部分が英語だから読めないだけってオチか
>>844-846 レスありがとうございます。
英語が読めないわけではなくて(かなり苦手ですが)、ライセンスの関係でしばらく使えなくなってしまったのでメッセージ内容を忘れてしまいました。
>>845 common.hは他のファイルと同じフォルダに入れてあるのですが、パス指定は必要なんですかね?
文法チェックはことなく終わったのですが
common.hを複数のソースから呼んでいるに3000点。
Verilogを学び始めたばかりなんですが、RSA暗号器の作成をすることになりました。 それで質問があります。 1)記述の方法で、P=(C*e)%m のように演算子を用いて記述した場合と、 乗算回路と除算回路を作って行う場合で何か違いがありますか?(論理合成など) 2) RSAでは大きな数を扱うのですが、論理合成ではどのくらいのbit数まで合成できるのでしょうか? お願いします。
>>848 その通りです
複数のソースで共通のパラメータなのでそうしたいのですが…
てか、最近仕事変わってmodelsim使えなくなってしまった…
でも、解決方法は知っておきたいです。
>>849 1)は演算子を使うほうが良いらしいよ。
勝手にHDLが乗算回路とか作ってくれるから。
昔うちの大学の先生が二つの方法で加算回路を作って比べてみたらしいけど、
演算子を使ったほうが、自分達でセコセコ回路組むより断然速かったらしいよ。
2)はよくわからないけど、
SRAMを作ったときに65536ビットとかしてもシミュレーションできたよ。
ただFPGAとかに落とした経験はないので、実際に動くかどうかは知りません。
852 :
774ワット発電中さん :2006/02/02(木) 01:55:39 ID:mFL25QoI
誰か、「ユネイト」について分かりやすく説明できる人いますか? もしくはサイトなどあれば助かります>< 宜しくお願いします!!
>>851 >昔うちの大学の先生が二つの方法で加算回路を作って比べてみたらしいけど、
あほなせんせいなんだろ?
しかも乗算器程度は勝手に合成してくれるかもしれんが
mod回路を勝手に合成してくれる合成ツールあったら教えてくれや。
>>849 1)回路規模と速度。
演算子を用いた場合、使用するライブラリによって回路が異なる。
FPGAなら専用の乗算器を用いることもある。
2)分割して処理してやれば、リソースの許す限り何ビットでも。
ヒント:長篠の戦い
>>850 VHDLの話だったら、自前のライブラリ作って使えば同じもの呼び出しても文句言われない。
俺はVHDLオンリーだから知らないけど、Verilogにはそういうの無いの?
>>855 戦国自衛隊が勝頼に加担するそうです。
映画の江口洋介版戦国自衛隊1549よりテレビの戦国自衛隊の方がはるかに出演者が豪華だったな。
江口のほうはVシネマみたいだった。
しかし。。。
反町の滑舌の悪さはなんとかならんか?
>855ヒント:パイプライン
859 :
849 :2006/02/02(木) 18:51:54 ID:kAcFmaQi
>>851 >>853-854 ありがとうございました。
ライブラリによって回路違うようなら、自分で作ったほうがよさそうですね。
分割すれば制限ないんですね。
どれくらいまで平気かいろいろと試して行ってみたいと思います
たとえば加算器のライブラリを新規に作るとする。その記述の正しさを証明できるだろうか。
「正しい」とは何かがちゃんと定義できればな
FPGAによっては、あらかじめ乗算器などがセルであることがある。 もしあるなら、それを利用したほうが早いしもったいない。 (ぶっちゃけそのセルは乗算にしか使えないから) ビット数は限界は基本的にないとおもっていいけど、速度との兼ね合いがあるだろうし。 128ビットとかなら別に平気じゃないかな FPGAにもよるけど まあ、ASICならともかくFPGAなら作ってみるのが手っ取り早い 仕事でそれをやられると困るときもあるが、そんなカンジじゃ無さそうだし
864 :
774ワット発電中さん :2006/02/13(月) 02:19:52 ID:CRxGv4yS
Quartus Uの使い方で質問です。 WindowのTabの所を右クリックで設定できるHide Tabsを押したらWindow選択Tabが 消えてしまいました。この設定を元に戻すにはどうすればいいのでしょうか?
漏れもそれ一見分かる場所になくて困惑した記憶がある。 何とか直ったけど直し方はもう忘れた。スマソ。
866 :
864 :2006/02/13(月) 22:47:00 ID:CRxGv4yS
>>865 レスどうもです。
今、いろいろいじってて元に戻す場所発見出来ました。
867 :
774ワット発電中さん :2006/02/14(火) 02:28:57 ID:TWYUOxop
良い論理回路の評価項目を教えて下さい。
シンプル
やすい・はやい・
ひげがない
中身が何であれ、売れるのが良いにきまってる どんな論理回路なら売れるか、買いたいか、考えろ
すごい・かんたん・きもちいい
ハードの人はブローカーが多いね。
バグが無いのがいいよね 怖い思いしなくてすむから…
876 :
774ワット発電中さん :2006/02/18(土) 10:58:36 ID:Ll8bfdz5
Verilogの記述方法で教えてください。 1BITの信号Aを4BITの信号Bに信号Aをパラレル4BITで接続したいのですが、 連接以外のすっきりとした記述方法はありませんか? 今は以下の様に記述しています。 b <= { a, a, a, a}; 4BIT程度なら良いのですが16BITになったり信号Aの名称が長いと面倒で。 宜しくお願いします。
if分か関数定義じゃダメなのか?
b <= {4{a}};
b <= -a;
>>879 これ使う技術者はまわりにいて欲しくない
>>879 おもしろいけど、まあ可読性悪いから業務では使って欲しくないところだね
コメントの無いソースよりタチが悪いw
VHDLしかわからんから話についていけないなあ。 Verilog勉強しようかなあ
VHDLしか知らないけど、
>>879 は分かりましたよ。
なんかMSXの「1画面プログラム」を読んでいたころを思い出した。
ちょっとわかるその気持ちw>885 まあ、みんながぱっとみて(もし構文をしらなかったとしても)分かりやすい b <= { a, a, a, a}; や b <= {4{a}}; がいい気がする
wireだったら組み合わせロジックで for( i=3; i>=0; i=i-1) begin b[i] = a; end ってのはど?
VHDLだと b <= (others => a); (だったっけ?) とかいうわけのわからん構文を書かねばならんのよね。
>>888 やっぱわけわからんのか。
VHDL勉強中だが
else ifとかcase文とかif x = 0とか不可解な構文ばかりで手間取ってるへたらCプログラマー
馬鹿でごめんな・・・
>>890 俺的には読みやすいが、
>>887 も漏れと一緒で元ソフト系じゃないの?
へたれっぽさをかんじる
>>888 あたり
はじめ見たときは何かと思った。しかもぐぐってもなかなかひっかからないのね。
case others => ばっかりひっかかってw
for文も嫌いじゃないけどね 純ハード屋さんが嫌がる傾向あるけど・・。
本質的に並列処理のものをforで書くのは違和感あるね
>>891 組み合わせ回路のfor文の使い方も知らん小僧はすっこんでな。
>>893 ある。
すごくある。
でもそういうもんだと思うことにした。
>>893 本質的にハードのものをソフトで書くのは違和感あるね
真に並列処理などあるわけない。
0時ちょうどに釣乙
>>896 いや、VerilogにしろVHDLにしろ、
ハードウェア記述言語であって、
ソフトではないんだよ
でもまあ、無いよりあったほうが便利だなぁ >for メモリの初期化とか。
forとかはどうせ中で展開してるんだろうから Cとかのプリプロセッサ命令みたいに はっきり分かるようになってればいいのにな と思うことはよくある
>>897 なんかシングルプロセッサのMPUと間違ってないか?
ハードウェアでは真の並列処理を実際やってるし、
だいいち、組み合わせのfor文とは何の関係も無い話だ。
>>901 の言うように単に手でごちゃごちゃ書く代わりに、
自動で回路展開してくれてるだけだから。
904 :
774ワット発電中さん :2006/02/22(水) 19:12:11 ID:62migtMq
フォー
お前のようなアホがうぜえんだよ
悔しがりすぎ(w
るせーばか
HDLをいくら眺めても何も見出せない。
>>909 とりあえずコンパイルしてみるというのはどうか。
チョト質問。 HDLをツールに食わせるのって、コンパイルって言う? シンセシスじゃないの? 普通に使われてるのかな?
QuartusIIの場合はCompileって書いてあるからな。 あなるしす&シンセシス〜タイミング解析まで全部やるのはコンパイルと呼んでるわ。
デザインコンパイラとか有名なツールあるからなぁ。 正しいかどうかは別として市民権ぐらいはありそう。 > コンパイル
ISEはSynthesisといっているし、 ModelSimはCompileといっている。 やってることは違うはずなんだが。
シンセシスsynthesisを訳すと、「合成」だし ツールに食わせるのはやっぱりコンパイルって感じ。
>>911 自分で書いてからちょっとそれは思ったw
コンパイルっていうとちょっとへんな顔をする人はいるよね 気持ちはわからないでもない
ソフトウェア言語でいうマシン語がHDLでいうプリミティブセルに当たると考えると
コンパイルでもいいのかなって気がする
DCとかは抽象記述を回路図に落とすから(回路)合成、なんとなくコンパイル
というとすこしどこかに違和感があるような無いような。
ModelSimなんかはプリミティブまでは落とさない、中間言語まで?
これはむしろコンパイルと呼ぶべきなのかもしれない。
とりあえず市民権は得てるとは思う。
> DCとかは抽象記述を回路図に落とすから(回路)合成、なんとなくコンパイル > というとすこしどこかに違和感があるような無いような。 DCって何かワカランけど、「コンパイル」は違和感あるね。 前に出たforも違和感ある。 でも時代がそうだと思うことにした。
ところで、ふつう「論理合成」っていうときは配置配線も含むの?
含みません
論理合成は論理合成ツールのやること。 配線はフィッタのやること。 FPGAの統合ツール使ってると気づかんかもしれんが。 統合ツールっていうのはフィッタがメイン。これの代わりのできる他社ツールはない。 合成部分だけならさらに高性能な他社ツール(synplify,precision)を使える
PLLって何? クロック発生器?
synplifyやprecisionて値段分の価値有ります? 1社のデバイス使い続けるとして、なんですけど。 昔テストしたとき、FPGAメーカのツールと比較して 大して差がない(ものによっては悪い)結果にしかならなかったもんで・・・ 今は改善されてるのかな?
んじゃFPGAで論理合成からコンフィグファイル生成まで全部を表すのは やっぱ「コンパイル」?
physical synthesisって概念もあるから 合成と配置配線の境目はあいまいになりつつあるのかな
926 :
774ワット発電中さん :2006/02/27(月) 22:12:10 ID:f2NMNZVj
クロックのHI幅とLOW幅の割合を1:1のまま3分周するRTLは書けますか? PLLを使わないで実現するのは無理ですかね?(PLLで6テイ倍して2分周)
927 :
926 :2006/02/27(月) 22:16:02 ID:f2NMNZVj
↑ Verilog-HDLでお願いします
↑ それって宿題!?
929 :
926 :2006/02/27(月) 22:29:15 ID:f2NMNZVj
>928 いえ違います。可能かどうか考察しているだけです。
3分周 = 6テイ倍して2分周 ?
クロックのHI幅とLOW幅の割合を1:1のまま3逓倍するRTLは書けますか? PLLを使わないで実現するのは無理ですかね?(PLLで6テイ倍して2分周)
932 :
931 :2006/02/27(月) 22:41:42 ID:IATIZpzb
↑ VHDLでお願いします
933 :
926 :2006/02/27(月) 22:42:51 ID:f2NMNZVj
>930 あ、間違ってました。未熟者ですみません。
934 :
774ワット発電中さん :2006/02/27(月) 22:47:42 ID:gFuv8j4d
_| ̄|_| ̄|_| ̄|_| ̄ _| ̄ ̄~ ̄|_____| ̄ タイミングチャートが書けるから書けるだろ。 考察の結果は「可能」。Verilog化するのは自分でやれ。
935 :
926 :2006/02/27(月) 22:55:25 ID:f2NMNZVj
>934 ありがとうございます。チャートはその通りです。 クロックがfallのときもカウントするようにすればいいんですかね? この記述で大丈夫でしょうか? always@( negedge reseet or ck )begin if( !reseet ) q <= 3'h0; else if( q == 3'h6 ) q <= 3'h0; else q <= q + 3'h1; end
936 :
926 :2006/02/27(月) 23:04:50 ID:f2NMNZVj
すみません、これならどうでしょうか? outの波形です。 always@( negedge reseet or ck )begin if( !reseet ) q <= 3'h0; else if( q == 3'h6 ) q <= 3'h0; else q <= q + 3'h1; end always@( negedge reseet or q )begin if( !reseet ) out <= 3'h0; else if( q == 3'h3 ) out <= 3'h1; else if( q == 3'h6 ) out <= 3'h0 else out <= out; end
ソース準備できたんなら、自分で検証してみろ(#゚Д゚)ゴルァ!
逓倍は?
┏┓┏┓┏┓┏┓┏┓┏┓┏┓┏┓ ┛┝┛┝┛┗┥┗┛┝┛┗┥┗┥┗ │ │ │ │ ↓ ↓ ┏┿┓│ ┝━┓│ ┏━┓ ┛│┗┿━━┥ ┗┿━━┛ ┗━ ↓ ↓ │ │ ┏━┓ │┏━┥ ┏━┓ ━┛ ┗━━┿┛ ┝━━━┛ ┗ ↓ ↓ ┏━━┓ ┏━━┓ ┏━━┓ ┛ ┗━━┛ ┗━━┛ ┗ 自分ならこう作るかな
うーんずれまくりだね メモ帳にコピペよろ H:L=1:2の波形をRise,Fallそれぞれで作ってORね リセット時にどうやって同期取るかは適当に考えてね
1段目をクロックの立下りでサンプリングすれば 2段目になるから特に何も考えなくてもOK
ちなみに何ゆえデューティー50%にしたいのかな? 原発振って周期は正確だけど、デューティーは結構ばらつ くから目的によってはいずれの方法もNGかもね。
可能かどうか考察しているだけ、って言ってるんだから 実際に使う目的なんか無いんでしょ。嘘じゃなければ。
>>942 それは気になってた。このクロックをどっかRiseだけで使うなら
別に1:2でも問題ないしね。
なので実製品でFallエッジを意識せず使うと、このジッタでSetup/Hold
を予期せず満たせなくなったりしてハマッたりね。なので、どうしても
両エッジ使いたいときは2逓倍して2分周とかやる・・・
ってのは普通なのかな?
PLLついてる奴なら、
周波数同じでデューティ補正だけってのが出来るのがあるからそれ使うなぁ。
内部的にはn逓倍→n分周だろうから
>>944 と同じ事だけど。
周波数が高い時は補正しないとfallエッジは怖くて使えないよね。
946 :
926 :2006/02/28(火) 11:49:39 ID:ot85kyAM
:::::::::::::: bunsyu_3.rtl :::::::::::::: module bunsyu_3( reset, ck, out ); input reset, ck; output out; reg [2:0] q_pos; reg [2:0] q_neg; always@( negedge reset or posedge ck )begin if( !reset ) q_pos <= 3'h0; else if( q_pos >= 3'h2 ) q_pos <= 3'h0; else q_pos <= q_pos + 3'h1; end always@( negedge reset or negedge ck )begin if( !reset ) q_neg <= 3'h0; else if( q_neg >= 3'h2 ) q_neg <= 3'h0; else q_neg <= q_neg + 3'h1; end assign out = q_pos | q_neg; endmodule
947 :
926 :2006/02/28(火) 11:57:03 ID:ot85kyAM
みなさんありがとうございました。↑の記述で3分周の波形を確認できました。 しかし実機で使うにはデューティを考えないといけないのですね。 大変勉強になりました。またよろしくお願いします。
948 :
926 :2006/02/28(火) 13:26:21 ID:ot85kyAM
>946 これに修正したほうがわかりやすいですね assign out = q_pos[0] | q_neg[0];
んで逓倍の方はどうやるの?
950 :
926 :2006/02/28(火) 16:46:29 ID:ot85kyAM
>949 よく考えたら単純には行きませんね。 2テイ倍で3進カウンタを作りT-FFを駆動するのはどうでしょう?
ヒゲで死ぬだろうな。
逆にゲートの遅延を利用してヒゲを出して逓倍する方法もあり
プライオリティーエンコーダの普通でない回路を知っている方は何パーセントぐらい居ると思いますか?
プライオリティーエンコーダの普通でない回路を知っている方を母集合に採れば プライオリティーエンコーダの普通でない回路を知っている方は100%ですね。
プライオリティーエンコーダの出力をデコードしたものが d & -d っていうのなら知ってる。
そもそもプライオリティ援交ーだーって 何?
そりゃま、金持ち優先ってことで
958 :
774ワット発電中さん :2006/03/02(木) 19:44:04 ID:gDtzV18x
ISEの設定で質問です。 HDL記述ウインドウの文字、バックグラウンドの色は変えれないのでしょうか?
959 :
774ワット発電中さん :2006/03/03(金) 11:07:37 ID:ViDZ+KTF
IcarusとかCverで、 シミュレーションを無限ループさせある条件に引っかかったときだけ中止&中止した付近の結果だけ(波形でみたい)を 出力する方法ってありますか?
初期値0, ある条件になったときだけ1になる信号を用意すればしまいじゃん。 その信号が立ち上がったときを検索すればいいだろ。 modelsimでも使え。
条件の付近”だけ”出力したいんじゃないのか? 条件後なら好きな所で止める記述すれればいいだけだが、手前のほうは…。
時間指定してダンプは? initial begin #xxxx; $dumpvars; #xxxx; $finish; end
チョッパー回路が合成されないためには、RTL記述時から何か気をつけるべきでしょうか? それとも合成条件でなんとかするべきでしょうか?
何も考えずに合成条件を厳しくしている。 …本当は記述時に考えたほうがいいと思うんだけどね。
hosyu
966 :
774ワット発電中さん :2006/03/14(火) 01:59:54 ID:bLTnuwHQ
どなたか教えてください。 FPGAにD/Aコンバータつないで遊んでいます。 運良くちゃんと動いているようなので、サイン波形でも出すべと 考えていたのですが、うまい方法が思いつきません。 HDLは、Vrilogです。 マイコンなんかだと、配列に0-90度分の数値を置いて(ROMに配置される) それを垂れ流しで出来ているんです。同じ方法でやろうと、 Verilogで配列の書き方はわかったんですが、 数値を定義する記述方法がわかりません。 Cでいうところの、 sin [90] = { 127, 138, 148..... }; みたいな書き方ができるのでしょうか? 宜しくお願いします。
>>966 reg [7:0] sin [90] = 127, 138, 148....; でいいんじゃないのかな。
969 :
774ワット発電中さん :2006/03/14(火) 13:34:38 ID:bLTnuwHQ
>>967 ありがとうございました。
やってみましたが、ISE7.1がエラーを表示してダメっぽいです。
なぜでしょうか?
どんなエラーかも書かずに何を期待してる
>>966 制約ガイドのINIT_xxのところに書いてある。
>>970 ひと月前に何かもらったろ。そのお返しだよ。
俺は何も貰ってないぞ?
そういや義理のお返ししてないやマズー
>>974 うわさされてるだろなー。礼儀に欠けるとかな。
そういう評判って結構大事なんだよなー。
ご 愁 傷 様
では埋めますね
977 :
774ワット発電中さん :2006/03/17(金) 09:09:59 ID:3UFEqcYm
>>975 ざまぁみやがれwwww
って感じなんだが
オレは一個ももらってないし…
では埋めますね
どうせならコードで埋めるぐらいの気合が見たい。
outp <= '0' when inp="1" else 'z';
/* UME */
if CLK'event and CLK='1' then
CLK <= '0'; end if; end process;
// UME
endmodule
FD1S3AX
// synthesis attribute UME of "記述言語で論理設計" is TRUE;
process(ck, addr) begin if ck'event and ck = '1' then case addr is when "0000" => dat <= "01000010"; when "0001" => dat <= "01000010"; when "0010" => dat <= "01000010"; when "0011" => dat <= "00111100"; when "0100" => dat <= "00000000"; when "0101" => dat <= "01000010"; when "0110" => dat <= "01100110"; when "0111" => dat <= "01011010"; when "1000" => dat <= "01000010"; when "1001" => dat <= "00000000"; when "1010" => dat <= "01111110"; when "1011" => dat <= "01000000"; when "1100" => dat <= "01111100"; when "1101" => dat <= "01000000"; when "1110" => dat <= "01111110"; when "1111" => dat <= "00000000"; when others => null; end case; end if; end process;
>>989 LEDくっつけて動かすと秘密のメッセージが!
-- 秘密でもなんでもいいからコード書けやボケが!!!!!!!! -- !マーク付けてるヤツってくだらんレスが多い!!!!!!!!
when "0100" => dat <= "00000000"; when "1101" => dat <= "01000000"; when "0011" => dat <= "00111100"; when "0101" => dat <= "01000010"; when "1100" => dat <= "01111100"; when "0010" => dat <= "01000010"; when "1111" => dat <= "00000000"; when "0110" => dat <= "01100110"; when "1110" => dat <= "01111110"; when "0111" => dat <= "01011010"; when "1000" => dat <= "01000010"; when "0000" => dat <= "01000010"; when "1011" => dat <= "01000000"; when "1001" => dat <= "00000000"; when "0001" => dat <= "01000010"; when "1010" => dat <= "01111110"; 一応ソースだけスクランブルにしてみた
>>991 while(1) {
fprintf(stderr, "おまえモナー\n");
}
-- いいかげん次スレ立てろや dat_ochi := true after 2 day;
signal Project4 : thread range 1 to 1000;
-- UME
/* 1000 */
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。