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

このエントリーをはてなブックマークに追加
1774ワット発電中さん
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/
2774ワット発電中さん:2011/12/07(水) 01:49:39.42 ID:lqLCZZR+
・FPGA
 Xilinx
  ttp://japan.xilinx.com/
 ALTERA
  ttp://www.altera.co.jp/
 Lattice
  ttp://www.latticesemi.co.jp/
 Actel
  ttp://www.actel.com/intl/japan/
 QuickLogic
  ttp://www.quicklogic.com/
・ASICベンダ推奨ツール類 (高価)
 Synopsys
  ttp://www.synopsys.co.jp/
 Cadence
  ttp://www.cadence.co.jp/
 Mentor
  ttp://www.mentorg.co.jp/
 Synplicity
  ttp://www.synplicity.jp/
・Verilogシミュレーター (無料)
 Icarus Verilog
  ttp://iverilog.icarus.com/
  ttp://ryusai-hp.web.infoseek.co.jp/icarus.htm (解説)
  ttp://www.ice.gunma-ct.ac.jp/~kimsyn/verilog/FreeSim/iverilog/iverilog.html (解説)
 IVI
  ttp://ivi.sourceforge.net/
  ttp://www.kumikomi.net/archives/2005/06/10icarus.php (解説)
・VCDフォーマットの波形表示 (無料)
 GTKWave
  ttp://gtkwave.sourceforge.net/
  ttp://ryusai-hp.web.infoseek.co.jp/gtkwave.htm (解説)
・関連書籍
 STARC
  ttp://www.starc.jp/
 CQ出版
  ttp://www.cqpub.co.jp/
 Interface
  ttp://interface.cqpub.co.jp/
  ※基板が付録で付いている号はバックナンバー希少になりがち
 Design Wave Magazine (休刊)
  ttp://www.cqpub.co.jp/dwm/
 ディジタル・デザイン・テクノロジ (旧DWM)
  ttp://digital-design.cqpub.co.jp/
・解説サイト
 やるおと学ぶ Verilog-HDL
  ttp://hirokinakaharaoboe.net/yaruo_verilog/
・関連スレ
 【FPGA/CPLD】 XILINX/ALTERA/Lattice/Actel 16
 http://kamome.2ch.net/test/read.cgi/denki/1319916945/
 【EP3】DE0で始めるVerilog HDL【C16】
 http://kamome.2ch.net/test/read.cgi/denki/1310362001/
3774ワット発電中さん:2011/12/07(水) 01:53:40.27 ID:lqLCZZR+
リンク切れが多かったので、ついでにテンプレ見直しました
解説記事は別にテンプレに入れる必要ないかなーとは思ったけど、面倒なので直してません
前スレ後半でやるおと学ぶVerilogをテンプレに入れようみたいな感じの議論があったので、反映しておきました
>>1でコピーミスっちゃったので、次スレあたりで直してくださいな
4774ワット発電中さん:2011/12/07(水) 12:54:17.88 ID:W1DQ+HKy
新スレおめでとうございます
5774ワット発電中さん:2011/12/13(火) 09:09:42.14 ID:GRD2quO0
教えてください。

FPGAで、LPFが作りたいです。
1次ではなく4次が作りたいです。
FPGAには、アメリカのザイリンクスというメーカーの
スパルタン6を使います。

このときの手法は、FIRかIIIRしかないのでしょうか?

また、FIRやIIRでは、積和のためにDSPブロックが必要ですが、
DSPブロックなしでFIRやIIRはできないのでしょうか?
6774ワット発電中さん:2011/12/13(火) 09:21:27.90 ID:/M5fa1Rm
IIIRなんて知らないけど、
FIRとIIRしかないかって言われると、
どっちかに分類できるからな。
日本語で考えてみたら?

DSPブロックなしでもできるよ。
でなきゃ、他のFPGAやASICで作れないだろ。
7774ワット発電中さん:2011/12/13(火) 12:21:33.17 ID:vUeyOamf
ロジックで加算器や乗算器作ってる人はもういないのか…(遠い目)
8774ワット発電中さん:2011/12/13(火) 12:36:52.81 ID:d06jIMWL
ブースの乗算器とか作っても、合成ツールのほうが賢いもんね。
9774ワット発電中さん:2011/12/13(火) 15:22:40.32 ID:P1ZHGnDa
>>5
それがどうHDLと関係あるんだ?
10774ワット発電中さん:2011/12/13(火) 21:10:51.12 ID:cw3C4J0W
まるで大学生が宿題か卒業研究の答えを探しているみたいだね
11774ワット発電中さん:2011/12/14(水) 20:03:03.69 ID:VaUp5IUz
LPFなら加算して右シフトすればいいじゃない
12774ワット発電中さん:2011/12/14(水) 21:55:19.20 ID:CneUSNYY
何それ?移動平均のこと?
13774ワット発電中さん:2011/12/15(木) 00:35:02.73 ID:Vayd2kp0
FPGAではFFTして要らない成分をカットして元に戻すってのが普通だよな
>>5 Sliding FFTでがんばれ
14774ワット発電中さん:2011/12/17(土) 02:14:23.12 ID:FkKumWBd
Verilog−Aでオン抵抗を考慮しないスイッチをつくりたいのですが
どのようにして記述すればよいのでしょうか?
15774ワット発電中さん:2011/12/17(土) 02:26:54.73 ID:FkKumWBd
ちなみにここでいうスイッチはMOSスイッチをモデリングしたものです
16774ワット発電中さん:2011/12/19(月) 17:23:40.04 ID:LZUbe0tg
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
17774ワット発電中さん:2011/12/19(月) 17:55:11.96 ID:cf0bSJPq
構文の一部分だけを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 のループには名前をつけること。
18774ワット発電中さん:2011/12/21(水) 03:46:14.28 ID:EGxJVmYD
>>15
そんなもったいねーことしねーよ…
普通にFIR作ればいいじゃん…
19774ワット発電中さん:2012/01/03(火) 02:12:12.10 ID:bniTmpxA
16bit幅のデータを、他のデータと足並みを揃えるために、
20clock遅延させたいです。
FIFOを使えば良いのでしょうか?
20774ワット発電中さん:2012/01/03(火) 11:49:21.20 ID:WP4eWblq
普通にシフトレジスタだろ。
21774ワット発電中さん:2012/01/05(木) 18:54:52.20 ID:ayI4azl4
教えていただきたいのですが

case文のステート内に更にcase文を構築することは可能でしょうか?
例えば
case(a)
1: begin
case(b)
1: begin
.............
.............
のような書き方はできるのでしょうか?

回答よろしくお願いします。
22774ワット発電中さん:2012/01/05(木) 19:04:19.23 ID:upSij2ui
なぜ出来ないと思うのか?
なぜやってみないのか?
23774ワット発電中さん:2012/01/05(木) 19:23:48.75 ID:ayI4azl4
確かに貴方の言う通りだと思います。

もう少し自力で頑張ってみようと思います。
回答ありがとうございました。
24774ワット発電中さん:2012/01/06(金) 01:36:23.62 ID:5R/dn8WW
できるけどソース見づらくなるからやめれ。
25774ワット発電中さん:2012/01/06(金) 09:12:12.99 ID:rqWuKw1v
そだね、case({a,b}) にしたほうがいいかも。
26774ワット発電中さん:2012/01/06(金) 10:44:33.51 ID:MPGwMmVm
Case分って良く使う?
if分ばかりでやってるので、使ったことないよ
27774ワット発電中さん:2012/01/06(金) 11:02:10.02 ID:YUwELWmb
見やすくなるからcaseのほうがすき
28774ワット発電中さん:2012/01/06(金) 11:08:38.04 ID:Ah4H5JyR
// parallel case
29774ワット発電中さん:2012/01/06(金) 13:29:46.18 ID:YyiEX18o
回答ありがとうございます。
結局、別の方法で希望の動作を実現することができました。

これから前回の質問の件も検証してみようと思います。
ありがとうございました。
30774ワット発電中さん:2012/01/06(金) 16:34:27.22 ID:/PnhAkIg
FIR,IIRフィルタ,FFTならSpiralだろう
31774ワット発電中さん:2012/01/08(日) 13:28:21.55 ID:lLYFOlwV
教えてください

HDLを書かなくても、CでFPGAが使えると聞いたのですが、
マイコン程度の知識で、使えるようになるでしょうか?
FPGAの中にマイコンを組み込めば...という話ではなくて、
HDLを使わなくても、ベタにFPGAが使えるか、という意味です。
32774ワット発電中さん:2012/01/08(日) 13:55:28.34 ID:Xxt/9ZS2
やめておけ。
実用レベルじゃない。
33774ワット発電中さん:2012/01/08(日) 14:36:03.45 ID:r7b94MJ6
10年以上前からそんなこと言ってるけど
未だに実用化できてないよな。
34774ワット発電中さん:2012/01/08(日) 14:49:20.12 ID:1M3SmBBk
FPGAがなくても世界は全然困らない。
35774ワット発電中さん:2012/01/08(日) 14:52:53.43 ID:8kVUmqNz
>31
評価ボードを使うとかの特殊な状況じゃなければ、少なくとも一人は合成やHDLの知識を持ってないと難しいと思うよ。
36774ワット発電中さん:2012/01/08(日) 18:04:21.87 ID:fodTy0Lw
>>31
どちらかといえば”全部”知っとけ?

全部をCで書くことなどないだろうから
HDLに限らずモデルをそのままFPGAに反映する場合には、
さらに上位ツールとmixさせてつかうし、
Cの合成物は仕組み上、配線性が悪いものができるんで
合成やレイアウト上のケアも普通のHDL設計よりは気を使う

必然的に、全部知っていないとデザインも具体的利用法も浮かばないという訳
その中には、”マイコン程度”で動かすCの知識も含まれることもある
37774ワット発電中さん:2012/01/08(日) 20:34:49.56 ID:r7b94MJ6
>>34
久しぶりに全部74シリーズで組んでみるか?
38774ワット発電中さん:2012/01/09(月) 02:11:52.09 ID:yrdxvEhv
>>31です。

みなさん、どうもありがとうございました。
僕が考えているほど簡単にはできないみたいですね。
10年前から言われていて、まだのようでしたら、当分無理っぽいですね。
Cならマイコンでできますが、HDLはやったことがないんです。
やっぱりHDLは避けられないみたいですね。

if( reset == 1 ){
  a=0;  初期化を書く
} else if( clock == 1 ){
  ここに希望する処理を、複数行で記述する。
  しかしそれらは全行同時に処理される。
}
のように書けばいいなら、
Cでできるのではないか?と考えました。
39774ワット発電中さん:2012/01/09(月) 03:09:46.28 ID:b+SuuLus
ってか、C言語じゃなくていいから、C-Likeで書ける言語作ってほしいわ
begin end じゃなくて { } の方がいいし
switch文なんてまったく別の構造してるし
40774ワット発電中さん:2012/01/09(月) 03:10:27.89 ID:b+SuuLus
↑verilogの話ね
41774ワット発電中さん:2012/01/09(月) 03:43:17.83 ID:FFkkw7aF
>>39
そのくらい自分でパーザ書けばいいじゃんw
42774ワット発電中さん:2012/01/09(月) 09:33:53.12 ID:3fJzJRK0
>>38
Cで書いたとしてもハードウェアを記述したらHDLではないだろうか?
43774ワット発電中さん:2012/01/09(月) 10:27:23.57 ID:OSk+7aHk
ていうか、
VHDLの長い表記、Verilogのbeginがいやなのです。
Cのように、洗練された記述で書けないものかと思いまして。
44774ワット発電中さん:2012/01/09(月) 11:02:01.27 ID:1O+g2pv4
もうソフトCPUでもつくってそこで処理でもさせろよ
45774ワット発電中さん:2012/01/09(月) 15:28:43.67 ID:4IZe3lVn
> Cのように、洗練された記述
SFLでも使えば?
46774ワット発電中さん:2012/01/09(月) 16:43:59.53 ID:aEUqjLIv
Co-Simで出来た様な気がする。
47774ワット発電中さん:2012/01/10(火) 01:11:47.42 ID:MB7XL+GF
>>26
FPGAだとifよりcaseの方が小さくて速い回路になったりするよ。
48774ワット発電中さん:2012/01/10(火) 02:26:24.23 ID:DP+QqvMd
>>47
だよね、一概には言えないけど。
49774ワット発電中さん:2012/01/10(火) 12:26:48.99 ID:f7Lp0hcB
>>47
2:1のパラシリ変換case文で作ると1GHzくらいでうごいてくれるもんね.
50774ワット発電中さん:2012/01/10(火) 12:31:20.45 ID:JpZIrLnO
Verilogでの { NUM { enb }} をVHDLではどう記述すれば良いでしょうか?

( others => enb )を思い付きましたが回数が指定できないので・・・
51774ワット発電中さん:2012/01/10(火) 19:24:29.52 ID:M+RYm+Ls
>>47
条件分岐ガ同じならかわらない
52 【18.5m】 【東電 82.8 %】 :2012/01/11(水) 22:44:57.00 ID:8Q2SA7jI BE:840682962-2BP(108)
手動で配置配線すればいいじゃない
53774ワット発電中さん:2012/01/12(木) 08:23:17.17 ID:GF3JSKaP
その前に、ゲートで設計しなきゃな。
54 【15.1m】 【東電 89.3 %】 :2012/01/12(木) 21:30:19.73 ID:x9CJA5qN BE:560455924-2BP(108)
ぉ、おぅ
55774ワット発電中さん:2012/01/22(日) 14:01:00.56 ID:6glMKkVp
せやな
56774ワット発電中さん:2012/01/22(日) 21:05:22.14 ID:3+qrc0Yg
保守
57774ワット発電中さん:2012/02/10(金) 07:21:00.45 ID:wN7awF4U
ハードウェア記述言語やってて生きる就職先ってどこですか?
大手でも中小でもいいので知りたいです。
58774ワット発電中さん:2012/02/10(金) 10:19:52.35 ID:G73f1EOs
IPの設計をしたいならIPベンダかシステムハウス(っていうのかな?)
合成とかレイアウトとかバックエンドの仕事もいいかもね。
でもどっちも仕事の波が激しそう。
やっぱ公務員かな。
59774ワット発電中さん:2012/02/10(金) 19:52:13.90 ID:QQrPfQ7A
土方志望とは・・・
60774ワット発電中さん:2012/02/12(日) 19:25:33.33 ID:rmEm86av
インドだな
HDLの前に英語やヒンドゥ覚えなきゃ
61774ワット発電中さん:2012/02/12(日) 20:04:19.00 ID:X7FoQNsg
ヒンドゥは無理っぽいから英語を覚えよう
インド訛りの英語ってどんな感じだろ
62774ワット発電中さん:2012/02/13(月) 01:04:18.24 ID:e1Vd2Id4
ヒンディ語のことか?(ヒンドスタンの言葉)
63774ワット発電中さん:2012/02/15(水) 00:06:17.35 ID:QkU9OQBN
>>38
ソフトでも複数の言語やってれば分かると思うけど、
一つの言語を覚えれば、
次以降の言語は比較的簡単に覚えられる。
最も大事なのは記述方法より考え方だから。
HDLもそれと同じで、
記述方法がCライクであれ、VHDLであれ大事なのは考え方。
見た目がCと違ってもそれは大した問題ではない。
64774ワット発電中さん:2012/02/15(水) 02:20:21.58 ID:7qqfVkg2
>>61
何語か分からんかった
65774ワット発電中さん:2012/02/15(水) 03:59:40.34 ID:CAFw2Ka3
教えてください。

Verilogで、
assign A = ( B==X )? C : 0; という書き方があります。便利なので結構使っているのですが、
ある人から、
assign A = ( B==X )? C
      : ( B==Y )? D
      : ( B==Z )? E
      : ( B==Q )? F
      : 0;
というのはやめた方が良いと言われました。理由を聞いてもわからないらしいです。
何個も続けて書くのは、なぜ行けないのでしょうか?
66774ワット発電中さん:2012/02/15(水) 07:56:41.32 ID:sdTE8MFR
>>65
排他的な条件ならcase(or casex)のほうがいいって話かな?
?〜:はif〜elseそのものだから多段にすると優先順位付として合成されるので
サイズ的にもタイミング的にも無駄が多くなる。
67774ワット発電中さん:2012/02/15(水) 12:24:05.38 ID:aKaWSHjP
理由がわからないのに使うななんて
いうヤツを信用すんな。
オレなら徹底的に議論する。

2個ならいいのか?
3個はどうなんだ?ん?
68774ワット発電中さん:2012/02/15(水) 18:10:20.45 ID:/t21KUkD
>>66
そうだよな。
優先順位付ける必要のないものにわざわざ優先順位をつけて、
でかくて遅いコンビ回路にするのか分らないよな。
69774ワット発電中さん:2012/02/15(水) 21:51:35.98 ID:accoVWJB
俺は活用しまくってるけど?
いちいちfunctionにすると可読性落ちるしめんどいし

てか、遅くはなるけど、でかくはならんだろ?
クリティカルパスにならなければ速度関係ないし
70774ワット発電中さん:2012/02/15(水) 22:22:11.50 ID:jngBxkzc
非同期でalwaysとかprocessとか使うと
センシティビティ・リスト書くのが面倒なので
可能なら>>65の書き方にしたいところ。
71774ワット発電中さん:2012/02/15(水) 22:30:41.48 ID:f/MfcYhI
>>70
Verilog2001はセンシティビティ・リスト不要だろ
verilog2001非対応ってどれぐらいあるんだ
可能ならってどういうときが可能な場合?
72774ワット発電中さん:2012/02/16(木) 00:15:31.35 ID:4BjXyjQu
if()文だと、ANDゲートのカスケーディングですよね。だから最初のAND1から
ANDの数だけ伝達が遅くなって、1clockに収まらなくなるということですよね。
case文は優先順位がないとすると、
どのようなロジックで構成されるのでしょうか。
73774ワット発電中さん:2012/02/16(木) 01:03:58.66 ID:87lc1ThA
>>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]は自分でやってくれ。
74774ワット発電中さん:2012/02/16(木) 10:14:16.39 ID:Y4IvQjna
>>72
いまどきそんなアホな合成ツールもないと思うよ。

ちなみに case にも優先順位はある。
本来は合成ツールに、優先順位なしで合成してねって伝えるべき。
75774ワット発電中さん:2012/02/19(日) 02:40:20.40 ID:bZHvB6L2
Verilogでmodule宣言時にoutput reg xxxと書いているのですが、書籍やネットでは、この記述はあまり見かけません。
何か問題があり、使わない方が良い記述なのでしょうか?

module output_ex(
   output reg [3:0] AAA,
   output reg BBB
);

またinout reg xxxxも使用したいと思うのですが、こうは記述できないのでしょうか。
入力信号とreg信号の見分けがつかなくなるので、無理な気もするのですが。
そのあとにinoutはregとassignが並んであまり綺麗に見えません。
何か良い記述方法があれば教えてください。
76774ワット発電中さん:2012/02/19(日) 03:18:01.63 ID:prTqScI9
>75
inout reg を作るとなると書いた値が読めない(Zを書くと入力値が読める)ってことになって面倒くさそう。
で、inout regがだめなんだからoutput regも諦めた方が一貫してていいや、みたいな。

77774ワット発電中さん:2012/02/19(日) 03:20:10.42 ID:0a42OD99
>>75
> output reg [3:0] AAA,
> output reg BBB
は、できる。
というか、俺は、それでしか書いたことがない。
78774ワット発電中さん:2012/02/19(日) 14:53:46.90 ID:LWmh4vmw
>>75
何も問題ない
年寄りが自分が最初に覚えた方法だけで書いてるからだ
以前は合成ツールが対応していないなんて状況があったらしいが、
俺が始めた2004年には問題なく使えてた

同じ事を2度書くのはバカのする事だ
いつまでも同じやり方でしか出来ないのはもっとバカだ
79774ワット発電中さん:2012/02/19(日) 15:48:06.27 ID:0uM0UY6H
ISEの受け付ける文法にトラウマもってる奴は多いだろうから仕方ない。

つうか、2004年だと ISE Webpack 6 の時代だが、
10くらいまで実際にいろいろダメだった気がすんだが、何使ってた? >78
80774ワット発電中さん:2012/02/19(日) 22:32:01.69 ID:prTqScI9
できるだけどのツールでも動くように〜って考えるとどうしても古い書き方になるよな。
generateはもう使えないところなさそうだけど、interfaceはどうかしら…みたいな。
81774ワット発電中さん:2012/02/20(月) 15:48:35.97 ID:RJYbbRMh
>>79

2004年に使ったときはQuartusだった
2005年からはXilinxだけど、VHDLばかりでVerilogは使ってない

Verilog2001だから2001年に出来たんだと思うけど、そんなに最
近までだめだったのかな?

VHDL200xはいまだ微妙なのは同意
82774ワット発電中さん:2012/02/20(月) 17:34:11.44 ID:j/otoRe6
>81
そういうのAlteraは早いから。Xilinxがやる気ないというか。
Alteraの常識でXilinxはかったらあかん。

まあ要望の順位としては低いんだけど、
2002年登場のSystemVerilogのISEでのサポート、
首を長くして待ってるんだが実装の気配もないぜ。
83774ワット発電中さん:2012/02/20(月) 18:06:59.95 ID:8poqTWQO
>>82
XiはISEでSystemVerilogをサポートするすると聞いていたが
まだ(ISE13.4でも)していないのか。

IC屋の世界じゃSystemVerilogがもう普通に使われているのかな
以外にSystemVerilogよりSystemCだったりして
84774ワット発電中さん:2012/02/20(月) 19:16:22.74 ID:ROlixNx1
12.1で対応するよ〜とかフォーラムで言ってたのに結局対応しなかったけどどうなの?って誰かが質問してて
14.1で対応するよ〜って返事があったのは見た気がする
85774ワット発電中さん:2012/02/20(月) 20:25:37.90 ID:dZFE+m1i
それじゃ16か18ぐらいには対応するかな?
86774ワット発電中さん:2012/02/20(月) 22:10:57.58 ID:7xEmwPcU
XはAutoESLがそのうちバンドルされる
有償版の上位Editionになると思うけど
87774ワット発電中さん:2012/02/20(月) 22:53:08.72 ID:ZHc6b6qC
AutoESLってC系ツールなのか
XilinはSystemCを推し進めるのかな
88774ワット発電中さん:2012/02/23(木) 18:58:10.95 ID:1xUfDGol
今も限定的だけと個別ツールとしてAutoESL販売してる
バンドル化されればC系推しがさらに進むでしょう
89774ワット発電中さん:2012/02/26(日) 12:05:41.53 ID:UFgrd97k
verilogとtcl/tkはどっちが役に立ちますか?
90774ワット発電中さん:2012/02/26(日) 12:23:00.19 ID:JLXBjZnG
開発言語覚えずにスクリプトだけ覚えて役に立つの?
91774ワット発電中さん:2012/02/26(日) 13:14:19.95 ID:+wTu9zz4
tcl/tk ならGUI作れて便利じゃん
92774ワット発電中さん:2012/02/27(月) 01:28:40.15 ID:D1zPZ88z
HDL初心者ですが。
複雑な論理合成回路を記述する際に、状態遷移図を起こして
記述するのが効率がよいでしょうか。

複雑なものとして、たとえばSDRAMアクセスや、プロトコルスタックの処理など
HDLソースだけでは、頭の中でもう追えない状態の場合です。
C言語であればフローチャート図でしょうか、HDLの場合効率よく記述するために
よく使われている手法はどんなのでしょうか?
93774ワット発電中さん:2012/02/27(月) 06:37:06.40 ID:hWHYRlU8
>>92
エクセルで状態を言葉で詳細に書く。
94774ワット発電中さん:2012/02/27(月) 08:13:40.05 ID:VOpW8v9n
オレはパワーポイント
95774ワット発電中さん:2012/02/27(月) 14:24:02.53 ID:GwJbXoXo
>>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

みたいな感じ

96774ワット発電中さん:2012/02/27(月) 17:16:04.58 ID:pXnNJHq7
なんか俺俺自己満足コードって感じで読みにくいな
97774ワット発電中さん:2012/02/27(月) 17:26:00.51 ID:SX6XdPhR
状態で分けるならcaseだろう
なんでifなんだよ?
98774ワット発電中さん:2012/02/27(月) 17:45:53.76 ID:pjHQBRlY
>96-97
別に書き殴りのコードの質なんかどうだっていいだろう。
どうでもいいところに突っ込んでごちゃごちゃ言い訳が返ってくるほうが鬱陶しい。
99774ワット発電中さん:2012/02/27(月) 17:49:40.41 ID:pXnNJHq7
書きなぐりでもひどい
100774ワット発電中さん:2012/02/28(火) 01:48:01.23 ID:Dwc+5WDf
>>92
>状態遷移図を起こして 記述するのが効率がよいでしょうか。
デジタル回路の場合、ある程度複雑な処理になると処理手順をステートマシンで
実現するってだけ。ステートマシン使わないなら状態遷移図
なんて要らないんじゃないか。ステートマシン使うなら状態遷移図使え
101774ワット発電中さん:2012/02/28(火) 10:06:11.46 ID:4kro5ZaJ
>>99
どの辺がひどいでしょうか?
指摘を真摯に受け止めて、改善したいと思います。
ただし、caseを使うのではなく、if()で行いたいです。
ぜひ指摘お願いします。
102774ワット発電中さん:2012/02/28(火) 12:38:16.72 ID:9AJOfshC
何でifなの?
条件変数が同じで条件も全部排他だし、この場合なら間違いなくcaseなんだけど
俺はまずそこに違和感を感じる
103774ワット発電中さん:2012/02/28(火) 14:51:21.59 ID:LbrMQwYM
>>102
なぜcaseでないといけない?
お前がcase()が好きなだけだろう。俺は、if()でやってるよ。

>>100
case()、if()の違いは、関係ない。
104774ワット発電中さん:2012/02/28(火) 15:28:45.85 ID:9FH/on+s
好き嫌いの問題ではなく実運用上よろしくないが、
趣味でやってるなら勝手にしてくれってレベル。
105774ワット発電中さん:2012/02/28(火) 17:37:54.87 ID:LbrMQwYM
>>104
>実運用上よろしくない
どのあたりが、よろしくないの?
106774ワット発電中さん:2012/02/28(火) 18:08:00.09 ID:9AJOfshC
違いが無いって言ってるんだからいいんだろう
もしかして仕事でもやってるんだろうか
107774ワット発電中さん:2012/02/28(火) 18:34:31.07 ID:bXBI7l8V
>>105
実用上問題ないから>>105>>95スタイルでステートマシン記述なんだろ。
ならそれでOK。
>>104のところでは、恐らく>>95のような書き方だと他の連中から文句が出る
ってことだろな。俺のところでも>>95は推奨ステートマシン記述ではないから
文句でるだろな。組織の推奨する記述があるのにわざわざ俺好き記述すれば
組織内で嫌われるだろな。

>>95スタイルのステートマシン記述が推奨スタイルって組織あるのか
おまえらのところどうだ?
108774ワット発電中さん:2012/02/28(火) 18:53:40.92 ID:bDdUukqJ
LINTでひっかかるんでない?
109774ワット発電中さん:2012/02/28(火) 19:33:44.55 ID:9FH/on+s
規則なんて無いよ。

ifでこんな書き方すると論理合成でステート判定されない。
論理合成では速度によってステートのタイプを変化させるんだ。

速度が速くなるとワンホットじゃないとタイミング制約満たさなかったりするんだけど
ステート判定されないのであればロジックセルの入力数がステートのビット分すべて
入ってくるので速度が出ない。

今回の場合はLED制御だから遅いだろうし気にならない。
趣味レベルであれば早いクロックを扱う事もないだろうし。

でも将来的には100MHzオーバーの信号を扱うかもしれない。
仕事でも使うならcaseで書く癖をつけておくに越したことは無い。
110774ワット発電中さん:2012/02/28(火) 21:31:48.68 ID:9rrTvXtg
>論理合成では速度によってステートのタイプを変化させるんだ。

dc がそんなことしてたとは知らなかったよ
111774ワット発電中さん:2012/02/28(火) 21:49:41.05 ID:XTCDUd25
趣味レベルでdc使ってる、と空目したw
112774ワット発電中さん:2012/02/28(火) 21:54:12.57 ID:LbrMQwYM
>>109
ありがとうござます。大変よくわかりました。
今までの、誰の説明よりも論理的で、説得力があり、
素直にに受け入れることができました。

僕も今後は、注意してcase()文で書くようにします。
どうもありがとうございました。
113774ワット発電中さん:2012/02/28(火) 23:04:05.06 ID:Dwc+5WDf
>>109
>論理合成では速度によってステートのタイプを変化させるんだ。
どの合成ソフトなんだ? >>110の言うとおりDC?
114774ワット発電中さん:2012/02/29(水) 11:50:10.94 ID:bVCP9dH4
DCってなに?
115774ワット発電中さん:2012/02/29(水) 12:29:36.44 ID:LkPa9PBb
synplifyあたりでも普通にやってますがな。
116774ワット発電中さん:2012/02/29(水) 14:17:24.35 ID:PHnwGJSc
ISE はやってくるけど、ASIC 向けだとやらないと思う。

やられたら formality が大変そう。
ultra ならやるのかな?聞いたことないな。

「速度によって」ってことはないだろ?
117774ワット発電中さん:2012/02/29(水) 14:22:28.68 ID:Q3L4IkT5
if文でもステートマシン推定ぐらいやってくれそうだけどな
118774ワット発電中さん:2012/02/29(水) 15:56:56.62 ID:bVCP9dH4
case()だと、そんなに直接的に状態遷移だと認識してくれるんですか?
if()は、そのように考えてくれないんですね。
119774ワット発電中さん:2012/02/29(水) 18:22:22.43 ID:P/O59ND7
自分の使ってるツールで試してみれば済むことなのにね
逆に言うと試さないことにはなんとも言えないんじゃないかな
バージョンやオプションによっても違うだろうし
120774ワット発電中さん:2012/02/29(水) 19:22:08.65 ID:YcVeNzj7
>>116
速度によって、つまりプロセス等も加味して動作周波数で良い具合のステートを
選んでくれれるって凄いよな。
121774ワット発電中さん:2012/03/02(金) 04:14:22.68 ID:EoWQkYUt
>>119
ツールで実際にやってみようと思いますが、
どのような状況なら、状態遷移と判定してくれた、思えば良いのでしょうか?
122774ワット発電中さん:2012/03/02(金) 21:00:19.58 ID:1gJjcjDk
>121
ISEなら合成したときにずらずらでるメッセージに
どこそこの行に state machine 見っけ、one hot で実装するよ
とか出る。
123774ワット発電中さん:2012/03/02(金) 22:19:57.70 ID:iqJEaOkQ
ワンホットって何でしょうか?
124774ワット発電中さん:2012/03/02(金) 23:03:36.55 ID:LSfHQp24
一味唐辛子。

七味唐辛子はセブンホット。
125774ワット発電中さん:2012/03/03(土) 03:42:49.16 ID:oFaquAXK
なるほど、納得しました。
126774ワット発電中さん:2012/03/06(火) 03:56:09.94 ID:sjULIjeS
テストベンチを書くのが面倒なのですが、何か良い方法はないでしょうか?
127774ワット発電中さん:2012/03/06(火) 04:27:54.01 ID:cgQ8dZXv
外注に出す。人を雇う。
128774ワット発電中さん:2012/03/06(火) 07:57:12.55 ID:D/xbJ1nk
新規モジュールを作らない。
129774ワット発電中さん:2012/03/06(火) 09:43:40.66 ID:Ean6BLpD
>>126
自信を持つ!
130774ワット発電中さん:2012/03/06(火) 10:12:45.25 ID:HTTSIaxW
脳内テストで済ます
131774ワット発電中さん:2012/03/06(火) 18:43:35.18 ID:bb5UQha8
自宅警備員に転職する
132774ワット発電中さん:2012/03/06(火) 19:53:47.08 ID:TGeFGIbI
(製品の)検査とはQCシールを貼ることと豪語する中国人なら確実にこうする。

「やったことにする」

しかし日本人にはこれは非常に困難な仕事だ。
だが、ちょっと待って欲しい。本当にそうだろうか。
日本人には日本の国技「見なかったことにする」があるではないか。
133774ワット発電中さん:2012/03/08(木) 11:09:18.19 ID:nmDMCPlA
「やったっぽいけど記憶にございません」
134774ワット発電中さん:2012/03/12(月) 13:37:18.49 ID:UWtu9aKi
みなさんテストベンチ作成は、嫌いみたいですね。
135774ワット発電中さん:2012/03/12(月) 15:17:35.08 ID:iX9jQ3dO
カバレッジなんてクソ食らえだ!
136774ワット発電中さん:2012/03/12(月) 19:06:08.52 ID:SfY4WGcl
>>134
嫌いなのではなく不必要なことをすることが嫌なだけじゃないか
電子技術立国のドカタは優秀だから検証しないと駄目なコードなんて作らない
137774ワット発電中さん:2012/03/13(火) 10:58:47.95 ID:nygdqUeV
技術立国()
138774ワット発電中さん:2012/03/13(火) 19:13:18.93 ID:wQu+q+Pk
>>136
そうか?
このスレを含めて結構デタラメなコードを良く目にするけど、どこが優秀なのか教えてくれ。
139774ワット発電中さん:2012/03/14(水) 00:59:40.53 ID:RbqgIPQw
このスレにはドカタなんていません
ドカタにこんなスレを見てるような余裕はないのです

・・・じゃあ誰がいるんだろ???
140774ワット発電中さん:2012/03/14(水) 01:30:39.68 ID:ArLpN2cU
Botです
141774ワット発電中さん:2012/03/14(水) 18:50:12.67 ID:g3D6pg7O
>>139
ドカタは仕事に忙しいからこないよな。
来るのはドカタに遠くおよばないペクチョン
142774ワット発電中さん:2012/03/19(月) 18:18:33.31 ID:LTHk+w7/
教えてください。

  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を出してくれた。
という理解で良いのでしょうか?

それとも何か他に理由があるのでしょうか?

よろしくお願いします。
143774ワット発電中さん:2012/03/19(月) 18:23:39.94 ID:1Ov+MukY
そうですね。
厳密に言うとビット長指定のない"1"は、32ビットですけどね。
あと、end はいらない。
144774ワット発電中さん:2012/03/19(月) 18:27:19.41 ID:LTHk+w7/
>>143
ありがとうございます。やはり、そういうことで良かったんですね。
そうすると、ISEに文句言われないように書くには、

  reg [3:0] counter;

  if( counter < 4'd5 )
    counter <= counter + 4'd1; // ++
  else
    counter <= 4'd0;
ということですね、たぶん。

ちょっとやってみます。ありがとうございます。
145774ワット発電中さん:2012/03/19(月) 18:32:38.59 ID:LTHk+w7/
>>1441です。
やってみたら、見事warningが消えました。
どうもありがとうございました。

でも、
+1するだけにも 4'd1
if()の評価にも4'd5 とか、窮屈な書き方になりますね。
みなさん、そのように書いているのでしょうか?
それとも、Warningは無視なんでしょうか。
146774ワット発電中さん:2012/03/19(月) 18:59:14.92 ID:U/zYJCLF
それがふつう。
147774ワット発電中さん:2012/03/19(月) 19:02:03.94 ID:EZnsBl30
窮屈だと思う自分の心を戒める

マジレスすればbit sizeを勝手に推定されないというメリットを最大限利用する
148774ワット発電中さん:2012/03/19(月) 23:29:53.34 ID:E2YybyWh
全部 integer で書いても大して変わらないというのも事実なんだけどね。

integer counter;
if (counter < 5) counter<=counter+1;
else counter<=0;

wire [3:0] out=counter[3:0];
149774ワット発電中さん:2012/03/19(月) 23:34:07.08 ID:F1HPApab
合成するなら、それじゃ大きくならないか?
150774ワット発電中さん:2012/03/19(月) 23:43:55.44 ID:LTHk+w7/
ありがとうございます。

>>勝手に推定されないというメリット
なるほど。いい話ですね。
彼の介入させないということですね。なるほど。また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];
151774ワット発電中さん:2012/03/21(水) 02:43:15.90 ID:RVLhrwM8
教えてください

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が削られる)

という理解で合っているでしょうか?
152774ワット発電中さん:2012/03/21(水) 04:04:33.87 ID:XNCQvCok
signed かあ、使ったことないなぁ。
どんなときに使うん?
153774ワット発電中さん:2012/03/21(水) 11:43:43.69 ID:sJK7uBV8
>>151
その条件だけなら、やってみればわかるんじゃない?

実はとってもややこしい。

たとえば、ビット拡張は、左辺には関係なくて、
右辺が符号付きでかつ左辺よりビット長が短いと
符号拡張になる。
演算で符号付きとなしが混ざるとかすると訳わからなくなるよ。
154774ワット発電中さん:2012/03/22(木) 22:51:41.10 ID:Lrj5CJ2Y
質問です
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でないといけないのでしょうか?

よろしくお願いします。
155774ワット発電中さん:2012/03/22(木) 22:57:18.93 ID:wqGq7Vm3
VHDL...?
reg
156774ワット発電中さん:2012/03/22(木) 23:24:20.17 ID:uTT+FTFp
どうみてもverilog…それはそれとして
begin と end がいらんとおもわれ。
ttp://park11.wakwak.com/~nkon/diy/verilog/sample.html
157774ワット発電中さん:2012/03/22(木) 23:26:54.81 ID:H2eSdo5W
あまり自分で書かない書き方なのでようわからんのだが、caseのdefaultって
とりあえず書いておけば中でOUT_PINの代入しなくても無問題なんだっけ?
158774ワット発電中さん:2012/03/22(木) 23:56:04.87 ID:fELgl07M
>>154
いつもって言葉を知っていますか?
159774ワット発電中さん:2012/03/23(金) 02:26:27.93 ID:mrk+PVkU
>>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
160774ワット発電中さん:2012/03/23(金) 11:09:44.25 ID:32cIjuYG
>>159
おかしいだろそれ。
161774ワット発電中さん:2012/03/23(金) 15:31:04.35 ID:6sdmlakh
>>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; で良いと思っていました。
わけがわかりません。
162774ワット発電中さん:2012/03/23(金) 15:48:23.78 ID:WirzSJTu
>160
別におかしくないぞ。
"=" のことなら、同じbegin〜end内で混ぜると腐るが、"="で統一するぶんには問題ない。

>161
まず、代入は3種類ある。"assign wire =" (継続代入) と
"reg =" (ブロッキング代入) と "reg <=" (ノンブロッキング代入)。
継続代入とブロッキング代入は文字面が似てるので混同しやすいが、
文法上も意味論上も別物なので本読んだりソース読んだりする時には注意だ。
というか、ちゃんと区別するものだとして、もう一回手持ちの本を読み直せ。

そして、assign は >161 の 2. のような使い方はできない。
163774ワット発電中さん:2012/03/23(金) 16:27:23.09 ID:7l7jancr
reg って書くとレジスターになるような気がするんだよね。
でも、ワイヤーになったり、下手するとラッチが出来たり・・・

ところで >>160 は、何がおかしいといっているんだろうか?
気になって昼寝できない。
164774ワット発電中さん:2012/03/23(金) 16:28:58.87 ID:6sdmlakh
>>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とか東京エレクトロンとか に聞くのでしょうか?

ありがとうございました。
165774ワット発電中さん:2012/03/23(金) 16:50:02.16 ID:7l7jancr
セミナーでも受けたら?

http://www.hdlab.co.jp/web/a010education/b016trainingv/0020rtl.php

ステマじゃないよw
166774ワット発電中さん:2012/03/23(金) 17:00:53.71 ID:32cIjuYG
caseの前の代入に意味があるのかい?
167774ワット発電中さん:2012/03/23(金) 17:18:32.63 ID:WirzSJTu
>166
caseで全てをつくしててもdefault付けるのと似たようなもんだ。
168774ワット発電中さん:2012/03/23(金) 17:26:08.08 ID:7l7jancr
>>166
で、どこがおかしいんだ?
169774ワット発電中さん:2012/03/23(金) 18:46:05.08 ID:fDmfeJ9o
新刊でなくて、大手古書チェーン店で旧版を探すのもありかも
ttp://www.amazon.co.jp/dp/4789833984/
あとこれ
ttp://www.amazon.co.jp/dp/4774148393/
自分はトロいので、まだ NiosII までたどり着かない orz
170774ワット発電中さん:2012/03/23(金) 19:29:58.62 ID:32cIjuYG
ブロッキング代入も然り。意味がない。
俺なら即座に訂正する。

ま、おかしいと思わないんだったらそれでいいんじゃない?
ただ、そういう人がかいたコードは見たくないね。
171774ワット発電中さん:2012/03/23(金) 19:33:14.49 ID:kDoqt00i
>>164
おまえ俺と同じようなレベルだね。
caseが早いんじゃ同じようなif,else if,elseも時期が早すぎるんじゃないかな
ついでにalwaysやその後の@も禄に理解してなさそうだからこれらを使うの早すぎるんじゃない
>>154のmoduleをcaseじゃなくif,else if,else で書いたらどうなるの?
assign OUT_PIN = ( SW_IN==2'b00 )? BUS0.....;
電線を繋ぐためだけにassignを付ける必要あるの? それなら=だけで良いんじゃない?
172774ワット発電中さん:2012/03/23(金) 19:40:29.71 ID:kDoqt00i
>>170
ごたごた言わないで>>159の俺コードを晒せよ
173774ワット発電中さん:2012/03/23(金) 20:19:46.82 ID:6sdmlakh
>>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 書かないと、= で代入できないですよね。
174774ワット発電中さん:2012/03/23(金) 20:33:35.58 ID:kDoqt00i
>>173
case部だけじゃなく>>159のようにmoduleにしろということ
(コンパイルできるようにmoduleに、そうしないとエラーなのかも分らない)
>>173>>154のcase部分に置き換えてエラーでない?
あと、なんで>>173ではassignをOUT_PINの前につけないの? これも代入でしょ
175774ワット発電中さん:2012/03/25(日) 01:24:17.70 ID:TeK6I0wC
VHDL初心者です。

VHDLでコンポーネント宣言をインクルードするという様な事はできないでしょうか?
Quartus2の場合、MegaWizardでモジュールを作成した場合にCMPファイルを生成してくれます。
今はCMPファイルの中身をVHDLのソースファイルにコピペしています。

そのままCMPファイルをインクルードできれば便利だと思うのですが方法が見当たりません。
どなたかアドバイス御願い致します。
176774ワット発電中さん:2012/03/25(日) 02:10:16.83 ID:/xeN+3KF
Alteraだけの特殊ファイルをインクルード?
無理。
177774ワット発電中さん:2012/03/25(日) 11:41:03.90 ID:x2DGwl+n
VHDLにはそんな機能は無い
元々合成用じゃなくて、回路仕様を記述するために作られた言語だ
あきらめなさい

コンポーネント宣言が嫌なら、ダイレクトインスタンシエーションを使うといい
STARCのスタイルガイドには使うなと書かれているが、俺は使ってる
178175:2012/03/25(日) 15:54:19.57 ID:TeK6I0wC
>>176,177

アドバイス有り難うございます。
駄目なんですね。仕方ないです。

ダイレクトインスタンシエーションは始めて聞きました。
私が持っているSTARCのRTL設計スタイルガイドVHDL編初版には載っていない様ですが、
ダイレクトインスタンシエーションが掲載されているのは2011年6月発売の新版ですか?
179774ワット発電中さん:2012/03/26(月) 02:45:13.31 ID:rmA2trFI
教えてください。
VerilogでFPGAの勉強をしています。

回りに聞ける人がだれもいなくて、独学で試行錯誤しています。
特にHDLの書き方は、主にCQ出版の本を片っ端から買い込んだり、
半導体工学研究所(だったかな)の厚くて高い本を読んだりしています。

ここで質問ですが、Verilogの教科書は出ていないでしょうか?
洋書ではなくて、日本語のものでです。

CQの本は著者がだいたい決まっていたりして、違う側面からの説明が少ないように思います。
かといって、英語のIEEEを読むのも学力の点で問題があります。
C言語など、たの言語では、日本語で、共著の分厚い本がありますが、
VerilogHDLでは、そのような本はないのかなぁ、と思いました。
STARCの本も良いのですが、Verilogの規格、文法書ではなく、注意点、ガイドラインの本という感じがします。
180774ワット発電中さん:2012/03/26(月) 05:28:55.82 ID:2zDhAiRE
CDがあるよ。
181774ワット発電中さん:2012/03/26(月) 07:03:09.34 ID:ivka/vLI
規格が知りたいなら IEEE-1394-2005 を読むしかないよ。

書き方は各社違うから要求に合わせるしかない。
IP を作るなら STARC だけど、全部ガチガチにするとロジック自体が判らなくなる。
あくまでも IP 屋のため。それでも抜けもあるし、曖昧な部分も多い。
そもそも古いツールの癖を引きずってて糞。

和書は見る気もしない。
182774ワット発電中さん:2012/03/26(月) 09:52:44.52 ID:Z2K6X23C
ゴミだらけだよな ほんと…
183774ワット発電中さん:2012/03/26(月) 12:04:18.38 ID:Y7+NiAjR
探すの大変だったぜ
>>178
STARCから直接買ったVHDL版の初版の3-17ページに書いてあるよ
184175:2012/03/26(月) 23:15:20.61 ID:yKKf6uFm
>>183

わざわざ有り難うございます。

当該ページ読みまして記載されている「記述量を減少させる」がまさに目的なので、
これで試して見ようと思います。
有り難うございました。
185774ワット発電中さん:2012/03/27(火) 01:09:53.30 ID:fkAMFWhx
>>179
HDLの書き方や思想は各社各様。
ゲートっぽく書くところもあれば、スケマ的なところも。
プログラム的(if-then, caseのでっかいやつ)に書くところもある。

社内ルールとかに属するものじゃないかな。
自分の知ってるノウハウをwebで公開するのは簡単だけど、
結局社内資産とほぼ同等になってしまうから公開は無理。
結局、当たり障りのないSTARCしかない。

FPGAならAlteraのcookbook(名前失念)に記述ノウハウがある。
Xilinxにも同等のがあったはず。
186774ワット発電中さん:2012/03/27(火) 09:56:51.18 ID:pzxzSvrr
回路図入力使ってる人っているの?
187774ワット発電中さん:2012/03/27(火) 12:45:11.47 ID:2QQPQA7G
資産だと思っていたものが気付いたときには負債に
188774ワット発電中さん:2012/03/27(火) 19:21:23.06 ID:XiBk1Vow
>>186
つなぐだけの上位レイヤーは、回路図で書いた方が楽そう。
189774ワット発電中さん:2012/03/27(火) 22:20:44.74 ID:7fF8aHdk
>>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;

使う側のファイルでコンポーネント宣言を記述する必要はない。
190774ワット発電中さん:2012/03/28(水) 00:09:14.53 ID:3Zkncrii
>>189
それ、ISEではまったことがある。
上手く動作しないと思ったら、非対応だったという。
最新版だとどううなるか知らないけど。
191774ワット発電中さん:2012/03/28(水) 00:14:18.75 ID:zO1qI7rN
>>190
それでよくいろんなライブラリ使えるなぁ。
ハードマクロとか使うとき、いちいちソース側でコンポーネント宣言してるのかな。
ザイは使わんから知らんかったよ。
一応QuartusとDCとReonaldは問題ないです。
192774ワット発電中さん:2012/03/28(水) 01:05:53.12 ID:IBt1HLhC
すいません。聞きたいことがあるんですが、
皆さんmVerilog、VHDLは何でやってるんですか?趣味?仕事?大学?
仕事でやる人って結構きついですか?
どういった企業が使ってたりします?
あとこれって職種的にプログラマー、SEとかになるんですかね?
193774ワット発電中さん:2012/03/28(水) 03:00:17.74 ID:2iqnzKXU
>>192
>仕事でやる人って結構きついですか?
      キツイのはイヤだな。

>どういった企業が使ってたりします?
      一流大会社だと、安定してていよな

>あとこれって職種的にプログラマー、SEとかになるんですかね?
     SEってカッコいいし。
194774ワット発電中さん:2012/03/28(水) 07:48:27.08 ID:rTWRJSf6
回路図使っているよ。最上位階層で。何のモジュールがどうつながっているか
視覚的にわかりやすいのでおすすめ。
195774ワット発電中さん:2012/03/28(水) 19:27:53.60 ID:kJd191MI
回路設計できない人は回路図入力使えないから選択肢にないんじゃないの?
196774ワット発電中さん:2012/03/28(水) 20:13:01.97 ID:JmjYfoxS
最上位階層でも回路図入力は使わない
昔、見た目の美しさを気にする余り、いろいろ頑張りすぎて無駄に時間を使ってからやめたw
小規模の趣味の設計なら回路図入力で最上位階層残すかもしれんが…
197774ワット発電中さん:2012/03/28(水) 20:40:36.10 ID:Y3UGh1dv
言語設計に慣れてしまうと回路図入力のバージョン管理が面倒なんだよな。
古い人間なので未だにsubversionでまたーり管理してるけど
回路図は差分1つ取れないのであまり使いたくないというのが本音。
198774ワット発電中さん:2012/03/29(木) 09:55:14.22 ID:cB/GJieh
TEXTならgrepしてcheckとか快適
199774ワット発電中さん:2012/04/08(日) 02:04:18.84 ID:VHdHM0td
>189
最近のISEでは大丈夫みたい。
やってみそ。

200774ワット発電中さん:2012/04/08(日) 03:45:03.66 ID:XtqwIJqg
はははは、はははは。月曜日納入の物が、まだできない。
今日明日は徹夜だ。
201774ワット発電中さん:2012/04/08(日) 04:33:49.19 ID:16NxST6q
>>200
がんがれ!
リポD買い込んでるかい?
202774ワット発電中さん:2012/04/08(日) 05:17:25.56 ID:BkTUqhGA
みんなの言っている回路図ってどういうものなのだ?
Visual EliteやHDL Designerのことでいいんだよね?
203774ワット発電中さん:2012/04/08(日) 11:13:32.41 ID:FUb/uP/A
>>200
月曜納品のものは昨日仕上げたw
会社にはオレひとりだったから集中できた。

>>202
FPGAのツールには回路図入力が付属してるんだ。
74系とかAND、ORのモジュールがあって、基板作る時の
回路図入力と同様に使える。
204774ワット発電中さん:2012/04/08(日) 12:52:15.52 ID:XtqwIJqg

 ISE14では、Core i7 の本領発揮で、もっと高速にMapできますように。
205774ワット発電中さん: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つの判定式は、何が違うのでしょうか。
おわかりになる方、教えてください。

206774ワット発電中さん:2012/04/10(火) 00:45:23.84 ID:IFo4vJ1Q
>>205
先生質問! たとえば-10と10を17bit表記で書く時どう書くんですか?
先生、キャストしてみました。
if(A > $signed(17'd32767) )
if(A == $signed(17'd00000) )
これじゃ駄目ですか?
あと、Cの32767と同じになるような17bit表記は
17'd32767なんですか、それとも$signed(17'd32767)なんですか
$signed(17'd32767)ってメンドイです。もっと簡単に書く方法教えてください
先生、僕と一緒にこれでverilog勉強しましょう
http://www.sutherland-hdl.com/online_verilog_ref_guide/verilog_2001_ref_guide.pdf
207774ワット発電中さん:2012/04/10(火) 08:01:09.05 ID:vlMSsdyw
符号付きなら17'sd32767 だ。
17'd32767 だと符号なしになるから比較も符号なしで行われる。
208774ワット発電中さん:2012/04/15(日) 01:22:25.01 ID:wmiV4ko+
二次元以上の配列を異なる階層に代入、
または出力する事はSystem Verilogでは可能ですか?

Verilog2001だと、配列を
1アドレス(ワード)毎にwire接続させ、
変数化もしくは出力していましたが
記述量が増えて面倒です。

対策方法があれば教えてください。
209774ワット発電中さん:2012/04/16(月) 01:52:51.27 ID:f1x4EkHq
触って学ぼう FPGA開発入門は使えない。webから消し去ってほしい糞記事ですね。書いたやつ死ね。
210774ワット発電中さん:2012/04/16(月) 02:11:19.90 ID:Rda4wI/a
何でもwebに頼ろうとする、その態度を改めるのが先だと思うぞ
211774ワット発電中さん:2012/04/16(月) 17:14:47.10 ID:Npl3smzb
>>208

input [7:0] data [0:3][0:255];

とか System Verilog なら出来るよ。使わないけど。
212774ワット発電中さん:2012/04/17(火) 02:00:54.95 ID:L0y7VLhB
ISE13.4って、起動しておいたiMPACTが、自分勝手に終了しないですか?

あと、コンパイル中にYouTubeとかニコニコ動画とか見てると、
処理がエラーで止まることないですか?
そのまま「ReRun」すると、今度は通るとか。
213774ワット発電中さん:2012/04/17(火) 12:34:54.13 ID:REr56r9Q

早くISE14が出ますように。
214774ワット発電中さん: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の話題はこのスレでね。
215774ワット発電中さん:2012/04/17(火) 20:51:20.28 ID:v2x8BLcm
      ハ,,ハ
     ( ゚ω゚ )  お断りします
    /    \
  ((⊂  )   ノ\つ))
     (_⌒ヽ
      ヽ ヘ }
 ε≡Ξ ノノ `J
216774ワット発電中さん:2012/04/17(火) 22:27:33.37 ID:REr56r9Q
いやだぴょーん
217208:2012/04/18(水) 22:16:45.62 ID:sGIZdAkW
>>211
ありがとうございます。
218774ワット発電中さん:2012/04/18(水) 23:35:03.73 ID:6dc47bR7
4月ですね
219774ワット発電中さん:2012/04/19(木) 00:45:44.41 ID:+gNSsCqn
はやくゴールデンウィークにな0
220774ワット発電中さん:2012/04/19(木) 13:44:12.63 ID:cXxFNIqR
ワーニングが120個も出ています。
大丈夫でしょうか?

基本的にワーニング無視で良いでしょうか?
221774ワット発電中さん:2012/04/19(木) 19:21:04.33 ID:vN8777sm
>>220
「大丈夫」と確信できる警告以外は無視してはいけません。
222774ワット発電中さん:2012/04/20(金) 21:46:07.28 ID:JSIgfn+P
Aのregとaのoutputとかでつながってなくて

ワーニング1:Aがどこにも使われてません。
ワーニング2:aの出力がありません。0にしときやす。

とかね
223774ワット発電中さん:2012/04/28(土) 22:33:38.68 ID:fDtlAwbG
鳥海さんの記事間違ってるところあるから訂正しておいて
224774ワット発電中さん:2012/05/02(水) 03:00:33.60 ID:6JPJbCCC
鳥海さんって、もとNECの人だっけ。
225774ワット発電中さん:2012/05/02(水) 11:48:07.16 ID:iP3c4hZJ
ところで>>214の統合って結局どうなるってばよ。
226774ワット発電中さん:2012/05/02(水) 12:47:09.11 ID:IP0ztlPu
>>224
NECで、その後イノテックの下請けだったかのエクセレント何とかって
会社に移って、その後コンサル業だね。
悪い言い方をすると、セミナー屋さん。
227774ワット発電中さん:2012/05/02(水) 14:01:59.31 ID:Cm5SmVHM
>>226
家業が本業なんじゃない?
228774ワット発電中さん:2012/05/03(木) 20:18:55.00 ID:D2UP+YE2
verilog-mode 使ってる人って、このスレに居る?
229774ワット発電中さん:2012/05/03(木) 20:39:37.89 ID:FpPicULd
>228
使ってるぞ。つうか、vhdl-mode ほどの切迫感はないにせよ、
verilog-mode無しの emacs 使いってむしろそんな修行僧いないだろ。
230774ワット発電中さん:2012/05/04(金) 10:08:32.90 ID:yspg69MC
>>229
最上位階層は回路図入力とか言ってる人がこのスレにいるから、
そういう人は autoinst とか auto_template を使えば幸せになれるのになー、
と思ったもんで。
231774ワット発電中さん:2012/05/04(金) 10:15:28.15 ID:IxMjzZ4j
>>230
設計担当が違う場合、画の方が全体を瞬時に把握できるって
メリットはあるね。
ただし、図の手入力はミスを誘発する可能性があるので、自動生成に
大賛成。
232774ワット発電中さん:2012/05/04(金) 21:24:09.92 ID:MEfYM2lW
>230
その場合、訊くべきは「autiinstとかauto_template使ってる人いる?」だろ…
使ってないのでどんくらい幸せになれそうか語ってオクレタノム。

ちょっとググってみたが、これ verilog-auto して変数名に展開したあと
もいっかい verilog-auto すると元に戻ってくれたりする?
233774ワット発電中さん:2012/05/05(土) 00:35:47.51 ID:02RW3Hhl
>>230
最上位階層におけるモジュール間結線の記述は大体数千行とかになったりする
こともあると思うけど、それが 1/10 ぐらいの記述で済んだりする。
wire 宣言は手作業で書かなくてもよくなるし、モジュールインスタンス時の結線も
auto_template を使えば正規表現でポートのマッチングをして、
適当な名前の配線を接続することもできる。

あと verilog-auto はバッチモードで実行するのが良いと思う。
verilog-mode で書くソースは拡張子を *.vmd とかにしておいて、
verilog-auto で展開後のソースは *.v にするとかで。
234774ワット発電中さん:2012/05/05(土) 00:36:28.47 ID:02RW3Hhl
間違えた...
>>232です。
235774ワット発電中さん:2012/05/05(土) 13:09:50.96 ID:xloynkDn
>>226
今その人に教わってるけど説明が雑過ぎでまいってますよ・・
ISEの使い方を詳しく聞こうとすると逆切れするしw

セミナー屋のくせに質問されるのを嫌うというのは、知識が浅いということだと思ってます
236774ワット発電中さん:2012/05/06(日) 02:37:25.36 ID:s5RQVQ/6
>>235
>今その人に教わってるけど説明が雑過ぎでまいってますよ・・
講習の全体の時間と進捗を鑑みて、端折っていることもあるぞ。

>ISEの使い方を詳しく聞こうとすると逆切れするしw
そのセミナー屋さんは、ISEの使い方は良く知らないんじゃないか?
Quartus IIなら知ってるのかも知れない。
Xilinxの社員か販売店に聞くと、教えてくれるよ。いい人に当たればだけどね。
「あんた知らなさそうだから、もっと知っている人を出してよ」とは言いにくいしね。

>セミナー屋のくせに質問されるのを嫌うというのは、知識が浅いということだと思ってます
それは正解だと思う。話が不得手な方向に行くと、答えに窮してしまい、
「俺は本を書いてるんだぞ、スゴイだろ」というプライドが、許さないんじゃないか。
237774ワット発電中さん:2012/05/06(日) 08:44:11.52 ID:dnABceIa
>Xilinxの社員か販売店に聞くと、教えてくれるよ。
ココ、笑うとこ?
238774ワット発電中さん:2012/05/06(日) 10:34:37.85 ID:SFgEY0H4
はっきりと言ってもいいんじゃないかな?
「ISEに詳しい人をお願い」って
239774ワット発電中さん:2012/05/06(日) 12:21:01.20 ID:s5RQVQ/6
誰でもいいので、1度でいいから、ISEの詳しい使い方について
本を書いてくれないかな。少なくとも俺が買う。
でも、PlanAheadに行こうするなら、PlanAheadの使い方について、ね。
240774ワット発電中さん:2012/05/06(日) 12:40:08.32 ID:oLPfRH+L
視聴したこと無いけど、こんなんじゃだめ?
ttp://www.virtual-event.jp/xilinx/tools.html
241774ワット発電中さん:2012/05/06(日) 20:52:13.36 ID:Bjvi4DdC
デフォルトではない設定や込み入った機能は、(本社含めて)使う人が少ない
 → 情報が少ない
 → バグ報告が少ない → 直されない

よって詳しい使い方を知ると仕事が遅くなる
242774ワット発電中さん:2012/05/07(月) 15:59:38.39 ID:GmcXHRBK
誰かISEのwikiつくっちゃろーとか思わんの?

俺?XilinxのFPGAが無い・・・今テストボード最安でいくら?
243774ワット発電中さん:2012/05/07(月) 17:50:27.69 ID:1Lx2heiO
>>242
作ってくれるんですね。よろしく
244774ワット発電中さん:2012/05/08(火) 02:56:56.21 ID:MCjpd1Su
>>242
>今テストボード最安でいくら?
http://www.sioi.com.au/shop/product_info.php/cPath/30_24/products_id/47

宜しくお願いします。
各方面に、強力に宣伝しておきますよ
245774ワット発電中さん:2012/05/08(火) 08:47:41.89 ID:dhmjy66+
>>244
USB2.0ホストとして使えて、SDRAM が 16MB 以上載ってて、
一万円以下の FPGA ボートを探しているんですが、知りませんか?
246774ワット発電中さん:2012/05/08(火) 11:45:44.51 ID:AOWHGKYb
ああ、ドロンしたい・・・

>>244
しかし49豪ドルとな?グーグル先生に聞いたら4000円だった。
やすいっすね〜。会社にお願いして買ってもらおうかしら。
247774ワット発電中さん:2012/05/08(火) 17:48:38.19 ID:fbe4wC06
会社で買うならもう少し出せるだろ・・・
248774ワット発電中さん:2012/05/08(火) 18:31:43.58 ID:DZeRTAHJ
>>246
そんな値段になるのか。安いな、中国じゃあるまいし
なんでこんなに安く出来るんだろ(実は作っているのは中国企業とか)
これ日本企業ならどれぐらいになるのかな。2万以上かな
こんな値段になるようじゃ日本企業負けるよな
249774ワット発電中さん:2012/05/08(火) 18:36:53.08 ID:DZeRTAHJ
ちなみに、日本で近い値段だと
http://www.marutsu.co.jp/shohin_65177/
メモリなんて搭載できないよな
250774ワット発電中さん:2012/05/08(火) 19:37:45.19 ID:AOWHGKYb
>>249
XC3S250Eってスパルタン3っすかマルツパーツさん。
気合っすね・・・
251774ワット発電中さん:2012/05/08(火) 19:44:53.89 ID:4fDLO1fQ
Spartan は、4と5がないから古いわけじゃない。
252774ワット発電中さん:2012/05/08(火) 21:38:32.94 ID:AOWHGKYb
>>251
あ、そうなんですね。
てっきり6年以上前のデバイスかと思いました。
ちょっと勉強します。
253774ワット発電中さん:2012/05/09(水) 12:37:55.27 ID:6Mowb+i2
254774ワット発電中さん:2012/05/09(水) 20:58:00.81 ID:MPeYh/fH
DフリップフロップとAND/OR/NOTゲートで
011011011011011... のように出力を続ける回路って複雑でしょうか?

010101010101010... ならそこらに転がってるのですが…
255774ワット発電中さん:2012/05/09(水) 21:19:35.12 ID:ZID8OHEU
>>254
011 が基本パターンであとは繰り返しなんだね。
じゃあ、状態遷移が 0、1、1で、最初に戻るって感じでしょ。
FFの状態を、この順に遷移させれば良いだけ。(w
256774ワット発電中さん:2012/05/09(水) 21:27:53.97 ID:oEevYn7e
>>255
それをDフリップフロップとAND/OR/NOTゲートで作ってください
お願いします
257774ワット発電中さん:2012/05/09(水) 21:39:35.83 ID:Pllmjbtn
FFを3個つなぐだけだろ
258774ワット発電中さん:2012/05/09(水) 21:56:06.84 ID:gaIN9Cer
え〜…組み合わせ回路必要か?FFだけでいいじゃん。
259774ワット発電中さん:2012/05/09(水) 22:19:12.74 ID:bJy/MlSn
>>257-258に禿同・・・・・・と思ったが、FF1個だけってことか?状態数2じゃ無理でしょ。
260774ワット発電中さん:2012/05/09(水) 23:24:16.57 ID:xuLysomW
残りのゲートでFF作るって宿題じゃね?
261774ワット発電中さん:2012/05/10(木) 00:28:41.56 ID:YfNdXZfl
宿題じゃなくて院試過去問だったのですが
見通しが立ちました
ありがとうございました。
262774ワット発電中さん:2012/05/10(木) 01:09:17.69 ID:bptMOCcS
>>254の課題をVerilogで書くとどうなりますか?
263774ワット発電中さん:2012/05/10(木) 01:15:13.13 ID:027I+pm5
入力のクロックのHLだけで状態が2通りあるからな
264774ワット発電中さん:2012/05/10(木) 03:03:50.47 ID:qLPqOOCD
>>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;
265774ワット発電中さん:2012/05/10(木) 08:44:21.00 ID:CcTdCvwM
ここは宿題スレじゃないだろ。(w
266774ワット発電中さん:2012/05/10(木) 09:57:54.49 ID:n8+SywHd
>>264
あはは!
267774ワット発電中さん:2012/05/10(木) 12:03:54.53 ID:cc81g2xB
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週間後にしよう・・・
268774ワット発電中さん:2012/05/10(木) 12:04:50.36 ID:cc81g2xB
outputまちごうたー
269254:2012/05/10(木) 12:28:02.50 ID:nXHSTE0I
コードまで聞いてるのは私ではありませんので
あしからず
270774ワット発電中さん:2012/05/10(木) 15:31:53.28 ID:cc81g2xB
あ、そうなのね。

DFF1とDFF2があったとしてー
DFF1-D=!(DFF1-Q&DFF2-Q)
DFF2-D=・・・・

やっぱり明日書こうっと
271774ワット発電中さん:2012/05/10(木) 22:21:06.18 ID:QOq4rfzL
velilogってこれで良かったっけ?
always @(posedge clk)begin
if(cnt==2'b10)
cnt <= 2'b00;
else
cnt ++;
end

assign outp = not cnt[0];
272774ワット発電中さん:2012/05/10(木) 22:53:57.80 ID:HXfqd2Ev
いろいろダメだけど、雰囲気は伝わる
273774ワット発電中さん:2012/05/11(金) 00:09:45.40 ID:lUgxEbzw
若い奴はCベース言語のHDLが普通で、RTL命のverilog/VHDLなんて良く知らないだろうからな
こうなるのはしょうがないよな
若い奴なら、SystemCで書いてよの方が良いんだろな。
大規模のハード時代にRTLで記述って、大きなソフトのアプリをアセンブリ言語
で書くようなものだしな。
274774ワット発電中さん:2012/05/11(金) 00:53:25.14 ID:Qwbaamx6
ちゃうよ。VHDL使いなんだ。
Verilogはあんま知らん。
275774ワット発電中さん:2012/05/11(金) 01:10:46.64 ID:ynF3Lj+L
VHDLでいいじゃん
276774ワット発電中さん:2012/05/11(金) 01:20:11.16 ID:Qwbaamx6
だって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);
277774ワット発電中さん:2012/05/11(金) 07:12:06.08 ID:+T4vSXva
>>273
アセンブラに相当するのはスケマじゃないのか?
278774ワット発電中さん:2012/05/11(金) 08:06:21.96 ID:7Ds9npkk
>>273
SystemC から始めた人にクロック、並列動作、レジスタとかの概念が理解できるのかな。
ハードウェア設計者なら RTL は知っとかないと話にならんと思う。
279774ワット発電中さん:2012/05/11(金) 10:06:10.38 ID:MYaXS3qu
>>278
プログラマー上がりが最初理解できずに随分悩んでいたよ。
結局ロジック回路の初心者向け教科書からやり直してた。
それでも、理解できただけマシで、神経やられて辞めた奴が居たぞ。
280774ワット発電中さん:2012/05/11(金) 12:13:17.61 ID:r9CkRCO0
SystemC で RTL 記述するんだぜ。


ワイルドだろ?
281774ワット発電中さん:2012/05/11(金) 16:54:12.73 ID:OecavH77
俺SystemC分らんけど、>>276をって言うか
011011011011011... のように出力を続ける回路を
SystemCで記述したらどうなるんだ?

>>278
RTL、SystemCを知っていて自分のSystemCの経験から、
SystemCだけでは
クロック、並列動作、レジスタとかの概念が
理解できるか疑問ってって言っているの?
282774ワット発電中さん:2012/05/12(土) 16:18:20.30 ID:UmSbvwgE
SystemCの合成ツールって何があるんだ?
まともなのあるのか?
283774ワット発電中さん:2012/05/12(土) 22:49:34.92 ID:ubboh4Fy
>>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 の処理系はこれしか無いって会社の上司が言ってました。
これ使い始めて設計の期間がグンと短くなったんで、いいツールだと思うんですが、値段がすごく高いです...
284774ワット発電中さん:2012/05/12(土) 23:52:27.43 ID:yXdN3qYR
>>283
SystemCでの記述ってそうなるのか。
クロックの概念は、VHDLっぽいか?記述そのものは確かにCだが。
285774ワット発電中さん:2012/05/13(日) 00:47:38.29 ID:xFOJqlbr
SystemCだけをやる人ってのは「今のところは存在しないわけで
SystemCだと簡単に記述できるから、あくまでもその先を知ってる人が
ビヘイビア記述をするために使用するって感じだな
でもそのうち抽象化されたものしかわからない人が出てくるかもね
ソフトでいうところの、アセンブラなんかわからないけどプログラム書けますって人みたいにね
286774ワット発電中さん:2012/05/13(日) 01:35:22.18 ID:smAv0j+h
>>283
wait() ここでクロックイベント(同期)待ちなのかな。Verilogの@(posedge clk)見たいな物か
sc_out < sc_uint<1> > outpってテンプレでポート定義ってことかな
確かにビヘイビア記述だけあってRTL記述の>>276より何をするのか分りやすいな
Xilinxの新しいツールでC/C++ベース開発できるようになるらしいが、それがそんなに高くなければ
今後はFPGAでもビヘイビア記述設計が増えるだろうな。

>>285
>アセンブラなんかわからないけどプログラム書けますって人みたいにね
JAVAやっている奴なんかターゲットシステムのアセンブラ知らないのがほとんどだろうが
大きなシステム開発しているからな。ハードもソフトと同じような方向に進んでいくだろう
287774ワット発電中さん:2012/05/13(日) 02:39:45.81 ID:+yYbONoS
Xilinx Vivado High-Level Synthesis
http://www.youtube.com/watch?v=YSPugLS1V3U
288774ワット発電中さん:2012/05/13(日) 13:28:58.75 ID:boMJZ3Cd
鳥海佳孝ってどこの大学出てるんだろ?NECとかどうでもいいわ。地頭の程度を知りたいわ。
学歴しょぼくても司法試験受かってるとかならまだ理解できるけど。
この分野は東大ぐらいの人じゃないとまともな本は書けないだろ。
いいかげんにしてほしいよ。クソ本掴ませやがってムカつく。
289774ワット発電中さん:2012/05/13(日) 13:33:12.51 ID:fZDQeLYk
どんな糞本でも理解できる頭があればそれなりに役に立つ。
まるで役に立たない本のほうが珍しい。
知ってることしか書いてなかったってのは別として。
290774ワット発電中さん:2012/05/13(日) 13:44:53.80 ID:boMJZ3Cd
>>289
知ってることしか書いてないって!
amazonや紀伊國屋で洋書を手軽に通販できる時代になんでこんな本出せるの?
classicになりうる本以外出すなよ。>鳥海
291774ワット発電中さん:2012/05/13(日) 13:59:57.78 ID:boMJZ3Cd
>>289
あー、本人?他人まかせなんだね。セミナー屋らしいわ。
292774ワット発電中さん:2012/05/13(日) 14:00:41.38 ID:9XtqwZGA
>>290
そう言うお前の書いた本が見たいよ。
CQ出版は、出す本が無くて困ってるから、話をすればスグに通るよ。

さ、早く出せよ、ほら
293774ワット発電中さん:2012/05/13(日) 14:01:30.17 ID:boMJZ3Cd
>>292
本人確定きたこれw俺に金出させて居直ってるよコイツw
294774ワット発電中さん:2012/05/13(日) 14:02:59.55 ID:boMJZ3Cd
卑怯者の鳥海くんww
295774ワット発電中さん:2012/05/13(日) 14:03:31.46 ID:boMJZ3Cd
地鎮祭でもやってろよw道楽ジジイw
296774ワット発電中さん:2012/05/13(日) 16:16:18.49 ID:I/duN3Ko
鳥○は自分の本が酷評されてるからって、
NEC時代の先輩である小林さんの本をけなすなよ

おまえのパワハラセミナーに比べたら小林さんの音声CD付きの本のが1000倍わかりやすいわ
とっととすっこんで園児相手に生活指導でもしてろや
297774ワット発電中さん:2012/05/13(日) 16:23:45.37 ID:I/duN3Ko
>>288
鳥○は日大出身。大学出るまでプログラマーに偏見を持ってて
プログラマー見ると蹴りたくなったらしい。

そんな奴がプログラムのセミナーやるなよほんと。。。
298774ワット発電中さん:2012/05/13(日) 17:52:10.09 ID:boMJZ3Cd
>>296
やっぱり人格に問題あるんだな。金さえもらえればよいと思ってるんだろうな。
小林氏は初心者向けにも良書を提供している素晴らしい技術者だわな。

>>297
日大でもいいが、隠すのがダサイな。大したことないくせに偏見もつとか何様なんだろうなw
論理回路のまともな講義もできないだろ。ベテラン技術者は大学で講義できるぐらいの
見識を持っててしかるべきだと思うが、鳥にはそれが無い。

299774ワット発電中さん:2012/05/13(日) 21:25:35.36 ID:LZhZTVcP
>>267
if(~RST_X)
Q <= 3'b011;
resetでレジセットしているけど、おまえらは電源投入後の要リセットの設計が普通?
ASICなんかリセット回路内蔵して外部からリセット与えなくても自分で電源投入リセットするんか
300774ワット発電中さん:2012/05/13(日) 21:27:43.05 ID:ZiRLPKm+
リセットしないでどう動作させるんだ?
301774ワット発電中さん:2012/05/13(日) 21:30:18.94 ID:l4WdrW/a
>>299
FPGAでそれに相当するのはinitialなど初期値を与える構文だね。
302774ワット発電中さん:2012/05/13(日) 21:38:11.19 ID:xg/T0mel
>>301
それ、論理合成で削除されない?
303774ワット発電中さん:2012/05/13(日) 21:40:15.57 ID:nZeDhWdQ
>>299
シミュレーションの都合ってんのもある
304774ワット発電中さん:2012/05/13(日) 21:47:57.28 ID:LZhZTVcP
>>303
>initialなど初期値を与える構文
305774ワット発電中さん:2012/05/13(日) 22:03:54.69 ID:LZhZTVcP
あと、おまえらは電源投入や電源異常以外でリセット使っている?
FPGAの場合は電源異常の場合は要configだろうし、
あるとすれば回路設計悪くて暴走するから、暴走検知したらリセットとか

ASICやったことないけど、ASICの場合はリセット配線なるべく減らしたいとかないのかな
要リセットだとあっちこっちのレジに配線しまくりになり配線大変ってならないのか
そもそもASICに外部リセットがあるって多いのかいな
306774ワット発電中さん:2012/05/13(日) 23:30:07.63 ID:xFOJqlbr
>>305
低電圧検知用のアナログ回路入れてリセットかかるようにする
リセット配線はクロックみたいにツリー状にすることもある
307774ワット発電中さん:2012/05/14(月) 02:32:03.99 ID:bNi7pFKb
>>302
initialで設定した値は、コンフィグ後のレジスタの初期値として実機でも有効なはずだよ。

XilinxだとSTARTUPなんとかってマクロがあって、これを使うとコンフィグ直後の状態に戻せる。
initialで設定した値に戻るって事ね。(ブロックRAMの初期値以外)
STARTUPってFPGAの、ASICとしてのリセット発生回路みたいなものらしい。
Alteraでも似たようなものあるんじゃ無いかな?
308774ワット発電中さん:2012/05/14(月) 09:53:47.95 ID:nwmZVeoF
>>307
>XilinxだとSTARTUPなんとかってマクロがあって、これを使うとコンフィグ直後の状態に戻せる。
>initialで設定した値に戻るって事ね。(ブロックRAMの初期値以外)

ホントに?
309774ワット発電中さん:2012/05/14(月) 10:13:41.30 ID:FnJAIqtQ
initialで初期値記述のあるFFの場合は、コンフィグ時にinitialで指定した値に
FFをした後FFにクロックを供給(ユーザーロジックアクティブ)。
で非同期リセット記述しているFFの場合は、コンフィグの最後(?)にFPGAが自分で
非同期リセット信号を出してFFをリセット、その後クロックをFFに供給
って感じの処理をしていると妄想して信じてるんだけど。
いずれにしろコンフィグされれば初期値記述があるFFはリセットされると妄想。

外部からリセットしないとFFの初期値設定できないなら、開発の時、PCから
ダウソコンフィグするたびに手動リセットしないといけなくなるんじゃない。
そんなことしている? ただ、ダウソコンフィグ時は特別でダウソ後
FPGAが自己リセットかけるようになっているなら別だけど。

ゴメン、月曜日で欝で嘘を書いています。外部リセット必ずしてね。
310774ワット発電中さん:2012/05/14(月) 11:05:04.24 ID:lq0NStQ4
>>278
>SystemC から始めた人にクロック、並列動作、レジスタとかの概念が理解できるのかな。

おまえSystemCというよりソフトウェア知らなさすぎ、
少なくとも組込みやってるソフト屋でロジアナ使えないやつなんかいないから。
タスクの並列起動でwaitをいかに減らすかかがキモのRTOSなんていじったこともないだろ。あと、parallel指定とかトランスピュータとかも見たこともないだろ。
それとさ C言語のレジスタ修飾詞すら知らねぇってか?
むしろソフトと比べると10年は確実に遅れてる言語仕様、特に似非AdaのVHDLあたりで鬱になるんだろ。
311774ワット発電中さん:2012/05/14(月) 11:17:04.58 ID:lq0NStQ4
>>294
スレ的に関係が深いような個人名出して誹謗中傷は辞めといた方がええで。まっとうな批判はいいとして、
マジ訴訟起こされるかも試練で。
312774ワット発電中さん:2012/05/14(月) 11:21:46.76 ID:lq0NStQ4
>>296
>おまえのパワハラセミナーに比べたら

どんなことしたのかすごく興味あるわ。教えて
313774ワット発電中さん:2012/05/14(月) 12:37:40.09 ID:40W0Lko8
>>310
>少なくとも組込みやってるソフト屋でロジアナ使えないやつなんかいないから。
いや、いっぱいいるから・・・
314774ワット発電中さん:2012/05/14(月) 13:56:41.72 ID:5f49kexe
組み込みのソフト屋ったってデバイス層を書く人とアプリケーション層を書く人(というかそれを専門で書く人)が
世の中にいたりするけどな。ミドルウエア専門の人だと普通のアプリ屋と同じレベルだったりするよな。

それならまだ許せるけど、以前いた会社ではFPGAやASICの設計で論理設計しか出来なくて
実機デバッグでロジアナ使えないどころかJTAG経由でプログラムをするってことすら
知らなかったやつがいた。恐ろしいことに会社に入ってから半田付けをしたことすらないそうで・・・・
そいつはVHDL使っててクロックの概念はちゃんとわかっていたんだけど・・・ねえ・・・・
315774ワット発電中さん:2012/05/14(月) 14:25:58.42 ID:6QPlmYd6
1と0の狭間にいるんだよ。
316774ワット発電中さん:2012/05/14(月) 16:04:17.53 ID:rCpBV5qM
>>304
それだと、初期値だけは良いんだけどね
317774ワット発電中さん:2012/05/14(月) 19:10:25.93 ID:xK3PcVvS
>>310
そんな凄いソフト屋ならHDLである程度ハード開発も当然できるよな
いや、ハード遅れているというぐらいだからSystemCかな。いやいや、
自分で更に進んだ俺言語作ってやってたりして。
ハード知らないでソフト書くなんて組み込みソフト屋じゃないって
思っているだろな。
318774ワット発電中さん:2012/05/14(月) 19:58:05.18 ID:BpLmr5rD
>>311
そっか。鳥海さんごめんなさい。
卑怯なのは私でした。もうしません。ごめんなさい。
319774ワット発電中さん:2012/05/14(月) 20:33:00.08 ID:lq0NStQ4
>>317
おまえ、まったく現実知らん糞学生か?それともまわりよっぽど糞ばっかの下請け勤務か?
組込みやるのにハード知らんて?そんなの通用するかよ。ネットワークアナライザ見ながらインピーダンスマッチング短時間でとるような作業やれと言われりゃ無理だろうが、
ロジックだけじゃなくオペアンのイロハぐらいは知ってて当然。
末端は知らんが、まともなシステム設計をやるには最低、学部電気系程度の知識は組み込みでも必要だ。
いったいどんな職場環境で仕事してんだおまえは。
320774ワット発電中さん:2012/05/14(月) 20:36:18.91 ID:SocE4r7b
○り膿はverilogのセミナーがしたいのか生活指導がしたいのかはっきりしろよ
社会人にもなって中学生が受けるような生活指導されて怒鳴りつけられる筋合いないわ
verilogの質問にはろくに答えないくせに、高圧的な説教だけは進んでする存在価値不明の3流セミナー屋だぜ
321774ワット発電中さん:2012/05/14(月) 20:51:08.66 ID:lq0NStQ4
ジェームス・スキナーとどっちが上?
322774ワット発電中さん:2012/05/14(月) 22:33:27.24 ID:+F0GdC+b
個人攻撃してる奴って、レス見るとモンスター受講生じゃないのか。
モンスター受講生には中学生が受けるような生活指導しないといけないのか、
先生大変だな。

>>319
>学部電気系程度の知識は組み込みでも必要だ
システム設計するのにどんな知識が必要?
323774ワット発電中さん:2012/05/14(月) 22:43:48.92 ID:BpLmr5rD
>>320
N○Cではゲンコツ喰らいながら回路設計をおぼえたらしいよ。
技術者であるということはそんぐらい厳しいんだぞ!みたいなことが言いたいらしい。
324774ワット発電中さん:2012/05/15(火) 02:51:54.91 ID:flRi7/pM
NECより売り上げ上位の電気勤務だが、
鉄拳制裁がそれほど有効ならこれほど業績は低迷しない。
意味ない鉄拳制裁だったね。お疲れさn
325774ワット発電中さん:2012/05/15(火) 02:54:53.95 ID:flRi7/pM
でも、
日本の会社は稲森流とか、ロームみたいな社員を馬車馬のようにこき使う糞会社が業績上げてるとこ多いのも事実だけどね
日航の売り上げ改善とか、また稲森が神として祭り上げられるのかね?
326774ワット発電中さん:2012/05/15(火) 04:09:28.07 ID:LH8nrsSZ
ぼやーっとしていると、いつもならスパナが飛んで来るんですが、
今日は、ロジアナが飛んできました。
327774ワット発電中さん:2012/05/15(火) 04:47:45.17 ID:OR78XPjx
会社ならそういう頑固技術者的な感性でもいいのかもしれないけど
金払っていくセミナーでやられたらたまらんねw
328774ワット発電中さん:2012/05/15(火) 10:34:26.28 ID:mwvxL74z
恐ろしい職場や・・・でもコナクソーって言いながらやってるかも

置いといて4000円FPGA注文してみたけどXillinxの
14品のダウンロードモジュールが一個もないことに今更気づいた・・・
どこかに安いところないっすかね・・・
329774ワット発電中さん:2012/05/16(水) 00:25:34.75 ID:6msbNEzH
>>328
ゆとりだな。
>14品のダウンロードモジュール
何なのか分らないが、FPGA注文したところに注文すれば良い。
そこの安いよ
330774ワット発電中さん:2012/05/16(水) 13:46:06.54 ID:b481tSaP
>>329
ところがどっこい。つうか>>244のなんだが、PDFに
「自前で用意してね」
ってかんじで書いてあって、中になかったんだよ。
ちなみに14pinのJTAG用といったところか・・・
331774ワット発電中さん: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です。)

332774ワット発電中さん:2012/05/16(水) 19:57:54.26 ID:NLpBdgkt
>>331
Xilinxはよく知らんのだが・・・
エラーではなく警告なので
 ラッチができてるけど意図したラッチなの?
 大丈夫?
って意味では?
組み合わせ回路を作りたいのに、記述ミスでlatchを記述しちゃう人が多いので、
それを教えてくれてるだけのような。
ソースを見るに、意図したラッチだと思われるので無視してよいかと。
333774ワット発電中さん:2012/05/16(水) 22:17:18.40 ID:STTU4GwT
>>331
非同期メモリってある意味ラッチだから、その警告無視して良い
FPGAなら同期メモリにして内部のブロックRAM使うようにしたほうが良いな
334774ワット発電中さん:2012/05/16(水) 23:04:45.94 ID:SdcZ6M82
分散RAMなら256SLICEか…
ブロックRAM使うのが吉。
335774ワット発電中さん:2012/05/17(木) 01:04:11.68 ID:zCTCgMGE
なるほど、ありがとうございます。
336774ワット発電中さん:2012/05/17(木) 20:48:15.23 ID:WTGXmaqu
>>330
うちで使っている代理店なら
http://avnet.co.jp/design/kits/xilinx.aspx#download
HW-USB-II-GはXilinx純正で安心だが超高い、まだ米国avnetの方が安い
AES-JTAG-HS1 は安いが...、ま、Xilinxの正規代理店扱い品だから大丈夫だろうとは思う
更に送料込みで値段が安いの欲しければ、ネットを気合を入れて這いずりまわれ

そのボードのPCI-Eみたいなソケに刺さるコネって入手できるのか
俺的にはこのソケがネック
337774ワット発電中さん:2012/05/17(木) 20:52:05.90 ID:6hFJRCLK
どのソケットのこと?
338774ワット発電中さん:2012/05/17(木) 21:41:16.48 ID:WF5SHaxO
14ピン2mmピッチの書き込みコネクタのこと?
だったらavnet辺りで大量に確保してるはず。

書き込みケーブルはニッショー(だっけ?)試したことあるけど
うちの基板ではjtagクロック落とさないと書き込めなかった。
339338:2012/05/17(木) 22:34:48.76 ID:DtCekwA8
>>244みた。
PCI-EみたいなソケットってPCI-Eそのものやんw
相手側はコネクタなんて無くてカードエッジやん。
ネタかよ…orz
340774ワット発電中さん:2012/05/18(金) 09:59:29.88 ID:6bjEz9cQ
>>339
形はPCIeだけど、信号アサインが違うのよ

>>300
モジュールって言ってるけど、
業界では、ダウンロードケーブルと言うよ。
ダウンロードケーブルを買うと、14ピンのケーブルも
付いてくる。


USBが付いているから、ダウンロードケーブル要らないかと安心したけど、
そのUSBは電源供給のみだった。コンフィグには、別途ダウンロードケーブルが要るという。


341330:2012/05/18(金) 10:03:49.44 ID:GXhixwo5
会社にalteraしか無いのがネックだ。
まあ個人で買っちゃったので何とかしないとね。
皆さんの助言通り、avnetでさくっと買ってみようっと。ありがとー

・・・で>>336のとおり、JTAG-HS1ってのが見つかったので
ネットで検索したら5250円。どこも同じ価格か。

DLの
モジュール、基盤と
同額か・・・
342330:2012/05/23(水) 09:58:53.97 ID:ojJKY/P4
FPGAきたよ〜。まだ動かしてないけど。

すでに一つ言えることがあって
USBの電源供給モジュールの差し位置がおかしい・・・
なんか作りも雑?とは言わないまでも
基盤に足が付けられないので、裏面のハンダ面が床に当たる。
当たらないように、梱包材を敷いたままやることになりそうだ。
343774ワット発電中さん:2012/05/23(水) 11:49:28.88 ID:SnSosBA/
基板見て思ったのだが、小さいカードエッジコネクタって案外便利かもしれんな。(w
344774ワット発電中さん:2012/05/24(木) 02:02:52.17 ID:2k+AKDDL
>>342
>USBの電源供給モジュールの差し位置がおかしい・・・
日本製と違って、一見雑に見えるけど、ソケットの1つのピンが埋まっていて、
逆刺しできないようになってる。
ただ、USBコネクタの出る方向が不自然というか見ていてツライ方向になってるよね。

>>343
カードエッジはいいと思うけど、それに使える相手基板が無いんだよね。

LX4なんで容量が少なくて、仕事にはちょっと使いにくいと思う。
趣味用としては、Spartan6だし、安いし、抜群なんだけどねぇ。
回路図は見にくいし、基板のシルクは言葉足らずで回路図との対応がとりにくいし。
わんぱく者だけど、かわいいやつです。
345774ワット発電中さん:2012/05/24(木) 08:16:10.19 ID:diVLpBq2
>>344
今時は自分で起こすからその点は無問題だよ。
仰るとおり仕事では使いたくな仕様だが、残念ながらそんな仕事が
回ってこない。(w
346774ワット発電中さん:2012/05/25(金) 01:39:41.12 ID:lAyFYgN/
>>345
>今時は自分で起こすからその点は無問題だよ。
起こすって何を? 基板を起こすってこと?
あのピッチの基板が簡単に作れる?
347774ワット発電中さん:2012/05/25(金) 10:41:35.85 ID:Ky5NVCy/
しかも金メッキしないといかんしな
348774ワット発電中さん:2012/05/25(金) 12:37:45.73 ID:DARm+rjF
設計だけなら出来るけど、製造は外注だな。
実装のほうが大変だ。
349774ワット発電中さん:2012/05/25(金) 21:56:46.44 ID:4iUwHgYB
FusionPCBだと50mmx50mm 10枚で$9.9+送料。
+$15で金メッキだから趣味で出来るレベルやね。

実装が大変?
自作基板なら手付けできる部品限定でしょ。
350774ワット発電中さん:2012/05/27(日) 15:32:17.14 ID:lhfELjhr
しないほうがマシな金メッキかもしれないけど
351330:2012/05/28(月) 10:11:52.40 ID:MDBNUtY7
ボロPCにISE入れてるんだけど今容量だけで6Gだと?
休みの日に一気にしようと思ってたんだけど進めず

悪いみんな・・・


しかしFusionPCBってやすいねー。
たまーに会社でプリント基板設計、外注するときに
こそっとPCI-Eとユニバーサルのパターンいれとこうっと。
352774ワット発電中さん:2012/05/28(月) 12:10:34.74 ID:bOGduszp
会社でFusion使ってるのか・・・
353330:2012/05/28(月) 12:56:13.90 ID:MDBNUtY7
ごめん、使ってないです。
次はFPGAを動かした頃に参上します。
354774ワット発電中さん:2012/05/29(火) 05:05:45.80 ID:XzdK6WIm
わかったからコテ外せよ。
355774ワット発電中さん:2012/06/02(土) 03:20:46.46 ID:DRli3EV0
教えてください

画像のフレームレートを変換する場合、画像メモリは、何ページ持つのでしょうか?
例えば、フレームレートがピッタリの整数倍なら、A, Bの2ページでなんとかなるように思います。
しかし、レートが異なると、読み手の垂直同期で他方に切り替えようとしても、
現在書き込み真っ盛りだったりします。
ところが3ページあると、読み出し→C終了したとき、A書き込み中ならBに切替え、
書き込みは、AとCを交代で書き込めます。

この考えは間違っているでしょうか? 
356774ワット発電中さん:2012/06/02(土) 03:36:08.48 ID:AlgnWPtY
>>355 HDLスレで聞くという考えが間違っているかもしれない
357774ワット発電中さん:2012/06/02(土) 11:33:47.46 ID:RGvSjq1H
1000/1001 で苦労するがよい
358774ワット発電中さん:2012/06/02(土) 13:32:29.92 ID:wqzgrm+i
>>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.
еёжЭЮЯабЧЦХЛθ γδεζηθ
弖十=優多野手頭=慧吏載地衛 帝跿(徒)
哇狸野雉会 匯蛙労 野慈蚕 優多野手頭
еёЬТУФКЛθ шщпёЬТУФХЛθ νξδεζηθ γνξδεζηθ шщпёжЭУТЬЫСТУФХЦЧШОНМЛθ ΡΣΘΙΚΛΜΒΓΝΜΛΚΙΘ ежрсзийклвгднчцхшеёЬТИЙКЛθ
361774ワット発電中さん:2012/06/13(水) 16:46:03.18 ID:fJoSySAx
細かい話なのですが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を選択できています。
これはどういう解釈をすれば良いのでしょうか?
362774ワット発電中さん:2012/06/13(水) 17:44:21.91 ID:fgc0CIBM
selecta の中身を見ないと何とも言えないが
posedge clk を評価した時点で select は1になってるよね。
363774ワット発電中さん:2012/06/13(水) 17:52:35.00 ID:1HHQdY1u
記述自体が間違ってると解釈の意味ないんじゃね?
364774ワット発電中さん:2012/06/13(水) 21:28:38.32 ID:fJoSySAx
>>362
ノンブロッキング代入文は同時であるから
クロックが上がったのを探知したときにselectを見ると
クロックと同じく既に上がっているということなんですね
365774ワット発電中さん:2012/06/13(水) 22:27:40.84 ID:oavp0ynS
selectの中身見てみないと何とも言えんな
思い当たると言えば、Resetが無いようなので、記述次第では同期セレクタじゃなくて
ただのコンビネーションロジックのセレクタができているとかかな
366774ワット発電中さん:2012/06/13(水) 23:36:48.66 ID:s6vBAZco
>>364
ブロッキングでも同じだと思うよ
367774ワット発電中さん:2012/06/15(金) 19:16:55.83 ID:z/HEvgO0
検証関係で、皆さんが役に立った本やサイトってありますか?

アサーション検証の勉強がしたいのですが、中々いい情報が見つかりません。
そもそも、検証関係のドキュメントが回路に比べ少なすぎる・・・orz
368774ワット発電中さん:2012/06/15(金) 22:48:45.87 ID:IwBlpNwz
検証ってことはプロだろ?まさか素人が真面目にアサーションなんかやろうと思わないだろうし・・・
会社に頼み込んでセミナー受けた方がいいよ、結構マジで
外に出てる情報少なすぎるからね
369774ワット発電中さん:2012/06/16(土) 05:06:35.35 ID:+Tz6Rl2j
教えてください。

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を引きまくる。引けた回数を表示。
余りの数を表示。
でしょうか?
370774ワット発電中さん:2012/06/16(土) 07:10:07.66 ID:10APhxGZ
>>369
32bitのint時はマイコンでCではどうするんですか?
371774ワット発電中さん:2012/06/16(土) 07:50:11.42 ID:SCk59WyP
>>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進イメージで比較→減算→シフトとやったほうがちょっと早いかな。
372774ワット発電中さん:2012/06/16(土) 09:59:32.70 ID:ToKkPU87
カウンターなら最初から10進カウンターにしておく。
373774ワット発電中さん:2012/06/16(土) 11:51:57.96 ID:+Tz6Rl2j
>>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でやれば良い、みたいなのは無しで、技術的にどのように対処しているのか
知りたかったです。

みなさん、ありがとうございます。
374774ワット発電中さん:2012/06/16(土) 13:03:21.21 ID:X0PV7qjT
検証か…
期待値をソフトで吐いて、比較してたがどうにも期待値と合わず
死ぬほど悩んだ末、期待値生成側と回路側とでアルゴリズムが
違うことが解って、誤差分が合ってない事が解ったってな事があったなぁ。

開発グループ内での意思の疎通とか、外注との仕様のやり取りって
大切だよな。(w
375774ワット発電中さん:2012/06/16(土) 20:19:38.07 ID:oCyL8K32
>>369 >>373
やりたいことは結局のところ2進バイナリ->BCD変換じゃないのか?
XbitバイナリをLCDや7Segで表示しやすいY桁のBCDに変換ってことじゃないのか?
logicでのbin->BCD変換やらBCD->bin変換はlogic屋ならどうするかって常識だろ
これらって人とのインターフェース部には良く使うだろうし
聞き方が悪いから欲しい答えが帰ってこないんじゃないか
376774ワット発電中さん:2012/06/16(土) 21:49:44.50 ID:ToKkPU87
>>373
LCDに出したいなら、それこそマイコン使えばいいだろ?
ハードでリアルタイムにやる必要性がわからん。
HEX→BCDの専用ロジックのICもあったけどな。
377774ワット発電中さん:2012/06/17(日) 03:22:35.44 ID:GwT+7/Or
>>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にするのは、特殊な配線をしたと思います。
378774ワット発電中さん:2012/06/17(日) 10:50:07.53 ID:ETf8lU51
そもそもさぁ、非力なFPGAで32ビットの入力値をBCD変換して
LCDに表示するって言う要求が間違っているんじゃないの?

入力値を見たいだけなら7セグLEDで"4FE5"って表示すれば困らないし、
LCD表示器使うとシーケンス制御が面倒くさいよ。

32bitのBCD変換だけを純粋に考えるなら、32段のBCD加算器かなぁ。
379774ワット発電中さん:2012/06/17(日) 11:17:46.34 ID:1NsS3KDc
>>377
除算にクロック数が掛かるというのが、引き算の回数
という意味で捉えているのであれば間違い。

通常はシフトと漸近法を用いるからビット数分かかる。
パイプライン処理出来るし、問題ない場合が多い。
380774ワット発電中さん:2012/06/17(日) 11:41:09.65 ID:GwT+7/Or
>>378
>そもそもさぁ、非力なFPGAで32ビットの入力値をBCD変換して
>LCDに表示するって言う要求が間違っているんじゃないの?
そういうことではなくて、技術的にどのようにするものなのでしょうか?
ということです。

>32bitのBCD変換だけを純粋に考えるなら、32段のBCD加算器かなぁ。
加算ではなくて、入力値のデコード、変換の方法を知りたいです。

>>379
>通常はシフトと漸近法を用いるからビット数分かかる。
>パイプライン処理出来るし、問題ない場合が多い。
あっ、なるほど。割り算回路を自作すればいいんですね。ありがとうございます。
変換方法全体でいくと、最初に書いたように、
100で割る、表示、残りを計算、10で割る・・・・という方法でやっていらっしゃるのでしょうか?
381774ワット発電中さん:2012/06/17(日) 11:53:36.57 ID:6+EjgA5/
マイコンを使うべしって言ってる奴はトンチンカンだよな
FPGAでやるならどうするかって聞かれてるのに・・・
「1+1はなんでしょうか?」 ⇒ 「1と1を足すのが間違ってる!」って答えてるようなもん
382774ワット発電中さん:2012/06/17(日) 12:20:18.24 ID:l7G0HeOJ
>>377

なぜ”BCD変換”でググらないの?
383774ワット発電中さん:2012/06/17(日) 16:25:59.64 ID:GwT+7/Or
>>382
ありがとうございます。そのキーワードでは探していませんでした。

検索したら、0〜4までは、そのまま。5〜15?は+3して・・・みたいなページを
見つけました。まだ理解していませんが、そういうやり方があるんですね。
大変勉強になりました。感謝いたします。

あと小数点は、どのようにするのでしょう。
マイコンなら、printf()で自由に表示できるのですが、FPGAではどのようにしていらっしゃるのでしょうか。
固定小数点なら、整数部分は、今回の方法で良いと思いますが、
小数部分は、
1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256

384774ワット発電中さん:2012/06/17(日) 16:36:29.54 ID:ETf8lU51
>>381
>マイコンを使うべしって言ってる奴はトンチンカンだよな
>FPGAでやるならどうするかって聞かれてるのに・・・

普通やらないんだから、聞いても無駄だってことだろ

ほら、

>あと小数点は、どのようにするのでしょう。
>マイコンなら、printf()で自由に表示できるのですが、FPGAではどのようにしていらっしゃるのでしょうか。

こんなこと言い出すんだよ。

>>381 が答えてくれるってさ。
385774ワット発電中さん:2012/06/17(日) 21:11:00.18 ID:Nkvti1xO
>>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ついていたな。どうしよう
386774ワット発電中さん:2012/06/17(日) 22:17:11.86 ID:GwT+7/Or
>>384
>普通やらないんだから、聞いても無駄だってことだろ
普通がどうやってやっているか知らないので、お聞きしたんです。
「普通はFPGAでそんなことはやらないんだよ」と教えてくださればそれで良いのです。
普通はやらないということは、既にFPGAの常識を知っている>>384だから言えるわけで、
何もしらない僕は、「どのように処置しているんだろう」と思うんです。

>>こんなこと言い出すんだよ。
悪かったですね。
そんなこと言うお時間をお持ちなら、「普通」は、どのようにしているかを、教えていただけないでしょうか。
387774ワット発電中さん:2012/06/17(日) 22:42:45.82 ID:AEUFzR3w
「普通」は痛い奴の相手はしないよ(藁)
388774ワット発電中さん:2012/06/17(日) 22:49:55.58 ID:1NsS3KDc
その場合場合で適切な回路を組むだけなんで「普通」なんてのは無いだろ。
それと32bitの数値が何者かで適切な回路は変わってくる。
情報が少なければ望んだ回答が得られないのは必然。

除算以外の方法では、32bitがカウンタの値ならBCDカウンタを
別途組むというのもひとつの方法。

要は回路化しやすいかどうか、同時処理できるという
FPGAの特性を生かせるかどうかだね。
389774ワット発電中さん:2012/06/17(日) 23:01:03.39 ID:9BIsrJ5d
あれだ、SystemC 使え。
390774ワット発電中さん:2012/06/17(日) 23:09:46.38 ID:cOfWE2G0
>>386
「普通はFPGAでそんなことはやらない」

なぜならば、BCD というのは、人が見るためのものだからだ。
BCD変換だけ出来ても仕方がない。人に見せるには、他にいろいろやらないといけないはずだ。
人が見るということは速度も必要ない。だから、普通はマイコンでやる。

もし人がPCでデータを見るならば、普通は装置側に BCD変換は必要ない。PC で変換すれば良いはず。
391774ワット発電中さん:2012/06/17(日) 23:10:51.35 ID:Zw8BLhxM
まぁ、マイコンなんて無くて、集積度も全然たいしたこと
無いような時代にも電卓はあったわけでね。
最初から全部BCDで組む方が現実的かもね
392774ワット発電中さん:2012/06/17(日) 23:13:31.59 ID:E79uq2KS
そうだね、大昔はALUが4bitとかだったからね。
393774ワット発電中さん:2012/06/17(日) 23:27:15.47 ID:HaOvJrgj
>>392
8bitCPUはCなんて使わないでアセンブラでやってたんだよな
その当時の人どうしてたんだろな
ついでに8bitCPUが高価時代はADデータを74ロジックでロジックんで
7セグでデジタル表示してたんだろ。どうしてたんだろな
普通はFPGAではやらないからで済むって、ほんとゆとり時代って良いよな。
だから、ソフトもハード屋もドカタでOKになったのかも
俺のじゃなくあいつらにやらせろ
394 ◆QZaw55cn4c :2012/06/17(日) 23:33:05.04 ID:+qxLkL82
>>393
7segLED 用のドライバICがあった。たしか7447。
395774ワット発電中さん:2012/06/17(日) 23:36:51.77 ID:HaOvJrgj
FPGA内蔵マイコンでやるって言うならそれをCでどう書くんだ
これならやりなれているから簡単に答えられるだろ

>>391
確かはじめてのマイコン(4bit)が電卓用だったって聞いたことあるな
マイコンがない時代はHEX表示電卓だったのかな
396774ワット発電中さん:2012/06/17(日) 23:38:44.59 ID:E79uq2KS
>>393
少しスレチだが1chipCPUが8bitの時代には、A/Dとか12bitまでは普通にあったよ
確か東芝が12bitCPU、富士通が16bitCPU開発してた。主流にはならなかったけど。

あと、BCDの処理のしかたとしては4bitずつシフトして計算してました。
397774ワット発電中さん:2012/06/18(月) 00:10:00.85 ID:ovWU0j+Z
>>390
BCD表示のためだけにマイコン追加するって
どんだけ甘やかされた設計してきたんだか…。
398774ワット発電中さん:2012/06/18(月) 00:17:33.99 ID:1Lqf8zug
>>394
こんなところに来るって。ついにム板を追い出されたのか
おまえC得意だろ。宿題で
ADデータ12ビット、
FFF:4.095V
000:0.000V
に対応する
4桁BCDにする変換するコード書け。 
だたしCのprintf()等の変換できる関数は使わない
とあったらどんなコード書く
BIN->BCD変換を自前で作るのいやなら>>383の言っている
Shift and Add-3 アルゴリズム使う
399 ◆QZaw55cn4c :2012/06/18(月) 00:24:42.55 ID:xxSSV1Yq
>>398
えへへ、両方みているのはお互い様でしょ、別に追い出されたわけじゃないけど、そんなむずかしい問題はかんべんしてえ。
400774ワット発電中さん:2012/06/18(月) 00:42:13.90 ID:XncmRzrp
>>397
BCD 表示のためだけに マイコンが必要になることは、普通ない と言っているだけなんだが。
401774ワット発電中さん:2012/06/18(月) 00:50:45.37 ID:o8TQ1l9t
>>369
というより聞いてる内容が「どれが正解ですか?」って事だよね。
どれも正解で、目的によって適した物が違うだけの話。

100を引きまくる。引けた回数を表示。
10を引きまくる。引けた回数を表示。
余りの数を表示。

これも正解の一つ。Cで書いてもHDLで書いても正しい結果が得られる。
ちなみに、気づいてるかどうかわからないけど、これはまんま割り算だよ?
小学生の時に習った筆算での割り算そのもの。
2進数でやるか10進数でやるかの違いはあるけど、割り算回路も基本同じ事してる。
(最適化は色々あるので、言葉のまま捕らえないように)

マイコンでCなら〜FPGAでは割り算が苦手(clock数かかる)

マイコンも割り算回路を持っていない機種だと数10〜100クロックかけて割り算してるんだけど、
それは苦手とは呼ばないの?中ではライブラリが加減算回路を使って割り算を実行してる。

FPGAが割り算苦手かどうか、自分で書いたアルゴリズム(100引きまくって〜)を実装して
見れば良いと思う。思った以上に小さな回路ができあがると思うが。

正解は一つじゃ無い。
外部にマイコン付けるのも、FPGAにマイコン実装するのも、HDLで書くのも全部正解。
一端D/A変換してBCD出力のあるA/D変換器に突っ込むってのもひょっとしたら正解かも知れない。
402774ワット発電中さん:2012/06/18(月) 02:43:14.60 ID:QWMzdcky
>>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変換方法などのお話、大変勉強になりました。
ありがとうございました。
403774ワット発電中さん:2012/06/18(月) 08:01:32.74 ID:+0T6lu2g
外部に何かつけるなら、ROMつけるのが手っ取り早い。
クロック不要で一発変換
404774ワット発電中さん:2012/06/18(月) 09:01:12.40 ID:R1ezeBZo
>>393 >>397
表示だけのためにマイコン使うのはイマドキ当たり前だろ。
無理してFPGAに詰め込むのは趣味の範疇だろ?

ADC で BCD 表示のやつは積分用のカウンタが BCD になってるわけで、
わざわざバイナリーから変換してるわけじゃない。

ゆとり世代をバカにする前にシステム設計できるようになれ。
405774ワット発電中さん:2012/06/18(月) 09:47:42.98 ID:lyAYiztV
だからズレてるって言ってんの
How to do を聞きたいのに、what should be を答えてるっていい加減気付けよ
こういう奴が議論入ると、ただかき回すだけで全然進展しないんだよな・・・
406774ワット発電中さん:2012/06/18(月) 09:52:57.87 ID:XsQD9GVi
おお、>>405頭良さそう。
407774ワット発電中さん:2012/06/18(月) 10:10:14.21 ID:lF/cPP/y
Was sollte gemacht werden ではあるけど、
>>393 に返しただけだ。
408774ワット発電中さん:2012/06/18(月) 10:13:30.50 ID:jDeMDWR3
ここでコレを言っても馬鹿にされるにせよスレ違いとは言われないよな

日本語でOK
409774ワット発電中さん:2012/06/18(月) 12:45:17.92 ID:Qdt61bnb
>>407
おっ、ドイツ語だね。 もしかして、あの人?
410774ワット発電中さん:2012/06/18(月) 12:53:15.75 ID:znPcnDLy
キチガイは
>結局どんなものが出てきても文句言ってるっていう気がする。
だよな。
もう、自分や自分の会社で文句でないの作れだよな
411774ワット発電中さん:2012/06/18(月) 13:19:52.89 ID:xyQjmpip
>>405
その通りだよな。

マイコン使いの質問者はSpartan3評価ボードでFPGAソフトマイコンをやりたいわけじゃないよな
マイコン使いがあえてロジック回路でやりたいから質問したんだろ
ついでに、質問者は仕事でLCD表示ならFPGAなんて使わないでマイコンですると思う
412774ワット発電中さん:2012/06/18(月) 15:37:27.16 ID:o8TQ1l9t
>>402
自分ならどうするかな?
「FPGA評価ボードでBCD表示する」というのがお題目だから、マイコン外付けなんてのは無し。
昨今のFPGAなら普通にプロセッサ入れてるので、それに表示させてしまうが、
Spartan3の小さいのだとつらいな〜
ちなみにFPGAにプロセッサ入れるのはそんなに手間じゃ無いと思う。
慣れてしまえばかなり便利なツールになるよ。仕事で言われる前に今のうちに苦労しておこう。

そうなるとHDLで書くことになるかな。
100引きまくって〜の実装か、テーブルで変換するか…

BCDカウンタを入力値回カウントアップする方法にするかも。
4桁9999まで回してもクロック10MHzなら表示遅延1ms、人の目にはわかるまい。
マイコンじゃ許されない実装だけど、FPGAなら問題ないかと。
413774ワット発電中さん:2012/06/18(月) 19:49:12.23 ID:aFhTdTrZ
BCD変換のために必要な機能だけを持ったスクリプト処理する
CPUもどきの小さいシーケンサみたいなものを一つ作っておいて、
スクリプト(プログラム)を食わせていくだよ。
414774ワット発電中さん:2012/06/19(火) 00:00:55.79 ID:glYc48+o
>>413
それとハードのBCD変換、どちらが良いか(気持ち的にどちらをよりしたいのか)
でも、俺なら小さい俺設計プログラマブルシーケンサ入れるならLCD表示、BCD変換も出来るシーケンサにするな
LCDの初期化、データ待ち、来たらBCD変換して、LCD表示、データ待ちにGo
415774ワット発電中さん:2012/06/19(火) 23:38:48.16 ID:9eCwdCbY
>>414
その辺りは、必要なリソースとのさじ加減でね。
スクリプト処理エンジンは一回作って要領を覚えておくと
とっても便利だよね。
416774ワット発電中さん:2012/06/20(水) 00:28:57.54 ID:7vssrUnO
スレチだけど

>>393
>その当時の人どうしてたんだろな
何の風に乗ったのか知らないけど、大学で先生になった人なら知ってる
417774ワット発電中さん:2012/06/20(水) 02:20:22.19 ID:O8djGq5R
>>402です。
秋月でLCD買ってきて、FPGAから文字をだそうとしていますが、
BCD変換以前に、FPGAでLCDを使うのが、とても難しいみとがわかりました。
LCD初期化の段階でもう躓いて(つまづいて)います。

Eの↑↓を、関数のように使おうと、1つのモジュールにしました。
初期化の前半には、0x30, Eの↑↓, 0x30, Eの↑↓のような部分があります。
後半では、LCDのモードを決めるために0x28などを送信、その中でもEの↑↓を実施。
と、なった時点で、困ってしまいました。
前半ではE()の関数を直接使用し、後半では別のモジュール内に組み込んで何回かコール。
1つのモジュールを、複数のモジュールから呼んで、出力先は同じピンというところで、
頭がボケボケになりました。今日1日でも出来なかったので、明日引き続きやります。
418774ワット発電中さん:2012/06/20(水) 09:32:21.35 ID:JFgRoIgN
初期の俺と同じ轍を踏んでるな
ソフトの感覚が抜けないとそうなっちゃうんだよな
最初のシーケンスを出すモジュールと、後のシーケンスを出すモジュールを
出力のところでセレクタで切り替えるという方法が一番わかりやすくてよいよ
回路でかくなるけど、まあ最初はいいでしょ
419774ワット発電中さん:2012/06/20(水) 10:41:15.99 ID:chzLUI/A
ありがとうございます。
僕も似たようなことを考えています。
トップ階層でピンに出ていく直前で、「切り替える」か「or」した結果を、
D-FFで掬って(すくって)同期させて、ピンに出せばいかなと。
420774ワット発電中さん:2012/06/21(木) 02:10:45.08 ID:Bj5gaiu2
>>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が必要でしょうか?
421774ワット発電中さん:2012/06/21(木) 05:21:08.72 ID:mP7/3WyO
ろくな知識もないのに、最初に本を読んでみるとか、Webで情報を探すとか
しようと考えないのかね。ときどき、こういうのが出てくるが。

適当にやってみて、聞いてみて、またやってみる。ソースを見ると、そんなの
本をちょっと読めば分かるだろうとか、本を読んでりゃ、こんな記述しないだろう
と思う時がある。効率的なつもりなのかもしれないが、回り道じゃないの。

1日書きまくる時間があれば、本を読めよと言いたくなる自分は古い人?
書きまくった末に出てきた、幼稚なソースを見ると、自分が関係していたらと
思うと、いたたまれないね。

偏見かもしれないが、こういうのがゆとりなのかなと考えてしまう。

この程度の知識で、目標は結構高いから、すごいとは思うけど。

スレをあんまりさかのぼって読んでないから、誤解があるかもしれないが。
422774ワット発電中さん:2012/06/21(木) 08:49:13.55 ID:xGnBL6zc
>>421
上級者から見ると、初心者は効率悪くて当たり前
手順や考えが洗練されて、というより、洗練されること自体が成長というもんだからね
でも、いちいち初心者の日記をこのスレに書くなという気持ちはわからんでもない
お前の試行錯誤はどうでもいいから、何か困ったり進展があった時だけ書けばいいんじゃね?とは俺も思う
423774ワット発電中さん:2012/06/21(木) 09:58:38.42 ID:eq8ADpQB
>>417です
そうですね。失礼しました。
不快にさせてしまい、すみませんでした。
424774ワット発電中さん:2012/06/21(木) 12:30:58.73 ID:sKDnSgWU
>この程度の知識で、目標は結構高いから、すごいとは思うけど。
目標は勝手に高くして、努力する気も、自分で考える気もないけど、
無償でそこまで自分を引き上げてください
だもんな。
425774ワット発電中さん:2012/06/21(木) 16:05:03.71 ID:7yaQE1XI
>>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
  人間が小さいね。

426774ワット発電中さん:2012/06/21(木) 17:59:56.54 ID:mP7/3WyO
>>425
そのとおりですよ。(笑)

金と手間を省くために、人の良い人を利用することに、嫌悪感を自分は感じる。

あなたのように、便利に利用されても構わないという人もいて良いとは思いますよ。
ただ、利用する側の人間には感謝の振りはされても、感謝はされないですけどね。
427774ワット発電中さん:2012/06/21(木) 18:10:03.00 ID:mP7/3WyO
ただ、ひとつ追加すると、便利に利用される人のことを、世の中では、おそらく
人間が大きいとは言わないと思いますよ。
428774ワット発電中さん:2012/06/21(木) 18:23:59.91 ID:XnOPq49D
お前らってスレで感謝なんて期待してるのか

>>426
>金と手間を省くために、
それならここで質問している人は全てだろ
お前も金と手間を省くために人の良い人を利用するためにいるんだろ
429774ワット発電中さん:2012/06/21(木) 18:50:19.93 ID:D/YL6aw6
別に感謝なんて期待してないけどね
>それならここで質問している人は全てだろ
自分で考えることすら放棄して、問題丸投げなのと、自分で考えていろいろ
やってみたけど、どうにも腑に落ちないというのを一緒くたにしてないか?
430774ワット発電中さん:2012/06/21(木) 21:37:17.37 ID:MDC7wDM8
>>428
金払ってもロクな回答もらえないんだぜ。
サポートとかサポートとか。
431774ワット発電中さん:2012/06/22(金) 19:44:49.15 ID:/0Kzjsgf
>>430
会社はお金有り余っているのか
とうぜん高給だろが
432774ワット発電中さん:2012/06/22(金) 21:02:34.65 ID:PWnYHKt1
ただなんとなく人がよってたかって
他愛もない話して
気まぐれで親切したりして
小さな事に感謝したりして

そんなもんじゃない?
2chなんて
433774ワット発電中さん:2012/06/22(金) 22:49:06.81 ID:LziJ424w
なんで上級者って、威張るんだろう。
「おれも苦労して覚えたんだ。おまえもその苦労を味わえ」ってとこだろうか?
緑色の掲示板でも、威張った人がいたよね。
434774ワット発電中さん:2012/06/22(金) 23:14:50.39 ID:AhSFiv/X
>>433
誰も苦労したなんて言ってないよ。本でも読んでからにしたらって言っただけ。
丸一日、使っても、大したレベルにならないんだから、やり方を変えたほうがよい
という、至極当たり前だと思うが。

ゆとり世代にとっては、それが威張るということなのかな?

1日、サンプル入力して動かしながら、本を読めばある程度のことはわかってくる。
そのほうが、掲示板で聞くよりも、ずっと効率が良い。君はそう思わないのか。

自分で調べたくないから、人に聞いて済ませようという、ずるい考え方じゃ、
大した知識は身につかないよ。
435774ワット発電中さん:2012/06/23(土) 00:06:03.08 ID:hHIi4Bgz
>「おれも苦労して覚えたんだ。おまえもその苦労を味わえ」ってとこだろうか?
なるほど。「覚えること」・・暗記するようなものなのだと思って
るのかな?きっとどこかに模範解答があって、上級者はどこかでその
模範解答を見て丸暗記してるはずだ。俺様にも模範解答を教えろと、
こういう感覚を持ってるのか。

手近な模範解答が目の前にあるんだから、それを見ればいいだけだと
思うから、自分で考えようとか、調べようとしなくなってるということか。

なるほどね。ゆとりならぬ、手抜き教育制度の被害者ってところかな?

436774ワット発電中さん:2012/06/23(土) 01:20:55.92 ID:b2yO9ciP
>ゆとりならぬ、手抜き教育制度の被害者
手抜き教育制度もそうだが親世代にも問題がある
まさかとは思うがゆとり世代の親世代や教育制度作った世代は社会で威張ってないよな
こんな成果しか出していないのにって笑われているよ
こいつらって年齢的に何歳ぐらいの世代?
437774ワット発電中さん:2012/06/23(土) 01:39:33.80 ID:sa6rflLc
>>425です。
みなさん、いい加減に上から目線をやめたらどうですか。

二言目には、ゆとりだ、手抜き教育制度だって言うひまがあったら、
彼らに、調べ方、勉強の仕方を教えてあげてください。
将来のFPGA界、ひいては日本を背負って立つ連中ですよ。

みなさんは、もう十分に社会貢献してくれたことだと思います。今の日本があるのは、
上級者のみなさんのおかげだと思います。どうかこのあとは、
「魚を与えるのではなく、魚の捕り方を教える」でお願いしますよ。
次の世代に、技術伝承することにも、気を回してください。
お願いします。
438774ワット発電中さん:2012/06/23(土) 02:08:27.92 ID:mCT/NSQu
>>437
あなたがいるから大丈夫じゃない。あなたが教えて上げるんでしょう。

人を利用して、楽をしようなんて奴は、どこの世代であろうと自分は相手に
しない。それに、なんでも、手取り足取り教えるのが良いとは限らない。

今回の質問者だって、あなたが教えていれば、ずっと頼って自分で調べなくなる。
そのほうが、結果的に、彼の技量を下げてしまう。

世の中には、書籍もいっぱいある。いつの時代でも、ちょっとした努力をする
ことで技量を上げられる。人に教えてもらうことを待っているだけの人間は
所詮使いものにならない。

ゆとり世代は、労働市場において、不良債権のようになるんではないかと自分は
予想している。したがって、期待してない。

新しい世代は、ゆとり教育をやめたので、いずれ、ゆとり世代はサンドイッチに
なる。そうすると、リストラのときにはゆとりから、採用のときには、ゆとりは
後回しという時代が恐らくくると思う。
439774ワット発電中さん:2012/06/23(土) 02:30:13.83 ID:sa6rflLc
>人を利用して、楽をしようなんて奴は、どこの世代であろうと自分は相手に
>しない。それに、なんでも、手取り足取り教えるのが良いとは限らない。
なら、最初から静かにしていればいいんじゃないの?
自分は相手にしないんでしょう?

>今回の質問者だって、あなたが教えていれば、ずっと頼って自分で調べなくなる。
これには、あなたの思い違い、思いこみがありますよ。
   >ずっと頼って自分で調べなくなる。
      あなたは、質問者に聞いたのか? あんたの思い込みでしょ。
      調べ方を知らないですよ、今の子は。人間には元来、自分で頑張ろうとする気持ちはあるのです。
      その方法がわからない、わかったときの喜びを知らないだけなんです。

   >あなたが教えていれば
      あなたは、私に聞いたのか? ずっと教え続けるのかと、聞いたのか? あんたの思い込みでしょ。

      私は、全部が全部、いつでもどこでも、教えるわけではないです。
      もちろん、いつまでも教え続けることもしません。
      自分での調べ方、考え方を教えます。>>425の私の書き込みを見て
      それがわかりませんでしたか? わからないなら、もう一度>>425を読み返してみてください。

      確かに、最初は教えますよ。
      でも2回目からは、全部は教えません。最後には「自分でやれよ」と言います。
      物事を教えるときには、3つのステップがあるのです。
      まず「教える」  次に「実際にやって見せる」  そして「自分でやらせる」 の3つです。
 
   親や先輩が若い者にすべきことは、答えを教えることではなく、答えの出し方を教えることです。

   これを、われわれ年長者が確実に実践しないと、日本の将来はありません。

   上級者さんは、現在状況に満足することなく、将来の日本のことも考えて下さい。

   宜しくお願いします。
440774ワット発電中さん:2012/06/23(土) 02:45:58.58 ID:mCT/NSQu
>>436
一つだけ、間違いを指摘しておくと、制度を作ったのは文部省で世代は関係ない。
制度を作った世代というと、あたかも作成に関与したようだが、一般国民は
ほとんど関与してないかんね。

一節には、ゆとり教育の目的は、教員の週休二日制と言われている。もし、そうだとしたら
ゆとり世代は、先生の週休二日制獲得のための犠牲になったと言えるのかもしれない。

ゆとり教育は、学力が低くないという主張もあるし、客観的な評価とは必ずしも
いえない。今は、単に、世評でゆとり教育世代は学力が低いと言われている状況だろう。
本当は、結果を出すのはもう少し先にするべきなのかもしれない。

文句言うのは全然かまわないが、人のせいにしても問題は解決しないよ。
441774ワット発電中さん:2012/06/23(土) 02:49:42.70 ID:mCT/NSQu
>>439
あついですね。日本の将来はあなたにまかせましたよ。頑張ってくださいね。
あなたの熱意が、若い人に通じるといいですね。
442774ワット発電中さん:2012/06/23(土) 02:54:27.98 ID:q1pPn0Me
>>440
>先生の週休二日制
って先進国では珍しいのか。他が週休二日が当たり前なのに日本週休二日
にしたら駄目駄目になりましたじゃな
443774ワット発電中さん:2012/06/23(土) 03:10:33.54 ID:mCT/NSQu
>>442
ゆとり教育で駄目になったとは、言ってないと、思うんですが。しかし、ゆとり教育を放棄したことで、
失敗だったと認めたという証拠とみなされているという側面はあるんでないの。

結果はどうあれ、ゆとりと呼ばれ馬鹿にされているということがあるとすれば、
そして、その目的が週休二日制が目的だっとしたら、生徒はかわいそうだったなとは思うよ。
しかし、もしそうだとしたら と言っている通り、あくまで仮定だからね。
444774ワット発電中さん:2012/06/23(土) 09:19:27.45 ID:vyqQx5nG
ゆとり教育というのは、あれだ、
経済的にゆとりのある家庭は学校以外の教育に金を掛け
経済的にゆとりのない家庭は学校教育だけしかできず、
結果的に貧富の差を拡大再生産させるために
与謝野さんが作った施策なのだ。
445774ワット発電中さん:2012/06/23(土) 09:30:38.09 ID:DxhG3Vx0
これ意外と良いな
ttp://ocw.ouj.ac.jp/tv/1542109/05.html
446774ワット発電中さん:2012/06/23(土) 09:45:19.20 ID:FG3skbqI
ゆとり世代といっても、大手の企業に入ってくる人間は基本優秀だから平均像がつかめない今日この頃

ただまあ、個人、個性と連呼されてわがまま放題と自由を同一視してたりする部分と、
超買い手市場&不安定な職場環境で社蓄ぶりをアピールする姿勢が分裂ぎみではある…

趣味が電子工作で物静かでおとなしい新人(いわゆるネクラなオタク)は超優秀で何やらせてもすぐ上達するね。
このクラスになると氷河期だろうがバブルだろうが団塊だろうがそんなに多くはいないだろう。
期待の人材である
447774ワット発電中さん:2012/06/23(土) 09:55:08.77 ID:Ro1nLBsE
>物事を教えるときには、3つのステップがあるのです。
>まず「教える」次に「実際にやって見せる」そして「自分でやらせる」
>の3つです。
完全にどこかの大将さんの受け売りだなぁ(笑)
でも、それが二度目なんだとネットでわかるのかい?
同じ奴が毎回丸投げ・・それで「最初は・・」といって、答えだけ
与える、その繰り返しになるんじゃねぇの?
448774ワット発電中さん:2012/06/23(土) 11:57:20.07 ID:9NUyWiyn
「教わる」んじゃなくて「学ぶ」
「学ぶ」はこれすなわち「真似 (まな) ぶ」
学ぶ姿勢を持った奴と楽して教わろうとしてるだけの奴とでは
質問の仕方が根本的に違う。
あるいは単に要領が悪いだけの奴もいるだろうが、
自分で気づけない奴は結局ダメ。
449774ワット発電中さん:2012/06/23(土) 12:04:15.18 ID:Uv9En2HJ
「教える」という行為は相手の技量が分からないと
余計なことを教える手間が増える。

だから掲示板で「教える」を実現しようとすると
相手の知識レベルを探りながらになるのでチャット状態になる。
そんな手間かけるほどのメリットは教える側には無い。

それにひとつの事を教えるのに10の予備知識が要る事だってある。
それを全て説明するのにどれだけ労力が必要か…。

ひとつの事に絞って質問されるのは全然問題ないけど
漠然と「全く分からないから教えて」はやめてくれ。
450774ワット発電中さん:2012/06/23(土) 12:48:30.52 ID:hD6KmpKd
質問するのにも技量が必要ってことですね。
451774ワット発電中さん:2012/06/23(土) 15:05:27.06 ID:sbxM4vRI

  誰か、質問ないですか?
452774ワット発電中さん:2012/06/23(土) 17:02:37.59 ID:Aidt54xy
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)
じゃだめなんですか?
453774ワット発電中さん:2012/06/23(土) 20:38:34.91 ID:l1oSSG+G
>>452
金と手間を省くために、人の良い人を利用することに、嫌悪感を自分は感じる。
454774ワット発電中さん:2012/06/23(土) 20:50:56.15 ID:mCT/NSQu
>>453
人の文章を抜き出して使う奴にも、嫌悪感を自分は感じるよ。(笑)
455774ワット発電中さん:2012/06/23(土) 23:49:22.95 ID:8Eeif2mJ
>>452
今度は凄いレベルが高すぎて、上から目線の>>454でもレスできない
456774ワット発電中さん:2012/06/23(土) 23:57:20.58 ID:WeXJrYm3
>>455
高すぎてじゃなく、低すぎてスルーされてるだけでしょ。
457774ワット発電中さん:2012/06/24(日) 00:05:48.13 ID:mCT/NSQu
>>452 は、あちこちにマルチで書きまくってるから、誰か答えてくれるんじゃないの。
458774ワット発電中さん:2012/06/24(日) 00:27:22.62 ID:IB0SBxp3
>>457
そうなのか、じゃあ俺が回答するのは止めておこうっとw
459774ワット発電中さん:2012/06/24(日) 00:30:16.80 ID:IB0SBxp3
>>420
まさかとは思うが、dはちゃんと、
 REG [2:0] d;
みたいに、レジスタで宣言してるよな?
460774ワット発電中さん:2012/06/24(日) 00:57:25.45 ID:Nozi3Uh6
大半の人は、実は釣り質問。
単に馬鹿な回答者がいればそれでいい。
461774ワット発電中さん:2012/06/24(日) 01:03:21.91 ID:IB0SBxp3
>>460
AVRスレの、粘着キモが降臨www
462774ワット発電中さん:2012/06/24(日) 01:11:20.43 ID:0yEtrO3O
AVRスレから拾って来た

大半の人は、実は質問に答える気はない
単に盛り上がるネタがあればそれでいい

これ分るよ
463774ワット発電中さん:2012/06/29(金) 02:55:32.98 ID:t1AgE5f3
質問させてください。

音声処理させるのに、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を越えているという認識は、間違っているでしょうか?

464774ワット発電中さん:2012/06/29(金) 08:43:00.58 ID:kwSBUBya
そやね
465774ワット発電中さん:2012/06/29(金) 15:32:45.40 ID:aaz5Kkv0
>>463
載せれば載るけど、それをどうやって上手く動かすかっていうあたりは
とっても難しいし、そこまでの性能が必要な用途では、今度はGPUだの
との比較になってくるんじゃない?
466774ワット発電中さん:2012/06/29(金) 16:58:38.20 ID:HD9TJFXm
>>463
人の良い人を利用することに、嫌悪感を自分は感じる。
467774ワット発電中さん:2012/06/29(金) 17:42:22.37 ID:nipspPWP
じゃ、どうしろと?
468774ワット発電中さん:2012/06/29(金) 18:06:40.12 ID:ZpP2ifmJ
相応の報酬を払うことで罪滅ぼし
469774ワット発電中さん:2012/06/29(金) 18:12:58.66 ID:YYex7F6r
FPGAスレあるのにわざわざHDLスレでFPGAについて質問
まさしく
>大半の人は、実は釣り質問。
>単に馬鹿な回答者がいればそれでいい。

それに対しては
>大半の人は、実は質問に答える気はない
>単に盛り上がるネタがあればそれでいい
470774ワット発電中さん:2012/06/29(金) 18:17:08.07 ID:ZpP2ifmJ
2ch の終わりの始まりの始まりだな
471774ワット発電中さん:2012/06/29(金) 20:25:44.30 ID:MnN4o2U2
>>463
なんでASICと比較しないの?
472774ワット発電中さん:2012/06/29(金) 21:25:16.66 ID:WV3strDG
>>463

低消費電力と低価格というのは量産品では最も重視される点だから、
必要な能力さえ確保できていればDSPで十分。

余剰性能で価格が上る物を選択するのはナンセンス。
それに、低消費電力なら電源回路のコストも下げられる。
473774ワット発電中さん:2012/06/29(金) 22:09:00.03 ID:N7gEQ4hu
FPGAや処理能力があるCPU・マイコンに市場を食われてDSPはいまやあんまり使われてないよな
474774ワット発電中さん:2012/06/29(金) 22:44:46.58 ID:zwvuY43m
消費電力が小さいほうがいいけど、
常時給電できるならあんまり重視しないかな。
475774ワット発電中さん:2012/06/30(土) 00:51:17.15 ID:gVjhQwSV
>>473

DSPはAVアンプではバリバリ使われているし、シンセとか電子楽器でも使われている。

ttp://www.stereosound.co.jp/hivi/hdaudio/high_end.html

他の分野では、カスタムICの中に取り込まれている物が多いから目立たないけど
デジカメの画像処理ICとか、ケータイやスマホ用のSoCにも入っている。
476774ワット発電中さん:2012/06/30(土) 02:00:08.11 ID:BE7nkhHh
>>475
なんでFPGAでやらないんだろうか。
価格と電力以外に壁でもあるんだろうか。
順序動作の制御(状態遷移)が、マイコン(DSP)のほうが楽なのかな?
477774ワット発電中さん:2012/06/30(土) 09:35:19.46 ID:+AyBg/UR
>>476
そういうアンプを作ったりする会社にハードウェア設計できる人がいないからじゃないのか。
478774ワット発電中さん:2012/06/30(土) 09:41:21.88 ID:75paBSPG
量産品では、価格や消費電力って非常に大きいファクターでしょ。
あと、単に積和演算器を固定で並べりゃOKってことじゃないからね。
ノイマン型のフレキシビリティというのは大きい要素よ。
479774ワット発電中さん:2012/07/01(日) 00:13:16.14 ID:e19yEbCQ
やりたいことがDSPで処理できるのであれば,わざわざFPGAを使う必要はないでしょう.
DSPやFPGAを使うこと自体が目的ではなく,要求されている処理を実現することが目的なのであって,
それが汎用のマイコンで実現できるのであれば,過剰スペックなハードウェアを採用する必要はないでしょう.

その点で,FPGAの余ったリソースでソフトマクロのマイコンを搭載する,というものがありますが,
実際どれくらい使われているものなのでしょうか?
FPGAのリソースが余るくらいなら,1ランクしたのFPGAを使い,
浮いた分で外付けのマイコンを追加したほうが
価格や開発工数の点で有利になるのではないでしょうか?
480774ワット発電中さん:2012/07/01(日) 00:36:06.76 ID:8DP4BHOD
>>479
基板面積と部品点数を考慮しなければ、その通りじゃないか?
481774ワット発電中さん:2012/07/01(日) 01:40:36.32 ID:JWvSOqNY
>>479
>浮いた分で外付けのマイコンを追加したほうが
費用的には、そうかもしれないけど、マイコンとFPGAの間は、何でつなぐの?
Data[15:0]
Adr[3:0]
Read, Write, nCS
としても、FPGAのI/Oを20本くらい消費してしまうので、FPGAのランクは下げられても
I/O数で大きなものにならないか?
482774ワット発電中さん:2012/07/01(日) 08:50:45.80 ID:AnKAjvI/
部品のほかに配線面積も結構なものになりやすい
483774ワット発電中さん:2012/07/01(日) 08:53:29.14 ID:xM6uW/0W
マイコンをFPGAに入れればいい
484774ワット発電中さん:2012/07/01(日) 08:55:53.70 ID:kzQ8JyJx
IPですねわかります
485774ワット発電中さん:2012/07/01(日) 15:24:41.73 ID:klTCjjlu
マイコンの方が圧倒的に値段安いじゃん
数百円のマイコンと何万円もするFPGA(ものによっては100万行く場合も)比べてどうすんの?
やろうとしてることが汎用的なことならマイコンやDSP使うのは当たり前だと思うけど?
486774ワット発電中さん:2012/07/01(日) 15:40:20.31 ID:V6+NAxd3
値段もそうだけど、電源設計がマイコンの方が圧倒的に楽だな
487774ワット発電中さん:2012/07/01(日) 15:46:46.13 ID:8+Dbqmw7
マイコンはオワコン
だがそれがいい
488774ワット発電中さん:2012/07/01(日) 16:05:33.23 ID:V6+NAxd3
>>487
はいはい。さいならw
489774ワット発電中さん:2012/07/01(日) 17:01:09.36 ID:8DP4BHOD
>>485
数百円のマイコンと比べるなら
Lattice/MachXO2 クラスだろ
490774ワット発電中さん:2012/07/01(日) 17:15:39.12 ID:uOwxjdcM
>>485
FPGAも数百円のものがあるよね。なんで数万円以上のものと比べる?

 ttp://jp.mouser.com/Search/Refine.aspx?Keyword=LCMXO2-1200ZE-1UWG25ITR

これなんか 400円台だが、8bit のマイコンぐらいは入るぞ。
491774ワット発電中さん:2012/07/01(日) 17:34:39.28 ID:bllWdcYu
もう大分前からFPGAにはマイコンを内蔵するのが普通で、マイコンのプログラムが十分
出来ないFPGA屋はいないからな。
GHzは厳しいが500MHz程度の動作マイコンならFPGAに楽に入れられるから
FPGA搭載するともうマイコンは要らないだな
492774ワット発電中さん:2012/07/01(日) 17:48:29.05 ID:bllWdcYu
>>491
知らないことを自慢げに語るのは止めようぜ…
493774ワット発電中さん:2012/07/01(日) 17:49:03.06 ID:bllWdcYu
あれ?IDかぶったw
494774ワット発電中さん:2012/07/01(日) 17:53:14.79 ID:V6+NAxd3
>GHzは厳しいが500MHz程度の動作マイコンならFPGAに楽に入れられる

それIPコアじゃねえだろw
ハードマイコンFPGAに入れてるんなら、マイコンいらねってのは矛盾だよね。
495774ワット発電中さん:2012/07/01(日) 17:55:19.63 ID:V6+NAxd3
FPGAにマイコンのソフトIPは”楽”には入らないよ。
本当に楽に入るなら、CPUエンベッデッドなFPGAなんていらないじゃんwww

どっちが優れているってわけでもないけど
秒単位の処理しか必要のない処理には、マイコンのソフト処理で充分なことは多いな。
逆にmsを切る処理になってくるとソフト処理では色々と制約が出てくるんで
FPGAに組んでハードロジック処理した方が簡単っていう感じの傾向が出てくるし
us単位だったらFPGAで組んだほうがちゃんと動作するのは確実になってくる。

結局、用途によって使い分けるってのが正解でしかない。
496774ワット発電中さん:2012/07/01(日) 17:56:01.74 ID:GwYPiPeZ
自演乙w
497774ワット発電中さん:2012/07/01(日) 18:01:02.07 ID:V6+NAxd3
間抜けなツッコミって、白けるよねw
498774ワット発電中さん:2012/07/01(日) 22:24:43.52 ID:JWvSOqNY
ms程度の処理でも、複数ch実装するとなると、マイコンにはつらい。
FPGAの世界では、16chなんて普通で、多いときは128ch, 256chの処理なんてのもある。
1ch作って性能OKなら、必要ch分copyすればOK。
これはマイコンには出来ない芸当だね。
499774ワット発電中さん:2012/07/01(日) 23:44:08.07 ID:Myg24Uwo
マイコンだって、パラで使えばいいっしよ?
500774ワット発電中さん:2012/07/02(月) 00:02:13.84 ID:w/74geK0
1x1mmぐらいのマイコンなんかは
パラにしてみたい誘惑がある。
501479です:2012/07/02(月) 00:12:47.41 ID:OgeAlblh
>>485
おお,今まさに使ってるFPGAです.
 ソフトマクロの8bitマイコンが搭載できるようなので,
 ランクを少し上げて容量の大きなデバイスにすれば使えるのではないかと検討したものの,
 メーカ代理店に聞いてみると,外付けのマイコンにしたほうが色んな意味で安上がりですとのことでした.
 
 このクラスのFPGAであれば,ソフトマクロのマイコンを搭載できるはするものの,
 実際のところ,外付けのマイコンでも同程度の処理は実現できると思います.

 でも,もっとハイエンドクラスのFPGAになってくると,
 ソフトマクロのマイコンであれば実現できるが,
 外付けのマイコンでは太刀打ちできない,
 というようなことがあるのでしょうか?
502774ワット発電中さん:2012/07/02(月) 00:25:37.55 ID:42KdDsQK
>>501
ハイエンドクラスのFPGAでは
ソフトマクロ >> 外マイコン
503774ワット発電中さん:2012/07/02(月) 00:26:48.65 ID:Cc48jdHq
>>501
>外付けのマイコンでは太刀打ちできない,というようなことがあるのでしょうか?
多くの部分はマイコンのほうが上。
FPGAにはできて、ほとんどのマイコンにできないことは、
・200MHzを越える超高速clock
・DSPハードマクロ、GBT、ユーザ作成のIPなど,超高速なペリフェラルとマイコン処理の混成
・マイコンでは廃品になると「エラいこっちゃ」となるが、FPGAなら影響なし。
・UARTなど、ペリフェラルの追加削除
504774ワット発電中さん:2012/07/02(月) 00:31:29.94 ID:rs6No30l
>>501
IPコア使った奴は分からんけど、
少なくともFPGA上に物理的に乗っかってるプロセッサは外部に接続されたものよりデータ転送においてはるかに高速だろうな。
505774ワット発電中さん:2012/07/02(月) 00:42:34.25 ID:w/74geK0
Virtex-4のはコア400MHzでバス200MHzだっけ?記憶遠いけど。
506774ワット発電中さん:2012/07/02(月) 01:12:37.80 ID:+YsPcSwf
それでも恐ろしい速度だ。
マイコンの外部バスには出来まい
507774ワット発電中さん:2012/07/02(月) 09:00:40.52 ID:d3TwNIWm
80286 あたりはマイコンだったのに、
86系は、いつからマイコンじゃなくなったのだろうか・・・
508774ワット発電中さん:2012/07/02(月) 09:33:08.98 ID:XvN79WvG
俺のやってる分野からしたら200MHzは中速って感覚なんだけど、超高速はGHz超えてからだろ
509774ワット発電中さん:2012/07/02(月) 10:22:38.55 ID:+YsPcSwf
そういう中で、TIなどのDSPは、何が嬉しいのかわからない。
Cで書けるのが嬉しのかな
510774ワット発電中さん:2012/07/02(月) 18:20:48.28 ID:9irxUx2h
>>508
200MHzが中速クロックで1G超で高速クロックって
どんなFPGA使ってるんだ?

>>509
浮動小数処理が簡単にできるから
でもFPGAでも浮動小数点処理を普通にするようになってきているからな
FPGAメーカーのおかげで低脳でも浮動小数点処理が出来るって良い時代
ま、C言語で書けるのは大きいがな。
DSPのアルゴリズムはC/C++やmでやっているのに
それをRTLに落とすの面倒過ぎるからな。お前らはDSPのアルゴリズムは何を
使って開発・検証やってるんだ? まさかHDLでってことないよな
511774ワット発電中さん:2012/07/02(月) 18:26:15.28 ID:lUjAGSZy
>>509
TI DSPのCコンパイラはあれはコンパイラ兼ライブラリだ。
速いアセンブラ記述いっぱい抱いててそれらをあてていく。
石のバグ情報も全部抱いていてNOPを山のように自動
挿入してくれるぞ。
512774ワット発電中さん:2012/07/02(月) 18:28:00.94 ID:asN2iOCf
パラレルで200MHzは高速かもしれないけど、シリアルで200MHzは高速とは言えないってことじゃ?
513774ワット発電中さん:2012/07/02(月) 20:10:13.83 ID:I7tL6800
>>511
なるほどぉ。
CCSのC記述から、DSPをどのように何回回すかを、
FPGAみたいに「推論」してくれるということですか?

ユーザーは、何も考えずに、ひたすらCを記述すればいいと。
514774ワット発電中さん:2012/07/02(月) 20:49:46.72 ID:gqAYkdxf
おまえは、何も考えずにCを書いてるのか・・・
515774ワット発電中さん:2012/07/02(月) 22:21:21.47 ID:I7tL6800
いえ、そういうわけではないです。
今日の食堂、ランチは何かなとか、残業パン早く来ないかなとか、
課長は何時に帰るのかなとか、考えてはいます。
516774ワット発電中さん:2012/07/02(月) 22:48:42.58 ID:bMmbFem3
>>515
C言語出来るって凄い
FPGA使っている奴でちゃんとC言語使える奴はあまりいない
517774ワット発電中さん:2012/07/02(月) 22:50:42.32 ID:E4BsVoH1
>>516
だよな
俺はランチの事を考えないからCはダメだ
518774ワット発電中さん:2012/07/02(月) 22:51:14.74 ID:bMmbFem3
>>515
そうだ、CでFIRフィルタってどう書いているか教えて
519774ワット発電中さん:2012/07/03(火) 00:04:39.11 ID:DhPkyUc0
>>517
>>515が言いたいのは
全く関係ないことを同時に並列思考出来る位なやつじゃないとC言語は無理ですよ
ってこと。人間マルチタスクって凄い奴。
俺なんかそんなこと出来ないから並列動作が普通のデジタル回路すら四苦八苦
C言語なんてとても無理
520774ワット発電中さん:2012/07/03(火) 11:34:09.87 ID:GGjuyntj
>>519
まあOSみたいな人生マルチタスクでいいんじゃなかろうかと
切り替えはお好みで
割り込みチャンネルは1つで勘弁
521774ワット発電中さん:2012/07/04(水) 20:50:31.34 ID:33U3FxNp
一時期C と VHDL と Verilog こなしていた時期があったけど、
今はVerilog のみだなぁ。VHDL はなんとか思い出せるけど、C は無理かも。
522774ワット発電中さん:2012/07/04(水) 22:03:42.08 ID:00JFIKA2
PCやマイコンのプログラムもHDLで書いたほうが効率が良いしな
523774ワット発電中さん:2012/07/04(水) 23:40:44.52 ID:N1mc7Xfp
Verilogで、
_(アンダーバー、アンダースコア)で始まる予約語って ありましたっけ?
524774ワット発電中さん:2012/07/04(水) 23:53:32.83 ID:tKchQAgo
そもそも_を使用する予約語が無い。
525774ワット発電中さん:2012/07/05(木) 01:31:09.68 ID:C7ymE2L1
>>522
CPUなんていらねーっていう話ですね分かります
526774ワット発電中さん:2012/07/08(日) 18:25:29.20 ID:WFGr5NOl
文字液晶の初期化なんか、めんどうだけど
527774ワット発電中さん:2012/07/12(木) 21:31:00.89 ID:Bmfn4CLf
シンセシス中に、ウトウトしてしまいました。
みなさん、眠くならないですか?
528774ワット発電中さん:2012/07/12(木) 22:16:39.82 ID:Bmfn4CLf

教えてください。

基板パターンの関係で、
HDLでbit順列を「ひねりたい」のですが、簡潔な記述は無いでしょうか?

↓Verilogで、8bitの入れ替えの例です。

assign DAT = { d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7] };
529774ワット発電中さん:2012/07/12(木) 22:24:37.40 ID:85C7pO8D
d[0:7]
530774ワット発電中さん:2012/07/12(木) 23:22:03.66 ID:Bmfn4CLf
>>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

ありがとうございました。
531774ワット発電中さん:2012/07/12(木) 23:32:25.52 ID:85C7pO8D
そうか、合成はDesignComplierしか使ったことないので。
532774ワット発電中さん: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文回せるから似たように出来るんじゃないかな。
533774ワット発電中さん:2012/07/13(金) 01:17:44.24 ID:6zQrYX89
>>532
なるほど

そこでverilog のgenerate genvarで
assign DAT = d[0:7]  // 8bit幅
を実現するにはどうしたら良いですか?
parameterを使って
任意のビット幅のbit順列を「ひねる」にはどうすれば良いですか
534774ワット発電中さん:2012/07/13(金) 02:38:22.29 ID:VET1WAJ4
>>533
お前、誰だ? >>530は僕です。
535774ワット発電中さん:2012/07/13(金) 05:49:13.15 ID:qy40XTCj
いいえ、>>530は私です。
536774ワット発電中さん:2012/07/13(金) 05:56:20.63 ID:LC7QjQQL
いいえ、彼はペンです。
537774ワット発電中さん:2012/07/13(金) 08:24:18.63 ID:pOKCzxpy
generate 使わないで普通にalways内かfunctionでいいだろ。
parameterは、localparamじゃなくてparameterなの?
538774ワット発電中さん:2012/07/13(金) 09:59:59.99 ID:bW2phW1z
別にローカルパラメーターでなくとも、
良く使うパラメーターでも いいんじゃない?
539774ワット発電中さん:2012/07/13(金) 12:22:04.74 ID:UEIKlzz7
第一なんでひねるの?リトルエンディアンをビックエンディアンとか?
540774ワット発電中さん:2012/07/13(金) 14:08:17.42 ID:DfawYStB
>>539
>第一なんでひねるの?
・基板パターンでクロスさせるスペースがない
・基板パターンでクロスさせるとインピーダンスが乱れる
・基板パターン間違えた
など、いろいろあるでしょうに。

>リトルエンディアンをビックエンディアンとか?
は?
bit入れ替えだと言ってるのに、エンディアンは関係ないでしょ。
541774ワット発電中さん:2012/07/13(金) 14:53:37.01 ID:rkavGUqI
本質的に配線上のbit順には意味は無い
542774ワット発電中さん:2012/07/13(金) 15:48:44.31 ID:C/wYVeeC
ピンをアサインしなおす、じゃなくて ひねるあたりが
やや謎
543774ワット発電中さん:2012/07/13(金) 16:05:37.78 ID:gMehDwNO
大方コネクタを逆にしちまったんだろw
544774ワット発電中さん:2012/07/13(金) 16:31:43.97 ID:yjrJfJK/
>>537
alwaysとfunctiondでお願いします
545774ワット発電中さん:2012/07/13(金) 17:56:59.45 ID:UEIKlzz7
うーん、基板パターンでとれなんだか・・・
もしかすると、教科書のシリパラしか使えなくてー
って思ってたもんで


ところでalwaysとfunctionで出来るの・・・?
genelateもわかるけど
ダサくてもいいから、階層化してゴリゴリ書くほうがいいんじゃまいかと思う

一応

genvar i;
generate for (i = 0; i < 8; i = i + 1) begin

assign DAT[i] = d[7-i]:

end endgenerate
546774ワット発電中さん:2012/07/13(金) 19:42:15.55 ID:bF/BLVpL
>>538
parameter は、上のモジュールから変更する必要があるときに使うんだよ。
547774ワット発電中さん:2012/07/14(土) 01:14:36.14 ID:bGT3MND5
基板で間違えたんならUCFのLOCでひねってもいいのでは。
548774ワット発電中さん:2012/07/14(土) 03:42:45.95 ID:mxhnm+KA
だよなぁ
基板が理由ならピンアサインし直すのが素直じゃないか
549774ワット発電中さん:2012/07/14(土) 08:39:20.97 ID:ZDbOBwo3
グラフィックで表示パターンを反転させるときにひねる
550774ワット発電中さん:2012/07/14(土) 09:00:05.87 ID:g7eMZ42q
ISEWebpackの一個前の13.4を入れたんだが
使えるデバイスが少ない気がする・・・

ザイリンクスのHP探しても使えるデバイス一覧とか無いんだが
どこかしらね?
551550:2012/07/14(土) 09:12:00.34 ID:g7eMZ42q
自己解決・・・リリースノートのPDFにありました。
でもなんか少ない・・・
552550:2012/07/14(土) 09:42:21.13 ID:g7eMZ42q
ほんっともうしわけないです。
design propertiesのEvaluationDevelopmentBoardのとこを
nonspecifiedにすれば全部出てきました・・・

しばらく頑張ってみます。
553774ワット発電中さん:2012/07/14(土) 11:10:53.84 ID:l1UGcQ8F
専用のパラレル出力ならucf書き換えでいいけど、
他と共用の場合はダメだし、シリアル通信のばあいもダメだ。













中出し
554774ワット発電中さん:2012/07/14(土) 16:45:42.87 ID:fYT++0Xj
今年もう半年過ぎたけど、Xilinx のVivadoっていつ出るんだ
555774ワット発電中さん:2012/07/14(土) 17:15:38.76 ID:A/eupWSD
>>554
一般相手にサポートが可能かも
しれない程度トライアルの実績
が溜まった頃じゃね
556774ワット発電中さん:2012/07/14(土) 18:17:24.41 ID:btybvEqi
教えてください。

FPGAに内蔵のFIRフィルタIPですが、
1bit入力→16bit入力って、できるのでしょうか?
「いや、入出力は8bit以上でないとダメだよ」とかでしょうか。

もしできるなら、DSD→PCMの変換ができるのでは?と思っています。
557774ワット発電中さん:2012/07/14(土) 19:08:46.03 ID:3g332kse
製品版はとっくに出てる。
Webpackはそろそろ出るはず。
558774ワット発電中さん:2012/07/14(土) 19:48:25.60 ID:OX4/9AAa
1bitを矩形波として扱えば大丈夫じゃない?
DSDのデータが1でH、0でLになるような任意のbit数をもつ矩形波に変換してやってみたら?
559774ワット発電中さん:2012/07/14(土) 20:27:46.13 ID:btybvEqi
>>558
ありがとうございます。
ISEダウンロードして、試してみます。
560774ワット発電中さん:2012/07/14(土) 21:30:27.94 ID:btybvEqi

質問連投で、すみません。教えてください。

Xilinx ISE14を使おうとしています。

PlanAheadというソフトで、ピン番号を設定しています。
PlanAhead画面の一番下のExcelみたいな表の、Siteという枠に「AA14」とか書いてゆきます。
複数個を続けて書き込むとき、1つ入力してリターンした後に、
下のセルに移動して次の入力待ちにならず、その下を入力するためには、
いちいちマウスでクリックしないといけません。

こんな感じです。
目的のセルをダブルクリック、ピン番号入力、エンター。
その下のセルをダブルクリック、ピン番号入力、エンター。
その下のセルをダブルクリック、ピン番号入力、エンター。

これを、
ピン番号入力、エンター。(自動的に、すぐ下のセルが入力状態になり)
ピン番号入力、エンター。(自動的に、すぐ下のセルが入力状態になり)
ピン番号入力、エンター。(自動的に、すぐ下のセルが入力状態になり)
という感じに入力出来ないでしょうか?

同様に、ピンの電圧も、デフォルト2.5Vなのですが、
いちいち全部、2.5Vから3.3vに変更するのは、とても面倒です。
Ctrlを押しながら複数選択して、一気に3.3Vにすできないのでしょうか?
初期設定で3.3Vがデフォルトにできないでしょうか。
561774ワット発電中さん:2012/07/14(土) 21:37:12.19 ID:1CNl0BLz
該当ソフトを使ってないのでわかりませんが、
キーやマウスの操作を自動化するソフトならいろいろありますので、
ソフトウェア板あたりで聞くのがよいかと
562774ワット発電中さん:2012/07/14(土) 23:23:53.04 ID:btybvEqi
>>561
>キーやマウスの操作を自動化するソフトならいろいろありますので、
ありがとうございます。
そういうのがあるんですね。勉強になりました。
ありがとうございます。
563774ワット発電中さん:2012/07/15(日) 01:33:52.44 ID:C9S99b+s
一旦UCFを書き出してしまい、自分が慣れてるテキストエディタで制約を直書きするのが一番早いと思う。
グループに対する制約もワイルドカードで一括指定可能だし。
564774ワット発電中さん:2012/07/15(日) 03:46:00.85 ID:jwCfkPIZ
そうそう、それが一番速いね。

Paceの時代は、LOC、SLOW、12などが1行で書けたのでとても便利だったけど、
Plan Aheadになったから、それぞれが分かれて3行になってしまった。なぜなんだ、よくわからない。

あと、Plan Aheadは、アプリ終了時にセーブするか聞いてくる。
Ctrl+Sってやるんだけど、セーブできないみたい。

Plan Aheadって、癖のあるソフトだ。(感覚がおかしいと思う)
565774ワット発電中さん:2012/07/15(日) 03:47:38.73 ID:mXEo04/O
>>556
お苗めっちゃ間抜けなこと考えてないか?
一般的なディジタルデバイスは閾値で動作してんの
566774ワット発電中さん:2012/07/16(月) 19:25:27.96 ID:f8ov1GFY
教えてください。

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は使いたくない。
567774ワット発電中さん:2012/07/16(月) 19:36:47.77 ID:sbSxesoP
caseでやるしかない。
それが書けたら定数コーデックにわざわざcase書かなくて良くてすげー楽なんだがな。
てか、それのどこにFFが使われるのか。
568774ワット発電中さん:2012/07/16(月) 20:05:22.94 ID:GrmjxLPv
HDLの場合、配列やら構造体やら、機能自体は揃ってたりするが
周りのツールがNGな場合が多いよな
書けてシミュレーションもできるけど、合成は無理ですとか
569774ワット発電中さん:2012/07/16(月) 21:12:23.11 ID:8e3r8mii
parameter [7:0] hoge [0:4] = { 8'h01, 8'h23, 8'h45, 8'h67, 8'h89 };
何がエラーなんだこれ?
570774ワット発電中さん:2012/07/16(月) 23:15:53.30 ID:QRGAxKfb
シミュレーションは通りそうだけど、合成通るかは怪しいですね
571774ワット発電中さん:2012/07/17(火) 00:39:11.99 ID:VSktOCXr
まず配列は拒絶されるよな
572774ワット発電中さん:2012/07/17(火) 08:35:03.12 ID:X8i0FCfT
>>569
連接の使い方。
配列との区別がついてないだろ?
573774ワット発電中さん:2012/07/17(火) 10:51:59.94 ID:YP+i8K0j
>>569
>何がエラーなんだこれ?
左辺がVerilog
右辺がC
ごちゃ混ぜ表記
574774ワット発電中さん:2012/07/17(火) 18:26:58.97 ID:XHbGWQwZ
ハードウェア記述言語はプログラミング言語じゃねーんだ、
ってここしばらくは繰り返すしかなさそうだな。
575774ワット発電中さん:2012/07/17(火) 19:55:58.52 ID:YP+i8K0j
だけど、ハードウェア記述言語とは言え、
ソフトウェアなんだよね。

PC画面上でソースを修正、コンパイルしてフラッシュに書き込む。
SpartanもH8も、作業は同じ。よって、ソフトウェア。
576774ワット発電中さん:2012/07/17(火) 21:32:31.27 ID:WRVp448j
言語は言語。ソフトでもハードでもない。
どっちなのか議論することに意義が感じられない。
どういった言語仕様なのか、どういった意図で記述されたかが重要。

あと、動作するデバイスはFPGAであろうとASICであろうと
中間的な存在なので扱う人の立場によってソフトかハードかは変化する。
FPGA過去スレにも同じこと書いた気がするが。
577774ワット発電中さん:2012/07/18(水) 04:00:23.43 ID:kl1HuCOu
>>576
激しく納得です。私もそう思います。

ただ、
半田付けもできない、オシロも操作できない、テスターも持っていない。
だけどPCとチップスコープでHDL書いてデバッグ?して、
bitファイルをメールで送って納品終わり。

それなのに「ハードウェア技術者だ」と、おっしゃる人が許せないのです。
578774ワット発電中さん:2012/07/18(水) 05:11:18.90 ID:Z1SHZMqn
許せないとかww
何様のつもりだ?
579774ワット発電中さん:2012/07/18(水) 10:34:28.71 ID:ge9CWaix
これって、自分のやってる仕事のレベルが低いから、ハードのこと
よくわかってないと思ってる奴に、仕事取られかもって焦ってるだけ。

新人とか、自分の実力を読めてない奴にありがちだよね。
580774ワット発電中さん:2012/07/18(水) 13:09:22.62 ID:dW3JWhob
>>577
イワンとしていることもわかるが
納品のレベルが低いと感じるのは、お願いの仕方のレベルが低いのよ
オシロやテスターを使わないといけない(のか知らんが)ような、
そういうスペックを記述すればよろし。

相手が自分自身をどういっても勝手だけどね。

お客が言語気にするの?
する場合は、ソースも納品に入っているだろうし
Lintかけてね、カバレッジ100%よな?、とか
581774ワット発電中さん:2012/07/18(水) 13:11:21.17 ID:UJVp98tt
>>577
それはHDL屋。実際そんな奴がほとんど
ハード屋ならデジタル回路以外でもアナログ、高周波等もそれなりに理解できないと駄目だな
当然、今はソフトのプログラミングはハード屋でもある程度出来ないのだめだな
でも、技術者は結局アプリケーションの専門分野、およびその周辺の技術・知識がどれだけあるかだな
俺ハードウェア技術者って威張ってもアプリケーションの技術・知識がないと素人と同じ
582774ワット発電中さん:2012/07/18(水) 18:07:49.19 ID:xMI0l5Tc
バリバリHDL書きたいのに害虫管理とかつまらなすぎ。
583774ワット発電中さん:2012/07/18(水) 21:44:36.35 ID:dW3JWhob
このスレは>>582に欲しいソフトIPを作ってもらうスレになりました。
584774ワット発電中さん:2012/07/18(水) 21:49:15.07 ID:QvCUavXu
V30 ただし Z80 エミュレーションで
585774ワット発電中さん:2012/07/18(水) 21:56:39.90 ID:Jzmz7q1Y
で、N88BASIC動かすと。
586774ワット発電中さん:2012/07/18(水) 21:57:04.78 ID:Z1SHZMqn
自分で作れよ、無能共
587774ワット発電中さん:2012/07/19(木) 08:39:25.86 ID:MIrV4aio
おう!
2000万円くらいで請け負うぜ!
588584:2012/07/19(木) 08:47:52.09 ID:hBbk9V0K
ちゃんと98に刺さるようにしてくださいね
589774ワット発電中さん:2012/07/19(木) 09:07:19.21 ID:OCA4pYqu
納期は1週間な
これだけあれば十分だろ
590774ワット発電中さん:2012/07/19(木) 14:48:00.73 ID:Rzykj7D/
>>581
そうか?
普通のHDL使いは、基板作って納品してないか?
HDLの送信だけで検収があがるなら、ここにいる
ゴミとは比較にならない、相当の達人だろう。
591774ワット発電中さん:2012/07/20(金) 09:34:10.84 ID:exMiqKX6
じゃあ、酉膿みたいな人もゴミじゃん。
そんな言い方ないんじゃない?
592774ワット発電中さん:2012/07/20(金) 10:06:38.25 ID:LrsHdL1d
「HDL だけ書くのは達人だ」って言ってるんだろ?
593774ワット発電中さん:2012/07/20(金) 10:24:37.37 ID:KVynbnRo
最近はハードウェア設計もIT土方と近いもんがあって
親→子は基板からんからしてるかもしれんが
子→孫はHDLだけお願いしているビジネスモデルもあるだろうね。

一概に土方がレベルが低いだの言われる風合があるが
彼らが土台を作ってくれているのも事実で
>>591の意図に同意
594774ワット発電中さん:2012/07/20(金) 10:53:22.08 ID:wPcxVakP
なるほど。このスレの住人にSoC作ってる人がいないことがわかった。
595774ワット発電中さん:2012/07/20(金) 13:55:12.41 ID:KVynbnRo
DRCやLVSもさることながら、STAも大変よねー
596774ワット発電中さん:2012/07/20(金) 14:25:31.69 ID:LrsHdL1d
カバレッジ100%とか無理だから。

ホント、無理だって・・・
597774ワット発電中さん:2012/07/20(金) 14:40:55.16 ID:Jaq6786r
>>593
それは、子のハード屋が知恵遅れなだけだろ。
回路引くなら、HDLも自分で書く、できないなら孫に丸投げした方が効率いい。
HDL送信でokな客は、やっぱICメーカとかじゃないか。
598774ワット発電中さん:2012/07/20(金) 18:08:10.21 ID:+Rh9brec
>>593
日本の電子産業を支えているのは底辺ドカタ
元:仕様作成
1次:基板を含む回路設計を回路専門、基板専門の2次に投げる
2次:実際の回路設計、基板設計する(底辺ドカタ)
599774ワット発電中さん:2012/07/21(土) 08:43:07.99 ID:T5PQm8sd
電機関連株が軒並み・・・
やっべー
600774ワット発電中さん:2012/07/21(土) 15:18:06.31 ID:Wawd4yn9
>>557
亀レスだがVivado自体は組み込まれてるけど
ライセンスはEarly Accessじゃなかったけ
普通に代理店からライセンス貰えた?
601774ワット発電中さん:2012/07/21(土) 15:19:28.27 ID:2BawLPlZ
今日も出勤、日本の未来を支える底辺の働き者です。
質問したいです。(初級レベルです)

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回出てきて、後日見たときにわかりにくいですよね。

何か、うまい書き方はありますでしょうか?
602774ワット発電中さん:2012/07/21(土) 17:46:22.57 ID:Xob0bepu
ソフトちっくで気持ち悪い。
何がしたいか知らんけど、こんなんじゃあかんの?

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
603774ワット発電中さん:2012/07/21(土) 18:05:12.71 ID:4NSBJFP5
>>601
どこでaを加算するかによるよ。
alway文の中のif文内で処理をするなら 0〜255までの256回できる。
604774ワット発電中さん:2012/07/21(土) 18:07:19.58 ID:4NSBJFP5
すまん257回目に次の処理に飛びたいって事だね。それは無理。
というか素直に9ビット取ったほうがラク。
605774ワット発電中さん:2012/07/21(土) 18:28:58.03 ID:YMyFl41N
加算は必ずキャリーがつくから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も出ないのでは
606774ワット発電中さん:2012/07/21(土) 18:48:04.91 ID:4NSBJFP5
FPGAでもないかぎり、コスト的にFF1個<8ビット加算器 ですけどね。
607774ワット発電中さん:2012/07/21(土) 19:29:56.51 ID:oIX0h5Jd
>すると、この比較のためだけに、D-FFのa[8]が発生し、
>「a_8使ってないよね、ね、ね」とツールのWarningは出るし、
>D-FFが1つもったいない気がします。
>最適化でD-FFは8個にしてくれるかもしれませんが、Warningが出てしまい残念です。

カウンターは256まで行くんだから、a[8]も使うだろ?
608774ワット発電中さん:2012/07/22(日) 02:51:26.50 ID:7xoAG7SD
>>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

609774ワット発電中さん:2012/07/22(日) 18:22:22.72 ID:Qk+T4M2d
うーん、いまひとつ理解しきれんが・・・

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は分けようね
610774ワット発電中さん:2012/07/22(日) 18:29:08.79 ID:ag9UOtsY
何言ってるんだお前。日本語でかまわないから。
少なくとも |aではなく、&a だろうが
611602:2012/07/22(日) 20:22:57.65 ID:JAk1Gsad
>>608
==は確かに間違いだけど、何したいのか銅動かしたいのか
全く仕様が見えないんよ。

処理Aはフリーランでずっと動かし続けたいんじゃないの?
後半だとelseの中にも「処理A」が出てくるし…

それと、if文で全てのステート組む気?
caseでステート組むのを覚えると、あなたの言う
「うまい書き方」に近いことが出来るんでないの?
分からんけど。 ←無責任
612774ワット発電中さん:2012/07/23(月) 10:10:27.51 ID:wycZaB78
記述ミスのバグは可愛いもんだが
仕様ミスのバグは・・ガクブル

なんかステートとか書いてあるし
それならと、状態遷移図を書いてくれ
書ければね
書いてるうちに自己解決できればばんばんざい
613774ワット発電中さん:2012/07/23(月) 10:30:32.48 ID:CPianJ/P
仕様が途中で変わるのはしょうがない
614774ワット発電中さん:2012/07/23(月) 11:21:57.72 ID:xeLBE4Jd
特定の人だと思うけど「ソフトちっくで気持ち悪い。 」と言う人がいます。
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

「ソフトちっくで気持ち悪い。 」と言う人は、
「俺はソフト設計者じゃなくて、ハード設計者なんだ」というプライドで
一線引きたいだけのような気がします。
615774ワット発電中さん:2012/07/23(月) 19:54:33.95 ID:wycZaB78
やべぇ、元気があれば全部答えるからまってて・・・
元気が無いので>>614への回答は>>594といった感じ
616602:2012/07/23(月) 20:50:01.96 ID:+ZQ0h41E
愚痴だけど、インプリした結果も考えて記述して欲しいんだよな。
完璧に予測するんじゃなくブロック図的にでいいからさ。
ソフト屋さんが組んだHDLとか、回路屋さんが組んだHDLとか
タイミング制約マッチしてなかったり規模が大きすぎて追加回路が
デバイスに入らなかったり、後始末大変なんだもん。

>>615
基礎から答えるのって、すげぇ体力使うよね…
あたしゃ気力無くなったのでここで退散。
617774ワット発電中さん:2012/07/23(月) 22:08:12.50 ID:nPW/KXms
>>614
あまりにも回路イメージからかけ離れた書き方をされると後工程で困る
SoCだとその後、合成→Gate Sim→STA→レイアウト→場合によってはECO
と言うように、工程が進むわけだが,、その際に最初に回路イメージが無いと、
合成されたネットリストを読みとくのも大変になる
最初からこういう回路になるんだぜって言う形で書いといたほうがいい
熟練者ほど後のことを考えて書くから、ソフトチックに書かれるのを嫌う人は多い
618774ワット発電中さん:2012/07/23(月) 22:32:23.39 ID:5L7mc9Gq
>>615-616
お前らなら、>>614をどう記述する
619774ワット発電中さん:2012/07/23(月) 22:33:49.40 ID:5L7mc9Gq
間違えた
>>615-617
お前らなら、>>614をどう記述する
620774ワット発電中さん:2012/07/23(月) 23:26:35.08 ID:i8rHDB5N
>>614
例示の規模くらいなら、まあ、許されるのではないかと思う。
先輩方からは怒鳴られる可能性あるけど。

ソフトチックっていう表現の意味は、いくつか可能性があると思う。

・設計もせずにコードをいきなり書いたようにみえるHDLコードのこと
コーディングしてから叩いてデバグすりゃいーじゃん、という思想がダメ。
中身はブラックボックスではなく、使ったレジスタ全部それぞれ、意図通りに動かしてください。

・順次処理(1スレッド動作)を前提としているように見えるHDLコードのこと
alwaysを1つずつ分けていれば、それぞれ並列に処理しているという意図は明示できる
そもそも、最近のソフトでマルチスレッド・マルチプロセスが当たり前だから、ソフトチックってのは的外れではあるが。

具体的に指摘すると、例えば else-ifのネスト。
プライオリティ付ける意味はあるの?
っていうか意味があるから case じゃなくて else-if にしたんだよね。

動作が追いやすい(かもしれない)というメリットよりも、
回路規模が大きくなる、タイミングが厳しくなる、検証しにくくなる、消費電力が増えるというデメリットがクリティカル。
コンパイラ様と、後工程様が気持ちよく作業してもらうえるようなHDLを書くのが幸せになる第一歩。
621774ワット発電中さん:2012/07/23(月) 23:52:19.40 ID:Ma5MhEv6
最強のバカ>>620きたでコレ。
622774ワット発電中さん:2012/07/23(月) 23:56:21.52 ID:zJItXkga
バカ>>621には理解できなかったかw
623774ワット発電中さん:2012/07/24(火) 00:18:24.45 ID:D4Dbw04F
>>620
プライオリティつけない場合はcaseにするんですか?
ところでcaseにはプライオリティないんですか?
624774ワット発電中さん:2012/07/24(火) 00:21:48.11 ID:xIYOTjXC
>>623
caseでも可能。
でも、プライオリティ評価の仕方を具体的に書く必要がある。
625774ワット発電中さん:2012/07/24(火) 01:44:36.42 ID:e6tmNAzT
>>620の考えってASICやってる人間なら常識
if-elseはプライオリティ回路になるから、同じ動作をするcase文より回路が大きくなる
ちょっとでも削ろうって思ったら、記述の仕方をよく考えて書く
DCに任せっきりでも同じ動作のものになるけど、特に後工程のSTA辺りで泣く羽目になるよ
626774ワット発電中さん:2012/07/24(火) 01:58:53.32 ID:hfA3vvnJ
>>624
どうもです
caseでもプライオリティありますよね
プライオリティつけない場合は並列だよってparallel_caseつけないと駄目ですよね
parallel_case、full_caseつけないでcaseで回路小さくなったって喜んでいる人多いんですかね
627774ワット発電中さん:2012/07/24(火) 02:09:26.92 ID:P/JsIgSa
>>626
caseは書いた通りに組み合わせ回路が作られるだけ。
書いた内容がプライオリティならそうなるし、違えばそうならない
parallelとか関係ない
628774ワット発電中さん:2012/07/24(火) 02:15:59.94 ID:e6tmNAzT
parallel_caseとか使ったことないわ
静的チェックツールがちゃんと、「旦那、defaultがありませんぜ」って言ってくれるから
プライオリティを回避してくれるからな
629774ワット発電中さん:2012/07/24(火) 03:42:10.03 ID:+76GWbgd
それより、reg毎にalways()を作るのはなぜ?
どんなメリットがあるの?
630774ワット発電中さん:2012/07/24(火) 06:14:37.35 ID:z1idD+dN
>>629
メリットないと思うが
631774ワット発電中さん:2012/07/24(火) 08:20:02.07 ID:xIYOTjXC
>>626
case文で評価する内容にドントケアを使うのが一般的かな?

0???
10??
110?
1110

解りやすいでしょ?
632774ワット発電中さん:2012/07/24(火) 09:18:24.73 ID:tUsG3+KE
>>627
おいおい、おまえ、dc 使ったことないの?
633774ワット発電中さん:2012/07/24(火) 10:30:23.63 ID:+r9V4Noe
もういいや、ずれててもしらねー

>>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);
634774ワット発電中さん:2012/07/24(火) 10:34:09.36 ID:+r9V4Noe
&が抜けとる・・・

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);
635774ワット発電中さん:2012/07/24(火) 10:34:14.05 ID:5BRNfJLk

>>630
だったら「ソフトちっく」とか言うのは気にしなくていいのね?

そう書かないと、シンセシス後の結果が、ゴロッと変わるのかと思っていた。
636774ワット発電中さん:2012/07/24(火) 10:43:39.30 ID:+r9V4Noe
>>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なら死亡

まー、上のソースなんてファンクションテストもしてないけどねー
637774ワット発電中さん:2012/07/24(火) 13:20:08.86 ID:tkKT/GWl
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で締めてもいいですよね?

プログラマーが考える上で考えやすいとか、間違いが防げるとか、ですか?
638774ワット発電中さん:2012/07/24(火) 16:44:54.78 ID:+r9V4Noe
実際のところelseがない場合は「保持」になるので
「保持」を期待するのであれば必要無いです。

もしかすると、elseで「常に0」になって欲しいと思っていれば
コンパイラはそれで最適化してくれます
(caseのdefaultの意味合いも)。

ただ、ホントのところは、過去にcoveredというカバレッジツールの
ラインカバレッジでelseを拾ってくれなかったので入れてます。
訳立てるには難しいツールでした、かれこれ数年使ってみてないです。


ほかにelseの必要性はなんかあるっけ
639774ワット発電中さん:2012/07/24(火) 17:27:22.23 ID:zPMBr7Go
カバレッジも、利用する分にはいいけど、
義務になるといやだよな。
カバレッジのためのコード書きとかアホらしい。

>>596
640774ワット発電中さん:2012/07/25(水) 01:06:14.49 ID:bUp9uZ09
else付けないと静的チェックで文句言われるから書いといて損は無い
641774ワット発電中さん:2012/07/25(水) 09:53:30.82 ID:dUN32IPi
>>640
それは、
エルス
end
のように、中身はなしでも良いということでしょうか?
それとも
エルス
y<=y
end
と中身ありのことでしょうか?
642774ワット発電中さん:2012/07/25(水) 09:56:34.85 ID:cjMh4t2m
俺は、できるだけelse使わないように書いてるな
643774ワット発電中さん:2012/07/25(水) 14:54:55.20 ID:PStuMLHp
y<= y_clr_flg ? 3'd0 : y_count_flg ? y + 3'd1 : y;
644774ワット発電中さん:2012/07/25(水) 15:50:10.66 ID:W3o8Jm5Z
>>643
それ使ったことないなw

そういえば昔、日本の合成ツールで
if文の最後は必ずelse .. endで書かないと
いけないやつがあったような
645774ワット発電中さん:2012/07/25(水) 17:30:21.58 ID:f/aT1Qbd
条件演算子はassign文中で、且つ、マルチプレクサとしてだけ使ってくれ・・・
見難くてかなわない。

assign Y = S0? A : B ; //1ならA

しかも、片側が固定値とかなら、すぐ論理圧縮しちゃう。
646774ワット発電中さん:2012/07/26(木) 00:29:28.81 ID:cCsyO77E
ん?always文の中で三項演算子使うの一発だけなら別にいいと思うけどね。
重ねて使うのはassign文だけにして欲しいけど。
647774ワット発電中さん:2012/07/26(木) 09:09:36.16 ID:pxXMWwuN
>>645
always の中でも論理圧縮はかかるだろ。
どんなショボいツールだよ?
648774ワット発電中さん:2012/07/26(木) 09:27:11.86 ID:gxsd2AfF
論理圧縮されるんだから、ifと?を混ぜるなってことだろ
ifならifだけで書いてくれた方が人間にはわかりやすい
649774ワット発電中さん:2012/07/26(木) 09:30:18.46 ID:PpYbugGJ
if と ? : は意味が違うんだから、全てを必ずどちらかに寄せる、というのは無理。
650774ワット発電中さん:2012/07/26(木) 10:23:26.05 ID:BWbH7QWZ
>>648
個人的には三項演算子のほうが分かりやすいんだが・・・
人それぞれじゃね?

「人間には」とか一般化すんなよ
651774ワット発電中さん:2012/07/26(木) 10:26:36.10 ID:E+J9hgRg
wireでifは使えないでしょうか?

? :は、多段に書いてはいけないと言う人がいますが、
なぜでしょうか?
652774ワット発電中さん:2012/07/26(木) 10:53:08.34 ID:CH7OAYSy
>>651
wireでif文は使えないかと。
fuctionにしてしまえば良いけど。

多段に書くと、さすがに解釈しにくくなるし
結果として後からの手直しとかでミスが入りやすくなるよ。
653774ワット発電中さん:2012/07/26(木) 11:37:56.48 ID:l8CNjCMZ
Starc(だっけ)の設計スタイルガイドには
多段にすると優先順位が論理合成ツールによって解釈が異なる、とか書いてあったような

ところで>>649
function含め、ifで書けて?:で書けない構造
もしくは?:で書けてifで書けない構造ってあんの?
654774ワット発電中さん:2012/07/26(木) 13:15:57.96 ID:BWbH7QWZ
>多段にすると優先順位が論理合成ツールによって解釈が異なる

そんなのあったっけ?(三項演算子の話だよね)
分かりにくいから多段にするな、じゃなかったかな?

assign d= a ? b : c;
は、if 分じゃ書けないよね。わざわざ always にする?
655774ワット発電中さん:2012/07/26(木) 14:48:54.19 ID:l8CNjCMZ
じゃあifと?:は表現として同じことをするということで・・・

設計スタイルガイド探して来ないと
もし持ってないなら買っても損無いと思うよ。
656774ワット発電中さん:2012/07/26(木) 16:56:42.74 ID:BWbH7QWZ
>>655
探してきたぜ。

条件演算(?)のネストは1回までにする(推奨3)
(?)は、最大でも10回までにする(必須)
「条件演算をネストして使用することは出来ますが、
記述の可読性が低下し間違いやすくなるため、
条件演算は1回までにしましょう」

個人的には、STARC 守れとか言わないけどね。

>じゃあifと?:は表現として同じことをするということで・・・
x とか z との比較は出来ないとか言いたいの?
657774ワット発電中さん:2012/07/26(木) 19:30:49.22 ID:l8CNjCMZ
あれ、それ2.1.5?
10回とか書いてないな。バージョンが違うのかな

>x とか z との比較は出来ないとか言いたいの?
それはテストベンチでやってくれよ。
xの時にリセットがかかる回路あったら嬉しすぎるが
658774ワット発電中さん:2012/07/26(木) 19:34:49.69 ID:rpQ/fA7f

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()の中でしたら、なんとかなるのですが。
659774ワット発電中さん: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
660774ワット発電中さん:2012/07/26(木) 20:57:42.92 ID:pxXMWwuN
>>657
もう家だから確認できないけど、かなり古いバージョン。
新しいのは、10回の制限はないの?

「ごめんなさい、10回ってのは撤回します」って謝れよ、STARC。
661774ワット発電中さん:2012/07/26(木) 22:05:08.83 ID:a7lGLCUZ
>>658
Arrayが駄目って、それISE14のバグだな。
Xilinxにこらーって連絡する
662774ワット発電中さん:2012/07/26(木) 23:41:19.25 ID:bKExgIvK
>>660
時代に取り残されないように、毎年新しいガイドブックの購入をオススメいたします。 by STARC
663774ワット発電中さん:2012/07/27(金) 03:29:42.50 ID:xYvZ0y6c
>>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]と書いてはダメなんでしょうか。
664774ワット発電中さん:2012/07/27(金) 09:20:14.96 ID:hqgnOS5d
>>662
時刻表かよw
665774ワット発電中さん:2012/07/27(金) 09:20:51.90 ID:LofOQmcv
>>662
10年以上前の合成ツールの制約を引きずってるSTARCに言われたくないなw
666774ワット発電中さん:2012/07/27(金) 18:34:05.06 ID:Ebr4+cZJ
今日、STARCの最新版を注文しました。
667774ワット発電中さん:2012/07/27(金) 19:37:40.11 ID:MCv5NuNX
ついに STARC も身売りか・・・
668774ワット発電中さん:2012/07/27(金) 19:42:37.36 ID:anUhByxj
>>663
気になるなら SystemVerilog や Verilog2005 での対応状況を調べてみては。
もっとも言語仕様で対応していても、肝心のツールが対応してないと絵に描いた餅状態ですが。
669774ワット発電中さん:2012/07/27(金) 19:43:36.00 ID:M4F8vzN6
>wire [7:0] 7seg [0:3] と、0〜3の4個を定義しますが、
>[0:3]でなくて[1:3]ではダメなんでしょうか?
>また、[0:3]のように昇順で書くのはなぜなんでしょうか?
>[3:0]と書いてはダメなんでしょうか。

ダメじゃない、知らん、ダメじゃない。
670774ワット発電中さん:2012/07/28(土) 12:06:14.54 ID:Q8gYmD7L
ボーっと見てて思ったけど
その7セグはダイナミック点灯方式じゃないの?
信号線だけ食ってMOTTAINAI
671774ワット発電中さん:2012/07/28(土) 12:07:32.71 ID:AAJPGaX4
本を参考にして以下のプログラムを書いたのですが、
CLKにclockが出てきません。

always @ ( posedge clock ) begin
  if( RESET )begin
  end else begin
    CLK <= clock;
  end
end

なぜでしょうか
672774ワット発電中さん:2012/07/28(土) 12:13:48.03 ID:2KcemcEB
記述通りに動いてるからじゃね?
673774ワット発電中さん:2012/07/28(土) 12:18:35.37 ID:Q8gYmD7L
>>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が反転するわけだ。
初期値無いけど実機上は問題ない。


後は、その本を教えてくれ
674774ワット発電中さん:2012/07/28(土) 13:00:33.00 ID:H/WMi4Hg
こういう記述見ると、回路図設計から
勉強し直して欲しくなる。
675774ワット発電中さん:2012/07/28(土) 14:19:55.00 ID:AAJPGaX4
>>673
ありがとうございます。

>always文はすべて削除して
>assign CLK = clock;
>の一文でいい。
そうですよね。そう思ってやったのですが、
エラーが出てコンパイルできないんです。

あと、RTLって何でしょうか? Resistor Transfer Languageだと調べました。
しかし、他にもRTL、VHDL、HDL、PLL、最後にLがつく言葉が多くてわかりません。
マイコンでは、こんなに面倒ではなかったんですが。
676774ワット発電中さん:2012/07/28(土) 14:46:12.66 ID:uWJRAp0N
プロポーズ大作戦のあの電飾テーブル
FPGAはおろかCPUも普及してない時代にロジック部分はどーやって作ったのかな?
677774ワット発電中さん:2012/07/28(土) 14:59:14.70 ID:wQAl/iIB
中の人がスイッチを押してるに決まってるだろ
678774ワット発電中さん:2012/07/28(土) 15:03:20.20 ID:2KcemcEB
そういや大昔初ラかラ製に電飾テーブルの作成記事が載ってたような覚えが
679774ワット発電中さん:2012/07/28(土) 17:19:26.15 ID:MGRh42Dx
レジスタ転送レベル(Register Transfer Level)- 論理回路をハードウェア記述言語で記述する際の手法

Register Transfer Language - GNUコンパイラコレクションの使用する中間言語
->初めて知った
680774ワット発電中さん:2012/07/28(土) 18:42:13.48 ID:lPWcRC4W
合成を含めて理解してくると、RTLの言葉の意味がわかってくるんだけどね
HDLをソフト的にしか理解してない人だとわからないだろうな
つまり、レジスタってのはFFだから回路の中核をなす、ソフトでいうと変数に当たる部分
合成しても残る。つまり抽象化した記述ができない
組み合わせ回路(wire)の部分はただの一時変数に過ぎなくて抽象化した記述(ソフト的な)
ができて、合成後にまったく予期しない等価な回路に圧縮される。
つまり、中核であるRとRの間を、ソフト的に記述することができる記述方法のレベル
それが Register Transfer Level ってわけだ
681774ワット発電中さん:2012/07/28(土) 18:51:56.57 ID:AAJPGaX4
>>680
ありがとうございます。

>つまり、中核であるRとRの間を、ソフト的に記述することができる記述方法のレベル
ということは、ソフト的に記述できないレベルもあるということでしょうか?

また、Verilogでは、assignのみで書けばFF使わずに書くことも出来るので、
HDLというくくりの中に、RTL、Verilog、VHDLの3つがある、という理解で良いでしょうか?
682774ワット発電中さん:2012/07/28(土) 19:08:48.92 ID:H/WMi4Hg
HDL(ハードウェア記述言語)というくくりの中に含まれるのはVerilogHDL言語とVHDL言語。
過去にはABEL言語とかあったけど今のところ生き残ってるのは上記の2つの言語。

RTLは記述する手法のひとつ。
上位レベルの記述手法になるにしたがってソフト的な記述になる。
ttp://members3.jcom.home.ne.jp/zakii/hdl/18_behav_struct.htm
683774ワット発電中さん:2012/07/28(土) 21:33:57.86 ID:hQ1mP0Uz
なんとかL言語って呼ぶのは、なんとかシンドローム症候群だな。
684774ワット発電中さん:2012/07/28(土) 21:39:38.70 ID:FTzbCtvQ
チタンダL言語
685774ワット発電中さん:2012/07/28(土) 21:42:26.99 ID:lPWcRC4W
>>681
>また、Verilogでは、assignのみで書けばFF使わずに書くことも出来るので、

これはあり得ないだろ
書いた回路のすべての動作が1クロックで終了するってことだぞ
686774ワット発電中さん:2012/07/29(日) 01:32:30.58 ID:P5R1OXNT
>>682
ありがとうございます。
HDL = { Verilog, VHDL, ABEL };

?? = { RTL, HDL }; という感じでしょうか?

>>685
RTLは、レジスター...なのでD-FFを使って書かないといかんですが、
Verilogなら、必ずしもD-FFを使わなくても書ける、という意味です。

RTLとHDLの区別は、誰に聞いても「よくわからない」と言います。
687774ワット発電中さん:2012/07/29(日) 01:53:52.55 ID:0u3Zj5Oq
>>686
RTLって”書き方”のことかと思われ。
688774ワット発電中さん:2012/07/29(日) 01:55:05.29 ID:TAzT3bSY
>>686
682氏の提示したURLを見れば貴方の疑問は解決すると思うんだけどな。

HDL=ハードウェアを記述する言語
RTL=HDL記述の抽象度のひとつ

貴方風に書くならば
HDL記述の抽象度 = {ビヘイビア・レベル, RTL, ゲート・レベル, スイッチ・レベル}
689774ワット発電中さん: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を使って書けば良い

どうでしょうか
690774ワット発電中さん:2012/07/29(日) 05:08:15.76 ID:yyNFuHm2
あってるよ。
理解してない人もいるので、
周囲の人にも教えといたほうがいい。
691774ワット発電中さん:2012/07/29(日) 07:55:52.38 ID:c3Uh7DSW
>>690
おいおい、初心者に嘘教えるなよ。

>>689
Pを宣言しないで動くとは思わないが→例1
692774ワット発電中さん:2012/07/29(日) 10:07:31.37 ID:fd+Qcs8j
まあ、宣言は忘れていたとして置いといて、
上下の回路はまったく同じでまったく同じ動作をする
ちょうどソフトのプログラミングで、1回別の変数に入れたりするのと一緒
693774ワット発電中さん:2012/07/29(日) 10:17:43.43 ID:fd+Qcs8j
スイッチレベル → トランジスタそのものを書く
ゲートレベル → レジスタも組み合わせ回路も全部書く
レジスタトランスファーレベル → レジスタは書く、組み合わせ回路は書かない
ビヘイビアレベル → レジスタも組み合わせ回路も書かない、動作を書く
694774ワット発電中さん:2012/07/29(日) 10:27:29.54 ID:D4QEBP6S
書く、書かないじゃ分からないだろw
本当、難しい概念だと思うよ
695774ワット発電中さん:2012/07/29(日) 10:39:03.94 ID:kTC/oRfy
>>689
今の合成ツールだと両方とも同じ回路になるんじゃないかな?
696774ワット発電中さん:2012/07/29(日) 10:42:47.50 ID:w4kBs7vS
まあわかる人にはわかる書き方だな<書く・書かない
697774ワット発電中さん:2012/07/29(日) 12:58:09.22 ID:P5R1OXNT
>>690-692
ありがとうございます。
だいたい合っていて安心しました。
Pの宣言は書き忘れていました。すみません。

まだ慣れていないので、書き方の区分けとして、
次のようにイメージしています。
・値を記憶したいとき=clockで動作させる=always @ (posedge clock)を使う
・always @ ()の中は、<=を使う。
・値を記憶しないもの=即座に答を出す回路=assign を使う
・assignには、=を使う。
というのを、馬鹿の1つ覚えで実行しています。

ところが本を見ると、always @ ()でもassignのように=が使ったものがありました。
ここで疑問ですが、
・always()の中で、=を使ってもいいのでしょうか?
・always()で=を使って書くのと、assignで書くのとで、何か違いがあるのでしょうか?
   どちらも「変化すれば即座に反映」ですよね。
・always()で=を使う書き方を、避けて通ることは無理でしょうか?
    (可能なら、上記のように、記憶=always= <=の使用 という規則で覚えたいのです)
698774ワット発電中さん:2012/07/29(日) 13:29:35.30 ID:TAzT3bSY
>>697
一度「"=":ブロッキング代入」と「"<=":ノンブロッキング代入」の違いを整理してみたい方が良いと思うよ。
699774ワット発電中さん:2012/07/29(日) 13:56:37.20 ID:P5R1OXNT
>>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というイメージ。
この理解でどうでしょうか?

700774ワット発電中さん:2012/07/29(日) 14:55:53.15 ID:2minoTgZ
>>697

>・always()の中で、=を使ってもいいのでしょうか?
文法的には可能です。
alwaysでレジスタ(FF)を意図して記述する場合には、通常、使いません。
(私は使ったことがありませんし、コーディングルール上ダメってことが多いのではないでしょうか)

>・always()で=を使って書くのと、assignで書くのとで、何か違いがあるのでしょうか?
assignの場合、一文で書かなければならないので、読解しにくくなる場合があります。
alwaysならば、制御文などを使えるので、複雑な組み合わせ回路を記述しやすくなります。
alwaysで組み合わせ回路を書くのは、流派によっては御法度ですが。

>・always()で=を使う書き方を、避けて通ることは無理でしょうか?
RTL記述では使ったことがありません。
テストベンチを書くときには、便利なので使うことがあります。
しかし、よくはまるので、使用するのはおすすめしません。(異論あると思いますが)
701774ワット発電中さん: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
702774ワット発電中さん:2012/07/29(日) 15:51:33.75 ID:P5R1OXNT
>>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式のロジアナでも買おうか検討しています。

703774ワット発電中さん:2012/07/29(日) 17:13:37.59 ID:ctIm3nFr
>>701
おいおい、ブロッキングとノンブロッキングのタイトルが逆だろう。
前者がブロッキング (X = A;)、後者がノンブロッキング (X <= A;)。
あと説明のためにあえて書いたのだと思うけど、F/Fを意図した回路で
ブロッキング代入は使わないでしょう。
ところで、ブロッキング代入だと本当に下のような回路になるの。
やった事ないんだけど。

> A-->[D-FF]--+-->X
>          |
>          +-->Y
704774ワット発電中さん:2012/07/29(日) 17:14:04.76 ID:TAzT3bSY
>>702
assignに拘らなくとも、Verilog2001 や SystemVerilog ならば
「always @*」や「always_comb」を使って楽に組み合わせ回路を記述することができます。
ここら辺のコーディングスタイルはチーム内で統一しておくのが望ましいでしょうね。

ロジアナの代わりとしては「ChipScopePRO」を使うという手もあります。
QuartusIIの「SignalTapII」と比べて、使い勝手はイマイチですが。
705774ワット発電中さん:2012/07/29(日) 17:20:50.93 ID:TAzT3bSY
>>703
すまん。ご指摘の通りタイトルが逆です。

A-+->[D-FF]-->X
  |
  +->[D-FF]-->Y

となる所を、合成ツール側で「XとYは同じ値になるよねー」で一緒にされるんだと思う。
706774ワット発電中さん:2012/07/29(日) 17:29:49.63 ID:ctIm3nFr
>>702
> まだ使ったことがないですが、気になっているのは、
> generate と functionです。
assignで複雑な論理になる場合は、functionを使うことをお勧め。
functionの中ならば、if elseでも、caseでも使い放題。
1回しか呼ばれないfunctionがたくさんできてしまうのと、
それらの名前を逐一考えないといけないのが欠点ですが。

三項演算子は、1,2段くらいに留めておく事をお勧め。
段数が深くなると、メンテナンス性が落ちるのでお勧めしない。

ちなみに、それらが嫌なので自分はalwaysで組み合わせ回路を書く流儀。
707774ワット発電中さん:2012/07/29(日) 17:47:39.33 ID:ctIm3nFr
>>705
ブロッキング代入でもF/Fを推定してくれるの、という意味だったんですが、
でもそういう回路になるのですね。

回路記述では、ブロッキング代入は組み合わせ回路にしか使った事がないので。
テストベンチでは何でもありですが。
708774ワット発電中さん:2012/07/29(日) 19:57:17.90 ID:3bkm8cfC
『Verilog HDLによるシステム開発と設計』っつう本では
alwaysの中だろうと、実際にほとんど全て = で書いてあったりする。
そういうスタイルの良し悪しはともかく。

書ける場所という観点では ブロッキング代入・ノンブロッキング代入に
文法上の差はないよ。混ぜると死ぬ実装が多いだけ。
709774ワット発電中さん:2012/07/29(日) 20:24:13.87 ID:fd+Qcs8j
文法上の差が無いわけないだろ
710774ワット発電中さん:2012/07/29(日) 23:11:15.31 ID:T6JNLcQU
文法上の差がないって・・・素人かよ・・・。
711774ワット発電中さん:2012/07/30(月) 00:31:35.84 ID:05l8lCfr
プロがこんな所に来るわけないだろ。
712774ワット発電中さん:2012/07/30(月) 00:59:55.51 ID:mIajtPLv
私がVerilogのプロです。Verilog歴30年のベテランです。
713774ワット発電中さん:2012/07/30(月) 03:16:15.71 ID:POON3OaR
>>709,710
そんな、言葉尻を取って文句をいいなさんな
714774ワット発電中さん:2012/07/30(月) 05:18:16.12 ID:8s0j9zM9
>>712
恐れ入りました
715774ワット発電中さん:2012/07/30(月) 10:49:38.25 ID:e8ZiwZsD
30年だと、高校生くらいからやってた? すごい
716774ワット発電中さん:2012/07/30(月) 11:07:56.77 ID:i6ECN07i
(´-`).。oO(そもそもVerilogって何年前からある言語なんだろ・・・)
717774ワット発電中さん:2012/07/30(月) 11:36:58.46 ID:2SmGDCb2
ブロッキング文とノンブロッキング文は
FFごとにalways分ければ差はなくなる。

ただ、シミュレーションではブロッキング文で書かないと
シミュレーションが途中止まったりするから気をつけてね。
Verilogの講師がこれやってて焦ってた。


と、なんかプロとかベテランって見てるとこそばゆいね
718774ワット発電中さん:2012/07/30(月) 11:51:12.94 ID:ItCKCDQB
プロって言うのはIT土方のことだろ?
719774ワット発電中さん:2012/07/30(月) 12:59:07.62 ID:mIajtPLv
いや、シミュレーションが止まるように見えるのは、
ノンブロッキング代入が原因ではなく、ウェイトが入ってないのが原因だぞ。
720774ワット発電中さん:2012/07/30(月) 13:25:54.58 ID:2SmGDCb2
あ、そうなの?
問題の箇所ブロッキング文になったら動いたので

テストベンチで
a <= 1'b0;
#100;
b <= a;
c <= b;
#100;
とかしてて、
bはaが時間100で確定してるけど
cは時間が進まないとbが確定しないから、待ってた。
721774ワット発電中さん:2012/07/30(月) 14:04:07.22 ID:YYeBrXmP
待ってた?
722774ワット発電中さん:2012/07/30(月) 17:00:46.12 ID:2SmGDCb2
んもう!長いのは決まってるでしょ!?


ごめん、適当に書いたが、詳細はそうとう前なんで忘れた。
別にノンブロッキング文でも構わんかもしれんので好きに書けばいいかと。
723774ワット発電中さん:2012/07/30(月) 20:14:57.02 ID:STcGUahg
ええい、ここにVHDL派は居ないのか。
724774ワット発電中さん:2012/07/30(月) 20:51:33.13 ID:3PRdGnYB
ノシ
=と==を普通に間違えた>602ですw
725774ワット発電中さん:2012/07/30(月) 21:16:44.36 ID:SxOFhdYy
>>723
居るよ
726774ワット発電中さん:2012/07/30(月) 23:01:06.11 ID:mIajtPLv
私がVHDLのプロです。VHDL歴30年のベテランです。
727774ワット発電中さん:2012/07/31(火) 01:54:11.58 ID:Lf2rXwFn
私がHDLのプロです。HDL歴300年のベテランです。
728774ワット発電中さん:2012/07/31(火) 07:15:04.46 ID:MTbacMOh
私がHのプロです。H歴3000年のベテランです。
729774ワット発電中さん:2012/07/31(火) 10:23:31.86 ID:hMao9VU3
730774ワット発電中さん:2012/07/31(火) 11:29:07.63 ID:n6DwMD1K
>>727
その場合は、老舗と言ったほうがいいよ。
731774ワット発電中さん:2012/08/02(木) 03:34:10.64 ID:0HlnXESv
教えてください。

ISE14を使っています。ピン指定をするソフト、plan aheadで、
ピン指定するとき、
表のようなところのサイトと書かれた欄にピン番号を記入します。
そのセルに記入してリターンキーを押しても、次の下の所に移動しません。
再度マウスでクリックしなければなりません。
つまり、マウスクリック、入力、マウスクリック、入力の繰り返しです。
Excelのように記入してリターンしたら、スグ下に移動するようにはできないのでしょうか?

あと、ISEのRTL回路図表示で、部品の足から先の線が表示されないことが
多々あります。これは、こういうものでしょうか?
これを表示
732774ワット発電中さん:2012/08/02(木) 09:55:51.57 ID:X8OlQVb2
>>731

せめてスレ内くらいは検索したら?
>>560-564
733774ワット発電中さん:2012/08/02(木) 10:38:27.13 ID:AbLmGfVw
ありがとうございます。
それは見ましたが、別の方法で逃げることしか書いてないです。
実際にあのソフト上でやりきるときには、どうすれば良いのでしょうか。

あと、まとめて3.3Vに指定する方法とかも知りたいです。

なんか使いにくいソフトですよね?
734774ワット発電中さん:2012/08/02(木) 14:41:19.75 ID:RoJdqssi
>>733
気持ちはわかる。
あの表形式で出てくるプルダウンメニューも結構うるさい。
たとえば、LVCMOS33というのは、プルダウンメニューでなくても、
手打ちで「LVCMOS33」と打ってもいいんだけど、
そうしようとすると、プルダウンメニューが邪魔して、とても打ちにくい。

テキストファイルで修正するから良しとする人もいるけど、
PlanAheadになってから変になったと思う。
・ピン番号(ロケーション)
・電圧企画
・スルーレート
・電流強度12とか
が各1行で全4行使って表現されている。
Paceのときは、1行で書けたのに。
だから、手でわざわざ1行に合成している。
1行のほうが、圧倒的に視認性が良いから。
HDLソースの書き方にこだわるなら、ucfの書き方もこだわって欲しいが、
ほとんど議論されていない。
735774ワット発電中さん:2012/08/02(木) 16:51:44.75 ID:UM86acVv
自分で使わないものを作って
どうやっていいものを作ることができようか

と、誰かが言ってたような。

うちで作ったチップなんて怖くて使えねぇよ・・・
なぁんて
736774ワット発電中さん:2012/08/04(土) 01:54:46.97 ID:/Q/pMCEY
質問です。教えてください。

wire signed [9:0] A10;
wire signed [7:0] B8;

assign B8 = A10;
とすると、右寄せで代入され、A[9:8]は捨てられる、と考えれば良いでしょうか?

assign A10 = B8;
とすると、これも右寄せで、A[9:8]は、0が詰められるという考えでよいでしょうか。
737774ワット発電中さん:2012/08/04(土) 09:08:17.93 ID:uwUmM2G8
>>736
明示しましょう。
738774ワット発電中さん:2012/08/04(土) 09:32:10.09 ID:OAkdbHvh
明示するとサインドからアンサインドになってしまう
739774ワット発電中さん:2012/08/04(土) 09:42:53.81 ID:Bn9mT0j/
サインドを使うのが悪い
コンピュータにプラスもマイナスも無いのだ
740774ワット発電中さん:2012/08/04(土) 13:36:17.54 ID:MfU/G9aO
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
741774ワット発電中さん:2012/08/04(土) 18:38:51.25 ID:xJxf1FrE
B8は32bit拡張され
ってハードではどうしてるの?
シンセがどこかに32BITのレジスタを造り、そのレジスタで処理するのかな
742774ワット発電中さん:2012/08/04(土) 21:37:12.17 ID:mQUzZCPp
C言語の暗黙の型変換なんかと勘違いしてるんだろ
743774ワット発電中さん:2012/08/04(土) 21:51:31.05 ID:43z8ZC0F
数値演算はsimで確認しながらいつも書いてたな
動作すぐ忘れるんで
744584:2012/08/05(日) 02:21:47.17 ID:gVy5iGY3
>>742
integral promotion/integer promotion
745774ワット発電中さん:2012/08/05(日) 04:59:20.59 ID:/sdeeO8B
>>774 死ねよカス
746774ワット発電中さん:2012/08/05(日) 05:01:43.67 ID:+Qxov6lb
未来へのパス乙
747774ワット発電中さん:2012/08/05(日) 08:22:03.75 ID:gcZGO2b+
748774ワット発電中さん:2012/08/05(日) 15:29:18.73 ID:dvFVKwrb
>>745
全名無しを敵に回すとはいい度胸だ。
749774ワット発電中さん:2012/08/06(月) 19:48:49.03 ID:ZLPzvX7f
一応integer宣言した奴は32bitだと思うが

回路記述ではgenerate以外使わんな。


あと、論理合成=コンパイラと思ったらRTLはダメ
750774ワット発電中さん:2012/08/07(火) 10:13:27.76 ID:FEDKK8Zv
ベリログに、文法書はありますか?
751774ワット発電中さん:2012/08/07(火) 10:25:57.37 ID:tGNPbO1R
online Verilog-1995 Quick Reference Guide
by Stuart Sutherland of Sutherland HDL, Inc., Portland, Oregon, USA
http://www.sutherland-hdl.com/online_verilog_ref_guide/vlog_ref_top.html

IEEEで標準化されてるから探せばあるんじゃない?英語だろうけど。
752774ワット発電中さん:2012/08/07(火) 22:24:10.30 ID:9FGa3enX
306 名前: 774ワット発電中さん [sage] 投稿日: 2010/02/28(日) 01:06:18 ID:XDGpK0KC
1つめ
そういう回路は自分で作る。

2つめ
そのままパラメータを入れ子。
↓文法
ttp://www.verilog.com/VerilogBNF.html
753774ワット発電中さん:2012/08/08(水) 17:49:06.69 ID:qoS2KIWH
signed使うなら、VHDLがいい。

verilog-2001でもいいけど、言語がいい加減だからそのまま動いてしまうから、てすとべんちはちっかりつくりまちょうね

最近verilogばかりかいていたら、VHDLのかきかた。思い出せなくなってた。

かきかた ドリル

754774ワット発電中さん:2012/08/09(木) 03:35:53.28 ID:EJv5ocSx
VHDLで、
 `define std_logic_vector wire[ :
 `define downto :
みたいな代替が定義できたら、Verilogみたいに書けますかね。
VHDLは文章が長すぎて、タイプミスしそう
755774ワット発電中さん:2012/08/11(土) 02:09:11.58 ID:KR2rm2/h
未だにABELって使われているのでしょうか?
756774ワット発電中さん:2012/08/11(土) 12:11:22.80 ID:FYJaXMVG
使われてません。
もはやABELサポートしてるツールが無い。
旧Verとかは別にして。
757774ワット発電中さん:2012/08/11(土) 12:19:23.37 ID:KMd1VKMZ
ABEL、大学でやったな
758774ワット発電中さん:2012/08/11(土) 13:05:39.80 ID:YW6Mmwh7
ABELって、何と読むのでしょうか?
心の中では「エーベル」と呼んでいました。
アプルかも、エーブルかも、と思い、
恥ずかしくて口に出せませんでした。
アルデーノも読みにくいですね
759774ワット発電中さん:2012/08/11(土) 14:54:28.86 ID:KMd1VKMZ
えーぶるって読んでた希ガス
間違ってても雰囲気で分かるだろ、たぶん
760774ワット発電中さん:2012/08/11(土) 15:02:23.41 ID:d373DHKz
カインとアベルのアベルじゃないの?
カトリに出て来た犬もアベルだったよね。
761774ワット発電中さん:2012/08/11(土) 15:37:39.36 ID:+h6QmuyW
CUPLならWinCUPLがある
使ったこと無いけど

http://www.atmel.com/tools/WINCUPL.aspx
762774ワット発電中さん:2012/08/11(土) 18:40:37.49 ID:YW6Mmwh7
>>759
>間違ってても雰囲気で分かるだろ、たぶん
そういう問題じゃないんだ。
違った読み方すると、人前で恥ずかしいから、事前に知っておきたい。

雰囲気でOKなんて甘いこと言ってたら、
何でもありになって、収拾が付かなくなる。
情報は正しく空いてに伝えたいからね。
結果オーライはダメよ。
763774ワット発電中さん:2012/08/11(土) 20:59:53.05 ID:HDO21TUt
>>762
「おーあれですか」
「あなたはそう読みますか」
「ははは」
「ではこれからはxxと呼ぶことで統一しましょう」
とネタにするのが大人のやり方。

まぁ世の中大人ばかりとは限らんが。
764774ワット発電中さん:2012/08/11(土) 21:31:05.82 ID:152Larj/
自分は違った考えだな〜

何カ国もの人が集まるセッションだと一応英語が共通語になるけど、自国の発音に沿った謎タームが山ほど出てくるよ。
でもそんなの誰も気にしない。皆発音を聞きに来てるんじゃなくて内容を聞きに来てるんだし。
読み方間違えたら恥ずかしい、なんてこと言ってたら一言も言う事無く飲まれて終わる。

読み方間違えてようがカタカタ英語だろうが文法間違えてようが、相手に自分の意思を伝える事が重要だと考えてる。
その辺を指摘されたときは、内容が無さ過ぎて、そのくらいしか話題にならなかったと理解しよう。
765774ワット発電中さん:2012/08/12(日) 10:55:01.05 ID:YTgr48tM
Verilogで reg[7:-8] XXX みたいな宣言はアリですか?
小数を表現することを想定。
[15:0]より、整数部が[7:0]、小数部が[-1:-8]としたほうが意味的には分かりやすいのだけど。
766774ワット発電中さん:2012/08/12(日) 13:21:03.58 ID:cO5o4PsH
なしです
767774ワット発電中さん:2012/08/12(日) 20:24:38.87 ID:YTgr48tM
ありがとうございました
768774ワット発電中さん:2012/08/14(火) 14:32:43.07 ID:TH26gqzQ
VHDLを回路図に変換したいのですが
modelsimだとお金を払わないと回路変換機能が使えないみたいでした。
無料でVHDLを回路に変換する方法は無いでしょうか。
769774ワット発電中さん:2012/08/14(火) 16:57:05.73 ID:wYm27/t7
回路を合成したいというわけではなくて?
770774ワット発電中さん:2012/08/14(火) 17:25:38.17 ID:TH26gqzQ
>>769
合成したいということです。
ttp://kandk.cafe.coocan.jp/jeans/skins/media/1/2012-05-16-cpld2.png
VHDLから↑みたいな感じの回路図がほしいです。
771774ワット発電中さん:2012/08/14(火) 17:40:15.32 ID:lS1q4Au8
こんなきれいにはならないけど、ISEのSchematic Viewerじゃだめなの?
772774ワット発電中さん:2012/08/14(火) 17:49:19.32 ID:TH26gqzQ
>>771
ありがとうございます。
調べてみます。
773774ワット発電中さん:2012/08/14(火) 18:26:05.43 ID:wYm27/t7
ネットリストを生成して、さらにそれを回路図で欲しいわけね。
ザイリンクスのツールがあるなら >>771 の方法でいいけど。
774774ワット発電中さん:2012/08/14(火) 18:30:46.07 ID:DHR3Z8bn
合成したネットリストから手書き
775770: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;
776774ワット発電中さん:2012/08/15(水) 11:23:56.12 ID:qsVKZ/JR
777774ワット発電中さん:2012/08/15(水) 12:15:22.06 ID:0N8SSRQr
バス幅のとこは太くしような?
それともこれがSchematic Viewer?
778774ワット発電中さん:2012/08/15(水) 12:23:04.75 ID:qsVKZ/JR
気まぐれにJWWで書いただけだ。
バス幅太くするのが面倒だったから
信号名に[10:0]ってつけたのに…
779770:2012/08/15(水) 12:43:55.42 ID:K8EJsdfH
>>776
ありがとうございます。
2段目の三角の意味がよくわからないけど
マルチプレクサ使えば実装できそうです。
780774ワット発電中さん:2012/08/15(水) 12:55:16.54 ID:qsVKZ/JR
>2段目の三角の意味がよくわからないけど
えぇーーー!!!ちょい待って!
>>775を回路図化しただけだってば!
回路図読めないのに何で回路図化したがるのさ…orz
781770:2012/08/15(水) 13:27:15.81 ID:K8EJsdfH
>>780
三角形は調べたらトライステートバッファですか。

16bitCPUの内部回路をVHDLで書いてロジックICを使って
設計しろ的なレポートです。
ARが1番簡単なブロックでもっと難しいブロックが後6個も残っててきつい。
実家に帰れない・・・
782774ワット発電中さん:2012/08/15(水) 14:15:07.30 ID:q9xUez3V
日本の夏、、、
783774ワット発電中さん:2012/08/15(水) 14:43:43.16 ID:OHW16bFT
トライステートバッファも調べないと分からないようでは、
実家に帰らないでもう少し勉強した方が良いのではないかと。
784774ワット発電中さん:2012/08/15(水) 15:45:38.01 ID:0N8SSRQr
まてまて、実家に帰れば近所の幼馴染の彼女も帰っていてだな・・・
785774ワット発電中さん:2012/08/15(水) 15:55:56.35 ID:CmGQaKrQ
三角形の意味も分からずによくここまでこれたな、っと不思議に思うんだが
最初にやるだろうに

>>784
それどんなエロ毛?
786774ワット発電中さん:2012/08/15(水) 22:27:47.92 ID:OHW16bFT
>>784
なるほど、それじゃ仕方ない。
787774ワット発電中さん:2012/08/16(木) 14:33:02.94 ID:ezIrES1Q
>>785
三角形のエロイ毛って・・・
788774ワット発電中さん:2012/08/16(木) 15:14:02.21 ID:eNS2c7KX
ここで素直に答えを教える。

実家に帰れる

彼女と夜のシリアル通信

ここで教えない

実家に帰れない。

彼女にフラれる

彼女は他の男と夜のパラレル通信


どちらがベストなソリューションか
789774ワット発電中さん:2012/08/17(金) 18:37:13.23 ID:hTGvwzrk
ここで教えない

諦めて実家に帰る

彼女にもフラれる

夜は1人でインスタントオン


かもしれんぞ
790774ワット発電中さん:2012/08/17(金) 18:55:24.59 ID:4gW88Tig
ハンズオントレーニングですか。
791774ワット発電中さん:2012/08/17(金) 20:27:40.26 ID:cZmE1ixi
だめだこのスレ華麗臭が
792774ワット発電中さん:2012/08/17(金) 20:52:43.93 ID:bRabNl16
三分間待つのだぞ
793774ワット発電中さん:2012/08/18(土) 06:10:56.41 ID:mQnVdpSP
ワキガ凄いやつにVerilog教えてもらってるけどマジでやばいです。
頭が薄くて、スーツ着てるのに凄い臭いです。
汗拭きシートで拭いたりすればいいのに。
794774ワット発電中さん:2012/08/18(土) 11:45:48.18 ID:5UGvdqgK
>>793
それワザとじゃない? 自分がさっさと覚えりゃ解放される。
795774ワット発電中さん:2012/08/18(土) 12:18:51.07 ID:Lt4qgWq8
教えてもらっておいて文句を言うな
796774ワット発電中さん:2012/08/18(土) 13:58:49.34 ID:6OwtNE3h
>マジでやばいです。
ヤバイのは、>>793
797774ワット発電中さん:2012/08/19(日) 06:40:49.92 ID:8d9ZFWUC
>>796
いつもお世話になってますペコリ
でも先生臭すぎですよ。金があるんだったら手術したらどうですか?
798774ワット発電中さん:2012/08/20(月) 09:11:30.10 ID:KB7vOoUY
しつこいガキだな
799774ワット発電中さん:2012/08/21(火) 13:36:43.80 ID:dW3JWhob
そろそろ助けようかと思ったらVHDLか
こいつぁ手強いか?
800774ワット発電中さん:2012/08/22(水) 01:20:57.32 ID:H93sSmAA
VHDLは難しいからね。
801774ワット発電中さん:2012/08/22(水) 01:22:32.40 ID:sCNo14BT
せやろか
802774ワット発電中さん:2012/08/22(水) 11:07:43.47 ID:BkNAi9Hb
難しいんじゃなくて、面倒くさい
803774ワット発電中さん:2012/08/22(水) 11:26:18.77 ID:3+G9IjWJ
ていうか、意味がわからない。
entityって何?
architectureって何?

なんで--がコメントなの? コメントは、//か/*じゃないの?
なんで、いちいちライブラリ宣言を書くの?ワンパターンなのに

なんで、endの後に、もう一度同じ言葉を書かないといけないの? endだけでいいじゃん。
entity HalfAdder is
port (・・・)
end HalfAdder;

architecture HalfAdder_Body of HalfAdder is
って、言ってる意味がわからない。
804774ワット発電中さん:2012/08/22(水) 19:52:32.88 ID:jx45RRe6
だよなぁ。とにかくVHDL はマンドクセ。
個人的には、出力に代入した信号は、バッファ通して信号名を変えない
限り、内部で再利用できないのが嫌だった。 これやると可読性が激しく
悪くなる。 ・・まぁ、もうVHDL はやらないからいいけどね。
805774ワット発電中さん:2012/08/22(水) 19:56:57.02 ID:3+G9IjWJ
>>804
それって、例えばどういうこと? ぜひ教えて欲しいです。
806774ワット発電中さん:2012/08/22(水) 20:16:10.84 ID:qZIZmB11
VHDLの記述が面倒という人は全構文記述をイチからシコシコ入力してるのかな?
入力支援機能が付いてるエディタならば、Verilogと手間は変わらないと思うんだけどな。

807774ワット発電中さん:2012/08/22(水) 21:38:28.33 ID:Uo1zGQ4H
自社で書く時はわがままがきくけど、他社の中で仕事する場合はエディッタを選べない事も多い
だから一から書かなきゃならんことも何年に一度かは出てくるな

emacsが使えればVHDL modeはまず無条件に入ってるので困らないが
verilog modeは入ってない(勝手に入れられない)場合もあるので困る(´・ω・`)
担当経由で鯖管に強引に圧力をかけてもらって済む場合はいいんだけど・・・
808774ワット発電中さん:2012/08/22(水) 22:28:20.86 ID:1n6dE8IU
俺はシコシコ作ってる。
が、やはり面倒なので、webのテンプレートエンジンを使用してコードを生成するようにした。
809774ワット発電中さん:2012/08/24(金) 03:19:12.52 ID:1FfzGvvx

頭がかゆいので、風呂に入って来ても いいでしょうか?
810774ワット発電中さん:2012/08/24(金) 03:57:03.89 ID:P0XRaLwp
>>809
不許可
811774ワット発電中さん:2012/08/24(金) 10:21:14.56 ID:GnOZGlhk
VHDLの世界は、こんなに厳しいものなんですね。

トイレでいかせてください。
812774ワット発電中さん:2012/08/25(土) 23:35:59.15 ID:Nhp5CI5X
VHDなら知ってる
813774ワット発電中さん:2012/08/25(土) 23:53:39.88 ID:G+F2Mfxq
ちんちんの毛剃ったらあそこが痒くなった
814774ワット発電中さん:2012/08/26(日) 11:37:48.30 ID:PsvPcH8F
ベリログで、
通信で受信した1byteの値により、ランプなどをon offするとき、
case を250個とか続けて書いて良いのでしょうか?
あるいは、if()のほうが良いでしょうか?
815774ワット発電中さん:2012/08/26(日) 12:05:08.64 ID:BVlQWGDh
オレなら上位下位4bitずつで判定を分ける。
レイテンシは1クロック余分に掛かるけど、
タイミング設計上必要なことと考える。
816774ワット発電中さん:2012/08/26(日) 12:44:32.35 ID:pAkECDDE
おれだったら多分Loop使うから
ifだな
817774ワット発電中さん:2012/08/26(日) 12:48:32.70 ID:smhp+VPb
どっちでもいいよ
好きにしろ
818774ワット発電中さん:2012/08/26(日) 15:16:22.20 ID:PsvPcH8F
ありがとうございます。
ケースで切りまくるのはマズイでしょうか?

ループで行うというのは、具体的には、どうすることでしょうか。

受信した値一つ一つにパターンがヒモ付けされているので、
ループで処理するというのが、イメージできないです。
819774ワット発電中さん:2012/08/26(日) 15:38:52.01 ID:arnfGPzt
RAM/ROMでも使って済ませておく
820774ワット発電中さん:2012/08/26(日) 16:37:52.40 ID:BoLO12g+
技術的にはどちらも問題ないでしょう、たぶん。
脈絡のない長い記述はいずれ人間のミスを誘発するだろうけど。

仕様書に250種類の表で書いてあるにならそのままcaseで250種類に、
論理圧縮されたより少数のルールになっているのなら、そのルール毎にif()で分割して、
いずれにしろそのまま記述する、かな?
821774ワット発電中さん:2012/08/26(日) 16:40:13.67 ID:PsvPcH8F
なるほど、ありがとうございます。
メモリは気がつきませんでした。
調べてみます。ありがとうございました。
822774ワット発電中さん:2012/08/26(日) 21:13:07.10 ID:5P5kD9Jx
俺なら256通りガッツリ書くわ
話の流れからすると、256通りが何のルールも無く分岐するんだろうから
そういう仕様を決めた奴に文句ブーブー言う
もし仕様を決めたのが自分なら謝って仕様変更させてもらう
823774ワット発電中さん:2012/08/26(日) 22:29:01.28 ID:83C0HQUn
何のルールなくじゃなくて、
それがルールなんだろ、仕様なんだから。
824774ワット発電中さん:2012/08/26(日) 22:38:43.82 ID:5P5kD9Jx
だから、そういう仕様にした奴に文句なり変更を迫るなり、焼肉おごってもらうなりするって言ってんだよ
825774ワット発電中さん:2012/08/26(日) 22:48:02.26 ID:83C0HQUn
頼もしいな。
じゃあ、JPEG/MPEGのVLCテーブル作ったやつに文句言ってきてくれないか。
ほんと、腹が立つぞ。
826774ワット発電中さん:2012/08/27(月) 00:18:26.50 ID:ijYo2905
腹が立つ程度がショボすぎワロタ
827774ワット発電中さん:2012/08/27(月) 00:51:54.62 ID:1owEaQk9
みなさん、ありがとうございました。
いろいろな考え方があることがわかり、大変参考になりました。
私なりに、以下のように考えました。

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作るときに書き込むのかも?と、勉強しています。
828774ワット発電中さん:2012/08/27(月) 01:12:26.55 ID:pwxxpRRG
>>827
CoreGenだと.coeファイルを指定できたはず。

読み出しだけならROMで作っても良いのでは?
829774ワット発電中さん:2012/08/27(月) 02:00:23.00 ID:1owEaQk9
>>828
ありがとうございます。

>読み出しだけならROMで作っても良いのでは?
ですね。すっかり忘れていました。

>CoreGenだと.coeファイルを指定できたはず。
そういう外部Fileで持てるのですね。でも.coeって、FIRのときの係数の拡張しでは
なかったですか? coefficientのcoeだったと思います。

ちなみに、配列型で行う場合、
上記のように、if( RESET )で設定できる(?)と考えています。
しかし、実際に、ハードウェアで電源RESET信号は来ません。
RESETにアサインしたpinには、押しボタンSWが付いててるだけです。
そのような場合でも、電源onだけで自動的に配列に書き込まれると考えれば良いでしょうか?
それとも、電源on後に、人間がRESET SWを押さないといけないでしょうか?
830774ワット発電中さん:2012/08/27(月) 02:25:40.22 ID:n9Dv3YNk
配列ってただのFFが一杯ならんでるだけだから、当然リセットを手で打ってください
831774ワット発電中さん:2012/08/27(月) 02:36:50.25 ID:pwxxpRRG
>>829
>そういう外部Fileで持てるのですね。でも.coeって、FIRのときの係数の拡張しでは
>なかったですか? coefficientのcoeだったと思います。

たぶんそう。
http://japan.xilinx.com/support/documentation/sw_manuals/xilinx14_2/cgn_r_coe_file_syntax.htm
の「*** Example of Single Port Block Memory .COE file ***」辺りの書き方。
832774ワット発電中さん:2012/08/27(月) 08:12:46.08 ID:7+LOhcvy
>配列ってただのFFが一杯ならんでるだけ
すまん・・・某ゲームのパッケージが並んでる姿を想像してしまった
833774ワット発電中さん:2012/08/27(月) 08:14:06.61 ID:gVuz0Uq6
>>829
外部RESET信号が当てにならない時は、SRLC32Eを使って自己RESET信号を作ったりします。

Active-Highリセットならば、初期値INIT => X"FFFFFFFF"にしてSRL data inputに'0'を入力。
PLLを使っているなら、LOCKED信号を利用するのも良いです。
834774ワット発電中さん:2012/08/27(月) 09:44:48.60 ID:v7+U06Yy
ROMを合成するようにhdlを書けばいい
835774ワット発電中さん:2012/08/28(火) 00:46:35.69 ID:P81nTp06
Microblazeから書き込めるRAMにしておく。
テーブルが変わったらファーム修正で対応。
836774ワット発電中さん:2012/08/28(火) 21:03:31.40 ID:RVLxIPH5
【政治経済】平成床屋談義 町の噂その493
http://anago.2ch.net/test/read.cgi/asia/1345811892/162,334,699,859,862
837774ワット発電中さん:2012/08/29(水) 00:54:02.42 ID:pQ/1AnLd
非同期なスイッチ信号とかを同期回路に取り込むときに、D-FFを通しますが、
何段通せば良いでしょうか?
1段だと、危険な状態になるので、そのあとにもう一段、いや。もう2段付ければ良いでしょうか?
838774ワット発電中さん:2012/08/29(水) 01:28:41.43 ID:nfePr8TK
2段でおk
839774ワット発電中さん:2012/08/30(木) 10:04:09.57 ID:TSVbYVbm
1段でおk
840774ワット発電中さん:2012/08/30(木) 12:19:36.24 ID:3yEP3PJM
>>837 1段だと、危険な状態

なんで?
841774ワット発電中さん:2012/08/30(木) 12:43:26.79 ID:hg8F4xlh
メタステーブルのことじゃない?
842774ワット発電中さん:2012/08/30(木) 14:50:33.03 ID:DHzxpnrx
1段目のD-FFが噛もうとした瞬間に、
スイッチ入力信号がフラフラになりかけてると、マズイかな、って思いました。
2段にして、1つ前の過去を使うなら、1つ目のFFのQが
デジタル的にレベルを天地にはっきりさせてくれている、と思うからです。

でも、1段だけでは信用できないので、もう1段入れれば安心かな、と思いました。
しかし、念には念を入れて、もう1段・・・・とかやっていくと際限がないです。
843774ワット発電中さん:2012/08/30(木) 15:10:20.33 ID:QZxo7xxd
2段あれば大丈夫だろ
844774ワット発電中さん:2012/08/30(木) 15:12:59.00 ID:IZl15qPU
書き込みテストぉぉ
845774ワット発電中さん:2012/08/30(木) 15:19:14.59 ID:IZl15qPU
FFに非同期信号(微妙な電圧)を取り込むと、超低確率で発振してしまうそうな
(それでも人間の感覚では高確率で発生)。

ただ、発振し始めるのに少し時間がかかり
その頃には後段のFFはきっかりHigh.Lowが入っているんで
2段目以降のFFは発振しない。

どうしてもD-FFはラッチ2個で作るんで、そうなるらしい。
ちなみに俺はその発振を見たことはない。
846774ワット発電中さん:2012/08/30(木) 19:36:20.60 ID:3yEP3PJM
発振のイメージが、次段のH/L閾値を越えてばっこんばっこん振れるというのと、
中間電圧付近で小刻みに震えているだけ、だとだいぶ違うがどうなんだろ。
周波数はおそらくゲート遅延時間に関係するだろうから今ならかなり高周波だろう。
847774ワット発電中さん:2012/08/30(木) 19:45:26.09 ID:T6TxYSMf
インバーターを使った発振回路と原理的には同じようなもの。
条件によって発散(と言ってもVDD-GND間で収まるけど)したり収束したり。

ちなみにメタスは前段と後段のクロックによって(確率的に)必要なFFの噛ませ数が変わる。
10年ぐらい前にNTTの孫受けの仕事をしてた時は安全の為に5段打てとか言われた事もある。
NTTの指示だったのか、直受けの会社の指示だったのかはわからんけど・・・
848774ワット発電中さん:2012/08/30(木) 20:56:32.48 ID:/8dlVxlB
入力信号が、スレッショルド付近に達したら、上下どっちかのFETがONして
電源電圧が下がって、スレッショルドが変わって、FETがOFFして・・・
こんな現象だわな。 ゆっくり立ち上がってくる信号だと防ぎようのない現象。
だから、シュミットトリガにしたりする。

F/Fによる同期化は、普通ロジックICの場合で「最低」二段と言われてる。
ただし、ASICの場合はF/Fの速度が早くてロジックICではI/Oピン経由で
消えてしまうようなパルスが伝達されてしまい、問題になることがあるんで
三段以上って指定は確かにある。
五段てのは流石に初めて聞いたな。
849774ワット発電中さん:2012/08/30(木) 23:11:20.82 ID:saoxE9HX
メタ・ステーブルなのだから、メタスというのはやめろ
ガンダムじゃあるましし

850774ワット発電中さん:2012/08/30(木) 23:55:45.12 ID:IZl15qPU
845なんですけど・・・
ああ、そうだったんですね。知ったかぶりですみません。
諸先輩方のお話はすごく為になります。

あと、ガンダムのお話は結構です。
焼酎片手に語られたら大変です。
851774ワット発電中さん:2012/08/31(金) 00:28:49.78 ID:MIftL67c
メタステーブルを、HL往復の発振と説明しているやつと
閾値に至らない中間電位と説明しているやつがあるな。

確定ポイントまでもっていく力が足りない結果という話と、
時間がたつと確定する、というのは同じようだ。
852774ワット発電中さん:2012/08/31(金) 00:30:12.83 ID:KZVja/oL
今俺の手元にある本に、実際のメタステーブルをとらえた波形が載ってるわ
853774ワット発電中さん:2012/08/31(金) 01:27:56.10 ID:FNlCYWod
セットアップ/ホールドを満たしていないときの現象と微妙な電圧を取り込んだ
ときの現象は同じなの?
854774ワット発電中さん:2012/08/31(金) 03:06:23.31 ID:Gp4eY/UM
RESETスイッチにも5段入れるんでしょうか?
855774ワット発電中さん:2012/08/31(金) 03:10:04.60 ID:BODUrO3M
ダブルバッファって言うだろ。
856774ワット発電中さん:2012/08/31(金) 07:20:29.19 ID:P8elWxuc
857774ワット発電中さん:2012/08/31(金) 07:31:43.55 ID:TTPN5XbH
ttp://www.altera.co.jp/literature/an/an042_j.pdf
ttp://japan.xilinx.com/xapp/j_xapp077_1_0.pdf

10MHzなら1段でも良いのかな
アルテラのpdfで発振波形が載っていたけど見つからないや。
858774ワット発電中さん:2012/08/31(金) 15:28:37.64 ID:wMa98wlN
859774ワット発電中さん:2012/08/31(金) 17:12:32.75 ID:mWQZQIse
>>858
へー、すごいね。
どこのオシロ? テクトロかな。
860774ワット発電中さん:2012/08/31(金) 21:15:53.93 ID:eyXfDj2h
>>857
10MHzというより、FFのスイッチング速度じゃないのかな。
つまりはプロセス。FPGAは最先端デバイスだから1段は厳しいかも?

>>857
メタステーブルとはちがくないか?
通信のアイパターンみたいな、複数回の波形の結果っぽく見える。
861774ワット発電中さん:2012/08/31(金) 21:42:07.61 ID:cs1YLIXK
メタステーブル状態から「0」か「1」のどちらかになるのを繰り返し観測した波形だよ。
862774ワット発電中さん:2012/08/31(金) 22:12:45.53 ID:zrHPICZy
>>860
タイミングを微妙に変えながら繰り返し取った波形でしょ。
ちゃんとメタステーブルが発生してるじゃん。
863774ワット発電中さん:2012/08/31(金) 22:49:23.09 ID:mWQZQIse
メタステーブルって、

 メタス テーブル だと思ってた。

 メタ ステーブル らしいね。

メタってなに? ヘビメタのメタ? メタテキスト?
864774ワット発電中さん:2012/08/31(金) 23:07:22.65 ID:KZVja/oL
メタ(meta-)とは、「高次な−」「超−」「−間の」「−を含んだ」「−の後ろの」等の意味の接頭語。
865774ワット発電中さん:2012/09/01(土) 00:06:57.37 ID:nLpV8n1i
すると、
メタ ステーブル とは、 高次な安定状態?
866857:2012/09/01(土) 00:38:05.97 ID:nvyrNwwM
>>858
もっと発振ぽいのが載ってた。

wikiだと準安定状態 Metastable state
ttp://ja.wikipedia.org/wiki/%E6%BA%96%E5%AE%89%E5%AE%9A%E7%8A%B6%E6%85%8B
867774ワット発電中さん:2012/09/01(土) 00:43:39.48 ID:TrOQB5Nd
>>856
元は「メタ・スタビリティ」なんかね。名詞?
メタステーブル状態、なら正しいのかな。
868774ワット発電中さん:2012/09/01(土) 03:56:33.28 ID:f2F6n6LR
ステーブルって、 stable = state + able だろうか
869774ワット発電中さん:2012/09/01(土) 07:14:22.40 ID:Wk+dAPAj
エンジニアが休憩室とか、仕事中の雑談してる様子その物だな。
ほのぼのする。
870774ワット発電中さん:2012/09/01(土) 11:58:33.12 ID:jqQfcvav
クロック乗り替え回路をオカズにしたらご飯3杯はイケルね。
871774ワット発電中さん:2012/09/06(木) 13:31:00.20 ID:2586G4Z1
今日はクロックの日です。
872774ワット発電中さん:2012/09/11(火) 20:27:11.57 ID:LBiOKh8W
ttp://www.azumino-denshi.com/

ここのFPGAボードってお得でしょうか?
趣味で買おうかと思っているのですが・・・
873774ワット発電中さん:2012/09/11(火) 20:36:27.76 ID:dvmhs3A4
お得かどうかは自分で判断するしかないと思いますよ。
自分だったらDE0-nano買うけど
874774ワット発電中さん:2012/09/12(水) 08:59:48.15 ID:1Ml2zqFi
TERASICいいよ
875774ワット発電中さん:2012/09/12(水) 10:20:23.76 ID:MUKdIZbr
手っ取り早く動かすにはいいと思う
不満データよりずっと安いし
でもこの手のボードは自分で全部書かないと動かせないよ
Webにサンプルなんてないし
876872:2012/09/12(水) 10:32:18.03 ID:ETc9KdnT
DE0-nanoのサイクロンIVは安いっすね
どっちもTERASICのサイトですが・・・

ダウンロードケーブルだけはあるんでALTERA必須で
ともあれ買ってみます。できたばっかりのサイトみたいですけど
877774ワット発電中さん:2012/09/12(水) 23:01:42.31 ID:FDprzKif
>>876
できたばっかり???
それなりに昔からあるが・・・

DE0-Nanoの利点は散らかった机の上に置いてもあまりショートしない所w
878876:2012/09/19(水) 07:26:45.09 ID:Tm4LWl4i
CPLD来ました。

電源だけ面倒でしたが、他、何の滞りもなく動きました。
電源落としても残ってるのはFPGAばっかりやってきたので、なんか不思議な感じっすね。

やっぱりFPGAで言うところの外付けフラッシュ書き込み->起動と一緒で
毎回フラッシュに書き込んでいるんで、書き込みの寿命は割りと短いんでしょうか?
879774ワット発電中さん:2012/09/19(水) 22:29:28.85 ID:m+xJUGUQ
あなたの寿命より長いかもしれませんよ。
880774ワット発電中さん:2012/09/22(土) 01:23:42.48 ID:oXCu8FxP
http://pc.watch.impress.co.jp/docs/column/kaigai/20120921_561021.html
>ハードウェア記述言語的に見ると、AMD(ATI)からGPUのVerilogデータを提供してもらい、
>それをスクリプトでVHDLに変換、出力したVHDLを、IBM側のCPUのVHDLと統合している。
>VHDLは方言が多いため、この逆を行なおうとすると大変な作業になるが、
>VerilogからVHDLへと持って来ることである程度省力化している。

VHDLってそんなに方言多かったっけ?
ライブラリの差???
881774ワット発電中さん:2012/09/22(土) 07:51:31.86 ID:ObWVfTHX
>>880
リンク先読んだけど意味が分からなかった。
VHDLに変換して統合って何のためだろう?
シミュレーションなら混在しててもできるだろうし、
製造の話ならネットリストだよなぁ。
882774ワット発電中さん:2012/09/22(土) 09:01:09.14 ID:/prX0ES0
方言と言うよりも、記述が厳格なんで、曖昧な記述でも通ってしまうVerilogからの
変換は面倒だと思うな。
実際手変換でも、論理合成結果を推測しながらVHDL側の記述を考える事になるし。

抽象度がそれ程高くない前提だが。
883774ワット発電中さん:2012/09/22(土) 20:19:00.20 ID:B5dF4tY8
統合しないとチェックツールが使えない。
884774ワット発電中さん:2012/09/22(土) 22:36:49.80 ID:tc71lczK
慣性遅延はどういうときに使えば良いんでしょか?
885774ワット発電中さん:2012/09/23(日) 01:15:15.86 ID:DdVZhJWR
遅延時間より切り替え周期の方が短いとき
886774ワット発電中さん:2012/09/26(水) 07:23:29.57 ID:jTJ7bZI7
「理論より実践」だよ。手を動かせ。わからなくても手を動かせ。
いつかできるようになるから。きっと上手くなる、という気持ちが大事なんだ。
それがなかったら回路設計者にはなれないぞ。
887774ワット発電中さん:2012/09/26(水) 07:25:17.96 ID:jTJ7bZI7
どういう時?じゃないんだよ。手を動かして感じろよ。自ずとわかってくるもんなんだよ。
888774ワット発電中さん:2012/09/26(水) 09:08:18.55 ID:mcka+Zaf
Don't Think
Feel
889774ワット発電中さん:2012/09/29(土) 08:56:04.79 ID:L3I9kbK6
>>814
遅れすだけど、おれだったらLT使うな。
8ビットアドレスROMなら記述も簡単。
890774ワット発電中さん:2012/09/30(日) 17:59:18.90 ID:/9X3J23Q
台風の来ているこんな時に何ですが、
ChipScopeって、使っていて、ムカっと来ませんか?
信号を追加しようと、信号リストから選択してOKしたのに、追加されていない。
Modify....のボタンを押さないといけない。
さらに、Modify...のボタンを押す直前の位置に何の警告もなく上書きされてしまう。
しかも、Ctrl+Zで取り消しが効かない。

その前の画面で、Data数と□トリガと信号は同じ の中間の、ボタンも何も無いところで、
クリックすると、□トリガと信号は同じ がクリックされてしまい、
せっかく登録したData数が減ってしまう。

だったら使うなと言われそうだけど、みんな不満なく使っているのか? こんなソフトを
891774ワット発電中さん:2012/09/30(日) 18:54:30.91 ID:wArkA5Al
>>890
デザイン修正が発生するけど iconとilaを自分でインスタンス化しとくのが結果的に一番楽でした。
.cdcもFPGA Editorで1クリック生成できるので。
Inserter経由だと、Net名が変わる度にプローブポイントを見失ってイラっと来るんよね。
892774ワット発電中さん:2012/09/30(日) 19:27:19.64 ID:/9X3J23Q
>>891
ありがとうございます。
そんなやり方があるんですか? ぜひ知りたいです。

インサーターでやっているんですが、
信号名は出て来ないわ、bitの並び順は反対になるわ、イライラします。
ChipScopeのGUIって、PlanAheadと同じで、何か変ですよね。

だから、chipscopeはあんまり使わないでいるんです。

そのやり方はね何というやり方でしょうか? 検索キーワードだけでも教えてください。
893774ワット発電中さん:2012/09/30(日) 19:49:16.23 ID:SG49fRMk
DS229
俺はコード内のポートやレジスタの宣言してるところをスクリプトに放り込んで、
cdcを作ったり、ilaとアサインできるようにしてる。
894774ワット発電中さん:2012/09/30(日) 20:53:56.92 ID:/9X3J23Q
な、なんと、そんなことまで出来るんですか。
今日も、chipscopeをあきらめて、空きポートに線を出して、オシロで解決しました。
895774ワット発電中さん:2012/09/30(日) 21:21:09.59 ID:wArkA5Al
>>892
Coregenで作ったICONコアとILAコアを自分でインプリするだけです。
「chipscope icon ila coregen」辺りでググればよろしいかと。

BlockRAMの空き具合にも寄りますが、512bit超でのバス観測が
楽に出来るのは便利ですね。トリガの掛け方も色々選べるし。
896774ワット発電中さん:2012/10/10(水) 10:15:51.48 ID:OGUZwJdk
512bitって、
そんな幅の変数があるのか?
897774ワット発電中さん:2012/10/10(水) 11:19:04.71 ID:Gyanfxfu
データ幅≠変数の幅でしょ?
チップ内部だし、幅広のバスはよく使うよね。
898774ワット発電中さん: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日を費やしてしまいました。
そんな僕を優しく叱ってください。
899774ワット発電中さん:2012/10/14(日) 03:06:10.67 ID:cN2oztFc
           ヽ ヽ ヽヽ ヽヽ
          ヽ ヽ ヽ ヽ ヽヽ ヽ
           ∧_∧ ヽ ヽ  i'`゙`゙゙`゙"'i
         (,,, ・∀)      li|       |li ガッ
         / つ=○===|       | li
        (⌒)  /      l:lli|       |て
          (,,__,).    Σ |从从从 | そ ←>>898
900774ワット発電中さん:2012/10/16(火) 12:52:21.48 ID:5TvKXA3b
>>898
何が間違いなの?
901774ワット発電中さん:2012/10/16(火) 14:14:16.42 ID:x1WdY7TS
wireとinput逆ってことかな?
でも相変わらず95の時の書き方で書いちゃう。
902774ワット発電中さん:2012/10/16(火) 14:58:42.33 ID:zilydOUQ
1個だけ違うのが混ざってるって事かな?
903774ワット発電中さん:2012/10/16(火) 15:06:29.73 ID:r5AQXIO+
この中に1人、inoutがいる!
904774ワット発電中さん:2012/10/16(火) 18:59:12.55 ID:92ciSOG6
なるほど、キーボードの[o]と[p]は隣同士かw
905774ワット発電中さん:2012/10/16(火) 20:42:52.68 ID:x1WdY7TS
そういうことか・・・しくしく
でもエラーでdしか出ないだろうから分からないか?
906774ワット発電中さん:2012/10/17(水) 13:20:58.02 ID:uY+zd/yc
inoutの間違いは、たまにやるよね。困ってる、実際。
でもVHDLは使いたくない。
注意するしかないか。
907774ワット発電中さん:2012/10/18(木) 23:04:25.04 ID:Gf5o+4F/
エディタのキーワード強調機能で別の色にしちゃうのもイイネ。
908774ワット発電中さん:2012/10/19(金) 08:59:34.06 ID:xZ7t1mQD
inout なんて、一番外側でしか使わないだろ。
内部バスとか書いちゃうの?
909774ワット発電中さん:2012/10/19(金) 10:25:57.36 ID:QfyVZwjy
>>908
キーボード上でoとpが隣なものだから、タイプミスが出る事があって困るって話だと思ってたんだが…
違うの?
910774ワット発電中さん:2012/10/19(金) 11:00:05.42 ID:Wm1tgnOs
Dvorak配列のキーボード使うよろし
911774ワット発電中さん:2012/10/19(金) 12:30:13.25 ID:1lPdQs+/
dragonspeechでも使っておけ
912774ワット発電中さん:2012/10/19(金) 15:56:36.91 ID:ieyUzuJy
>>907
いいね、それ。
使わせてもらうよ
913774ワット発電中さん:2012/10/20(土) 11:14:54.17 ID:1m4/nlh1
>>898
置換するとか、ブロックでカットするとかすればいっぱつで済むよ。
市販のテキストエディタを試してみたら?
914774ワット発電中さん:2012/10/20(土) 12:35:56.01 ID:pCAE49Bx
思うんだけど、
ISEがWarningで「inoutが混じってるけど大丈夫?」と
言ってくれればいいのに。
915774ワット発電中さん:2012/10/20(土) 18:54:51.94 ID:7mUGbrnL
inout でも入力にしか使ってなければ
input と同じだろ?
>>898 は、何で一日つぶしたの?
916774ワット発電中さん:2012/10/20(土) 19:21:33.31 ID:THga5toy
>>915
「何かコンパイルエラーだって。英語だからよくわからんけど」
917774ワット発電中さん:2012/10/21(日) 11:02:10.83 ID:6m6y9bJM
「英語だからよくわからん」というなら、
1)英語の勉強をやりなおす
2)足を洗って、日本語だけで済む世界に移る
の二つに一つだな
918774ワット発電中さん:2012/10/21(日) 13:46:53.65 ID:pnpURyfn
SPI通信の送信で、例えば
reg [15:0] TxData;
とか取って、実際には、
TxPin <=TxData[0];
TxData<={ 1'bo, TxData[15:1] };
とか、書きますよね?
そうすると、Warningがいっぱいでます。
「TxData<15>が、ロードレスだぜ」

このWarningが出るのがイヤなのですが、出ないようにする方法は、あるでしょうか。
Warningが出なくなるなら、多少のリソースを喰ってもいいです。
但し、IOに出すとか言うのは、したくありません。
919774ワット発電中さん:2012/10/21(日) 14:55:27.03 ID:pnpURyfn
連投すみません。

以前に、chipscopeは面倒くさい と言った者ですが、
今日、やっとコツを掴みました。

これまでは、トリガー信号と観測信号を、別々に選択してセットしていたのです。
たとえば、観測信号を100本設定、トリガを8本設定など、
「トリガー信号を増やすとコンパイルに時間がかかるし、リソースも食うでいかん」
と遠慮していました。
なので、観測し始めてから「あっ、しまった、あの信号を入れるのを忘れてまったがや」と、
再びインサーターに戻って追加。
しかし再び「あっ、しまった」が発生。 もうイライラでした。

ところが、観測信号=トリガ信号にして、大胆に設定すると、
確かにコンパイルに時間はかかるものの、「あっ、しまった」は、ほぼ発生せず、
さまざまなトリガをかけることができました。

もしかしてみなさんは、
すでにそのようにして使っているのでしょうか?
というか、はじめからチェックBOXがonになっているところを見ると、
一般には、そういう使い方をするのでしょうか?

日曜HDL書きは大変です。
920774ワット発電中さん:2012/10/21(日) 16:21:14.36 ID:5TLHAniu
chipscopeってフリー版じゃ使えないんじゃなかったか
日曜HDL書きでも有料版使う時代なのか
921774ワット発電中さん:2012/10/21(日) 16:31:15.16 ID:bj4cKzVn
chipscopeのライセンス付のボードも売ってる。
例えば秋月でも売ってる↓とか。デバイス限定のライセンスだけどね。
http://avnet.co.jp/design/kits/xilinx/AES-S6MB-LX9-G.aspx
922774ワット発電中さん:2012/10/21(日) 17:42:11.70 ID:pnpURyfn
もちろん正規版を購入しました。
本格的にFPGAがやりたかったからです。
デバイスは、スパータン3AのDSP付きのを海外通販で買いました。
LCD表示器がないのが残念ですが。
923774ワット発電中さん:2012/10/21(日) 20:51:17.41 ID:Uy3na2th
個人でよく買ったな。四重〜50万近くしなかった?
924774ワット発電中さん:2012/10/21(日) 20:57:58.44 ID:bj4cKzVn
これぞまさに「数万円から数十万円以上する専門的なソフトで、素人が購入することは考えにくいという 」レベルだなw
925774ワット発電中さん:2012/10/21(日) 22:08:28.38 ID:7wc4JYuc
趣味のためにソフトに数十万出したって凄いな
本格的にやるんだから毎年サブスクリプション更新するんだろな
926774ワット発電中さん:2012/10/22(月) 01:02:19.35 ID:vBaJpfuV
サブスクリプション? 日本語でお願いします。

定期更新なんて、するわけないじゃないですか。
僕はいつまでもISE 13です。
ChipscopeとSpartan3,6 Virtex4が使えればいいですから。
927774ワット発電中さん:2012/10/22(月) 07:13:16.00 ID:vaqtzVXi
ISim使ってるならISEを最新版に上げざるを得ないんじゃないかな。
928774ワット発電中さん:2012/10/22(月) 08:37:53.13 ID:PpTbARmh
chipscopeって、そんな便利なん?
シミュレーションでわからない突発現象を取るの?
いまいちメリットがわからん。
929774ワット発電中さん:2012/10/22(月) 10:09:41.66 ID:li/EVMDp
ロジアナなんていらない状態になったがな
signaltapで
930774ワット発電中さん:2012/10/22(月) 12:10:38.28 ID:LAq2lYbL
5年位前、TEDのキャンペーンで、
chipscope単体だと30万近くするのが、
USBケーブルと抱き合わせで10万弱ってのがあったよ。
今でもたまにやってるんじゃないかな。
931774ワット発電中さん:2012/10/22(月) 15:10:37.65 ID:4SeDAzL3
おまいら知らんのか?
ChipScopeだけなら数万で買えるぞ
WebPACKに追加インストール出来るし。

>>919
少なくとも俺はトリガ=観測信号でやってる
ロジック使用量は気にならんレベルだと思うし
932774ワット発電中さん: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;

このままではエラーになってしまいますので、
どう記述すれば良いでしょうか?
933774ワット発電中さん:2012/10/22(月) 21:34:43.11 ID:zUXIMtZv
>>932
ていうか、
設定したい値のbit幅を自動的に求めて、
それを使って自動的に変数幅にセットしたい、ということではないの?
934774ワット発電中さん:2012/10/22(月) 21:43:27.85 ID:0g8/TSxw
>>933

REG_WIDTHを変更すれば定数cmdも一緒に自動で変更したいという事です。
cmdが10個も100個もあると思って頂ければ。
935774ワット発電中さん:2012/10/22(月) 22:38:34.95 ID:7CNRXQvD
parameter cmd = 1;
ではあかんのん?まぁ32bit以下限定なんだけど。
936774ワット発電中さん:2012/10/22(月) 22:39:06.36 ID:2AsFlEm+
parameter cmd = {{REG_WIDTH}1'b1};
937774ワット発電中さん:2012/10/22(月) 22:47:37.78 ID:2AsFlEm+
間違った
parameter cmd = {REG_WIDTH{1'b1}};
938774ワット発電中さん:2012/10/22(月) 23:01:21.16 ID:0g8/TSxw
コメント有り難うございます。

>>935

はい、書き込んだ後に思いついたのですが、
残念ながらREG_WIDTHは8から256ビットまで仕様上あり得ます。

>>937

それだと全て1/0の場合しか出来ません。
parameter cmd = 8'd1; ←BINではなくDECです。


奥の手はテキストエディタでの置き換えなんですが、
奥の手過ぎるので使いたくないです。
939774ワット発電中さん:2012/10/22(月) 23:16:36.28 ID:PpTbARmh
>残念ながらREG_WIDTHは8から256ビットまで仕様上あり得ます。

検証大変だな。頑張れ。
940774ワット発電中さん:2012/10/22(月) 23:42:06.44 ID:PWg0F+ex
parameter [REG_WIDTH-1:0] cmd = 1;

とか書けなかったっけ?
941774ワット発電中さん:2012/10/24(水) 03:13:22.01 ID:UQHr7Rqu
数年前、派遣会社で紹介された派遣先、
私は技術を身につけたく、VHDLでコードを沢山書きたかったのだけれど、
設計物はVisual Eliteでステートマシンを何個も何個も作っているようなものだった。
面白みもなく、やりたいことではなかったので、
派遣契約で派遣会社にも不満があったので、途中で解約してきた。
942774ワット発電中さん:2012/10/24(水) 03:18:33.57 ID:QpNFNStk
近代市民ぶって完全無教養の採り産み先生カッコイイっす!ダサ杉ってことですよ!バブル世代のクズ先生さん!
そんないい加減でインテリ気取れないので。東京大学共学学部のカリキュラムをご覧下さい!
科学のイロハもご存知ないんですね!
いいですよ!レベル低いので死んでください!さあ!早く!NEC?なんですかそれ!!??アハハハハ!!!
943774ワット発電中さん:2012/10/24(水) 03:23:47.25 ID:QpNFNStk
NEC?いや?しらないですよ!?何ソレ?LSE?違うでしょ??学位持ってますか?貴方?アハハ!!
調子こいてセミナーとかやらないでくださいね!!!??調子こきのポン大君!!ガハハ!!
なぁ!!キミさぁ!!低レベルなんだよ!!死んで!マジで!!
944774ワット発電中さん:2012/10/24(水) 09:49:01.37 ID:LE5KBzn5
何か恨みでもあるの?
こんなとこで言ってないで、直接言えよ。
945774ワット発電中さん:2012/10/25(木) 06:33:14.74 ID:6s/AH3Cz
そんな性根や度胸があったらこんなところに書かないだろ。
ヘタレのクズ学生だよ。
946774ワット発電中さん:2012/10/25(木) 13:17:31.89 ID:ovBIzv/Z
午前3時にへんなにが湧いてるな・・・
947774ワット発電中さん:2012/10/25(木) 13:58:23.85 ID:XRB3WW8E
完全に心の病気だね。夜中に発作が起きたんだろう。
948774ワット発電中さん:2012/10/25(木) 18:41:26.50 ID:Jath9ap6
>>941の正気時が>>946
>>943の正気時が>>947
だろ
949774ワット発電中さん:2012/10/25(木) 22:42:33.37 ID:XRB3WW8E
ああ、スーパーハッカーにIP見られたみたいだね。
私は荒らしだね。迷惑かけてごめんね。
もう来ないようにするから許してください。>>ALL
950774ワット発電中さん:2012/10/26(金) 00:22:22.72 ID:0nVqeTWO
>>932
なんで固定値をわざわざレジスタ変数にセットする必要があるわけ?
951774ワット発電中さん:2012/10/26(金) 07:16:52.83 ID:d63VFGoW
シリアル通信で、IDなどの固定値を送信、ってことはよくあると思う。
952774ワット発電中さん:2012/10/26(金) 21:00:02.60 ID:rlif0CdV
今思ったらNECって自殺するレベルの退職面接やってるんだっけ
953774ワット発電中さん:2012/10/26(金) 22:53:18.21 ID:sZoVWQN6
うむ、何ヶ月か前にニュースでやってたような希ガス
つーかスレ違い
954774ワット発電中さん:2012/10/27(土) 01:54:16.29 ID:Wr50SXwz
NECといえば先日の水増し請求疑惑はどうなったんだろう。
前回の水増し請求発覚で誕生した西垣社長が現在の惨状の礎を築いたというのに、
今回のが事実だったらもう先は無いんじゃなかろか。
955774ワット発電中さん:2012/10/28(日) 00:43:14.90 ID:3HBHLkGQ
place and route が 30分経っても終わりません。
何かあったのでしょうか?
956774ワット発電中さん:2012/10/28(日) 01:36:46.01 ID:3HBHLkGQ

すみません、今終わりました。

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!
957774ワット発電中さん:2012/10/28(日) 04:38:15.97 ID:TnsPGoNZ
>>954
防衛省のか?
防衛省は接待を要求してくるから、
三菱電機も住重もその分請求しただけだよww
958774ワット発電中さん:2012/10/28(日) 15:29:35.67 ID:CoQbUseP
NTT向けも、ぼったくりしてたなw
959774ワット発電中さん:2012/10/28(日) 18:47:21.65 ID:83Bq/Y+o
ぼったくり、それは絶対に失ってはいけない日本の素晴らしい文化
水増し請求にギャースカ言っているのは非大和系の朝鮮・中華系人のみ
960774ワット発電中さん:2012/10/29(月) 14:11:34.33 ID:zX0kB8S6
>>956
昔俺も「終わりました」と、電話をかけた。
するとエアーシュータで料金が飛んできた。
961774ワット発電中さん:2012/10/29(月) 23:32:58.13 ID:zX0kB8S6
教えてください。

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]
などと宣言したとき、その宣言したときの範囲の値で指示しないといけないとか、
あるでしょうか。
962774ワット発電中さん:2012/10/29(月) 23:41:51.60 ID:c2RRCAgL
>などと宣言したとき、その宣言したときの範囲の値で指示しないといけないとか、あるでしょうか。
まあな。
963774ワット発電中さん:2012/10/30(火) 00:32:53.46 ID:RZ/1VRug
えっ、そうなんですか。
ありがとうございます。
もう一度試してみます。
今日ずっとバグっていて。 ありがとうございました。
964774ワット発電中さん:2012/10/30(火) 09:00:05.82 ID:Gc5css43
どんな動作を期待してるんだよw
965774ワット発電中さん:2012/10/30(火) 11:26:32.94 ID:RZ/1VRug
こんな感じです。

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]
966774ワット発電中さん:2012/10/30(火) 19:51:00.99 ID:1trsm5ze
>>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
967774ワット発電中さん:2012/10/31(水) 13:04:43.19 ID:ECQRHorh
ご教示いただきたいです。


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等を見たのですが公式の理解が進まず、
とりあえず正規乱数を出力してヒストグラムで見ようと考えています。
宜しくお願いします。
968774ワット発電中さん:2012/10/31(水) 13:14:38.21 ID:R8BxNv2w
合ってるけど、
むしろこれを作る目的の方が知りたい。
969774ワット発電中さん:2012/10/31(水) 17:10:12.63 ID:8i69fMg6
μ はオフセットなので通常0でいいが、
σは雑音電圧の標準偏差であり、実効値だ。
自分が発生させたい雑音の電圧なのに
これでいいかて。。
お前の発生させたい電圧を他人が知るかよ
970774ワット発電中さん:2012/10/31(水) 17:15:41.83 ID:8i69fMg6
>>967
もひとついうと統計学と電気量がどういう関係にあるかこの際調べな
971774ワット発電中さん:2012/10/31(水) 19:31:25.09 ID:ECQRHorh
ご指導ご回答ありがとうございます。


>>968
他人の作ったフィルタの具合を確かめるためのものに使います

>>969-970
ありがとうございます。
統計学にあまり触れずに作ろうと横着しようとしていました。
±1の範囲で考えているので、このまま進めてみます。
972774ワット発電中さん:2012/10/31(水) 22:31:29.88 ID:8i69fMg6
>971
>±1の範囲で考えている

もう処置無しだなお前
973774ワット発電中さん:2012/10/31(水) 22:56:36.97 ID:7tpUjpHE
フィルタの具合を確かめるって言われても…
答えになってない。
もし仕事でそれをやるのだったら、転職を勧めます。

974774ワット発電中さん:2012/11/01(木) 09:39:24.05 ID:Q80B2X2d
フィルタ動作確認するのにノイズ発生て
正弦波をスイープさせ、入力出力のレベルを比較して
設計したf特通りになってるか確認すんだよバカタレ>>ID:ECQRHorh
975774ワット発電中さん:2012/11/01(木) 13:16:12.63 ID:ISXkB3hW
>>974
それはアナログフィルタだろ
デジタルフィルタだってあるぞ
976774ワット発電中さん:2012/11/01(木) 13:20:56.82 ID:CaVGBd7P
>>974
レベルだけじゃなくて、位相特性の測定もお願いします…orz
977774ワット発電中さん:2012/11/01(木) 13:29:17.56 ID:Q80B2X2d
>>975
ハァ?お前どこまで馬鹿なんだ。
シミュレーションレベルでまず検証するんだよバカタレ

>>976
位相特性も正弦波食わせれば簡単に判るだろうが。
フィルタ特性を検証するのにガウス雑音食わせるてアホの骨頂かお前は
ID代えてご苦労だなウスノロ

>±1の範囲で考えている
↑こっちの方はまだ理解できてないようだなえぇゴミ野郎
ガウス分布の意味すら理解できないアホは死ねよまったくよ
978774ワット発電中さん:2012/11/01(木) 13:32:28.23 ID:Q80B2X2d
>それはアナログフィルタだろ
>それはアナログフィルタだろ
>それはアナログフィルタだろ
>それはアナログフィルタだろ

アホの戯言、ディジタルフィルタにディジタルのまんまノイズレス(正確には量子化ノイズがあるが)の正弦波を実機で
入力できることもわからない死ねば
979774ワット発電中さん:2012/11/01(木) 13:40:52.57 ID:Q80B2X2d
>>976
>レベルだけじゃなくて、位相特性の測定もお願いします…orz

おもしろいから聴いてやろう
雑音の位相特性をどうやって決めるんだい?ウスノロ
位相特性と言う限り、入力は正弦波が前提になる。
雑音の位相とは何か定義して教えてくれや。
位相どころか、雑音の微係数だって、リーマン=ルベグの意味では定義できないんだがな。
980774ワット発電中さん:2012/11/01(木) 14:58:21.32 ID:CaVGBd7P
>>979
976が書いてる正弦波で測定する場合は位相特性オシロで見るとかででるでしょ??
雑音でやる場合は、FFT掛けるから一括で特性出るよ??
981774ワット発電中さん:2012/11/01(木) 15:01:45.03 ID:CaVGBd7P
この場合で測定しようとしてるのは、フィルタの伝達特性だよね?
982774ワット発電中さん:2012/11/01(木) 17:36:02.88 ID:Q80B2X2d
>>980
>>981
>雑音でやる場合は、FFT掛けるから一括で特性出るよ??

戯言ほざくなお前は
システムの伝達関数を調べたければ入力はδ関数インパルス入力だ。
インパルス入力と雑音が一致してるのはスペクトル特性だけ。
理屈の上からは極めて長い周期の一様乱数でガウス雑音を作れば、
f特は1に近づくが、どれだけの周期のものが必要かお前はわかってんのかい。
だいたい、雑音自身の位相なんて決めようがないのにどうやって出力位相を決定するつもりだ。

それと、なんでオシロを見るんだ。ディジタルフィルタだからバス入力があるだろうが、
そこにマイコンかUSB出力をシリパラするでポートたたいて直接ディジタルデータ入力しろと言ってる。
983774ワット発電中さん:2012/11/01(木) 17:38:23.93 ID:Q80B2X2d
>>980
>雑音でやる場合は、FFT掛けるから一括で特性出るよ??

ガウス雑音入力してどうやって位相特性出すのか解説してもらおうか。
ごまかさずにちゃんと書け

984774ワット発電中さん:2012/11/01(木) 18:47:47.32 ID:6mBhdETp
>>983
あんたの罵倒ことばが大嫌い
985774ワット発電中さん
よくわからないけど、982で決定的に恥をかいているような気がする。