【Verilog】記述言語で論理設計 Project3【VHDL】/

このエントリーをはてなブックマークに追加
1774ワット発電中さん
HDLの処理系も、それを実際に動かすシミュレータ・評価基板も
安価で入手できるようになってきました。

このスレが目に入ったおまえ! HDLで何か作って遊んでみませんか。

日曜工作のHDL書き、学生さん、プロの方、カキコお待ちしております。
関連情報は >>2-10 あたり。

前スレ
【Verilog】記述言語で論理設計 Project2【VHDL】
http://science3.2ch.net/test/read.cgi/denki/1094181663/l50
2774ワット発電中さん:2005/08/05(金) 01:36:08 ID:6g3dJonX
関連スレ
【FPGA/CPLDスレ】 XILINX/ALTERA/Lattice/Actel 03@電気・電子
http://science3.2ch.net/test/read.cgi/denki/1119984464/l50

暇だからVHDLでも書こうかな@プログラム
http://pc8.2ch.net/test/read.cgi/tech/1043858153/l50

【std_logic】Verilog VHDLスレ【16'hFFFF】@機械・工学
http://science3.2ch.net/test/read.cgi/kikai/1056186047/l50

フリーのツール(情報追加よろしく!)
ALTERA Quartus II Web Edition http://www.altera.co.jp/
XILINX ISE WebPack http://www.xilinx.co.jp/

評価基板とか(追加情報よろしく!)
Spartan-3 Starter Kit http://www.xilinx.co.jp/products/spartan3/s3boards.htm
CQ出版のシリーズ http://www.cqpub.co.jp/eda/

雑誌
Design Wave Magazine(DWM) http://www.cqpub.co.jp/dwm/
※基板が付録で付いている号はバックナンバー希少になりがち
Interface http://www.cqpub.co.jp/interface/
3774ワット発電中さん:2005/08/05(金) 01:42:11 ID:pEQkO9Mz
スパ3評価ボードはスパ3Eに変更。秋に$149で出る予定。
http://www.xilinx.co.jp/products/spartan3e/s3eboards.htm
4774ワット発電中さん:2005/08/05(金) 01:44:39 ID:pEQkO9Mz
5774ワット発電中さん:2005/08/05(金) 03:59:23 ID:S/8CQFE3
とりあえず乙
6774ワット発電中さん:2005/08/05(金) 11:54:33 ID:I2l4+KQR
>1
乙ドス〜
テンプレを一つ、、、

Actel http://www.actel.com/intl/japan/
内蔵Flashの先駆け!?
7 ◆YMO/ALTERA :2005/08/05(金) 14:04:15 ID:OeDPBfun
出先からd>>1
8774ワット発電中さん:2005/08/06(土) 01:16:03 ID:P7B5N24O
GPLcverもいれてやれよ。
無料にしては優秀だよ。
9774ワット発電中さん:2005/08/06(土) 14:38:13 ID:yqpD/q7G
10774ワット発電中さん:2005/08/06(土) 16:37:44 ID:u7W+Zb8k
IcarusとかCverで、シミュレーションを無限ループさせある条件に
引っかかったときだけ中止 & 中止した付近の結果だけ(波形でみたい)
を出力する方法ってありますか?
11774ワット発電中さん:2005/08/07(日) 11:11:13 ID:CLPO6IZO
$dumpon/offとかの制御信号をその特定条件で
制御してあげるとかっていうのではダメ?
中止付近というのが、ちょっと面倒かもしれませんが。
12774ワット発電中さん:2005/08/08(月) 00:37:23 ID:tXNo73sS
>>11
例えばどんな感じで実現するんですか?
中止付近 = 特定条件に引っかかったときの前後1usとか
前後100-CLKなんですが。
13774ワット発電中さん:2005/08/08(月) 02:30:27 ID:NMaAPnq3
>12
とにかく一度シミュレーションをし、引っかかったところを見つける。
その時間から前後1usに$dumpon/offを仕込んで再度シミュレーションを
行えばOK!
$randomを使っていても、結果に変化はないはずです
14774ワット発電中さん:2005/08/08(月) 06:17:26 ID:tXNo73sS
やっぱりそんな方法しかないのか…
ちょっと面倒とのことだったので、もう少しいい実現例があると
期待してたのにがっかりという所ですw
1511:2005/08/13(土) 06:14:29 ID:5uXxvKYF
>>14
テストベンチ上に回路を2つ配置して
片側の入力をすべて1us遅らせて、
早いほうが条件一致してから1us期間
遅い方の回路のダンプを取る。




こんなことをするぐらいなら、>>13の方法を使うけど orz
16774ワット発電中さん:2005/08/13(土) 09:36:38 ID:AV7HyEma
条件一致までの時間次第だな…
17774ワット発電中さん:2005/08/14(日) 11:25:05 ID:WGHo7kPK
ちょっとお聞きしたいんですが、
>>2で紹介されている評価基盤なるものを購入すれば、
Verilogで書いた回路を論理合成、実装したりできるってことですか?

今、大学の2年生で、前期に学校では
verilogで書いたものをncverilogでシミュレーションし、
SynplyfyProで論理合成、Quartus IIで実装・・・のような実習をやってました。
この実習と似たようなことを自宅でもできるんだったら
評価基盤なるものを購入してみようかなぁと思っているのですが。
18774ワット発電中さん:2005/08/14(日) 11:26:48 ID:WGHo7kPK
ああ、でも私、家では基本的にMacでして、
そうなると、フリーの論理合成、実装ツールがないのか・・・

シミュレーションや波形の表示には、
GPL CverやGTKWaveがあるので、
Macでもぜんぜん困らないんですけどね・・・
19774ワット発電中さん:2005/08/14(日) 11:33:05 ID:2c4R0T94
MACか・・・とりあえずWinマシン買うのが良いと思う
べつにセル論800ぐらいのマシンでもWin2000動いてれば問題なし

Winなら環境は全部フリーで揃いますよ
>>2にある評価基板買えばOK
20774ワット発電中さん:2005/08/14(日) 11:43:45 ID:WGHo7kPK
レスありがとうございます。
Winマシンの購入、考えてみます。

昔 親が使っていたWinマシンを
最近になってお下がりでもらったので
Win 2kをインストールして使ってはいるんですけど
今 調べてみたらPentium II 266MHz、メモリも64 MBしかありませんでしたよ・・・
21774ワット発電中さん:2005/08/14(日) 12:22:08 ID:2c4R0T94
Win自体がちとつらいですが設計自体はどうせテキストエディタ使うだけですので良いかと。
コンパイルやシミュレーションの時間は多少かかるかもしれませんが、それは我慢しましょう。

書き込み自体はプリンターポートがあれば概ねOKだと思います。
22774ワット発電中さん:2005/08/16(火) 15:28:43 ID:SD3ghog/
>>20
>今 調べてみたらPentium II 266MHz、メモリも64 MBしかありませんでしたよ・・・

余裕でサクサク動く。エンジニアはもっと低レベルスペックのPCしか使ってないよ。
もし、買い換えるなら中古屋にいってNEC PC98マシンを買うのがいいよ。
23774ワット発電中さん:2005/08/16(火) 22:29:45 ID:PBUtH1Em
>17
この業界に入って10年になりますが、17さんがやっていることは
私が会社に入ってから5年目で習ったことですねw
先生に習う代わりに講習会逝って来い!って言われて勉強してました。
会社入ってからはMentorの回路図入力(Design Architectだったっけかな?)とかで
200枚とかの回路図をシコシコ描いてましたね。
あの頃が懐かしいな・・・(もう戻りたくないけどw)
SystemVerilog覚えろ!って言われてるけどよくわかんないから放置でいいやw
24774ワット発電中さん:2005/08/17(水) 00:55:41 ID:x2i9ua47
>>23
君の人生は君のものだから好きなように浪費したまへ
25774ワット発電中さん:2005/08/17(水) 02:33:37 ID:ntdJ0kZa
>>24
マルチ
26 ◆YMO/ALTERA :2005/08/18(木) 19:18:55 ID:PNflGyCe
>>20>>22 はネタかの?
メモリ64MBでW2Kは、ほぼ使い物にならないんでは?

W2K世代のA4中古ノートなら5マソ程度で手に入るハズなのでそっち検討されたし。
評価基板で遊ぼうというのであれば、プリンタポート(LPT)がついているのを
選ぶべし。

実習用だったら、Pentium3以降の世代でメモリ128MB程度積んでりゃなんとかなろう。


ところでAthlon64X2に手を出しましたよ俺貧乏。
27774ワット発電中さん:2005/08/18(木) 19:31:37 ID:p1pheElN
>>26
いやネタじゃないですよ。
そもそもメインで使っているPCではありませんから。

>>18に書いた通り、普段はMacを使っているんですよ。
28774ワット発電中さん:2005/08/18(木) 21:41:40 ID:IskBRBZT
とりあえず98はやめとけ(w
29774ワット発電中さん:2005/08/20(土) 12:18:40 ID:afSWukzz
いやー98は最高だよ。コストパフォーマンス考えると最高だ。RAあたりがいいよ
30774ワット発電中さん:2005/08/20(土) 21:08:22 ID:s1GuG/NF
>>29
その98はもっとダメ。
31774ワット発電中さん:2005/08/20(土) 22:02:55 ID:3on1cfJK
http://freewing-web.hp.infoseek.co.jp/sp2trip/

我ながら厨な質問ですが・・・
こういう「ソフトで処理していたことをハードで行う回路」を作ってみたいんですけど、
どういう勉強すればいいんでしょうか?
32774ワット発電中さん:2005/08/20(土) 23:07:13 ID:JIVjcu9s
別に・・・?
ただ論理合成に入力できる言語の文法さえ憶えれば
処理内容が決まっているならひたすら書くだけ
33774ワット発電中さん:2005/08/20(土) 23:19:39 ID:3on1cfJK
そうですよねえ・・・
34774ワット発電中さん:2005/08/20(土) 23:28:42 ID:JIVjcu9s
あと、本当に回路を作るなら最終的にはROM焼きしたりLEDとかで結果を出せにゃならんよな
ROMの焼き方や、LEDの光らせ方、半田付けとかは大丈夫なのか?
35774ワット発電中さん:2005/08/21(日) 13:48:26 ID:lrTF9nSh
トリップをLEDで結果表示は苦しいだろうね。
漏れならUSBかRS-232Cで出力しておいて
PC側でファイルに記録する予定だが。
36774ワット発電中さん:2005/08/21(日) 14:06:38 ID:0xqqpo06
秋葉で LED だのスイッチだの売ってるところをちょっと覗けばアイディアはいくらでも・・・
37774ワット発電中さん:2005/08/22(月) 00:41:47 ID:kytkzAtG
勉強、というならば、ソフト、ハードの得意・不得意な点を勉強するのがいいんじゃないかな

そうすればソフトでやってた処理のどの部分をハード化する(したい)か見えてくるかもよ?
38774ワット発電中さん:2005/08/24(水) 23:28:59 ID:W8LO/Acm
ある回路のブロック図があって、
それをVerilogで書いてみるとして、
入出力信号線の名前に関しては特に悩まないんですけど、
ブロック図内で使われている途中の信号線の命名にすごく悩んで時間を使ってしまいます。
別に適当にwire w0, w1, w2, ...と付けてしまっても良いんですが・・・

そこでお聞きしたいのですが、信号線に名前をつけるときなどに、
なにか命名規則のようなものってないんでしょうか?
あったらそれに従って見ようかと思うんですが。
39774ワット発電中さん:2005/08/24(水) 23:32:56 ID:jQCwTfnh
入出力信号と同じように内部信号も命名すればいいだけじゃない。
もしかして設計者でなく、単純に入力を頼まれてる人ですか?
4038:2005/08/25(木) 08:53:18 ID:+SOZalzJ
単純に入力を頼まれてて悪かったな。
文句あんのかゴルア !!!
41774ワット発電中さん:2005/08/25(木) 09:00:52 ID:Y+Mzo0Go
馬鹿か。
42774ワット発電中さん:2005/08/25(木) 09:48:45 ID:1gHzaVs/
いまどき、入力するだけの人を雇えるなんてうらやましいな。
43774ワット発電中さん:2005/08/25(木) 12:21:49 ID:GP0EfI9w
設計者だけどオレもよく悩む。あとのデバッグのこととかを考えて分かり易い信号名にしよう
とすると結構悩んぢゃうんだよねぇ。
44774ワット発電中さん:2005/08/25(木) 17:46:45 ID:V4fpx9RR
さっさとジェネレータ作れ
45774ワット発電中さん:2005/08/26(金) 21:09:09 ID:tDU1gCNq
>>44
ここで某濱田さんがジェネレータ実現してるって言ってるよ
http://www.fpga.co.jp/cbbs/cbbs.cgi?mode=all&namber=589&type=0&space=0&no=0
46774ワット発電中さん:2005/08/28(日) 00:00:45 ID:BTbo09lT
>>38
普通の大手の企業なら、設計基準があって、
topの信号名を含めた信号命名の基準があると思うが、
意外とうもれてて、そんなのがあることをしらない場合が
多いようだ。

昨年の秋に、初めてverilogの勉強を初めて、この冬から
設計を開始して7ヶ月後には私の書いた1MByteのソースを
テープアウトしてASIC化。

既に顧客評価中で、もうすぐ量産出荷&年間数十万個出荷されると
思うと恐ろしい。

信号名なんぞは、先頭をブロック名のキーワードに使う
ぐらいしか気にするひまがなかった。
47774ワット発電中さん:2005/08/28(日) 00:04:30 ID:+0q8aflq
入力はH01,H02...出力はN01,N02...
48774ワット発電中さん:2005/08/28(日) 17:39:06 ID:vOTh8sgH
わぁわぁわぁ、大昔の回路図をHDLに変換してものを渡されて
「機能追加しろ!!」って言われる夢をみそうだw
49774ワット発電中さん:2005/08/28(日) 18:35:24 ID:vtDAPayE
ワンショットにパターンヒューズ、ワイヤードORの本官撃ち状態?
50火魔人:2005/08/29(月) 01:55:23 ID:zmaoA5ms
>>48
いいなー・・・夢だけなら・・・
回路図が有れば内部は追い易いし。

設計資料が何も無く、コメントも無く、解析する時間も無いのに、
「仕様変更して!」って言われると、自分で作り直したくなって
しまうけど、バグを作り込んだ時の言い訳を考えると、やっぱり
大人しく頭を抱えて、リストと睨めっこする自分がorz

RTL書いた本人に聞こうにも、中国人だし・・・
51774ワット発電中さん:2005/08/29(月) 02:32:09 ID:CwEDRaNM
いや実際にあった話なんだけど…
下手に回路図をスクリプトみたいのでHDLに変換されるとAND, ORとかまで
モジュールにされ、信号名は47みたいな感じでわかりにくい。
進捗も最初は進んでるようにみえるけどメンテしにくくて、結果的
自分でわかりやすく入力しなおしたほうが早いという状態に…
二度とやりたくないです!!
52774ワット発電中さん:2005/08/29(月) 09:07:51 ID:o1vdMEV2
>>51
タイミングチャートと論理表を作って自分で書き直した方が安全。
ステップ数もうんと減って合成時間も短くて済む。
53774ワット発電中さん:2005/08/29(月) 12:54:59 ID:CwEDRaNM
わかっているけど上司に「無駄なことに時間かけるな!そのまま使え」,
「互換性に問題がでたらどうするんだ」といわれて泣く泣くなんだけどね…
最後に上司も「書き直したほうがよかったかな」と…
しかし別物で今度は大丈夫だろみないな感じで、同じことを違う人で
繰り返されてる…
54774ワット発電中さん:2005/08/29(月) 20:35:09 ID:H1dOF6CD
>>50
中国語、話すのは大変だけど字なら結構通じるよ
英語もありだし、中国語は英語の語順
55774ワット発電中さん:2005/08/29(月) 20:50:02 ID:4mFZBqWh
>>53
>最後に上司も「書き直したほうがよかったかな」と…

いい上司じゃないか
白を黒と言い通す人間はどこの会社にもいる
56774ワット発電中さん:2005/08/29(月) 22:41:42 ID:CwEDRaNM
ラスト2行を読んでもいい上司ですかw
57774ワット発電中さん:2005/08/30(火) 00:32:29 ID:XeqVZj2W
機械・工学板から誘導していただいて来ました。よろしくです。

VHDL歴2年、仕事の都合でVerilogに移行しなきゃいかんのですが、
VHDL使いがVerilog使いになるのに、最適な参考書があるのなら教えてください。

なお、初めからVerilogしか使って無い人たちは、下記2冊を持ってる人が多いようでした。

・改訂 入門Verilog HDL記述 (小林 優)
・実用入門 ディジタル回路とVerilog HDL (並木秀明+宮尾正大+前田智美)

周りのVerilog使いは、ほとんど同じだよ…と言ってるので、
たぶん自分は、Verilog覚えるとかいう以前に、
いろいろと問題があるのだとは思いますが、そこにはあえて目をつぶって…。

そんな都合良いものはない、というなら上記2冊のどちらが良いか…でも、構いません。
切迫しています。どうかよろしくお願いします。
58774ワット発電中さん:2005/08/30(火) 00:35:56 ID:tHNkEirZ
はっきり言おう
改訂版じゃないと基本的な部分で

”古い”

59774ワット発電中さん:2005/08/30(火) 01:03:38 ID:h3ibt70g
ise web版のmodelsimって、スピード
うんぬんを除くと、いつの間にやら事実上
行数制限が無くなったんですね。

良い世の中になったもんだ。
60774ワット発電中さん:2005/08/30(火) 01:31:18 ID:w3zeZDIJ
桜井某の入門書は、VHDLとVerilogが、対比して説明してなかったかな?
内容の良い悪いは記憶にないけど。

切迫してるなら、Amazonで片っ端から5万くらい買っとけ。
ここで「あいつは状況対応が早いな」と思われるなら安いじゃないか。

61774ワット発電中さん:2005/08/30(火) 01:50:41 ID:h3ibt70g
>>57
仕事で使うのなら、AltimaのVerilogのワークショップ
でも受けにいったら?
有料講座でも、1万ぽっきりだから、ただみたいな
もんだよ。
1日か2日で、それなりにレベルアップできるよ!!
表面的なものだけだけど。

切迫してるなら、なおの事、行くと時間の節約になる。
ただし、予約があいてるかどうかは知らんけど。

ちなみに、私がけっこう良いと思った本は
『Verilog-HDLによる論理合成の基礎』枝 均 (著)
6257:2005/08/30(火) 02:29:32 ID:XeqVZj2W
>>58,60,61

レスありがとうございます。
やはりここは、ちょっと金をケチらずに投資したほうがいいみたいですね。
ワークショップは、時期が合えば会社の金で受けられるのですが…。

元がVerilog文化の部署なのに、配属早々にVHDL使ってる部署に長期遠征させられまして。
2年間で戻されたのだけど、実績積んだ…という扱いで、プレッシャーかけられてて。
何が何やらわからず懸命にやってたら、割と良い仕事してた…らしい、というだけなのに…。
63774ワット発電中さん:2005/08/30(火) 10:30:32 ID:Wsf9aAem
>>57
とりあえず、今売ってるデザインウェーブマガヅンを買う。
6457:2005/08/30(火) 18:58:41 ID:XeqVZj2W
>>63
あ、なんか良さげ。
しばらく引きこもってたので、未チェックでした。
65774ワット発電中さん:2005/08/30(火) 22:08:57 ID:ICmtv0gK
VHDL使ってたならVerilogでも一緒だろ。つーかこっちの方がよっぽど書きやすいはずだ。
逆なら死にたくなるだろうが。
でも、VHDLはもう終わりだな。SystemCとともに。
66774ワット発電中さん:2005/08/30(火) 23:36:14 ID:6dbugxxT
ほんとに終わってくれればいいけど…
いつもいろんな言語が中途半端に生き残るから、使わなきゃいけない
言語が増える一方って気がするよ…
67774ワット発電中さん:2005/08/31(水) 02:27:04 ID:uBp5ybso
こないだまでDOSのABEL専用マシン&ライターが鎮座してた。。

もしかしたら要るかも・・と言い続けて、部屋の片隅に置かれていたが、
先日新人により、起動もしなかったということが発覚して破棄。

たぶんマザーボードの電池だろうけど、何年前から壊れてたんだろ。


68774ワット発電中さん:2005/08/31(水) 03:36:49 ID:DSUoTrsk
今のところ、VHDLのほうが書きやすいな。
なんか制限が多い方が楽なのよ。
机の上とか片付けられない人間なもので。
69774ワット発電中さん:2005/08/31(水) 08:36:39 ID:ScVlLmuV
modelsim のPEって未だVHDLサポートしてたっけか?
SystemVerilogはmodelsimでもSynplifyでもサポートしてる。Verilogとあんまり変わらんし、
そろそろQuartusやISEでもサポートされるんじゃないの。
一度2001とかSystemVerilog使うと1995には戻れんな。
70774ワット発電中さん:2005/08/31(水) 15:06:47 ID:bz8w29B3
>>69
> modelsim のPEって未だVHDLサポートしてたっけか?http://www.mentorg.co.jp/solution/fpga-pld/simulation/pe.html
してるね。元々VHDLを先にサポートしていた会社だったと思ったから、
modelsimはVHDLのサポートは続けていくんじゃないかな?
やめるにやめられないのかもw

> そろそろQuartusやISEでもサポートされるんじゃないの。
http://www.altera.co.jp/products/software/products/quartus2/design/qts-design_flow_pld.html
http://www.xilinx.co.jp/ise_eval/index.htm
大昔からOKだったと思ったけどなぁ。混在のをやった記憶がある。

http://www.mentorg.co.jp/solution/fpga-pld/simulation/languages.html
知らなかったんだけど、VHDL2002なんてあったんだw
71774ワット発電中さん:2005/08/31(水) 15:54:32 ID:Fcx0Vwsl
>>70
modelsimはともかくとして、FPGAのメーカーサポート標準ツールが
SystemVerilogに対応するのは、まだまだ先のことでしょう。
72774ワット発電中さん:2005/08/31(水) 16:29:10 ID:tFPWz8au
Modelsim のSVは、サポートしていない構文が多いよ。まだ、かなりいい加減な感じ。VCSじゃないと使えるレベルにないと思う。。
73774ワット発電中さん:2005/08/31(水) 16:56:51 ID:AsRVy3SK
>>70
QuartusもISEもまだSystemVerilogサポートしてないけど・・・

SystemVerilogの話じゃなくVerilogHDLとVHDLとの話なら、紛らわしいのでごっちゃにしないで。

後者だと仮定するけど、ISEは3とかくらいまでは混在するのをやりたければwebpackじゃなくて有償の
baseとかfoundation選ばないと出来なかったよ。
7470:2005/08/31(水) 18:16:51 ID:bz8w29B3
>>73
> 紛らわしいのでごっちゃにしないで。
つーか、ごっちゃになってたの!(笑) スマソ VHDLの話書いてたよorz
VHDLの話からいつのまにかSystemVerilogに移っていたなんてw(2行目でだけど)

そうですねSystemVerilogはサポートしてないですね。
やはりいずれは対応されますでしょうね。シンプリファイ買っているから内んところは問題ないかな
75774ワット発電中さん:2005/08/31(水) 18:19:52 ID:fktAHF+u
>>70
PEではサポートしてるがLEでは既にVHDLはサポート対象外。

>大昔からOKだったと思ったけどなぁ。混在のをやった記憶がある。
そもそもSystemVerilogの仕様が決まったのはつい最近だし、これらデバイスフィッタはSystemVerilogはサポートしてない。キッパリ。


76774ワット発電中さん:2005/08/31(水) 18:21:56 ID:fktAHF+u
>>74
>シンプリファイ買っているから内んところは問題ないかな
ライブラリ使うときが問題でしょ。どうやってコールするの?
77774ワット発電中さん:2005/09/01(木) 13:45:13 ID:cm5Q7b4J
78774ワット発電中さん:2005/09/01(木) 22:01:45 ID:s1L62AFc
質問させてください。
VHDLで バス設計をするために、pin設定をinout : std_logic
にしました。
このピンに対して入出力はどう設定したらいいんでしょうか?
自分なりにいろいろ探してみたんですが、わかりませんでした。

 よろしくお願いします。
79774ワット発電中さん:2005/09/01(木) 22:50:25 ID:riCthB9l
普通に、入力側に書いたり出力側に書いたり、じゃダメだっけ?
80774ワット発電中さん:2005/09/01(木) 23:05:19 ID:2j7sI8RW
process (en,data_out) begin
  if(en='1')then
    BUS <= data_out;
  else
    BUS <= (others=>'Z');
  end if;
end process;
data_in <= BUS;

でOKかと。 BUSがinoutね
81774ワット発電中さん:2005/09/01(木) 23:20:52 ID:bIepO+Id
どうでもいいけどBUSとUSBって似てるな・・一瞬そう思った
Sub USB Busなんてな ふふっ
8278:2005/09/02(金) 00:10:55 ID:DuoalkwM
ありがとうございます。
あした会社でシミュレーションしてみます。
8378:2005/09/02(金) 00:18:21 ID:DuoalkwM
 見れば見るほど そのプログラムが
わからなくなる。
どの一文が in で どれが outなのか???
84774ワット発電中さん:2005/09/02(金) 00:30:53 ID:E0QPyUZk
8580:2005/09/02(金) 00:37:04 ID:iJlUfll0
BUS <= data_out;
BUS <= (others=>'Z');

がFPGAの外への出力で

data_in <= BUS;

がFPGAの外からの入力
86774ワット発電中さん:2005/09/02(金) 00:46:31 ID:DuoalkwM
78です
なぜ Z灰インピーダンス設定なのですか?
8780:2005/09/02(金) 01:00:36 ID:iJlUfll0
FPGAからの外からの入力を受け付けるときに、FPGAが外へ0か1を出力してると
出力同士がぶつかるからです。バスファイトてやつです。

en='0'のときのみ、外からの入力を受け付けるように人間様が設計します。
88774ワット発電中さん:2005/09/02(金) 01:01:51 ID:VTWQBiC/
>>78
>自分なりにいろいろ探してみたんですが、わかりませんでした
おい!いろいろって、どこをいろいろ探したんだ!?
そんなやり方そこらじゅうに書かれているぞ。
お前は本当に探したのか?

ついでに80の書いたやり方はif文、つまりprocess文の中だ。
whenで書いた方がいい。
8980:2005/09/02(金) 01:12:01 ID:iJlUfll0
>>88
BUS <= data_out when(en='1') else 'Z';

こっちのほうが推測されやすいてことでつか?
90774ワット発電中さん:2005/09/02(金) 01:27:29 ID:XOp/W7Fz
さがしたのは トラ技スペシャルのVHDLと もうひとつの参考書
あとはネットです。

ネットで灰インピーダンスに設定しろ とかいてありましたが
プログラムでは確認できなかったので わかりませんでした・。

返答してくれた人 感謝します。
91774ワット発電中さん:2005/09/02(金) 01:38:09 ID:VTWQBiC/
process文だと書き間違えるとラッチが出来てしまう。
信号数が少なければ書き間違いは起きにくいけど、
信号がいっぱいある場合にうっかりラッチを作ってしまうと、
デバッグで泣くはめになる。
このくらいの規模なら89のようにwhen文を使ったほうがいい。
9280:2005/09/02(金) 01:41:55 ID:iJlUfll0
あ、なるほどね。最近のコンパイラの中の人はワーニングとかでラッチ作ったとき教えてくれるとはいえ、
てんぱってるときは気づかなかったりするもんなぁ。

最近ラッチのよさが分かってきた。でも設計は大変だ・・・
STAツールがまだ使いこなせてないから、非同期設計はまだ早いかな。<自分
9388=91:2005/09/02(金) 02:08:22 ID:VTWQBiC/
ちょっと不安になって実際にISE 6で、XC956にその回路をフィットさせてみた。
すると、あれれ!?
センシティビティリストに書かなくても、ラッチにならない。普通に出来てしまう。
なーぜー???
94774ワット発電中さん:2005/09/02(金) 13:44:13 ID:tYnxKM9O
クロックが入らないから
95774ワット発電中さん:2005/09/03(土) 11:33:27 ID:DCHqpy8t
仕事で使うのにのんきな方と
厳しい風にさらされてる方と、
両極端に分かれた発言になってる気がするのが面白い。

私は去年、初めてVerilogを勉強はじめた時の経験をば述べると
(1) 定番のVerilogの教科書本を借り、3日で読破。
暗記する必要なんてないから、文法がどんな感じか
Verilogの記述スタイルの確認作業を主とした。
(2) QuartusIIは使ったことはないが、(1)の3日の勉強で
それなりの経験者ということにして、Altimaの有料
ワークショップに参加。本当は新横浜に行きたかったが
予約が埋まってたから新大阪を予約したというと、
新横浜に押し込んでくれた。
96774ワット発電中さん:2005/09/03(土) 11:37:04 ID:DCHqpy8t
(3)会社の設計基準書を読む
3日ぐらいで、Verilogのベストな記述スタイルが
どうなのか感触をつかむ。
(4)その後、従来のVerilogソースをひたすら読んで、
ひたすら従来回路のブロック図を書きまくった。
2ヶ月ぐらいかけたかな?
(5)一番論理の難しいブロックにさしかかり、いくら
ブロック図をながめても、さっぱり動きがわからないので、
仕様追加ができない。
難しいブロックの従来回路は捨てた。骨格だけ残して、
まるごと新規設計。1ヶ月ぐらいかけて、まだ設計の
残項目はあったが次のステップに移行。
97774ワット発電中さん:2005/09/03(土) 11:38:51 ID:DCHqpy8t
(6)Verilogソースをエディタで書きはじめて、
1ヶ月後には、ピーク時で1日2000行のソースを
記述。まじで手が痛くなった。
(7)助っ人をアサインしてもらって、できるところから
シミュレーションしてもらう。
私だって、modelsim使ったことないのに、3日で
modelsim を使えるように試行錯誤して、簡単な
環境を整えて。うーツライよ。お願いした。
環境が整ってるの状態で依頼されるのが普通だと?
modelsimぐらい自分でインストールしろよ。
自分がどうやってインストールしたかいちいち覚えとら。
金はらって買ってんだから、わからんなかったら、
メーカに聞けよ。
(8)もうぐちゃぐちゃ。
98774ワット発電中さん:2005/09/03(土) 11:45:22 ID:DCHqpy8t
(9)なんとか全てのブロックを記述したぞ。
(10)旧回路の設計者を読んで、装置シミュレーションの
環境を立ち上げた。仕様が相当かわってるので、そのままじゃ
まともに動かんことはわかってるが、なんか動いてるふりを
してる。
(11)論理合成の1stトライだ。
論理合成の環境を整えてもらって、論理合成。
なんとか、論理合成はできたが、まだ、全体simの
まともにやってない。動いてるふりをしてるだけだ。
99774ワット発電中さん:2005/09/03(土) 15:01:40 ID:8o+2OQNW
1年前にはじめた初心者が愚駄愚駄と書き込むなアホ。
しかも、糞内容で上げやがって。
100774ワット発電中さん:2005/09/03(土) 19:23:02 ID:Lg/SQmCH
>>99
添削して欲しいから上げてるんだろうから
あなたのレベルで添削してあげれば?

漏れはようやらん
101774ワット発電中さん:2005/09/03(土) 20:04:39 ID:T5SNa0p2
条件式ってみなさんどのぐらい使ってますか?
この前、数えたら、8重にネストしてるのがあって閉口しました。
102774ワット発電中さん:2005/09/03(土) 20:15:48 ID:GrXsytfr
うーん、3重ぐらいまでにとどめる様がんばるかなぁ
あんまネストすると重いのもあるけど、スッキリしないから敬遠する。
103774ワット発電中さん:2005/09/04(日) 13:53:07 ID:UNGRf3Xp
(1)Behavior記述の解説本を入手したが役たたずに気づいて3時間で捨てた
(2)SYNOPSYS DCについてきたRTL解説に目を通した
(3)当時は他人の書いたRTLソースなんて入手不可能だったから
  ひたすらコンパイルしてゲートレベルの回路をschematicで検証
(4)ようやくoptimizeの振る舞い込みでRTLが分かってきた頃
  DCがバーションアップして(3)へ戻る
104774ワット発電中さん:2005/09/04(日) 16:02:07 ID:EOPVyyam
>>100
(2)がそもそも間違い。
Altimaはダメダメ。某会社でAltimaに開発委託したら半年予定が2年にたっても出来上がらず。
Xilinxに乗り換えて東京エロクトロンデバイスに頼んで3ヶ月で完成。

105774ワット発電中さん:2005/09/04(日) 21:53:19 ID:jxhRedRX
>>104
東京エロクトロンデバイスと言う所でウソ丸だし。はっきり言ってありえない。
106774ワット発電中さん:2005/09/05(月) 10:41:27 ID:H3/bQNSI
>>105
altima(マクニカ)関係者乙!
107774ワット発電中さん:2005/09/06(火) 01:13:34 ID:GgZQyVZJ
TEDはすごい会社だよ〜
このスレのFPGAに限定すれば、ただの国内代理店だけど。

予算があるなら丸投げして安心な会社であることは間違いない。
あそこに所属するエンジニアが優秀かどうかは別問題だよ。
基本的に商社なんだから。


108774ワット発電中さん:2005/09/06(火) 01:24:23 ID:ce2G+Mzd
>>107
TEDもどっかに丸投げしてるんでしょ?
国内の零細企業だか、台湾だか
109774ワット発電中さん:2005/09/06(火) 03:51:34 ID:/p0lDgQy
担当がかわるとレベルが落ちることあるよね
110774ワット発電中さん:2005/09/06(火) 13:24:06 ID:nYWkh9wE
Verilogを学びたいのですが、初心者におすすめの参考書教えてください。
電気系の学部四回生です。
111774ワット発電中さん:2005/09/06(火) 13:40:40 ID:VYU18ChI
>>110
デジタル回路をきちんと理解している人向けなら
実用入門 でじたるかいとVerilog HDL 技術評論社 ISBN-7741-0321-7(4155円)がおすすめです。
(もっとも頭の方でブール代数なんかのまったくの初心者からにも対応していますので
初心者からもおっけーなんですけどね)

CD-ROMも付いてますのでちょっと高めかな。
112774ワット発電中さん:2005/09/06(火) 13:41:22 ID:VYU18ChI
>>111
実用入門 デジタル回路とVerilog HDL


失礼しますた。
113774ワット発電中さん:2005/09/06(火) 14:40:15 ID:nYWkh9wE
>>111
ありがとうございます。
大学生協に見に行ってきます。
114774ワット発電中さん:2005/09/06(火) 19:15:56 ID:UUVzlJ+G
Verilogの質問なんですが、
taskの中で@(posedge CLK)とかwaitとか書いたら、
Unsupported Event Control Statement.とか
Unsupported Wait Statement.
とsynthesizeに怒られました。
taskの中で時間制御するにはどういう記述をすればいいんでしょうか?
115774ワット発電中さん:2005/09/07(水) 00:22:27 ID:ZvniQ3qz
>>108

そこが重要。
人様に向かって、「寝ないでもやれ!死んでもやれ!」
とか言うのは普通の人間は嫌だから。

品のいい営業さんに向かって、「間に合うようにどうにかお願いします」
って電話して帰ったほうが、気持ちよく眠りにつけるじゃん。


116774ワット発電中さん:2005/09/08(木) 09:59:03 ID:8X2qNyZO
>>114

そこが重要。
117774ワット発電中さん:2005/09/08(木) 10:34:47 ID:Kg3j41ww
だれかI2CインタフェースをHDLで作った経験あるひと、
もしくはI2Cに自身ある人いない?
118774ワット発電中さん:2005/09/08(木) 10:57:55 ID:vC8KC7/w
は〜い
119774ワット発電中さん:2005/09/08(木) 11:03:08 ID:itC7aYbt
>>117
ルネサスサイトのH8用ライブラリにある「汎用ポートでI2Cと通信する。」
のCソースをベースにVerilog HDLに仕上げました。
仕事でやったやつなのでソースはあげられませんが、インプリメントは簡単ですよ〜。
120774ワット発電中さん:2005/09/08(木) 12:58:22 ID:Kg3j41ww
おぉ、ありがたい。悩み解決た、たのむ。>>188,199

マスタ⇒スレブの転送でさ、1バイト目にスレブアドレス指定するじゃん?
そのとき、SCL9CLK目でスレブがack('L')出すじゃん?スレブはそのまま
SCL=Lを保持してウエイトかけるっしょ?でさ、このときマスタのSCL=Hじゃん?
んで、スレブがSCLをHにしたら、バスのSCLもHになるじゃん?
で、次の2バイト目を始める為にマスタのSCL=Lにするじゃん?
そしたらさ、そしたらさ、バスのSCLはすでに見た目1つのSCLパルスが出てる
ことになるじゃん?てことはさ、すでにSDAはMSBのデータを出しとかないといけないの?
ここの手順がさっぱりわからんのすわ。
たふけて(T T)
121774ワット発電中さん:2005/09/08(木) 12:59:25 ID:Kg3j41ww
120す。誤記りました。
>おぉ、ありがたい。悩み解決た、たのむ。>>188,199

おぉ、ありがたい。悩み解決た、たのむ。>>118,119
122774ワット発電中さん:2005/09/08(木) 13:16:26 ID:Kg3j41ww
>>114
普通のsimなら問題ないはず。
ていうか、、それ、、、合成したいってこと?
123114:2005/09/08(木) 15:41:09 ID:Cz9qx8Ws
>>112
そうです。シミュレーションはできるんですが、合成が(´・ω・`)
124774ワット発電中さん:2005/09/08(木) 15:46:54 ID:TFRUZSHN
藻前はアホか!できるわけないやろ!
125774ワット発電中さん:2005/09/08(木) 16:03:14 ID:vC8KC7/w
SCL Low(master) → SCL Low(slave) → SCL High(master)
→ SCL High(slave)の場合、SCLラインはmasterがLowにして
からslaveがHighにするまでLow状態。

オープン・ドレーン出力でドライブするので、Lowは機器が
出力し、Highはプルアップ抵抗でってのは知ってますよね!?

マスタはSCLラインの状態を監視してHighになるまで次の動作
を止めれば問題なし。

だったと思う。
126774ワット発電中さん:2005/09/08(木) 16:25:02 ID:Kg3j41ww
>>125さん レスどもです。

>SCLラインはmasterがLowにしてからslaveがHighにするまでLow状態。
私も始めそう思ってました、でも、、、
マスタがLowを出力してるなら、slaveがHignにしてもバスはLowなので、
「slaveがHighになるまで」というのを監視できないと思うのですが、、、。
127774ワット発電中さん:2005/09/08(木) 16:29:28 ID:Kg3j41ww
>>123
@(xxxedge aaa)(←alwaysなし)やwaitはあくまでもテストベンチ用の記述だと
思ってください。
どうしても合成したいなら、同機能をエッジ検出やカウンタを利用して
記述すればいいかと思います。
128774ワット発電中さん:2005/09/08(木) 16:51:05 ID:vC8KC7/w
監視すると次のケースになると思います。
1. masterはLow出力でSCLラインもLow(この場合SlaveがHigh/Low関係無し)
2. masterはHighにしてるのに、SCLラインはLow(SlaveがLow出力)
3. masterはHighでSCLラインもHigh

監視して2.の状態になったら、masterはSCLがHighになるまで待てばいいだけ。
masterがLowのときslaveがHighって状態は、わからなくて当然。
というかわからなくても問題なく制御できるよね!?
129114:2005/09/08(木) 17:43:11 ID:Cz9qx8Ws
>>127
そうでしたか・・・。
どうもありがとうございました。
130774ワット発電中さん:2005/09/08(木) 17:49:30 ID:Kg3j41ww
>>128さん
え?ということは、やはり、slaveがwait(SCL="L")をかけている間は
masterの出力SCLは"H"ということですよね?
そしたら、話が戻ってしまうのですが、slaveがSCLを'H'に上げた瞬間が次の転送バイトの
1bit目のSCLパルスの立ち上がりと考えていいのでしょうか?
と言うことは、slaveがSCL=Hとなる前に(つまり1byte目の転送終了後即)
次のSDAの1bit目をあらかじめ用意しておくということでよろしいでしょうか?
131774ワット発電中さん:2005/09/08(木) 18:55:49 ID:vC8KC7/w
126で条件がかわったと思ったので128のように回り道してしまいました(_o_)

slaveがSCLをHighにしたら、次の転送バイトの1bit目が有効データ
ってことになります。

>と言うことは、slaveがSCL=Hとなる前に(つまり1byte目の転送終了後即)
>次のSDAの1bit目をあらかじめ用意しておくということでよろしいでしょうか?

この部分は、slaveが次のデータの用意ができるまでSCL=Lとし、
用意ができたらSCL=Hとするって感じですね。
あらかじめデータの用意ができていればwaitをいれる必要がないし、
SCL=Hにするのはslave自身ですから…
ちょっと言葉遊びみたいになって、すまん。
132774ワット発電中さん:2005/09/08(木) 19:42:20 ID:GQS8H+eV
>>130
> slaveがSCLを'H'に上げた瞬間
ここからmasterが ack/nack の読み込みを始めるんだよ。

8bit目の終りから言うと
master_SCL=H、slave_SCL=H、ライン_SCL=H
master_SCL=L、slave_SCL=H、ライン_SCL=L
master_SCL=L、slave_SCL=L、ライン_SCL=L←ack/nackのWAIT開始
 (この辺で8bit目のSDA=H)
master_SCL=H、slave_SCL=L、ライン_SCL=L←WAIT中
 (この辺でslaveがack/nackを確定)
master_SCL=H、slave_SCL=H、ライン_SCL=H←WAIT終了
 (ライン_SCL=HがHになったからmasterがack/nackを取込み)
master_SCL=L、slave_SCL=H、ライン_SCL=L←1byte目の転送終了
 (ライン_SCL=Lになったらslaveがack/nackを開放)
 (2byte目の1bit目の送信準備)

こういう事じゃない? 実は俺も昨日から作り始めたんで間違ってるかもしれんが・・・
もし間違ってたら、エライ人の突込み希望。
133774ワット発電中さん:2005/09/08(木) 20:06:41 ID:4am/2QiC
>>120
> で、次の2バイト目を始める為にマスタのSCL=Lにするじゃん?
> そしたらさ、そしたらさ、バスのSCLはすでに見た目1つのSCLパルスが出てる
> ことになるじゃん?てことはさ、すでにSDAはMSBのデータを出しとかないといけないの?

マスタがSCL=LにしたあとSDAに次のデータのMSBを設定してSCL=Hにする。
134774ワット発電中さん:2005/09/08(木) 20:08:05 ID:bKUddhRv
>>130
ここは読んで見たか?
ttp://www.necel.com/ja/faq/mi800/__v85iic.html
このページの[データ転送]部分を読めば分かると思うが、マスターからスレーブへデータを送る時は
・スレーブがACK(SDA='L')を返す。(bus_SCL='L')
・マスターがmaster_SCL='H'にしてACKを読み、その後master_SCL='L'にする。(bus_SCL='L'->'H'->'L')
・マスターは自身のデータ転送準備が終わるまでSCL='L'にする。(bus_SCL='L')
・スレーブがbus_SCL='L'を読み、自身のデータ転送準備が終わるまでSCL='L'にする。(bus_SCL='L')
・マスター、スレーブ共に自身のデータ転送準備が終わり次第SCL='H'にする。(bus_SCL='L')
・マスター、スレーブの両方がSCL='H'とした時、bus_SCL='H'となる。
・スレーブはbus_SCL='H'を読み、データ(1Bit目)を取り込む。
・以下マスターがSCLを駆動し、データ転送。
文章にするとこんな感じか?
135774ワット発電中さん:2005/09/08(木) 20:52:56 ID:vC8KC7/w
仕様書にずばりのタイムチャート(Fig.6)が載ってる
それ見たほうが早いかも…
136774ワット発電中さん:2005/09/08(木) 21:13:09 ID:vC8KC7/w
>>132
slaveがwait入れる場合、masterがデータの有効無効を判断できるように
ackの次のタイミングでwaitだったような…
今お外なんで不確かな情報ですまん
137774ワット発電中さん:2005/09/08(木) 21:57:02 ID:vC8KC7/w

データの送信側(今回はslave)がwaitをいれるときはackの次のタイミング。
データの受信側(今回はmaster)がwaitいれるときはackのタイミング。
でした…orz
138774ワット発電中さん:2005/09/09(金) 09:55:14 ID:72QbD5ic
みんなありがとう!
>>131
私が「データの用意」と言っているのは、マスタのほうなんです。
スレーブのSCLが立ち上がった瞬間が次のバイトのMSBとなるなら、
マスタはそれまでにデータを用意しておく必要があるのかなと。

>>132
> (この辺で8bit目のSDA=H)
マスタ⇒スレブ転送なんで、8bit目のSDA=Lじゃないといけないと思うのですが、、、

>>133
やはりそうですか!?とりあえず今はの見解で進めてます。

>>134
すいません。このページとフィリプスの仕様書を読んでも理解できなかったんです。
[データ転送]でSCLの手順は分かります。でもマスタが次のバイトのMSBにあたるSDAを
確定させるタイミングが分からないのです。

>>135
仕様書の図6[I2Cバス上のデータ転送]
では、次のMSBを確定させるタイミングは、スレブがwaitを解除するタイミング
(clock line held .[略]. are serviscedの箇所)
になっていますが、スレブがwait解除するとともにSCLはHとなる為に、
この図のようにならない(1つめのSCLパルスがSDAの変化と同時刻、もしくは
SDAのほうが遅くなってしまう)と思うのですが、、
139774ワット発電中さん:2005/09/09(金) 10:06:03 ID:72QbD5ic
もうひとつ、、

>>132
> > slaveがSCLを'H'に上げた瞬間
> ここからmasterが ack/nack の読み込みを始めるんだよ。
え!??!?スレブがwaitを解除してから、マスタがack/nackを判断するのですか?
9bit目でスレブがack/nackを載せているのに、wait解除時のSDAを見てack/nack
を判断するんですか!?

。。。もうわけわからなくなってきました。
どの仕様書を見ても
[マスタ]SDA
   SCL
[スレブ]SDA
   SCL
[バス]SDA
   SCL
と全ての波形を載せて説明しているところがないのが、非常にわかりずらく
している原因かと、、、。

とにかくいつまでも止まっているわけにいかないので
>>133 で進めてみることにします。

140132:2005/09/09(金) 19:46:32 ID:RFb9yUzy
ごめん。言葉足らずだったね。
>> (この辺で8bit目のSDA=H)
>マスタ⇒スレブ転送なんで、8bit目のSDA=Lじゃないといけないと思うのですが、、、
   ↓ 訂正
 (この辺で8bit目のmaster_SDA=H)
slave_SDA=L(ack) は、>>132 のack/nackのWAIT開始〜WAIT終了の間のどっか。

何か話が食い違ってるように見えるけど、WAITするのは何の為?
slave_address送信後のackでslaveがWAIT入れてくるのは、slaveがack返すかnack
にするか迷ってるからだよ。slave_adr送信が終ったところ(8bit目,R/Wを気にしなければ7bit目)で、
slave側は「俺か!」と気付く訳で、そこからslave側は「masterの相手してやる余裕があるか、
忙しいから返事してやらないか」を判断してack/nackを返す。
つまりこの場合のWAITは8bit目と9bit目(ack/nack)の間のSCL=L期間を延ばして
返事するまでの時間を稼いでいる事になる。

・・・っと、これが俺の認識だけど、これで合ってる? えらい人、添削してくれ!
(回答するフリをしながら、実は俺も教えてちゃん orz )
141132:2005/09/09(金) 20:03:27 ID:RFb9yUzy
言い忘れたが、slave_adr送信の9bit目(ack)の後にslaveはWAITかけないよ。
9bit目(ack)の後にslaveがWAIT入れてくるのは、slave→master 転送(data_read)
のackの後くらいじゃないかなー。あんまり自信無いけど・・・
142774ワット発電中さん:2005/09/09(金) 20:09:42 ID:2I8OMk8X
>>141
多分おいら(ID:vC8KC7/w)へのレスだと思うが、おいら自身slave→master転送
を前提に話してました…orz
waitと送受信の関係は
データの送信側がwaitをいれるときはackの次のタイミング。
データの受信側がwaitいれるときはackのタイミング。
でいいんだよね!?
143132:2005/09/09(金) 20:28:38 ID:RFb9yUzy
>>142
いえいえ、あんまり気にせずに書き込んでます。 俺も教えてちゃんなもので・・・
実際のところ、英文資料も含めてこの辺り詳しく解説してる資料無いんだよね〜。
おまけにwait挿入してくるslave、お目にかかった事も無いし。ハハハ(自爆かな?)
一般的なデバイスから見たらI2Cって十分遅いから、WAIT入れるまでも無いんだろうな〜きっと。
今までCPUの機能を使ったI2Cはそこそこやったが、ハード(HDL)は今回
初チャレンジなもので、今週いろいろ調べてたんだよ。
そこに >120 氏のカキコ。 思わず、呈良く便乗させてもらってます。

最後3行。 俺の認識もそうですよ。 「間違いない」と自信持っては言えないですけど。
144774ワット発電中さん:2005/09/09(金) 23:35:55 ID:/zLrA/A2
I2Cってライセンス料が発生する見たいね。
うちの製品のICもI2C載ってるのがあるんで
ライセンスを受けているらしい。趣味なら
関係ないけど。
145774ワット発電中さん:2005/09/10(土) 00:36:40 ID:qvkoJk7m
趣味なら、じゃなくて機器メーカにも関係ない話だ。

146774ワット発電中さん:2005/09/10(土) 06:01:45 ID:u9Yifvm4
ここ分かりやすいよ。
ttp://www.necel.com/ja/faq/mi800/__v85iic.html
I2Cの特許は失効してるんだと。
147名無しさん@そうだ選挙に行こう:2005/09/11(日) 16:24:23 ID:zVqTlJLr
だから今までは「I2C」って言わずに、「2線シリアルI/F」って言ってた。
これからは何の気兼ねも無く「I2C」って言えるって事。
148名無しさん@そうだ選挙に行こう:2005/09/11(日) 18:50:39 ID:qqVrfv/c
>>147
特許は失効していても商標とかは大丈夫なの?
その辺くわしくないもんで…
149774ワット発電中さん:2005/09/12(月) 00:41:46 ID:uSQY1CK+
I2CといわずにI2C互換とかI2C準拠といえば無問題
セントロニクス準拠と同じ話だろ
150774ワット発電中さん:2005/09/12(月) 04:01:22 ID:Z8FOUgWm
>I2CといわずにI2C互換とかI2C準拠といえば無問題
I2C互換でもI2C準拠でもI2Cいうとるやないか!!アホか?テメエ
151120:2005/09/12(月) 10:07:15 ID:sE//pJru
>>140 さん、ども、御意見ありがとうございます。

>>何か話が食い違ってるように見えるけど、WAITするのは何の為?
[略]
>>つまりこの場合のWAITは8bit目と9bit目(ack/nack)の間のSCL=L期間を延ばして
>>返事するまでの時間を稼いでいる事になる。

ということなんですが、私とはwaitの使い道の考えが異なるようですね、、、。
私は、waitをかけるのはスレブが、「俺か!」と考えてackを返すのではなく、
「俺か!、よし、データ受信の準備をするよ、ちょとまってね」と考えてから
ackを返すものと考えてました。
ttp://www.necel.com/ja/faq/mi800/__v85iic.html
の[データ転送]のところの図でも、slaveがackを返した後にウエイト解除を行って
います。また、解説にも「・・・通信準備を行い、準備が完了したらSCLをロウに
引くのを止めます。これによりSCLはマスタが制御できるようになり・・・」
とあります。
ですからどうしてもackを返すのを考えるためにwaitをかけているようには見えないのです。

ほんと、実際どうなんでしょう。。。なにか決定的な資料とかありませんかね。
資料が無いのは「意図的」なもんなんじゃないかと心配になってきた。。

ちなみにI2Cの特許は切れているので、勉強がてらに作成している人や活用している
企業は多いと思っています。たくさんの有識者の意見をお聞きしたいです。


152774ワット発電中さん:2005/09/12(月) 10:44:07 ID:m/z6uFbv
>>150
4(3かも)線式通信方式とか言ってなかった?電源ペアとSCLとSDA
153774ワット発電中さん:2005/09/12(月) 10:53:45 ID:m/z6uFbv
154120:2005/09/12(月) 17:11:42 ID:sE//pJru
>>153
ありがとう!これはかなーり勉強になったよ。
応用の仕方が詳しくノってるし。
155774ワット発電中さん:2005/09/12(月) 18:49:15 ID:m/z6uFbv
>>154
119の情報みてぐぐっていれば悩まなかったカモね。がんがれよ〜。
156132:2005/09/12(月) 20:51:51 ID:Jwx8LbmO
>>151
120氏、あなたの方が正解のようです。 敗北宣言しときます。 済みません。

「この説明だとackの前にWait入る事もあるだろ。」って負け惜しみしようかとも
思ったんですが、自分の誤りに気付いて納得してしまいました。
Philipsの仕様を良く読み返してみたら、Hs_mode の説明のところに
slave_SCLH=L期間を延ばすのはack_bitの後って書いてありました。
多分これがF/S_modeにも適用されてるんだろーな。

>>153
ありがとうございます。 私も御礼を言っときます。
157774ワット発電中さん:2005/09/25(日) 22:47:21 ID:hCwDfR0s
VHDL→Verilog転向者なのですが、generate ってどういう時に使ってますか?

最近の本でも、書式が微妙に違ったり、generate自体が載ってなかったりしてます。
使い方が載っていても、使い所がわからない(こういうときに便利、っていうのが)
使わずに済みそうな気もするのですが……。
158774ワット発電中さん:2005/09/26(月) 00:42:06 ID:Gv1oIhZw
VHDL→Verilog転向者なのですが、function ってどういう時に使ってますか?

最近の本でも、書式が微妙に違ったり、function自体が載ってなかったりしてます。
使い方が載っていても、使い所がわからない(こういうときに便利、っていうのが)
使わずに済みそうな気もするのですが……。
159774ワット発電中さん:2005/09/26(月) 00:49:06 ID:hlV/lici
>>158
つまらねぇ
>>157
パラメータによって要素の個数が変わったり構成が変わったりするときに使う
160157:2005/09/26(月) 09:46:35 ID:vmVH+JQF
>>159

ご回答ありがとうございます。使い所がわかりました。

書式違いの件は、Verilog HDL 2001仕様か否かで、
項目が無い本は、文法書ではなく記述と合成結果に着目した本だからのようでした。
161774ワット発電中さん:2005/09/26(月) 11:23:10 ID:gNSn0MVo
$monitor("a=%d",a[3:0])
といった様な書き方は可能ですか?
イカロスを使っているのですが、vvp〜の時点で強制終了します。
162774ワット発電中さん:2005/09/26(月) 21:24:07 ID:sOnAh7t/
それは、サポートしていない。CVERを使え
163774ワット発電中さん:2005/09/26(月) 23:36:14 ID:KlShM9iQ
デザインコンパイラを使用した場合には下のどちらがが速い動作になるのでしょうか?(ちなみに
同じマルチプレクサです)

if () then
elsif () then
elsif () then
elsif () then
else
end if;


if () then
else
if () then
else
if () then
else
end if;
end if;
end if;

上の表記だと出力のMUXが4to1になりますが、条件デコードがプライオリティ化されます。
下の表記だと出力のMUXが2to1のプライオリティ化、条件デコードが平行化されます。動作速度は
ほぼ同じです。
164774ワット発電中さん:2005/09/27(火) 00:44:52 ID:cS8Viz6S
>>157
好んで使わなくてもいいかもよ。

パッケージやコンフィグレーションを駆使して書くほうがカッコイイと
されている。(ただし可笑しな我流は除く)

165774ワット発電中さん:2005/09/28(水) 04:37:12 ID:vugJb+8i
初心者ですがお願いします。
非同期リセットの上りエッジで、クロック1周期分の長さのパルスを一個だけ
発生させたいのですが、どうもうまくできません。HDLでどうやって
記述したらいいでしょうか?できたら、Verilogでお願いします。
166774ワット発電中さん:2005/09/28(水) 08:00:57 ID:nv1R4qAt
____|~~~~~~~~~ <非同期で入力(非同期リセット)

____|~~|______ <出力


ってこと?

____|~~~~~~~~~ <非同期で入力(非同期リセット)

_____|~~~|____ <クロックに同期出力

_|~|_|~|_|~|_|~ <クロック

ならできるとおもうけど。
167774ワット発電中さん:2005/09/28(水) 08:07:56 ID:kED56TiC
後者なら
always @(posedge clk) begin
r1 <= r;
r2 <= r1;
end
assign r3 = r1 & ~r2;
ってかんじ?
168774ワット発電中さん:2005/09/28(水) 08:29:55 ID:sRjS04QL
>>165 ふつうにつくるなら
メタステーブル防止のFFを通さないといけないから
非同期信号が入力されてから出力されるまで
システムクロックで数クロック遅れてしまうよ。

出力のクロックの4〜16てい倍したものをシステムクロックとして使えば
多少はましになるか
169774ワット発電中さん:2005/09/28(水) 08:50:52 ID:UYwSOyEn
always @(posedge clk) begin
r1 <= r;
r2 <= (~r1 & r & ~r2) | (r1 & ~r & ~r2) | (r1 & r & ~r2);
end
assign r3 = r2;
170774ワット発電中さん:2005/09/28(水) 08:53:29 ID:Oz+fAjhm
165のお願いって、前も見たような気がするのは俺だけか!?
171774ワット発電中さん:2005/09/28(水) 10:46:30 ID:kVyuKCUA
過去ログ見てみたら前スレであったよ、同じような質問。
前回はリセットってあるだけで、同期か非同期かは書いてなかった。
172774ワット発電中さん:2005/09/28(水) 11:13:00 ID:hh7+Nvy5
>>167>>169はどっちがどういいのでしょうか?
173774ワット発電中さん:2005/09/28(水) 13:02:58 ID:iDfk9BNL
module mkpulse (
 reset,
 clk,
 q
);
 input reset; // Active-low asynchronouse reset
 input clk; // Using positive edge
 output q; // Pulse width is one clock cycle
 reg delay1reset;
 reg delay2reset;
 reg delay3reset;
 // Synchronize asynchronous reset signal
 always @(negedge reset or posedge clk) begin
  if (~reset)
   delay1reset <= 1'b0;
  else
   delay1reset <= 1'b1;
 end
 always @(posedge clk) begin
  delay3reset <= delay2reset;
  delay2reset <= delay1reset;
 end
 // Make one clock cycle width pulse for rising edge of delay2reset
 assign q = ~delay3reset & delay2reset;
endmodule
以下次号
794 名前:758[sage] 投稿日:2005/06/25(土) 01:56:06 ID:RRAZhokE
一方、resetという名前から非同期リセットという
仮定をしたが、今のところそのような指定はない。
よって resetは clkに同期していると仮定することも
できる。
すると、以下次号
795 名前:758[sage] 投稿日:2005/06/25(土) 01:58:27 ID:RRAZhokE
module mkpulse (
 reset,
 clk,
 q
);
 input reset; // Active-low synchronouse reset
 input clk; // Using positive edge
 output q; // Pulse width is one clock cycle
 reg delay1reset;
 always @(posedge clk)
  delay1reset <= reset;
 // Make one clock cycle width pulse for rising edge of reset
 assign q = ~delay1reset & reset;
endmodule
以上
796 名前:774ワット発電中さん[] 投稿日:2005/06/25(土) 02:17:58 ID:qLwyTd70
ばーーーーか ----->>> >>758 ID:RRAZhokE 死ねよ
797 名前:火魔人[sage] 投稿日:2005/06/25(土) 04:37:57 ID:4D+YN02A
reg q;
initial begin
q = 1'b0;
end
always @(posedge reset) begin
@(posedge clk) q = 1'b1 ;
@(posedge clk) q = 1'b0 ;
end
合成できる物って言ってなかったから・・・
174774ワット発電中さん:2005/09/28(水) 13:09:32 ID:iDfk9BNL
>>172
>>169>>168の「メタステーブル防止のFFを通さないといけない」を踏まえて書き直したものっぽい
175774ワット発電中さん:2005/09/28(水) 14:41:07 ID:3F76/ELh
>>174
ヘタれなので、パっと見では>>169がどう動くのか分かりません・・
こういうのをサクっと書けるようになるのは、どうしたらいいのでしょう・・
176165:2005/09/28(水) 15:06:22 ID:/nGOq0ZS
>>166-169,173
どうも、丁寧にありがとうございました。まさに、>>166の後者のケースでした。
それを参考に、もう少し検討してみます。
>>168 最初に、FFにリセットをかけるなりしてもメタステーブルは防げませんか?
>>170 前スレは読めないのでわかりませんが、同じような質問もあるんですね。

一応あれから、自分なりにカルノー図を元にゲートとFFで回路を作って、
それを下のようにHDLに書き直してみました。
always @(posedge CLK) begin
out <= r1;
r2 <= reset;
end
assign r1 = (reset & ~out) & ~r2;

とりあえず、Spartan-3上で動作は確認できましたが、>>167の方が、回路
にすると、もっとシンプルですね。勉強になります。
>>169は、今ひとつよくわかりません。
177165:2005/09/28(水) 15:18:38 ID:/nGOq0ZS
>>173
最初、C言語の感覚でifを使って書いていったら、こんがらがって、
結局うまくできませんでした。

alwaysブロックの中にassignをいれても怒られないですか?

あと、
always @(posedge reset) begin
@(posedge clk) q = 1'b1 ;
@(posedge clk) q = 1'b0 ;
end
こんなのありなんですか?
178774ワット発電中さん:2005/09/28(水) 16:15:57 ID:nv1R4qAt
>>170
メタステーブルについて↓
ttp://www.cqpub.co.jp/term/metastable.htm

つまり、クロックに対して非同期(無関係)で信号が入ってくる場合は
セットアップ・ホールドを満たせないケースが運悪く発生して、
そうすると運悪く信号が一定期間不安定になることがありますよ、と。

リセット信号が、クロックと非同期に入ってくる信号だとすれば、
リセット信号をFFのデータに接続した場合、そのFFの出力が不安定になることがあるわけだ。


________|~~~~~~~~~~~~~ <1段目のFFのデータ入力
    ↑セットアップ・ホールド違反

__|~~|__|~~|__|~~|__|~ <FFのクロック

     
________/XX___/~~~~~~~ <1段目のFFのデータ出力

_________________/~~~~ <2段目のFFのデータ出力

Xの部分がメタステーブル(0か1かわからない)
そのあとどっちに落ち着くかは分からない。
でもXな時間はそんなに無いから、このFFの出力を
もう一回別のFFで読んでやると、そのFFでは違反は起きない(だろう)
でも反応が遅れるよね

ということ。
なので、最初にFFにリセットをかけて・・というのは、メタステーブルの
意味合いを勘違いしているかと思われ。
179774ワット発電中さん:2005/09/28(水) 16:19:35 ID:nv1R4qAt
等幅じゃないからうまく見れないな・・・ >タイミングチャート
ノートバッドにでもこぴぺしてみてくれ
180774ワット発電中さん:2005/09/28(水) 16:22:29 ID:iDfk9BNL
>>175-176
ソースを元に回路図を起こしてみると一応どうなってるかは分かると思う。
>>169は前段(入力側のFF)と後段(出力側のFF)の帰還をゲートで合成したものを後段の入力にしてる。
タイムチャート描いてみないと漏れもようわからん。
181774ワット発電中さん:2005/09/28(水) 16:22:34 ID:op2mYCKs
>>178
リセット信号自身をシンクロナイザ通してクロックに同期させるという意味だよねえ?
バリバリな同期回路中でもリセット信号だけは非同期回路部分になったような気がするんだが、どんなもんだっけ。
182774ワット発電中さん:2005/09/28(水) 16:28:13 ID:iDfk9BNL
>>176
一応前スレの質問は微妙に違うかもしれないが、
回答がいくつかあったうちの最後の方を >>173 にコピペしますた。

↓以下、事の発端(これも前スレのコピペ)


752 名前:774ワット発電中さん[] 投稿日:2005/06/22(水) 23:38:21 ID:3JyUAAcL
verilogの達人の方へ

clk _| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|

reset  ____________| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

q _____________| ̄|_______________



上のようなクロック入力に対してリセット後1クロックのみ検出する信号qの作り方教えていただけませんか?

宿題ができずに困っています。

お願いします。

753 名前:752[] 投稿日:2005/06/22(水) 23:41:34 ID:3JyUAAcL
なんかずれちゃいました。すみません。

リセット後最初のclkを1パルス分のみ検出したいのですが。

お願いします


_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|   clk

____________| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   reset 

_____________| ̄|_______________   q
183774ワット発電中さん:2005/09/28(水) 16:42:55 ID:sRjS04QL
>>182
1クロック分じゃなくて半クロック分のパルス幅しかないように見えるのだが
俺の使ってるフォントが悪いのかな?
184774ワット発電中さん:2005/09/28(水) 16:55:22 ID:nv1R4qAt
>>181
そうそう。まあ、この例だとリセット信号を非同期なデータ信号として
使おうという感じっぽいので、シンクロナイザ通したほうがきっと良いでしょうね
(最初通さなかったがw)

いわゆる同期設計回路で、リセット信号を非同期で入力して、それらを
FFの非同期リセットに入力する場合でもセットアップ・ホールドに相当
するものはあるようで、リカバリ(recovery)タイムとリムーバル(removal)タイム。
これを満たさない場合は正しくリセットがかからないらしい・・・

ので、リセットをシンクロナイズして同期リセット信号として各FFに配る方法と、
リセット中はクロックを止めちゃう(リカバリ・リムーバルを確実に満たす)方法の
2つがあると思ってる。

_|~|_|~|___________|~|_|~|_|~|_  < クロック

~~~~~~~~~|_______|~~~~~~~~~~~~~  < リセット

↑リセット中はクロックを止めちゃう

でもFPGAだとそこまでやんない。やんなきゃ駄目なのかな本当は。

>183
ほんとだ、半サイクルだw
じゃあクロックとANDとるってことで・・・
そしてハザードが乗る・・と。
185165:2005/09/28(水) 17:12:17 ID:/nGOq0ZS
>>178,181,184
メタステーブル、勘違いしてました。勉強になります。

>>182 どうもご苦労様です。
186774ワット発電中さん:2005/09/29(木) 07:46:10 ID:kNy2xww/
>>169の記述って、入力rがF/Fに入ってしまうから、
rが非同期の場合は、r2が不定になる可能性が
排除できないと思うんですが、考え違い?

非同期入力からのエッジ検出なら、
3段F/Fで受けて2段と3段を使うって形なら
後段への影響なくパルス生成が出来ると
理解していたんですが、受けすぎ?
187774ワット発電中さん:2005/09/29(木) 08:06:39 ID:Z2nCP/j8
それって2段で受けて、エッジ検出に3段目を作る…っていうのとは違うの?
言い方の問題だけど、非同期入力を3段で受ける…って言われると受けすぎな気が。
188774ワット発電中さん:2005/09/29(木) 09:05:27 ID:qijgTzHr
言い方だけの問題だろうな。
ただ、エッジ検出のために1段目の出力まで使うことになるので、
明確に分離できてるわけじゃないが。

でもどうせFF3個使うんなら、>>167の出口にもう1個FF入れとけば、
後段への影響も同等だし、回路がシンプルじゃないか?
189774ワット発電中さん:2005/09/29(木) 09:14:00 ID:Z2nCP/j8
always @(posedge clk) begin
r1 <= r;
r2 <= r1;

r3 <= r2;
end
assign r4 = r2 & ~r3;

これじゃ駄目なん?
単純にメタステ対策2段受け&エッジ検出。
190774ワット発電中さん:2005/09/29(木) 09:33:11 ID:qijgTzHr
だから、最後にANDが入る分、r4を使う回路が影響を受けると。
191774ワット発電中さん:2005/09/29(木) 10:33:33 ID:MAdCzraz
メタ対策話。
1段目 入力:非同期
    出力:同期(ただしメタあり)
2段目 入力:同期(ただしメタありなのでセットアップに不利)
    出力:同期(メタなし)

メタが仮に5ns続いたとすると、1段目→2段目のセットアップマージンを5ns余分に取らないといけない。
なので、1段目と2段目の間には組み合わせ回路をいれず、FF直結にしようという話だと理解してるのね。

んで、>>169の記述をみるとrの出力が組み合わせ回路を経由してr2に行ってる。
組み合わせ回路の遅延が5ns、メタを最大5nsと見積もった場合10ns=100MHzが最高周波数
でもツールのログはメタを考慮しないので、5ns=200MHzまでいけるよと判断してしまう
でもFF直結なら「もっともメタが次段に伝播する確立が低い」構成になる、と。

て理解をしてるんだが、如何なものか。

なんで、立ち上がりエッジ検出とかするなら2段目・3段目が"01"であれば立ち上がりという記述

(略)
signal buf : std_logic_vector(2 downto 0);
signal rise : std_logic;
(略)
process (CLK) begin
 if(CLK'event and CLK='1')then
  buf <= din & buf[2 downto 1];
 end if;
end process;
rise <= '1' when(buf[1 downto 0]="01") else '0'; -- 0→1で立ち上がり

VHDLですまんが、こうなるのかなと。
でも遅れるのがやなときは1,2段目でrise判定することもあるっす。背に腹は・・・みたいなかんじで。
192774ワット発電中さん:2005/09/29(木) 10:59:24 ID:MAdCzraz
あ、verilogの解答でてた^^; >>189さんと同じ記述ですね。

遅レスだけど
>>177
>alwaysブロックの中にassign
ためしてみれば分かるかと。

>always @(posedge reset) begin
>@(posedge clk) q = 1'b1 ;
>@(posedge clk) q = 1'b0 ;
>end

多分、"@(posedge clk) q = 1'b1 ;"とかをソフトの関数呼び出し、
always〜を関数定義みたいなイメージで捉えてるのだと思うんだけど、
そうではないのね。

じゃあ何をイメージしろっていわれると難しいな・・・うまく説明できん。
とりあえず逐次処理ではない、並列処理というイメージが必要かも。
193774ワット発電中さん:2005/09/29(木) 12:26:47 ID:Z2nCP/j8
>>190
そこはもう同期だから、AND一つくらい(゚ε゚)キニシナ〜イ♪ってことで。
外に出す場合(どう繋がるかわからん時)は、怖いからFF1段かますけど。

元レスちゃんと見てないから、見当違いならスマソ
194774ワット発電中さん:2005/09/30(金) 00:39:28 ID:YYPeCHvF
>>192
fall検出してるじゃないか漏れ・・・orz
195161:2005/09/30(金) 17:27:15 ID:k4iA9K8g
>>162
遅レスですがありがとうございます。
CVERぐぐってきます!
196774ワット発電中さん:2005/09/30(金) 18:27:39 ID:Ou9jJt8e
なんでこういうテーマは盛り上がるのはなぜ?
197774ワット発電中さん:2005/09/30(金) 23:08:14 ID:AOAzj8bL
あまり見ないんですが、always文の中でfunction文を呼び出す記述には何か問題点があるんですか?
198774ワット発電中さん:2005/10/01(土) 00:02:59 ID:TKHJIK3r
別に問題ないべ
199774ワット発電中さん:2005/10/01(土) 03:40:34 ID:nKjJVEef
>>192
assignは組み合わせの記述で、alwaysは順序回路でFFとかの記述になるから、
assignはalwaysの外に置きなさいと、とXilinxのWebPackで怒られた記憶が。
勘違いかもしれませんが。
200774ワット発電中さん:2005/10/01(土) 03:46:02 ID:nKjJVEef
またヘタレな質問ですんません。
reg [1:0] d0,d1,d2,d3;
reg [1:0] addr = 0;

always @(posedge clk) begin
addr <= addr + 1;
case(addr)
2'b00: data <= d0;
2'b01: data <= d1;
2'b10: data <= d2;
2'b11: data <= d3;
default: addr <= 0;
endcase
memory M1 (clk, data, addr, we);
みたいな感じでやると、caseで選んだアドレスにデータが入らないで、一つ
先のアドレスに入っちゃう。つまり、01番地にd0の内容
が入ってしまうんですが、なぜ?実際は、caseのそれぞれで、we<=1;
も入れてましたが。
どうやったら、指定したアドレスに、入れたいデータが入れるには
どうしたらいいんですか?
カウンターをつけて、クロック一つ置きにaddr = addr +1を実行させると
うまく行くんですが、クロック一回分そんするし・・・
201Aさん ◆DOD3/eopFI :2005/10/01(土) 06:05:25 ID:EcOH6SiB
>>200

dataもaddrもどっちも信号代入( <= )だからでは?
ずれた理由は、分解して考えれば分かりやすいと思う。

always@(posedge clk)begin
addr <= addr + 1;
end;

always@(posedge clk)begin
case(addr)
2'b00: data <= d0;
2'b01: data <= d1;
2'b10: data <= d2;
2'b11: data <= d3;
end case
end ;

always@(posedge clk)begin
memory M1(clk,data,addr,we);
end;

と、addrを基準に考えれば、addrの更新→1T後にdataの更新になって
データが遅れている...それなのに、addrとdataを同時に使って、
メモリに書き込もうとしてるからずれがそのまま記録される。

ずれを直すには、
方法1)caseで使うaddrは、addr+1相当を入れる事。
   addr+1をassignであらかじめ実行しておいても良い。
   で、caseではassignで定義した信号を使う。
   これで、addrとdataが完全に同期します。
または、
方法2)case文は(posedge clk)から外に出して、
  clk成分を抜いた純粋のselecterにする。
とか。
(しばらくVHDLに行っていて5年ぶりのVerilog。。。自分も復習中ですので
 間違ってるか心配…)
202774ワット発電中さん:2005/10/01(土) 10:27:18 ID:uc+4l+qo
>>197
あまり見ないもなにも、文法として
functionはalwaysのなかでは使えないだろ。
理由は>>199が書いてくれてる。
203774ワット発電中さん:2005/10/01(土) 10:31:49 ID:vM0NalLt
文法エラーと論理合成不能の区別をきっちりしてほしい
204774ワット発電中さん:2005/10/01(土) 10:46:05 ID:uc+4l+qo
>>201
延々回答らしきもん書いてるけど

>always@(posedge clk)begin
>memory M1(clk,data,addr,we);
>end;

なんや?これ。ちょっとは調べてから書き込め。
205774ワット発電中さん:2005/10/01(土) 10:51:18 ID:uc+4l+qo
>と、addrを基準に考えれば、addrの更新→1T後にdataの更新になって
>データが遅れている...それなのに、addrとdataを同時に使って、
>メモリに書き込もうとしてるからずれがそのまま記録される。

>ずれを直すには、
>方法1)caseで使うaddrは、addr+1相当を入れる事。
>   addr+1をassignであらかじめ実行しておいても良い。
>   で、caseではassignで定義した信号を使う。
>   これで、addrとdataが完全に同期します。

全く違う。わかってもないし、調べもしないで、間違いだらけを書き込むな。
206774ワット発電中さん:2005/10/01(土) 13:23:57 ID:FEskvnjS
>>202
呼び出しならできるはず

a <= fanc(b)みたいな
207774ワット発電中さん:2005/10/01(土) 14:14:46 ID:wtpAS4Vz
>>206
出来るかよボケ
戯言ホザク前に調べてから書き込めマヌケが。
お前のようなアホはエンジニアに向かねえから辞めちまえ。
208774ワット発電中さん:2005/10/01(土) 15:00:51 ID:mLkR9T1J
>>207
漏れは >>206 じゃないけど、
あなたの書き込みの方が見てて不愉快になります。
209774ワット発電中さん:2005/10/01(土) 15:02:37 ID:DBTMVvQe
>>207
釣りか?
alwaysの中でfunctionの呼び出しは出来るぞ。
assignはできないけどな。
引きこもってろボケが
210774ワット発電中さん:2005/10/01(土) 16:32:29 ID:l0AmCYnb
>>200
>>201の説明は全くデタラメだ。君の書いたalwaysではaddrの初期値が定まってないことが原因

>default: addr <= 0;

では駄目。resetでaddr と dataを確定しないと駄目だ。
211774ワット発電中さん:2005/10/02(日) 01:49:32 ID:S1frEgOF
>>210

>>200だと、reg宣言で初期値を設定しているから
simは可能。CLKのイベントでデータが取り込まれるというのを
理解できれば、解決できると思いますよ>>200

書き込むアドレスを作るF/Fと、そのF/Fからデータが作られるという
動作なのでcase部分のdecodeを修正というのはどうでしょ?
もしくはdataをwire or function宣言としてF/Fでは無くセレクタとして
考えるとか。
212200:2005/10/02(日) 07:44:04 ID:rand8dA0
>>201,210,211さん、どうもありがとう御座いました。
>>201さん、今のところ、アドレスを、最初からずらして、caseにいれて
使っているのですが、なんか気持ちがわるい。
>>210さん、reg addr = 0;といちおう初期値はしていしてあります。

>>211 clkの立ち上がりで、addrに、addr + 1が即入るんですか。でも
always @(posedge clk) begin
x <= y;
y <= x;
end
みたいなノンブロッキングの場合は、即データが動くわけじゃない
ですよね。

>書き込むアドレスを作るF/Fと、そのF/Fからデータが作られるという
>動作なのでcase部分のdecodeを修正というのはどうでしょ?
この部分、よくわからないのですが。caseを使うと、マニュアルには、
マルチプレクサーがつかわれると書いてありますが、その選択入力はFFの出力に、
clkが立ち上がったのときに出ているデータが使われるんじゃないんですか?

>もしくはdataをwire or function宣言としてF/Fでは無くセレクタとして
>考えるとか。
detaをinputで入れるってことですか?それにしても、どっかで
レジスターにいれるなり、ラッチしておかなければならないのですが。

独学なもんで初歩的なしつもんばかりですみません。
213774ワット発電中さん:2005/10/02(日) 08:24:28 ID:dTs8EHpM
単なる組み合わせ回路が生成されるか、組み合わせ回路+FFが生成されるか、
というのをゆっくり考えてみるといいかも。
214774ワット発電中さん:2005/10/02(日) 09:00:27 ID:SncHUpGt
作りたい回路が容易に想像できる記述を心掛けるのは大切だあね。

俺は全ての回路を網羅した仕様書なんか作らんし、自分でも忘れちゃうんだ。
そんな時、「わかりやすく書いてた自分、GJ!」って思うことが多々あるねw
215774ワット発電中さん:2005/10/02(日) 10:02:02 ID:q082Y06P
>>212
>>210さん、reg addr = 0;といちおう初期値はしていしてあります。

sim上では許されてもこういう初期化はありえない。一体いつ初期化されるんだよ。
それとテストベンチ(sim専用)ということならノンブロッキング代入なんかなんで使うんだよ?

>>200にあるcase文はdataに対する設定なのに、
defaultてdataの設定をせず、addrなんかの設定してることがそもそもおかしいって言ってるの。
216211:2005/10/02(日) 10:22:59 ID:S1frEgOF
>>212

>>213 さんも書かれていますが、CLKの立ち上がりで、
そのprocess文のなかの代入が「同時に」実施させます。

ですので、立ち上がり時に、
Addr……立ち上がり時の値に+1される
Data……立ち上がり時のAddrの値で次のDataとなる値が選択される

となるため、Addrの値をつかって0hにx0を書きたいという動作は
ひとつ遅れてしまいます。

DataをF/Fで構成する必要がなければ、process文の中から削除して
reg宣言からwire宣言で
wire data[1:0] = Addr[1:0]; とかで書いてあげれば解決すると思います。

独学だそうですので、とりあえずWebをあさるなり、ヨサゲな書籍購入をお勧めします。

>>215
おっしゃるとおりです。
初期化は論理合成を行いだして、痛い目にあった方が覚えやすいかも?
最後の2行は、見落としてました。
217774ワット発電中さん:2005/10/02(日) 10:52:29 ID:q082Y06P
>>216
>>200の書いたalwaysではその動作が完了すると、

1クロックめ)addr == 0

addr->1
data->0(case は addr ==0で判断)

2クロックめ)addr ==1

addr -> 2
data -> 1(caseはaddr ==1で判断)


になるし、
>Addr……立ち上がり時の値に+1される
>Data……立ち上がり時のAddrの値で次のDataとなる値が選択される
この説明は上に俺が書いてることと同意でしょ。ところが>>200を見ると1)のときにdata->1って言ってるんじゃないの?
218774ワット発電中さん:2005/10/02(日) 11:06:19 ID:q082Y06P
caseで選んだアドレスにデータが入らないというのは真っ赤な嘘で
caseで選んだアドレスにデータが入るが、always処理直後のaddrの値がデータの値より1多いと言いたいのかな?
00番地にはd0の内容は入る筈なんだが。

例えば、
module memory(data, clk, res);
input res;
input clk;
output [1:0] data;
reg [1:0]mem[ 0:5];
reg [1:0] counter;

always@( negedge res, posedge clk ) begin
if( !res )begin
counter <= 0;
end else begin
counter <= counter + 1;
mem[counter] <= counter;
end
end

assign data = mem[counter];
endmodule

こうやると、data出力はcounterが一回りするまで不定になる。
alwaysで格納される値、アドレス(counter値)と出力時の
data=mem[counter]に使われるcounter値は1違う。後者が一つ先を
インデックスしてるから。
219774ワット発電中さん:2005/10/02(日) 12:45:12 ID:IZ3MSBHn
とりあえず回路図に描き出してみた方が良いと思う
220774ワット発電中さん:2005/10/02(日) 14:38:56 ID:XlonbKZk
回路図描いてもいいが、回路図書かんでもわかるでしょ。
多分Verilogの解説本ならどれ読んでも。
ノンブロッキング代入の信号の評価と代入のタイミングとしてちゃんと書いてる。
それすら読まずにいきなりシミュレータに食わして、しなくてもいい苦労してるだけじゃないの?
>>200が書いてる現象と実際シミュレータ上で起こってる現象が違ってるわけだし。理解してもない。
221774ワット発電中さん:2005/10/02(日) 14:47:13 ID:IZ3MSBHn
>>220
質問者に言ったつもりだったんですよ。
回路図書かんでもわかる人はそんな質問しないからね。
222774ワット発電中さん:2005/10/02(日) 14:48:26 ID:6k1kLOV+
>>215
FPGAでは、こういう書き方をすると、
コンフィグレーションだかスタートアップだかのフェーズで
FFを初期化するものがあったような気がした。
ACTELだったかXILINXだったか俺夢だったか、ちょっと自信がないが。
223200:2005/10/02(日) 17:19:46 ID:rand8dA0
みなさん、いろいろ有益なレス、どうもありがとうございました。
>>213 はい。いろいろやって、どんな回路が生成されているのか試しています。

>>214 回路を思いついても、それを、HDLにサクサクっと直せなくて^^;

>>215 そうだったんすか。どこかでそういう書き方もできるというのを読んで、
一応、FPGA上で動くので気にしないでつかってました。

>>216、217 その説明で、やっと納得しました。結局dataがFFに入ってるから
一つ遅れると言うことですね。

>>218 いや、simでもFPGA上でも、01番地にd0が入るんです。でも、皆さんの
説明でなんとなく理由がわかりました。

>>219 やってみてます。

>>220 こちとら、物理関係の実験で、装置に組み込める特殊なセンサーと
高速のデータ収集装置が必要なのですが市販品で使えるものが無いので、
仕方なく、いろんな人の意見に従って、FPGAを使って自分で組んでみている
次第です。何しろHDLをやり始めたのが、8月にFPGAの評価ボードを手に
入れてからで、インターネットやら、解説本やらをつまみ食い
しながら、なんとか、主な部分は機能するところまで、こぎつけてはいるの
ですが、よくわからない部分が多くて。やっぱり、じっくり基本からやらないと
だめですね。 
でも、FPGAは感動物ですね。こんな便利なものだとは知りませんでした。

>>222 XilinxのFPGAを使っているのですが、深く考えてませんでした。
224774ワット発電中さん:2005/10/02(日) 20:24:54 ID:nqdCSzRi
>>>218 いや、simでもFPGA上でも、01番地にd0が入るんです。でも、皆さんの
>説明でなんとなく理由がわかりました。

チミも強情だねぇ。もし、そんな風に動作するシミュレータならだれもまともな設計できんだろが。
繰り返しになるが、
alwaysに入る直前、adr=Nならcaseの評価はadr=Nに対してなされるし、
dataの格納はadr=N1に対して格納される。alwaysが完了してはじめてadr=N+1になる。
もしこの時点でadr=N+1アドレスのデータを確認しても不定値しか入ってないよ。
大体、宣言部分でdr=0などと書いた回路を一体どういう風にシミュレートしたんだよ。テストベンチ見せてみろ。
まともに書けてないんだよ。君の回路は。それでまっとうな結果になってなくてもそんなの議論のベースにならない。

>>218に書いたHDLはmodelsim 6.1 SEで確認したものだから、カウンタ値(counter)と実際に格納されるアドレス、
出力(data)の関係を調べてみろ。
225774ワット発電中さん:2005/10/02(日) 20:26:15 ID:nqdCSzRi
訂正
×dataの格納はadr=N1に対して格納される。
○dataの格納はadr=Nに対して格納される。
226774ワット発電中さん:2005/10/03(月) 00:41:05 ID:lAozOAij
回路図書くなんて愚の骨頂。
227774ワット発電中さん:2005/10/03(月) 08:52:22 ID:yWP5UisV
愚直にこつこつとやろう
228774ワット発電中さん:2005/10/03(月) 14:24:15 ID:lZYRBQ5a
>>226
漏れは愚民なんでくわしく説明希望
229774ワット発電中さん:2005/10/09(日) 22:15:27 ID:x0o4HMmI
a [3:0]mem[0:3];
のメモリに初期値を与えたい場合どうすれば良いのでしょうか?
mem[0]=1;
とかですかね・・
230774ワット発電中さん:2005/10/09(日) 22:37:26 ID:Q/lYKtYH
>>229
デバイス依存

なので基本的にはリセット信号で初期値を指定する
231774ワット発電中さん:2005/10/09(日) 23:03:14 ID:x0o4HMmI
どうもです、
リセット信号で・・?
ベリログで書く場合どうやればよいのでしょうか?
232774ワット発電中さん:2005/10/09(日) 23:35:37 ID:SO0lctf6
$readmemh

引数はマニュアルで調べてくれ
233774ワット発電中さん:2005/10/10(月) 00:01:05 ID:x0o4HMmI
どうもです
$readmemh("filename",memname,begin_addr,end_addr);
上のメモリの場合
$readmemh("test.txt",a,0,3);
でtest.txtから読み込んでくれるんでしょうか?

test.txtの中身はどの用に書けば良いのでしょうか?

111111111111
をtxt内に書いておけばa[0]に1111 a[3]に1111
が入ってくれるんでしょうか?。
234774ワット発電中さん:2005/10/10(月) 00:20:28 ID:bSaptswe
quartus 2で作ってるんですが
Error: Verilog HDL syntax error at main.v(7) near text "$readmemb"; expecting an identifier, or "endmodule", or a parallel statement,
エラー出て、
quartusでは使えない?
235774ワット発電中さん:2005/10/10(月) 00:27:10 ID:F/oJP6qo
>>232
それはsimだけだろ
236774ワット発電中さん:2005/10/10(月) 00:29:39 ID:bSaptswe
>>235
使えないってことですか?
237774ワット発電中さん:2005/10/10(月) 00:37:26 ID:DZwcXjZf
言語仕様くらい確認しなさい
238774ワット発電中さん:2005/10/10(月) 00:50:19 ID:bSaptswe
レジストリに初期値を代入する方法ないんでしょうか?


always @(posedge w) begin
mem[0] = 16'b0001000000000001;
end
で代入してます、、
239774ワット発電中さん:2005/10/10(月) 01:03:02 ID:GaTVGimf
入力信号にリセット入ってないの?
240774ワット発電中さん:2005/10/10(月) 01:16:20 ID:GaTVGimf
always @(posedge w or negedge nrst)
if(!nrst)
begin
  mem[0] = 16'b0001000000000001; //初期値
end
else if(******)
begin
  ******
end

>>238
まさかとは思うがリセットってわかる? あとレジストリとは言わない
「この回路を書きたい」より先に、verilog本を一冊読んできたほうがよいと思われ
241774ワット発電中さん:2005/10/10(月) 01:25:40 ID:bSaptswe
ありがとうございます。

一般的なリセットの意味は分かりますが、、
この場合何を指しているのかわかりません、、

>>240
その方法しかないんでしょうか?
alwaysの中でしか代入できない。
242774ワット発電中さん:2005/10/10(月) 01:27:12 ID:l0gk1Az/
一般的な意味のままでFFにリセットをかければよいのだが、多分分かってないようだ・・・
243774ワット発電中さん:2005/10/10(月) 01:29:43 ID:l0gk1Az/
電源投入直後の値を決定させたいのなら、そういうデバイスを使うしかないよ
244774ワット発電中さん:2005/10/10(月) 01:36:04 ID:bSaptswe
どうもです、
FFにリセット、意味わかりました。
ただアドレス16bitデーター16bitのFFを作って全部にやるんでしょうか?

>>電源投入直後の値を決定させたいのなら、そういうデバイスを使うしかないよ
そうです!!これをやりたい。。

そういうデバイスとは何でしょう?
外部にROMを用意するとか?

ちなみにプログラムメモリを作ろうとしてます
電源投入後そこからプログラムを読み込んで実行。
245774ワット発電中さん:2005/10/10(月) 01:39:16 ID:GaTVGimf
電源投入直後の値を決定させるひとつのやりかたがリセットなのだが。

>>229のように宣言したメモリを、alwaysを使わずにどうやって制御するつもり?
246774ワット発電中さん:2005/10/10(月) 01:45:16 ID:GaTVGimf
ちょっと待って。
>>244さんは、確か、FPGAスレでCPU目標と言っていた方ですよね。

>ちなみにプログラムメモリを作ろうとしてます
>電源投入後そこからプログラムを読み込んで実行。
ROMってこと? ソフトがIPL読みにいくようなイメージ?
とすると、ちょっと考え方が違う気が、、するのだけど

247774ワット発電中さん:2005/10/10(月) 01:54:12 ID:bSaptswe
あい、そうですCPU目標とほざいてた者です。

mem[0] = 16'b0001000000000001;
上位4bitが命令 次4bitがレジスタのアドレス 最後がデーター

一応どういうCPUにしようか考えたんです。
FPGAへの入力装置は PCのカウントアップの信号線だけにして
元々FPGA内に入ってるプログラム(命令セット)を1行づつ実行させてやろう、と思ってます

これが完成したら外部からの読み書きが出来るように・・。

なので、、Initial Program Loaderかもしれないですw

248774ワット発電中さん:2005/10/10(月) 02:18:55 ID:GaTVGimf
え〜と。

ハードの並列処理をよくわかってないように見受けられるのですが。。
あと、その仕様だとFPGAでやる意味があまり無いようにも思える。

・CPU目標らしいが、ハード(基板)はどうするの?
・PC(プログラムカウンタだよね)のカウントアップはどの部品でつくるつもりだった?

素直に
705 名前: 774ワット発電中さん [sage] 投稿日: 2005/10/09(日) 16:34:57 ID:mPzUjNm1
ttp://www.cqpub.co.jp/hanbai/books/33/33631.htm

これ読んだら、と思ったけど、それ以前の問題な気もする。

他の人のレスも待ってみて。オヤシミ  ノシ
249774ワット発電中さん:2005/10/10(月) 02:26:00 ID:bSaptswe
とりあえず加算減算をするだけの物を作ってみようと思います。

ハードはFPGAにスイッチを一つ。(入力)
出力はLED

ONするたびにPCを+1
(クロックに合わせて勝手にプログラム走らせると結果が速すぎて見えないと思って)
起動すると0番地の命令を実行して待機
スイッチをONにすると次の命令、という風にしようかな、と思っております。
とりあえずココまで作ってみようと、
そのあとバージョンアップですわ。
250774ワット発電中さん:2005/10/10(月) 02:28:37 ID:bSaptswe
あ、HPのアドレスありがとうございます。
VHDLはちょっと取っつきにくかったので
ベリログ使ってます。
その本と同社の「入門ベリログHDL記載」、と言うのを参考にやってます・・。
251774ワット発電中さん:2005/10/10(月) 02:47:16 ID:GaTVGimf
>FPGA内に入ってるプログラム(命令セット)を1行づつ実行させてやろう

この考え方から離れたほうがいいと思う。
verilogで記述してるのはプログラムじゃないよ。回路だよ。
252774ワット発電中さん:2005/10/10(月) 02:58:41 ID:bSaptswe
どうもです^^
>>verilogで記述してるのはプログラムじゃないよ。回路だよ。
うーむ、深い言葉ですね。
回路だと、心してやります!!
もう一度考え直した方が良いのかな・・

今考えてるのを
さらに細かく言うと
命令セットの上位4BITに命令が入っていて
それをデコードして、残りのビットをどうするか決める、といった感じです

電源投入→メモリからデーターロード→デコード→何の命令か?演算なら演算部にデーター送り
→演算部で演算→演算結果をレジストリへ。
253774ワット発電中さん:2005/10/10(月) 03:01:14 ID:bSaptswe
とりあえずinput CK の立ち上がりで
メモリの0番地から順番に読み込んで[15:0]に出力するのが出来ました。。

次は
デコーダーを作ろうとしてます。。
254774ワット発電中さん:2005/10/10(月) 03:02:15 ID:WxMaw82P
わざわざ助言してやっても
どうせ完成は無理だろ。
途中で投げ出す方に一票。
255774ワット発電中さん:2005/10/10(月) 03:34:08 ID:l0gk1Az/
>>244
そういうFPGAを使う、という意味。

FPGAの種類によっては、電源投入後のFFの内容は不定(0か1か分からない)です。
なので、普通は電源投入後リセット信号を出力し、初期値をセットします。

電源投入後リセット信号を出す回路は、FPGAの外の話なので手動でリセットボタンを押すか、
電源を監視して自動的にリセット信号を出すかは設計仕様によります。
256774ワット発電中さん:2005/10/10(月) 04:06:37 ID:bSaptswe
>>255
なるほど、納得です、ありがとうございます。

ふと書いていて思ったんですが
ベリログで書く場合

いくつものmoduleに分けてそれぞれをつないで一つの回路にするのがいいのか
一つのmoduleで中にだらだらと書いた方が良いのか

どっちがいいのでしょう?
257774ワット発電中さん:2005/10/10(月) 09:28:24 ID:I1NcU7J4
自演ばればれ厨
258774ワット発電中さん:2005/10/10(月) 10:27:36 ID:xLPDCkOJ
自演と言わんと気がすなまい厨はだまっとけ

が、ちゃんとした本を読めというアドバイスを
ことごとく無視するやつは相手にしたくないのはわかる。
259774ワット発電中さん:2005/10/10(月) 10:40:33 ID:F/oJP6qo
自分でCPU設計するにしても、言語をどうするかがねーーー
例えばクローンH8とか作ってくれたほうがgccもサポートしてるし多くの人に喜ばれるぞ。
あと、一度寺と財が作ったNiosIIとかpico/micro-blazerを使ってみてもいいんじゃないの?
こんなもんか。ってのがわかる。どこまでいけるかしらんが評価版でもそこそこいけたんじゃないかな?
260774ワット発電中さん:2005/10/10(月) 10:43:56 ID:F/oJP6qo
pic相当のCPUつーかコントローラ作成記事は市販本で見たことあるから。とりあえず本屋に行ってみ
261774ワット発電中さん:2005/10/10(月) 10:59:34 ID:GaTVGimf
>>256
>moduleの階層分け
好みで。設計者のセンス。

>>249
このハード、まさかリセット入ってないの?>>255にあるとおり
リセットボタンか電源監視を汁

もひとつ訊きたいのだが、verilog経験どれくらい?
262774ワット発電中さん:2005/10/10(月) 12:49:20 ID:F/oJP6qo
>もひとつ訊きたいのだが、verilog経験どれくらい?
んなこと聞いてやるなよ。わかるだろ?
やさしく導いてやれよ。Zimmermanみたいにすごいことなるかもしれんし
263774ワット発電中さん:2005/10/10(月) 13:33:33 ID:bSaptswe
どうもです
ハードは
http://www.hdl.co.jp/CSP-024/
これかな。

ベリログの経験は 一週間未満ってところです
C言語はさわったことあるので
VHDLよりベリログの方が取っつき安かった。
アセンブリもさわったこと有ります
過去に扱ったマイコンは
PICとAVR。

なんでFPGAというと
学校に有ったのでコレ使ってなんか作ってみようと思った次第です

264774ワット発電中さん:2005/10/10(月) 14:43:55 ID:F/oJP6qo
一言だけ言うとHDLはソフトウエア言語のような手順を書くものじゃなくて回路を記述するものなので、
Cやアセンブラの経験は文法を知ってるぐらいしか役に立たんと思っといたほうがいいかもしれない。
プログラムカウンタやmainの先頭から動作するわけじゃない。どういうふうに動くかを把握することだな。
そうすりゃリセットが何で必要かわかる。
265774ワット発電中さん:2005/10/10(月) 14:49:19 ID:GaTVGimf
学生さんでしたか…。

まず、1週間でCPUを目指すなんてのは、果てしなく無謀
リセットの使い方も知らないようじゃ、ハードをまったく解ってない
C言語と文法は似てるけど、ソフトとハードの違いを理解すること。
>>250の入門本の例題を1冊全部こなしてから出直したほうがよいと思われ
仕様を書くのはそれから。このスレで質問するのもそれから。

ボードはいいね。俺もホスィ...(´・ω・`)

ペーペーの俺から言えるのはここまでだ。ガンガレ ノシ
266774ワット発電中さん:2005/10/10(月) 15:11:12 ID:bSaptswe
どうもです
一人でモンモンとやってみます。

FPGA自体は一ヶ月といったところです、、
最初はスケマティックでやってました
といってもFF使って4bitカウンター作っただけですが・・
(クロック数えて10進数で表示)
267774ワット発電中さん:2005/10/10(月) 20:34:53 ID:l0gk1Az/
なんか、逆にVHDLみたいな違う言語でやったほうが混乱しなくていいかもよ。

といってみる。
268774ワット発電中さん:2005/10/10(月) 22:20:45 ID:bSaptswe
まぁ、なんだかんだで加算とストア命令ができました
なんかこのまま完成しそう・・。
269774ワット発電中さん:2005/10/11(火) 11:35:25 ID:Z4OIchoq
完成マダー?
270774ワット発電中さん:2005/10/11(火) 12:21:58 ID:ST4zJjwL
>>264の3行目を100回読んで欲しい。
271774ワット発電中さん:2005/10/11(火) 13:20:00 ID:ZURVo/x7
>>264
Verilogソースみて
「電源投入したらどのルーチンから動くの?」と聞かれた。
コンカレントで動作するモジュール群を見て
「優先順位はどうなってんの?こっちのタスクはいつ起動するの?」

ソフトウェア屋さんの頭の中はタスクスイッチャベースのラウンドロビン処理なのかもしれぬ。
272774ワット発電中さん:2005/10/11(火) 17:51:18 ID:gMYQvzu1
>>271 「超並列コンピューターで一斉動作」って答えとけ(笑)
273774ワット発電中さん:2005/10/11(火) 19:37:48 ID:ZURVo/x7
声に出して読みたいHDLソース。


あったらおもろいか?
274774ワット発電中さん:2005/10/12(水) 01:15:51 ID:XWmjiqqy
時間が無くて他の命令がまだ実相できてません。

ずーっと悩んで居たことがあって
クロックで全部同期させていて
1クロックづつづれていくんですよね

IFなんとかなら 以下を実行。で
モジュールを呼び出せないのが痛かったです

しばらく悩んで色々考えてみると
IF文でモジュールに繋げた用になる方法をやっとこさ思いつき
何とかずれない用になりました。

always@(posedge ck)
modul modu(a,b,c);//AとBを加算してCに結果が帰ってくる

C言語のイメージで行くとこんな感じでした。
が、実際はクロックの立ち上がりでモジュールに配線する。
という意味になっちゃって、んなこたー出来ないと怒られていました。

なので
wire [3:0] d;
modul modu(a,b,c)
assign d = c;
always@(posedge ck)
mem[0] <= d;
とすることでクロックに同期させてモジュールの戻り値を取得する方法を思いつきました・

もしかしたらコレも変な方法なのかもしれませんが、、
がんばって解決しましたー。
275774ワット発電中さん:2005/10/12(水) 02:45:36 ID:UYzcg+bK
>>274
君さ、blogでも始めれば。
276774ワット発電中さん:2005/10/12(水) 04:36:41 ID:TWAqRA6z
>>274
・同期回路
・ステートマシン
・データパス
・パイプライン
ここらへんの概念をきっちり調べてから出直しておいで
277774ワット発電中さん:2005/10/12(水) 05:12:12 ID:XWmjiqqy
出直してきますね。
報告はうざがられるみたいなので、
一応完成したので最後の報告で、、
当初の目標だったCPUもどきが完成しました。
命令は加算減算ロード、しかないですが
一応仕組みは完成かな、
あとは、命令をちょこちょこ増やしていこうと思います。
どうも今までありがとうございました。
278774ワット発電中さん:2005/10/12(水) 05:28:36 ID:cH6iT9gI
別にパイプラインは必須じゃないが。。。

>一応完成したので最後の報告で、、
まったく完成してない。
というかとっかかりにすらたどり着いてないと見た。
どういう条件で加減算ステートに入って、どういう条件でそこから抜けるか書いてみ
279目標はCPU作成:2005/10/12(水) 06:55:38 ID:XWmjiqqy
うわぁ、早速煽られてますね。
条件は上位4ビットの値です

たぶん、ソースを見せるとなんだコレって言われそうですが
一応、16bitのパターンからメモリに読み書きして加算減算が出来る回路。
は作りましたよ、(美味く説明できないけど)
条件と加算は
else if(alldata[15:12] == 4'b0011)
file[alldata[3:0]] <= file[alldata[11:8]] + file[alldata[7:4]];
この2行ですね。。
12-15bitが0011(加算命令なら)
メモリの0-3bitの値のアドレスに、8-11 4-7のメモリのアドレスのデーターを加算して
格納。

加算のフォーマットは
(加算命令)(収納先)(データーアドレス1)(データアドレス2)
 0001    0001      0001        0001

0001000100010001

ココはこうした方が良いよって言うアドバイスなら
すごく嬉しいけど、がんばって作ったんだからただ馬鹿にするだけはやめてほしいです。

なんで完成した、と言ったかと言うと
シュミレートして
メモリからデーター取ってきて、ちゃんと加算して指定のメモリに格納してくれたからです
280774ワット発電中さん:2005/10/12(水) 07:01:49 ID:cH6iT9gI
>なんで完成した、と言ったかと言うと
>シュミレートして

ホラ!!完成どころか糸口さえつかめてない。
だから、何をきっかけにして、加算ステートに入って、何をきっかけにして、その次のステートに遷移するかって言ってんだよ。
テストベンチ見せてみろ。
281774ワット発電中さん:2005/10/12(水) 07:17:14 ID:R4vpuUL5
ALUが完成したくらいか
282774ワット発電中さん:2005/10/12(水) 08:11:37 ID:+1msqwBy
学生のお遊びなんだからムキになって見せてみろとか大人げないこと言ってやるなよ
完成したって言ってんだから完成したんだろ
283774ワット発電中さん:2005/10/12(水) 09:06:36 ID:+u1wV5oY
・・・
284774ワット発電中さん:2005/10/12(水) 09:25:16 ID:BderktoJ
俺が指導教官ならD判定。
285774ワット発電中さん:2005/10/12(水) 09:33:01 ID:wDoIWGSW
D判定って聞いたこと無いな。
286774ワット発電中さん:2005/10/12(水) 09:40:45 ID:+u1wV5oY
decision
decide
287774ワット発電中さん:2005/10/12(水) 11:43:21 ID:BderktoJ
>>279
LDA データ1アドレス
LDB データ2アドレス
ADD A,B
STA 収納アドレス
を一つにまとめたわけか?

アキュムレータを作って、ALUを操作する方向を考えるべきだな。
288774ワット発電中さん:2005/10/12(水) 11:44:44 ID:BderktoJ
>>285
A優
B良
C可
D不可

キミは優秀なのでD判定なんて聞いたことが無いんだね。
289774ワット発電中さん:2005/10/12(水) 11:51:16 ID:wDoIWGSW
阿呆かこいつ。
290774ワット発電中さん:2005/10/12(水) 12:46:41 ID:jUx2saFS
まぁ、、、完成したなら、、おめでと。ヨカッタネ





泣ける
291774ワット発電中さん:2005/10/12(水) 13:08:59 ID:BderktoJ
>>289
うーん、wDoIWGSWは厨房か工房なのか?D判定(D評価でもいいや)を知らないのか。
だみだこりゃ。
292774ワット発電中さん:2005/10/12(水) 13:25:18 ID:O8kMKRe4
あんま恥の上塗りしない方が良いかと。
293774ワット発電中さん:2005/10/12(水) 13:26:14 ID:cXbuEcHk
>>291
たぶん駄目なのはお前。
294774ワット発電中さん:2005/10/12(水) 17:38:16 ID:BderktoJ
>>292
何が恥なのか教えてくれる?後学のためにさw
295774ワット発電中さん:2005/10/12(水) 18:02:41 ID:wDoIWGSW
必死だなあ。
296774ワット発電中さん:2005/10/12(水) 23:57:52 ID:90AtbnQz
>>295
馬鹿発見。
297774ワット発電中さん:2005/10/13(木) 00:41:26 ID:FW5QpSQT
>>BderktoJ
自演も大変ですね┐ (´・ω・`) ┌ =3
298774ワット発電中さん:2005/10/13(木) 23:56:41 ID:32AJC5aE
>>297
ここは馬鹿のすくつみたいだぜ。BderktoJさんよw
299774ワット発電中さん:2005/10/14(金) 08:57:58 ID:ckV+8Tcq
BderktoJは近年稀に見る馬鹿だったな。
300774ワット発電中さん:2005/10/14(金) 20:50:46 ID:KLKBoSdS
のこり700!
301774ワット発電中さん:2005/10/15(土) 11:31:17 ID:TrSpxY/3
D判定プゲラッチョ
302774ワット発電中さん:2005/10/15(土) 12:29:50 ID:hGSCgvCL
もういいよ
303774ワット発電中さん:2005/10/15(土) 12:36:28 ID:CtzwSuU/
またBderktoJに湧かれたら迷惑。
304774ワット発電中さん:2005/10/15(土) 14:34:20 ID:QX67/jAt
D判定
305774ワット発電中さん:2005/10/15(土) 20:33:53 ID:bAuwpTga
のこり695!
306774ワット発電中さん:2005/10/16(日) 00:49:33 ID:lgamzKkO
おまえら全員不合格!298-305
307774ワット発電中さん:2005/10/16(日) 01:07:02 ID:o+TtXZuL
ここで普通の話題してもいいでしょうか?
308火魔人:2005/10/16(日) 02:25:40 ID:WlgN06L+
#しばらく読めない状態でいたら荒れてる・・・
"目標はCPU作成"頑張れよ!
自分は、十数年前Verilog-XLでシングルチップマイコンのゲートレベルシミュレーションをやる事に絶望して
CPUから離れたけど、今ならFPGAで幾等でもやり直しが出来る。
取り敢えず、論理モデル作りに精を出してシミュレータと言語仕様に慣れなさい。
その後、論理合成でつまずいて、それを乗り越えたら一人前になれる。
309774ワット発電中さん:2005/10/16(日) 02:44:30 ID:LUmExlRI
一人前になる気があるのか、あれ?
学生さんのやっつけ仕事っぽいけど
310774ワット発電中さん:2005/10/16(日) 07:40:14 ID:ELuOmHWM
>>308も素人臭さぷんぷんだけどな

論理合成できないような論理モデルつくりに精を出したって無意味 机上の空論

[ふつーの開発フロー]
0. 回路に求められている要件をリストアップ (要求仕様)
1. 最終的な回路の概略を念頭にブロック図を書く (概要仕様設計)
2. 1の回路の各モジュールのIOのタイミングチャートを書く (I/F仕様設計)
3. 2を元にビヘイビアモデル/テストベンチ/テストベクタを作る (テスト仕様設計)
4. 各モジュールについて3が通るような論理モデルをRTL記法で書く (詳細仕様設計)
5. 論理合成 / テスト / 仕様にミートしないところを手直し (実装)

0から3をすっ飛ばして4ばかりやっても無駄
特に3をサボったら動く回路は未来永劫出来上がらない (工数も3が一番大きい)

一人前とは漏れが許容できるくらい少ないテストベクタを書けることをいう
311774ワット発電中さん:2005/10/17(月) 01:01:47 ID:CvHc0KVe
状態遷移図描かずにいきなりブロック図かよ
312774ワット発電中さん:2005/10/17(月) 02:58:25 ID:mRoVhJpe
>>311
そこらへんはspiralに進んでいくんでは
313774ワット発電中さん:2005/10/17(月) 07:28:32 ID:hd8W1SSX
すべてのブロックが複雑なステートマシンをもつわけじゃないしね
複雑な状態遷移を必要とするブロックって全体の1割もないと思う
314774ワット発電中さん:2005/10/17(月) 14:04:19 ID:TUJ+r8Hb
>>310
0-2は客(発注元)が書いてくる。3-5を実担当者(発注先の外注)がやる
315774ワット発電中さん:2005/10/17(月) 16:34:40 ID:yAyjw6Mj
dネルかよw
316774ワット発電中さん:2005/10/17(月) 17:08:32 ID:TUJ+r8Hb
>>315
正しい開発業態でしょ?
317774ワット発電中さん:2005/10/17(月) 19:46:14 ID:4bjkWv+f
0 の途中から投げてくる客がいる。(要求仕様があいまい。)で、こっちで仕様を推測し確認。
2-3 は面倒なのですっ飛ばす。要求されない場合も結構あり。
5 の途中(主要機能しか確認していない)で納品。これでも金くれるところが割とある。
まあ予算っつうか、金払いしだいで手抜きはよくやるよ。
>>314 さんみたいに、0〜2 を送ってくるような会社相手には真面目にやるけどね。
318774ワット発電中さん:2005/10/18(火) 01:02:01 ID:Y8JMddnW
>>317
FPGAの話?
マスク起こす仕事ではそうはいかんだろ。
適当にやって失敗したら、製造の準備費用だけで工数飛ぶんじゃないか。


319317:2005/10/18(火) 20:34:46 ID:NYxVTuJZ
>>318
はいFPGAの話です。済みません。 あっちと間違えてカキコしちまった orz
320774ワット発電中さん:2005/10/20(木) 01:24:15 ID:TiYX7Stg
Verilogを初めてさわって、LEDを点灯させようと思っています。
XilinxのISEで試していますが、案の定エラーが出て、デバイスに
1度も書き込めずに困っています。どなたか教えていただけないでしょうか。
エラーメッセージの意味が全くわからないんです。
以下に、そのソースとエラーメッセージです。

1: module wave(in_clock,in_data1,out_data1);
2:   input in_clock;
3:   input in_data1;
4:   output out_data1;

5:   always @(posedge in_clock) begin
6:     if(in_data1 == 1'b0) begin
7://      out_data1 = 1'b0;
8:     end else begin
9://     out_data1 <= 1;
10:    end
11:   end
12: endmodule

7行目と9行目をコメントにすると
 ERROR:NgdBuild:605 - logical root block 'wave' with type 'wave' is unexpanded
と出ます。
たぶん、waveでタイプされる?ロジカルルートブロックwavwは、拡張されません。
という意味だと思うのですが、何を言っているのか、サッパリわからないんです。
・ロジカルルートブロックって、何のことでしょうか?
・なぜ拡張される必要があるのでしょうか。

また、その行をコメント無しにすると、8行目と10行目に対して
 ERROR:HDLCompilers:247 - wave.v line 8 Reference to scalar wire 'out_data1' is
  not a legal reg or variable lvalue
 ERROR:HDLCompilers:44 - wave.v line 8 Illegal left hand side of blocking assignment
と出ます。
これも、wave.vの8行目でリーガルレジスタでも可変lvalueでもない、スカラワイヤout_data1を
参照しました。という意味だと思うのですが、
・リーガルレジスタ、可変lvalue、スカラワイヤの、それぞれの意味が全くわかりません。

すみません、どのようなことを行っているのか教えていただけないでしょうか?
よろしくお願いします。
321774ワット発電中さん:2005/10/20(木) 01:44:26 ID:t2MD2bWM
alwaysのなかでブロッキング代入を使うな
322774ワット発電中さん:2005/10/20(木) 01:47:47 ID:t2MD2bWM
>たぶん、waveでタイプされる?ロジカルルートブロックwavwは、拡張されません。
条件判断だけして合成する対象がない。
323774ワット発電中さん:2005/10/20(木) 01:47:50 ID:aWLqM52Z
そういう問題じゃなくて、out_data1 を reg にしてないってだけだろ
324774ワット発電中さん:2005/10/20(木) 01:51:36 ID:t2MD2bWM
確かにエラー内容はreg宣言してないのでそれで文句言ってるけど、
根本的に、一つのalwaysのなかで一つのレジスタに対してブロッキングとノンブロッキングを混在させてまともに合成できるか?
325774ワット発電中さん:2005/10/21(金) 00:17:07 ID:MOL4TIgs
reg out_data1;を追加しれば?
326774ワット発電中さん:2005/10/21(金) 01:47:27 ID:MXLB7kY+
「ブロッキング」「ノンブロッキング」の語源を教えて下さい。

代入を待つ(ブロックする)か、待たないか(ノンブロック)って
ことだと、どうも逆に思えてしまって。。。
327774ワット発電中さん:2005/10/21(金) 02:05:46 ID:wcaymk1e
待つじゃなくて、次の代入を「待たせる」だな。
328774ワット発電中さん:2005/10/21(金) 02:16:53 ID:wiHf2+SA
320です。
みなさん、ありがとうございます。
おかげで、動きました。みなさんの指摘の通り、reg out_data1を
alwaysの前に置いたら、ちゃんと動きました。
7行目と9行目は変でしたので、修正しました。いい感じです。
どうもありがとうございました。

>>326
僕も、そう思っていましたが、講習会のテキストによると、
ブロッキング代入は、前行の代入が終わってから、次の行の代入を
する、つまり「処理の流れが前の行の処理によって止められてしまう」ので、
ブロッキングなんだそうです。逆にノンブロッキング代入は全行同時に処理される
ので「処理が待たされない」のでノンブロッキング代入だと。
クロック同期で設計するの通常だから、ブロッキング代入だと、
処理の順番を待っているうちに、もう次のクロックが来てしまって
都合が悪いので、通常はノンブロッキング代入を使うんだそうです。
この場合、右辺値は、前回値になっているそうで、D-FFのQ出力の
イメージです。
329326:2005/10/21(金) 02:17:58 ID:MXLB7kY+
>>327
納得!
330774ワット発電中さん:2005/10/23(日) 03:44:21 ID:ziSm8r0B
む320です。
お陰様で、どうにかこうにか、デバイスが動くようになりましたので
調子に乗って、Xilinxのページからverilogソースを落としてきて、
試しに動かしています。なんとかそれなりに動くのですが、記述の方法で
一つ質問があります。ご享受ください。Xilinxのサンプルで

module hoge1(....)
  always @(posedge clock or posedge a) begin
    if(posedge Clock) 処理1
    else if(posedge a) 処理2
  end
  always @(posedge clock or posedge a) begin
    if(posedge Clock) 処理3
    else if(posedge a) 処理4
  end
endmodule
という記述がされているのですが、2つの処理は、いずれもClockの↑で
動作するように思います。ので、これらは、次のように1つのalwaysで
記述できそうな気がするのですが、1つにしてはいけないのでしょうか?
module hoge2(....)
  always @(posedge clock or posedge a) begin
    処理1
    処理2
    処理3
    処理4
  end
endmodule

また、RESETの処理だけまとめておきたいと思ったら
module hoge2(....)
  always @(posedge clock or posedge a) begin
    if(posedge Clock) begin
      処理1
      処理3
    end else begin
      処理2
      処理4
    end
  end
endmodule
という書き方もできそうなのですが、これはOKでしょうか?

以上、宜しくお願いします。

331774ワット発電中さん:2005/10/23(日) 05:08:17 ID:XXJO1dsG
>>330
結論を言うと、そのように書き換えても問題はない。
ただ、あまり長い処理を1つのalwaysブロックにするとソースの見通しが悪くなるばかりか、
論理合成の最適化がうまく働かず、回路規模、速度に悪影響を及ぼすこともある。
332774ワット発電中さん:2005/10/23(日) 12:07:20 ID:o4kzIgUi
>結論を言うと、そのように書き換えても問題はない。
書き換えることに問題があるか否かより

module hoge1(....)
  always @(posedge clock or posedge a) begin

VHDLじゃあるまいし、こんな書式Verilogが許すかよ。
333774ワット発電中さん:2005/10/23(日) 12:20:15 ID:uCLYvb0X
ん?こうすべきだってこと?

always @(posedge clock or a) begin

こんな書式DesignCompilerが許すかよ。
334774ワット発電中さん:2005/10/23(日) 14:32:16 ID:c1cWQhM1
こっちの書き方は?
if(posedge Clock) begin
335774ワット発電中さん:2005/10/23(日) 16:59:31 ID:doG9bjQU
え?
あたりまえのようにこうしてるけど
always @(negedge nreset or posedge clock)
336774ワット発電中さん:2005/10/23(日) 20:22:38 ID:sKIr1j8d
ぼくも そうしてる
337774ワット発電中さん:2005/10/23(日) 20:36:10 ID:doG9bjQU
ところでこのスレでよく見かけるhogeってなに?
元ネタでもあるの?
338774ワット発電中さん:2005/10/23(日) 21:17:44 ID:yxI0GQqE
>337

最近はhageてきた
339774ワット発電中さん:2005/10/23(日) 21:25:33 ID:tm4RudSR
hoge.jp
340774ワット発電中さん:2005/10/23(日) 22:00:17 ID:o4kzIgUi
 if(posedge Clock) begin
こんな文法はない
341774ワット発電中さん:2005/10/23(日) 22:13:49 ID:qOiPlaKE
`defineって結構よく使うんですけど、ファイルを結合するとき、
同じ名前の定数があったらエラーが出ますよね。

例えば

ファイルA.v
`define AHO 1
module 〜

ファイルB.v
`define AHO 2
module 〜


これってどうにかならないんでしょうか?
C++だったら、defineの代わりにconst intとか使ったりできるんですが…
342774ワット発電中さん:2005/10/24(月) 10:01:35 ID:UpQM5RMU
メタ構文変数
インクルードガード
343774ワット発電中さん:2005/10/24(月) 13:04:03 ID:2rmYgkZg
>>337
foo bar foobarの日本語版
344337:2005/10/24(月) 20:00:47 ID:lQ+jCbhK
ありがとうございます。
>>343でぐぐってたら、過去スレ(落ち)でこんなんありました。

"hoge(ほげ)"って何よ?
http://72.14.203.104/search?q=cache:T-6CwDjIvlkJ:pc5.2ch.net/test/read.cgi/prog/1076244748/l50+%22hoge%EF%BC%88%E3%81%BB%E3%81%92%EF%BC%89%22%E3%81%A3%E3%81%A6%E4%BD%95%E3%82%88%EF%BC%9F&hl=ja
345774ワット発電中さん:2005/10/24(月) 22:50:32 ID:6u/4NiXX
その昔、NiftyのFC(C言語フォーラム)で作られた
プログラマー用語のFAQに載ってなかったかなぁ。


346774ワット発電中さん:2005/10/26(水) 13:52:43 ID:0gf/SAMo

VHDL歴1年、やっと慣れてきたのに、Verilog移行を強いられました(T_T)
下のようなVHDL記述がVerilogで記述できるのか、教えてください。

package regaddr is
constant reg1_addr : std_logic_vector(3 downto 0) := "0000";
constant reg2_addr : std_logic_vector(3 downto 0) := "0001";
end regaddr
これをコンパイルしておいて、

use work.regaddr.all;
で読み出してreg1_addr,reg2_addrを好きに使う。

よろしくお願いします。
347774ワット発電中さん:2005/10/26(水) 14:19:36 ID:Tzzs/maY
320です。先日はありがとうこざいました。
みなさんのおかげで、LEDが点くようになりました。
さて、今度は素朴な疑問が出てきました。本で調べたのですが
納得できる回答が見あたりませんでしたので、再び教えて下さい。
すみません。

今回は、動作の順番についてです。

●複数のmoduleの順番
module hoge3(......)
  処理3
endmodule

module hoge4(......)
  処理4
endmodule

module hoge5(......)
  処理5
endmodule
この場合の動作は、各モジュールが別々で関連がないため
処理3,4,5が同時に(非同期に)実行される、という理解でOKでしょうか?

●複数のalwaysの順番
module hoge6(.......)
  always@(pos clock) begin
    if(....) 処理6
  end
  always@(pos clock) begin
    if(....) 処理7
  end
  always@(pos clock) begin
    if(....) 処理8
  end
endmodule
上記の場合の動作は、処理6,7,8が同時に動作すると考えています。
この理解は正しいでしょうか?

●複数のalwaysとassignの順番
module hoge9(.......)
  always@(pos clock) begin
    if(....) 処理9
  end
  assign io1=(in1)? a:b;   ←2つのalwaysに挟まれたassign
  always@(pos clock) begin
    if(....) 処理7
  end
  assign io2=(in2)? c:d;
  assign io3=(in3)? e:f;
  assign io4=(in4)? g:h;
endmodule
上記のように、2つのalwaysに挟まれたassignと、最後にまとめて書いた
assignとでは、動作順番は、どのようになるのでしょうか。
alwaysはalwaysで、assignはassignで、まとめて書きたいのですが
書く位置によって動作が変わるのであれば.....と思いました。

宜しくお願いします。


348346:2005/10/26(水) 14:58:51 ID:0gf/SAMo
自己解決しました。
スレ汚し失礼しました。
349774ワット発電中さん:2005/10/26(水) 17:30:48 ID:SeJWFUou
>>346=348
せっかくだから解決結果をレスしてみたら?

>>347
●複数のmoduleの順番
組み合わせ回路が生成されるかと思います。
●複数のalwaysの順番
同じクロックを使用した順序回路が生成されます。

どちらにせよ並列動作する回路が生成されるのには違いないですね。

●複数のalwaysとassignの順番
位置に関係なく(assign文についての)組み合わせ回路が生成されるかと思います。
合成結果の機能に影響はないですが、性能に影響があるかどうかは不明です。ない気もするけど。
350774ワット発電中さん:2005/10/26(水) 18:13:19 ID:iJZ5dJWT
>>349
おーーー、ありがとうございました。
納得しました。前者2つは、並列動作回路。
最後のは、位置に関係なく並列動作、ですね。
ありがとうございました。助かりました。ありがとうございます。
351774ワット発電中さん:2005/10/26(水) 21:25:41 ID:6srNVuYd
hdLabのESAっていう検定受けたことのある人いますか?

http://www.hdlab.co.jp/htdocs/index.html

自己のVerilogスキルを計りたく、この検定の精度を知りたいです。
経験者の方、もしよろしかったらご感想を教えて下さい。
352774ワット発電中さん:2005/10/29(土) 02:52:32 ID:JhRiHgTw
351>
まあまあ。
ここで偉そうに能書き垂れるレベルなら、80点位取れる。
353774ワット発電中さん:2005/10/29(土) 14:58:16 ID:jEREu+dE

always @(posedge clock) begin
end

クロックの立ち上がりで動作

always @(negedge clock) begin
end

クロックの立ち下がりで動作


always @(clock) begin
end

ということは、クロックの立ち上がり、立ち下がり、いずれでもで動作
と考えれば良いでしょうか?



354774ワット発電中さん:2005/10/29(土) 15:39:42 ID:+zfVCELS
>と考えれば良いでしょうか?
考えないほうがよいと思います。
355774ワット発電中さん:2005/10/29(土) 16:09:54 ID:f1NvNKAi
せめてclock=1のとき常に動作(D-Latch)という考えをもってほしかったw
356774ワット発電中さん:2005/10/29(土) 18:15:10 ID:1wJcr3xM
厨な質問ですいません。

reg [3:0] a;

に、たとえば1を入れたい場合

a <= 4'b1;
a <= 4'b0001;
a <= 1;

のどれが一番正確でしょうか?

最適化されてどれも同じに結果は得られるんですけど、
なんか心配で...
357774ワット発電中さん:2005/10/29(土) 19:38:27 ID:rf3CEzts
最適化されないと違う結果になるはずなのか?
358774ワット発電中さん:2005/10/29(土) 21:06:14 ID:0ipGqHmy
>350
違うだろ。
 Alwayasってのは順序回路を定義する。
 Assignってのは組み合わせ回路だ。
 moduleってのは両方を入れる入れ物(インターフェース)

359774ワット発電中さん:2005/10/29(土) 21:06:15 ID:xo3B7VRf
a <= 4'b1;

って書けたんだ。
今始めて知ったw
360774ワット発電中さん:2005/10/29(土) 21:50:50 ID:0ipGqHmy
そういう書き方は間違い。
 a<=1;
でいいの。aは宣言でサイズ定義しているんだから、
いちいち幅かくなんて無駄。
361774ワット発電中さん:2005/10/29(土) 22:12:53 ID:+zfVCELS
間違いではないだろうけど・・
例えば途中でaのbit幅が変わったとき、
>>360の書き方のほうが直すところが少ない。
362774ワット発電中さん:2005/10/29(土) 22:19:23 ID:bXO2mFqg
じゃ、おいらは
a <= 4'b0001;
に1票入れておくか
363774ワット発電中さん:2005/10/29(土) 22:42:48 ID:HbEbtPcM
じゃ、わては
a <= 1;
に1万票入れちゃるわ
364774ワット発電中さん:2005/10/29(土) 23:03:34 ID:3+Q+29FH
>>362
bitパターンがちゃんと書いてあったお陰でバグがすぐ見つかったことがありんす(w
365774ワット発電中さん:2005/10/30(日) 00:37:04 ID:222RzS9/
意味によって変えるかも

カウンタの値とかだとa<=1とかやるけど、
ビットマスクみたいなやつだとa<=4'b0001とか書く
366774ワット発電中さん:2005/10/30(日) 02:26:23 ID:4AGMAIx3
誰も書かないので...
a<=4'h1
という書き方のもありまつ。

で、bit幅を書くメリット・デメリットについて
メリットはシミュレーション時間が若干短くなる。
(定義しないとデフォルトの32bit幅でシミュレーションされる為)
デメリットは、既に361が言っているように幅が変わったときの修正が面倒

367356:2005/10/30(日) 10:54:59 ID:a3dtRlvu
たくさんのレスありがとう!

バグ関連やシミュレーションや後々の変更など
いろいろなメリット・デメリットがあるんですね。
ものすごく参考になりました。
368774ワット発電中さん:2005/10/30(日) 23:24:03 ID:QiVC8HmN
ここのレスを参考にするより素直に良著を熟読したほうがよっぽど参考になると思うが?
369774ワット発電中さん:2005/10/30(日) 23:30:20 ID:w4hRbFVw
安くて高機能なVerilogシュミレーターってない?
ModelSimって高すぎるよ。
370774ワット発電中さん:2005/10/30(日) 23:56:08 ID:69j0osQr
つ XEsterter
371774ワット発電中さん:2005/10/31(月) 01:01:12 ID:twq2OD6G
>>369
烏賊留守
372774ワット発電中さん:2005/10/31(月) 01:03:54 ID:twq2OD6G
いい忘れた。
シミュレータはファンクションだけじゃなく配線配置後のタイミングシミュレートできるやつじゃないと意味ないよ。
373774ワット発電中さん:2005/10/31(月) 20:24:13 ID:ULZRuL+I
>371
 カラスゾクルス?ってなんだ?
>372
それは合成機能でしょ。
ModelSimって合成機能はないよ。でも300万。
374774ワット発電中さん:2005/10/31(月) 20:39:38 ID:KsGOhk2j
さ、さ、300万??? ModelSimって、そんなにするの?
XilinxのISE買うと付いてくるけど、あれではだめ?
375774ワット発電中さん:2005/10/31(月) 21:23:34 ID:fR7bagIq
300万なんて安いもんだ。N$/V$Sは、500万ー700万だ。
それくらい、一人リストラすればなんとでもなる。
といいつつ、折れは、BA$E−X Mつきで、年間17万だ。
これでどうだ!
376774ワット発電中さん:2005/10/31(月) 22:08:23 ID:6AtrEViS
ModelSimで外部デバイスとのシミュレーションしている人はいますか?
FPGA+同期型メモリとかの。
自社で作った基板の配線遅延やデバイス間のクロックジッタなんていうパラメータをどうやって作るのか教えて欲しいです。
まさかオシロで1個づつ測定する訳ではないですよね?
FPGAの中だけというなら話は簡単なんだけど。
377774ワット発電中さん:2005/10/31(月) 22:24:42 ID:ULZRuL+I
>376
 Excelでシュミレーションできるよ。
378774ワット発電中さん:2005/10/31(月) 22:46:54 ID:KV0jE8Z9
外付けSRAMをモデル化したことはある 遅延込みでね。
そのとき配線遅延はいれなかったけど、入れようと思えば 1nsとかそういう遅延なら入れれる。

ジッタとかそういうのはいれないなぁ あんまりやろうとはおもわないけど、
気合があるならSDFを手で書けばできるよね。
379376:2005/10/31(月) 23:22:21 ID:6AtrEViS
有り難うございます。

>気合があるならSDFを手で書けばできるよね。

やはり気合いですね。
でも、実際の遅延情報をどこから持ってくるか・・・
適当な値を入れる事はできるけど、適当な値を入れるならそもそも
シミュレーションする意味が無いのかなぁと思っています。
380774ワット発電中さん:2005/10/31(月) 23:28:39 ID:KV0jE8Z9
MAX値を見込んで入れるなら意味はあるよ。

どの配線も5nsは遅延ないだろうということで5nsいれてsetupみるとかなら十分意味がある。
381774ワット発電中さん:2005/10/31(月) 23:47:08 ID:gi+mFjy7
>>375
「リストラ」の使い方を間違えています
382774ワット発電中さん:2005/10/31(月) 23:54:51 ID:1perVWpi
まあいまだと配線遅延よりも高速動作時の、高周波回路のような振る舞いのほうが大変迷惑な気がする。
伝送線路解析?ちゃんと勉強したいけど、なかなかねぇ・・・。
383774ワット発電中さん:2005/11/01(火) 00:03:15 ID:oUKD1cPq
SDFを手でいじるなどというのは無駄な気合だな。
大体シミュレーションやることで実機評価より時間がかかっちゃ意味がない。
あと外部デバイスモデルの遅延がわかってるならそれをテストベンチに盛り込むことは簡単ジャン。
つーか普通のシミュレーションじゃん。

>まさかオシロで1個づつ測定する訳ではないですよね?

実体の遅延をどう測定するかは設計したやつにきいてくれ。
384774ワット発電中さん:2005/11/01(火) 08:08:27 ID:k/04T5wo
FPGAで1ビットのDA変換機をつくるにはどうしたらいいのですか?
資料が転がってるページがあったら教えてください
385774ワット発電中さん:2005/11/01(火) 08:58:17 ID:X5S8hKIJ
>>381
あってる
役に立たない人間を役に立つ機械と交換するんだから
用語的に言ってもリストラそのもの
386774ワット発電中さん:2005/11/01(火) 11:41:38 ID:Jy+cQA1p
387774ワット発電中さん:2005/11/01(火) 16:29:31 ID:gSUU1Lzu
388774ワット発電中さん:2005/11/01(火) 16:38:13 ID:5CwhNglb
へぇ、デジタルインターフェイスだけかと思ってたけど、内臓A/DコンバータなしでもA/Dできるんだ。感動した。
389774ワット発電中さん:2005/11/01(火) 18:02:47 ID:YjOhCQb5
なんでこれでA/D変換できるのかわかんね。。
390774ワット発電中さん:2005/11/01(火) 19:03:05 ID:rm0+7sK3
D/Aだろ。 A/D書いてあったか?
ただの1bitDACじゃねーか。
大昔のCPUや74シリーズ手組みの時代からあるぞ。
391774ワット発電中さん:2005/11/01(火) 20:16:44 ID:jZ8prWMT
本格的なΣビットDACなら、昔、デザインウェーブに詳細記事があった。
392774ワット発電中さん:2005/11/01(火) 22:52:47 ID:VwMa7Ne4
ただのPWMかよ
393774ワット発電中さん:2005/11/01(火) 22:56:48 ID:6upAYI6Q
>>389
分解能と帯域をバーター取引するようなモンじゃね?
394774ワット発電中さん:2005/11/01(火) 23:25:23 ID:QiKA2SVs
>>385
人の仕事の全てをソフトウェアで補えると思ってる??
そうかぁ、最近のソフトウェアはすごいなぁ。
395774ワット発電中さん:2005/11/01(火) 23:31:44 ID:lXXiBdML
実際凄いよな。
396774ワット発電中さん:2005/11/01(火) 23:50:08 ID:VwMa7Ne4
>>384
そもそもA/DのAをどうやって持ってくるのか知りたい。
397774ワット発電中さん:2005/11/02(水) 00:49:57 ID:szui9AFo
XILINX ISEを使ってるんですがなぜか宣言したポートがassign package pins
で出てきません。edit constraintsで無理やり割り当てると
エラーがでました。解決法がわかる方教えてください…。お願いします。
398774ワット発電中さん:2005/11/02(水) 01:02:01 ID:D4yU8eqW
>>397

>解決法がわかる方教えてください
エラーメッセージも書かずに、どうしろというんだ君は...カエレ
399774ワット発電中さん:2005/11/02(水) 01:05:32 ID:szui9AFo
エラーメッセージっていうのはedit constraintsで無理やり書いた時の事でしょうか?
でてくるのはそのポートが見つからないみたいな事を言ってるみたい
です。

ERROR:NgdBuild:755 - Line 7 in 'top.ucf': Could not find net(s) 'clk' in the
design. To suppress this error specify the correct net name or remove the
constraint. The 'Ignore I\O constraints on Invalid Object Names' property
can also be set ( -aul switch for command line users).
400774ワット発電中さん:2005/11/02(水) 01:06:01 ID:Mj+wa3cx
>>397
気分一新、VHDLを使おう。SystemCでもいいぞw
そうすればエラーでなくなるかもしれないしね!

401397:2005/11/02(水) 01:07:22 ID:szui9AFo
すいません。使ってる言語はVHDLです。
402774ワット発電中さん:2005/11/02(水) 01:16:24 ID:D4yU8eqW
>>397

>Could not find net(s) 'clk' in the design.
これが答えだ
403397:2005/11/02(水) 01:19:44 ID:szui9AFo
ちなみにソースはこんな感じです。コンポーネントしたモジュールに
それぞれ間違いなくつながってます。
entity top is
generic (
TX_WIDTH : integer := 8;
RX_WIDTH : integer := 4;
N : integer := 160 );
port(
CLK : in std_logic;
RXD : in std_logic;
RST : in std_Logic;
TXD : out std_logic
);
end top;
404774ワット発電中さん:2005/11/02(水) 01:47:58 ID:D4yU8eqW
>>397

>Could not find net(s) 'clk' in the design.
>そのポートが見つからないみたいな事を言ってるみたい
0点
答えは示した、寝る。
おやすみ〜
405397:2005/11/02(水) 01:53:57 ID:szui9AFo
たのんます。教えて(;´Д`)。
406774ワット発電中さん:2005/11/02(水) 02:47:11 ID:6vbie7xY
だからさ,論理合成後にclk信号が消えているからコンストレインファイルと
不一致してエラーが出てるんだよ

メッセージか読み取れないのか?君は。
407774ワット発電中さん:2005/11/02(水) 07:32:44 ID:DOsj1yAC
FPGAさえあれば、コンデンサーと抵抗一個で、DーA変換できるんですね。
あと、delta-sigmaの原理を使うと、さらにコンパレーターを一つ足した
だけで、A-D変換もできそうですね。
408774ワット発電中さん:2005/11/02(水) 11:42:56 ID:E1NeY9j3
case sensitiveじゃないんだっけ?
ucfのclkをCLKにしてみるとか。
409397:2005/11/02(水) 20:34:24 ID:szui9AFo
>>406
なんでそうなるかが分からんのです。ちゃんと回路で使ってるから
無駄なポートと判断されたとは思えないし。
410774ワット発電中さん:2005/11/02(水) 20:58:50 ID:xaFOyDRy
>>408じゃねぇの?
411774ワット発電中さん:2005/11/02(水) 21:08:58 ID:DekBdC4w
>>384

>FPGAで1ビットのDA変換機をつくるにはどうしたらいいのですか?
A/DもD/Aも簡単に出来る。教えてあげてもいいのだが、

>資料が転がってるページがあったら教えてください
「転がっている」という言い方には、記事を書いた人に対する敬意が見られない。
そういう奴には教えてあげたいとは思わない。
技術情報を道端の石ころと勘違いしていないか?
言い直せ。
412397:2005/11/02(水) 21:24:24 ID:szui9AFo
clkをCLKに変えても駄目でした(;´Д`)。
413774ワット発電中さん:2005/11/02(水) 22:36:53 ID:D4yU8eqW
>>397
ところで、デバイスの型名と問題になるピン番は?
まさかとは思うが、N.C.ピンにCLKつなごうとしてないか?
414774ワット発電中さん:2005/11/03(木) 02:46:54 ID:r/TANp0e
>>397
これは?
http://www.xilinx.co.jp/xlnx/xil_ans_display.jsp?BV_UseBVCookie=yes&getPagePath=17504&iLanguageID=2
>top_sc.vhd に下位レベルのエンティティのデータが最初に記述されています
415774ワット発電中さん:2005/11/05(土) 01:37:57 ID:S7sVRuw/
入門書を買ってもデジタルICの機能を言語でどう記述するかくらいのことしか書いてない
そこから先の実務レベルに近いことを勉強するにはどんな本がいいんでしょう?
416774ワット発電中さん:2005/11/05(土) 02:08:55 ID:dpzd4/t3
417774ワット発電中さん:2005/11/05(土) 03:01:17 ID:ixb+mEme
>>415
>入門書を買ってもデジタルICの機能を言語でどう記述するかくらいのことしか書いてない
ハードウェアマニュアルを読め。
418774ワット発電中さん:2005/11/05(土) 11:05:08 ID:20ngen/v
>>415
>そこから先の実務レベルに近いことを勉強するには
実際に設計する
419774ワット発電中さん:2005/11/05(土) 11:53:01 ID:Nuar6fBv
>>415
わが栄光のヒットラー
420774ワット発電中さん:2005/11/05(土) 13:40:59 ID:sCtTzG7D
馬鹿だな。
まず仕事を取る。
前金をもらう。それから、設計する。でハードウエアーマニュアルを
読む。で分らないところを入門書でマスターする。
お前らやることが逆だろ。
421774ワット発電中さん:2005/11/05(土) 16:09:30 ID:fO7nAVrG
わが栄光のヒットラーに該当するページが見つかりませんでした。

検索のヒント
- キーワードに誤字・脱字がないか確かめてください。
- 違うキーワードを使ってみてください。
- より一般的な言葉を使ってみてください。

422774ワット発電中さん:2005/11/05(土) 22:28:40 ID:FpNT3xv6
A/D変換は外部にコンデンサ一個おいて
コンデンサにたまる時間を計測してDに変換できるんじゃね?
423774ワット発電中さん:2005/11/05(土) 22:44:54 ID:dpzd4/t3
Aが測定前後で変わっても良ければね
424火魔人:2005/11/06(日) 02:11:35 ID:7ACtVczH
>369
そんな貴方に5000円のVerilogシミュレータ"Veritak"
http://japanese.sugawara-systems.com/index.htm
425774ワット発電中さん:2005/11/06(日) 03:23:07 ID:kGJBH/ze
>>415
とりあえず何でもいいから自分で作れば?
何を作ればよいかもぐらい自分で考えて
426774ワット発電中さん:2005/11/06(日) 11:12:20 ID:vlhw1Htr
>>415
そもそも、何がやりたいのか分かってないんじゃないの?

それが分かってるなら、
トレーニングコースを探して、受けてみれば?
427774ワット発電中さん:2005/11/07(月) 00:11:47 ID:xoBd7bDq
>>423
コンデンサの容量でサンプリングの周期かえればいいんじゃね?
結局アナログなんだから測定前後で同じ値ってむずかしくね?
428774ワット発電中さん:2005/11/07(月) 14:02:59 ID:6SGyxocV
iverilogのバグにぶち当たって、新しいバージョンが出てないかチェックしようとしたら
www.icarus.comにつながんない……
429774ワット発電中さん:2005/11/07(月) 14:31:56 ID:tjIUlU1i
彼は、今、Vacation中だ。サーバが落ちたらしい。
ちなみにどんなバグ?
430428:2005/11/07(月) 15:14:11 ID:6SGyxocV
単に
always @(posedge clk) q <= d;
のようなのが正しく動かない。もちろん、上のように単純化すれば動くのだが。
ModelSimやveritakだとちゃんと動いたのでiverilogのバグっぽい。
431774ワット発電中さん:2005/11/07(月) 15:42:38 ID:tjIUlU1i
それだけでは、見当のつけようがない。バグの部分をある程度特定して、
再開したら、バグデータベース上を探すか、なかったら、バグレポートを
送付してやるのが大人のマナーです。
432774ワット発電中さん:2005/11/07(月) 17:45:56 ID:6SGyxocV
こっちはシミュレーションが通ればそれでいいんだよ。
433774ワット発電中さん:2005/11/07(月) 18:29:10 ID:WsIvKD2o
所詮遊びだろ
434774ワット発電中さん:2005/11/07(月) 18:34:01 ID:tjIUlU1i
しょうがない奴だな。
安定版は、0.81.最新版は、アーキテクチャを全面変更しているので
お勧めしない。以下はミラーサイト。
http://www.geda.seul.org/download.html
435397:2005/11/08(火) 01:25:31 ID:evQOlPIz
>>414
でもないみたいです。
あ〜わかんね〜。卒業できなかったらM3だ。
 ∧||∧
(  ⌒ ヽ
 ∪  ノ
  ∪∪
436774ワット発電中さん:2005/11/08(火) 08:48:44 ID:cbFadjdR
ここまで解決能力が低い人材を社会に放流されたら困る
指導教官は責任持って留年させるべし
437774ワット発電中さん:2005/11/08(火) 09:21:44 ID:9hgnRJRz
>>435
一度、プロジェクトをリフレッシュしてみる。駄目だったら新しく別プロジェクトを作成してHDLソースだけコピペしてみる。
438774ワット発電中さん:2005/11/08(火) 11:11:15 ID:YXGJSbb1
頭がバグってるのは親の責任かなぁ?
439お祭り好きの電気や  ◆gUNjnLD0UI :2005/11/08(火) 11:43:56 ID:AEbcCFkW
漏れは親に対し、「PL責任とれっ」といったことがある。
440397:2005/11/08(火) 16:54:14 ID:evQOlPIz
なんで答えもだせないやつにこんな事いわれにゃならんのだ…。
441774ワット発電中さん:2005/11/08(火) 18:00:10 ID:EVHPpugu
答えをだせないやつに聞くお馬鹿なやつだからw
442774ワット発電中さん:2005/11/09(水) 10:45:19 ID:j5xoGzHN
397
全ソースを晒せ。話はそれからだ。

…いや、ソースの読み易さしだい
443774ワット発電中さん:2005/11/09(水) 19:07:57 ID:9q9gCrIS
>>440
答えは自分で出すモノだ。
M2にもなって答えだけを求めるな。なんのための修士課程だ。
444774ワット発電中さん:2005/11/09(水) 20:32:34 ID:sAA6s9Sp
ネタに決まってるじゃん。
答はもう出てて、みんなの様子を眺めてるんだよ。
445774ワット発電中さん:2005/11/09(水) 21:26:39 ID:SmWwv8em
↓釣れたよ〜(ガボガボ のAA
446774ワット発電中さん:2005/11/09(水) 21:45:53 ID:sLAMjb1j
ロボコンサイコーーーーーーーー
447774ワット発電中さん:2005/11/09(水) 22:02:06 ID:LVrUqU0R
>>446
0点。
448774ワット発電中さん:2005/11/10(木) 00:56:54 ID:Yo9GP/Ye
>>444
だよなぁー漏れもそう思うわ
1週間もハマルとは思えんし。
449774ワット発電中さん:2005/11/13(日) 13:50:32 ID:06zjSvgr
VHDL初心者です。CQの"VHDLとCPLDによるロジック設計入門”
のP39を参考にBCDカウンタを記述してみました。
が、MODELSIMでシミュレーションしてもQに何も出てきません・・
ソースは間違っていないようですが、手助け頼みたいです。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity BCD is
port( CLK :in std_logic;
Q :out std_logic_vector(3 downto 0);
A : out std_logic
);
end BCD;

architecture RTL of BCD is
signal Q_fb : std_logic_vector(3 downto 0);
begin
process (CLK) begin
if (CLK'event and CLK='1') then

if(Q_fb = "1001")then
Q_fb <= "0000";
else
Q_fb <= Q_fb + 1;
end if;
end if;

end process;
A <= not (Q_fb(0) or Q_fb(1) or Q_fb(2) or Q_fb(3));
Q <= Q_fb;
end RTL;
450774ワット発電中さん:2005/11/13(日) 13:51:31 ID:CMmBC/ko
VHDLなんかやめてまえ
451774ワット発電中さん:2005/11/13(日) 13:57:07 ID:csSNxEiS
>450
 何でだ?
452449:2005/11/13(日) 15:34:41 ID:06zjSvgr
自己レスです。一部自己解決しました。

というのも遅延シミュレーションを行った場合に正常な結果が得られました。

が、順序回路は遅延シミュレーションでないとシミュレーションできないのでしょうか?
デルタ遅延があるので通常のシミュレーションも出来るはずですが・・
遅延シミュだと時間がかかってしまいます。
453774ワット発電中さん:2005/11/13(日) 15:41:47 ID:Vl5gjYD5
XXXX+0001=XXXX
454Niffy:2005/11/13(日) 15:51:43 ID:Gs1keiua
HIHI
455Niffy:2005/11/13(日) 15:52:05 ID:Gs1keiua
Anybody here??
456774ワット発電中さん:2005/11/13(日) 16:18:26 ID:qA0Fb+sR
>>449
初期値が不定
457448:2005/11/13(日) 16:27:17 ID:06zjSvgr
>>456
>>453
なるほど、いま読み返したところP247に、まったく同じことが書いてありました。
お騒がせしました・・
458774ワット発電中さん:2005/11/13(日) 17:59:59 ID:yvkYaSDW
また軽石みたいなリセットしない香具師が...。
どうしてリセットしないの...面倒だから?。

その面倒に付き合わされる人の事も考えて、今度からリセット入れようね。
459774ワット発電中さん:2005/11/13(日) 21:32:39 ID:Vl5gjYD5
今回のケースとは別だけど、合成後の面積を稼ぐために最終段他特定の箇所にしかリセットをいれないことはあるよね。
460774ワット発電中さん:2005/11/14(月) 19:33:59 ID:4EJ90OtY
なんでこうリセットをないがしろする奴が多いんだろう。

>>合成後の面積を稼ぐために最終段他特定の箇所にしかリセットをいれないことはあるよね。
ありえない。
お前が部下ならクビ
461774ワット発電中さん:2005/11/14(月) 20:09:08 ID:NlWBe3cN
順序回路ならリセットは必須だよ
無用なトラブルを避けたければね。
462774ワット発電中さん:2005/11/14(月) 20:45:23 ID:ogJOTJCM
仕事じゃないからなんでもできるんだろ。いーじゃねえか自由で。
463774ワット発電中さん:2005/11/14(月) 20:57:47 ID:4EJ90OtY
ちょっと言い過ぎたかもしれないのではじめにあやまっとく。

>>462
が、遊びならそれでもいいが、>>459みたいな発言は軽石やなひたふとかも
平気で掲示板だったか日記に書いているワケよ。

仕事じゃないからイイとかさ。

会社で4年目の若い奴がなひたふのデザインウェブ付録の財用パラレルケーブル
の作り方をそのまま製品にいれてレビューで指摘したら「なひたふウェブに乗ってた」
と言って、疑いもせずに回路に遣うんだよ。まー社内レビューでわかって
直させたけれど名。

ああいうのを慕ってなひたふ最高!とか軽意思サマ〜〜〜という連中が居ると
思うと、世も末だとおもうしますます俺たちジジーとガキの差が開くワケで
会社の企業年金でオマエラに食わせてもらわんとならんのに会社がイケナイ
方向に行っちゃうのを心配しているワケなのよ。

ということで>>448よ、初期化処理はきちんとしておくことね。
配置配線後のシミュレーションでちゃんと波形が出たとしても残念ながらそれは
偶然の傾向。詳細はこのスレッドの過去ログを読んでくれ。
464459:2005/11/14(月) 21:42:56 ID:3Mly5oWi
リセットをないがしろにするつもりはないんだけど、占有率がきびしいのでそういうことをしたよ、という話です。
要所にはいれるし、検証や設計も注意は必要だし、回路構成によっては損をするけれどもね
ASIC屋さんでそういうことをした経験がある人は居ないのだろうか。

FPGAのときは概ねメリットないのでしないよw
465774ワット発電中さん:2005/11/14(月) 22:02:37 ID:Z4f7uiBo
常識的に考えてリセット回路のない順序回路なんて回路じゃないだろ。どうこう言う前にそういうのはゴミ評価に値しない。
勝手に遊んでるのは自由だ。
466774ワット発電中さん:2005/11/14(月) 22:08:11 ID:4bJ8SezR
FPGAで遊んでるからリセットはしないなぁ
初期値は設定するけど
467774ワット発電中さん:2005/11/14(月) 22:14:34 ID:/3Ug3cXw
非同期リセットにしろ同期リセットにしろ、
専用の配線が使われるし、FPGAの中のフリップフロップの特殊な入力に入るから、
リソースは消費しないんじゃないか?
468774ワット発電中さん:2005/11/14(月) 22:14:35 ID:cBY5jhBL
フリーランでも一定クロックで初期状態に戻るなら、
リセット回路はなくてもOKでしょ。
どこかで引っかかるならそりゃ必須だけど。

リセットを使うということは、
外部のリセットロジックにノイズでも乗ったら
回路の動作が吹っ飛ぶってことだからね。
安全を考えたら無条件リセットは危険な物ともいえるのでは?
ま、用途により考えることではないですかね。

今回の448辺りの話とは別のレベルの話だけどね。
469774ワット発電中さん:2005/11/14(月) 22:18:43 ID:/3Ug3cXw
なんだか4EJ90OtY必死だな。
それはさておき、燃料投下するぞ。

データシートによれば、最近のFPGAのレジスタは特に指定しなけりゃ
起動時に全部ゼロになってるんだが、どうよ。
470774ワット発電中さん:2005/11/14(月) 22:20:44 ID:cBY5jhBL
いつFPGAメーカーの気が変わるかわからないだす。
当てにしない方がいいと思うだす。
471774ワット発電中さん:2005/11/14(月) 22:23:40 ID:K46NukBp
最近のFPGAのコア電源とか複数のI/O電源の投入シーケンスを考えたら
やはりリセットはあったほうがいいと思うぞ
472774ワット発電中さん:2005/11/14(月) 22:28:14 ID:/3Ug3cXw
>>470
それは一理ある

>>471
コンフィギュレーションは電源が全部整ってから開始するし、
コンフィギュレーション後に中でグローバルラインが動いて、
LUTとかのメモリがクリアされるのだよね。
つまり、FPGAの内部レジスタが初期化されるのは、コンフィギュレーション後なのだよ。
それはリセットの理由にはならない。
473774ワット発電中さん:2005/11/14(月) 22:33:12 ID:K46NukBp
>>472
> コンフィギュレーションは電源が全部整ってから開始するし、
んなこたない。
コア電源とコンフィグ用I/O電源が安定すればコンフィグレーション始まる。
I/O電源の立ち上がりとは無関係だよ。

コンフィグする前はどのI/Oがどんな電圧に設定されるか不明なんだからさ。
474774ワット発電中さん:2005/11/14(月) 22:36:58 ID:/3Ug3cXw
そだっけ?確かにI/Oは無関係だったかもしれない。
しかし、起動時には中身はゼロだよ。

だが、FPGAが起動するって時には、FPGAの周りのCPUやら周辺デバイスやら、
そういうデバイスたちも一斉に起動するわけだから、
WR信号やRD信号が不意にでまくって変な初期値が書き込まれて
ステートマシンが変なところからスタートしないよう、
リセットは必要だと俺は思う。
どうよ?
475774ワット発電中さん:2005/11/14(月) 23:04:34 ID:Pt3kOREX
>>469
俺はあるレジスタに1234と設定したいんだ。
476774ワット発電中さん:2005/11/14(月) 23:13:44 ID:/3Ug3cXw
FPGAの初期値の設定は怪しいから使わないで書くと、
こんな記述でできないか?試したことないけど

IF(CLK'EVENT AND CLK='1') THEN
JITTAI <= NYURYOKU XOR x"1234";
END IF;

ARUREG <= x"1234" XOR JITTAI;

JITTAI(15 downto 0)というのがレジスタの実体。初期化でゼロになる。
ARUREGというのが、欲しい結果。
NYURYOKUというのが入力。

477774ワット発電中さん:2005/11/14(月) 23:33:29 ID:BH7zxaSq
つか、FPGAでもシミュレーション時に『リセットしてねーな?初期値0で開始すっけどいーか?』
みたいな警告が出たな。
478774ワット発電中さん:2005/11/14(月) 23:40:52 ID:qonP939p
リセットは実動作よりも、シミュレーションの観点がひつようかと。
あと、AlteraのHardCopy見たいにASICに移行するとき、初期化できない回路は設計ルールで許してくれないだす。
479774ワット発電中さん:2005/11/14(月) 23:43:32 ID:qonP939p
不定だらけだと、LSIテスタのテストベクタが...って。
480774ワット発電中さん:2005/11/15(火) 00:08:44 ID:Mn61RHvk
リセット書かない奴って動きながら目的値に収斂するようなアルゴリズムでも知ってるんか?
リセット回路じゃなくてニュートン法でも使ってるんかい?それならわかるが。
481774ワット発電中さん:2005/11/15(火) 00:23:13 ID:HOv05MTe
リセットが全く無いのも問題だが、
463みたいな奴もちょっと問題。

おそらく463はリセット時に中で何がおこるか仕組みを詳しく知らず(理解できずor考えられる)に、
何にでもリセットを入れちゃえばオッケーてな具合に思考停止に陥ってしまったのだろう。
まあ若いときにリセットで苦労したか何か、そんなとこだろ。
482774ワット発電中さん:2005/11/15(火) 01:02:18 ID:qVW2XBBB
vhdlはじめてみて、process文で混乱しています。

process (sel) begin
  case sel is
  when '0' => hoge <= '0';
  when others => hoge <= '1';
  end case;
end process;

↑この場合、selが"変化"したときにcase文が実行されるんですよね。
例えば、電源投入→リセット解除から、10秒後にはじめてselが変化したとき、
その10秒間のhogeの値はどうなるのでしょうか。

verilogで、always@(sel)という回路(= clockの無いalways文)は仕事では見たことありません。
必ず always@(posedge clock or negedge nreset)です。
しかし、vhdlでは、process (sel) のような記述をよく見かけます。不思議だな、と。
483774ワット発電中さん:2005/11/15(火) 01:27:46 ID:amf9Py2O
と、早速初期化してくれない訳だ...。
484482:2005/11/15(火) 01:59:00 ID:qVW2XBBB
ええと、もしかして、自分がよく見るというprocess (sel)という書き方は一般的ではないのでしょうか?

自分的には、 always@(posedge clock or negedge nreset)と同じく、
processはevent clk(+リセット)でしか使いたくないなと思っているのですが。

でも process (sel)は3人の先人たちの記述で見かけたので、vhdlでは普通なのかと混乱してます。
485774ワット発電中さん:2005/11/15(火) 01:59:36 ID:Fx09tF7w
>>481
オマエ、エスパーみたいな奴だな

そこまで想像できるんだ

たぶんオマエさんの100倍は業務で苦労して10歳以上オッサンだが、2.0uMの
プロセスやFPGAの立ち上げ時期に携わっていたことを誇りに思うよ。

メタスタ対策にGDSファイルいじったり、FIBでパッチ充てたりと楽しかったぞい。

オマエさん、やってみるか?一気に電源投入直後とかのシリコンの挙動が勉強
できるぞ?でもいまのプロセスではFIBも充てれないし電子顕微鏡見てもわから
んと開発部の同僚が言ってたがな。
486774ワット発電中さん:2005/11/15(火) 02:10:00 ID:HOv05MTe
はいはい>>485=463さん、昔は偉かったのね。わかったわかった。
あれもやりました、これもやりました、って自慢話はもういいから、
年相応に大人しくして下さいな。
487774ワット発電中さん:2005/11/15(火) 02:15:25 ID:Fx09tF7w
>>482
その構文は普通に書くよ。

たしかにVerilogではalways@(sel)は出来ない。なぜならalwaysはレジスタ宣言した信号しか
扱えないから。processは(あえて言うならばVerilogにおける)レジスタ型/ワイヤ型の
両方をセンシティビティリストで列挙できるから。

よって、上の構文は大丈夫だよ。

> 例えば、電源投入→リセット解除から、10秒後にはじめてselが変化したとき、
>その10秒間のhogeの値はどうなるのでしょうか。
本来の意味では「変化したとき」にprocessの中身が評価されるが、起動直後から
SELを評価するという解釈しかできないから、上の回路は動く。

でもシミュレーション的にはSELが初期化されていないから不定というのが正しい
解釈。

だからVHDL言語ではVHDL95のときにport( 〜 )の信号宣言部位で初期化が出来るようになった
のだ。

entity TEST is
port (
SEL : in std_logic := '0' ; <--- これ。
|
)
end TEST ;

>>483さんが言っていることはこれ。
ただし厳密にやろうとすればここまで書ける。

これ以上このあたりを書くと身元がばれそうだから、カキコやめとく。
あとは適当に本を読め。




488774ワット発電中さん:2005/11/15(火) 02:17:35 ID:Fx09tF7w
>>486
経験に裏打ちされた技術がないと、必死だな。

あと10年したら年金生活だから、よろしくな。
489774ワット発電中さん:2005/11/15(火) 02:20:32 ID:HOv05MTe
経験がすべて正しいと信じ込んで、
柔軟な発想ができなくなってしまうのは悲しいよね。
10年後、そういう人にはなりたくないな。
490774ワット発電中さん:2005/11/15(火) 03:09:59 ID:I5W2SZLj
>>487
alwaysで組み合わせ回路を記述することもできるはずですが…
まぁコーディングスタイルが決められていて482のところでは
functionで記述されているだけでは!?
491774ワット発電中さん:2005/11/15(火) 07:59:34 ID:V7WZdkVp
どうヒイキ目に見ても、思考停止してるのは>>463じゃなくて
なひたふ/軽石の言うことを疑いもせず盲信してる>>463の部下じゃん?

どうしてこうしたの? って問いに部下がなひたふ/軽石を持ち出さずに
自分の言葉で論理的に理由を説明できたなら>>463も苦言を呈すまい

ここから流用しましただけで終わらせるようなら
ああこいつ無能なんだって評価されてもやむをえない
492774ワット発電中さん:2005/11/15(火) 08:57:04 ID:+EdTPtGy
463の書いていることも非常におかしい。

第一、軽石がリセットしないというのは、ただの2ch上での噂で、真実かどうかはわからない。
それになひたふのデザインウェブ付録の財用パラレルケーブルとあるが、
デザインウェーブ1月号のFFTの記事にはそんなのはみあたらない。
思考停止というよりは463と部下の脳内で何か勝手に作り上げてないか。

それに、>>491も軽を流用というが、どこに流用できるネタがあるのだ。
493774ワット発電中さん:2005/11/15(火) 09:01:42 ID:drRx+pmy
はい、リセットの次の方どうぞ。
494774ワット発電中さん:2005/11/15(火) 11:51:11 ID:2rmLaBS3
>>492
なひたふの「デザインウェーブ付録のザイリンクス」用パラレルケーブルであって、DWに書いてあるわけじゃない。
なひたふのhpへ逝けよ。そうすりゃナニがおかしいかわかるってもんだ。

軽石の件も「軽石ふぁくとりぃ」やFPGABBSの過去ログ見れば噂かどうか判別つくが?

二次資料ばかりみて、(元資料にもあたらずに)「あれは違う、これは違う」というの”も”開発者にあるまじき態度だと思うがいかが?

495774ワット発電中さん:2005/11/15(火) 12:04:07 ID:RZnLLqrJ
なひたふ>>>>>>>>軽石

あえて同列に扱って貶めようとしてるとは・・・、自演か?
496774ワット発電中さん:2005/11/15(火) 12:32:01 ID:hLk+8/n6
まぁ熱くなるな。
FPGABBSで「VHDLなら初期値を設定できます」って書いたあの発言が発端だろ。
リセットに関しては、あの掲示板でのあの1件の発言以外は、本人の発言や記事はなかった。
それが、2chで尾ひれがついて、リセットしないと誰かが勝手に決め付けたわけだ。

それに、なひたふの「デザインウェーブ付録のザイリンクス」用パラレルケーブルって何よ?
w
497774ワット発電中さん:2005/11/15(火) 14:32:31 ID:2rmLaBS3
>>496

あの掲示板以外にもいろいろあらあなw

なひたふの件も”w”おきらくにつけていいねえ。 って自分で調べてみな。
498774ワット発電中さん:2005/11/15(火) 18:13:05 ID:NKdy9e04
レジスタを初期化するのは当然として、
ブロックRAMは全部初期化してます?
499774ワット発電中さん:2005/11/15(火) 18:15:12 ID:8PKK9FLJ
RAMってリセットできんの?
500774ワット発電中さん:2005/11/15(火) 20:18:18 ID:OsKjKfgh
FPGAに関係無いが、リセットと言えば
2年ほど前にJAXAの三角翼実験機が発射時のGでスルーホールがフレームと
接触して電源落ちてリセット->ボルト切断火薬点火
となっていたが、なんでリセットするとそんなシーケンスに入れたんだろ。
FPGAネタに戻すと漏れは必ず非同期RESETを入れるように癖付けてるな。
RAMは何も指定しないと0になってたような、どっかにオプションあるんだろうかISE
501498:2005/11/15(火) 20:55:58 ID:NKdy9e04
>>499
もちろん、一発ではリセットできないのでクリアしたい場合はループで。
>>500
何も指定しないと0ってのは起動時だけで、その後リセットしたいときの話。
502774ワット発電中さん:2005/11/15(火) 21:20:24 ID:k4mHbddD
>>501
>一発ではリセットできないので
ソースきぼんぬ
503774ワット発電中さん:2005/11/15(火) 21:26:05 ID:8PKK9FLJ
全領域に0書き込めってこと?めんどくせー!
504774ワット発電中さん:2005/11/15(火) 21:26:38 ID:NKdy9e04
例えば、スパ3のマニュアル(ds099)。
505774ワット発電中さん:2005/11/15(火) 21:32:04 ID:V7WZdkVp
blockRAMはコンフィギュレーション時に既定値を入れることはできるが
動作時に一発でリセットすることはできない。
506774ワット発電中さん:2005/11/16(水) 00:08:55 ID:ij1kavRP
>軽石がリセットしないというのは、ただの2ch上での噂で

面倒=やってないなら事実かな。
ま、ダウンロード後には確かにやんないけど、Config後はCPUにやってもらってます。
プログラマブルで数百mSのリセットICほしいね。
てか、FPGAに入れてちょ、Coreのレギュレータも。

HumanDataの掲示板

[193] re:FPGA初期化 投稿者:軽石 投稿日:2005/10/11(Tue) 12:52
良心の人さん補足ありがとうございます。
デバイスによっては駄目な場合もあるんですね。
良心の人さんが確認しているデバイスとかあったら教えていただければありがたいです。m(_._)m
記述方法が書いていませんでしたので、書きます。
Signal hogehoge :Std_logic_vector(7 downto 0):="00001111";
後ろに:=値で設定できます。
Web PACK 7.1 Spartan3でダウンロード直後に内部レジスタhogehogeを初期化(設定)できている事を確認しています。
確実にするにはリセットが必須だとは思いますが、初期値で設定できると楽なのも確かです。
FPGAの場合ダウンロードが終わってからリセットを与えないといけないので結構面倒です。
507774ワット発電中さん:2005/11/16(水) 00:22:32 ID:cAu4aps/
>>506
推測の域を出でないじゃんw
そいえば、あと10年で年金とか言ってるジジイもいたが、
50代にもなって2ちゃんで叩きなんてやるなよ。みっともない。
508774ワット発電中さん:2005/11/16(水) 00:30:46 ID:ij1kavRP
>確実にするにはリセットが必須だとは思いますが、初期値で設定できると楽なのも確かです。

これをどう解釈するか...。まいいけど。

>50代にもなって2ちゃんで叩きなんてやるなよ。

団塊の基本特性だからねぇ...。
脳より脊髄反射で生きてる...。
団塊で景気浮上!とか世間でちやほやすると、さらに図に乗りそう。

あと、”めんどくさい”もこの辺の年代の行動原理だよなぁ。
しわ寄せこっち来るんですけど。
不安定な回路に四苦八苦。ファーム屋さん気の毒。
509774ワット発電中さん:2005/11/16(水) 00:44:34 ID:bm0ymuUa
プログラムじゃないんだから、ステートもはっきりしないまま。初期値設定なんてありえないんだよアホ
510774ワット発電中さん:2005/11/16(水) 00:47:00 ID:bm0ymuUa
確実にリセット云々より、動作した後で、リセット信号を与えた場合、どうするのか考えてみろ。
今度はその前のステートの状態をひきずったまま走るのかよ。
511774ワット発電中さん:2005/11/16(水) 08:36:40 ID:xVbeRaCT
>>506
> プログラマブルで数百mSのリセットICほしいね。
> てか、FPGAに入れてちょ、Coreのレギュレータも。

たしか LatticeのFPGAにはこの手の機能が入ってたはず
512774ワット発電中さん:2005/11/16(水) 08:44:51 ID:x7FD3lGo
FPGAってのは、ユーザロジックが起動する前に
コンフィギュレーションシーケンスという偉いステートマシンがすでに動いていて、
その最後の過程でユーザ用のフリップフロップを望みの値に初期化してくれるものなのだよ。
彼が言っているのは、その初期値の設定のことでしょ。

それに、コンフィギュレーションシーケンスは、
XILINXではINITというリセット信号を否応無しに使って起動しているわけだ。

FPGAのユーザロジックなんてものは、
XILINXやALTERAが準備万端に用意してくれた箱の中で動いているだけなんだよ。
言うなればOSとユーザタスクみたいなもの。
ただ、FPGAによって初期化してくれるかどうかは微妙にことなるから注意しないとな。

実使用上の面でみれば、そりゃ皆殺しリセットを入れれば、余計な心配はしないですむし、
FPGA以外の全部のデバイスが立ち上がった頃にゆっくりリセットかけるということもできる。
それに、他のデバイスへの移行する場合にも、このデバイスでは初期化できたっけみたいなことを考えなくてもいい。
デザインレビューも通りやすいし、トラブったときの言い訳にもなる。

そういう問題を避けるためにリセットが必要だというならわかるが、
74ロジックみたいにリセットしなきゃステートマシンが不定だとか、
初期値が不定だというのは、FPGAで通用しない。
513774ワット発電中さん:2005/11/16(水) 09:47:34 ID:zyt0AT9A
要求してる初期値が全部0とか全部ffで、しかも、動作途中で再初期値設定をする必要がないとかいうなら、
メーカが用意したリセットシーケンスだけでいい特殊な場合があるかもしれないが、
>>512 が言うステートマシン云々でいうと

メーカ標準リセットステート ---> ユーザ個別のリセットステート <--> etc....

こういうことだろ?仮に初期値がall 0でよくても "<-->"で書いたが、all 0に設定するユーザ個別に用意するリセットステートは
必要だろ。
514774ワット発電中さん:2005/11/16(水) 10:11:34 ID:x7FD3lGo
>>513
話が紛糾しているポイントはそこなんだよね。
軽さんが書こうとした初期化の方法も、そこの初期化の話なわけだよね。
その話と、リセット前のデバイスが不定だという話を混同してしまっている奴がいるわけだ。

苦い経験をしてきたためだろうか、ASIC屋や74ロジック屋には、
メーカーが用意したリセットは気持ちが悪いらしい。
それゆえFPGAの「ユーザロジック」も初期値が不定で、絶対にリセットが必要だと思ってしまう。
中には不定なFPGAもあるのだろうが、初期値の決まっているFPGAも少なくない。

XILINXの最近のFPGAでは、UCFファイルとかVHDLにattribute使って書けば、
各レジスタの初期値を設定できなくはない。
ただし、ツール依存、デバイス依存の設計になってしまうのは否めない。

ユーザレベルでのリセットをかければ、初期値は思いのままで、移植性も高い。
おそらく、それがトラブらないもっとも簡単確実な方法であるのは事実。
515774ワット発電中さん:2005/11/16(水) 10:44:15 ID:aoZgyda4
>>514
FPGAからASICに転換する場合を想定しておくことは悪くは無いと思うけどね。
おれの会社のプロジェクトでもFPGAからASIC作るというのはちょくちょくあった。

で、ユーザーが明示してパワーオンリセットをかけるとまずい場合というのは
どのくらいあるのだろうか。

ちょっと疑問。
516リセット上等:2005/11/16(水) 10:54:29 ID:x7FD3lGo
>>515
>FPGAからASICに転換する場合を想定しておくことは悪くは無いと思うけどね
だから、ツール依存、デバイス依存だって書いてあるでしょ
移植を考えるなら、ユーザレベルの明示リセットを入れればいいじゃん。

>で、ユーザーが明示してパワーオンリセットをかけるとまずい場合というのは
誰も明示リセットをするなとは言っていない。
XILINXのFPGAでは、リセットはSLICEの横から入るから、
ユーザ用の入力信号を占有しないんじゃなかったか?
だったらリソースの消費にもならないし、大いにリセットかければよろし。

ただ、>>463,>>465,>>480,>>485みたいな凶暴な発言はよくない。
そりゃあなたの設計している(た)超先端の高度なデバイスでは
リセットしなきゃ全くの不明状態からはじまるのかもしれないけど、
そういうデバイスだけが全てじゃないのよ。
517513==465==480:2005/11/16(水) 11:15:35 ID:zyt0AT9A
>> ID:x7FD3lGo
だから、仮にメーカ標準リセットが0クリアしてる場合もユーザが個別のリセット回路を用意するのは当然だと言ってるんだよ。
それを用意しないようなステートマシンは遊びで作るのは結構だが、ゴミ同然だ。
それをリセット回路というかイニシャル回路というかは別にしてだ。ステートの開始ポイントをユーザが明治せずにいったいどこから
始まるんだよ。メーカの用意したリセットルーチンのその次に開始されるお前の回路のステートはいったいどこなんだよ。
518リセット上等:2005/11/16(水) 11:20:26 ID:x7FD3lGo
>> ID:zyt0AT9A
頭悪いな、まだ理解できないのか?
お前、もう、回路やめたほうがいいよ。
519774ワット発電中さん:2005/11/16(水) 11:25:31 ID:zyt0AT9A
>>ID:x7FD3lGo
長々と、論点の明確でない、糞レス書きくさって、、
そんな考えでテメエの作った回路そのものが糞だといってるんだ。
よくそれで飯食わせてもらってるなこのアホが。人に迷惑かける前にさっさと死ねや。ボケが。
520リセット上等:2005/11/16(水) 11:30:11 ID:x7FD3lGo
馬鹿の一つ覚えならぬよう、気をつけましょう。
リセットは柔軟に。
ということでFA
521774ワット発電中さん:2005/11/16(水) 11:34:52 ID:zyt0AT9A
アホのお前に少なくとも製品レベルの設計は任せられないということでFA
ステートの開始ポイントすら人に説明できないようじゃ話にならん。そんな奴は死んでしまえ。
522774ワット発電中さん:2005/11/16(水) 11:36:56 ID:Dh0KcOlg
まあなんにせよリセットや初期値ははまりやすい部分だし、あんまり手抜きしちゃいかんよ、
手を抜くときは気合い入れて手を抜けよって感じかなw

ところでもまいら、リセットのsetup/holdってどうやって保証してる?
クロック止めるしかないんかねぇ
FPGAとかのリセットってバッファリングされてるのかな(CTSみたいに)
ログ見てるとなんかReset IOからバッファ無しで直結っぽく見えるんだけど,,,
523774ワット発電中さん:2005/11/16(水) 11:43:33 ID:l1igXVtZ
>>519
つーかこの流れでageてるとこをみるとDQNか荒しなんだろうが、

動作途中で初期化する必要がなくて、デバイスが自己初期化するなら、
外部ユーザーリセットが必要ないのは自明だろ。
デバイスが自己初期化して動作始めてしまえば、
その後の動作途中で初期化する必要がないって条件でいってるんだから。

もしかしてID:zyt0AT9AはXinixみたいなFPGAの自己初期化は、
全FFが0(あるいは1)に固定されるだけだとでも思ってるのか?
ならFPGAのデータシート読んで勉強しなおすほうがいいと思うが。
524774ワット発電中さん:2005/11/16(水) 11:45:51 ID:l1igXVtZ
>>521
つーかFPGAが自己初期化が終了した時点で、
ユーザーが設定したステートの開始ポイントから走り始めるじゃん。
何が問題なのよ。その後に外部から「スタートに戻る」しなきゃならんなら、
そりゃ外部リセットが必要なのは自明だが、そうでないなら何も問題なかろうに。
525774ワット発電中さん:2005/11/16(水) 11:55:53 ID:zyt0AT9A
ID:x7FD3lGo
出てこいや。
526774ワット発電中さん:2005/11/16(水) 12:03:56 ID:zyt0AT9A
>>523
これまでさんざん初期化を明示しない回路作ってきたんでゴミだと言われると痛く傷つくってか?
ゴミなんだよ、お前の回路

>ユーザーが設定したステートの開始ポイントから走り始めるじゃん。
その開始ポイントで何やってんだよ。脳内ステートで空か?お前のオツムごとく。若しくは純粋仮想ステートか?
527774ワット発電中さん:2005/11/16(水) 12:10:24 ID:l1igXVtZ
>>526
だから初期ステートはFPGAへの制約条件の形で明示してるじゃん。

外部リセット直後と、FPGAの自己初期化直後で、
FPGAの内部状態が全く同じだとしたら、
ステートマシンの状態としても全く同じじゃん。

あ、全然関係ないけど>>525とか、
もしかして俺がID:x7FD3lGoだとでも思ってるわけ?
死ねとかゴミとか出てこいやとかageながら書いてるとこみると、
相当ファビョってるみたいだけど、デスマーチの最中なのかね?
528リセット上等:2005/11/16(水) 12:13:22 ID:x7FD3lGo
>>527
ID:zyt0AT9Aは相手にしないほうがいいよ
駄目だこりゃ。

たぶん、昔リセットで失敗して苦労して、先輩に怒られ叩き込まれたんでしょ。
そのときの感覚がまだ抜けない。
難しいことを考える能力がない人にはオールリセットはお勧め。
オールリセットは間違いじゃないけど、臨機応変にね。
529774ワット発電中さん:2005/11/16(水) 12:48:32 ID:zyt0AT9A
>>527
>外部リセット直後と、FPGAの自己初期化直後で、
>FPGAの内部状態が全く同じだとしたら、
>ステートマシンの状態としても全く同じじゃん。
仮に同じであっても、明記するのが製品だ。もしそれをしないなら、仕様書に使用するFPGAのメーカリセットの仕様を明記して、
同じであるから省略した旨、人にわかるようにきちんと伝えるのが仕事として当然の手順だ。
それをしなければ検証したかどうかも第三者には伝わらん。

>>528
まぁ、こういう奴の作った回路は製品に値しないから絶対真似しちゃだめだな。
ID:x7FD3lGoよ。頭の悪いたわ言を延々書き込むな鬱陶しい。目障りなんだよお前。
530774ワット発電中さん:2005/11/16(水) 13:05:01 ID:mHHoKoBZ
>>527-529
いい加減にしろって感じだよ
531774ワット発電中さん:2005/11/16(水) 13:13:00 ID:t9hoF5yq
リセットを入れないとまともに動かないロジックしか作れない
529みたいな奴は相当腕が悪いよね。
532774ワット発電中さん:2005/11/16(水) 13:32:21 ID:R+EojBpx
つ、目的が正しければ手段は正当化される。
 N.マキャべり
533774ワット発電中さん:2005/11/16(水) 13:32:32 ID:V6K1LzUB
>>511
ttp://www.latticesemi.co.jp/products/ispPAC/POWRMGR/index.html
↑これのことか。CPLD内蔵プログラマブル電源シーケンサー&モニター。
色物くさいけど、使ったことある人いる?
534774ワット発電中さん:2005/11/16(水) 14:56:06 ID:aoZgyda4
>>516
Destination infiniteですか?ムキになってむやみやたらに喧嘩売らないでよ。おれは463〜485とは別人だよw
おちつけ。

535774ワット発電中さん:2005/11/16(水) 16:29:25 ID:/jEtqRHf
だれが本当のことをいっていますか?

それがわからなければこの話題自体も糞
536774ワット発電中さん:2005/11/16(水) 17:39:55 ID:aoZgyda4
>>535
「俺は嘘つきだ」
「俺以外は全員嘘つきだ」
「みんな嘘つきだ」

all true
537774ワット発電中さん:2005/11/16(水) 19:41:58 ID:ZXb8GKZ8
「軽さん」て自分で呼ぶのはどうかとおもうぞ。
安藤美樹じゃあるまいし。
538774ワット発電中さん:2005/11/17(木) 15:05:20 ID:EG26Vznn
>>534
まぁこういう>> ID:x7FD3lGo  アホは有害だからほっといた方がいいよ。
539774ワット発電中さん:2005/11/17(木) 18:49:23 ID:v6Ps0HZO
zyt0AT9Aしつこい。
いい加減消え失せろ。
540774ワット発電中さん:2005/11/17(木) 21:17:11 ID:nszTmrbc
よっぽどゴミ回路を指摘されたのが悔しいようだな。
おまえ自身がゴミだからさっさと死ねよ。中卒ゴミ
541774ワット発電中さん:2005/11/17(木) 21:20:52 ID:pkrBkOM/
ID:x7FD3lGo って軽石同様、順序回路にリセット回路も入れないってあほのことか?つける薬なし。
542774ワット発電中さん:2005/11/17(木) 22:45:21 ID:aL7dwILz
リセットは保険。99%の動作可能性を100%にするのが本来の目的。
保険をかけないのも問題だが、リセットしないとほとんど動かないのはもっと問題。
俺ならそんなIC買わない。
543774ワット発電中さん:2005/11/18(金) 00:02:03 ID:q8l1rDhr
起動時にリセット信号を確実に発生しないような回路を設計する奴がバカなんだよ。マヌケッ
544774ワット発電中さん:2005/11/18(金) 07:59:51 ID:E0zJfy/L
設計によってはリセットを起動時以外にも使うことがあると思うんだが…
545774ワット発電中さん:2005/11/18(金) 08:03:28 ID:wFrh1cCP
>>535
非技術的な理由を >>529 で持ち出してきた時点でzyt0AT9Aの敗北だろ。

FPGAのメーカーリセットの使用を明記して同じであるから省略うんぬん、なんて、
FPGAのデータシートを読んだこともない素人向けの仕様書にならともかく、
プロの回路設計屋相手ならFPGAのセルフリセットの仕様ぐらい当然知ってるはずだから、
外部リセット不要と一言書いておけば、それで伝わることだしね。
546774ワット発電中さん:2005/11/18(金) 08:08:10 ID:wFrh1cCP
>>544
もちろんそういう場合は外部リセット必須。ここで問題になってるのは、

もし外部リセットがあったとして、それと同じ内部状態に起動時セルフリセットするFPGAで、
それでも起動時に外部リセットは必要か

ってこと。
547774ワット発電中さん:2005/11/18(金) 09:28:21 ID:F9egINej
>>546
設計した回路がFPGAだけでしか動かないものであれば、外部リセットを考えなくても良いとまではいわないけどありかな。
でもASICのプロトタイピングツールとして位置付けるのであれば外部リセット必須。
ということでいいんでない?
548774ワット発電中さん:2005/11/18(金) 10:08:37 ID:KJ+12mJk
549774ワット発電中さん:2005/11/18(金) 16:25:05 ID:sQMLk1uG
550774ワット発電中さん:2005/11/18(金) 17:03:44 ID:9hhGo1sQ
>>546
>もちろんそういう場合は外部リセット必須。ここで問題になってるのは、

それはお前が勝手に限定しているだけだ。勝手なことをほざくな。
イニシャル込みでリセットを検討するのは当然だ。
まぁ、それがわからんID:x7FD3lGo のような誰にも支持されんリセット不要を必死にホザいてるアホって、
軽石本人か?もしくは軽石並みってこったな。もう消えろ。邪魔だから。
551774ワット発電中さん:2005/11/18(金) 17:06:14 ID:9hhGo1sQ
大体FPGAのメーカリセットをユーザ回路の中でやってどうするよ。アホかホンマに。
そこからして軽石同レベル
552774ワット発電中さん:2005/11/18(金) 17:19:19 ID:GSKwdZt6
論点がだんだんずれてくるのはじじいで耄碌してるから?
新しい技術を理解できずに過去の栄光だけで生きてる
勘違い管理職に多いタイプだよな。

誰にも支持されてないのはお前だし、
軽石と同レベルのこだわり方してるのもお前だろうが。
狂人は出てくるなよ。
553774ワット発電中さん:2005/11/18(金) 17:30:13 ID:9hhGo1sQ
>>547
まぁ、アマチュア相手にそんな確認求めても仕方ないよ。プロの仕事したことのない奴に何を言ってもかみ合わん。
無駄なだけだ。お遊びやってんじゃないんだから。

>外部リセット不要と一言書いておけば、それで伝わることだしね。
話にならんね。こいつこんな仕事の仕方でよく金もらってるな。ほとんど詐欺だな。内仕と外仕の違いも分からんDQNとみた。
まぁこいつの仕事ぶりは推して知るべし。トラブル続きで周りが尻拭いに明け暮れてるんだろうな。
そもそもエンジニア云々じゃなく、社会生活できんやつだわ。ゴミ拾いでもやるのが分相応。
554774ワット発電中さん:2005/11/18(金) 17:34:55 ID:VDD7stxb
相手にするな。Qだから。
555774ワット発電中さん:2005/11/18(金) 17:35:26 ID:9hhGo1sQ
>>552
>新しい技術を理解できずに過去の栄光だけで生きてる
リセットが新しい技術とは片腹痛いわ。

>勘違い管理職に多いタイプだよな
大丈夫お前のような低レベルのアホは管理職には就けんから安心しとけ。
多分同じようなことを上司に言われてるんだろな。大したスキルもなければ、注意力にも欠く、
コミュニケーション能力も無ければ、プライドだけは山ほど高い。手に取るように分かるよ。
そしてつくづく同情するねお前の上司と、給料支払う羽目になって簡単に首切れないお前の会社。
ほんとに可愛そうだね。皆のためにさっさとやめろよ。組織の癌なんだよお前。
556774ワット発電中さん:2005/11/18(金) 18:02:07 ID:sQMLk1uG
なんか思うんだけど、絡んでる方も絡まれてる方も
同じ人間っぽいような気がしてならん。
しかもどっちも軽石の自演くさい。
557774ワット発電中さん:2005/11/18(金) 19:27:02 ID:REsv4/r6
同じ穴の狢
団栗の背比べ
類は友を呼ぶ
能ある鷹は爪を隠す
558774ワット発電中さん:2005/11/18(金) 20:38:46 ID:IqxurtB/
自演荒らしっぽいな
559774ワット発電中さん:2005/11/18(金) 21:00:20 ID:0FIpsvAq
男優の鷹さんって深爪になるほど爪詰めてるらしいよ
560774ワット発電中さん:2005/11/18(金) 23:30:56 ID:GnYqV4ca
トラ技の付録(予定)MAX-IIについてのスレはありますか
561774ワット発電中さん:2005/11/19(土) 07:32:32 ID:YT7QWJk3
このスレも

   【ARETERA】
562774ワット発電中さん:2005/11/19(土) 12:04:52 ID:BP5G4peK
馬鹿同士の喧嘩は詰まらんな
563あぼーん:あぼーん
あぼーん
564あぼーん:あぼーん
あぼーん
565あぼーん:あぼーん
あぼーん
566774ワット発電中さん:2005/11/19(土) 21:18:45 ID:vZN5mY5s
軽もさすがに息切れか。
567774ワット発電中さん:2005/11/20(日) 02:30:13 ID:E/BJ6ha+
ふー、やっとリセットに関する議論を全部読んだ。終わった話なのかもしれないけど、
今のFPGAは外部リセットいらないとおもいますよ。
FPGAメーカーの評価ボードとかでもコンフィギュレーションを開始するための
外部リセットはあっても、コンフィギュレーション直後にさらにリセットの
ための外部リセットなんて見たことない。

何が何でも外部リセットが必要というのは、ゲートICを並べてロジック回路を
組んでいたころの話では?
568774ワット発電中さん:2005/11/20(日) 08:57:19 ID:GcytJtqe
FPGAがリセットを出すと思ってました。
569774ワット発電中さん:2005/11/20(日) 12:14:07 ID:GVkhR8Eg
System Cも仲間に入れとくれ。
570774ワット発電中さん:2005/11/20(日) 18:02:30 ID:bT+BYqQl
VHDLで記述した回路を回路図の形で出力する方法を知っている人がいたら教えてください。
自分が書いたVHDLで、意図通りの回路が生成されているか確認するのが目的です。
571774ワット発電中さん:2005/11/20(日) 18:32:21 ID:iByHdibG
自動出力される回路じゃだめ?
572570:2005/11/20(日) 18:44:20 ID:bT+BYqQl
>>571
自動出力とはどういうものでしょうか?
私が無知なだけだったらすみません。
573774ワット発電中さん:2005/11/20(日) 20:02:48 ID:ikG3K7cs
合成ツールが吐き出したネットリストを嫁

というのはあんまりか。

しんぷりふぁいとかの合成ツールなら合成後の回路図普通に見れるよね。
ACTELのLiberoでも見れたような気がする

いまISE7.1 WebPack立ち上げてみたんだけど、Synthesize>View Technology Schematicてのが
それっぽいから試してみては?
そして報告してクレwww
574774ワット発電中さん:2005/11/20(日) 21:23:45 ID:GcytJtqe
>>570
自分が書いたHDLなら脳内にあるだろ。
575774ワット発電中さん:2005/11/20(日) 21:52:46 ID:iByHdibG
その脳内どおりに合成がなってることを確認したいんだろ。でふぉでSynplify使ってたけど
>>573の言うようにXSTでもちゃんとあるじゃん。ISEはSynplifyのエラーメッセージを解釈してくれないからXSTに乗り換えよかな。
>>572は未だISEのいろんなとこクリックしつくしてないだろ?まぁあっちこっちクリックし倒すことだな。
いいかげんうさくなってくるが、我慢していじってると機能が見えてくる。
576570:2005/11/20(日) 22:07:54 ID:bT+BYqQl
>>573-575
Quartus2とLiberoとispLeverの開発環境は構築出来ているので、
(全部フリーライセンスですが)もう少しいろいろとクリックして探して見ます。

Latticeのデバイスを使っていて、一応回路は動いてるので大丈夫だと思うのですが、
VHDLで設計をするのが初めてなので、本当に意図したとおりの回路が出来ているのか不安なんです。
回路規模も小さいし、見られるならどんな回路が生成されているのか見てみたいとおもいまして・・・
577774ワット発電中さん:2005/11/20(日) 22:36:27 ID:iByHdibG
>>576
いやいや、>>573の言うことちゃんと読んだ?

>ISE7.1 WebPack立ち上げてみたんだけど、Synthesize>View Technology Schematicてのが

俺は製品版で同項目があるのを確かめたけど>>573 がいうにはWebPackにもあるって書いてるじゃん。
578774ワット発電中さん:2005/11/21(月) 00:10:26 ID:MWns9bgk
うむ さすがに自宅には製品版いれてないのでなw
くおたすではみてないけど、多分ある予感
らてぃすはつかったことないので知らない

で、回路を確認したいという主張はもうみんな理解してるので再度主張する必要はないw
がんばってみんなのレスを100回ほど読んでみるべし。

環境かいてなかったからISEに賭けたんだけど外れたなぁw
579774ワット発電中さん:2005/11/21(月) 16:27:32 ID:kcnDQ2Dl
ここでソース晒してみればみんなが回路図にしてくれる
580774ワット発電中さん:2005/11/21(月) 17:25:57 ID:8P62xUZJ
>>557
類は友を選べない。
581774ワット発電中さん:2005/11/21(月) 17:52:35 ID:mTq5iUDV
>>576
Quartus II 5.1でもRTL Viewerがあるけどこれじゃあかんの?
582774ワット発電中さん:2005/11/23(水) 01:48:15 ID:T6UL3y2q
>>576
合成後のネットを図面でみたいのか?
無意味だからやめれ。
綺麗にゲートレベルの図面を出力するツールなんて
この世にはないよ。
どうしてもというならDebussyを何百万出してくれる
がっこの先生か会社の上司かわからんがだしてもらいなさい。
同期設計してる限りは波形とにらめっこしてるうちに、そんなの無意味だとわかってくると思われ。
図面を出力するツールなんて他人の書いた過去の非同期設計を検証する
地獄をみてからにしなさい。
583774ワット発電中さん:2005/11/23(水) 02:02:07 ID:kH402thw
まあ、意図したとおりの回路ができないこともあって確認することが無意味なことを
悟ることは決して無意味ではないであろう、といいほうに考えてみる。
Cで書いたコードを毎回逆汗するようなもんだな
584774ワット発電中さん:2005/11/23(水) 08:15:14 ID:SxxGZBat
考え付く限りのテストベクタを書いてチェックって方向の発想しないとダメっぽ
585774ワット発電中さん:2005/11/23(水) 08:34:15 ID:ScbLgPHC
>>584
検証済みの回路を引っ張ってくるのが正解。
586774ワット発電中さん:2005/11/23(水) 14:53:05 ID:HeryIw/m
間違った状態に遷移しても正常な状態に速やかに戻れるのが理想
587774ワット発電中さん:2005/11/24(木) 18:51:07 ID:CEwjRODn
>>586
間違った状態(書き込み)しても開き直るのが現実なのね?w
588774ワット発電中さん:2005/11/24(木) 22:17:37 ID:kp9iNlr8
正常な状態 → 遷移 → 間違った状態 → 遷移 → 正常な状態

              ↑いまこのへん
589774ワット発電中さん:2005/11/24(木) 22:26:30 ID:VsIKPIFy
ひとつ曲がり角
ひとつ間違えて
迷い道
く〜ねく〜ね〜
590774ワット発電中さん:2005/11/24(木) 22:38:57 ID:kp9iNlr8
2chのスレの状態遷移図っていつもこんな感じなんだよね

1)質問

2)回答

3)叩く香具師が出てくる

4)雑談が始まる→(2)へ

5)まともな回答が出る

6)みんな黙る
591774ワット発電中さん:2005/11/24(木) 23:05:32 ID:9niNh+ng
6)間違った回答を正当化しようと粘着する奴がでてくる

7)疲れるまで言い争い
592774ワット発電中さん:2005/11/25(金) 08:04:49 ID:k96eV1en
>>591
エロイ奴は7)疲れるまで言い争いの後に出てきて仕切る。
593774ワット発電中さん:2005/11/25(金) 10:21:34 ID:MZXYiZN2
>図面を出力するツールなんて他人の書いた過去の非同期設計を検証する
>地獄をみてからにしなさい。

何この漏れが退職した理由
オマヘもしかして漏れの分身?
594774ワット発電中さん:2005/11/25(金) 12:24:20 ID:VUApj2n/
軽石さん、いい加減にしてよう(´・ω・`)

生協の白石さんみたいに、笑える語録集ができるがな。
595774ワット発電中さん:2005/11/25(金) 15:16:50 ID:vb/oW2YH
>>594
×笑える
○嘲笑われる
596774ワット発電中さん:2005/11/25(金) 19:11:06 ID:k96eV1en
お前の回路を検証すると言われて不眠症になりました。
597774ワット発電中さん:2005/11/26(土) 00:21:33 ID:q4faJoCr
>>596
気の利いたやつなら
そこで腱鞘炎になる。
598774ワット発電中さん: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は実際に同じ回路を出力します。
599774ワット発電中さん:2005/11/26(土) 13:12:57 ID:lZtl69Wz
訂正、
実験例の一つ目
誤) end process EX2;
正) end process EX1;
すみません。
600774ワット発電中さん:2005/11/26(土) 14:15:32 ID:KAvs/sYl
センシビティリストはその信号線に変化があったときにそのプロセスが動くという解釈で書く。
シミュレーションはそういう解釈でいいが実際の回路ではポーリングしてるわけではないので、
思ったとおりに動作しない回路が出来上がるかもしれん。
process内部でセンシビティリストに列挙した信号線をいじるような場合は注意が必要だ。
つーかそういう回路は書かないほうがいいね。
601774ワット発電中さん:2005/11/26(土) 21:55:07 ID:EoeqNRuK
>>582

うちの会社ではDebussyだなぁ・・・必須。あとはspyglassも・・・
602774ワット発電中さん:2005/11/26(土) 23:59:42 ID:jluPLFHk
うちはDebussyで出来ることはDebussyでしか出来ねぇ(他のソフト無い)から、
ちょっとした作業でも重くてかなわん。ライセンスも少ねえし。
大は小を兼ねるにも程があるっつーの。
603774ワット発電中さん:2005/11/27(日) 04:17:21 ID:JJy/DjdE
うちはChopinで出来ることはChopinでしか出来ねぇ(他のソフト無い)から、
ちょっとした作業でも重くてかなわん。ライセンスも少ねえし。
大は小を兼ねるにも程があるっつーの。
604774ワット発電中さん:2005/11/27(日) 04:20:41 ID:oVa/9WcN
うちの会社ではBachだなぁ・・・必須。あとはkgbbottleも・・・
605774ワット発電中さん:2005/11/28(月) 00:04:18 ID:TzxtnJFG
>>598
まあ、最近の合成ツールはかかなくても合成できる。
これは想像での話だけど、ユーザーの記述したセンシティビティリストは信用してないと思う。
コンパイラによってはセンシティビティリストの過不足を指摘するぐらいだからね。

まあ、合成されると想像していた回路の解釈とはちがう解釈をコンパイラがして、それを
センシティビティリストの過不足エラーから推測することはできたりすることがあるようなないような。
(そんなケースは未経験だけど)

ちなみにシミュレーション上では違いが出る。ModelSimではセンシティビティリストに書いてない信号は
変化しても無視される。つまり、EX2ではB<=Cが未来永劫実行されない。
606774ワット発電中さん:2005/11/28(月) 00:05:36 ID:TzxtnJFG
コンパイラ、と書くとあれかな。コンパイラ→合成ツール、と読んでね。
細かくてすまんが。
607774ワット発電中さん: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のどこを見ればよいのでしょうか?
 関数というかコマンドリストみたいなものが、どこにあるのか....

以上、宜しくお願いします。
608774ワット発電中さん:2005/11/28(月) 01:45:38 ID:VRVVfPwt
>>607
Verilogのランゲージリファレンスはなかったかな?
たぶんヘルプはザイリンクスのサイト上かも。

一番いいのはVerilogを扱っているサイトでLanguage Referenceを探す。
609774ワット発電中さん:2005/11/28(月) 02:11:50 ID:3DkgujRu

 「ランゲージリファレンス」ですね。この言葉がわかりませんでした。

 調べてみます。ありがとうございました。

610774ワット発電中さん:2005/11/28(月) 02:24:40 ID:IQKGM3v0
ランゲージリファレンスなんか読んでもわからんだろ。HDLに限らずコンピュータ言語の規格書なんて独特な記法でそれに慣れるのに一苦労だ。
よっぽどのマニアか、シミュレータとかツールでも作る香具師でないと必要ないよ。
一般ユーザならそんなの読むよりVerilogの解説本読めば>>607が必要としてる情報はほとんど載ってる。
611774ワット発電中さん:2005/11/28(月) 02:52:58 ID:3DkgujRu
607です。ありがとうございましす。
解説本でしたら、何冊も持っています。(買っただけ?)
が、ソースの例は数多く見られますが、a++; などの表記については、
どの本にも書かれていませんでした。

Cでは、小型でちょっと厚めの「C言語辞典」というのを重宝しているんですが
「Verilog言語辞典」みたいなのがあればいいなと 思っています。
612774ワット発電中さん:2005/11/28(月) 03:24:26 ID:IQKGM3v0
書かれてないというのはそういう書式は許さないんだよ
613774ワット発電中さん:2005/11/28(月) 04:29:50 ID:cMmIEPd7
普段C++その他「高級」言語を使ってると
うっかり書いてしまうことはある。
別に無くても困らないけどね。
614774ワット発電中さん:2005/11/28(月) 04:47:11 ID:cMmIEPd7
>>611
ttp://toolbox.xilinx.com/docsan/xilinx7j/books/docs/xst/xst.pdf

多分ローカルディスクのインストールディレクトリ内にもあると思う。
615774ワット発電中さん:2005/11/28(月) 06:03:59 ID:OeT4T0+j
>>607
きみはcounter()を使いなさい。
616774ワット発電中さん:2005/11/28(月) 10:08:09 ID:dGyTwKBF
>>610

独特の記法といわれてるけど、BNF覚えるのは簡単だと思うけどなあ。


K&RのThe C Language(2nd edition)は(後半)規格書だけど、まともなCプログラマで持ってないやつは、いない本。
74ロジックにしろ、トランジスタ・ダイオードにしろ規格書は必要だぜ。

そうか。最近は無手勝流でやってるやつが多いからまともにプロジェクト進行しないのかw
617774ワット発電中さん:2005/11/28(月) 13:34:31 ID:4DkDN1Lu
>>616
K&Rを規格書として持ち出すとはあきれかえるね。あれは立派な解説本だ。著者の個人名が記載されてる規格書か?恐れ入った。
しかも特性を要求仕様とマッチするかどうか確認しながら選定せにゃならん部品のスペックを対比させて持ち出してくるとは開いた口がふさがらんね。
規格を読まないから進行しないんじゃなくてお前のような規格本と解説本の区別もつかんマヌケばっか
揃えてるからプロジェクトが収束せんのだろ?

言語の場合は規格にマッチしなければ規格チェッカでもあるコンパイラもしくはlintがWarningなりErrorなりを表示してくれる。
それ以上にHDLは合成ツールが規格以上を要求してくる、規格に合ってるかどうかはそこでチェックされるから解説本以上
のものは通常はなくても特に困らんのだ。さらに解説本なら"Cの書式に似てはいるが++や--は許しません"と注意書きしてるが
規格書には他のプログラミング言語を引き合いに出した注意書きなどしてないはずだ。

まぁ、俺自身Verilogの規格書もSystemVerilogの規格書も持ってはいるが、>>607の現状では解説本だけで十分なはずだ。
ちゃんと記載されてるのに、読んでない。
618774ワット発電中さん:2005/11/28(月) 13:43:55 ID:4DkDN1Lu
>>617
それとだK&RのSecond Editionは原著も邦訳もAppendixは規格書じゃない。
マニュアルだ。マニュアルが何を意味するかは、

"規格書ではなく、ANSIに対するひとつの解釈です"

とAppendixの冒頭に明確に記載されてる。それすら知らずに抜けぬけとよくも引き合いに出せたなお前。
何物か確認もせず間違いを正しいと思い込んでるような奴がプロジェクトメンバじゃお先真っ暗だな。
人に規格書を勧める前に解説本をしっかり読めや。
619774ワット発電中さん:2005/11/28(月) 13:50:41 ID:3lscRt2A
リセットじじい降臨?
それとも軽石か?
620774ワット発電中さん:2005/11/28(月) 14:45:43 ID:4g4OZqdI
つーかエンジニアって俺が規格だって顔してるヤシ多し
621774ワット発電中さん:2005/11/28(月) 16:50:30 ID:dGyTwKBF
>>617
必死すぎるなw

C言語の成り立ち知ってるなら、K&Rが規格書だった時代だって知ってるはずだよなあ。

2ndEditionの話が不適切だったのは認めようw。

コミュニケーション能力に難がありすぎるのは団塊の世代の特徴か?
622774ワット発電中さん:2005/11/28(月) 19:04:17 ID:4DkDN1Lu
>>621

>必死すぎるなw
>コミュニケーション能力に難がありすぎるのは団塊の世代の特徴か?

K&Rの2'nd edition の原著が出版されたのは88年だ。それから17年、その間ずーっとこの本をもって言語スペックと思い込んでて、
それを明確に否定されればわけのわからん戯言でもほざいて、まったく責任の無い俺にうっぷんをぶつけないと人格破綻するってか?
お前の人生そんなもん。

>C言語の成り立ち知ってるなら、K&Rが規格書だった時代だって知ってるはずだよなあ。
ひとから聞きかじった生半可な知識でC言語の成り立ちを語るなどと片腹痛いわ!
あと、
読む奴がどういう気持ちで読んでいるかはこの際関係ない。K&R本にしろStraustrap本にしろは自ら考案した言語を
世に紹介するための解説本であって、言語仕様書ではない
でもよかったじゃねえか?馬鹿にされてもひとつはっきり覚えられて。聞くは一時の恥。挙句にお前が誰かも分からんしな。
感謝しな。
623774ワット発電中さん:2005/11/28(月) 22:18:53 ID:BDGtxgeh
>>607
ちなみにな

[3:0] count のような 4 ビット長のレジスタ・配線があったら
count + 1 はキャリー込みで5ビットになることを
覚えとくとよい。

加算をするのでなく、加算器を生成するのだよ。
624774ワット発電中さん:2005/11/28(月) 22:25:13 ID:XmWvMoxC
count = count + 1;
で、左右でビット数が違うってwarningが出るんだけど、
警告されないようないちばんスマートな書き方ってどうすればいいの?
625774ワット発電中さん:2005/11/28(月) 22:40:20 ID:BDGtxgeh
>>607
あと、

> また、x <= count % 10; (countを10で割ったときの余り)とかが、
> 使えるかどうかを

低レイテンシで商・剰余をひねりだせる機構を組み込んだFPGAなんてあるのか?
高速なマイクロプロセッサでも、除算レイテンシは大きいでしょ?
(加減乗算は非同期回路でも組めるけど除算は困難)

除算を行わない代替手段を用いよう。

ちなみに、count % 8 とかだと、count & 7 とほぼ同義なので、
なるべく 10 などのキリの悪い定数を用いず、 2^n が使えるなら
それを用いるべき。

>>624
ヲーニング回避なら
(carry, count) <= count + 1;
とか書くといいかもしれんが、
今度は「参照されないレジスタ carry が消え失せます」類の
ヲーニングが出る悪寒。
626774ワット発電中さん:2005/11/29(火) 01:11:36 ID:bLAOScmd
困難っていうより無理だわな。
商だけならニュートン法で5〜6クロックでほぼ実用精度は出せると思う。
実質除算回路は使わないから。
ただ、この方法で剰余までやろうとすると、商を使って再び乗算して引き算して・・・になるからさらに要クロック
627774ワット発電中さん:2005/11/29(火) 01:14:12 ID:F7XpHd4o
Boothみたいにいいアルゴリズムだれか発明してよ
628774ワット発電中さん:2005/11/29(火) 01:20:09 ID:8lDJPwCB
>>600さん。
>>605さん。

>>598です。ご回答ありがとうございます。
センシティビティリストはネットリストには影響しないということですね。
このような事を書いている参考書がいまだ見つけられないのが気になりますが、
いろいろ考えてみて、多分正しいのではないかと思います。
どうもありがとうございました。
629774ワット発電中さん:2005/11/29(火) 09:37:06 ID:Chl/vw5S
>>622
ここに、社会人として恥ずかしい奴が一人いる!

おまえじゃああ。

匿名だからと言って、うそまきちらかすのと他人の罵倒はやめような。
諭すならもっと大人な書き込みしな。

621が全てを知ってて煽っている可能性もありうるんだけどねw
630774ワット発電中さん:2005/11/29(火) 11:56:29 ID:3VrDWOI5
>>629
また、ごみか?うざいだけなんだよ。この雑魚
罵倒されなくなかったらもうちょっとまともなこと書き込めボケ
631774ワット発電中さん:2005/11/29(火) 13:17:15 ID:Chl/vw5S
>>630
類は友を選べない。きみもだよw。
632774ワット発電中さん:2005/11/29(火) 19:12:56 ID:Z81yfDjb
魂が引き合うのかな
なんにせよ仲むつまじいのはよきことだ
633774ワット発電中さん:2005/11/29(火) 19:17:26 ID:PZm6vw8y
こら、おまいら30%ゲート数減らせ。出来なきゃ姉歯にたのむ。
634774ワット発電中さん:2005/11/29(火) 20:41:24 ID:PUNoHeTo
黙って頼め。
635774ワット発電中さん:2005/11/30(水) 00:45:42 ID:QsoxJ4Gl
あんた設計検証済んだ自信あんの。
636774ワット発電中さん:2005/11/30(水) 02:19:41 ID:9YqAq+5C
>>633
タイミングレポート赤点でも良い?
637774ワット発電中さん:2005/11/30(水) 02:22:19 ID:zlWMiyMf
ターゲットデバイスのマージンを信じろww
638774ワット発電中さん:2005/11/30(水) 02:26:06 ID:isWZO62o
タイミングレポート、偽造しろw
639774ワット発電中さん:2005/11/30(水) 03:57:46 ID:CdOXjC9i
最近HDLの話題なくて
喧嘩ばっかりで欝
640774ワット発電中さん:2005/11/30(水) 04:02:16 ID:zlWMiyMf
いちおマジレスもしてるぞ。
641774ワット発電中さん:2005/11/30(水) 13:54:21 ID:YiKB8k97
なにか効率の良いテストベンチの作成方法はないものかねぇ。
systemCがんばって覚えてみようかな。ツール自体はフリーでDLできるみたいだし。
642774ワット発電中さん:2005/11/30(水) 15:23:36 ID:tAsFHpLV
姉歯  藤田     >>638
 ↓   ↓      ↓
・∀・)・∀・)つ (;´Д`)
ケコーン ケコーン 
643774ワット発電中さん:2005/11/30(水) 15:30:26 ID:HAAQuA1m
SystemCからRTL呼び出すのか?
どういうテストベンチを考えてるか知らんがVerilogやVHDLでSimもかなり書けるだろ。
RTL書いてるのとはふんいきは違うけど。
フィッタに付属のテストベンチャーあたり使って文句言ってるんとちゃうか?
644774ワット発電中さん:2005/11/30(水) 15:58:58 ID:QsoxJ4Gl
>>641
テスト済むまでが設計だ。
645774ワット発電中さん:2005/12/01(木) 08:13:48 ID:eAbBG69F
>>624
"1"もcountと同じbit数に指定するのはどう?
8bitならば、8'h01 のように。
646774ワット発電中さん:2005/12/01(木) 10:02:54 ID:Iztd/gjd
>>641
テストと思うな。動作モードと思え。
647774ワット発電中さん:2005/12/01(木) 10:39:43 ID:lnEPfT0f
>>645
そういう問題ではないと思う
648774ワット発電中さん:2005/12/01(木) 12:25:13 ID:BLzB9JUY
回路はHDLで作ったけどテストベンチもHDLで作ることを知らんのじゃないのか?
HDL設計でエディタ使った作業としては、
回路作成モードとテストベンチ作成モードの2つあるんだけど。
確かに頭を切り替える必要はあるね。
649774ワット発電中さん:2005/12/01(木) 12:56:46 ID:GZX/QrBl
いや、普段はVHDLなりVerilogなりでテストベンチごりごり書いてるんですけどね。
SystemCは検証用につかうのがいいって小耳に挟んだので、書きやすいのかなーとか妄想してみた。
650774ワット発電中さん:2005/12/01(木) 18:51:19 ID:HpSZ+jk4
>>649
つSystem Verilog
651774ワット発電中さん:2005/12/02(金) 22:09:26 ID:cOrl98Ia
テストベンチそのものはC++ベースのSystemCで書いてもVerilogで書いてもあんまり大差ないんじゃないかな?
せいぜいテストデータ食わせるだけでしょ?
652774ワット発電中さん:2005/12/04(日) 14:34:40 ID:IRbI0wYh
オブジェクト指向(OO)っていうのは実在する事象を抽象的なプログラム上で
シミュレートするのに意味ある設計手法であって、
アルゴリズムという抽象世界を回路という実体上に構築するHDL設計に有益か
どうかあやしい。
OOをプログラムに持ち込んだところでハードウェア効率としてはデメリットが多いわけだし。
653774ワット発電中さん:2005/12/04(日) 16:14:45 ID:NZI2iX8k
誤爆?
654774ワット発電中さん:2005/12/06(火) 02:32:13 ID:v7fGiGrV
時代はSystemVerilogだ!
VHDLもVerilog HDLも無くなるんだ               と信じたい。

読みにくいVHDLは滅びてくれないかなぁ…
とりあえず一個に収束してくれればさらにいいのになぁ…
655774ワット発電中さん:2005/12/06(火) 05:07:42 ID:rZFFqC8N
VHDL = Pascal
Verilog = Perl

っていう感じ
656774ワット発電中さん:2005/12/06(火) 08:19:11 ID:3ozGWhIa
>>654
絵に戻るんだよ。
657774ワット発電中さん:2005/12/06(火) 11:19:06 ID:wt9GJyAP
>>655
VHDL = Ada
verilog = c
出自はこんなもんだが?
658774ワット発電中さん:2005/12/06(火) 11:50:32 ID:VK1/owFU
VHDLのほうが読みやすいと思ってしまうのは何故だろう
いっぱい書く方が安心するwww
659774ワット発電中さん:2005/12/06(火) 12:37:21 ID:9lhzsjJO
Verilog が C っぽくなく Perl っぽいのは >>655 に胴衣

…ヲーニングレベルを上げることができれば Verilog でもイケると思われ。
660774ワット発電中さん:2005/12/06(火) 13:37:00 ID:gtkAjKuw
でもいけるって?
現状Verilogが圧倒的に多いし、その後のSystemVerilogまでスムーズに移行できる
VHDLみたいなアホ言語で安心する奴はオツムのわるいバカエンジニア
661774ワット発電中さん:2005/12/06(火) 14:15:11 ID:rZFFqC8N
同意してくれる人がいて良かったです。

個人的にはどっちでも大して変わらないと思います。

どっちかがどっちかを攻撃しても目糞鼻糞ですから。
662774ワット発電中さん:2005/12/06(火) 19:19:01 ID:VZuy3hgI
両方使っている身としては、一長一短あってどっちが良いとかって
ものじゃ無いような気がするが・・・  個人的にはVerilogの方が好きだけどね。
まあ確かにどっちかに収束して欲しいとは思う。
663774ワット発電中さん:2005/12/07(水) 06:56:15 ID:2zt4w8aH
入門用には訳わからんミスを起こしにくい分VHDLでしょ。
実用性はVerilogの方が格段に上と思うけど。
664774ワット発電中さん:2005/12/07(水) 11:27:23 ID:Zuj+L+X5
>>663
教育用にpascalだけど実用はcと言っていた90年代のプログラマみたいな感じ。
665774ワット発電中さん:2005/12/07(水) 12:51:05 ID:TVp81Pl4
>>664
80年代じゃないのか?
666774ワット発電中さん:2005/12/07(水) 13:02:51 ID:i8dguDXA
80年代だとCを実用に使うにはまだ敷居が高かったな
コンパイラのバグ回避の手間がかかったから
667774ワット発電中さん:2005/12/07(水) 20:03:02 ID:E0m3pgny
 今、Xilinx を勉強しているのですが、ISEおしえてください。

 Verilog言語の取り扱い説明に、
 「XSTでは、Verilogメタコメントがサポートされています」と
 書いてあるのですが、この「メタ」ってどのように理解すれば
 良いのでしょうか? ハードウェアでも「メタステーブル」という言葉
 もありますし。以前から全くわからなかったです。
 宜しくお願いします。
668774ワット発電中さん:2005/12/08(木) 00:44:09 ID:mJVGfPuL
メタステーブルが準安定だから、
準注釈?
669774ワット発電中さん:2005/12/08(木) 01:01:13 ID:zOIoZLCI
「一段上の見地から」って感じがするが
670774ワット発電中さん:2005/12/08(木) 02:05:10 ID:lEKrjuYh
メタメタのコメントでもコンパイラは文句言いませんってことじゃあるまいか?
671774ワット発電中さん:2005/12/08(木) 12:13:02 ID:PljzJfL4
672774ワット発電中さん:2005/12/08(木) 13:33:52 ID:j3O3ku9l
667です。
>>668 - >>671
ありがとうございました。
「背後の、後ろの、より包括的な、超えた」という意味らしいですね。
>>671ご紹介のページには、オブジェクト指向を例にメタの説明がありました。
が、この言葉を使いこなせるほどの理解は得ていません。
メタコメントってどんなコメントなのか.....
メタステーブルって....うーん、わからん。
673774ワット発電中さん:2005/12/08(木) 14:50:42 ID:makwB+Bo
どっちの言語も中途半端にしか使えない俺様が来ましたよ
674774ワット発電中さん:2005/12/08(木) 15:07:56 ID:b2vmk+3X
つまりHiでもLowでも無い人間メタステーブルだと?
675774ワット発電中さん: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
676774ワット発電中さん:2005/12/08(木) 16:42:35 ID:5C/r2lMP
まず end の数多くね
677774ワット発電中さん:2005/12/08(木) 17:04:12 ID:b2vmk+3X
つーかQ=9でリセットってどういう意味よ?
これじゃエラーがとれてもまともな回路にはならんだろ
678774ワット発電中さん: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ベースとはいうものの、勝手がちがうのかなぁ。

679774ワット発電中さん:2005/12/08(木) 17:05:25 ID:M6hWE6me
>>675
end の数はともかく、リセット条件は別個に書いた方がいいんでね?
FPGAのF/Fにおいてはリセットは特別扱いでしょ。

…ほとんどのFPGAアーキテクチャではF/Fリセットは非同期だよね?
680774ワット発電中さん: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→....という具合です。

681774ワット発電中さん:2005/12/08(木) 17:13:39 ID:b2vmk+3X
>>680
それなら同期リセットだね
>>678であってるよ
682774ワット発電中さん: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つの条件を || でくくっても良いのではないかと思っているんですが、どうでしょう。

何か大きな勘違いをしているような気もするんですが。
683774ワット発電中さん:2005/12/08(木) 17:32:43 ID:b2vmk+3X
だから if( ( reset == 0 ) || ( Q == 9 ) )が間違いなんだって
そんな回路ありえないじゃん
684774ワット発電中さん: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も同じだと思うのですが、この理解は間違いでしょうか?
685774ワット発電中さん:2005/12/08(木) 18:03:04 ID:b2vmk+3X
うん、間違ってるよ
if( ( reset == 0 ) || ( Q == 9 ) )て書いたら
resetとQがデコードされた信号が作られるじゃん
だからありえない
686774ワット発電中さん: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する(デコードする)のとは
違うと思うんですが どうでしょうか?
687774ワット発電中さん:2005/12/08(木) 19:34:07 ID:n/oEJuH/
>>j3O3ku9l
「ノイマン型」の呪いから解き放たれるまで修行しなさい。

688774ワット発電中さん:2005/12/08(木) 19:54:20 ID:Z1AEzzFF
>>684
ハード的なものを想像できてないから、そうなっちゃうんだろうけどね

実際に合成できなくはないけど、推奨されない回路だね。
それを実際の論理回路で作ると、

FFの非同期reset入力に、" reset == 0 ) || ( Q == 9 ) "が入る。

そうすると、例えば 7→8に変化する時、君の意図しないリセットが
掛かる可能性がある。なぜかというと、

7は"0111"、8は"1000"なんだけど、Q(1)〜Q(3)がすばやく変化して
先にQ(3:1)が"100"になると、一瞬"1001"になってこれは9、リセットがかかる。

物理的な遅延時間が引き起こす現象だね。

これがいやなのでなるべく非同期設計は止め、同期設計を行うのだ。

689774ワット発電中さん:2005/12/08(木) 20:05:36 ID:GWufbwfB
>> ID:b2vmk+3X
ありえないって部分を説明してくれ.。

always @( negedge reset or posedge clock ) begin
こういうふうにセンシビティリストを書いた場合、リスト信号に同期した条件処理が一番外側から
見えてないと合成できない。

>if( ( reset == 0 ) || ( Q == 9 ) )
と書くとQ==9がclockに同期して動くのか、resetに同期して動くのかわからないので合成できない
と思ってるんだけど?違うのか?
690774ワット発電中さん:2005/12/08(木) 20:17:19 ID:GWufbwfB
>>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が書いたような心配事は杞憂だろ?
ちゃんとツールが止めてくれる。
691774ワット発電中さん:2005/12/08(木) 20:22:46 ID:GWufbwfB
>>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

と書くべきだと思う。
692774ワット発電中さん:2005/12/09(金) 13:24:53 ID:7A1IwpBT
>「ノイマン型」の呪いから解き放たれるまで修行しなさい。
プ!こいつノイマン型の意味わかってるのか?
少なくとも ID:j3O3ku9l の言う話はノイマン型とは一切関係ない
693774ワット発電中さん:2005/12/09(金) 18:45:52 ID:fRDG5BQi
>「ノイマン型」の呪いから解き放たれるまで修行しなさい。
わかる人にはわかるうまい表現だと思った。

ノイマン型の定義は
「プログラムをデータとして記憶装置に格納し、
これを順番に読み込んで実行するコンピュータ。」
であり順番に処理するのが基本。
パーフォーマンスをあげるために割込を使ったタイムシェアリングや
グリッドコンピューティングなどの工夫はされているが
処理は順番におこなうというのが基本概念。

一方、Verilog・VHDLが相手にする回路は基本的に並列処理なので
シーケンシャル処理を確実におこなうための同期回路などが不可欠に
なってくる。

要するに、記述はノイマン型コンピュータのプログラムっぽくても
相手にしてるのがロジック回路なんだからそれを忘れちゃだめだよ。
ってことでは?

694774ワット発電中さん:2005/12/09(金) 20:16:11 ID:2DTfgGgo
>>693
仮にわかってる人でも、日本語が読める人でないと、うまい表現とは認識できません。
往々にして見かけます。
695774ワット発電中さん:2005/12/09(金) 22:40:12 ID:+TX8C/m1
ストアドプログラムってのがノイマン型
そもそもノイマン型とは全く無関係な順序回路の記述をしてるのに
ノイマン型を持ってくるほうがどうかしてる。
それをたとえに出すこと自体わけがわかってないことを露呈してる。
自らのアホをさらしたにすぎん
696774ワット発電中さん:2005/12/09(金) 22:44:47 ID:+TX8C/m1
>>693
もっというなら

プログラム記述から解き放たれるまでHDLを修行しなさい。

っていうのが正しい表現だろ。
ノイマンとは一切関係ないし、全くもって不適切な表現だ。
697774ワット発電中さん:2005/12/10(土) 07:14:46 ID:FKvoiTuZ
>>696
ベクトルコンピュータのプログラム記述を知らないんですね?
698774ワット発電中さん:2005/12/10(土) 12:15:24 ID:jq6wqtX4
ノンマン型
699774ワット発電中さん:2005/12/10(土) 12:43:41 ID:htiFVHn0
>>697 
言うに事欠いてベクトルコンピュータか?あほ
ベクトル型にしかあてはまらないことならはじめからベクトル型と言え。
そうすりゃさらに徹底的に叩いてやったんだがな。
ベクトル型のいったいに何が関係するか言ってみろ。
700774ワット発電中さん:2005/12/10(土) 13:11:36 ID:8QNbC2tN


   /⌒ヽ
  / ´_ゝ`)すいません、ちょっと通りますよ・・・
  |    /
  | /| |
  // | |
 U  .U

701774ワット発電中さん:2005/12/10(土) 21:15:39 ID:FKvoiTuZ
>>699
軽石さん、なんでそんなことするの?
702774ワット発電中さん:2005/12/10(土) 21:26:51 ID:zps9HlHP
あんまり関係ないけど、
if (Q >= 9) Q <= 0;
としてくれ。
703774ワット発電中さん:2005/12/11(日) 00:12:52 ID:H58MMM+2
>>699は軽石じゃなくてリセットじじいでしょ。
ageてるし。無駄にえらそうだし。
704774ワット発電中さん: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. 明日がバースデーなのだ
705774ワット発電中さん:2005/12/11(日) 22:10:19 ID:5oHbkPvh
その歳最後の日の次の日は、普通誕生日だろ
あえて言わなくてもいい
706774ワット発電中さん:2005/12/11(日) 22:19:02 ID:Lhd0S7xe
法律上は誕生日の前の日に年をとるから
>>704はすでに24歳です。
707774ワット発電中さん:2005/12/12(月) 01:24:14 ID:zNHH+kGW
いや、今日が命日になれば誕生日どころじゃないぞ。
708774ワット発電中さん:2005/12/12(月) 10:35:17 ID:+Xsn+ubB
>707

盆と正月が一緒に来るようなもんすかね?
709774ワット発電中さん:2005/12/12(月) 11:19:06 ID:TqSSfPxY
誕生日と葬式がいっしょ
710774ワット発電中さん:2005/12/12(月) 22:09:31 ID:oYQe0EH8
12月は誕生日で酒が飲めるそ 飲める飲める飲めるぞ 酒が飲めるぞ
711774ワット発電中さん:2005/12/13(火) 04:36:39 ID:33CFOkJE
誰か漏れの部屋の掃除手伝ってくれ
712774ワット発電中さん:2005/12/13(火) 14:58:04 ID:dEEsepzT
>696
プログラムは狭義では「コンピュータを動作させる命令を組み合わせた文書」だが、
もともとは「行事などの計画、予定」つまり プログラム=HDL なので
> プログラム記述から解き放たれるまでHDLを修行しなさい。
それこそ矛盾してて意味不明。

一方、「ストアドプログラム」の基本は「処理を順番におこなう」ということ。
HDLの記述対象である「回路」は並列処理が基本だから
それに対する順序処理の象徴としてノイマン型を持ち出すのはうまい表現だ。

ブロッキング代入とノンブロッキング代入の使い分けがちゃんと出来る人ならば
ノイマン型という比喩で思わずニヤリとしたのではないかと思った。
713774ワット発電中さん:2005/12/13(火) 17:28:25 ID:hpDLApUr
>>712
>もともとは「行事などの計画、予定」つまり プログラム=HDL なので

はぁ?
HDLはプログラムなんかじゃない。回路だ。
プログラムは手順だ。
それすらわかってない奴が糞レスつけるな。

>一方、「ストアドプログラム」の基本は「処理を順番におこなう」ということ。
がきでもわかる英語がわからんかね?
ストアドプログラムは言葉どおり、蓄積されたプログラム。もう少し詳しく言っても
"動作手順であるプログラムがメモリに蓄積されていること"だ。

>それに対する順序処理の象徴としてノイマン型を持ち出すのはうまい表現だ。

順序処理の象徴がノイマン型だと?順序回路がノイマン型か?
もっというと、非ノイマン型コンピュータが順序処理をするならそれがノイマン型か?
非ノイマン型==ノイマン型か?
あほが。もう一回勉強しなおして来い。ノイマン/非ノイマンはコンピュータの構造の話だ。

>ブロッキング代入とノンブロッキング代入の使い分けがちゃんと出来る人ならば
ブロッキング、ノンブロッキングとノイマンは何の関係もない。
見てると並列処理==非ノイマン型と思ってるようだがそれは大きな間違いだ。
非ノイマン型は、 並列処理コンピュータも包含しているが、
ノイマン型構造はないでないコンピュータの総称だ。

しかも、お前とんでもない間違いしてるだろ?
>ノイマン型という比喩で思わずニヤリとしたのではないかと思った。
上の繰り返しになるが、
ノイマン/非ノイマンはコンピュータの話だ。回路記述の話に持ち出すような形容詞じゃない。
714774ワット発電中さん:2005/12/13(火) 17:30:22 ID:hpDLApUr
×ノイマン型構造はないでないコンピュータの総称だ。
○ノイマン型構造でないコンピュータの総称だ。
715774ワット発電中さん:2005/12/13(火) 18:01:14 ID:furjI892
>>712 = >>687
ジサクジエン乙 
>それに対する順序処理の象徴としてノイマン型を持ち出すのはうまい表現だ。
自画自賛乙。あ〜ハズカシ。穴があったらはいりたいよ〜
716774ワット発電中さん:2005/12/13(火) 19:31:41 ID:7QWT+UvR
ノイマン型ってハーバード型とかと同じレイヤーの言葉だよな
717774ワット発電中さん:2005/12/13(火) 19:33:50 ID:7QWT+UvR
いまどきのマルチコアCPUは並列処理をするノイマン型だし
並列処理すなわち非ノイマン型ってするのも問題ありだな
718774ワット発電中さん:2005/12/13(火) 20:01:02 ID:shB3vrzH
ノイマン型:EDSAC
非ノイマン型:ENIAC
719774ワット発電中さん:2005/12/13(火) 20:02:20 ID:fO7YeMbj
>ノイマン型ってハーバード型とかと同じレイヤーの言葉だよな

ノイマン型⊃ハーバード型
ハーバードを非ノイマンという香具師がいるがとんでもない間違い。
ハーバードアーキテクチャが多いDSPは当然乃胃萬型
720774ワット発電中さん:2005/12/13(火) 20:07:00 ID:fO7YeMbj
のいまん型は定義できるが非のいまん型はのいまん型を定義して
Complementary(のいまん型)としか定義できない。
組み合わせロジックだけで実現したコンピュータなら当然非ノイマンだけどな。
721774ワット発電中さん:2005/12/13(火) 21:16:49 ID:33CFOkJE
>712 :774ワット発電中さん :2005/12/13(火) 14:58:04 ID:dEEsepzT
>>696
>プログラムは狭義では「コンピュータを動作させる命令を組み合わせた文書」だが、
>もともとは「行事などの計画、予定」つまり プログラム=HDL なので

ダウト
722774ワット発電中さん:2005/12/13(火) 21:32:59 ID:gODBxHlD
正直、もうどうでもいい
723774ワット発電中さん:2005/12/14(水) 02:02:27 ID:/N4Fk2pp
j3O3ku9の話(FPGAの場合では非同期リセットにヒゲがのる回路)はノイマン型と関係ないと思う。
しかし、オレとしてはHDLで書くときの基本的な心構えとして、
そこに書いてあるのがノイマン型っぽく振舞うのを期待するような気分で
いてはいけないというのには同意できる。
724774ワット発電中さん:2005/12/14(水) 02:05:28 ID:/N4Fk2pp
別件なんだけど、FPGAの人に文句あり

たとえば always @( negedge reset or ...)
・負論理なら負論理っぽい信号名にしろよ、なんでみんなresetなんだよ、
・そもそもレベルで決まる信号なのに何でedgeなんだよ、
 それともFPGAはセット/リセットもedgeなのか!?
 シミュレーション結果がHDLとgateで変わっちゃうだろ。

たとえばif(reset == 0) Q <= 0;
・なんで非同期(そもそも本当に非同期?)なのに「<=」!?

FPGAが便利なのは認めるが、
この記述でFPGAの開発環境を立ち上げることにOK出したヤツはアホだろ。
と思ってしまう。
725774ワット発電中さん:2005/12/14(水) 06:51:04 ID:VOgPb3SD
↑こいつもアホ
726774ワット発電中さん:2005/12/14(水) 06:56:14 ID:yNOr+xi2
>>724
んでは、アホじゃない記述を提示してもらえますか
727774ワット発電中さん:2005/12/14(水) 09:46:07 ID:nHkyszQJ
>>720
アナログコンピューターはノイマン型でしょうかw

>>724

うちの会社では
always @( negedge nreset or posedge hogehoge)
みたいな記述してますよん。

あと、xxxedge表記されているのはedgeで見てると説明書にありますけど、違うのですか?

728774ワット発電中さん:2005/12/14(水) 12:31:10 ID:+AO8mBTv
>>724

>なんでみんなresetなんだよ、
俺は「nreset」だよ。あなたが見たソースの設計者がそういう信号名つけただけなのでは?

>そもそもレベルで決まる信号なのに何でedgeなんだよ
非同期リセットだから、次のクロックエッジまで待ってられないの。
同期リセットを使う場合は、エッジは使わない。

>なんで非同期(そもそも本当に非同期?)なのに「<=」!?
「<=」の意味をわかってないとおもわれ
729774ワット発電中さん:2005/12/14(水) 12:36:23 ID:oTKQhSEd
>>724
そんなに気に入らないならABELとかPALASMとかでも使え
730774ワット発電中さん:2005/12/15(木) 04:54:16 ID:mbshYXnx
「更に気に入らず文句を言う」
に100スライス
731774ワット発電中さん:2005/12/15(木) 10:18:07 ID:O/4X0Wgb
>>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文でリセット状態が優先されるよね
<=については主張がよくわからないのでなんとも。とりあえず:=は使わないと
思うのだが・・・。
732774ワット発電中さん:2005/12/15(木) 10:35:16 ID:O/4X0Wgb
ライブラリガイド見てて思ったのだが、
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;

とか書くのが推奨になってるし、たしかにこう書くなぁ。
733774ワット発電中さん:2005/12/15(木) 17:29:48 ID:3+aL3Gxf
俺も知りたいな。
always @ ( CLR or posedge C ) begin
と書くと、文法的にはCLRに変化があったときにHi->Lo,Lo->Hiで必ず2回チェックされるって意味だよな。
シミュレーションでは必ず遅くなるようには思う。
734774ワット発電中さん:2005/12/15(木) 18:12:40 ID:kdO5K2GR
>>731
> 信号名は、不論理ならxやらnやらつけて論理をわかるようにするのがいい
Reset や Clock はともかく、他の信号は入出力ピンの部分で全部正論理に
変換してから書いてるから気にした事無い。
ABELやPALASMの頃は、いろいろ考えたなー。
735774ワット発電中さん:2005/12/15(木) 19:36:50 ID:fAZhMzL5
非同期リセットが好きだぁ〜。
736774ワット発電中さん:2005/12/15(木) 20:04:14 ID:ohjQic3K
ごめんなさい。おともだちからなら
737774ワット発電中さん:2005/12/16(金) 09:26:19 ID:Nc5aRPqw
>>732
非同期でDをQにいれるのか・・・
多分ネットリストではSRにつなぐ構成になると思う。
738774ワット発電中さん:2005/12/16(金) 11:20:12 ID:0PUGfd5n
つまり VHDL と Verilog は等価な回路を吐かないということですね
739774ワット発電中さん :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は実行されない。

つまり記述された動作が等価じゃない。
740774ワット発電中さん:2005/12/16(金) 13:47:45 ID:MS1wPxSL
>>730
ザイ使いさんですね。
今までアルばかり使ってたもんで、
きのう初めてザイの営業さんと話をしたときに
「スライス?それって何の単位ですか?」
と聞き返してしまった。
741724 (アホかも):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とかのレベルラッチは絶対領域の不可侵回路。
ちょっとでもそのレベルに触ったらラッチの出力が変化すると認識してる。

クロックとリセットのタイミングによっては不定を出すライブラリもあるけど、
リセット非同期優先で考えてる。
そんなカンジ。
みんな仕事は問題無いの?
742774ワット発電中さん:2005/12/17(土) 17:18:23 ID:BQhE6jyA
どうして技術屋って言語能力が不自由な人が多いのか。
日本語も不自由なら、プログラム系言語も不自由だ。
俺ルールやら職場方言やらを振りかざして、
標準語を喋ってるつもりなんだろうか。
743774ワット発電中さん:2005/12/17(土) 17:25:16 ID:+z6h2oP3
>>741
その標準記述とやらは、規格的に間違いだが。
そんなアホな記述が標準で罷り通ってるようなとこに
仕事出したくねえ。
744774ワット発電中さん:2005/12/18(日) 00:39:19 ID:lSS4PWBd
>>741
D type Flip-Flop with asynchrounus reset を生成しているつもりなら、
その記述は普通に間違いですが何か?
ってか、724 は Verilog 知らんやろ。もっぺん入門書で勉強しなおせや。
本当に初心者レベルの間違いだ。
745774ワット発電中さん:2005/12/19(月) 10:18:58 ID:hQBghTSX
ここは奇妙なHDL講座のスレでつね
746774ワット発電中さん:2005/12/19(月) 23:42:55 ID:zQmJkyst
>>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.
747774ワット発電中さん:2005/12/20(火) 00:43:28 ID:nxFBC/gm
742の釣り宣言が来るのを待ってるんだが、
一向に音沙汰がないところをみると、もしやマジだったのだろうか。
748安井某:2005/12/20(火) 00:55:21 ID:P7zS+tCZ
何だかVerilog HDLに不満の人多いのかな.そんならVHDLにすれば?
少なくても非同期resetとCLKの関係についてはずっと書きやすいけど!?
749774ワット発電中さん:2005/12/20(火) 18:53:33 ID:VogncZom
負論理だから名前がどうとかそんなこたぁ問題じゃない。
第一、いまドキのコンパイラはちゃぁんとインバータ挟んでくれてますがな。
モジュールのインターフェースは全部正論理で扱ってだいじょぶだいじょぶ。
Switch Levelまで考えてたじぃさんの時代はともかく
Gate Levelはおろか下手すると全部ツール任せのおぢちゃんの時代にそんな議論は無意味だ。
それとも数十年の歴史を誇る門外不出、秘伝のコンパイラとか自社開発してたりするの?
750774ワット発電中さん:2005/12/20(火) 21:00:27 ID:ePESxSzk
マスターリセット発生、解除の回路はどう作ればいいですか?
751774ワット発電中さん:2005/12/20(火) 21:38:36 ID:TI6kQomY
リセットの話題禁止
752774ワット発電中さん:2005/12/20(火) 21:41:23 ID:6CQmOHP7
人生のリセットボタンがみつかりません(つД`)
753774ワット発電中さん:2005/12/20(火) 21:45:01 ID:oJjQycNJ
つ【輪廻転生】
754774ワット発電中さん:2005/12/20(火) 22:52:24 ID:LhUuOhQA
FPGAのRESET端子を何も操作しない場合、
電源ON時の内部FFって、確定しているんでしょうか?
マイコンみたいに、count=0; みたいなことをしなくても良いのでしょうか?
デバイスの機種依存とかで、OKの場合もNGの場合もあるとか.....
ですか?
755774ワット発電中さん:2005/12/20(火) 22:58:59 ID:xVvXMz79
電源投入後の初期化シーケンスで、ROMからデータをロードして
configurationが完了した時点で、すべてのFFの状態が決まる
756774ワット発電中さん:2005/12/21(水) 11:02:44 ID:+a5UAjgV
>>749
一子相伝のRTLがあるんでしょう。
757774ワット発電中さん: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文を書けば良いのですが、それでは膨大なステップ数に
なってしまいます。何か手はありますか?
758774ワット発電中さん:2005/12/21(水) 22:12:06 ID:0AGZFGDt
学校の宿題みたいだな。
759774ワット発電中さん:2005/12/21(水) 22:49:40 ID:nDx4PfcV
>>757

Q1.includeで呼び出せばいいのでは?

Q2.回答ではないですが、taskって、テストベンチの世界の物であって
  回路記述では使わない物、と思っていますが・・・
760774ワット発電中さん:2005/12/22(木) 01:37:57 ID:4gWFsZ74
Q4. assign {hoge,huga} = func(hage,hego); ってできなかったっけ?
761774ワット発電中さん:2005/12/22(木) 04:35:16 ID:YMVzHbyE
>>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);

....... 変わらんか。
762774ワット発電中さん:2005/12/22(木) 13:01:31 ID:0PDvtMb4
VHDLのsignalで23bit定義しています。
計算後その内の下位10bitだけ出力ピンに渡しています。
これをコンパイルするとコンパイラが勝手にsignalを10bitにしてしまっているようで間違った計算結果になってしまいます。
これはどのように回避するのでしょうか?
QuartusII使用です。
763774ワット発電中さん:2005/12/22(木) 14:06:57 ID:1TypyvYm
>>762間違っているのは藻前の回路だ。
上位13bitがそもそもまったく動かん回路になっとるはずだ。
764774ワット発電中さん:2005/12/22(木) 14:44:59 ID:0PDvtMb4
>>763
なんかそんな感じです。
間違いがありました。
もう少し調べてみます。
765774ワット発電中さん:2005/12/22(木) 21:01:16 ID:VqOvX+AX
> 間違った計算結果になってしまいます。
具体例を挙げてくれると、叩くネタになったり、躓いてる人への蜘蛛の糸になったり
いろいろ膨らむと思うんだが・・・・
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だけ。
767774ワット発電中さん:2005/12/24(土) 04:08:38 ID:F1KXJnqO
>>766
A4 だか、組み合わせ回路でも条件が複雑で case を使いたいときは、
function で書いてもいいジャマイカ。
768774ワット発電中さん:2005/12/24(土) 16:36:38 ID:68NKpkLy
>>766
>ステートマシンを記述する場合にtaskを使っているけど
マジ?taskってシミュレーション用のサブルーチンじゃないの?
回路記述なんかで使えるの?もっぱらテストベンチだけで使ってた。
769774ワット発電中さん:2005/12/24(土) 17:10:38 ID:42CaEXkI
>>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は真面目に聞いてきてるみたいだし、ネタで火星に打ち上げちゃかわいそうじゃないの?
770774ワット発電中さん:2005/12/24(土) 19:10:37 ID:e7FJGAPQ
>>766じゃないけど、

>>functionを使う場合は、"異なる信号に対して同じ処理を行う場合"に使う。
>どーいう意味?

同じような処理はfunctionでまとめて、信号をインスタンスするだけってことだろ。

俺的には「組み合わせ回路をwire型で統一表現したいので、 function文を使う」ってのは
どうかと思う。別に組み合わせはfunction、順序回路はalwaysなんて書き分けをしなくても
Verilog HDLをある程度身につけたエンジニアならばソースコード見るだけで
どっちになるかぐらいわかると思うけどなあ。
771774ワット発電中さん:2005/12/24(土) 19:36:57 ID:dX++YV5B
>>770==>>766
自演乙
772774ワット発電中さん:2005/12/24(土) 19:50:57 ID:8+3UscHO
人間ならalwaysを使って組み合わせ回路を記述するより
functionで記述した方がはるかに見やすい。
773774ワット発電中さん:2005/12/24(土) 23:16:49 ID:AuD/VTrD
組み合わせ回路の記述の基本はassign文なんだが・・・
function文はあのとってつけたような構文が示すとおり、継続的代入文の補助的な意味合いしかない。
always文では変則的に組み合わせ回路を部分的に記述できるといっても、シミュではクロックが入ってから演算するが、
実際の回路でクロックが入ったときにregに代入されるのは、その時点で既に根元まで来ている信号だ。
regの値を使った演算の結果をそのままregに代入するのでなければalways文中に書くべきではない。
774774ワット発電中さん:2005/12/25(日) 08:43:56 ID:hAKnLW/D
>実際の回路でクロックが入ったときにregに代入されるのは、その時点で既に根元まで来ている信号だ。

当たり前なんだけど、さらに「セットアップ・ホールド時間を満たしたもの」が代入される。
775774ワット発電中さん:2005/12/25(日) 10:21:53 ID:y0mRzHpt
>always文では変則的に組み合わせ回路を部分的に記述できるといっても、シミュではクロックが入ってから演算するが、

組み合わせ回路の話なのになんでクロックが??
もしかしてセンシティビティ・リストの中は(posedge clock)しか書いたことないんじゃないの。

always文で組み合わせ回路を記述しちゃイケナイなんて聞いたことないよ。
SystemVerilogじゃalways_combやalways_latchが用意されているくらいだぜ?
776774ワット発電中さん:2005/12/25(日) 11:42:55 ID:Zcoi4cUn
それは現状のVerilogではalwaysで組み合わせ回路を書くと
色々ややこしいからではないか?

VHDL感覚ならalwaysで組み合わせになりそうだが、
順序回路か組み合わせ回路か解読する手間を考えると、
組み合わせはfunctionのほうがVerilog流でしょ。
777774ワット発電中さん:2005/12/25(日) 11:59:26 ID:Wd4ErwU4
>>775
>もしかしてセンシティビティ・リストの中は(posedge clock)しか書いたことないんじゃないの。
まったく。自分の無知を棚に上げて大暴れか?

>always文で組み合わせ回路を記述しちゃイケナイなんて聞いたことないよ。
ちゃんと調べてから言え。調べもせず。聞いたことないだと?笑わせるな。
古めのVerilog解説本には組み合わせにfunctionを使うように推薦してる。
最近になって出版された書籍はどちらでもいいと書いてるものもあるがな。

>>SystemVerilogじゃalways_combやalways_latchが用意されているくらいだぜ?
だれがSystemVerilogの話をしとんねん。
778774ワット発電中さん:2005/12/25(日) 17:15:04 ID:t/fUwrn8
そして議論は永遠に収束しないと…
779774ワット発電中さん:2005/12/25(日) 18:23:49 ID:Zcoi4cUn
まあ宗教戦争みたいなもんだからな。
いつまでもかみ合わんでしょ。

こういう時こそリセットじじいに登場してもらって
経験を生かしたコメントを出して欲しいもんだが。

まあ、暇な様だけど建設的な事は嫌いらしいから無理かな。
780774ワット発電中さん:2005/12/25(日) 18:31:12 ID:EhyAJipe
自分は775擁護だな。

alway の組み合わせ回路が sim でクロックが入って演算ていうのは意味が
分からないな。実際にシミュレーションして確かめた?

イケナイ==禁止 で、推薦 != 禁止 じゃない。
ちゃんと調べても、推薦しかしてないのならイケナイという
結果はでてこないだろうな。

推薦ていうのは、"したほうがよい"という意味ですよね?
781774ワット発電中さん:2005/12/25(日) 19:15:15 ID:FpKMi6AM
>>780
>自分は775擁護だな。
ヲイヲイ>>780== >>775の癖に
自分で書き込んどいて擁護も何も無いだろ。笑止千万。しかも必死

>推薦ていうのは、"したほうがよい"という意味ですよね?
そーだなーお前が生きてるのも生きてたほうがいいよって一般論としての推薦だ。
なんなら、死んでもいいぞ。お前が死ぬのは勝手だしな。死ぬことを禁止なんかしてない。
782774ワット発電中さん:2005/12/25(日) 19:50:36 ID:EhyAJipe
>>781
775じゃないよ。
なんだかな、こういう汚いことしか言えない奴ってのはどうしようもないな。
自分が正しいと思うんなら、きちんと反論してみたら。

781の書き込みみたいのを、必死っていうんじゃない。
783774ワット発電中さん:2005/12/25(日) 20:11:03 ID:dKsOz8V8
>>782
>なんだかな、こういう汚いことしか言えない奴ってのはどうしようもないな。

そーだなー、お前のような反省もせずにくっだらん理屈こねくり回すようなアホじゃどうしようのないよな。
まともなVerilogの本だったらたいてい書いてるお勧め事項を知らん事自体何も読んでない証拠。

>781の書き込みみたいのを、必死っていうんじゃない。
まー、なんとでもほざけ。
functionは組み合わせ回路を記述するために用意された経緯を今ここで初めて
知って目から鱗か?
せいぜいがんばれや。
784774ワット発電中さん:2005/12/25(日) 20:14:29 ID:dKsOz8V8
>>782
>きちんと反論してみたら。
そいうやお前立派なこと書いてるよな。
>>780
>>782
で、これまで知らずにやってきて自己弁護に必死ってか?
大笑い!!!
785774ワット発電中さん:2005/12/25(日) 21:38:27 ID:F6Z37Vts
          -─=三=- 、
       /イイイ   ヽ三\ヽ\
      ///イ   ___    ヽ トトト
      i:|:/ミ  -_-__--_−_-_ トト|:i
      |:|:|イ   へ、 ̄ /ヽ   |:|:|
      |:|:||   _、   ,.-_、 |:|:|  <functionわかってない奴が自己弁護の
      ト:!:|  ヽ´´´ノ ヽ´´´ノ |:|リ <偽装工作に必死
      ヽ_|    ̄ ノ  丶 ̄  |_ノ
         | \/ (_i  i_)\/ |
        |  | /  ̄  \ | |
         \ -=^^=- /
           ヽ   ̄  ノ
786774ワット発電中さん:2005/12/26(月) 06:18:26 ID:EwEgmKKz
>functionは組み合わせ回路を記述するために用意された経緯

どこのことを言っているのだろうか。
まさか>>773じゃないよね?
787774ワット発電中さん:2005/12/26(月) 16:23:21 ID:4cswt5Ou
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;

って記述される方っています?私はあんまり見慣れないんですが・・・
788774ワット発電中さん:2005/12/26(月) 16:51:32 ID:KoZmlO6C
>>787
人によってはある。

先日納品されたVHDLソースには両方混在していた。
(複数人のプロジェクトだったので)

設計ガイドラインの無い会社には次たのまんことにした。
789774ワット発電中さん:2005/12/26(月) 23:55:12 ID:y4eDxGsk
設計ガイドラインなんて俺の会社にゃ無えーよ。
HDL記述してるの俺だけだし。(FPGAだけどな。) ある意味好き勝手自由にできる。
その日の気分で変えてもだれも文句言わない。(上司はだれも理解していないから。)
でもどういう記述するのが一番スマートなのかさっぱりワカラン。
文法とかって話じゃなく、セオリー的なガイドラインみたいな事を解説してるような
書籍や資料ってないもんだろうか? 詳しい人、教えて!
790774ワット発電中さん:2005/12/27(火) 00:41:22 ID:Bj1RdzOI
これなんかどう?
http://www.starc.jp/bookstore/index-j.html

FPGA専門だと、細かすぎて鬱陶しいかも知らんけどね。

内容見本はこっち(旧版だけど)。
http://www.hdlab.co.jp/htdocs/service/styleguide/styleguide.html

昔は3万位したけど、ずいぶん安くなったみたい。
791789:2005/12/27(火) 12:36:22 ID:LToaNK80
>>790
おぉー! 情報サンクス。
プレビュー見た感じ良さげだね。 ありがとう。
792774ワット発電中さん:2005/12/28(水) 08:56:43 ID:ijtoURMd
非同期リセットは本当に必要なのか。
793774ワット発電中さん:2005/12/28(水) 08:59:59 ID:G1sXrOgk
リセットの話題は危険だぞ・・・
過去の遺物が出てくるぞ・・・・

・・・個人的にはリセットは同期で使う物と思う。
非同期はタイミングで誤動作する可能性が高いので
使わないことにしている。
794774ワット発電中さん: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に戻す記述をするべきなのでしょうか?
795774ワット発電中さん:2005/12/31(土) 07:30:40 ID:HilpXGcr
>>794
わざわざ0に戻す記述はいらないでしょ。
3bitしか宣言してないんでしょ?
796774ワット発電中さん: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
797774ワット発電中さん:2005/12/31(土) 17:33:38 ID:1nCnB4cx
>>794
それはバス仕様依存だからどのバスを使うのか言わないとなんとも返事できん

たとえばPCIバスなら、データバスに乗るデータのエンディアンに関わらず
C/BE3 → AD31-24
C/BE2 → AD23-16
C/BE1 → AD15-8
C/BE0 → AD7-0
の対応は変わらない

独自に設計したバスならバスを設計したヤシに聞くしかないな
798794:2005/12/31(土) 22:27:10 ID:ivuw4a3s
>>795
3bitしか宣言しないです。
実機で確認した所どちらの記述でも結果は同じになったのですが、
どっちの記述が適しているのかと思いまして・・・

>>797
すみません。勉強不足で仰ってる意味がわかりません。
799774ワット発電中さん:2005/12/31(土) 22:40:26 ID:2vYYFwrT
勉強してから、ここにこい(#゚Д゚)ゴルァ!
800794:2005/12/31(土) 23:02:58 ID:ivuw4a3s
>>799
すみませんでした。
801774ワット発電中さん:2006/01/01(日) 00:22:48 ID:J+MVkjRk
あけましておめでとうございます

>>800
>>797>>796へのレスだからわかんなくてもおk

>>796
アクセス先が電源ONでまっさらになるDRAMみたいなやつで
アクセス元がひとつ かつ 
図のように常に同じ単位(この場合16ビット)でアクセスするなら
何もいじらなくていい

なぜなら
書くときバイトがねじれても
読むときもねじれて結局元にもどるから

しかし 例えば
上・下16ビット=2バイト単位で書いたところを
1バイトだけとか 4バイトまとめて読むこともあるのなら
エンディアンの違いが響いてくる
(説明は面倒なので省略 絵を描いて考えてみて)

アクセス元がCPUで ソフト屋がそんな使い方してたら
ハード屋がバイトのセレクト信号をつなぎ変えるだけじゃ
対処しきれない ソフト屋も要変更
802774ワット発電中さん:2006/01/01(日) 09:16:34 ID:ge7nqIYp
> しかし 例えば
> 上・下16ビット=2バイト単位で書いたところを
> 1バイトだけとか 4バイトまとめて読むこともあるのなら
> エンディアンの違いが響いてくる
> (説明は面倒なので省略 絵を描いて考えてみて)

まっさらから始めるって条件なら、説明が面倒なんじゃなくてただの大嘘だろ
バイトイネーブル信号がデータバスと対応した然るべきイネーブル入力に
接続されてたら違いなんて見えない
要は信号の名前(正確には添数字)をどうつけるかだけの問題

実行中に動的にエンディアンを切り替えたいから悩ましいんじゃないのか?
803774ワット発電中さん:2006/01/01(日) 22:26:11 ID:J+MVkjRk
バイト単位でアクセスするデバイスだけなら
そもそもエンディアンの違いで悩む必要はない

だがビット位置が関係するデバイスがからむと
一気に厄介になる

16ビット幅でabcdと下位2バイトに書き込むと

ビッグエンディアン (bit15)abcd(bit0)
リトルエンディアン (bit15)cdab(bit0)

これだとバスにビット位置を意識しているデバイスが
ぶら下がっていると不具合を起こすのは自明

だからといって16ビット幅でのアクセスなら
リトルエンディアンでもそのままabcdと書くと
突っ込まれた点が問題になりえる
804774ワット発電中さん:2006/01/01(日) 23:50:11 ID:ge7nqIYp
一般的な記憶デバイスなら、アドレスバスはまだしも
データバスのビット位置は意識しないよね

たとえデータバスのビット位置を意識するデバイスを使う場合にしても
動的にエンディアンが変化しないなら、PWBAの配線でよしなに接続すれば
いいだけの話だよな
805774ワット発電中さん:2006/01/02(月) 16:08:37 ID:T6GG7zDA
>>798
> 3bitしか宣言しないです。
溢れようが桁上がろうが、その下位3bitしか見ないなら同じことじゃん。
806796:2006/01/03(火) 20:53:09 ID:RDnvM8Wg
>>797
>>801-804

ご丁寧にどうもです。
>>796では、メモリ構成をハーフワードアクセスのイメージで書いてますが、
実際のハード仕様は、8bit*4でバイト/ハーフワード/フルワードのアクセスに
対応しています。(バイトレーンセレクタを実装)

このメモリにアクセスするのはMCUなんだけど、バイトアクセスってあるのかね?
一応、Big Endianの頃からハードではバイトアクセスにも対応する仕様なんだけど、
基本はハーフワードアクセスだと思うんですけどねぇ。。。

>>802さんの指摘で・・・
>実行中に動的にエンディアンを切り替えたいから悩ましいんじゃないのか?

・・・ってあるけど、Bi Endianの仕様はないっす。
MCUのFirmwareはIntel系Chipからの流用らしいんで。
807774ワット発電中さん:2006/01/20(金) 22:05:41 ID:p+ETqWSm
10桁くらいの乱数を発生させたいのですが、うまい方法はありませんか?
808774ワット発電中さん:2006/01/21(土) 01:21:32 ID:czPR0UFY
10ビット?10進10桁?あと乱雑さの程度は?
ある程度適当でよければ、M系列とか、LFSRでググれ
809774ワット発電中さん:2006/01/21(土) 08:04:01 ID:93n/ubbG
10進10桁です。10桁の数字を何十個取って乱数っぽく見えればいいんですが、LFSRでやったら数字の流れの規則性が読み取れてしまいました・・・
810774ワット発電中さん:2006/01/21(土) 09:57:01 ID:jWmNoNZm
>>809
じゃ「Mersenne Twister」をハードで実装せよ。
811774ワット発電中さん:2006/01/21(土) 10:59:03 ID:2vSfEzjq
>>809
出力ビットを混ぜたのか?
812774ワット発電中さん:2006/01/21(土) 11:23:01 ID:czPR0UFY
何十個レベルで乱数っぽくするだけなら、ちょっと長いLFSRで十分だろ
どんなフィードバックで何ビットのLFSR作ったんだ?
813774ワット発電中さん:2006/01/21(土) 20:34:40 ID:Hk6hlCE3
Verilogで設計するときのための入門〜中級者向けの参考書でお勧めのものを教えてください。
多少内容に問題がある本でも、問題点が分かっていれば構わないので……。
814774ワット発電中さん:2006/01/21(土) 22:49:25 ID:TOCL2Y4w
Verilogにしても、VHDLにしても入門書と呼べるのは
1冊ずつしかないな
815774ワット発電中さん:2006/01/22(日) 12:35:38 ID:nCCwO4AC
はじめてのVerilog



独習Verilog-HDL

がいいよ
あと中級は

HDL言語Verilog

がお勧めだ
816774ワット発電中さん:2006/01/22(日) 12:37:07 ID:nCCwO4AC
書き忘れ

定本Verilog-HDL設計



続・定本Verilog-HDL設計

817774ワット発電中さん:2006/01/22(日) 12:42:03 ID:orFkmaMQ
>>813
もしプログラミング経験が無いのなら、先にプログラミング経験を積んでからの方が良いよ。
818774ワット発電中さん:2006/01/22(日) 12:59:28 ID:nCCwO4AC
>>813
もし回路設計経験が無いのなら、先に回路設計経験を積んでからの方が良いよ。
819774ワット発電中さん:2006/01/22(日) 13:02:28 ID:nCCwO4AC
>>813
もし基板設計経験が無いのなら、先に基板設計経験を積んでからの方が良いよ。
820774ワット発電中さん:2006/01/22(日) 13:03:01 ID:nCCwO4AC
>>813
もし筐体設計経験が無いのなら、先に筐体設計経験を積んでからの方が良いよ。
821774ワット発電中さん:2006/01/22(日) 13:04:17 ID:nCCwO4AC
>>813
もしLSI設計経験が無いのなら、先にLSI設計経験を積んでからの方が良いよ。
822774ワット発電中さん:2006/01/22(日) 13:05:55 ID:+Rkm6cL8
何だ、もうネタ切れかよw
823774ワット発電中さん:2006/01/22(日) 13:10:24 ID:mMqJbPI6
>>813
もしレンズ設計経験が無いのなら、先にレンズ設計経験を積んでからの方が良いよ。
824774ワット発電中さん:2006/01/22(日) 13:57:29 ID:di3K7nOY
>>815-816
ありがとうございます。ググっても見つからなかったので、書店に問い合わせてみます。

>>817
プログラム経験は C++ Pascal Fortran Lisp Occam Postscript 等ありますが、
不足でしょうか。

>>818
昔、74を組み合わせて数千ゲート相当規模の回路を設計したことがありますが、
74 時代の経験は無意味でしょうか。

>>819
基板設計はあまりやったことがありません。別の業者がやったVME基板数枚の設計が悪く、
手作業で直しをいれたぐらいです。高周波を扱う予定はないので、
それぐらいでなんとかならないでしょうか。

>>820
筐体は詳しい人間が側にいるので、その人の経験を借ります。

>>821
LSI 設計経験は、もちろんあります。昔、スケマティックで数万ゲート規模のものを作っていました。
たしかプロセスはES2 社のものでした。デバッグが大変で、もう二度とやりたくありません。

>>823
HOYA が LSI の設計製造業務を展開していたころに、
その繋がりで半出向のような形でレンジの設計も聞きかじったことがあります。
シミュレーションツール的な部分で経験が役に立つのでしょうか。
825774ワット発電中さん:2006/01/22(日) 14:47:52 ID:9GZJlXNt
>>824
作った物がちゃんと売れるかどうか考えた方が良いよ。
826774ワット発電中さん:2006/01/22(日) 15:03:13 ID:1D+pqSpK
>>824
ネタにマジレス?カコイイ

てか、それだけ経験あるなら、HDLとか書いてる場合じゃないだろ。
そんなもん参考書籍一つ挙げられない土方連中 >>815-823 に任せりゃオケ
土方連中を監督したり >>825 が言ってるような経営判断とかヤットケ
827774ワット発電中さん:2006/01/22(日) 15:38:00 ID:odxsd6Ix
>>826
>そんなもん参考書籍一つ挙げられない土方連中 >>815-823 に任せりゃオケ

お 前 も 全 く の 同 類 だ 。 糞 ガ キ が
828774ワット発電中さん:2006/01/22(日) 15:47:44 ID:1D+pqSpK
>>827
同類ですが何か?

てか、土方に決まってるじゃん、HDLコーダーなんて。
いまさら図星さされたぐらいで逆上する >>827 ハゲワロス
829774ワット発電中さん:2006/01/22(日) 16:10:39 ID:odxsd6Ix
HDLコードなんて書いてませんが何か?

や ー い、 や ー い H D L 土 方 や ー い 
830774ワット発電中さん:2006/01/22(日) 17:16:39 ID:yDTy3rFm
┐(´ー`)┌
831774ワット発電中さん:2006/01/22(日) 17:27:54 ID:Uic7tjTD
vhdlもverilogもちゃんと本を読んで勉強した覚えはないな。人の持ってる
奴をちょっと読んだくらい。基本的にはインターネットで基本を覚えて
あとは人のソースを見て独学で勉強って感じか。
832774ワット発電中さん:2006/01/22(日) 18:29:48 ID:9GZJlXNt
LSI設計やるならテスト戦略は初めに必須。
833774ワット発電中さん:2006/01/22(日) 21:00:19 ID:orFkmaMQ
>>824
返答が学生さんっぽい。
834774ワット発電中さん:2006/01/23(月) 15:51:20 ID:2jctE1Rl
Perlilog: Perl コードからVerilog ソース
使い物になるのか?
835774ワット発電中さん:2006/01/23(月) 22:08:08 ID:aMytFYU7
ペログリ?
836774ワット発電中さん:2006/01/23(月) 23:25:08 ID:/wLdqy14
>> 834
使い物になる。

ただ、再起呼び出しとかはやめてくれよ。

問題はPerlの構文をどうやってHDLに落とすかだ。
それがなかなか出来なくて大変なんだ。
837774ワット発電中さん:2006/01/25(水) 23:05:42 ID:Z3PlWcLQ
他にもPerlプログラムでVHDL、Verilogを生成してる実例はあるけど
AlteraのEuropa
仕様のドキュメント公開してくれないかな
838774ワット発電中さん:2006/01/26(木) 09:41:15 ID:+2QHFddg
なぜスケマ設計は廃れたのですか?
839774ワット発電中さん:2006/01/26(木) 13:37:16 ID:107G5opH
2chで書けないから
840774ワット発電中さん:2006/01/26(木) 13:49:36 ID:c59O3icN
>>838
生産性がよくないからと言われてる。

個人的には順序回路のような手順がスケマだと見えにくいな。
841774ワット発電中さん:2006/01/26(木) 23:18:47 ID:O5JjvM0e
すみません
複数ファイルで使用するパラメータを`include "common.h"とかやって共有したいのですがcommon.hの中身はどのように書けばよいのでしょうか?
なにか、文法とかありますでしょうか
parameter A=1;
parameter B=2;
とかだけ書いていてはダメなのでしょうか。

Cの#includeのようにただ単純に文字列が挿入されるだけだと考えていたのですが、間違いでしょうか

よろしくお願いいたします。
842774ワット発電中さん:2006/01/28(土) 04:50:19 ID:PI++kj2b
それで構わない筈だけど?
まさか、moduleの外に`includeを書いてるとか・・・

843774ワット発電中さん:2006/01/28(土) 12:17:53 ID:8PBwPOeA
>>842
レスありがとうございます
Cの#includeと同様だと解釈していましたので`includeの位置はmoduleの内部に書いてあります
文法チェックは通るのですが、modelsimに突っ込むと怒られてしまうのです

common.hがうんたらと言われてしまいます
844774ワット発電中さん:2006/01/28(土) 14:12:27 ID:D50uJeq1
うんたらじゃあわからんなぁ
845774ワット発電中さん:2006/01/28(土) 16:47:39 ID:SKJIOp95
おおかた、common.hの場所がincludeするファイルのパスに
入っていないとかだろう
846774ワット発電中さん:2006/01/28(土) 18:00:12 ID:0uT87kli
Modelsimの吐くメッセージ: common.hがうんたら〜
のうんたらの部分が英語だから読めないだけってオチか
847774ワット発電中さん:2006/01/31(火) 08:16:01 ID:eYudQNei
>>844-846
レスありがとうございます。
英語が読めないわけではなくて(かなり苦手ですが)、ライセンスの関係でしばらく使えなくなってしまったのでメッセージ内容を忘れてしまいました。
>>845
common.hは他のファイルと同じフォルダに入れてあるのですが、パス指定は必要なんですかね?
文法チェックはことなく終わったのですが
848774ワット発電中さん:2006/02/01(水) 00:45:15 ID:bDaG56i5
common.hを複数のソースから呼んでいるに3000点。
849774ワット発電中さん:2006/02/01(水) 22:43:24 ID:watlhckv
Verilogを学び始めたばかりなんですが、RSA暗号器の作成をすることになりました。
それで質問があります。

1)記述の方法で、P=(C*e)%m のように演算子を用いて記述した場合と、
  乗算回路と除算回路を作って行う場合で何か違いがありますか?(論理合成など)

2) RSAでは大きな数を扱うのですが、論理合成ではどのくらいのbit数まで合成できるのでしょうか?

お願いします。
850774ワット発電中さん:2006/02/02(木) 01:20:07 ID:8c7SNM3v
>>848
その通りです
複数のソースで共通のパラメータなのでそうしたいのですが…
てか、最近仕事変わってmodelsim使えなくなってしまった…
でも、解決方法は知っておきたいです。
851774ワット発電中さん:2006/02/02(木) 01:43:55 ID:LUEaj8CA
>>849
1)は演算子を使うほうが良いらしいよ。
勝手にHDLが乗算回路とか作ってくれるから。

昔うちの大学の先生が二つの方法で加算回路を作って比べてみたらしいけど、
演算子を使ったほうが、自分達でセコセコ回路組むより断然速かったらしいよ。

2)はよくわからないけど、
SRAMを作ったときに65536ビットとかしてもシミュレーションできたよ。
ただFPGAとかに落とした経験はないので、実際に動くかどうかは知りません。
852774ワット発電中さん:2006/02/02(木) 01:55:39 ID:mFL25QoI
誰か、「ユネイト」について分かりやすく説明できる人いますか?
もしくはサイトなどあれば助かります><
宜しくお願いします!!
853774ワット発電中さん:2006/02/02(木) 02:30:04 ID:zqqYTFjW
>>851
>昔うちの大学の先生が二つの方法で加算回路を作って比べてみたらしいけど、

あほなせんせいなんだろ?
しかも乗算器程度は勝手に合成してくれるかもしれんが
mod回路を勝手に合成してくれる合成ツールあったら教えてくれや。
854774ワット発電中さん:2006/02/02(木) 02:33:45 ID:g6E9JXe6
>>849
1)回路規模と速度。
演算子を用いた場合、使用するライブラリによって回路が異なる。
FPGAなら専用の乗算器を用いることもある。
2)分割して処理してやれば、リソースの許す限り何ビットでも。
855774ワット発電中さん:2006/02/02(木) 11:16:37 ID:iTKJqpXj
ヒント:長篠の戦い
856774ワット発電中さん:2006/02/02(木) 12:06:16 ID:HV0M8G5T
>>850
VHDLの話だったら、自前のライブラリ作って使えば同じもの呼び出しても文句言われない。
俺はVHDLオンリーだから知らないけど、Verilogにはそういうの無いの?
857774ワット発電中さん:2006/02/02(木) 17:51:11 ID:9Sv8GbEU
>>855
戦国自衛隊が勝頼に加担するそうです。

映画の江口洋介版戦国自衛隊1549よりテレビの戦国自衛隊の方がはるかに出演者が豪華だったな。
江口のほうはVシネマみたいだった。
しかし。。。
反町の滑舌の悪さはなんとかならんか?
858774ワット発電中さん:2006/02/02(木) 18:31:48 ID:iTKJqpXj
>855ヒント:パイプライン
859849:2006/02/02(木) 18:51:54 ID:kAcFmaQi
>>851
>>853-854
ありがとうございました。
ライブラリによって回路違うようなら、自分で作ったほうがよさそうですね。
分割すれば制限ないんですね。
どれくらいまで平気かいろいろと試して行ってみたいと思います
860774ワット発電中さん:2006/02/03(金) 18:36:30 ID:K1VY5tnN
たとえば加算器のライブラリを新規に作るとする。その記述の正しさを証明できるだろうか。
861774ワット発電中さん:2006/02/04(土) 13:01:42 ID:0EM4CWni
「正しい」とは何かがちゃんと定義できればな
862774ワット発電中さん:2006/02/04(土) 15:09:57 ID:flpiF6xD
>>861
お前は2段降格。
863774ワット発電中さん:2006/02/04(土) 19:12:46 ID:i1HFIn8M
FPGAによっては、あらかじめ乗算器などがセルであることがある。
もしあるなら、それを利用したほうが早いしもったいない。
(ぶっちゃけそのセルは乗算にしか使えないから)

ビット数は限界は基本的にないとおもっていいけど、速度との兼ね合いがあるだろうし。
128ビットとかなら別に平気じゃないかな FPGAにもよるけど

まあ、ASICならともかくFPGAなら作ってみるのが手っ取り早い
仕事でそれをやられると困るときもあるが、そんなカンジじゃ無さそうだし
864774ワット発電中さん:2006/02/13(月) 02:19:52 ID:CRxGv4yS
Quartus Uの使い方で質問です。
WindowのTabの所を右クリックで設定できるHide Tabsを押したらWindow選択Tabが
消えてしまいました。この設定を元に戻すにはどうすればいいのでしょうか?
865774ワット発電中さん:2006/02/13(月) 11:15:11 ID:WezWHKec
漏れもそれ一見分かる場所になくて困惑した記憶がある。
何とか直ったけど直し方はもう忘れた。スマソ。
866864:2006/02/13(月) 22:47:00 ID:CRxGv4yS
>>865
レスどうもです。
今、いろいろいじってて元に戻す場所発見出来ました。
867774ワット発電中さん:2006/02/14(火) 02:28:57 ID:TWYUOxop
【デスノ】デスノート映画化 人権団体批判【不謹慎】
http://news18.2ch.net/test/read.cgi/news7/1139724920/
868774ワット発電中さん:2006/02/14(火) 18:39:13 ID:OHYJUSaP
良い論理回路の評価項目を教えて下さい。
869774ワット発電中さん:2006/02/14(火) 18:43:05 ID:W4DSNiN0
シンプル
870774ワット発電中さん:2006/02/14(火) 21:47:53 ID:rQ0EIgAa
やすい・はやい・
871774ワット発電中さん:2006/02/14(火) 23:21:15 ID:uVYqI8df
ひげがない
872774ワット発電中さん:2006/02/15(水) 01:01:25 ID:qP+y7l3V
中身が何であれ、売れるのが良いにきまってる
どんな論理回路なら売れるか、買いたいか、考えろ
873774ワット発電中さん:2006/02/15(水) 14:47:03 ID:qxd4Zyzh
すごい・かんたん・きもちいい
874774ワット発電中さん:2006/02/16(木) 08:58:45 ID:k2xxS/uw
ハードの人はブローカーが多いね。
875774ワット発電中さん:2006/02/17(金) 02:42:08 ID:UOrZD8sU
バグが無いのがいいよね


怖い思いしなくてすむから…
876774ワット発電中さん:2006/02/18(土) 10:58:36 ID:Ll8bfdz5
Verilogの記述方法で教えてください。
1BITの信号Aを4BITの信号Bに信号Aをパラレル4BITで接続したいのですが、
連接以外のすっきりとした記述方法はありませんか?
今は以下の様に記述しています。

b <= { a, a, a, a};

4BIT程度なら良いのですが16BITになったり信号Aの名称が長いと面倒で。
宜しくお願いします。
877774ワット発電中さん:2006/02/18(土) 12:04:21 ID:vGegdffE
if分か関数定義じゃダメなのか?
878774ワット発電中さん:2006/02/18(土) 12:17:24 ID:o5ssLL8g
b <= {4{a}};
879774ワット発電中さん:2006/02/18(土) 12:25:09 ID:alorCjjo
b <= -a;
880774ワット発電中さん:2006/02/18(土) 13:40:59 ID:1O7hHkOo
>>879
これ使う技術者はまわりにいて欲しくない
881774ワット発電中さん:2006/02/18(土) 20:58:57 ID:9TOydYJ4
>>879
頭の体操みたいです
882774ワット発電中さん:2006/02/18(土) 23:08:30 ID:h1RnCCKA
>>879
おもしろいけど、まあ可読性悪いから業務では使って欲しくないところだね
コメントの無いソースよりタチが悪いw
883774ワット発電中さん:2006/02/18(土) 23:44:32 ID:4cdBpQiw
ぱっと考えて>>878がすぐに思いつくよね
>>879は一瞬意味がわからなかった
884774ワット発電中さん:2006/02/19(日) 13:05:26 ID:4vacZSuR
VHDLしかわからんから話についていけないなあ。
Verilog勉強しようかなあ
885774ワット発電中さん:2006/02/19(日) 20:13:31 ID:x3VNn4ii
VHDLしか知らないけど、>>879は分かりましたよ。

なんかMSXの「1画面プログラム」を読んでいたころを思い出した。
886774ワット発電中さん:2006/02/19(日) 22:35:47 ID:IuJpJUDZ
ちょっとわかるその気持ちw>885
まあ、みんながぱっとみて(もし構文をしらなかったとしても)分かりやすい
b <= { a, a, a, a}; や b <= {4{a}}; がいい気がする
887774ワット発電中さん:2006/02/20(月) 13:07:26 ID:EQ03KbZZ
wireだったら組み合わせロジックで

for( i=3; i>=0; i=i-1) begin
 b[i] = a;
end

ってのはど?
888774ワット発電中さん:2006/02/20(月) 22:18:57 ID:KICo7waK
VHDLだと
b <= (others => a); (だったっけ?)
とかいうわけのわからん構文を書かねばならんのよね。
889774ワット発電中さん:2006/02/20(月) 22:42:10 ID:STmNY86v
>>888
やっぱわけわからんのか。
VHDL勉強中だが
else ifとかcase文とかif x = 0とか不可解な構文ばかりで手間取ってるへたらCプログラマー
馬鹿でごめんな・・・
890774ワット発電中さん:2006/02/20(月) 22:59:13 ID:Q/Yhfq+j
>>887
わざわざ読みにくくしてどうする
891774ワット発電中さん:2006/02/20(月) 23:57:50 ID:STmNY86v
>>890
俺的には読みやすいが、>>887も漏れと一緒で元ソフト系じゃないの?
へたれっぽさをかんじる
892774ワット発電中さん:2006/02/21(火) 01:01:17 ID:bfMHo5AP
>>888
あたり
はじめ見たときは何かと思った。しかもぐぐってもなかなかひっかからないのね。
case others => ばっかりひっかかってw

for文も嫌いじゃないけどね 純ハード屋さんが嫌がる傾向あるけど・・。
893774ワット発電中さん:2006/02/21(火) 12:02:19 ID:IFoSl6qo
本質的に並列処理のものをforで書くのは違和感あるね
894774ワット発電中さん:2006/02/21(火) 17:35:39 ID:vP4IhssG
>>891
組み合わせ回路のfor文の使い方も知らん小僧はすっこんでな。
895774ワット発電中さん:2006/02/21(火) 22:07:01 ID:9b/wQRZj
>>893
ある。
すごくある。
でもそういうもんだと思うことにした。
896774ワット発電中さん:2006/02/21(火) 23:26:30 ID:v6VreLXk
>>893
本質的にハードのものをソフトで書くのは違和感あるね
897774ワット発電中さん:2006/02/22(水) 00:00:00 ID:obaoVxn2
真に並列処理などあるわけない。
898774ワット発電中さん:2006/02/22(水) 00:14:17 ID:JFCvTYGM
0時ちょうどに釣乙
899774ワット発電中さん:2006/02/22(水) 02:10:26 ID:JEufW982
>>896
いや、VerilogにしろVHDLにしろ、
ハードウェア記述言語であって、
ソフトではないんだよ
900774ワット発電中さん:2006/02/22(水) 02:17:30 ID:DKn7Ur+i
でもまあ、無いよりあったほうが便利だなぁ >for
メモリの初期化とか。
901774ワット発電中さん:2006/02/22(水) 11:16:59 ID:Qs0eaByl
forとかはどうせ中で展開してるんだろうから
Cとかのプリプロセッサ命令みたいに
はっきり分かるようになってればいいのにな
と思うことはよくある
902774ワット発電中さん:2006/02/22(水) 12:27:04 ID:obaoVxn2
>>897
おれすごい。
903774ワット発電中さん:2006/02/22(水) 18:37:12 ID:WyfdIfRb
>>897
なんかシングルプロセッサのMPUと間違ってないか?
ハードウェアでは真の並列処理を実際やってるし、
だいいち、組み合わせのfor文とは何の関係も無い話だ。
>>901の言うように単に手でごちゃごちゃ書く代わりに、
自動で回路展開してくれてるだけだから。
904774ワット発電中さん:2006/02/22(水) 19:12:11 ID:62migtMq
フォー
905774ワット発電中さん:2006/02/22(水) 21:37:38 ID:TNldAMdU
>>903
あからさまな釣られはウザイですよ。
906774ワット発電中さん:2006/02/22(水) 22:01:26 ID:WyfdIfRb
お前のようなアホがうぜえんだよ
907774ワット発電中さん:2006/02/23(木) 21:16:12 ID:gAtsRrz3
悔しがりすぎ(w
908774ワット発電中さん:2006/02/24(金) 20:52:47 ID:Y6KerP+P
るせーばか
909774ワット発電中さん:2006/02/24(金) 23:26:24 ID:725w4kzQ
HDLをいくら眺めても何も見出せない。
910774ワット発電中さん:2006/02/25(土) 00:32:32 ID:giqAYVBU
>>909
とりあえずコンパイルしてみるというのはどうか。
911774ワット発電中さん:2006/02/25(土) 21:01:18 ID:z0FkuZsW
チョト質問。

HDLをツールに食わせるのって、コンパイルって言う?
シンセシスじゃないの? 普通に使われてるのかな?
912774ワット発電中さん:2006/02/25(土) 21:05:27 ID:kz2fpPUQ
QuartusIIの場合はCompileって書いてあるからな。
あなるしす&シンセシス〜タイミング解析まで全部やるのはコンパイルと呼んでるわ。
913774ワット発電中さん:2006/02/26(日) 00:03:18 ID:fs9P/8VA
デザインコンパイラとか有名なツールあるからなぁ。
正しいかどうかは別として市民権ぐらいはありそう。 > コンパイル
914774ワット発電中さん:2006/02/26(日) 14:27:47 ID:5PInroT3
ISEはSynthesisといっているし、
ModelSimはCompileといっている。

やってることは違うはずなんだが。
915774ワット発電中さん:2006/02/26(日) 14:50:40 ID:b6O8vNKG
シンセシスsynthesisを訳すと、「合成」だし
ツールに食わせるのはやっぱりコンパイルって感じ。
916774ワット発電中さん:2006/02/26(日) 21:26:30 ID:iFEpML+5
>>911
自分で書いてからちょっとそれは思ったw
コンパイルっていうとちょっとへんな顔をする人はいるよね 気持ちはわからないでもない
ソフトウェア言語でいうマシン語がHDLでいうプリミティブセルに当たると考えると
コンパイルでもいいのかなって気がする

DCとかは抽象記述を回路図に落とすから(回路)合成、なんとなくコンパイル
というとすこしどこかに違和感があるような無いような。
ModelSimなんかはプリミティブまでは落とさない、中間言語まで?
これはむしろコンパイルと呼ぶべきなのかもしれない。

とりあえず市民権は得てるとは思う。
917774ワット発電中さん:2006/02/26(日) 22:16:21 ID:DW5CQg1U
> DCとかは抽象記述を回路図に落とすから(回路)合成、なんとなくコンパイル
> というとすこしどこかに違和感があるような無いような。
DCって何かワカランけど、「コンパイル」は違和感あるね。
前に出たforも違和感ある。
でも時代がそうだと思うことにした。
918774ワット発電中さん:2006/02/26(日) 23:36:09 ID:4eGGLHAq
ところで、ふつう「論理合成」っていうときは配置配線も含むの?
919774ワット発電中さん:2006/02/26(日) 23:59:35 ID:emYxR332
含みません
920774ワット発電中さん:2006/02/27(月) 00:43:50 ID:oQEIz3XV
論理合成は論理合成ツールのやること。
配線はフィッタのやること。
FPGAの統合ツール使ってると気づかんかもしれんが。
統合ツールっていうのはフィッタがメイン。これの代わりのできる他社ツールはない。
合成部分だけならさらに高性能な他社ツール(synplify,precision)を使える
921774ワット発電中さん:2006/02/27(月) 01:22:41 ID:YiYhxiFm
PLLって何?
クロック発生器?
922774ワット発電中さん:2006/02/27(月) 01:31:30 ID:xI/0LhEc
synplifyやprecisionて値段分の価値有ります?
1社のデバイス使い続けるとして、なんですけど。
昔テストしたとき、FPGAメーカのツールと比較して
大して差がない(ものによっては悪い)結果にしかならなかったもんで・・・
今は改善されてるのかな?
923774ワット発電中さん:2006/02/27(月) 02:59:39 ID:YVWfsRsi
んじゃFPGAで論理合成からコンフィグファイル生成まで全部を表すのは
やっぱ「コンパイル」?
924774ワット発電中さん:2006/02/27(月) 08:10:57 ID:29AsXWH0
>>918
現在は含めるべき。
925774ワット発電中さん:2006/02/27(月) 12:43:58 ID:I7AovCbA
physical synthesisって概念もあるから
合成と配置配線の境目はあいまいになりつつあるのかな
926774ワット発電中さん:2006/02/27(月) 22:12:10 ID:f2NMNZVj
クロックのHI幅とLOW幅の割合を1:1のまま3分周するRTLは書けますか?
PLLを使わないで実現するのは無理ですかね?(PLLで6テイ倍して2分周)
927926:2006/02/27(月) 22:16:02 ID:f2NMNZVj
 ↑
Verilog-HDLでお願いします
928774ワット発電中さん:2006/02/27(月) 22:27:18 ID:BOn/amdN

それって宿題!?
929926:2006/02/27(月) 22:29:15 ID:f2NMNZVj
>928
いえ違います。可能かどうか考察しているだけです。
930774ワット発電中さん:2006/02/27(月) 22:30:24 ID:DajNYgAf
3分周 = 6テイ倍して2分周 ?
931774ワット発電中さん:2006/02/27(月) 22:41:01 ID:IATIZpzb
クロックのHI幅とLOW幅の割合を1:1のまま3逓倍するRTLは書けますか?
PLLを使わないで実現するのは無理ですかね?(PLLで6テイ倍して2分周)
932931:2006/02/27(月) 22:41:42 ID:IATIZpzb
 ↑
VHDLでお願いします
933926:2006/02/27(月) 22:42:51 ID:f2NMNZVj
>930
あ、間違ってました。未熟者ですみません。
934774ワット発電中さん:2006/02/27(月) 22:47:42 ID:gFuv8j4d
_| ̄|_| ̄|_| ̄|_| ̄

_| ̄ ̄~ ̄|_____| ̄

タイミングチャートが書けるから書けるだろ。
考察の結果は「可能」。Verilog化するのは自分でやれ。
935926: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
936926: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
937774ワット発電中さん:2006/02/27(月) 23:35:02 ID:BOn/amdN
ソース準備できたんなら、自分で検証してみろ(#゚Д゚)ゴルァ!
938774ワット発電中さん:2006/02/27(月) 23:58:48 ID:Rs8etemT
逓倍は?
939774ワット発電中さん:2006/02/28(火) 00:05:53 ID:TVJPPNwq
┏┓┏┓┏┓┏┓┏┓┏┓┏┓┏┓
┛┝┛┝┛┗┥┗┛┝┛┗┥┗┥┗
 │ │  │  │  ↓ ↓
┏┿┓│  ┝━┓│  ┏━┓
┛│┗┿━━┥ ┗┿━━┛ ┗━
 ↓ ↓  │  │
 ┏━┓  │┏━┥   ┏━┓
━┛ ┗━━┿┛ ┝━━━┛ ┗
      ↓  ↓
┏━━┓  ┏━━┓  ┏━━┓
┛  ┗━━┛  ┗━━┛  ┗

自分ならこう作るかな
940774ワット発電中さん:2006/02/28(火) 00:08:20 ID:TVJPPNwq
うーんずれまくりだね メモ帳にコピペよろ

H:L=1:2の波形をRise,Fallそれぞれで作ってORね
リセット時にどうやって同期取るかは適当に考えてね
941774ワット発電中さん:2006/02/28(火) 00:12:04 ID:5sZpDME6
1段目をクロックの立下りでサンプリングすれば
2段目になるから特に何も考えなくてもOK
942774ワット発電中さん:2006/02/28(火) 00:14:22 ID:nG+kgT3y
ちなみに何ゆえデューティー50%にしたいのかな?
原発振って周期は正確だけど、デューティーは結構ばらつ
くから目的によってはいずれの方法もNGかもね。
943774ワット発電中さん:2006/02/28(火) 00:20:14 ID:5sZpDME6
可能かどうか考察しているだけ、って言ってるんだから
実際に使う目的なんか無いんでしょ。嘘じゃなければ。
944774ワット発電中さん:2006/02/28(火) 01:18:37 ID:TVJPPNwq
>>942
それは気になってた。このクロックをどっかRiseだけで使うなら
別に1:2でも問題ないしね。

なので実製品でFallエッジを意識せず使うと、このジッタでSetup/Hold
を予期せず満たせなくなったりしてハマッたりね。なので、どうしても
両エッジ使いたいときは2逓倍して2分周とかやる・・・

ってのは普通なのかな?
945774ワット発電中さん:2006/02/28(火) 01:25:16 ID:CQngyPAd
PLLついてる奴なら、
周波数同じでデューティ補正だけってのが出来るのがあるからそれ使うなぁ。
内部的にはn逓倍→n分周だろうから>>944と同じ事だけど。
周波数が高い時は補正しないとfallエッジは怖くて使えないよね。
946926: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
947926:2006/02/28(火) 11:57:03 ID:ot85kyAM
みなさんありがとうございました。↑の記述で3分周の波形を確認できました。
しかし実機で使うにはデューティを考えないといけないのですね。
大変勉強になりました。またよろしくお願いします。
948926:2006/02/28(火) 13:26:21 ID:ot85kyAM
>946
これに修正したほうがわかりやすいですね

assign out = q_pos[0] | q_neg[0];
949774ワット発電中さん:2006/02/28(火) 14:52:52 ID:Z3YAfckd
んで逓倍の方はどうやるの?
950926:2006/02/28(火) 16:46:29 ID:ot85kyAM
>949
よく考えたら単純には行きませんね。
2テイ倍で3進カウンタを作りT-FFを駆動するのはどうでしょう?
951774ワット発電中さん:2006/02/28(火) 21:37:34 ID:I7LB0UCb
ヒゲで死ぬだろうな。
952774ワット発電中さん:2006/02/28(火) 23:23:59 ID:XV6Yi2nE
逆にゲートの遅延を利用してヒゲを出して逓倍する方法もあり
953774ワット発電中さん:2006/03/01(水) 08:57:03 ID:7p3bmPee
プライオリティーエンコーダの普通でない回路を知っている方は何パーセントぐらい居ると思いますか?
954774ワット発電中さん:2006/03/01(水) 21:21:40 ID:0QuVU6Tu
プライオリティーエンコーダの普通でない回路を知っている方を母集合に採れば
プライオリティーエンコーダの普通でない回路を知っている方は100%ですね。
955774ワット発電中さん:2006/03/01(水) 22:56:31 ID:H3wHdZSW
プライオリティーエンコーダの出力をデコードしたものが
d & -d
っていうのなら知ってる。
956774ワット発電中さん:2006/03/02(木) 03:00:27 ID:cypbWxOu

そもそもプライオリティ援交ーだーって 何?
957774ワット発電中さん:2006/03/02(木) 08:45:25 ID:0eajmaei
そりゃま、金持ち優先ってことで
958774ワット発電中さん:2006/03/02(木) 19:44:04 ID:gDtzV18x
ISEの設定で質問です。
HDL記述ウインドウの文字、バックグラウンドの色は変えれないのでしょうか?
959774ワット発電中さん:2006/03/03(金) 11:07:37 ID:ViDZ+KTF
IcarusとかCverで、
シミュレーションを無限ループさせある条件に引っかかったときだけ中止&中止した付近の結果だけ(波形でみたい)を
出力する方法ってありますか?
960774ワット発電中さん:2006/03/03(金) 12:59:03 ID:IyiU4B7L
初期値0,
ある条件になったときだけ1になる信号を用意すればしまいじゃん。
その信号が立ち上がったときを検索すればいいだろ。
modelsimでも使え。
961774ワット発電中さん:2006/03/05(日) 00:36:02 ID:TItb0Ikw
条件の付近”だけ”出力したいんじゃないのか?
条件後なら好きな所で止める記述すれればいいだけだが、手前のほうは…。
962774ワット発電中さん:2006/03/05(日) 03:12:15 ID:VL7nLnsZ
時間指定してダンプは?

initial begin
#xxxx; $dumpvars;
#xxxx; $finish;
end
963774ワット発電中さん:2006/03/09(木) 21:31:35 ID:w9maybtZ
チョッパー回路が合成されないためには、RTL記述時から何か気をつけるべきでしょうか?
それとも合成条件でなんとかするべきでしょうか?
964774ワット発電中さん:2006/03/09(木) 22:52:45 ID:ALIW5UY0
何も考えずに合成条件を厳しくしている。

…本当は記述時に考えたほうがいいと思うんだけどね。
965774ワット発電中さん:2006/03/13(月) 14:42:54 ID:xtwhuFPI
hosyu
966774ワット発電中さん:2006/03/14(火) 01:59:54 ID:bLTnuwHQ
どなたか教えてください。

FPGAにD/Aコンバータつないで遊んでいます。
運良くちゃんと動いているようなので、サイン波形でも出すべと
考えていたのですが、うまい方法が思いつきません。
HDLは、Vrilogです。

マイコンなんかだと、配列に0-90度分の数値を置いて(ROMに配置される)
それを垂れ流しで出来ているんです。同じ方法でやろうと、
Verilogで配列の書き方はわかったんですが、
数値を定義する記述方法がわかりません。
Cでいうところの、
  sin [90] = { 127, 138, 148..... };
みたいな書き方ができるのでしょうか?

宜しくお願いします。
967774ワット発電中さん:2006/03/14(火) 02:27:45 ID:CU5vB0Fa

>>966

reg [7:0] sin [90] = 127, 138, 148....; でいいんじゃないのかな。

968774ワット発電中さん:2006/03/14(火) 13:32:14 ID:bLTnuwHQ
969774ワット発電中さん:2006/03/14(火) 13:34:38 ID:bLTnuwHQ

>>967
ありがとうございました。
やってみましたが、ISE7.1がエラーを表示してダメっぽいです。
なぜでしょうか?

970774ワット発電中さん:2006/03/14(火) 14:12:51 ID:F/tpg4VL
どんなエラーかも書かずに何を期待してる
971774ワット発電中さん:2006/03/14(火) 20:43:05 ID:a+qh9fpM
>>966
制約ガイドのINIT_xxのところに書いてある。
972774ワット発電中さん:2006/03/14(火) 22:04:43 ID:3nrvmR0n
>>970
ひと月前に何かもらったろ。そのお返しだよ。
973774ワット発電中さん:2006/03/15(水) 00:17:40 ID:s2pYgplK
俺は何も貰ってないぞ?
974774ワット発電中さん:2006/03/15(水) 01:16:25 ID:KY+jJnaf
そういや義理のお返ししてないやマズー
975774ワット発電中さん:2006/03/16(木) 20:12:29 ID:SCnBT+Ub
>>974
うわさされてるだろなー。礼儀に欠けるとかな。
そういう評判って結構大事なんだよなー。

ご 愁 傷 様
976774ワット発電中さん:2006/03/17(金) 01:40:01 ID:D+OReN7h
では埋めますね
977774ワット発電中さん:2006/03/17(金) 09:09:59 ID:3UFEqcYm
>>975
ざまぁみやがれwwww
って感じなんだが
オレは一個ももらってないし…
978774ワット発電中さん:2006/03/17(金) 20:22:23 ID:3qRt0BsZ
>>977
いちいちageんな、同志。
979774ワット発電中さん:2006/03/18(土) 21:41:53 ID:ew34LvlM
では埋めますね
980774ワット発電中さん:2006/03/19(日) 20:02:32 ID:2ki6lLX4
どうせならコードで埋めるぐらいの気合が見たい。
981774ワット発電中さん:2006/03/19(日) 20:12:15 ID:5JqDpooe
outp <= '0' when inp="1" else 'z';
982774ワット発電中さん:2006/03/19(日) 20:13:50 ID:6GTObCD7
/* UME */
983774ワット発電中さん:2006/03/19(日) 20:56:37 ID:2ki6lLX4
if CLK'event and CLK='1' then
984774ワット発電中さん:2006/03/19(日) 22:05:06 ID:2U6FGvEl
CLK <= '0';
end if;

end process;
985774ワット発電中さん:2006/03/19(日) 22:28:19 ID:6GTObCD7
// UME
986774ワット発電中さん:2006/03/19(日) 22:45:34 ID:IR82dKly
endmodule
987774ワット発電中さん:2006/03/19(日) 23:06:51 ID:JFrTvySG
FD1S3AX
988774ワット発電中さん:2006/03/19(日) 23:35:11 ID:g+32DgiO
// synthesis attribute UME of "記述言語で論理設計" is TRUE;
989774ワット発電中さん:2006/03/20(月) 00:34:03 ID:2M4bdP6w

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;

990774ワット発電中さん:2006/03/20(月) 11:14:53 ID:h/YZ0ksM
>>989

LEDくっつけて動かすと秘密のメッセージが!
991774ワット発電中さん:2006/03/20(月) 22:22:12 ID:UZwNcUGI
-- 秘密でもなんでもいいからコード書けやボケが!!!!!!!!
-- !マーク付けてるヤツってくだらんレスが多い!!!!!!!!
992774ワット発電中さん:2006/03/20(月) 22:39:09 ID:kLeQpk6J
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";

一応ソースだけスクランブルにしてみた
993774ワット発電中さん:2006/03/21(火) 11:13:40 ID:fG+Gh6Sz
>>991

while(1) {
 fprintf(stderr, "おまえモナー\n");
}
994774ワット発電中さん:2006/03/21(火) 18:13:07 ID:B2s0ifL0
-- いいかげん次スレ立てろや
dat_ochi := true after 2 day;
995774ワット発電中さん:2006/03/21(火) 20:18:48 ID:HgvQV9tJ
signal Project4 : thread range 1 to 1000;
996774ワット発電中さん:2006/03/22(水) 02:20:08 ID:gJ2IBAvH
>>989

>>992
は同じコードを吐きますか?
997774ワット発電中さん:2006/03/22(水) 17:27:58 ID:6RSVJoDy
998774ワット発電中さん:2006/03/22(水) 21:22:26 ID:7PG8Epob
-- 密かに乙
-- >>2以降は確認中ですか?
999774ワット発電中さん:2006/03/22(水) 21:56:02 ID:6RSVJoDy
-- UME
1000774ワット発電中さん:2006/03/22(水) 21:56:51 ID:6RSVJoDy
/* 1000 */
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。