1read 100read
2012年07月電気・電子6: 【Verilog】 記述言語で論理設計Project11 【VHDL】 (739) TOP カテ一覧 スレ一覧 2ch元 削除依頼
1.5Vで電子工作 (809)
【Arduino】フィジカル・コンピューティング3【OSC】 (499)
水晶振動子&水晶発振器を鋭く語るスレ 3 (620)
【部品屋】電子パーツ屋総合スレ 8店目 (251)
学研マイコン Japanino ジャパニーノで遊ぶスレ 3 (242)
電子立国日本の敵Samsungをどう叩き潰すか?part4 (273)

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


1 :11/12 〜 最終レス :12/08
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/

2 :
・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/

3 :
リンク切れが多かったので、ついでにテンプレ見直しました
解説記事は別にテンプレに入れる必要ないかなーとは思ったけど、面倒なので直してません
前スレ後半でやるおと学ぶVerilogをテンプレに入れようみたいな感じの議論があったので、反映しておきました
>>1でコピーミスっちゃったので、次スレあたりで直してくださいな

4 :
新スレおめでとうございます

5 :
教えてください。
FPGAで、LPFが作りたいです。
1次ではなく4次が作りたいです。
FPGAには、アメリカのザイリンクスというメーカーの
スパルタン6を使います。
このときの手法は、FIRかIIIRしかないのでしょうか?
また、FIRやIIRでは、積和のためにDSPブロックが必要ですが、
DSPブロックなしでFIRやIIRはできないのでしょうか?

6 :
IIIRなんて知らないけど、
FIRとIIRしかないかって言われると、
どっちかに分類できるからな。
日本語で考えてみたら?
DSPブロックなしでもできるよ。
でなきゃ、他のFPGAやASICで作れないだろ。

7 :
ロジックで加算器や乗算器作ってる人はもういないのか…(遠い目)

8 :
ブースの乗算器とか作っても、合成ツールのほうが賢いもんね。

9 :
>>5
それがどうHDLと関係あるんだ?

10 :
まるで大学生が宿題か卒業研究の答えを探しているみたいだね

11 :
LPFなら加算して右シフトすればいいじゃない

12 :
何それ?移動平均のこと?

13 :
FPGAではFFTして要らない成分をカットして元に戻すってのが普通だよな
>>5 Sliding FFTでがんばれ

14 :
Verilog−Aでオン抵抗を考慮しないスイッチをつくりたいのですが
どのようにして記述すればよいのでしょうか?

15 :
ちなみにここでいうスイッチはMOSスイッチをモデリングしたものです

16 :
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

17 :
構文の一部分だけを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 のループには名前をつけること。

18 :
>>15
そんなもったいねーことしねーよ…
普通にFIR作ればいいじゃん…

19 :
16bit幅のデータを、他のデータと足並みを揃えるために、
20clock遅延させたいです。
FIFOを使えば良いのでしょうか?

20 :
普通にシフトレジスタだろ。

21 :
教えていただきたいのですが
case文のステート内に更にcase文を構築することは可能でしょうか?
例えば
case(a)
1: begin
case(b)
1: begin
.............
.............
のような書き方はできるのでしょうか?
回答よろしくお願いします。

22 :
なぜ出来ないと思うのか?
なぜやってみないのか?

23 :
確かに貴方の言う通りだと思います。
もう少し自力で頑張ってみようと思います。
回答ありがとうございました。

24 :
できるけどソース見づらくなるからやめれ。

25 :
そだね、case({a,b}) にしたほうがいいかも。

26 :
Case分って良く使う?
if分ばかりでやってるので、使ったことないよ

27 :
見やすくなるからcaseのほうがすき

28 :
// parallel case

29 :
回答ありがとうございます。
結局、別の方法で希望の動作を実現することができました。
これから前回の質問の件も検証してみようと思います。
ありがとうございました。

30 :
FIR,IIRフィルタ,FFTならSpiralだろう

31 :
教えてください
HDLを書かなくても、CでFPGAが使えると聞いたのですが、
マイコン程度の知識で、使えるようになるでしょうか?
FPGAの中にマイコンを組み込めば...という話ではなくて、
HDLを使わなくても、ベタにFPGAが使えるか、という意味です。

32 :
やめておけ。
実用レベルじゃない。

33 :
10年以上前からそんなこと言ってるけど
未だに実用化できてないよな。

34 :
FPGAがなくても世界は全然困らない。

35 :
>31
評価ボードを使うとかの特殊な状況じゃなければ、少なくとも一人は合成やHDLの知識を持ってないと難しいと思うよ。

36 :
>>31
どちらかといえば”全部”知っとけ?
全部をCで書くことなどないだろうから
HDLに限らずモデルをそのままFPGAに反映する場合には、
さらに上位ツールとmixさせてつかうし、
Cの合成物は仕組み上、配線性が悪いものができるんで
合成やレイアウト上のケアも普通のHDL設計よりは気を使う
必然的に、全部知っていないとデザインも具体的利用法も浮かばないという訳
その中には、”マイコン程度”で動かすCの知識も含まれることもある

37 :
>>34
久しぶりに全部74シリーズで組んでみるか?

38 :
>>31です。
みなさん、どうもありがとうございました。
僕が考えているほど簡単にはできないみたいですね。
10年前から言われていて、まだのようでしたら、当分無理っぽいですね。
Cならマイコンでできますが、HDLはやったことがないんです。
やっぱりHDLは避けられないみたいですね。
if( reset == 1 ){
  a=0;  初期化を書く
} else if( clock == 1 ){
  ここに希望する処理を、複数行で記述する。
  しかしそれらは全行同時に処理される。
}
のように書けばいいなら、
Cでできるのではないか?と考えました。

39 :
ってか、C言語じゃなくていいから、C-Likeで書ける言語作ってほしいわ
begin end じゃなくて { } の方がいいし
switch文なんてまったく別の構造してるし

40 :
↑verilogの話ね

41 :
>>39
そのくらい自分でパーザ書けばいいじゃんw

42 :
>>38
Cで書いたとしてもハードウェアを記述したらHDLではないだろうか?

43 :
ていうか、
VHDLの長い表記、Verilogのbeginがいやなのです。
Cのように、洗練された記述で書けないものかと思いまして。

44 :
もうソフトCPUでもつくってそこで処理でもさせろよ

45 :
> Cのように、洗練された記述
SFLでも使えば?

46 :
Co-Simで出来た様な気がする。

47 :
>>26
FPGAだとifよりcaseの方が小さくて速い回路になったりするよ。

48 :
>>47
だよね、一概には言えないけど。

49 :
>>47
2:1のパラシリ変換case文で作ると1GHzくらいでうごいてくれるもんね.

50 :
Verilogでの { NUM { enb }} をVHDLではどう記述すれば良いでしょうか?
( others => enb )を思い付きましたが回数が指定できないので・・・

51 :
>>47
条件分岐ガ同じならかわらない

52 :
手動で配置配線すればいいじゃない

53 :
その前に、ゲートで設計しなきゃな。

54 :
ぉ、おぅ

55 :
せやな

56 :
保守

57 :
ハードウェア記述言語やってて生きる就職先ってどこですか?
大手でも中小でもいいので知りたいです。

58 :
IPの設計をしたいならIPベンダかシステムハウス(っていうのかな?)
合成とかレイアウトとかバックエンドの仕事もいいかもね。
でもどっちも仕事の波が激しそう。
やっぱ公務員かな。

59 :
土方志望とは・・・

60 :
インドだな
HDLの前に英語やヒンドゥ覚えなきゃ

61 :
ヒンドゥは無理っぽいから英語を覚えよう
インド訛りの英語ってどんな感じだろ

62 :
ヒンディ語のことか?(ヒンドスタンの言葉)

63 :
>>38
ソフトでも複数の言語やってれば分かると思うけど、
一つの言語を覚えれば、
次以降の言語は比較的簡単に覚えられる。
最も大事なのは記述方法より考え方だから。
HDLもそれと同じで、
記述方法がCライクであれ、VHDLであれ大事なのは考え方。
見た目がCと違ってもそれは大した問題ではない。

64 :
>>61
何語か分からんかった

65 :
教えてください。
Verilogで、
assign A = ( B==X )? C : 0; という書き方があります。便利なので結構使っているのですが、
ある人から、
assign A = ( B==X )? C
      : ( B==Y )? D
      : ( B==Z )? E
      : ( B==Q )? F
      : 0;
というのはやめた方が良いと言われました。理由を聞いてもわからないらしいです。
何個も続けて書くのは、なぜ行けないのでしょうか?

66 :
>>65
排他的な条件ならcase(or ca)のほうがいいって話かな?
?〜:はif〜elseそのものだから多段にすると優先順位付として合成されるので
サイズ的にもタイミング的にも無駄が多くなる。

67 :
理由がわからないのに使うななんて
いうヤツを信用すんな。
オレなら徹底的に議論する。
2個ならいいのか?
3個はどうなんだ?ん?

68 :
>>66
そうだよな。
優先順位付ける必要のないものにわざわざ優先順位をつけて、
でかくて遅いコンビ回路にするのか分らないよな。

69 :
俺は活用しまくってるけど?
いちいちfunctionにすると可読性落ちるしめんどいし
てか、遅くはなるけど、でかくはならんだろ?
クリティカルパスにならなければ速度関係ないし

70 :
非同期でalwaysとかprocessとか使うと
センシティビティ・リスト書くのが面倒なので
可能なら>>65の書き方にしたいところ。

71 :
>>70
Verilog2001はセンシティビティ・リスト不要だろ
verilog2001非対応ってどれぐらいあるんだ
可能ならってどういうときが可能な場合?

72 :
if()文だと、ANDゲートのカスケーディングですよね。だから最初のAND1から
ANDの数だけ伝達が遅くなって、1clockに収まらなくなるということですよね。
case文は優先順位がないとすると、
どのようなロジックで構成されるのでしょうか。

73 :
>>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]は自分でやってくれ。

74 :
>>72
いまどきそんなアホな合成ツールもないと思うよ。
ちなみに case にも優先順位はある。
本来は合成ツールに、優先順位なしで合成してねって伝えるべき。

75 :
Verilogでmodule宣言時にoutput reg xxxと書いているのですが、書籍やネットでは、この記述はあまり見かけません。
何か問題があり、使わない方が良い記述なのでしょうか?
module output_ex(
   output reg [3:0] AAA,
   output reg BBB
);
またinout reg xxxxも使用したいと思うのですが、こうは記述できないのでしょうか。
入力信号とreg信号の見分けがつかなくなるので、無理な気もするのですが。
そのあとにinoutはregとassignが並んであまり綺麗に見えません。
何か良い記述方法があれば教えてください。

76 :
>75
inout reg を作るとなると書いた値が読めない(Zを書くと入力値が読める)ってことになって面倒くさそう。
で、inout regがだめなんだからoutput regも諦めた方が一貫してていいや、みたいな。

77 :
>>75
> output reg [3:0] AAA,
> output reg BBB
は、できる。
というか、俺は、それでしか書いたことがない。

78 :
>>75
何も問題ない
年寄りが自分が最初に覚えた方法だけで書いてるからだ
以前は合成ツールが対応していないなんて状況があったらしいが、
俺が始めた2004年には問題なく使えてた
同じ事を2度書くのはバカのする事だ
いつまでも同じやり方でしか出来ないのはもっとバカだ

79 :
ISEの受け付ける文法にトラウマもってる奴は多いだろうから仕方ない。
つうか、2004年だと ISE Webpack 6 の時代だが、
10くらいまで実際にいろいろダメだった気がすんだが、何使ってた? >78

80 :
できるだけどのツールでも動くように〜って考えるとどうしても古い書き方になるよな。
generateはもう使えないところなさそうだけど、interfaceはどうかしら…みたいな。

81 :
>>79
2004年に使ったときはQuartusだった
2005年からはXilinxだけど、VHDLばかりでVerilogは使ってない
Verilog2001だから2001年に出来たんだと思うけど、そんなに最
近までだめだったのかな?
VHDL200xはいまだ微妙なのは同意

82 :
>81
そういうのAlteraは早いから。Xilinxがやる気ないというか。
Alteraの常識でXilinxはかったらあかん。
まあ要望の順位としては低いんだけど、
2002年登場のSystemVerilogのISEでのサポート、
首を長くして待ってるんだが実装の気配もないぜ。

83 :
>>82
XiはISEでSystemVerilogをサポートするすると聞いていたが
まだ(ISE13.4でも)していないのか。
IC屋の世界じゃSystemVerilogがもう普通に使われているのかな
以外にSystemVerilogよりSystemCだったりして

84 :
12.1で対応するよ〜とかフォーラムで言ってたのに結局対応しなかったけどどうなの?って誰かが質問してて
14.1で対応するよ〜って返事があったのは見た気がする

85 :
それじゃ16か18ぐらいには対応するかな?

86 :
XはAutoESLがそのうちバンドルされる
有償版の上位Editionになると思うけど

87 :
AutoESLってC系ツールなのか
XilinはSystemCを推し進めるのかな

88 :
今も限定的だけと個別ツールとしてAutoESL販売してる
バンドル化されればC系推しがさらに進むでしょう

89 :
verilogとtcl/tkはどっちが役に立ちますか?

90 :
開発言語覚えずにスクリプトだけ覚えて役に立つの?

91 :
tcl/tk ならGUI作れて便利じゃん

92 :
HDL初心者ですが。
複雑な論理合成回路を記述する際に、状態遷移図を起こして
記述するのが効率がよいでしょうか。
複雑なものとして、たとえばSDRAMアクセスや、プロトコルスタックの処理など
HDLソースだけでは、頭の中でもう追えない状態の場合です。
C言語であればフローチャート図でしょうか、HDLの場合効率よく記述するために
よく使われている手法はどんなのでしょうか?

93 :
>>92
エクセルで状態を言葉で詳細に書く。

94 :
オレはパワーポイント

95 :
>>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
みたいな感じ

96 :
なんか俺俺自己満足コードって感じで読みにくいな

97 :
状態で分けるならcaseだろう
なんでifなんだよ?

98 :
>96-97
別に書き殴りのコードの質なんかどうだっていいだろう。
どうでもいいところに突っ込んでごちゃごちゃ言い訳が返ってくるほうが鬱陶しい。

99 :
書きなぐりでもひどい

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
発振器スレ (404)
Arduino 信者は何故、かくもキモくてバカなのか? (438)
ハードオフのジャンクを語るスレ (226)
Arduino 信者は何故、かくもキモくてバカなのか? (438)
★ オペアンプ #7 (932)
【Cortex-】 やっぱARMっしょ 5 【AxRxMx】 (862)
--log9.info------------------
バンドマンとTATOO・刺青 (227)
IDにバンド関係用語を出すスレ (909)
◆◇広島のバンド事情◆◇ (820)
ジャンヌコピーとラルクコピーどっちが痛い? (442)
グルーヴって何? (722)
V系とかカスだろ!! (260)
栃木のバンド事情 (525)
売れるバンド売れないバンドの条件 (652)
バンドやってんのに楽譜も読めないバカ野郎共〜2 (240)
おすすめの邦楽バンドをおしえてくれい (306)
【ポーザー】HEAVY METALバンド専用スレッド【禁止】 (467)
何でギターはスタジオですぐピロピロ始めちゃうの? (215)
見てて痛かったライブ (369)
【愛知】練習スタジオ情報スレ【名古屋】 (213)
打ち込みを使ってLIVE!! (760)
バンド経営学を考えよう。 (622)
--log55.com------------------
【新店】大分のラーメン屋【老舗】
関東二郎インスパ情報交換スレ 6杯目
【松戸】中華蕎麦 とみ田6
京都のガン、バクリレスハゲを語れ
うまいラーメンショップうまい 57杯目
山梨のラーメン屋 Part71
さいたま市内のうまいら〜めん屋66杯目
【ブーチャン】ラーメン二郎亀戸店 その34