【Verilog】 記述言語で論理設計Project14 【VHDL】 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
HDLの処理系も、それを実際に動かすシミュレータ・評価基板も、
安価で入手できるようになってきました。
このスレが目に入ったお嬢さん! HDLで何か作って遊んでみませんか。
日曜工作のHDL書き、学生さん、プロの方、主婦の方、カキコお待ちしております。
関連情報は >2-10 あたり。
入れ食いキーワード
・Nios、MicroBraze
・Artix-7、Kintex-7、Virtex-7、ハードコアCPU内蔵 Zynq-7000
前スレ (直近スレのみ)
2012/11/03〜 【Verilog】 記述言語で論理設計Project12 【VHDL】
http://uni.2ch.net/test/read.cgi/denki/1351913871/
2011/12/07〜 Project11
http://uni.2ch.net/test/read.cgi/denki/1323187568/
2010/09/17〜 Project10
http://kamome.2ch.net/test/read.cgi/denki/1284652343/
※前スレ
http://rio2016.2ch.net/test/read.cgi/denki/1394091422/ MIT発、VerilogをベースとしたDNAプログラミング言語
早く弄りたい )))()())()(())))))(((()())((()))(()(((()()()((()())))((())(((()()))(((())))(
(())(()(((())()))))()())((()()()())((((()(()()())()(((()(()))))(())))())()()
((())()(()))(((())())()))(()())(((()()())((())())(()()((()(())))))()((()))()
()(())))(()()))))(()()))((()()()()))))()((())))()())(())()()(((())((((()((((
())(()))))(((((((((()()))())))()()))()(()))))((((())()())())))()(())((()((((
))()()(()((((()))())))((()()((()(()()(()()(()()))))(()()((())())()))())()(()
)())())())((())))()(()())))()(((((())))(((((()))((())()))(())((())((())(()()
())()()()()())())()()))(()(()))()(((()()()()()()))())()(()())(()))()(()(((((
())(())(()(()((((())(()(()(()())(()()))())()()())()()))())()(()))))()(()((()
())((()()(())((())(())(((()))))()))))((())(((()))()))()()(((())((())((())())
)(())()()))()()))()((())()(())(()((((())()))()))))((()))))((((())()((()(()((
)(()(((((((((())(()()((()))()()(((())())()()()()())))))()())(()))()()()))())
()())))()))()((((((()))()()))((())(()()((())()(())()())))()((()(((()()))(())
))(((()()(())))))(())))((())(())(()(()()(())((()(((()((()))))())())()))((()(
()())()(((())((()())(()))(()())))(((()(()())((()((())()()((())()))(())()))))
)))(()()))))()()((())()())))))(()(()))())(())((()((()(()))((((()((()(())((()
)()(())(()))(())(()))))((()))()()))()()()((((())())))((())()())((((((((())()
(())()))))())()()((((())())(((()()())()(()())))())()((()(((()())))((())))(((
()(())(((()()()()())()()))()()))(()()()()())()))(()()())))(())(((()))((()(((
(()))))())())))))())())())))(()()(()))(())(((((((()())()((((()((())))(()((((
())()()(())(()()))(()())())((()(())()((())()()()(()()))))()())((()())((()()(
()())))))())())(()()))()(()((())((())(()(())(((((())()())(((()(()()))()(()))
(()))())))(()))))())())(()())()()(()(()())()((()(((()())(()(((((()))()((()))
(()()))(()(()(())())(()()())())((()(()(((()))())))())))()(()))((()(()())(()(
)())))())())))))()())((()))()))()()()))(((()(()))(()()(((((((((()(())(())(((
(()(()()()))(()(()((()))))))()((((())(()()())())(()))(()))(((((())(()))))(()
())((())()))(((((()))(((())()(()()(()()((()()))()(()(((()()))()))())))()))()
()()()())())())))((())())((((()(())()()((()()((((()))()(())))(()))())))(()((
()())()())))(((((())()))))())))(()()())))))(()))(((()((((()(((()())((())()((
((((())()(())((()(()()())((()()()(()())()))()((())))(((())()))))))()((()))()
)))(((()(()()())()()((()())))((()(()))((((((()())((())(())())))()))()(()))()
)())(())())()(((((()(((()()())())())()))()))((()))))()(())(()))(()((()()()((
(()((()(()()(()((()))(((())()(((()(()))(()())))()(())())))())((())()(())))))
)())())()(())))))(((())()()(()(((())()())())(((()))))))))(((()(()(()()()((((
))()))(()()))())))()))))(())(((()()((())()))))()(((()))((())(()((()((((()(((
))))((((()())(((()(()))))))()(()(()()(())((((())))((())((()()))))()(()(())()
))(())(())()))((())(())))((()))())((((())(()((()))))(((()())))((())()()(()((
)((()())))(()(()))(())()(())()((((((((()(((()(()(())(()))))))(())))()))(()))
())(((())()))))((())(()(()()))()())))(())())(((())((((()()(()))())((()())()(
)(()))()())()()()()))(()()()()()())))())(()(()()))(()(()())))))((((((((()(((
)))(()()()())(()))(()((())))((((((((()(((())))))))()()))(((()())((((())))())
)))(())(()((((())())(()))()))))(()())))(())))()()))(()()((()())()((((()(((((
()()()()((())(()(())((()))(()(()))()()))()()(((())()()()())))))()(())()(()((
(((()(((())(()(())())())))()))))((())))(())(()()))(())(((((())((()))()()(())
)((()()()))())()()()(())((()()(()))())(((((())))((()))())())())(((()))((()()
())(()))(())))()(((())()()()()((())))())))(((()(()(()(((())())()))((()((()))
())))))(())()()()((((()()())()(()))()()(())))((()((())((())((()))))()()()(((
)()))))))()))((())))))()(()(()()(((()(())(()())((()()())))()())(((((((()(()(
((()())()(()()))())))())(())(()())()(())((())()()()((()))()())(((((()))()()(
(()(((())()()()(()(())(()))())()())()()((())(((())()))(())((())())))()((())) )()(((()((())()())())())()((((()()))()))))))()()((((()))())(())()))(())(((((
(()))(()()()))())(()()())()(((()()((())))))(())()())(()()())(()()((((())())(
((()())(((()))())()()()()(()((())))(())))()()()))()()(())()(()(((())))()(()(
(()(()(((()())(()))()()))())))()()((()()))()))((()(())())))(((()(()(((()()))
)(())((())()((())))((())()((()())())(()()(()((()((()))(())))))))(()(()()))((
)(())))((()))((()(())))()((()()()((())()())(())))())()()()((()(()())()))((((
)))))()()(((()()(()())))()(()(()()())(()(())((()(()(())(((((()))((()))()))))
(()())(()(())()())((((((())())))(()))())())(())))(()))))(())((()(()()((()()(
)()(())((())()((((()))())(())()(())(()))))())())((()))()((())(()()(()()())((
)))((((())()))(())()((((())()()(()()((())()))))))()())())()()((())(()((((())
(())))((()))())(()(())())))())()(()()()())(())(((()((()))((()))())(()()(()((
()())()()))())(()()()((()))(((((((()())()()(((((())())))()()()))))))((())()(
())(()(())(())(()()))(())((()((()(())((())((()())))))(()((()()()(()))))))()(
))()()()(())((())(()(())))((((((((()((())))()))))(()(((())(()))))((())())())
)(()((())())()))()(())()(())()()()))))(((()(()(()))))(()((()))()())))(((((((
)))))))(((()))()((()((()((((()()()(((()()())))()))()(((())((()())))()(()))()
((())())())(()((()((((((()(((()((()))))()(((()))))))()))()()((()())))())()))
(())))((((()(()()()(()()())))((()(())()()()()(()())))())())()))((()(())())((
))())(((((())(((()(()()()(((()))()()())))))()))((())(()()(()))))())())(()(((
)))())()(()())))()((((()((()(())()()()))))(((()((()))()()()())(()()))()((()(
))))())))()((()(()()))(((((()(()()())()(()())(((()())(())(()(((())())))))()(
()(()))()())()))))))(())()()())))(()()(((()()())()))()))()(((()()(((()((((((
)))))()()()(((((((()(()))))()())((((())()))((((()))((())()((()((()))))(())))
()()))()())(()((()())()()(((()))(()((()()))()))()()()((((()(()))((()())())))
())()))()(())(()()(())(()((()((()(()((((())()()))(())())))(()((())())())()))
)(()()))())((()())((()))((((())())()(((((((((())))(()())())))(()())())())())
))((()))))())))()()((()(()()(())((()(((((())(())()(((()(())))(()(()))))(()))
)((((((()(()))())((()))))(()()()))())()())))()(()(((())((((())()))())((()))(
(((()))()(()((()(()(()))))()((())))())(()))((((((()))((()(((()))())()))())))
)()()()())(()()()(())((()((()()))()))(())))()))))(((((())))(()((()((()()())(
(()(((()))())(())))(())(((()(((())(())()()()())()(())(()))))()(()((()))))(()
)(((()((())()((()(()((())))))()())()(((())(()((()))))(())()()))()(())))((())
)((()(())())()))())()()(()()(())()())(())()(())((()(()(())(((())))))(())()((
((()())()()))((()()(()())()()(()(()(()(())(())))))())))))(((((())(())))(()((
(())()())(((()(()()(())(()()))(()())(())(((())()))(())(()()))(()))((())))(()
((((())((((())((((((()))(((()))()()()()()())())())))((((())))(()))))))()))()
))((()))())((())()(((())()()(()(())()()()())((((()((((())))()))()))))(())(()
)))(((((()))()()))()))())(()(())(()()(())))(()))()((()()))((()))))((()((((((
()()((()((()()()((())))(()))))()(()))())((())())())(((((())))(()(()(()()))()
()())((()(()))))))(()(()((())())()(()))))(()(())())(()))())(()(()((()()((()(
))()((())((()))()()())))))(())()))((()((((()(()((()()))())((()()()())))(((()
)())((())()()(((((())))(()()(()((())))(()()())())()(((()))()((()()))))(())()
()())(())()(()((((()(((()()))(()())()()))(())(((()(())()))(()())))()))())(()
()()))(((()())()()))()))))((((()(((())((((())(())((())))))()(()(())(()())())
())(()()()))()()))(()((()((()))))((()))((((()(((()())()))))))(()))((())((()(
))()()(((()((()))())))))))(((()())))())((()())(()()())()(())))((((()()(()(((
()((()))((((()((()((()(())())(())(((())())())(())(())((())(()))))))))()(()))
(()))())(((((()(((()(()(()()()))))))))(())((())))(()(()))(((()())((())))(())
))()))()()(()))()())()()((())())))(())((())))()()()((((())(((())(()(()))((((
(())(()(())))(()((((((())(((()))((())(()())())())()))())()))()())()(()((())) 仕事で論理設計して4年目だけど、未だにVerilogへの違和感が拭えない。 ALTERA(MCLK=50MHz)から1Hzを出力しようと思ったら、どういう方法が最適でしょうか 50MHzのカウンタをGPSからの1PPS信号でリセット、25Mパルスカウントで出力を1にする 50Mhzから1msecパルスを作成して有効利用をする。
1msecから100msecパルスを生成して有効利用をする。
100msecパルスから1Hzを作り出す。
役に立たない無駄社員の有効な使い方と同じだね。 >9
100msecパルスの有効利用方法を10個ほどあげてみて。 追跡が難しいエラー
A common error is to connect a signal which is supposed to be an input to
an output port.
Because Verilog is so flexible with regard to connecting ports, this will usually not be caught until simulation time, when a wire has two drivers on it when it should only have one, or when a wire has no drivers on it.
These errors can be difficult to track down.
インプットになるべき信号をアウトに接続してもエラーが出ない。
そんなことはないよな。こいつ何いってるんだろ。 0または2つ以上のドライバで駆動されるwire
open又は衝突するからか?
見つけにくいって事はねえだろ。
Lintがエラー出す。
Sim後ならNCでもverdiでも追跡は得意だろ。
……まともにport接続してれば。 3state バスにするとセレクター作って合成してくれた。ISEの頃だけど。 文法は一通り覚えたので、勉強用に本をいくつか買おうと思ってます
皆さんのおすすめの本はありますか? 前スレのリセットなんだけど、リセットIC無し且PLL使わない場合どうすんのが一番いいんだ? デバイスごとに変わる。プロジェクトごとに変わる。
アプリケーションごとに変わる。 >>20
ありがとう
今手元にDE0しかないんだけど、ユーザー回路のリセット作るとしたらどうするのが一番いいですか? 既にボードになってるんだろ?
fpgaならコンフィグ後には初期化されてる。
クロックも止めないんだろ?
外部リセットも要望するなら同期化させといた方が安全安心。 コンフィグ時に初期値Max(たとえば0xFF)のダウンカウンタが
動いてる間はリセットっていうやつとかどう?
カウンタが0になったらリセット解除。
リセット信号はグローバルラインに乗せること。 すべてのFFが同時に動作し始める保証がないので、カウンタよりはシフトレジスタのほうが良いよ。
logic [7:0] shft = 8'hFF;
always_ff @(posedge clk)
shft <= {shft, 1'b0};
assign rst = shft[7];
とか。 >>22-24
ありがとうございます
>>24の案がしっくりきました! >>24
すべてのFFが同時に動作し始める保証がないってのは
コンフィグが終了するまでの間はリセット保持しておくべきってこと?
シフトレジスタの長さをそれに合わせて調節するという感じですか? コンフィグが終了するまでは、>>24 の回路自体が存在しないよ(構成されてない)
何が解からないのかが解からない、のレベルか? >>24
logicというのは、regと何が違うのでしょうか?
あと、連接で、shift[6ころん0]としなくてもよいのでしょうか? 24は SystemVerilog なんでしょ
shift のほうは、先頭ビットが捨てられるだけだから
warning は出るかもしれないけどエラーにはならないし
bit幅拡張する方向と違って結果どうなるかについて
あいまいな要素ないから使ってるんでは?
## 個人的には、VHDLの'high,'low,'range みたいなのが
## verilog にもあったら・・・って思う >>27
コンフィグが終了するまで回路自体が存在しないのは>>24も同じことで、
すべてのFFが同時に動作し始める保証がないのはシフトレジスタも同じなのでは?
なんでカウンタよりシフトレジスタが良いのかが分かりません シフトレジスタなら各FFの動作タイミングがずれても
1を保持してる状態がかわらないからかな? 一般的な話をすると、変なクロックが入ると
バイナリカウンタは値が飛ぶ。
一番極端な話を持ち出すと0xFF→0x00遷移ではあらゆる値に飛び得る。
冷静な話をすると>>23の0xFFからのダウンカウンタは
最初の一発目で0xFE以外に飛ぶとしても0xFFなので
シフトレジスタと大差ない。
でも好みはシフトレジスタかな。 最初のほうでコンフィグされた回路は全体のコンフィグ終了前に
動作し始めるの?
もしそうなら、前スレで出てたPLLのLocked信号なんか使った方法でも
PLLとリセット信号発生の回路が最初にコンフィグされるって保証ない
わけだから、ほかの先にコンフィグされた回路がリセットかからずに
走り出しちゃうってことになるんだけど >>23
アルテラだとffの初期値は0じゃなかったっけ >>29
SystemVerilogなら$high(shft)とかでできますよ。 >>35
インバージョンプッシュされるから、あまり気にしなくていい。 >>13
「NCでもverdi」
金持っている企業じゃないと、そんなの使えないからw NC Verilog懐かしいなあ。
表示用PLI作って遊んでた。 回路設計習い始めたけどブロッキング代入ってのがどうにもよくわからん。。
辻褄合わせの設計しか出来なくて嫌んなってきた こんな書き方しないで
always @(posedge gclk or posedge reset)
if(reset)
fb_q <= 24'h0;
else
fb_q <= fb_input;
always @(posedge gclk or posedge reset)
if(reset)
fset_q <= 24'h0;
else
if (fset_ena)
fset_q <= fset_d;
こっちのほうがいいよな。
always @(posedge gclk)
fb_q <= fb_input;
always @(posedge gclk)
if (fset_ena)
fset_q <= fset_d;
always @(posedge reset) begin
fb_q <= 24'h0;
fset_q <= 24'h0;
end; やっぱり end else begin を入れないと見にくいよね。
always @(posedge gclk) begin
if( reset == 1'b1 ) begin
fb_q <= 24'h0;
fset_q <= 24'h0;
end else begin
fb_q <= fb_input;
if (fset_ena == 1'b1 ) begin
fset_q <= fset_d;
end else begin
fset_q <= fset_q;
end
end
end さすがに fset_q <= fset_q; はいらないでしょ always @(posedge gclk) begin
fb_q <= fb_input;
if (fset_ena) fset_q <= fset_d;
if (reset) begin
fb_q <= 24'h0;
fset_q <= 24'h0;
end
end >49
きれいだが、それだと同期リセットになるからだめ。意味が違ってくる。 @(posedge gclk or posedge reset) で。 } else {
は許せるけど
end else begin
は気持ち悪い こっちのほうが俄然いいと思う。なぜなら非同期リセットなんてロジック
本体にあると邪魔だ。ロジックがよみづらくなるから。
always @(posedge gclk) begin
fb_q <= fb_input;
if (fset_ena) fset_q <= fset_d;
end
always @(posedge reset) begin
fb_q <= 24'h0;
fset_q <= 24'h0;
end とくにレジスタが大量にあるときは一か所で一括してクリアしてしまう。
こうするのがいいと思う。
always @(posedge reset) begin
fb_q <= 24'h0;
fset_q <= 24'h0;
asst_q <= 24'h0;
vbnt_q <= 24'h0;
z5tyuq <= 24'h0;
sdft_q <= 24'h0;
hjty_q <= 24'h0;
fser_q <= 24'h0;
njit_q <= 24'h0;
mmlt_q <= 24'h0;
hyut_q <= 24'h0;
vvgt_q <= 24'h0;
tyut_q <= 24'h0;
i89t_q <= 24'h0;
end これで特に問題なければ、モジュールのreg定義をサーチして自動的にクリアロジックを
つくるマクロを作っておけば、リセットを気にする必要なしにプログラムできる。 もう、Verilog じゃなくて別の言語作ってくれよ。
マジでそう思う。
同期設計に特化して、クロックや非同期リセットなんてわざわざ指定せずに済むようしてくれ。 tclでマクロ作ってみた。 正規表現使うと簡単にできる
//--- reg reset logic ---
always@(posedge reset) begin
buf1 <= 0; // reg [7:0] buf1;
buf2 <= 0; // reg [7:0] buf2;
buf3 <= 0; // reg [7:0] buf3;
end 本当は set rq {\[(\d+):(\d+)\]} とか使ってレジスタサイズ出して 8'd0に
したほうがいいのかも >>64
ちんこには、コンドームをつけるのと同じです。
生が好きな人は生がいいだけの話です。 parameter val1 = 11
parameter val2 = val1/2
は
1011→ビットシフト→0101
で「5」
という切り捨ての認識で大丈夫ですか? >>66
厳密にはビットシフトではなくて整数の除算ですけどね。 せっかくTCLでマクロ作ったのに腹立つことにコンパイラが全然受け付けんな。W モジュールのマッピングってどうしても不細工になるんだが
imageとしては
{dtout, ack} = i2c(clock, reset, dtin);
こういう感じだよな。
そこで考えたのがこれだ!!! どうだ。
//-------------------------------------------------------------
i2c u1( //I2C instance
dtout, ack, // <=== //output
clock, reset, dtin);//inuput そんな小技を考えなくていい新言語を考えてくれよ
inoutもきれいにかけるようにしてね >>70
parameter val1 = 11
parameter val2 = val1/3
ビットシフトなら↑とかどうするんだよ? http://zakii.la.coocan.jp/hdl/25_parameter.htm
・・・なぜならば、マクロはどのソースファイル内でdefineしても、FPGA全体のソースファイルに対して有効になるので・・・
この人の認識、合ってる?
AやXを使ってる限りそのようにはならないけど 環境依存?
もし主張通りなら、わざわざ ファイル毎に `include xxxx.v とかする必要がなくなるので
そのコーディングなりを参考にさせて頂きたい >>53
同感だけど、じゃあどう書く?って言われて有効な方法ないんじゃ?
3行に分ける? >>73
関係ないけど、include するファイルのファイル名って、みんなどうしてる?
.h は編だし。.vi とか見かけるけど。 SRFFってどう書いたらいい?
案1
always@(posedge clk or posedge reset)
if (reset) srff <= 0;
else if (s | r) srff <= s & ~r;
案2
always@(posedge clk or posedge reset)
if (reset) srff <= 0;
else
srff <= r ? 0 :
s ? 1 : srff;
案3
always @(posedge gclk)
srff <= (srff & ~r) | ( s & ~r);
アルテラプリミティブXort自動変換の場合
always @(posedge gclk)
srff <= (srff & ~r) | (~(srff) & s) | ( s & ~r);
s r srff
0 1 x 0
0 0 srff
1 0 1
1 1 ~srff (こいつが入るのはあり?) 案3は非同期リセットいれるのを忘れたが、案3がベストか? 案1でこれまで
づっとやってきたんだが(1か月くらいだけど、、、) >>82
ほんとだ、すまん。
else srff <= s | ~r&srff;
で。 >>80
always_ff @(poseedge clk)
if(s)
q <= 1'b1;
else if(r)
q <= 1'b0;
これでいいんじゃないの?
クロック同期のものをSRFFというのかよくわからんけど。SRFF風? それ普通JKって言ったりして。
何なんだよJKビジネスって。 >84
ある寺ではprimitiveに同期srffってあるよ。11で出力が反転するけど。 案4
always@(posedge clk or posedge reset)
if (reset) srff <= 0;
else srff <= (srff | s) & ~r;
実はこれが正解ね。 JKだと
jkff <= j * ~k | ~jkff * j | jkff * ~k;
かな あ、AND書き間違えた
jkff <= (j & ~k) | (~jkff & j) | (jkff & ~k); ソースコードで入力したプログラムにテストフィクチャーを使って動作確認をしたい時
ソースコードはinputにクロック信号がくると仮定して作ったものである場合、テストフィクチャー上ではどのようなプログラムを記述すればよいのでしょうか?
イマイチ使い方がわかっていない状態で、論理合成は成功してるが信号が入ってきた動作確認が何をすれば確認できるのか全くわかっていないです >91
test benchでググると書き方がわかるよ。 >71
それちょっと考えてみたんだが、言語は作れるとして一般のプログラム言語のように
asmレベルの言語てあるんだろうか?
verilogに落とし込むという手もあるが、verilog自体がかなり抽象的だから細かい
記述がむつかしいよね。でもverilogに落とすのが無難かな。 SystemCで書いたこれって意味わかる?わからんよね。W
C++はすこし使ったことがあるが、これはなんのこっちゃらわからん。どこがどう抽象
化されてるん?
これよりVerilogのほうがマシだろ。W
一体全体何を狙ってるんだろう。予算か。W
# include "systemc.h"
SC_MODULE(adder) // モジュール (クラス) 宣言
{
sc_in<int> a, b; // ポート
sc_out<int> sum;
void do_add() // プロセス
{
sum = a + b;
}
SC_CTOR(adder) // コンストラクタ
{
SC_METHOD(do_add); // カーネルへのdo_addの登録
sensitive << a << b; // do_addのセンシティビティリスト
}
}; A+Bって書くだけなのにこれはやりすぎというもの。W >>93
verilog で and/or で書けばいいさ 入力判定でon信号がきてから±1秒でスイッチを押せているかどうかと言うのはどの様に書いていけば良いのでしょうか? if(スイッチが押されて1秒以内に入力判定が来た)or
(入力判定ONから1秒以内にスイッチが押されたか)
OK
else
NG >on信号がきてから±1秒でスイッチを押せているかどうか
±1秒というのがわからん これは違うかな。
specify
$setuphold( posedge on信号, スイッチ, 1, 1 );
endspecify まあでもそんなのは30円くらいのマイコンでやることだな。それでも部署に
よってはI2cをFPGAに組んでくれというところもあって1ch100万で2ch
だから200万でと適当に見積もりしていたら、本当にやることになったこと
もある。 >>102
I2Cから浮動小数点演算まで、
月額63万円の派遣で組まされているから、さっさと転職したい。
給与は、月30*(12+3(ボーナス)) ぐらい、税引き前。
あたしゃ、もう疲れたよ。 普通は7掛けだから間接の分け前が多いのは大手だな。 昔、今リクナビで募集している
稲城のシーデックス
中身は派遣で
月75万客先請求 時給1100円 見込み残業ありで、
日立系列・ルネサス武蔵に派遣されたぞ
イッテヨシ 実は派遣の人材には時給1000円〜30000円位の能力のバラツキが
あって、一律75万払ってその中にかなりの雑魚が混じっていても、優秀なの
が数名いれば受け入れ側としては已む得ないとするんだよな。
だから時給1000円くらいの能力で月30万も貰っているとお得だよね まずVHDLなのかVerilogでやるべきなのかすらよく理解してないけど、はじめの一歩に良い本とか環境を紹介してください
AとXの開発環境もとりあえずインストールしてみたけど、なんか取っかかりが無くて何から勉強したら良い物やら・・・ >>108
入門者テキスト向けのテキストとしては、個人的に以下がおすすめ
・「HDL独習ソフトで学ぶCQ Endeavor Verilog HDL」
(ttp://shop.cqpub.co.jp/hanbai/books/38/38961.html)
・「HDL独習ソフトで学ぶ CQ Endeavor VHDL」
(ttp://shop.cqpub.co.jp/hanbai/books/38/38951.html)
ちょっと高い(税込定価4,104円)けど FPGAでI2Cって面倒なだけで簡単じゃん
それで100万をやりたくないお断り価格ととらずに発注してくれるのか シノプシスとかケーデンスが売り上げアップのために無理やり推し進めてたんじゃないの?
そのくせ、ツールも凄く高くて普及させる気もなさそうだったけどね。
ソフト屋を連れてくればハードも出来ますよって騙してた。 >>109
サンクス。早速読んでみます。
どちらをやるべきかといえばやっぱりVerilogなのかなぁ? どっちか取っつきやすいと思えた方でいいと思う
一つ覚えたら用語や概念の置き換えで片一方も覚えられるはず。 確かにキツいね
何がキツイって、やたら無駄が多い
同じモノ書いてコード量が2倍とか、アホらしくなってくる
仕事でもなければ、こんなもん選択しない つまり、最初はVHDLから入るべきって事だな。
ゆるゆるなVerilogより圧倒的にいい。 Verilogで、もっとチェックが厳しいのは無いんだろうか。
「そんなこと、事前に教えてくれよ」というのが多い。 >>122
Verilatorで文法チェックができるらしい。
本来はVerilogシミュレータだけど、
チェック機能だけ使うこともできるそうだ。
http://seesaawiki.jp/don10ueda/d/Verilator%3A%3ALint%A5%C1%A5%A7%A5%C3%A5%AF#content_1
http://dora.bk.tsukuba.ac.jp/~takeuchi/?%E9%9B%BB%E6%B0%97%E5%9B%9E%E8%B7%AF%2FHDL%2FVerilator%20%E3%81%AE%E5%B0%8E%E5%85%A5%EF%BC%88C%2B%2B%E3%83%A2%E3%83%BC%E3%83%89%EF%BC%89 verilogしかやってない人の記述は汚すぎな奴率多い気がするな >>109
これ、もう新品では手に入らないのね・・・
尼だとプレミアム価格になってて吹いた
定番と言われるstarc本も解散したせいですごい値段だしなんだかなぁ・・・ >120
Verilogですらやたらと無駄が多くて頭にくるのにVHDLときたら、、、、 昔のXACTみたいに自分で配置配線出来ると楽しいんだが。 >>130
お、電子書籍になってたのか。紙との値段差凄いなぁ・・・
紙でほしいけどこの値段差だったら一冊分でVHDLとVerilogの両方買えるし電子書籍になっちゃうかなぁ オンデマンドのやつ会社で買ってもらったけど
なんか裁断がイマイチでページめくりづらい ブッコフではやすり掛けしてるらしいね。日焼け落としでだけど。
会社でやられては敵わんから家に持ち帰ってやったらどうか。 海外にいって、pdfの暗号化解除して印刷して持ち帰ったら、著作権法違反なのかよくわからないよね。
ぬるぽ! CVC を cygwin (32 bit) でビルドできないでしょうか。
とりあえずヘッダファイルを linux から持ってきて、ld の -m オプションの指定を
i386pe に変えてみたりして進めたけど、cvclib_str.s のアセンブルでエラーになってしまう。
ld の -m オプションも正しいのかどうかわからないんだけど、できた人いませんか。 >>137
cygwin環境は知らないけど、
hexasm cvclib.o __cvclib 8 > cvclib_str.s
で止まるのは、カレントディレクトリにパスが通ってないから。 >>138
そこは通ってます。その変換じゃなくて、その後のアセンブルでエラーになるんですよ。
てか、linux ではビルドできてます。
どうも ELF だの COFF だのといった形式の違いが関係しているらしい。
linux で使ったところ、icarus より断然速かったんで、Windows でも使いたかったんだけどなー。 >>139
Tachyon CVC がオープンになってるとは知らんかった。アリガト
ざっと見ただけだが、少なくともhexasm.cとv_asmlnk.cは手を入れないとだめぽい
ま、それだけで動いてしまうような気もする。 16bitバイナリの値をアスキーに変換するのもう分からん
まず10進数でみたときの1桁単位で値を分解する方法が分からん
こうなったら65535ワード40bit配列作ってしまおうか? $display("%5d",x);
壱の位を加算で求める(1,2,4,8,x6,x2,x4,xx8…)
0.1を掛けて、十の位を求める
0.01を掛けて、百の位を……
BCD encode shift and add-3を使う
10で割って…… 小学校で割り算(組み立て除法)習ってないのか
51かけて9ビット右シフトするインチキも・・・ >shift and add-3
適当に書き散らかしたら、46000や64600でバグったよママン。 X=40000以上ならばY1=1にしてXから40000を引く
X=20000以上ならばY2=1にしてXから20000を引く
X=10000以上ならばY3=1にしてXから10000を引く
X=8000以上ならばY4=1にしてXから8000を引く
X=4000以上ならばY5=1にしてXから4000を引く
X=2000以上ならばY6=1にしてXから2000を引く
X=1000以上ならばY7=1にしてXから1000を引く
.....
とずーっとやっていくとX1,X2,X3.....がBCDになる
ループで記述することも可能。
65536ワードより少なく、19ワードのテーブルを使う。 う、ケアレスミス
>とずーっとやっていくとX1,X2,X3.....がBCDになる
X1,X2,X3.じゃなくってY1,Y2,Y3.だね。 .
always @ (posedge CLOCK) begin
end
って、やるようになってから、
↓みたいなカウンタを見ると、イラっとしてしまう私は病気でしょうか?
http://www.marutsu.co.jp/wp/datatech/7342/ 言い忘れました。
HC163とNANDゲートを使って欲しいです。 Verilog人口ってどのくらいいるんだ? 日本に10万人はいないな。1万人くらいか? 特電のボード見てた後に、DE0-Nano-SoC 見たら欲しくなってやばい。 結局のところ勉強用にサンプルコードやらフリーのIP見てるとVHDLの物も多いし、Verilogにみんな移行した感じでもないので両方勉強しないと駄目なんだなぁとは思う アルテラとザイリンクスってどっちがいいとかありますか? ラティスとアルテラってどっちがいいとかありますか? >>154
用途聞いた上で、それならAのコレだね、あれにはXのこの辺だね、って判断しかできない。
どっちかが相手を完全に凌駕している訳ではない。 >>154
FFT/IFFT FIR使う信号処理なら、xilinx。
ALTERAは使いにくい上に有料だから。あとメモリ配置が高速処理にはむかない。
一般用途と、CPUとかならアルテラ。
つうか、アルテラはインテル狂ってるから。 省電力だったらLatticeというイメージだったけど実際どうなん? OpenCLで検索すると、Altera/Intelの広告がトップに出てくる >160
高速ってどのくらいのスピードのこと?
ALTERAで400Mhzで処理をがんぱったことあるんだがギリギリだったな。Xなら
余裕とか? verilogでレジスタに直接zを書くのって大丈夫ですか? 精神障がい者年金は1級だと毎月一生8万円もらえるそうですが、ヤクザや入れ墨の家庭の不良のニートたちが不正受給していて問題だと思います。
躁うつ病だと仮病を使って、ヤクザの人気取りの精神科医師の診断書1枚だけで毎月8万円もらえるのおかしい。しかも不正受給に近所でも気づけない!
生活保護のように経済力を査定する機関を介してでないともらえないようにしたほうがいいと思います。
全く薬物治療しなくても精神障がい者年金がもらえるんだよ!ここがおかしい社会保障制度のひとつです!
税金がそんなところにつかわれるのおかしいです。不良のニートや入れ墨のお小遣いになっている精神障がい者年金制度は問題です! レジスタは値を保持する物のであって、ハイインピーダンスの状態を保持するのは気持ち悪いような。。 やったことないけどエラーで弾かれたりワーニングでたりしないかね。 ツールさえ強力ならFF 2個と3ステートバッファで実装できるんだから
エラーで弾くべきじゃないだろ
現実に合成できるツールがあるかどうかは知らん >>166です
みなさんありがとうございます
レジスタの値をシフトレジスタに突っ込んで、ある出力のトライステートを実現させられたり出来るかな?と思った次第です
イネーブル用のレジスタを1個おけば済む話とは思うのですが。。 >>175
それらを使っている奴らは、「罪、Linkす」 SystemVerilogって使ってる?
使い始めてみたんだけど、bit型って初期値0なんだけど
合成した回路でもリセットなしで0になってることが保証されるの? 合成してみれば一発でわかるのに何を言ってるんでしょうね。 たまたま 0 になってるのか、保証されてるのか合成してわかるもんなんでしょうかね。 そういうのは言語仕様ではないから、合成ツールのカスセンへ ありがとうございます。
ググりまくったらサザーランドの本の一部がgoogle booksで読めて
それによると保証されないと書いてあった。
IEEEの規格も無料配布されてるけど合成のことは触れていない。
FPGAなら初期値も合成しちゃうんだろうけど。
ということはリセット漏れの検査がシミュレーションではできないのか。 ○ 合成後ネットでやる。
○ bitを使用禁止にする。
starcさんならきっと使用禁止のガイドラインにしてくれる。 ソフト屋さんなんだろうな。合成出来るのはツールによって違うサブセットなのに。 つか合成前提にしたロジックでリセット入れないとかシミュレーションたるくてしかたないだろ。 いやいや、言いたいのは、
複数人で開発してたり自分がトチ狂ってたりして
リセット入れ忘れた信号があったときに
テストから漏れる恐れがあるってことだよ。
合成後にテストできるにしても工数的には早く見つけるに越したことはない。
ま、ガイドラインとしては>>183のいうようにmodule内は2値型禁止しかないね。 >>185
俺が無能ってのも大きいだろうけど、出力がXのままになるな。 DNA用の「プログラミング言語」をMITが開発。望みの機能をコーディング〜コンパイルし、細胞へインストール
>言語のベースになったのはデジタル回路シミュレーションに使われる「Verilog」で、プログラミング言語として実行可能とするためにバクテリアの DNA に論理ゲートや、化合物や光に反応するセンサーの役割を果たす機能を設計してあります。
http://japanese.engadget.com/2016/04/05/dna-mit/ c言語をちょっとかじった俺が入りやすい方法ある?どこかで入門セミナーやってないかな? SystemC だね。ソフト屋さんでも簡単に使えるよ。
少なくともツールベンダーはそう言ってた。 FPGAで液晶のAQM1248に文字を表示させたいんだが,どう制御コマンドを送ればいいのかさっぱりわからない...
誰かご教授願いたい... >>193
早い...早速参考にさせていただきます。
ありがとうございます!
教えて君になってしまい申し訳ないです... >>188
ほう、厳格さを要するDNAプログラミング言語もベースはVerilogなのか
MITがそうなのだから時代はVerilogなんだろう OpenCoresに登録しようとしたけど、受理された旨のメールが来ない… >>183
RTL設計スタイルガイドの電子書籍版で仕様禁止にされてた(2-101ページ)
紙の最終版は見たこと無いなら知らない
あと、STARCは死んだ… >>188
おお、生命科学の分野でVerilog
やっと俺らの時代きたか? warningが、300個も出ました。
やる気が出ません。
寝ます。 俺は3,000個に出てたから大丈夫。最初から書き直そう。多分ロジックはあってるけど記述のしかたが悪いだけ。それが解れば正しく記述し直せばいい。そんなに大変じゃないよ。 ゼロは超難しい
AもXも、ツール o rデバイスのバグまでwarninで出してくるからな 僕もワーニングが多くて困っています。
Verilogで、待ち時間などのmoduleを作るとき、
wait # (
.w_clocks ( 1000 )
) w1 (
・・・・・
);
と、呼び出し側で数値を決められますが、呼ばれた側の中では、カウントするregのbit幅を取るのに、
「これぐらい取っておけば大丈夫でしょう」と
reg [15:0] count;
とかのbit数を見込みで設定します。
しかし、それよりも短いbit数で済む値を入れると、余りbitに対して一斉にワーニングが出て
WARNING:Xst:1710 - FF/Latch <count_15> (without init value) has a constant value of 0 in block <w1>.This FF/Latch will be trimmed.....
WARNING:Xst:1710 - FF/Latch <count_14> (without init value) has a constant value of 0 in block <w1>.This FF/Latch will be trimmed.....
WARNING:Xst:1710 - FF/Latch <count_13> (without init value) has a constant value of 0 in block <w1>.This FF/Latch will be trimmed.....
WARNING:Xst:1710 - FF/Latch <count_12> (without init value) has a constant value of 0 in block <w1>.This FF/Latch will be trimmed.....
WARNING:Xst:1710 - FF/Latch <count_11> (without init value) has a constant value of 0 in block <w1>.This FF/Latch will be trimmed.....
などとなります。
このワーニングを消すには、ちゃんとbit幅を適正にしてやる以外に無いのでしょうか?
指定値のw_clockは、constなんだから、コンパイルの時点で自動的にbit幅を計算してくれて、
ワーニング無しにしてくれればいいのに、と思うんですが。 単に、オマエが知らないだけだろ
reg [log2(w_clocks)-1:0] count; >>206
ありがとうございました!
素晴らしいです。こんな便利な物があったのですね。ありがとうございます。
ところで、
カウントアップする増分値の表記は、どのようにしたら良いのでしょうか。
reg [log2(w_clocks)-1:0] count; // bit幅、自動
count <= count + 16'd1; // +1は16bit幅 固定
この 16'd1 ですが、これも自動的に幅を揃えられるでしょうか。
parameter inc = (log2(w_clocks))'d1;
count <= count + inc; // 増分値のbit幅も、自動
とかでしょうか。 log2付けるの忘れてた、細かいところは↓を参照してくれ
http://marsee101.blog19.fc2.com/blog-entry-2504.html
// http://www.beyond-circuits.com/wordpress/2008/11/constant-functions/
function integer log2;
input integer addr;
begin
addr = addr - 1;
for (log2=0; addr>0; log2=log2+1)
addr = addr >> 1;
end
endfunction ISE14.7で試してみました。
reg [log2(w_clocks)-1:0] count; // bit幅、自動
always @ ( posedge clock ) begin
if( reset == 1'b1 ) begin
count <= (log2(w_clocks))'d0; ←エラーでした
count <= 0; ←ワーニング無し、動作もOKでした。
:
:
function integer log2;
input integer addr;
begin
addr = addr - 1;
for (log2=0; addr>0; log2=log2+1)
addr = addr >> 1;
end
endfunction
log2(w_clocks)-1 : 0 で、単純に文字に変換されるなら、行けそうだと思いましたが、
さすがに 16'd0 とは見てくれませんでした。 count <= 0;
count <= count + 1;
で何か不都合ある?
前にも議論があったような気がするけど ない。
リントでワーニングは出たりするけどね。
気になるなら、 { (log2(w_clocks)){1'b0}} とかにすると上のワーニングは消せる。
{{ (log2(w_clocks)-1){1'b0}} , {1'b1}} とかにしても、オーバーフローのワーニングは出るので、
下手に複雑な書き方はしない。 warning "HDLCompiler:413" だろ?、 確かに出るね
意地でも消したいなら下、提示の ISE14.7 なら消える
parameter P_BIT_LEN = log2(w_clocks);
count <= count + 1;
↓
count <= {count + 'h1}[(P_BIT_LEN-1):0];
or
count <= count + {{(P_BIT_LEN-1){1'b0}}, 1'b1}; VHDLの 'length みたいなのがあればいいんでしょうね 拘って消しても、可読性が落ちるようなら本末転倒だしな
ただし、大量の warning を放置したままだと、本物を見落とす確率が上がるから要注意
この手の warning は、 内容を確認したうえで順次 MessageFiterで隠すようにしてる みなさん、ありがとうございます。
parameter k = log2(w_clocks); として、bit数を入れ、
parameter k0 = {{(k-1){1'b0}}, 1'b0}; として、'0'を定義して
parameter k1 = {{(k-1){1'b0}}, 1'b1}; として、'1'を定義して
count <= k0;
count <= count + k1;
として、うまくシンセサイズができました。
ワーニングもなしでした。ありがとうございました。
>拘って消しても、可読性が落ちるようなら本末転倒だしな
そうですね。実際にはこんな書き方は使わないと思いますが、
見過ごしていいワーニングかどうかを判断するためにも
ワーニングの意図を知って、その解決法を確認しておくことが重要だと考えました。
どうもありがとうございました。 神になった気分だ。
スキルアップした今、どんなジャンルの回路を設計し作れと言われても
その詳細さえ教えてもらえれば
一瞬でどんなデータ構造/アルゴリズムで作ればいいかや
どんなデザインパターンを使えばいいかが
一瞬で頭にひらめき、スラスラとコードを書きはじめることができ、
予期せぬバグとかがなければ短期間で一人でその回路やツールを作る自信がある。
この予期せぬバグとはふだん使ってない昔やってプログラミング言語の細かい文法関連のことだけで
それはすぐ見直してカンを取り戻せばいいから全く問題ない。 >>214
{{(P_BIT_LEN-1){1'b0}}, 1'b1};とかは可読性悪いよな >>217
MessageFiterで隠すって書いた通り、拘ってるの俺じゃないから
まぁでも意地でも消したいって気持ちは解らんでもない
でも、そのうち Tool/Device のバグまでwarningで出して来るのに遭遇するから
そうすれば、いくら頑張っても無駄だって思えてくるよ
あと、こう書いても消せるね
count <= count + 1'h1; でも、warningがたくさん出ると、
自分の能力の無さを数字で出されたようで、つらい。
人に見られると「大丈夫なのか? これ」と言われそうで。 >>203
俺はwarningをワーニングと言われると違和感を覚える派かな。
warmウォーム
star warsスターウォーズ
wormワーム
wordワード
workワーク
なぜ、warningだけウォーニングじゃなくてワーニング? ウォーニングだろうとワーニングだろうとどっちも同じ。日本人にしか通じないから気にするな。 wantやら、warrantなんかでウォとワの両方あるからね。 >>221
俺も書くときはウォーニングと書くことが多い。一緒に仕事をしたことがあるネイティブさんがそう言っていたから、ってだけが理由。
でもワーニングという表記で違和感は覚えないな。ワーニングは、すでに定着した外来語に分類される日本語だもの。
得意先にドキュメントを出したときに「ウチはワーニングで統一しているので、ワーニングって書いて」って言われたら普通に置換するよ。
で、それでもワーニングと言うのは日本人だけかなー、と思ったら。
ttp://ja.forvo.com/word/warning/#en
ここの少ないサンプルだけど、
オーストラリアの男性は ウォーニング と言ってるけれど、
米国女性はどちらとも聞こえるような発音。
ドイツ、フランスの人は、かなりワーニングに近いね。
外来語のカナ表記にひとつひとつ違和感持ってたら、知れば知るほど大変だと思う。感情抜きで受容することも必要かと。 やっぱり出たな
こういうこと言い出すやつが必ず来ると思っていたよ 新聞のラテ欄で、アカデミー賞(Academy Awards)や
グラミー賞(Grammy Awards)の授賞式番組が横幅の都合上、
アカデミーアワー
ド
なんてふうに書かれていたりすると、
アカデミー賞の時間って意味か!と一瞬思ったりする。
これだって、本来、アカデミーアウォードだろう。 外来語をカナでどう表記するのか以前に、考えていることを表現できない・しないことの方が問題だと思うよ。>>225。 外来語がその元になった単語と発音が違ってても気にならないけどなぁ。伝わればいいんだし。 バイラスをウイルスと言って通じなかったことはある。 馴染みがないものだと、外来語として読みが定着していないものもありますよね。
「AUXポート」ってなんて読みます?
客先で「オグジリアリポート」って言ったら「は?」って顔されて、
「エーユーエックスポートです」と言い直したら、「ああ、アウックスポートのことか」って言われたことがあります。 確かに、AUXは、読み方を知らない人が多いね。
あとはdeterminというのも、知らない人多すぎ。 「えーゆーえっくす」と言うものの、脳内では「おーぐず」と読み上げている。 ところでAlteraのQuartusってなんて読むの? その方が利口かもな
IntelバージョンになったらIP-UpgradeでQuartus落ちまくり
アプリごと落ちるのは、さすがに酷いね
その他は font が変わったくらいで可もなく不可もなく
暇なら上げてみれば? って程度 周りでは、クォータスって呼んでる。
矯正されない限り、最初に耳に入った名前で覚えてる。 まあ普通は「クォータス」かな
それ以外の呼び方(発音)は聞いたことないけど、違った呼び方してる人いる? I2Cは呼び名が多かったな。
アイツーシー
アイスケア(スクエア)シー
アイアイシー Quartus クオータス (クォータスでもいいけど)
マイケルジャクソンのマイケルというのは、読みがいくつかあるらしい
・マイケル
・ミカエル
・ミッシェル PLLをプルルとよぶのを聞いた時は正直びっくりした。 >>239
Quartusはラテン語で第4という意味でクウァールトゥスが正解の様ですが?
ラテン語でググれば発音聞けますな
>>241
俺もカルタスって呼んでた
音楽用語のカルテットと同じ感じかなと
調べてみたらQuartetの語源はラテン語のQualtusらしいので
大きくは外してなかったのかなーと フィフォ とか
ファイフォ とか
エフアイエフオー というバリエーションをがある。
ファイフォ に1票
>>243
ホントですか? 歌い出しそうですね。 真顔で「ふぃーふぉ」って言ってる地域があったよ。
そのあたりの関連会社がみんな言ってた。
逆に「ふぁいふぉ」とは言いづらかった。 そうだよね。
そんな中で1人だけファイフォって言うと、
「こいつ、俺たちがフィーフォって言ってるのに、
敢えてファイフォって言うんだな。イヤなヤツ」
って思われるもんね。
別件だけど、僕は会議の席で上司に指摘したことがある。
上司「便宜的(びんせんてき)に、そう呼びますが・・・」
わたし「それは、べんぎてき ですよ」 「これは越えなければならないハードルですっ!」
と言うべきところで、ハードルをバーベルと言う人を見たことがある。 >>250
障害走のハードルは競技者なら当たり前のように超えていく。
高跳びのバーや、重量上げのバーベルは勝つために駆け引きの中で上げていくわけで、
技術のレベルに例えるならむしこっちの方がしっくりくる。
でもバーベルは超えていくものではないね…
「これはクリアしなければならないバーベルです!」
奇をてらっているようにしか聞こえない。 >>248
>上司「便宜的(びんせんてき)に、そう呼びますが・・・」
呼び方ぐらいは テキセン 変えてもらっても結構なのですが、
私は、すでにこのプロジェクトは ハジョウ していると考えています。
責任者を コウソウ して見なおすべきです。 >>240
IEEEは「アイトリプルイー」と読むのが普通だろうけど、
俺が大学の時の指導教官は「アイスリーイー」と読んでいた。
>>247
「ファイフォ」は米語的、「フィーフォ」は英語的、って感じかな。
NIKONのカメラは海外では「ナイコン」と呼ばれている、という話があるけど
それは多分アメリカでの話で、イギリスではちゃんと「ニコン」と呼ばれているようだ。 最初に破城って誤読を聞いたときは山一やリーマンのアレだとは知らず
聞き返してしまった。居た堪れなかった。
今なら確実にスルー出来ます。 Quartusは、「クォータス」でググると「Quartus」がたくさんヒット
したけど、「クウァールトゥス」ではヒットしなかったな
「クォータス」でヒットしたページでも「クォータス」って表記してた
ページは見当たらなかったから、何だよって感じなんだけど
Altera系のセミナーでは何て呼んでるの? クォータスの「ータ」のところに「る」が聞こえるか聞こえないかぐらいに入ってる。
ttps://www.youtube.com/watch?v=qBRGlIwkHKY&list=PL0pU5hg9yniadIUzG9gvKkf3wtwC4LdIy&index=2
発音する人のRの習慣で変わりそう。
Windowsを新聞が記事にするときに「ウィンドウズ」とカナ表記をするものだから戸惑う。
Quartusをカナ表記にする必要もないのだし、口にするときにクォー(r)タスで良いのではない?
「クウァールトゥス」も「く・うぁー・る・とぅ・す」とブツギレで発音することを意図していないと思う。
一瞬でさらりと「クウァールトゥス」と言えば「クォータス」とも聞こえるわけだし。 >>249>>197
誰も知らないけど、後の百年戦争の開戦の理由がこれである。 PSoCでVerilogが使えると知って、Verilogの事は何も知らないけど、まず2chを見てみようと来たんですけどよろしくです。
ところで質問だけど、
使う変数はレジストリ構成に関係なく、自由に定義してもいいの? そろそろプログラマーもFPGAを触ってみよう!
goo.gl/R7Cful IntelがALTERAを食ってしまったのは知らなんだ >>269
来年あたりにFPGAを搭載したXeonが出るよ。 世界最大のモバイルCPU/IP企業が日の丸傘下になった
そろそろFPGAも傘下に入れるべきだな>禿 >>271
それはalteraがインテルを買収しないと無理。
でもさ、普通のXeonとビンコンパチだと言われてるから、
CPU差し替えだけで良いんだよ。 良く考えたらFPGAぐらい自力で作れるだろインテルなら
だから技術ではなくてalteraが抑えてるシェアをカイタタイタ訳で
そういう意味ではいまさら他のFPGAメーカー買い押さえた所でなんの意味もない >>272
もうalteraはないし、xilinxはibmと手を繋いでるし
残りもののラティスとかマイクロセミとかでもいいか? >>276
そうねえ。
目的がマイクロソフトとかグーグルとか少なくとも
データーセンター用だろうから個人は考えてないね。。 AI推論でfpga使うらしいから
AIアプリ毎にコンフィグデータも必要になりそう
きっとスマホにもfpgaが載るんだよ >>279
インテルはスマホ領域は捨てたから、
やるなら禿CPUしかない。
で、ラティス買うのかマイクロセミか? ラティスは中華系のファンドが買ったんじゃなかったか >>282
https://goo.gl/G29zDG
中華系ではないかもしれないが、身売りしたのは確からしい。
ただ上記記事にり、技術的シナジーとか関係ないと書かれてるから、
買値よりも高く提示すれば売ってくれるんじゃないかな? >>279
つかもうアップルがしれっと載せてるんじゃなかったっけ?
機能としては眠らせてるみたいだけど どうせ最近モバイルで採用が増えてるっていう
latticeのcpld系小規模グルーロジック用だろ
と思ったらやっぱりそうだった チップスコープで、双方向の信号(メモリのデータバスなど)が見たいのですが
表示できません。というか、設定リストに見あたりません。
assign a = ioSIG; と別の名前の信号にcopyしても、aが出てこないです。
チップスコープで、どのようにしたら見えるのでしょうか? あっ!? えっ!? そうなんですか・・・
わかりました。移動してきます。 配置配線なんてツールが自動だろ?
と、レイアウトスキルのない俺が煽ってみる。
タイミングがmetしないのは論理が悪いのかツールを使いこなせないからか。 レイアウトできる会社に変えるのか
ネットリストを変更するのかしないとな。 >レジスタバス
なんだろうな?バス表記方法の方言かな? >>297
>レイアウトできる会社に変えるのか
>ネットリストを変更するのかしないとな。
内部フロアプラン概略図の作成は、verilog設計者の仕事か?
自分が会社を変えることにしたw >>299
できないならやらなくて良いよ。
できるならやってあげた方が良いけど。 >>300
仕様決定から、設計・実装・試験仕様・実試験(テストベンチ)まで、一切レビューなく一人の責任でASICデジタル設計をFPGAしか経験ないのに、一発動作させたから、月63万円年収420万円派遣だから、やる気ないよ。
もっと、収入もらっている奴がやればいいだろ
できないけどw >>301
まず日本語の勉強からしたほうがいいと思う >>303
普通は小学校、中学校、高校で大方必要な日本語を学ぶと思うよ >>304
ニホンゴムズカシクテオマエサンノイットルコトガワカラナイアル >>305
サヨウデアルカ ソレハトテモザンネンアル こんな感じでおおむね日本人技術者の人間力が総じて低い。 シンセシスにErrorが出て、朝からずーっとデバッグしてきた。
Clean up projectをしてもダメ
ISEを再起動してもダメ
PCを再起動したら、直った。 なんだそれ。そんなん有りですか?
1日パーになってしまいました。 >>310
ALTERAだと、そんなことは無いのでしょうか? ALTERA って、使っている会社や使ってる人が多いけど、
どこらへんに魅力があるのかな。
・チップの性能がいい
・チップが安い
・商社の営業ウマンが可愛い
・ツールが分かり易い
・動作速度が速い
・ ・書籍や講習が多い
これではないかと、トラ技の特集もAlteraばかり >>314
でも、世界的シェアはXilinxの方がずっと大きいんだよな 確かにある寺の講習やしょせきは多いね。
なんでザイリンクスも、もっとバンバンやらないのかなあ。
大口が決まってるから、こまけえこたあいいんだよ、
ってことかな。
代理店だったテッドの営業が、下手だったのかなあ。 確かにある寺の講習やしょせきは多いね。
なんでザイリンクスも、もっとバンバンやらないのかなあ。
大口が決まってるから、こまけえこたあいいんだよ、
ってことかな。
代理店だったテッドの営業が、下手だったのかなあ。 販促にかなり力入れてるイメージだな
雑誌にせよボードにせよ、かなり思い切った値段で提供したりする(原価割れ?)
実際驚く程安いボード出してたが売り切れたら追加なし、それで終わりだったな
その辺が入門者を引き付けてるんだろ
あとツール、Xiみたいにバッサリ変えたりしない
デバイス自体は特に目立った処な無し、寧ろXiの方が良さそう >寧ろXiの方が良さそう
そうそう。
それにあぐらをかいているように見える。
今の若者が将来のデバイス選定をするのに。
「えっ?! ザイリンクスですか?」と驚かれる今日この頃 おいらも仕事やるまでは、アルテラが多数派だと思てた。 うちも治具作りでFPGA使うという話してた時はAという
選択肢は存在しなかったな
理由はわからないけど大人の事情が殆ど全てな感じだった
ホビーユースだと「今は」確かにXの安い環境少ないけどね Xilinxは高度なIPコアがおおむね無料なんですよ。昔から。
そこにあぐらをかいて大崎でふんぞり返っていたXilinxは、Intelに買収されたALTERAちゃんにシェアを食われて、メシウマ!! >>325
アートヴィレッジ大崎セントラルタワー
オーストラリア人の社長がワーカホリックらしいな。 >アートヴィレッジ大崎セントラルタワー
雨でも駅からビルまで濡れずに行ける。
1階のマクドナルドとおにぎり屋さんが好きだった。
1階のコンビニで、初めてレジ待ちの並び方を覚えたっけ。
Xilinxのセミナーにはよく行ったなぁ。
セミナー室が地名になってるんだよね。
受付のお姉さんが綺麗な人だった >>328
最近のXilinxの受付は日本語話せるのかww 初心者がこれからVerilog学ぶにあたってのオスス本教えてケロ >330
木村真也さんの本がいいですよ。トラ技スペシャルNo.95など
教えてください。
Verilogで、functionの練習をしていますが、いくつか教えてください。
1. 変数の記述
・通常のところで wire で繋ぐところを reg で宣言
・regなのに assign は不要で、いきなり a = b; と書く
ようです。
間違いそうで怖いです。
みなさんは、どのようにして間違いを予防していますか?
functionの中の変数だけ特別な変数名にしている、とかです。
2. 引数の順番は、
functionの中身の先頭の input xxxx の順番で引き渡す方法しか できないのでしょうか?
通常のインスタンシエーションのように、hoge ( .a( A ), .b( B ), ...)
のように「組み合わせ」で書けないのでしょうか。
3. 出力
入力はfunctionの先頭でinputを宣言しなければ、function以外からでも値を引っ張ってくるようです。
これもドキドキものだと思いますが、
出力もfunction外部の変数に直接アクセスできるのでしょうか?
functionは、便利なものですが、上記のようにちょっと書き方が違っているので
困惑しています。
よろしくお願いします。 >>331
Verilogは論理回路と直接関係ないと知っとくこと。 >>331
functionそのものが、どういう論理回路が生成されるかわからないので、オレサマ使ったことないし使えません。お答えできず申し訳ございません。
実務で使えと言われたことはまだ無いね。いろんな会社を派遣で転々としているけど・・・ 予防なら、スクリプトで簡単な記述ミスや、ついでにコーディングルール違反は潰す。
一時変数でもregをwireのように使うなら、always記述でも いいじゃんとなる。
複数ブロックに跨っても代入文を書けば、そのようにシミュレートされる。ご法度でもね。
ワイはalways派なので、普段はfunctionを使わない。 みなさん、どうもありがとうございます。
みなさんの仰ることは、とてもよくわかりました。
本やネットで調べると、functionよりalwaysで書く人が多いらしく、
理由も納得できました。
×functionは、bit幅の間違いを起こしやすい。記述が多い。
×alwaysは、ラッチを作りやすい、というか記憶する回路になってしまう。
とのことで、ラッチを生成する原因はcase文の記述漏れらしいです。
case文で、全部のケースを書かなかったり、defaultを書かないような書き方は
しないので、僕もalwaysで書こうと思います。
ありがとうございました。
しかし、ここでもう1つ疑問が湧きました。functionでは以下のような書き方ができて
スマートに感じますが、alwaysでも同じような書き方はできるのでしょうか?
assign A = func( a, b );
assign B = func( s, r ); // 複雑な組み合わせ回路が1行で書けて
assign C = func( q, k ); // 全体の見通しが良いです。
assign D = func( z, P );
こういう場合、alwaysの記述だと、どのようにすれば良いのでしょうか。 そういうのはfunction向き。若しくは別モジュールにしてインスタンシエート。 なるほど、忘れてました。
ありがとうございます。こんな考え方で良いでしょうか?
ALWAY UA ( .u(a), .v(b), .w(A) );
ALWAY UB ( .u(s), .v(r), .w(B) ); // こうすれば、見やすいですね。
ALWAY UC ( .u(q), .v(k), .w(C) );
ALWAY UD ( .u(z), .v(P), .w(D) );
module ALWAY (
input u, v,
output w
);
a;ways @ (*) begin
case(xx)など functionと同じもの
end
endmodule >>331
>3. 出力
>入力はfunctionの先頭でinputを宣言しなければ、function以外からでも値を引っ張ってくるようです。
>これもドキドキものだと思いますが、
出力もfunction外部の変数に直接アクセスできるのでしょうか?
function 内部で宣言した変数以外は、外部の変数が参照される。もちろん、代入すれば影響が出る。
スコープについて勉強するといいよ。
あと、合成できるかどうかはまた別の話だからね。 階層跨いだ接続
シュミレーションは可能だけど、合成で弾かれるんじゃなかったかな systemverilogがもっと一般的になればいいのになぁ >>335
その辺、STARC本を読むといいです。
ただ、そこまで気に病むことじゃない。
世の中そこまでveriogの記述を気にする奴はなかなかいないので、そこを追求すると10年後高収入になるかもしれないし、
奴隷のように使われるかもしれない。
がんばれ >>337
最初は
a;ways @ (*)
使わない方が良いかもしれない。
コンピュータ言語上がりとか、若い人は使いたがるけど。
セレクタだと余計なラッチが生成されて、
always @(posedge CLK)
で、同期回路をきちんとつくろうとしたときに、罠になる。
周りに聞く人がいないというのもつらいね・・・ >>342
ありがとうございます。
>セレクタだと余計なラッチが生成されて、
この表現は、あちらこちらでよく見かけます。verilogの講習に行ってもいわれます。
>>342の言う「セレクタだと余計なラッチが生成されて」というのは、
本来は「組み合わせ論理回路」を組んだつもりなのに、
意図せずに「記憶してしまう回路」が生成されてしまう、という意味ですよね。
それがたまたま「ラッチ」だったというだけで、
「記憶してしまう回路」にフリップフロップが生成されても、同罪という理解でよいでしょうか?
あるいは、
「HDLの中で、ラッチは完全に悪。使い道ないし」ということでしょうか?
FF = clockの↑で、D→Qにcopyするもの
ラッチ = ANDとかのゲートが自己保持になって、clockに関係なく記憶されてしまうもの
始末に負えない >>343
まぁそんな感じだけど、verilog言語マニアとして転職すればw
パソナ テクノプロ あたりで3ねんぐらい奴隷すれば報われるか報わないかは自分次第 流れからして、デコーダ話だからな
それなら、ラッチが生成される要因として
defaultの書き忘れより、sensitivity list の漏れの方が多いから
always @ (*) を使うのは理にかなってる
ラッチが嫌われる原因は、タイミング解析ツール側の事情
要は、ツールとしては対応しない。 この一点だね
(マトモな解析をしない/するつもりも無い、したとても単なる遅延としてだけ扱う)
そのへんのリスクを熟知した上で使うなら、別に問題は無いよ ありがとうございます。
>タイミング解析ツール側の事情
>要は、ツールとしては対応しない。 この一点だね
なるほど、そういうことなんですね。
確かに、clockで刻々と進んでいくほうが、解析はしやすいですから。
「不意なラッチ」は、いつ発生するかわかんないので、
とても細かく自艦を移動させないといけないから。
ラッチについては、納得できました。
・ラッチは回路として害ではない。
・しかし、HDLの世界では、clockに同期しない部品や回路は使わないから
ラッチは使われないし、嫌われ、悪者扱い。
・入力で、出力が一義に決まる組み合わせ論理回路を作成したのに、
default忘れや、センシティビティリスト忘れにより、記憶される回路ができてしまう。
このときの動作としては、ラッチ動作となる。
・デバッグが大変なので、記述に注意する。
・ツールはWarningさえ出してくれない。(QuartusはWarningしてくれるらしい) >>347
エッ!? 何かまずいでしょうか?
皆さん親切に教えてくれますけど。
ヤバいすか? >>348
親切に嘘を(わざと)教えているときもあるし、
教えている側が間違った情報を信じていることもある。 >348
今時Verilogなんて使わないよ。CAD入力だよ。デバッグでちょっと触るくらいだね。
NETをCAD接続する以外は自動プログラミングだからそんな問題は発生しない。 紙に回路図書いてからVeriog書くより
CAD入力の方が良いよね。 なわけねーだろ結線手作業でやるやつはマジで死んでくれ 2ちゃんの書き込みを真に受けないほうがいいよ。
↑
皆さん親切に教えてくれますけど。
↑
親切に嘘を(わざと)教えているときもあるし、教えている側が間違った情報を信じていることもある。
↑コレに便乗して
今時Verilogなんて使わないよ。CAD入力だよ。(ニヤニヤ)
ネタと真実との境界があいまいになると怖い。 素人には図がわかりやすい。
素人でなくても理解する気のない人には図がわかりやすい。 その昔はスケマで設計していたが、今はVerilog HDLやVHDLで論理設計して
スケマは論理合成で自動生成されるものを確認を主目的として使う
で意図通りになってない所があったらHDLを修正して再度論理合成
ってのが最近(といってもだいぶ前な気もするが)の方法だという認識だったのだが
これって釣られてるのかな? 合成後のネットリストなんて滅多なことでは見ないだろ。ECOの時くらいだ。 シミュレーションで確認だよね。
あとタイミングドリブンレイアウトでタイミングチェック 今どきは、FPGAの内部を自分で配線する人はいないでしょうか? フロアプランナーとかで中身いじるのは
よほとの時じゃね? 配線まで弄ったことはないな。ざっくりとした領域指定や、
クロックバッファのインスタンス指定までやらかしたことはあるけど。 昔のように例えばマクロセルが500以内程度の小さい回路はHDLの方が効率が
いいが、でかい回路になるとスケマでないと理解できなくなる。
HDLはモジュール間結線が空間的に配置できないから直観的に大局を把握できない。
古い技術者は昔のCAD回路図がHDLに変わる過程の劇的な効率アップをしっているので
なかなかHDLから離れることができない。ところが今時HDLなんて書き古したものを
コピーするだけで済むから、もっぱら上位概念をスケマで書く方が主流だ。
VerilogもVhdlもモジュール結合の記述に致命的な欠陥がある。
この欠陥がなければ、もう一桁上までHDLでも書けるがそこが限界だ。もうすでに
HDLで書く時代は終わった。 Verilogは稀に見る馬鹿な言語仕様で大局を記述するにはせめて入力と出力を分離して
outlist = module名(inputlist)
こうなっていれば視覚的にわかりやすいが
module名 インスタンス(in,out,ごちゃ混ぜputlist)
1.インスタンス名はいらんだろ馬鹿
2.インアウト分離しろ馬鹿
もちろんVHDLはVerilogをさらに加速した馬鹿仕様
で細部の記述はどうかというと、これがまた酷い。笑えるほど酷いから書く気が失せる。w だってインスタンス名がないと制約ファイルを記述できないから… ソフト屋にしてもレベル低いな
c++ だって、 instance *inst = new module();
てな感じでインスタンス指定するだろ、無しでどうすんの?
> 入力と出力を分離して・・・
言いたい事は解らんでも無いけど
c だって proc(&parm); とか書けるの許してるから、似たようなもん
要は、習得できない事を棚に上げて文句言ってるだけだな >>372
ASICは全部HDLで書くのかな?
XilinxのFPGAの場合はIPマクロはHDLで記述して
モジュール間の接続はHDLで書かないよ。
GUIで結線するから分かりやすいよ。
http://i.imgur.com/4CTsCJ4.jpg >>377
>モジュール間の接続はHDLで書かないよ。
やり方の問題で、GUI も使えるってだけだろ。それしか知らないんだろうけど。
その絵だと分かりやすくもないし。 >>378
いやHDLでも書けるけどさ。
TOPなんてロジックないし配線だけなんだからGUIでよくね?HDLで書く意味あるか? >>379
前のバージョンとの差分とか取れるの?
GUIで操作したいとは思うんだけど、ツールに依存する感じも好きじゃないんだよなぁ。 >374
別次元のことは別次元でやったらいい。インスタンスごとに制約ファイルが
必要か? 必要ならインスタンス名を制約ファイルに書いてもいいじゃないか。
普通は自動生成でいい。3番目のインスタンスならU3でいいだろ。w
>376
馬鹿っぽいな。インスタンス名でアクセスするんならそれでもいい。
両方を書くのがバカっぽいってことだな。
それにしてもC++なんて糞言語は今時つかわんだろ。w
C#やJavaならC++よりも100倍効率がいい。
>c だって proc(&parm); とか書けるの許してるから、似たようなもん
許してるのは禁止すればいいが、HDLみたいに出来ないのでは話にもならん。 >TOPなんてロジックないし配線だけなんだからGUIでよくね?HDLで書く意味あるか?
ないよ。
しかしそのTOPは小さなTOPだから、そのTOPのTOPのTOPってなると殆どGUIだけだな。
HDLなんて下の下の下の下だけでいい。 Verilogで、入出力を分けて書くって、こういうことではだめなの?
module hoge_hoge ( // hogehoge回路
// 入力
input wire clock,
input wire RESET,
input wire [4:0] DipSW,
// 出力
output wire [7:0] LED_Group_A,
output wire done
);
:
:
:
:
endmodule 定義はそれでいいよ。しかしそのモジュールを実際に配線してみると入出力が
分かれていないと非常に見づらい。
(led[],done) = hoge(clock, reset, dipsw[], selectmod(test, auto, manual) );
こういう記述の方がかなり見やすい。
これでもさらに複雑になると限界はあるけどな。 output wire [7:0] LED_Group_A,
こういう表記も統一が取れていない。
output LED_Group_A[7:0]
こうすべきだろ。ほんとに馬鹿もんだよな。 最後の配線なんてスケマだろうがHDLだろうがどっちでもいいだろ。
複雑なRTLのロジックをHDLで記述するのが目的なんだから。
そんなところしかHDL使わないならスケマでも手書きでも何でもいいよ。 >>385
in outで記述に差がなくわかりにくいというのは同意するが、その書き方はわかりにくい。
その規模なら問題ないが、信号数(引数)が20,30となってくると一つのグループの信号が右と左に分かれて、それが何グループにもなるので、見通しが悪い。
in outの区別はコメントに書くことで対処する。
あと >>386 とかはSystemverilog使うと幸せになれる。 >その規模なら問題ないが、信号数(引数)が20,30となってくると一つのグループの信号が>右と左に分かれて、それが何グループにもなるので、見通しが悪い。
>in outの区別はコメントに書くことで対処する。
設計が下手だと、何をやってもだめだな。スケマでも分かりにくい。
>Systemverilog使うと幸せになれる。
こいつは最も罪がでかい。改善というチャンスがありながら本質的問題点がほとんど
改善されていない。テストベンチが多少はましになったくらいだな。
SystemVerilogを作った奴はアフォの中のアフォ。 そもそも電子回路なんだから線がつながるだけで、本来、入力・出力なんて関係ないだろ。 >>392
回路図だって書けるときは信号が左から右に流れるように書くじゃない。
どの向きに信号が流れているかわかりやすいに越したことはない。特に人のコードを見るときは。 そういえば >>385 の記述で双方向のポートはどう記述するの?
左と右両方に書くのか?ポインタ渡しにするのか? おっ! 目の付け所がいいな。
2,3案はあるが、どうやって記述したらベストかを少し考えてみてくれ。 いや、わしは今のままでいい派だし…
それよりはエディタが賢くなってその辺をサポートしてくれたらいい >>395
(実は考えていませんでした・・・)
入出力ポートの記述なんてどうでもいいよね。.* でもいいし。 トップは、回路図で描きたいな。
ISE14:7で、できますか? wave viewer見るのにおすすめのマウス教えてくれ
ちなverdi >>372
日立市の大甕というところでそのしごとができるよ。
これをつかう。
https://www.aldec.com/jp/products/fpga_simulation/active-hdl
終わったというのはいいけどwいろいろ終わってるね(笑)
そんな感じ。 >>377
そう。
GUIで書くのは、レイアウト屋さん。
最も、レイアウト屋さんにその意識がないのがほとんどだけど。
Tclとかで範囲を指定する程度で、あとは配置配線ツールお任せ。
HDLから、手書きでも何でもいいから、図に起こす。
逆もできる技術者は少ない。
そこを理解して金を出す企業もないけどね(笑)
たいていは、そこの思考に至らないで、終了して、自分らができないことに気がつかず求人を出す。 >>379
それは、規模が小さいと、HDLでかく意味は無い。 >>386
default net type none でググレカス >>394
ポインタ(笑) ポインタってなんですかぁ(笑) >>404
右手に、Windows用マウス。
左手に、3ボタンマウス。 HDLもスケマも信号数の増大で破綻する。
信号を簡単にまとめたり分けたりする機能が欲しいニャあ。 >>408
ABELとかPALASMとか知らない世代? ! と ~ の間違いで、1日填まりました。
分かり易い覚え方を教えてください。 inputとinoutは一字しか違わないから
稀に紛れ込んでる。 >>424
両刀使いチゴイネ。ボキュにはムリポ(>o<) うちの職場では、
音声信号や映像信号にフィルタをかけたりするシグナルパス系は回路図ベース(スケマティック)、
メモリコントローラのような制御系は記述(HDL)で設計するのがやりやすい、なんて言ってたけどね。
実際、自分自身は主にメモリのマルチポート化ロジックなんかをHDLで設計してたけど、
「アービターを回路図で書いてくれ」なんて言われても出来んかったから、
実感としてもそんなに的ハズレな意見じゃないと思う。 ブロック図を描くことはあるけど、処理の中身を
スケマで書くことはないなあ。
ハードマクロで境界のタイミングをトコトン突き詰めたいとか
そういう需要もあるかも知らんけど。 >427
建築設計を文書でやろうとするアフォはそんなに多くはないが、この業界に限っては
それが習わし。w 40年前の掘っ建て小屋レベルのロジックなら「HDL最高!!」
だったが、巨大なビルディングが作れるのにHDLはないだろw スケマで書くことは無いが
規模が大きくなると、VerdiのSchematic Viewer程度のモノがないと厳しい
自分で書いたコードならまだしも、他人の書いたコードを一々全部読んでたら日が暮れる
有りと無しじゃ、効率 大違い Verilogで、function文の中にfor()は入れられないのでしょうか?
また、function文の返値を2つとか3つとか返すことは出来ないのでしょうか? >>434
入れられます。
出来ません。
task 使ってください。 ストラクチャに押し込んで返せばいいだろ。Taskってテストベンチにしか使えんだろ。 taskってなんの意味があるねんな。モジュールと何の違いもねえ。ほんとに
馬鹿っぽいな。 >436
ストラクチャは無理だったな。でも余分に100Bitくらいをいつも用意して
そこに突っ込めばいいだろ。
{a,b,c,d,,,,,} = func(,,,,,);
みたいにできるだろ。 > taskってなんの意味があるねんな。
合成不可となるような、記述でも正しく実行してくれる
ソフトウェア見たいな書き方しても大丈夫なんで、その分楽できる
おっしゃるとおり、テストベンチ用と言っても過言じゃないだろ
>>435 を除いて、テストベンチ以外に使ってるヤツなんか見たこと無いね >>434
func={a,b}
取り出しで
assign {a,b}=func ()
で、それっぽくできるよ。 >>437
>>439
もう何年も合成ツール使ってないのかな?
スコープ考えれば、function の外側の変数にもアクセスできるハズだけどね。 >>439
後でシーケンスマシンに落とし込むの二度手間めんどくさい。世の中がすべてVHDLになればいいのに >スコープ考えれば、function の外側の変数にもアクセスできるハズだけどね。
functionは状態を持てないのに、大域アクセスなんかするくらいならファンクション
使う馬鹿いないだろ。w それが、いるんだな
あんたが アンカ付けてるヤツだ、 そいつは task まで使うんだぜ。 fpgaを使って
Direct Digital Synthesis (DDS)
などで16bit分解能正弦波100khzとか
可能ですかね? 200MHz動作で100kHzは2000サイクル
外部DACがこれで動ければ可能だな 200MHzで2000サイクルだと
確かに100KHzになりますが
分解能は2000<2^11=2048
なので11bitしかないように
思われますが、
どうなんでしょうか? 100khz x 2^16= 6500Mhz必要だね。 >>446
16ビット分解能って電圧? それとも周波数?
電圧ならパラレルD/Aなら余裕しゃくしゃく。
DDSのサンプリングクロックはある程度高い周波数にしておかないと、設定値によってかなりひどい波形になるし、
D/Aのスピード、そのクロックで加算できるビット数とのトレードオフになるね。
とはいってもせいぜい数MHzの加算なんてかなり多ビットのものが作れるはず。
妥協点によるけれど、問題ないんじゃない? DDSの出力のままではガタガタでためてす。
LPFを使うことで、初めてキレイなsin波になります。
LPF使う前提なら、DDSの出力はガタガタでも
問題ないです。 >452
>16ビット分解能って電圧? それとも周波数?
→電圧です。
//****************************
(分解能=16bit)ならば
Full-scale-range
(Vref) 4.096V
1LSB
(Vref/2^N) 4.096/(2^16)
=62.5uV
Full-Scale
(Vref-1LSB) 4096mV-62.5uV
(HEX) 0xFFFF
Mid-Scale
(Vref/2) 4096mV/2=2048mV
(HEX) 0x8000
Mid-Scale-1LSB
(Vref/2-1LSB) 4096mV/2-62.5uV
(HEX) 0x7FFF
Zero 0 V
(HEX) 0x0000
//****************************
(分解能=12bit)ならば
Full-scale-range
(Vref) 4.096V
1LSB
(Vref/2^N) 4.096/(2^12)
=1mV
Full-Scale
(Vref-1LSB) 4096mV-1mV=4095mV
(HEX) 0xFFF
Mid-Scale
(Vref/2) 4096mV/2=2048mV
(HEX) 0x800
Mid-Scale-1LSB
(Vref/2-1LSB) 4096mV/2-1mV=2047mV
(HEX) 0x7FF
Zero 0 V
(HEX) 0x0000
//**************************** >>454
そこまで書くなら12bitの時も-1LSBの電圧値も書けばいいのに 電圧の分解能は当然16ビットいるが、それでも0V付近でグわーーーーと
誤差がでるので6.5Gは最低必要になる。6.5Gでかろうじて16Bitと
言える。+−0.5Bitの誤差がでるが、、、 >453
Filter設計次第で
遅いSample周波数で16bit分解能が
可能ということですか?
(16bit):1LSB=62.5uV
(12bit):1LSB=1mV(=1000uV)
//*******************************
<分解能16bit、Vref=4.096Vの場合>
(電圧)
125uV ●
|
62.5uV ●--------
| |
0V ●--------
↑ ↑ ↑
← ⇒
sample周波数=100KHz×2^16
//*******************************
<分解能12bit、Vref=4.096Vの場合>
(電圧)
2mv ●
|
1mV ●--------
| |
0V ●--------
↑ ↑ ↑
← ⇒
sample周波数=100KHz×2^12
//******************************* 16Bit 精度のDDSをいうのであれば12Ghzは必要だな。そのうえで超リニアな
DAコンバータで20Bitくらいを用意すべきだろうな。 >Filter設計次第で遅いSample周波数で16bit分解能が可能ということですか?
不可能だ。 >>459
functionジェネレータなどは
どのくらいの分解能を
持っているんですか? どれぐらいのものを目指すのかがよくわからん。
市販のものがどんなスペックを持ってるのかは調べればわかると思う。
ttp://www.keysight.com/ja/pd-1407410-pn-33210A/function-arbitrary-waveform-generator-10-mhz?cc=JP&lc=jpn
詳細がよくわからない人があいまいな質問になるのは仕方がないのだけど、
話をやたら難しい方に傾けて答えるのってどうなん? >>446
可能だと思う。
http://arismusen.com/FPGA/
サンプル置いてます
アナデバとコンパチブルに動く。
ガン治療装置の発信器使ったのと同等。
ビットを無駄に増やしたいなら、CORDICの方が論理規模と面積が小さいかも >>463
それ自分の会社のホームページ?
2chにコテでカキコで、会社情報まで公開って勇気あるな 引っ越す3回ぐらい前の住所だな。
VHDL/verilogのオナヌーを見せつける会社じゃねw >>464
リアルタイムスペアナで評価してたけど、周波数ジッタは元のクロックに依存してた気がする。
PLLを利用したEPSONのアレを使わなきゃOK
13bitを超えた辺りから、下位ビットがアナログ設計だと思う。
こんなんでも、1Hz以下の分解能はあった気がする。
無論出力には、エイリアス除去の1/2fカットオフぐらいのLPFは要 16bit以上のDACなら200khz動作でOK
1bitDACとして使わないなら16bit分解能はまず無理筋。
1bitDACとして使うなら13GHz動作 >>469
日本語で頼むわw
ΔΣエンコーダ デコーダもあげとこうかな。
HDD漁ってみるわ。ノシ エイリアス除去ってなにか勘ちがいしてるんじゃないか? w >functionジェネレータなどは どのくらいの分解能を持っているんですか?
「生成信号のピーク電圧の設定精度は分解能16ビットで超高精度で設定可能です。」
ということなら、嘘にはならないし、実用上の問題にもならない。
普通にFPGAで簡単にできる。
しかし無条件に16ビット分解能を保証するのは不可能だという意味に過ぎない。
普通のfunctionジェネレータを購入するならピンキリあるだろうが原発信が
10Gくらいのものを選ぶだろうな。でないと雑誌の付録のFPGAでピョンと
作れるからな。
DDSは無茶苦茶高精度のものが簡単にできるがネックは電圧分解能よりもジッタだな。
原発信が低いとパタパタ、パタパタ、、、、と目ざわりなジッタが出る。
原発200Mhzで100Khzならそんなにめだたないかな。10Mhzくらいになると
「えっ」というくらい目立つ。立ち合い試験ではなるべく低い周波数で
超高精度なところを強調するのがいい。
「周波数の設定精度は0.0001hzです。ピーク電圧の分解能は1uVで超高精度
です。まあ数百万円のファンクションシンセに匹敵する性能を確保しています。」
というように、条件付きで自慢する。しかし10Mhzくらいのところを見られたら
ボロボロだわな。
しかしFPGAをまともに使って作るのは勿体ないだろ、AD9833とかSIN波形を出せる
米つぶ大のが50円くらいでうっていたような気がする。 源振を割り切れなければ、正弦波でも波形の再現性が崩れて
ジッターのように見える。
200k:100kだと周期ずれを原因としたジッターは現れない。
20M:99kとかだとどうだろうね?PLLで吸収するかってことになったり。 >>471
おまいは、1/10fぐらいのLPFを出力につければ波形がより正弦波に近づくと言いたいんでしょう。
わたしわかります。 modelsimって文字数制限あるんだ。pls1msec_outてのがどうしてもWave波形で
不定になる。文字数をpls1msにしたら、あら不思議。治った。w
糞sim >>477
文字数制限じゃないよ。オレサマもっと長い名前つけてる。
バグじゃね?メンターに報告した方がヨクネ >479
えっ、そうなの?
alteraの無料バージョンについてるmodelsimのことだけど、別のバージョンじゃない?
modelsim altera starter edition 10.0b 動かんw なんで?
re[1:0] <= {re[0],rd[3]};
Error (10133): Verilog HDL Expression error at addctl.v(162):
illegal part select of unpacked array "re" >>480
バージョンは違うけど、わしもアルテラスターター VHDL verilog混在の奴 >>482
ワイヤーで別名。
re[3]<= が同じalways(process)にない AlteraのModelSimっていつの間にか混在Sim出来るようになったんだな QuartusR II v15.0 対応の ModelSim-Altera 10.3d(Starter Edition を含む)より、
言語 (VHDL/Verilog HDL/SystemVerilog) 混在シミュレーションがサポートされています。 FFTとか計算しまくりのIP使わず
半導体会社レベルの低機能な設計なら、これで十分ですよw 意味不明だが、「FFTはIP使った方がいいよ」ってこと?
FFTはソフトでしかやったことないな。w
でもDSPだったらIPより速いんじゃないだろうか? これはなんでエラーになるんや?
わけわかめ
module add_out(run, phase, ct3600, madd);
input run;
input [11:0] phase;
input [11:0] ct3600;
output [11:0] madd;
reg [12:0] maddx;
reg dumy_cy;
always @(run or phase or ct3600) begin
maddx = 13'b0_0000_0000_0000;
if (run) begin
maddx = {1'b0, phase} + {1'b0, ct3600};
end else begin
maddx = {1'b0, ct3600};
end
end
always @(maddx or dumy_cy) begin
if (maddx >= 13'd3600) begin
{dumy_cy, madd} = maddx - 13'd3600;
end else begin
madd = maddx[11:0];//ここでエラーする。
end
end
endmodule これならOKだ。
assingn {dumy_cy, madd} = (maddx >= 13'd3600) ? maddx - 13'd3600 : maddx[12:0];
module add_out(run, phase, ct3600, madd);
input run;
input [11:0] phase;
input [11:0] ct3600;
output [11:0] madd;
reg [12:0] maddx;
wire dumy_cy;
assign madx = run ? {1'b0, phase} + {1'b0, ct3600}
: {1'b0, ct3600};
assign {dumy_cy, madd} = (maddx >= 13'd3600) ? maddx - 13'd3600 : maddx[12:0];
endmodule それなら>>493みたいに書けばエエやんか。>>492とは明らかに別の動作する記述やし。 ↑の馬鹿だと、せいぜいこの程度の事しか言えない
>>ID:xXmYr/+l
答え: reg [11:0] madd; <- の一行を加える
記述も怪しいから、もう少し勉強するんだな なんでやねん。output [11:0]madd;があるだろ。w signal tap を使うときpost synthesisと pre synthesisがあって、見たい信号が
post synthesisにでてこないんだが、pre synthesisで選ぶとなにか問題があるの?
合成完了してるのに「合成前の信号」を出してくる神経がわからんのだが、、 >493
コンパイルはOKでも合成すると7:0ビットがGNDされる。w
なんでや? でこうするエラーする。
function [11:0] f_madd;
input [12:0]maddx;
wire [11:0]madd;//こいつがエラーなんで?
wire dumy_cy;
if(maddx >= 13'd3600)
{dumy_cy, madd} = maddx - 13'd3600;
else
{dumy_cy, madd} = maddx[12:0];
assign f_madd = madd;
endfunction >>492
always @(maddx or dumy_cy) begin
のdumy_cyはいらないと思う。
エラーの原因ではないと思うけど。 ああ、>>495が正解だわ。
outputだけだとwire扱い。 これでもエラーするよ。w
function [11:0] f_madd(input [12:0] maddxx);
begin
reg [12:0] mm;
if(maddxx >= 13'd3600)
mm = maddxx - 13'd3600;
else
mm = maddxx[12:0];
assign f_madd = mm[11:0];
end
endfunction 最後のassignのところでエラーになる
Error (10043): Verilog HDL unsupported feature error at Z_addctl.v(181): Procedural Continuous Assignment to register is not supported wireで定義したらエラー、でregで定義したらwireで定義しろという。どうしろ
というねん。 >503
いやdumy_cyが肝なのよ。もともと12Bitをオーバーフローする計算になるので
それを12Bitにしたいわけ。
でdumy_cyを止めてビット増やして
reg [12:0] mm;
これにしたのが505だよ。 はああああああ、疲れる。
Very疲れる。
verilog使うと疲れる。
Very,Very疲れる。イグぞーすでぃっど、、、
はあああ、疲れる。
VeryVeryVeryVeryMuchmuchmuch 疲れる。 dumy じゃなくてbakaにしてみたら通った。エラーが出ないぞ。w
output [11:0] madd;
wire baka;
assign {baka,madd} = f_madd(maddx);
function [12:0] f_madd(input [12:0] maddxx);
begin
if(maddxx >= 13'd3600)
f_madd = maddxx - 13'd3600;
else
f_madd= maddxx[12:0];
end
endfunction >>492 に >>495 の言う通りregを追加しろ
functionの中でassignは使えないんじゃね?
functionの中はブロッキング文しか使えないと思うよ。 >エラーメッセージは何なん?
assign {dumy_cy, madd} = (maddx >= 13'd3600) ? maddx - 13'd3600 : maddx[12:0];
これスマートでしょ。これはエラーは出ないよ。
しかし正常に動作しない。
いつまで待ってもZeroしか上がってこないのでRTLViewwerで見たらmadd[7:0]が
GNDにスタックされていた。
スマートに書いたら、合成がいい加減でGNDに配線する。Function使ったらテコでも
エラー。 always @() ...
の中では、 左辺は reg しか許されない >514
reg、Wireの弁別の怪しさを改善したつもりの
System VerilogだとLogicが使える筈なのだが、テストベンチのTemplateWriter
が使えなくなるという情けないコンパイラ。 誰だって最初は初心者だろ
それともお前は生まれた時からVerilogHDLしゃべってたのか? >>518
NC-Verilog(Native Conversation Verilog)の人だなwww カウンタを一つ多く回して、理由がわからずにハマる。
初心者あるあるですねぇ。 >always @() ... の中では、 左辺は reg しか許されない
alwaysを組み合わせロジックに使うのは気持ち悪い。
Functionの方がいい。
でもFunctionも制約が多い。結局のところごく小さなもの以外は使えない。
そこで新たなルールを考えた。
1.moduleを積極的に使う。
module毎にファイル分けをするんが普通ぽいが一つのファイルにmoduleを
10個おいても何ら問題ない。
一つのファイルにはメインとなるのが一つあって、それ以外にこういうサブ的に
つかうのをLocalモジュールとする。
2.alwaysを組み合わせロジックに使わない
勘ちがいがおきやすい。間違いを誘発する。
組み合わせロジックはFunctionを使うことにする。しかしFunctionで表現しきれない
場合はmoduleにする。
ローカルモジュールの例
module bus_sel(
input [2:0] sel,
input [7:0] a, input [7:0] b, input [7:0] c, input [7:0] d,
output [7:0] out
);
assign out = sel[2] ? d :
sel[1] ? c :
sel[0] ? a : b;
endmodule
モジュールにするメリット
RTL Viewerで綺麗に表現されるという★絶大なメリットがある。
なのでAlwaysやFunctionを使わずにモジュール化したほうがいい。 >522
どんなメリットがある? 大したメリットがないように思うが、、
テストベンチではSystemVerilogはかなり改善されて強力になっているので
SystemVerilogをつかうのが当然だと思う。 >>523
logicでreg, wireの意味のない使い分けをせずに済むし、always_combを使えば確実に組み合わせ回路を記述できる。 >>518
そうだよ。ボキュの親に確認したらわかるよん >>526
確認するから親の名前と住所と電話番号を教えてくれ
お前に兄弟がいる可能性もあるからお前の名前も併せて教えてくれ >>527
2chの管理者への問い合わせも出来ないのか >525
そういうことですか。
実はSystemVerilogでコンパイルはしていたのだが、TestBenchのテンプレートが
できないのでまたもとに戻してしまった。
しかーーし、それとは別にVerilogはヤバいね。多分SystemVerilogに変えた方がいいね。
たとえば、2portramの出力が8ビットあるのにどうしても上位の7bitが消えてしまう。
あちこち回路をぶった切って最終的に突き詰めたら
そしたら原因はwire宣言の忘れだった。というか宣言しなくてもいいはずだよね。
一か所だけ宣言漏れがあって
wire [7:0] qdout;
これをついかしたら治った。
多分TOPレベルのワイヤー定義ってなくても接続してるしエラーは出ないが、時に
トンデモナイことが起きるように設計されている。verilogだと。
恐ろしや。ベテランの皆さんはこんなもんでよく開発をやってるなー。
SystemVerilogにはこんなのがないことを期待して、、、、原因究明したので今日は
映画見に行くぞ。LA LA LAND 513のエラーってひょっとすると?:のビット数制限ではなくて、Wire宣言の漏れ
とかかな? 不可解なことが起こり過ぎ。w 昨日のヤツか?
そんなレベルなら、エラーうんぬん以前に warning が山のように出てんだろ
それを無視して、 エラーさえ無けりゃOK ってか?
単に、オマエが無知だけだ 確かに。見る気が失せるほどワーニングが出てるな。
Warning (10036): Verilog HDL or VHDL warning at Z_addctl.v(157): object "baka" assigned
a value but never read
wire baka;
assign maddx = f_maddx(run,phase,ct3600);
assign {baka,madd} = f_madd(maddx);
こういう馬鹿避けの部分ってワーニングのサプレスできんの? Warning (332060): Node: gclk was determined to be a clock
but was found without an associated clock assignment.
assinmentediterでGlobal Signal Global Clockをアサインしてるのに何でWarning
がでるん。w というかだれも答えられんやろ? だいたい作ってるAlteraですら分からんだろから
にWaraningなんて全部潰せるわけがない。w
どうせぐちゃぐちゃのつぎはぎだらけのプログラムで誰一人として全容を理解して
いない。行き当たりばったりのつぎはぎだらけのコンパイラなんだから、Warning
なんて細かいことを言っていたら先へすすまんよ。
>>534
誰もわからないだろと自慢したら、誰も答えてくれない。
その企業さんで、猿山にのぼっていると思っていらっしゃるのならば、幸せで裏山しいですね。 教えると上達するんだぜ。w
教え上手な人は本質をついているから分かりやすい。しかも人としてのレベルも高い。
まあ人としても上達するんだね。w 教えられた方は上達しない。
自分で考える能力が、元々無いのに余計育たなくなってしまうのさ。 HDLの処理系と統合開発環境の使い方がまだよくわからん
時間がたら〜〜〜〜ん
ああああああああああああああああ
FPGAの勉強がしたい...... メーカー指定のケーブルじゃなく
FT2232で書き込もうとして電圧レベル間違えて
Verilog がいかんのかチップがいかれたのかわからんくなった
はじめてのチップで初めての言語を勉強するのつかれるw >> Verilog がいかんのかチップ・・・
+ Config 間違えてるのか
1万円ぐらいだから、素直にTerasicでも買えよ >> Verilog がいかんのかチップ・・・
+ Config 間違えてるのか
3万円ぐらいだから、素直にUSB blaster買えよ MAX232C のチップとか使ったことないのか。中学生のころアキバでかっただろう。そして、秋月へ。 >>540
Verilogがいかんのか、シミュレーターでわかるだろ。
試験仕様書を書いて、テストパターン何個つくったのかと小一時間。 新しい言語勉強してワクワクなのにダルイ仕様書なんか書くわけねーだろ
お前バカじゃねーの?
いやバカだろ なんだ。
ただの趣味か。
バカはバカ同士で仲良くやってなよ。 >540
同士よ。出だしで躓いておるなー。w
Max10、ライター、DVD付、FPGA電子工作スーパーキット
俺はCQのこれ買った。
潰したのなら、CQをもう一冊かったら?
苦労した分勉強になるで。 素直には動かんけど。w
CQのハードはすっと動くことはあまりないな。情報が洩れていたり欠けて
いたり、ハードに問題があったり、誤植があったりと、、、
いざ動かそうと思ったら、クロックがついてない。メモリーが付いてない。
コネクターがついていないというパチモン以下。w
やっと全部そろえて電源を入れたら、どうもおかしい。よーく調べてみると
電圧を間違えて加えたみたいでパー。
チャンと3.3Vって書いとけよと思っても後の祭り。
だからこんどは2冊買いなさい。そうしたら安心して実験できる。
しかしそうやって苦労してLedチカチカをマスターしても次に立ちはだかる
Verilogの壁がある。これはCQの壁よりももっと凄いよ。w
なんせエラーも出さずにビットを勝手に消してくれる。 Verilogみたいな糞言語をマスターするには仕様書は欠かせない。メモでもいいが、、
Imaginationだけでスイスイやっていこうとすると躓く。
一歩一歩Step by stepで確実にやっていかないと電源の接続を間違うとか、wire
を忘れるとか、、、0も1'b0って書いておかないとご親切にワーニングの海になる。w
それだけおせっかいなのに大事なことは教えてくれない。「ビット削除しましたよ」
とお知らせがあってしかるべきなのに、平然とビットを落とす。
御節介を黙らせるにはどうするか?
「メッセージ抑制の制御」というのがあって、ここにルールを書いておくと黙る。
こういうノイズを先に消すのがいい。Suppretion Managerだが、これもかなり危険な
ところがあってよくバグる。
「どうにもなりません。ドカン」と赤いマークをだしてすべてを優先して落ちる。
まあ、これだけバグがあるということは誰もあまり使わないのだろうな。 >>548
VHDLつかってみそ。悩みがなくなるで。 >550
なやみ、、だったのか? 一瞬「脳みそが、なくなる」に見えた。
下には下がある。VHDLに比べたらVerilogはマシだ。 しかし見方を変えると、この糞っぷりは参入障壁にもなる。素人が安易に
参入しようとしても糞の堀に足を取られてなかなか参入出来ない。外堀にCQの糞堀
があって内堀にはVerilogの糞堀がある。なのではるかかなたの楼閣は益々高く聳え
て人々の憧れの的となる。安っぽいハードでも時間チャージ1万円とか取れるのは
FPGAくらいなもので、PICとかあまりにも親切なツール満載なので素人の参入が
著しい。必然的に値崩れして時間2000円くらいで王将の皿洗い並みになっている。 >>551
目医者と心療内科にいったほうがいいで。仕事のしすぎやでw >>552
王将の皿洗いが、今の半導体業界だな。
幸楽苑でもつくって、ボキュと握手させればOK >>552
深掘りに、橋を作って通行料をとるのが、今の現状。何処の会社かは言わないw
深掘りを埋めようとしているのが、パソナテック。ただし安く雇うとする。
埋めようとしている脇で、一夜城をつくればOK 言語への不満を散々書いてるけど、世間はそれを使って大規模なASICを普通に作ってるわけで、自分の能力がないことを晒してるだけだね。
初心者が使いやすいかどうかではなく、何を実現するかが重要。 まずは論理式や論理回路とかの勉強じゃね?
回路わかってりゃ後は繋げりゃなんとかなるだろ?的に取っ掛かりはあるのだし FFの位置とか、設計書に書けるには、だいぶ時間がかかりそうだなぁ。ガンガレ 初心者でも頑張ってvelilog書くんだよ。文句言いいながらでも理解を深めていくしかない。
それが出来ないなら諦めるしかない。言語のせいでなく本人の問題。 自分でCPUを創りたい、OSを創りたい、言語を創りたい・・・
まぁ、技術系中二病ですな。大人になれば卒業しますよ。 >まあ初心者が使うもんじゃないからな
>じゃあ、初心者は何を使うんだ?
笑った。そりゃそうだ。どんな言語にも入門の段階があって、その時点では初心者だもんね。
>>557が言いたかったのは、カジュアルユーザーが齧る言語じゃない、って感じだろね。
>>564
>自分でCPUを創りたい、OSを創りたい、言語を創りたい・・・
本当にこういう意思を持ってるなら、大人になっても卒業しないでいてくれて良いのでは?
力があれば画期的なものが生まれるよ。そこを感動が薄くなった「大人な人たち」が揶揄していたら
数少ない「出る杭」を知らず知らずのうちに潰してしまうことになりかねないし。 >自分でCPUを創りたい、OSを創りたい、言語を創りたい・・・
どれも普通に大学の講義でやるよ。完成できないと単位がもらえない。w 自分ができないことに対してすぐ文句言うやつは無能の法則 誰だって最初は初心者なのであって、スキルを持っている人は
過去に自分の無能さを素直に受け入れそれに対して愚直に努力してきた人 >>568
そう?
機械科だったけど講義じゃやらなかったよ 教えてもらえて当然と思ってる奴いるけど何なの?
で、教えてあげたら今度はこんなの簡単じゃんとか言い出して調子に乗り出す… >>564
designware とか使えば割と簡単じゃないの?
Xtensa とかでもいいけどさ。 CPUもOSも言語も作りたいとは思わないが
スケマCADは作りたくなるねパクリCADかもしれないが 最初の勉強はそこからだしな
そこを否定しちゃう人って多分実際に何もしてない人だと思う 創りたいと基礎を理解することは違いますよ。
CPU、OS、言語なんか乱立されても開発者、ユーザーにとっては迷惑でしかないんですよ。
公開せず自分一人で使う分には構いませんけどね。 cpuはねぇ
結局、使ってるプロセス同じなら
どんだけ演算器扱き使えるか
データ転送出来るかだからなぁ
osにしろ言語にしろ、cpuもそうだけど
アセンブラから自力で用意するってのは一回やってみりゃ
満足する人が大半だろう
趣味で幾つも作る人ってのも時々いるけどね CPUみたく、大きな事を小さく分割してコツコツやればスゴイって事が、つくればわかるでしょ。それでええやん 確かに説明すれば分かる人と説明されてもやってみないと分からないという人はいるな。
それはデータシート読む人と読まないで質問する人ではなかろうか。 >579
たしかにVerilogなんて基礎はバカチョンで理解できるが、いざ作ろうとすると予想した時間の
100倍くらいかかるな。w
先ず開発環境が糞で動かない。
Verilogが糞で、ちょっとモジュールの配置を変えようとか、構成を変えようとか
御触り程度のことでまる一日勾留されてしまう。腹立つーーーーー。 モジュール間の1bitのワイヤー接続はWire宣言は省略可能ってのがあるんだよな。
呆れるわ。w
おなじことするのに多ビットでも省略可能にしろよな。 仕事があまりにもはかどらないので欝病にでもなったかと思ったよ。だから
こんな言語をやろうなんて思わんほうがいい。 >>578-584
あえて年寄りくさいことを言わせて貰えれば、
「知る」と「できる」とは全く別物。
得た知識を実際活用しようとしてと、なかなか上手くいかないことはよくあること。
それは実際に経験してみないと分からないことがどうしてもあるから。
要は実践が大事ということ。
実践の中で練られた知識は価値があるものとなる。これを見識という。
さらに、大きな効果を発揮するには、多くの人と協力していく必要が生じる。
そのためには様々な調整も必要になる。
時には実行を妨げる問題や障害も出てくるだろう。
そんな状況でも、一番大切なことを軸に何とかことを進めていく経験が忍耐力や根性を養う。
これを胆識という。
知識を見識に引き上げ、さらに胆識にまで高めたいものである。 精神修養にはいい言語かもしれんw
これを使いこなせたら大したもんや。(精神力においてはな、、、) >>584
最近半分趣味でいじりはじめて正にそんな状況。
テストベンチの重要さとかソフトのユニットテストよりも
実感してて本を読み直しつつ試行錯誤してる。
でも、なんかこういうローレベルな所から思考をするのは
勉強になって良いね。もっと早く手をつけておけば良かった。 >>584
>>579
>たしかにVerilogなんて基礎はバカチョンで理解できるが、いざ作ろうとすると予想した時間の
>100倍くらいかかるな。w
>
>先ず開発環境が糞で動かない。
>Verilogが糞で、ちょっとモジュールの配置を変えようとか、構成を変えようとか
>御触り程度のことでまる一日勾留されてしまう。腹立つーーーーー。
お前の設計力が足らないだけだw 多分な。w
俺が発想して下請けのお前がVerilogでコチコチ作り上げるというのがベストだな。 https://goo.gl/ZRULYX
これ本当なの??
普通にショックだよね。。 >>593
設計力がない上に、設計書すら書けないアホには、月120万円出すならやってあげてもいいぜw >>593
金がないなら、自分でやれやこのボケ。
お茶ぐらい出せと小一時間。 お前レベルで月120万もとれるというのはやっぱりFPGAは儲かるんだな。 >>598
ソニーですら出してくれないよ。お前バカなの死ぬの? 月120万か。まあまあだな。心配すんな。俺はFPGAはメインではやらない。
効率悪すぎだ。
かりに1人月60万で「お安いですよ、でへへへへ」と受けて、半月で完成すれば
いいだけだものな。しかし今の俺だと半年くらいかかりそうだから、人月10万に
しかならない。 >>601
お前の態度が悪いから、お前の場合は120万円。
ルネ○スの場合は160万円。
一般的には80万円。
月額
嫌なら自分でやれや。このボケ。 上に、いっぱい書いてあるだろ
読めないのか? 糞チョン 山のようにでていたワーニングが全くでなくなった。全部グリーン文字だ。
で今コンパイルしたら青で「ネットがつながってません」ってのが出たので確認したら
確かにつながっていなかった。
弄ってるうちにどっかの設定を触ったのだろうか? こんなに急激に腕が上がるとは
かんがえられない。w 工業高校とか、工業大学で道徳でも教えた方が良いんじゃなかろうか。
業種変えても、自分が変わらないとムリだからw >607
そうだよ。arisaもそういう工業高校に行きなさい。 >>608
治外法権で自由な、国立東京工業大学工学部附属工業高等学校に行ってた。
道徳は、同級生から習ったなぁ。
学校のCanBeに、自作のウイルスを置いておいて。オレ様が地雷を踏んだら、お前が悪いと言い出して、裏で「実験は成功した」とか書いてて暗号化したつもりの文章を、破ったりいろいろ遊んでたけど。
verilogバカにするなら、時代をさかのぼってリレーでFFつくったり。-24VのPNPトランジスタでFFつくったりして、CPUがつくられる前の時代を追いかけてみたらいいんじゃないかな。
後者は電卓技術教科書 シャープさんが書いてるし。
そのあとに、嶋正利さんの4004/8086/Z80だけど。
温故知新すると。ああ人間って以外とバカなんだなぁと気づく。
そこに気づけるか否かだよ。気づかない人は、平気で土足で荒らして、言いたいことを言って逃げる。
今私が大手電機メーカーに突きつけているようにね。 増設したところで、FIFOのALMOST_FULLフラグが立ったら捨てるしかないしな。
捨ててもいい分野とそうでない分野があるので、
使い分けるのは、設計者の自由なのでそういう仕様書と設計書をフリーダムに書けばOK
書けなかったり、描けない奴は、能無しだ。 ちなみにSygnalTapIIのメモリー確保が厳しいのだが外部にメモリーつけて信号サンプル
した信号を出して観測する方法とかないか?
512サンプルしか確保できないので500K(1000倍)ぐらいをサンプルしたい。
うまくSygnalTapIIの設定と連携する方法はないだろうか? >リレーでFF
って、どういう接続にすればいいんでしょうか。
レーシングしてしまうような気がする >>614
入学式と卒業式と、
3人の会社の時に准教授の産学共同研究して学食おごってもらったけど。
東工大に入っているね。燕 >617
直ぐに諦めるだろ。そういうところが駄目なのよ。
俺は方法を見つけたぜ。 >>615
リレー回路をやってなかったので詳しくはないんだが、昔のクロスバ交換
機ではワイヤスプリングリレーというのが使われていた。
このリレーはEBM接点(Early Break Make,3点接触あり)とかEMB接点(Eealy
Make Break,3点接触なし)とか接点の動作タイミングがきちんと規定され
ていて、ダイヤルパルスのカウントをやったりしていた。
こういうリレーを使えばうまくいくのではないかな。 リレーでも、NANDかNORができさえすればFFもできるでしょ >620
ロジアナは不要だ。さあどうやってやる?w FPGAではいかにしてデバッグするかというのがとても大事だ。特にRTLレベルで完全に
問題を潰しておくことが重要なのだが、RTLレベルで完全にやっていても
実機になると、見落としがあったりしてある程度の変更はでてくる。その場合には
RTLに戻って再度デバッグをしたりはしないでそのままコードを書いて追加していく。
そういう時に思わぬコードミスが発生する。
このような場合に通常のソフト開発にありがちなアジャイルな方法、方法という
よりはこのような精神、つまりは「とにかくやってみて、、、」というような精神態度
ではドンドンミスが発生する。
なぜならVerilogは文法も稚拙だがコンパイラのできが非常に悪いので一般的な
コンパイラが発見してくれるようなミスが潜り込んでしまうからだ。
追加の場合には、うろ覚えで追加することは絶対に避ける。100%確実な
コードのみを追加する。もし少しでも文法やコードに自信がないなら、動作している
コード例と比較して確実に動作するコードを書くようにして憶測でコードを追加しない
ことが重要だ。 >なぜならVerilogは文法も稚拙だがコンパイラのできが非常に悪いので
って自分でかいてるだろ。
少なくともVHDLのほうが厳密に書けるんだからさ。
コンパイラ(って合成ツールのことだよね?)は何使ってるの?
文法チェックならLintツール使えよ。 教科書を見てて思うんだが、パルスで起動する場合にエッジを取るボケが多いな。
最初から微分しとけや!アフォって思うな。Moduleのなかでいちいち微分する奴は
アフォだろ。 >少なくともVHDLのほうが厳密に書けるんだからさ。
Verilogですら冗長コードがあるのにVHDLとか「なんだよ、この糞っぷりは」
っておもうぞ。冗長コードのウンコの山だろ。w
話にならん。 最近嵌ったのは
reg buf[7:0] ;
[]の位置を間違うんだよな。これはエラーが出ないんだよな。あとスペルミスして
ても知らんぷりでエラー出さないんだよな。w SVHDL :Shit Very Hard Design Ludicrous ソフトは上から下まで凄いいろんな種類があるけど、ハード記述言語はあまり進歩がないねえ
頭も固いのか? >>639
>>482かな
それはそうと default_nettype も検討したら? >>642
言語もシミュレータもトランスパイラもいろいろあるでしょ
大手がそれを取り込まないから誰も使わないだけで
で誰も使わないからコストかけて取り込めない >厳密さと冗長さって全く違う概念
コード量が増えるというのはコードノイズが増えるってことだ。だから厳密性が
無茶苦茶劣るということだ。
厳密なものは、シンプルで美しい。間違いが少ないし、当然間違いが入り込みにくい。
したがってVerilogの方が糞でもかなりマシ。
ユークリッドの第五公理でもわかる。この部分だけ美しくない。必然的にここから
ユークリッド幾何のボロが出たということだ。
1.任意の一点から他の一点に対して直線を引くこと
2.有限の直線を連続的にまっすぐ延長すること
3.任意の中心と半径で円を描くこと
4.すべての直角は互いに等しいこと
5.直線が2直線と交わるとき、同じ側の内角の和が2直角より小さい場合、その
2直線が限りなく延長されたとき、内角の和が2直角より小さい側で交わる。 あとソフトの開発ツールが百花繚乱なのはやっぱりお手軽さが違うよね
とりあえずJavaScriptかJVMかllvmに落としておけばなんとかなるみたいな >それはそうと default_nettype も検討したら?
始めて知った。noneにしておいたほうがいいな。
モジュール間接続をしたネットを上位にOUTPUTする場合は頻発するが、名称を
wire 宣言をするとOUTPUT名称を変更しないと2重定義でコンパイルエラーになる。
しかし定義を省略すると接続できる。しかし接続できてもバス配線の場合には不具合
が出る。しかしViewerでは正常に配線されていてコンパイラはエラーもワーニングも
ださない。(多分) signal 宣言一つで reg or wire 双方への推論を許してる
何処が厳格なんだよ >>650
FFになるかwireになるかなんて本来は関係ないはず。
reg だからって必ずしも FF にはならないだろ。 >>644
トランスパイラ?
ハードの場合、最終的にはedifかGDSだからなぁ。 言うだろうと 思ってたよ
reg -> wire は有っても、その逆は無い
そもそも、case 分で書いたほうがスッキリするから
敢えて、助長縮退を意図した書き方を許してるだけだ
自称 厳格、それ以外にとり得がない
同じ物を書くと、コード量2〜3倍ぐらいになる
唯々文句言ってるやつよりはマシそうだが
両方やって、比べた上で言えよ GPUでさえ汎用言語ではダメで、CUDAとかOpenCLが必要なんだから
より並列性の高い言語を作らないいかんな。
できればFORTRAN66をベースに。 >>657
いいたいことはいろいろあるが
今現在、最もGPUを酷使するアプリはpythonで書かれているという事実がある 最もGPUを酷使するアプリって何だよwww
俺が作った、全ユニットフル稼働のテストツールより酷使するアプリなんてあるか? >>660
お前のアプリは所詮お前のハードでしか動かない。
世界中のGPUが必死に何の計算してるかと言う話だから、
お前のチンケなアプリはの話はどうでも良い >>659
コード書けない層ほど中身のないAIに飛びつくから。よってまともな成果は出せないだろう。 VHDLをやりもしないで、クソ扱いはクソワロタシテロ。小一時間草でも植えておけ コード比較
-----verilog-----
module mod_a (
input clk,
input rst_x,
input [7:0] i_in,
output reg [7:0] o_out
);
always @(posedge clk or negedge rst_x) begin
if (~rst_x) o_out <= 8'h0;
else o_out <= i_in;
end
endmodule
----- 糞VHDL -----
library IEEE;
use IEEE.std_logic_1164.all;
entity mod_a is
port (
clk : in std_logic;
rst_x: in std_logic;
i_in : in std_logic_vector(7 downto 0);
o_out : out std_logic_vector(7 downto 0)
);
end mod_a;
architecture rtl of mod_a is
signal r_out : std_logic_vector(7 downto 0);
begin
process (clk, rst_x) begin
if (rst_x = '0') then
r_out <= (others => '0');
elsif (clk'event and clk = '1') then
r_out <= i_in;
end if;
end process;
o_out <= r_out;
end rtl; Verilogの方が冗長なのは事実だけど、それだけでVHDLを
否定をしてる人は単にプログラミングに対するセンスが
ないんだと思うよ 具体的なコードを明示した上で比較したヤツ
それを、抽象的な物言いだけで否定してるヤツ
技術者の端くれなら、具体的な利点を示した上で反論しろよな 固定小数点演算のかけ算機を、verilogでつくれば、VHDLよりverilogがクソなのが理解できるだろ。草植えるのマダカヨ 冗長というよりゴミだろ。VHDLとかほぼゴミで埋もれる。 c[16] = a[8] x b[8];
こんなん? 掛け算ならfloatだろうが、intだろうがライブラリを使うだろ。
VHDLのライブラリアクセスがどんだけめんどくさー――――いか。殆どゴミコード。 掛け算くらいツールが合成してくれるよ。
ライブリって何?FPGAの? 何コイツ無職?おまけにサイコパスっぽい。
ひょっとして、元ルネサス? >675
そうなの? フロートはレイテンシの調整とかがめんどくさいので使った記憶が
あるが、整数は使った記憶がねえよ。記憶に残らんほど簡単ってことか。 固定小数点って言葉自体がバカっぽいな。ただの桁合わせのことだろ。W 何コイツ無職?おまけにサイコパスっぽい。
ひょっとして、元ルネサス? 画像処理とか実数演算を固定小数点で高速化して自慢したいんだろ。w
馬鹿の典型だな、そんなのがひつようなのは0.0001%もねえよ。
Floatでやっても高速化できるんだから、Floatのほうがいいんだよ。設計変更での
柔軟性が高いしな。
馬鹿がいて固定小数点で作りやがって、一寸変更かけると「できません」っていう。 何コイツ無職?おまけにサイコパスっぽい。
ひょっとして、元ルネサス? 何コイツ無職?おまけにサイコパスっぽい。
ひょっとして、元ルネサスの手配師でしょ。技術的な中身無さそうだし。 VHDL推しは一定の理解はするが人格攻撃始めたら賛同者なくなるよ >>684
スマンナ。ほんままんどくさいんだわ。大手半導体にいるひとたち アリサはルネサスに派遣されて惨めな思いをしたんだろ >>666
行数が短いから言語として優れてるって言いたいのかな?
ハードを記述してるって感覚がないだけに見えるけど。 >>689
俺の手を煩わせるなってことじゃ?全部手作業なんでしょ その感覚は実は必要ないかもしれない
C > Verilog > VHDL rtl書いてる時間ってHDL書いてる時間ってこと? なるほど
となるとRTLを書くとは具体的な作業としてはどういうものになるんですかね >ハードを記述してるって感覚がないだけに見えるけど。
どんな感覚だよ。
まずHDLの基本が糞だよな。
非同期リセットの書き方
always @(posedge clk or negedge resetn)
if(resetn)
dff <= 0;
else
dff <= dff + 1;
これがどーーーーーんだけ糞な書き方か意味わかる。
「非同期」だってのに何で同期回路と混在するんだよ。馬鹿じゃないか。
この時点で言語として破綻してる。
negedge resetn ぷっ 笑える。これは馬鹿ってレベルじゃなくて糞馬鹿。
>rtl書いてる時間なんて全体の1割未満だもんな
だから問題なんだろ。今度RTLを使うのは何か月後だろうか?
偶に使うツールほど扱いが難しい。使い方を忘れるからな。
modelsimも糞だよな。ほんと覚えにくい。毎回立ち上げ時に苦労する。 いいじゃん、非同期resetなんか使わないんだから。 >>696
そもそもこの場合の非同期ってのは、クロックに同期してないって程度の意味だろ?
実際にはreset信号に「同期して」リセットさせるんだから
書き方的には問題なくね? なんか、ニッポンの半導体産業他の崩壊を今目のあたりにした希ガス always @(posedge clk)
if(~resetn)
dff <= 0;
else
dff <= dff + 1;
これがVeilogの同期リセットの書き方だよ。
RTL Viwerで比較して見てごらん。 同期リセット 非同期リセット
をFPGA ASIC にて、トランジスタレベル(CMOS)
の回路図を検討し、その2*2の利点・欠点を
一覧にし、考察をすること。 >いいじゃん、非同期resetなんか使わないんだから。
単純リセットのための同期リセット使うとという意味なら、それは誤りだ。
同期リセットはリソースをかなり消費する。
非同期リセットを使った方がいい。
デバイスがPowerONリセットを用意しているから不要。単純リセットは省略する。
というのなら意味は解る。
でもじゃあシミュレーションで真っ赤っかになるのをどうすんの?ってことになる。
Force the FFs/registers to reset by using the ModelSim force command.
コードに書かないとしたらやり方としてはtclでこいつを叩くのかな?
やったことないが、、 -----verilog-----
module mod_a (
input clk,
input rst_x,
input [7:0] i_in,
output reg [7:0] o_out
);
always @(posedge clk or negedge rst_x) begin
if (~rst_x) o_out <= 8'h0;
else o_out <= i_in;
end
endmodule
例えばこの例だと、
★致命的な間違い
1.iolistでグローバルのclk,rst_xとi_inの混在は問題。
同じスタイルで書くのは良くない。かなり致命的間違いだ。
2.非同期リセットのnegedge rst_xこの書き方も致命的欠点
まず致命的欠点だけでも解決するなら
-----verilog-----
module mod_a (input [7:0] i_in, output reg [7:0] o_out);
always @(posedge clk ) begin
o_out <= i_in;
end
endmodule
本体はこれだけになる。 ★しかし”always @(posedge clk ) begin ”この記述は何も中身がない。なので削る。
-----verilog-----
module mod_a (input [7:0] i_in, output reg [7:0] o_out);
o_out <= i_in;
endmodule
グローバルどうすんの? って
*.(clk,clrn) = clk,rst_x;
でいいだろ。
ネガティブエッジは? って
.clknだな。 >arisa君
理屈をつけて説明する癖をつけなさいね。
理屈なしににやにや笑ってみたり、嘆いてみたり、思わせぶりに批判するのでは、
力がつかないよ。
何故理屈がつけられないのか? それは意見に自信がなくて、間違いが怖いから
でしょ。
言い訳の余地を担保したいから、曖昧にしか言えない。 >また、合成の話とごっちゃにしている。
どこが合成の話なのかな。w >698
君が勘ちがいするのもわかる。バリ糞分かりにくい無茶苦茶な文法だから。
非同期リセットの書き方
always @(posedge clk or negedge resetn)
if(resetn)
dff <= 0;
これnegedge resetnでエッジって書いてあるが
「clkで叩かないようにように」
って意味だからな。
だから
dff.clrn = resetn;
と同じ意味。 だからこの3行が意味するのは、単にリセットをdffのclrnに接続して
clkをDffのclkに接続するってこと。
dff.clrn = resetn;
dff.clk = clk;
ってことだ。
always @(posedge clk or negedge resetn) って糞ってのがわかるだろ。
or だと なんでorなんだよ。
negedge だぜ 意味不明だ。 盛り上がってるとこすみません
>>695についてはいかがでしょうか? >713
どこまでを抽象化するかだな。
そもそもregってのはdffを意味してる。基本的なprimitiveなんだから
regというように抽象化するひつようはない。抽象化するだけの
脳味噌がないんならそのままdffでよかった。
and orと同じ扱いで抽象化するんならclrnもclkもいらない。clrnもclkも
意識しないで書けるようにしないと意味がない。
and orのように徹底的にそぎ落として抽象化する。そうするとregは
どうなるか?
and and1,and2; なんて書かないだろ。
reg dff1,dff2; だからこれではだめだな。
and,orは宣言しないだろ。それと同じでregも宣言からは消えなくては
意味がない。 RTLで書くってことは最終的にはFFと論理回路の組合せを書くってことだからね。プログラミング言語のように考えてるなら違うよ。
スケマの複雑な回路を表現する方法の1つがHDLなだけで、無駄な記述だと思ってるのは必要な状況を知らないだけだろ。 >>716
FFを箱で書いたスケマと考えてよいでしょうか >>708
面倒くさいし。お前が上から目線だし。
どうでもいいね。 こんな感じでアスペっぽいのは、小平市にある半導体の社員しか考えられない。
そうじゃなかったら、イイ才能だね。
FPGAの技術者を育てたいパソナテックの正社員になって年収400万円少しで働けば未来が拓けるよ! 符号付き演算で、verilogとVHDL比べれば差が出るからどちらかいいかわかるよ
と親切に教えてやったのに
自分がわからないから、答えよこせお前がアホだからだろ、とかわめく基地外の対処方法は慣れているんだよなぁ。
要約すると、「態度が悪い。高度ポリテクに金払って教えてもらえ。このボケ」
というのが、2ch風誠意ある接し方だと思うんだが。どうよ それはお前の目的による
VHDLの賛同者を増やしたいんだろ?それなら具体例で根拠を書くべき
どうでもよくて煽りたいだけ、悦に入りたいだけなら好きにすればいい 符号つき演算での差の話、純粋に興味があるのですが、どこでそういう話が出ていますでしょうか? >>718
>>719
ご回答ありがとうございます
ゲートレベルでの記述がRTLということなのですね >>726
違うと思うよ。合成後はFFとゲートで構成されるのであって、記述はRTLというくらいだから、レジスタとそのロジックで書くんだけどね。
条件式、状態遷移、演算なんかが複雑なゲートの組合せになるってことで。
RTLで書いてるのにゲートレベルで考えるのはさすがに難しいよ。 RTL ってのがはっきり決まってる訳じゃないからな。
「合成可能な記述」くらいの意味で使われてるようだけど。 >>702
>単純リセットのための同期リセット使うとという意味なら、それは誤りだ。
>同期リセットはリソースをかなり消費する。
>非同期リセットを使った方がいい。
これは、(Aは知らんけど)現在のXのデバイスでは逆らしいよ
FFのリセット端子の機能を、同期・非同期選べるようになってて、LUT使わずにできるし
場合によっては、FFを0にする論理をこの端子に振り分けることでリソース削減できる
らしい 同期リセット問題は、STARC本の先の議論に行きつくのだけど、指定が無い場合後でASICかする手間を考えて、非同期リセットでかけている。
無論非同期リセットの区間の仕様は必要で、ほぼ常識なのでわざわざ仕様書に明記する細かな設計には経験が少なくて出会ったことも無いが、おおむね10-16clk以上。
テストベンチにはその旨記述し、非同期リセットをシミュレーションするようにわざとずらし、前半に不定の区間を設ける。 私の場合ね
>>729
とは前提が異なるので、
違う話になってスマンが。 >>727
なるほど…
謎が深まりました
RTLで書くというのがHDLでの記述でもなくスケマの記述でもないとなると、一体どういう作業なのか…
>>728
論理合成可能な記述という意味ではHDLによる記述に思えますが違うのですよね
RTLで書くということの意味を考えるのはやめにしたほうがよさそうですね >>723
特に増やしたいという目的はない。
ただ、やったこともないのに目線の狭さで初めからバカにする行為は、オタクを偏見バカにする行為と変わらないので、教育的指導をしただけの話。 >>725
過去ログ嫁。ボキュは嫁が欲しい。
verilog-2001にて、$signed / reg signed が取り入れられた。
ただ、この符号付き演算を使うと、出力データバスが32ビットで無い場合。細かなバグが生じるというか、ビット数の定義を間違えると、その瞬間にバグが出る。
はっきりいって、仕事にならない。
信号処理の業種では、そこで無駄にはまるのでVHDLを使う。
その方が結果的に仕事が早いから。
でなんか、浮動小数点ツカエボケお前アタマ悪いだろうと過去ログに書かれているのだけど。
固定小数点の設計が出来てから、浮動小数点の設計が出来るわけだ。
CQ出版の本で、浮動小数点についてソースコード付きで書かれた青い本があるけど、あれはverilogだね。
その分試験仕様書と、テストベンチをしっかり組んで時間をかけて設計出来て本に出来て、羨ましい。 >>732
レジスタトランスファーレベルとは何か?
そのHDLの書き方の定義は何か。
ということを質問したいのだと思う。
おそらく、その時代の論理合成ツールで合成がしっかり出来る記述かと思う。 >>732
HDLでの記述が全て合成可能ではないだろ。合成ツールによってもどういう記述が合成可能かは変わるし。 >>733
煽ってるだけじゃ指導になってない
暴れとるわと思われてるだけ >>732
みんな好き勝手言ってるけど、
RTLっていうのは、レジスタとクロック信号は意識して、
論理ゲートを意識しない抽象化レベルのことだよ >>736
合成ツールによって書き方が変わるし、その会社やその人の文化によっても変わります。
なので、RTL記述とは何かを突き詰めるとSTARC本のようになるとおもう。ただ、中身は少し時代遅れな部分がある。理由は合成ツールの進化と文化と目的の違いがあるから。 arisa ◆QaHT6HayjI
ID赤くして文句タレてるヤツよりはマシそうだけど、レベル低いね
>>670 ありえんだろ、と思いながらも
vhdl / verilog 双方で合成してみた
結果は全く同じだった
当然だわな、 c = a * b コレだけだもん (コードは↓)
(Altera Q v16.1)
オプション=デフォルトで合成 -> ハード・マクロに繋いで終わり
オプション=ハードマクロ使用禁止 -> 全く同一の結果(レポートレベルで一致)
他にも合成ツールあるけど、結果は見えてるから もう試さんよ
あと、主張するなら具体的なコードとツール提示しないとな
そうじゃなきゃ 誰も信じないよ
その点、ID赤くして文句タレてるヤツの方がまだマシ
---
module mult_test
(
ina, inb,
mult_out
);
input [ 8:0] ina, inb;
output [17:0] mult_out;
assign mult_out = ina * inb;
endmodule >>742
その程度のレベルだと問題おきない。
あと、君の態度が悪い。くそうぜー氏ね verilogの冒頭と末尾に default_nettypeを入れるのがくそうぜー >>742
そもそも、そのコードは符号付き演算じゃないだろ。オマエバカか? 名無し君
相手の言うことを素直に聞く癖をつけなさいね。
自分の実力のレベルも認識できず、理屈以前に仕様も認識できず、出来ましたと言いだし動かないものを出されてバカにするのでは、
力がつかないよ。
何故素直にできないのか? それは自分にに自信がなくて、間違いを指摘されるのが怖いからでしょ。
言い訳の余地を担保したいから、ソースコード書けとしか言えない。
相手の言うことを理解できないということは、仕事にならないから迷惑。お茶飲んで出直してくれば。 FPGAの非同期リセットは本当に非同期のリセット信号を入力するとリカバリ、リムーバル違反でバグるのから嫌い その程度のことなら、リセット信号を同期化すればいいだけだと思うんだけど
それじゃダメなの? >>750
同じだよ。うちは右から左へのところてん押し出し回路で、enableがあれば問題………
クロック二回以上のリセット間隔が担保されていれば問題ないんじゃないの? >クロック二回以上のリセット間隔が担保されていれば問題ないんじゃないの?
だめ。そういう問題じゃない。
リセット解除時にクロックが入ると誤動作する。エッジの前後でリセットを
入れてはいけない。非同期リセットの加え方は難しいんだよ。
これを無視して問題が発生するケースは珍しいと思うが、バグることがある。 >これは、(Aは知らんけど)現在のXのデバイスでは逆らしいよ
>FFのリセット端子の機能を、同期・非同期選べるようになってて、LUT使わずに
>できるし場合によっては、FFを0にする論理をこの端子に振り分けることで
>リソース削減できるらしい
「らしい」じゃなくて、RTL Viewerをみたらすぐわかるだろ。みないのかよ。w
Xはそうなのか、合成できているんなら、その方がいい。AlteraはRTL Viewerで
見る限りリソースを膨大に消費している。 >>753
メタステーブル問題とおなじじゃねーか
FF3個とAND1個で rst_n → srst_n をつくるしかないべ
751の名無しのレスはオレ様のジサクジエーンだからwごめんな なんだ、
force(笑)か
相手するのめんどくさいから、コテハンキボンヌ まぁ。リセットのクロックが1クロックずれて回路が動作したら問題になるか、
論理合成後のスケマで検討したらいいし、
そういうテストベンチ走らせて、ゲートSimでみて、
リセットタイミングを1nsぐらいふって動作にもんだいがあるか確かめればいいんじゃないの。
もう記憶の彼方なのであれだけど、確かにアルテラちゃんは、同期リセット問題で膨大なリソース食った希ガス。非同期でいいんじゃないの→いや と若い設計者が言い出すから、勉強になるだろうしめんどくさいので放置したけど。
小田原の開成駅あたりで口からいれるなにかのなにかのときに、そうだった。もう3年前の話で、仕事帰りに鶴巻温泉駅から徒歩で天然温泉に浸かってたことしか覚えてないなー
君サー長野県の案件やらね? 低賃金で高機能なことやらされて、お客さんがわかってないから、君のような議論好きは重宝されるでー >FF3個とAND1個で rst_n → srst_n をつくるしかないべ
FFとAND1個じゃ原理的に無理。
リセット区間がエッジの前後にかからないようにしないといけないからクロックに
同期した信号だけでは作れない。
つまり遅延回路をつくらないと無理だな。 >>758
ああはいはい。自分で考えな
君のようなサイコパスは、金出せば相手にしてやんよ
ところで、符号付き演算VHDL/verilogマンせー問題はどうなったのかね。
ホウレンソウがないと、一緒に仕事する人が困るだろう >RTLっていうのは、レジスタとクロック信号は意識して、
>論理ゲートを意識しない抽象化レベルのことだよ
論理ゲートは意識しないと駄目でしょ。w
意識しないのはゲートレベル信号の遅延だね。クロックする時点では組み合わせ
ロジックの値が確定しているという前提で動作検証できる。 ベテランも2種類あって、理論を正確に押さえている人もいるが、声がデカい
ハッタリが上手いというだけで仕事をしている人も多い。
残念ながら生命力は後者が勝るらしく、どこでも蔓延っている。 >>760
ゲートSimすればぁ。それで検証できるよねぇ 仕事させると、詳細な設計書つくるんだけど中身がなくて、詳細な設計書をつくるのに時間をとられて自分じゃ解決出来ないから会議好きになって納期遅延させる日立タイプ
そんな感じだと思うの。 >RTL ってのがはっきり決まってる訳じゃないからな。
これは極めて論理的で厳密な記述だよ。
「システム」=入力と状態と出力からなり、入力と状態が決まれば出力は
一意的に決まる。
システムをクロック同期とすることで、複雑な物理現象の影響を回避して
きわめて論理的に動作するシステムが可能になった。このクロック同期の
論理記述の方法がRTLだ。
Verilogがあいまいでいい加減だからといってRTLはいい加減じゃないよ。
RTLは非常に厳密というか数学的に完璧だよ。Verilogはまあ糞としか言いようがない。 >>764
クソワロタRTL記述に verilogが入ることを理解してないし。糞ならVHDLつかうなりsystem-Cつかうなり
そこまでもんくがあるなら自分で言語つくればいいと思うの
でもなにが糞なのか、一覧というか仕様にすら起こせなくて、わめきちらす
そんな感じだと思うの 74ICで回路組む検証にでも行かせたら静かになるんじゃないか >>761
>ベテランも2種類あって、理論を正確に押さえている人もいるが、声がデカい
>ハッタリが上手いというだけで仕事をしている人も多い。
>残念ながら生命力は後者が勝るらしく、どこでも蔓延っている。
ハッタリが上手いというだけで仕事をしているけど アウトプットが自分で出せないから、他人に寄りかかるために気持ちを逆なでしてアウトプットを相手にさせるだけの、サイコパスだと思うの なんか全部arisaだと思うと腑に落ちるようになってきた >>764
>このクロック同期の論理記述の方法がRTLだ。
何言ってんだ?こいつ。 腑に落ちないか? w
このくらい丁寧に説明して解らんと、これ以上は無理かも。しかしarisaレベルでも仕事は
できるみたいだから問題ないと思うよ。 >>772
>>>764
>>このクロック同期の論理記述の方法がRTLだ。
>何言ってんだ?こいつ。
確かに、何を言っているんだろうね。
クロック同期=RTL じゃないことは、回路やったことのある人間からすると常識なのに。 >>765
>>>764
>クソワロタRTL記述に verilogが入ることを理解してないし。糞ならVHDLつかうなりsystem-Cつかうなり
>そこまでもんくがあるなら自分で言語つくればいいと思うの
>
>
>でもなにが糞なのか、一覧というか仕様にすら起こせなくて、わめきちらす
>
>そんな感じだと思うの
でverilogの何が糞なんだっけ
糞なら使わなきゃイイだろw馬鹿なの死ぬの Wikipediaの説明があまりよろしくないので、本質を強調して書いてみたのだが
頭のいい人なら本質がなにかが理解できると思う。
要はシステム理論で言うところのの「システム」を特殊化したものだな。
一般的システムは相互干渉など、検討するところがいろいろ発生するのでモデルから
実機動作を保証するのは非常に難しいがRTLにすることで馬鹿でもチョンでもarisaでも
設計できるようになる。そこが重要なところだな。バカチョンシステム=RTLだ。 RTLについては英語のWikiの方がすこしましかも
In digital circuit design, register-transfer level (RTL) is a design abstraction which models a synchronous digital circuit in terms of the flow of digital signals (data) between hardware registers, and the logical operations performed on those signals.
synchronousってところが重要w C = A + B
R = R + 1
ABCがノードでRがレジスタだとすると区別しないといけない。宣言するか記号で区別する。
宣言で区別するなら reg R;
記号を変えても区別できる。バス幅記述もあるので一長一短はあるが記号で区別した
ほうが分かりやすい。
R <= R + 1;
ここにalways@なんて記述は不要。
しかしどうしても
always @(posedge clk or negedge resetn)
で記述したいなら
always @(posedge clk or negclr resetn)
とかいて、下にはif(resetn)は不要だ。
666の例なら
always @(posedge clk ,negclrn rst_x) begin
o_out <= i_in;
end
これならまだ許せる。
これはあまりにも馬鹿っぽい
always @(posedge clk or negedge rst_x) begin
if (~rst_x) o_out <= 8'h0;
else o_out <= i_in;
end >>777
RTLは同期じゃなくともRTLだから、その英語の説明書いた人が間違っているね。
普通同期回路しか組まないから、そう書くのもわかるけど レジスタってのは、ソロバンの玉だ
そこにクロックは関係ない
5玉2個 1玉5このソロバンで16進九九を暗記して掛け算やればわかるべさ >>754
合成後のリソースの確認ってTechnology map viewerじゃないの? 間違っていたことを言っていたら否定しないでやんわりと言い方を変えて誘導して欲しい。
と日本語にして言えばいいのに。クソとか短くし過ぎでクソワロタRTL これほど見事に本質を外してカスだけを学ぶのをどこかで見たような気がする。
そう親の悪いとこだけを見て育つ。まさにバカ息子。w >合成後のリソースの確認ってTechnology map viewerじゃないの?
うん。正しい突っ込み。そこでxの場合非同期クリアラインはどうなってる?
RTL Viewer
合成後 Mappping View
これを比較するとわかる。 >>745
>>>742
>そもそも、そのコードは符号付き演算じゃないだろ。オマエバカか?
符号付き掛け算の演算で、verilogがクソ VHDL優秀 問題はどうなったのーーーー >>791
仕事中に遊んでるの?
もし仕事中にやってるのなら、ちゃんとそれが後々会社のためになる生産性のある活動であればいいんじゃね?
かつ他に優先してやるべきことをおろそかにしてなければ 脳ある鷹は爪を隠す。
爪があることばれたら死ぬほど仕事振られるからな。 自分だけは人より色々知ってて実力もあり「やればできる」能ある鷹であるという前提 1991年ぐらいSynopsysで遊んでた懐かしい。 いま、給与で揉めてハローワーク求人番号 20020-01982671 が出るようになった。
倫理回路の設計をいましてるみたいw 倫理回路って、キカイダーの良心回路みたいなやつか。
カッコいいな! >>799
キカイダーってなんだ。
もしかして、これがジェネレーションギャップ回路開発か テクノプロ・エンジニアリングさんすごいですね。
もしかして、AI関係かな。 キカイダーの良心回路には不具合が有ったのでとても苦しみました。 不具合っつうか脆弱性だろあれ
バックドアでも仕掛けられたのかもしれんが プロセッサ「ギル」によって不正なアクセスが可能な回路なんだろうな 服従回路を付ければOK
ジロー君もようやく人間になったな
まぁ兄のイチローは元々両親回路が無いから人間だっのだが 448 名前:名無しさん@そうだ登録へいこう [sage] :2017/03/22(水) 23:56:08.07 ID:3lwhAhjg0
>>434
見られない人の為に求人票取って来ました・・・・・
http://imepic.jp/20170322/857110
http://imepic.jp/20170322/857080 HDLで浮動小数点使う分野ってどんなん?
CPU/MPU/FPU/GPU以外で。 あんまり言っちゃいけないのかもしれないけど、
振動の分析、制御をするような用途で使ったよ。 振動を取り込むだけなら、浮動小数点はいらない。分析だったらPCでやるんじゃ
ないだろうか? みたいな疑問。
今やってる仕事とかも、マイコンでやった方が絶対に安上りなんだけど仕事だから
FPGAでやってる。自分の受け持ちだけでも300万だけども、マイコンなら恐らく
30万でも十分できそうだ。アルバイトで10万でやらせてくれないだろうかとふと
思う。 うちも組み込みだけど浮動小数点がっつり使うな
FPGA+DSP+ARM
こんな構成 >振動を取り込むだけなら、浮動小数点はいらない。分析だったらPCでやるんじゃ
>ないだろうか? みたいな疑問。
制御って言ってるんだし、「取り込むだけ」という視点はないな。
分析といっても、制御のための分析なのだとしたらPCを使えないって判断もあるだろね。 金融取引。後fpgaによる数値計算で有名なのは油田探査
要はお金が唸ってるところ >818
油田探査なんて一刻一秒を争うわけでも無かろうに。バッチでも十分間に合う。w >アクティブサスペンション?
メカ系にそんなにスピードはいらんだろ。メカ振動でMhzはないだろ。w とりあえず自分が思いつかない用途に需要がある、ぐらいに思っておいて良いのでは。
誰しも世の中のことを全部納得できるわけでもないんだし。
アマゾンのクラウドサービスでFPGAが使える、って話もありましたね。
何をするのに使うのか、俺の仕事の範囲では現実味が全然ない。 >>819
もう数年前の話だけど、FPGAによる数値計算を
売り物にしてるベンチャーがあって、そこの最大の客が
油田探査会社だと言ってたんだよ。
検索したら、
http://news.mynavi.jp/articles/2010/05/25/flynn_fpga_hpc/
に書いてある。 >822
なるほどね。FPGAの場合同時演算をいくつもできるのでそういう意味では高速化できるんだね。
純粋に演算だけでも最適化するとFPGAの方が速くできるんだね。
参考になった。ありがとう。 正しい例、納得のできる例が出てくるまで納得しないなんて、面倒な議論をふっかける人だな。 研究用途だけどns単位で時間可変可能なディレイタイミング作るのにFPGA使ってるよ。複数同時に出力しなきゃならない。マイコンだとパラにns制御なんて無理だからFPGAでやってる。 文句ばかり言って自分では手を動かさない奴は
何も生み出さないまままま人生を終えればいいんだよ >>827
大学の教授(一部)はまさに口だけな感じだな >>828
当然だが人を動かして事を成してる奴は含まれないぞ >826
そういうんは確かにFPGAしかできないが、あまり汎用的ではないよな。まあ研究所だと
いろいろあるだろうけど。
圧倒的にFPGAが有利な分野ってないんか? 汎用的な用途であれば、専用IC開発されたりマイコン機能として内蔵されるものじゃないの? >圧倒的にFPGAが有利な分野ってないんか?
自分で答えを言ってる。
>あまり汎用的ではない
ただ>>830が勘違いをしているのは、汎用的ではないもの=特殊な用途、だと思ってるところだな。
ソフトウェアの、ファームウェアのプログラムって今の世の中では特殊な用途だけに使われるものではないね。
だけど、出来合いのプログラムでは対処できないから、産業民生趣味の様々な分野で独自にプログラムを組む。
それと同じだと考えればいいと思う。 >832
言わんとすることは解る。FPGAの柔軟性はもちろん素晴らしいと思う。
しかしまだ自分の技術が未熟だからというのもあると思うが、FPGAってマイコンよりも
はるかに時間がかかる。マイコンなら3日で余裕と思っても1週間くらいかかる
こともままあるが、FPGAだと3日くらいと思ったら1か月かかることがしばしばある。
柔軟だと思ってFPGAを選んでしまうとえらい目に合う。確かに柔軟ではあるが
工数が無茶苦茶かかる。
こういう傾向ってない? 自分の場合は大あり。
被害を受けるケースとしては、「ここはマイコンでも可能だが、FPGAでやって
置いた方が客にとっても柔軟性がある。よしFPGAで行こう」
とサービス精神を出したような場合だ。見積もりはマイコンで考えて三日の
費用で出す。ところが実際には納期を遅らせて大目玉を食らってしかも1か月間
もかかって大赤字。 やはりツールがネックになってる気がする。
せっかくの柔軟性がパー。受難性大あり。 見込みより時間がかかってしまうとか、ツールがネックだと感じるとか。
自分でとても的確な答えを言ってる。
>しかしまだ自分の技術が未熟だから マイコンもツールの進歩は長い間停滞していたが、このところ急激に進歩している気がする。
ツールでカバーできるものを技術修練しないといけないというのも辛いな。はんだ付けの自慢
と同じレベル。 これぐらいのハンダ付けはエンジニアなら普通のことだよね、っていう現場のお姉さんの話を
自慢だと感じてしまうのに似ているわけか。
マイコンのツールは簡単だと感じて、FPGAのツールが難しいと感じるのは、ツールの成熟度とは関係なく、
その人が、マイコン向けのセンスを持っていて、FPGAのセンスを持ち合わせていないだけかもしれないよ。
たとえば、オムレツはうまく焼けないけれど、棒高跳びなら県大会上位入賞レベル、みたいな人もいるわけだけど、
みんなにとって、オムレツを焼くことが棒高跳びより難しいわけじゃない。向き不向き。
持ち合わせていないものを使わなければいけないとしたら辛いね。 センスで片付けられるような問題じゃないよ
ソフトウェアプログラミングはパソコンがあれば無料で出来る
マイコンのプログラミングも2000円で出来る
圧倒的に人工が多く、情報も多い
FPGAは?
開発ツールも高いしFPGA自体も高い
人工が少ないので情報も少ない
そもそもFPGAの得意なジャンルが少ない
FPGAを使った趣味の電子工作の作品なんて数えるほどしかない
それこそFPGAを使うこと自体が目的みたいなやつ >>839
えー。開発ツールって無料ので十分楽しめるやん。
小規模なものなら、数100円からあるし、あとの理由も、なんか、できない理由を探しているみたいだよ。
それって、典型的な「不向きな人ができないことに劣等感を持ってる」パターン。
それとさ、随分前から用途とか作例とか聞いている人がいるけれど、その時点で向いていないと俺は思うのだ。
好きならマイコンもFPGAも何かを実現する手段でなくてもいい。それ自体が目的だったりするよ。
マイコンのLチカでも、それで何がおもしろいの? って考える人より、それでワクワクできる人の方が楽しめるもん。
詰将棋ってあるでしょ。あれをやっていたって、なーんも実用的なメリットなんてないけど、それができる人が将棋に向いてる。
ついでいえばトップクラスでもなければ、将棋をやってても実際的なメリットなんてない。
不向きなものが苦手なのは当たり前なんだし、愚痴をこぼすよりも、攻略する楽しみを考えた方がいいのに。
ま、それが難しいのだろけど。 >>839
マイコンなんか誰でも出来るからマイコン出来たってしようがない。もっとレベルの高いFPGAやアナログも判れば重宝されるよ。 そりゃ誰でも出来るような物しか作れないようなのはマイコンだろうがFPGAだろうが回路設計だろうがダメだろう 映像とか高速通信とかパルサーとかFPGA向きな仕事は沢山ある。素人にはむりだけど。 仕事があるのは当たり前だろそりゃ
無かったらデバイス自体無くなってる >>842
「マイコンが出来る」にも様々なレベルがあるけどな
あなたの感覚だと電子工作レベルのマイコンプログラミングができれば
「マイコンが出来る」と言えるのだろうなと予想 >>847
どっちも仕事で使ってるけど。マイコンなんかだれでも出来るでしょ? 自分ができる(と思ってる)ことについて、聞いてもいないのに誰でもできると言ってどやってる奴時々見かけるけど何がしたいのかわからない >>846
マイコンなんて仕事で2年もやればそれなりになるけどFPGAとかアナログ技術者育てるのは大変だよ。 本当に応用範囲が広いなら、8pin数十円ワンチップFPGAとか、スーパーコンピューターのFPGA版のスーパーFPGAなんかがあるはずなんだけど...
無いねwww 誰でも出来るFPGAなんかじゃなくて、ASIC開発すればwww >>850
2年でなんとかなるのって、超小規模のオモチャソフト開発か? >>853
だから認識がそうなんだよ
自分が「できる」つもりになってる井の中の蛙だということを知らない奴 本当にできる奴は不思議と自分ができるとは言わないんだよなぁ ASICに比べたら、
遅い、高い、電力食う、大きい、
ソフトに比べたら、
応用範囲が非常に狭い
隙間デバイスですね
そういう非常に狭い世界でしか威張れない
かわいそうです >そういう非常に狭い世界でしか威張れない
>かわいそうです
威張りたい、いいカッコがしたい。w
しかしまず電気ってとこが圧倒的に不利だよな。メカだと動きが見えるから
見栄えがする。
「こんなに素晴らしいものを作りました」って見せても理解できる人は少ない
からなー。
でも鉄ちゃんとか駅弁マニアよりはFPGAマニアの方がマシだろ。 >マイコンなんか誰でも出来るからマイコン出来たってしようがない。もっとレベルの高いFPGAやアナログも判れば重宝されるよ。
応用分野を考えるとマイコンの方が難しい場合がおおいよ。しかしツールがいいので
開発はやりやすい。
バグ取りでもブレークをおいてすぐ修正できる。適当に作って動かしながらアジャイル
で開発できる。100個くらいのバグならすぐ修正できる。しかしFPGAは実機デバッグで
100個もバグがあると中々終わらん。w >それとさ、随分前から用途とか作例とか聞いている人がいるけれど、その時点で
>向いていないと俺は思うのだ。
お前、FPGA向いてるけど結婚に向いてないぞw。
趣味だけではできんのだよ。飯のタネにするにはどうするか? 用途、作例は重要だよ。
仕事を何とかつくらねばならんからな。 >>861
それ、人に聞いてる時点でダメだろ
なんかボケーッと読んでみたけど酔っぱらいの会話より
つまらん話してるなぁ つまらん話を引き上げて面白い話にできると、頭いいなーって思うけどな。
つまらん話を貶してさらにつまらん話にするのでは、つまらん話をしてる本人と
あんまり変わらんな。w 何かというと直ぐにケチをつける奴って、よっぽど自信があるんだろうな。まあ
自信を持つのは悪いとは言わんが、それに見合うだけの生産的な話もしないとな
ケチをつけるだけでは脳がないとおもうぞ。まあ生産的な話を期待してるわ。 FPGAがぴったりな用途をあげるのも生産的だと思うけどね
なんて頑なに拒むのか意味わからんね
身近な用途が無いからだろうけど インテルですら一般的な使い方を見つけられずにいるよね
ハイエンドパソコンにも積まれない
しょせんはASICを作る前のブレッドボードだよFPGAは >>866
組み込みの仕事でzynq基板作ってるけどlinuxとfpga組み合わせて使うと面白いよ。ネットにも繋がるし。ラズパイにFPGAがついたようなもんだ。ASICは開発しんどいし面白くないからやりたくない。 >>852
半導体メーカーでASIC開発10年やってたけど一生やるもんじゃないね。 そもそもFPGA云々以前に単に見積もりというものを
出来ない人間の愚痴からダラダラ続いてるだけだしなぁ
なんでニッチなデバイスじゃ駄目なのか?
FPGAを何に使うかじゃなくて自分の作りたい物を補完
するのにマッチするのかという考え方が出来ないのか?
FPGAのスレではなくHDLのスレでやる話題なのか? >FPGAがぴったりな用途をあげるのも生産的だと思うけどね
自分で、身近でぴったりな用途のひとつを出してる
>ASICを作る前のブレッドボード
同一人物なのかな。
いつも自分で的確な答えを見つけているのにそれに気づいていない。
おかしな人だ。 >>868
>全く面白さが伝わってこない
そりゃ、面白くない人には面白くないよ。他人が観て面白い映画が自分にとって必ずしも面白いものではないのと同じ。
ただ、なにごとも他人から見て地味で面白そうでないものを面白いと思える人は、より積極的に学習しやすいってことはあると思います。そのあたりから差がつくね。
マイコンの方が簡単だ、って言ってる人も、他人から見て何が面白いの? みたいなプログラミングや用途、テーマを面白いと思って取り組んだはずです。
>>872
>FPGAのスレではなくHDLのスレでやる話題なのか?
ソフトウェアのプログラミング言語には馴染めたけれど、HDLには馴染めなかった人だと思う。
自分が馴染めないものは、難しいものであって、価値がないものだと考えることで、幸せになれるとでも思っているんだろうなあ。
目を瞑っているだけなのに。それにちっぽけな人間だもの、何から何まで守備範囲にすることなんて無理ってことを受け入れることも必要なのにな。 >>874
自分が出来ることについては、それが出来ない他人をバカにし、逆に自分が出来ないことは、それが出来たところで大したことないとやはりバカにする
そういう奴が実際にいるよな
人間性が残念だわ > 人間性が残念だわ
こんなことよく平気で言えるな >組み込みの仕事でzynq基板作ってるけどlinuxとfpga組み合わせて使うと面白いよ。
これは狙い目だというの分かってるんだがLinuxがハードルが高いw
WinじゃなしにLinuxやっておけばよかったよ。いきなり仕事を取るのは怖いし
Beagleやラズパイでチョコチョコとは遊んでるんだが、なかなか難しいよ。
要するにFPGAだけでは仕事の範囲が限られてくる。Linuxと合体すればそこら中の
あらゆる仕事をゴッソリ取れる。しかし、取ったはいいがFPGAで納期見積もりを
失敗した上にLinuxでもまた失敗となると、泣きっつらに蜂。 >半導体メーカーでASIC開発10年やってたけど一生やるもんじゃないね。
心臓に悪いよな。1億くらいをお釈迦にしても平然と弁当が食えるくらいに
面の皮が厚くないと無理だよ。ASICをやると痩せるぜよ。きっと。
俺はやったことないが。 個人事業者なのか?
なんか書き込み見てると随分と稚拙な感じがするし
経験積んだ技術者には見えない
というか個人的な愚痴はtwitterでやってくれ 精神的に開放されていないと知性も働かないだろう。
狭量だと技術もまた矮小になる。もう少し大らかになると頭も良くなるぞ。 >要するにFPGAだけでは仕事の範囲が限られてくる。Linuxと合体すればそこら中の
>あらゆる仕事をゴッソリ取れる。しかし、取ったはいいがFPGAで納期見積もりを
>失敗した上にLinuxでもまた失敗となると、泣きっつらに蜂。
つまり、この人は「能力的に問題がある」と言ってるわけだけど、本人としては解決方法は考えているんだよな。
>狭量だと技術もまた矮小になる。もう少し大らかになると頭も良くなる
自分の問題を掲げておいて、直後に自分なりの答えを書いている。 応用範囲が狭くなるのは開発コストや単価が上がるからで、デバイス自体の柔軟性
は非常に高いので、ネックとなる開発コストを抑えて適切な市場を見つけることが
出来れば問題は無くなる。
利益が見込まれるなら、便利な開発ルールなども導入できるので好循環が生まれる。
しかし現状は関連する仕事があまりないので年に一回程度しか使わない。こういう
状況だとなかなか上達もしない。3か月みっちり使ってかなり上達したのにまた忘却
サイクルに入っていく。
アッ、でも今回は予定よりもはるかに長いので技術も上達しつつある。長い目で
見ると酷いトラブルは世界を広げたり、技術の上達には良い結果をもたらすので
はあるまいか。
それにも増して何よりも大事な「謙虚」というものを学ぶことになる。
>881
少し冒険をして、難度の高いものをやれば、どんなに優秀な技術をもってしても
きっとトラブルと思う。そうすると知性と謙虚さを学ぶことができる。と思う。 FPGAでCPU作ろうとしてるんだけど、どれ買えばいいのかわからない 今からFPGA勉強して参入出来そうな市場ってあるの? >>883
まだまだ「謙虚」が足りないように見える 本当にいろんな事がよくできる人って不思議と謙虚な人が多いよね
なんでだろう プロ野球で代打要員の選手が、
「打席に入るのはせいぜい1試合に1回。あとはバットを握ることはもちろん、他のトレーニングもしないので衰える一方」
なんて言ってたらそりゃ仕事は減りますよね。 出来ない理由探しにしか見えないからなぁ。
Zynqに興味があるなら、何か適当なペリフェラルでも
自分で作ってみればいいし、Linuxが嫌ならFreeRTOSが
オフィシャルにあるんだから、それ使えばいいし。
話の流れに出て来た人ってさっさと手を動かしてる人だよ。
口というか愚痴ばかりで駄目エンジニアの典型にしか見えない。 >>885
別の人も書いてるけどDE0-CVがお手軽。
でもCPU作るならFPGAで作る前に、簡単なエミュレータを作ってサイクルとかを設計した方がいいよ。いきなりは作れないから。 8080でもエミュを作れれば問題解決能力が
桁違い、それも3桁以上になるだろう。
給金は伸びないけど。 $119 15K DE0
$150 49K DE0-CV
$85 50K DE10-Lite
コスパなら、DE10-Lite だな でもクソ頑固な方はハマれば最高だが
聞く耳を持たず自分が誰よりも正しいと思ってるから伸び代も少ない 段階を丁寧に追っていかないとマスターできないという人は理系の仕事には
あまり向かない。始めてチューリングマシンのアイデアに触れただけで、コンピュータ
の全体的イメージが出来上がる位の想像力は必要だ。
LEDチカチカができれば、「ヨッシャー、これで何でもできる。」と思える位の大胆さ
は持ち合わせていてほしい。
とは言えそうは問屋がおろさない。想像力があることと実際にそこに到達する
ことができることとはかなり違ってくる。
到達するには「クソ頑固」が必要になる。一人で二つの性格を合わせ持つのは難しい。
しかし性格の反対のものが二人いて協力すれば簡単に到達できる。
>口というか愚痴ばかりで駄目エンジニアの典型にしか見えない。
これはクソ頑固な人から見た柔らか頭の持ち主の典型的イメージだ。職場にも
そういう人を見つけてたら是非とも協力するということを思いつくと素晴らしい
ことが起こると思う。 自分だけは常に誰よりも正しいという前提
に立ってる人っているよね
端的に言えば傲慢な人 verilogで、
reg [7:0] retsu [0:5] [0:6];
みたいに定義する配列って、
同一モジュール内でしか使えないですか?
下位モジュールに渡そうとしたら、
下位モジュールのinputの定義でエラーが出てしまうので、
どうなのかと思っているのですが。 >905
もっと簡単なことでもエラーを出さずに誤動作するので、エラー警告を出しただけ
でも驚きだが、そういうことはやらない方が良いと思う。 あーあローンの返済後とかロンリーガールとか金持ちの庭とシマウマとかから解らなくして安城と刈谷で電車で死亡事故があったー!辞めろ風評被害!レジェンドこじきのイカロスになるしかない人たちがー!スラムダンク!
安部マリーオ! >>906
自分がイメージしやすいように、
8bitデータの二次元配列で扱いたかったんですが、
出来ないものはしょうがないですね。
ありがとうございます。 馬鹿だねー出てけーそうなるしかないのにねー顔パス?こじきにするよ always @(posedge gclk or posedge reset)
if(reset)
fset_q <= 24'h0;
else
if (ena | wr3)
fset_q <= fset_d;
この回路でリセット省略して初期値を入れて処理するとロジックに反映するという記述
があった。以下のように修正したみた。
reg [31:0] fset_q = 0;
always @(posedge gclk)
if (ena | wr3)
fset_q <= fset_d;
しかし実際にポストフィッティングを見るとリセットは入っていない。これは電源ON
で自動的にリセットを入れるから省略されているだけで、もしリセットしないレジスター
ではリセット回路が入ると考えていいのだろうか? >>905
Verilogでは配列のポートは不可能
SystemVerilogなら可能 >>912
FPGAならコンフィグで初期値が書き込まれる
ソースにないリセットは合成されない >914
コンフィグで初期化されるのか。
チョと不安がよぎるけれども考えてみたらそれで十分だね。いままでmodelsim
でのRTLシミュレーションの為にリセットを必ず入れていたが、変数を初期化して
おけば必要ないな。
寧ろ積極的にリセット部分は除くほうが方がベターだね。特に同期リセットを
入れるとかなり回路が複雑になる。
それにソースもリセットがないとシンプルで見やすくなる。
リセットは邪魔だね。変数の初期化でやってしまうべきだろうね。 ISPD Predicts Chip Futures
Machine Learning to Determine Architectures
http://www.eetimes.com/document.asp?doc_id=1331563& リセットSWの無いパソコン、電源ON/OFF するしかない
まぁ、確かに そういう物も存在したような気がする >918
リセットを設けるならコンフィグからかければいいのではないかな? 数ミリセカンド?で
リセットできるのだからね。
リセットが必要なのは誤動作した場合だが、その場合はロジックのバグなどの誤動作というより
は電気的な誤動作と考えた方がいい。そうかんがえるならコンフィグをしないとRAMベースの
FPGAの場合はRAM内のロジックが飛んでる場合もあるからね。
どのみちコンフィグのリセットをするんなら内部のレジスタリセットはいらない。
無用の長物だ。 1.PoweronReset 電源を落とす。
2.config reset ローディング時間がすこしかかる
3.register reset グローバルリセット
4.Logical reset これは適宜必要に応じていれる
3は
reg buf = 0;
とする。if(reset)はすべて省略、一切いれない。外部SWでグローバル
リセットするような場合は2のconfigresetで行う。
4のロジカルリセットはこれは必要なロジックがあれば当然つける。
てことね。 >>921
そう書くなら、どのあたりがどんなふうに戯言なのか書くべきだと思うんだ。
それを避けてるでしょ。誰かが具体的に言って、些細なことでグダグダになるのを高みの見物でもするつもりっすか?
あえて言うけど、ずるい。 2chの書き込みを裏をとらずにそのまま信じるアホはさすがにいないかと >922
前例がないので反発があるのは当然だ。
★最近のFPGAではグローバルリセットは無用
これはかなり大胆な意見だと思う。どこの教科書にもリセットが入っているし、こんなことを
いう人の前例がない。
しかし正しい選択だと確信している。意見のある人は言ってくれれば答える。 正しいと確信してるなら他の人に意見を聞くな
確信してないから意見を求めてるんだろ? 前例がないことに対しては誰も慎重になる。そのことを真剣に考えてみるということは
めんどうだ。考えることよりも学びを主体にした知識習得をしていると、誰もが正しいと
言っていることは、敢て反発するのは怖いものだ。
しかしベテランというポジションにいる人は、何か一言わざるをえない。そうしないと
示しがつかないからだ。
それが苦言。まあ稀に正しいこともあるが間違っていることも多い。 製品開発だと不要なリスクをわざわざ負う必要が無いっていう意見が重視される
前例の有無はそれはそれで意味がある
いろいろな評価が通ってることがわかってるわけで
リスクがあっても何も問題が無い用途でやってねって感じ
趣味ならどうぞどうぞ
そうじゃなきゃこんなところで同意を求めてないで評価、検証 >正しいと確信してるなら他の人に意見を聞くな確信してないから意見を求めてるんだろ?
あなたの言葉にはこの問題にたいする断定的な言葉がない。この問題をはぐらかした
意見でしかない。良識的意見のようであって、実は問題とは関係ない。
この問題が正しくても間違っていてもあなたは被害をこうむらないように逃げ道が
用意されている。
そんなにビビらなくても、正しいのか間違っているのか。その意見を言えばいい
と思う。 検証しないで正しいとか正しくないとか無責任なことは言わない >>921
赤いIDは戯言率高し。俺は小ズルいのさ。
ID:76ccvaD/
ID:/f9oldZT
ID:crzqUro7
ID:TcShF5sa
ID:G/ANrYqO
ID:m3kX9Ato 別に間違ってないと思うよ。
ただ、グローバルにしてもモジュール単位にしてもリセットがあったほうがデバッグしやすい場合はあるね。 あと、今はリセットを要求されていない仕様で問題ないかもしれないけど、別の設計でリセットが必要な仕様のときにモジュールの再利用がしにくくなるかもね。 最近猫にどう芸を仕込んだらいいのかとかなりトライしてきたので、頭の固い人を
相手にしても感情的にならないで優しく見れるようになってきた。どうやって教えたら
いいんだろうとは思うが、噛みついてきても怒りにはならない。
寧ろ可愛い。 >正しいと確信してるなら他の人に意見を聞くな
正しさには多様性があるから、他の正しさを聞いたり、他の価値観に照らしてみるという作業は必要だと思うんだが。
>>933-934 が実際的で、俺は同意できるな。
>>935
猫はモフモフしていて良い匂いだから。 >>919
FPGAでかいと100ms以上かかるし、バスの仕様によっては1ms以内に動作しないとならない場合もあるよ。 >937
100msecはキツイな。しかし暴走したんだからやむえない。リセットかける以外に
方法はない。暴走以外で手動リセットがひつようになるケースはないのでは?
しかしバスの仕様でという場合には、ロジカルなリセットでないとだめではないの?
つまり初期化とは別に、ロジカルにリセットを用意しておかなくてはだめでしょ。 どういう意味かよくわからないけど、バスの仕様を満たせるならロジカルだろうとグローバルだろうと非同期だろうと同期だろうと好きなリセットにしたらいいと思うよ。
そういったリセットを無しにしてFPGAの初期化の機能だけ使えばリソースを減らせる、という話ではないの? >933
デバッグかー。一括リセットしたいという場合はあるかもしれないね。自分の場合は
モジュールが小さいので、それが必要なケースに出会ったことはないが、、、
そういう場合にはテストベンチでなにか工夫はできないのだろうか?
ソースにくどくどとif(reset)をいれる理由にするには、自分としてはすこし弱い気
がする。
リセットを無くせばかなりスッキリする。特にRTLビューワで見た時にスッキリと
なるのでドキュメントに貼り付ける時に非常にわかりやすい。 >そういったリセットを無しにしてFPGAの初期化の機能だけ使えばリソースを
>減らせる、という話ではないの?
そうではないよ。
初期化リセット以外ではリセットが必要のないレジスタであってもリセットを
いれているというケースです。 >あと、今はリセットを要求されていない仕様で問題ないかもしれないけど、別の設計で>リセットが必要な仕様のときにモジュールの再利用がしにくくなるかもね。
客先から「リセットを入れよ」という仕様になっていれば仕方ないね。
でも「つべこべいうな。何が何でもどうしてもリセットを入れよ。リセットがないと
検収を上げん。」という頭の悪い客の場合はしかたないけれども、このデバイスでは
リセットは不要で、入れない方がいいですといえば普通は納得してもらえるのでは
ないだろうか?
そういうことは別にして、実際にリセットが必要な仕様というのはあると思う?
所謂、初期化リセット、グローバルリセットのことだけど。
つまりconfigでリセットをかけることができるのに、それとは別に初期化リセットが
必要な回路って殆どないと思う。
もちろんロジック的に同期リセットが必要になるというのは普通にあるけど、それを
グローバルリセットで代用するってことはないんので、これはリセットを省略する
ことは元々できない。 コンフィグ時間が問題になるときとか、リセット中のFPGAのピンの状態を確定させたいときかな。
その辺の問題がなければリセットピン無しにすればFPGAのピンを1本節約できるね。
ただそういう目的と記述中にリセット記述をしないこととは別問題だとは思うけど。 >コンフィグ時間が問題になるときとか、リセット中のFPGAのピンの状態を確定させたいときかな。
それはおかしい。Config中でもHZで確定してるし必要ならPULLして確定しなくてはいけない。
逆にリセット時の出力確定とConfigの確定は一致しておかないとまずいでしょ。イニシャルリセットだよ。
暴走したらConfigするしかないので、Config時間が問題になるような設計ではいけないということになるね。 例えばFPGAにつないでいるデバイスがリセット解除時にクロックが必要だとか、ポートのHigh/Lowを指定してくるだとかはよくあると思うけど。
もちろんFPGA側でそのデバイスのリセットが握れるなら問題ないけど、そうでない場合もあるでしょ。
>>暴走したらConfigするしかないので、Config時間が問題になるような設計ではいけないということになるね。
そもそも暴走するような設計にしたらあかんでしょw 非同期問題を甘く見てる この手ヤツは、いずれ会社に億単位の損害を与えるから そのに時体でわかるよ
理解できた時は既に手遅れだけどな、一生忘れられない経験になる >>925
>暴走するような設計にしたらあかんでしょw
「Configしなおさないとリカバリできない暴走」を回避する設計ってどんなのでしょうか。
静電気のアタックや電源瞬断、雷サージなどに対する堅ろう性とか? 「Configしなおさないとリカバリできない暴走」があるとしたら放射線によるソフトエラーとかですかね?
私はそんな状態になったのを見たことありませんけど…
そもそもなぜ >>938 から暴走した時の話が出てきたのか私にもわからないけど… >私はそんな状態になったのを見たことありませんけど…
自分もだけど、リセットなんて使うことがない。でもリセットしたい場合もある。
そのときはConfigでいいのではないかって話。コンフィグなら reg buf = 0;で簡単に
リセットできる、リソースも全く消費しない。回路もシンプルになる。
話がかみ合ってないのだろうか?
なぜわからないのかわからない。
リセットが必要なケースはどんなケースがあるのかだよね。 マニュアルSW
1.PoweronReset 電源を落とす。
2.config reset ローディング時間がすこしかかる マニュアルSW
3.register reset グローバルリセット マニュアルSW
4.Logical reset これは適宜必要に応じていれる
これ以外にはないでしょう。
4は省略できないから問題外だよね。
3は不要で2で代用できるはずというのが自分の考え。
3が必要な例として
デバッグでリセットを使いたい。 これは大規模な場合はあり得るかも
小規模ならリスタートでいい。
他に3のケースがあるんだろうか? ないなら2のコンフィグでリセット代用で
いいのではないか? むしろそうすべきだと思う。 確かにかみ合ってないのかも
3, 4の違いというか定義が良くわからない。
3はすべてのレジスタに一本のリセット信号線で入れる非同期リセットみたいなもの?
4はモジュール単位のリセット信号とか? 例えばカウンターとかシーケンサーの記述でリセット記述はせず、レジスタ初期値だけ記述する。
リセットしたくなったらコンフィグからやり直せばいい、という意見だよね。
せっかくFPGAの機能としてあるんだからそれをうまく使えばいい、というのは私も賛成です。
ただ、>>943 のような理由からリセットが必要な場合も多々あって、常にリセットなしでというのは無理がある、または非合理的だし、ソースの再利用を考えるならリセット記述をしておいたほうがいいかもしれない、と言いたいわけです。 実際リセットをレジスタ初期値に置き換えたらどの程度使用リソースが減るんだろう。
XかAか同期か非同期かにもよるんだろうけど… 既に使用デバイスが決まっているなら、使用率の減少は絶対的な価値ではない。
検討段階でデバイスをワンランク落とせるなら、それは価値のある事。
でも本当の動機はソース記述量を一行でも減らして、ソースを書く時間を
節約したいという事だろ。そうすれば、ASIC化の可能性も潰せるし、
何より楽ができる。 >そうすれば、ASIC化の可能性も潰せるし
この話題とどういう関係があるのだっけ。
それに、ASIC化の可能性をなくすことってメリットあるの? >945
精神的メリット。resetがないならAsicは無理。w >ただ、>>943 のような理由からリセットが必要な場合も多々あって、
>常にリセットなしでというのは無理がある、または非合理的だし、ソース
>の再利用を考えるならリセット記述をしておいたほうがいいかもしれない
何故無理があるのかという例が一つでもあれば納得できるが、一例もないのに
意味があるとは思えない。
943については944で反論した。943の例は根拠がないと思う。
>常にリセットなしでというのは無理がある
なぜ?
>非合理的だし
なぜ?
>ソースの再利用を考えるなら
なぜ?
グローバルリセットが必要なロジックがそもそもないのに再利用でも必要ない。
たとえば「PLDにもっていくなら必要だ」「AISCに持っていくときには必要だ。」
というのであれば納得できる。そういう必要になるケースはもちろんあると思う。
デバイスが変わればそもそもソースをコンパチで使えるということはないので、
ロジックは再検討するのが普通だ。無条件に付けているリセットを省略している
だけだから、再度追加しなおすことにコストはかからない。
そのためだけに再利用を意識する必要はないと思う。
そういう場合には、マクロを作って自動的に全部のalwaysに追加したらいい。
リセットの削除の意味は「自動的に削除できるものを削除すべきだ」というのと同じだ
から、必要な時には「自動的に追加したらいい」それだけだと思う。 再利用という意味では、IPがある。リセットのないIPが売れるんか?
IPにはresetが付いていてほしいかも、と自問してみた。
暫く悩んだが、やっぱりいらないと結論した。 >精神的メリット。resetがないならAsicは無理。w
ASIC化できることの方がメリットあると思うんだが。 reset も clock もなければないほうがいいよね。 >>956
その前に >>949 の3と4の定義を教えてよ。 自分だけは誰よりも正しいという前提
自分だけはバカじゃないという前提
自分だけは能ある鷹であるという前提 そういえばCycloneはFFの初期値は0にしか設定できないって話があったような。
単ビットであれば1に設定してもコンパイラがうまいことやってくれそうだけど、カウンタやシーケンサの初期値を0以外にした場合はどうなるんだろ。
今度試してみるか… >958
やっとこさでFPGA完成させたのに、それをまたASICにするのは仕事が増えて大変と思う
人だけの話。
「ASICは無理、出来ません。resetがついてないので、、、」
と過剰な仕事を逃げることができる。
「じゃあリセットをつけなさい」
「わかりました。3か月ほどかかります」ということで、納期が稼げる。実際には
マクロで3分で変更できるから、3か月ほどFPGAで遊べる。 >958
やっとこさでFPGA完成させたのに、それをまたASICにするのは仕事が増えて大変と思う
人だけの話。
「ASICは無理、出来ません。resetがついてないので、、、」
と過剰な仕事を逃げることができる。
「じゃあリセットをつけなさい」
「わかりました。3か月ほどかかります」ということで、納期が稼げる。実際には
マクロで3分で変更できるから、3か月ほどFPGAで遊べる。
>960
3は普通のリセット、reg aa=0と書いておけば配線を省略できるリセット
4は省略できないリセット たとえば1msec間反応が無かったらカウンタを0にしなければ
ならないというようなリセット。 >reset も clock もなければないほうがいいよね。
それを言い出すとverilogからは足を洗うことになる。
リセットがないだけでもかなりスッキリする。Verilogが好きになりそう。
慎重に記憶をたどってみても今まで一度も、ただの一度もリセットを使ったことがない。
それなのに、modelsimが真っ赤になるので只管リセット回路を書いていた。
なぜこんな大事なことに気が付かなかったんだろう。w 該当FFに入出力にInverterを入れてたな、確か 面白いのは、非同期 set/rst 付きのFFを合成させた場合
トランス・ペアレントLATCH + XOR の追加で逃げてる
Warnnig 出るから、何だろうと思って追ってみたら
自ら合成した箇所で、Warnnig 出してたな >「ASICは無理、出来ません。resetがついてないので、、、」
んー。俺のお得意さんにこんなことを言ったら「重大な瑕疵」って言われそうだ。 ループの回数の上限ってなにで決まるんですか?
ループが多すぎるってシンセサイズのエラーが出ました。 ふむ。
>3か月ほどかかります」ということで、納期が稼げる。実際にはマクロで3分で変更できるから
この「3分」という見積もりがいつも外れて3カ月4カ月かかるようだと、
「あらゆる仕事をゴッソリ取れる。しかし、取ったはいいがFPGAで納期見積もりを 失敗した上に…」と愚痴りたくなるだろな。 >>970
お前みたいな害虫に当たらないことを願うばかりだ >974
恐れている者のところに弾は飛んでいく。よろしこ! >973
急がば回れ。見積もり失敗は成功の母。そのうちガッポリ取り返す。 >んー。俺のお得意さんにこんなことを言ったら「重大な瑕疵」って言われそうだ。
ケツのアナの小さい害虫にはケツのアナの小さい客。類は友を呼ぶ。 >仕事舐めてんなてめぇ
仕事は呑んでかかる。くってかかるの下等。
しかし舐めてかかると痛い目に合うのがFPGA。 誠意を込めてレスしたいのだが、返信の難しいレスが多いな。 >>964
>4は省略できないリセット たとえば1msec間反応が無かったらカウンタを0にしなければならないというようなリセット。
ああ、勘違いしているのね。
相手のデバイスからリセットが来て、解除されたあと1ms以内に相手が通信を始める。
その場合にリセットをコンフィグにしていると、例えばコンフィグに10msかかると相手のデバイスは通信できないでしょ。
>>956
>デバイスが変わればそもそもソースをコンパチで使えるということはないので、
デバイス固有の機能を使っていなければそのまま使えるよ。
固有の機能を使っていても同じデバイスや同じシリーズならそのまま使えることが多いし。
>>966
カウンタなんかでもFFの前後にNotでいいのか。なるほど。
試さんですんだ。THX。 >981
それは勘ちがいだな。
4はConfigしてはいけないリセットだから、、、
4は配線を省略できないリセット
たとえば1msec間反応が無かったらカウンタを0にしなければ ならないというようなリセット。だからConfigで代用はできない。だから最初から4は問題外としている。
4はグローバルリセットしてはいけないもの。だから当然Configで代用はできないもの。 >>982
グローバルかどうかはこの際あまり関係なくて要するにリセットが省略できないケースがあるということ。
今回はコンフィグ時間問題ならないからということで全部リセット省略して作った後に、次の設計でリセットが必要で以前作ったリセットなしのモジュールを使おうとしてもそのままでは使えない、となる可能性があるよ。
マクロ作戦はありかもしれないが、相当そのマクロに自信がないと、結局マクロが意図通り働いているか確認して回ることになる。
QuartusではFFはリセット値でPower upするらしいから、原理的にはリセット記述をしておいてリセットのポートをネゲートしておけばコンフィグ後正しく動作することになるのかなぁ。
んーでもようやらんなぁ。 >グローバルかどうかはこの際あまり関係なくて要するにリセットが省略できないケースがあるということ。
>今回はコンフィグ時間問題ならないからということで全部リセット省略して作った後に、次の設計でリセット
>が必要で以前作ったリセットなしのモジュールを使おうとしてもそのままでは使えない、となる可能性があるよ。
ないとおもうよ。
リセットの種別を分類して話をしないと混乱するよ。あなたは全部をひっくるめてリセットという言葉でいうので
混乱してると思うよ。
2のリセットなのか3のリセットなのか4のリセットなのかを区別して、書いてごらんよ。
2のリセットと4のリセットが問題外というのは分るよね。
話の内容からして3のタイプのリセットと4のタイプのリセットが混乱してるのではない?
1. 4のリセットは3のリセットでは代用できない。だから省略も変更もできない。
2. 3のリセットは2のリセットで代用できる。
この2点の意味がわかる?
だから反対意見を言うなら、2の判例を出さないと駄目でしょ。1例でいいので例を挙げないとだめですよ。 3と4は記述としては全く同じじゃない?
違うなら実際のコードで例を出してほしい。 1.マイコンとFPGAつなぐからFPGAよろしく。通信はSPI。電源ONのあと1秒後に動くよ。
2.よーし。SPIの通信モジュールリセットなしで作っちゃうぞ〜
3.動作も良好。完了!
4.1か月後、新プロジェクト。
5.マイコンとFPGAつなぐからFPGAよろしく。通信はSPI。リセット解除後1msで動くよ。リセットはマイコンが好きに動かすよ。前作ったからすぐできるよね?
6.リセットないΣ(゚Д゚|||)…
これでOK?
SPIくらいならどうということないけどでかいモジュールだと困るでしょ。 敢てそういう例を挙げるのであれば、そのタイプが4タイプのリセットってこと
だけどね。つまり避けられないリセット。
受注してやる場合にモジュール単位で受注する業態ならそういうことはあるかも
しれないね。
でもシステムとかボード単位だとないでしょ。電源ONした後でリセットが必要な
ケースはまずないね。
でかいモジュールをマイコンでドンドンリセットするなんてことはありえない。
それが急に仕様的に1msecになるなんてないよ。リセットが常時必要なら仕様の中に
リセットが入ってる。
それはリセットという名をつけてもコマンドだよ。つまりリセットコマンドだね。
3のリセットというのは緊急回復とか異常回復しょりだよ。それをマイコンのポート
に繋いで常時頻繁にON/OFFするなんてことはしてはならないでしょ。それをやりたい
ならコマンドにしなくてはいけない。
それにSPIにリセットいる? いらないでしょ。SPIにリセットなんか付けたことない。 例えばパソコンを再起動したら各デバイスやバスにリセットがかかるよ。
いつリセットが来るかなんて教えてくれない。
もちろんリセットボタンを押してもリセットがかかる。
通信プロトコルの途中ならリセットしないとリセット後の通信が正しく確立しないし、デバイスの内部状態だってリセットせずに前の状態のままだと困るでしょ。
なぜ自信満々でないと言い切れるのか不思議だ。
まあ、趣味でやっているのだろうから好きに作ったらいいけど。 んー。
ID:CvKg6enZ はその経験の中でそれで十分だと考えていて
ID:QyR6HXT9 はそれでは十分ではないと言ってるのだよな。
たいていの場合、何かを狭くして「十分」というときには何かが欠けてしまっている。
その欠けているものが重大なものなのか取るに足らないものなのかの判断は主観に依存することが多いと思う。
ID:QyR6HXT9 が、ID:CvKg6enZ を説き伏せることはムリだろし、価値観を共有できない人に、ID:CvKg6enZ が
自分の信じるものを納得させるのもムリ。
仕事だったら、お客さんか上司の判断を仰ぐとかしないといけないし、そういう第三者がいないプロジェクトで
同僚とこんなやりとりになったら、すげえ面倒だ。(あ。嫌なことを思い出した。ヤレヤレ)
この話題は ID:CvKg6enZ が広場の中心でマイクを持って主張を始めたところに、とおりがかった ID:QyR6HXT9 が
それはどうなん?って感じで声をかけたようなものだと思う。どこぞの政治家の演説に論戦をふっかけたって、
その政治家の意見はかわらん。適当なところで、ID:QyR6HXT9 は引いた方が良いと思う。 >例えばパソコンを再起動したら各デバイスやバスにリセットがかかるよ。
>いつリセットが来るかなんて教えてくれない。
>もちろんリセットボタンを押してもリセットがかかる。
Config resetで問題ないと思うが、、、パソコンの立ち上がるまでに腐るほど
時間がある。
>通信プロトコルの途中ならリセットしないとリセット後の通信が正しく確立しないし、
そういうある意味不完全なモジュールは当然リセットが必要だね。
イニシャル以前にしばしばハングとかあるのでしょう。
プロトコル中断は基本的にはタイムアウトで自動リセットするから自分の場合は
ハングなんかさせない。
ウオッチドグも入ってる。そこそこ完全なシステムを作っておけばいらないとおもうよ。
>デバイスの内部状態だってリセットせずに前の状態のままだと困るでしょ。
困る場合はリセットを入れる。しかし殆どこまらないのではないかな。
最悪困った時はConfigリセットでいい。 >その政治家の意見はかわらん。適当なところで、ID:QyR6HXT9 は引いた方が良いと思う。
政治とは違うよ。できない例が一つでもあれば終わりだからね。その例をだせれば
其のときは君の勝。 打ち負かしたら気分が最高になると思う。
かなり有利な立ち位置にあるのに、すこしは考えてみてよ。 なぜパソコンリセットの例がでるんだろ。
ろくに考えもせずにリセットは絶対に必要だと思い込んでるのではない?
それとも勘ちがいしてるのかな? Configで代用するというのは理解してるよね。
もんだいは一寸時間がかかるってことくらいだから、パソコンリセットとの同期を
例にするのが意味不明だ。 >Config resetで問題ないと思うが、、、パソコンの立ち上がるまでに腐るほど時間がある。
操作できるようになるまでは時間がかかるけど、リセット解除後かなり早い段階からBIOSがどんなデバイスがいるか見に来るのよ。
>その政治家の意見はかわらん。適当なところで、ID:QyR6HXT9 は引いた方が良いと思う。
そうだね、この辺にしとくよ。
うーん、自分で手を動かして、既存の考えにとらわれず新しい方法を検討する姿勢は素晴らしいと思うんだけどね… >操作できるようになるまでは時間がかかるけど、リセット解除後かなり早い段階からBIO>Sがどんなデバイスがいるか見に来るのよ。
ああ、そういうレベルのボードをイメージしていたのか。PCIとかね。
それならわかる。そういう場合はConfigで代用は無理かもね。
確かにそういう美味しいボードばかりを作っているとそう思うかもしれないな。
まあ有意義でした。これでお開きってことに。
総括:美味しいボード リセット入れること
普通のボード リセット不要 怠け者が本質なのに、真っ赤になって駄文繰り返すとか変な所で勤勉なんだな。
勤勉な馬鹿。 しかし、熟練技術者の先輩に苦言をいうのははばかられるが、そういう一言は飲み込んで
ぐっとこらえると部下が伸びる。特にお調子者の部下の場合はさりげなく褒めると伸びる。
もう技術者としては歳だろうから建設的な提案を出すのは難しいとは思うが、そういう
場合にも若い者の意見を理解するように努めないといけない。これはやはり質問の発し方
が重要だと思う。
意見の意味する本質を引き出すような適切な質問をすると部下も非常に喜ぶ。感情的に
食ってかかるというのが一番いけない。それよりもさらに悪いのは意味もなく只管貶すこと。
部下も伸びないし、自分も伸びない。それでなくても年を取ると段々頭が固くなるのに
それを加速するようなことをしてはいけない。
と思います。 ○ FPGAでは非同期リセット不要。
○ 完全同期回路仕様推奨。非同期動作の完全撤廃。
○ Config終了時の初期値定義を推奨。
これらは別に新しい意見じゃなくて、FPGAベンダーのポジショントーク。
彼らはFPGAが売れればいいからASIC展開とか要求としての非同期は考慮しない。 >>998
オレサマはASIC設計だから、FPGAで動かすにしても非同期リセットですがなにか? リセット入れて下さいと仕様書にもかいてあるのに、
リセットが入れない設計と実装をする技術者なんか、
取り替えればいいだけだろ。 このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 246日 10時間 44分 8秒 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。