【Verilog】 記述言語で論理設計Project11 【VHDL】
1 名前:774ワット発電中さん[sage] 投稿日:2010/09/17(金) 00:52:23 ID:32avVtN9
HDLの処理系も、それを実際に動かすシミュレータ・評価基板も、
安価で入手できるようになってきました。
このスレが目に入ったおまえ! HDLで何か作って遊んでみませんか。
日曜工作のHDL書き、学生さん、プロの方、主婦の方、カキコお待ちしており
ます。
関連情報は >2-10 あたり。
前スレ
【Verilog】 記述言語で論理設計Project10 【VHDL】
http://kamome.2ch.net/test/read.cgi/denki/1284652343/
リンク切れが多かったので、ついでにテンプレ見直しました
解説記事は別にテンプレに入れる必要ないかなーとは思ったけど、面倒なので直してません
前スレ後半でやるおと学ぶVerilogをテンプレに入れようみたいな感じの議論があったので、反映しておきました
>>1でコピーミスっちゃったので、次スレあたりで直してくださいな
新スレおめでとうございます
5 :
774ワット発電中さん:2011/12/13(火) 09:09:42.14 ID:GRD2quO0
教えてください。
FPGAで、LPFが作りたいです。
1次ではなく4次が作りたいです。
FPGAには、アメリカのザイリンクスというメーカーの
スパルタン6を使います。
このときの手法は、FIRかIIIRしかないのでしょうか?
また、FIRやIIRでは、積和のためにDSPブロックが必要ですが、
DSPブロックなしでFIRやIIRはできないのでしょうか?
IIIRなんて知らないけど、
FIRとIIRしかないかって言われると、
どっちかに分類できるからな。
日本語で考えてみたら?
DSPブロックなしでもできるよ。
でなきゃ、他のFPGAやASICで作れないだろ。
ロジックで加算器や乗算器作ってる人はもういないのか…(遠い目)
ブースの乗算器とか作っても、合成ツールのほうが賢いもんね。
まるで大学生が宿題か卒業研究の答えを探しているみたいだね
LPFなら加算して右シフトすればいいじゃない
何それ?移動平均のこと?
FPGAではFFTして要らない成分をカットして元に戻すってのが普通だよな
>>5 Sliding FFTでがんばれ
14 :
774ワット発電中さん:2011/12/17(土) 02:14:23.12 ID:FkKumWBd
Verilog−Aでオン抵抗を考慮しないスイッチをつくりたいのですが
どのようにして記述すればよいのでしょうか?
ちなみにここでいうスイッチはMOSスイッチをモデリングしたものです
Verilogでこういう表記はNGなんでしょうか?
CASE分の項目が多いのでfor分で記述したいです。
下では4項目ですが実際は32項目あります。
modesimでsyntaxエラーがあると怒られます。
genvar i;
generate
case( l_cnt )
for(i=0;i<4;i=i+1) begin
i : bus_reg[i*16+15:i*16] <= data;
end
endcase
endgenerate
構文の一部分だけをgenerateすることはできない。
generate
for(i=0;i<32;i=i+1) begin : loop
always @(posedge CLOCK) begin
if(l_cnt == i) bus_reg[i*16+15:i*16]<= data;
end
end
endgenerate
かな。
generate のループには名前をつけること。
>>15 そんなもったいねーことしねーよ…
普通にFIR作ればいいじゃん…
16bit幅のデータを、他のデータと足並みを揃えるために、
20clock遅延させたいです。
FIFOを使えば良いのでしょうか?
普通にシフトレジスタだろ。
21 :
774ワット発電中さん:2012/01/05(木) 18:54:52.20 ID:ayI4azl4
教えていただきたいのですが
case文のステート内に更にcase文を構築することは可能でしょうか?
例えば
case(a)
1: begin
case(b)
1: begin
.............
.............
のような書き方はできるのでしょうか?
回答よろしくお願いします。
なぜ出来ないと思うのか?
なぜやってみないのか?
23 :
774ワット発電中さん:2012/01/05(木) 19:23:48.75 ID:ayI4azl4
確かに貴方の言う通りだと思います。
もう少し自力で頑張ってみようと思います。
回答ありがとうございました。
できるけどソース見づらくなるからやめれ。
そだね、case({a,b}) にしたほうがいいかも。
Case分って良く使う?
if分ばかりでやってるので、使ったことないよ
見やすくなるからcaseのほうがすき
// parallel case
29 :
774ワット発電中さん:2012/01/06(金) 13:29:46.18 ID:YyiEX18o
回答ありがとうございます。
結局、別の方法で希望の動作を実現することができました。
これから前回の質問の件も検証してみようと思います。
ありがとうございました。
FIR,IIRフィルタ,FFTならSpiralだろう
教えてください
HDLを書かなくても、CでFPGAが使えると聞いたのですが、
マイコン程度の知識で、使えるようになるでしょうか?
FPGAの中にマイコンを組み込めば...という話ではなくて、
HDLを使わなくても、ベタにFPGAが使えるか、という意味です。
やめておけ。
実用レベルじゃない。
10年以上前からそんなこと言ってるけど
未だに実用化できてないよな。
FPGAがなくても世界は全然困らない。
>31
評価ボードを使うとかの特殊な状況じゃなければ、少なくとも一人は合成やHDLの知識を持ってないと難しいと思うよ。
>>31 どちらかといえば”全部”知っとけ?
全部をCで書くことなどないだろうから
HDLに限らずモデルをそのままFPGAに反映する場合には、
さらに上位ツールとmixさせてつかうし、
Cの合成物は仕組み上、配線性が悪いものができるんで
合成やレイアウト上のケアも普通のHDL設計よりは気を使う
必然的に、全部知っていないとデザインも具体的利用法も浮かばないという訳
その中には、”マイコン程度”で動かすCの知識も含まれることもある
>>34 久しぶりに全部74シリーズで組んでみるか?
>>31です。
みなさん、どうもありがとうございました。
僕が考えているほど簡単にはできないみたいですね。
10年前から言われていて、まだのようでしたら、当分無理っぽいですね。
Cならマイコンでできますが、HDLはやったことがないんです。
やっぱりHDLは避けられないみたいですね。
if( reset == 1 ){
a=0; 初期化を書く
} else if( clock == 1 ){
ここに希望する処理を、複数行で記述する。
しかしそれらは全行同時に処理される。
}
のように書けばいいなら、
Cでできるのではないか?と考えました。
39 :
774ワット発電中さん:2012/01/09(月) 03:09:46.28 ID:b+SuuLus
ってか、C言語じゃなくていいから、C-Likeで書ける言語作ってほしいわ
begin end じゃなくて { } の方がいいし
switch文なんてまったく別の構造してるし
40 :
774ワット発電中さん:2012/01/09(月) 03:10:27.89 ID:b+SuuLus
↑verilogの話ね
>>39 そのくらい自分でパーザ書けばいいじゃんw
>>38 Cで書いたとしてもハードウェアを記述したらHDLではないだろうか?
ていうか、
VHDLの長い表記、Verilogのbeginがいやなのです。
Cのように、洗練された記述で書けないものかと思いまして。
もうソフトCPUでもつくってそこで処理でもさせろよ
> Cのように、洗練された記述
SFLでも使えば?
Co-Simで出来た様な気がする。
>>26 FPGAだとifよりcaseの方が小さくて速い回路になったりするよ。
>>47 2:1のパラシリ変換case文で作ると1GHzくらいでうごいてくれるもんね.
Verilogでの { NUM { enb }} をVHDLではどう記述すれば良いでしょうか?
( others => enb )を思い付きましたが回数が指定できないので・・・
手動で配置配線すればいいじゃない
その前に、ゲートで設計しなきゃな。
ぉ、おぅ
せやな
保守
ハードウェア記述言語やってて生きる就職先ってどこですか?
大手でも中小でもいいので知りたいです。
IPの設計をしたいならIPベンダかシステムハウス(っていうのかな?)
合成とかレイアウトとかバックエンドの仕事もいいかもね。
でもどっちも仕事の波が激しそう。
やっぱ公務員かな。
土方志望とは・・・
インドだな
HDLの前に英語やヒンドゥ覚えなきゃ
ヒンドゥは無理っぽいから英語を覚えよう
インド訛りの英語ってどんな感じだろ
ヒンディ語のことか?(ヒンドスタンの言葉)
>>38 ソフトでも複数の言語やってれば分かると思うけど、
一つの言語を覚えれば、
次以降の言語は比較的簡単に覚えられる。
最も大事なのは記述方法より考え方だから。
HDLもそれと同じで、
記述方法がCライクであれ、VHDLであれ大事なのは考え方。
見た目がCと違ってもそれは大した問題ではない。
教えてください。
Verilogで、
assign A = ( B==X )? C : 0; という書き方があります。便利なので結構使っているのですが、
ある人から、
assign A = ( B==X )? C
: ( B==Y )? D
: ( B==Z )? E
: ( B==Q )? F
: 0;
というのはやめた方が良いと言われました。理由を聞いてもわからないらしいです。
何個も続けて書くのは、なぜ行けないのでしょうか?
>>65 排他的な条件ならcase(or casex)のほうがいいって話かな?
?〜:はif〜elseそのものだから多段にすると優先順位付として合成されるので
サイズ的にもタイミング的にも無駄が多くなる。
理由がわからないのに使うななんて
いうヤツを信用すんな。
オレなら徹底的に議論する。
2個ならいいのか?
3個はどうなんだ?ん?
>>66 そうだよな。
優先順位付ける必要のないものにわざわざ優先順位をつけて、
でかくて遅いコンビ回路にするのか分らないよな。
俺は活用しまくってるけど?
いちいちfunctionにすると可読性落ちるしめんどいし
てか、遅くはなるけど、でかくはならんだろ?
クリティカルパスにならなければ速度関係ないし
非同期でalwaysとかprocessとか使うと
センシティビティ・リスト書くのが面倒なので
可能なら
>>65の書き方にしたいところ。
>>70 Verilog2001はセンシティビティ・リスト不要だろ
verilog2001非対応ってどれぐらいあるんだ
可能ならってどういうときが可能な場合?
if()文だと、ANDゲートのカスケーディングですよね。だから最初のAND1から
ANDの数だけ伝達が遅くなって、1clockに収まらなくなるということですよね。
case文は優先順位がないとすると、
どのようなロジックで構成されるのでしょうか。
>>72 例:A[2:0]=(B==4'b0001)?3'b001:(B==4'b0011)?3'b010:(B==4'b0111)?3'b011:(B==4'b1111)?3'b100:3'b000;
とりあえずA[0]を求めてみるとBが1と7の場合A[0]=1'b1でそれ以外はA[0]=1'b0
→これを最適化すると A[0}=~(B[3] | (B[2}^B[1]) | (~B[0]));
最近手で論理圧縮なんてしないから計算間違いしてたら御免なw
あとA[1]やA[2]は自分でやってくれ。
>>72 いまどきそんなアホな合成ツールもないと思うよ。
ちなみに case にも優先順位はある。
本来は合成ツールに、優先順位なしで合成してねって伝えるべき。
Verilogでmodule宣言時にoutput reg xxxと書いているのですが、書籍やネットでは、この記述はあまり見かけません。
何か問題があり、使わない方が良い記述なのでしょうか?
module output_ex(
output reg [3:0] AAA,
output reg BBB
);
またinout reg xxxxも使用したいと思うのですが、こうは記述できないのでしょうか。
入力信号とreg信号の見分けがつかなくなるので、無理な気もするのですが。
そのあとにinoutはregとassignが並んであまり綺麗に見えません。
何か良い記述方法があれば教えてください。
>75
inout reg を作るとなると書いた値が読めない(Zを書くと入力値が読める)ってことになって面倒くさそう。
で、inout regがだめなんだからoutput regも諦めた方が一貫してていいや、みたいな。
>>75 > output reg [3:0] AAA,
> output reg BBB
は、できる。
というか、俺は、それでしか書いたことがない。
>>75 何も問題ない
年寄りが自分が最初に覚えた方法だけで書いてるからだ
以前は合成ツールが対応していないなんて状況があったらしいが、
俺が始めた2004年には問題なく使えてた
同じ事を2度書くのはバカのする事だ
いつまでも同じやり方でしか出来ないのはもっとバカだ
ISEの受け付ける文法にトラウマもってる奴は多いだろうから仕方ない。
つうか、2004年だと ISE Webpack 6 の時代だが、
10くらいまで実際にいろいろダメだった気がすんだが、何使ってた? >78
できるだけどのツールでも動くように〜って考えるとどうしても古い書き方になるよな。
generateはもう使えないところなさそうだけど、interfaceはどうかしら…みたいな。
>>79 2004年に使ったときはQuartusだった
2005年からはXilinxだけど、VHDLばかりでVerilogは使ってない
Verilog2001だから2001年に出来たんだと思うけど、そんなに最
近までだめだったのかな?
VHDL200xはいまだ微妙なのは同意
>81
そういうのAlteraは早いから。Xilinxがやる気ないというか。
Alteraの常識でXilinxはかったらあかん。
まあ要望の順位としては低いんだけど、
2002年登場のSystemVerilogのISEでのサポート、
首を長くして待ってるんだが実装の気配もないぜ。
>>82 XiはISEでSystemVerilogをサポートするすると聞いていたが
まだ(ISE13.4でも)していないのか。
IC屋の世界じゃSystemVerilogがもう普通に使われているのかな
以外にSystemVerilogよりSystemCだったりして
12.1で対応するよ〜とかフォーラムで言ってたのに結局対応しなかったけどどうなの?って誰かが質問してて
14.1で対応するよ〜って返事があったのは見た気がする
それじゃ16か18ぐらいには対応するかな?
XはAutoESLがそのうちバンドルされる
有償版の上位Editionになると思うけど
AutoESLってC系ツールなのか
XilinはSystemCを推し進めるのかな
今も限定的だけと個別ツールとしてAutoESL販売してる
バンドル化されればC系推しがさらに進むでしょう
verilogとtcl/tkはどっちが役に立ちますか?
開発言語覚えずにスクリプトだけ覚えて役に立つの?
tcl/tk ならGUI作れて便利じゃん
HDL初心者ですが。
複雑な論理合成回路を記述する際に、状態遷移図を起こして
記述するのが効率がよいでしょうか。
複雑なものとして、たとえばSDRAMアクセスや、プロトコルスタックの処理など
HDLソースだけでは、頭の中でもう追えない状態の場合です。
C言語であればフローチャート図でしょうか、HDLの場合効率よく記述するために
よく使われている手法はどんなのでしょうか?
オレはパワーポイント
>>92 マイコンでもFPGAでも、ソフトはみんな状態遷移で書けば楽にできると思うよ。
マイコンでフロー図を見るけど、あれも状態遷移図の亜種だと思う。
if( s==0 ) begin
if( SW==`on ) begin
s<=3;
end
end else if( s==1 ) begin
LED<=4b'1101;
s<=0;
end else if( s==2 ) begin
if( SW==`on ) begin
LED<=4b'0001;
s<=3;
end
end else if( s==3 ) begin
LED<=4b'0000;
s<=3;
end
みたいな感じ
なんか俺俺自己満足コードって感じで読みにくいな
状態で分けるならcaseだろう
なんでifなんだよ?
>96-97
別に書き殴りのコードの質なんかどうだっていいだろう。
どうでもいいところに突っ込んでごちゃごちゃ言い訳が返ってくるほうが鬱陶しい。
書きなぐりでもひどい
>>92 >状態遷移図を起こして 記述するのが効率がよいでしょうか。
デジタル回路の場合、ある程度複雑な処理になると処理手順をステートマシンで
実現するってだけ。ステートマシン使わないなら状態遷移図
なんて要らないんじゃないか。ステートマシン使うなら状態遷移図使え
>>99 どの辺がひどいでしょうか?
指摘を真摯に受け止めて、改善したいと思います。
ただし、caseを使うのではなく、if()で行いたいです。
ぜひ指摘お願いします。
何でifなの?
条件変数が同じで条件も全部排他だし、この場合なら間違いなくcaseなんだけど
俺はまずそこに違和感を感じる
>>102 なぜcaseでないといけない?
お前がcase()が好きなだけだろう。俺は、if()でやってるよ。
>>100 case()、if()の違いは、関係ない。
好き嫌いの問題ではなく実運用上よろしくないが、
趣味でやってるなら勝手にしてくれってレベル。
>>104 >実運用上よろしくない
どのあたりが、よろしくないの?
違いが無いって言ってるんだからいいんだろう
もしかして仕事でもやってるんだろうか
>>105 実用上問題ないから
>>105は
>>95スタイルでステートマシン記述なんだろ。
ならそれでOK。
で
>>104のところでは、恐らく
>>95のような書き方だと他の連中から文句が出る
ってことだろな。俺のところでも
>>95は推奨ステートマシン記述ではないから
文句でるだろな。組織の推奨する記述があるのにわざわざ俺好き記述すれば
組織内で嫌われるだろな。
>>95スタイルのステートマシン記述が推奨スタイルって組織あるのか
おまえらのところどうだ?
LINTでひっかかるんでない?
規則なんて無いよ。
ifでこんな書き方すると論理合成でステート判定されない。
論理合成では速度によってステートのタイプを変化させるんだ。
速度が速くなるとワンホットじゃないとタイミング制約満たさなかったりするんだけど
ステート判定されないのであればロジックセルの入力数がステートのビット分すべて
入ってくるので速度が出ない。
今回の場合はLED制御だから遅いだろうし気にならない。
趣味レベルであれば早いクロックを扱う事もないだろうし。
でも将来的には100MHzオーバーの信号を扱うかもしれない。
仕事でも使うならcaseで書く癖をつけておくに越したことは無い。
>論理合成では速度によってステートのタイプを変化させるんだ。
dc がそんなことしてたとは知らなかったよ
趣味レベルでdc使ってる、と空目したw
>>109 ありがとうござます。大変よくわかりました。
今までの、誰の説明よりも論理的で、説得力があり、
素直にに受け入れることができました。
僕も今後は、注意してcase()文で書くようにします。
どうもありがとうございました。
>>109 >論理合成では速度によってステートのタイプを変化させるんだ。
どの合成ソフトなんだ?
>>110の言うとおりDC?
DCってなに?
synplifyあたりでも普通にやってますがな。
ISE はやってくるけど、ASIC 向けだとやらないと思う。
やられたら formality が大変そう。
ultra ならやるのかな?聞いたことないな。
「速度によって」ってことはないだろ?
if文でもステートマシン推定ぐらいやってくれそうだけどな
case()だと、そんなに直接的に状態遷移だと認識してくれるんですか?
if()は、そのように考えてくれないんですね。
自分の使ってるツールで試してみれば済むことなのにね
逆に言うと試さないことにはなんとも言えないんじゃないかな
バージョンやオプションによっても違うだろうし
>>116 速度によって、つまりプロセス等も加味して動作周波数で良い具合のステートを
選んでくれれるって凄いよな。
>>119 ツールで実際にやってみようと思いますが、
どのような状況なら、状態遷移と判定してくれた、思えば良いのでしょうか?
>121
ISEなら合成したときにずらずらでるメッセージに
どこそこの行に state machine 見っけ、one hot で実装するよ
とか出る。
ワンホットって何でしょうか?
一味唐辛子。
七味唐辛子はセブンホット。
なるほど、納得しました。
126 :
774ワット発電中さん:2012/03/06(火) 03:56:09.94 ID:sjULIjeS
テストベンチを書くのが面倒なのですが、何か良い方法はないでしょうか?
外注に出す。人を雇う。
新規モジュールを作らない。
脳内テストで済ます
自宅警備員に転職する
(製品の)検査とはQCシールを貼ることと豪語する中国人なら確実にこうする。
「やったことにする」
しかし日本人にはこれは非常に困難な仕事だ。
だが、ちょっと待って欲しい。本当にそうだろうか。
日本人には日本の国技「見なかったことにする」があるではないか。
「やったっぽいけど記憶にございません」
みなさんテストベンチ作成は、嫌いみたいですね。
カバレッジなんてクソ食らえだ!
>>134 嫌いなのではなく不必要なことをすることが嫌なだけじゃないか
電子技術立国のドカタは優秀だから検証しないと駄目なコードなんて作らない
技術立国()
>>136 そうか?
このスレを含めて結構デタラメなコードを良く目にするけど、どこが優秀なのか教えてくれ。
このスレにはドカタなんていません
ドカタにこんなスレを見てるような余裕はないのです
・・・じゃあ誰がいるんだろ???
Botです
>>139 ドカタは仕事に忙しいからこないよな。
来るのはドカタに遠くおよばないペクチョン
教えてください。
reg [2:0] counter;
if( counter < 5 )
counter <= counter + 1; // ++
else
counter <= 0;
end
上のように記述して、ISE13.2で合成すると、次のようなWarningが出ます。
Result of 4-bit expression is truncated to fit in 3-bit target.
この意味をGoogleで翻訳すると、
4ビットの式の結果は、3ビットのターゲットに収まるように切り捨てられます。
と、出ます。
私は、
cpounterの値は、101(2進) = 3bitしか行かないので、3bitで取りました。
ところがISEは、Warningを出してきました。
その理由は、3bitの変数に+1するなら、最大で4bitになる可能性がある。
だから「切り捨てるからね」とWarningを出してくれた。
という理解で良いのでしょうか?
それとも何か他に理由があるのでしょうか?
よろしくお願いします。
そうですね。
厳密に言うとビット長指定のない"1"は、32ビットですけどね。
あと、end はいらない。
>>143 ありがとうございます。やはり、そういうことで良かったんですね。
そうすると、ISEに文句言われないように書くには、
reg [3:0] counter;
if( counter < 4'd5 )
counter <= counter + 4'd1; // ++
else
counter <= 4'd0;
ということですね、たぶん。
ちょっとやってみます。ありがとうございます。
>>1441です。
やってみたら、見事warningが消えました。
どうもありがとうございました。
でも、
+1するだけにも 4'd1
if()の評価にも4'd5 とか、窮屈な書き方になりますね。
みなさん、そのように書いているのでしょうか?
それとも、Warningは無視なんでしょうか。
それがふつう。
窮屈だと思う自分の心を戒める
マジレスすればbit sizeを勝手に推定されないというメリットを最大限利用する
全部 integer で書いても大して変わらないというのも事実なんだけどね。
integer counter;
if (counter < 5) counter<=counter+1;
else counter<=0;
wire [3:0] out=counter[3:0];
合成するなら、それじゃ大きくならないか?
ありがとうございます。
>>勝手に推定されないというメリット
なるほど。いい話ですね。
彼の介入させないということですね。なるほど。また1つ勉強になりました。
どうもありがとうございます。
しかし、この表記に慣れるまでは、キツイですね。
途中でbit幅変えたら、全箇所手直し変更になりそう。
>>全部 integer で書いても大して変わらないというのも事実なんだけどね。
ありがとうございます。そうらしいですね、その話は聞いたことあります。
どうせ最適化で必要なbit幅に切ってくれるなら、
ソース書くときに「220だから8bit、だから[7:0]ね」とか気にしなくてもいいので楽かも。
考えてみると、なんでbit幅を気にして宣言するようになったんだろう。
本に書いてあったからか、ISEのエラーメッセージのせいか。
端っから全部32bitでやってみようかな。横着かな
integer counter;
if (counter < 5) counter<=counter+1;
else counter<=0;
wire [3:0] out=counter[3:0];
教えてください
Verilogで、
wire signed [15:0] ws16;
wire signed [ 7:0] ws08;
assign ws16 = 16'b1000_0000_0101_1010;
assign ws08 = 8'b1011_11111;
だとしたとき、次の代入の結果は、
1) assign ws16 = ws08; → ws16 = 16'b1000_0000_0011_1111 (符号bitは保持、右詰で、0が挿入される)
2) assign ws08 = ws16; → ws08 = 8'b1101_1010 (符号bitは保持、右詰で上位7bitが削られる)
という理解で合っているでしょうか?
signed かあ、使ったことないなぁ。
どんなときに使うん?
>>151 その条件だけなら、やってみればわかるんじゃない?
実はとってもややこしい。
たとえば、ビット拡張は、左辺には関係なくて、
右辺が符号付きでかつ左辺よりビット長が短いと
符号拡張になる。
演算で符号付きとなしが混ざるとかすると訳わからなくなるよ。
質問です
4種類のバス線を切り替え、入れ替えがしたくて
次のようなVHDLを組んだのですが、エラーだと言われます。
SW_PIN is not a constant
このような書き方はできないのでしょうか?
input [1:0] SW_PIN;
input [7:0] BUS1,BUS2;
input [3:0] BUS3,BUS4;
output [7:0] OUT_PIN;
case (SW_PIN)
2'b00 : begin assign OUT_PIN = { 4'b0, BUS3 }; end
2'b01 : begin assign OUT_PIN = BUS2; end
2'b10 : begin assign OUT_PIN = BUS1; end
2'b11 : begin assign OUT_PIN = { BUS1[3:0], BUS2[6:4], 1'b0 }; end
default : begin end
endcase
ケース文の()の中はconstでないといけないのでしょうか?
よろしくお願いします。
VHDL...?
reg
あまり自分で書かない書き方なのでようわからんのだが、caseのdefaultって
とりあえず書いておけば中でOUT_PINの代入しなくても無問題なんだっけ?
>>154 参考
module sel(
input [1:0] SW_PIN,
input [1:0] BUS0,BUS1,BUS2,BUS3,
output reg [1:0] OUT_PIN
);
always @(*) begin
OUT_PIN = 2'b00;
case (SW_PIN)
2'b00 : OUT_PIN = BUS0;
2'b01 : OUT_PIN = BUS1;
2'b10 : OUT_PIN = BUS2;
2'b11 : OUT_PIN = BUS3;
endcase
end
endmodule
>>154です。
みなさん、ありがとうございました。Verilogですね、すみません。
>>159さんのアドバイスも入れながら組んでいますが、
相変わらず SW_PIN is not a constant というエラーで止まります。
評価する値は定数でないといけないのでしょうか、まったくわかりません。
さらにわからないのは、
>>159さんの例文だと、always @ (*)の中にcaseがありますが、
代入は、wireです。always@ ()の中は <= にしなさいと、書かれている本が多いので、戸惑っています。
1. case()〜endcaseは、always()の外に、assignと同じ位置に書いてはいけないんでしょうか?
CQの本を見ると、functionと併用されていたり、
always @ (*) + reg変数だったりします。
2. caseで使う変数は、
case (<wire>) // <>は、型宣言です
2'b00 : assign <wire> = <wire>;
2'b01 : assign <wire> = <wire>;
2'b10 : assign <wire> = <wire>;
2'b11 : assign <wire> = <wire>;
endcase
のように、wire宣言ばかりでは、いけないのでしょうか。
>>159さんのように、取り出しだけはregでないといけないのでしょうか。
僕がやりたいのは、FPGA外部のSWの組み合わせで、4組の8bitバス線から1組を選びたいでけです。
まるで、パーツ屋さんに売ってるアルプスのロータリースイッチの8回路4接点と同じです。
なので、assign OUT_PIN = BUS0; で良いと思っていました。
わけがわかりません。
>160
別におかしくないぞ。
"=" のことなら、同じbegin〜end内で混ぜると腐るが、"="で統一するぶんには問題ない。
>161
まず、代入は3種類ある。"assign wire =" (継続代入) と
"reg =" (ブロッキング代入) と "reg <=" (ノンブロッキング代入)。
継続代入とブロッキング代入は文字面が似てるので混同しやすいが、
文法上も意味論上も別物なので本読んだりソース読んだりする時には注意だ。
というか、ちゃんと区別するものだとして、もう一回手持ちの本を読み直せ。
そして、assign は >161 の 2. のような使い方はできない。
reg って書くとレジスターになるような気がするんだよね。
でも、ワイヤーになったり、下手するとラッチが出来たり・・・
ところで
>>160 は、何がおかしいといっているんだろうか?
気になって昼寝できない。
>>162 ありがとうございます。
assignとregは、電線とD-FFという風に理解しています。
assignは電線なので、スグに出力。
reg<=は、次回のalways @ ()実行時の出力予約。D-FFのD端子の電圧イメージ。
reg=は、初めて見ました。(混乱しそうです)
やはりcase()は、使いにくいのでしょうか?
今、
assign OUT_PIN = ( SW_IN==2'b00 )? BUS0
:( SW_IN==2'b01 )? BUS1
:( SW_IN==2'b10 )? BUS2
:( SW_IN==2'b11 )? BUS3
: 8'b;
と、やったらうまくできました。
この文章はわかりやすくていいと思います。
assign OUT_PIN = xxxx;の形式だし、評価もできるし、
assignと同じ位置に置けるし、defaultも設定できるし。
case文は、僕にはまだ時期が早いみたい。
case文の文法というか、
>>161のような質問は、どのようにして解決すればよいのでしょう。
面識ないんですが、PALTEKとか東京エレクトロンとか に聞くのでしょうか?
ありがとうございました。
caseの前の代入に意味があるのかい?
>166
caseで全てをつくしててもdefault付けるのと似たようなもんだ。
ブロッキング代入も然り。意味がない。
俺なら即座に訂正する。
ま、おかしいと思わないんだったらそれでいいんじゃない?
ただ、そういう人がかいたコードは見たくないね。
>>164 おまえ俺と同じようなレベルだね。
caseが早いんじゃ同じようなif,else if,elseも時期が早すぎるんじゃないかな
ついでにalwaysやその後の@も禄に理解してなさそうだからこれらを使うの早すぎるんじゃない
>>154のmoduleをcaseじゃなくif,else if,else で書いたらどうなるの?
assign OUT_PIN = ( SW_IN==2'b00 )? BUS0.....;
電線を繋ぐためだけにassignを付ける必要あるの? それなら=だけで良いんじゃない?
>>171 if(SW_PIN==2'b00) begin OUT_PIN = { 4'b0, BUS3 }; end
else if(SW_PIN==2'b01) begin OUT_PIN = BUS2; end
else if(SW_PIN==2'b10) begin OUT_PIN = BUS1; end
else if(SW_PIN==2'b11) begin OUT_PIN = { BUS1[3:0], BUS2[6:4], 1'b0 }; end
で、どうでしょうか?
>電線を繋ぐためだけにassignを付ける必要あるの? それなら=だけで良いんじゃない?
assign 書かないと、= で代入できないですよね。
>>173 case部だけじゃなく
>>159のようにmoduleにしろということ
(コンパイルできるようにmoduleに、そうしないとエラーなのかも分らない)
>>173を
>>154のcase部分に置き換えてエラーでない?
あと、なんで
>>173ではassignをOUT_PINの前につけないの? これも代入でしょ
VHDL初心者です。
VHDLでコンポーネント宣言をインクルードするという様な事はできないでしょうか?
Quartus2の場合、MegaWizardでモジュールを作成した場合にCMPファイルを生成してくれます。
今はCMPファイルの中身をVHDLのソースファイルにコピペしています。
そのままCMPファイルをインクルードできれば便利だと思うのですが方法が見当たりません。
どなたかアドバイス御願い致します。
Alteraだけの特殊ファイルをインクルード?
無理。
VHDLにはそんな機能は無い
元々合成用じゃなくて、回路仕様を記述するために作られた言語だ
あきらめなさい
コンポーネント宣言が嫌なら、ダイレクトインスタンシエーションを使うといい
STARCのスタイルガイドには使うなと書かれているが、俺は使ってる
178 :
175:2012/03/25(日) 15:54:19.57 ID:TeK6I0wC
>>176,177
アドバイス有り難うございます。
駄目なんですね。仕方ないです。
ダイレクトインスタンシエーションは始めて聞きました。
私が持っているSTARCのRTL設計スタイルガイドVHDL編初版には載っていない様ですが、
ダイレクトインスタンシエーションが掲載されているのは2011年6月発売の新版ですか?
教えてください。
VerilogでFPGAの勉強をしています。
回りに聞ける人がだれもいなくて、独学で試行錯誤しています。
特にHDLの書き方は、主にCQ出版の本を片っ端から買い込んだり、
半導体工学研究所(だったかな)の厚くて高い本を読んだりしています。
ここで質問ですが、Verilogの教科書は出ていないでしょうか?
洋書ではなくて、日本語のものでです。
CQの本は著者がだいたい決まっていたりして、違う側面からの説明が少ないように思います。
かといって、英語のIEEEを読むのも学力の点で問題があります。
C言語など、たの言語では、日本語で、共著の分厚い本がありますが、
VerilogHDLでは、そのような本はないのかなぁ、と思いました。
STARCの本も良いのですが、Verilogの規格、文法書ではなく、注意点、ガイドラインの本という感じがします。
CDがあるよ。
規格が知りたいなら IEEE-1394-2005 を読むしかないよ。
書き方は各社違うから要求に合わせるしかない。
IP を作るなら STARC だけど、全部ガチガチにするとロジック自体が判らなくなる。
あくまでも IP 屋のため。それでも抜けもあるし、曖昧な部分も多い。
そもそも古いツールの癖を引きずってて糞。
和書は見る気もしない。
ゴミだらけだよな ほんと…
探すの大変だったぜ
>>178 STARCから直接買ったVHDL版の初版の3-17ページに書いてあるよ
184 :
175:2012/03/26(月) 23:15:20.61 ID:yKKf6uFm
>>183 わざわざ有り難うございます。
当該ページ読みまして記載されている「記述量を減少させる」がまさに目的なので、
これで試して見ようと思います。
有り難うございました。
>>179 HDLの書き方や思想は各社各様。
ゲートっぽく書くところもあれば、スケマ的なところも。
プログラム的(if-then, caseのでっかいやつ)に書くところもある。
社内ルールとかに属するものじゃないかな。
自分の知ってるノウハウをwebで公開するのは簡単だけど、
結局社内資産とほぼ同等になってしまうから公開は無理。
結局、当たり障りのないSTARCしかない。
FPGAならAlteraのcookbook(名前失念)に記述ノウハウがある。
Xilinxにも同等のがあったはず。
回路図入力使ってる人っているの?
資産だと思っていたものが気付いたときには負債に
>>186 つなぐだけの上位レイヤーは、回路図で書いた方が楽そう。
>>175 > VHDLでコンポーネント宣言をインクルードするという様な事はできないでしょうか?
インクルードはできないけど。
こういうファイル作っておいて↓
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
package TestPack1 is
component Sample1 port ( A : in sttd_logic ; B : out std_logic);
end TestPack1;
使う側のファイルでこう宣言すれば↓
use work.TestPack1.all;
使う側のファイルでコンポーネント宣言を記述する必要はない。
>>189 それ、ISEではまったことがある。
上手く動作しないと思ったら、非対応だったという。
最新版だとどううなるか知らないけど。
>>190 それでよくいろんなライブラリ使えるなぁ。
ハードマクロとか使うとき、いちいちソース側でコンポーネント宣言してるのかな。
ザイは使わんから知らんかったよ。
一応QuartusとDCとReonaldは問題ないです。
すいません。聞きたいことがあるんですが、
皆さんmVerilog、VHDLは何でやってるんですか?趣味?仕事?大学?
仕事でやる人って結構きついですか?
どういった企業が使ってたりします?
あとこれって職種的にプログラマー、SEとかになるんですかね?
>>192 >仕事でやる人って結構きついですか?
キツイのはイヤだな。
>どういった企業が使ってたりします?
一流大会社だと、安定してていよな
>あとこれって職種的にプログラマー、SEとかになるんですかね?
SEってカッコいいし。
回路図使っているよ。最上位階層で。何のモジュールがどうつながっているか
視覚的にわかりやすいのでおすすめ。
回路設計できない人は回路図入力使えないから選択肢にないんじゃないの?
最上位階層でも回路図入力は使わない
昔、見た目の美しさを気にする余り、いろいろ頑張りすぎて無駄に時間を使ってからやめたw
小規模の趣味の設計なら回路図入力で最上位階層残すかもしれんが…
言語設計に慣れてしまうと回路図入力のバージョン管理が面倒なんだよな。
古い人間なので未だにsubversionでまたーり管理してるけど
回路図は差分1つ取れないのであまり使いたくないというのが本音。
TEXTならgrepしてcheckとか快適
199 :
774ワット発電中さん:2012/04/08(日) 02:04:18.84 ID:VHdHM0td
>189
最近のISEでは大丈夫みたい。
やってみそ。
はははは、はははは。月曜日納入の物が、まだできない。
今日明日は徹夜だ。
みんなの言っている回路図ってどういうものなのだ?
Visual EliteやHDL Designerのことでいいんだよね?
>>200 月曜納品のものは昨日仕上げたw
会社にはオレひとりだったから集中できた。
>>202 FPGAのツールには回路図入力が付属してるんだ。
74系とかAND、ORのモジュールがあって、基板作る時の
回路図入力と同様に使える。
204 :
774ワット発電中さん:2012/04/08(日) 12:52:15.52 ID:XtqwIJqg
ISE14では、Core i7 の本領発揮で、もっと高速にMapできますように。
205 :
774ワット発電中さん:2012/04/09(月) 22:45:39.00 ID:JOW5OBxS
Verilogで、教えてください。
以下のように書いて実行させると、
reg signed[16:0] A;
reg [1:0] B, C;
if(A > 17'd32767 ) B <= 2'b11; // 正;
else if(A == 17'd00000) B <= 2'b10; // ゼロ
else B <= 2'b01; // 負
if(A > 32767) C <= 2'b11; // 正
else if(A == 0) C <= 2'b10; // ゼロ
else C <= 2'b01; // 負
Aに±32767の三角波のような信号を入れたとき、
B=3, B=2, B=3
C=3, C=2, C=1 (←期待する結果)
になり、結果が異なります。
ずいぶん考えましたが、その理由が全く推測がつきません。
Aは17bit signedなので、
判断の数値はbit幅も示し、signed なのでd(decimal)で表記するなど
気を遣って表記しました。それなのに、
何も考慮もない 32767と 0 の書き方のほうは正常に判定するのです。
上記2つの判定式は、何が違うのでしょうか。
おわかりになる方、教えてください。
符号付きなら17'sd32767 だ。
17'd32767 だと符号なしになるから比較も符号なしで行われる。
二次元以上の配列を異なる階層に代入、
または出力する事はSystem Verilogでは可能ですか?
Verilog2001だと、配列を
1アドレス(ワード)毎にwire接続させ、
変数化もしくは出力していましたが
記述量が増えて面倒です。
対策方法があれば教えてください。
209 :
774ワット発電中さん:2012/04/16(月) 01:52:51.27 ID:f1x4EkHq
触って学ぼう FPGA開発入門は使えない。webから消し去ってほしい糞記事ですね。書いたやつ死ね。
何でもwebに頼ろうとする、その態度を改めるのが先だと思うぞ
>>208 input [7:0] data [0:3][0:255];
とか System Verilog なら出来るよ。使わないけど。
ISE13.4って、起動しておいたiMPACTが、自分勝手に終了しないですか?
あと、コンパイル中にYouTubeとかニコニコ動画とか見てると、
処理がエラーで止まることないですか?
そのまま「ReRun」すると、今度は通るとか。
213 :
774ワット発電中さん:2012/04/17(火) 12:34:54.13 ID:REr56r9Q
早くISE14が出ますように。
214 :
774ワット発電中さん:2012/04/17(火) 19:13:20.51 ID:Ja8FE76f
ドカタ諸君への告知
【FPGA/CPLD】 XILINX/ALTERA/Lattice/Actel スレ
【Verilog】 記述言語で論理設計Project 【VHDL】 スレ
統合のお知らせ
【FPGA/CPLD】 XILINX/ALTERA/Lattice/Actel 16
が終了しました。そこでFPGAスレをこのスレに統合します
FPGA、HDLの話題はこのスレでね。
ハ,,ハ
( ゚ω゚ ) お断りします
/ \
((⊂ ) ノ\つ))
(_⌒ヽ
ヽ ヘ }
ε≡Ξ ノノ `J
216 :
774ワット発電中さん:2012/04/17(火) 22:27:33.37 ID:REr56r9Q
いやだぴょーん
217 :
208:2012/04/18(水) 22:16:45.62 ID:sGIZdAkW
4月ですね
はやくゴールデンウィークにな0
220 :
774ワット発電中さん:2012/04/19(木) 13:44:12.63 ID:cXxFNIqR
ワーニングが120個も出ています。
大丈夫でしょうか?
基本的にワーニング無視で良いでしょうか?
>>220 「大丈夫」と確信できる警告以外は無視してはいけません。
Aのregとaのoutputとかでつながってなくて
ワーニング1:Aがどこにも使われてません。
ワーニング2:aの出力がありません。0にしときやす。
とかね
223 :
774ワット発電中さん:2012/04/28(土) 22:33:38.68 ID:fDtlAwbG
鳥海さんの記事間違ってるところあるから訂正しておいて
鳥海さんって、もとNECの人だっけ。
ところで
>>214の統合って結局どうなるってばよ。
>>224 NECで、その後イノテックの下請けだったかのエクセレント何とかって
会社に移って、その後コンサル業だね。
悪い言い方をすると、セミナー屋さん。
verilog-mode 使ってる人って、このスレに居る?
>228
使ってるぞ。つうか、vhdl-mode ほどの切迫感はないにせよ、
verilog-mode無しの emacs 使いってむしろそんな修行僧いないだろ。
>>229 最上位階層は回路図入力とか言ってる人がこのスレにいるから、
そういう人は autoinst とか auto_template を使えば幸せになれるのになー、
と思ったもんで。
>>230 設計担当が違う場合、画の方が全体を瞬時に把握できるって
メリットはあるね。
ただし、図の手入力はミスを誘発する可能性があるので、自動生成に
大賛成。
>230
その場合、訊くべきは「autiinstとかauto_template使ってる人いる?」だろ…
使ってないのでどんくらい幸せになれそうか語ってオクレタノム。
ちょっとググってみたが、これ verilog-auto して変数名に展開したあと
もいっかい verilog-auto すると元に戻ってくれたりする?
>>230 最上位階層におけるモジュール間結線の記述は大体数千行とかになったりする
こともあると思うけど、それが 1/10 ぐらいの記述で済んだりする。
wire 宣言は手作業で書かなくてもよくなるし、モジュールインスタンス時の結線も
auto_template を使えば正規表現でポートのマッチングをして、
適当な名前の配線を接続することもできる。
あと verilog-auto はバッチモードで実行するのが良いと思う。
verilog-mode で書くソースは拡張子を *.vmd とかにしておいて、
verilog-auto で展開後のソースは *.v にするとかで。
>>226 今その人に教わってるけど説明が雑過ぎでまいってますよ・・
ISEの使い方を詳しく聞こうとすると逆切れするしw
セミナー屋のくせに質問されるのを嫌うというのは、知識が浅いということだと思ってます
>>235 >今その人に教わってるけど説明が雑過ぎでまいってますよ・・
講習の全体の時間と進捗を鑑みて、端折っていることもあるぞ。
>ISEの使い方を詳しく聞こうとすると逆切れするしw
そのセミナー屋さんは、ISEの使い方は良く知らないんじゃないか?
Quartus IIなら知ってるのかも知れない。
Xilinxの社員か販売店に聞くと、教えてくれるよ。いい人に当たればだけどね。
「あんた知らなさそうだから、もっと知っている人を出してよ」とは言いにくいしね。
>セミナー屋のくせに質問されるのを嫌うというのは、知識が浅いということだと思ってます
それは正解だと思う。話が不得手な方向に行くと、答えに窮してしまい、
「俺は本を書いてるんだぞ、スゴイだろ」というプライドが、許さないんじゃないか。
>Xilinxの社員か販売店に聞くと、教えてくれるよ。
ココ、笑うとこ?
はっきりと言ってもいいんじゃないかな?
「ISEに詳しい人をお願い」って
誰でもいいので、1度でいいから、ISEの詳しい使い方について
本を書いてくれないかな。少なくとも俺が買う。
でも、PlanAheadに行こうするなら、PlanAheadの使い方について、ね。
デフォルトではない設定や込み入った機能は、(本社含めて)使う人が少ない
→ 情報が少ない
→ バグ報告が少ない → 直されない
よって詳しい使い方を知ると仕事が遅くなる
誰かISEのwikiつくっちゃろーとか思わんの?
俺?XilinxのFPGAが無い・・・今テストボード最安でいくら?
>>244 USB2.0ホストとして使えて、SDRAM が 16MB 以上載ってて、
一万円以下の FPGA ボートを探しているんですが、知りませんか?
ああ、ドロンしたい・・・
>>244 しかし49豪ドルとな?グーグル先生に聞いたら4000円だった。
やすいっすね〜。会社にお願いして買ってもらおうかしら。
会社で買うならもう少し出せるだろ・・・
>>246 そんな値段になるのか。安いな、中国じゃあるまいし
なんでこんなに安く出来るんだろ(実は作っているのは中国企業とか)
これ日本企業ならどれぐらいになるのかな。2万以上かな
こんな値段になるようじゃ日本企業負けるよな
>>249 XC3S250Eってスパルタン3っすかマルツパーツさん。
気合っすね・・・
Spartan は、4と5がないから古いわけじゃない。
>>251 あ、そうなんですね。
てっきり6年以上前のデバイスかと思いました。
ちょっと勉強します。
DフリップフロップとAND/OR/NOTゲートで
011011011011011... のように出力を続ける回路って複雑でしょうか?
010101010101010... ならそこらに転がってるのですが…
>>254 011 が基本パターンであとは繰り返しなんだね。
じゃあ、状態遷移が 0、1、1で、最初に戻るって感じでしょ。
FFの状態を、この順に遷移させれば良いだけ。(w
>>255 それをDフリップフロップとAND/OR/NOTゲートで作ってください
お願いします
FFを3個つなぐだけだろ
え〜…組み合わせ回路必要か?FFだけでいいじゃん。
>>257-258に禿同・・・・・・と思ったが、FF1個だけってことか?状態数2じゃ無理でしょ。
残りのゲートでFF作るって宿題じゃね?
宿題じゃなくて院試過去問だったのですが
見通しが立ちました
ありがとうございました。
>>254の課題をVerilogで書くとどうなりますか?
入力のクロックのHLだけで状態が2通りあるからな
>>262 always @ ( posedge clock ) begin
if( out == 0 )then
out <= 1;
end else if( out == 1 ) begin
out <= 1;
end else if( out == 1 ) begin
out <= 0;
end
endif
end RTL;
ここは宿題スレじゃないだろ。(w
module P011_OUT(
CLK,
RST_X,
P_OUT
);
input CLK;
input RST_X;
output RST_X;
reg [2:0] Q;
always@(posedge CLK or negedge RST_X)
begin
if(~RST_X)
Q <= 3'b011;
else
Q <= {Q[1:0],Q[2]};
end
assign P_OUT = Q[2];
endmoudle
これでいいかなー?
シミュレーションは回してない
次からRTL書いて!の依頼のときは
書きこまれてから1週間後にしよう・・・
outputまちごうたー
269 :
254:2012/05/10(木) 12:28:02.50 ID:nXHSTE0I
コードまで聞いてるのは私ではありませんので
あしからず
あ、そうなのね。
DFF1とDFF2があったとしてー
DFF1-D=!(DFF1-Q&DFF2-Q)
DFF2-D=・・・・
やっぱり明日書こうっと
velilogってこれで良かったっけ?
always @(posedge clk)begin
if(cnt==2'b10)
cnt <= 2'b00;
else
cnt ++;
end
assign outp = not cnt[0];
272 :
774ワット発電中さん:2012/05/10(木) 22:53:57.80 ID:HXfqd2Ev
いろいろダメだけど、雰囲気は伝わる
若い奴はCベース言語のHDLが普通で、RTL命のverilog/VHDLなんて良く知らないだろうからな
こうなるのはしょうがないよな
若い奴なら、SystemCで書いてよの方が良いんだろな。
大規模のハード時代にRTLで記述って、大きなソフトのアプリをアセンブリ言語
で書くようなものだしな。
ちゃうよ。VHDL使いなんだ。
Verilogはあんま知らん。
275 :
774ワット発電中さん:2012/05/11(金) 01:10:46.64 ID:ynF3Lj+L
VHDLでいいじゃん
だってVerilogでって言うから…
process(clk)begin
if(clk'event and clk='1')then
if(cnt="10")then
cnt <= "00";
else
cnt <= cnt +1;
end if;
end if;
end proccess;
outp <= not cnt(0);
>>273 アセンブラに相当するのはスケマじゃないのか?
>>273 SystemC から始めた人にクロック、並列動作、レジスタとかの概念が理解できるのかな。
ハードウェア設計者なら RTL は知っとかないと話にならんと思う。
>>278 プログラマー上がりが最初理解できずに随分悩んでいたよ。
結局ロジック回路の初心者向け教科書からやり直してた。
それでも、理解できただけマシで、神経やられて辞めた奴が居たぞ。
SystemC で RTL 記述するんだぜ。
ワイルドだろ?
俺SystemC分らんけど、
>>276をって言うか
011011011011011... のように出力を続ける回路を
SystemCで記述したらどうなるんだ?
>>278 RTL、SystemCを知っていて自分のSystemCの経験から、
SystemCだけでは
クロック、並列動作、レジスタとかの概念が
理解できるか疑問ってって言っているの?
SystemCの合成ツールって何があるんだ?
まともなのあるのか?
>>281 systemc だとクロックの概念はかなり分かり辛いと思う。
だから RTL の理解もなしにプログラマがハードウェアを設計するのは無理かなと。
あと systemc で
>>276 を書こうとすると以下のようなかんじ。
sc_out < sc_uint<1> > outp;
while(true) {
for(int i = 0; i < 3; i++) {
outp = (i == 0) ? 0 : 1;
wait();
}
}
>>282 Cynthesizer いいですよ。
SystemC の処理系はこれしか無いって会社の上司が言ってました。
これ使い始めて設計の期間がグンと短くなったんで、いいツールだと思うんですが、値段がすごく高いです...
>>283 SystemCでの記述ってそうなるのか。
クロックの概念は、VHDLっぽいか?記述そのものは確かにCだが。
285 :
774ワット発電中さん:2012/05/13(日) 00:47:38.29 ID:xFOJqlbr
SystemCだけをやる人ってのは「今のところは存在しないわけで
SystemCだと簡単に記述できるから、あくまでもその先を知ってる人が
ビヘイビア記述をするために使用するって感じだな
でもそのうち抽象化されたものしかわからない人が出てくるかもね
ソフトでいうところの、アセンブラなんかわからないけどプログラム書けますって人みたいにね
>>283 wait() ここでクロックイベント(同期)待ちなのかな。Verilogの@(posedge clk)見たいな物か
sc_out < sc_uint<1> > outpってテンプレでポート定義ってことかな
確かにビヘイビア記述だけあってRTL記述の
>>276より何をするのか分りやすいな
Xilinxの新しいツールでC/C++ベース開発できるようになるらしいが、それがそんなに高くなければ
今後はFPGAでもビヘイビア記述設計が増えるだろうな。
>>285 >アセンブラなんかわからないけどプログラム書けますって人みたいにね
JAVAやっている奴なんかターゲットシステムのアセンブラ知らないのがほとんどだろうが
大きなシステム開発しているからな。ハードもソフトと同じような方向に進んでいくだろう
鳥海佳孝ってどこの大学出てるんだろ?NECとかどうでもいいわ。地頭の程度を知りたいわ。
学歴しょぼくても司法試験受かってるとかならまだ理解できるけど。
この分野は東大ぐらいの人じゃないとまともな本は書けないだろ。
いいかげんにしてほしいよ。クソ本掴ませやがってムカつく。
どんな糞本でも理解できる頭があればそれなりに役に立つ。
まるで役に立たない本のほうが珍しい。
知ってることしか書いてなかったってのは別として。
>>289 知ってることしか書いてないって!
amazonや紀伊國屋で洋書を手軽に通販できる時代になんでこんな本出せるの?
classicになりうる本以外出すなよ。>鳥海
>>289 あー、本人?他人まかせなんだね。セミナー屋らしいわ。
292 :
774ワット発電中さん:2012/05/13(日) 14:00:41.38 ID:9XtqwZGA
>>290 そう言うお前の書いた本が見たいよ。
CQ出版は、出す本が無くて困ってるから、話をすればスグに通るよ。
さ、早く出せよ、ほら
>>292 本人確定きたこれw俺に金出させて居直ってるよコイツw
卑怯者の鳥海くんww
地鎮祭でもやってろよw道楽ジジイw
鳥○は自分の本が酷評されてるからって、
NEC時代の先輩である小林さんの本をけなすなよ
おまえのパワハラセミナーに比べたら小林さんの音声CD付きの本のが1000倍わかりやすいわ
とっととすっこんで園児相手に生活指導でもしてろや
>>288 鳥○は日大出身。大学出るまでプログラマーに偏見を持ってて
プログラマー見ると蹴りたくなったらしい。
そんな奴がプログラムのセミナーやるなよほんと。。。
>>296 やっぱり人格に問題あるんだな。金さえもらえればよいと思ってるんだろうな。
小林氏は初心者向けにも良書を提供している素晴らしい技術者だわな。
>>297 日大でもいいが、隠すのがダサイな。大したことないくせに偏見もつとか何様なんだろうなw
論理回路のまともな講義もできないだろ。ベテラン技術者は大学で講義できるぐらいの
見識を持っててしかるべきだと思うが、鳥にはそれが無い。
>>267 if(~RST_X)
Q <= 3'b011;
resetでレジセットしているけど、おまえらは電源投入後の要リセットの設計が普通?
ASICなんかリセット回路内蔵して外部からリセット与えなくても自分で電源投入リセットするんか
リセットしないでどう動作させるんだ?
>>299 FPGAでそれに相当するのはinitialなど初期値を与える構文だね。
>>303 >initialなど初期値を与える構文
あと、おまえらは電源投入や電源異常以外でリセット使っている?
FPGAの場合は電源異常の場合は要configだろうし、
あるとすれば回路設計悪くて暴走するから、暴走検知したらリセットとか
ASICやったことないけど、ASICの場合はリセット配線なるべく減らしたいとかないのかな
要リセットだとあっちこっちのレジに配線しまくりになり配線大変ってならないのか
そもそもASICに外部リセットがあるって多いのかいな
306 :
774ワット発電中さん:2012/05/13(日) 23:30:07.63 ID:xFOJqlbr
>>305 低電圧検知用のアナログ回路入れてリセットかかるようにする
リセット配線はクロックみたいにツリー状にすることもある
>>302 initialで設定した値は、コンフィグ後のレジスタの初期値として実機でも有効なはずだよ。
XilinxだとSTARTUPなんとかってマクロがあって、これを使うとコンフィグ直後の状態に戻せる。
initialで設定した値に戻るって事ね。(ブロックRAMの初期値以外)
STARTUPってFPGAの、ASICとしてのリセット発生回路みたいなものらしい。
Alteraでも似たようなものあるんじゃ無いかな?
>>307 >XilinxだとSTARTUPなんとかってマクロがあって、これを使うとコンフィグ直後の状態に戻せる。
>initialで設定した値に戻るって事ね。(ブロックRAMの初期値以外)
ホントに?
initialで初期値記述のあるFFの場合は、コンフィグ時にinitialで指定した値に
FFをした後FFにクロックを供給(ユーザーロジックアクティブ)。
で非同期リセット記述しているFFの場合は、コンフィグの最後(?)にFPGAが自分で
非同期リセット信号を出してFFをリセット、その後クロックをFFに供給
って感じの処理をしていると妄想して信じてるんだけど。
いずれにしろコンフィグされれば初期値記述があるFFはリセットされると妄想。
外部からリセットしないとFFの初期値設定できないなら、開発の時、PCから
ダウソコンフィグするたびに手動リセットしないといけなくなるんじゃない。
そんなことしている? ただ、ダウソコンフィグ時は特別でダウソ後
FPGAが自己リセットかけるようになっているなら別だけど。
ゴメン、月曜日で欝で嘘を書いています。外部リセット必ずしてね。
>>278 >SystemC から始めた人にクロック、並列動作、レジスタとかの概念が理解できるのかな。
おまえSystemCというよりソフトウェア知らなさすぎ、
少なくとも組込みやってるソフト屋でロジアナ使えないやつなんかいないから。
タスクの並列起動でwaitをいかに減らすかかがキモのRTOSなんていじったこともないだろ。あと、parallel指定とかトランスピュータとかも見たこともないだろ。
それとさ C言語のレジスタ修飾詞すら知らねぇってか?
むしろソフトと比べると10年は確実に遅れてる言語仕様、特に似非AdaのVHDLあたりで鬱になるんだろ。
>>294 スレ的に関係が深いような個人名出して誹謗中傷は辞めといた方がええで。まっとうな批判はいいとして、
マジ訴訟起こされるかも試練で。
>>296 >おまえのパワハラセミナーに比べたら
どんなことしたのかすごく興味あるわ。教えて
>>310 >少なくとも組込みやってるソフト屋でロジアナ使えないやつなんかいないから。
いや、いっぱいいるから・・・
組み込みのソフト屋ったってデバイス層を書く人とアプリケーション層を書く人(というかそれを専門で書く人)が
世の中にいたりするけどな。ミドルウエア専門の人だと普通のアプリ屋と同じレベルだったりするよな。
それならまだ許せるけど、以前いた会社ではFPGAやASICの設計で論理設計しか出来なくて
実機デバッグでロジアナ使えないどころかJTAG経由でプログラムをするってことすら
知らなかったやつがいた。恐ろしいことに会社に入ってから半田付けをしたことすらないそうで・・・・
そいつはVHDL使っててクロックの概念はちゃんとわかっていたんだけど・・・ねえ・・・・
1と0の狭間にいるんだよ。
>>310 そんな凄いソフト屋ならHDLである程度ハード開発も当然できるよな
いや、ハード遅れているというぐらいだからSystemCかな。いやいや、
自分で更に進んだ俺言語作ってやってたりして。
ハード知らないでソフト書くなんて組み込みソフト屋じゃないって
思っているだろな。
>>311 そっか。鳥海さんごめんなさい。
卑怯なのは私でした。もうしません。ごめんなさい。
>>317 おまえ、まったく現実知らん糞学生か?それともまわりよっぽど糞ばっかの下請け勤務か?
組込みやるのにハード知らんて?そんなの通用するかよ。ネットワークアナライザ見ながらインピーダンスマッチング短時間でとるような作業やれと言われりゃ無理だろうが、
ロジックだけじゃなくオペアンのイロハぐらいは知ってて当然。
末端は知らんが、まともなシステム設計をやるには最低、学部電気系程度の知識は組み込みでも必要だ。
いったいどんな職場環境で仕事してんだおまえは。
○り膿はverilogのセミナーがしたいのか生活指導がしたいのかはっきりしろよ
社会人にもなって中学生が受けるような生活指導されて怒鳴りつけられる筋合いないわ
verilogの質問にはろくに答えないくせに、高圧的な説教だけは進んでする存在価値不明の3流セミナー屋だぜ
ジェームス・スキナーとどっちが上?
個人攻撃してる奴って、レス見るとモンスター受講生じゃないのか。
モンスター受講生には中学生が受けるような生活指導しないといけないのか、
先生大変だな。
>>319 >学部電気系程度の知識は組み込みでも必要だ
システム設計するのにどんな知識が必要?
>>320 N○Cではゲンコツ喰らいながら回路設計をおぼえたらしいよ。
技術者であるということはそんぐらい厳しいんだぞ!みたいなことが言いたいらしい。
NECより売り上げ上位の電気勤務だが、
鉄拳制裁がそれほど有効ならこれほど業績は低迷しない。
意味ない鉄拳制裁だったね。お疲れさn
でも、
日本の会社は稲森流とか、ロームみたいな社員を馬車馬のようにこき使う糞会社が業績上げてるとこ多いのも事実だけどね
日航の売り上げ改善とか、また稲森が神として祭り上げられるのかね?
ぼやーっとしていると、いつもならスパナが飛んで来るんですが、
今日は、ロジアナが飛んできました。
会社ならそういう頑固技術者的な感性でもいいのかもしれないけど
金払っていくセミナーでやられたらたまらんねw
恐ろしい職場や・・・でもコナクソーって言いながらやってるかも
置いといて4000円FPGA注文してみたけどXillinxの
14品のダウンロードモジュールが一個もないことに今更気づいた・・・
どこかに安いところないっすかね・・・
>>328 ゆとりだな。
>14品のダウンロードモジュール
何なのか分らないが、FPGA注文したところに注文すれば良い。
そこの安いよ
>>329 ところがどっこい。つうか
>>244のなんだが、PDFに
「自前で用意してね」
ってかんじで書いてあって、中になかったんだよ。
ちなみに14pinのJTAG用といったところか・・・
331 :
774ワット発電中さん:2012/05/16(水) 19:40:06.45 ID:1nTSblfa
entity RAM is
port(CEX:in std_logic;
RWX:in std_logic;
IO:inout std_logic_vector(3 downto 0);
A:in std_logic_vector(9 downto 0));
end RAM;
architecture Behavioral of RAM is
type MEMORY is array (0 to 1023) of std_logic_vector(3 downto 0);
signal MEM:MEMORY;
begin
write:
process(CEX,RWX,IO,A)begin
if(CEX='0' and RWX='0')then
MEM(conv_integer(A)) <= IO;
end if;
end process;
read:
process(CEX,RWX,A)begin
if(CEX='0' and RWX='1')then
IO <= MEM(conv_integer(A));
else
IO <=(others => 'Z');
end if;
end process;
end Behavioral;
古い資料を写しRAMを記述したのですが、
Xst:737 - Found 4-bit latch for signal <MEM_0>.
........
Xst:737 - Found 4-bit latch for signal <MEM_1023>
とwarningがでました。なんででしょうか?
(Xilinx ISE10.1です。)
>>331 Xilinxはよく知らんのだが・・・
エラーではなく警告なので
ラッチができてるけど意図したラッチなの?
大丈夫?
って意味では?
組み合わせ回路を作りたいのに、記述ミスでlatchを記述しちゃう人が多いので、
それを教えてくれてるだけのような。
ソースを見るに、意図したラッチだと思われるので無視してよいかと。
>>331 非同期メモリってある意味ラッチだから、その警告無視して良い
FPGAなら同期メモリにして内部のブロックRAM使うようにしたほうが良いな
分散RAMなら256SLICEか…
ブロックRAM使うのが吉。
335 :
774ワット発電中さん:2012/05/17(木) 01:04:11.68 ID:zCTCgMGE
なるほど、ありがとうございます。
337 :
774ワット発電中さん:2012/05/17(木) 20:52:05.90 ID:6hFJRCLK
どのソケットのこと?
14ピン2mmピッチの書き込みコネクタのこと?
だったらavnet辺りで大量に確保してるはず。
書き込みケーブルはニッショー(だっけ?)試したことあるけど
うちの基板ではjtagクロック落とさないと書き込めなかった。
339 :
338:2012/05/17(木) 22:34:48.76 ID:DtCekwA8
>>244みた。
PCI-EみたいなソケットってPCI-Eそのものやんw
相手側はコネクタなんて無くてカードエッジやん。
ネタかよ…orz
>>339 形はPCIeだけど、信号アサインが違うのよ
>>300 モジュールって言ってるけど、
業界では、ダウンロードケーブルと言うよ。
ダウンロードケーブルを買うと、14ピンのケーブルも
付いてくる。
USBが付いているから、ダウンロードケーブル要らないかと安心したけど、
そのUSBは電源供給のみだった。コンフィグには、別途ダウンロードケーブルが要るという。
341 :
330:2012/05/18(金) 10:03:49.44 ID:GXhixwo5
会社にalteraしか無いのがネックだ。
まあ個人で買っちゃったので何とかしないとね。
皆さんの助言通り、avnetでさくっと買ってみようっと。ありがとー
・・・で
>>336のとおり、JTAG-HS1ってのが見つかったので
ネットで検索したら5250円。どこも同じ価格か。
DLの
モジュール、基盤と
同額か・・・
342 :
330:2012/05/23(水) 09:58:53.97 ID:ojJKY/P4
FPGAきたよ〜。まだ動かしてないけど。
すでに一つ言えることがあって
USBの電源供給モジュールの差し位置がおかしい・・・
なんか作りも雑?とは言わないまでも
基盤に足が付けられないので、裏面のハンダ面が床に当たる。
当たらないように、梱包材を敷いたままやることになりそうだ。
基板見て思ったのだが、小さいカードエッジコネクタって案外便利かもしれんな。(w
>>342 >USBの電源供給モジュールの差し位置がおかしい・・・
日本製と違って、一見雑に見えるけど、ソケットの1つのピンが埋まっていて、
逆刺しできないようになってる。
ただ、USBコネクタの出る方向が不自然というか見ていてツライ方向になってるよね。
>>343 カードエッジはいいと思うけど、それに使える相手基板が無いんだよね。
LX4なんで容量が少なくて、仕事にはちょっと使いにくいと思う。
趣味用としては、Spartan6だし、安いし、抜群なんだけどねぇ。
回路図は見にくいし、基板のシルクは言葉足らずで回路図との対応がとりにくいし。
わんぱく者だけど、かわいいやつです。
>>344 今時は自分で起こすからその点は無問題だよ。
仰るとおり仕事では使いたくな仕様だが、残念ながらそんな仕事が
回ってこない。(w
>>345 >今時は自分で起こすからその点は無問題だよ。
起こすって何を? 基板を起こすってこと?
あのピッチの基板が簡単に作れる?
347 :
774ワット発電中さん:2012/05/25(金) 10:41:35.85 ID:Ky5NVCy/
しかも金メッキしないといかんしな
設計だけなら出来るけど、製造は外注だな。
実装のほうが大変だ。
FusionPCBだと50mmx50mm 10枚で$9.9+送料。
+$15で金メッキだから趣味で出来るレベルやね。
実装が大変?
自作基板なら手付けできる部品限定でしょ。
しないほうがマシな金メッキかもしれないけど
351 :
330:2012/05/28(月) 10:11:52.40 ID:MDBNUtY7
ボロPCにISE入れてるんだけど今容量だけで6Gだと?
休みの日に一気にしようと思ってたんだけど進めず
悪いみんな・・・
しかしFusionPCBってやすいねー。
たまーに会社でプリント基板設計、外注するときに
こそっとPCI-Eとユニバーサルのパターンいれとこうっと。
会社でFusion使ってるのか・・・
353 :
330:2012/05/28(月) 12:56:13.90 ID:MDBNUtY7
ごめん、使ってないです。
次はFPGAを動かした頃に参上します。
354 :
774ワット発電中さん:2012/05/29(火) 05:05:45.80 ID:XzdK6WIm
わかったからコテ外せよ。
教えてください
画像のフレームレートを変換する場合、画像メモリは、何ページ持つのでしょうか?
例えば、フレームレートがピッタリの整数倍なら、A, Bの2ページでなんとかなるように思います。
しかし、レートが異なると、読み手の垂直同期で他方に切り替えようとしても、
現在書き込み真っ盛りだったりします。
ところが3ページあると、読み出し→C終了したとき、A書き込み中ならBに切替え、
書き込みは、AとCを交代で書き込めます。
この考えは間違っているでしょうか?
>>355 HDLスレで聞くという考えが間違っているかもしれない
1000/1001 で苦労するがよい
>>356 ありがとうございました。
そうですか、了解しました。
あちらのスレで聞いてきます。ありがとうございました。
359 :
弖十=優多野手頭=慧吏載地衛 帝跿(徒) 江亞梁 江亞楼 江亞瓏:2012/06/05(火) 14:11:46.71 ID:eVoIfqOH
electromagnetic wave
http://www2.nsknet.or.jp/~azuma/e/e0037.htm#ism 朝鮮総連の『挺陝製』と『レッドハット』悪用犯罪
-electromagnetic wave 電磁波
ここに電波の帯域区分をまとめた。 国際電気通信条約無線規制により定められる電波の帯域区分名である。 無線通信は,既存の技術/機器との干渉や,各国の規制などによって,利用できる周波数帯が限られている。
欧米諸外国では,電波使用料徴収に際してオークション制度が導入されている。2005年2月3日,総務省での『携帯電話用周波数の利用拡大に関する検討会』第8回会合でこれまでの議論の内容をまとめた意見案が明らかにされた。 対立する分野では両論を併記している。
360 :
弖十=優多野手頭=慧吏載地衛 帝跿(徒) 江亞梁 江亞楼 江亞瓏:2012/06/05(火) 14:12:16.17 ID:eVoIfqOH
狆閔贐・儔未人・齠嵋人-チュォミ人=瑁喰と蟻輊惡面儿・戲豬冕尽-チョメ儘が横須賀の要塞に居る。
偽自民党員-小笠原出身の扇のそっくりさんの孫『偽清水』『偽アミ』『偽エアロ(エリ)』は蟻輊惡面儿・戲豬冕尽(ギチョメジン)。「支那(級)畜アミ」『朝鮮見本の豼貔』のアミが 私に話す『札幌市立北九条小学校の小1のクラスメイト・牛乳のシズちゃん』である。
その家族は 全員、逃げる為に有名人似に整形する詐欺家族。森、安部、野田、扇、野田聖子のそっくりさんの詐欺師家族はユダヤでもカナンでも無い。イロマンゴ島の部族である。
シズちゃんと祖母『偽扇』が魔女である。
横須賀の要塞に『朝鮮総連』のアミやタエの親戚の振りで一緒に居る。
まだ、続けているのは その家族のみ。口に石を…阿鼻の形相に。
天皇家 織田繪璃奈(横濱・野島えり)楷戴
A(E)rena Oda Medici Lancasta Vintevecom Yokohama-Eleonora de' Medici.
еёжЭЮЯабЧЦХЛθ γδεζηθ
弖十=優多野手頭=慧吏載地衛 帝跿(徒)
哇狸野雉会 匯蛙労 野慈蚕 優多野手頭
еёЬТУФКЛθ шщпёЬТУФХЛθ νξδεζηθ γνξδεζηθ шщпёжЭУТЬЫСТУФХЦЧШОНМЛθ ΡΣΘΙΚΛΜΒΓΝΜΛΚΙΘ ежрсзийклвгднчцхшеёЬТИЙКЛθ
細かい話なのですがVerilog-HDLで同期データセレクタを記述する時に、
always #1 clock <= ~clock;
initial begin
clk <= 1;
select <= 2'b00;
#2 select <= 2'b01;
とし、
selecta slecta1 (sel, clk, d);で呼び出してやると
二タイムクロック目に、クロックが上がり同時にセレクトが1になるのですが、直前のセレクト端子は0ですよね
しかし、二タイムクロック目でデータ1を選択できています。
これはどういう解釈をすれば良いのでしょうか?
selecta の中身を見ないと何とも言えないが
posedge clk を評価した時点で select は1になってるよね。
記述自体が間違ってると解釈の意味ないんじゃね?
>>362 ノンブロッキング代入文は同時であるから
クロックが上がったのを探知したときにselectを見ると
クロックと同じく既に上がっているということなんですね
365 :
774ワット発電中さん:2012/06/13(水) 22:27:40.84 ID:oavp0ynS
selectの中身見てみないと何とも言えんな
思い当たると言えば、Resetが無いようなので、記述次第では同期セレクタじゃなくて
ただのコンビネーションロジックのセレクタができているとかかな
検証関係で、皆さんが役に立った本やサイトってありますか?
アサーション検証の勉強がしたいのですが、中々いい情報が見つかりません。
そもそも、検証関係のドキュメントが回路に比べ少なすぎる・・・orz
368 :
774ワット発電中さん:2012/06/15(金) 22:48:45.87 ID:IwBlpNwz
検証ってことはプロだろ?まさか素人が真面目にアサーションなんかやろうと思わないだろうし・・・
会社に頼み込んでセミナー受けた方がいいよ、結構マジで
外に出てる情報少なすぎるからね
教えてください。
Spartan3評価ボードで、16桁×2行のLCD表示器に、16進数が出るようになりました。
苦労しました。今度は10進数を表示したいのですが、どのようにして計算するのでしょうか。
8bit変数をマイコンでCなら、
int X = 123;
C = (X/100) + 8'b30; LCD(C); X = X - (C*100);
C = (X/ 10) + 8'b30; LCD(C); X = X - (C*10);
C = (X ) + 8'b30; LCD(C);
という感じで作るのですが、FPGAでは割り算が苦手(clock数かかる)なので、
どうするのかな?と思いました。
100を引きまくる。引けた回数を表示。
10を引きまくる。引けた回数を表示。
余りの数を表示。
でしょうか?
>>369 32bitのint時はマイコンでCではどうするんですか?
>>369 何が何でもクロック最優先!って話なら、この程度なら
address 8'd000 → data 12h'000
address 8'd001 → data 12h'001
|
address 8'd009 → data 12h'009
address 8'd010 → data 12h'010
address 8'd011 → data 12h'011
|
address 8'd254 → data 12h'254
address 8'd255 → data 12h'255
みたいなROM(caseでは書きたくないなぁ)を作るとか :-)
それじゃデカすぎ!って話なら100の桁だけは単純に8'd100や8'd200の比較と減算ををパラでやって
10の桁と1の桁だけROMでって書き方ならROMサイズを半分以下に出来る。
単純に割り算でやるならCoreGenのdividerを使うって手もある。多分一番お気楽極楽。
>>370のような場合でもややこしくならない。
自分で引きまくるなら2進イメージで比較→減算→シフトとやったほうがちょっと早いかな。
カウンターなら最初から10進カウンターにしておく。
>>369です。
みなさん、ありがとうございました。
>>370 32bitのint時も、Cにやって貰うので、わかりません。
マイコンでは、strcpy(C[xx], "%3d, %f", ondo, dat); というふうに便利にできるので
任せっきりです。
>>371 ありがとうございます。なるほど、テーブル引きですね。
マイコンだと、10進→16進のときはテーブルをよく使います。
hex_data = { "01234567890ABCDEF" }; という感じです。
入ってくる値が8bit限定ならいいですが、16bit, 32bitと深さが上がると、大変そうですね。
CoreGenに依頼するのがいいのかな。
>>372 カウンターだけならいいんですが、A/Dの値を、binaryだったり、小数点とか、
あるいは、文字列だったりです。
つまり、fpeintf( LCD, "hoge=%6d", A); とかができないかな、と思いました。
ソフトウェアCPUでやれば良い、みたいなのは無しで、技術的にどのように対処しているのか
知りたかったです。
みなさん、ありがとうございます。
検証か…
期待値をソフトで吐いて、比較してたがどうにも期待値と合わず
死ぬほど悩んだ末、期待値生成側と回路側とでアルゴリズムが
違うことが解って、誤差分が合ってない事が解ったってな事があったなぁ。
開発グループ内での意思の疎通とか、外注との仕様のやり取りって
大切だよな。(w
>>369 >>373 やりたいことは結局のところ2進バイナリ->BCD変換じゃないのか?
XbitバイナリをLCDや7Segで表示しやすいY桁のBCDに変換ってことじゃないのか?
logicでのbin->BCD変換やらBCD->bin変換はlogic屋ならどうするかって常識だろ
これらって人とのインターフェース部には良く使うだろうし
聞き方が悪いから欲しい答えが帰ってこないんじゃないか
>>373 LCDに出したいなら、それこそマイコン使えばいいだろ?
ハードでリアルタイムにやる必要性がわからん。
HEX→BCDの専用ロジックのICもあったけどな。
>>373です。
みなさん、ありがとうございます。
>>374 >やりたいことは結局のところ2進バイナリ->BCD変換じゃないのか?
そのとおりです。
>XbitバイナリをLCDや7Segで表示しやすいY桁のBCDに変換ってことじゃないのか?
そのとおりです。
>聞き方が悪いから欲しい答えが帰ってこないんじゃないか
すみません、そうだと思います。
>logicでのbin->BCD変換やらBCD->bin変換はlogic屋ならどうするかって常識だろ
すみません。その常識を知らないので、教えていただけませんか?
宜しくお願いします。
>>376 >LCDに出したいなら、それこそマイコン使えばいいだろ?
それも1つの方法だとは思います。しかし、今回はソフトウェアマイコンを使わないで
FPGAで実現するには、みなさん
どのようにしているのかを知りたかったのです。
Xilinxとかの評価ボードには、決まって文字液晶が付いています。
たぶん、マイコンから使うのだろうとは思いましたが、マイコンを積めないような
非力なFPGAでは、どのようにして数値変換をするのか、技術的な興味で知りたかったのです。
>HEX→BCDの専用ロジックのICもあったけどな。
7447とか、4056なんかでしょうか。あれも良いICでしたが、
確か32bitのbinaryからBCDにするのは、特殊な配線をしたと思います。
そもそもさぁ、非力なFPGAで32ビットの入力値をBCD変換して
LCDに表示するって言う要求が間違っているんじゃないの?
入力値を見たいだけなら7セグLEDで"4FE5"って表示すれば困らないし、
LCD表示器使うとシーケンス制御が面倒くさいよ。
32bitのBCD変換だけを純粋に考えるなら、32段のBCD加算器かなぁ。
>>377 除算にクロック数が掛かるというのが、引き算の回数
という意味で捉えているのであれば間違い。
通常はシフトと漸近法を用いるからビット数分かかる。
パイプライン処理出来るし、問題ない場合が多い。
>>378 >そもそもさぁ、非力なFPGAで32ビットの入力値をBCD変換して
>LCDに表示するって言う要求が間違っているんじゃないの?
そういうことではなくて、技術的にどのようにするものなのでしょうか?
ということです。
>32bitのBCD変換だけを純粋に考えるなら、32段のBCD加算器かなぁ。
加算ではなくて、入力値のデコード、変換の方法を知りたいです。
>>379 >通常はシフトと漸近法を用いるからビット数分かかる。
>パイプライン処理出来るし、問題ない場合が多い。
あっ、なるほど。割り算回路を自作すればいいんですね。ありがとうございます。
変換方法全体でいくと、最初に書いたように、
100で割る、表示、残りを計算、10で割る・・・・という方法でやっていらっしゃるのでしょうか?
381 :
774ワット発電中さん:2012/06/17(日) 11:53:36.57 ID:6+EjgA5/
マイコンを使うべしって言ってる奴はトンチンカンだよな
FPGAでやるならどうするかって聞かれてるのに・・・
「1+1はなんでしょうか?」 ⇒ 「1と1を足すのが間違ってる!」って答えてるようなもん
>>382 ありがとうございます。そのキーワードでは探していませんでした。
検索したら、0〜4までは、そのまま。5〜15?は+3して・・・みたいなページを
見つけました。まだ理解していませんが、そういうやり方があるんですね。
大変勉強になりました。感謝いたします。
あと小数点は、どのようにするのでしょう。
マイコンなら、printf()で自由に表示できるのですが、FPGAではどのようにしていらっしゃるのでしょうか。
固定小数点なら、整数部分は、今回の方法で良いと思いますが、
小数部分は、
1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256
>>381 >マイコンを使うべしって言ってる奴はトンチンカンだよな
>FPGAでやるならどうするかって聞かれてるのに・・・
普通やらないんだから、聞いても無駄だってことだろ
ほら、
>あと小数点は、どのようにするのでしょう。
>マイコンなら、printf()で自由に表示できるのですが、FPGAではどのようにしていらっしゃるのでしょうか。
こんなこと言い出すんだよ。
>>381 が答えてくれるってさ。
>>383 >マイコンなら
Cでprintf()なんて関数使わないで固定小数点のバイナリをBCDに変換するコードを書く。
これがC言語上で行うFPGAで行う固定小数点のバイナリ->BCD変換のアルゴリズム開発みたいなもの
ADデータは8bitのバイナリで
0xFF: 2.55V
0x00: 0.00V
の電圧を表す
これを人にわかるようにBCDで表示したい。
先ずこの場合のバイナリの小数点はどこにあるんだ?
ひょっとしたらこんな対応かも知れないぞ
0xFF: 127V
0x00: 0V
こんなかも
0xFF: 255V
0x00: 0V
マルチプレクサでAD入力信号を切り替えられるようになってて
マルチプレクサの各入力にはアンプやらATTついていたな。どうしよう
>>384 >普通やらないんだから、聞いても無駄だってことだろ
普通がどうやってやっているか知らないので、お聞きしたんです。
「普通はFPGAでそんなことはやらないんだよ」と教えてくださればそれで良いのです。
普通はやらないということは、既にFPGAの常識を知っている
>>384だから言えるわけで、
何もしらない僕は、「どのように処置しているんだろう」と思うんです。
>>こんなこと言い出すんだよ。
悪かったですね。
そんなこと言うお時間をお持ちなら、「普通」は、どのようにしているかを、教えていただけないでしょうか。
「普通」は痛い奴の相手はしないよ(藁)
その場合場合で適切な回路を組むだけなんで「普通」なんてのは無いだろ。
それと32bitの数値が何者かで適切な回路は変わってくる。
情報が少なければ望んだ回答が得られないのは必然。
除算以外の方法では、32bitがカウンタの値ならBCDカウンタを
別途組むというのもひとつの方法。
要は回路化しやすいかどうか、同時処理できるという
FPGAの特性を生かせるかどうかだね。
あれだ、SystemC 使え。
>>386 「普通はFPGAでそんなことはやらない」
なぜならば、BCD というのは、人が見るためのものだからだ。
BCD変換だけ出来ても仕方がない。人に見せるには、他にいろいろやらないといけないはずだ。
人が見るということは速度も必要ない。だから、普通はマイコンでやる。
もし人がPCでデータを見るならば、普通は装置側に BCD変換は必要ない。PC で変換すれば良いはず。
まぁ、マイコンなんて無くて、集積度も全然たいしたこと
無いような時代にも電卓はあったわけでね。
最初から全部BCDで組む方が現実的かもね
そうだね、大昔はALUが4bitとかだったからね。
>>392 8bitCPUはCなんて使わないでアセンブラでやってたんだよな
その当時の人どうしてたんだろな
ついでに8bitCPUが高価時代はADデータを74ロジックでロジックんで
7セグでデジタル表示してたんだろ。どうしてたんだろな
普通はFPGAではやらないからで済むって、ほんとゆとり時代って良いよな。
だから、ソフトもハード屋もドカタでOKになったのかも
俺のじゃなくあいつらにやらせろ
>>393 7segLED 用のドライバICがあった。たしか7447。
FPGA内蔵マイコンでやるって言うならそれをCでどう書くんだ
これならやりなれているから簡単に答えられるだろ
>>391 確かはじめてのマイコン(4bit)が電卓用だったって聞いたことあるな
マイコンがない時代はHEX表示電卓だったのかな
>>393 少しスレチだが1chipCPUが8bitの時代には、A/Dとか12bitまでは普通にあったよ
確か東芝が12bitCPU、富士通が16bitCPU開発してた。主流にはならなかったけど。
あと、BCDの処理のしかたとしては4bitずつシフトして計算してました。
>>390 BCD表示のためだけにマイコン追加するって
どんだけ甘やかされた設計してきたんだか…。
>>394 こんなところに来るって。ついにム板を追い出されたのか
おまえC得意だろ。宿題で
ADデータ12ビット、
FFF:4.095V
000:0.000V
に対応する
4桁BCDにする変換するコード書け。
だたしCのprintf()等の変換できる関数は使わない
とあったらどんなコード書く
BIN->BCD変換を自前で作るのいやなら
>>383の言っている
Shift and Add-3 アルゴリズム使う
>>398 えへへ、両方みているのはお互い様でしょ、別に追い出されたわけじゃないけど、そんなむずかしい問題はかんべんしてえ。
>>397 BCD 表示のためだけに マイコンが必要になることは、普通ない と言っているだけなんだが。
>>369 というより聞いてる内容が「どれが正解ですか?」って事だよね。
どれも正解で、目的によって適した物が違うだけの話。
100を引きまくる。引けた回数を表示。
10を引きまくる。引けた回数を表示。
余りの数を表示。
これも正解の一つ。Cで書いてもHDLで書いても正しい結果が得られる。
ちなみに、気づいてるかどうかわからないけど、これはまんま割り算だよ?
小学生の時に習った筆算での割り算そのもの。
2進数でやるか10進数でやるかの違いはあるけど、割り算回路も基本同じ事してる。
(最適化は色々あるので、言葉のまま捕らえないように)
マイコンでCなら〜FPGAでは割り算が苦手(clock数かかる)
マイコンも割り算回路を持っていない機種だと数10〜100クロックかけて割り算してるんだけど、
それは苦手とは呼ばないの?中ではライブラリが加減算回路を使って割り算を実行してる。
FPGAが割り算苦手かどうか、自分で書いたアルゴリズム(100引きまくって〜)を実装して
見れば良いと思う。思った以上に小さな回路ができあがると思うが。
正解は一つじゃ無い。
外部にマイコン付けるのも、FPGAにマイコン実装するのも、HDLで書くのも全部正解。
一端D/A変換してBCD出力のあるA/D変換器に突っ込むってのもひょっとしたら正解かも知れない。
>>401 とうもありがとうございます。
大変わかりやすいご回答で、納得できました。
>小学生の時に習った筆算での割り算そのもの。
はい。それは知っています。マイコンのCでやるときに、自分で考えた方法ですので。
途中で小数点を入れたり、ゼロサプレスを入れたりして、今でも使っています。
ご察しの通り、
みなさんがFPGAで、どんな方法でやっているのか、もし定石的な方法があるなら、
それが「解」だろうと考えていました。
>割り算回路も基本同じ事してる。
この説明を読んで、自信が湧きました。
「こんなやり方をしていると、ヘタだなと思われやしないか?」と、
ビビっていたのです。ありがとうございました。
>マイコンも割り算回路を持っていない機種だと数10〜100クロックかけて割り算してるんだけど、
>それは苦手とは呼ばないの?中ではライブラリが加減算回路を使って割り算を実行してる。
気がつきませんでした。人間相手ということもあり、十分に速度で変換出来ているな、と
思っていたのです。
ただ、ロータリーエンコーダーのup/downをLCDに表示させる時、数値のLSBが1つ変化するだけで、
全桁をリフレッシュするので、割り算というかBCD変換時間が気になることがあります。
>FPGAが割り算苦手かどうか、自分で書いたアルゴリズム(100引きまくって〜)を実装して
>見れば良いと思う。思った以上に小さな回路ができあがると思うが。
確かに、やったことがありませんでした。
上述のように「FPGAの人たちは、もっと格好いい方法でやっているんだろうな」と
思い込んで、試してもいませんでした。ちょっと明日やってみます。
>一端D/A変換してBCD出力のあるA/D変換器に突っ込むってのもひょっとしたら正解かも知れない。
その通りですね。ありがとうございます。
以前に、FPGAの乗算器の使い方が良くわからなかったので、
外部に出して、アナログ乗算器ADxxxを載せて、DA→乗算器(他の数値を掛けて)→ADで取り込む、
ということをしたことがあります。それなりにはできましたが、
客先から「なんでFPGAで乗算しないんだ?」と問われて、本当のことが言えず、
適当に言い訳したこともあります。
FPGAを始めて間もなくて、FPGAにマイコンを入れることができないので、
外部にPICとかSHとかのマイコンを置いて、外部バス接続でFPGAと接続。
FPGAには拡張I/Oのような使い方しかできません。
そのうち「なぜFPGAにマイコン載せないの?」と言われそうでビクビクしています。
(あの煩雑なバス接続手順と、自作モジュールのバス接続が難しくて)
みなさんの、BCD変換方法などのお話、大変勉強になりました。
ありがとうございました。
外部に何かつけるなら、ROMつけるのが手っ取り早い。
クロック不要で一発変換
>>393 >>397 表示だけのためにマイコン使うのはイマドキ当たり前だろ。
無理してFPGAに詰め込むのは趣味の範疇だろ?
ADC で BCD 表示のやつは積分用のカウンタが BCD になってるわけで、
わざわざバイナリーから変換してるわけじゃない。
ゆとり世代をバカにする前にシステム設計できるようになれ。
405 :
774ワット発電中さん:2012/06/18(月) 09:47:42.98 ID:lyAYiztV
だからズレてるって言ってんの
How to do を聞きたいのに、what should be を答えてるっていい加減気付けよ
こういう奴が議論入ると、ただかき回すだけで全然進展しないんだよな・・・
Was sollte gemacht werden ではあるけど、
>>393 に返しただけだ。
ここでコレを言っても馬鹿にされるにせよスレ違いとは言われないよな
日本語でOK
>>407 おっ、ドイツ語だね。 もしかして、あの人?
キチガイは
>結局どんなものが出てきても文句言ってるっていう気がする。
だよな。
もう、自分や自分の会社で文句でないの作れだよな
>>405 その通りだよな。
マイコン使いの質問者はSpartan3評価ボードでFPGAソフトマイコンをやりたいわけじゃないよな
マイコン使いがあえてロジック回路でやりたいから質問したんだろ
ついでに、質問者は仕事でLCD表示ならFPGAなんて使わないでマイコンですると思う
>>402 自分ならどうするかな?
「FPGA評価ボードでBCD表示する」というのがお題目だから、マイコン外付けなんてのは無し。
昨今のFPGAなら普通にプロセッサ入れてるので、それに表示させてしまうが、
Spartan3の小さいのだとつらいな〜
ちなみにFPGAにプロセッサ入れるのはそんなに手間じゃ無いと思う。
慣れてしまえばかなり便利なツールになるよ。仕事で言われる前に今のうちに苦労しておこう。
そうなるとHDLで書くことになるかな。
100引きまくって〜の実装か、テーブルで変換するか…
BCDカウンタを入力値回カウントアップする方法にするかも。
4桁9999まで回してもクロック10MHzなら表示遅延1ms、人の目にはわかるまい。
マイコンじゃ許されない実装だけど、FPGAなら問題ないかと。
BCD変換のために必要な機能だけを持ったスクリプト処理する
CPUもどきの小さいシーケンサみたいなものを一つ作っておいて、
スクリプト(プログラム)を食わせていくだよ。
>>413 それとハードのBCD変換、どちらが良いか(気持ち的にどちらをよりしたいのか)
でも、俺なら小さい俺設計プログラマブルシーケンサ入れるならLCD表示、BCD変換も出来るシーケンサにするな
LCDの初期化、データ待ち、来たらBCD変換して、LCD表示、データ待ちにGo
>>414 その辺りは、必要なリソースとのさじ加減でね。
スクリプト処理エンジンは一回作って要領を覚えておくと
とっても便利だよね。
スレチだけど
>>393 >その当時の人どうしてたんだろな
何の風に乗ったのか知らないけど、大学で先生になった人なら知ってる
>>402です。
秋月でLCD買ってきて、FPGAから文字をだそうとしていますが、
BCD変換以前に、FPGAでLCDを使うのが、とても難しいみとがわかりました。
LCD初期化の段階でもう躓いて(つまづいて)います。
Eの↑↓を、関数のように使おうと、1つのモジュールにしました。
初期化の前半には、0x30, Eの↑↓, 0x30, Eの↑↓のような部分があります。
後半では、LCDのモードを決めるために0x28などを送信、その中でもEの↑↓を実施。
と、なった時点で、困ってしまいました。
前半ではE()の関数を直接使用し、後半では別のモジュール内に組み込んで何回かコール。
1つのモジュールを、複数のモジュールから呼んで、出力先は同じピンというところで、
頭がボケボケになりました。今日1日でも出来なかったので、明日引き続きやります。
418 :
774ワット発電中さん:2012/06/20(水) 09:32:21.35 ID:JFgRoIgN
初期の俺と同じ轍を踏んでるな
ソフトの感覚が抜けないとそうなっちゃうんだよな
最初のシーケンスを出すモジュールと、後のシーケンスを出すモジュールを
出力のところでセレクタで切り替えるという方法が一番わかりやすくてよいよ
回路でかくなるけど、まあ最初はいいでしょ
419 :
774ワット発電中さん:2012/06/20(水) 10:41:15.99 ID:chzLUI/A
ありがとうございます。
僕も似たようなことを考えています。
トップ階層でピンに出ていく直前で、「切り替える」か「or」した結果を、
D-FFで掬って(すくって)同期させて、ピンに出せばいかなと。
>>417です。
今日も1日、Verilog書きまくりました。が、まだ出来ません。
コメントも入っていますが、300行を軽く越えました。
case( d )
3'b0 : a<=1'b1; b<=8'h30; c<=1'b1; d<=8'h30;
3'b1 : a<=1'b1; b<=8'h30; c<=1'b1; d<=8'h30;
3'b2 : a<=1'b1; b<=8'h30; c<=1'b1; d<=8'h30;
default :
endcase
日頃は、if() else if()でやっているので、case文を初めて使いました。
上記の場合、
3'b0 : a<=1'b1; b<=8'h30; c<=1'b1; d<=8'h30;
ではなくて
3'b0 : begin a<=1'b1; b<=8'h30; c<=1'b1; d<=8'h30; end
のように、begin , endが必要でしょうか?
ろくな知識もないのに、最初に本を読んでみるとか、Webで情報を探すとか
しようと考えないのかね。ときどき、こういうのが出てくるが。
適当にやってみて、聞いてみて、またやってみる。ソースを見ると、そんなの
本をちょっと読めば分かるだろうとか、本を読んでりゃ、こんな記述しないだろう
と思う時がある。効率的なつもりなのかもしれないが、回り道じゃないの。
1日書きまくる時間があれば、本を読めよと言いたくなる自分は古い人?
書きまくった末に出てきた、幼稚なソースを見ると、自分が関係していたらと
思うと、いたたまれないね。
偏見かもしれないが、こういうのがゆとりなのかなと考えてしまう。
この程度の知識で、目標は結構高いから、すごいとは思うけど。
スレをあんまりさかのぼって読んでないから、誤解があるかもしれないが。
422 :
774ワット発電中さん:2012/06/21(木) 08:49:13.55 ID:xGnBL6zc
>>421 上級者から見ると、初心者は効率悪くて当たり前
手順や考えが洗練されて、というより、洗練されること自体が成長というもんだからね
でも、いちいち初心者の日記をこのスレに書くなという気持ちはわからんでもない
お前の試行錯誤はどうでもいいから、何か困ったり進展があった時だけ書けばいいんじゃね?とは俺も思う
423 :
774ワット発電中さん:2012/06/21(木) 09:58:38.42 ID:eq8ADpQB
>>417です
そうですね。失礼しました。
不快にさせてしまい、すみませんでした。
>この程度の知識で、目標は結構高いから、すごいとは思うけど。
目標は勝手に高くして、努力する気も、自分で考える気もないけど、
無償でそこまで自分を引き上げてください
だもんな。
>>423 複数の式をまとめて指示したいなら、 begin endでくくる必要がある。
でないと、最初の ; で終わりだと解釈してしまう。
if() begin a<=1'b1; b<=8'h30; c<=1'b1; d<=8'h30; end
と書くのも、4つの式を1つにまとめて扱うために、begin endを書くでしょ。
Cの { } と同じ。
気になる記述、自信がない記述を調べるときは、
実際にQuartusやISEでコンパイルしてみるといい。スグに結果がわかる。
記述に慣れていない時期は、構文を体で覚えるほかに道はありません。
理屈でなく、体力勝負だと考えてください。
(自称「上級者」の方々も、単に経験値が多いというだけで大したことはないです。
君と同じような時期を経験したはず。心配せずに記述練習をしっかりするといい)
>>421,422,424
人間が小さいね。
>>425 そのとおりですよ。(笑)
金と手間を省くために、人の良い人を利用することに、嫌悪感を自分は感じる。
あなたのように、便利に利用されても構わないという人もいて良いとは思いますよ。
ただ、利用する側の人間には感謝の振りはされても、感謝はされないですけどね。
ただ、ひとつ追加すると、便利に利用される人のことを、世の中では、おそらく
人間が大きいとは言わないと思いますよ。
お前らってスレで感謝なんて期待してるのか
>>426 >金と手間を省くために、
それならここで質問している人は全てだろ
お前も金と手間を省くために人の良い人を利用するためにいるんだろ
別に感謝なんて期待してないけどね
>それならここで質問している人は全てだろ
自分で考えることすら放棄して、問題丸投げなのと、自分で考えていろいろ
やってみたけど、どうにも腑に落ちないというのを一緒くたにしてないか?
>>428 金払ってもロクな回答もらえないんだぜ。
サポートとかサポートとか。
>>430 会社はお金有り余っているのか
とうぜん高給だろが
432 :
774ワット発電中さん:2012/06/22(金) 21:02:34.65 ID:PWnYHKt1
ただなんとなく人がよってたかって
他愛もない話して
気まぐれで親切したりして
小さな事に感謝したりして
そんなもんじゃない?
2chなんて
なんで上級者って、威張るんだろう。
「おれも苦労して覚えたんだ。おまえもその苦労を味わえ」ってとこだろうか?
緑色の掲示板でも、威張った人がいたよね。
>>433 誰も苦労したなんて言ってないよ。本でも読んでからにしたらって言っただけ。
丸一日、使っても、大したレベルにならないんだから、やり方を変えたほうがよい
という、至極当たり前だと思うが。
ゆとり世代にとっては、それが威張るということなのかな?
1日、サンプル入力して動かしながら、本を読めばある程度のことはわかってくる。
そのほうが、掲示板で聞くよりも、ずっと効率が良い。君はそう思わないのか。
自分で調べたくないから、人に聞いて済ませようという、ずるい考え方じゃ、
大した知識は身につかないよ。
>「おれも苦労して覚えたんだ。おまえもその苦労を味わえ」ってとこだろうか?
なるほど。「覚えること」・・暗記するようなものなのだと思って
るのかな?きっとどこかに模範解答があって、上級者はどこかでその
模範解答を見て丸暗記してるはずだ。俺様にも模範解答を教えろと、
こういう感覚を持ってるのか。
手近な模範解答が目の前にあるんだから、それを見ればいいだけだと
思うから、自分で考えようとか、調べようとしなくなってるということか。
なるほどね。ゆとりならぬ、手抜き教育制度の被害者ってところかな?
>ゆとりならぬ、手抜き教育制度の被害者
手抜き教育制度もそうだが親世代にも問題がある
まさかとは思うがゆとり世代の親世代や教育制度作った世代は社会で威張ってないよな
こんな成果しか出していないのにって笑われているよ
こいつらって年齢的に何歳ぐらいの世代?
>>425です。
みなさん、いい加減に上から目線をやめたらどうですか。
二言目には、ゆとりだ、手抜き教育制度だって言うひまがあったら、
彼らに、調べ方、勉強の仕方を教えてあげてください。
将来のFPGA界、ひいては日本を背負って立つ連中ですよ。
みなさんは、もう十分に社会貢献してくれたことだと思います。今の日本があるのは、
上級者のみなさんのおかげだと思います。どうかこのあとは、
「魚を与えるのではなく、魚の捕り方を教える」でお願いしますよ。
次の世代に、技術伝承することにも、気を回してください。
お願いします。
>>437 あなたがいるから大丈夫じゃない。あなたが教えて上げるんでしょう。
人を利用して、楽をしようなんて奴は、どこの世代であろうと自分は相手に
しない。それに、なんでも、手取り足取り教えるのが良いとは限らない。
今回の質問者だって、あなたが教えていれば、ずっと頼って自分で調べなくなる。
そのほうが、結果的に、彼の技量を下げてしまう。
世の中には、書籍もいっぱいある。いつの時代でも、ちょっとした努力をする
ことで技量を上げられる。人に教えてもらうことを待っているだけの人間は
所詮使いものにならない。
ゆとり世代は、労働市場において、不良債権のようになるんではないかと自分は
予想している。したがって、期待してない。
新しい世代は、ゆとり教育をやめたので、いずれ、ゆとり世代はサンドイッチに
なる。そうすると、リストラのときにはゆとりから、採用のときには、ゆとりは
後回しという時代が恐らくくると思う。
>人を利用して、楽をしようなんて奴は、どこの世代であろうと自分は相手に
>しない。それに、なんでも、手取り足取り教えるのが良いとは限らない。
なら、最初から静かにしていればいいんじゃないの?
自分は相手にしないんでしょう?
>今回の質問者だって、あなたが教えていれば、ずっと頼って自分で調べなくなる。
これには、あなたの思い違い、思いこみがありますよ。
>ずっと頼って自分で調べなくなる。
あなたは、質問者に聞いたのか? あんたの思い込みでしょ。
調べ方を知らないですよ、今の子は。人間には元来、自分で頑張ろうとする気持ちはあるのです。
その方法がわからない、わかったときの喜びを知らないだけなんです。
>あなたが教えていれば
あなたは、私に聞いたのか? ずっと教え続けるのかと、聞いたのか? あんたの思い込みでしょ。
私は、全部が全部、いつでもどこでも、教えるわけではないです。
もちろん、いつまでも教え続けることもしません。
自分での調べ方、考え方を教えます。
>>425の私の書き込みを見て
それがわかりませんでしたか? わからないなら、もう一度
>>425を読み返してみてください。
確かに、最初は教えますよ。
でも2回目からは、全部は教えません。最後には「自分でやれよ」と言います。
物事を教えるときには、3つのステップがあるのです。
まず「教える」 次に「実際にやって見せる」 そして「自分でやらせる」 の3つです。
親や先輩が若い者にすべきことは、答えを教えることではなく、答えの出し方を教えることです。
これを、われわれ年長者が確実に実践しないと、日本の将来はありません。
上級者さんは、現在状況に満足することなく、将来の日本のことも考えて下さい。
宜しくお願いします。
>>436 一つだけ、間違いを指摘しておくと、制度を作ったのは文部省で世代は関係ない。
制度を作った世代というと、あたかも作成に関与したようだが、一般国民は
ほとんど関与してないかんね。
一節には、ゆとり教育の目的は、教員の週休二日制と言われている。もし、そうだとしたら
ゆとり世代は、先生の週休二日制獲得のための犠牲になったと言えるのかもしれない。
ゆとり教育は、学力が低くないという主張もあるし、客観的な評価とは必ずしも
いえない。今は、単に、世評でゆとり教育世代は学力が低いと言われている状況だろう。
本当は、結果を出すのはもう少し先にするべきなのかもしれない。
文句言うのは全然かまわないが、人のせいにしても問題は解決しないよ。
>>439 あついですね。日本の将来はあなたにまかせましたよ。頑張ってくださいね。
あなたの熱意が、若い人に通じるといいですね。
>>440 >先生の週休二日制
って先進国では珍しいのか。他が週休二日が当たり前なのに日本週休二日
にしたら駄目駄目になりましたじゃな
>>442 ゆとり教育で駄目になったとは、言ってないと、思うんですが。しかし、ゆとり教育を放棄したことで、
失敗だったと認めたという証拠とみなされているという側面はあるんでないの。
結果はどうあれ、ゆとりと呼ばれ馬鹿にされているということがあるとすれば、
そして、その目的が週休二日制が目的だっとしたら、生徒はかわいそうだったなとは思うよ。
しかし、もしそうだとしたら と言っている通り、あくまで仮定だからね。
ゆとり教育というのは、あれだ、
経済的にゆとりのある家庭は学校以外の教育に金を掛け
経済的にゆとりのない家庭は学校教育だけしかできず、
結果的に貧富の差を拡大再生産させるために
与謝野さんが作った施策なのだ。
ゆとり世代といっても、大手の企業に入ってくる人間は基本優秀だから平均像がつかめない今日この頃
ただまあ、個人、個性と連呼されてわがまま放題と自由を同一視してたりする部分と、
超買い手市場&不安定な職場環境で社蓄ぶりをアピールする姿勢が分裂ぎみではある…
趣味が電子工作で物静かでおとなしい新人(いわゆるネクラなオタク)は超優秀で何やらせてもすぐ上達するね。
このクラスになると氷河期だろうがバブルだろうが団塊だろうがそんなに多くはいないだろう。
期待の人材である
>物事を教えるときには、3つのステップがあるのです。
>まず「教える」次に「実際にやって見せる」そして「自分でやらせる」
>の3つです。
完全にどこかの大将さんの受け売りだなぁ(笑)
でも、それが二度目なんだとネットでわかるのかい?
同じ奴が毎回丸投げ・・それで「最初は・・」といって、答えだけ
与える、その繰り返しになるんじゃねぇの?
「教わる」んじゃなくて「学ぶ」
「学ぶ」はこれすなわち「真似 (まな) ぶ」
学ぶ姿勢を持った奴と楽して教わろうとしてるだけの奴とでは
質問の仕方が根本的に違う。
あるいは単に要領が悪いだけの奴もいるだろうが、
自分で気づけない奴は結局ダメ。
「教える」という行為は相手の技量が分からないと
余計なことを教える手間が増える。
だから掲示板で「教える」を実現しようとすると
相手の知識レベルを探りながらになるのでチャット状態になる。
そんな手間かけるほどのメリットは教える側には無い。
それにひとつの事を教えるのに10の予備知識が要る事だってある。
それを全て説明するのにどれだけ労力が必要か…。
ひとつの事に絞って質問されるのは全然問題ないけど
漠然と「全く分からないから教えて」はやめてくれ。
質問するのにも技量が必要ってことですね。
誰か、質問ないですか?
P = A xor B のとき
C(out) = A・B + (A + B)・C(in)
が
C(out) = ~P・A・B + P・C(in)
になるそうですが
C(out) = A・B + P・C(in)
じゃだめなんですか?
>>452 金と手間を省くために、人の良い人を利用することに、嫌悪感を自分は感じる。
>>453 人の文章を抜き出して使う奴にも、嫌悪感を自分は感じるよ。(笑)
>>455 高すぎてじゃなく、低すぎてスルーされてるだけでしょ。
>>452 は、あちこちにマルチで書きまくってるから、誰か答えてくれるんじゃないの。
>>457 そうなのか、じゃあ俺が回答するのは止めておこうっとw
>>420 まさかとは思うが、dはちゃんと、
REG [2:0] d;
みたいに、レジスタで宣言してるよな?
大半の人は、実は釣り質問。
単に馬鹿な回答者がいればそれでいい。
AVRスレから拾って来た
大半の人は、実は質問に答える気はない
単に盛り上がるネタがあればそれでいい
これ分るよ
質問させてください。
音声処理させるのに、DSP(TIなどの)が 昔から使われています。
その理由は、
1 乗算器を1個〜8個など持っている
2 フィルタなどの処理が高速でてきる構造に、作り込まれている。
3 PLLなどを使用して、clock=1GHzとかで動く
4 低消費電力、低価格
などが、FPGAには苦手だったからだと思います。
しかし近年のFPGAは、進んでおり、上記のほとんどの点で同等か超えていると思います。
1 FPGAだと乗算だけでなく「積和ハードマクロ」が、100個200個、多い物は2000個も乗っている。
2 上記の積和マクロ=DSPは、専用の高速レイヤがあり、DSP同士のカスケードもできたりする。
3 500MHzとかなら、行ける
4 低消費ではないし、高価。
3は、1の個数があることで、DSPを凌駕していると思います。
4の低消費だけはダメですけどね。
4以外の点ではすでにFPGAはDSPを越えているという認識は、間違っているでしょうか?
そやね
>>463 載せれば載るけど、それをどうやって上手く動かすかっていうあたりは
とっても難しいし、そこまでの性能が必要な用途では、今度はGPUだの
との比較になってくるんじゃない?
>>463 人の良い人を利用することに、嫌悪感を自分は感じる。
467 :
774ワット発電中さん:2012/06/29(金) 17:42:22.37 ID:nipspPWP
じゃ、どうしろと?
相応の報酬を払うことで罪滅ぼし
FPGAスレあるのにわざわざHDLスレでFPGAについて質問
まさしく
>大半の人は、実は釣り質問。
>単に馬鹿な回答者がいればそれでいい。
それに対しては
>大半の人は、実は質問に答える気はない
>単に盛り上がるネタがあればそれでいい
2ch の終わりの始まりの始まりだな
>>463 低消費電力と低価格というのは量産品では最も重視される点だから、
必要な能力さえ確保できていればDSPで十分。
余剰性能で価格が上る物を選択するのはナンセンス。
それに、低消費電力なら電源回路のコストも下げられる。
FPGAや処理能力があるCPU・マイコンに市場を食われてDSPはいまやあんまり使われてないよな
消費電力が小さいほうがいいけど、
常時給電できるならあんまり重視しないかな。
>>475 なんでFPGAでやらないんだろうか。
価格と電力以外に壁でもあるんだろうか。
順序動作の制御(状態遷移)が、マイコン(DSP)のほうが楽なのかな?
>>476 そういうアンプを作ったりする会社にハードウェア設計できる人がいないからじゃないのか。
量産品では、価格や消費電力って非常に大きいファクターでしょ。
あと、単に積和演算器を固定で並べりゃOKってことじゃないからね。
ノイマン型のフレキシビリティというのは大きい要素よ。
479 :
774ワット発電中さん:2012/07/01(日) 00:13:16.14 ID:e19yEbCQ
やりたいことがDSPで処理できるのであれば,わざわざFPGAを使う必要はないでしょう.
DSPやFPGAを使うこと自体が目的ではなく,要求されている処理を実現することが目的なのであって,
それが汎用のマイコンで実現できるのであれば,過剰スペックなハードウェアを採用する必要はないでしょう.
その点で,FPGAの余ったリソースでソフトマクロのマイコンを搭載する,というものがありますが,
実際どれくらい使われているものなのでしょうか?
FPGAのリソースが余るくらいなら,1ランクしたのFPGAを使い,
浮いた分で外付けのマイコンを追加したほうが
価格や開発工数の点で有利になるのではないでしょうか?
>>479 基板面積と部品点数を考慮しなければ、その通りじゃないか?
>>479 >浮いた分で外付けのマイコンを追加したほうが
費用的には、そうかもしれないけど、マイコンとFPGAの間は、何でつなぐの?
Data[15:0]
Adr[3:0]
Read, Write, nCS
としても、FPGAのI/Oを20本くらい消費してしまうので、FPGAのランクは下げられても
I/O数で大きなものにならないか?
部品のほかに配線面積も結構なものになりやすい
マイコンをFPGAに入れればいい
IPですねわかります
485 :
774ワット発電中さん:2012/07/01(日) 15:24:41.73 ID:klTCjjlu
マイコンの方が圧倒的に値段安いじゃん
数百円のマイコンと何万円もするFPGA(ものによっては100万行く場合も)比べてどうすんの?
やろうとしてることが汎用的なことならマイコンやDSP使うのは当たり前だと思うけど?
値段もそうだけど、電源設計がマイコンの方が圧倒的に楽だな
マイコンはオワコン
だがそれがいい
>>485 数百円のマイコンと比べるなら
Lattice/MachXO2 クラスだろ
もう大分前からFPGAにはマイコンを内蔵するのが普通で、マイコンのプログラムが十分
出来ないFPGA屋はいないからな。
GHzは厳しいが500MHz程度の動作マイコンならFPGAに楽に入れられるから
FPGA搭載するともうマイコンは要らないだな
>>491 知らないことを自慢げに語るのは止めようぜ…
あれ?IDかぶったw
>GHzは厳しいが500MHz程度の動作マイコンならFPGAに楽に入れられる
それIPコアじゃねえだろw
ハードマイコンFPGAに入れてるんなら、マイコンいらねってのは矛盾だよね。
FPGAにマイコンのソフトIPは”楽”には入らないよ。
本当に楽に入るなら、CPUエンベッデッドなFPGAなんていらないじゃんwww
どっちが優れているってわけでもないけど
秒単位の処理しか必要のない処理には、マイコンのソフト処理で充分なことは多いな。
逆にmsを切る処理になってくるとソフト処理では色々と制約が出てくるんで
FPGAに組んでハードロジック処理した方が簡単っていう感じの傾向が出てくるし
us単位だったらFPGAで組んだほうがちゃんと動作するのは確実になってくる。
結局、用途によって使い分けるってのが正解でしかない。
自演乙w
間抜けなツッコミって、白けるよねw
ms程度の処理でも、複数ch実装するとなると、マイコンにはつらい。
FPGAの世界では、16chなんて普通で、多いときは128ch, 256chの処理なんてのもある。
1ch作って性能OKなら、必要ch分copyすればOK。
これはマイコンには出来ない芸当だね。
マイコンだって、パラで使えばいいっしよ?
1x1mmぐらいのマイコンなんかは
パラにしてみたい誘惑がある。
501 :
479です:2012/07/02(月) 00:12:47.41 ID:OgeAlblh
>>485 おお,今まさに使ってるFPGAです.
ソフトマクロの8bitマイコンが搭載できるようなので,
ランクを少し上げて容量の大きなデバイスにすれば使えるのではないかと検討したものの,
メーカ代理店に聞いてみると,外付けのマイコンにしたほうが色んな意味で安上がりですとのことでした.
このクラスのFPGAであれば,ソフトマクロのマイコンを搭載できるはするものの,
実際のところ,外付けのマイコンでも同程度の処理は実現できると思います.
でも,もっとハイエンドクラスのFPGAになってくると,
ソフトマクロのマイコンであれば実現できるが,
外付けのマイコンでは太刀打ちできない,
というようなことがあるのでしょうか?
>>501 ハイエンドクラスのFPGAでは
ソフトマクロ >> 外マイコン
>>501 >外付けのマイコンでは太刀打ちできない,というようなことがあるのでしょうか?
多くの部分はマイコンのほうが上。
FPGAにはできて、ほとんどのマイコンにできないことは、
・200MHzを越える超高速clock
・DSPハードマクロ、GBT、ユーザ作成のIPなど,超高速なペリフェラルとマイコン処理の混成
・マイコンでは廃品になると「エラいこっちゃ」となるが、FPGAなら影響なし。
・UARTなど、ペリフェラルの追加削除
>>501 IPコア使った奴は分からんけど、
少なくともFPGA上に物理的に乗っかってるプロセッサは外部に接続されたものよりデータ転送においてはるかに高速だろうな。
Virtex-4のはコア400MHzでバス200MHzだっけ?記憶遠いけど。
506 :
774ワット発電中さん:2012/07/02(月) 01:12:37.80 ID:+YsPcSwf
それでも恐ろしい速度だ。
マイコンの外部バスには出来まい
80286 あたりはマイコンだったのに、
86系は、いつからマイコンじゃなくなったのだろうか・・・
508 :
774ワット発電中さん:2012/07/02(月) 09:33:08.98 ID:XvN79WvG
俺のやってる分野からしたら200MHzは中速って感覚なんだけど、超高速はGHz超えてからだろ
509 :
774ワット発電中さん:2012/07/02(月) 10:22:38.55 ID:+YsPcSwf
そういう中で、TIなどのDSPは、何が嬉しいのかわからない。
Cで書けるのが嬉しのかな
>>508 200MHzが中速クロックで1G超で高速クロックって
どんなFPGA使ってるんだ?
>>509 浮動小数処理が簡単にできるから
でもFPGAでも浮動小数点処理を普通にするようになってきているからな
FPGAメーカーのおかげで低脳でも浮動小数点処理が出来るって良い時代
ま、C言語で書けるのは大きいがな。
DSPのアルゴリズムはC/C++やmでやっているのに
それをRTLに落とすの面倒過ぎるからな。お前らはDSPのアルゴリズムは何を
使って開発・検証やってるんだ? まさかHDLでってことないよな
>>509 TI DSPのCコンパイラはあれはコンパイラ兼ライブラリだ。
速いアセンブラ記述いっぱい抱いててそれらをあてていく。
石のバグ情報も全部抱いていてNOPを山のように自動
挿入してくれるぞ。
パラレルで200MHzは高速かもしれないけど、シリアルで200MHzは高速とは言えないってことじゃ?
>>511 なるほどぉ。
CCSのC記述から、DSPをどのように何回回すかを、
FPGAみたいに「推論」してくれるということですか?
ユーザーは、何も考えずに、ひたすらCを記述すればいいと。
おまえは、何も考えずにCを書いてるのか・・・
いえ、そういうわけではないです。
今日の食堂、ランチは何かなとか、残業パン早く来ないかなとか、
課長は何時に帰るのかなとか、考えてはいます。
>>515 C言語出来るって凄い
FPGA使っている奴でちゃんとC言語使える奴はあまりいない
>>516 だよな
俺はランチの事を考えないからCはダメだ
>>515 そうだ、CでFIRフィルタってどう書いているか教えて
>>517 >>515が言いたいのは
全く関係ないことを同時に並列思考出来る位なやつじゃないとC言語は無理ですよ
ってこと。人間マルチタスクって凄い奴。
俺なんかそんなこと出来ないから並列動作が普通のデジタル回路すら四苦八苦
C言語なんてとても無理
>>519 まあOSみたいな人生マルチタスクでいいんじゃなかろうかと
切り替えはお好みで
割り込みチャンネルは1つで勘弁
一時期C と VHDL と Verilog こなしていた時期があったけど、
今はVerilog のみだなぁ。VHDL はなんとか思い出せるけど、C は無理かも。
PCやマイコンのプログラムもHDLで書いたほうが効率が良いしな
Verilogで、
_(アンダーバー、アンダースコア)で始まる予約語って ありましたっけ?
そもそも_を使用する予約語が無い。
>>522 CPUなんていらねーっていう話ですね分かります
文字液晶の初期化なんか、めんどうだけど
シンセシス中に、ウトウトしてしまいました。
みなさん、眠くならないですか?
教えてください。
基板パターンの関係で、
HDLでbit順列を「ひねりたい」のですが、簡潔な記述は無いでしょうか?
↓Verilogで、8bitの入れ替えの例です。
assign DAT = { d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7] };
d[0:7]
>>529 ありがとうございました。
「これは行ける!」と思ったのですが、Xilinxに文句言われました。
wire [7:0] data = 8'h23;
wire [3:0] dataH, dataL;
assign dataH = data[4:7]; // 反転した上位 4
assign dataL = data[0:3]; // 反転した下位 c
と、やりたかったんですが、
ERROR:HDLCompiler:696 - "C:\hoge.v" Line 61287: Part-select direction is opposite from prefix index direction
ありがとうございました。
そうか、合成はDesignComplierしか使ったことないので。
532 :
774ワット発電中さん:2012/07/12(木) 23:35:32.90 ID:01VcILTV
for i in 0 to 3 generate
dataH(i) <= data(7-i);
dataL(i) <= data(3-i);
end generate;
Verilogもgenerateの中でfor文回せるから似たように出来るんじゃないかな。
>>532 なるほど
そこでverilog のgenerate genvarで
assign DAT = d[0:7] // 8bit幅
を実現するにはどうしたら良いですか?
parameterを使って
任意のビット幅のbit順列を「ひねる」にはどうすれば良いですか
いいえ、彼はペンです。
generate 使わないで普通にalways内かfunctionでいいだろ。
parameterは、localparamじゃなくてparameterなの?
別にローカルパラメーターでなくとも、
良く使うパラメーターでも いいんじゃない?
第一なんでひねるの?リトルエンディアンをビックエンディアンとか?
>>539 >第一なんでひねるの?
・基板パターンでクロスさせるスペースがない
・基板パターンでクロスさせるとインピーダンスが乱れる
・基板パターン間違えた
など、いろいろあるでしょうに。
>リトルエンディアンをビックエンディアンとか?
は?
bit入れ替えだと言ってるのに、エンディアンは関係ないでしょ。
本質的に配線上のbit順には意味は無い
ピンをアサインしなおす、じゃなくて ひねるあたりが
やや謎
大方コネクタを逆にしちまったんだろw
>>537 alwaysとfunctiondでお願いします
うーん、基板パターンでとれなんだか・・・
もしかすると、教科書のシリパラしか使えなくてー
って思ってたもんで
ところでalwaysとfunctionで出来るの・・・?
genelateもわかるけど
ダサくてもいいから、階層化してゴリゴリ書くほうがいいんじゃまいかと思う
一応
genvar i;
generate for (i = 0; i < 8; i = i + 1) begin
assign DAT[i] = d[7-i]:
end endgenerate
>>538 parameter は、上のモジュールから変更する必要があるときに使うんだよ。
547 :
774ワット発電中さん:2012/07/14(土) 01:14:36.14 ID:bGT3MND5
基板で間違えたんならUCFのLOCでひねってもいいのでは。
だよなぁ
基板が理由ならピンアサインし直すのが素直じゃないか
グラフィックで表示パターンを反転させるときにひねる
ISEWebpackの一個前の13.4を入れたんだが
使えるデバイスが少ない気がする・・・
ザイリンクスのHP探しても使えるデバイス一覧とか無いんだが
どこかしらね?
551 :
550:2012/07/14(土) 09:12:00.34 ID:g7eMZ42q
自己解決・・・リリースノートのPDFにありました。
でもなんか少ない・・・
552 :
550:2012/07/14(土) 09:42:21.13 ID:g7eMZ42q
ほんっともうしわけないです。
design propertiesのEvaluationDevelopmentBoardのとこを
nonspecifiedにすれば全部出てきました・・・
しばらく頑張ってみます。
専用のパラレル出力ならucf書き換えでいいけど、
他と共用の場合はダメだし、シリアル通信のばあいもダメだ。
中出し
今年もう半年過ぎたけど、Xilinx のVivadoっていつ出るんだ
>>554 一般相手にサポートが可能かも
しれない程度トライアルの実績
が溜まった頃じゃね
教えてください。
FPGAに内蔵のFIRフィルタIPですが、
1bit入力→16bit入力って、できるのでしょうか?
「いや、入出力は8bit以上でないとダメだよ」とかでしょうか。
もしできるなら、DSD→PCMの変換ができるのでは?と思っています。
製品版はとっくに出てる。
Webpackはそろそろ出るはず。
1bitを矩形波として扱えば大丈夫じゃない?
DSDのデータが1でH、0でLになるような任意のbit数をもつ矩形波に変換してやってみたら?
>>558 ありがとうございます。
ISEダウンロードして、試してみます。
質問連投で、すみません。教えてください。
Xilinx ISE14を使おうとしています。
PlanAheadというソフトで、ピン番号を設定しています。
PlanAhead画面の一番下のExcelみたいな表の、Siteという枠に「AA14」とか書いてゆきます。
複数個を続けて書き込むとき、1つ入力してリターンした後に、
下のセルに移動して次の入力待ちにならず、その下を入力するためには、
いちいちマウスでクリックしないといけません。
こんな感じです。
目的のセルをダブルクリック、ピン番号入力、エンター。
その下のセルをダブルクリック、ピン番号入力、エンター。
その下のセルをダブルクリック、ピン番号入力、エンター。
これを、
ピン番号入力、エンター。(自動的に、すぐ下のセルが入力状態になり)
ピン番号入力、エンター。(自動的に、すぐ下のセルが入力状態になり)
ピン番号入力、エンター。(自動的に、すぐ下のセルが入力状態になり)
という感じに入力出来ないでしょうか?
同様に、ピンの電圧も、デフォルト2.5Vなのですが、
いちいち全部、2.5Vから3.3vに変更するのは、とても面倒です。
Ctrlを押しながら複数選択して、一気に3.3Vにすできないのでしょうか?
初期設定で3.3Vがデフォルトにできないでしょうか。
該当ソフトを使ってないのでわかりませんが、
キーやマウスの操作を自動化するソフトならいろいろありますので、
ソフトウェア板あたりで聞くのがよいかと
>>561 >キーやマウスの操作を自動化するソフトならいろいろありますので、
ありがとうございます。
そういうのがあるんですね。勉強になりました。
ありがとうございます。
563 :
774ワット発電中さん:2012/07/15(日) 01:33:52.44 ID:C9S99b+s
一旦UCFを書き出してしまい、自分が慣れてるテキストエディタで制約を直書きするのが一番早いと思う。
グループに対する制約もワイルドカードで一括指定可能だし。
そうそう、それが一番速いね。
Paceの時代は、LOC、SLOW、12などが1行で書けたのでとても便利だったけど、
Plan Aheadになったから、それぞれが分かれて3行になってしまった。なぜなんだ、よくわからない。
あと、Plan Aheadは、アプリ終了時にセーブするか聞いてくる。
Ctrl+Sってやるんだけど、セーブできないみたい。
Plan Aheadって、癖のあるソフトだ。(感覚がおかしいと思う)
>>556 お苗めっちゃ間抜けなこと考えてないか?
一般的なディジタルデバイスは閾値で動作してんの
教えてください。
Verilogで、
parameter [7:0] hoge = 8'h5c; とかやりますけど、
parameter [7:0] hoge [0:4] = { 8'h01, 8'h23, 8'h45, 8'h67, 8'h89 };
data <= hoge [ SW_num ];
みたいな使い方って、できないでしょうか?
書き換えしないけど、配列で呼びたい、だけどFFは使いたくない。
caseでやるしかない。
それが書けたら定数コーデックにわざわざcase書かなくて良くてすげー楽なんだがな。
てか、それのどこにFFが使われるのか。
568 :
774ワット発電中さん:2012/07/16(月) 20:05:22.94 ID:GrmjxLPv
HDLの場合、配列やら構造体やら、機能自体は揃ってたりするが
周りのツールがNGな場合が多いよな
書けてシミュレーションもできるけど、合成は無理ですとか
parameter [7:0] hoge [0:4] = { 8'h01, 8'h23, 8'h45, 8'h67, 8'h89 };
何がエラーなんだこれ?
シミュレーションは通りそうだけど、合成通るかは怪しいですね
571 :
774ワット発電中さん:2012/07/17(火) 00:39:11.99 ID:VSktOCXr
まず配列は拒絶されるよな
>>569 連接の使い方。
配列との区別がついてないだろ?
>>569 >何がエラーなんだこれ?
左辺がVerilog
右辺がC
ごちゃ混ぜ表記
ハードウェア記述言語はプログラミング言語じゃねーんだ、
ってここしばらくは繰り返すしかなさそうだな。
だけど、ハードウェア記述言語とは言え、
ソフトウェアなんだよね。
PC画面上でソースを修正、コンパイルしてフラッシュに書き込む。
SpartanもH8も、作業は同じ。よって、ソフトウェア。
言語は言語。ソフトでもハードでもない。
どっちなのか議論することに意義が感じられない。
どういった言語仕様なのか、どういった意図で記述されたかが重要。
あと、動作するデバイスはFPGAであろうとASICであろうと
中間的な存在なので扱う人の立場によってソフトかハードかは変化する。
FPGA過去スレにも同じこと書いた気がするが。
>>576 激しく納得です。私もそう思います。
ただ、
半田付けもできない、オシロも操作できない、テスターも持っていない。
だけどPCとチップスコープでHDL書いてデバッグ?して、
bitファイルをメールで送って納品終わり。
それなのに「ハードウェア技術者だ」と、おっしゃる人が許せないのです。
許せないとかww
何様のつもりだ?
これって、自分のやってる仕事のレベルが低いから、ハードのこと
よくわかってないと思ってる奴に、仕事取られかもって焦ってるだけ。
新人とか、自分の実力を読めてない奴にありがちだよね。
>>577 イワンとしていることもわかるが
納品のレベルが低いと感じるのは、お願いの仕方のレベルが低いのよ
オシロやテスターを使わないといけない(のか知らんが)ような、
そういうスペックを記述すればよろし。
相手が自分自身をどういっても勝手だけどね。
お客が言語気にするの?
する場合は、ソースも納品に入っているだろうし
Lintかけてね、カバレッジ100%よな?、とか
>>577 それはHDL屋。実際そんな奴がほとんど
ハード屋ならデジタル回路以外でもアナログ、高周波等もそれなりに理解できないと駄目だな
当然、今はソフトのプログラミングはハード屋でもある程度出来ないのだめだな
でも、技術者は結局アプリケーションの専門分野、およびその周辺の技術・知識がどれだけあるかだな
俺ハードウェア技術者って威張ってもアプリケーションの技術・知識がないと素人と同じ
バリバリHDL書きたいのに害虫管理とかつまらなすぎ。
このスレは
>>582に欲しいソフトIPを作ってもらうスレになりました。
V30 ただし Z80 エミュレーションで
で、N88BASIC動かすと。
自分で作れよ、無能共
おう!
2000万円くらいで請け負うぜ!
588 :
584:2012/07/19(木) 08:47:52.09 ID:hBbk9V0K
ちゃんと98に刺さるようにしてくださいね
納期は1週間な
これだけあれば十分だろ
>>581 そうか?
普通のHDL使いは、基板作って納品してないか?
HDLの送信だけで検収があがるなら、ここにいる
ゴミとは比較にならない、相当の達人だろう。
じゃあ、酉膿みたいな人もゴミじゃん。
そんな言い方ないんじゃない?
「HDL だけ書くのは達人だ」って言ってるんだろ?
最近はハードウェア設計もIT土方と近いもんがあって
親→子は基板からんからしてるかもしれんが
子→孫はHDLだけお願いしているビジネスモデルもあるだろうね。
一概に土方がレベルが低いだの言われる風合があるが
彼らが土台を作ってくれているのも事実で
>>591の意図に同意
なるほど。このスレの住人にSoC作ってる人がいないことがわかった。
DRCやLVSもさることながら、STAも大変よねー
カバレッジ100%とか無理だから。
ホント、無理だって・・・
>>593 それは、子のハード屋が知恵遅れなだけだろ。
回路引くなら、HDLも自分で書く、できないなら孫に丸投げした方が効率いい。
HDL送信でokな客は、やっぱICメーカとかじゃないか。
>>593 日本の電子産業を支えているのは底辺ドカタ
元:仕様作成
1次:基板を含む回路設計を回路専門、基板専門の2次に投げる
2次:実際の回路設計、基板設計する(底辺ドカタ)
電機関連株が軒並み・・・
やっべー
>>557 亀レスだがVivado自体は組み込まれてるけど
ライセンスはEarly Accessじゃなかったけ
普通に代理店からライセンス貰えた?
今日も出勤、日本の未来を支える底辺の働き者です。
質問したいです。(初級レベルです)
0〜255までの数値を
記憶する場合は、変数の幅は 8bit で良いすが
処理を256回(0〜255)回して、次の処理に行きたいとき、
if()で比較する変数は9bitでないとできないと思いますが、
この考えは正しいでしょうか?
reg [7:0] a;
always(...) begin
if( a <= 8'd255 ) begin ←これだと常時OKになってしまい、次に行かない
処理A
end else begin
次のステートに移動
end
end
/*---------*/
reg [8:0] a;
always(...) begin
if( a <= 9'd255 ) begin ←これだと次に行くと思います。
すると、この比較のためだけに、D-FFのa[8]が発生し、
「a_8使ってないよね、ね、ね」とツールのWarningは出るし、
D-FFが1つもったいない気がします。
最適化でD-FFは8個にしてくれるかもしれませんが、Warningが出てしまい残念です。
もっとも、次のような書き方はできると思います。
reg [7:0] a;
always(...) begin
if( a <= 7'd254 ) begin ←254以下はここを通る
処理A
end else begin
処理A
次のステートに移動
end
処理Aが2回出てきて、後日見たときにわかりにくいですよね。
何か、うまい書き方はありますでしょうか?
ソフトちっくで気持ち悪い。
何がしたいか知らんけど、こんなんじゃあかんの?
reg [7:0] a;
always(...) begin
a <= a + 8'd1;
処理A
end
always(...) begin
if( a = 8'd255 ) begin
state_shift <= 1'b1; //次のステートに移動
end else begin
state_shift <= 1'b0;
end
end
>>601 どこでaを加算するかによるよ。
alway文の中のif文内で処理をするなら 0〜255までの256回できる。
すまん257回目に次の処理に飛びたいって事だね。それは無理。
というか素直に9ビット取ったほうがラク。
加算は必ずキャリーがつくから8ビットのFFと9ビットの加算を分ける。
wire [8:0] adda;
reg [7:0] a;
assign adda = a+1'b1;
always @(posedge clk
a <= adda[7:0];
----
always (adda)
if (adda[8])
NextState
else
処理A
この記述だとFFは8つで済むし、Warningも出ないのでは
FPGAでもないかぎり、コスト的にFF1個<8ビット加算器 ですけどね。
>すると、この比較のためだけに、D-FFのa[8]が発生し、
>「a_8使ってないよね、ね、ね」とツールのWarningは出るし、
>D-FFが1つもったいない気がします。
>最適化でD-FFは8個にしてくれるかもしれませんが、Warningが出てしまい残念です。
カウンターは256まで行くんだから、a[8]も使うだろ?
>>602 それだと、ステートが移動するときに、
上側のalways()の処理Aを止める策が必要ではないでしょうか?
reg [7:0] a;
always(...) begin
a <= a + 8'd1;
if( state_shift == 1'b0 ) begin
処理A
end
end
あと、==ではないのでしょうか?
if( a = 8'd255 ) begin
うーん、いまひとつ理解しきれんが・・・
assign a_full = |(a);
で、a_fullを次のクロックで拾ってあげれば良くないの?
a:253|254|255|0|1|2|
a_full:0|0|1|0|0|0|
で、何かしたい動作は1_fullが1->0のクロックで実行されないかな。
書いてて自分もソフトウェアチックで気持ち悪い・・・
まあレジスタの種類一個一個でalwaysは分けようね
何言ってるんだお前。日本語でかまわないから。
少なくとも |aではなく、&a だろうが
611 :
602:2012/07/22(日) 20:22:57.65 ID:JAk1Gsad
>>608 ==は確かに間違いだけど、何したいのか銅動かしたいのか
全く仕様が見えないんよ。
処理Aはフリーランでずっと動かし続けたいんじゃないの?
後半だとelseの中にも「処理A」が出てくるし…
それと、if文で全てのステート組む気?
caseでステート組むのを覚えると、あなたの言う
「うまい書き方」に近いことが出来るんでないの?
分からんけど。 ←無責任
記述ミスのバグは可愛いもんだが
仕様ミスのバグは・・ガクブル
なんかステートとか書いてあるし
それならと、状態遷移図を書いてくれ
書ければね
書いてるうちに自己解決できればばんばんざい
仕様が途中で変わるのはしょうがない
特定の人だと思うけど「ソフトちっくで気持ち悪い。 」と言う人がいます。
FF毎にalways()を分けるという書き方も知っていますが、
1つのalways()で、複数の変数をコントロールするのは良くないのでしょうか?
ダメではないにしても、何かデメリットがあるでしょうか?
メリットは、動きが追いやすく、動作理解が早いことだと思います。
(視線があっちこっち移動しなくても済みます)
reg [3:0] x;
reg [0:0] y;
reg [1:0] FSM;
parameter xmax = 10;
parameter ymax = 6;
always @ (posedge clk)begin
if(res==1'b1)begin
・・・・
end else begin
if(FSM==count)begin
if(x<xmax) x <= x + 1; xが最大値未満なら x++
else begin xが最大値なら
x <= 0; x=0
if(y<ymax) y <= y + 1; yが最大値未満なら y++
else begin yが最大値なら
y <= 0; y=0
FSM <= display; ステートdisplayへ
end
end
end else if(FSM==display)begin ステートがdisplayなら
(次の処理)
FSM <= tx; 送信ステートへ
end else if(FSM==tx)begin 送信ステート
(次の処理)
FSM <= rx; 受信ステートへ
end
end
end
「ソフトちっくで気持ち悪い。 」と言う人は、
「俺はソフト設計者じゃなくて、ハード設計者なんだ」というプライドで
一線引きたいだけのような気がします。
やべぇ、元気があれば全部答えるからまってて・・・
元気が無いので
>>614への回答は
>>594といった感じ
616 :
602:2012/07/23(月) 20:50:01.96 ID:+ZQ0h41E
愚痴だけど、インプリした結果も考えて記述して欲しいんだよな。
完璧に予測するんじゃなくブロック図的にでいいからさ。
ソフト屋さんが組んだHDLとか、回路屋さんが組んだHDLとか
タイミング制約マッチしてなかったり規模が大きすぎて追加回路が
デバイスに入らなかったり、後始末大変なんだもん。
>>615 基礎から答えるのって、すげぇ体力使うよね…
あたしゃ気力無くなったのでここで退散。
617 :
774ワット発電中さん:2012/07/23(月) 22:08:12.50 ID:nPW/KXms
>>614 あまりにも回路イメージからかけ離れた書き方をされると後工程で困る
SoCだとその後、合成→Gate Sim→STA→レイアウト→場合によってはECO
と言うように、工程が進むわけだが,、その際に最初に回路イメージが無いと、
合成されたネットリストを読みとくのも大変になる
最初からこういう回路になるんだぜって言う形で書いといたほうがいい
熟練者ほど後のことを考えて書くから、ソフトチックに書かれるのを嫌う人は多い
>>614 例示の規模くらいなら、まあ、許されるのではないかと思う。
先輩方からは怒鳴られる可能性あるけど。
ソフトチックっていう表現の意味は、いくつか可能性があると思う。
・設計もせずにコードをいきなり書いたようにみえるHDLコードのこと
コーディングしてから叩いてデバグすりゃいーじゃん、という思想がダメ。
中身はブラックボックスではなく、使ったレジスタ全部それぞれ、意図通りに動かしてください。
・順次処理(1スレッド動作)を前提としているように見えるHDLコードのこと
alwaysを1つずつ分けていれば、それぞれ並列に処理しているという意図は明示できる
そもそも、最近のソフトでマルチスレッド・マルチプロセスが当たり前だから、ソフトチックってのは的外れではあるが。
具体的に指摘すると、例えば else-ifのネスト。
プライオリティ付ける意味はあるの?
っていうか意味があるから case じゃなくて else-if にしたんだよね。
動作が追いやすい(かもしれない)というメリットよりも、
回路規模が大きくなる、タイミングが厳しくなる、検証しにくくなる、消費電力が増えるというデメリットがクリティカル。
コンパイラ様と、後工程様が気持ちよく作業してもらうえるようなHDLを書くのが幸せになる第一歩。
622 :
774ワット発電中さん:2012/07/23(月) 23:56:21.52 ID:zJItXkga
>>620 プライオリティつけない場合はcaseにするんですか?
ところでcaseにはプライオリティないんですか?
>>623 caseでも可能。
でも、プライオリティ評価の仕方を具体的に書く必要がある。
625 :
774ワット発電中さん:2012/07/24(火) 01:44:36.42 ID:e6tmNAzT
>>620の考えってASICやってる人間なら常識
if-elseはプライオリティ回路になるから、同じ動作をするcase文より回路が大きくなる
ちょっとでも削ろうって思ったら、記述の仕方をよく考えて書く
DCに任せっきりでも同じ動作のものになるけど、特に後工程のSTA辺りで泣く羽目になるよ
>>624 どうもです
caseでもプライオリティありますよね
プライオリティつけない場合は並列だよってparallel_caseつけないと駄目ですよね
parallel_case、full_caseつけないでcaseで回路小さくなったって喜んでいる人多いんですかね
627 :
774ワット発電中さん:2012/07/24(火) 02:09:26.92 ID:P/JsIgSa
>>626 caseは書いた通りに組み合わせ回路が作られるだけ。
書いた内容がプライオリティならそうなるし、違えばそうならない
parallelとか関係ない
628 :
774ワット発電中さん:2012/07/24(火) 02:15:59.94 ID:e6tmNAzT
parallel_caseとか使ったことないわ
静的チェックツールがちゃんと、「旦那、defaultがありませんぜ」って言ってくれるから
プライオリティを回避してくれるからな
それより、reg毎にalways()を作るのはなぜ?
どんなメリットがあるの?
>>626 case文で評価する内容にドントケアを使うのが一般的かな?
0???
10??
110?
1110
解りやすいでしょ?
>>627 おいおい、おまえ、dc 使ったことないの?
もういいや、ずれててもしらねー
>>618のリスペクト
reg [3:0] x;
reg [2:0] y;
reg [1:0] FSM;
parameter xmax = 10;
parameter ymax = 6;
localparam standby = 0;
localparam count = 1;
localparam tx = 3;
localparam rx = 2;
always @ (posedge clk or negedge RST_X) begin
nbsp;nbsp;nbsp;if(!RST_X)
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;FSM <= standby;
nbsp;nbsp;nbsp;else begin
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;if(FSM_count_flg)
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;FMS <= count;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;else if(FSM_tx_flg)
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;FMS <= tx;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;else if(FSM_rx_flg);
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;FMS <= rx;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;else if(FSM_standby_flg);
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;FMS <= standby;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;else
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;FMS <= FMS;
nbsp;nbsp;nbsp;end
end
assign FMS_count_flg = (FSM==standby) & (CE); //おまけ
assign FSM_tx_flg = (FSM==count) & (x==xmax) & (y==ymax);
assign FSM_rx_flg = (FSM==tx);
assign FSM_standby_flg = (FSM==rx);
&が抜けとる・・・
reg [3:0] x;
reg [2:0] y;
reg [1:0] FSM;
parameter xmax = 10;
parameter ymax = 6;
localparam standby = 0;
localparam count = 1;
localparam tx = 3;
localparam rx = 2;
always @ (posedge clk or negedge RST_X) begin
if(!RST_X)
FSM <= standby;
else begin
if(FSM_count_flg)
FMS <= count;
else if(FSM_tx_flg)
FMS <= tx;
else if(FSM_rx_flg);
FMS <= rx;
else if(FSM_standby_flg);
FMS <= standby;
else
FMS <= FMS;
end
end
assign FMS_count_flg = (FSM==standby) & (CE); //おまけ
assign FSM_tx_flg = (FSM==count) & (x==xmax) & (y==ymax);
assign FSM_rx_flg = (FSM==tx);
assign FSM_standby_flg = (FSM==rx);
635 :
774ワット発電中さん:2012/07/24(火) 10:34:14.05 ID:5BRNfJLk
>>630 だったら「ソフトちっく」とか言うのは気にしなくていいのね?
そう書かないと、シンセシス後の結果が、ゴロッと変わるのかと思っていた。
>>634の続き
always @ (posedge clk or negedge RST_X) begin
if(!RST_X)
x <= 4'd0;
else begin
if(x_clr_flg)
x <= 4'd0;
else if(x_count_flg)
x <= x + 4'd1;
else
x <= x;
end
end
assign x_clr_flg = (FSM==count) & (x==xmax);
assign x_count_flg = (FSM==count) & (x<xmax); //ちょっと冗長 dc宜しく
always @ (posedge clk or negedge RST_X) begin
if(!RST_X)
y <= 3'd0;
else begin
if(y_clr_flg)
y <= 3'd0;
else if(y_count_flg)
y <= y + 3'd1;
else
y <= y;
end
end
assign y_clr_flg = x_clr_flg & (y==xmax);
assign y_count_flg = x_clr_flg & (y<xmax); //同じく冗長
ああ、書き方でバレそう・・・
誰も見ていないことを祈る・・・
でもこことかでしか勉強できないのよねー
>>635 Lintチェックとかカバレッジしなきゃ問題ないが
そんなソース使いたくない。
ミスがあった場合
FPGAなら残業ゴリ押しでいいが
ASICなら死亡
まー、上のソースなんてファンクションテストもしてないけどねー
if(y_clr_flg)
y <= 3'd0;
else if(y_count_flg)
y <= y + 3'd1;
else
y <= y;
↑
最後、y <= y; と書くのと、endで締めてしまうのでは、違いがありますか?
最適化で y <= y; は消えるなら、endで締めてもいいですよね?
プログラマーが考える上で考えやすいとか、間違いが防げるとか、ですか?
実際のところelseがない場合は「保持」になるので
「保持」を期待するのであれば必要無いです。
もしかすると、elseで「常に0」になって欲しいと思っていれば
コンパイラはそれで最適化してくれます
(caseのdefaultの意味合いも)。
ただ、ホントのところは、過去にcoveredというカバレッジツールの
ラインカバレッジでelseを拾ってくれなかったので入れてます。
訳立てるには難しいツールでした、かれこれ数年使ってみてないです。
ほかにelseの必要性はなんかあるっけ
カバレッジも、利用する分にはいいけど、
義務になるといやだよな。
カバレッジのためのコード書きとかアホらしい。
>>596
640 :
774ワット発電中さん:2012/07/25(水) 01:06:14.49 ID:bUp9uZ09
else付けないと静的チェックで文句言われるから書いといて損は無い
>>640 それは、
エルス
end
のように、中身はなしでも良いということでしょうか?
それとも
エルス
y<=y
end
と中身ありのことでしょうか?
俺は、できるだけelse使わないように書いてるな
y<= y_clr_flg ? 3'd0 : y_count_flg ? y + 3'd1 : y;
>>643 それ使ったことないなw
そういえば昔、日本の合成ツールで
if文の最後は必ずelse .. endで書かないと
いけないやつがあったような
条件演算子はassign文中で、且つ、マルチプレクサとしてだけ使ってくれ・・・
見難くてかなわない。
assign Y = S0? A : B ; //1ならA
しかも、片側が固定値とかなら、すぐ論理圧縮しちゃう。
ん?always文の中で三項演算子使うの一発だけなら別にいいと思うけどね。
重ねて使うのはassign文だけにして欲しいけど。
>>645 always の中でも論理圧縮はかかるだろ。
どんなショボいツールだよ?
648 :
774ワット発電中さん:2012/07/26(木) 09:27:11.86 ID:gxsd2AfF
論理圧縮されるんだから、ifと?を混ぜるなってことだろ
ifならifだけで書いてくれた方が人間にはわかりやすい
if と ? : は意味が違うんだから、全てを必ずどちらかに寄せる、というのは無理。
>>648 個人的には三項演算子のほうが分かりやすいんだが・・・
人それぞれじゃね?
「人間には」とか一般化すんなよ
651 :
774ワット発電中さん:2012/07/26(木) 10:26:36.10 ID:E+J9hgRg
wireでifは使えないでしょうか?
? :は、多段に書いてはいけないと言う人がいますが、
なぜでしょうか?
>>651 wireでif文は使えないかと。
fuctionにしてしまえば良いけど。
多段に書くと、さすがに解釈しにくくなるし
結果として後からの手直しとかでミスが入りやすくなるよ。
Starc(だっけ)の設計スタイルガイドには
多段にすると優先順位が論理合成ツールによって解釈が異なる、とか書いてあったような
ところで
>>649 function含め、ifで書けて?:で書けない構造
もしくは?:で書けてifで書けない構造ってあんの?
>多段にすると優先順位が論理合成ツールによって解釈が異なる
そんなのあったっけ?(三項演算子の話だよね)
分かりにくいから多段にするな、じゃなかったかな?
assign d= a ? b : c;
は、if 分じゃ書けないよね。わざわざ always にする?
じゃあifと?:は表現として同じことをするということで・・・
設計スタイルガイド探して来ないと
もし持ってないなら買っても損無いと思うよ。
>>655 探してきたぜ。
条件演算(?)のネストは1回までにする(推奨3)
(?)は、最大でも10回までにする(必須)
「条件演算をネストして使用することは出来ますが、
記述の可読性が低下し間違いやすくなるため、
条件演算は1回までにしましょう」
個人的には、STARC 守れとか言わないけどね。
>じゃあifと?:は表現として同じことをするということで・・・
x とか z との比較は出来ないとか言いたいの?
あれ、それ2.1.5?
10回とか書いてないな。バージョンが違うのかな
>x とか z との比較は出来ないとか言いたいの?
それはテストベンチでやってくれよ。
xの時にリセットがかかる回路あったら嬉しすぎるが
Verilogで、私も1つ質問させてください。
ISE14を使っています。
module test1(
input [15:0] A;
);
は、エラーなく通るのですが、
module test2(
input [15:0] B [0:7];
);
とすると、Arrayはできませんとエラーになります。
16本のwireの8セットを番号により切替えたいのですが、
このような記述はいけないのでしょうか?
wireの配列でも、regの配列でもエラーになります。
Verilog2001では可能になった、と本で見たのですが。
また、
assign D=(C==0)? E
:(C==1)? F
:(C==2)? G
:(C==3)? H ;
は、Cの値によってEFGHの中から1つ選んで、Dに接続するものです。
(多数→1本)
逆に、1本→多数に切替えというのは、()? : では、どのように
記述するのでしょうか。
regにしてalways()の中でしたら、なんとかなるのですが。
659 :
774ワット発電中さん:2012/07/26(木) 20:47:15.39 ID:frX/RcQ0
>>658 Verilog-2001で可能になったのはネット型での多次元配列サポートであり、
入出力ポートには使えなかったと思う。素直に8セットのwireを束ねてマルチプレクサかな。
module test1 (
input [16*8-1:0] B,
input [3:0] C
);
wire [3:0] EFGH; // 各bitがEFGHに対応,選択されてないときは0固定
assign EFGH=(C==0) ? {1'b0, 1'b0, 1'b0, D}
:(C==1) ? {1'b0, 1'b0, D, 1'b0}
:(C==2) ? {1'b0, D, 1'b0, 1'b0}
:(C==3) ? {D, 1'b0, 1'b0, 1'b0};
んー、素直にE/F/G/H別にassignを並べた方が分かり易そうだw
>>657 もう家だから確認できないけど、かなり古いバージョン。
新しいのは、10回の制限はないの?
「ごめんなさい、10回ってのは撤回します」って謝れよ、STARC。
>>658 Arrayが駄目って、それISE14のバグだな。
Xilinxにこらーって連絡する
>>660 時代に取り残されないように、毎年新しいガイドブックの購入をオススメいたします。 by STARC
>>659 ありがとうございます。
ポートに配列はダメなんですね。了解しました。でもなんでダメなんでしょう。
7セグの駆動なんかに便利だと思うんですが。
wire [7:0] 7seg [0:3]
とか、使い道はあると思うんですが。
少なくとも、ucfの入力はメチャクチャ楽になります。
便乗ですみません。もう一つ教えて下さい。
配列を取るとき
wire [7:0] 7seg [0:3] と、0〜3の4個を定義しますが、
[0:3]でなくて[1:3]ではダメなんでしょうか?
また、[0:3]のように昇順で書くのはなぜなんでしょうか?
[3:0]と書いてはダメなんでしょうか。
>>662 10年以上前の合成ツールの制約を引きずってるSTARCに言われたくないなw
今日、STARCの最新版を注文しました。
ついに STARC も身売りか・・・
668 :
774ワット発電中さん:2012/07/27(金) 19:42:37.36 ID:anUhByxj
>>663 気になるなら SystemVerilog や Verilog2005 での対応状況を調べてみては。
もっとも言語仕様で対応していても、肝心のツールが対応してないと絵に描いた餅状態ですが。
>wire [7:0] 7seg [0:3] と、0〜3の4個を定義しますが、
>[0:3]でなくて[1:3]ではダメなんでしょうか?
>また、[0:3]のように昇順で書くのはなぜなんでしょうか?
>[3:0]と書いてはダメなんでしょうか。
ダメじゃない、知らん、ダメじゃない。
ボーっと見てて思ったけど
その7セグはダイナミック点灯方式じゃないの?
信号線だけ食ってMOTTAINAI
本を参考にして以下のプログラムを書いたのですが、
CLKにclockが出てきません。
always @ ( posedge clock ) begin
if( RESET )begin
end else begin
CLK <= clock;
end
end
なぜでしょうか
記述通りに動いてるからじゃね?
>>671 見た瞬間にクラっとしたRTLなんだけどどうするか・・・
まじめに教えるか・・・
まず、always @ (posedge clock) のところは
「clockの立ち上がり(0→1)が来たら・・・」なので
リセットは無視するとして
「CLKにclockを代入する」が実行される。
ただ、CLKに代入する値は、常にclockの値が1(立ち上がり後)
なので、ずっと1
解決策としては
FPGAが頑張ってくれるだろうから
always文はすべて削除して
assign CLK = clock;
の一文でいい。
clockの2分周(半分)が欲しいなら
CLK <= clockを CLK <= ~CLK;にする。
イベントのたびに、CLKが反転するわけだ。
初期値無いけど実機上は問題ない。
後は、その本を教えてくれ
こういう記述見ると、回路図設計から
勉強し直して欲しくなる。
>>673 ありがとうございます。
>always文はすべて削除して
>assign CLK = clock;
>の一文でいい。
そうですよね。そう思ってやったのですが、
エラーが出てコンパイルできないんです。
あと、RTLって何でしょうか? Resistor Transfer Languageだと調べました。
しかし、他にもRTL、VHDL、HDL、PLL、最後にLがつく言葉が多くてわかりません。
マイコンでは、こんなに面倒ではなかったんですが。
プロポーズ大作戦のあの電飾テーブル
FPGAはおろかCPUも普及してない時代にロジック部分はどーやって作ったのかな?
中の人がスイッチを押してるに決まってるだろ
そういや大昔初ラかラ製に電飾テーブルの作成記事が載ってたような覚えが
レジスタ転送レベル(Register Transfer Level)- 論理回路をハードウェア記述言語で記述する際の手法
Register Transfer Language - GNUコンパイラコレクションの使用する中間言語
->初めて知った
680 :
774ワット発電中さん:2012/07/28(土) 18:42:13.48 ID:lPWcRC4W
合成を含めて理解してくると、RTLの言葉の意味がわかってくるんだけどね
HDLをソフト的にしか理解してない人だとわからないだろうな
つまり、レジスタってのはFFだから回路の中核をなす、ソフトでいうと変数に当たる部分
合成しても残る。つまり抽象化した記述ができない
組み合わせ回路(wire)の部分はただの一時変数に過ぎなくて抽象化した記述(ソフト的な)
ができて、合成後にまったく予期しない等価な回路に圧縮される。
つまり、中核であるRとRの間を、ソフト的に記述することができる記述方法のレベル
それが Register Transfer Level ってわけだ
>>680 ありがとうございます。
>つまり、中核であるRとRの間を、ソフト的に記述することができる記述方法のレベル
ということは、ソフト的に記述できないレベルもあるということでしょうか?
また、Verilogでは、assignのみで書けばFF使わずに書くことも出来るので、
HDLというくくりの中に、RTL、Verilog、VHDLの3つがある、という理解で良いでしょうか?
なんとかL言語って呼ぶのは、なんとかシンドローム症候群だな。
チタンダL言語
685 :
774ワット発電中さん:2012/07/28(土) 21:42:26.99 ID:lPWcRC4W
>>681 >また、Verilogでは、assignのみで書けばFF使わずに書くことも出来るので、
これはあり得ないだろ
書いた回路のすべての動作が1クロックで終了するってことだぞ
>>682 ありがとうございます。
HDL = { Verilog, VHDL, ABEL };
?? = { RTL, HDL }; という感じでしょうか?
>>685 RTLは、レジスター...なのでD-FFを使って書かないといかんですが、
Verilogなら、必ずしもD-FFを使わなくても書ける、という意味です。
RTLとHDLの区別は、誰に聞いても「よくわからない」と言います。
>>686 RTLって”書き方”のことかと思われ。
688 :
774ワット発電中さん:2012/07/29(日) 01:55:05.29 ID:TAzT3bSY
>>686 682氏の提示したURLを見れば貴方の疑問は解決すると思うんだけどな。
HDL=ハードウェアを記述する言語
RTL=HDL記述の抽象度のひとつ
貴方風に書くならば
HDL記述の抽象度 = {ビヘイビア・レベル, RTL, ゲート・レベル, スイッチ・レベル}
689 :
774ワット発電中さん:2012/07/29(日) 03:07:23.76 ID:BW32RfUj
Verilogが面白くて、夢中で書いています。
ここで1つ教えていただけないでしょうか。
module 例1 (
output wire Q;
);
always @ ( posedge clk ) begin
P <= P + 1;
end
assign Q = P;
module 例2 (
output reg P;
);
always @ ( posedge clk ) begin
P <= P + 1;
end
上記の2例は、どちらもちゃんと動きます。
2種類の書き方による違いを理解したいと考えています。
以下のように考えました。正しいでしょうか?
・例1(wireで出力するもの)では、例2のregで出力するものに比べて、
出力データは、wireで中継する分だけ 少〜しだけ遅く変化する。
・この送れ時間は、通常は良いが、高速同期回路になると、セットアップ時間を
圧迫してしまう。
・そんな時は、regを使って書けば良い
どうでしょうか
あってるよ。
理解してない人もいるので、
周囲の人にも教えといたほうがいい。
692 :
774ワット発電中さん:2012/07/29(日) 10:07:31.37 ID:fd+Qcs8j
まあ、宣言は忘れていたとして置いといて、
上下の回路はまったく同じでまったく同じ動作をする
ちょうどソフトのプログラミングで、1回別の変数に入れたりするのと一緒
693 :
774ワット発電中さん:2012/07/29(日) 10:17:43.43 ID:fd+Qcs8j
スイッチレベル → トランジスタそのものを書く
ゲートレベル → レジスタも組み合わせ回路も全部書く
レジスタトランスファーレベル → レジスタは書く、組み合わせ回路は書かない
ビヘイビアレベル → レジスタも組み合わせ回路も書かない、動作を書く
書く、書かないじゃ分からないだろw
本当、難しい概念だと思うよ
>>689 今の合成ツールだと両方とも同じ回路になるんじゃないかな?
まあわかる人にはわかる書き方だな<書く・書かない
>>690-692 ありがとうございます。
だいたい合っていて安心しました。
Pの宣言は書き忘れていました。すみません。
まだ慣れていないので、書き方の区分けとして、
次のようにイメージしています。
・値を記憶したいとき=clockで動作させる=always @ (posedge clock)を使う
・always @ ()の中は、<=を使う。
・値を記憶しないもの=即座に答を出す回路=assign を使う
・assignには、=を使う。
というのを、馬鹿の1つ覚えで実行しています。
ところが本を見ると、always @ ()でもassignのように=が使ったものがありました。
ここで疑問ですが、
・always()の中で、=を使ってもいいのでしょうか?
・always()で=を使って書くのと、assignで書くのとで、何か違いがあるのでしょうか?
どちらも「変化すれば即座に反映」ですよね。
・always()で=を使う書き方を、避けて通ることは無理でしょうか?
(可能なら、上記のように、記憶=always= <=の使用 という規則で覚えたいのです)
698 :
774ワット発電中さん:2012/07/29(日) 13:29:35.30 ID:TAzT3bSY
>>697 一度「"=":ブロッキング代入」と「"<=":ノンブロッキング代入」の違いを整理してみたい方が良いと思うよ。
>>698 >違いを整理してみたい方が良いと思うよ。
ありがとうございます。
以下のように理解しています。
"="ブロッキング代入は、マイコン的、1行ずつ、上から順、に実行されます。
"<="ノンブロッキング代入は、記述行の上下位置に無関係、同時に実行されます。
同時と言っても、何かのきっかけで同時に実行されるのですが、
そのきっかけは、always @ (posedge clk)なら、"clkの↑"がきっかけになります。
assign a = b & c; ←74HC08の2入力がb, cで、その出力がaというイメージ。
a <= (b & c); ←74HC74のD入力が(b & c)で、その出力Qがa、CKがclkというイメージ。
この理解でどうでしょうか?
>>697 >・always()の中で、=を使ってもいいのでしょうか?
文法的には可能です。
alwaysでレジスタ(FF)を意図して記述する場合には、通常、使いません。
(私は使ったことがありませんし、コーディングルール上ダメってことが多いのではないでしょうか)
>・always()で=を使って書くのと、assignで書くのとで、何か違いがあるのでしょうか?
assignの場合、一文で書かなければならないので、読解しにくくなる場合があります。
alwaysならば、制御文などを使えるので、複雑な組み合わせ回路を記述しやすくなります。
alwaysで組み合わせ回路を書くのは、流派によっては御法度ですが。
>・always()で=を使う書き方を、避けて通ることは無理でしょうか?
RTL記述では使ったことがありません。
テストベンチを書くときには、便利なので使うことがあります。
しかし、よくはまるので、使用するのはおすすめしません。(異論あると思いますが)
701 :
774ワット発電中さん:2012/07/29(日) 15:09:46.16 ID:TAzT3bSY
>>699 回路がイメージ出来るのならば、実際に記述をコンパイルしてみて
どういった回路に落ちるのかを確認するのが手っ取り早いかもですね。
ISEだったらSynthesizeの"View RTL Schematic"で見られます。
たぶん↓みたいな回路に落ちる事を確認出来ると思います。
■ノンブロッキング代入
always @(posedge CLK) begin
X = A;
Y = X;
end
A-->[D-FF]--+-->X
|
+-->Y
■ブロッキング代入
always @(posedge CLK) begin
X <= A;
Y <= X;
end
+----------->X
|
A-->[D-FF]--+-->[D-FF]-->Y
>>700 さっそくありがとうございます。
説明が上手で、よく理解できます。うれしいです。
>assignの場合、一文で書かなければならないので、読解しにくくなる場合があります。
そうなんです。1文で勝負なので、結構大変です。
if() else if()...の代わりに
assign Q = (a==b)? 8'd3
: (w==r)? { 4'b0000, k[6:3] }
: (u==r)? { k[6:3], 4'b0010 }
: { k[6:3]
>>2 }
というふうに書いています。横1行に書くより少し見やすいと思います。
STARCによれば「10段まで」と言っていますが、無視してます(^^;
>>700に教えていただいたことで、自信が付きました。
always()内では<=のみ、assignでは=のみ、で書いていこうと思います。
似た文章を複数行書くのが面倒なので、配列にしてfor()も使っています。
まだ使ったことがないですが、気になっているのは、
generate と functionです。
ありがとうございました。
>>701 ありがとうございます。
これはまた見やすい回路図ですね。Y=Xは、実体は接続になるんですね。
X<=A; Y<=X;のようなことはよくやります。信号の変化を微分するときに、
if( (Y==1'b0) && (X==1'b1) ) begin...という感じです。
ISEの回路図表示はたまに見てみますが、そういう観点で見たことがありませんでした。
バスが期待通りにつながっているか。変なところでGNDに落とされていないか、などの
確認に使っています。基本ゲートを組んで見てみたいと思います。
どうもありがとうございました。
ロジアナを持っていないので、実際の動きを確認できません。
32個並べたLEDで、シコシコと確認しています。
レジスタの中身とかバスの値変化とかが見てみたいのですが、
USB式のロジアナでも買おうか検討しています。
>>701 おいおい、ブロッキングとノンブロッキングのタイトルが逆だろう。
前者がブロッキング (X = A;)、後者がノンブロッキング (X <= A;)。
あと説明のためにあえて書いたのだと思うけど、F/Fを意図した回路で
ブロッキング代入は使わないでしょう。
ところで、ブロッキング代入だと本当に下のような回路になるの。
やった事ないんだけど。
> A-->[D-FF]--+-->X
> |
> +-->Y
704 :
774ワット発電中さん:2012/07/29(日) 17:14:04.76 ID:TAzT3bSY
>>702 assignに拘らなくとも、Verilog2001 や SystemVerilog ならば
「always @*」や「always_comb」を使って楽に組み合わせ回路を記述することができます。
ここら辺のコーディングスタイルはチーム内で統一しておくのが望ましいでしょうね。
ロジアナの代わりとしては「ChipScopePRO」を使うという手もあります。
QuartusIIの「SignalTapII」と比べて、使い勝手はイマイチですが。
705 :
774ワット発電中さん:2012/07/29(日) 17:20:50.93 ID:TAzT3bSY
>>703 すまん。ご指摘の通りタイトルが逆です。
A-+->[D-FF]-->X
|
+->[D-FF]-->Y
となる所を、合成ツール側で「XとYは同じ値になるよねー」で一緒にされるんだと思う。
>>702 > まだ使ったことがないですが、気になっているのは、
> generate と functionです。
assignで複雑な論理になる場合は、functionを使うことをお勧め。
functionの中ならば、if elseでも、caseでも使い放題。
1回しか呼ばれないfunctionがたくさんできてしまうのと、
それらの名前を逐一考えないといけないのが欠点ですが。
三項演算子は、1,2段くらいに留めておく事をお勧め。
段数が深くなると、メンテナンス性が落ちるのでお勧めしない。
ちなみに、それらが嫌なので自分はalwaysで組み合わせ回路を書く流儀。
>>705 ブロッキング代入でもF/Fを推定してくれるの、という意味だったんですが、
でもそういう回路になるのですね。
回路記述では、ブロッキング代入は組み合わせ回路にしか使った事がないので。
テストベンチでは何でもありですが。
『Verilog HDLによるシステム開発と設計』っつう本では
alwaysの中だろうと、実際にほとんど全て = で書いてあったりする。
そういうスタイルの良し悪しはともかく。
書ける場所という観点では ブロッキング代入・ノンブロッキング代入に
文法上の差はないよ。混ぜると死ぬ実装が多いだけ。
709 :
774ワット発電中さん:2012/07/29(日) 20:24:13.87 ID:fd+Qcs8j
文法上の差が無いわけないだろ
文法上の差がないって・・・素人かよ・・・。
プロがこんな所に来るわけないだろ。
私がVerilogのプロです。Verilog歴30年のベテランです。
>>709,710
そんな、言葉尻を取って文句をいいなさんな
715 :
774ワット発電中さん:2012/07/30(月) 10:49:38.25 ID:e8ZiwZsD
30年だと、高校生くらいからやってた? すごい
(´-`).。oO(そもそもVerilogって何年前からある言語なんだろ・・・)
ブロッキング文とノンブロッキング文は
FFごとにalways分ければ差はなくなる。
ただ、シミュレーションではブロッキング文で書かないと
シミュレーションが途中止まったりするから気をつけてね。
Verilogの講師がこれやってて焦ってた。
と、なんかプロとかベテランって見てるとこそばゆいね
プロって言うのはIT土方のことだろ?
いや、シミュレーションが止まるように見えるのは、
ノンブロッキング代入が原因ではなく、ウェイトが入ってないのが原因だぞ。
あ、そうなの?
問題の箇所ブロッキング文になったら動いたので
テストベンチで
a <= 1'b0;
#100;
b <= a;
c <= b;
#100;
とかしてて、
bはaが時間100で確定してるけど
cは時間が進まないとbが確定しないから、待ってた。
待ってた?
んもう!長いのは決まってるでしょ!?
ごめん、適当に書いたが、詳細はそうとう前なんで忘れた。
別にノンブロッキング文でも構わんかもしれんので好きに書けばいいかと。
723 :
774ワット発電中さん:2012/07/30(月) 20:14:57.02 ID:STcGUahg
ええい、ここにVHDL派は居ないのか。
ノシ
=と==を普通に間違えた>602ですw
私がVHDLのプロです。VHDL歴30年のベテランです。
727 :
774ワット発電中さん:2012/07/31(火) 01:54:11.58 ID:Lf2rXwFn
私がHDLのプロです。HDL歴300年のベテランです。
私がHのプロです。H歴3000年のベテランです。
>>727 その場合は、老舗と言ったほうがいいよ。
731 :
774ワット発電中さん:2012/08/02(木) 03:34:10.64 ID:0HlnXESv
教えてください。
ISE14を使っています。ピン指定をするソフト、plan aheadで、
ピン指定するとき、
表のようなところのサイトと書かれた欄にピン番号を記入します。
そのセルに記入してリターンキーを押しても、次の下の所に移動しません。
再度マウスでクリックしなければなりません。
つまり、マウスクリック、入力、マウスクリック、入力の繰り返しです。
Excelのように記入してリターンしたら、スグ下に移動するようにはできないのでしょうか?
あと、ISEのRTL回路図表示で、部品の足から先の線が表示されないことが
多々あります。これは、こういうものでしょうか?
これを表示
733 :
774ワット発電中さん:2012/08/02(木) 10:38:27.13 ID:AbLmGfVw
ありがとうございます。
それは見ましたが、別の方法で逃げることしか書いてないです。
実際にあのソフト上でやりきるときには、どうすれば良いのでしょうか。
あと、まとめて3.3Vに指定する方法とかも知りたいです。
なんか使いにくいソフトですよね?
>>733 気持ちはわかる。
あの表形式で出てくるプルダウンメニューも結構うるさい。
たとえば、LVCMOS33というのは、プルダウンメニューでなくても、
手打ちで「LVCMOS33」と打ってもいいんだけど、
そうしようとすると、プルダウンメニューが邪魔して、とても打ちにくい。
テキストファイルで修正するから良しとする人もいるけど、
PlanAheadになってから変になったと思う。
・ピン番号(ロケーション)
・電圧企画
・スルーレート
・電流強度12とか
が各1行で全4行使って表現されている。
Paceのときは、1行で書けたのに。
だから、手でわざわざ1行に合成している。
1行のほうが、圧倒的に視認性が良いから。
HDLソースの書き方にこだわるなら、ucfの書き方もこだわって欲しいが、
ほとんど議論されていない。
自分で使わないものを作って
どうやっていいものを作ることができようか
と、誰かが言ってたような。
うちで作ったチップなんて怖くて使えねぇよ・・・
なぁんて
質問です。教えてください。
wire signed [9:0] A10;
wire signed [7:0] B8;
assign B8 = A10;
とすると、右寄せで代入され、A[9:8]は捨てられる、と考えれば良いでしょうか?
assign A10 = B8;
とすると、これも右寄せで、A[9:8]は、0が詰められるという考えでよいでしょうか。
738 :
774ワット発電中さん:2012/08/04(土) 09:32:10.09 ID:OAkdbHvh
明示するとサインドからアンサインドになってしまう
739 :
774ワット発電中さん:2012/08/04(土) 09:42:53.81 ID:Bn9mT0j/
サインドを使うのが悪い
コンピュータにプラスもマイナスも無いのだ
assign A10 = ( B8 << 2 ); とした場合
A10 = 00_0000_0000
B8 = 0101_1000 だとすると
いったんB8は32bit拡張され
0000_0000_0000_0000_0000_0000_0101_1000
その32bitの段階で2bitシフトされ
右揃えでA10に代入されるのでしょうか。
答1 A10 = 01_0110_0000
それとも、
B8の段階で左2bitシフトされ、上位2bitが棄てられて、
0101_1000 → 0110_0000 となってから
その結果が32bitに拡張されて、
0000_0000_0000_0000_0000_0000_0110_0000 となって
右揃えでA10に代入されるんでしょうか。
答2 A10 = 00_0110_0000
B8は32bit拡張され
ってハードではどうしてるの?
シンセがどこかに32BITのレジスタを造り、そのレジスタで処理するのかな
C言語の暗黙の型変換なんかと勘違いしてるんだろ
数値演算はsimで確認しながらいつも書いてたな
動作すぐ忘れるんで
744 :
584:2012/08/05(日) 02:21:47.17 ID:gVy5iGY3
>>742 integral promotion/integer promotion
未来へのパス乙
一応integer宣言した奴は32bitだと思うが
回路記述ではgenerate以外使わんな。
あと、論理合成=コンパイラと思ったらRTLはダメ
750 :
774ワット発電中さん:2012/08/07(火) 10:13:27.76 ID:FEDKK8Zv
ベリログに、文法書はありますか?
signed使うなら、VHDLがいい。
verilog-2001でもいいけど、言語がいい加減だからそのまま動いてしまうから、てすとべんちはちっかりつくりまちょうね
最近verilogばかりかいていたら、VHDLのかきかた。思い出せなくなってた。
かきかた ドリル
VHDLで、
`define std_logic_vector wire[ :
`define downto :
みたいな代替が定義できたら、Verilogみたいに書けますかね。
VHDLは文章が長すぎて、タイプミスしそう
未だにABELって使われているのでしょうか?
使われてません。
もはやABELサポートしてるツールが無い。
旧Verとかは別にして。
ABEL、大学でやったな
ABELって、何と読むのでしょうか?
心の中では「エーベル」と呼んでいました。
アプルかも、エーブルかも、と思い、
恥ずかしくて口に出せませんでした。
アルデーノも読みにくいですね
えーぶるって読んでた希ガス
間違ってても雰囲気で分かるだろ、たぶん
カインとアベルのアベルじゃないの?
カトリに出て来た犬もアベルだったよね。
>>759 >間違ってても雰囲気で分かるだろ、たぶん
そういう問題じゃないんだ。
違った読み方すると、人前で恥ずかしいから、事前に知っておきたい。
雰囲気でOKなんて甘いこと言ってたら、
何でもありになって、収拾が付かなくなる。
情報は正しく空いてに伝えたいからね。
結果オーライはダメよ。
>>762 「おーあれですか」
「あなたはそう読みますか」
「ははは」
「ではこれからはxxと呼ぶことで統一しましょう」
とネタにするのが大人のやり方。
まぁ世の中大人ばかりとは限らんが。
自分は違った考えだな〜
何カ国もの人が集まるセッションだと一応英語が共通語になるけど、自国の発音に沿った謎タームが山ほど出てくるよ。
でもそんなの誰も気にしない。皆発音を聞きに来てるんじゃなくて内容を聞きに来てるんだし。
読み方間違えたら恥ずかしい、なんてこと言ってたら一言も言う事無く飲まれて終わる。
読み方間違えてようがカタカタ英語だろうが文法間違えてようが、相手に自分の意思を伝える事が重要だと考えてる。
その辺を指摘されたときは、内容が無さ過ぎて、そのくらいしか話題にならなかったと理解しよう。
Verilogで reg[7:-8] XXX みたいな宣言はアリですか?
小数を表現することを想定。
[15:0]より、整数部が[7:0]、小数部が[-1:-8]としたほうが意味的には分かりやすいのだけど。
なしです
ありがとうございました
VHDLを回路図に変換したいのですが
modelsimだとお金を払わないと回路変換機能が使えないみたいでした。
無料でVHDLを回路に変換する方法は無いでしょうか。
回路を合成したいというわけではなくて?
こんなきれいにはならないけど、ISEのSchematic Viewerじゃだめなの?
>>771 ありがとうございます。
調べてみます。
ネットリストを生成して、さらにそれを回路図で欲しいわけね。
ザイリンクスのツールがあるなら
>>771 の方法でいいけど。
合成したネットリストから手書き
775 :
770:2012/08/15(水) 04:52:56.86 ID:K8EJsdfH
Xilinxでやってみようとしたけど
使い方がよくわからなかったので自分で回路図に変換しようと思ったのですが
IE'eventで立ち上がった時のみ入力させる方法が分かりません。
どうすればいいでしょうか。
↓は1bit分だけ考えた回路です。
ttp://nullpo.vip2ch.com/dl.php?f=ga1046.png ↓ソースです
library ieee;
use ieee.std_logic_1164.all;
entity AR is
port (ARI: in std_logic_vector(10 downto 0);
ARO: out std_logic_vector(10 downto 0);
IE: in std_logic;
OE: in std_logic);
end AR;
architecture RTL of AR is
signal Q : std_logic_vector(10 downto 0);
begin
process(IE,OE) begin
if (OE = '1') then
ARO <= Q;
else
ARO <= "ZZZZZZZZZZZ";
end if;
if (IE'event and IE='1') then
Q <= ARI;
end if;
end process;
end RTL;
バス幅のとこは太くしような?
それともこれがSchematic Viewer?
気まぐれにJWWで書いただけだ。
バス幅太くするのが面倒だったから
信号名に[10:0]ってつけたのに…
779 :
770:2012/08/15(水) 12:43:55.42 ID:K8EJsdfH
>>776 ありがとうございます。
2段目の三角の意味がよくわからないけど
マルチプレクサ使えば実装できそうです。
>2段目の三角の意味がよくわからないけど
えぇーーー!!!ちょい待って!
>>775を回路図化しただけだってば!
回路図読めないのに何で回路図化したがるのさ…orz
781 :
770:2012/08/15(水) 13:27:15.81 ID:K8EJsdfH
>>780 三角形は調べたらトライステートバッファですか。
16bitCPUの内部回路をVHDLで書いてロジックICを使って
設計しろ的なレポートです。
ARが1番簡単なブロックでもっと難しいブロックが後6個も残っててきつい。
実家に帰れない・・・
日本の夏、、、
トライステートバッファも調べないと分からないようでは、
実家に帰らないでもう少し勉強した方が良いのではないかと。
まてまて、実家に帰れば近所の幼馴染の彼女も帰っていてだな・・・
三角形の意味も分からずによくここまでこれたな、っと不思議に思うんだが
最初にやるだろうに
>>784 それどんなエロ毛?
ここで素直に答えを教える。
↓
実家に帰れる
↓
彼女と夜のシリアル通信
ここで教えない
↓
実家に帰れない。
↓
彼女にフラれる
↓
彼女は他の男と夜のパラレル通信
どちらがベストなソリューションか
ここで教えない
↓
諦めて実家に帰る
↓
彼女にもフラれる
↓
夜は1人でインスタントオン
かもしれんぞ
ハンズオントレーニングですか。
だめだこのスレ華麗臭が
三分間待つのだぞ
ワキガ凄いやつにVerilog教えてもらってるけどマジでやばいです。
頭が薄くて、スーツ着てるのに凄い臭いです。
汗拭きシートで拭いたりすればいいのに。
>>793 それワザとじゃない? 自分がさっさと覚えりゃ解放される。
教えてもらっておいて文句を言うな
>>796 いつもお世話になってますペコリ
でも先生臭すぎですよ。金があるんだったら手術したらどうですか?
798 :
774ワット発電中さん:2012/08/20(月) 09:11:30.10 ID:KB7vOoUY
しつこいガキだな
そろそろ助けようかと思ったらVHDLか
こいつぁ手強いか?
VHDLは難しいからね。
せやろか
難しいんじゃなくて、面倒くさい
ていうか、意味がわからない。
entityって何?
architectureって何?
なんで--がコメントなの? コメントは、//か/*じゃないの?
なんで、いちいちライブラリ宣言を書くの?ワンパターンなのに
なんで、endの後に、もう一度同じ言葉を書かないといけないの? endだけでいいじゃん。
entity HalfAdder is
port (・・・)
end HalfAdder;
architecture HalfAdder_Body of HalfAdder is
って、言ってる意味がわからない。
だよなぁ。とにかくVHDL はマンドクセ。
個人的には、出力に代入した信号は、バッファ通して信号名を変えない
限り、内部で再利用できないのが嫌だった。 これやると可読性が激しく
悪くなる。 ・・まぁ、もうVHDL はやらないからいいけどね。
>>804 それって、例えばどういうこと? ぜひ教えて欲しいです。
806 :
774ワット発電中さん:2012/08/22(水) 20:16:10.84 ID:qZIZmB11
VHDLの記述が面倒という人は全構文記述をイチからシコシコ入力してるのかな?
入力支援機能が付いてるエディタならば、Verilogと手間は変わらないと思うんだけどな。
自社で書く時はわがままがきくけど、他社の中で仕事する場合はエディッタを選べない事も多い
だから一から書かなきゃならんことも何年に一度かは出てくるな
emacsが使えればVHDL modeはまず無条件に入ってるので困らないが
verilog modeは入ってない(勝手に入れられない)場合もあるので困る(´・ω・`)
担当経由で鯖管に強引に圧力をかけてもらって済む場合はいいんだけど・・・
俺はシコシコ作ってる。
が、やはり面倒なので、webのテンプレートエンジンを使用してコードを生成するようにした。
頭がかゆいので、風呂に入って来ても いいでしょうか?
VHDLの世界は、こんなに厳しいものなんですね。
トイレでいかせてください。
VHDなら知ってる
ちんちんの毛剃ったらあそこが痒くなった
814 :
774ワット発電中さん:2012/08/26(日) 11:37:48.30 ID:PsvPcH8F
ベリログで、
通信で受信した1byteの値により、ランプなどをon offするとき、
case を250個とか続けて書いて良いのでしょうか?
あるいは、if()のほうが良いでしょうか?
オレなら上位下位4bitずつで判定を分ける。
レイテンシは1クロック余分に掛かるけど、
タイミング設計上必要なことと考える。
おれだったら多分Loop使うから
ifだな
どっちでもいいよ
好きにしろ
818 :
774ワット発電中さん:2012/08/26(日) 15:16:22.20 ID:PsvPcH8F
ありがとうございます。
ケースで切りまくるのはマズイでしょうか?
ループで行うというのは、具体的には、どうすることでしょうか。
受信した値一つ一つにパターンがヒモ付けされているので、
ループで処理するというのが、イメージできないです。
RAM/ROMでも使って済ませておく
技術的にはどちらも問題ないでしょう、たぶん。
脈絡のない長い記述はいずれ人間のミスを誘発するだろうけど。
仕様書に250種類の表で書いてあるにならそのままcaseで250種類に、
論理圧縮されたより少数のルールになっているのなら、そのルール毎にif()で分割して、
いずれにしろそのまま記述する、かな?
なるほど、ありがとうございます。
メモリは気がつきませんでした。
調べてみます。ありがとうございました。
822 :
774ワット発電中さん:2012/08/26(日) 21:13:07.10 ID:5P5kD9Jx
俺なら256通りガッツリ書くわ
話の流れからすると、256通りが何のルールも無く分岐するんだろうから
そういう仕様を決めた奴に文句ブーブー言う
もし仕様を決めたのが自分なら謝って仕様変更させてもらう
何のルールなくじゃなくて、
それがルールなんだろ、仕様なんだから。
824 :
774ワット発電中さん:2012/08/26(日) 22:38:43.82 ID:5P5kD9Jx
だから、そういう仕様にした奴に文句なり変更を迫るなり、焼肉おごってもらうなりするって言ってんだよ
頼もしいな。
じゃあ、JPEG/MPEGのVLCテーブル作ったやつに文句言ってきてくれないか。
ほんと、腹が立つぞ。
腹が立つ程度がショボすぎワロタ
みなさん、ありがとうございました。
いろいろな考え方があることがわかり、大変参考になりました。
私なりに、以下のように考えました。
reg [7:0] table [0:255];
reg [7:0] ans;
always @ (...) begin
if( RESET ) begin
table[0] <= 8'd123; // ここで、初期値を格納する
table[1] <= 8'd65; // 実際には、`includeで別File
table[2] <= 8'd111;
・・・延々と256個続く
end else begin
・・・・
if( rx ) begin // 受信したら
ans <= table [rx_data]; // 一義的に答えが決まる
・・・・
end
end
end
という、配列型と、
RAM U1 ( .adr(rx_data). .data(temp) );
if( rx ) begin // 受信したら
ans <= temp; // メモリーからの答えで、結果を得る
・・・・
end
の2つを考えました。たぶん、配列型は、できると思うのですが、
RAM型の時の初期値の書き方がわかりません。
RAMは、MIGで作るので、IP作るときに書き込むのかも?と、勉強しています。
>>827 CoreGenだと.coeファイルを指定できたはず。
読み出しだけならROMで作っても良いのでは?
>>828 ありがとうございます。
>読み出しだけならROMで作っても良いのでは?
ですね。すっかり忘れていました。
>CoreGenだと.coeファイルを指定できたはず。
そういう外部Fileで持てるのですね。でも.coeって、FIRのときの係数の拡張しでは
なかったですか? coefficientのcoeだったと思います。
ちなみに、配列型で行う場合、
上記のように、if( RESET )で設定できる(?)と考えています。
しかし、実際に、ハードウェアで電源RESET信号は来ません。
RESETにアサインしたpinには、押しボタンSWが付いててるだけです。
そのような場合でも、電源onだけで自動的に配列に書き込まれると考えれば良いでしょうか?
それとも、電源on後に、人間がRESET SWを押さないといけないでしょうか?
830 :
774ワット発電中さん:2012/08/27(月) 02:25:40.22 ID:n9Dv3YNk
配列ってただのFFが一杯ならんでるだけだから、当然リセットを手で打ってください
>配列ってただのFFが一杯ならんでるだけ
すまん・・・某ゲームのパッケージが並んでる姿を想像してしまった
833 :
774ワット発電中さん:2012/08/27(月) 08:14:06.61 ID:gVuz0Uq6
>>829 外部RESET信号が当てにならない時は、SRLC32Eを使って自己RESET信号を作ったりします。
Active-Highリセットならば、初期値INIT => X"FFFFFFFF"にしてSRL data inputに'0'を入力。
PLLを使っているなら、LOCKED信号を利用するのも良いです。
ROMを合成するようにhdlを書けばいい
Microblazeから書き込めるRAMにしておく。
テーブルが変わったらファーム修正で対応。
836 :
774ワット発電中さん:2012/08/28(火) 21:03:31.40 ID:RVLxIPH5
非同期なスイッチ信号とかを同期回路に取り込むときに、D-FFを通しますが、
何段通せば良いでしょうか?
1段だと、危険な状態になるので、そのあとにもう一段、いや。もう2段付ければ良いでしょうか?
2段でおk
1段でおk
メタステーブルのことじゃない?
1段目のD-FFが噛もうとした瞬間に、
スイッチ入力信号がフラフラになりかけてると、マズイかな、って思いました。
2段にして、1つ前の過去を使うなら、1つ目のFFのQが
デジタル的にレベルを天地にはっきりさせてくれている、と思うからです。
でも、1段だけでは信用できないので、もう1段入れれば安心かな、と思いました。
しかし、念には念を入れて、もう1段・・・・とかやっていくと際限がないです。
2段あれば大丈夫だろ
書き込みテストぉぉ
FFに非同期信号(微妙な電圧)を取り込むと、超低確率で発振してしまうそうな
(それでも人間の感覚では高確率で発生)。
ただ、発振し始めるのに少し時間がかかり
その頃には後段のFFはきっかりHigh.Lowが入っているんで
2段目以降のFFは発振しない。
どうしてもD-FFはラッチ2個で作るんで、そうなるらしい。
ちなみに俺はその発振を見たことはない。
発振のイメージが、次段のH/L閾値を越えてばっこんばっこん振れるというのと、
中間電圧付近で小刻みに震えているだけ、だとだいぶ違うがどうなんだろ。
周波数はおそらくゲート遅延時間に関係するだろうから今ならかなり高周波だろう。
インバーターを使った発振回路と原理的には同じようなもの。
条件によって発散(と言ってもVDD-GND間で収まるけど)したり収束したり。
ちなみにメタスは前段と後段のクロックによって(確率的に)必要なFFの噛ませ数が変わる。
10年ぐらい前にNTTの孫受けの仕事をしてた時は安全の為に5段打てとか言われた事もある。
NTTの指示だったのか、直受けの会社の指示だったのかはわからんけど・・・
入力信号が、スレッショルド付近に達したら、上下どっちかのFETがONして
電源電圧が下がって、スレッショルドが変わって、FETがOFFして・・・
こんな現象だわな。 ゆっくり立ち上がってくる信号だと防ぎようのない現象。
だから、シュミットトリガにしたりする。
F/Fによる同期化は、普通ロジックICの場合で「最低」二段と言われてる。
ただし、ASICの場合はF/Fの速度が早くてロジックICではI/Oピン経由で
消えてしまうようなパルスが伝達されてしまい、問題になることがあるんで
三段以上って指定は確かにある。
五段てのは流石に初めて聞いたな。
849 :
774ワット発電中さん:2012/08/30(木) 23:11:20.82 ID:saoxE9HX
メタ・ステーブルなのだから、メタスというのはやめろ
ガンダムじゃあるましし
845なんですけど・・・
ああ、そうだったんですね。知ったかぶりですみません。
諸先輩方のお話はすごく為になります。
あと、ガンダムのお話は結構です。
焼酎片手に語られたら大変です。
メタステーブルを、HL往復の発振と説明しているやつと
閾値に至らない中間電位と説明しているやつがあるな。
確定ポイントまでもっていく力が足りない結果という話と、
時間がたつと確定する、というのは同じようだ。
852 :
774ワット発電中さん:2012/08/31(金) 00:30:12.83 ID:KZVja/oL
今俺の手元にある本に、実際のメタステーブルをとらえた波形が載ってるわ
セットアップ/ホールドを満たしていないときの現象と微妙な電圧を取り込んだ
ときの現象は同じなの?
854 :
774ワット発電中さん:2012/08/31(金) 03:06:23.31 ID:Gp4eY/UM
RESETスイッチにも5段入れるんでしょうか?
ダブルバッファって言うだろ。
>>858 へー、すごいね。
どこのオシロ? テクトロかな。
>>857 10MHzというより、FFのスイッチング速度じゃないのかな。
つまりはプロセス。FPGAは最先端デバイスだから1段は厳しいかも?
>>857 メタステーブルとはちがくないか?
通信のアイパターンみたいな、複数回の波形の結果っぽく見える。
メタステーブル状態から「0」か「1」のどちらかになるのを繰り返し観測した波形だよ。
>>860 タイミングを微妙に変えながら繰り返し取った波形でしょ。
ちゃんとメタステーブルが発生してるじゃん。
メタステーブルって、
メタス テーブル だと思ってた。
メタ ステーブル らしいね。
メタってなに? ヘビメタのメタ? メタテキスト?
864 :
774ワット発電中さん:2012/08/31(金) 23:07:22.65 ID:KZVja/oL
メタ(meta-)とは、「高次な−」「超−」「−間の」「−を含んだ」「−の後ろの」等の意味の接頭語。
すると、
メタ ステーブル とは、 高次な安定状態?
866 :
857:2012/09/01(土) 00:38:05.97 ID:nvyrNwwM
>>856 元は「メタ・スタビリティ」なんかね。名詞?
メタステーブル状態、なら正しいのかな。
ステーブルって、 stable = state + able だろうか
エンジニアが休憩室とか、仕事中の雑談してる様子その物だな。
ほのぼのする。
870 :
774ワット発電中さん:2012/09/01(土) 11:58:33.12 ID:jqQfcvav
クロック乗り替え回路をオカズにしたらご飯3杯はイケルね。
今日はクロックの日です。
お得かどうかは自分で判断するしかないと思いますよ。
自分だったらDE0-nano買うけど
TERASICいいよ
手っ取り早く動かすにはいいと思う
不満データよりずっと安いし
でもこの手のボードは自分で全部書かないと動かせないよ
Webにサンプルなんてないし
876 :
872:2012/09/12(水) 10:32:18.03 ID:ETc9KdnT
DE0-nanoのサイクロンIVは安いっすね
どっちもTERASICのサイトですが・・・
ダウンロードケーブルだけはあるんでALTERA必須で
ともあれ買ってみます。できたばっかりのサイトみたいですけど
>>876 できたばっかり???
それなりに昔からあるが・・・
DE0-Nanoの利点は散らかった机の上に置いてもあまりショートしない所w
878 :
876:2012/09/19(水) 07:26:45.09 ID:Tm4LWl4i
CPLD来ました。
電源だけ面倒でしたが、他、何の滞りもなく動きました。
電源落としても残ってるのはFPGAばっかりやってきたので、なんか不思議な感じっすね。
やっぱりFPGAで言うところの外付けフラッシュ書き込み->起動と一緒で
毎回フラッシュに書き込んでいるんで、書き込みの寿命は割りと短いんでしょうか?
あなたの寿命より長いかもしれませんよ。
>>880 リンク先読んだけど意味が分からなかった。
VHDLに変換して統合って何のためだろう?
シミュレーションなら混在しててもできるだろうし、
製造の話ならネットリストだよなぁ。
方言と言うよりも、記述が厳格なんで、曖昧な記述でも通ってしまうVerilogからの
変換は面倒だと思うな。
実際手変換でも、論理合成結果を推測しながらVHDL側の記述を考える事になるし。
抽象度がそれ程高くない前提だが。
統合しないとチェックツールが使えない。
慣性遅延はどういうときに使えば良いんでしょか?
遅延時間より切り替え周期の方が短いとき
「理論より実践」だよ。手を動かせ。わからなくても手を動かせ。
いつかできるようになるから。きっと上手くなる、という気持ちが大事なんだ。
それがなかったら回路設計者にはなれないぞ。
どういう時?じゃないんだよ。手を動かして感じろよ。自ずとわかってくるもんなんだよ。
Don't Think
Feel
>>814 遅れすだけど、おれだったらLT使うな。
8ビットアドレスROMなら記述も簡単。
台風の来ているこんな時に何ですが、
ChipScopeって、使っていて、ムカっと来ませんか?
信号を追加しようと、信号リストから選択してOKしたのに、追加されていない。
Modify....のボタンを押さないといけない。
さらに、Modify...のボタンを押す直前の位置に何の警告もなく上書きされてしまう。
しかも、Ctrl+Zで取り消しが効かない。
その前の画面で、Data数と□トリガと信号は同じ の中間の、ボタンも何も無いところで、
クリックすると、□トリガと信号は同じ がクリックされてしまい、
せっかく登録したData数が減ってしまう。
だったら使うなと言われそうだけど、みんな不満なく使っているのか? こんなソフトを
>>890 デザイン修正が発生するけど iconとilaを自分でインスタンス化しとくのが結果的に一番楽でした。
.cdcもFPGA Editorで1クリック生成できるので。
Inserter経由だと、Net名が変わる度にプローブポイントを見失ってイラっと来るんよね。
>>891 ありがとうございます。
そんなやり方があるんですか? ぜひ知りたいです。
インサーターでやっているんですが、
信号名は出て来ないわ、bitの並び順は反対になるわ、イライラします。
ChipScopeのGUIって、PlanAheadと同じで、何か変ですよね。
だから、chipscopeはあんまり使わないでいるんです。
そのやり方はね何というやり方でしょうか? 検索キーワードだけでも教えてください。
DS229
俺はコード内のポートやレジスタの宣言してるところをスクリプトに放り込んで、
cdcを作ったり、ilaとアサインできるようにしてる。
な、なんと、そんなことまで出来るんですか。
今日も、chipscopeをあきらめて、空きポートに線を出して、オシロで解決しました。
>>892 Coregenで作ったICONコアとILAコアを自分でインプリするだけです。
「chipscope icon ila coregen」辺りでググればよろしいかと。
BlockRAMの空き具合にも寄りますが、512bit超でのバス観測が
楽に出来るのは便利ですね。トリガの掛け方も色々選べるし。
512bitって、
そんな幅の変数があるのか?
データ幅≠変数の幅でしょ?
チップ内部だし、幅広のバスはよく使うよね。
898 :
774ワット発電中さん:2012/10/14(日) 02:34:44.51 ID:T5dkxh8R
wire input a,
wire input b,
wire input c,
wire inout d,
wire input e,
wire input f,
wire input g,
wire input h
こんな間違いをして1日を費やしてしまいました。
そんな僕を優しく叱ってください。
ヽ ヽ ヽヽ ヽヽ
ヽ ヽ ヽ ヽ ヽヽ ヽ
∧_∧ ヽ ヽ i'`゙`゙゙`゙"'i
(,,, ・∀) li| |li ガッ
/ つ=○===| | li
(⌒) / l:lli| |て
(,,__,). Σ |从从从 | そ ←
>>898
wireとinput逆ってことかな?
でも相変わらず95の時の書き方で書いちゃう。
1個だけ違うのが混ざってるって事かな?
この中に1人、inoutがいる!
なるほど、キーボードの[o]と[p]は隣同士かw
そういうことか・・・しくしく
でもエラーでdしか出ないだろうから分からないか?
inoutの間違いは、たまにやるよね。困ってる、実際。
でもVHDLは使いたくない。
注意するしかないか。
エディタのキーワード強調機能で別の色にしちゃうのもイイネ。
inout なんて、一番外側でしか使わないだろ。
内部バスとか書いちゃうの?
>>908 キーボード上でoとpが隣なものだから、タイプミスが出る事があって困るって話だと思ってたんだが…
違うの?
Dvorak配列のキーボード使うよろし
dragonspeechでも使っておけ
>>898 置換するとか、ブロックでカットするとかすればいっぱつで済むよ。
市販のテキストエディタを試してみたら?
思うんだけど、
ISEがWarningで「inoutが混じってるけど大丈夫?」と
言ってくれればいいのに。
inout でも入力にしか使ってなければ
input と同じだろ?
>>898 は、何で一日つぶしたの?
916 :
774ワット発電中さん:2012/10/20(土) 19:21:33.31 ID:THga5toy
>>915 「何かコンパイルエラーだって。英語だからよくわからんけど」
「英語だからよくわからん」というなら、
1)英語の勉強をやりなおす
2)足を洗って、日本語だけで済む世界に移る
の二つに一つだな
SPI通信の送信で、例えば
reg [15:0] TxData;
とか取って、実際には、
TxPin <=TxData[0];
TxData<={ 1'bo, TxData[15:1] };
とか、書きますよね?
そうすると、Warningがいっぱいでます。
「TxData<15>が、ロードレスだぜ」
このWarningが出るのがイヤなのですが、出ないようにする方法は、あるでしょうか。
Warningが出なくなるなら、多少のリソースを喰ってもいいです。
但し、IOに出すとか言うのは、したくありません。
連投すみません。
以前に、chipscopeは面倒くさい と言った者ですが、
今日、やっとコツを掴みました。
これまでは、トリガー信号と観測信号を、別々に選択してセットしていたのです。
たとえば、観測信号を100本設定、トリガを8本設定など、
「トリガー信号を増やすとコンパイルに時間がかかるし、リソースも食うでいかん」
と遠慮していました。
なので、観測し始めてから「あっ、しまった、あの信号を入れるのを忘れてまったがや」と、
再びインサーターに戻って追加。
しかし再び「あっ、しまった」が発生。 もうイライラでした。
ところが、観測信号=トリガ信号にして、大胆に設定すると、
確かにコンパイルに時間はかかるものの、「あっ、しまった」は、ほぼ発生せず、
さまざまなトリガをかけることができました。
もしかしてみなさんは、
すでにそのようにして使っているのでしょうか?
というか、はじめからチェックBOXがonになっているところを見ると、
一般には、そういう使い方をするのでしょうか?
日曜HDL書きは大変です。
chipscopeってフリー版じゃ使えないんじゃなかったか
日曜HDL書きでも有料版使う時代なのか
もちろん正規版を購入しました。
本格的にFPGAがやりたかったからです。
デバイスは、スパータン3AのDSP付きのを海外通販で買いました。
LCD表示器がないのが残念ですが。
個人でよく買ったな。四重〜50万近くしなかった?
これぞまさに「数万円から数十万円以上する専門的なソフトで、素人が購入することは考えにくいという 」レベルだなw
趣味のためにソフトに数十万出したって凄いな
本格的にやるんだから毎年サブスクリプション更新するんだろな
サブスクリプション? 日本語でお願いします。
定期更新なんて、するわけないじゃないですか。
僕はいつまでもISE 13です。
ChipscopeとSpartan3,6 Virtex4が使えればいいですから。
ISim使ってるならISEを最新版に上げざるを得ないんじゃないかな。
chipscopeって、そんな便利なん?
シミュレーションでわからない突発現象を取るの?
いまいちメリットがわからん。
ロジアナなんていらない状態になったがな
signaltapで
5年位前、TEDのキャンペーンで、
chipscope単体だと30万近くするのが、
USBケーブルと抱き合わせで10万弱ってのがあったよ。
今でもたまにやってるんじゃないかな。
おまいら知らんのか?
ChipScopeだけなら数万で買えるぞ
WebPACKに追加インストール出来るし。
>>919 少なくとも俺はトリガ=観測信号でやってる
ロジック使用量は気にならんレベルだと思うし
932 :
774ワット発電中さん:2012/10/22(月) 21:18:58.94 ID:0g8/TSxw
Verilog-HDLの記述方法でどなたかをアドバイス御願いします。
あるレジスタaにセットするパラメータ(定数)があります。
そのレジスタaの幅は可変です。
普通に定義すると、
parameter REG_WIDTH = 8;
parameter cmd = 8'd1;
reg [REG_WIDTH-1:0] a;
可変なので↓のパラメータは可変長で定義するにはどうすれば良いでしょうか?
parameter cmd = 8'd1;
意味合いとしては↓これです。
parameter cmd = {REG_WIDTH}'d1;
このままではエラーになってしまいますので、
どう記述すれば良いでしょうか?
>>932 ていうか、
設定したい値のbit幅を自動的に求めて、
それを使って自動的に変数幅にセットしたい、ということではないの?
934 :
774ワット発電中さん:2012/10/22(月) 21:43:27.85 ID:0g8/TSxw
>>933 REG_WIDTHを変更すれば定数cmdも一緒に自動で変更したいという事です。
cmdが10個も100個もあると思って頂ければ。
parameter cmd = 1;
ではあかんのん?まぁ32bit以下限定なんだけど。
936 :
774ワット発電中さん:2012/10/22(月) 22:39:06.36 ID:2AsFlEm+
parameter cmd = {{REG_WIDTH}1'b1};
937 :
774ワット発電中さん:2012/10/22(月) 22:47:37.78 ID:2AsFlEm+
間違った
parameter cmd = {REG_WIDTH{1'b1}};
938 :
774ワット発電中さん:2012/10/22(月) 23:01:21.16 ID:0g8/TSxw
コメント有り難うございます。
>>935 はい、書き込んだ後に思いついたのですが、
残念ながらREG_WIDTHは8から256ビットまで仕様上あり得ます。
>>937 それだと全て1/0の場合しか出来ません。
parameter cmd = 8'd1; ←BINではなくDECです。
奥の手はテキストエディタでの置き換えなんですが、
奥の手過ぎるので使いたくないです。
>残念ながらREG_WIDTHは8から256ビットまで仕様上あり得ます。
検証大変だな。頑張れ。
parameter [REG_WIDTH-1:0] cmd = 1;
とか書けなかったっけ?
数年前、派遣会社で紹介された派遣先、
私は技術を身につけたく、VHDLでコードを沢山書きたかったのだけれど、
設計物はVisual Eliteでステートマシンを何個も何個も作っているようなものだった。
面白みもなく、やりたいことではなかったので、
派遣契約で派遣会社にも不満があったので、途中で解約してきた。
近代市民ぶって完全無教養の採り産み先生カッコイイっす!ダサ杉ってことですよ!バブル世代のクズ先生さん!
そんないい加減でインテリ気取れないので。東京大学共学学部のカリキュラムをご覧下さい!
科学のイロハもご存知ないんですね!
いいですよ!レベル低いので死んでください!さあ!早く!NEC?なんですかそれ!!??アハハハハ!!!
NEC?いや?しらないですよ!?何ソレ?LSE?違うでしょ??学位持ってますか?貴方?アハハ!!
調子こいてセミナーとかやらないでくださいね!!!??調子こきのポン大君!!ガハハ!!
なぁ!!キミさぁ!!低レベルなんだよ!!死んで!マジで!!
何か恨みでもあるの?
こんなとこで言ってないで、直接言えよ。
そんな性根や度胸があったらこんなところに書かないだろ。
ヘタレのクズ学生だよ。
午前3時にへんなにが湧いてるな・・・
完全に心の病気だね。夜中に発作が起きたんだろう。
ああ、スーパーハッカーにIP見られたみたいだね。
私は荒らしだね。迷惑かけてごめんね。
もう来ないようにするから許してください。>>ALL
>>932 なんで固定値をわざわざレジスタ変数にセットする必要があるわけ?
951 :
774ワット発電中さん:2012/10/26(金) 07:16:52.83 ID:d63VFGoW
シリアル通信で、IDなどの固定値を送信、ってことはよくあると思う。
今思ったらNECって自殺するレベルの退職面接やってるんだっけ
うむ、何ヶ月か前にニュースでやってたような希ガス
つーかスレ違い
NECといえば先日の水増し請求疑惑はどうなったんだろう。
前回の水増し請求発覚で誕生した西垣社長が現在の惨状の礎を築いたというのに、
今回のが事実だったらもう先は無いんじゃなかろか。
place and route が 30分経っても終わりません。
何かあったのでしょうか?
すみません、今終わりました。
Generating Pad Report.
All signals are completely routed.
Total REAL time to PAR completion: 14 mins 43 secs
Total CPU time to PAR completion: 14 mins 42 secs
Peak Memory Usage: 559 MB
Placement: Completed - No errors found.
Routing: Completed - No errors found.
Number of error messages: 0
Number of warning messages: 0
Number of info messages: 1
Writing design to file hoge.ncd
PAR done!
>>954 防衛省のか?
防衛省は接待を要求してくるから、
三菱電機も住重もその分請求しただけだよww
NTT向けも、ぼったくりしてたなw
ぼったくり、それは絶対に失ってはいけない日本の素晴らしい文化
水増し請求にギャースカ言っているのは非大和系の朝鮮・中華系人のみ
>>956 昔俺も「終わりました」と、電話をかけた。
するとエアーシュータで料金が飛んできた。
教えてください。
Verilogで、配列を取るとき、
reg [7:0] hoge [0:7]
とか、書きますよね。これを、
reg [7:0] hoge [1:8]
という取り方もできると思います。この場合、
hoge[0] <= xxxx;
という、添え字の指定をしても良いのでしょうか?
つまり、宣言時に1〜8と言いながら、
使うときに、その範囲外の値で指示することです。
あるいは、
reg [7:0] hoge [0:7]
reg [7:0] hoge [8:15]
reg [7:0] hoge [121:128]
などと宣言したとき、その宣言したときの範囲の値で指示しないといけないとか、
あるでしょうか。
>などと宣言したとき、その宣言したときの範囲の値で指示しないといけないとか、あるでしょうか。
まあな。
えっ、そうなんですか。
ありがとうございます。
もう一度試してみます。
今日ずっとバグっていて。 ありがとうございました。
どんな動作を期待してるんだよw
こんな感じです。
1
reg [7:0] hoge [0:7] と宣言したら、
配列番号としてOKな値は、0〜7であり、8はエラーだと思います。
2
reg [7:0] hoge [8:15] と宣言したら、
配列番号としてOKな値は、8〜15 なのか、0〜7なのか、ということです。
宣言時に、書く値は、個数を示す幅であり、0:7でも1:8でも100:107でも、
結局8個を指示していることになります。
そして実際に使うときには、
・上記いずれも8個で宣言しているので、0〜7で指示するのか、
それとも、
宣言時の数値範囲でないとエラーするのか、
ということです。
reg [7:0] hoge [8:15]
reg [7:0] hoge [121:128]
>>965 >宣言時に、書く値は、個数を示す幅であり、
語数は[最下位アドレス:最上位アドレス]の順で指定…と考えればスッキリすると思う。
しかし、Verilogの動作を机上で理解するという縛りでやってんのかな。
無料で使えるシミュレータが多数あるんだから、実際に動かしてみれば良いのに。
module ARRAY_TEST;
//reg [7:0] hoge[0:7];
reg [7:0] hoge[8:15];
initial begin
hoge[0] = 8'h11;
hoge[7] = 8'h88;
hoge[8] = 8'h99;
$display("address=%h, data=%h", 0, hoge[32'd0]);
$display("address=%h, data=%h", 7, hoge[32'd7]);
$display("address=%h, data=%h", 8, hoge[32'd8]);
end
endmodule
ご教示いただきたいです。
verilogにてボックス=ミューラー法を用いてガウスノイズを生成しようと試行しています。
一様乱数(x,y)を生成したので、ボックスミューラーの公式をverilogに落としたいのですが
X=sqrt(-2 * log(x)) * cos(2 * pi * y)σ + μ;
Y=sqrt(-2 * log(x)) * sin(2 * pi * y)σ + μ;
一様乱数x,yの入力箇所はここであっているでしょうか。
またσには1,μには0を代入すれば良いのでしょうか。
wiki等を見たのですが公式の理解が進まず、
とりあえず正規乱数を出力してヒストグラムで見ようと考えています。
宜しくお願いします。
合ってるけど、
むしろこれを作る目的の方が知りたい。
μ はオフセットなので通常0でいいが、
σは雑音電圧の標準偏差であり、実効値だ。
自分が発生させたい雑音の電圧なのに
これでいいかて。。
お前の発生させたい電圧を他人が知るかよ
>>967 もひとついうと統計学と電気量がどういう関係にあるかこの際調べな
ご指導ご回答ありがとうございます。
>>968 他人の作ったフィルタの具合を確かめるためのものに使います
>>969-970 ありがとうございます。
統計学にあまり触れずに作ろうと横着しようとしていました。
±1の範囲で考えているので、このまま進めてみます。
>971
>±1の範囲で考えている
もう処置無しだなお前
フィルタの具合を確かめるって言われても…
答えになってない。
もし仕事でそれをやるのだったら、転職を勧めます。
フィルタ動作確認するのにノイズ発生て
正弦波をスイープさせ、入力出力のレベルを比較して
設計したf特通りになってるか確認すんだよバカタレ>>ID:ECQRHorh
975 :
774ワット発電中さん:2012/11/01(木) 13:16:12.63 ID:ISXkB3hW
>>974 それはアナログフィルタだろ
デジタルフィルタだってあるぞ
>>974 レベルだけじゃなくて、位相特性の測定もお願いします…orz
>>975 ハァ?お前どこまで馬鹿なんだ。
シミュレーションレベルでまず検証するんだよバカタレ
>>976 位相特性も正弦波食わせれば簡単に判るだろうが。
フィルタ特性を検証するのにガウス雑音食わせるてアホの骨頂かお前は
ID代えてご苦労だなウスノロ
>±1の範囲で考えている
↑こっちの方はまだ理解できてないようだなえぇゴミ野郎
ガウス分布の意味すら理解できないアホは死ねよまったくよ
>それはアナログフィルタだろ
>それはアナログフィルタだろ
>それはアナログフィルタだろ
>それはアナログフィルタだろ
アホの戯言、ディジタルフィルタにディジタルのまんまノイズレス(正確には量子化ノイズがあるが)の正弦波を実機で
入力できることもわからない死ねば
>>976 >レベルだけじゃなくて、位相特性の測定もお願いします…orz
おもしろいから聴いてやろう
雑音の位相特性をどうやって決めるんだい?ウスノロ
位相特性と言う限り、入力は正弦波が前提になる。
雑音の位相とは何か定義して教えてくれや。
位相どころか、雑音の微係数だって、リーマン=ルベグの意味では定義できないんだがな。
>>979 976が書いてる正弦波で測定する場合は位相特性オシロで見るとかででるでしょ??
雑音でやる場合は、FFT掛けるから一括で特性出るよ??
この場合で測定しようとしてるのは、フィルタの伝達特性だよね?
>>980 >>981 >雑音でやる場合は、FFT掛けるから一括で特性出るよ??
戯言ほざくなお前は
システムの伝達関数を調べたければ入力はδ関数インパルス入力だ。
インパルス入力と雑音が一致してるのはスペクトル特性だけ。
理屈の上からは極めて長い周期の一様乱数でガウス雑音を作れば、
f特は1に近づくが、どれだけの周期のものが必要かお前はわかってんのかい。
だいたい、雑音自身の位相なんて決めようがないのにどうやって出力位相を決定するつもりだ。
それと、なんでオシロを見るんだ。ディジタルフィルタだからバス入力があるだろうが、
そこにマイコンかUSB出力をシリパラするでポートたたいて直接ディジタルデータ入力しろと言ってる。
>>980 >雑音でやる場合は、FFT掛けるから一括で特性出るよ??
ガウス雑音入力してどうやって位相特性出すのか解説してもらおうか。
ごまかさずにちゃんと書け
よくわからないけど、982で決定的に恥をかいているような気がする。