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

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

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

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

前スレ
【Verilog】記述言語で論理設計 Project3【VHDL】/
http://science4.2ch.net/test/read.cgi/denki/1123173110/l50
2774ワット発電中さん:2006/03/22(水) 20:16:26 ID:4raZjEBm
2get?
3774ワット発電中さん:2006/03/22(水) 22:38:29 ID:bCsqYBkC
関連スレ
【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

フリーのツール(情報追加よろしく!)
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/spartan3e/s3eboards.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/
4774ワット発電中さん:2006/03/22(水) 22:39:27 ID:bCsqYBkC
5774ワット発電中さん:2006/03/22(水) 22:40:35 ID:bCsqYBkC
ほとんどノーチェックだから、
チェック&追加情報よろ
6774ワット発電中さん:2006/03/22(水) 22:54:02 ID:6RSVJoDy
>>3-5
乙 ( ・∀・)っ旦~ オチャモドゾ
7774ワット発電中さん:2006/03/22(水) 23:24:24 ID:rjtVmTve
veritak
8774ワット発電中さん:2006/03/22(水) 23:59:50 ID:hJ96Hmmy
さて、トラ技を2冊買ったところで何を作ったモンかな。
9774ワット発電中さん:2006/03/23(木) 22:55:27 ID:rH5zCHru
テンプラ貼り乙でつ。


RTLとNETの等価が取れなくて泣きそう(´Д⊂
10774ワット発電中さん:2006/03/24(金) 01:44:31 ID:2sVUY9em
Verilog独学で構文くらいは分かったつもりだが。
サンプルソースとか何から見たらいいのか分からんね。
コメントが日本語がないのが痛い。
ソース読むとっかかりみたいなコツとかあったら教えてください、先生方・・・。
11774ワット発電中さん:2006/03/24(金) 01:51:29 ID:VwB5Dq2C
日本語はあきらめろ
12774ワット発電中さん:2006/03/24(金) 14:51:22 ID:w7D405wd
最初から、コメント見なきゃわからんようなソースを参考にする必要は全然ない気がするんだが。
13774ワット発電中さん:2006/03/24(金) 16:39:38 ID:Nflsdu1Y
>>10
ソースを眺めても何も生まれない。
ひたすら追っかけて解析ノートを作るしかない。
14774ワット発電中さん:2006/03/24(金) 18:51:54 ID:UzgA6pvH
Verilogやっている研究室に配属されたわけだが、
内部ではC言語班とVerilog班に分かれているみたいで
どちらに入るか悩んでいるわけだ。

現時点でCなら10000行くらいは組めるのだが
Verilogは30行が限界。

苦労してVerilogを一からやるだけの見返りはある??
アドバイス木盆
15774ワット発電中さん:2006/03/24(金) 20:10:57 ID:w7D405wd
BasicでOK
16774ワット発電中さん:2006/03/24(金) 21:08:32 ID:RspFRkHV
>>14
自分が将来やりたいことに合ったほうを選べば!?
17774ワット発電中さん:2006/03/24(金) 22:12:21 ID:Nflsdu1Y
>>14
両方とも道具なんだよ。道具は目的で選ぶ。
18774ワット発電中さん:2006/03/24(金) 22:15:37 ID:FzzWpYSp
>>14
迷ったら楽な方
1914:2006/03/24(金) 22:22:26 ID:UzgA6pvH
>>16

将来やりたいことっていうと、
やっぱり、ものを設計したり作ったりしたいわけだ。

Cの方に進むとどうやらSEとかPGがメインらしく、
マ板などを眺めていると、もの作りとは程遠いような気がするわけよ。

だから、Cは趣味ということにして、Verilogをやってみたいのだが、
LSI系のエンジニアになるとして、需要とかはあるの??


2014:2006/03/24(金) 22:25:33 ID:UzgA6pvH
>>18

研究室の間は間違いなくCのほうが苦労は少ないと思うが、
SE/PGになることを考えたら、
将来的には今Verilogやっておいた方が、楽できる雰囲気。

一体どっちをやればいいんだ orz

結構、今が人生の岐路のような希ガス。
21774ワット発電中さん:2006/03/24(金) 22:27:06 ID:RspFRkHV
>>19
あるかないかでいえば、ある。
2214:2006/03/24(金) 22:38:16 ID:UzgA6pvH
>>21

そうか、あるのか。
研究内容はGAプロセッサの開発とかいう、
分からんことをやっているみたいだが、とにかくやってみることにするよ。

が。

調べても分からんことあったら、ここに聞きにくる。
そんときはヨロ。
23774ワット発電中さん:2006/03/24(金) 22:45:57 ID:RspFRkHV
GA=遺伝的アルゴリズム!?
2414:2006/03/24(金) 22:49:11 ID:UzgA6pvH
>>23

そそ。

後はLSIのフロアプラント問題とかもやっているみたい。

2514:2006/03/24(金) 22:50:02 ID:UzgA6pvH
×プラント->プラン
26774ワット発電中さん:2006/03/24(金) 22:58:22 ID:gCmZSmEW
cができるならverilogも余裕な気がするが。文法的には。
俺の場合は
C(++,java)⇒vhdl⇒verilog
の順で覚えて行ったな。hdlを覚える前にディジタル回路を勉強すれば
覚えるのが早い。
27774ワット発電中さん:2006/03/24(金) 23:07:52 ID:Nflsdu1Y
>>20
>一体どっちをやればいいんだ orz
>
>結構、今が人生の岐路のような希ガス。

C、verilogは人生の岐路にはならぬ。分からないときは両方やるのが正解。
安易に分からないと言うエンジニアにはなってもらいたくないな。
28774ワット発電中さん:2006/03/24(金) 23:10:45 ID:2T28QO97
つーか
>SE/PGになることを考えたら、
>将来的には今Verilogやっておいた方が、楽できる雰囲気。
なんじゃそら
2914:2006/03/24(金) 23:12:46 ID:UzgA6pvH
>>26

たしかに、文法は似ているなぁ。
春休み中、入門VerilogHDL記述(小林優)なる本を図書館で借りてきて
勉強していたわけだが、文法は一通り分かった希ガス。

ただ、C言語みたいにこういう機能をを作りたいと思っても
すぐに、どうやって設計したらよいかイメージが浮かんでこないのだ。
コレは慣れの問題???

漏れは今の段階で
C -> C++ -> java
だし、このまま続ければ何とかなるのか。

ディジタル回路ってANDとかFFとか?
これは学部時代に結構やった。
30774ワット発電中さん:2006/03/24(金) 23:28:38 ID:2T28QO97
ANDとかFFとかだけじゃなくて、それを使ってどうデジタル回路を作るのか?という問題のような

サンプルソースが多数掲載されている本を見ればいいじゃない
まずはカウンタのサンプルソースとか

しかしVerilogやるならSE/PGというよりはハード屋だろう
SE/PGもハード屋も一歩間違えればデジドカだが、そういうのになりたいのか?
31774ワット発電中さん:2006/03/24(金) 23:38:15 ID:2T28QO97
それでもCもVerilogも知っておいて損はないだろうけどな。難しくないし
3214:2006/03/24(金) 23:47:18 ID:UzgA6pvH
>>27
わかりやした。これからはVerilogに力を入れようかと。

>>30

OK、やっぱり始めはサンプルを読めばよいわけね。
カウンタのソースは理解できたつもり。アップカウンタとダウンカウンタの
機能が混在したやつも、(苦労したが)なんとかできた。

>SE/PGもハード屋も一歩間違えればデジドカだが、そういうのになりたいのか

研究室的にはそっち系だからな。こればかりは。
しかし、VerilogもCも別に嫌いじゃないからよいと思っている。

>>31
たしかに、そうだな。
Cはある程度できるようになったから、今度はVerilogやってみるわ。

>難しくないし
文法は分かったが。。その後が難しそうな。。まぁがんばるさ
33774ワット発電中さん:2006/03/24(金) 23:56:20 ID:2T28QO97
次はSRAMのデータシートでも読んで、セットアップタイムとホールドタイムについて(少しだけ)学び、
実際に接続してカキコして読み出すとかするべきなのか

そしてステートマシンなど学んだり、
大きな同期回路は
FF->組み合わせ回路->FF->組み合わせ回路
のように作るという事が判れば、そこそこのものが作れるような希ガス

ファンアウトが大きくなると動作が遅くなるとかいうことも知るべきラスィがw
3414:2006/03/25(土) 00:06:47 ID:2rjRostT
>>33

正直、今の漏れには何が書いてあるのかほとんど理解できん。 orz

>FF->組み合わせ回路->FF->組み合わせ回路
って所だけはちょっとピンと来た気がするが気のせいだろう。


よし、今から勉強する。

みんな回答サンクス!

35774ワット発電中さん:2006/03/25(土) 00:13:17 ID:3ugDzeN0
引っ張ってスマソがw

ケキョークデジタル回路設計の本も読んだ方が良いんだろうね

>FF->組み合わせ回路->FF->組み合わせ回路
FF(フリップフロップ)->組み合わせ回路->FF->組み合わせ回路->FF
の方が良かったな

「組み合わせ回路(ANDとかORとかNOTとかの塊でFFがない)」を信号が通る時には遅延が起きるでそ?
そして回路のどこを通るかによって遅延の大きさが変わるから、
「組み合わせ回路」の出力が複数あると、すべての信号出力が正しい値に落ち着くまで時間がかかる
よって「すべての信号が正しい話に落ち着いた時」を見計らってFF(フリップフロップ)に値を取り込むのね。

まあまだ説明が良くないかな。勉強してくれw
36774ワット発電中さん:2006/03/25(土) 00:42:20 ID:7w4pmGjP
Cがそこそこ出来るなら、忘れない程度に覚えときつつVerilogやるのがいいな。
入力パタン&期待値生成とか、設計後に発生する諸々の単純作業の自動化とか出来ると楽だし。
別にPerlでもJavaでも何でもいいけど。
37774ワット発電中さん:2006/03/25(土) 01:20:28 ID:fuZAPW26
経験的な話なんだけど、
C→Verilog とやると、やっぱハード的なイメージがわかなくて苦労すると思う。
VerilogはCぽくみえるかもしれないけど、あくまでそれは見た目だけで、根本はデジタル回路。

なので、同期回路、非同期回路、ステートマシン、順序回路、組み合わせ回路、といった
デジタル回路から入ったほうがスムーズだと思う。
FFが分かってなければ、理解してVerilogも記述できないと思うわけで。

それはそれとしてソフトの知識があると売りになる。直接的には役にたたないように
思えるかもしれないが、>>36にあるように、作業時間を大幅に減らせる可能性がある。
ちょっとした機能確認のためにCでモデル作って軽くうごかしてみるとか、
数百のファイルを一括修正する際にスクリプト言語使うとか、シミュレーションをバッチで流すとか、
そういうことが出来る&発想に至れるメリットはでかいと思う。
38774ワット発電中さん:2006/03/25(土) 02:44:45 ID:EA3bDj4b
>>37
禿堂

>>10-36 の流れ見てイラついていたところだった
39774ワット発電中さん:2006/03/25(土) 03:53:16 ID:+7NugjdK
>>14のデジタル回路についての知識レベルが明らかになったのが>>34あたりなので、お前がイラついた所で仕方がない
40774ワット発電中さん:2006/03/25(土) 08:59:38 ID:BKWvLm/i
俺はhdl覚える前にとりあえずallディジタル回路(max plus)で設計したな。
最初はn進カウンタ、次はFIFO,RAM見たいな感じで。
hdlを始めたときは、回路をhdlに変換する感じだった。
今はhdlで書いても論理合成がどうなるか大体わかるし、逆も然り。
41774ワット発電中さん:2006/03/25(土) 09:10:20 ID:EA3bDj4b
>>39
は?

>>14
>Verilogやっている研究室に配属されたわけだが、
>内部ではC言語班とVerilog班に分かれているみたいで
>どちらに入るか悩んでいるわけだ。
>
>現時点でCなら10000行くらいは組めるのだが
>Verilogは30行が限界。
>
>苦労してVerilogを一からやるだけの見返りはある??
>アドバイス木盆

この瞬間に知識レベル見えてるだろ?
なのに延々と引っ張ってるからイラついてたんだよ。
42774ワット発電中さん:2006/03/25(土) 10:33:45 ID:pINwcHk3
俺は論理回路なんてブール代数と標準ロジックの本ちらっと見ただけだな。
最初はHDLでビヘイビア記述して、次はRTL記述して論理合成みたいな感じで。
HDLをはじめたときからずっと、仕様をRTLに変換する感じだった。
今はHDLで書いても論理合成はツールに任せきりだし、
バイオレーションしたら設計を直すだけだ。
4337:2006/03/25(土) 15:29:46 ID:fuZAPW26
あと、個人的な意見としてはVHDLのほうが記述量が多い分、勉強にはなるのでは
と思っている。
44774ワット発電中さん:2006/03/25(土) 17:00:35 ID:IN+R0Y8Y
>>42
ウソはイクナイ。
45774ワット発電中さん:2006/03/25(土) 18:42:13 ID:pINwcHk3
>>44
新卒数ヶ月のプログラミング未経験者がCやらJavaのプログラマとして
実戦配備されるのと同じく、IP関連も新卒数ヶ月の派遣エンジニアがHDL
書いてるわけさ。今のシステムLSI開発現場なんてそんなもんだ。

そんな人たちに汎用ロジックレベルで論理を考えて回路を組んでからRTLに
起こすなんてことはしない。最初からRTLで記述してしまうか、ビヘイビア
あるいはCシミュレータで検証してからRTLに直す。
そこがHDLの良さで、細かいテク知らなくてもツールで論理合成して動くもの
になる。シミュして動けばどう書いても動くし、合成が破綻したら動かない。
それだけ。

つまらんと思うか、すばらしいと思うかは任せるが、
HDLに対応した開発環境ってのはそういうものだ。
46774ワット発電中さん:2006/03/25(土) 19:11:04 ID:EA3bDj4b
すばらしい世の中ですね
思えば遠くへ来たもんだ
47774ワット発電中さん:2006/03/25(土) 19:45:34 ID:pINwcHk3
遠くへ来たもんだ。

実際のとこロジック回路やブール代数の知識はそれほど必要無い。
あればあったで合成の時間を短くできたりすることもあるが、
一時間かけて考えて最適化したロジックなんて論理合成ツールに
かかれば数秒とかからずに最適化してくれるわけで。

リアル厨房のときに汎用ロジックIC組み合わせてよくわからんもの
を必死で作って将来回路設計する仕事に就くんだとか本気で考え
ていたが、実際やってみたら、経験としては役に立ったとはいえ、
そんな苦労する必要はなかったんだ。

今、HDLがりがりやってても、将来その必要が無くなってるかもな。
その兆しはすでに見えてるわけで。SystemCとか。

>>19 が言っていることは当たらずしも遠からずなんではないかな。
ふと思ってみたり。
48774ワット発電中さん:2006/03/25(土) 19:57:21 ID:IN+R0Y8Y
>>45
だからバグ取りで破綻しているだろ。バグすら気がつかないかもね。
49774ワット発電中さん:2006/03/25(土) 20:18:00 ID:pINwcHk3
>>48
そうさ。あえて書かなかったが、48が指摘したので追記する。

実際のIP資産なんてバグだらけ。
Javaの未経験プログラマのソースと同じレベルだ。
コメント無い、設計仕様と違う、なんてざら。
テープアウト前はデスマーチ。
中身わからんから、唯一のより所はシミュのテストベンチとその結果なわけ。

今のHDLをとりまく環境って、>>9 >>13 >>40 的発言が当たり前のように出て
くるような状況だから、そうなるんですけどね。

ほんと、すばらしいHDLの世界なんてどこにあるんでしょうね。

とっととHDLなんか捨ててUML+SystemCになってしまえばいいのに
なんて思う。ま、間違いなく次世代の開発環境も同じ状況になるわけだが。
50774ワット発電中さん:2006/03/25(土) 20:38:07 ID:pINwcHk3
今のHDLの仕様はせいぜい構造化構文止まりで
Javaのようにエレガントに記述できない。
言語仕様上は構造化Basicより劣ってるんじゃないか?

劣っているのは言語仕様だけではなくて、コーダーの能力も
なんとかコードを書いてテストとVerilintを通すことで精一杯。

ソースをリファクタするとか、コメントをきちんと書くとか、ドキュ
メントを整備するとか、ソフト開発では当たり前の方法論がまだ
あまりなされてない。ま、ソフトでもきちんとできてないけどね。

こんな状況では、バグの無い完璧な回路を自分で考えてから
HDLを記述、なんて流暢なことはできないってこと。


長文失礼。
本来こんなことは恥ずかしすぎて人には知られたくないところだ。
でも、これが現実。それとも、こんなのは自分のところだけかな?
51774ワット発電中さん:2006/03/25(土) 20:51:30 ID:EA3bDj4b
>こんな状況では、バグの無い完璧な回路を自分で考えてから
>HDLを記述、なんて流暢なことはできないってこと。

訳も分からずHDL書き始めるよりそっちの方が安全じゃないかな。
52774ワット発電中さん:2006/03/25(土) 20:58:18 ID:IN+R0Y8Y
LSIのバグを突いてセキュリティ突破の事件が起きればおまいら有名人だ。
53774ワット発電中さん:2006/03/25(土) 21:31:03 ID:pINwcHk3
>>51
もちろん、無い状態から作り出すときは構成も考えるさ。

でも、普通の現場ではすでに実績のあるHDLでできた資産てもんがあるわけ。
動作についてはインターフェースレベルでまがりなりに仕様が決まってるの
でブラックボックスとして、そのまま使えば動くものになる。
すでにきちんと動くものがあるのに、毎回作り直すなんてことはしないだろ?
よほど時間をもてあましているか、ものすごくバギーなブロックで無ければ。

たとえ中身がよく分からなくても、無い状態からはじめて同じものをノーバグ
で仕上げるよりはるかに楽だから。

これもHDLの良さってもんだし、ここが一番重要なところ。
54774ワット発電中さん:2006/03/25(土) 21:38:59 ID:pINwcHk3
>>52
大規模のLSIならエラッタなんかいくらでもあるはず。
中にはチップ全体を停止させたり、不定の状態に導く危険なものがあるかもしれない。
もっとも判明した部分はマイクロコードやソフト、あるいは仕様の変更で通常表面化
しないように隠されてるが。
それに一般的には、ハードのバグよりソフトのバグのが多い。
55774ワット発電中さん:2006/03/25(土) 23:00:27 ID:pINwcHk3
>>51
カン違いされるといけないので、53一行目を補足。
ちなみに、ゲートレベルで回路を考えてRTLに直すことはナンセンス。HDL開発の禁じ手。
RTLで書いた動作はそのまま論理合成されるのだから、完璧な回路はRTL記述時には不要。
開発者はバグの無いRTLでの記述に集中すべきで合成後の回路は推定するのみでよろしい。

C言語でソフトを組むときにアセンブラで書いてからCに直す、ということはしないのと同じ。
56774ワット発電中さん:2006/03/26(日) 00:09:02 ID:64Ff3MHr
>>55
>>51は合成後の回路を推定できるようになるためにって
ことじゃないのか!?
57774ワット発電中さん:2006/03/26(日) 00:26:40 ID:Zxj+i3Bt
>>56
そうとも推定できるな。
いくら回路を意識せずにRTLで動作を記述できるとはいっても、今のところは、
まったくデジタル回路を知らずに設計ってのもこれまた無理だし。

将来ビヘイビア記述でも現実的に論理合成できるようになってきたら
もっと状況が変わると思う。それこそ回路の推定なんて不要になるかも。
58774ワット発電中さん:2006/03/26(日) 00:59:58 ID:T1Tfl5zT
バグ発覚後、レイアウト中/済NETのEC箇所の当たりを付けるのには必要な気が。
そのころにはレイアウト期間も超・短縮されてて、再合成からでも時間かからんかもしれんが。
59774ワット発電中さん:2006/03/26(日) 02:56:16 ID:593se02o
たしかにあんまり構文はエレガントじゃないよねぇ >HDL
でも、今はあんまり複雑な記述はできないほうがいいんじゃないかな・・と思うことはある。
合成ツールとかが追いついてきて、デバイスの密度も濃くなってきたらそうなっていくんだろうけど。
60774ワット発電中さん:2006/03/26(日) 09:17:20 ID:Bqhy2Qle
>>49
>実際のIP資産なんてバグだらけ。

パックンチョしてるくせに文句言うな。
61774ワット発電中さん:2006/03/26(日) 11:37:49 ID:fxq9tg3q
HDLは型チェックが強い方がいい
どちらかって言うと設計記述というよりはテスト検証用の言語だから

合成ツールがテスト仕様記述から実装を逆に生成するっていうすごいツールなんだよ
62774ワット発電中さん:2006/03/26(日) 15:39:16 ID:t4mH6MZB
>>53
自己矛盾してますよ。
リファクタリングのことすっぽり忘れてますね。
っていうかやるべきことを仕事に追われてやってないだけなのを
自分に都合のいいように言い訳してるだけですね。
63774ワット発電中さん:2006/03/26(日) 17:50:04 ID:Zxj+i3Bt
>>62
残念ながらHDLで実現可能な理想とはかけ離れた状況になっているのが
ASIC開発の現状というもの。自己矛盾しているのは十分承知。
本来ならドキュメント整理やテスト項目の追加やらリファクタ
(こんな言葉は現場ではお目にかからない)もしないといけない。
だからこそ次世代の開発環境に対する要求があるし、今のおかしなところが見えてくる。
そうでなければこんな屁理屈出るわけないでしょ?
Java使えば平和で快適な開発ができるなんてことないのと同じだ。

十分な暇があって、一人でFPGAを使ってるくらいならともかく、いまいちな言語仕様の
HDLとCVSを使って多人数で限られた予算と時間とライセンスとリソースを使って開発
するってことがどういうことか考えてみな。
64774ワット発電中さん:2006/03/26(日) 18:21:25 ID:xYtii3Ag
>>63
リファクタリングなんていうキーワードを使う人たちは霞を食って生きていけるから
現実を話たって無駄だよ
65774ワット発電中さん:2006/03/26(日) 19:52:44 ID:Zxj+i3Bt
>>64
その通りだわ。
納期は正しく守り、不明なコードは使わないでノーバグでリファクタリングもドキュメント整備も完璧、
そしてチームにも己にも言い訳しない、もちろん不要な残業はしない人材だけでチームが構成されて
いればHDLだろうとABELだろうとJavaだろうと問題ないはずだ。
あと、人をかまない、コミュニケーション力も必要だな。最低限。
66774ワット発電中さん:2006/03/26(日) 21:05:32 ID:91DMIJok
>>47
>一時間かけて考えて最適化したロジックなんて論理合成ツールに
>かかれば数秒とかからずに最適化してくれるわけで。
この辺の感覚が漏れと違うなぁ
いまの合成ツールはCコンパイラの最適化ほどには何でも最適化してくれない印象
強力な部分は強力だが、全ては任せられない感じ。
いつも面積に影響しない範囲で階層を残して回路と対応が取れるように合成してる。

Synopsysを使ってる漏れがもう古いのか?
67774ワット発電中さん:2006/03/26(日) 21:12:35 ID:91DMIJok
回路記述するHDLはこれ以上あんまり発展しなくても良いと思う。
回路記述よりも検証のベンチ記述してる時間の方が圧倒的に多いから
そっちは進化する必要がある。

回路は当分RTLで十分で日経なんとかを読んでる上司が喜びそうな
Cベース設計はピントがずれていると思う。
せいぜいプロトタイプモデルとの差し替えが容易になるように、インターフェースや
トランザクションの抽象化が導入できる程度でいいよ。

68774ワット発電中さん:2006/03/26(日) 21:20:18 ID:T1Tfl5zT
うちだとCベースは、今の所は検証部分だけだなぁ。
69774ワット発電中さん:2006/03/26(日) 21:20:57 ID:91DMIJok
HDLでリファクタリングが浸透しないのはTestFirstが困難だからだと思う。
テストベンチ記述は最初に手を着けるにはかなりシンドイ。

UnitTestに変わる方法論が必要だけど、
この頃ではAssertionがそれにあたるのかな。
形式検証の導入などSoftwareより先行している部分も有るんで
ソフトとは別のメソドロジを構築していく必要がある。

UML+SystemCは好みじゃないなぁ
70774ワット発電中さん:2006/03/26(日) 21:30:51 ID:91DMIJok
>>68
Cベースの検証は方向性としては悪くないと思うんだけど
専用の検証言語と比べてどうなんでしょ。
制約付きのランダムトランザクション生成とか、
機能カバレッジ定義とか、
テスト対象のプロービングとか。
昔のTestBuilderみたいな環境が有るの?

あとeXtream Programingの教えにテスト対象とテスト記述の言語は
同じにしろと言う訓えがあったと思うけど、HDLの場合はどうかなぁ。
設計とテストでは頭を切り替える必要がソフト以上に有るんで言語は
別々でいい気もする。
71774ワット発電中さん:2006/03/26(日) 21:43:57 ID:Zxj+i3Bt
>>66
そのあたりは開発するものや環境によるんじゃないかな。
自分はバカだから決められたとおり動きさえすればいいって思ってるが。

>>67
今はHDLでRTL記述してテストから合成までの流れが定着してるが、
このスタイルも10年以上経つわけで。ABEL以前からLSI開発していた人が
HDLでの開発についていけてない現実を見ると今HDLでRTLを扱うスタイル
で安住しているってのがどうかと思うわけよ。
各種ツールやマシンパワーの増加だけでより大規模に対応してくなら
いいけど、いわゆる開発手法の変革が起こった場合は>>14のような
新人類に淘汰されるか新技術を習得して生き残るかのどっちか。
ま、今すぐの問題でもないが。
72774ワット発電中さん:2006/03/26(日) 22:07:42 ID:uelemcc/
>>14
好きなほうにすればいいと思うが,Verilogで数百万ゲートくらいはすぐに書けるようになるよきっと
7342:2006/03/26(日) 22:50:52 ID:Zxj+i3Bt
思ったより伸びなかったな。
やっぱりHDLを仕事に、遊びに使っている人の多くはにちゃんなんか見てないんだろうか。
オープンソースIPなんてのも最近は増えてきたが、現場のおかしなところはソフ開よりも表に
出てこないし、実際の開発現場がどういうものか、少しは他の人の目に晒すのも必要かと思った。
HDLでの開発を生業としている者はIT土木として最下層を支える重要な使命があるのだ。
また明日から仕事が始まる。
ノシ
74774ワット発電中さん:2006/03/26(日) 23:42:59 ID:xYtii3Ag
2ちゃんが一番の情報源です
75774ワット発電中さん:2006/03/27(月) 00:04:06 ID:mw7LL0LR
上から見下ろすようなカキコだから、のびなかったと思いますw
76774ワット発電中さん:2006/03/27(月) 00:41:33 ID:1jnJCWmY
>>66
ASIC作ってる人はそんなもんだとオモ
今HDLがJavaみたいになっちまったら、何がどう合成されるか見えなさ過ぎるだろう
77774ワット発電中さん:2006/03/27(月) 00:43:08 ID:1jnJCWmY
>>41
それじゃハードの知識はサパーリわからんし、お前がイラついてもしょうがないのも変わらないw
78774ワット発電中さん:2006/03/27(月) 00:49:04 ID:lvfZQxxN
レイアウトのツールがあと2世代くら進まん限り、合成結果が見えない設計言語は怖すぎて使えないでふ…。
79774ワット発電中さん:2006/03/28(火) 21:39:21 ID:KxrTvTWv
>>78は2世代進んだその時もそう言ってるに違いない。
80774ワット発電中さん:2006/03/28(火) 22:17:49 ID:f108CIeL
修正時にレイアウトが今より大幅に早く終わるようになれば、ってことだな。
再合成からやり直しても変わらないなら、必死にNETを修正しないで済む。
81774ワット発電中さん:2006/03/29(水) 01:24:01 ID:RIsVFaNQ
むしろそこまでギリギリの設計にしなければ(ry
82774ワット発電中さん:2006/03/32(土) 20:08:48 ID:qQwAqEmq
歴史は繰り返す。
83774ワット発電中さん:2006/04/02(日) 13:14:44 ID:dchMqOPg
3/33
84774ワット発電中さん:2006/04/11(火) 15:39:02 ID:byX1c5al
>>14はまだここ見てるのかな?
85774ワット発電中さん:2006/04/12(水) 21:42:44 ID:4b+f/h6+
もう見てないんちゃう?
86774ワット発電中さん:2006/04/12(水) 21:47:03 ID:OfegPCmf
今度くるとしたら、GWあけに泣き言いいにかな!?
87774ワット発電中さん:2006/04/12(水) 23:18:33 ID:4b+f/h6+
30行しか書けない、の意味が未だにわからん。
88774ワット発電中さん:2006/04/13(木) 15:52:37 ID:G4nro2rB
順序回路しか書けないって意味だろ?
89774ワット発電中さん:2006/04/13(木) 18:26:26 ID:RFmjzTq1
「組み合わせ回路しか書けない」じゃないのか?
90774ワット発電中さん:2006/04/13(木) 22:54:54 ID:rrDkAvId
みんな設計はエクセルでやるよね。
91774ワット発電中さん:2006/04/13(木) 22:58:55 ID:COmdU3zU
おれは自分の頭で
92774ワット発電中さん:2006/04/13(木) 23:17:20 ID:5554UtjW
紙とエンピツでカルノー図
93774ワット発電中さん:2006/04/13(木) 23:27:42 ID:fDzkLZjR
裏紙と鉛筆で状態遷移表。
94774ワット発電中さん:2006/04/13(木) 23:28:11 ID:dDPo9max
設計は温泉でやるよ?
95774ワット発電中さん:2006/04/13(木) 23:45:45 ID:5554UtjW
IDが555か、とおもたらmaxもいて、ちょっとしあわせ
96774ワット発電中さん:2006/04/20(木) 15:17:57 ID:DFmDvYni
96
97774ワット発電中さん:2006/04/20(木) 15:21:36 ID:dhIehqNZ
97
98774ワット発電中さん:2006/04/22(土) 21:42:24 ID:gQ3UzhHD
新刊記念age
個人的にはこの人の解説書は出来がいいと思う


「アサーション検証の効率化のために Verilog-HDLによるテストベンチ」

ISBN:4-924998-66-4
本体価格:\3,000
発売日:2006/04/24
著者:枝 均
99774ワット発電中さん:2006/04/23(日) 01:48:16 ID:zDayy8oP
>>98
情報ありがとう。
100774ワット発電中さん:2006/04/23(日) 07:23:48 ID:B2D5+SBi
宣伝おつかれさま。
101774ワット発電中さん:2006/04/23(日) 12:31:17 ID:s3wCB2dB
VHDLとVerilog-HDL どっちを先にやり始めたほうがいいの?
最初、VHDLの本買っただけどさ
他の本にVHDLとVerilog-HDLのサンプルコード書いてあってさ
どうもVerilog-HDLの方が記述量少ないけど最初はVHDLでガリガリ
書いたほうがいいの?
俺はVerilog-HDLの方が好きなんだけど(見た感じ)
Verilog-HDLから入っても問題ない?
それとも両方わかっておいたほうがいいのかな・・・
102774ワット発電中さん:2006/04/23(日) 19:21:58 ID:W9qNdsjU
ウダウダ言いながら、どっちも使えないヤツが一番ツカエナイと思う。
103774ワット発電中さん:2006/04/23(日) 19:30:52 ID:B2D5+SBi
そして、どっちも使えるやつが一番ツカエル・・・

って当たり前だが。
104774ワット発電中さん:2006/04/23(日) 19:35:59 ID:16kJSgTv

どっちでもOKよ。とにかくやってみることが大事ね。
ある程度できるようになると「オレVerilog派だからVHDLわかんない」
と言うヤツがいるけど、これがいけない。
あっちができれば、こっちもできるようになるし、
少なくとも読むことはできるようになる。そうならないといけない。

最初ならオレはVerilogを進める。VHDLに比べると参考書籍は1/3だが、
あえてVHDLにしなければならない理由は何もないんだよ。
VHDLに比べてタイプ量が圧倒的に少ないし、ソースも短くて
視認性がよい。また表現が直感的にわかりやすいからね。
105774ワット発電中さん:2006/04/23(日) 19:40:06 ID:Jc662L/Z
> VHDLに比べてタイプ量が圧倒的に少ないし、ソースも短くて 視認性がよい。
裏を返せば、ツールの裁量が大きい、ってことかな?
106774ワット発電中さん:2006/04/23(日) 19:54:37 ID:38/MiJTT
>>101
両方必要なら、VHDLからはいるのをすすめる。
VerilogからはいるとVHDLって面倒(記述が増えるし)って感じで手をつけない
ような気がする…
107774ワット発電中さん:2006/04/23(日) 20:41:07 ID:EXOC4Gmi
>>101
両方必要ないなら、Verilogからはいるのをすすめる。
VerilogからはいるとVHDLって面倒(記述が増えるし)って感じで手をつける意味がまったくない
ことにはっきり気づく気がする…
108774ワット発電中さん:2006/04/23(日) 20:47:54 ID:0LHVVMYi
仕事なら必要な方、そうでなければ好きな方
109774ワット発電中さん:2006/04/23(日) 21:23:58 ID:KioFeROV
ASIC/LSI屋さんならVerilog、SUN のソースは、Verilog
FPGA屋さんならVHDLの方が多い気がする。趣味だったらVerilog。
110774ワット発電中さん:2006/04/23(日) 22:47:22 ID:PN1DzonI
既に本買ってるのに、未だに迷ってる時点でダメ。
結局どちらも使えずじまいで終わるに200カノッサ。
111774ワット発電中さん:2006/04/23(日) 23:18:35 ID:zDayy8oP
両方必要ないなら、VHDLからはいるのをすすめる。
VHDLからはいるとVerilogって面倒って感じで手をつけなくてよいことがわかる…
112774ワット発電中さん:2006/04/24(月) 00:03:21 ID:V78fS98w
Verilogの本たくさん出てますね。
いい時代になりました
113774ワット発電中さん:2006/04/24(月) 00:14:19 ID:9ZO/RA/m
仕事でもないのにVHDLやる奴 <=== 見通しの悪いマヌケな奴、死ね
114774ワット発電中さん:2006/04/24(月) 00:16:51 ID:9ZO/RA/m
Verilog --> SystemVerilog めっちゃ簡単、これからはSystemVerilogだね。
VHDL ---> オワタ、将来なし、マヌケな規格変更予定、将来性まるでなし。チョイスする奴の人生そのもの
115774ワット発電中さん:2006/04/24(月) 00:17:12 ID:A2JMlB5f
>>113
俺だw
いや、adaっぽい言語を使ってみたかったんです
116774ワット発電中さん:2006/04/24(月) 00:18:57 ID:A2JMlB5f
あげてしまった
やっぱVerilogがいいんかな・・・
117774ワット発電中さん:2006/04/24(月) 00:40:18 ID:V78fS98w
うちの会社では全部Verilogです。
取引先も、全部同じく
118774ワット発電中さん:2006/04/24(月) 01:07:45 ID:UsMru1c+
宗教論争か
119104:2006/04/24(月) 01:35:34 ID:ASBi0xDj
みなさん!ありがとうございます!!
>>109 の言っていることは昔のインターフェイス読んで書いてあった
そこに書いてあったことに漏れはびっくりしたよ
「VHDLの方が厳密な記述であるが、実際選ぶのは個人の好みに合わせるべきだ」って
今までC言語とかHTMLはスタンダードにあわせて勉強してきたけど
こう、幅広い選択が出来る体験は初めてで初心者に言語の評価をしろってのも難しい・・・
実際趣味なんだけどさ・・・趣味ってか学生なんだよね・・・
就職とかするときに有利かな〜と腹黒く考えてるけど

やっぱりC言語やってるとVerilogが読みやすい!
VHDLは軽く読める程度にしてVerilogはじめようかな!
ところで「Verilog」ってどう読むの?
CPLDはシーピーエルディーであってると思うけど
FPGAってエフピージーエーっていいの?
120774ワット発電中さん:2006/04/24(月) 01:46:37 ID:UsMru1c+
まあRTL記述ならそんなに大差はないと思うが
121774ワット発電中さん:2006/04/24(月) 03:22:59 ID:R0fPyzH8
>>119
Verilogはヴィリエログって発音する
122774ワット発電中さん:2006/04/24(月) 08:21:47 ID:ZuG47Ptn
>>119
就職も考えて勉強するのは腹黒くもなんでもなく、
ある意味やって当然なこと。
123774ワット発電中さん:2006/04/24(月) 09:46:34 ID:IHiNY41d
VHDL,Verilogの違いが大問題と思っているのが問題。
124774ワット発電中さん:2006/04/24(月) 21:55:27 ID:TZFFpzxL
就職に有利な勉強をすることが「腹黒い」と思っているのが問題。
「腹黒い」の意味を取り違えたまま社会人になろうとしているのが問題。
125774ワット発電中さん:2006/04/24(月) 22:28:25 ID:3Jso+ByW
VHDLの78%は見栄で出来ています
VHDLの10%は回路で出来ています
VHDLの5%は濃硫酸で出来ています
VHDLの4%はお菓子で出来ています
VHDLの3%は言葉で出来ています


Verilogの58%は見栄で出来ています
Verilogの31%は赤い何かで出来ています
Verilogの6%はミスリルで出来ています
Verilogの4%は理論で出来ています
Verilogの1%は言葉で出来ています
126104:2006/04/25(火) 00:33:59 ID:T5XjwBx9
ごめん腹黒いっていうのはイヤラシイってかそんな感覚だった・・・
工業大学なのにそういう勉強周りやっていないからセコイ人間だな〜と思ってしまう漏れ・・・
でも勉強して損なさそうだから ありがとうございます!
127774ワット発電中さん:2006/04/25(火) 07:33:46 ID:SouJCgSQ
仕事ではVHDL、趣味ではVerilog HDLな俺
128774ワット発電中さん:2006/04/25(火) 20:09:09 ID:stqKEoQR
みなさん こんにちは
ちょっと質問させてください

         Inverter
        +------o<|------+
        |            |   
        |    ________     |
        |   |    |    |
        +--- |D   Q|----+-----Half Frequency Ouput
           |     |
           |     |
 Clock Input ----|CLK  |
           |________ |
          
            D-Flip Flop

D-フリップフロップと インバータをこのように接続した
簡単な 分周回路は、Verilogでは使用できないんでしょうか?

この回路では 入力したクロック周波数を 半分にしたものが
出力から出てくるというものです。


ところが、Verilogで記述してシミュレーションすると、出力からは
不定値(x) しか出てきません。


Verilogでは、セット・リセット信号付きのフリップフロップしか
使えないようになっているんのしょうか?
129774ワット発電中さん:2006/04/25(火) 20:25:31 ID:re/9JWKw
>Verilogで記述してシミュレーションすると

ちなみにどんなふうに記述したのか
130774ワット発電中さん:2006/04/25(火) 21:15:51 ID:cZCV8W22
> Verilogでは、セット・リセット信号付きのフリップフロップしか使えない

べつにそんなことはないが、何らかの手段でリセットするしかない。
D入力にAND入れて、リセット期間中は一方を無理矢理0にしとくとか。
131774ワット発電中さん:2006/04/25(火) 21:33:37 ID:stqKEoQR

>>129 
こんなふうに書きました。

フリップフロップとインバータは、ライブラリの部品を使います。

module bunsyuukairo( clockin, halffreqout )
    input clockin; // クロックを入力してやる
    output halffreqout; // 半分の周波数で出力する
    wire invout;

    DFLIPFLOP dff1( .CLK(clockin), .D(invout), .Q(halffreqout) );

    INVERTER inv1( .A(halffreqout), .Z(invout) );

endmodule

module testbench;
    reg nyuuryoku;
    wire syuturyoku;

    parameter STEP = 100;

    bunsyuukairo undertest1( nyuuuryoku, syuturyoku );

// テスト入力
    always #(STEP/2) nyuuryoku = ~nyuuryoku; // クロックを作る

    initial begin
      #0    nyuuryoku  = 0;    // 初期

      #(STEP * 32)        // ほどよい時間 動かして
      $finish;
    end

    initial $monitor ( $stime, " nyuuryoku=%b syuturyoku=%b ", nyuuryoku, syuturyoku );

endmodule

----------------------------------------
(いま手元ではコンパイラやシミュレータのソフトが無くて
試してたコードもなくて 打ち直したものなので
間違い あるかもしれないですが)
132774ワット発電中さん:2006/04/25(火) 21:40:58 ID:stqKEoQR

>>130 
ありがとうございます。

そうなんですか。
回路を書き換えるしか方法は無いのかな。

テストベンチ部の工夫だけで できないかと
かなり調べて回ったんですが、どの本もWebの情報も
リセット有りフリップフロップを使ったものばかりでした。

回路検証シミュレーションの為に 回路を書き換えてしまうと、
それは果たして ちゃんと元の回路を検証してることになるのか
という問題がありますよね。

ちょっと手を加えて、検証が終わったら 元に戻す というのは
ミスが混入する可能性が必ず残ってしまう。
133774ワット発電中さん:2006/04/25(火) 22:35:14 ID:S0ic24ap
>>132
Verilogじゃなくても、どんなシミュレータを使おうと結果は不定になる。
考えてみ、たとえばこの回路で10ステップ後に出力はどうなっている。
HighかLowか分かんないだろ。だから不定という結果が正しいのよ。

それっぽく、スイッチングする波形を出しても、結果と合わないのなら
シミュレーション結果としては嘘だろ。
134774ワット発電中さん:2006/04/25(火) 23:17:57 ID:a4psdnoJ
>>133
そういう問題か?
>>128の回路はあくまでもD-FFなんだから回路としては問題ない。
クロックで値が確定するんだからRSのような襷がけとは違う。
出力が不定になるのは初期値が確定して無いからじゃないのか?
Dの入力にセレクタでもつけて、初めに初期値を与えて、何クロックか後に
Inverter側に切り替えるかすれば不定値はなくなるんじゃないか?
135774ワット発電中さん:2006/04/25(火) 23:35:18 ID:cZCV8W22
それを同期リセットと言うんじゃ
136774ワット発電中さん:2006/04/26(水) 00:12:08 ID:PxykwFN9
>>134
初期値が確定してないというのは、その通りよ。リセットかけないで、出力が
不定なのはおかしいだとかいう人物に、そんな説明は通じないと思ったんで、
だめな例をあげたのよ。
137774ワット発電中さん:2006/04/26(水) 00:21:44 ID:x/MWoKDR
VHDLだと、

signal AAAA : std_logic :='0';

という風に、シミュレーション用に初期値を与える記述があるよ。
Verilogは使ってないから有識者の人よろ

ModelSimでシミュレーションしてるなら、
FourceやChangeコマンドでシミュレーション時に任意の値を設定できるよ。
138774ワット発電中さん:2006/04/26(水) 00:23:29 ID:x/MWoKDR
>>132
念のため


不定('X')のインバート結果はやっぱり('X')なので、いつまでたっても不定のまま。

139774ワット発電中さん:2006/04/26(水) 00:26:22 ID:qG3AF30i
たまに、x と、同じ信号の not x の積は 0 にしてくれよと思うこともある
140774ワット発電中さん:2006/04/26(水) 06:20:58 ID:PxykwFN9
>>137
Verilog でも同様の機能はあるよ。
でもリセットをかけないこと自体がおかしいんで、そんなことを
するのは、意味ないでしょう。

ゲートアレイやカスタムLSIを設計しているエンジニアだとありえないんだが。
FPGAやCPLDを設計しているエンジニアだと、こんなでもOKなのかな?
141774ワット発電中さん:2006/04/26(水) 06:34:10 ID:UDX0tGhb

>>140 
> Verilog でも同様の機能はあるよ。

どんなふうに書いたらいいか、ぜひ 教えてください。

Verilogで シミュレーション用の初期値 与えられたら すごく助かります
142774ワット発電中さん:2006/04/26(水) 08:48:00 ID:HsO26jQS
PLLか?
143774ワット発電中さん:2006/04/26(水) 09:31:08 ID:9FTDyj7Q
>141
ヒント
initial または force & release
144137:2006/04/26(水) 13:46:07 ID:x/MWoKDR
CPLDやらFPGAは初期値が保証されてたりするからねぇ
FPGAなんかはどうせコンフィグ書き込みするし。

でもASICでもリセット無しFF使ってます。箇所はある程度限定されるけど。
145774ワット発電中さん:2006/04/26(水) 21:01:55 ID:ZdbNTr9R
>>139
ちょっと違うがFPGAのLUTで、出力が0か1に決まる場合でも
入力のどれかがxだとxになっちゃうんだよな〜
146774ワット発電中さん:2006/04/26(水) 21:25:54 ID:UDX0tGhb
>>143 
どうもありがとう
147774ワット発電中さん:2006/04/29(土) 03:55:11 ID:mWViUPsz
>>140
まあ後で書き直せるからな>>PLD
普通リセット入れるが
148774ワット発電中さん:2006/04/30(日) 07:40:31 ID:zcfqRurE
マスタークロックを分周して8種類の周波数が決められたクロックを作らなければなりません。
一番低いマスタークロックの周波数はどうやって決めればいいですか?
149774ワット発電中さん:2006/04/30(日) 23:27:30 ID:eOfFX/G6
愛かな
150774ワット発電中さん:2006/05/01(月) 00:41:50 ID:zhVkiBc2
愛だね。
151774ワット発電中さん:2006/05/01(月) 22:10:58 ID:oxVXzI/o
>>148
32.768kHzにすればいいと思うな
152774ワット発電中さん:2006/05/01(月) 22:16:18 ID:fGXsRlw/
kHzじゃ何をするにもトロいから、3.579545MHzぐらいがいいよ。
153774ワット発電中さん:2006/05/02(火) 09:55:03 ID:GDSXlfGt
MSXかよ
154774ワット発電中さん:2006/05/05(金) 02:10:48 ID:h4kisgFU
カラーNTSCで遊べていいね!w
155774ワット発電中さん:2006/05/11(木) 01:39:00 ID:CHYQ674N
VHDLでDDRメモリのアクセスモジュールを作っているんですが、
ModelSimで使えるDDRメモリのモジュールってどこかにありますか???
自分で作れる自信はない・・・(・ω・`)
156774ワット発電中さん:2006/05/11(木) 04:25:34 ID:8fBaPQDb
ビヘイビアモデルでいいならメモリメーカのサイトを探せば見つかる
157774ワット発電中さん:2006/05/11(木) 17:00:13 ID:CHYQ674N
>>156
ビヘイビアモデルってIBISとかいうやつでしょうか?
なんかmicronのサイトでverilogのシミュレーションモデルは見つかったんですが、
VHDLで記述したロジックと連結することでけるのかな・・・。
158774ワット発電中さん:2006/05/11(木) 17:49:23 ID:LUWQVGnD
>>157
ModelSimのライセンスがVerilogとVHDL両方あれば
混在Simはできる
159774ワット発電中さん:2006/05/11(木) 20:41:16 ID:SZ+SusEq
>>157
>ビヘイビアモデルってIBISとかいうやつでしょうか?
違う。それは伝送モデル

160774ワット発電中さん:2006/05/11(木) 22:01:07 ID:4yna1kw3
>>155
ところで、なぜDDRにしたの?
特に制約がないのならば、DDR2の方がお奨め。
値段も今はそんなに違わないし、何よりもDDR2には
Posted CASがあるので設計が圧倒的に楽。
161774ワット発電中さん:2006/05/14(日) 04:02:18 ID:J9gzpDPA
DDRがいっぱい余ってるから
162774ワット発電中さん:2006/05/15(月) 10:49:53 ID:BeMBMa81
ダンスダンスレボリューション
163774ワット発電中さん:2006/05/17(水) 03:27:41 ID:oh4nyVmz
モバイルDDRを使いたいから…とか。
164774ワット発電中さん:2006/05/18(木) 12:35:40 ID:LrwD4vn2
あれ、DDRとDDR2って同じコネクタにさせるんだっけか?
165774ワット発電中さん:2006/05/20(土) 05:02:37 ID:R8kF5xfZ
×
166774ワット発電中さん:2006/05/24(水) 03:33:50 ID:zFdQma4V

Spatan3を、Xilinx ISE7.1で、Verilogで使っていますが、
一つ教えてください。

ピン出力をLVDSで使いたいのですが、どのように設定すればよいのでしょうか。
1. Verilog上で何かをインクルードみたいなことが必要?
2. ソースは特に何もせずに、PACE上でUCFに何か設定をする?
3. そのほかどこかに設定する箇所がある....とか
宜しくお願いします。

167774ワット発電中さん:2006/05/24(水) 19:33:47 ID:q2iElWzM
英文のヘルプをググレば記述例がでてくる
168774ワット発電中さん:2006/05/24(水) 22:49:04 ID:ULb0vqU1
情報収集はdesign waveだけで十分かな?w
169774ワット発電中さん:2006/05/24(水) 23:41:59 ID:13A32BWP
とら技についてきたおまけをようやく開けてVHDLの勉強し始めたものです。

すごくくだらない質問なのですが、
a vector(7 downto 0)
b vector(3 downto 0)
とかの信号があったとして、
a <= '0' & b & "000";
とかってしますよね?
こういう時に使う ' ' と " " ってどういう風に意味が違うのでしょうか?
よろしくお願いします。
170774ワット発電中さん:2006/05/25(木) 03:28:21 ID:bQOkzRWA
言語仕様読んでから質問しろよ・・・
171774ワット発電中さん:2006/05/30(火) 09:36:54 ID:UR48H1KI
すいません。ちょっと質問させてくださいー。

entity DDR_3TOUT is Port(
 clk: IN std_logic;
 d0: IN std_logic;
 d1: IN std_logic;
 en0: IN std_logic;
 rst: IN std_logic;
 q: OUT std_logic
);
end DDR_3TOUT;

architecture RTL of DDR_3TOUT is
 signals_PWR : std_logic;
 signals_GND : std_logic;
 signalq_data :std_logic;
begin

 s_PWR <= '1';
 s_GND <= '0';

 U0_FDDRCPE : FDDRCPE
 port map(
  D0=>d0,
  d1=> D1,
  CE=>s_PWR,
  C0=>clk,
  C1=> not clk, --Error!
  CLR=>rst,
  PRE=> s_GND,
  Q=>q_data
 );

 q <= 'Z' when (en0= '1') else q_data after 2860 ps;

end RTL;

ModelSimでシミュレーションさせようとすると、not clkの部分で、
The actual for formal 'c1' is not a globally static expression.
というエラーが出てしまいます。

今まではこんなエラーでなかったと思うんですが、
ModelSimのバージョンを6.0dにアップしてから発生するようになりました。
何か仕様でも変わったんでしょうかねぇ。。
他にも今までOKだったものが同じ感じでエラーになってしまい
シミュレーションできなくなってしまいました。。
同じような症状の方いらっしゃいませんか??
172774ワット発電中さん:2006/05/30(火) 12:12:24 ID:u7dr2ZfU
うまくいくわけない気がするのは漏れだけ?
173774ワット発電中さん:2006/05/30(火) 13:34:54 ID:UR48H1KI
だめなんですかね??

ちなみにコレだと大丈夫でした。
C1=> "not" (clk)

あと、
generic map(
  DLL_FREQUENCY_MODE : string := "LOW";  -- error  near ":": expecting: ')' ','
  STARTUP_WAIT : boolean := TRUE  -- error  near ")": expecting: ';'
);
でもエラーが・・・。
論理合成は出来るのに、なんでシミュレータではだめなんだろう・・。う〜ん
174774ワット発電中さん:2006/05/30(火) 13:58:50 ID:UR48H1KI
あ、いや・・ごめんなさい。
generic mapについては書き方間違ってました。。

・・・なんでISEで論理合成できたんだろう
175774ワット発電中さん:2006/06/04(日) 16:13:08 ID:pVnshAqA
>>173
port mapになぜnotがある?

signal inv_clk;

begin
|
|
inv_clk <= not clk;

label :port map(
|
c1 <= inv_clk,

図形一筋で10年設計してきた、VHDLの2年生です。
まだまだHDLは未熟者です。XC3S1000、使用率80%
コメント以外でソースコード3万行の非同期回路設計&
合成をしたら、大分慣れました。図形のみで設計してきた
自分にはステートマシン以外は論理合成する前からどんな
回路になるかは分かる様にもなりました。ステートマシン
を多用して、階層が深過すきのとても読み辛い他人ソースを
モディファイしなければなりません。仕事なのでやるしかない
ですが・・・。
質問です、generate文ってステートマシン以外使いますでしょうか?
176774ワット発電中さん:2006/06/04(日) 16:15:03 ID:pVnshAqA
訂正 =>の向きが違った
label :port map(
|
c1 => inv_clk,
177774ワット発電中さん:2006/06/04(日) 19:07:49 ID:LwQFeQHA
初めて使うぞ

>>175
日本語でおk
178774ワット発電中さん:2006/06/06(火) 05:35:32 ID:sk2qFtDw
>>175
使えるけど、いろいろ面倒なこともあるので使わない。具体的に何があったかは
忘れた。

例えば同じブロックを数個インスタンスするのにfor generateでやったりできるけど、
同じモノを何度も書くのが面倒ってレベルだったらperlでHDL吐かせたりしてる。


非同期設計ってどんなんでしょ?ラッチ多用してボロー計算してって感じでしょうか?
179774ワット発電中さん:2006/06/13(火) 14:48:25 ID:UbYJgGu/
verilog pli/vpiのよさげな
書籍、サイトってありませんか。

なんかサンプルみたいなのが
見つからなくて。
180774ワット発電中さん:2006/06/16(金) 12:00:19 ID:QHKLEPAB
質問です。

まずこちらの画像を見ていただけますか?
ackが1の間だけ正しいdataが出力されている回路です。
http://sugachan.dip.jp/img/src/20060616115013.gif

このdataをレジスタに保存したいと思います。
そこで、Verilogで、

input clk;
input ack;
input [1:0] data;
reg [1:0] data_reg;

always @ (negedge clk) begin
 if (ack == 1'b1) begin
  data_reg <= data;
 end
 else begin
  data_reg <= data_reg;
 end
end

のように書いてみました。
クロックの立ち下がり時にackが1なら
dataをdata_regに取り込むように記述しました。

これで一応シミュレーションではウマく行くんですが、
クロックの立ち下がりを見て動作するような回路は問題ないのでしょうか?
しかも、他の部分についてはクロックの立ち上がりを見て動作しています・・・

また、この方法で駄目だとしたら、
他にどのような方法で
あるクロックの立ち上がりから次のクロックの立ち上がりまでしか
正当でないデータをレジスタに取り込めば良いのでしょうか?

よろしくお願いします。
181774ワット発電中さん:2006/06/16(金) 13:09:51 ID:5jKC/+ud
普通にnegedgeをposedgeにしてみたら?
182774ワット発電中さん:2006/06/16(金) 13:20:26 ID:QHKLEPAB
>>181
レスありがとうございます。
しかし、posedgeだとdataが変わる瞬間であるため、
きちんとデータを取り込めないと思うのですが。
183774ワット発電中さん:2006/06/16(金) 13:36:26 ID:5jKC/+ud
ackとdataを出力している回路もclkをクロック信号として動いてるんだと
考えてたんだけど違うの?
184774ワット発電中さん:2006/06/16(金) 13:42:00 ID:xCTHR1Fs
>>182

そのためにホールドタイムを取るのですよ。

ちなみに、なぜ
data_reg <= data;
であって
data_reg = data;
でないかは理解できていますか?

後者のような書き方をするとシミュレーションでもご指摘のようなことが起きます。
それを防ぐためのノンブロッキング代入なのです。
昔、まだ<=が使えなかった頃は
data_reg = #1 data;
のようにディレイを入れてシミュレーションしていました。
(年寄りの昔話ですが・・・・)


しかし、凄く冗長な書き方ですね。
私だったらこうするな。

always @ (negedge clk)
 if (ack ) data_reg <= data;
185180, 182:2006/06/16(金) 13:45:23 ID:QHKLEPAB
>>181
いま試してみたところ、
posedgeでうまくいきました。
すみませんでした。

いまから>>182以降のレスを読ませていただいて、
もう一度考えてみます。

みなさん、ありがとうございました。
186774ワット発電中さん:2006/06/16(金) 14:33:23 ID:xKN7HwTD
論理的なタイムチャート図と物理時間を考慮した波形図を混同している??
187774ワット発電中さん:2006/06/16(金) 15:17:10 ID:RxFtA2yv
ディレイゼロのシミュレーションをしているとハマリ易い。
188180, 182:2006/06/16(金) 19:32:34 ID:QHKLEPAB
丁寧な説明をしていただいたおかげで
何となく分かってきたような気がします。

ちょっと確認をお願いしたいのですが、

1.
 外部モジュールからの入力信号は、
 クロックの立上がりや立下がりより
 セットアップタイム時間分 早いタイミングで入って来ている。
2.
 内部のレジスタなどは、
 クロックの立上がりや立下がりより
 ホールタイム時間分 遅いタイミングで更新される。

・・・というような理解で良いんでしょうか?
また、このことは回路を記述する際に積極的に利用して良いものなんでしょうか?
なんかタイミング的に凄くシビアな感じがするんですが。
189774ワット発電中さん:2006/06/16(金) 23:37:05 ID:g24YCRu/
>>188
勝手に早かったり遅かったりしません。配線遅延などを計算して、必要に応じてディレイバッファを挿入します。
これは合成時に調整するものなので、RTLでは気にしません。
同期設計の場合はクロックとデータが同時に変化しているように見えてもクロックエッジに対してデータが
hold time以上遅れて到達するものとして考えます。
190774ワット発電中さん:2006/06/16(金) 23:42:46 ID:Fmo8Ad9q
ackがクロック同期してるかどうかって事を聞いてるんじゃまいか?
191774ワット発電中さん:2006/06/16(金) 23:56:11 ID:xKN7HwTD
理想的な完全同期回路ではすべてのFFが同じクロックに接続される
実際の回路でもゼロディレイバッファなどを使って理想に近い状況を作ることが可能
192180, 182:2006/06/17(土) 00:02:15 ID:ub7ai0cM
せっかく説明してもらってるのに
ぜんぜんおっしゃってる意味が理解出来ない俺がいる・・・

ダメポorz
193774ワット発電中さん:2006/06/17(土) 02:30:13 ID:jy5TxDzi
フリップフロップはクロックエッジに対して
 ・規定のセットアップ時間より前に入力データが確定しなければいけない。
 ・規定のホールド時間が過ぎるまで入力データは変化してはいけない。
という決まりがあるのです。

今話題になっているのはセットアップではなくホールドの方。

で、実際の回路にはディレイがあるのでホールド時間は確保できる、
と思うのは甘いです。クロックの方にはスキューがあるので、後段の
フリップフロップのクロックの方が遅いなんていう状態が普通に発生
します。この遅れがデーターの遅れより大きいとホールドタイム違反に
なるわけです。この場合、データのパスにディレイを入れて誤動作しない
ようにするのだけど、RTLの時点では関係ない話です。

って、文字だけで説明するのは難しいね。


>なんかタイミング的に凄くシビアな感じがするんですが。

タイミングはシビアですよ。だからパス解析をするのです。
パス解析でホールドタイム違反が出ないようにしないと
チップがまともに動くことは期待できません。


ところで、そもそもRTLを書いた後はどうしたいの?
194180, 182:2006/06/17(土) 05:29:39 ID:ub7ai0cM
おはようございます。

> フリップフロップはクロックエッジに対して
>  ・規定のセットアップ時間より前に入力データが確定しなければいけない。
>  ・規定のホールド時間が過ぎるまで入力データは変化してはいけない。
> という決まりがあるのです。

この点単体についてならば、
なんとか分かったような気がするんですが・・・

じゃあ結局、(どういう理由で)どういった風に考えて
どういうつもりでRTLを記述すれば良いのかが分かりません。

凄く丁寧に説明してもらってるのに・・・orz
また今夜、もう一度レスをじっくり読ませてもらって考えてみます。

> ところで、そもそもRTLを書いた後はどうしたいの?

実は学校でVerilogを勉強しているだけなので、
RTLを書いた後はありません。
195774ワット発電中さん:2006/06/17(土) 06:14:47 ID:Dj1ypl7Z
>>194
私も初心者ですが、、、以下の考え方で書いてます。、

以下、n番目のクロック(エッジからエッジの区間)における状態をstate(n)として、

state(n)の信号状態をstate(n-1)の信号状態を利用して
ノンブッキング代入で記述する。

同期回路のRTL書いているのであれば、あまりエッジ前後のFFのセットアップ
ホールドを気にしすぎる必要はないと思うのですが、、、
196774ワット発電中さん:2006/06/17(土) 10:11:04 ID:pBk7tXi2
>>194

ブロッキング代入文で生成されるD-F/F(フリップ・フロップ)の
DをDataと勘違いしたときによくはまるパターン。正解はDelayらしい。

ttp://www.hobby-elec.org/ckt10_6.htm
この辺りを読むと、D-F/Fの構造がなんとなくわかる。

ttp://www.semicon.toshiba.co.jp/td/ja/General_Purpose_Logic_ICs/One_Gate_CMOS/20011012_TC7W74FU_datasheet.pdf
これの「タイミング推奨動作条件」を読むと、クロックに対するホールド
時間より、出力遅延(CLOCK-Q,Q~)が長いことがわかる。

always @ (posedge clk)
 data <= ~data;

そうすると、この式が成り立つのがわかる。

あと、複数のレジスタを接続したときのクロックラインのスキュー(差)に
関しては、FPGAを使用するならグローバルクロックを使えばいいし、ASICなら
ツールで自動的に調整してくれるのであまりに気にする必要はなし。>>191 参照
197774ワット発電中さん:2006/06/17(土) 14:27:23 ID:I1MFuTUn
Quartus II 6.0になってからPins設定がやりにくくなったorz
まえはLocationのセル選択して「A10」とか打ち込むだけでよかったのに、
6.0になってからはそれができなくなった。
ほかの簡単な方法があるんですか?
198774ワット発電中さん:2006/06/17(土) 15:04:54 ID:RSRmo590
テキストエディタで編集
199774ワット発電中さん:2006/06/18(日) 14:57:22 ID:O87Oj50/
まず、以下を前提とした回路を想定する。
・Ack,DataはFF出力
・すべてのFFはCLKの立ち上がりで変化
・すべてのFFのCLKはまったく同じタイミングで入る

すると、こうなる。
|  ┌──┐  ┌──┐  ┏──┐  ┌──┐
|──┘  └──┘  └──┛  └──┘  └── CLK
|───┬─────┳━━━━━┳─────┬────
|───┴─────┻━━━━━┻─────┴──── DATA
|         ┏━━━━━┓
|─────────┛     ┗────────── ACK
|    配線遅延├┤    ↑このタイミングで取る
|
|───────────────┳━━━━━┳────
|───────────────┻━━━━━┻──── DATA_REG


だから、問題ない。(前提を満たしていればね)
200774ワット発電中さん:2006/06/18(日) 15:01:01 ID:O87Oj50/
ずれた。メモ帳で見てくれ。
201774ワット発電中さん:2006/06/19(月) 11:19:20 ID:UPUPwiyt
>>194

Verilog HDLでシミュレーションできればいいのであれば
皆さんが書いているように難しいことを考える必要はありません。

フリップフロップ(reg)は
 ・入力はクロック立ち上がり直前のデータを取り込む。
 ・出力はクロック立ち上がり直後に変化する。

これだけです。
ちゃんと動くようにするのは論理合成以降のお仕事なので
細かいタイミングは無視しましょう。
学生さんがRTLのお勉強をするならそれで十分です。
多少気持ち悪くても、そういう割り切りが必要です。
もっとも、実際の設計ではRTLの段階でも稀にホールド
タイムを考慮することもありますけどね。それは上級編の話。
202774ワット発電中さん:2006/06/20(火) 17:32:31 ID:V2LnoI06
論理回路の質問もここでしていいですか?
203774ワット発電中さん:2006/06/20(火) 17:42:21 ID:ulhm1uz7
204774ワット発電中さん:2006/06/25(日) 17:40:53 ID:ATYNdAeo
出た〜 プロセッサを設計する人は必読
http://www.cqpub.co.jp/hanbai/books/36/36151.htm
205774ワット発電中さん:2006/06/25(日) 18:14:12 ID:66ZSZ3+I

宣伝乙
206774ワット発電中さん:2006/06/25(日) 18:15:46 ID:66ZSZ3+I
207774ワット発電中さん:2006/06/26(月) 09:01:36 ID:yqOCuray
>>204 宣伝乙
でもな、プロセッサを設計する人は訳書でなく原書を読むべきだろ?
208774ワット発電中さん:2006/06/26(月) 09:04:46 ID:zUoRdhVa
CQの付録基板みてると本もだめだめかな!?と思ってしまうw
209774ワット発電中さん:2006/06/26(月) 09:10:15 ID:SgE0Yyvc
まずは設計者を検証する。
210774ワット発電中さん:2006/06/26(月) 10:29:22 ID:8UnAmvs1
>>204

設計と検証は別物だよ。
それに出たのはもう3ヶ月位前だよ。

この手の手法はリスピンを減らすためにはあまり役に立たないね。
ただ、駄目上司に「ここまでやってますから」と言うためには有効。
211774ワット発電中さん:2006/06/27(火) 23:37:44 ID:vAn7mFd5
みなさん、しょーもないことですが、教えてください。

Velilogを始めたのですが、always@( )のセンシティビィティーリスト内に
3つ書いたら、ISEが変なエラーを吐いてきました。本もあさってみたのですが
みーんな1つか2つしか書かれていません。
なぜ2つまでしか書かないのでしょうか?
3つとか4つとかorでくくって書いてはいけないのでしょうか?

例えば、こんな場合です。
A) OKというか、よくある例
always @( posedge clock or negedge reset) begin...
B) ISEが怒る例
always @( posedge clock or negedge reset or posedge SW) begin....
SWの↑変化でも非同期で処理をして欲しいのですが。

次に、宣言無しだとデフォルト32bitという話を聞いたのですが、
次のような書き方でもゲート数を無駄に食うでしょうか?
  reg [7:0] hoge;
    :
    :
  hoge <= 2;  という場合と、

  hoge <= 2'b10; という場合です。
どちらも先頭で[7:0]と定義してあり、8bit幅のレジスタなので、
代入時は2でも2'b10でも同じではないのかな?と思うんです。
どうでしょうか。宜しくお願いします。
212774ワット発電中さん:2006/06/28(水) 00:06:15 ID:wts0t08o
m9(^Д^)プギャーーーッ
213774ワット発電中さん:2006/06/28(水) 00:08:06 ID:je+ZUtLC
説明できないんだったら黙ってれば?w
214774ワット発電中さん:2006/06/28(水) 00:17:17 ID:x9GIQ2FG
m9(^Д^)プギャーーーッ
215774ワット発電中さん:2006/06/28(水) 01:04:56 ID:woQ1uOeA
>>211
Vipperだったここで

ちょwおまw

とか言っておきゃいいんだろうなあと思わせるような質問ですね。
216 ↑ 日本語でおk:2006/06/28(水) 01:13:43 ID:pw0Al4EH
 
217774ワット発電中さん:2006/06/28(水) 01:25:39 ID:/aQbPTyK
>>211
ISEのエラーを読んでみたらいかがでしょう。
回路を知ってる人はそういう書き方はしないと思います。

ゲート数のほうは、両方の記述のレポートを比較すればわかります。
218774ワット発電中さん:2006/06/28(水) 17:26:01 ID:gtWgGREE
>>211

ターゲットデバイスが何だかわからないが・・・
Vertex-4のユーザーズガイドを見るとSRとREVを使って
非同期セット/リセット付きフリップフロップを実現
できるみたいなので、問題はセンシビリティリストじゃ
なくて、論理の記述にあるんじゃないか?
SWと他の信号で論理を組んでいるとか?

ただ、同期回路では一般的には非同期のセットとリセットを
同時に使うことはないけどね。
219774ワット発電中さん:2006/06/28(水) 20:22:39 ID:but7NUk0
ま、「変なエラー」って時点で
220 ↑ 日本語でおk:2006/06/28(水) 22:17:06 ID:UMM4RYcv
 
221774ワット発電中さん:2006/06/29(木) 17:53:44 ID:s1E7akd0
質問させてください。
SDRAMのシミュレーションモデルをVHDL作ってみようとしているのですが、
最初のデータ宣言すらわかりません。
カラム100、ロウ100、データ16ビットはどのように宣言すればいいのでしょうか
222774ワット発電中さん:2006/06/29(木) 18:12:31 ID:6hxmYQTV
ググってSDRAMのモデルをみつける
拾ってきたモデルがどうしてるか見ればOK
ちゃんと努力すること
223774ワット発電中さん:2006/06/30(金) 02:41:56 ID:pG3fa+p0
最初のデータ宣言すらわからないなら、SDRAMのシミュレーションモデルなんて
夢のまた夢だから作ってみようとすることをやめればいいと思うな。
224774ワット発電中さん:2006/06/30(金) 03:48:48 ID:x3KGZwY/
225774ワット発電中さん:2006/06/30(金) 10:13:26 ID:WmOcuiJX
>>211
ライブラリに非同期2系統のものがないからテクノロジマッピングに
失敗するんだろ。
もしあれば成功はする、けどASICとかもそうだが普通はない。
1系統なら必ずある
そういうテクノロジに依存した記述はNG
226774ワット発電中さん:2006/06/30(金) 11:38:05 ID:iFzd0/k7
>>221

目的は何?
シミュレーションモデルというのは一般に外から見て本物と同じように動けばok。
でも、「カラム100、ロウ100、データ16ビット」ってSDRAM内部の構造を忠実に再現しようとしているよね?
227774ワット発電中さん:2006/07/01(土) 00:02:25 ID:eF5AE7is
レジスタ10000個で・・・
228774ワット発電中さん:2006/07/03(月) 19:12:58 ID:1JhJr9Ni
わざわざ作らんでも、
SDRAMのHDLシミュレーションモデルならMicronあたり探せばいくらでもあるがな。

229774ワット発電中さん:2006/07/03(月) 19:17:32 ID:pfJR528r
メーカにゴォラーって言えばOK!!
230774ワット発電中さん:2006/07/03(月) 20:56:45 ID:FA/ZC8Gv
verilogの話なんですが、
function文でもalways文でも
組み合わせ回路を書けるのは何でですかね?
231774ワット発電中さん:2006/07/03(月) 22:25:12 ID:+g92x2mW
alwaysで順序回路を書いたつもりが
状態が1個しかなくて組合せ回路と等価になってしまっただけでは?
232774ワット発電中さん:2006/07/03(月) 23:47:40 ID:QNV+lEfz
そりゃ、functionをぽこぽこ置けた方が記述が楽だからじゃないの。
合成後の回路を考えずに乱用すると痛い目に会うけどね。
そんなRTLを押し付けられた人が…orz
233774ワット発電中さん:2006/07/05(水) 17:20:48 ID:9OJN9PFs
VHDLって何のために存在しているんだろう。
はっきり言って糞以下。ゴミ言語だと思うんだが・・・
早くこの世から消えて欲しい。
234 ↑ 日本語でおk:2006/07/05(水) 18:31:07 ID:dm07PjPF
 
235774ワット発電中さん:2006/07/05(水) 19:09:34 ID:9OJN9PFs
馬鹿の一つ覚え。
「↑ 日本語でおk」の繰り返し乙。
236774ワット発電中さん:2006/07/12(水) 00:11:32 ID:dAz9bMeP
ハイインピーダンスってものが調べてみてもいまいち
つかみきれないんですけど、教えてくれませんか?
237774ワット発電中さん:2006/07/12(水) 00:23:49 ID:IPdWLblU
電流が流れていない状態のこと。

以上。
238774ワット発電中さん:2006/07/12(水) 00:48:43 ID:U57ltQzr
>>237
> 電流が流れていない状態のこと。
かなり違うんジャマイカ
239774ワット発電中さん:2006/07/12(水) 01:41:38 ID:Db4rInbn
回路から切り離された状態のこと
ttp://www.ics.kagoshima-u.ac.jp/edu/expII1/no3/design-block.html
240774ワット発電中さん:2006/07/12(水) 01:42:00 ID:n+EChfVv
「流れていない状態」だと、ショートしてても給電されてなきゃ該当してしまうよ。

電流が「流れれない」状態でねえの。
241774ワット発電中さん:2006/07/12(水) 05:51:27 ID:zQi4DoiF
TrやFETによってドライブされていない状態
242774ワット発電中さん:2006/07/12(水) 05:52:45 ID:CUEA3BHg
「入出力インピーダンスが高い状態」以外のナニモノでもないだろ?
これがわからなければ足洗った方が良い
243774ワット発電中さん:2006/07/13(木) 00:58:13 ID:t0+oqmcE
物理的には繋がっているが電気的には繋がっていない状態
244774ワット発電中さん:2006/07/13(木) 01:01:31 ID:ozv7aVsG
VHDLに関する質問です。

architecture ARCHITECURE_NAME of ENTITY_NAME is
(略)

のARCHITECURE_NAME部分についてですが、
下位モジュールをインスタンス化して使うときにはStructure
そうじゃないときはRTL
テストベンチのときはStimulus
という認識であってますか?

また、このARCHITECURE_NAME部分は、
可読性を上げるためだけに書いてるんでしょうか?
StructureだろうがRTLだろうが
シミュレーションはうまく動いてるんですよねえ・・・
245774ワット発電中さん:2006/07/13(木) 02:01:50 ID:uP/u8ZOm
>>244
何でもいい、変数名みたいなもので動作には関係ない
246 to:sage:2006/07/13(木) 02:04:44 ID:VHpgcMqY
みんな、カッコいい…
247774ワット発電中さん:2006/07/13(木) 06:46:26 ID:ozv7aVsG
>>245
そうでしたか。
ありがとうございました!
248774ワット発電中さん:2006/07/13(木) 19:02:10 ID:bA0ojXER
>>244
ひとつのentityに対して複数のarchitectureがあるとき、
上位からARCHITECURE_NAMEを指定して選べたような気がする。
249774ワット発電中さん:2006/07/16(日) 18:33:31 ID:u9AyN69j
>>248
それはconfigな。
250774ワット発電中さん:2006/07/22(土) 21:07:20 ID:oKxb9yzh
icarus verilogの公式が落ちてるようだが
公開停止ってことは無いよな?(゚Д゚)
251774ワット発電中さん:2006/07/22(土) 23:59:12 ID:oCF1QD1l
>>250
cverでいいじゃん。pliも使えるし。
252774ワット発電中さん:2006/07/23(日) 01:19:48 ID:9LPMsOcK
cverか・・・
確かに、オープンソースの方が公開停止
になる可能性が低い分だけ安心だよなあ。
個人のフリーソフトなんていつ停止するか常にガクガクブルブルだ。
253774ワット発電中さん:2006/07/23(日) 01:31:30 ID:mFC5W+x0
>>250
普通につながるけど…
おれが見てるとこ、違うのかな!?
254774ワット発電中さん:2006/07/23(日) 01:32:40 ID:9LPMsOcK
>>253
もう、復旧してるっぽ。
一時的に落ちたか、鯖メンテなだけだったっぽい。
255774ワット発電中さん:2006/07/25(火) 01:29:44 ID:vMIE7VuM
この言語とC言語との違いを3つおしえてくれ
256774ワット発電中さん:2006/07/25(火) 02:20:32 ID:dEiNj2zj
日本語と英語とフランス語の違いと同じだよ
ほとんど一緒
257774ワット発電中さん:2006/07/25(火) 09:19:00 ID:BSt/G/gL
根本的にシーケンサか並列処理かの違い
258774ワット発電中さん:2006/07/25(火) 18:02:31 ID:CBjzm3c/
テクノロジマッピングまで可能なフリーの合成ツールある?
259774ワット発電中さん:2006/07/26(水) 21:43:34 ID:+GNIHNwu
>>3
じゃだめ?
260774ワット発電中さん:2006/07/26(水) 21:49:49 ID:+GNIHNwu
sfl(PARTHENON)とかどうなんだろう
261258:2006/07/26(水) 22:51:27 ID:i+cBTBAy
PARTHENONはフリーじゃないことない?
いろいろ探し回ったんだけど、フリーでどうにかするって無謀だったかも。

ちょっと癖のあるデバイス向けに合成する必要があったので。
フィット以降は自力でやるつもりだった。
在野の論文をもとに自ら実装するしかないかなあ。



あるいは手動で(笑
262774ワット発電中さん:2006/07/27(木) 01:03:03 ID:fGYX5lRR
昔のトラ技にParthenonで書かれた6502が載っていた。
1994年7月号
263774ワット発電中さん:2006/07/27(木) 03:19:40 ID:xChzKjr7
PANTHEONはクラッカー
264774ワット発電中さん:2006/07/27(木) 20:00:07 ID:SEXs5n2z
すみません、、教えてください。お願いします。どこをどーすればよいやら。。。

やりたいことは、CIOと名付けた双方向のバスにAinpの値を出力してやったり、
Boupにバスの値を与えたいのです、、、、
どーやってもシュミレーションで不定になってしまいます。
3ヶ月ほどちまちまやってましたが、わからずじまいです。
おねがいします。

www.seibu-kg.pref.hiroshima.jp/kensyu/fpga/buff_hd.html
こういうのとは違うと思うのです。


library ieee;
use ieee.std_logic_1164.all;

entity buff is
port(
oe, clk, rs : in std_logic;
Ainp : in std_logic_vector (7 downto 0);
Boup : out std_logic_vector (7 downto 0);
CIO : inout std_logic_vector (7 downto 0)
);
end buff;

architecture buff_body of buff is
begin
process (clk, oe, rs) begin

if rs ='0' then
CIO <= (others => '0');
end if;

if oe='1' then -- in
CIO <= Ainp;
else -- out
Boup <= CIO;
end if;

end process;
end buff_body;

265774ワット発電中さん:2006/07/27(木) 21:36:58 ID:LqfXFHrk
>>264
なにをしたいのか理解に苦しむが、こういうことをしたいのかな?
process (clk) begin
  if (clk'event and clk='1') then
    if rs ='0' then CIO <= (others => '0');
    elsif oe='1'then CIO <= Ainp;
    else Boup <= CIO;
    end if;
  end if;
end process;
266774ワット発電中さん:2006/07/27(木) 21:56:20 ID:LqfXFHrk
チト違うか。リセット時のBoupの不定もついでに消して。
process (clk) begin
  if (clk'event and clk='1') then
    if rs ='0' then CIO <= (others => '0'); Boup <= (others => '0');
    elsif oe='1'then CIO <= Ainp;
    else CIO <= 'Z'; Boup <= CIO;
    end if;
  end if;
end process;

BoupがCIO出力時もダダ漏れでもよければこうか?
process (clk) begin
  if (clk'event and clk='1') then
    if rs ='0' then CIO <= (others => '0');
    elsif oe='1'then CIO <= Ainp;
    else CIO <= 'Z';
    end if;
  end if;
end process;
Boup <= CIO;

特にclkで叩く必要なければこうか?
process (oe,Ainp) begin
  if oe='1'then CIO <= Ainp;
  else CIO <= 'Z';
  end if;
end process;
Boup <= CIO;
267774ワット発電中さん:2006/07/28(金) 00:42:01 ID:I8N/aESD
>265-266
回答ありがとうございます!ただ家のPCではできないので、明日やってみます。

何がやりたいかってのは、、、なんて説明したらよいのでしょうか。。。
DigitalIOボードの入出力とFPGAのinoutを結んで、IOボードで、FPGAの先の回路を
動かそうとしてます。
だからCIO = DigitalIOボード、Ainp = Dinputしたい、 Boup = Doutputしたい
みたいなかんじです。rsは非同期リセットです。

明日ダメだったらまた一週間後になります。。。。
268774ワット発電中さん:2006/07/28(金) 07:45:09 ID:3VrbqheJ
双方向I/Oは入力時にはHiZになってないといけないことが理解できてない??
269774ワット発電中さん:2006/07/28(金) 20:31:39 ID:53bS8WLI
CIO <= x"00" when rs='0' else -- こうやりたそうな雰囲気なので
     Ainp when rs='1' and oe='1' else
     (others=>'Z');
Boup <= CIO when rs='1' and oe='0' else
     (others=>'0');
270774ワット発電中さん:2006/07/31(月) 08:57:16 ID:tswBEMFa
Verilog-AとVerilog-AMSって別物ですか?
なんか急にVerilog-Aについて勉強しなきゃならなくなったんですが、
図書館にはVerilog-AMSの本しかないんです・・・

普段デジタルしかやってないのに
急にアナログ回路のHDL記述の勉強をはじめてすぐに理解出来るのか不安なんですが、
なにかおすすめの書籍があったら教えてくれませんか?
271774ワット発電中さん:2006/08/06(日) 02:40:55 ID:kzkpu7eQ
土日プログラマーですが、質問させてください。
今日「階層構造の記述」を勉強しました。要は、module内に他のmoduleを組み込むことです。
手元の本のソースをそのまま入力してコンパイルしたのですが、エラーで止まってしまいます。
どのようにしたらOKになって.bitの生成まで行けるのかが知りたいです。
module top ( ck,....)  // topモジュールを書く。
 :
FF FF1 ( .ck(ck), .d(d), ......); // 下位モジュールを呼び出す
 :
endmodule

module FF ( ck,....)  // 呼ばれるモジュール FF を書く。
 :
endmodule
試したことは、
1) 1つのファイルtop.vに、topモジュールだけを書いて
  もう一つ別のファイルFF.vに呼び出されるモジュールを書いて、topと同じフォルダにセーブ。そしてコンパイル。
  XSTはOK出ますがTranslateでエラー。FFが見あたらないよ、という内容。
2) では、FF.vをtopの中にインクルードしてコンパイル。XSTの段階ですでにエラー。
どの本を見ても、呼び出されるモジュールの置き場所について特に書かれていないのです。
どこに置けばOKが通るものなのでしょうか? いろいろですみません。 宜しくお願いします
272774ワット発電中さん:2006/08/06(日) 08:33:28 ID:zLZS/2B7
・top.vとFF.vを完全に晒した方が良い
・コンパイルに使用したソフトの具体的な名前を書いた方が良い

・・・と思いますよ。

俺は、あまりFPGAに焼くところまでやらないし、
よくて論理合成までって感じなんだけど、
コンパイルがどうのってことは、
>>271はFPGAに焼く用のファイルを作ろうとしてるのかなあ?
単純にソフトにそれらのファイルが登録されてないだけって気がしたりしなかったり。



ところで、Verilog-AMS使ったことある人は皆無?
ひょっとして、もう使われる見込みの無い、死に行く定めの言語?
273774ワット発電中さん:2006/08/06(日) 12:56:10 ID:IL/WhxRP
> ・コンパイルに使用したソフト
XSTといっているから、ISEを使っていると思う。

ISEだと、ファイルを追加しないとだめだよ。
274774ワット発電中さん:2006/08/09(水) 04:17:24 ID:rEJt1hrG
271です。
コメントありがとうございます。
>>272
コンパイラ(って呼ぶのでしょうか)は、ISE8.2です。
>>273
そうなんです。その「ファイルの追加」という行為は、いったいどのようにすれば良いのか
さっぱりわからないんです。>>272でも書きましたが、
・1つのソースファイル内にそれら2つのモジュールを書いてみましたが、でめでした。
  当然ですが、`includeもだめでした。
・1つのホルダの中にtop.vとFF.vのファイルを置き、top.vをコンパイル→だめです。
雰囲気的に、ISEの左上のウインドーの中にあればよいと思っています。
ucfファイルのように、何かから┗型の線で結ばれたもののような気がしますが
デバイス名、top.v、その他どれにくっつければ良いかわかりません。
何かツールの使い方がわかっていないような気がします。
このあたりの使い方を説明したものは、どこかにあるのでしょうか?
ザイリンクスのページにも行ってみましたが、探し切れませんでした。
みなさんはどのようにして覚えたのでしょうか? ツールをスイスイ使える人って尊敬してしまいます。

よろしくお願いします。
275774ワット発電中さん:2006/08/09(水) 04:35:28 ID:wKpDsdEg
>>274
WindowsベースのEDAソフトは使ったことないんで
参考にならないだろうけど、組み込み系の
ソフトウェア開発環境なんかでは
Project Managerみたいな名前のメニューがあって、
そこでソースプログラムを登録するようになってる。

(そのソフトがTclをサポートしてるなら、set search_pathやら
read_fileやらするのが楽かもしれないけど、まあ、Tclなんて
サポートしてるとは思えないw)。
276774ワット発電中さん:2006/08/15(火) 00:21:20 ID:dNAd9B4p
>>271です。
コメントありがとうございました。ご回答がおそくなってすみません。
教えて頂いた内容をもとに 今日1日いろいろ試して
やって、やっとコンパイルが通るようになりました。
ありがとうございました。ソースは以下のような内容です。
練習ですので、中身に意味はありません。
調子に乗って、Spatanの中のブロックRAMも使ってみたいと思っています。
ありがとうございました。

module MUX2( in_clock, sel, a, b, out_result );
  input in_clock;
  input sel, a, b;
  output out_result;
  reg out_result;

  inv g1(sel, selb);
  aoi g2(sel, a, selb, b, fb );
  inv g3(.a(fb), .f(f) );

  always @( posedge in_clock ) begin
    out_result <= f;
  end
endmodule

module aoi (a,b,c,d,f);
  input a,b,c,d;
  output f;

  assign f = ~((a&b)|(c&d));
endmodule

module inv(a,f);
  input a;
  output f;

  assign f= ~a;
endmodule
277774ワット発電中さん:2006/08/17(木) 03:38:30 ID:Ml4KFWqu

Verilogで、
always @ (posedge clk) begin
  count <= count + 1;
  if(count == 5) begin
   :
  end
end

とするのと、

always @ (posedge clk) begin
  if(count == 5) begin
   :
  end
  count <= count + 1;
end
とでは、何か違いがあるでしょうか?
ぼくの理解では、 <= は次回のクロックの時のデータ準備なので、
どちらも同じだと思うのですが。どうでしょうか?

278774ワット発電中さん:2006/08/17(木) 07:56:25 ID:YBqIA5cR
同じだろ・・・何処からどう見たって。
279774ワット発電中さん:2006/08/17(木) 14:53:21 ID:RPDgl/PK
同じだけどさぁ、カウンターってステートマシンの一種なわけよ。
んで、if文はそれをデコードしているのね。
ステートマシンとデコーダが同じalways文になっているというのはあまり関心しないな、ワシは。
280774ワット発電中さん:2006/08/17(木) 16:34:06 ID:4O2v8y3U
>>277
どちらにしても全く問題ないよ

>ステートマシンとデコーダが同じalways文になっているというのはあまり関心しないな、ワシは。
こういうやつっているんだな。
デコーダであってもステートマシンですが何か?ステートマシンの意味も理解してないと思ったら、

>カウンターってステートマシンの一種なわけよ。

技術用語の表記の仕方も知らんようで。
281774ワット発電中さん:2006/08/17(木) 17:17:09 ID:P1rqiOt0
>>277
昔なら always を分けろと言っただろうけど、今時のツールなら問題ないかと。
大昔は、ツールのバグが出にくい記述方法というのがノウハウだった(w
282 ↑ 日本語でおk:2006/08/17(木) 22:48:44 ID:b6ko5TdH
283774ワット発電中さん:2006/08/20(日) 05:31:05 ID:KS3oWGzU

ちなみに、同じソースをアルテラとザイリンクスのツールでコンパイルすると
どっちが お利口さんでしょうか。
284774ワット発電中さん:2006/08/20(日) 07:42:57 ID:Sf/bCrw/
生成されるゲート回路なんていちいち見ないから分からんなあ・・・
スライス数とかでは単純に比較できないし・・・
動作周波数とかだったら比較できるんですかねえ・・・
285774ワット発電中さん:2006/08/20(日) 12:01:57 ID:Tkxt8aLo
>>283
その比較は意味ないでしょ。ターゲットデバイスで使えるコンパイラ決まってるわけだし。
Symplfyみたいな汎用コンパイラとベンダのコンパイラを比較するなら意味あるけど。
286774ワット発電中さん:2006/08/24(木) 23:08:32 ID:p4JaD6Hl
>>277
関係ないけど、

>ぼくの理解では、 <= は次回のクロックの時のデータ準備なので、
<=って今回のクロックまでにデータを準備しときました、すぐラッチしやがれ、ってタイミングだと私は思う。
シミュレータとしては、clkが来たら0nsで右辺とかif文を評価して、0ns経過後に<=を実行する、っていうイメージだと思う。


DWM買ってVerilogかじってみたんだけど、VerilogってC言語みたいに洗練されてる感が感じられないんですが、みなさんどうなんでしょう?
もっと組み合わせ回路と順序回路をいっしょに書けた方が楽そうな気がするし、どうみてもつぎはぎ文法に見えるし。
287774ワット発電中さん:2006/08/25(金) 22:30:35 ID:oYFeaT5Y
コンパイラ次第
288774ワット発電中さん:2006/08/26(土) 00:10:56 ID:M73CNf5P
>>286
洗練されてる感って何?
例えばどんな風に書きたいの?
289774ワット発電中さん:2006/08/26(土) 14:14:47 ID:QJRK9ZgY
>>288
main( clock clk, reset !rst, input clk2, output[7:0]out )
// この関数内のD-FFのクロックはposedge clkになる。
// いちいちalways文を書かなくて良い。
{
 reg[7:0] data=0, status=0, a;   // rstがloになったら非同期クリア
 sub sub1( input clk, rst, load_a, [7:0]in, output[7:0]out1 );
             // これでload_aとinとout1のwireが宣言できる。
 sub sub2( input clk, rst, 0, 8'hx, );

// ブロッキング・ノンブロッキング代入が分かりづらい。
// reg宣言した変数はD-FFの出力端子である、としてregへの代入は必ず<=、
// wireへの代入は= を書かなければエラーにすることにしたい。

 if( ++status == 100 )  // regなら +1値を <=代入。wireなら =代入。
  status = 0;

 load_a = 0;
 case(status){
 0:            // begin end不要
  load_a = 1;    // 二回代入したら最後の代入を有効とする(<=も)。
  in = data - 1;   // status != 0のときはinは 8'hxになる。
  data <= out1;  // 組み合わせ回路と順序回路を一緒に書ける
 3:
  sub sub2( , , 1, data, out ); // こういう書き方も見通しがよいかも。
 }          // status != 3 のときのoutは8'hxになる。
 sync( !clk2 ){   // この中のD-FFのクロックはnegedge clk2になる。
  a -= 2;
 }
}
290774ワット発電中さん:2006/08/26(土) 15:41:44 ID:M73CNf5P
>>289
まさかここまでちゃんとレスしてくれるとは!ありがとう!
でも洗練されている様には見えないんだけれど。。。
かえって分かりづらい。

欲を言えば、
「Verilogで書くとこうだが、
>>289案だとこう書ける」
みたいな例が欲しいなあ。
291774ワット発電中さん:2006/08/26(土) 22:57:45 ID:0VZSC4ne
>>290
例として適切ではなかったかもしれませんが>>289をverilogで書くとこうです。
まず、行数が長いですね。

module main( input clk, rst, clk2, output[7:0]out );
 reg[7:0] data, status, a;
 reg load_a, load_b;  // always文で組み合わせ回路を書くためreg。
 wire [7:0] in, out1;  // モジュール呼び出しの引数
        // (どこでどのように使う変数かは追わないと分からない)

 always @( posedge clk, negedge rst ) begin // 順序回路
  if( !rst ) begin   // リセットもいちいち記述しなければならない。
   status <= 0;
   data <= 0;
  end
  else begin
   if( status == 99 )
    status <= 0;
   else
    status <= status + 1;  // ここでようやく +1していることが判明

   case(status) begin  // このcaseだけ見ると意味不明なので、
   0: data <= out1;   // 下の組み合わせ回路のcaseと一緒に書きたい
   end
  end
 end

 always @* begin  // 組み合わせ回路(順序回路と一緒に書けない)
  load_a = 0;
  load_b = 0;
  in = 8'hx;
  in2 = 8'hx;
  case(status) begin
  0: begin     // begin endなんて書かなくたって一意にきまるのに…
   load_a = 1;
   in = data - 1;
  end
  3: begin
   load_b = 1;
   in2 = data;
  end
 end

 always @( negedge clk2 ) // 違うクロックを使うときは
   a -= 2;       // >>289ではsyncを使う

 sub sub1( clk, rst, load_a, in, out1 );
 sub sub2( clk, rst, load_b, in, out );
endmodule
292sage:2006/08/26(土) 22:58:56 ID:tLnM2qcu
そもそもC言語自体が洗練されているとは思えないからな。
293774ワット発電中さん:2006/08/26(土) 23:31:45 ID:M73CNf5P
思ったのは、
「なんかコーディングスタイルが変じゃね?」
ってことと、
>>291が求めているのは
RTL記述できる言語じゃなくて
動作記述できる言語なのかな」
ってこと。

>>292
同意。
294774ワット発電中さん:2006/08/27(日) 00:00:02 ID:M73CNf5P
↑みたいなことしか言えんでごめんね。
295774ワット発電中さん:2006/08/27(日) 00:03:42 ID:x3AUHHFW
気に入らないなら俺言語策定して
Verilog へのトランスレータ作ればいいのでは?
296774ワット発電中さん:2006/08/27(日) 00:12:18 ID:oXhM5/PP
ああ、確かに。
Verilogへ変換、なら、
論理合成だって出来るしなあ。
297774ワット発電中さん:2006/08/27(日) 01:00:25 ID:i19/mEwY
見た目のスタイルに拘ったコンパイラってないね。
パッと見てわかりやすくて、パッと見てカッコイイ言語とか。
298774ワット発電中さん:2006/08/27(日) 01:26:16 ID:M51wPKW6
見た目やスタイルを決めるのはコンパイラじゃなくて言語仕様だからな。
299774ワット発電中さん:2006/08/27(日) 02:56:19 ID:48lJfX/v
コンフィグレーションデータを直打ち
300774ワット発電中さん:2006/08/27(日) 09:52:25 ID:k4EG770E
こういう言語やってると英語圏の国に生まれたかったといつも思う。
301774ワット発電中さん:2006/08/27(日) 10:05:03 ID:cxs0E7VK
せめて各言語でもう少し文法を統一してほしかったw
302774ワット発電中さん:2006/08/27(日) 12:15:41 ID:oXhM5/PP
わかるわかる。
でもそれだと、言語が複数存在する意味が無いような。。。
303774ワット発電中さん:2006/08/27(日) 12:59:16 ID:cxs0E7VK
固有のキーワード関連はそのままで、かぶってる
キーワード関連だけでもw
304774ワット発電中さん:2006/08/27(日) 21:44:50 ID:oXhM5/PP
>>291を見て、なんだろうこの記述は?ってところが何か所か合ったんだけれど、
それらはすべてVerilog-2001で追加されたものだったんですねえ。。。
古い参考書で勉強してそのまんまにしておくと、
せっかくの便利な記述を使えないままになっちゃうんだな。
305774ワット発電中さん:2006/08/28(月) 01:16:32 ID:OzZNozRz
訓練次第ではヒューズマップを直にかけるようになるかも知れん
306774ワット発電中さん:2006/08/28(月) 18:52:22 ID:poDzy9ss
>>300
もし自分が英語圏生まれでこの記述みたら、もっと違和感感じないかな〜。
昔、日本語BASICっての見た事あるけど俺は凄く気持ち悪かったぞ。
日本語Verilogを想像してみ。使いたいと思うかな?
他国語の方が、一種の演算子として捉えられるから楽かもしれんよ。
307774ワット発電中さん:2006/08/28(月) 19:45:10 ID:hn1EtT8D
塊 主( 入 拍子, 再始動, 拍子2, 出[7:0]出力 );
 保持[7:0] 情報, 状態, イ;
 保持 読み出し_イ, 読み出し_ロ;  // 常に文で組み合わせ回路を書くため保持。
 接続 [7:0] 入力, 出力1;  // モジュール呼び出しの引数
        // (どこでどのように使う変数かは追わないと分からない)

 常に 於( 正縁 拍子, 負縁 再始動 ) 始 // 順序回路
  もし( !再始動 ) 始   // リセットもいちいち記述しなければならない。
   状態 <= 0;
   情報 <= 0;
  終
  さもなければ 始
   もし( 状態 == 99 )
    状態 <= 0;
   さもなければ
    状態 <= 状態 + 1;  // ここでようやく +1していることが判明

   場合分け(状態) 始  // この場合分けだけ見ると意味不明なので、
   0: 情報 <= 出力1;   // 下の組み合わせ回路の場合分けと一緒に書きたい
   終
  終
 終

 常に 於* 始  // 組み合わせ回路(順序回路と一緒に書けない)
  読み出し_イ = 0;
  読み出し_ロ = 0;
  入力 = 8'hx;
  入力2 = 8'hx;
  場合分け(状態) 始
  0: 始     // 始 終なんて書かなくたって一意にきまるのに…
   読み出し_イ = 1;
   入力 = 情報 - 1;
  終
  3: 始
   読み出し_ロ = 1;
   入力2 = 情報;
  終
 終

 常に 於( 負縁 拍子2 ) // 違うクロックを使うときは
   イ -= 2;       // >>289ではsyncを使う

 副 副1( 拍子, 再始動, 読み出し_イ, 入力, 出力1 );
 副 副2( 拍子, 再始動, 読み出し_ロ, 入力, 出力 );
終塊
308774ワット発電中さん:2006/08/28(月) 19:51:03 ID:OzZNozRz
FEPが無い環境じゃコーディングできないだろw
309774ワット発電中さん:2006/08/28(月) 19:56:32 ID:gF+yVcZc
>>307もっと徹底したらどうか
= -> 「代入」
<= -> 「転記」
- 1 -> 「1 減ずる」
- 1 -> 「1 加える」 とかとか


コンパイル「翻訳」のメッセージは英文のみだったりしてなw
310774ワット発電中さん:2006/08/28(月) 20:28:50 ID:ChcLjneb
>>300
英語圏の人は単語を形でとらえている。漢字と同じ。
311774ワット発電中さん:2006/08/28(月) 22:09:54 ID:nNivNRRp
意外と変数名だけ日本語にできれば十分かも。
312774ワット発電中さん:2006/08/29(火) 19:32:29 ID:aDtmHUBr
読み出し
読みだし
読出
読み込み
とかで、文法誤りがたくさん出そうだ。
313306:2006/08/29(火) 20:23:02 ID:kqsxApHF
>>307 ・・・・・・・・・・ (゚Д゚;)
ま、とりあえず俺の脳内イメージを具現化して頂いた事を感謝しておく。乙!
「塊 主( 」はgoodな訳ですね。

>>312
だからー、母国語だといろんな言い回し知っててダメなんだよ。
知らない国の言葉のほうがコーディングしやすいと思う。
中国語Verilogとかあったら、日本人はコーディングしやすいかもよ〜。藁
314774ワット発電中さん:2006/08/29(火) 23:35:38 ID:tHSRsGMA

しかし、VerilogってCに似てるのはいいけど、begin end 多すぎ。
そこまで似せてるなら、Cみたいに{ }でいいじゃん。連接の{ }は「」で代用。
あと、counter <= counter + 1; もいいけど、
counter++; とか counter += 2; とか許して欲しい。
それと構造体もね。
文字タイプ数がVHDLに比べて少なくて済むのは◎
15 downto 0 → 15:0 これは評価できる。えらいぞVerilog
315774ワット発電中さん:2006/08/30(水) 00:13:24 ID:z3HuRsbQ
>>314
禿同
316774ワット発電中さん:2006/08/30(水) 00:35:08 ID:PBRKuvyJ
2chlogを制定しよう。

拡張子は .w


式がどう解釈されてるか調べるの面倒だな。インタプリタってないものですかね。

とりあえず「全てのオペランドが、signedでないとsignedにならない」ってのを今日覚えた。
でもたぶん忘れてまたはまる.w
317774ワット発電中さん:2006/08/31(木) 22:52:56 ID:w7TWaUwI
>>314
記述は楽かもしれないが、ハード動作が訳分からなくなるんじゃないか。
それに、counter++ や counter+=2 を追加 したら counter++< counter+<=2 が必要だし、
構造体を導入したらハード馬鹿食いするとしか思えない。
SystemC使うかソフトウェア組んでたほうが良くないか。

まあ 15 downto 0 → [15:0] は記述が減って可読性もあがりそうだけど。
318774ワット発電中さん:2006/08/31(木) 23:05:40 ID:wZKCZdnu
wireの構造体は賛成
319774ワット発電中さん:2006/08/31(木) 23:20:03 ID:zBhKIvzM
VHDL使っているけど、何回も同じ内容を書いていたりするな。
コンポーネントとかコンポーネントとかコンポーネントとか
320774ワット発電中さん:2006/09/01(金) 00:01:22 ID:/lMoIPtC
>>319
プりプロセッサでも使ってマクロで記述するとか
321774ワット発電中さん:2006/09/01(金) 00:33:58 ID:pDaffbik
>>319
パッケージにコンポーネントまとめて、それを呼ぶようにしる。
322774ワット発電中さん:2006/09/01(金) 19:16:15 ID:MWfTcivx
>>314
すべてSystemVerilogで解決
323774ワット発電中さん:2006/09/01(金) 22:17:23 ID:3h+1Bhs0
■「でたらめトップ」(=団塊の世代)に精神を破壊されるサラリーマン■

精神を病むサラリーマンが増えている。
その理由として、社会経済生産性本部は、仕事がハードになったとか、責任
が重くなったのに権限が小さい…など、いろんな理由をつけている。しかし、
最大の理由は、弱い立場の部下に、無茶な目標や仕事を与えたり、自分のミス
の責任を押しつける「でたらめ上司」が増えたからだと思う。

なぜ増えたかというと、同様の「でたらめトップ」が増えたからである。そ
の証拠に、会社の80%以上、すなわちトップのほとんどが、「会社の業績が
悪いのは、社員が怠けているからだ」と決めつける成果主義や、「能力開発は
社員がやれ」と説くコンピテンシー論に飛びついた。
 
そして、「限界を超す高い目標にチャレンジすることで、能力が飛躍的に高
まり、現状をブレークスルーする革新的な成果をあげることができる」といっ
た精神論を楯に、高い目標設定を強制し、追い立てる。あげくは、大きな成果
をあげるか、そうみせかけるのが上手な社員以外は、怠慢かつ無能な人間だと
決めつける。

これでは、誠実な社員の意欲と誇りが踏みにじられ、精神がゆが
められ、破壊されていって当然である。しかも、トップは、「他社もやるから
うちもやる」と思うだけで、自分がいかにひどいことをやっているかに思い至
らない。

http://www.yukan-fuji.com/archives/2006/08/post_6730.html

324774ワット発電中さん:2006/09/01(金) 22:35:54 ID:X0DCU0r9
>>322
ホントですか? 
XilinxのISEに組み込んで使うようなことも出来るのでしょうか?
325774ワット発電中さん:2006/09/02(土) 00:11:11 ID:LDUAndfX
>>317
>まあ 15 downto 0 → [15:0] は記述が減って可読性もあがりそうだけど。

記述量を気にするくらいなら、upto 使えよ。
てか、15 downto 0 も [15:0] もタイピング時間は変わらんだろ。
VHDLは記述量が…っていう奴にリアルでもよく会うけど、
まともな設計者でそんなこという奴に会ったこと無い。
違う部分での優劣は聞くけどね。
326774ワット発電中さん:2006/09/02(土) 00:59:58 ID:XYtyTKgK
タイピング時間もdowntoといちいち書いた方が掛かりそうなもんだが、
それより場所を取るのが嫌。
ごちゃごちゃとした記述は面倒だし気持ち悪い。

どうしても使えって言われない限り、
極力VHDLは使いたくない。
327774ワット発電中さん:2006/09/02(土) 01:10:32 ID:LrJtfBlS
>まともな設計者でそんなこという奴に会ったこと無い。

まともな設計者で工数に直結するコーディング量を無視する奴に出会ったことないね。
328774ワット発電中さん:2006/09/02(土) 01:22:55 ID:LrJtfBlS
VHDL == 終わった言語
SystemVerilogの登場でほぼ完全死。南無阿弥陀仏
つーか仕様が固まった時点で既に終わってたけどな。。。藁
既に広く使われてたVerilogとほとんど変わらんくせに書かすわ書かすわ。マジで糞
プリプロセッサ機能ぐらいは持たせろバカ
Adaオタの国防総省のためだけに存在意義がある。ペンタゴンとは付き合いないんであしからず。
よかったよかった平和な仕事してて♪
329774ワット発電中さん:2006/09/02(土) 01:30:46 ID:aL4fVwhh
コーディングなぞ単なる作業ですよ?
入力時間ごときは設計時間に比べたら微々たるものです。
330774ワット発電中さん:2006/09/02(土) 01:43:55 ID:XYtyTKgK
>>329
まあ確かに、Cとかとは違う気がする。HDLは。

Cとかでのソフトウェアプログラミングの場合は、
プログラミング言語は思考のための道具って感じだけど、
HDLは、既に考えた設計を単にその言語で実装(?)しているだけっていうか・・・

でもやっぱVHDLの方がめんどいし、
そもそも設計時間との比較は見当違いじゃない?
331774ワット発電中さん:2006/09/02(土) 02:07:58 ID:s0QGKRrg
XilinxのEDKのIPライブラリが全部VHDLだから仕方なくVHDL使ってるんだが、
動作設定をパラメタライズして合成時にパラメータを指定して好みの動作を
させるような記述はVelirogだとちょっと足らないのかな?と思う

Simは絶対Velirogで書きたい
332774ワット発電中さん:2006/09/02(土) 07:12:05 ID:LDUAndfX
>>327
タイピングをもっと練習しろよw

>>329
その通り
333774ワット発電中さん:2006/09/02(土) 07:59:09 ID:XYtyTKgK
どっち使っても良いなら
まともな技術者ならVerilog選ぶだろうな。
334774ワット発電中さん:2006/09/02(土) 08:10:37 ID:mAQa3Yz+
トップ設計は図形
335774ワット発電中さん:2006/09/02(土) 10:44:56 ID:ajvK3HmM
コーディング量の話ですが、タイピング時間の問題ではありません。
デバッグや改造の時に眺めなければならない分量が少ない方が良いと思うのです。
きまりきんときの呪文を書くなら省略しても良いようにして欲しい。
336774ワット発電中さん:2006/09/02(土) 12:21:32 ID:u+qbqr+W
なんか一年ぐらい前と随分様相が違ってきたな。
そのときはVHDLがゴミとでも言おうものなら突っかかってくるバカが多かったんだが、
今はかなりの香具師が糞仕様ぶりを納得してるみたいだな。
そもそもCが普及したのだって、書きやすさだからな。
HDLであろうがプログラム言語であろうが、コーディングが楽なものが普及して当然だ。
337774ワット発電中さん:2006/09/02(土) 12:27:44 ID:u+qbqr+W
>>330
>Cとかでのソフトウェアプログラミングの場合は、
>プログラミング言語は思考のための道具って感じだけど

それは>>330がそういう目的にCを使ってるからだろ?
例えばシミュレーションとか。
でも組み込み実装の場合は既に考えた設計をその言語で実装するだけだ。
HDLはプログラムではないが、実装まで慎重に考えたコーディングが求められた場合、
>>330の感想は必ずしも正しくない。
HDLはネットリストと、動作タイミングを記述するもの。
プログラム言語は手順を記述するもので両者は異なるものという認識には同意するが。
338774ワット発電中さん:2006/09/02(土) 13:25:17 ID:EBk7Ac8w
横にずれるけど

確かに扱いやすさからCが普及したのはそうだけど
資産引継ぎで考えるとCは厳しいな

ある程度タイピング量が多くてもコーディング仕様がある程度決まってるのがいい

339774ワット発電中さん:2006/09/02(土) 14:02:27 ID:LDUAndfX
>>338
その通りなんだけど、デジタル土方にはそれが理解できない。
だからこその土方なんだろうけど。
340774ワット発電中さん:2006/09/02(土) 14:07:39 ID:u+qbqr+W
>資産引継ぎで考えるとCは厳しいな

書きやすいが読みにくいからな。
人に正確に伝えるのであればVHDL > Verilogかもしれんし、
巧みの技をあんまり発揮しようのないFortran > C、Pascal > Cかもしれんが、
最終的に書きやすい言語が普及したんじゃないか?
はっきり言って、VerilogももっとCをパクッてbegin,endのかわりに{}にすべきだった。
連接のほうはもっと別な記述法を考えればいくらでもあるんじゃないか?
見た目のフィールまでぱくるのはなんかマズイのかね?
341774ワット発電中さん:2006/09/02(土) 14:13:45 ID:u+qbqr+W
>>339
>デジタル土方にはそれが理解できない。

まぁ、まともなエンジニアはデジタルとは死んでも言わんな。
ろくすっぽ論文も技術誌も読んでない証拠。つまり

>>339 == "デ ジ タ ル" 土 方

そのものってことか?
342774ワット発電中さん:2006/09/02(土) 18:47:17 ID:x1v6D4Zs
デジタルぐらいで何をそんなに一生懸命になってんだ?
343774ワット発電中さん:2006/09/02(土) 20:09:30 ID:3f7M/Vjp
使いにくければコンバータ作ればいいじゃない
ある道具だけでやろうとするから無理がある
344774ワット発電中さん:2006/09/02(土) 20:36:44 ID:wjYmWYlW
でも統合環境も捨てがたいし。
え、それも作れって?うぇ〜ん
345774ワット発電中さん:2006/09/02(土) 21:17:32 ID:u+qbqr+W
>デジタルぐらいで何をそんなに一生懸命になってんだ?

そいつのレベルが一目瞭然でわかるからさ。
346774ワット発電中さん:2006/09/03(日) 00:16:41 ID:iJ2ELkGu
統合環境使うなら自由度が低くて当然
まさか統合環境付属のエディタ使ってるとか……
たかが記述言語の乗り回しでゾウガメはやっとれん
347774ワット発電中さん:2006/09/03(日) 00:17:52 ID:eod57Qic
>>345
君のレベルが一目瞭然でした
348774ワット発電中さん:2006/09/03(日) 01:21:30 ID:eQCUyHN9
VHDLは面倒なんだけど・・・
趣味でやってるっていうのと、この不可思議さが好きでVHDL使い続けてるww

まあHDL始めたときに集めた本がVHDLだったからっていうのもあるんだけど
349774ワット発電中さん:2006/09/03(日) 02:30:52 ID:hrpzmoTv
この擦れに軽石が混ざっている。玉石混交。
350774ワット発電中さん:2006/09/03(日) 02:38:53 ID:ppdpq2QF
趣味でVHDLって凄く几帳面そう
351774ワット発電中さん:2006/09/03(日) 03:24:53 ID:/lj4B1Uy
設計は几帳面なくらいの人じゃなきゃ任せるの大いに不安
352774ワット発電中さん:2006/09/03(日) 04:08:30 ID:lgQ5S9yG
歳をとると、エラーチェックが厳しいVHDLの方がチョンボを防げる(w
353774ワット発電中さん:2006/09/03(日) 07:55:38 ID:uYTSFppk
記述が面倒って言ってる人って、補完が効くエディタ使っても面倒なの?
354774ワット発電中さん:2006/09/03(日) 09:15:52 ID:cZn3Ut4m
補完が効くエディタでプリプロセッサの代わりができるかよ
355774ワット発電中さん:2006/09/03(日) 10:15:54 ID:BgPpeWgo
読む分には「補完が効くエディタ」は無意味だしなあ。
356774ワット発電中さん:2006/09/03(日) 11:10:11 ID:BgPpeWgo
質問です。
parameterの配列というのは
どう使えば良いんでしょうか?

試しに、以下のようなものを書いてみました。
data_inが0のときは1を、data_inが1のときは0を出力するモジュールのつもりです。

cverでシミュレーションしてみようとすると、
parameterの定義部分で
ERROR** [687] parameter array p illegal - explicit type declaration required for parameter arrays
というエラーが出ました。

module Test_Test(  // テストベンチ
);
   reg data_in;
  wire data_out;

  initial begin
    data_in = 1'b0;
    #10;
    data_in = 1'b1;
    #10;
    $finish;
  end

  initial begin
    $monitor("%b -> %b", data_in, data_out);
  end
endmodule

module Test(  // data_inが0のときは1を、data_inが1のときは0を出力するモジュール
   input data_in,
  output data_out
);
  parameter p[0:1] = {
    1'b1,
    1'b0
  };

  assign data_out = p[data_in];
endmodule
357774ワット発電中さん:2006/09/03(日) 11:10:48 ID:mfjhWUxy
VisualStudioなんかだと統合環境がバックグラウンドコンパイル走らせてるからなあ。
プリプロセッサというより統合環境のエディタを使うこと自体がコンパイルのパスの一つになってる。
その他の開発支援機能も含めて単体エディタの単なる辞書機能とは異なるんだよ。
単体エディタで書いてメイクするほうがいいとかっていう 346,357みたいの見るとHDLをとりまく
環境ってソフトの開発手法を手本にしてるとはいえ、まだまだ出遅れてるなって感じ。
358774ワット発電中さん:2006/09/03(日) 11:13:17 ID:mfjhWUxy
357は自分だ(w。たしかに自身もそうだけど。
>>354としたかったのでした。
359774ワット発電中さん:2006/09/03(日) 11:29:57 ID:BgPpeWgo
適当ですが、こう書き直したら
とりあえずシミュレータは走りました。
でもparameter integerって・・・integerで良いんでしょうか?
それに、parameter配列のインデックスに変数が使えないなんて・・・

module Test_Test(
);
   reg data_in;
  wire [1:0] data_out;

  Test Test(
    .data_in(data_in),
    .data_out(data_out)
  );

  initial begin
    data_in = 1'b0;
    #10;
    data_in = 1'b1;
    #10;
    $finish;
  end

  initial begin
    $monitor("%b -> %b", data_in, data_out);
  end
endmodule

module Test(
   input data_in,
  output [1:0] data_out
);
  parameter integer p[0:3] = {
    2'b00,
    2'b01,
    2'b10,
    2'b11
  };

//  assign data_out = p[data_in];
  assign data_out = (data_in == 1'b0) ? p[3] : p[0];
endmodule
360774ワット発電中さん:2006/09/03(日) 17:05:11 ID:LY32MeZZ
気になったので調べてみた。
wire[1:0] p = 2'b10;
integer data_in_int;
always@* data_in_int = $rtoi($bitstoreal(data_in));
assign data_out = p[data_in_int];
361774ワット発電中さん:2006/09/09(土) 00:10:54 ID:tWBLQKg4
ウルトラ高価なツールのライセンス考えたら、すべてがテキストエディタで、
すべてがバッチ処理。流すのはシェルスクリプトの仕事。
HDLを取り巻く環境は、ソフトウェアに10年以上遅れて、キータイプ数は十倍多く必要で、
マウスの操作は百分の一だ。
ファイル圧縮一つとっても、キーボードからtarでパイプだのgzipだのクレイジーです。
ガバッとマウスで選んで->「ここに書庫を作成」で済む話しじゃないですか。まったくUNIX好きは
度し難い連中が多いねと。そんなにキーボードが好きか。
さらに開発環境を整えるどころか、コーディングルールでがんじがらめだ。業界団体があるぐらいだからな。
順番が逆だろって言いたいね。仕方ないけどさ。
めまいがするほどの膨大な検証に、群雄割拠の無数のツール。しかも操作のルールもまちまち。
アホみたいに長い工程の間に次々と増えて行く無数のファイルフォーマット。
しかもテキストファイル多し。何万行あるんだよこのファイルって感じ。
そしてマシンは厳重に管理されて、ちょっとした便利ツールをインストールすることすら許されない。
自宅でFPGAをフリー(制限付きとか)のGUIツールで開発する環境に比べたら、業界最先端は石器時代ですよ。
それに習得必須のツールの数も倍増しますぜ。アホみたいに増えます。

何が言いたいかというと、利用者の意識改革が無いと、HDLを取り巻く状況は変わりそうもないって感じかな。
ソフトウェア業界より変化が激しいってこともあるんだけどね。
でもね、verilogHDLを『たくさん書くだけ』ならIDEはいらんのも事実だよ。
仕様書が出来たら、あとはそれを見ながら頭に浮かんだ回路を書くだけだからね。予約語に色が付けばじゅうぶん。
シーケンサもツールでコード生成するしね。
362774ワット発電中さん:2006/09/09(土) 07:56:37 ID:hi/6UFYf
>>361
ツール屋の餌食になってるって言いたいの?
363774ワット発電中さん:2006/09/09(土) 14:52:36 ID:x4UHLa/5
結論:361はキーボードが大好き
364774ワット発電中さん:2006/09/10(日) 04:33:00 ID:2M66E7Uu
間抜けな質問ですみません。
FPGAはマイコンの役割を果たすのでしょうか?
ロボットを作りたくてセンサやモータの制御、
パソコンとの通信がしたいのです。
365774ワット発電中さん:2006/09/10(日) 07:20:13 ID:WMbbSJmg
>>364
FPGAはユーザが回路を作り込めるデバイスです。
マイコンにしようと思えばマイコンにもなります(ただし、アナログ入力はありません)。
ただ、マイコンで済むのならマイコンを使った方が楽です。
#IDがM66でロボットとは、なかなかのセンスです
366774ワット発電中さん:2006/09/10(日) 10:36:59 ID:2M66E7Uu
〉365
FPGAの方がむしろ楽なのかなと思ってました。
ハードの制約(電圧、ファンアウト等)を気にしないで組めて
マイコンの代わりにもなるとなると
回路やマイコンの勉強の負担が減るかなと感じます。
マイコンの方が楽というのはどこら辺がでしょうか?
367774ワット発電中さん:2006/09/10(日) 11:28:54 ID:RgqlJYIU
・・・↑は、ギャグで言っているのか?
368774ワット発電中さん:2006/09/10(日) 11:43:44 ID:d0oJ7LtD
>>366
とりあえずやってみればわかるよ。
高級言語よりもアセンブリ言語のほうが自由度が高いが、色々と面倒な
ことも多いでしょ。
それと一緒でマイコンよりもFPGAの方が遥かに自由度が高いが、遥か
に面倒(それはもう限りなく・・・)なことも多い。
基本的にマイコンで出来ることはFPGAで全て出来る(容量さえ許せば)。
しかし、論理的には可能でも、作業負荷が大きすぎて現実的には不可
能に近いことも多い。
FPGAはマイコンの補助として使うと、お互いの短所を補いつつ、お互い
の長所を利用できるのでとても便利。
369774ワット発電中さん:2006/09/10(日) 12:24:17 ID:yb3e8RcG
IPコアって簡単に使えるの?
370774ワット発電中さん:2006/09/10(日) 20:06:38 ID:+6xDCEUF
> とりあえずやってみればわかるよ。
プログラム(本当はHDL)が書いた順に動作しないのはおかしい、とか言い出しそうだけど。
371774ワット発電中さん:2006/09/10(日) 20:12:05 ID:MrdwBOlv
> とりあえずやってみればわかるよ。
>ハードの制約(電圧、ファンアウト等)を気にしないで
組んで動作しないのはおかしい、とか言い出しそうだけど。
こういうのはシミュは動くからさらにややこしい。
372774ワット発電中さん:2006/09/10(日) 20:18:16 ID:+opjGL8Z
FPGAは量産では使えない。
373774ワット発電中さん:2006/09/10(日) 20:41:54 ID:9ax4Wd/v
>>366
センサ
アナログ出力ならA/Dコンバータ機能
デジタル出力なら通信機能
モーター制御
サーボ制御になるだろうからPWM機能
パソコンとの通信
RS-232CかUSB通信機能

FPGAは自由度高いけど、全てを実現するのは大変なので、
多機能マイコンを使い、足りない機能をFPGAで追加するのがいいよ。
374774ワット発電中さん:2006/09/10(日) 20:42:13 ID:MrdwBOlv
>>372
いつまでその言葉を使っていられるか。
375774ワット発電中さん:2006/09/10(日) 22:33:40 ID:d0oJ7LtD
>>369
お金さえあれば比較的簡単なものもあるよ。
でも何も内臓コアに限る必要はない。簡単なのは外部バス直結。
基板作るお金がなくて配線面倒なら、シリアル通信接続とか、普
通のポート使って自分のプロトコルで通信するとか。
最初は面倒でも一度作ってしまえば後は楽だからね。

>>372
どの程度から量産と呼べるか分からないが、メーカの話ではFPGA
乗せてる量産品も結構あるらしいよ。
376774ワット発電中さん:2006/09/10(日) 22:51:42 ID:+6xDCEUF
平面テレビが流行りだした頃って、FPGA使ってるとか言ってなかったっけ?
377774ワット発電中さん:2006/09/16(土) 00:01:02 ID:FrT4ZyIz
>>369
契約からんできそうでウザクね?
ただの箱扱いできるわけじゃないし
378774ワット発電中さん:2006/09/19(火) 22:12:01 ID:SVTGh6Zm
デバイスメーカも数が出る民生品に使ってもらいたがっているという側面。


…もっと低消費電力で使えないものやら。
379774ワット発電中さん:2006/09/26(火) 22:09:56 ID:TDNswsZ8
>>378
一ヵ月待てばゲートアレイで出来るだろ。
380774ワット発電中さん:2006/09/27(水) 00:56:55 ID:T9nw2l2M
Etherとかワイヤレス等のアプリのVHDLオープンソースってあるかなあ?
試してみたいぞ。
381774ワット発電中さん:2006/09/27(水) 01:53:27 ID:lr7KTvYX
382774ワット発電中さん:2006/10/03(火) 23:56:12 ID:fNgyI8x9
verilog-a使ってアナログ回路のシミュレーションしてる人っていないの?
取り巻く環境が把握できない。verilogで検索かけてもほとんどディジタル回路だよね
383774ワット発電中さん:2006/10/04(水) 00:11:43 ID:KieT3Gh+
>>382
俺もVerilog-Aについて知りたくて
ぐぐったり、本を探したりしたんだけれど、
具体的な情報はほとんど得られなかった。
(文法とか、無料のシミュレータとか)

結局、Verilog-AMSの日本語の本(絶版)が1冊だけ見つかったから、
それを図書館で借りてきて斜め読みするだけにとどまった。
使える無料のシミュレータが無かったし。
384774ワット発電中さん:2006/10/05(木) 04:15:25 ID:vP5oMMMh
PSL>>>SVA>越えられない壁>>>>>>OVA
でFAですか?
385774ワット発電中さん:2006/10/05(木) 06:07:49 ID:dRrL0li2
なにそれ。いきなり。

PSL
SVA
OVA
どれも聞いたことの無い単語。
386774ワット発電中さん:2006/10/05(木) 08:52:49 ID:lIqRT7Kq
>>385
384がいきなりなのは同意だが、この板を見ているような椰子で
どれも聞いた事ないってのはヤバくないか??
アサーションって聞いた事ないか?
387774ワット発電中さん:2006/10/05(木) 22:00:33 ID:NXVEbh1n
> この板を見ているような椰子で
香具師だけど聞いたことないです orz
VHDLぐらいはなんとか書けます
388774ワット発電中さん:2006/10/05(木) 23:00:15 ID:BRZRiejW
俺VHDLをはじめて4日目
簡単なコードは書ける。だからpsl/ova/svaなんてしらん

psl(Property Specification Language) http://www.cqpub.co.jp/dwm/Contents/0094/dwm009401440.pdf
OVA(Open Vera Assertion) http://www.cqpub.co.jp/dwm/advertise/DWM0063ad_EDA/DWM0063ad1_body.htm
sva(System Verilog Assertion) http://www.synopsys.co.jp/products/technology/sva/

おれの場合ここまで必要としない。何でもありなところなので、必要に迫られたら勉強する
389774ワット発電中さん:2006/10/05(木) 23:01:59 ID:BRZRiejW
あー、自分で書いて変な日本語だと思う・・・指先でしか会話していない所為でしょうか・・・
390774ワット発電中さん:2006/10/06(金) 02:17:50 ID:nSmdDgBS
アサーションは知っている。
391774ワット発電中さん:2006/10/06(金) 12:24:01 ID:9sWxjKEt
Original Video Animation なら知っている。
392774ワット発電中さん:2006/10/06(金) 12:25:49 ID:nSmdDgBS
俺も俺も
393774ワット発電中さん:2006/10/06(金) 21:32:06 ID:XT81rXkv
コア使って楽チンで開発している人はいるの?
394774ワット発電中さん:2006/10/06(金) 22:12:26 ID:9sWxjKEt
全然楽チンじゃない。
395774ワット発電中さん:2006/10/06(金) 23:30:00 ID:NUz5A/q+
ここって、朝と昼休みと帰宅後の書き込みしかないんだね。
396774ワット発電中さん:2006/10/07(土) 00:48:08 ID:2LbOSVC3
アサーションは知っていてもPSL, SVA, それとアニメじゃない方のOVA(w)
を知らない390の知っているアサーションって何だ?OVLか?
と、また3文字略語を貼ってみるテスト。
397774ワット発電中さん:2006/10/07(土) 01:20:42 ID:281p342E
assert.h
398774ワット発電中さん:2006/10/07(土) 01:48:54 ID:Tom3XrjI
>>393
>>394
マウスのクリックだけでいろんなIPおよび、それを駆動するごく簡単なソフトが
自動的に作成されるものもあるよ。。
コア内蔵だから大変だと言うことは特に感じない。
399774ワット発電中さん:2006/10/07(土) 23:09:29 ID:XXgVS2gX
>>395
健全じゃないかw
400774ワット発電中さん:2006/10/08(日) 07:14:19 ID:BF5CT+CF
>>399
就業中に書き込んだ方が健全だとおもったのさ
401774ワット発電中さん:2006/10/08(日) 14:53:15 ID:Ct+ahxoG
軽さんクビになるよ
クビになるよ軽さん
402774ワット発電中さん:2006/10/08(日) 17:02:11 ID:pff8EcOo
今VHDLでFIFOを書いてみてるんですが、
参考書等のFIFOはリードとライトを別々のサイクルに行うような仕様になっていますが、
書き込みと読み込み同時に出来るFIFOは作れるのでしょうか?

初歩的な質問かも知れませんがよろしくお願いします
403774ワット発電中さん:2006/10/08(日) 17:23:00 ID:4P94lg5g
>>402
RAM構造による
404774ワット発電中さん:2006/10/08(日) 17:30:16 ID:pff8EcOo
>>403さん ありがとうございます。
RAMの構造とはFPGAなどのハード的な問題ですか?
それともVHDLの記述の問題ですか?
すみません
405774ワット発電中さん:2006/10/08(日) 17:53:09 ID:TXOn0jzA
RAMを使うまでもないサイズのFIFOなら、FFで作れば読み書き同時にできる。
1RWのRAMで作るなら、本質的に読み書きどちらかしかできないから、
無制限好き勝手の同時読み書きは無理。用途に応じた工夫が必要。
406774ワット発電中さん:2006/10/08(日) 18:16:35 ID:pff8EcOo
FFではでかすぎるような気がするのでFIFOを使おうかと思い同時に読み書きできるか聞きました。

ビット幅32bitのFFを1024個連続でつなげるのは無謀ですかね?

前の回路で使うデータを次の回路でも使うので取っておきたかったんです。
前の回路と、後ろの回路でパイプライン処理させたいわけでして・・・
1つの回路が1024クロックかかるもので。

1RWのRAMとはどういうことなんでしょうか?
当方stratixEP1Sを使う予定なんですが1RWとはどういう意味でしょうか?
407774ワット発電中さん:2006/10/08(日) 18:20:27 ID:kEc9kaDf
>>404
VHDLの問題ではありません。
408774ワット発電中さん:2006/10/08(日) 19:00:08 ID:eF2GE3I1
>>406
Stratixなら問題なくできる。
で、いちいち聞かなくても家のマシンにQuartusIIインストールして
ちょっと書いてコンパイルしてみれば分かるだろうに。
409774ワット発電中さん:2006/10/08(日) 19:24:13 ID:pff8EcOo
>>407,406さん
情報ありがとうございます。

実際に今からQuartusインストールしてみます。

因みにどのデバイスで出来るかどうかは、実験してみる以外に、仕様などで判断するには
どの部分を見ればよいのでしょうか?
410774ワット発電中さん:2006/10/08(日) 20:58:19 ID:Lm6WkB41
>>406
良く判らんが、 ビット幅32bitのFFを二段持っていて、(カウンタで作った)1024クロックごとの信号で前段のFFから後段のFFに転送する、とかではイカンの?
411774ワット発電中さん:2006/10/08(日) 21:05:32 ID:pff8EcOo
>>410
書き方がわるかったですね。すみません。

前の回路からのデータは1024個ありまして、
1クロックごとに1個のデータを参照します。
1024クロック過ぎると、後ろの回路も同様に1クロックごとに1つのデータを参照します。
うーん伝わるかなぁ
何せ回路設計は初めてなもので、セロリーもなにもわからずあせっています。
designwaveが先生です。
412774ワット発電中さん:2006/10/08(日) 21:10:16 ID:Lm6WkB41
>>411
なるほど、それはシフトレジスタが必要だろうなあ。がんがれ
413774ワット発電中さん:2006/10/08(日) 21:24:26 ID:4P94lg5g
>>411
シフトレジスタのオバケが必要なら処理方式を考え直した方が良いかもしれないなあ。
414774ワット発電中さん:2006/10/08(日) 21:24:42 ID:pff8EcOo
>>412 さんありがとうございます

orzセロリーになってる・・・
415774ワット発電中さん:2006/10/08(日) 21:26:45 ID:pff8EcOo
>>414さん
そうですか さすがにでかすぎますかね?
416774ワット発電中さん:2006/10/08(日) 21:27:23 ID:pff8EcOo
orz >>413さんです・・・
417774ワット発電中さん:2006/10/08(日) 21:49:06 ID:eF2GE3I1
>>409
同時に読み書きできるかどうかはFPGAが持っているRAMが
シングルポートかデュアルポートかによる。
詳しくはデータシートに書いてある。
418774ワット発電中さん:2006/10/08(日) 21:53:02 ID:pff8EcOo
>>417さん
それは内蔵RAMにフィッティングしたときにということですよね?
単純にLUTなどのセルにフィッティングした場合は記述によりけるということで
良いんでしょうか?
419774ワット発電中さん:2006/10/08(日) 22:03:11 ID:eF2GE3I1
>>418
ロジックセルならどのデバイスでもできる。
420774ワット発電中さん:2006/10/08(日) 22:06:51 ID:pff8EcOo
>>419さん
ありがとうございました。
自分が無知なばっかりに、皆さんにご迷惑おかけしました。
421774ワット発電中さん:2006/10/09(月) 12:29:40 ID:O3irc8+U
前途多難だな
422774ワット発電中さん:2006/10/10(火) 07:25:37 ID:emnNwkHg
明日、ASIC設計会社の面接なんだけど、どんな質問した方がいいの?
423774ワット発電中さん:2006/10/10(火) 09:38:36 ID:/TwUG+6P
平均残業時間
424774ワット発電中さん:2006/10/13(金) 00:14:25 ID:P1Qntm1w
RTLコードを読むときどんなエディタが便利良さ気?
お勧めあれば教えて欲しい

windows上でまったり読みたいんだがワードパッドしか知らない・・・w
425774ワット発電中さん:2006/10/13(金) 00:43:19 ID:cGhQQBef
>>424
つ vi
426774ワット発電中さん:2006/10/13(金) 01:18:17 ID:Ab9gNysO
>>424

Debussy。
あっ、でもWindows版は開発終了だな。
427774ワット発電中さん:2006/10/13(金) 06:17:15 ID:4OctFKdK
xyzとやら
428774ワット発電中さん:2006/10/14(土) 00:32:48 ID:Yr3GFGtD
RED
429774ワット発電中さん:2006/10/15(日) 02:39:05 ID:hJV+VrQa
どうでも良い事だけど、HDLで書いた物って「プログラム」っていう?
「FPGAのプログラム」ってどうも違和感があるから「デザイン」って言ってるんだけど、皆はどう?
430774ワット発電中さん:2006/10/15(日) 03:16:00 ID:f9U+nq9r
「プログラム」は避けたい。回路記述と呼んでる。
431774ワット発電中さん:2006/10/15(日) 10:49:33 ID:3W8xaeNs
「HDLのコード」または「HDL」。
文意からマイクロコードと区別できる場合は「コード」とか。
少なくともプログラムとは言わない。
432774ワット発電中さん:2006/10/15(日) 12:18:21 ID:EQOASBsD
プログラムは違う
ソースという言い方も避ける人がいる
RTLとか回路とか呼んでる
433774ワット発電中さん:2006/10/15(日) 19:23:27 ID:wV2brqgo
HDL打ち込みはソフト業
434774ワット発電中さん:2006/10/16(月) 11:08:22 ID:XXB+fkq/
435774ワット発電中さん:2006/10/16(月) 20:36:04 ID:YZnPriqo
ウホッ、matlabのお勉強するかな
436774ワット発電中さん:2006/10/16(月) 21:30:25 ID:7D57TngF
フリーソフト?
437774ワット発電中さん:2006/10/17(火) 01:28:52 ID:BdXK+8Vb
>>434

3rdパーティのなら昔からあったよね。
いずれにせよ、浮動小数点でしょ?
コストが甘々のところじゃないと使えないんじゃないかな。
438774ワット発電中さん:2006/10/17(火) 02:16:34 ID:+atdAFRR
そんなもん学生とかHDLに不慣れな香具師が使うような代物で、
少なくとも吐いたHDLを改造するだけの腕がなければ製品には使えないよ。
一応世の中の標準を知る参考にはなると思うけどね。
439774ワット発電中さん:2006/10/17(火) 10:01:07 ID:vMYIcFRd
いや、ふつーは固定小数点だろ
440774ワット発電中さん:2006/10/19(木) 14:23:35 ID:78xD3LJX
IPコア内蔵してscanテスト出来んのか?
441774ワット発電中さん:2006/10/19(木) 21:08:23 ID:wNZGVgLU
物によるべ
ARM7なんかは別途テストベクタが必要
442774ワット発電中さん:2006/10/20(金) 15:05:00 ID:3uhHWmzh
IPコアメーカが許可しない
443774ワット発電中さん:2006/10/29(日) 08:21:36 ID:Dj1kYp53
誘導されてきました。
VerilogHDLを用いたMINIPSアセンブラについてですが、テキストに

1: initial begin
2: InstMem.mem_data[0] = 32'h20011234; // addi $1, $0, 0x1234
3: InstMem.mem_data[1] = 32'hac030004; // sw $3, 4($0)
4: InstMem.mem_data[2] = 32'hfc000000; // halt
5: end

という書き方と

ADDR: Instruction #Mnemonic
0000: 20010001 # addi $1, $0, 1
0004: 0061202a # slt $4, $3, $1
0008: fc000000 # halt

という書き方(InstMem.mem_data[]= があるかないか?)があるのですが、
これらはどういった違いがあるのでしょうか?
444774ワット発電中さん:2006/10/29(日) 12:04:06 ID:SnR0V1j0
後者は$readmemhするんでしょ
445774ワット発電中さん:2006/11/02(木) 11:19:29 ID:GQVCnvRJ
test
446774ワット発電中さん:2006/11/07(火) 03:04:05 ID:QW0WX3KI
icarusに見下りつけ、Cver 試用始めました。
さすがに売り物下りだけあって精巧そう。
期待してライブラリファイルもマージしてコンパイル。
220model.v → クリア
altera_mf.v → ERROR!!
やっぱタダ路線はこの辺の壁通過できないのか…。
それともおいらのコンパイルがアホなのか…。
この辺クリアした人っている?
447774ワット発電中さん:2006/11/08(水) 09:40:47 ID:jBkPOH5I
無理。Modelsimにしろ。Veritakでも通るけどな。
448774ワット発電中さん:2006/11/08(水) 09:45:18 ID:QlEWM32t
ネタ禁止
449774ワット発電中さん:2006/11/08(水) 11:25:43 ID:FrPUMKHs
quartusのエディッタって日本語文字化けするんですが、
直す設定ってありますか?

ちょっと直したりするときに他のエディッタ立ち上げるの
めんどくさいので、できるだけquartus上で編集したいのです
450774ワット発電中さん:2006/11/08(水) 15:04:02 ID:syIeR5Za
ソースに2Byte文字入れてるの?
俺は怖くてできないぜw

Quartusの設定で外部エディタを使える様に出来るハズなのでそこを設定してみたら?
451774ワット発電中さん:2006/11/10(金) 23:24:00 ID:JZvPH9st
>>446
veriwellはどう。sf.netにある。
452774ワット発電中さん:2006/11/13(月) 16:59:09 ID:o1xyoW4h
初心者でVerilogのEndeavorをやってるのですがわからなくてこまってます。
どなたか教えていただけませんか。

電子錠の、立ち上がりFFの部分です。
http://www.omoch.net/cgi/log/up/702.txt
「テンキーのいずれかの部分が1ならば、CLKのたちあがりで1になる記述です」
と間違った部分にコメントが出ます。

こちらもです。こちらはテストベンチです。
http://up.spawn.jp/file/up50839.txt
「テンキーの指定したビットを1にします。」
と間違った部分にコメントが出ます。

■■■の部分が分からないんのですがよろしくお願いします。
453774ワット発電中さん:2006/11/13(月) 22:15:15 ID:0BQwyaNJ
これはすごいな…

是非、どういう思想の元にこういう記述にたどり着いたのか教えてくれ。
454774ワット発電中さん:2006/11/14(火) 00:37:14 ID:kCeljIuo
>>451
情報サンクス
けどやっぱりaltera_mf.vの壁はこせなかったよ。
文法エラーみたいにこいてた。
完全にサイのマークのシュミレーションツールしか対応してないんだな。
むぅ。
455774ワット発電中さん:2006/11/15(水) 16:39:42 ID:VV1H+VUw
process文がいまいちわかりません。2つあった場合下のprocess文は1クロック内で処理することが保障されるのでしょうか?
サンプルコードではこのようになっていました。なぜ下のprocess文をCLKで同期する回路にしなくてよいのか、わかりません。
process(RST,CLK)
begin
if(RST='1')then
各リセット
elsif(CLK'event and CLK='1') then
CURRNET_STATE:=NEXT_STATE;
case CURRENT_STATE is
when fast=>
if(HIT='1')then
NEXT_STATE=secand;
else
NEXT_STATE=fast;
end if
when second=>省略・・・・・
end case;
end if;
end process;

HIT<=HIT_1 or HIT_2;
process(RESULT_1,RESULT_2,RESULT_3)
begin
if(RESULT_1=JYOUKEN_1 and RESULT_2=JYOUKEN_2) then
HIT_1<='1';
else
HIT_1<='0';
end if;
if(RESULT_3=JYOUKEN_3) then
HIT_2<='1';
else
HIT_3<='0';
end if;
end process;
456774ワット発電中さん:2006/11/15(水) 16:40:23 ID:VV1H+VUw
tabが消えてる・・・ 見にくくてすみません
457書き直しました:2006/11/15(水) 16:47:59 ID:VV1H+VUw
process文がいまいちわかりません。2つあった場合下のprocess文は1クロック内で処理することが保障されるのでしょうか?
サンプルコードではこのようになっていました。なぜ下のprocess文をCLKで同期する回路にしなくてよいのか、わかりません。
process(RST,CLK)
begin
    if(RST='1')then
         各リセット
    elsif(CLK'event and CLK='1') then
        CURRNET_STATE:=NEXT_STATE;
        case CURRENT_STATE is
        when fast=>
            if(HIT='1')then
                NEXT_STATE=secand;
            else
                NEXT_STATE=fast;
            end if
        when second=>省略・・・・・
        end case;
    end if;
end process;

HIT<=HIT_1 or HIT_2;
process(RESULT_1,RESULT_2,RESULT_3)
begin
    if(RESULT_1=JYOUKEN_1 and RESULT_2=JYOUKEN_2) then
        HIT_1<='1';
    else
        HIT_1<='0';
    end if;
    if(RESULT_3=JYOUKEN_3) then
        HIT_2<='1';
    else
        HIT_3<='0';
    end if;
end process;
458774ワット発電中さん:2006/11/15(水) 17:30:19 ID:W1a09Kmk
VHDLのことはよくわからんが、
下のprocess文は組み合わせ回路を記述しているんだろ?
459774ワット発電中さん:2006/11/15(水) 18:41:03 ID:UtZbSJ0b
1クロック内で処理される保障はどこにも無いです
460774ワット発電中さん:2006/11/15(水) 18:54:09 ID:s9OU+FJA
最後のprocessは以下の2行と等価だと思うんだが・・・・
HIT_1 <= '1' when RESULT_1=JYOUKEN_1 and RESULT_2=JYOUKEN_2 else '0';
HIT_2 <= '1' when RESULT_3=JYOUKEN_3 else '0';

HIT_3<='0'って間違ってないか?
461457:2006/11/15(水) 22:08:44 ID:BxIBejhe
皆さんレスありがとうございます。
サンプルコードを自分なりに汎用に書き換えたので少しおかしいかもしれません
>458 そうです 組み合わせ回路ですが、一つ目のprocess文で
二つ目のprocess文のHITを条件として使っているので、
1クロック内におわる保障がないとおかしいと思ったので質問させていただきました。

>459 ということはタイミグによっては一つ目のprocess文で思い通りの動きを
しない場合があるということでしょうかね?

>460 そうですね。460さんの文と等価だと思います。HIT_3 は間違ってますか?
まだ知識が浅いので間違いがわかりません。ただ、2つ目のprocess文でHITが決まり、
それを一つ目のprocessで使っているという事がいいたかっただけです。
462774ワット発電中さん:2006/11/15(水) 22:39:25 ID:W1a09Kmk
2つ目のprocess文は組み合わせ回路なんだから
おおざっぱに言えば瞬時に値が決まっていくわけだよな。
だから動作周波数がめちゃくちゃデカい値に固定されていない限り
まあ1クロック内で処理を終えられるやん。

というか、普通、論理合成とかやるときにツールが
次にクロックが叩かれたときにレジスタの直前のワイヤの値がちゃんと決まっている様に
遅延時間を考慮して
最大動作周波数とか出してくれるんじゃなかったっけ?
463457:2006/11/15(水) 22:45:14 ID:BxIBejhe
>>462さん(前の方アンカー付け間違えてすみません)
そ、そうなんですか。ツールがそれを保障する周波数を出してくれるということですね。
それなら安心です。因みにquartus使う予定です。
464774ワット発電中さん:2006/11/15(水) 22:52:13 ID:WyBrVkDY
下の記述はどこのサンプルコードなんだ教えてくれ。
本なら買わないようにするから。
465457:2006/11/15(水) 23:32:36 ID:BxIBejhe
いやいや 自分でサンプルをもとにか書き換えたんですよ。
わかり易いようにと思って書き換えたのですが、間違えてたみたいですみません。
もとはもっと長いやつです。
466774ワット発電中さん:2006/11/16(木) 00:50:28 ID:Rjgyrb5u
いわゆるステートマシンだね(元のサンプルは)

遷移状態(first,second...)がFFに入ってて、それが条件(Hitとか)によって次の
クロックでの遷移状態に影響を及ぼす。
例えばfirstの時にHitが1なら次のクロックではsecond、Hitが0なら次もfirst、みたいな。

で、質問のほうは、既に答えもでてるようだけど、

FFの出力〜組み合わせ回路〜FFの入力、までがたとえば回路遅延が10nsだったとすれば、
その回路は10ns周期が最大動作周波数ということになるわけで。
回路遅延はデバイス依存だから、結論をいうとツールにまかせておけばって話になる。



467457:2006/11/16(木) 17:02:25 ID:0nq72f3a
>>466さん ソースコードのわかり易い解説ありがとうございます。
まさに自分が伝えたかったことです。

それから、質問の方ですが、わかり易い回答ありがとうございます。
理解する事ができました。これを参考にステートマシンを設計したいと思います。
本当にありがとうございます。
468774ワット発電中さん:2006/11/16(木) 18:29:27 ID:2D+mC+sU
あーあ、STARCの低能連中は
どうしてああも、文字化けが大好きなんだろうねえ。

この間購入した
RTL設計スタイルガイドVerilog編2版なんか
誤字脱字ならともかく文字化けで読めないところがあった。
その訂正メールが来てたけど
「訂正内容は添付のPowerPointのファイルを見ろ」
・・・って、皆が皆、PowerPoint使える環境だと思ってんのか糞ボケども。
俺は結局OOoで見たけどな。

STARCの連中は普段のメールにも
兵器で機種依存文字使いやがるし、
ほんとにあんな阿呆どもに
半導体理工学研究センターなんて看板掲げる資格あんのかね?
469774ワット発電中さん:2006/11/16(木) 18:38:48 ID:VFaaWeEd
>>468
メールも着たが、そのあと訂正用のシールが郵送されてこなかった?
文字化け部分に貼ってくださいってやつ。

> 誤字脱字ならともかく
俺は本なんて作ったことが無いからよく分からんが、
何で文字化けなんて自体になったのか不思議ではあるな。
470774ワット発電中さん:2006/11/16(木) 18:46:53 ID:VFaaWeEd
ありゃ。設計スタイルガイドのサイトにも文字化け情報はpptファイルしか無いのか?
正誤表はpdfなのに。っていうか1版のときと同様にhtmlで記述して補助的にpdfってのが理想か。
サイト管理とかどうなってんのかな。
研究自体はそりゃ優秀な人がやってるんだろうけど
案外事務員とかはアホばっかりなのかも
471774ワット発電中さん:2006/11/16(木) 19:11:51 ID:fWvHgpwD
研究自体は手際よくできても、それ以外は…って感じだろw
472774ワット発電中さん:2006/11/17(金) 00:31:28 ID:JZ/vQmy1
ハゲあたま
473774ワット発電中さん:2006/11/18(土) 10:01:05 ID:l+sv3ens
>>468
俺のところにきた訂正メールは、
HTML形式だった。
普通、テキスト形式で送るだろ・・・
と、ちょっと思った。(別に気にしないけどさ。思い出した)

STARCって
ちょっと抜けてるよね。
メールその他から受けるのは、頭悪そうな印象。
474774ワット発電中さん:2006/11/19(日) 03:04:48 ID:DhYVhF8h
Denaliっておもしろいなーっておい 重いぞwwwwww
475774ワット発電中さん:2006/11/19(日) 11:39:12 ID:qupihA5c
英語読めません!
日本語のシミュレータや、合成ツールありませんか!
476774ワット発電中さん:2006/11/19(日) 11:47:52 ID:QMkBgjnd
RTLや合成スクリプトをいちいち日本語で書くほうが大変だと思うが・・・
477774ワット発電中さん:2006/11/19(日) 18:54:15 ID:bH+QvJB3
>>470 >>473
事務員じゃなくて研究員自身がアホかも知れない
研究員は研究以外が無能な人結構いるからね
それだと研究員もやっていけないと思うんだけど
パトロンをだますのがうまい上司とかがいるとなんとかなるらしい
478774ワット発電中さん:2006/11/20(月) 19:39:17 ID:w9DJn/zh
>>476
唐突に何を言い出すのか・・・w
479774ワット発電中さん:2006/11/20(月) 19:55:00 ID:1sO4HRMs
(´-`).。oO(ぴゅう太を思い出したよ…)
480774ワット発電中さん:2006/11/20(月) 19:57:43 ID:I8FCMtSi
なんで
481774ワット発電中さん:2006/11/20(月) 19:59:19 ID:1sO4HRMs
(´-`).。oO(日本語つながりで…)
482774ワット発電中さん:2006/11/21(火) 00:39:32 ID:0nWJWSc6
日本語BASICみたいなのだっけw >ぴゅーた
483書き直しました:2006/11/21(火) 12:33:06 ID:TWI+ZsK6
周期関数をテーブルを使って表現しようと思うんですが、
困ってます。
結果をテーブルに保存するわけですが、ひとつのテーブルの制度が8bitとして、
周期関数の範囲0〜1までしか保存しない予定なんですけど、1が正しく表現できるように
1000_0000と表現するべきか、1111_1111とするべきか、どちらがよいかわかりません。
1000_0000と表現すれば1のままで誤差はないのですが、1000_0000以上の値がないので
bitが無駄になってしまうような気がします。 こういった場合どうするのがベストなんでしょうか?
484774ワット発電中さん:2006/11/21(火) 12:45:13 ID:Sob5ULD9
0xffを1.0
0x00を0.0 として
1/255 刻みにすればいいんじゃないの?
485774ワット発電中さん:2006/11/21(火) 15:19:15 ID:oqdYZvYK
周期関数だから0=1じゃないのか?
486書き直しました:2006/11/21(火) 16:52:35 ID:9T4bjvhk
>>484 やっぱりOxFFを1にするのがいいんですかね? 
それと、255刻みとはどういうことですか?256ではないんですか?
ちなみにテーブルは4bitアドレス指定で、16テーブルの予定です。
それなので16刻みの数値を入れております。ADD:DATA こんな感じです。
0 : 0;
1 : C;
2 : 18;
3 : 25;
4 : 30;
5 : 3C;
6 : 47;
7 : 51;
8 : 5A;
9 : 62;
A : 6A;
B : 70;
C : 76;
D : 7A;
E : 7D;
F : 7F;

>>485 数値的に0から1まで扱う予定なので0も1も表現できないとだめだと思うんですよね。
一応仕様としましては、0から1までを、参照するアドレスの変換と結果の符合反転を行うことで
周期関数を実現しようとしてるのですが・・・
487書き直しました:2006/11/21(火) 16:53:54 ID:9T4bjvhk
ちなみに、符号反転を後でする場合もあるので2の補数で入ってます。
488774ワット発電中さん:2006/11/21(火) 17:36:33 ID:Sob5ULD9
値域は -1.0〜+1.0ってこと?
だったら

0x81 = -127/127 = -1.0
0xff = -1/127 = -0.00787401574803149606
0x00 = 0.0
0x01 = +1/127 = +0.00787401574803149606
0x7f = +127/127 = +1.0

で 1/127 刻みでやるのが一番精度が取れると思うよ
0x80は使わないか、何か特別な意味を持つシンボルにする
489774ワット発電中さん:2006/11/21(火) 17:38:50 ID:mwa0RLUv
すげー。何の話しているのか
さっぱり分からねえ。
そもそも周期関数ってのが何なのかってことから
分からねえw
490774ワット発電中さん:2006/11/21(火) 21:10:42 ID:0nWJWSc6
>489
周期的な関数・・、ぶっちゃけなにかの繰り返し波形、でいいんじゃないだろうか
サイン波とか周期関数の代表かと。

>483
もし-1〜1なら、+0と-0を真ん中に持ってくるといいことがあることもあるかもね

0111 +7
:
0001 +1
0000 +0
1000 -0
1001 -1
:
1111 -7

精度を追求するか、回路の簡素化を追及するかとかでいくつか選択肢があるとはおもうけど。
491774ワット発電中さん:2006/11/21(火) 21:26:04 ID:mwa0RLUv
>>490
> サイン波とか周期関数の代表かと。

なるほど。そういうののことかー。Thx!!
492774ワット発電中さん:2006/11/21(火) 21:29:36 ID:Sob5ULD9
>>490
いわゆる1の補数ってやつだね
+0 と -0 を区別できるのが特徴
493483:2006/11/21(火) 23:15:21 ID:gfHTcw8f
みなさん色々ありがとうございます。
自分はSINとCOS値を出力する物を作りたいわけでして
皆さんに相談させていただいてます。
>>488 値域は0から1です。 つまり90度までの値を保持して、
指定されるアドレス上位2ビットを使って90度までのデータを符号変換したりして
360度ぶんを補おうとしてます。ちなみに4bitテーブルサイズでやろうとしてるので
>>488さんのおっしゃったとおり実装すると16刻みではなくて15刻みが良いということでしょうかね?
494774ワット発電中さん:2006/11/22(水) 01:02:14 ID:/66o8Blv
sin,cosだと、90度分のsinデータテーブルを持っておけば、
360度分のsin,cosテーブルが作れると思う。
単円の座標でいえば、45度分(sin,cosそれぞれ45度)
あとは単円の45度のなかにどうやって16個の点を打つかだね。
495483:2006/11/22(水) 01:40:54 ID:vR7MIvje
>>494 そうですね。その予定です。
ただ、SINとCOSは同じテーブルを使わない予定なのでそれぞれ90度持たせます。
なので90度を16分割する予定です。
496774ワット発電中さん:2006/11/22(水) 15:24:34 ID:pNxeEwx0
>>495
会社とか近所の図書館にDesign Wave Magazineのバックナンバーが
置いてあるならば、2003年7月号を見ると吉。
テーブルと補間を使ってsin, cosを求める方法が解説してある。
497483:2006/11/22(水) 17:23:04 ID:CzVI3kln
>>496ありがとうございます。見てみます。
それと質問ばっかりしててすみませんがもうひとつ・・・
arrayで宣言した信号のbit指定がどうしていいのか調べてもわかりません・・
例えば
type addr_type is array (delay-1 downto 0) of std_logic_vector(size-1 downto 0);
signal addr_reg:addr_type;
で宣言したaddr_regはaddre_reg(size-1 dwonto 0)が 0からdelay-1まで生成されますよね。
そのとき、addr_reg(delay-1)の下位2bitを指定したときはどうすればいいんですかね?
ちなみにif文で if(addr_reg(delay-1)(1 downto 0)="00")then
としたらエラーしてしまいました。
どう指定すればいいかご教授ください。自分の手持ちの本には載っていません・・
498483:2006/11/22(水) 17:26:04 ID:CzVI3kln
マスクすればできそうですが、直接指定する方法がありましたらよろしくお願いします。
499774ワット発電中さん:2006/11/22(水) 21:10:52 ID:2iTs4L6N
addr_reg(1 downto 0)
500774ワット発電中さん:2006/11/24(金) 11:29:06 ID:jbLOCrnV
500 get ズサー
501483:2006/11/25(土) 00:05:40 ID:nTJNFpJw
>>499 レスありがとうございます。
addr_reg(1 downto 0)だとどの配列か指定できないようなきがするのですよね。
497のようにarrayで宣言してるので この例だと
addr_reg(1),addr_reg(2),,,,,,,addr_reg(delay-2),addr_reg(delay-1)
となりますよね?これで一番目を指定するときは
addr_reg(1)
となりますが、これの下位2bitをさらに指定したいときはどうなるんでしょうか?
502774ワット発電中さん:2006/11/25(土) 02:37:49 ID:PsgbzOpZ
>>501
addr_reg(delay-1)を一旦std_logic_vector(size -1 downto 0)のvariableに代入して
variableの下位2bitをif文で参照するのは?
503774ワット発電中さん:2006/11/25(土) 17:34:03 ID:IW7kHU6F
ここの住人さんはプロですが、初心者にとって
論理設計は、最初は暗記科目と思うのですが正しいでしょうか?
504774ワット発電中さん:2006/11/25(土) 17:36:06 ID:54LRAOXN
はぁ?
505483:2006/11/25(土) 17:38:30 ID:nTJNFpJw
502>>マジでありがとうございます。できましたよ。variableで一時代入して。
variableの使いどころがいまいちわからなかったのですが、こういうときに逐次処理文(でいいのかな?)
使えるわけですね。
本当に助かりました。
506774ワット発電中さん:2006/11/25(土) 17:43:26 ID:McAHXTGU
今時VHDLなんて辞めてしまえや
507774ワット発電中さん:2006/11/25(土) 17:48:06 ID:EnF9dwDZ
SystemCもやめちまえ
508774ワット発電中さん:2006/11/25(土) 19:31:05 ID:XKk2BT/m
>>503
正しいです。
509774ワット発電中さん:2006/11/26(日) 00:16:17 ID:taUbBMFp
sin, cosをこの時期に作ろうとしてるのは某大学IS 3年なのだろうか
510774ワット発電中さん:2006/11/26(日) 02:03:44 ID:SgDlj2A7
なに?東大?
511774ワット発電中さん:2006/11/26(日) 22:12:37 ID:F+/bVP1J
http://www.amazon.co.jp/gp/product/4789833461/sr=8-2/qid=1164546633/ref=sr_1_2/250-8739888-8512248?ie=UTF8&s=books

FPGA初めてなんですが、こういうキットはどうなんでしょうか?
512774ワット発電中さん:2006/11/26(日) 22:34:03 ID:47of2zAR
513774ワット発電中さん:2006/11/26(日) 22:34:48 ID:Nv4zOpor
ACEXというデバイスがむ"ーですが、言語の習得ならどうでもいいかも。
ボードはトラ技付録の方がいいとおもふ...あれはプロダクトラインからすれば、一応CPLDか..?。
514774ワット発電中さん:2006/11/26(日) 22:40:12 ID:F+/bVP1J
値段がわからんです
高いのは無理ですが、できればAlteraがいいです
トラ技は自分でデバイス追加とか必要だと
失敗すると終わりなので、キットが安心
515774ワット発電中さん:2006/11/26(日) 23:11:41 ID:mA2uS6A6
516774ワット発電中さん:2006/11/26(日) 23:27:14 ID:iffQ1s+m
>>515
I/Oテンコモリだな。
517774ワット発電中さん:2006/11/27(月) 00:07:35 ID:RaGjloIR
>>515
不満データよりはるかに良心的な価格設定だけど、
このサイズだと、実際に何かに組み込んで使いたいサイズじゃないよな。
教育用、試作用ってとこかな?
ってボード名がそうなってるのな。
そうは言うもののボード買ったら動作チェックはしたいのでスイッチとかLEDはあったら便利よね。
配線考えるとRAM実装は必須なので、結局こういうサイズになるのかな?
518511:2006/11/27(月) 00:46:22 ID:N0jmjNNc
みなさん情報ありがとうございます。
少し書籍を読んでから財布と
相談して決めます。
519774ワット発電中さん:2006/11/27(月) 02:12:45 ID:DPeZ0BEQ
>>517
Alteraもようやく教育向けのテコ入れなのかなと。(すでにあった?)
それでもSP3E500よりEP2C20の方が単純に倍くらい入るようです。
コンパイル時間は半分ですみました。

>>518
まず動かして見ることですよ。
ところでなぜにAltera?

無理矢理スレタイに戻すと、XiのISEで通らなかった言語混在のやつが
QuartusIIで通ったという程度には、ISEに辟易してますが。
520774ワット発電中さん:2006/11/27(月) 10:03:57 ID:zjk4nFbG

http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=39&No=83
これってPS/2もあって、niosのっけてマイコンボードとして使うI/O全部そろってるよな。
MSXボード買ってるやつってアホとちゃうか?
521774ワット発電中さん:2006/11/27(月) 10:11:30 ID:zjk4nFbG
>>515
本体$150+US $29.2
プラス消費税分の関税と関税立替業者の手数料じゃなかった?
それで約2万円ってこと?
最近Digi-key以外輸入してないから忘れた。
522774ワット発電中さん:2006/11/27(月) 10:41:52 ID:zjk4nFbG
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=39&No=30
さらに上位モデルでこんなのもあるんだ?
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=39&No=14
とか見てるとアル寺がTerasicに委託して作らせてるっぽいな
日本寺サイトには何の情報も無いけど日本販売だとx1.5ぐらいになったりしてな。

>>515
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=39&No=83
ここで買ったの?
523774ワット発電中さん:2006/11/27(月) 21:58:44 ID:L/dPtknp
524774ワット発電中さん:2006/11/29(水) 10:23:38 ID:2kMaJBBx
525774ワット発電中さん:2006/12/03(日) 18:28:40 ID:6SeZuwH/
VHDLで算術演算子をつかうとき
use ieee.std_logic_arith.all;
を宣言している場合と
use ieee.std.logic_singed.all または unsigned.all
を宣言している場合
違いがあるんでしょうか?
signed.allとunsigned.allの違いはわかりますが、
arith.allとの違いがわかりません
526774ワット発電中さん:2006/12/03(日) 18:40:31 ID:6SeZuwH/
それと もうひとつなんですがQuartus2で 算術演算子/使えますかね?
どうしてもエラーになってしまいます。/以外の*、+、−などはビット幅を合わせればエラー出ません。
Error (10327): VHDL error at gha_div.vhd(31): can't determine definition of operator ""/"" -- found 0 possible definitions
527774ワット発電中さん:2006/12/03(日) 20:09:17 ID:6SeZuwH/
526に対する自己レスですが
/ の演算子をサポートする論理合成ツールは少ないとのことなので
quarutsは対応してないと思われます。
528774ワット発電中さん:2006/12/03(日) 22:50:48 ID:TI/tWprd
>>527
lpm_divideをつかえ。
ちなみにstd_logic_unsignedやstd_logic_arithは使わない。numeric_stdを使う。
529774ワット発電中さん:2006/12/05(火) 11:44:07 ID:AqZd4Zp+
>>526
オレは普通に使ってるけどなぁ。
ひょっとしてstd_logic_vectorでやってない?
530774ワット発電中さん:2006/12/05(火) 14:20:16 ID:Wwpgp+qJ
/をいったいどう考えてるんだ?合成できるとかどうかより、
仮にできたとして、除算をツール任せにしてること自体が大問題。
お前ニュートン法知ってるか?>>529
531774ワット発電中さん:2006/12/05(火) 17:24:12 ID:AqZd4Zp+
そんなに目くじらたてんでもいいがな。(´・ω・`)
そんなすごい割り算やってるわけでもないんで、わたしのレベルでは。
ただできるよ、とだけ言いたかったので。
532774ワット発電中さん:2006/12/05(火) 19:34:19 ID:uMWepJLx
割り算は2^nなら合成できるよ、って何かの本で読んだな。
533774ワット発電中さん:2006/12/05(火) 20:11:31 ID:btkrjnsB
シフトするだけだからな
534774ワット発電中さん:2006/12/05(火) 20:30:05 ID:ytLLrKk7
>>532
バレルシフタと加算器をいっぱい並べるんだ!(w
535774ワット発電中さん:2006/12/05(火) 20:44:04 ID:pVKKZjzO
チューリングマシン
536774ワット発電中さん:2006/12/06(水) 11:21:17 ID:7lcpxUXo
初心者なんですが、lpm_divideを使うのもツール任せってことにならないのでしょうか?
ツール任せじゃない割り算てどう書くのでしょうか?
537774ワット発電中さん:2006/12/06(水) 12:09:54 ID:yqB6Yea9
>>536
2進数で筆算してみてください

538774ワット発電中さん:2006/12/06(水) 18:00:36 ID:D3T0q1pZ
11100101 / 1011 を筆算にすると

      10100
1011 ) 11100101
    1011
    ------
     1101
     1011
     ------
      1001

10100 あまり 1001
539774ワット発電中さん:2006/12/06(水) 18:02:51 ID:L+6RxaCZ
これが年代差か!?
540774ワット発電中さん:2006/12/06(水) 18:10:43 ID:D3T0q1pZ
つまり

11100101 - 10110000 = 110101 ・・・ 左辺で引いた数は(1011 * 10000)
  110101 - 101100 = 1001 ・・・ 左辺で引いた数は(1011 * 100)

11100101 = 10110000 + 101100 + 1001

11100101 = 1011 * (10000 + 100) + 1001

ということ
541774ワット発電中さん:2006/12/06(水) 19:50:38 ID:p/jCL3J2
2進数の筆算に抵抗がない私はぜっぱちユーザ
542774ワット発電中さん:2006/12/06(水) 22:46:40 ID:uvx/EdB1
なんでも相対テーブルにしようとする私は09ユーザ
543774ワット発電中さん:2006/12/06(水) 22:54:13 ID:CJhQihIJ
ときどき間違っちゃう私は古いPentiumユーザ
544774ワット発電中さん:2006/12/07(木) 02:07:36 ID:myfWys/g
FPGAの加算ではRippleCarryが最高速なのか
545774ワット発電中さん:2006/12/07(木) 04:07:17 ID:/GQtiJPU
エンベデッド加算器じゃない?
546774ワット発電中さん:2006/12/07(木) 11:25:41 ID:9ADLMPQx
>>538
筆算形式で除算を計算すると求める商の1,0を決める度ごとに、大小比較が必須だから、
最低、商の精度分だけはクロックが必要になってしまう。
今、インテルコンパイラなどはハードの除算機能を使わずニュートン方を使ってるはず。
テーブル持たせる必要があるし、ソフトでやるならともかくハードだと結構面倒だと思うが、
愚直に筆算形式で除算を繰り返すと、絶対パフォーマンスは上がらない。結局、このやり方でも
順序回路じゃないと実現できないので、メモリを多用できるならニュートン法が吉
もちろん、シフトだけで済む2^±nとかは別だけどな。
547774ワット発電中さん:2006/12/07(木) 13:32:24 ID:y6/ztzXU
除算は開始場所判定回路(とバレルシフタ)を付けておくと1ビットずつ処理しても平均的には割と少ない回数で終わるよ。
538の例でも必要な引き算は2回しかない。
まぁ、実行時間がデータ依存になるからどこでも使える手ではないけどね。
548774ワット発電中さん:2006/12/08(金) 00:42:43 ID:BqfgzcGX
話の流れをぶった切ってしまい申し訳ないのですが、
VHDLの記述でお聞きしたい事があります

どうしてもわからない記述があるのですが、わかる方ご教授願えないでしょうか。

LOCAL_ADはentityのportでout std_logic_vector(23 downto 0)宣言されている

SIGNALPCI_Address: std_logic_vector(31 downto 0);

LOCAL_AD<= std_logic_vector( PCI_Address( 23 downto 0 ) ) ; ←この文

という記述なんですが、std_logic_vector()でくくってる意味がわかりません。
LOCAL_AD <= PCI_Address(23 downto 0);
で問題ないと思うのですが。いったいこれはどういった意味なんでしょうか?
549548:2006/12/08(金) 15:02:39 ID:BqfgzcGX
自己レスですが 試しにstd_logic_vector( )を抜いて論理合成してみたところ、
論理合成できました。

ちなみに、出来上がったバイナリファイルsofをdiffしたところ 違いがありませんでした。

結局ソースを見やすくするためのものかなんかなんでしょうか?
意味がわかりません・・・・orz
550774ワット発電中さん:2006/12/08(金) 18:58:00 ID:w0UZD/qn
みにくくなってるとおもうよ
551774ワット発電中さん:2006/12/08(金) 20:00:50 ID:k6wWeN9L
孔明の罠だとおもうよ
552774ワット発電中さん:2006/12/08(金) 20:10:53 ID:PLmpNkI/
死せるクトゥール
夢見るまま待ちいせり
553774ワット発電中さん:2006/12/08(金) 21:34:28 ID:GahYW660
>>548
> LOCAL_AD<= std_logic_vector( PCI_Address( 23 downto 0 ) ) ; ←この文

こんな書き方ってなかったっけ? 型を変換するだか明示するだか、そんなやつ。
LOCAL_AD<= std_logic_vector'( PCI_Address( 23 downto 0 ) ) ;
554548:2006/12/08(金) 21:58:43 ID:BqfgzcGX
>>553
データタイプ変換の例としては 手持ちの参考書に std_logic_vectorからinteger
に変換するものが載っていました。
A :in std_logic_vector(7 downto 0);
だとしたら 配列regfileの添え字指定で
Q <= regfile(conv_integer(A));
のように使うようです。

それと同様に考えていいんでしょうかね?
しかし、型もvectorサイズもまったく一緒なんで変換する意味が無いんですよね。
なので、さっき自分でも言ったように、代入する信号の型がわかり易いように
確認的な意味で書いているんじゃないかと思うのですがどうでしょうか?
コメントのように・・?
555774ワット発電中さん:2006/12/08(金) 22:36:44 ID:w0UZD/qn
Javaプログラマが書いたんだろう
556774ワット発電中さん:2006/12/09(土) 01:17:04 ID:BQvh9DvR
>>554
std_logic_vectorからintegerに直接は変換できない。やるなら
q <= regfile (conv_integer (unsigned (a)));
557774ワット発電中さん:2006/12/09(土) 20:59:38 ID:sVOMrTka
regfileって初めて聞いたけどなんだろう。VHDL93あたりまでの本は見たけど載ってない。
変換はconv_***だったな。これはsynopsis謹製じゃなかったかな?
標準には、to_***とかいうのもあったような。

で、記述の仕方によってはいくつかの型にとれる場合に、std_logic_vector'を付けると、
std_logic_vectorですよと明示できた、という意味だったと思う。
その場合、アポストロフィが付くけどな。
558774ワット発電中さん:2006/12/09(土) 23:48:18 ID:oJ5Eivvv
regfileっていうのはたぶん
signal regfile (9 downto 0);
とかの宣言があるんだと思う。to_integerはnumeric_stdを使うとき。
559774ワット発電中さん:2006/12/10(日) 23:55:53 ID:H7gqqrGS
結局、アポストロフィ見落としで落着?
560548:2006/12/11(月) 11:03:27 ID:IA2Pe4wD
みなさんレスありがとうございます。
自分でも不安になり 元ソースをかくにんしたとろアポストロフィーはありませんでした。


また別の部分を見ていたら、
signalRefresh_Cnt: unsigned( 9 downto 0 ) ;
で宣言された変数?が、

Refresh_Cnt <= Refresh_Cnt + 1 ;
if ( std_logic_vector(Refresh_Cnt(9 downto 6)) = "1111" ) then
     Refresh_Req  <= '1' ;
end if ;
という風に使われている部分があったので、 やはり型変を明示しているのではないかと思いました。

それから、試しにアポストロフィを挿入してみると、書式エラーになってしまいました。orz

ちなみに、regfileは558さんのおっしゃるとおり、
singal で宣言された配列型の信号?変数? です。
561774ワット発電中さん:2006/12/11(月) 15:40:35 ID:PB4auvEP
if ( Refresh_Cnt(9 downto 6) = "1111" ) then
     Refresh_Req  <= '1' ;
end if ;

これじゃだめ?
562774ワット発電中さん:2006/12/11(月) 20:26:52 ID:QHU4pGZJ
長くてすみません。下のようなステートマシンをRTLで書いてみたんですが、
シミュレーションしてみると、STATEがクロックに同期して交互()にでてしまいます。
かくケース文でカウントする状況をつくると交互STATEがでてしまいます。
なにか間違っていますでしょうか?ぜひご教示ください。


type state is (RESET, IDLE, W_WAIT_LDACKX_LO, W_WAIT_LDACKX_HI, W_WAIT_ACK2_40CLK);

signalCUR_STATE:state;
signalNEXT_STATE:state;

signal err_bsy : std_logic;
signal tim_cnt1 : integer range 0 to 5;
signal tim_cnt2 : integer range 0 to 5;
signal tim_cnt3 : integer range 0 to 50;


process (RSTIN, CLK40M)
begin
if RSTIN = '1' then
CUR_STATE <= RESET;

elsif CLK40M'event and CLK40M = '1' then
CUR_STATE <= NEXT_STATE;
end if;
end process;
--

563774ワット発電中さん:2006/12/11(月) 20:29:11 ID:QHU4pGZJ
process (RSTIN, CLK40M, CUR_STATE, NEXT_STATE, POUT2, STB2, LDACKX)
begin
if CLK40M'event and CLK40M = '1' then
case CUR_STATE is
when RESET =>
err_bsy <= '1';
tim_cnt1 <= 0;
tim_cnt2 <= 0;
tim_cnt3 <= 0;
NEXT_STATE <= IDLE;
when IDLE =>
if POUT2 = '1' and STB2 = '0' and err_bsy = '1' then
NEXT_STATE <= W_WAIT_LDACKX_LO;
elsif POUT2 = '0' and STB2 = '0' and err_bsy = '1' then
NEXT_STATE <= IDLE;
else
ACK2 <= '1';
NEXT_STATE <= IDLE;
end if;
when W_WAIT_LDACKX_LO =>
tim_cnt1 <= tim_cnt1 + 1;
if tim_cnt1 = 5 then
err_bsy <= '0'; -- TimeOut Error
NEXT_STATE <= IDLE;
elsif LDACKX = '0' and tim_cnt1 >= 3 and err_bsy = '1' then
ACK2 <= '1';
NEXT_STATE <= W_WAIT_LDACKX_HI;
else
NEXT_STATE <= W_WAIT_LDACKX_LO;
end if;
when W_WAIT_LDACKX_HI =>
tim_cnt2 <= tim_cnt2 + 1;
if tim_cnt2 = 5 then
err_bsy <= '0'; -- TimeOut Error
NEXT_STATE <= RESET;
elsif LDACKX = '1' and err_bsy = '1' then
ACK2 <= '0';
NEXT_STATE <= W_WAIT_ACK2_40CLK;
else
NEXT_STATE <= W_WAIT_LDACKX_HI;
end if;
when W_WAIT_ACK2_40CLK =>
tim_cnt3 <= tim_cnt3 + 1;
if tim_cnt3 = 40 then
err_bsy <= '0'; -- TimeOut Error
NEXT_STATE <= RESET;
elsif STB2 = '1' and err_bsy = '1' then
NEXT_STATE <= IDLE;
else
NEXT_STATE <= W_WAIT_ACK2_40CLK;
end if;
when others =>
null;
end case;
end if;
end process;
564774ワット発電中さん:2006/12/11(月) 20:41:30 ID:QHU4pGZJ
インデントのつけ方がわからず、すみません。。。
565774ワット発電中さん:2006/12/11(月) 23:55:49 ID:5Sh2LREu
全角でつけんだよ。やりなおせや
566774ワット発電中さん:2006/12/12(火) 00:59:34 ID:+orGOtVK
>>562
二つ目のProcess文は何でクロック同期なの?
普通この部分は組み合わせ回路にするから、クロック同期に
する必要は無いのだが。

というか、なんでNEXTSTATEをセンシティビティ・リストに書いてあるのだ?
567774ワット発電中さん:2006/12/12(火) 02:21:41 ID:2oAmLi3G
ステートの推移と代入タイミングを出力させてよく見ろ。話はそこからだ。
568774ワット発電中さん:2006/12/12(火) 06:24:16 ID:sW0d075j
>>563 じゃないけど清書
process (RSTIN, CLK40M, CUR_STATE, NEXT_STATE, POUT2, STB2, LDACKX)
begin
 if CLK40M'event and CLK40M = '1' then
  case CUR_STATE is
  when RESET =>
   err_bsy <= '1';
   tim_cnt1 <= 0;
   tim_cnt2 <= 0;
   tim_cnt3 <= 0;
   NEXT_STATE <= IDLE;
  when IDLE =>
   if POUT2 = '1' and STB2 = '0' and err_bsy = '1' then
    NEXT_STATE <= W_WAIT_LDACKX_LO;
   elsif POUT2 = '0' and STB2 = '0' and err_bsy = '1' then
    NEXT_STATE <= IDLE;
   else
    ACK2 <= '1';
    NEXT_STATE <= IDLE;
   end if;
  when W_WAIT_LDACKX_LO =>
   tim_cnt1 <= tim_cnt1 + 1;
   if tim_cnt1 = 5 then
    err_bsy <= '0'; -- TimeOut Error
    NEXT_STATE <= IDLE;
   elsif LDACKX = '0' and tim_cnt1 >= 3 and err_bsy = '1' then
    ACK2 <= '1';
    NEXT_STATE <= W_WAIT_LDACKX_HI;
   else
    NEXT_STATE <= W_WAIT_LDACKX_LO;
   end if;
  when W_WAIT_LDACKX_HI =>
   tim_cnt2 <= tim_cnt2 + 1;
   if tim_cnt2 = 5 then
    err_bsy <= '0'; -- TimeOut Error
    NEXT_STATE <= RESET;
   elsif LDACKX = '1' and err_bsy = '1' then
    ACK2 <= '0';
    NEXT_STATE <= W_WAIT_ACK2_40CLK;
   else
    NEXT_STATE <= W_WAIT_LDACKX_HI;
   end if;
  when W_WAIT_ACK2_40CLK =>
   tim_cnt3 <= tim_cnt3 + 1;
   if tim_cnt3 = 40 then
    err_bsy <= '0'; -- TimeOut Error
    NEXT_STATE <= RESET;
   elsif STB2 = '1' and err_bsy = '1' then
    NEXT_STATE <= IDLE;
   else
    NEXT_STATE <= W_WAIT_ACK2_40CLK;
   end if;
  when others =>
   null;
  end case;
 end if;
end process;
569774ワット発電中さん:2006/12/12(火) 06:31:54 ID:sW0d075j
そもそも NEXT_STATE が不要だと思う

process (RSTIN, CLK40M)
begin
  if RSTIN = '1' then
    CUR_STATE <= RESET;
  elsif CLK40M'event and CLK40M = '1' then
    この中に >>563 の begin 〜 end process; 内のものを NEXT_STATE を CUR_STATE に全て置き換えて書く
  end if;
end process;
570774ワット発電中さん:2006/12/12(火) 09:13:41 ID:UWrrBFtP
Verilogで書き直せ
571774ワット発電中さん:2006/12/12(火) 09:20:10 ID:sW0d075j
ああ

NEXT_STATE := hogehoge;

って書きたかったんじゃないかな
それなら >>566 さんの言ってるようにクロック同期にしない方がいい
572562:2006/12/12(火) 21:43:55 ID:jOHJKZWK
>>565
了解しました、以後気をつけます。

>>568
すみませんでした。やってもらって・・・。

>>566>>571
プロセスが二つだったのは、他人のVHDLを参考にしたからです。
しかもクロック同期しないとロジックが1クロック中にパラパラ変わってしまったからです。
センシティビティ・リスト・・・は、どうしてでしょうか。。。。わすれました。
NEXT_STATE := hogehoge; にしたいってよりも、参考にした他人のがそうなっていたから
なんも疑いもなく使ってしまいました。

>>567
よくみすぎて、3日もかかってしまいました。

>>570
すみません、VHDLですら精一杯です。。。

>>569
ありがとうございます!!この方法で万事解決しました!
みなさんに聞いたおかけで、次に進めそうです!
またお願いいたします!!
573774ワット発電中さん:2006/12/13(水) 02:16:55 ID:UMhsOL0f

そんなんで良かったのか

だけど理由が分かってないと
またどっかでつまずく悪寒

574774ワット発電中さん:2006/12/13(水) 12:20:46 ID:sEuOtZC0
とうとつですが quartus2で テストベンチって使えないですよね?
LPMとか 使った場合にテストベンチする方法ってあります?
575774ワット発電中さん:2006/12/13(水) 13:27:24 ID:JOnqR9cl
>>574
ハァ?
テストベンチもHDLで書くんだよ。
576774ワット発電中さん:2006/12/13(水) 13:48:23 ID:K1l37Sdz
一応、シミュレータが付いてたと思うけど
使った事無いけど
577574:2006/12/13(水) 15:36:02 ID:sEuOtZC0
HDLでかくのは 知ってます。
xilinxで無料で使用できるmodelsimとかでは 
テストベンチ使って データファイルを入力したり、
結果をファイルとして出力できたんですけど、
Quartus2だけでも 同じことができるんですか?

Arteraの論理シミュレーションのAlteraModelSimにはコードの行数制限が
あったものですから、Quartul2でできるのかなぁと ぎもんにおもったわけです。
578774ワット発電中さん:2006/12/13(水) 15:41:03 ID:hafoyBwN
こんなところに書き込み暇があるなら、まず自分で試せ!!
579574:2006/12/13(水) 15:43:09 ID:sEuOtZC0
追記ですが、
774は HDLソースの中に 部品としてLPMで生成した回路をコンポーネントしている場合
汎用のシミュレータが使えないけど、Quarutsでテストベンチはしらせることが
出来るんですか?という質問です。
580574:2006/12/13(水) 15:44:05 ID:sEuOtZC0
自分のやり方では 出来なかったもので・・・・
581774ワット発電中さん:2006/12/13(水) 22:11:41 ID:cq8G8GoW
>>574
ModelSim for AE&WE が今はダウンロードできて、使える。
期間限定無償提供中。

ttp://www.altera.co.jp/support/software/download/sof-download_center.html

で、汎用シミュレータは使えないがシミュレーションモデルライブラリがあるので、
それを組み込めば使える。

少なくともXilinx版WEのModelSimで、LPM_MULTは使える。
582574:2006/12/13(水) 22:48:46 ID:sEuOtZC0
>>581
Xilinx版のWEのModelSimに、AlteraのModelSimのライブラリを組み込むってことでしょうか?

それは、Altera版の期間限定無料提供されているModelSimを使うより、利点があるんですか?
行数制限がなくなるのかな?
583774ワット発電中さん:2006/12/13(水) 23:39:02 ID:HhavrneC
もうWindowsのシミュレーターでの検証はできないからだになってしまった
ModelSimもSE、VCS NC・・・
584774ワット発電中さん:2006/12/13(水) 23:54:29 ID:KMMKPjjT
お前ら、何の仕事をしていらっしゃいますか?
585774ワット発電中さん:2006/12/14(木) 00:16:52 ID:zIH5T/vP
学生ですが何か
586774ワット発電中さん:2006/12/14(木) 00:19:43 ID:RIUNRKFv
>>584
オトナ向け通販
587774ワット発電中さん:2006/12/14(木) 00:19:56 ID:5mFOLkSS
うんこ製造業
588774ワット発電中さん:2006/12/14(木) 00:57:37 ID:TyjbzHDO
2歩進んで3歩退がる業
589774ワット発電中さん:2006/12/14(木) 01:46:35 ID:woXhg7ew
>>583 SCIROCCOとか?
590774ワット発電中さん:2006/12/14(木) 03:24:37 ID:r+HrupJk
21.477MHz のクロックから 12.000MHz のクロックを生成する回路を
HDLで書くとどうなりますか?
591774ワット発電中さん:2006/12/14(木) 12:01:59 ID:Uic28Mz8
DLL/PLL一発
592774ワット発電中さん:2006/12/14(木) 20:21:56 ID:WeHvKddN
VHDLの勉強中なのですが、よく入力端子名でclr_bというようなものを見かけますが
この_bというのは何か意味があるのでしょうか?
593774ワット発電中さん:2006/12/14(木) 20:58:06 ID:ZZyInKRY
594774ワット発電中さん:2006/12/14(木) 21:49:34 ID:rhEqnCkP
負論理を意味する。
つまり、clr_b = 0のときにクリアで、
clr_b = 1のときにクリアしていないということを表す。
595774ワット発電中さん:2006/12/15(金) 01:24:23 ID:PE0axI2a
>>592
今頃VHDLなんか勉強してどうする?
596774ワット発電中さん:2006/12/15(金) 03:57:16 ID:llyM0few
>>582
少し前までは、ModelSimの無償版は、Xilinxのみだった。
今もAltera版は期間限定だから、この先はまた無くなる予定。

だから、Xilinx版を使っていただけ。
597774ワット発電中さん:2006/12/15(金) 07:59:40 ID:yH56z8DP
PROCESS(hoge)のhogeの部分に書くものにはどういったものがあるのでしょうか?
クロックやリセットといったトリガになるものがかかれているときと
入出力が書かれている場合とがあってよく分からないのですが…
598774ワット発電中さん:2006/12/15(金) 08:10:06 ID:HyD4Jtke
入力だけ書く
599774ワット発電中さん:2006/12/15(金) 18:48:13 ID:g30ip5Yk
> 入出力が書かれている場合とがあって
その一例を挙げてください。
出典も明記して。
600774ワット発電中さん:2006/12/16(土) 13:54:38 ID:CJN44RQM
procedureと間違えてるんじゃないの?
601774ワット発電中さん:2006/12/16(土) 17:53:07 ID:2OtSMgmo
inoutを組合せの入力として使ってるんだろ
602774ワット発電中さん:2006/12/17(日) 01:28:24 ID:1SmQXV9d
これは、記述言語云々の話じゃ無いのかもしれませんが…

検証済みだけれど内部仕様の詳細がわからないRTLがあって、そのIF仕様を変えたい場合、
既存のRTLに手を入れるのと、仕様差を吸収する回路を外付けするのと、どちらが良いと思いますか?
回路を外付けした場合の回路規模・消費電力へのインパクトは、ほとんど無視できるとします。

以下詳細。
外部からデータを16bit×2cycleで受けて処理をする回路の、Verilog記述のRTLが手元にあります。
どうやら「32bit×1」で処理する箇所に、「16bit×2→32bit×1」の回路を付けている構成のようです。
それほど複雑な作りではありませんが、内部仕様書は存在しません。設計者もすでにいません。
ただし、検証済&実績有ということで、これをこのまま使うのはOKということになっています。

これを使って、外部からデータ幅8bitで受ける回路を作りたい場合、

1. 「16bit×2→32bit×1」の部分を取り払って、「8bit×4→32bit×1」の回路を作って入れ換える。
2. 「8bit×2」を渡す回路を作って外付けする。

私は、工数に多少の余裕があっても、2の方が安全で良いかと思うのですが、
しっかり検証すれば問題ない、1にして無駄を省くべき…と言われると、なかなか反論出来ず。
603774ワット発電中さん:2006/12/17(日) 02:47:59 ID:BRT0N6DA
遅延は?
604774ワット発電中さん:2006/12/17(日) 03:56:29 ID:OTKb9kvW
>>602
2の方が良いと思われるならそれを納得してもらうべきでは?
結局検証が必要だから安全かどうかは保障できないと思いますが。
2だとアクセス速度落ちるんだろうな、きっと。
605774ワット発電中さん:2006/12/17(日) 07:57:21 ID://95GkOT
>>602
全部作り直せ。どうせバグでお前のせいにされる。
606774ワット発電中さん:2006/12/17(日) 09:01:11 ID:BRT0N6DA

607774ワット発電中さん:2006/12/17(日) 09:02:29 ID:BRT0N6DA
608774ワット発電中さん:2006/12/17(日) 09:13:24 ID:4ps1Mxwp
>>602
修正した回路を使い回す場合、今回は気にならなかった回路規模が、次の開発では回路規模で
ネックになる可能性があるので、工数が取れる今のうちに修正したいという考えもある。

IO周りの回路をparameter化すると楽しいかも。
609774ワット発電中さん:2006/12/17(日) 10:38:33 ID:kyGSIvnB
「検証済」ってところが本当にそうなのかが問題だと思う。
本当にそうなら、検証に使用したテストペンチ環境やテスト仕様があるはずで
RTLに手を入れた後にそのテストベンチ使って再検証すればいいだけ。

もし検証済みで信頼していいと*聞いているだけ*だったら
それはもはや宗教や信仰の問題。とても「検証済」という状態ではない。
そうだったら「聖なるゆえに不可触なコード」として扱って外付け回路で
なんとかすればいいよ。実際に動くかどうかはわからないが
信仰心は満足されることだろう。
610774ワット発電中さん:2006/12/17(日) 13:01:39 ID:1SmQXV9d
>>603-609
回答、ありがとうございます。

そうですね…2でバグ出したら、>>605さんの言う通りになるんだろうけど、
作り直したがためにバグ出しても、当然責められるんで…。

間違いなく動きさえすれば、速度も遅延も大きさもほぼ問題にしないので (例えば、2の回路で100cycleかけちゃってもOK)
今回は外付けで作って、その後に次回以降のために修正を検討する…という方向で説得してみます。
相手はただただ、無駄な回路が存在することを嫌悪してるだけなので。


>>609
使用する機能を限定した検証環境は残されてて、それは問題無さそうなので、
その範囲で使う限りにおいては「検証済」としています。
…これ、使わない回路が「無駄」になってるんですけどね。それは良いらしい。

ただ、それ以外の機能の検証が出来ないので、
後戻り出来ないところまで進んでから、出来るなら他の機能も使いたい…となった時(よくある)、
改造によってその機能が使えなくなってた…とかだと嫌なので、中はいじりたくない、という思いもあります。
現時点で使用する予定がないので、その理由では受けいれてもらえないのですが…。

もちろん、別途時間取って検証環境は作るもりですけど。このままなら使える、という根拠が手元に全く無いので。
今回には間に合いませんが。
611774ワット発電中さん:2006/12/17(日) 14:50:27 ID:BRT0N6DA
>>610
>相手はただただ、無駄な回路が存在することを嫌悪してるだけなので。

いや、当時の設計担当者も仕様書もない得体の知れない回路を捨てたいんだと思うよ。
612774ワット発電中さん:2006/12/17(日) 16:35:28 ID://95GkOT
>>610
検証済みの回路に外付け回路を付加して検証済みの回路の検証環境が利用できるのかなあ
だったらだれも苦労しなかった
613774ワット発電中さん:2006/12/17(日) 19:14:47 ID:BlvhZdIE
動いてるものは神が宿ってるから、触らぬ神に祟りなし
このコメントを外したり変えたりするとビルドが通らない、呪いのコメント
614774ワット発電中さん:2006/12/17(日) 22:17:40 ID:wLlCQ8Q7
割り込み失礼、液晶に "Hellow world"って表示したいんだけど、文字列定数ってどう書くの?
VHDLでストリングス型をstd_logic_vectorに代入しようとしたらnumericじゃないって怒られた。
Verilogでもいいので教えてくだちい。
615774ワット発電中さん:2006/12/17(日) 22:31:43 ID:BlvhZdIE
>>614
一文字ずつ切り出さないと無理
616774ワット発電中さん:2006/12/18(月) 00:08:29 ID:KizRVYrz
生きていればイイコトもある






しかし、嫌なことはもっと もっと いっぱいある
617614:2006/12/18(月) 00:13:16 ID:H4WZD5rU
verilogだと
 reg [8*13-1:0] stat="Hellow World!";
って書くと入るみたい。合成できるかな。

VHDLは
library IEEE;
use IEEE.std_logic_1164.all;

entity HellowWorld is
 port( dat : out std_logic_vector(7 downto 0) );
end HellowWorld;

architecture RTL of HellowWorld is
 signal s: string(13 downto 1) := "Hellow World!";
begin
 dat <= std_logic_vector(s(1));
end RTL;

って書くと、ModelSimで
# ** Error: C:/eng/xilinx/bin/test/TestFrqgen.vhd(15): Illegal type conversion from character to std_logic_vector (non-numeric to array)
ってなってしまう。
618774ワット発電中さん:2006/12/18(月) 01:38:32 ID:OlmS9m76
つまり
std_logic_vector(asc(s(1)))
みたいに書けば通る可能性がある訳ですな
619774ワット発電中さん:2006/12/19(火) 00:42:12 ID:SRiXAcyg
use ieee.std_logic_arith.all;
...
signal dat : std_logic_vector (12 * 8 - 1 downto 0);
...
dat (12 * 8 - 1 downto 11 * 8) <= conv_std_logic_vector (character'pos ('H'), 8);
dat (11 * 8 - 1 downto 10 * 8) <= conv_std_logic_vector (character'pos ('e'), 8);
dat (10 * 8 - 1 downto 9 * 8) <= conv_std_logic_vector (character'pos ('l'), 8);
...
620774ワット発電中さん:2006/12/19(火) 00:51:10 ID:S2FhNCWT
RTL素人です。

ラッチをつくりたいのですが、

Latch ( gin, din, qout )
input gin;
input [7:0] din
output [7:0] qout

reg [7:0] qout;
always @( gin, din )
if ( gin )
qout <= din;

なぜか、gin=0 のとき、ラッチがスルーしdin をホールドすることがあるのです。
XILINXのISE8.2のISEsimを使用。
P&R後のネットリストSimだと、予定の動作をします。
621774ワット発電中さん:2006/12/19(火) 04:07:39 ID:5Mnz9n43
if ( gin )
qout <= din;
else
qout <= qout;
622774ワット発電中さん:2006/12/19(火) 07:41:41 ID:5xf6RMMv
解決のヒントをください。VHDLです。

process (S, R) is begin
if S'event and r = '1' then
q <= '1';
elsif R'event and c = '1' then
q <= 0;
end if;
end process;
:
のような、SとRの立ち上がりに同期したSR-FFを作りたいのですが、
このコードでは、論理合成できませんでした。
SIGNAL S cannnot be synthesized , bad synchronous description
というエラーが出ました。
ビヘイビアシミュレーションでは所定の動作をしました。

二つの入力に同期する回路はできないでしょうか?
623774ワット発電中さん:2006/12/19(火) 08:29:01 ID:iicimmN0
>>622
それはターゲットデバイスに依存する話だな
FPGAで非同期SR-FFが実現できるデバイスはまずないだろう
古いテクノロジーのASICで非同期SR-FFのライブラリがあるならできるとは思うけど
新規設計だったらそんな酔狂なことは避けた方が吉だろ
624774ワット発電中さん:2006/12/19(火) 08:31:20 ID:iicimmN0
補足
Sが同期でRが非同期動作でいいならできると思うぞ
非同期CLRがついてる同期FFを使えばいい話になるからな
625774ワット発電中さん:2006/12/19(火) 09:10:13 ID:pHvpsftq
論理合成ツールは先ず合成不可だよな。
こっちが、意図せずにフィードバック構成にしててもコンパイラが止めてくれる
非同期RS-FFのライブラリを持つFPGAってあるの?
626774ワット発電中さん:2006/12/19(火) 16:01:54 ID:A2r4Gfjc
TTL世代ならたすき掛けだ!

wire q, q_b;
assign q = ~set_b | ~q_b;
assign q_b = ~reset_b | ~q;
627774ワット発電中さん:2006/12/19(火) 20:40:56 ID:/kvR1OmO
> TTL世代ならたすき掛けだ!
いや、それが唯一の正解じゃないの?
628622:2006/12/19(火) 22:52:04 ID:dqP3ZobB
>>623
そうなんです。私も非同期回路は使いたくないのですが。。。

あと、言葉足らずですみません。実現したい回路を説明します。
動作は・・

入力:SET , RESET 出力:Q
とすると、
SETの立ち上がりでQ=1
RESETの立ち上がりでQ=0
となり、QはSET,RESETの立ち上がりでのみ変化する。
これは非同期回路ではないと不可能ですよね?

ちなみにデバイスはXC9572でModelsimXE3 6.0aを使っています。
629774ワット発電中さん:2006/12/19(火) 23:51:10 ID:iicimmN0
CPLDじゃ絶対無理
630614:2006/12/20(水) 00:09:05 ID:Yad1lPU+
>618 試してみたけどVHDLでもverilogでもascは無いって言われる。



リソースは食うけど、Verilogで、このあたりが実用的書き方かな。
  output wire[7:0] ch;
  reg [13*8-1:0] str;

  assign ch=str[13*8-1:12*8];
  always @(posedge clk or posedge rst)
  begin
    if(rst)
      str<="Hellow World!";
    else
      str<=str<<8;
  end
ビッグエンディアン?なあたりがちょっといや。メーカー依存したりしそう。
631774ワット発電中さん:2006/12/20(水) 00:09:19 ID:2eF5Ck7N
XC9500シリーズのデータシートより抜粋

The macrocell register can be configured as a D-type or
T-type flip-flop, or it may be bypassed for combinatorial
operation. Each register supports both asynchronous set
and reset operations.

非同期セット/リセットがあるんだから物理的にはできる。
論理合成は別の話。
632774ワット発電中さん:2006/12/20(水) 00:49:10 ID:K0TVBxV5
>631
その async. set/reset はレベルだから、
RESET を上げたままの時に SET の立ち上がりを認識しない。
633774ワット発電中さん:2006/12/20(水) 07:24:52 ID:50T6g7Y9
>>628
非同期クリアのFFで出来そう。
634774ワット発電中さん:2006/12/20(水) 10:43:21 ID:z+41+vft
>>628
微分用のコンデンサ外付けで良ければ出来そう。
635774ワット発電中さん:2006/12/20(水) 12:43:42 ID:qAbTytMA
外付け部品使うくらいなら74xx279使えばいいだけの話
636774ワット発電中さん:2006/12/20(水) 14:12:56 ID:maxZxlYn
>>628

何が制約条件なのか読み取れないなぁ。

SET,RESETそれぞれの立ち上がりからQの変化までのディレイは何nsまで許されるのかが重要なのはわかっている?
非同期回路で作れば伝播遅延分だけのディレイが発生する。
同期回路で作れば1クロック以上のディレイが発生する。
従って、一般的には非同期の方が反応は速い。
しかし、1クロックや2クロックのディレイが問題になるようなシステムはそうそうあるもんじゃない。
だから同期で立ち上がり検出回路を作るのが普通だと思うが・・・
637774ワット発電中さん:2006/12/20(水) 19:40:30 ID:qAbTytMA
S/Rに入力される信号がクロックに同期していれば問題ないが
真に非同期なら、メタステーブル対策で2段D-FFかますと想定して
平均4〜5クロック 最悪10クロックは遅れるぞ
638774ワット発電中さん:2006/12/20(水) 20:25:58 ID:WEy5/6to
そもそも入力が同期してるならSRにする必要がない訳で
639774ワット発電中さん:2006/12/20(水) 21:40:06 ID:Scsryvlu
626 :774ワット発電中さん :2006/12/19(火) 16:01:54 ID:A2r4Gfjc
TTL世代ならたすき掛けだ!

wire q, q_b;
assign q = ~set_b | ~q_b;
assign q_b = ~reset_b | ~q;


627 :774ワット発電中さん :2006/12/19(火) 20:40:56 ID:/kvR1OmO
> TTL世代ならたすき掛けだ!
いや、それが唯一の正解じゃないの?
640774ワット発電中さん:2006/12/20(水) 23:40:55 ID:sdyzGmyd
D−FFを2個用意して、SとRは、それぞれのクロックにつっこむ。
2個のFFのQをXOR取って、出力とする。
S側のFFは、出力が0の時にクロック(S入力)でQが反転するようにしておく
(出力が1の時は反転させない)
R側は、出力が1の時に反転するようにする。
↑どうよ
641774ワット発電中さん:2006/12/20(水) 23:59:09 ID:Q++ASdUS
RS-FFで何したいのだろう?
MBM接点のチャタリング除去とか?w
642774ワット発電中さん:2006/12/21(木) 00:30:30 ID:vfYzEg06
RS-FFだけど実際に合成できた様に見えてても
PLDに書き込んだときちゃんと動かなかったことがある
643637:2006/12/21(木) 02:49:52 ID:2BWrQQHW
>>637

ツッコミありがとう。
元々が非同期ならここだけ非同期にすることに悩むこともないんじゃないか?
と読んでいるんだけど、本人が出て来ないね。
あと、本当に非同期だとすると、SとRがほぼ同時に立ち上がることは想定しているのかどうか興味あるなぁ。
644774ワット発電中さん:2006/12/21(木) 05:12:01 ID:fQvUkC5Y
VHDLでn入力を持ちn個の入力のうち'1'になっているものが2個ある場合'1'を出力する回路のうまい書き方を教えてください
645774ワット発電中さん:2006/12/21(木) 05:14:43 ID:fQvUkC5Y
ちょうど2個のときだけ'1'でお願いします
646774ワット発電中さん:2006/12/21(木) 07:28:04 ID:NMLIbxgf
>>644
下位ビットから0、1、2以上を引っ張って来て、上位に出す。
647774ワット発電中さん:2006/12/21(木) 08:37:00 ID:s1DRnPQR
>>643
たしかにね

クロック周波数100MHz(T=10ns)として
非同期ドメインで、Sが立ち上がった50ns後にRが立ち上がった場合
SはSetupTIME違反でメタステーブル起こして伝播に7クロックかかったが
Rはすんなり通って伝播に2クロックだけで済んだって話になると
同期クロックドメインではSとRが同時に立ち上がったように見えてしまうよな

深く考えると難しい問題だ
648774ワット発電中さん:2006/12/21(木) 09:34:04 ID:fQvUkC5Y
>>646
ありがとうございました 0、1、2、3以上でちょうど2のときだけ'1'をできそうです
649774ワット発電中さん:2006/12/21(木) 11:05:53 ID:q438zVHg
ん?それで分かったのか。すごいな。
650774ワット発電中さん:2006/12/21(木) 11:30:45 ID:fQvUkC5Y
理解するのに時間かかりましたが・・

Port( a : in std_logic_vector( 23 downto 0 );
    o : out std_logic );

architecture Behavioral of test is

begin
 process ( a )
  variable tmp : integer range 0 to 3;
 begin
  tmp := 0;
  for i in 0 to 23 loop
   if ( a(i) = '1' ) then
    tmp := tmp + 1;
   end if;
  end loop;
  if ( tmp = 2 ) then
   o <= '1';
  else
   o <= '0';
  end if;
end process;

end Behavioral;
651774ワット発電中さん:2006/12/21(木) 16:39:35 ID:fQvUkC5Y
tmp < 3 の条件を入れるのを忘れた
652774ワット発電中さん:2006/12/21(木) 17:06:03 ID:fQvUkC5Y
なんかまずいことをしたのかと不安になってきた・・・
653774ワット発電中さん:2006/12/21(木) 19:12:57 ID:QYlihZvp
まずいことしたな。
マルチは死ぬように定められている。
654774ワット発電中さん:2006/12/21(木) 19:15:35 ID:QYlihZvp
>>653は誤解のようだ。ごめんよ。
655774ワット発電中さん:2006/12/21(木) 19:32:17 ID:QYlihZvp
> integer range 0 to 3;
rangeで制限してexitで抜けるより、rangeなしでそのままの方が小さくなる気がする。
Behavioralとかあるから、どうでもいいのかもしれないけど。
656774ワット発電中さん:2006/12/21(木) 19:41:48 ID:QYlihZvp
・・・あ、あれ?

exitなんかありえないな。
>>651とかrange 0 to 3も意味不明だ。
上のでrange取ったら正解じゃないの?
657774ワット発電中さん:2006/12/21(木) 20:17:08 ID:fQvUkC5Y
>>656
えっとbitを数えあげるのではなくて'1'が2個のときだけ'1'を出すので3は3以上という意味なので
tmp < 3で増えないようにしているんです ただ tmp が 3 のときに +1 したらどうなるか知らないので
もし3のときに+1しても3のままなら tmp < 3 の条件はいりませんが・・

これある回路で使う予定なのですが心配になってきたのでテストします・・
Xilinxのシミュレータがインストールされてないみたいなのでハード上で・・
658774ワット発電中さん:2006/12/21(木) 20:29:49 ID:vfYzEg06
tmp == 3 のときは +1 せずに exit だろ?

っつーか論理回路記述と普通のソフトウェアプログラミングを混同してませんか?
659774ワット発電中さん:2006/12/21(木) 20:36:36 ID:fQvUkC5Y
VHDLのfor generateは展開されるマクロみたいなイメージなんですが
process内のfor loopは理解が曖昧です・・

exitというのを知らなかったので if ( a = '1' and tmp < 3 ) のように書いてました・・・
660774ワット発電中さん:2006/12/21(木) 20:46:28 ID:fQvUkC5Y
無理やりC言語風に考えると

同時処理文の数だけスレッドが作られて(各スレッドは他のスレッドの出力を読める)
process文はスレッドの最初でprocess( )内に入ってる信号が変化するたびに
中の順次処理文を瞬時に実行していくみたいなのでいいんでしょうか

ttp://www.vhdl-online.de/tutorial/englisch/inhalt.htm
ここの合成のところをちゃんと読んできます・・
661774ワット発電中さん:2006/12/21(木) 21:19:51 ID:q438zVHg
フルアダーってあるでしょ。
あれ、3ビットの入力のうち1の数を数えて2ビットで出力する組み合わせ回路なんだよね。
この考え方を応用すると組み合わせ回路だけでnビットの入力の1の数を数える回路を作ることができる。
662774ワット発電中さん:2006/12/21(木) 21:28:29 ID:fQvUkC5Y
はい、これ書く前に書いた真理値表がフルアダーに近いやつです

n段目
AI BI 前段からの入力
AO BO 次の段への出力
IN 入力のnビット目

AI BI IN AO BO
0 0 0  0  0
0 0 1  0  0
0 1 0  0  1
0 1 1  1  0
1 0 0  1  0
1 0 1  1  1
1 1 0  1  1
1 1 1  1  1
663774ワット発電中さん:2006/12/21(木) 21:39:34 ID:NMLIbxgf
>>648
おまいは出来る子かもしれないな
664774ワット発電中さん:2006/12/22(金) 00:16:32 ID:qNq+GAQC
>>662
AI = 0, BI = 0, IN = 1のときが違う。
{AI, BI}で下位桁の1の個数を表しているんだよね。
このときの出力は
AO = 0, BO = 1じゃないのか?

気づいていると思うけど。
665774ワット発電中さん:2006/12/22(金) 01:33:08 ID:O88Zibdr
すんません。ちょとわかる方いたら教えてもらいたいんですけど、
ARRAYでブロックRAMを利用した回路をmodelsimでシミュレーションしたんですが、
実行中にFatal Errorが出てしまいました。
↓のように型変換をしているのですが、これなんかマズイとこありますかね??


subtype DATA_32_WORD is std_logic_vector(31 downto 0);
type DATA_W_B0 is array (0 to 4) of DATA_32_WORD;
signal a_DATA_W_B0 : DATA_W_B0;

signal r_BUFF_ADDR_W: std_logic_vector(3 downto 0);


a_DATA_W_B0( to_integer(unsigned( r_BUFF_ADDR_W )) ) <=r_DATA_W;
↑ここでFatal Error...
666774ワット発電中さん:2006/12/22(金) 02:04:11 ID:/3YWkM07
>>665
r_BUFF_ADDR_Wは4ビット(0-15)で、a_DATA_W_B0が5ワード(0-4)だからじゃないか?

もしかするとtype DATA_W_B0 is array (0 to 15) of DATA_32_WORD; で16ワード欲しかったのか?
667774ワット発電中さん:2006/12/22(金) 02:04:12 ID:74CFrb//
to_integer(unsigned( r_BUFF_ADDR_W ))
の取りうる値の範囲は?
668774ワット発電中さん:2006/12/22(金) 02:49:10 ID:O88Zibdr
>>666-667
あっーーー!
それでした!a_DATA_W_B0を16ワード欲しかったんですw
何を勘違いしてたのか5ワードで定義してました
直したらうまくシミュレーションできました。
あー、恥ずかしや。。的確なアドバイスどうもありがとうございました
669774ワット発電中さん:2006/12/22(金) 04:14:59 ID:74CFrb//
1秒差か・・・
670774ワット発電中さん:2006/12/23(土) 03:23:23 ID:3A7OX+59
合成とかのスクリプト系でお勧めの本があえば教えてplz
671774ワット発電中さん:2006/12/23(土) 08:47:45 ID:BS5GgeDO
VHDLでステートマシンを書いてるのですが、クロック信号に依存せず
一定時間待機させるような事はできないのでしょうか?
672774ワット発電中さん:2006/12/23(土) 08:55:42 ID:AG4glbw+
デジタル回路では無理だと思います(外部のコンデンサでアナログ的にやる以外)
673774ワット発電中さん:2006/12/23(土) 10:07:12 ID:OSazYQPQ
ISEで論理合成の途中で1時間ぐらい掛かってるんだけどこれって普通?
1Mbit位のSRAMとROMなんだけど延々とローレベルシンセサイズ始まったところで延々と計算してる
674774ワット発電中さん:2006/12/23(土) 10:49:45 ID:nm4hoJxb
>>671
できるよ

インバータを偶数個つなぐと遅延するよ
2個で2ns遅れるなら100個で100nsだね!
配線リソースをつかいまくるのもいいよね
>>672さんのいうCRを内部に持つようなイメージだね


まあ俺はやらないけど
675774ワット発電中さん:2006/12/23(土) 12:05:14 ID:xriFKKj/
> インバータを偶数個つなぐと遅延するよ
なんとなく、実際にやったことがない人のレスのような気がする。

>>671
デバイス依存、環境依存で誤差が大きくてもよければ可能。
VHDL上では、after使えば遅延は書けるが合成はできない。
通常はコンパイラ側の何らかの設定が必要。
676774ワット発電中さん:2006/12/23(土) 12:45:23 ID:qcEE6Rxg
複数のsourceに値の違うtimescaleが書いてあると、それぞれの有効範囲はどのようになるんでしょう?
677774ワット発電中さん:2006/12/23(土) 13:10:37 ID:UFLIEBuR
次に`timescaleが現れるまで有効
678774ワット発電中さん:2006/12/23(土) 15:27:54 ID:S6EuX5b3
>>673
BlockRAMに推定されてないな
LUTに合成してるんじゃないか?
679774ワット発電中さん:2006/12/23(土) 18:36:18 ID:u5xPgIho
>>676
verilogの`timescaleとか`defineは複数のソースファイルに渡って有効という恐ろしい仕様。
なので同じ記述でもコンパイラにソースファイルを読ませる順によって違う結果になったりする。
680774ワット発電中さん:2006/12/23(土) 18:49:34 ID:QgQzHvJZ
ファイルリストつくって順番を正しく管理するのが吉
大抵のSimツールは-fで読み込めるからだいじょうV
681774ワット発電中さん:2006/12/23(土) 22:47:15 ID:OSazYQPQ
>>678
さっきバイトから帰ってきても未だに終わってなかったww
とりあえずおかしいってことか…書き直してもう一度チャレンジする。
最後になったがサンクス
682774ワット発電中さん:2006/12/23(土) 23:37:57 ID:C2frpUnB
>>679

Verilogには元々ファイルという概念がないからね。
Verilog-XLは一つのモジュールを二つのファイルに分けて書いてもokだった。
昔の話だから今は知らないけど。
683774ワット発電中さん:2006/12/24(日) 00:51:37 ID:we+Ka8C0
>>675
一応、ASICのクロックラインのスキュー調整とかでやったことがあるよ。
FPGAではやったことないけど、デバイスのセルのLUTを直接記述するとかすれば
多分できるのだろうなとは思う。

ステートマシンのどこにどういう風に必要なのかが興味深いなぁ。
684774ワット発電中さん:2006/12/24(日) 11:11:13 ID:BzOtytWw
>>681
えー、諦めちゃうのー?   w
>>683
あと、「勝手に最適化しない」みたいな設定があるツールもあったような・・・
> ステートマシンのどこにどういう風に必要なのかが興味深いなぁ。
671さん、漏れも聞きたいよ。
685774ワット発電中さん:2006/12/24(日) 15:28:30 ID:6nbtGlqS
>>683
クロックの違うデバイスからコマンドを受け取るときやらないか
686671:2006/12/24(日) 17:03:32 ID:B986QD+Q
色々レスありがとうございます
どうも無理そうなので諦めることにします
目的としてはステートマシンから制御するICの
セットアップタイム待ちをさせたいと思ってました
687774ワット発電中さん:2006/12/25(月) 00:23:15 ID:7WD+Xs/V
出力側かぁ
タイミング制約を(Xilinxなら.ucfとか)書いてやれば合成ツールが
多少がんばってくれるんじゃないかな
入力なら石によっては0.25ns刻みとかでずらせたりするのもあるけど。
688774ワット発電中さん:2006/12/25(月) 06:36:31 ID:LYykcjqn
シンクロナイザを作りたいのですが、わからないところがあるので質問させてください
FPGA外部の回路からの入力をD-FFを使って内部のクロックと同期させたいです。
ただし、内部のメインクロックが50MHzであるのに対し、
外部から取り込む周波数はメインクロックを分周した508=6.25MHzとなっています。
素直に50MHzで取り込まないのはカウンタを回したりごちゃごちゃしたことをやりたいためです。
この場合、完全な同期回路でないことを覚悟で、50MHzを分周し6.25MHzをD-FFのクロックとするか、
もしくは次のように行うか、どちらがよいのでしょうか?ご教授願います。
process(clk50,clk625,din)
begin
if(clk50'event and clk50='1')then
if(clk625='1')then
if(done='0')then --6.25MHzがHの時に一度も実行してなければ
  ----シンクロナイザの回路----
done<='1';--完了フラグを立てる
end if;
else
done<='0';--6.25MHzがLの時に完了フラグクリア
end if;
end if;
end process;
ただしclk50=50MHz、clk625=6.25MHzです。
689774ワット発電中さん:2006/12/25(月) 07:52:05 ID:3F2arbdu
>>688
6.25MHzをDFFのenableにする
690774ワット発電中さん:2006/12/25(月) 23:14:57 ID:cJgNcEu7
>>689
ありがとうございます。
ですが、その回路ではDFFがenableとなっている間に、
50MHzが4回ほど立ち上がり、データがDFFを4つ分取り込んでしまいます。
私の説明不足でしたが、データは6.25MHzの周期で取り込みたいのです。
その場合、DFFのクロックを6.25MHzにすれば行えます。
ただそうしてしまうとメインクロックの50MHzと非同期になってしまうので
困っています。
691774ワット発電中さん:2006/12/25(月) 23:37:01 ID:fXroTlM5
50MHz で、6.25MHzの立ち上がりエッジを検出すればいいのでは?

reg d0,d1;
wire rise= d0 & !d1;
always @(posedge clk50) begin
d0<= clk625;
d1<= d0;
end

Verilog でスマソ
692774ワット発電中さん:2006/12/26(火) 00:16:44 ID:9sqFRRfD
ふと疑問に思ったのですが、VHDLのAFTERはSynthesisする際、どのように解釈されるのでしょうか?
693774ワット発電中さん:2006/12/26(火) 06:31:08 ID:N59SCNBN
>>691
やはり6.25MHzの立ち上がりエッジを検出することになるのですね。
解決しました。ありがとうございます。
694774ワット発電中さん:2006/12/26(火) 07:25:05 ID:J94oe5xB
>>692
一般に合成時にはafter節は無視される
695774ワット発電中さん:2006/12/26(火) 15:54:42 ID:9sqFRRfD
>>694
とゆうことはAFTERはシミュレーション用ということでしょうか?
696774ワット発電中さん:2006/12/26(火) 21:17:02 ID:J94oe5xB
>>695
そういうこと
言い方を変えると、afterを使ったらそれはもう合成可能なRTL記述ではないのだ
697774ワット発電中さん:2006/12/26(火) 21:23:16 ID:9sqFRRfD
>>696
勉強になりました。レスありがとうございます
698774ワット発電中さん:2006/12/28(木) 03:44:04 ID:F1luBXwq
>>682
横レスですが…
Verilog-XLってそんなに古いんですか?

質問です。
HDL記述したものを論理合成ツールで論理合成したときに、
タイミング違反をチェックしてOKが出るのに、
そのネットリストから生成された回路ファイルをVerilogシミュレータに掛けると
タイミング違反を出します。
このシミュレータのタイミング違反を回避するにはどうしたらよいのでしょうか?
HDLの書き方が悪いのでしょうか?
699774ワット発電中さん:2006/12/28(木) 07:16:33 ID:sfYDJoGd
>>698
HDLの記述法というよりは、回路設計そのものがダメって可能性のほうが高いぞ

単一クロックで完全同期回路にしてればこのような問題は起きないはずなのだが
もしかして複数のクロックドメインがあるのかな? 非同期の部分については
合成時にタイミング検証しない場合が多いよ

情報が全然ないので言えるのはこの程度の一般論だけだ
700774ワット発電中さん:2006/12/28(木) 07:38:35 ID:S1xag9NI
>>698
パターンの入力が悪いんだろ。
701774ワット発電中さん:2006/12/28(木) 13:52:42 ID:hCPB/oDN
そういう質問するなら

 ソ ー ス を 晒 せ

話はそれからだ
702774ワット発電中さん:2006/12/28(木) 23:51:00 ID:ckN8rXrT
>>698
合成後のネットリストでゲートレベルsimをやっているんだろうか?
シミュレーションでタイミング違反が出るってのがそもそも少し変わった状況な気がするが、
どこかのセルかモジュールにspecifyとかの記述があるんだろうか。
テストベンチは自分で書いたの?
とりあえずこの辺に注意・・
・timescale
・入力信号の生成(特にクロック)
・遅延のないRTL記述と遅延つきのモデルが混在してるとややこしい
703774ワット発電中さん:2006/12/29(金) 00:11:01 ID:Zj4nC8zM
>>699,>>700.>>701,>>702
ありがとうございます。
1つずつ検討して行きたいと思います。

704774ワット発電中さん:2006/12/29(金) 00:16:42 ID:Yh2bHVIZ
ふと思ったんだけど・・・

for-generateとかってラベル要りますよね。
for-loopは要らないですよね。
なんでだろ。

ラベル貼っても有効な使い道が分からない。
705774ワット発電中さん:2006/12/29(金) 00:48:16 ID:vUAex7eR
>>704
ヒント:インスタンス名
706682:2006/12/29(金) 03:21:34 ID:LXrC3gD7
>>698

自分がGateWayのverilogシミュレーターを使い出したのは1988年だった。
ちなみにプラットホームはSun3で主記憶は16MByte。
最近はもっぱらVCSなのでCADENCEのは全くわからん。

ゲートシミュレーション時にタイミング違反が出るのは順当に考えれば
・合成の制約が間違っている
・シミュレーションで使ってるクロックの周期が間違っている。
(特にtimescaleに注意ね)
・クロックツリーがツリーがないのにシミュレーション時にidealにしていない。
・シミュレーション環境が間違っている。
ざっと思いつくのはこのあたりかなぁ。

まぁ、しかし、エラーを起こしたところの波形を見れば直ぐにわかる話だとは思うが。
707774ワット発電中さん:2006/12/31(日) 04:55:36 ID:pGsdoCVo
>>697

そういう処理系が多いですね。
でも、言語仕様的には明確には定められていなかったような気がします。

最近のシミュレータは「プロジェクトファイル」や「リストファイル」のような
もので複数のファイルを管理するものが多いですが

`include "./piyo.h"
readmemh(mem, "./memory/piyo.mem");

のように書いても、Verilog HDLを記述したファイル(*.v)からの
相対パスで開いてくれるのは少数派で、
プロジェクトファイルからの相対パスになるものが多いですね。

#処理系依存。Verilog HDLの言語仕様には明示されていません。


まぁ、システムタスクでファイルを出力される先も同様で、
相対パスを付けても、どこからの相対パスで出力されるかは処理系依存な訳で、
この辺りは、複数のシミュレータで検証をしていたりすると
困った問題です。`ifdef でシミュレータごとの処理を分けたりするしか、
解はないと思います。
708774ワット発電中さん:2006/12/31(日) 04:57:28 ID:pGsdoCVo
>>679

の間違いです。すんまそ
709774ワット発電中さん:2006/12/31(日) 07:42:22 ID:nx+/Q2uy
>>707
のreadmemhで思い出したんだけど、あれってシミュレーションの時にしか使えないの?
シミュレーションの時以外にも使えるならROM全部書き換えようかと思ってるんだが…
710774ワット発電中さん:2006/12/31(日) 13:02:09 ID:z8jFDV2G
>>709
常識的に考えてシミュレーションオンリーだと思う。

もっとも漏れはシミュレータのコマンドを使って
RAMやROMを初期化しているから詳しいことはわからんけど。
711774ワット発電中さん:2007/01/02(火) 20:00:17 ID:It1HoSyK
>>>705
もうちょと具体的に
712774ワット発電中さん:2007/01/06(土) 02:23:28 ID:sYpvryQA
プロセス文にも組み合わせプロセス文と順序プロセス文と違いがあることを知った15の夜
713774ワット発電中さん:2007/01/14(日) 20:16:53 ID:htb8K7eO
> 組み合わせプロセス文と順序プロセス文
順序どおり組み合わせ回路が更正されるのがprocessじゃないのか?
714774ワット発電中さん:2007/01/14(日) 21:00:31 ID:ME8CVSu1
>>713
ラッチができるかどうかの違いみたいです
715774ワット発電中さん:2007/01/16(火) 03:00:34 ID:kAwD2jBI
レオナルドスペクトラムで、何も考えずに合成をかけるとメモリをBRAMでしてしまうのですが
これをBRAMを使わないでLUTで合成するように指定できるでしょうか?
BRAMを使うとリソースが足りずエラーになってしまいます
716774ワット発電中さん:2007/01/16(火) 10:04:40 ID:aN7F7fSd
>>715
マッピングはどのツールでやってるの?
配置配線は?
717774ワット発電中さん:2007/01/16(火) 14:12:19 ID:kAwD2jBI
>>716
ツールはISEを使っております
718774ワット発電中さん:2007/01/16(火) 23:05:25 ID:8dNC7ugV
>>717
シンセサイズのプロパティの中にあった希ガス
今ISE入れてないPCからの書きコだからちょっと詳しくは分からない
自分で探してみて
719774ワット発電中さん:2007/01/16(火) 23:25:29 ID:gyKixH+D
フリーで記述チェックするツールないかな
720774ワット発電中さん:2007/01/16(火) 23:30:50 ID:8dNC7ugV
Verilogならveritakだかveritekだかって言うのが使えるんじゃない?
回路のシミュレーションも出来る(ってかこっちがメイン)からとりあえずverilogでなんか書きたいならこれで良いとおもう
721774ワット発電中さん:2007/01/17(水) 15:37:42 ID:YOkxeA04
ネタ禁止。
ところで、SVでアサーションを使いこなしているひといる?このスレじゃいないか?
722774ワット発電中さん:2007/01/17(水) 20:47:23 ID:DoAOZkiR
>>720
veritakのフリーウェア版は下記から落とせるよ。
ttp://verilogician.net/
723774ワット発電中さん:2007/01/17(水) 22:00:03 ID:RJFOQzUE
>698
VerilogもVHDLもそれ自体が糞なんだよ。
こんな糞言語が蔓延りやがって、ほんとお前ら糞に振り回されて可愛そうな
こった。PCのソフトではMSの糞VBが消えて、かなりまともになってきたが、
ハード設計はまだまだ暫く受難だな。
724774ワット発電中さん:2007/01/18(木) 03:21:17 ID:g8mIgZhk
ModelSimでのシミュレーションで、論理シミュレーションのときは見たい内部信号をすぐに
追加できるのですが、配置配線後のシミュレーションだと内部信号名が変わっててどれが
どれだかわからなくなり内部信号の追加に苦労します。
配置配線後のシミュレーションでも簡単に内部信号を見る方法はあるのでしょうか?
725774ワット発電中さん:2007/01/18(木) 04:18:09 ID:RS5VeqSR
>>723
おすすめの代替言語についてkwskおながいしまう
726774ワット発電中さん:2007/01/18(木) 08:34:20 ID:zVDC0byA
ハード設計が遅れて泣きを見るのはソフト屋なんだよな、たいてい。^^;
727774ワット発電中さん:2007/01/18(木) 11:23:58 ID:HLiW4KOj
いつもハード設計が遅れることを見込んで、さぼってるだよなソフト屋は…
予定通りにハード渡すと、たいていソフトができてない^^;
728774ワット発電中さん:2007/01/18(木) 11:52:54 ID:IbzA8FiQ
>>727
> さぼってるだよなソフト屋は…

その間に、別の「遅れてるハード用」のソフトやってたり(泣
729774ワット発電中さん:2007/01/18(木) 13:31:25 ID:l23iVb61
>>724
合成やら配置やらの最適化を全部OFFにすれば多分見られるよ
でなきゃ無理
730774ワット発電中さん:2007/01/18(木) 13:59:50 ID:PkFkPk2b
>>721
昔、>>386を書いた者だけど使いこなしているかどうかは別にして使ってるよ。
それで、話を振った目的は何? 単なるsurvey?
731774ワット発電中さん:2007/01/18(木) 19:00:57 ID:xp3iXQdV
質問おながいします
複数クロックがある回路でそれぞれのクロックの立ち上がり時に
1つのレジスタに信号を代入したいんですけど、
そういうときって↓のようなソースで正しく動作するのでしょうか?
これだとラッチが悪さして信号衝突しますかね???


process(CLK1) then
  if (xRESET_IN ='0') then
  elsif (rising_edge (CLK1)) then
    if (r_hoge = '0';) then
      r_hoge <= '1';
    end if;
  end if;
end process;

process(CLK2) then
  if (xRESET_IN ='0') then
  elsif (rising_edge (CLK2)) then
    if (r_hoge = '1';) then
      r_hoge <= '0';
    end if;
  end if;
end process;
732774ワット発電中さん:2007/01/18(木) 20:13:24 ID:+a/+uffH
まず試してから質問しろ、カス。
733774ワット発電中さん:2007/01/18(木) 20:18:49 ID:kV6JwVoZ
優しいお兄さんが教えてあげよう
ネットリストの合成時あたりでエラーでてとまる
734774ワット発電中さん:2007/01/18(木) 21:46:05 ID:zU4scnDT
>>731
まず絵を書いて考えろ
735774ワット発電中さん:2007/01/18(木) 22:33:41 ID:pv6dnmFj
複数クロックを使と解析が困難になるので回路を考え直したほうがいい。
clk1がclk2よりも高速という条件ならこんな感じで、
process (reset,clk1) begin
if (reset='0') then
elsif (clk1'event and clk1 = 1) then
clk2a<=clk2;
clk2b<=clk2a;
if (clk2a='1'and clk2b='0') then //clk2の立ち上がり相当
r_hoge<='0';
else
r_hoge<='1';
end if;
end if;
end process;
736774ワット発電中さん:2007/01/18(木) 23:26:53 ID:/+aZn4EX
eclipse+IVIで開発してる人いませんか?
公式のExamplesやったけど新しいシュミレーションの作り方が分からないんで何か手がかりを教えてください。
737774ワット発電中さん:2007/01/19(金) 00:32:38 ID:YdQ7loit
なんとなく貼ってみる

米ヒューレット・パッカード(HP)は16日(米国時間)、
従来の8倍に集積度を高めた「FPGA」(フィールド・プログラマブル・ゲート・アレイ)を開発したと発表した。
ttp://www.mainichi-msn.co.jp/keizai/it/computing/news/20070117org00m300070000c.html
738774ワット発電中さん:2007/01/19(金) 20:01:29 ID:ptUdu7pG
>>732-734
レスありがとうございます。
複数クロックの場合、共通で使用するレジスタをどう扱うべきなのか
よくわからなかったので(R/Wのタイミングなど)
今回はclk1がclk2より早いという条件下の回路なので、
>>735さんに教えて頂いたようにclk1だけ使った回路に変更しようと思います。
どうもありがとうございますです。
739774ワット発電中さん:2007/01/20(土) 01:54:10 ID:vt/o1CDp
>>738

ん?それでいいの?
731で書いている記述だとr_hogeはCLK1,CLK2それぞれの立ち上がりで変化している。
すなわちトグルレートはCLK1の半分より速くなる。だからCLK1だけじゃ実現不可。
というよりそもそももっと速いクロックを入れないと同期回路では実現不可だな。

しかし、タイミングチャートより先に言語記述で考えるというのが今のハード屋なのかねぇ。
740774ワット発電中さん:2007/01/20(土) 08:13:38 ID:VzsD0uGq
×今のハード屋
○無理やりハードの仕事させられている今のソフト屋

上司「お前ハードはわからんって言ってたよな
   でもいまどきはCで回路設計できるらしいぜ
   お前もCは書けるんだから大丈夫だろ 設計頼むよ な?
741774ワット発電中さん:2007/01/20(土) 10:15:22 ID:PPI8F5nY
>>723 もだが、
Cで設計できるって本気で思ってるヤシが多くて困るよな。
数値演算系はいいが、SD-RAM コントローラとかCで作ってみろよ。
742774ワット発電中さん:2007/01/20(土) 10:40:26 ID:AU8NuDMf
むしろ System-C が C を強調しすぎてるのがマズいんじゃないかと思う
743774ワット発電中さん:2007/01/20(土) 11:05:34 ID:VzsD0uGq
Cを強調しないと売れないんだろ
実際それ以外に特徴ないし
というか従来HDLよりむしろ劣化してるし
744774ワット発電中さん:2007/01/20(土) 11:18:43 ID:yc7EZISq
VerilogHDLで使えるAVRのフリーIPってPAVR位しかないのかな?
って言うか今まで参考書とかしか見てなかったから気付かなかったけど、世界的に見るとVHDLの方が主流なの?
745774ワット発電中さん:2007/01/20(土) 12:16:17 ID:AU8NuDMf

この辺でどっちが多いか比較してみたらどうでしょう?
ttp://www.opencores.org/cvsweb.shtml/

結果教えてね
746774ワット発電中さん:2007/01/20(土) 12:27:42 ID:yc7EZISq
>>745
OpenCoresは1つ以外はVHDLだったかと
それでいくらなんでも少ないよなと思って質問してみた

もしかして探し方が間違ってるのかな?
747774ワット発電中さん:2007/01/20(土) 13:15:50 ID:z8gTiMN/
何をしたいかが先にあってハードはそれを実現する手段でしかない。
まだ道具の使い方を覚えてると思われる段階でタイミングチャートといわれてもなぁ。
ちょっとずつ覚えてハードのことも見えるようになっていけばいいんじゃない。

タイミングを考えないで作れるならそれに越したことはない、
ちまちま時間かけてコストダウンする分野もあれば、今高く売れる物をさくっと作ってしまう方がいい分野もあるわけだし。
748774ワット発電中さん:2007/01/20(土) 15:37:30 ID:twR2JzKJ
タイミングチャートを書ける技術者も減っているしなあ
749774ワット発電中さん:2007/01/20(土) 15:54:23 ID:OW1j3JyE
タイミングチャートって、クロックの線を引いて六角形を書くだけじゃないの?
750774ワット発電中さん:2007/01/20(土) 19:25:37 ID:V6NO2SpR
SDRAMctrl、C風のHDLで書いたけど
initial、read、write、refresh、と機能別に書けるから分かりやすいな
ステートマシン生成するのはもうツールの役目だな
751774ワット発電中さん:2007/01/20(土) 19:27:36 ID:A/ZTXFpM
>>744
現状、EDAはほとんどVerilog版からリリースされます。その後VHDL版が出たらラッキー。
そんな状況なんで、VHDLの方が流行ってるとは思えないです。

Verilogで設計するトコに移籍した今となってはどーでもいいけど、VHDLの方が言語仕様がしっかりしてて、
RTL書く分にはトータル見ると楽だった。
752774ワット発電中さん:2007/01/20(土) 20:08:14 ID:twR2JzKJ
儲かるのか?
753774ワット発電中さん:2007/01/20(土) 21:12:16 ID:lORgjidG
>>750
VHDLしか分からない人ですが、VHDLでも列挙型ってのがあります。

> initial、read、write、refresh、と機能別
に書ける型です。
754774ワット発電中さん:2007/01/20(土) 21:15:25 ID:Mk7QMpJu
前にDesignWaveでHandel-Cでシリアルコントローラ、ビデオコントローラとか書いて
ワイヤーフレームの折り鶴を3Dで回したり、ブロック崩しをつくってみたりしてたね
(もちろん、CPUだのCPUコアだのは使わず)
全部あわせても一週間かからなかったとか
755774ワット発電中さん:2007/01/20(土) 21:20:50 ID:AU8NuDMf
ソフトウェア用言語にたとえると
VHDL が C
Verilog は PHP
756774ワット発電中さん:2007/01/20(土) 21:27:45 ID:yc7EZISq
じゃあ実際に使うのはVerilogで十分だな。
ライブラリ作る人になりたい訳じゃないし
757774ワット発電中さん:2007/01/20(土) 21:27:47 ID:JMfDw+gB
意義あり
758774ワット発電中さん:2007/01/20(土) 22:59:35 ID:PPI8F5nY
仕様設計がきっちりしていれば、コーディングに使う言語による差はあまりないように思われ
759774ワット発電中さん:2007/01/20(土) 23:12:03 ID:3EGs/tid
VerilogとVHDLの両方を使ってみたことがあるが、

VerilogはVHDLに比べて
・記述量が少ない
・ビット列と整数の変換が楽
・エラーチェックが甘い(ビット幅の異なる代入を許している)
・regとwireの違いがわかりにくい
という印象を受ける。
760774ワット発電中さん:2007/01/21(日) 00:35:33 ID:qoYROfTM
VHDL が C
Verilog は Perl
761774ワット発電中さん:2007/01/21(日) 01:05:20 ID:LEwhoGlS
そんな言い方したらCが可哀想。
762774ワット発電中さん:2007/01/21(日) 01:26:43 ID:zGh302cv
>>759

基本的に同意です。

周りのASIC屋さんは、Verilog HDLの方が多い気がする。(これは気のせいですかね)
VHDLにはないスイッチレベル・モデルとかもありますので、
Verilog HDLの方が懐は深いと思います。
763774ワット発電中さん:2007/01/21(日) 02:22:13 ID:XpoV0wMq
>>760
> VHDL が C

ALGOLじゃないのか(w
764774ワット発電中さん:2007/01/21(日) 02:25:06 ID:LEwhoGlS
STARCは糞VHDLを推してるみたいだが
765774ワット発電中さん:2007/01/21(日) 03:57:24 ID:EjpXs1Hs
>>753
VHDLやVerilogの場合、出力ごともしくは一個のステートマシン記述になりがち
C風の記述だと、機能ごとにステートマシンを持つ
列挙型は単にステートを定義するだけですよね
766774ワット発電中さん:2007/01/21(日) 03:58:03 ID:EjpXs1Hs
>>760
VHDLはアセンブラ
767774ワット発電中さん:2007/01/21(日) 03:59:37 ID:EjpXs1Hs
>>758
回路図でやってください
768774ワット発電中さん:2007/01/21(日) 09:37:08 ID:sBRqSSpL
Orcadばんざい
769774ワット発電中さん:2007/01/21(日) 17:47:43 ID:9Lfvpwo5
verilog HDLの欠点:全モジュールの扱いが一緒だからIP使ったりするとモジュール名がぶつかる。
VHDLの使いにくいところ:階層を越えたプローブができないからテストベンチを書くとき面倒。
このくらいかなぁ。

ソフトウェアで比較するなら
verilog → C
VHDL → PL/1
だと思う。
770774ワット発電中さん:2007/01/21(日) 18:13:27 ID:KdUI9iji
>>739
これ、DDRメモリに読み書きするデータ(64ビット*8バースト=512ビット)を
ユーザーから供給されたクロックで32ビットずつアクセスできるように
するための変換モジュールを作りたいのです。
なのでシステムクロック(CLK1)とユーザークロック(CLK2)を使うことを
考えていたのですが、
動作的にはCLK2の立ち上がりがトリガとならなくてもたぶん問題はないと思うので、
CLK1のみ使った同期回路で作ってみようと思います。

波形を見たときにCLK2の立ち上がり同期してるほうがわかりやすい気はしたけど、
自分にはクロック複数にするとわけがわからなくなりそうです。。
771774ワット発電中さん:2007/01/21(日) 20:14:14 ID:8ijoGkKd
CLK1とCLK2は非同期なのか? それとも整数比で表現できる準同期なのか?
非同期だったら非同期FIFO使うしかない レイテンシはめちゃくちゃ大きくなるぞ
772774ワット発電中さん:2007/01/22(月) 01:03:27 ID:F9htHtI4
>>770

システムのイメージが掴めないのだけど、そんなに簡単なことではなさそうな気がする。
趣味で作る回路ならいいけど、仕事なら経験者にちゃんとレビューしてもらうことを強くお勧めします。
違うクロックの間のデータの受け渡しはトラブルの温床だからね。
773774ワット発電中さん:2007/01/22(月) 07:22:22 ID:J63rQXAF
俺も非同期では失敗したなぁ。
シミュレーションでも見つけにくいし。
各社メモリでコマンドの規格が微妙に違うし。

俺はSDRAMだったけど、DDRはもっと大変だろうな。
774774ワット発電中さん:2007/01/22(月) 19:21:56 ID:XJCcp7Ji
>>773
たとえばどんな微妙な差がありました?
775774ワット発電中さん:2007/01/22(月) 19:39:55 ID:jsezb06D
回路図描いたことも無いのにViRTEX5の
基盤を作ることになった。
わけわけあめ
776774ワット発電中さん:2007/01/23(火) 07:01:29 ID:fZCqu6rp
>>773
たとえば
SDRAMの初期化で入れなければ行けないクロックの発数が
2だったり8だったり。
777774ワット発電中さん:2007/01/23(火) 07:35:22 ID:gd67/E8q
>>776
その違いが影響する設計ってすごいな
とてつもなくクリティカルな用途なのか?
778774ワット発電中さん:2007/01/23(火) 09:12:19 ID:fZCqu6rp
>>777
ごめん。間違えた。
クロックの発数ではなくて、リフレッシュコマンドの発行回数だ。
779774ワット発電中さん:2007/01/23(火) 21:03:46 ID:66WNyI1P
> 2だったり8だったり。
三菱だったりエルピーダだったり、とか?w
780774ワット発電中さん:2007/01/23(火) 21:21:35 ID:IkcYVaCr
微妙なところで違ってくるんだな。
マイクロンも2みたいだ。
781774ワット発電中さん:2007/01/24(水) 01:19:25 ID:bWWSBDNM
ヤック、デカルチャ
782774ワット発電中さん:2007/01/24(水) 16:45:18 ID:H3TWfLUO
>>775
FPGA海路そのものの設計なんて水晶懐炉図そのままでOK
電源回りだけだな。多層基板でない場合はパスコンケチらないとか。
量産とかでケチらんにゃシャーない場合もあるけど。
783774ワット発電中さん:2007/01/24(水) 19:30:11 ID:3KnAA77m
>>771
非同期でも周波数が CLK1 > CLK2 * 2 って条件なら
>>735みたいなのでもなんとかなるんじゃない?
784774ワット発電中さん:2007/01/25(木) 07:24:22 ID:USfJTD5E
>>783
非同期だとsetup timeとhold timeを保証できないのでそう簡単にはいかない
メタステーブル対策でD-FFを2段通すと5クロックくらい遅れる場合もあるので
>>735の手法は、安全係数かけて CLK1 > CLK2 * 8 くらい差がないとダメだろう
できれば16倍以上ほしい

>>770のやりたいことで、クロックが本当に非同期なら非同期FIFO使うのが定石だと思う
785774ワット発電中さん:2007/01/25(木) 11:13:59 ID:q5v/pcPM
>>783

CLK1 = CLK2 * n ならいいけど、">"じゃ駄目よ。
784の書いているように、データの受け渡しをするのなら整数倍じゃないときは非同期FIFOにするのが定石。
スループットが低くてもいいならハンドシェークでデータの受け渡しをする手もあるけどね。
あと、メモリみたいにチップの外に行って戻ってくる信号では設計時は遅延時間が不定だから同じ周波数でも面倒な筈よ。
786774ワット発電中さん:2007/01/28(日) 15:15:17 ID:CkNFuxn5
はじめまして。学校の課題で悩んでいます。よろしければご教授願います。
【ディジタル時計の設計】なのですが、仕様としては・・・
1.24時間表示の時計
2.入力クロックは1Hzが与えられるとする
3.これら以外の仕様は自由に決めてよい
となっています。
まず、自分が悩みに悩んでもできあがらない糞なソースを見てください。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29148
半年間講義を受けてこの程度です。
1秒生成の仕方がまずわかりません。
カウンタの意味すらよくわかっていません。
課題の提出期限が明日となりかなり焦っています。
課題そのものの解答が得られれば嬉しいですが、とにかく提出できるレベルになればと思っています。
アドバイス等々
どうかよろしくお願いします。m(__)m
787774ワット発電中さん:2007/01/28(日) 15:27:39 ID:kxfZwLhO
475 名前:名無しさん@3周年[] 投稿日:2007/01/28(日) 15:12:27 ID:pzT5zUw1
はじめまして。学校の課題で悩んでいます。よろしければご教授願います。
【ディジタル時計の設計】なのですが、仕様としては・・・
1.24時間表示の時計
2.入力クロックは1Hzが与えられるとする
3.これら以外の仕様は自由に決めてよい
となっています。
まず、自分が悩みに悩んでもできあがらない糞なソースを見てください。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29148
半年間講義を受けてこの程度です。
1秒生成の仕方がまずわかりません。
カウンタの意味すらよくわかっていません。
課題の提出期限が明日となりかなり焦っています。
課題そのものの解答が得られれば嬉しいですが、とにかく提出できるレベルになればと思っています。
アドバイス等々
どうかよろしくお願いします。m(__)m
788774ワット発電中さん:2007/01/28(日) 16:07:47 ID:OUNYPhuY
>>2.入力クロックは1Hzが与えられるとする
これが一秒だ。自分で作る必要なんかない。
789774ワット発電中さん:2007/01/28(日) 16:08:04 ID:Gur047+j
>>カウンタの意味すらよくわかっていません。

わかるようになるまで、とりあえずもう一年
790774ワット発電中さん:2007/01/28(日) 16:18:42 ID:o54ueDZy
どことのマルチですか?
791774ワット発電中さん:2007/01/28(日) 16:22:22 ID:CkNFuxn5
片方が下がったままだったので、両方に書き込む形となりました。

>>788
では、クロック自体に1Hzを与えるということをしなければいけないということですか?
792774ワット発電中さん:2007/01/28(日) 16:35:08 ID:OUNYPhuY
いやいや、日本語をちゃんと読んでくださいよ。
「与えられる」つーのは自分以外の誰かがくれるっつーことなんですが。

ま、シミュレーションの際には自分で用意してやることになるでしょうが。
793774ワット発電中さん:2007/01/28(日) 17:05:21 ID:CkNFuxn5
>>792
ですよね。
シミュレーションも自分で作らないといけないので、そこで与えることになるのかな。
パラメータで与えるものなんですか?
794774ワット発電中さん:2007/01/28(日) 17:10:09 ID:DzXVpnJz
学校の課題なら、
課題を出す前にいろいろ教えてくれただろ。
それを聞かなかったお前が悪い。
795774ワット発電中さん:2007/01/28(日) 17:28:06 ID:CkNFuxn5
すいません。
796774ワット発電中さん:2007/01/28(日) 17:36:49 ID:YcM1J++l
反省しているようだから、
もう一年がんばるという意味と取らえて良いのでしょう。
それでは、この件は終了。
797774ワット発電中さん:2007/01/28(日) 17:38:08 ID:Ml674G2N
キャリーの考えが抜けている。
798774ワット発電中さん:2007/01/28(日) 17:43:07 ID:CkNFuxn5
もう少し、頑張ります。
進展は望めませんが…

799774ワット発電中さん:2007/01/28(日) 17:51:43 ID:g7I5mstM
秒カウンタが59秒であることを条件に分カウンタを進める
分カウンタが59分であることかつ秒カウンタが59秒であることを条件に時カウンタを進める
800774ワット発電中さん:2007/01/28(日) 18:06:47 ID:CkNFuxn5
>>799
ありがとうございます。
801774ワット発電中さん:2007/01/28(日) 18:30:19 ID:CkNFuxn5
[本体ソース]
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29149
[シミュレーション]
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29150

>>799さん、ありがとうございました。

本体はなんとなく進化させたつもりです。いかがでしょうか?
シミュレーションに関してはやはり、1Hzのことがサッパリで...
よろしければご指摘お願いします。
802774ワット発電中さん:2007/01/28(日) 18:40:54 ID:SEGMdSc3
カウンタを進めるというのはひと回りしてゼロに戻す場合も
含んでいると考えるべきなのでは?
803774ワット発電中さん:2007/01/28(日) 18:48:29 ID:N7DcVoWT
君のソースだと、58分59秒になった後、59分00秒になって、
次に00分01秒になるから、こうしたほうがよいと思われ。

always @(posedge CLK or posedge RST) begin
if(RST == 1'b1) //resetかかれば0
M <= 1'b0;
else if(S == 6'b111011) begin
if(M == 59) M<= 0;
else M<= M + 1;
end
end

おっと、>>799 に書いてあった。
804774ワット発電中さん:2007/01/28(日) 18:53:32 ID:CkNFuxn5
if((S == 6'b111011)&&(M == 6'b111011)&&(H == 5'b10111))
S <= 6'b000000;
M <= 6'b000000;
H <= 5'b00000;

>>802さん
こういうことですか?
805774ワット発電中さん:2007/01/28(日) 18:59:20 ID:CkNFuxn5
>>803さん
ありがとうございます。
806774ワット発電中さん:2007/01/28(日) 19:01:19 ID:SEGMdSc3
>>804
>>803が書かれてるような意味です
807774ワット発電中さん:2007/01/28(日) 19:04:08 ID:N7DcVoWT
Veritak でも使って、シミュレーションしてみたら?
808774ワット発電中さん:2007/01/28(日) 19:04:40 ID:CkNFuxn5
>>806
頭悪くてすいません。
ありがとうございます。m(__)m
809774ワット発電中さん:2007/01/28(日) 19:12:08 ID:CkNFuxn5
>>807
使ったことがないソフトですが、今やってみたらコンパイルエラーがでましたorz
810774ワット発電中さん:2007/01/28(日) 19:16:29 ID:r4fG3a87
つ留年時計
811774ワット発電中さん:2007/01/28(日) 19:24:41 ID:CkNFuxn5
選択なんで、留年はたぶん大丈夫だと・・・
812774ワット発電中さん:2007/01/28(日) 22:48:56 ID:N4DB7JR5
大手企業の中でHDLと論理合成ツールのみを使って給料稼げますか?
813774ワット発電中さん:2007/01/28(日) 22:53:42 ID:gIHdjxR3
144 名前:774ワット発電中さん[] 投稿日:2007/01/28(日) 02:56:57 ID:N4DB7JR5
HDL&論理合成ツールだけしか使えないって技術者は多いんでしょうか?
814774ワット発電中さん:2007/01/28(日) 22:57:04 ID:queElZ55
こんな設計でいいの?

リセットを同期化するFFを追加して、同期リセットにしておいた方が。。。
(クロックとリセットのタイミングによっては異常な動作をする可能性が)
また、フェイルセーフな設計になってないぞ。
(たとえば、ノイズなどでレジスタが6'b111111等になった時の動作が記述されていない。)
815774ワット発電中さん:2007/01/28(日) 23:00:28 ID:CkNFuxn5
>>814
すいません。
せっかくアドバイスいただいたのに、
アホなのでどうすればいいのかがわかりません。
816774ワット発電中さん:2007/01/28(日) 23:26:48 ID:pXlJRccH
そんなことは気にしなくていい。
あなたはまず課題の本質の部分を完成させないことには提出できない。
817774ワット発電中さん:2007/01/28(日) 23:31:56 ID:oslHH7rg
module DIGITALCLOCK(CLK,RST,S,M,H);
input CLK,RST;
output [5:0] S;
output [5:0] M;
output [4:0] H ;//;忘れてるよ
reg [5:0] S;
reg [5:0] M;
reg [4:0] H;
//秒部分0〜59秒
always @(posedge CLK or posedge RST)begin
if(RST == 1'b1)
S <= 0;
else if(S == 59)//59かどうか確認する。
S <= 6'b000000;
else
S <= S + 6'b000001;
end
//分部分0〜59分
always @(posedge CLK or posedge RST)begin
if(RST == 1'b1)
M <=0;
else if( M == 59 && S==59)//59かどうか確認する。
M <= 6'b000000;
else if (S==59)
M <= M + 6'b000001;
end
//時部分0〜23時
always @(posedge CLK or posedge RST)begin
if(RST == 1'b1)
H <= 0;
else if(H == 23 && S==59 && M==59)//23かどうか確認する。
H <= 5'b00000;
else if (S==59 && M==59 )
H <= H + 5'b00001;
end
endmodule
818774ワット発電中さん:2007/01/28(日) 23:35:55 ID:qzEVoOP0
珍しくカキコが多いなと思ったら、宿題かよ…
819774ワット発電中さん:2007/01/29(月) 00:51:38 ID:1psePdGA
>[本体ソース]
>http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29149

リセットする時に1'b0(1ビット幅)だけノンブロッキング代入しているのは
何故ですか?
820774ワット発電中さん:2007/01/29(月) 05:35:07 ID:hIl/2XDt
現在時刻に合わせる必要はないの?
821774ワット発電中さん:2007/01/29(月) 10:46:09 ID:UqBsIQps
>>801

>シミュレーションに関してはやはり、1Hzのことがサッパリで...

確かに全然わかっていないようだねぇ。
シミュレーションのソースを見ると100ns周期(10MHz)のクロックを作ろうとしているように見える。
1Hzにしたければ
`timescale 10ms/10ms
であろうが、他にも問題あるな。
まぁ、もう間に合わないだろうけど・・・・
822774ワット発電中さん:2007/01/29(月) 13:21:47 ID:pvev28NQ
>>814
どうせただのカウンターだ。0に戻るから問題あるめぇ。
823801:2007/01/29(月) 17:41:05 ID:piI24mHj
じゃっかっしわい!ボケナス
HDLしか能のない害虫糞ボケが生意気に人の批判さらすなゴミ
ぬっコロスぞ
824774ワット発電中さん:2007/01/29(月) 19:04:50 ID:pvev28NQ
あと、何かありますか?
825774ワット発電中さん:2007/01/29(月) 19:55:06 ID:xVOVmy6b
お前ら暇なやつばっかりだなぁwww

急にレスが伸びてる
826774ワット発電中さん:2007/01/29(月) 20:50:20 ID:Dt281uSh
VHDLで書けよ。
漏れがネタに参加できないじゃないか。
827774ワット発電中さん:2007/01/29(月) 21:49:20 ID:QiHbSRiW
つ V2V
828774ワット発電中さん:2007/01/29(月) 23:52:59 ID:K24epCBF
>>812
無理。使い捨てにされるのが落ち。
それなりの規模の企業の中では
全体設計ができるようにならなければ
いずれ切り捨てられる。
HDL一本で行きたければ
それを専門に請け負ってる業者に
行けばいいんじゃない?
829774ワット発電中さん:2007/01/30(火) 00:00:45 ID:70PkBizM
何でもできるようになれと?
830812:2007/01/30(火) 01:58:56 ID:g6X26uWq
>>828
レスありがとうございます。
全体設計の示す範囲を具体的に教えて頂けないでしょうか?
831774ワット発電中さん:2007/01/30(火) 02:45:19 ID:2VIP9kn7
6bitカウンタで64ステップか〜
60でリセットすればいいんだから
ANDとって…
832774ワット発電中さん:2007/01/30(火) 10:04:03 ID:3I+Z60fw
HDL一本でなんて虚しいからやめろ。
HDLにしろプログラム言語にしろ、今現在流行っているだけの簡易設計のためのツールだ。
そんな人様の作った仕様の使い方の達人になったところで、
テクニシャンというか、職人といっしょだよ。
大学で研究やってる香具師と十分タメ張れるだけの、何か一つ以上の専門分野持って(それが論理合成とかもあるけど)、
HDLも使える、Spicceや伝送シミュレートも含めて、回路、パターンCADも何か一つ使える。
プログラム言語も世間で普及してるものは書ける、読める。
リアルタイムOSあたりも使える。英語もそこそこできるってのが、少なくとも大卒以上のエンジニアのたしなみ。
たしなみに人生賭けるなんて虚しいだけだ。しかも設計手法なんて一生もんじゃないぞ。
833774ワット発電中さん:2007/01/30(火) 11:17:04 ID:70qCIgSF
大卒どころか院卒(予定)だが
リアルタイムOSなんて使ったこと無いぜ!!
834774ワット発電中さん:2007/01/30(火) 20:33:35 ID:4PzLOSBJ
>>833
自分で組込用のプリエンプティブなマルチタスクOSの一つも書いてみれば
だいたい分かるよ
835774ワット発電中さん:2007/01/30(火) 20:40:31 ID:zCrOM+4E
>>831
4入力NAND?
836774ワット発電中さん:2007/01/30(火) 22:34:41 ID:70qCIgSF
>>834
プリエンプティブなマルチタスクOSって言われても
正直なんのこっちゃって感じだけど
OS書いてみるのは面白そうだと思って
OSASK作者の「30日でできる! OS自作入門」買ってみた。
2月中に書けるかなあ?
837774ワット発電中さん:2007/01/30(火) 22:46:52 ID:jioelA34
まあ、Design Compilerの論理合成方法を習得したところで
あまり意味はないよなあ。
838774ワット発電中さん:2007/01/30(火) 23:46:02 ID:3MycsQbR
大規模なDSPをHDLで作るときは
1人1人に小さな部分を割り振られて
1人1人コードを書いて最後に全部併せるという手法で作ると思うんですけど、
こういうときに必要なスキルってHDL以外に何だと思います?
839774ワット発電中さん:2007/01/31(水) 00:00:24 ID:dw6GVDQk
コミュニケーション能力
840774ワット発電中さん:2007/01/31(水) 00:02:16 ID:Z53JoSbr
コミュニケーションスキル。
841774ワット発電中さん:2007/01/31(水) 00:10:49 ID:ogWd1lJx
どんだけコミュニケートできてないんだよwww
842774ワット発電中さん:2007/01/31(水) 00:36:21 ID:hKcy3Mu9
隣の席のヤツにメール打つくらい
843774ワット発電中さん:2007/01/31(水) 03:19:10 ID:9RtHD3yk
warota
844774ワット発電中さん:2007/01/31(水) 06:50:21 ID:xmcayxzW
>>838
大規模なDSP WWWW
845774ワット発電中さん:2007/01/31(水) 08:49:05 ID:nPYusWEG
>>838
仕様をきちんと決めてから設計しましょう。
846774ワット発電中さん:2007/02/06(火) 22:29:57 ID:oOcSZ8WL
CPLDでプリセットカウンタを作ろうとしています。
下記のようなVHDLを記述したのですが、XilinxのISE9.1 XC9572では合成できませんでした。
動作は、STARTの立ち上がりでダウンカウント開始、
q=0になったらQ_OUTを'1'にするのと同時に、qにIN_DATAをプリセットするというものです。
助言お願いします。
process(CLK,START,ENABLE,q)begin
if(START'event and START='1')then
ENABLE<='1';
end if;
if(CLK'event and CLK='1')then
if(ENABLE='1')then
if(q="00000000")then
Q_OUT<='1';
ENABLE<='0';
q<=IN_DATA;
else
q<=q-1;
Q_OUT<='0';
end if;
else
end if;
end if;
end process;
847774ワット発電中さん:2007/02/06(火) 23:01:35 ID:31UJ9uKt
ENABLEの扱いがよくワカンネ
START立ち上がりで“1”にして、カウントダウン終了で“0”にするのか?違う入力条件でセット/リセット
ENABLEとCLKは非同期なのか?

CLKを一本化して整理した方がいいんじゃね?
848774ワット発電中さん:2007/02/07(水) 00:11:16 ID:OlWKEuRV
つーか 'event を2つ書いてる地点で文法的におかしいんじゃないか?
849774ワット発電中さん:2007/02/07(水) 01:04:39 ID:AvwNl8ru
コミケと東京ゲームショーが同時に起こったら
850774ワット発電中さん:2007/02/07(水) 02:59:56 ID:fGuz+e3O
そら勿論コミケの方に行くのよさ
851774ワット発電中さん:2007/02/07(水) 08:47:20 ID:5T1c6a82
みなさんに質問ですけど
HDL書く前に回路図を書く(もしくは脳内で書く)ことは必須ですか?
それとも状態遷移図を書く(もしくは脳内で書く)ことが出来ていれば
問題ないですか?
それともどちらも不要ですか?
852774ワット発電中さん:2007/02/07(水) 08:58:50 ID:ERNNaTgQ
両方必要。HDLは思考の道具ではない。実装するための道具。
853774ワット発電中さん:2007/02/07(水) 10:08:25 ID:FCJPe+I6
>>851
>>852は大ウソ
状態遷移図は必要だが、
回路図は必ずしも必要ない。
状態遷移図さえ書けばHDLに自動的に落とすツールも存在する。
HDL以前に頭から回路図で書けばいいってなもんだが、
そこまでやるならHDLは不要ってこった。
HDLを見て回路図が脳内で書けることは必要だがそれは簡単
そこら辺は森岡澄夫が著書の中で解説してる
HDLで書いて、論理合成の後、回路図を確認して一応自分の考える回路になってるか確認できれば
それでok
大体電気回路とか電子回路と違って論理回路ってのは物理現象を書き表してるわけじゃないしな。
回路図らしきものに機能を書き込んでるだけだし、むしろ動作タイミングとか回路図みただけじゃよくわからなかったりする。
HDL見て、あるいは自動出力の回路図見て、いいか悪いか判断できればいい。
854774ワット発電中さん:2007/02/07(水) 10:11:23 ID:8UY2nSM3
>>853
> >>851
> >>852は大ウソ
> 状態遷移図は必要だが、
> 回路図は必ずしも必要ない。

半ウソにしてあげたら?
「必ずしも」だったらクォータウソくらいでもいいかも知れない。
855774ワット発電中さん:2007/02/07(水) 10:13:27 ID:HGRXofIJ
>>851
回路図は不要。何のために論理設計するんだか。(FPGAの周りの回路図は必要)
状態遷移図は規模がでかくなれば必要。
遊びなら、やってみて必要と思えば書けば?
856774ワット発電中さん:2007/02/07(水) 10:27:19 ID:ERNNaTgQ
>>851が言ってる回路図って
論理合成後に出てくる回路のことだったのか?
だったら不要だわな。
857774ワット発電中さん:2007/02/07(水) 10:30:57 ID:FCJPe+I6
状態遷移図は我流でVisioとかのお絵描きツールを使って書いてしまいがちになるけど、
もし、身の回りにHDL Designer(FPGA Advantageで購入してるかもしれん)があれば、これで書いてみることを
お勧めする。コンパイルかけてHDLにまで仕上げることもできるし、
そこまできっちり書かなくても流儀がわかる。
こういうcadツールのいいところは触ってるうちに仕事の進め方が見えてくるんだよな。
使い始めは鬱陶しいんだけど
858774ワット発電中さん:2007/02/07(水) 10:33:10 ID:FCJPe+I6
>>854
>半ウソにしてあげたら?

まぁ2ch流の表現ってことで。
859774ワット発電中さん:2007/02/07(水) 10:36:03 ID:ERNNaTgQ
しかし状態遷移図をVisioで書くって凄い根性だな。
860774ワット発電中さん:2007/02/07(水) 10:37:33 ID:oASmvBSv
>>853
>大体電気回路とか電子回路と違って論理回路ってのは物理現象を書き表してるわけじゃないしな。

物理屋が聞いたら怒るよ
電気・電子回路図だって物理現象を全然表現できてない/しようともしてない
かなーり抽象度が高くて物理的振る舞いからかけはなれた表記法だ
861774ワット発電中さん:2007/02/07(水) 10:52:55 ID:FCJPe+I6
>>859
>しかし状態遷移図をVisioで書くって凄い根性だな。
じゃ、何で書いてるの?
専用ツールがあればそれ使うし、なければお絵描きツールで書くでしょ、
フローチャートであってもUMLであっても。

>>860
喪前のいうのは、微視的な量子のふるまいとかの話だろう。
マクロな意味で物理現象を表現してるでしょ。
少なくとも回路図見てそれに対応する、微分方程式がたてられるわけだから。
しかもその式は電気磁気現象として逐一説明可能だし、
電磁気の演習問題として、j回路図をMaxwell方程式で説明するものもある。
回路図がマクロな物理現象を説明したものじゃないというなら、
力学の斜面を転がる円柱の絵だって抽象的で物理的ふるまいからか離れた表記ってことになる。
グラビトンの作用云々から表記するか?
862774ワット発電中さん:2007/02/07(水) 11:19:06 ID:oASmvBSv
いやいや量子力学まで行かなくても
回路図ではmaxwellの方程式すら表現できないでしょ

電流が流れれば必ず存在するはずの磁界/磁束を
回路図でどう表現できているというのか?
せいぜいトランスというシンボルで理想化した電磁相互作用を
表現できてるだけじゃん。
単に高周波を伝送するだけで配線の形状や配置関係に
依存する相互作用があるはずだがそれは表現できているのか?
分布定数回路ですら「回路図」で表現するのは困難だ

そんなんでマクロな物理現象が表現できてるなんていったらチャンチャラおかしい
863774ワット発電中さん:2007/02/07(水) 11:44:46 ID:FCJPe+I6
>電流が流れれば必ず存在するはずの磁界/磁束を
>回路図でどう表現できているというのか?
磁気を主目的にしたいなら磁気回路図で扱えばいいし、
磁気が電流、電圧に作用する部分は、普通に電気回路として表現できる


>せいぜいトランスというシンボルで理想化した電磁相互作用を
>表現できてるだけじゃん。
別に理想化する必要はまったくなくて、磁気作用が、電圧、電流に影響する部分も
L、C、R、電圧源、電流源として回路図に盛り込むことは普通に行われること。

>単に高周波を伝送するだけで配線の形状や配置関係に
>依存する相互作用があるはずだがそれは表現できているのか?
それも、L,C,R,電流源、電圧源として回路図に盛り込めばいいだけのこと。
分布定数回路として回路表現可能だ。形状、配置による影響が回路に盛り込めなければ
Spiceシミュレートなんかなんの意味もない。実際Spiceモデルとして各社配布してるものは
形状やIC内部の配線も考慮して作成される

少なくとも100GHzまでの電圧、電流に関する回路図表現は実際の物理現象ときわめて正しく符合してる
864774ワット発電中さん:2007/02/07(水) 11:59:27 ID:oASmvBSv
> L、C、R、電圧源、電流源として回路図に盛り込むことは普通に行われること。

そういうふうに結果が合うように実際には存在しないモノ(等価回路)を
持ち込むことを抽象化した理論というのですよ
>>863は、spiceが物理現象をシミュレーションしてるって本気で思ってるんだね

+Q と -Q に帯電した半径10mmの導体球がふたつあって
1m離れて互いに近づく方向に100mm/secで運動している

って問題ですら回路図で表現できないってことを言いたいだけ
マクロミクロの問題ではないし、いい悪いの問題でもない
電気回路ってのは人間が電磁気現象を工学的に応用しやすいように
高度に抽象化し、省略すべきところはがんがんして
人間にとって扱いやすいように人間が考案した表現法なんであって
物理的な電磁気現象を表現するためのものではないってこと

話は変わるが
こっちが3次元図で電界強度や等電位面や磁束線とか書き込んで議論してると
ひょひょいと横から入ってきて、寄生キャパシタを図に書き込んで
「これで全部説明できるじゃん オレって天才」なんていってる馬鹿
こういう人は結構いるんだが、私はかなり辟易してる
865774ワット発電中さん:2007/02/07(水) 12:24:24 ID:FCJPe+I6

等価回路がその名の通り抽象化してるのは認めるが、。
電気回路は論理回路が単に1,0入出力、選択、保持に機能を絞ってるのとは全く異なる
なぜなら、それが電気磁気現象として説明可能だから。

>spiceが物理現象をシミュレーションしてるって本気で思ってるんだね
物理現象をシミュレートするんじゃなくて物理現象に即した回路を計算してる。

>物理的な電磁気現象を表現するためのものではないってこと
読み返してみて確かに物理現象を書き表すというような書き方をしてるんだな(>>853とか)。
これは俺の間違いだ、回路表現したものは電気磁気現象で説明できると言いたかった(>>861)。

>こっちが3次元図で電界強度や等電位面や磁束線とか書き込んで議論してると
どうでもいいが、デバイス屋でもない限りうざいだけだろ。
職場で煙たがられてない?

>「これで全部説明できるじゃん オレって天才」なんていってる馬鹿
天才じゃないが、最終出力が電圧/電流で済むなら、それで説明できるしな。
磁気センサでも開発してるのか?そうじゃなきゃ職場で回りから辟易されてない?

>こういう人は結構いるんだが、私はかなり辟易してる
回路屋なら普通だろ。
866774ワット発電中さん:2007/02/07(水) 12:54:30 ID:oASmvBSv
いや 私はデバイス屋だから ハハハ

>>865氏には、回路理論が電磁気現象のうちのかなり狭い範囲でのみ
適用可能なものだとわかってもらえたようでなによりです

オレ様は物性の知識はないが電磁気なら任せとけって
回路工学しか知らんオヤジが乱入してくるので辟易してたのです
オームの法則を物理法則と思い込んでる人にはもうコリゴリ
ありゃ電気工学でのみ通用する法則だ 自然界のほとんどは非線形なんだよ!

なんかストレスたまっててあたってしまったようでゴメン
すれ違いなのでもうこれで終わりにします

んじゃメシ食ってきます
867774ワット発電中さん:2007/02/07(水) 13:54:28 ID:FCJPe+I6
ハァ?こんな糞デバイス屋がHDLスレなんかに出入りすんなや。
迷惑なだけなんだなデバイス屋は。 塩塩
868774ワット発電中さん:2007/02/07(水) 14:02:39 ID:HPdG5sLh
えーんえーん
869774ワット発電中さん:2007/02/07(水) 14:13:47 ID:wo2wgoyf
>>866

>オームの法則を物理法則と思い込んでる人にはもうコリゴリ

物理現象と実験を通じてその相関関係が確認されたものを物理法則ってんだ
オームの法則が物理法則でなければいったいなんだ。
宇宙の膨張モデルをシミュレートしてる物理屋は物理法則を捜してんだYo

>>867

職場でこっそりネットやるんじゃなくこの時間に昼飯食ってるなんて学生だな
相手にすんな。ウざ杉
870774ワット発電中さん:2007/02/07(水) 20:24:34 ID:IrNxGnqc
HとLが あればいい
871774ワット発電中さん:2007/02/07(水) 22:38:17 ID:dYnzLMoE
あまり良い設計方法か分からないが、
組み合わせ論理を大まかに考えながら時間軸上にレジスタをずらっと並べてから設計するようにしてる。

学生じゃなくても職場でネットしてる時点でダメダメと思うんだが一般的にはそうでもないのか。
872774ワット発電中さん:2007/02/08(木) 03:27:59 ID:ANmu/+Bc
ブロック図と状態遷移表は書く。
873774ワット発電中さん:2007/02/08(木) 04:28:47 ID:OVLNdD/P
>>869
オームの法則が物理法則ではないというのは確かに言いすぎだな。歴史的な経緯もあることだし。

が、現在の物理学の立場は、相対的にマクロな現象はより基本的な法則から導かれるという信念のもとに、
その基本法則を求めるところにある。宇宙の膨張モデルにしても、より基本的な法則を仮定し、
その法則に従う宇宙をシミュレートし、そして現実の宇宙と比較することで、
仮定した基本的な法則の是非を論じるものだから、その範疇にある。

で、オームの法則についていえば、これは電磁相互作用以外の要素がないから、
より基本になる法則を探索するまでもなく、マクスウェル方程式によって完全に説明されるはずだ。
にも関わらず、実際にはオームの法則はマクスウェル方程式から導けない。
そういう意味で、オームの法則は現在の物理学的にみれば唯の経験則に過ぎず、
すでに判明済みのより基本的な物理法則の裏付けがない。

つまるところ、オームの法則は物理現象を記述するという意味で物理法則ではあるが、
一方でマクスウェル方程式以後の物理学的な視点からは物理法則というより電気工学法則なのだ。
874774ワット発電中さん:2007/02/08(木) 07:48:47 ID:jwSk7Rj8
オームの法則って抵抗って概念の定義式で、実は法則じゃないよね

I = E/R のRが常に一定だったら法則にもなるだろうが
広い範囲でRが常に一定となる抵抗体なんて実在しない。
実際には非線形奈挙動を示すものがほとんどだ。
抵抗体の材料や温度に依存するのはもちろん、Rって電圧電流にも依存するってこと。

つまり I = E / R(T,I,E, ...) なわけで

これはもう工学として便利に使える *抵抗* という概念を導入して

R(T,I,E, ...) = E / I

って定義してるだけのこと。こんなのはまったく物理法則ではないよ。

物理法則というのはたとえばニュートン力学の法則のようなものをいう。

第二法則 F = ma

ここの 質量mは 力Fとか 加速度a にまったく依存しない一定値(固有値)だ。
(相対論までいけば見かけの質量mは変わるが、それでも主観質量は不変)。

こういうものを物理法則という。もちろんこれは経験式であり

> 物理現象と実験を通じてその相関関係が確認されたものを物理法則ってんだ

上の引用そのままで導かれたものだ。
真空の光速度一定とか、慣性質量と重量質量の比例(単位系を適切にとれば一致)とか
そういうのが物理法則。
電磁気でいえばクーロンの法則とかアンペールの法則とかが物理法則と言えるだろう。
もちろんそれらを統合したマクスウエルの方程式も物理法則だ。

しかしオームの法則は回路工学のために人工的に作られた定義式。
とても自然現象を観察して経験的に得られた経験法則とはいえない代物だ。
875774ワット発電中さん:2007/02/08(木) 07:55:04 ID:Mo/Ywf2/
で?どこを縦読み?
876774ワット発電中さん:2007/02/08(木) 08:30:14 ID:xdmhz5Us
>>853

>HDLで書いて、論理合成の後、回路図を確認して一応自分の考える回路になってるか確認できれば
>それでok

これって思ってもいない回路になってて
びっくりするときがあるよね

だけどちゃんと動く
877774ワット発電中さん:2007/02/08(木) 11:44:09 ID:6AvohYQm
んーちょっと暴論かもしれんが……ASIC屋なら回路図は意識すべきだけど、
FPGA屋なら回路図なんて意識するだけ時間の無駄。
理想的には、最初っから最後まで回路図なんて考慮する必要なし。

現実には速度や面積の加減でFPGA使っててもschematic見なきゃいけなくなることはある。
でもその時点で、そもそもRTLレベルか、より上位のところの設計が間違ってるってことで、
ただの敗戦処理だよ。最初っから無駄な配線処理を意識して設計するもんじゃないでしょ?

例えて言うなら、Javaでプログラムしてるのにバイトコードを意識するようなもん。
そりゃ、バイトコードを意識するイカれたJavaウィザードはいるし、
超絶テクニックなプログラムは凄いけど、何のためにJava使ってるんだ何か違うだろと。
878774ワット発電中さん:2007/02/08(木) 11:45:52 ID:xdmhz5Us
そうだね
879774ワット発電中さん:2007/02/08(木) 11:59:06 ID:ANmu/+Bc
RTLレベル
880774ワット発電中さん:2007/02/08(木) 12:58:18 ID:UlbnhYfi
コストダウン名目のあおりで、FPGAでも回路というか配線リソースを
最初から意識して設計するけどなぁ…
>>877さんのところみたく、余裕のあるチップ使いたいな…
881774ワット発電中さん:2007/02/08(木) 13:54:56 ID:aE7Ls/hz
> 例えて言うなら、Javaでプログラムしてるのにバイトコードを意識するようなもん。

それは例えがひどすぎないか。Javaでそんな事をするのは確かに変な奴だけど、
実際にはCでプログラムしている時にインライン・アセンブリを使うようなものでしょう。
HDLはJavaほど高級言語じゃないでしょう。
882774ワット発電中さん:2007/02/08(木) 14:20:12 ID:FUyJSK+y
>>873
お前は複雑系を知らんのか?
そもそもHDLのスレで何をごちゃごちゃレス入れてんだ

>>874

ゲラゲラお前も馬鹿だろ
お前の書いたそのまま返してやるよ


a =F/m mが常に一定だったら法則にもなるだろうが
広い範囲でmが常に一定となる物体なんて実在しない。

すると
ニュートン方程式も法則じゃないよな アホ
883774ワット発電中さん:2007/02/08(木) 14:35:46 ID:nPlq1Zc1
自演荒らしかな?
884774ワット発電中さん:2007/02/08(木) 15:10:59 ID:WQhOM0vh
>>874
おい池沼
オームの法則が物理法則じゃなけりゃ。
江崎玲於奈が負性抵抗の発見で、なんでノーベル物理学賞受賞したのか説明してみろ。
工学のため便宜式がなんでノーベル物理学賞なんだ。えぇ?
アホが。
885774ワット発電中さん:2007/02/08(木) 16:55:27 ID:jwSk7Rj8
はーい 池沼です
なんか吠えてる変なのが1匹いるね

まず、江崎玲於奈氏のノーベル物理学賞は トンネル効果の発見の功績によるものだ
決して負性抵抗の発見の功績ではないぞ

それから、負性抵抗そのものはエサキダイオードより昔からよく知られていた現象だ
身近にあるのは発光管、たとえば蛍光灯とかネオン灯とか水銀灯だな
これらは典型的な負性抵抗を持つデバイスとしてよく知られていた
よって単に負性抵抗の発見しただけでノーベル賞ってのはありえない話だ

つーか負性抵抗の存在そのものがオームの法則が物理法則ではない証明ではないかな?
886774ワット発電中さん:2007/02/08(木) 17:22:29 ID:NDn8NWIK
なんじゃそりゃ。
「物理法則」とやらの定義教えろ
887774ワット発電中さん:2007/02/08(木) 17:22:39 ID:llAmaHnq
>>885
お前が変なやつだ
スレと関係ないことを延々書き込みくさって。
糞デバイス屋ごときはこっちの仕様に合わせたデバイス作っとりゃええんだ。
さっさと出て行け、職場の嫌われ者
あ。ひょっとして就職できんかった糞学生か?さっさと首括って死にな。
888774ワット発電中さん:2007/02/08(木) 17:32:47 ID:hp4C5cpz
> 例えて言うなら、Javaでプログラムしてるのにバイトコードを意識するようなもん。
iアプリも505くらいまでは普通に意識して書いてたがね。
サイズも速度も。
889774ワット発電中さん:2007/02/08(木) 18:42:10 ID:llAmaHnq
意識して書いててそれがホントにコードに反映できてるの?
JavaではないがCでもポインタ使いまくってさぞ速度改善できただろうと
Pentiumu上で走らせたら、逆に速度低下した。
幸いターゲットCPU上はポインタ使いまくりの方がよかったんだが、
Javaで開発してて、アセンブリコードまで見通せるか?
890774ワット発電中さん:2007/02/08(木) 19:20:13 ID:ANmu/+Bc
糞コンパイラのせいだ
891774ワット発電中さん:2007/02/08(木) 20:40:31 ID:xdmhz5Us
なぁ
HDLの話題しなつもりなら
よそでやってくれ

たのむわ
892774ワット発電中さん:2007/02/08(木) 21:02:17 ID:hp4C5cpz
>>889
アセンブリコードじゃなくてバイトコードな。
マシンコードとは粒度が全然違うから比較にならんよ。
893774ワット発電中さん:2007/02/08(木) 21:22:29 ID:WMqSNJdd
だけど記述量を減らしたいだろ
894774ワット発電中さん:2007/02/08(木) 21:33:53 ID:xdmhz5Us
たのむわ
895774ワット発電中さん:2007/02/08(木) 21:52:40 ID:2ehGm/NP
>>880
使用リソースの少ないHDL記述と、設計の過程で回路図を意識するのは、
FPGAの場合は同値じゃないと思うけど。
それが切り離されてるのがFPGAで、切っても切れないのがASIC。

>>882
うわでた、複雑系。工学屋がそれ持ち出すときって激しく似非科学の香りが。
882さんが本当に複雑系分かってるのかどうかは知らないけど、
そのキーワード出しちゃ駄目でしょ・・・

>>888
iアプリって、それじゃFPGAじゃなくてASIC設計に近くない?

そもそも、FPGAで回路図を意識するったって、数十〜数万のLUTを真理値表込みで意識するの?
LUTをAND/OR等に展開した等価(だれが等価を保証してるのかしらんが)回路図を意識するの?
前者が出来る人って限られてると思うし、
後者ならゲート段数も遅延も実リソース数も直接は分からんのに意識する意図はなんだろう?
896774ワット発電中さん:2007/02/08(木) 22:43:08 ID:llAmaHnq
>>892
そうだな、Javaだしバイトコードだ。
でもソースコードがどんなバイトコードに落ちるかなんて、
Cがどんなアセンブリコードに落ちるか以上にわからんのじゃないのか?

897774ワット発電中さん:2007/02/08(木) 22:48:08 ID:llAmaHnq
>>895
>うわでた、複雑系。工学屋がそれ持ち出すときって激しく似非科学の香りが。

そんなことないだろ。例えば廃水処理とかも言ってみりゃ複雑系だ。
廃水をいちいち分析してたんじゃいつまでたっても浄化なんてできん。
生体なんかもそうだろ。最近はDNAとの絡みがようやく分かってきたけど、
因子があまりに多くて、逐一分析なんてやってられん。
結局、入力に対する出力を観測して。内部状態を推定する。
波形等化はまさにこれ。
898774ワット発電中さん:2007/02/08(木) 22:57:52 ID:fq1Gvymn
HDLと何の関係があるんだ?
899774ワット発電中さん:2007/02/08(木) 22:59:10 ID:2ehGm/NP
>>897
経験則や工学法則の文脈での複雑系は問題ないんじゃないかな。
物理法則を云々してる文脈で工学博士が複雑系を言い出したら要注意。
900774ワット発電中さん:2007/02/08(木) 23:04:24 ID:2ehGm/NP
>>898
> 結局、入力に対する出力を観測して。内部状態を推定する。
> 波形等化はまさにこれ。

ってことで、FPGAは工学的な複雑系と見なせるか?
って話じゃないの?違った?
901774ワット発電中さん:2007/02/08(木) 23:58:24 ID:GChQBZrS
>>898
いろんなスレに時々来る、不要な議論でスレ荒らしというやつで。
自演荒らしですよ
902774ワット発電中さん:2007/02/09(金) 02:30:11 ID:4a0eo6FA
>>898
自演厨があばれてるだけ
903774ワット発電中さん:2007/02/09(金) 06:42:37 ID:lCzMkMMT
もうFPGA開発のバイトはいやぼ。なんで開発はパートとバイトだけでやらすの。
正社員は人事抗争が仕事なのか。アホ
904774ワット発電中さん:2007/02/09(金) 08:04:49 ID:shXX4Unw
“パートとバイト”って言われると、“おばちゃんと学生”って感じるのはオレだけか?
905774ワット発電中さん:2007/02/09(金) 08:07:16 ID:4a0eo6FA
パートタイマー=おばちゃんだけじゃなく派遣一般
アルバイト=もちろん学生以外もいる
906774ワット発電中さん:2007/02/09(金) 08:16:38 ID:EiElMMl9
ところで15スライスだけ多いとかいわれて詰んでる場合ってどういうところ弄るもんなの?
シンセサイズのオプションはもうサイズ優先に変えてあるんだけど…
ISE 9.1にしたらどうにかなったりするかな?
907774ワット発電中さん:2007/02/09(金) 09:16:51 ID:ZxKUNFgQ
VHDLについて一つ質問があります。

例えば、あるvariable変数a,b,c,dがあるとします。
process(CLK,RESET)
省略
begin
if(RESET='0') then
省略
elsif(CLK's event and CLK='1') then
c:=a+b;
d:=not c(0);
end if;
end process;
と記述した場合、入力がa,b、出力がcの加算器が生成されますよね。
その結果を元に、dの否定が得られますよね。

同様の事を、加算器ではなく自分で作成した回路(モジュール)で行いたいのです。
このような回路を作成するためには、どのようにVHDL上で記述すればよいのでしょうか?
皆様、よろしくお願いします。
908774ワット発電中さん:2007/02/09(金) 09:37:30 ID:ChSKvH81
VHDLで合成する場合、variableではなくてsignalを使う
a b c dの宣言をsignalにして
(省略)
c <= a+b
d <= not c(0)
(省略)
のようにsignal代入文を使え
909774ワット発電中さん:2007/02/09(金) 10:33:43 ID:tBqSp9w+
>>906
9.1だと多少減るから入るかもよ。
でも、そんなぎりぎりでスピードは大丈夫?
910774ワット発電中さん:2007/02/09(金) 13:26:09 ID:xGrlpxsr
>>866
C級出版の付録基板について語る(3)
http://science5.2ch.net/test/read.cgi/denki/1167082443/242


お前がぐちゃぐちゃ書き込んでるから上のスレで間違われたじゃねえか。
なんとかしろ
911774ワット発電中さん:2007/02/09(金) 14:02:13 ID:lgYT9lsc
アホだw
912774ワット発電中さん:2007/02/09(金) 14:14:28 ID:ChSKvH81
866はURLの貼り間違えなんかしないだろうから
すぐ誤解は解けるんじゃないか?
913774ワット発電中さん:2007/02/09(金) 19:33:04 ID:Z1rC/G5P
>>907
> と記述した場合、入力がa,b、出力がcの加算器が生成されますよね。
a、bはどこにつながるん? って怒られない?
914774ワット発電中さん:2007/02/09(金) 22:12:24 ID:m+AYq5HA
FPGAに入りきらないのを 詰んでる か、なんとなくいい表現だと思った
けど、ゲームで詰んでるときってもう絶対どうしようもないよね
915774ワット発電中さん:2007/02/09(金) 22:23:31 ID:ChSKvH81
> FPGAに入りきらないのを詰んでる
倉庫番やってて詰んだ感じ?
916774ワット発電中さん:2007/02/09(金) 23:07:58 ID:fxqRKdIj
>>907
d <= not (a xor b);ってことか。
917774ワット発電中さん:2007/02/10(土) 02:55:48 ID:1ZwiQYdm
ツンデレなFPGA!
918774ワット発電中さん:2007/02/10(土) 05:43:22 ID:8+XWTFCH
そろそろ次スレ準備していい?
919774ワット発電中さん:2007/02/10(土) 10:17:57 ID:u3pQDDcz
だめ早すぎる
920774ワット発電中さん:2007/02/11(日) 11:11:32 ID:0RxBIliZ
MicroBrezeとフリーのCPUIP
未だスイッチとLEDとLCD、あとはステートマシン形式で動かしてる自分が勉強するならどっちの方が良い??
CPUIPならマイコンは弄ってたんで組み込みさえ出来れば使えそう。
MicroBrezeの利点が商業的な宣伝ばっかりで分からないので誰か教えてくれないだろうか?
921774ワット発電中さん:2007/02/11(日) 15:17:43 ID:tN3y4qWM
>>920
CPUの何を勉強するかによるけど、使えればいいならMicroBlazeでしょ。
最近はメモリがDDR/DDR2だから、フリーで組むのは敷居が高い。
FPGA内のブロックRAMで済む程度ならフリーでもいいけど。
922774ワット発電中さん:2007/02/12(月) 01:19:27 ID:hsBiX1q/
>>907
variableは仮想として存在するだけ。合成の時は展開されて消えてなくなる。
signalがなければ回路は出来ない。

>同様の事を、加算器ではなく自分で作成した回路(モジュール)で行いたいのです。
そんなことは出来ない。基本的に入力に対する出力が同じなら、同じ回路が合成さ
れる。
a <= b*c;
と書こうが
process(b,c)
 variable d :integer ;
begin
d :=0;
for i in 1 to c loop
 d := d+b;
end loop;
A<=d;
end process;
と書こうが極端なことを言えば同じ回路となる。もちろん合成ツールがどこまで頑張
るかによるけど。
923774ワット発電中さん:2007/02/12(月) 01:45:34 ID:hWGL7tYP
>もちろん合成ツールがどこまで頑張
>るかによるけど。

ふざけんな!こんなもんやってられっかバーロー!
って言われて終わりになりそうだ
924774ワット発電中さん:2007/02/12(月) 13:34:33 ID:itGay6BC
Design Compilerで、Design Wareが使えるなら、
下手な演算器を作るよりDesign Wareを使ったほうが
いいのか?
925774ワット発電中さん:2007/02/12(月) 18:23:24 ID:Q4zseVRy
> 合成の時は展開されて消えてなくなる。
そうでもないよ。
926774ワット発電中さん:2007/02/17(土) 23:57:18 ID:T9U50EmN
まず言語を覚えてから、とghdl+gtkviewでしこしこ勉強してたんですが、
このほどISE WebPackとQuartus IIを使ってみたところ、いくつか判らない所が
出てきました。

言語と直接関係ない質問なのですが、

・いずれも大量のファイルを使用中に生成するのですが、バージョン
 管理システムに入れる必要のない「不要な」ファイルを掃除する方法は
 あるでしょうか?ファイルが多すぎてどれがなんだか・・・

・Quartus IIではRTLレベルとゲートレベルでシミュレートできたのですが、
 ISE WebPackではRTLレベルの出力しか出せませんでした。ISEでゲート
 レベルのシミュレーションをする設定はどこにあるでしょうか?

・ISE WebPack/QuartusIIとも波形エディタでテストベンチを作れるよう
 ですが、これは使わずVHDL/Verilogでテストベンチを記述する
 習慣を身に着けておいたほうがいいでしょうか?波形エディタだと
 テストが複雑になっていくと破綻しそうな気がしてます。

・これまでModelSimを波形ビューアだと思ってましたが、実はコンパイルも
 シミュレーションもできるようです。とするとISE WebPack/Quartus IIは
 デバイスへのフィッティングと書き込みに使うだけで、普段はModelSimだけ
 使ってテスト&シミュレートというのが普通の開発スタイルなんでしょうか?

といった主に開発スタイルの所で疑問が一杯です。
なんか初心者な質問ですみませんが、教えてください。
927774ワット発電中さん:2007/02/18(日) 03:31:40 ID:Xyun+Y9U
>>926
私のスタイルは多分かなり邪道なので・・・だが、

・波形エディタのテストベンチ
実用にならないと思ったほうが良いと思う。
言語でシミュレーション用の信号・入力を記述して、ModelSIMなりの
シミュレータでシミュレーションするのが、妥当。

・ModelSIM
シミュレータです。
QuartusもISEも、デバイスフィッティングにしか使ってません。

主力デバイスがAPEX20Kだったころは、動作速度が足りずに
パイプライン化で速度を稼いでいたので、演算を分離して速度を確認してから、
またModelSIMに戻ってバグ取り、とかしてました。
Cyclone世代になってからは、当方の使い方では滅多な事では、速度が合わない
事がなくなったので、Quartus2もISEもフィッティング専用です。
928774ワット発電中さん:2007/02/18(日) 11:40:12 ID:MdUpn1ea
ふーんghdlね。そんなのがあるんだ。もう終わりかけの規格を今頃おっかけて何するんだろ?


>・これまでModelSimを波形ビューアだと思ってましたが、実はコンパイルも
> シミュレーションもできるようです。
”コンパイルも”って、論理合成のこと言ってるのか?Simしようと思えばコンパイルするのは当然だし。
何を指すのかよくわからん?

>普段はModelSimだけ
> 使ってテスト&シミュレートというのが普通の開発スタイルなんでしょうか?
ファンクションシミュレートならModelsimだけつかってやることはできるが、
統合環境下で、イニシャルファイルの作成とか、論理合成ツールの吐いたタイミング情報取り込みとか
やらせた方がよっぽど楽。統合環境ならそういうこと意識しないで使えるし。
Asic設計やる奴とか、統合環境なしにmodelsimを頭から使うんだろうが、そうとう面倒じゃないかと思う。
929774ワット発電中さん:2007/02/18(日) 13:08:40 ID:bwyKkd3f
ModelSimってずいぶん不親切だよね
元々頭の良いウニクスから来てるからだと思うけど

>>926 ソース管理
ISEならCleanがプロジェクトメニューあたりにあるよ
これでもきっちり全部消えるわけじゃないけど
俺は最近VSSで管理し始めたけど、ファイルの選別や運用は結構大変だよ
930774ワット発電中さん:2007/02/18(日) 16:11:45 ID:xMhDPKD6
>>928
ソフト屋の趣味ハードいじりの一環での勉強に過ぎないので・・・

ハード設計用言語といえど、どれか覚えれば他の言語も後から
ついてくるだろうと入門書が多いVHDLからやってみました。
ghdlはgccとか使うのと同等のシンプルな使い勝手で軽量だったので、
言語以外の学習障壁がなく勉強用には助かりました。

>>927,928
ModelSimと統合環境の機能分担がよく判らないのですが、

- フィッティング、論理合成、書き込み → ベンダ提供統合環境の仕事
- テストベンチ実行、シミュレーション → ModelSim

ですよね?でも、論理合成ツールの吐いたタイミング情報の取り込み、と
いうことは、

- RTLレベルシミュレーション → ModelSim単体でOK
- ゲートレベルシミュレーション → 統合環境+ModelSimが必要

ということになる?(ゲートレベル、の意味を誤解していなければ、
実デバイスの遅延なども考慮したシミュレーションのことですよね?)。

#統合環境重たい(特にISE)のであまり使いたくない

>>926
やっぱりそうなんですか。ISEでCleanしてもいらないレポートとか
残って、履歴管理どうしてるんだろうと思ってました。
931774ワット発電中さん:2007/02/18(日) 17:09:32 ID:792vrR+X
横から失礼。

ゲートレベルsimてのは、基本的にそれでいいと思います。
でも、多分キモとなるのは遅延simではなくて、合成後でのsimという意味合いが
強いと思ってます。
ModelSimなんかのシミュレータはビヘイビアレベルのRTLをコンパイルして、
これはまさにソフトの世界でのコンパイルを行うイメージで、んでsimする。
でも実機ではビヘイビアレベルを一旦ゲートレベルに落とすわけです。
これを合成って呼ぶのだけど、できるだけ"コンパイル"と"合成"を(言葉で使うときに)きっちり
区別したほうが良いですね。

めったにないんですが、合成結果とコンパイル結果が違うことがあるんですね。
また、不定や初期値等の扱い辺りも含め、最後の確認として1発流す程度でしょうか。

sim速度が10倍、100倍と遅くなることもめずらしくないので>ゲートsim

そんなわけで遅延についてはSTAで確認するのが普通です。

>- RTLレベルシミュレーション → ModelSim単体でOK
>- ゲートレベルシミュレーション → 統合環境+ModelSimが必要

細かくいうとsimの段階に限って言えばISEの統合環境自体はいらんです。
ModelSimXEていう、Xilinxのデバイスのセルライブラリを含んだModelSimが
あればゲートsimできます。
まあ、ゲートレベルのRTLを作るのにはISEがいるけれどw
932774ワット発電中さん:2007/02/19(月) 00:38:37 ID:PWF5HXYB
ゲートレベルSimっていうのは、合成後のネットリストの事?
遅延を考えないとHDLでのRTL-Simとの違いってそんなにあるのかな?
フィット後の遅延Simになるとぜんぜん違うけど
933774ワット発電中さん:2007/02/19(月) 02:58:38 ID:CfI0YZmH
>>932

931さんが書いているように、意図しない回路が合成されて
(合成器のバグ、曖昧な記述によるラッチ生成等)
RTLシミュレーションと差異が出る場合が希にあります。
まぁ、本来は、静的な検証(論理等価性検証)で見るべきだとは思いますが...。

ゲートシミュレーションでも、バックアノテーション(遅延値情報)を与えないで
行う事も希にあるとは思います。
934774ワット発電中さん:2007/02/19(月) 10:19:55 ID:hq/IFsDg
シミュレートがModelsimだけでできるかだけど。
少なくともPLL/DLLぐらいはライブラリ使うんじゃないの?
そしたら、もう統合環境からModelsimをコールした方がはるかに楽だよな。
Modelsim単体の機能や設定を細かく調べんでも、統合環境からクリック一発、
初期ファイルとか、必要な設定を自動でやってくれたのち起動するのでホント楽。
そのあとしばらくはModelsimのTcl/Tkコマンド上からコンパイル、実行してデバッグを繰り返すことになる。
そして、また大きく構成を変更するときは再度統合環境から呼び出すという使い方。
Win版だといきなりTcl/Tkが起動して、これが使いにくいんだな。。。

>Xilinxのデバイスのセルライブラリを含んだModelSimが
単体で使うとこんなこともせんといかんし。ISEだと、セルライブラリをクリック一発で
予めコンパイルしとけばしまい。

ソースやテストベンチのひな形なんかも作ってくれるし。
特にVHDLなんて長ったらしい儀式みたいな部分を自動生成してくれるので、
使わんのは勿体ない。
935774ワット発電中さん:2007/02/19(月) 14:30:28 ID:XmhbjA09
>>932

Verilog HDLの場合、問題になるのはリセット抜けとノンブロッキング代入にし忘れ。
前者はif文の条件が不定になった時に偽扱いになるため、シミュレーションではうまく動いてしまうのよ。
でもゲートだと不定が伝播してまともに動かない。
936932:2007/02/20(火) 16:11:32 ID:LEyQJ+va
>>933
>>935

その手のHDLの記述による違いなのね。
逆のパターンだけど、センシティビティリストの漏れでModelSimでは動作しない
というのはあるね。
あと、VHDLでフリーランカウンタをintegerで宣言してout of rangeとか
937774ワット発電中さん:2007/02/20(火) 19:21:53 ID:F/avg636
後こんなのとか
    if a='0' then
        b<=ある値;
    else
        b<=ある値;
    end if;
aに不定が入ってもRTLだと場合によって上手く動いたりする。
下記で一応回避できるけど。
    if a='0' then
        b<=ある値;
    elsif a='1' then
        b<=ある値;
    else
        b<=不定;
    end if;
俺もゲートモデルで上手く動かない時は不定がらみのことが多い。
938774ワット発電中さん:2007/02/20(火) 21:13:17 ID:B92SFYya
つ『初期化』
939774ワット発電中さん:2007/02/22(木) 10:31:12 ID:ST69Z9UV
>>936

センシビリティリスト抜けもあるね。
シミュレーションで動かないのは直せばいいのだけど、気づかずに合成でラッチが出来たりするとやっかい。
ということで、シミュレーションだけじゃなくてスタイルチェッカは通すべき。
940774ワット発電中さん:2007/02/22(木) 20:39:16 ID:0J682Tom
>>939
藻前、英語、大の苦手だろ。
漏れと同じにおいがするw
941939:2007/02/23(金) 16:39:26 ID:jhpi97Ih
>>940

カタカナで書いているから?
確かに得意ではないが、大の苦手という程でもないよ。
942774ワット発電中さん:2007/02/23(金) 17:18:31 ID:Yu+vcK2p
志村〜、これ。
つ センシビリティリスト
943774ワット発電中さん:2007/02/24(土) 09:06:24 ID:5VwHBkQu
今後どんな回路に力を注ぐべきでしょうか
944774ワット発電中さん:2007/02/24(土) 09:07:33 ID:EiuBWArq
南禅寺
945774ワット発電中さん:2007/02/24(土) 09:18:06 ID:X5v53L78
良心回路
946774ワット発電中さん:2007/02/24(土) 19:45:40 ID:iGIdz5uT
エコカイロ
947774ワット発電中さん:2007/02/24(土) 20:16:04 ID:20rPvlK4
エロカワイイ
948774ワット発電中さん:2007/02/25(日) 00:15:35 ID:bIamEaLE
エロカワカムリ
949774ワット発電中さん:2007/02/25(日) 00:16:00 ID:ui81KCXG
次スレありますか
950774ワット発電中さん:2007/02/25(日) 10:36:38 ID:1Yj0L6cf
終了
951774ワット発電中さん:2007/02/25(日) 10:55:38 ID:JMQbOAGA
任せた
952774ワット発電中さん:2007/02/25(日) 11:17:16 ID:bIamEaLE
1日に4レス程度なんだから次スレたてんの1週間は早いと思うが、、、、
953774ワット発電中さん:2007/03/02(金) 11:27:29 ID:8Z0T0/rN
980以降はあまりに遅いと落ちるんじゃなかったか?
次スレ建てたら埋め立てちゃえば良いんだし早すぎって事も無いでしょ
まあ>>975あたりが建てるで良いかもね
954774ワット発電中さん:2007/03/04(日) 14:10:51 ID:1cmmhSvO
レスすんの1週間は早いと思うが、、、、
955774ワット発電中さん:2007/03/08(木) 21:37:30 ID:h56Q9b7V
井倉さんのSpartan3E付きの本が書店に並んでた
956774ワット発電中さん:2007/03/09(金) 10:46:04 ID:8rG6c0SO
>>955
これ随分高価ですね。もっと安く出ると思ったいたんですが。
957774ワット発電中さん:2007/03/10(土) 13:47:10 ID:OGYxaGdW
机の上が整理されてない人のコードは読みづらい。ソースは俺。

いくつかの基本回路について、無駄もないが可読性の良いソースが載ってたり、
機能分割のノウハウとか、最低限必要なコメントの付け方とかが載ってるような、
がさつな奴向けのお手本に良さげな本やサイトがあれば、教えてやってください。
958774ワット発電中さん:2007/03/10(土) 22:58:48 ID:gVpDsjAP
STARCの手引きとか?
959774ワット発電中さん:2007/03/10(土) 23:33:56 ID:BPWWBpfV
STARCの関係者はボケばっかり。
960774ワット発電中さん:2007/03/11(日) 06:42:02 ID:aA+9qxej
>>955
研究室で必要に迫られて買ってみた。
新宿の紀伊国屋でサンプルがあったから、中身を確認してみて
みることができたので良かった。

「はじめに」のところが、井倉さんの思いが伝わってきてヤケに
泣かせてくれたよ(涙)。
961774ワット発電中さん:2007/03/11(日) 10:01:48 ID:TRCaO8/o
あと5000足せばスターターキットに届くんだよね

井倉さんへの御布施だと思えば安いけど
962774ワット発電中さん:2007/03/13(火) 23:42:33 ID:dxHYzbjr
スターターキットと技評のVerilog本を買っても良くわからん
ワタシには、井倉本は無意味でしょうか?

エライ先生が書いた本なんだが、概念論と記述方法ばかりで
ちぃーーーーともおもしろくない。
963774ワット発電中さん:2007/03/13(火) 23:50:55 ID:gjKD6WCd
前者は無意味じゃない

後者は同感
964774ワット発電中さん:2007/03/14(水) 01:06:06 ID:PFkMAMIn
CPUの創りかたVerilog編とか書いたら売れるかな?
965774ワット発電中さん:2007/03/14(水) 01:12:34 ID:b69c4LZ6
もう下火だが、「萌えるVerilog」なんかで一発当てられるかもね。
966774ワット発電中さん:2007/03/14(水) 01:24:10 ID:vCY3Iuuj
>>961
すみません。
スターターキットとは何のことでしょうか?
967774ワット発電中さん:2007/03/14(水) 02:58:01 ID:/u/qH3rV
Xilinx謹製のSpa3シリーズの評価ボードのこと
Spartan3 \11,000-(もうない)
Spartan3E \18,000-
Spartan3A \23,800-
Spartan3AN $225- (まだない)

これだけある
968774ワット発電中さん:2007/03/14(水) 06:12:31 ID:aYAJpPXB
>>964
それはもう作ったよ
969774ワット発電中さん:2007/03/14(水) 07:58:58 ID:OuukbCn0
>>968
kwsk
970774ワット発電中さん:2007/03/14(水) 08:58:17 ID:rBqsjrkw
CPUの創りかたHDL版

二通りのアプローチがありそう


1)例の本のTTL各IC(ALUなど)を自分でそれぞれ
モジュールとして書き下ろし、それらを結合して創る


2)HDLらしく、状態遷移だけ管理してあとは全部
論理合成におまかせ(つまりTTLシリーズIC単位とは無関係)


たぶん(2)だとあっさり出来てしまって面白くないと思う

971774ワット発電中さん:2007/03/14(水) 10:02:04 ID:dZG+jZl3
(1)には老人の懐古趣味以外に何の価値もないと思う 加齢臭ぷんぷん
972774ワット発電中さん:2007/03/14(水) 10:24:37 ID:79R6BqxY
この板のHDL関連スレでよくstarcがどーこー言ってる香具師いるけど、
なんであんなの買うんだろ?ieeeのスペック買うならわかるけど。
973774ワット発電中さん:2007/03/18(日) 23:28:00 ID:6l5VQznN
XILINXのXCシリーズつかってます。

今、12bitのパルス周期測定カウンタつくってますが、
周期が長いときにカウンタが0に戻らないように
ある一定の上限を与える方法を考えています。助言ください。

1、単純に全ビットをみてある値以上だったら、レジスタから1を引く動作にする。
2、1ビット増やしてMSBを見る。

1は動作が確実なんですけど、乗項の数がハンパなく収まりません。
全ビットではなく上位8bitをみてもまだ収まらない。
2は乗項を削減できたけど、クロックのタイミングによっては4096を読み出してしまう可能性がある。
という欠点がありました。
カウンタの値は4096を超えない4095付近であれば多少動いてもかまいません。

なにかいい案はありますでしょうか?
974774ワット発電中さん:2007/03/18(日) 23:37:18 ID:zlz9XRWr
12bit全部ANDして立ったらカウント止めれば済むだけじゃん。
XCシリーズって何?財は詳しく無いがXC以外のデバイスあるのか?
975774ワット発電中さん:2007/03/19(月) 00:06:06 ID:bW+cP2Ya
>XCシリーズって何?財は詳しく無いがXC以外のデバイスあるのか?
XCしか知らないとは若いな。
XA、XQV、XQRってのもあるぞ。
976973:2007/03/19(月) 00:12:29 ID:ZPrlB/CO
>>974
情報足らずですいません。

カウントやめるとは、カウントトリガを'0'にすることですよね?
でも、そうすると'0'になったままで、次のカウントトリガを検出できません。
ここで言うカウントトリガとは、'1'の間カウントするような信号のことです。

XCシリーズはXC95XXです。
977774ワット発電中さん:2007/03/19(月) 00:18:28 ID:Mvqfb0is
足りないのは情報ではなく想像(創造)力だな
978974:2007/03/19(月) 00:43:53 ID:8yg00v8A
> '1'の間カウントするような信号
周期計測じゃなかったっけ。パルス幅計測なのか?
・計測信号のアップエッジ検出回路を作る。
・エッジが来たらカウンターを0クリア。と同時にカウンター値を結果dffに記録。
・カウンターが0xfffだったら停止。
・0xfff以外の時は勝手にカウントアップ。

>>975
すんません。それほど若くも無いが知らなかった。
979974:2007/03/19(月) 00:54:15 ID:8yg00v8A
あっと、もしかしたらここが分かってないのかな。
カウンター停止とはカウントアップを止めるのであってカウンター回路が死んでるわけでは無い。
カウンタークリア信号が来たら0になって、0xfff=停止の条件から外れるからまた動き出すように
作るんだよ。

つーかこの程度、教科書に載ってねーのか。
980774ワット発電中さん:2007/03/19(月) 02:55:16 ID:ZmrmYPRa

if( clock == posedge) begin
  if( count == 0xfff ) begin
    count = 0xfff;
  end else begin
    count = count + 1;
  end
end

0xfffになったら、0xfffを代入、それ以下なら+1する、
でいいんじゃないの?
981774ワット発電中さん:2007/03/19(月) 07:47:18 ID:tKPKHHNI
みなさん、質問が来ると大張きりですね。
素敵です
982774ワット発電中さん:2007/03/19(月) 12:06:31 ID:4mN/D8nf
まだ次スレ建てなくてもいいかな
983774ワット発電中さん:2007/03/19(月) 21:11:09 ID:n0FSbnHN
直ちに立てなさい。
この手の質問が来ると、みんなでいじり倒して一気にレスが増えるからw
984 ◆YMO/ALTERA
おひさ。
勃てたお。

【Verilog】記述言語で論理設計 Project5【VHDL】
http://science6.2ch.net/test/read.cgi/denki/1174319964/l50