トップページ⇒denki
1001コメント354KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001792= ◆YMO/ALTERA 04/09/03 12:21ID:p+kby74r
HDLの処理系も、それを実際に動かすシミュレータ・評価基板も
安価で入手できるようになってきました。

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

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

前スレ
【Verilog】プログラムで作る回路 Project1【VHDL】
http://science3.2ch.net/test/read.cgi/denki/1072330555/l50
0175774ワット発電中さん05/01/05 04:16:24ID:NGDPEDuk
>>174 
隔離スレに何を書こうが誰も見ない訳だが、
そんなにこちらで論破されてずたぼろにされるのが怖いのかね?
チキンofチキンの高卒哀れだよ高卒。
0176超初心者05/01/05 10:41:32ID:ko/FuqQF
>>165
すいません。大学がしまっててレス遅れました。。。
ええとaの型はintegerです。それでも前に書いたエラーがでます。
0177774ワット発電中さん05/01/05 10:47:31ID:lWvCpkO/
0-64でテーブルが65個あるからか?
0178超初心者05/01/05 10:55:11ID:ko/FuqQF
ぅわ。また間違ってますね>64
でも直しても同じエラーがでるのでそこが問題ではないみたいです。
0179774ワット発電中さん05/01/05 11:36:16ID:DdB5Az5O
>偽計業務妨害罪だよ。

173は単なるバカだな。
法律を自分の都合の良いように解釈しているうちはガキ
大人は自分の都合の悪い方へ解釈してリスク管理する。
0180774ワット発電中さん05/01/05 13:06:20ID:NGDPEDuk
>>179
ハァ?
てめぇは自分が偽計業務妨害で逮捕される事が
都合の良い事なのか?

日本語すらまともに書けない高卒哀れすぎ。
0181774ワット発電中さん05/01/05 18:58:40ID:aebuCLrh
>>176
レスが付かないようなので勘で。
引っかかるのは
 ・乗算そのもの。この場合integer同士の掛け算であってもエラーになる(conv_integer関係なし)。
 ・conv_integerは32bit引数だととりうる範囲が-0x8000000~0x7fffffffだけどそれは大丈夫?
乗算に関しては普通にRTLレベルのシミュレーション等に利用するだけなら問題ないが、
論理合成できない可能性がある気がする。正確には、俺の使っている論理合成ツールでは
合成できなかった記憶がある(少し記憶が曖昧)。俺自身が現在確認できる環境にない。
テーブル引き等そのものは合成でもまず問題ないと思う(複数の合成ツールで合成できてる)。
後、エラーの出るツールの名前は?
解決に至らないようならソースをずっと単純化してそのまま貼り付けたら?
0182エンジニア処遇向上委員会05/01/07 15:47:08ID:VrueFCxZ
エンジニアの処遇改善の為にも、↓ このムーブメントに乗って下さい!

 日本国民はエンジニアを尊敬しる!
 http://science3.2ch.net/test/read.cgi/kikai/1104172261/20-36

このスレでは、結構な方が首相官邸や政党、各省庁へエンジニア優遇政策
の提言を行っております。皆様も是非ご協力下さい。
018318105/01/07 19:04:00ID:NWvYtN5g
間違えたので訂正
integerの取り得る範囲は-0x7fffffff~0x7fffffffみたいだね(少し違和感あるけど)。
もうひとつ乗算の合成についてある程度はっきり思い出した。
乗算自体は合成できていた。ただ32bit×32bitだと合成できなかったと記憶している。
31×31なら問題なかったのか、16×16なら大丈夫なのかはいまだ思い出せない。
0184774ワット発電中さん05/01/09 23:26:00ID:neQ/1vL3
すいません。教えてください。
変換式に小数点の係数があり、処理方法がわかりません。

R[7:0],G[7:0],B[7:0]の場合
Y = 0.299R + 0.587G + 0.114Bの処理を行う場合は、
= 256 * (0.299R + 0.587G + 0.114B) / 256
= (77R + 150G + 29B) / 256
のようにして整数の乗加算したのちに8bit左シフトすればよいのでしょうか?
少数点の係数の演算を調べたのですが、うまく見つかりませんでした。
ポインタでもありましたら教えてください。。
よろしくお願いします!
0185774ワット発電中さん05/01/10 00:05:38ID:mT4qiGvF
精度はどれ位いるんだよ。それによって異なる。

つーか、10進数も2進数も小数の扱いは同じだよ。
固定精度で10進数の計算をどうやるか考えれば、2進数も分かるだろ。
018618405/01/10 00:19:48ID:Ow5wipAk
>>185
精度というか、出力は上記の式で8bitにしたいです。
Y[7:0] = 0.299*R[7:0] + 0.587*G[7:0] + 0.114*B[7:0]
のようにしたいです。
256倍したY[7:0]はY[15:0]になるので
これをY[15:8]をとることで256でわるという上記の方法で
よいのでしょうか?
>10進数も2進数も小数の扱いは同じだよ。
本来なら1000倍して係数を整数にした後、1000で割れば
よいのでしょうが、HDLでは除算器が大きくなってしまうので、
2のべき乗で乗除すればシフト演算ですむと考えたのですが、
根本的にまちがっていますでしょうか?
0187774ワット発電中さん05/01/10 00:49:21ID:g+gcidb9
別に間違ってない。
>>184に自分で書いた式で大丈夫。
0188774ワット発電中さん05/01/10 00:53:06ID:7pV3WoMX
>>186
精度がいらないって、どこまでいらないのかの問題も絡んでくるが。
ちなみに、所要のビット数の精度を出そうと思うと、機能的には最低
でも(出力ビット数は関係無しに)その倍の精度は必要。

2のべき乗の乗除算は、ビットシフトが使える。

とりあえずハードウェアによってしまうが、乗算は乗算器に任せるの
が無難じゃないかな?
018918405/01/10 01:18:06ID:Ow5wipAk
>> 185/187/188
ありがとうございました。精度について気をつける必要があるのですね。
このあたりの考え方が書いてあるWEB/本を探しているのですが、
なかなか見つかりませんでした。
ありがとうございました。
019018405/01/10 10:20:50ID:Ow5wipAk
>>188
>ちなみに、所要のビット数の精度を出そうと思うと、機能的には最低
>でも(出力ビット数は関係無しに)その倍の精度は必要。

184です。考えてみたのですが、出力8bitの場合のサンプリング数
は倍の精度が必要なので、2の9乗あればよいとのことで、
184の式で256ではなく、512をかけるということでよいでしょうか?
(Y[7:0] = 512 * (0.299*R[7:0] + 0.587*G[7:0] + 0.114*B[7:0]) / 512)

188さんは出力ビット関係なしとかかれていますが、
最低、出力ビット数の倍の乗除を行う必要があるという考え方は
まちがっていますか?
たびたびですいませんがおしえてください。
0191774ワット発電中さん05/01/10 14:09:44ID:mT4qiGvF
R*0.01001101 + G*0.10010110 + B*0.00011101 =
R + R<<2 + R<<3 + R<<6 + G<<7 + G<<4 + G<<2 + G<<1 + B<<4 + B<<3 + B<<2 + B = A[?:0]
答え = A[?:8] + A[7] (小数点下第1位で四捨五入)

係数も8Bit精度にした。結果の精度がそれほど要らないのなら、もっと削る。
0192774ワット発電中さん05/01/10 14:17:46ID:mT4qiGvF
結果が出てからBit#8にBit#7を加算するより、あらかじめBit#7に'1'を
加算しておいた方が良いなあ。
0193774ワット発電中さん05/01/11 01:20:33ID:2duFVuB7
verilogで1bit左シフトするとやたらとlogic使うんですけど、
何かいい手はないでしょうか。
0194774ワット発電中さん05/01/11 10:58:33ID:2rDcX6JL
最近VHDLからVerilog-HDLに乗り換えたんだけど、テキストIOって
ファイルに書き出すのは$fdisplayで楽そうだけど、入力するのは
難しいのかなぁ。
たとえばCPUのエミュレータ作って「load 0xff00 0xaa」とかいうのを
ファイルから読み込ませるなんてのはVHDLではreadlineしてから文字列
判別するようにしてvariableに放り込めば、そんなに難しくなかった
んだけどVerilogではファイルからアスキー文字読むときゃどうするの?
2進数と16進数しか読み込めんのか?
0195774ワット発電中さん05/01/11 11:37:58ID:o3rZZd1M
95だと無理というか、Cライブラリの呼び出しみたいなことを
しないといけなかったけど、2001だとある。
http://www.chris.spear.net/pli/fileio.htm
019619405/01/11 12:03:58ID:2rDcX6JL
>>195さん
これこれ。これがやりたかったのよん。サンクス!
0197774ワット発電中さん05/01/11 18:23:16ID:2rDcX6JL
シェアウェアで国産のVerilogシミュレータが出てますね。
http://www.sugawara-systems.com/
Icarus Verilogもいいけど、VHDL-Verligコンバータも入って5000円台ならいいかも。
0198774ワット発電中さん05/01/11 19:17:30ID:W+W2r/lo
>>194さん、
最近VHDLから、Verilogに乗り換える人が多いのは、どうして?
FjだとVHDLだと思っていたけど。
0199774ワット発電中さん05/01/11 20:55:59ID:BVHdVSzv
>197

宣伝ごくろう
0200774ワット発電中さん05/01/11 21:23:06ID:g0gC3QnV
これを紹介すると必ず>>199みたいなのが出るのは何故?
国産品だと作者を叩かないと気が済まないのかね。
何とも卑しいこって。
0201774ワット発電中さん05/01/11 22:21:47ID:zENSPiYv
>>198
部署によるだろ。
0202774ワット発電中さん05/01/12 00:15:28ID:XKXgCzlf
>>198
SystemVerilogとかもあるし、DCのparserが対応していけば
アサーションともあいまってVHDLよりか将来性があるかも。
Fjの代理店とつきあったことがあるけどVerilog HDLしか知らんかったよ(w
0203774ワット発電中さん05/01/12 01:08:27ID:4/KDvaX8
質問です。

verilogのソース中でピンアサインを指定する方法ってありますか?
VHDLなら「attribute pin_numbers〜」でできるというのは分かったのですが
verilogでの方法が分かりません。

よろしくお願いします。
0204774ワット発電中さん05/01/12 01:36:49ID:Mc6YdWxj
>203

漏れもおながいしまつ。
0205774ワット発電中さん05/01/12 02:13:05ID:WDtPZODt
そんな流用できないソース書いちゃだめよ〜 
しまいにゃタイミング制約もソースに入れたいとか言い出すんだろ。

0206774ワット発電中さん05/01/12 02:30:25ID:xZPDBpkn
VHDLよくわからん。ピンアサインとは?
020720305/01/12 02:33:49ID:4/KDvaX8
>205
cypressのwarp3という製品を使っているのですがフィッティングするたびに
ピンアサインが変わってしまい困っているのです。

マニュアルは、VHDLの方ではソース中で指定する方法しか書いておらず、
verilogの方に至ってはピンアサインについては全く触れられていません。

テストするたびに半田づけし直すわけにもいかないので途方に暮れています。
020820305/01/12 02:40:23ID:4/KDvaX8
>206
内部のポートをどのピンに割り当てるかです。

VHDLなら
attribute pin_numbers of refill:entity is
"aaa:1 bbb:2";
等とするとaaa->1ピン、bbb->2ピンと割り当てられるようです。
これと同様のことをverilogでやりたいです。
0209俺様 ◆f0ugTrYQRI 05/01/12 07:39:19ID:KhBLAptn
(;´Д`)ハァハァ  最近太りすぎで困ってるでちゅよ!
お利口タンの皆タン! Verilogで体脂肪を計算したいでちゅ〜
身長189センチ 体重58Kgでちゅ〜
じゃあ待ってるでちゅよ!
ねむねむ〜〜
0210774ワット発電中さん05/01/12 15:34:50ID:RhpX5tcx
>>209
昔のPC板へカエレ!
021120605/01/13 03:46:26ID:kc3MqHG7
>>208
その「ピン」とは一体どういうもの?Verilogには「ピン」という定義がない。
Synopsysでは
module z(a,b,c); input a, b, c; <= a,b,cをポートと呼び、
zzz i0 (.a(), .b(), .c()); <= a, b, cをピンと呼んでいるようだが。
0212いつでもどこでも名無しさん05/01/13 10:39:30ID:V9EDyVg5
>>208
>内部のポートをどのピンに割り当てるかです。

チップの端子の割り当てのことなら
RTLの中にそんなピンアサイン情報は記述しないのが普通では?
Verilogでそういう記述はできない。
VerilogにしてもVHDLにしてもピンアサインは
インプリツール固有の設定ファイルのようなもので指定するはず。
0213774ワット発電中さん05/01/13 12:23:56ID:5cpom69q
質問の意味が若欄
0214774ワット発電中さん05/01/13 18:38:25ID:tUOPQG7F
FPGAへの実装を想定での質問。

イネーブル信号を外から与えて、与えるごとにその時の1クロックだけレジスタに書き込みを行いたい
で、単純に↓のように書いてしまうと非同期になってしまってよくないから他の方法を考えてるんだけど、
こういう場合、どう記述したらいいのでしょうか?
always @(posedge enable)
regster <= data;

与えられたイネーブルを自分でディスイネーブルするにはどう記述したらいいのでしょうか?
0215774ワット発電中さん05/01/13 18:54:04ID:eTrlq5kX
クロックをセンシビティリストに書いて、always文の内部でenable をポーリングするっていうのじゃ駄目?
ただし、disableするには別途信号線が必要になると思うよ。
0216774ワット発電中さん05/01/13 18:55:22ID:Y3DSNb6t
>>215  
YahooBB218137134021.bbtec.net
http://dictionary.reference.com/search?q=electronics
The science and technology of electronic phenomena.

http://dictionary.reference.com/search?q=electronic.
Of or relating to electrons.
Of, based on, operated by, or otherwise involving the controlled conduction of electrons or other charge carriers, especially in a vacuum, gas, or semiconducting material.

eTrlq5kXはelectronicsの意味すら知らない高卒確定。

どんなローカル学会のどんなローカルルールやローカル用語を
書き散らしたところで、

高卒eTrlq5kXの妄言:「フーリエ変換もウィナーフィルタも世の中にあるものは全て偽物だ!疑似だ!そんなものは実現不可能だムキー!!!」
一流大学大学院生によるクリティカルヒット:
「離散化とは高卒以外にとっては帯域制限以外の何物でもない。
よって高卒以外で離散化を疑似フーリエ変換とか疑似ウィナーフィルタなんて言ってる奴は世界に一人もいない。
ググっても0件だ。」

高卒eTrlq5kXの妄言:「周波数領域ではデータが全部そろわないと計算できないんだ!実現不可能なんだムキーー!!」
一流大学大学院生によるクリティカルヒット:「有限長カーネルのコンボリューションは帯域制限付き窓つき短時間フーリエ変換と等価であり、有限長カーネル・窓のコンボリューションを使った実時間周波数領域フィルタは幾らでも実用化されている。
そもそも世の中のDSPのほとんどがこの目的で使われている事すら知らないとはあまりにも哀れ。」

高卒eTrlq5kXの妄言:「サンプリングでは帯域制限なんか絶対されないんだ!AAFが帯域制限の原因なんだムキー!!!」

一流大学大学院生によるチェックメイト:
「ほう、ならAAFを外せばCDは60KHzの音も記録・再生できるというわけか。乙。」

高卒eTrlq5kXの断末魔:「サンプリング定理に帯域制限されるなんて書いてない!ムキー!!」

一流大学大学院生によるとどめ:
「サンプリングで帯域制限されるとは何度も書いてるがサンプリング定理で帯域制限されるなどとは
一度も書いた事がない。日本語すら読めない高卒哀れ。マジ哀れ。
まさかサンプリングとサンプリング定理の区別すらついてないのか?」


これがおまえeTrlq5kXの現実。


しかし、自分が選んできたテーマでずたぼろにされる事ほど哀れなものはないよな。
死んだ方が良くない?

あの高卒ってば、まぁ俺の専門分野ならずたぼろに出来るのは当たり前だから面白くないから
「この板に来てる以上知らない事は許されない固体物理の常識」
を聞いてやった訳よ。
それでもずたぼろで哀れなので、
その高卒が出してきたその高卒の専門分野での質問を答えてやった上に、
如何に高卒がデタラメな事いってるかこてんぱんにして潰してやった訳よ。

まぁ、 狂 う わ なプククククククク

中卒の脳内学会では、反論できなくなると
「●●学会〜〜!!」とか学会名を叫ぶと許してもらえるんだろうか?

そ ん な 哀 れ な 学 会 に は 
間 違 っ て も 近 寄 ら な い

まぁ脳内学会だろうけどな。
0217774ワット発電中さん05/01/13 20:25:04ID:T7MAovKc
>>214

イネーブル信号をクロック同期の回路でエッジ検出をし、
その信号をFFのイネーブルに使う。

>与えられたイネーブルを自分でディスイネーブルするにはどう記述したらいいのでしょうか?

言ってる意味がよく分からないけど何のために必要なの?
0218774ワット発電中さん05/01/13 21:12:18ID:/0E9bOBG
ちょっと思ったんだが
イネーブル信号がクロックより長いことは保証されてんの?
メタステーブルへの対処は?
0219774ワット発電中さん05/01/13 21:32:54ID:tUOPQG7F
>> 217
ん?こういうこと?これだと、どんどんdataが書き込まれてしまいますよね。
1回だけ書き込みたいんですけど。
always @ (posedge clk)
if(enable)
FF_enable <= 1;

always @ (posedge clk)
if(FF_enable)
regster <= data;

>>218
保証されてます。
ソフトウェアでイネーブル信号を書き込むんで。
0220774ワット発電中さん05/01/13 22:00:45ID:eTrlq5kX
always@(posedge clk) begin
 if( !reset ) begin
  complete <= 0;
 end
 if(enable && !complete ) begin
  register <= date;
  complete <= 1;
 end
end

じゃだめかい?
0221774ワット発電中さん05/01/13 22:01:33ID:Y3DSNb6t
>>220  
YahooBB218137134021.bbtec.net
http://dictionary.reference.com/search?q=electronics
The science and technology of electronic phenomena.

http://dictionary.reference.com/search?q=electronic.
Of or relating to electrons.
Of, based on, operated by, or otherwise involving the controlled conduction of electrons or other charge carriers, especially in a vacuum, gas, or semiconducting material.

eTrlq5kXはelectronicsの意味すら知らない高卒確定。

どんなローカル学会のどんなローカルルールやローカル用語を
書き散らしたところで、

高卒eTrlq5kXの妄言:「フーリエ変換もウィナーフィルタも世の中にあるものは全て偽物だ!疑似だ!そんなものは実現不可能だムキー!!!」
一流大学大学院生によるクリティカルヒット:
「離散化とは高卒以外にとっては帯域制限以外の何物でもない。
よって高卒以外で離散化を疑似フーリエ変換とか疑似ウィナーフィルタなんて言ってる奴は世界に一人もいない。
ググっても0件だ。」

高卒eTrlq5kXの妄言:「周波数領域ではデータが全部そろわないと計算できないんだ!実現不可能なんだムキーー!!」
一流大学大学院生によるクリティカルヒット:「有限長カーネルのコンボリューションは帯域制限付き窓つき短時間フーリエ変換と等価であり、有限長カーネル・窓のコンボリューションを使った実時間周波数領域フィルタは幾らでも実用化されている。
そもそも世の中のDSPのほとんどがこの目的で使われている事すら知らないとはあまりにも哀れ。」

高卒eTrlq5kXの妄言:「サンプリングでは帯域制限なんか絶対されないんだ!AAFが帯域制限の原因なんだムキー!!!」

一流大学大学院生によるチェックメイト:
「ほう、ならAAFを外せばCDは60KHzの音も記録・再生できるというわけか。乙。」

高卒eTrlq5kXの断末魔:「サンプリング定理に帯域制限されるなんて書いてない!ムキー!!」

一流大学大学院生によるとどめ:
「サンプリングで帯域制限されるとは何度も書いてるがサンプリング定理で帯域制限されるなどとは
一度も書いた事がない。日本語すら読めない高卒哀れ。マジ哀れ。
まさかサンプリングとサンプリング定理の区別すらついてないのか?」


これがおまえeTrlq5kXの現実。


しかし、自分が選んできたテーマでずたぼろにされる事ほど哀れなものはないよな。
死んだ方が良くない?

あの高卒ってば、まぁ俺の専門分野ならずたぼろに出来るのは当たり前だから面白くないから
「この板に来てる以上知らない事は許されない固体物理の常識」
を聞いてやった訳よ。
それでもずたぼろで哀れなので、
その高卒が出してきたその高卒の専門分野での質問を答えてやった上に、
如何に高卒がデタラメな事いってるかこてんぱんにして潰してやった訳よ。

まぁ、 狂 う わ なプククククククク

中卒の脳内学会では、反論できなくなると
「●●学会〜〜!!」とか学会名を叫ぶと許してもらえるんだろうか?

そ ん な 哀 れ な 学 会 に は 
間 違 っ て も 近 寄 ら な い

まぁ脳内学会だろうけどな。
0222774ワット発電中さん05/01/13 22:21:42ID:BTjdO9b3
>>219
おしい。こんな記述すればいいはず。
慣れると無意識に出てくるほどの常套するコードだと思う。
wire en_load = ~enable_last & enable ;
always @(posedge clk) begin
if(~reset)
enable_last <= 0;
else
enable_last <= enable;
end

always @(posedge clk) begin
if(~reset)
register <= 0;
else if ( en_load )
register <= data;
end
0223774ワット発電中さん05/01/13 23:08:58ID:tUOPQG7F
>>220 >>222
ありがとう!
>>222を見る前だったから、>>220を参考にして↓のように
したらうまくいったよ。
always@(posedge CLK) begin
if(!RST || !enable) begin
complete <= 0;
end
if(enable && !complete ) begin
regster <= data
complete <= 1;
end
end

>>222もありがとう。こっちは1クロック前のenableを記憶しておく
っていう感じかな?よりRTLを意識できてる記述だね。こっちも検討してみる。

CPUとかは作ったことはあるんだけど、
こんなコードは初めてで、相当悩んでました。
自分はまだまだだなって痛感しました。ほんとに助かった。
0224774ワット発電中さん05/01/13 23:41:30ID:tUOPQG7F
ちなみにXSTで論理合成したらどちらも同じものが生成されました。
0225774ワット発電中さん05/01/14 00:14:46ID:uyX49uIJ
フリップフロップ使わない方法のが
シンプルだよ
0226 05/01/14 00:25:48ID:DSUj7hGO
always@(posedge CLK) begin
 if(!RST) begin
  complete <= 0;
 end else if if(enable && !complete ) begin
  regster <= data
  complete <= 1;
 end else if( !enable ) begin
  complete <= 0;
 end
end
0227774ワット発電中さん05/01/14 00:33:16ID:DSUj7hGO
訂正
always@(posedge CLK) begin
 if(!RST) begin
  complete <= 0;
 end else begin
 if if(enable && !complete ) begin
   regster <= data
   complete <= 1;
  end else if( !enable ) begin
   complete <= 0;
  end
 end
end
0228774ワット発電中さん05/01/14 01:05:35ID:uyX49uIJ
elsif使えよ
それに゙!゙は別にいらねーだろ
0229774ワット発電中さん05/01/14 01:07:08ID:iTXXAj1h
>>228
それよりフリップフロップ使わない方法ってのを詳しく
0230774ワット発電中さん05/01/14 01:11:15ID:DSUj7hGO
×if if(enable && !complete ) begin
○ if(enable && !complete ) begin

!は要るだろ。なんで要らないというのか理解できんな?
0231774ワット発電中さん05/01/14 01:14:55ID:uyX49uIJ
記述はシンプルいず ベターだ。
! いらね
0232774ワット発電中さん05/01/14 01:17:15ID:DSUj7hGO
else if を使う部分をelsifつかうのはお前の勝手だが、
!をはずしただけじゃロジックが代わるだろうが。
使わないなら等価なRTL書いてやれよ。
0233774ワット発電中さん05/01/14 01:20:36ID:uyX49uIJ
面倒くせ FF_なんたら とかいらね
Z とかでいいんじゃん 紛らわしいし
あんま怒んな
アウトロ行け
0234774ワット発電中さん05/01/14 01:28:37ID:DSUj7hGO
あれれ?
コンパイラオプションの`elsif
はあるがVerilogでelsifってあったか?
0235774ワット発電中さん05/01/14 01:30:36ID:iTXXAj1h
>>233
なぁんだ、信号名が気に入らねってだけか。わかった。
completeはセットリセットの値を逆にすれば!は無くせそうだが
!RSTは取っちゃだめだろ?
0236774ワット発電中さん05/01/14 01:31:52ID:DSUj7hGO
>>233
おまえVHDLと混同してないか?
今調べたけどVerilogでelsifは予約語じゃないぞ。
0237774ワット発電中さん05/01/14 02:39:19ID:aX7Y8NgQ
出来上がりのハードが想像つくように記述してよ。

wire E;
reg [2:0] sr;

always @(posedge CLK or negedge RST) begin
if(!RST) sr <= 3'b000;
else sr <= {sr[1:0], enable};
end
assign E = sr[2:1] == 2'b01;

always @(posedge CLK or negedge RST) begin
if(RST) register <= 1'b0;
else if(E) register <= data;
end

(1) FFのリセットは非同期が普通
(2) enableとCLKは非同期なのでCLK同期化する必要あり
0238774ワット発電中さん05/01/14 02:41:39ID:aX7Y8NgQ
2個目のif(RST)はif(!RST)のタイポ
0239774ワット発電中さん05/01/14 20:28:19ID:81hH15z4
大学で回路設計を勉強しています。
HDLを勉強中でよく下のサイトを使っています。
ここの課題1と2には解答がないので、自分の解答があっているか自信が持てません。
どなたか解答をお願いします。
http://www-isys.eei.metro-u.ac.jp/~sho/pub/sw_vhdl/node60.html
0240774ワット発電中さん05/01/14 20:41:13ID:aeks9V98
>>239
スレ違い
こっくりさんにでもきいてくるんだなw
0241774ワット発電中さん05/01/14 21:00:47ID:RNhgLUWf
>>239
回答も何も、2のシミュレーションが通るまで記述を修正せよってのが課題だろ。
0242774ワット発電中さん05/01/15 13:12:14ID:qiwIiiOd
>>239
キミみたいなのが将来うちの会社に紛れ込むと迷惑だから
住所氏名を教えてくれる?
0243774ワット発電中さん05/01/15 13:42:30ID:dXXfaYjc
と、ひきこもりニート君脳内できる社員が申しております
0244774ワット発電中さん05/01/15 14:06:23ID:CCXrd3QH
住所氏名はともかく都立大であることはわかるわけで
0245774ワット発電中さん05/01/15 16:46:33ID:/u3r+DO2
VHDLのentityで定義するbufferの意味がわかりません・・・。
どなたか教えてください
0246774ワット発電中さん05/01/15 17:02:09ID:3bwiy2VL
>>237程度の回路規模ならともかく、機能が込み入ってくるとハードウェアを念頭において考えられなくなってしまいます。
例えばSDRAMコントローラぐらいになると漏れ的には機能を満足することで頭がいっぱいに・・・
回路を念頭に置いたHDL設計を上達するためのアドバイスをよろしくお願いします。
どうもプログラム気分になってしまう。

PS
それでも論理合成ツールが賢いのでそこそこ動いてくれるのが助かってますが。
0247774ワット発電中さん05/01/15 17:14:13ID:EzexuhFm
>>239

平成11年7月27日
11年から留年坊や?
0248774ワット発電中さん05/01/15 17:18:16ID:SZzGD2Ar
毎年同じ問題出すのはよくあること。
大学行ったことないのかい坊や?
0249774ワット発電中さん05/01/15 18:42:52ID:OJjBnkU9
>>246
ステートマシンなどのランダムロジックとデータパスを
分けて考えるといいんでない?
0250774ワット発電中さん05/01/16 02:18:52ID:hxQgE3vT
>>245
outは右辺値にできないがbufferなら右辺値にもできる。
ただbufferはあまり見かけない。
outと同じ信号をsignalで用意してそれを参照することが一般的だと思う。
0251774ワット発電中さん05/01/16 23:52:33ID:5DrLSNTn
FFのリセットは非同期が普通?
どこの 世界の普通?
クロックない 石なんて今更 どこにあんの?
お前 不安定な初期状態の一般にいわれる Q、Q^
測定した事ある?
学生か
0252774ワット発電中さん05/01/16 23:57:43ID:aO/zrW98
>>249
SRDAMコントローラはインタリーブを効率よく行うためのバンクの割り当て方が難しかったり、
Act->Com->PreChgを効率よく行わないといけない。
ランダムロジックとデータパスを分けるなんていう難しさとは違うよ。
0253774ワット発電中さん05/01/17 00:06:54ID:rzGLYOfQ
>>251
システムリセットと勘違いしてるんじゃね?>>普通は非同期
0254774ワット発電中さん05/01/17 00:08:29ID:EMb2YSmX
>>237の云うようなFFのリセットは非同期が普通なんて聞いたことがない。
ディジタル回路設計は普通感覚や、常識や道徳で作るモノではない。
しかもenableはCLKと非同期と書いてあるのに一発しか叩いてないし、
メタ・ステーブルの発生するところにゲートでロジック組んでるし。むちゃくちゃ。
0255774ワット発電中さん05/01/17 01:41:36ID:o490Ue7Q
>>254
237じゃないけど

エッチ・ディー・ラボのデザインマニュアルも初期リセットは非同期リセットにしろって
書いてあったと記憶している。某社のLSI設計マニュアルもそうなっていたと思う。

エッチ・ディー・ラボのHPでデザインマニュアルの目次が見れるが、初期リセットは非同期
リセットという項目があるんで間違いないと思う。 ttp://www.hdlab.co.jp/

もうエッチ・ディー・ラボはマニュアルを扱っていないけど
"RTL設計スタイルガイド初版"が 半導体理工学研究センター(STARC)で入手できるもよう。

ttp://www.starc.or.jp/index-j.html

STARCのマニュアルは読んだことがないんで、同じ記述になっているかは不明。
0256774ワット発電中さん05/01/17 01:47:07ID:TdGG//AH
学生にもわかるように 端的に言うと
人間が最終的にコントロールするのは 結局アナログインタフェイスだよな

いくらディジタル もとい ディジタルが 発展すればするほど 最終的にアナログを操作しないと使えないんだよ
DA変換で一番必要なのは クロック これないと バッファ、サンプリング できないよ
だから クロックはあって 「普通」だろ?
他にもたくさんあるぜ。 同期 これ 必需。 これないと なにも使えない
0257774ワット発電中さん05/01/17 01:49:41ID:TdGG//AH
おまい それ なんでリセットすっかわかってんの?
0258774ワット発電中さん05/01/17 01:53:13ID:EMb2YSmX
hdlabはコンサルだからな。スタイルガイドはデザインルールではなく、デザインガイドラインだ。
繰り返すがやつらはコンサル屋なのであり、設計屋ではない。
FFにしたって(プロセスにもよるが)非同期よりも同期式のほうが面積が小さい場合が多い。
「普通は非同期」の一点で設計するやつはなにも理解していない、コンサル屋の思うつぼ。
0259774ワット発電中さん05/01/17 02:51:57ID:9QQ3QVB8
面積は小さいが、非同期だとクロックツリー張れるからタイミング調整楽という説も。
0260774ワット発電中さん05/01/17 03:22:11ID:XRmAdDE8
>>256
うーん、クロックからアナログにまで発展したので期待したのだが枝葉を省くと、

”学生にもわかるように 端的に言うと
ディジタル回路なんだから、クロックはあって 「普通」だろ?
他にもたくさんあるぜ。 同期 これ 必需。 これないと なにも使えない 。”

ってことよね。これで学生納得するのか?こんなのはどうだ?

"順序回路だからこそリセット要るのよ。順序回路なんだからとうぜんクロックあるでしょ。
だからいろんな問題ある非同期じゃなくて同期リセット使う。"
0261774ワット発電中さん05/01/17 09:52:44ID:gKLRqskA
電源投入時の過渡状態を考えれば、非同期リセットにしておくのが無難。
同期リセットより面積が大きくなったとしてもそれは必要なコストってだけの話。
0262いつでもどこでも名無しさん05/01/17 10:57:35ID:GFuo8TXk
同期リセットを追加するのは仕様によるだろうが、
クロック停止状態でも初期化できるように
初期化必要なFFには非同期リセット使うのが普通。
同期リセットだけで非同期リセットできない回路なんて
スキャンテストの時にいい迷惑。

スタセルには非同期セット/リセット付きセルが用意されてるし、
同期リセットを使う方が余計なロジック増えますよ。
ここにはFPGA屋と学生しかいないの?ASIC屋はいないのか?
0263774ワット発電中さん05/01/17 11:23:19ID:2OI18uw3
クロックがいつも供給されてるって発想がアホ
0264774ワット発電中さん05/01/17 12:28:07ID:agQ5CCCe
>>262に同意。
ASIC設計だと同期リセットはリスクをちゃんと理解していないうちは使わないほうがいいよ。

エッチ・ディー・ラボからSTARCに移管されたマニュアルも
変わらず非同期推奨です。別に「コンサル屋の思うつぼ」と言われてもねぇ。
0265774ワット発電中さん05/01/17 13:35:48ID:HrfGrsKt
>>264

>エッチ・ディー・ラボからSTARCに移管されたマニュアルも
>変わらず非同期推奨です

おまえはアホか?
そんなもん何の基準にもなるかよ。いったいどういうオツムの構造してんの?
0266774ワット発電中さん05/01/17 13:46:13ID:TdGG//AH
ASICは用途別に やたらあるから あれを普通?というのは 極端だろ?

設計しねぇで
スキャンばっかしてろ
他人の造ったもん 波形だけで 何がわかんだよ!ベン図からやり直せ
オモシロスコープ!
0267774ワット発電中さん05/01/17 13:57:24ID:nbreKvnf
>電源投入時の過渡状態を考えれば、非同期リセットにしておくのが無難。

逆だろ。

電源投入時の過渡状態を考えれば、同期リセットにしておくのが無難。

だよ・
0268774ワット発電中さん05/01/17 14:11:25ID:8iwaSufX
>>267
なぜそうなる?
ほんとに製品作ったこと無いな。
0269774ワット発電中さん05/01/17 16:08:44ID:iXKmfkSo
>>267
>電源投入時の過渡状態を考えれば、同期リセットにしておくのが無難。

外バスのインターフェースなんかの出力が不定でもいいんですか、へ〜。
お前のチップは、気が付いたら勝手に外メモリの中身を壊してたり
バスがぶつかってデバイス壊したり、しかもそれは個体差があって
原因解析が困難だったりしそうで、到底商品として成り立たない罠w
0270774ワット発電中さん05/01/17 17:28:15ID:/PYWwVzP
それぞれの専門分野でそれぞれの常識があるんじゃね.
俺はASICで既存のシステムへの組み込みを想定した回路設計
やってるから非同期リセットが基本,て考えてるけど.
ASIC想定してる奴も他の何か想定してる奴もこのスレッド見てるんだからさ,
それぞれの"普通"で話してたらかみ合わなくて当然じゃね?
ASICならこの記述,他の何かならその記述,それでいいだろ.

前提条件がはっきりしないままでの不毛な喧嘩はやめて
みんなで一緒にrtlでオモシロスコープ記述しようぜ.
0271774ワット発電中さん05/01/17 20:20:35ID:o490Ue7Q
>>270
確かに、別に感情的になる必要ないよな。
----------------------------------------------------------------------------------------
ある国内半導体メーカーのデザインマニュアルのリセットの項目を要約すると。

同期リセットを推奨するが、初期化リセットについては非同期リセットになるようにしてください。

理由は、、初期リセットは、通常のバスとは異なり、タイミングの問題がなく タイミングを合わせる
為のゲートが削除できます

また、同期リセットにした場合、ゲートレベルのシミュレーションにおいて、値が確定しなくなる
(Unknown状態) になることがあります。
------------------------------------------------------------------------------------------
LSIのデザインをしている人は、多分同じような記述を見たことがあるんではないかな。
結局のところ、大抵の人が最初にデザインガイドとかで読んだことがベースになっているのでは、

同期リセットを主張する人の、情報ソースや同期リセットを選んだ理由は何なんでしょうか?
もしも、同期リセットが望ましいChipがあるのなら知っておいたほうが良いですからね。
0272774ワット発電中さん05/01/17 22:15:35ID:/XQigBzI
>>264
ここみると逆のように見えるな。
http://www.starc.jp/bookstore/semiguide.html
同期ロジックモジュールのテストの自動化を考えると同期がいいんだと思うけど、
チップ上のリセットどっちかに統一せいとなると非同期になるってことだろ。
0273774ワット発電中さん05/01/17 22:22:48ID:9QQ3QVB8
まず、ここまで読んだ感想として、専門家が素人に知識振り回してコケおろすもなんだかなぁ。
で、疑問ですが、

>タイミングの問題がなく タイミングを合わせる為のゲートが削除できます
非同期リセットで、タイミングの問題が楽になるのは分かる。
「タイミングを合わせる為のゲート」は減るのかも知れないが、 トータルでは
やっぱ増えるのかな? 規模によるのかも知れないけど。

>ゲートレベルのシミュレーションにおいて、値が確定しなくなる
これは某合成ツールを使用する前提でのRTL記述のミスでは?
某合成ツールを使ってるなら、sync関係の属性を正しく指定すればシミュレーションでも
問題は起きないと認識していますが。
0274774ワット発電中さん05/01/17 22:30:30ID:CjrT1Uq5
クロックが常に供給されていてFFがステートマシンぐらいにしかない
規模の小さなコントローラーチップなら同期リセットでもいいんでない?

漏れの設計分野はミリオンゲート越えるマイコンで、リセットラインに
STAなんてやってられないし、複数のクロックドメインがあるし、
省電力対策でアクセスしないFFのクロックは止めるし、
DC動作は要求されるし、非同期リセットが常識の世界だけどね。
■ このスレッドは過去ログ倉庫に格納されています