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

このエントリーをはてなブックマークに追加
1774ワット発電中さん

 HDLの処理系も、それを実際に動かすシミュレータ・評価基板も、
 安価で入手できるようになってきました。

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

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

 前スレ
  【Verilog】記述言語で論理設計 Project9【VHDL】
       カモメが飛んで、どこかに行ってしまいました〜

2774ワット発電中さん:2010/09/17(金) 01:06:23 ID:32avVtN9

参考情報
  FPGA
    Xilinx (p)http://japan.xilinx.com/
    ALTERA (p)http://www.altera.co.jp/
    Lattice  
(p)http://www.latticesemi.co.jp/products/cpldspld/index.cfm?source=topnav
    Actel   (p)http://www.actel.com/intl/japan/
    QuickLogic http://www.quicklogic.co.jp/ 30日間無料だと思った。
ワンタイムだけどね・・・
  ASICベンダ推奨ツール類(高価)
    Synopsys http://www.synopsys.co.jp/
    Cadence http://www.cadence.co.jp/
    Mentor http://www.mentorg.co.jp/
    Synplicity http://www.synplicity.jp/
  Verilogシミュレーター(無料)
    Icarus http://icarus.com/
      説明 http://ryusai.hp.infoseek.co.jp/icarus.htm
      
http://www.ice.gunma-ct.ac.jp/~kimsyn/verilog/FreeSim/iverilog/iverilog.html
    IVI http://ivi.sourceforge.net/
      説明
http://www.kumikomi.net/article/explanation/2005/10icarus/01.html
  VCDフォーマットの波形表示(無料)
    GTKWave http://www.cs.manchester.ac.uk/apt/projects/tools/gtkwave/
      説明 http://ryusai.hp.infoseek.co.jp/gtkwave.htm
         
http://www.is.kyusan-u.ac.jp/cgi-bin/is-admin/wiki.cgi/CAD?page=GTKWave
  本
    CQ出版 http://shop.cqpub.co.jp/
    STARC  http://www.starc.jp/index-j.html
    Design Wave Magazine(DWM) http://www.cqpub.co.jp/dwm/ 2009/03で
終了してまった。
    Interface http://www.cqpub.co.jp/interface/
      ※基板が付録で付いている号はバックナンバー希少になりがち
  関連スレ
    フリーのツール(情報追加よろしく!)
      ALTERA Quartus II Web Edition http://www.altera.co.jp/
      XILINX ISE WebPack http://www.xilinx.co.jp/
    評価基板とか(追加情報よろしく!)
      Spartan-3 Starter Kit
http://www.xilinx.co.jp/products/spartan3e/s3eboards.htm
      CQ出版のシリーズ http://www.cqpub.co.jp/eda/
3774ワット発電中さん:2010/09/21(火) 13:31:12 ID:lXOzHvl+
初めての

>>1
4774ワット発電中さん:2010/09/23(木) 15:18:05 ID:BxsPrNCp
5774ワット発電中さん:2010/09/25(土) 16:13:06 ID:i4SdgpWb
>>4
>http://kamome.2ch.net/test/read.cgi/denki/1284233269/
はFPGA/CPLD/VHDL/Verilog/論理設計を扱う人の雑談スレですよ
6774ワット発電中さん:2010/09/25(土) 19:31:41 ID:77GtutG2
教えて下さい

Verilogで、16bit配列変数をRS232で送信する部分を作っていますが
うまくできません。何がいけないのか教えてもらえないでしょうか?

reg [15:0] sokutei_data[0:7];  //測定値16bitを、16個用意

always @ (・・・・・) begin
    ・
    ・
  soushinRS232( sokutei_data[1][15:8] );  // 上位1文字送信
    ・
    ・
  soushinRS232( sokutei_data[1][7:0] );  // 下位1文字送信
    ・
    ・
end

soushin_dataの代わりに、
reg aaa;
aaa<=16'b3132;
とすればターミナルに ちゃんと 1 2 と表示されます。
配列には、何か制限があるのでしょうか。
宜しくお願いします。
7774ワット発電中さん:2010/09/25(土) 19:36:24 ID:oT6ulhGi
そりゃあ,どういう回路を合成すれば良いのか想像すれば良いだろうて
8774ワット発電中さん:2010/09/25(土) 20:29:39 ID:P8uVj9YZ
soushinRS232て下位モジュール?
なんでalwaysの中にあるんだ?
ソフト組んでるのと勘違いしてない?
9774ワット発電中さん:2010/09/25(土) 20:47:08 ID:54+nKoUz
そりゃ、sousin232() は、タスクなんだろうさ。

多重配列はできないから、8ビットの変数に変えるか、一旦、別の変数に入れてから代入するしかない。
10774ワット発電中さん:2010/09/25(土) 22:04:09 ID:bMY4baeb
だめだこりゃ。最初っから勉強やり直しな。
11774ワット発電中さん:2010/09/25(土) 22:23:38 ID:77GtutG2
さっそく、ありがとうございます。

>soushinRS232て下位モジュール?
下位モジュールでした。記述は間違っています。すみません。
大ボケしてました。

>多重配列はできないから、8ビットの変数に変えるか、一旦、別の変数に入れてから代入するしかない。
16bitの変数の上8bitを取り出したいだけなのですが、多重配列になってしまうのでしょうか。
マイコンのCとは感じが違いますね。

その後いろいろやっていて、下のように書いたらたくさんのエラーが一気に消えました。
  TXchr <= { sokutei_data[15], sokutei_data[14], sokutei_data[13], sokutei_data[12],
        sokutei_data[11], sokutei_data[10], sokutei_data[9], sokutei_data[8] };
  TXgo <= 1'b1; // 送信開始。下位モジュールに知らせる
if(送信終了した) begin
  TXchr <= { sokutei_data[7], sokutei_data[6], sokutei_data[5], sokutei_data[4],
        sokutei_data[3], sokutei_data[2], sokutei_data[1], sokutei_data[0] };
  TXgo <= 1'b1; // 送信開始。下位モジュールに知らせる
ソースが長くなって、見た目ちょっと格好悪いですが、正しく動いています。

>どういう回路を合成すれば良いのか想像すれば良いだろうて
これがわかりません。回路と言っても、D-FFが16個並んでいて、
それが8列あって、添え字デコーダー(アドレスデコーダー)があって、各列のCEにつながって
同時に各列のQをセレクタで1列に選択。その選択された上位8bitを束で扱ってくれれば
いいと思うのですが。違うかな。
12774ワット発電中さん:2010/09/26(日) 01:00:23 ID:yiZicgPC
>>11
>多重配列になってしまうのでしょうか。
配列にはビット幅選択ができないが正解
13774ワット発電中さん:2010/09/26(日) 01:17:09 ID:5hVievFb
ありがとうございます。
>配列にはビット幅選択ができないが正解
あっ、なるほど、僕がやったsokutei_data[15]の書き方は、
「ビット選択」であって「ビット幅選択」ではないからOKということでしょうか?

でも、配列のbit幅選択ができないのはツライと思います。シリパラ変換が楽にできないです。
  P <= { P[14:0], RXin };
と、スマートに書けないので、
  P <= { P[14], P[13], P[12], P[11], P[10], P[9], P[8], P[7], P[6], P[5], P[4], P[3], P[2], P[1], P[1], P[0], RXin };
と、なってしまいます。
これを考えて、変数名を短くしておかないと大変なことになりますし。

どんな回路になるか想像してみ、と言われたのですが、
通常の変数では可能なのに、なぜ配列変数だとbit幅選択が出来ないのでしょうか?

VHDLでも同じなのでしょうか。
14774ワット発電中さん:2010/09/26(日) 01:21:32 ID:yiZicgPC
>TXchr <= { sokutei_data[7], sokutei_data[6], sokutei_data[5], sokutei_data[4], sokutei_data[3], sokutei_data[2], sokutei_data[1], sokutei_data[0] };

>ソースが長くなって、見た目ちょっと格好悪いですが、正しく動いています。

が既に変だと気づいているか? 本当に確かめてるのか疑問だよw

15774ワット発電中さん:2010/09/26(日) 03:15:29 ID:hGZ2vKWo
配列なんか滅多に使わんよ。
16774ワット発電中さん:2010/09/26(日) 09:42:51 ID:/26YjQRI
soushin232 (soukuteidata[0] >> 8);
ってやれば、上位8ビットが渡せるよ。
soushin232 (sokuteidata[0]);
で、下位8ビットが渡る。(上位は無視される)

17774ワット発電中さん:2010/09/26(日) 13:16:17 ID:yiZicgPC
>>15
テストベンチ書いたことないの? 実際にはメモリ記述だけどな。

>>16
ウソつけ
18774ワット発電中さん:2010/09/26(日) 13:20:48 ID:hGZ2vKWo
>>17
ベンチでも配列は滅多に使わないな。
メモリのビヘイビアではさすがに使うが。
19774ワット発電中さん:2010/09/26(日) 15:22:46 ID:5hVievFb
>>16
ありがとうございます。
やってみました。バッチリ動きました。
1行でスマートに書けて、ソースが見やすくなって、とても嬉しいです。(AD堀くん風)
今度からは、これでいこうと思います。ありがとう。

ところで
always @ ( posedge reset or posedge clk ) begin
  if( reset ) begin
    sokutei_data[0] <= 0;
    sokutei_data[1] <= 0;
    sokutei_data[2] <= 0;
    sokutei_data[3] <= 0;
    sokutei_data[4] <= 0;
    sokutei_data[5] <= 0;
    sokutei_data[6] <= 0;
    sokutei_data[7] <= 0;
  end else begin
とか書いています。
上記のようなresetの時だけでなく通常の状態遷移の中でも、次のステートに行く前に、
変数をクリアしておきたいことが多々あります。そのときに、毎回8行書いています。
何かお間抜けな感じがしてなりません。もっと簡単にというか少ない行で書きたいです。
調べてみると、VerilogにもCのようにfor()があったので、これを使って書いてみました。
  for( a=0; a<8; a++ ) begin
    sokutei_data[a] <= 0;
  end
しかし、あえなく撃沈。forの行でエラーになりました。
エラー内容の説明が英語でよくわかりませんでしたが、その行のようです。
for()でやるのはいけないのでしょうか。
そもそもfor()の動作がイメージできません。1clockで動作するHDL記述中で
繰り返し文は、そこに来たら1clock期間内にclockの8倍とか10倍で動くわけではないと思います。
かといって、8clockや10clockかかっていては、他に対して遅刻してしまいます。
どのように考えれば良いのでしょうか?
日曜日にすみませんが、宜しく教えていただけないでしょうか
20774ワット発電中さん:2010/09/26(日) 15:25:18 ID:dk6901zH
integer a;

for ( a = 0; a < 8; a = a + 1 ) begin
 sokutei_data[a] <= 0;
end
21774ワット発電中さん:2010/09/26(日) 16:23:20 ID:1eyWdHPL
>8clockや10clockかかっていては、他に対して遅刻してしまいます。

シミュレータでも使って勉強してみたほうがいいんでない?
22774ワット発電中さん:2010/09/26(日) 16:32:31 ID:5hVievFb
>>20,21
ありがとうございます。
これから出かけてしまうので、試すことができないです。すみません。
++は使えませんでしたね。忘れていました。a<=a+1でなくていいんですね。

町まで出るので、大きめの本屋さんに寄ってVerilogの本を見てみます。
シュミレーターは、ベンチを書くのが面倒なので、オシロとロジアナで
実際のピンの波形を観察しています。
ありがとうございました。
23774ワット発電中さん:2010/09/27(月) 03:15:29 ID:1jFjNDLI
for()は、記述を簡単にするだけの働きだよ。まるでマクロみたいなもん。
1文字違いの記述を100行書くより、for()で書けば中身は1行で終わる。
マイコンだとforを使うと、スピードがガタっと落ちるけど、FPGAは関係なし。
これはちよっと嬉しい、FPGAのアドバンテージね。
24774ワット発電中さん:2010/09/27(月) 12:57:37 ID:TOuYAIyE
>>20
integer a;
このaは、32bit幅でしょうか?
for ( a = 0; a < 8; a = a + 1 ) begin
 sokutei_data[a] <= a;
end
としたとき、aのbit幅とsokutei_data[]のbit幅を
合わせないといけないですよね。
25774ワット発電中さん:2010/09/27(月) 14:56:14 ID:PnYs1ElK
>>24
integer のビット数は“32bit 以上”としか規定されていない。(実装依存)

代入時、ビット長が長いときは上位ビットが捨てられる。
ビットが足りないときは、符号拡張される。但し、ちょっとややこしい。

気持ち悪かったら reg [2:0] a; でもいいけど、for 文がうまく終了しないね。
26774ワット発電中さん:2010/09/27(月) 21:46:06 ID:vpn19l6/
XC9500XL使ってます

WARNING:Cpld:265 - Logic for net 'XXX' exceeds physical capacity of device

ってどういう警告ですか?
今のところ実機でも問題なく動いているようですが、
どんな問題が起こる可能性がありますか?
27774ワット発電中さん:2010/09/27(月) 22:10:12 ID:YL+ptGsB
そのあとはこんな風にメッセージ続いてない?

The logic will be broken into intermediate nodes.

さぁエキサイト翻訳だ。
2826:2010/09/28(火) 09:15:07 ID:e5hif5DO
>>27さん
ありがとうございます。

XXXのロジックはデバイスの物理的限界を超えています。
中間ノードでロジックは壊れるでしょう。

って感じですか?
今の時点では動いているのですが、動作環境やロットが変われば
動かなくなっても知らないよって感じの警告なのでしょうか?

対策って何かありますでしょうか?
合成オプション帰るくらいで乗り切れるといいのですが。
29774ワット発電中さん:2010/09/28(火) 21:13:19 ID:HjqJyz7U
broken は「壊れる」じゃなくて「分ける」だと思うな。

----
ロジックは中間のノードに分割されます。
----
30774ワット発電中さん:2010/09/29(水) 07:05:57 ID:ahjJeAs7
NET'XXX'のロジックがややこしすぎるんで,複数のノードに分けたぞ!
>対策って何かありますでしょうか?
記述を変える
特にCPLD使うときはセルの構造がどうなっているのかに配慮して
書いてやらないとね。(言語の入門書のような単純なロジックを
のんびり動かすくらいならどうでも良いけど)
31774ワット発電中さん:2010/09/29(水) 12:55:55 ID:YgV5k56X
Verilogで、文法上のチェックを厳しく出来ないでしょうか?
reg [7;0] hoge;

if( ... ){
  hoge <= 0;
}

というとき、8'b0でないとエラーが出るとか
32774ワット発電中さん:2010/09/29(水) 13:00:11 ID:hGQa9/P3
>>31
文法上はあってる。
VerilintやSpygrass使えば?
33774ワット発電中さん:2010/09/29(水) 23:27:03 ID:wkJRdjJN
>>31
そのまえにbegin〜end使えよ
34774ワット発電中さん:2010/10/01(金) 12:46:45 ID:MUJCD7hd
8'b00000000;
8'h00;
8'd0;
のいずれかにして欲しいです。
35774ワット発電中さん:2010/10/02(土) 02:17:24 ID:JajdXH5y
>>31
そのまえにif分に<=使うな
36774ワット発電中さん:2010/10/02(土) 02:26:48 ID:u5xhAqSM
>>35
え?
37774ワット発電中さん:2010/10/02(土) 03:10:00 ID:vmCajdmy
>>35
は?

>>33
begin→{
end→}
にして、連接の{ } は、begin end にする。
そうすれば、記述が楽ちんなのになぁ。
beginをbiginと書いたりするオレは、HDL書きには不向きかも・・・・
38774ワット発電中さん:2010/10/02(土) 08:58:14 ID:mTnP7EJH
if 文に <= を使うなとか、ただの 0 はいやだとか、
それは、文法を変えてくれってこと?
いやだったら Verilog なんか使うなよ。
39774ワット発電中さん:2010/10/02(土) 09:45:31 ID:ey0NXHTo
>>37
コンパイル前に置換するバッチいれれば?
40774ワット発電中さん:2010/10/02(土) 11:56:50 ID:+832tUK3
>>37
プリプロセス通す人もいるとかいないとか・・・
ソースを人に見せないといけない事もあるから俺は使わない。
41774ワット発電中さん:2010/10/04(月) 12:33:09 ID:PN1zpTU3
>連接の{ } は、begin end にする。

ということは
例えば符号拡張の記述なんかはこんな感じか?w

wire [15:0] a;
wire [31:0] b;

//b = { {16{a[15]}} ,a };//現行 verilog

b = begin begin 16 begin a[15] end end ,a end;//提案 verilog


う〜ん、慣れればなんとかなるかな・・・
42774ワット発電中さん:2010/10/05(火) 09:56:46 ID:i1wP+g+h
出現頻度の問題だね
現行のBEGIN endのほうが 圧倒的に多いからね
43774ワット発電中さん:2010/10/07(木) 16:12:05 ID:rZz0T8fM
レジスタは
リセット用のif,
イネーブル用のelse if、
そのほかのelse

だけで書けば1レジスタに1個のbegin end
44774ワット発電中さん:2010/10/07(木) 16:37:20 ID:GEk7/Ulx
レジスタごとに always を分けるんですね、わかります。
45774ワット発電中さん:2010/10/09(土) 11:02:54 ID:BOgCJ9gF
>>44
それが普通だと思うけど。
46774ワット発電中さん:2010/10/11(月) 01:11:38 ID:+AqCpI80
reg [4:] count;
reg   LED;

always @ () begin
  if( xxxx) begin
    count <= count + 4'b1;      // ここで加算して
  end
end

always @ () begin
  if( yyyy ) begin
    count <= 4'b0;      // ここで Resetし
  end
end

assign b = (count < 4'b 1101 )? 1'b1 : 1'b0;  // そしてここで使う

こんな書き方(1つのregを異なるalwaysにまたいで使用する)は、
いけないのでしょうか?
47774ワット発電中さん:2010/10/11(月) 01:17:46 ID:ulfFf3To
>>46

ハードウェア化するのならだめですよ。

48774ワット発電中さん:2010/10/11(月) 13:58:40 ID:icmTtydw
賢いコンパイラならエラー吐きそうだな。
49774ワット発電中さん:2010/10/11(月) 23:34:35 ID:ulfFf3To
エラー吐かない合成ツールはないと思うwww
50774ワット発電中さん:2010/10/12(火) 13:09:12 ID:Gjm9xS4w
シミュレータなら実行するまでエラーにならないかな?
51774ワット発電中さん:2010/10/12(火) 16:28:50 ID:kU1eIDz+
icarusバージョンあがんないなー。

>>46
icarusなら一応とおるっぽいけど推奨は絶対にしない。
52774ワット発電中さん:2010/10/12(火) 23:00:22 ID:I2WJHawa
HDL書いてISEを通したとき、
OKの緑色○は、最近ほとんどお目にかかれない。黄色△ばっかり。

みなさんワーニング取ってますか? 全部取れますか? いくつあっても、ほったらかしですか?
53774ワット発電中さん:2010/10/13(水) 01:29:29 ID:rF0lNm84
ワーニングは全部は取れないw
でもほったらかしではないよ。
54774ワット発電中さん:2010/10/13(水) 02:54:09 ID:bhPNjf+d
>>52
理由を理解できているワーニング以外は全てなくす。
っていうルールにしている。
55774ワット発電中さん:2010/10/14(木) 19:29:09 ID:BmDJbGcq
>>50
文法的にはOKだからシミュレータはエラーを吐かない。
56774ワット発電中さん:2010/10/16(土) 12:06:15 ID:WbJRPf+R
ISEでVerilogを勉強しているのですが、ISEでは回路図入力もできます。
そこで 教えてください。
1 今でも回路図入力って使われているのでしょうか?
2 回路図は、一旦VHDLに変換されてから、処理されるようです。
なぜVerilogでなく、VHDLなのでしょうか?

3 Verilogを勉強しているのですが、VHDLのふうが優れているのでしょうか

4 ISEの内部では、VerilogもVHDLに変換してから、処理されるのでしょうか?

5 就職したら、VHDLのほうが有利なのでしょうか?
57774ワット発電中さん:2010/10/16(土) 15:24:46 ID:85QhaJVw
ISEの開発者がVHDLが好きだったんじゃない?
Verilogができれば、VHDLは特にできなくても良いと思う。自然と読めるようになる。
先輩から聞いたら、VHDLのほうがタイプ数が多いので、周りからカッコ良く見られるらしい。
58774ワット発電中さん:2010/10/16(土) 23:06:27 ID:16BTA383
>>56
1. 一部では使われている。が少数派。
2. Xだから
3. 言語自体に優劣はない。仕事(要求)にあわせるもんだ。
4. 否
5. VHDL(Verilog)できます。ってだけで就職はできない。
59774ワット発電中さん:2010/10/18(月) 08:20:17 ID:JqDNou9J
>>58 が言うように、HDL できるだけじゃだめだよね。
ソフト屋だってコードが書けるだけじゃダメなはずなんだけど・・・
VHDL か Verilog かは会社の方針とかしがらみだかんね。

純粋にロジックをやりたいなら、いろんなアルゴリズムとか
数学系の勉強しておいたほうがいいよ。
回路が好きなら、アナログとかセンサーとか、あと基板周りとか。
論理設計にこだわるのはいいけど、外の世界も見ないとね。
60774ワット発電中さん:2010/10/18(月) 18:01:20 ID:Ajo7YCKT
>>59
>VHDL か Verilog かは会社の方針とかしがらみだかんね。

通信系はVerilogが多く、画像系はVHDLが多いイメージがあるな。
なんでかは知らん。
61774ワット発電中さん:2010/10/18(月) 22:59:46 ID:n2l3J0u6
VHDLは知らないけど、
バス表記のとき (7 downto 0)とか書くみたいですが、
(0:7)のときは、(0 upto 7)と書くのでしょうか?
62774ワット発電中さん:2010/10/18(月) 23:52:26 ID:MZQo5F++
(0 to 7)
63774ワット発電中さん:2010/10/19(火) 00:04:07 ID:moLf8/mm
ありがとうございます。

あと、(0 downto 7)って書くと、エラーになりますか?
64774ワット発電中さん:2010/10/19(火) 00:34:30 ID:LhZTlRnG
それは試せば分かるだろw
65774ワット発電中さん:2010/10/24(日) 03:29:25 ID:KGnFwTE7
FPGAに限れば、Verilogの方がいい気がする。
まあFPGAとかだと、どちらも要求に応じて必要になってしまうのだけど。
66774ワット発電中さん:2010/10/24(日) 21:26:17 ID:oHIlQ+Ow
記述の多さで、VHDLはイヤだ
67774ワット発電中さん:2010/10/24(日) 23:34:17 ID:ZkA1zyPc
最上位階層でコンポーネント同士をただ繋ぐだけでとんでもない記述量になるw
68774ワット発電中さん:2010/10/25(月) 02:10:34 ID:rDqN6Pr4
>>66
>記述の多さで、VHDLはイヤだ
「マクロなどを使えば簡単に記述できる」などと言われそうだから、もっと正確に言った方が良い。

  記述が多くて可読性に劣るので、VHDLはイヤだ

69774ワット発電中さん:2010/10/25(月) 13:45:02 ID:6OyeZG+R
VHDL書いてる人は、
70774ワット発電中さん:2010/10/26(火) 11:55:55 ID:ahHoz0o/
人生で初がスケマで
その後VHDLをやったときに相当感動したっけ。

で、先生からVerilogやってみない?といわれ
自「あー、やっぱやめときます」
先「だめ、後の研究生もそれでやるんだから」

で、感動してしまったのが懐かしい。
71774ワット発電中さん:2010/10/26(火) 13:49:31 ID:tKYPj0JY
2つ目の感動は何に感動したん?
72774ワット発電中さん:2010/10/26(火) 20:51:17 ID:v5ggYu3j
verilog ≒ C
VHDL ≒ PASCAL
73774ワット発電中さん:2010/10/26(火) 21:49:17 ID:h5jMC5LC
それを言うなら VHDL≒Ada だろ

BEGIN〜ENDがあればみんなPASCALかい?
74774ワット発電中さん:2010/10/26(火) 21:50:56 ID:yGV/w+ZC
ブロックがbegin〜endで、; がデリミタであって文の一部でないあたり、
どっちもAlgol/Pascal/Adaの系譜だろ。VerilogをC側に分けるほど違う気はしない。
75774ワット発電中さん:2010/10/27(水) 22:49:48 ID:kJ1/huQC
シミュレーションが早いだけでもVerilogが優位。
FPGAに関して言えば、対応規格にも差がある・・・はず。
最新の開発環境だと、VHDLってどこまで対応してるのかな?
VHDL2002は対応してるのかな?VHDL93とVerilog2001がメインなイメージ。
下位互換とか、無視して採用も出来ないだろうし、色々面倒。
76774ワット発電中さん:2010/10/27(水) 23:45:26 ID:fpU3JB8q
デバイスのシミュレーションモデルは大抵Verilogで
SecureIPになってたりするからVHDL派は肩身が狭い。
77774ワット発電中さん:2010/10/28(木) 03:43:33 ID:8yPV4xTS
Verilogに対して、VHDLの優れているところは、どこですか?
78774ワット発電中さん:2010/10/28(木) 08:42:10 ID:yGePmh47
国防相に出すときは VHDL 指定だったかな
79774ワット発電中さん:2010/10/28(木) 09:03:38 ID:SCgWAd57
>>77
形宣言とかに
厳格な所とか?

これ、触ってからverilogに行くと
手の抜きどころが絶妙で感動した
80774ワット発電中さん:2010/10/28(木) 11:20:25 ID:q8Qw/9UD
VHDLの厳格さは使う側からすると厳格すぎて
優れているどころか大きな欠点。
81774ワット発電中さん:2010/10/28(木) 12:35:16 ID:ytbReRY/
型が厳格だから、些細なバグに悩まされなくてすむ。
合成出来たら、あとは論理的なバグに注力出来る。
82774ワット発電中さん:2010/10/28(木) 13:23:48 ID:5J7rv/N+
1行いくらでやってる人は行数が増えると嬉しいんでは?
83774ワット発電中さん:2010/10/28(木) 17:00:03 ID:8yPV4xTS
1行いくらという勘定の仕方は聞いたことある。
プリント基板の「1ピンいくら」と同じでしょ。

でもコメントをいっぱい書いたら、それで行数増えるけど、金額UP?
84774ワット発電中さん:2010/10/28(木) 20:32:56 ID:HpJDytGG
VHDL別にそれ程記述量が増えるとも思わないが、
componentだけはいただけない。
その他は言語として素晴らしいと思うよ。
85774ワット発電中さん:2010/10/29(金) 08:29:57 ID:+/L8A4qr
>>84
Adaのモジュール構造を引き継いでいるからね。
compornentのお陰でモジュール間の差異を、コンパイラーが厳格にチェック出来るのと、
インターフェースさえ決めてしまえばチームで実装出来る。

でもまぁ、キチンと設計して実装している人には、余計お世話かもしんない。
俺は「メンドーな事はコンパイラがチェックしてくれよ〜」だから、重宝してる。
86774ワット発電中さん:2010/10/29(金) 15:37:59 ID:ZmcOjoOX
VHDLでCLKに同期してカウントし、Aの「立ち上がり」で非同期にリセットされる
カウンタが作りたいんだけど、どういう記述にしたらいい?
下のは駄目だったんですけど。

process(CLK,A) begin
if(A'event and A='1') then
COUNT <= "0000000";
elsif(CLK'event and CLK='0') then
if(COUNT="1100111") then
COUNT <= "0000000";
else
COUNT <= COUNT + '1';
end if;
end if;
end process;
87774ワット発電中さん:2010/10/29(金) 15:54:28 ID:XZRreZT8
if (A = '0') then
88774ワット発電中さん:2010/10/29(金) 15:55:33 ID:XZRreZT8
あ非同期リセットしか読んでなかった
89774ワット発電中さん:2010/10/29(金) 16:13:45 ID:ZmcOjoOX
>>87
「立ち上がり」でたのみます
90774ワット発電中さん:2010/10/29(金) 19:05:09 ID:2LdgpvTa
>>86
> VHDLで
と言う事ならそれでいい。
シミュレーションではまともに動く。言語としてはそれで合ってる。

もちろん意図としては合成出来したいってことだろうから、
それに関しては出来ないとしかいえんな。
Verilogでもスケマでも不可能。

何か条件があればできる可能性はある。
たとえばこんなのでも、かまわんとか。
U1 : Delay port map(IN=>A, OUT=>B); -- ディレイ素子があるとして・・
process(CLK,A,B) begin
  if(A='1' and B='0') then
    COUNT <= "0000000";
  elsif(CLK'event and CLK='0') then
    if(COUNT="1100111") then
      COUNT <= "0000000";
    else
      COUNT <= COUNT + '1';
    end if;
  end if;
end process;
仮にディレイ素子が合ったとしても、
CLKとのタイミング的な競合も含め、(A='1' and B='0')のパルス幅に熟考が必要。
91774ワット発電中さん:2010/10/29(金) 19:23:50 ID:ItmkHvyh
>VHDLでCLKに同期してカウントし、Aの「立ち上がり」で非同期にリセットされる
>カウンタが作りたいんだけど、どういう記述にしたらいい?

非同期信号を使うとトラブルの元になるから、適当に早いクロックで
サンプリングして動かしてやるのが吉だけどね。
あとは、「見た目だけ取り繕うテクニック」もいいかもしれない。
・出力がすべて'0'になればリセットされたように見える
・リセット後のCLKの立ち上がりで"0000001"が出てくれば
 0から1にカウントアップしたように見える



9286:2010/10/29(金) 19:29:02 ID:ZmcOjoOX
>>90
回答ありがとうどざいます。
なるほど、参考になりました。
9386:2010/10/29(金) 19:38:48 ID:ZmcOjoOX
>>91
回答ありがとうどざいます。
低めのクロック使ってるんでそれもいいですね。
94774ワット発電中さん:2010/10/30(土) 00:06:17 ID:hP7x0ctq
>>86,90
86さんとおなじことをやったことがあるけど、それっぽくできたような。
90さんが言うように、RTLシミュはできるけど合成が出来ない、って
こと?
僕のときはactelで、合成ツールはsinplifyだったかな。むりやり出来
てたのかしら。

>>91
単なる非同期なら、極力同期化すべきで賛成だけど、リセットだけは
非同期がよかろう、ってケースがおおいんだよなあ。起動時とか。
95774ワット発電中さん:2010/10/30(土) 07:25:42 ID:S1khkalT
>>94
リセット解除とクロックタイミングで、妙な状態に飛び込まないように
気をつけないと、痛い目にあいかねないけどね。
96774ワット発電中さん:2010/10/30(土) 09:59:35 ID:dsuht36f
教えてください。

教科書本には、

always @ ( posedge RESET or posedge CLOCK ) begin

と書いてありますが、RESET信号がありません。なので

always @ ( posedge CLOCK ) begin

だけで済ませています。
これは、いけないこと(常識外れ)でしょうか?
FPGAはVirtex4で、ISE11.4でやっています。
97774ワット発電中さん:2010/10/30(土) 10:10:32 ID:ldjSwsQV
まあ、非同期リセットなしで同期リセットだけでもいいんじゃね。
シミュレーションしにくいけど。
98774ワット発電中さん:2010/10/30(土) 11:35:03 ID:g/1nA4o+
リセット信号がほしいなら、コンフィグROMの終了でリセットICをスタートさせる。
99774ワット発電中さん:2010/10/30(土) 12:33:31 ID:S1khkalT
グローバルなリセット信号を用意して、シミュレーション時にはそれを
非同期リセットとして使う。
実装段階ではグローバルリセットがクロック同期するよう、グローバルリセット
信号生成ロジックだけを差し替える。

今はそこまでシビアにならなくても大丈夫だよ・・って話も聞くけど
ロートル管理職を納得させるにはそのくらいの細工を入れておくほうが
無駄な小競り合いを避けられる。
100774ワット発電中さん:2010/10/30(土) 13:03:56 ID:0yabBdhV
PLLのロック信号をリセットとして使う方法もあるよね。
101774ワット発電中さん:2010/10/30(土) 13:11:58 ID:e1sJuiBU
FPGAの場合はRESETを付けるデメリットが無いから、ほぼ無条件に入れてる。
102774ワット発電中さん:2010/10/30(土) 16:15:38 ID:Q0bK7lOn
でもucfでRESETピンを割り付けないといけないでしょう?
どこにつないでいるの?
103774ワット発電中さん:2010/10/30(土) 17:01:05 ID:rVjP/6G3
どっか余ってる入力ピンw
俺も無条件にRESET使ってるけど、デメリットは感じないな〜。
RESET無かったら「無いの〜」って言われるし説明が面倒だから。
104774ワット発電中さん:2010/10/30(土) 17:01:56 ID:NkO7zUOD
105774ワット発電中さん:2010/10/30(土) 18:16:51 ID:Q0bK7lOn
>>103
だもその余っている入力ピンは、どこにつなぐの?
RESET ICを置くの?

>>100
RESETのために、DCMを使うってことだね。
106103:2010/10/30(土) 23:15:17 ID:rVjP/6G3
>>105
何がしたいの? 知りたいの?
使いたくなきゃ使わなければいいし、使いたきゃ使えばいいだけ。
真面目に話すと、俺が基板も含めて設計する時RESETピンは基板上でプルアップして使っていない。
じゃあ何のためかっつうと、起動時に周囲も含めた状態で挙動不審な動きした時とかの
デバッグ検証用の保険として使っている。後、他の人も言ってるがRESET無いと嫌がるお上がいるんだよ。
107774ワット発電中さん:2010/10/31(日) 00:26:20 ID:Cr+NaknY
リセットが無いと嫌な俺はロートルだったのかorz

まぁ、最近じゃFPGAだけじゃなくて、
ちょっとしたASSPとかMCUもリセットなしで動くみたいだけどね。
108774ワット発電中さん:2010/10/31(日) 03:30:05 ID:6JQ/vp4x
FPGAには、特にRESET用のピンはないけど、CPLDには、GSRがある
109774ワット発電中さん:2010/10/31(日) 10:20:51 ID:zaNJ0z47
>>107
コストダウン要求が厳しい民生用途の場合、リセットICは無論、リセット用のCR
さえも削ろうとするんで、とりあえず外部リセット信号が無くても電源が規定
の立ち上がりをすればOKという風になってきているしね。

おかげで、その前提条件を理解せずに作ってしまって「時々立ち上がらなく
なります。MCUがおかしいんじゃないでしょうか?」なんて言っちゃうのが
出てきたり。
110774ワット発電中さん:2010/10/31(日) 11:15:55 ID:ckyeg0Qi
リセットがないんじゃなくて内部でやってるだけだろ。
111774ワット発電中さん:2010/10/31(日) 12:24:17 ID:zaNJ0z47
当然。
112774ワット発電中さん:2010/10/31(日) 12:27:21 ID:ctMOvTIi
で、心配性のひと(特にロートル)は内部リセットが
信用できないので外部からリセットを入力するんだ。

ちなみに私は外部リセット派(ェ、マダシラガナイヨ
113774ワット発電中さん:2010/10/31(日) 12:39:02 ID:Cr+NaknY
外部リセット不要なのはいいけど、
電源の立ち上がり時間に対する要求が厳しくなると、
それはそれで面倒な事になるね。

その辺のバランスを取るのが、
これからの設計では重要になるんだろうな。
114774ワット発電中さん:2010/10/31(日) 12:45:19 ID:kJ+wS+Cn
何にせよリセットボタン付けといてくれよ。
電池はずしたりコンセント抜いたりはマンドクセ
115774ワット発電中さん:2010/10/31(日) 12:54:07 ID:zaNJ0z47
で、リセットボタンのチャタリング対策をどうするんだ?とかって
なったりするわけだ。
オジサン達を相手にするのもなかなか大変だろうけど、頑張ってな。
116774ワット発電中さん:2010/11/01(月) 12:34:41 ID:l25J36u8
リセットボタンならチャタリングあっても何の問題もないんじゃね?
117774ワット発電中さん:2010/11/01(月) 21:04:07 ID:Qy5tMuxK
FPGAとASICでかなり事情が違うと思うのだが・・・
118774ワット発電中さん:2010/11/02(火) 12:40:35 ID:U02vJayf
はじめてISE12を使ってみたけど、11より動きが速いような気がする。
気のせい?
119774ワット発電中さん:2010/11/02(火) 13:44:04 ID:U02vJayf
118ですが、やっぱり12は軽く動くと思います。
RTL Schematic表示の時に、F7/F8の拡大縮小が速くなったです。
外部Editorを使ってソースを開いていると、
シンセシスがスタートできないみたいだけど、optionで直るかも。
120774ワット発電中さん:2010/11/03(水) 03:19:12 ID:BH4omwdB
13はいつ出るんだ?
GUIに慣れ「よ〜し、頑張るぞ」と言うときに限ってVer UPするんだよな。
121774ワット発電中さん:2010/11/03(水) 13:26:56 ID:M4YUPvbm
動作軽くなるのうれしいね!
11はすぐに考え事するからね・・・w
122774ワット発電中さん:2010/11/03(水) 15:36:22 ID:sbrIDIuL
>>120
噂では来年の3月/4月位らしい。
123774ワット発電中さん:2010/11/07(日) 01:59:52 ID:To6N+x2o
教えてください。

Verilogのテストベンチについてです。
例えば、以下のような記述をします。

initial begin         ←1行目
     a = 0; b = 0;    ←2行目
  #10 a = 1;        ←3行目
  #10  a = 0; b = 1;    ←4行目
  #10  a = 1;        ←5行目
  #10  a = 0; b = 0;    ←6行目
  #10  $finish;       ←7行目
end               ←8行目

1行目にbeginとありますが、このbeginに対応するendは8行目だと思います。
そうするとこのbegin〜endは、initialの内容範囲を示すもののように思えます。
initialは初期値なので2行目だけであり、1回目の#10以降はinitialではないように思うのです。
つまり、こんな感じです。
initial begin         ←1行目
     a = 0; b = 0;    ←2行目
end               ←8行目
  #10 a = 1;        ←3行目
  #10  a = 0; b = 1;    ←4行目
  #10  a = 1;        ←5行目
  #10  a = 0; b = 0;    ←6行目
  #10  $finish;       ←7行目
「別にそんなこと、どっちでもいいじゃん」と思うもしれませんが、釈然としません。
このinitialとbegin〜endの関係について、おわかりになる方がいらしたら、理由を教えて
もらえないでしょうか?
124774ワット発電中さん:2010/11/07(日) 02:02:52 ID:To6N+x2o
追記です。

あるいは、以下のようだととても自然に納得できるのですが。

begin              ←1行目
  initial  a = 0; b = 0;   ←2行目
  #10   a = 1;       ←3行目
  #10    a = 0; b = 1;   ←4行目
  #10    a = 1;      ←5行目
  #10    a = 0; b = 0;   ←6行目
  #10    $finish;     ←7行目
end              ←8行目
125774ワット発電中さん:2010/11/07(日) 07:08:08 ID:o/nFaw3Q
なに言ってんだこいつw
126774ワット発電中さん:2010/11/07(日) 08:30:24 ID:ONIXqEZr
ゆとり&ほめて育てる教育受けてきた”俺様坊主”のなれの果て
127774ワット発電中さん:2010/11/07(日) 09:08:08 ID:ES4nwEBD
アホの子がいる
128774ワット発電中さん:2010/11/07(日) 11:59:55 ID:/R1bEoQx
begin〜endを{ 〜 }に置き換えてみればしっくりくる。
て、その話題は>>37 >>41で既に見たな。
129774ワット発電中さん:2010/11/07(日) 12:08:03 ID:hOublnGs
ワロスww
130774ワット発電中さん:2010/11/07(日) 12:57:19 ID:U8sUoM48
みなさん、ありがとうございました。

みなさん知らないということですね。

了解しました。
131774ワット発電中さん:2010/11/07(日) 13:20:20 ID:ONIXqEZr
>initialは初期値なので2行目だけであり、1回目の#10以降はinitialではないように思うのです。
はっきり言えば、ここから既に間違ってるわけだ。
132774ワット発電中さん:2010/11/07(日) 13:58:33 ID:/R1bEoQx
え?あれって質問してたのw

>釈然としません。
って言ってるから、質問してるんじゃなくて
納得の仕方を聞いてるだけに見えたんだがなぁ。

んなもん自分でシミュレーションして覚えろ。
133774ワット発電中さん:2010/11/07(日) 14:21:17 ID:NRBkWOFe
みんな仲良く
134774ワット発電中さん:2010/11/07(日) 15:42:13 ID:Z93yO2IY
親身になって相談に乗りましょう。

あなたが学生さんなら、その課題は昼飯1回で誰かに写させてもらい、
HDLのことはスッパリ忘れてしまいましょう。

不幸にして、あなたが社会人なら、急いで転職先を探しましょう。
135774ワット発電中さん:2010/11/07(日) 15:47:22 ID:ES4nwEBD
えっ?言語仕様に文句言ってるだけでしょ?
136774ワット発電中さん:2010/11/07(日) 16:18:30 ID:3lC04Mur
×初期値
○初期化
137774ワット発電中さん:2010/11/07(日) 19:42:14 ID:BVaeIQRT
>>123
そういう決まりだから文句言ってもしょうがない。
そのように書く理由は、ここのスレの奴らじゃ答えられるわけがない。
138774ワット発電中さん:2010/11/07(日) 23:26:13 ID:f0Iu49nv
文句あるなら自分で言語作ればいいよ。誰も使わんだろうけど。
139774ワット発電中さん:2010/11/07(日) 23:39:31 ID:NRBkWOFe
ジム・クラークやアイルトン・セナなど、優れたドライバーは問題のあるマシンであっても
すぐさま適応して乗りこなしていた。
140774ワット発電中さん:2010/11/07(日) 23:50:16 ID:us1elT1Y
>>139
じゃあ何故セナは死んだんだろな?
もっとましなこと言えないのかなあ。
141774ワット発電中さん:2010/11/08(月) 00:28:02 ID:fyX6W2ux
正直
1-1=0になるのが納得できません
って言ってるように感じる
答えようがない
142774ワット発電中さん:2010/11/08(月) 00:33:57 ID:QVz8IN+1
>>141
オマエVerilog素人だろ。
Verilogの代入は、いろいろと納得できない種になってるんだぞw
143774ワット発電中さん:2010/11/08(月) 02:30:39 ID:nRF1EhfB
ザイリンクスのページから、ISEデザインシートというフリー版のFPGA開発ソフト
をダウンロードしました。
もしこれの使い方で質問があるときは、どうすればいいのでしょうか。
フリー版なので、サポートはしないことになっているみたいです。
電気をやるのは私一人で、まわりに聞ける人がいないんです。
144774ワット発電中さん:2010/11/08(月) 02:35:04 ID:4WH88VA6
xilinx forum
145774ワット発電中さん:2010/11/08(月) 05:57:46 ID:fyX6W2ux
>>142
お前123か?
言語仕様で論理的整合性に合わなく納得できないということは
確かにある。
でも上で言ってるのは、そうじゃないだろww
146774ワット発電中さん:2010/11/08(月) 12:15:37 ID:C9UaQTid
>initialは初期値なので
initial: happening at the beginning
であって、「初期値」ではないのだな。

最終的な回路の状態は、initialが$finishした後の状態で、
そこに至るまでのところはいわば「initial」の範疇だと思えばいいんでは?

簡単な例で言えば「外部から与えられた値を順に加算していく
回路」があったとする。
ここに1から10までの値を順に与えていったとき
結果が55になっているというのが「得たい結果」であって、
そのために10回に分けてデータを与えるようなものを「initial」
として定義したのだと。

ただ、我々としては$finishに至るまでの途中経過こそが見たい部分
だということが多いんだけどね。
147774ワット発電中さん:2010/11/11(木) 03:11:50 ID:WHrRSRvI
input [1:0] a,b;
output a_win,b_win,even;
上記のようにすると入力a,bは2ビットになります。10をグー、01をチョキ、11をパーとします。
aが勝ったときはa_winが1、bが勝ったときはb_winが1、あいこのときはevenが1、それ以外は全て0が出力されるような回路を作りましょう。
(宿題の丸投げではありません。私はベリログ独学です)
148774ワット発電中さん:2010/11/11(木) 04:01:40 ID:xXzDlE3h
最後の一文で、元々なかった答える気が完全に無くなるなw
149774ワット発電中さん:2010/11/11(木) 04:13:57 ID:DLGu7gL8

`default_nettype none
`defin go_ 2'b10
`defin pi_ 2'b01
`defin pa_ 2'b11
`defin winA 1
`defin winB 2
`defin aiko 3

module tsurikamo (
  input  wire     clock,
  input  wire     reset,
  input  wire  [1:0] a, b,
  output wire     a_win, b_win, even
);
  reg [3:0] pattern;
  reg [1:0] result;

  assign pattern = { a, b };

  always @ ( posedge reset or posedge clock ) begin
    if( reset == H ) begin
      result <= 0;

    end else begin
         if( pattern=={go_,go_} ) begin result <= `aiko; end
      else if( pattern=={go_,pi_} ) begin result <= `winA; end
      else if( pattern=={go_,pa_} ) begin result <= `winB; end
      else if( pattern=={pi_,go_} ) begin result <= `winB; end
      else if( pattern=={pi_,pi_} ) begin result <= `aiko; end
      else if( pattern=={pi_,pa_} ) begin result <= `winA; end
      else if( pattern=={pa_,go_} ) begin result <= `winA; end
      else if( pattern=={pa_,pi_} ) begin result <= `winB; end
      else if( pattern=={pa_,pa_} ) begin result <= `aiko; end
    end
  end

  assign a_win = (result==`winA)? 1'b1 : 1'b0;
  assign b_win = (result==`winB)? 1'b1 : 1'b0;
  assign even = (result==`aiko)? 1'b1 : 1'b0;

Verilog歴 半年の私が書きました。評価をお願いします。
150774ワット発電中さん:2010/11/11(木) 04:28:43 ID:DLGu7gL8
最後に
endmodule 忘れました
151774ワット発電中さん:2010/11/11(木) 07:24:37 ID:L/bM/yVc
ゴー、ピー、パーってのは、方言なのか?
152774ワット発電中さん:2010/11/11(木) 07:26:15 ID:L26gaHlM
グー:10
チョキ:01
パー:11
かぁ・・
とりあえず、AとBのXORを取って0になれば「あいこ」だ。
あいこじゃないときは
・Aの上位ビットと下位ビットのXORをとったものをXA
・Aの上位ビットとBの上位ビットのXORをとったものをXBH
・Aの下位ビットとBの下位ビットのXORをとったものをXBL
として、
XBH='0'でXBL='0'ならあいこ
あいこじゃないなら、
XA='1'でXBH='1'でBの下位ビットが'1'ならAの勝ち
XA='0'でXBH='0'で、Bの下位ビットが'0'ならAの勝ち
これ以外ならBの勝ち
153774ワット発電中さん:2010/11/11(木) 07:27:27 ID:L26gaHlM
あっ・・
>とりあえず、AとBのXORを取って0になれば「あいこ」だ。
>あいこじゃないときは
を消し忘れたわ。すまん
154774ワット発電中さん:2010/11/11(木) 10:57:07 ID:GkDKhcM6
module janken(a,b,a_win,b_win,even);
input [1:0] a,b;
output a_win,b_win,even;

reg [2:0] d;

always @( * ) begin
 case( {a,b} )
  4'b1010: d = 3'b001;
  4'b0101: d = 3'b001;
  4'b1111: d = 3'b001;
  4'b1001: d = 3'b100;
  4'b0111: d = 3'b100;
  4'b1110: d = 3'b100;
  4'b0110: d = 3'b010;
  4'b1101: d = 3'b010;
  4'b1011: d = 3'b010;
default: d = 3'bxxx;
 endcase
end

assign { a_win,b_win,even } = d;

endmodule
155774ワット発電中さん:2010/11/11(木) 17:23:06 ID:L26gaHlM
合成ツールの論理圧縮に期待する・・と
156774ワット発電中さん:2010/11/11(木) 19:00:17 ID:hDOv5AuN
Verilogで、TextファイルのROMデータ5000個を、配列に格納しようと思います。
さすがにTextファイルに
  dat [ 0 ] = 16'h0000;
  dat [ 1 ] = 16'h1234;  データには規則性がない
というのを延々と書いて、includeというのも、どうかな、と思います。
generate文とfor文でうまくできればいいのですが、考えられませんでした。
どのようにしたら 間違え少なく、効率よく書けますでしょうか?
157774ワット発電中さん:2010/11/11(木) 19:05:27 ID:q9lqH7O8
$readmemh
158774ワット発電中さん:2010/11/11(木) 20:19:18 ID:hDOv5AuN
>>157
ありがとうございます。
それは、システムタスクですよね。
実際に合成して使いたいのですが、使えるのでしょうか?
159774ワット発電中さん:2010/11/12(金) 00:14:35 ID:Np0yvXqi
>>158
ターゲットがASICかFPGAかによるけど、
その場合はROMのマクロセルの仕様に従う必要がある。

無論、レジスタファイルに配置するというのなら、
直接記述するか、includeして使う事になるとは思う。
160774ワット発電中さん:2010/11/12(金) 11:12:37 ID:ogK3OB3d
初心者ですが、戸惑うことが多すぎて質問もできませぬ。
ここの過去スレを参照したいんですが誘導して頂けませんでしょうか。
161774ワット発電中さん:2010/11/12(金) 12:22:46 ID:xx9u9uSe
>>160
2chのサーバーが不調で、過去スレは消えました。

Googleで、
記述言語で論理設計Project
で検索するといいです。
162774ワット発電中さん:2010/11/12(金) 18:29:10 ID:ogK3OB3d
あぁ、消滅してしまってたんですか… 残念。
レスありがとうございます。 そのワードで検索してみます。
163774ワット発電中さん:2010/11/14(日) 14:28:34 ID:qYZiFvU3
下記のようなメモリ回路を設計したい.
[1]メモリは2ビットで8ワードの容量(=16ビット)をもつ.
[2]このメモリの入力はD, WR, AD, 出力はQとする.
  (D, Qは2ビット, ADは3ビット, WRは1ビット)
[3]常にAD番地のメモリの値がQに出力される.
[4]WRの立ち上がりでメモリのAD番地にDが記憶される.

下のように作ったんですが、8行目にエラーがあるようです。
error:always statement does not have any delay.
A runtime infinite loop occur.
と表示されてしまいました.どう直せばいいですか?
http://www.dotup.org/uploda/www.dotup.org1249535.txt.html
164774ワット発電中さん:2010/11/14(日) 15:05:17 ID:lF0pKt97
>>163
always文にセンシティビティリストが入ってないですよ。

Verilogの文法書を参照して見てはどうでしょうか?
165774ワット発電中さん:2010/11/14(日) 15:13:13 ID:MkWaYwTZ
>>163
WRの立ち上がりってどこで表現してるの?
Dを記憶しているようにもみえないし。
166774ワット発電中さん:2010/11/14(日) 15:37:43 ID:pOLooUH9
>>163
エラー箇所以外にも突っ込み所満載なんだけど。
とりあえず、何でWRをqに入力してるのw

あと、大文字と小文字で信号名を区別するのはやめようよ。
後で絶対混乱する(他の人が
167774ワット発電中さん:2010/11/15(月) 07:34:45 ID:YS/Udhps
>error:always statement does not have any delay.
>A runtime infinite loop occur.
位、ちゃんと読め。
読めないならこの世界からさっさと足を洗え。将来、周囲の皆が迷惑する。
168774ワット発電中さん:2010/11/15(月) 12:24:04 ID:MV3xwkiA

always @ (…) begin 〜 end は、知っていますが

always @ (…) fork 〜 joinというのも書けるのでしょうか?

169774ワット発電中さん:2010/11/15(月) 23:50:59 ID:c1H6PMUm
>>167
まぁまぁ
170774ワット発電中さん:2010/11/15(月) 23:57:10 ID:G7qa0/E6
>>168
ちったあ自分で調べろよ
頭悪すぎるぞ

とか他人には偉そうに言うくせにwww
171774ワット発電中さん:2010/11/17(水) 12:11:05 ID:5nWbn5rp
殺伐とした雰囲気ですが、発言良いでしょうか?

RTLとHDLの違いを教えてください。
みなさん、区別せずに使っているように思うので、
ここで一つ、意味を確認しておきたいと思うのです。

RTL = Registered Transfer Logic    和訳:レジスタでトランスファーするロジック

HDL = Hardware Description Language  和訳:ハードウェアをデスクリブションするランゲージ

ここまでは調べて、なんとかわかりました。
これらの違いがわかりません。
172774ワット発電中さん:2010/11/17(水) 13:42:56 ID:hlEglMNv
Wikiより
HDLに基づく論理合成が登場し、HDLはデジタル設計の表舞台に立つようになった。
合成ツールはHDLのレジスタ転送水準(Register Transfer Level: RTL)を記述したソースファイルを
コンパイルし、製造可能な論理ゲートやトランジスタのネットリスト記述を生成する。当初のシステムでは、
合成可能なRTLファイルを書くには熟練を要した。RTLで合成したネットリストは、従来の設計に比べると
サイズが大きく、性能も悪いことが多かった。熟練技術者による回路図による設計は、論理合成した同等の
回路設計よりも常に優れていたが、論理合成の生産性の良さから、RTL合成が不得手としていた高速低電力な
回路や非同期回路でもHDLが採用されていった。論理合成は、単にHDLをデジタル設計の中心に押し出した
だけでなく、それ自体がデジタル回路設計のための画期的技術であった。 回路図による設計とRTLによる設計は、
プログラミング言語におけるアセンブリ言語による設計とC言語による設計の関係に似ている。
173774ワット発電中さん:2010/11/17(水) 15:07:38 ID:hdxVnKdn
RTLってのはハードウェア記述の抽象度のレベルのひとつで、
レジスタからレジスタへの値の移動、代入文で動作を記述するようなレベルを指す。

HDLってのはハードウェアを記述する言語ならなんでもHDLなので、
RTLで記述するものもあれば、ネットリストを記述するものもあれば、どちらもという言語とか
いろいろある。
174774ワット発電中さん:2010/11/17(水) 18:10:54 ID:5nWbn5rp
>>172, >>173
ありがとうございました。
私も>>172の文章を読みましたが、結局どうなのか、わからなかったです。
お二人のお話を見ると、同じ土俵で比べるものではないということですね。
例えば、プリウスと自動車みたいな感じですね。ありがとうございます。
では、今日から私は、RTLを使わずにHDLを使うことにしたいと思います。
どうもありがとうございました。
175774ワット発電中さん:2010/11/17(水) 20:48:57 ID:JjFkboUs
VerilogとかVHDLなんかはHDLだよ。
その中のレベルの話。
RTLで書かないと相変わらず合成できない。
176774ワット発電中さん:2010/11/17(水) 21:11:37 ID:AG28VE3t
生物学で考えると、

原子 < 分子 < 細胞 < 臓器 < 生物個体 < 群集 ・・・

とスケールレベルを挙げることができるけど、
デジタル回路の場合、

電子 < トランジスタ < AND、OR等基本ロジック < RTL < モジュール ・・・

と動作、設計レベルを挙げることができる。

HDLというのは上記の「AND、OR等基本ロジック」以降を記述する手法。

物事をより分かり易く、単純に考えれるようにするという
人間の知恵の賜物だね。
177774ワット発電中さん:2010/11/17(水) 21:35:58 ID:Sea1Rx5p
>>176
知能はどっから発生しますか?
178774ワット発電中さん:2010/11/17(水) 21:50:28 ID:AG28VE3t
>>177
う〜ん、それはシナプス細胞の構成で得られる「機能」と捉えられるだろうから、
スケールレベルには並べられないかもね・・・
179774ワット発電中さん:2010/11/17(水) 21:54:44 ID:NKW9SgW/
HDLを使ってRTL記述ができるということは、
RTLを記述する用途にHDLが利用可能ということ。

うーむ、イマイチな説明だ。
180774ワット発電中さん:2010/11/18(木) 00:44:16 ID:YvUBwPBn
Verilogを使いCISCのCPUを作ろうと思っているんですがお勧めの本などはありますか?
簡単なRISCのCPUの設計はわかるんですがCISCのCPUをどのように実装すれば良いのか
まったくわかりません
181774ワット発電中さん:2010/11/18(木) 01:21:12 ID:LsUuBGme
パタヘネとヘネパタに載ってなかったら論文読みあさるしかないんじゃね?
182774ワット発電中さん:2010/11/18(木) 05:00:42 ID:ynGzmIEp
CISCのキモはマイクロプログラムだよ
183774ワット発電中さん:2010/11/18(木) 05:54:00 ID:HhjwC4bV
CISCはRISCのインタープリタで動いていると考えるんだ。
184774ワット発電中さん:2010/11/18(木) 07:06:20 ID:epHVtsws
>>180
「わかりません」じゃねぇだろ。「模範解答がみつかりません」だろ?
自分で考えもしないで「わかる」わけがない。
185774ワット発電中さん:2010/11/18(木) 08:48:59 ID:2lj2TVjY
マイクロプログラム方式のサーベイなら bit 別冊「ダイナミック・アーキテクチャ」
186774ワット発電中さん:2010/11/18(木) 12:37:29 ID:YvUBwPBn
>>181-185
ありがとうございます
望んでいるような本はないみたいですね
マイクロプログラム方式を調べてVerilogで実装していこうと思います
187774ワット発電中さん:2010/11/18(木) 13:34:11 ID:7i5Ii01R
Z-80 は、RISC なのか CISC なのか?
188774ワット発電中さん:2010/11/19(金) 08:12:22 ID:xtyysEAR
Z80はCISC
189774ワット発電中さん:2010/11/20(土) 00:47:47 ID:6RjRBDan
教えてください

wire    [15:0] a;  // unsigned 16bit
wire signed [15:0] b;  // signed 16bit

assign b = a; // signed にキャスト 0〜65535が、-32768〜+32767に。

unsignedの値を、signedにキャスト代入するのは上記の方法でよいでしょうか?
190774ワット発電中さん:2010/11/20(土) 00:50:58 ID:IWFduM0h
まずは自分で試せ
191774ワット発電中さん:2010/11/20(土) 02:16:28 ID:NwReJVzA
$
192774ワット発電中さん:2010/11/20(土) 10:34:09 ID:8L3qM4BN
assign b=a-32768;
193774ワット発電中さん:2010/11/20(土) 15:13:40 ID:2a5BSwmR
signed なんて使うなよ。
194774ワット発電中さん:2010/11/20(土) 18:09:41 ID:RATKj186
いや、signed は使うだろ
195774ワット発電中さん:2010/11/20(土) 18:59:58 ID:XLsHnBzH
俺もsignedは使わない。
負の値の処理をする時は回路的な記述にしてるし・・・。
196774ワット発電中さん:2010/11/21(日) 03:35:26 ID:IGpDSD1l
みなさん シュミレーションはやっていますか?
というのは、「チップスコープを使うようになってから、シミュレーションしなくなったなぁ」という
話を聞いたからです。
しかし、王道としては
  1) 状態遷移の設計
  2) コーデイング  次々と階層化して ドンドン制約かけて
  3) 論理シュミレーション
  4) マップ
  5) マップ後のシュミレーション
  6) チップスコープ組み込み
  7) ジェネレート
  8) 実機動作
  9) チップスコープ解析
  10) 完成
となると思うのです。
チップスコープアナライザーだけで済ませてしまって 良い物でしょうか?


197774ワット発電中さん:2010/11/21(日) 03:38:20 ID:44/HwDu7
ドキュメント
198774ワット発電中さん:2010/11/21(日) 03:54:38 ID:d6uQl8bq
趣味レベルならシミュレーションは不要
199774ワット発電中さん:2010/11/21(日) 06:37:12 ID:5c6f6tne
>>196
実機が一人一台あればいいんじゃねえ
200774ワット発電中さん:2010/11/21(日) 11:15:17 ID:iJWx+bKO
RTL出してから実チップが出るまで6ヶ月くらいかかるし、
サインオフできないからしゅみれーしょんしてるよ。
201774ワット発電中さん:2010/11/21(日) 14:22:44 ID:Ci4Yyu+K
サインオフとは何ですか?
202774ワット発電中さん:2010/11/21(日) 14:24:16 ID:uFreOV4U
いまどき6ヶ月もかからないよ。少なくとも論理検証できるESサンプルはね。

余程取引先に舐められてるとしか思えん。
203774ワット発電中さん:2010/11/21(日) 21:03:22 ID:iJWx+bKO
35n でもそんなんでできる?
なんか、レイアウトに時間かかるらしい。
まあ、かなりなめられてはいるけど。
204774ワット発電中さん:2010/11/21(日) 21:59:35 ID:5iirFTEO
レイアウト工数が把握できていない時点でダメな発注元だw
というかレイアウト考えてRTLやSDF作成してないんじゃないか?
205774ワット発電中さん:2010/11/21(日) 22:26:04 ID:9VTYWdIf
新人の練習専門だったりw
206774ワット発電中さん:2010/11/21(日) 23:19:43 ID:5iirFTEO
>>203
製造プロセスも明示せんのに、35ns大丈夫とか質問する神経を疑うのだがw
半導体ハードウェアについて無能ってことでOK?
207774ワット発電中さん:2010/11/21(日) 23:46:14 ID:onFzVxvw
あるか分からんけど35nmじゃないの…
208774ワット発電中さん:2010/11/21(日) 23:52:39 ID:5iirFTEO
>>207
ないない。
209774ワット発電中さん:2010/11/23(火) 23:15:18 ID:g4NWu7Aq
趣味レーション
210774ワット発電中さん:2010/11/24(水) 19:54:15 ID:ra+bulbb
>>206
35ns じゃねーよ 35nm だよ。
まあ、ちゃんと書かなかったのが悪いけどさ。

動作速度を ns で言うかな?MHz じゃなイカ?

レイアウトとか後工程は別の部署だから詳しくは知らないけど。
211774ワット発電中さん:2010/11/24(水) 20:15:09 ID:PUzk19I1
212774ワット発電中さん:2010/11/24(水) 20:52:45 ID:jRL+207L
>210
きみ>200じゃないでしょ。 その発言レベルはいくらなんでも>200が可哀想
213774ワット発電中さん:2010/11/25(木) 06:50:33 ID:kkfXgF4K
>>212
同じ奴だろ
214774ワット発電中さん:2010/12/04(土) 01:48:51 ID:Dj0sUn9h
Verilogは2001とか2005とかSystemVerilogとか対応形式が増えていくのに、
VHDLは全然増えていません。なぜですか?
215774ワット発電中さん:2010/12/04(土) 02:08:38 ID:HZey0YQ7
VHDLなんて糞言語だれも使ってないからだろ
216774ワット発電中さん:2010/12/04(土) 02:42:06 ID:elo507A1
軍用の規格が無闇に変わったら、それはそれで問題だと思う。
217774ワット発電中さん:2010/12/04(土) 09:08:59 ID:VcU5hilY
>>214
規格が増えてもツールの対応が中途半端だったり、
頭の固い上司がいたりして、なかなか使えないし、
古いIPとかあるから結局うれしくないよなぁ。

どうせならもっとまともな仕様で言語を作り直してほしい。
218774ワット発電中さん:2010/12/05(日) 00:58:13 ID:4Uo4t5Fz
>>217
小規模なFPGAなら、チームで好きに出来るんだろうけどね。
それでもSystemVerilogなんて選択肢になく、Verilog2001とかになるんだろうけど。

作り直した言語は、よほどのことがない限り主流にならない気がする。
IT系ならいざ知らず、保守的なこの業界は、とくに。
あとSystemCには、早めに滅びて欲しい。
219774ワット発電中さん:2010/12/05(日) 17:28:44 ID:GI4/qXNh
>>218
>>あとSystemCには、早めに滅びて欲しい。
よこやりですまんが、何で?
「そろそろ真面目に勉強した方がいいかな。」とか考えてたもんで・・・
220774ワット発電中さん:2010/12/05(日) 19:34:36 ID:4Uo4t5Fz
>>219
C++だから嫌なのです。もう少しマシな言語を・・・・
ソフトウェアでは、JAVAやC#のおかげで、やっとC++から解放されつつあるのに。

あとは単価が安くなりそうだからとか、C++は別に使うから頭の切り分け(似て非なる言語は辛い)に違う言語がいいとか、
ソフトウェアとは距離を置きたいとか、今と大きく変わるのは嫌だとか、そんな感じですかね。

別に何の問題もないと思うので、時間が取れるのなら勉強したらいいと思いますよ。
221774ワット発電中さん:2010/12/05(日) 20:49:48 ID:jREUiIML
なんかさぁ、無理矢理C++を拡張して
ソフト屋にもハード屋にも使えないものを作って
誰得なんだよ〜
222774ワット発電中さん:2010/12/05(日) 23:49:12 ID:7r4JGmW3
>C++だから嫌なのです。もう少しマシな言語を・・・・
>ソフトウェアでは、JAVAやC#のおかげで、やっとC++から解放されつつあるのに。

なんだそんな馬鹿馬鹿っぽい理由か

もっとSystemCの本質を突いた発言を期待したのに
223774ワット発電中さん:2010/12/06(月) 09:10:17 ID:pNghjenZ
C++ならgccが使えるから安く済むってとこだろ

gccの対応言語にVerilog-HDLやらVHDLが入れば
SystemCなんか捨ててそっち使うよ
224774ワット発電中さん:2010/12/06(月) 12:44:05 ID:gBSrHoF6
Verilog や VHDL を使わずに SystemC を使ってるの?
それで仕事になるの?シミュレーションだけなの?
225219:2010/12/06(月) 16:37:30 ID:G1cLsq9N
>>220
微妙な質問に回答ありがとう。 なるほど、似て非なる言語は面倒ですよね。
う〜ん、今後主流に発展する可能性は低いのかなー?
226774ワット発電中さん:2010/12/06(月) 18:50:10 ID:KUNd9a2n
低い
227774ワット発電中さん:2010/12/06(月) 20:26:14 ID:TVUth61h
ぶっちゃけVHDLでよくないっすか??
228774ワット発電中さん:2010/12/06(月) 21:35:24 ID:pNghjenZ
必要にして十分だが、単価が安い兵隊どもはVHDLが使えないのだよ
VHDLが使えるとなると単価が上がる
229774ワット発電中さん:2010/12/06(月) 21:38:20 ID:TVUth61h
え、VHDL使えるって価値があることなんですか!?
がんばります!
230774ワット発電中さん:2010/12/07(火) 08:56:37 ID:bq01OBsA
VHDL が残ってるうちだけだよ。
231774ワット発電中さん:2010/12/07(火) 20:30:48 ID:UbutIiCL
ここってモジュールに関する質問とかおkなんでしょうか?
232774ワット発電中さん:2010/12/07(火) 20:47:38 ID:UbutIiCL
と、テンプレ読んできたらよさそうだったので。

初歩的な質問で申し訳ないのですが、モジュールをボード上で動作させる際、
スイッチを押したかどうかの判定に、分周を用いる必要性って何でしょうか?

always @(posedge clock) begin
//スイッチの処理

となる、clockに分周を適用しているようなのですが。
233774ワット発電中さん:2010/12/07(火) 21:40:45 ID:iU+NDaMF
クロック周期<チャタリングの時間 or クロック周期≒チャタリングの時間
→分周クロックでもなんでも良いけどチャタリング対策必要

クロック周期>>チャタリングの時間
→多分、チャタリング対策しなくても大丈夫かも
234774ワット発電中さん:2010/12/07(火) 23:37:00 ID:UbutIiCL
ありがとうございます。
単純にチャタリング対策で、と考えておkということですね。
235774ワット発電中さん:2010/12/09(木) 01:58:41 ID:yvrzs/hW
>>232
>clockに分周を適用しているようなのですが。
分周って言うけど、どこに分周が出てくるの?

always @(posedge clock) begin って、
clockごとに、以下の動作を1回行うということだけど。
236774ワット発電中さん:2010/12/09(木) 17:51:22 ID:4po2xgWy
分周されたクロック=clockだと思ったけど、
もとのクロック=clockかもしれないわけですね。
237774ワット発電中さん:2010/12/09(木) 20:14:26 ID:ufAfo3Kt
奈良県 高校偏差値 ランキング 2010
http://momotaro.boy.jp/html/narahennsati.html
238774ワット発電中さん:2010/12/13(月) 22:11:00 ID:5OxEooW3
ISEのUCFについて、教えてください。

ucfファイルに、次のように書いています。

NET "data_bus[ 0]" LOC = AC16;
NET "data_bus[ 0]" IOSTANDARD = LVCMOS33;

何かにつけて、NET "data_bus[ 0]"を書いているんですが、これを1行で書けないでしょうか?
たとえば、

NET "data_bus[ 0]" LOC = AC16, IOSTANDARD = LVCMOS33;

という感じです。信号名を2回書くのは、間違いの元ですし。
239774ワット発電中さん:2010/12/13(月) 22:30:50 ID:TnZZWC6k
>>238
NET "data_bus[ 0]" LOC = AC16 | IOSTANDARD = LVCMOS33;

P40参照。
ttp://japan.xilinx.com/support/documentation/sw_manuals/xilinx11/cgd.pdf
240774ワット発電中さん:2010/12/14(火) 03:23:25 ID:NfhM5x8r
>>239
ありがとうございました。大変助かりました。
こんな資料があるとは、夢にも思っていませんでした。
探し方が足りないようでした。すみません。
241774ワット発電中さん:2010/12/23(木) 15:10:38 ID:R8bXOTPw
質問させてください
ISE12.3 + Verilogで書いています。

その中で、

1 for()の動作イメージができません。
always @ ()で、1clockごとに動作している中に、for()で10回の繰り返し処理を
記述すると、どのような動作になるのでしょうか?
A for()が10回終わるまで、他の動作は停止している。(みんな待っててくれる)
B for()が開始されるが、他の動作は停止せず動いて行ってしまう。(置いてきぼり)
C 1clockの間にfor()は、10倍のスピードで動作して、ほかの動作と帳尻が合う。(forがんばる)

Cは、絶対に無いと思いますが、2でしょうか。そうなると、for()は、何のためにあるの? という感じです。

2 for()に使用する変数の記述について、いくつかの本を見ると、
genvar i; だったり
integer i; だったり
reg [7:0] i; だったり、いろいろですが、どれが正解なのでしょうか?

3 for()の上下を、begin : LABEL , endでくくってあるものもあれば、
そのままのものもあります。これはどちらで書くべきでしょうか。

よろしくお願いします。
242774ワット発電中さん:2010/12/23(木) 17:08:45 ID:BGem5jZs
forは似たような回路をたくさん並べるために使う表現にすぎない
Cみたいな実行時演算(?)を指示する制御構文ではないよ
243774ワット発電中さん:2010/12/23(木) 20:54:22 ID:R8bXOTPw
>>242
ありがとうございます。
ということは、

reg [7:0] data [0:9];

// --------
integer i;

if( RESET ) begin
  for( i=0; i<10; i++ ) begin
    data[i] <= 0;
  end
end

と書くのは、

if( RESET ) begin
  data[0] <= 0;
  data[1] <= 0;
  data[2] <= 0;
  data[3] <= 0;
  data[4] <= 0;
  data[5] <= 0;
  data[6] <= 0;
  data[7] <= 0;
  data[8] <= 0;
  data[9] <= 0;
end

と同じということでしょうか?
つまり、コンパイラーのプリプロセッサみたいに
思えば良いでしょうか?
244774ワット発電中さん:2010/12/24(金) 09:54:25 ID:e4mZEbA8
回路合成のことをコンパイルと呼んでいるなら、その通りの解釈でOK
245774ワット発電中さん:2010/12/24(金) 11:00:31 ID:V28AUFX9
>>244
ありがとうございます。助かりました。
100個くらいの配列を100行使って、延々と記述していたのですが、
これで楽になります。
ありがとうございました。
246774ワット発電中さん:2010/12/24(金) 11:14:03 ID:zoC2ULQ6
>>243
その通りで、プリプロセッサのイメージに近いね。
VHDLは時間の概念がなくて、記述しているのはあくまで回路の「構造」にすぎない。
forと書けば、その分だけ繰り返し構造を「生成」するということになる。
247774ワット発電中さん:2010/12/24(金) 13:01:15 ID:V28AUFX9
>>246
>VHDLは時間の概念がなくて、
>forと書けば、その分だけ繰り返し構造を「生成」するということになる。
本当ですか? では、上記の例のように、配列10個を1clockでクリアするときは、
どのように記述するのでしょうか?
248774ワット発電中さん:2010/12/24(金) 13:26:18 ID:zoC2ULQ6
>>247
VHDLというか、「HDLが」だった。
>>243の例も同様で、これは時間的な処理でなく、構造を記述しているにすぎない。
1クロックでこれらの配列の要素に0が代入される。

ちなみにVHDLだと、( others => ( others => '0' ) )と書くことで、配列の全てを一気に0にすることができるので、
スッキリするよ。
249774ワット発電中さん:2010/12/24(金) 16:07:19 ID:V28AUFX9
>>248
ありがとうございます。

>ちなみにVHDLだと、( others => ( others => '0' ) )と書くことで、配列の全てを一気に0にすることができるので、
>スッキリするよ。
あ〜、それいいですね。1行で書けるのは素敵です。

さきほど、for()を使ってみましたが、エラーになってしまいました。
for( i=0; i<X; i=i+1)begin  ←エラー
end
for( i=0; i<10; i=i+1)begin ←OK
end
とりあえず数字で済ませました。

下手くそなソースが、for()のおかげで、だいぶ見やすくなりました。
今年最後のヒットでした。
250774ワット発電中さん:2010/12/24(金) 17:14:56 ID:BDBFhLk3
ソフト屋の目でヘタクソなソース言われてもねえ。
多分変更後の値を参照しようとしてハマる口だろう。
251774ワット発電中さん:2010/12/24(金) 23:40:54 ID:hYknW3OK
>>249
なんとなく。
合成後の回路を全くイメージしないままHDLを書いていそうで怖い。
回路を想像した方がいいとおもうよ。。。
252774ワット発電中さん:2010/12/25(土) 12:25:49 ID:dYHVyeh0
VHDL_AMSでモデルを作る話はこのスレでいいの?
253774ワット発電中さん:2010/12/25(土) 13:53:30 ID:c90/sOkd
>251
100個の配列とか言ってたし、合成用の記述じゃないでしょ。
シミュレーション用のテストベンチの話だと思うよ。
254774ワット発電中さん:2010/12/30(木) 11:38:18 ID:gqMSr89/
初めてQuartus IIを使おうとしているのですが、
色々な説明には登場するシミュレーション関連の機能が全くありません。
ProcessingにSimulationもなければ、Vector Waveform Fileも作れません。
これはWeb Editionだからなのでしょうか?
それとも「将来的にModelSimに一本化」というのが
バージョン10で実行されたのでしょうか。
(チュートリアルにはSimulationも表示されていますが)

以下、環境とインストールしたアプリです。使用言語はVHDL。
Windows XP Prof. SP3
Quartus II 10.1 Web Edition
ModelSim-Altera 6.6c (Quartus II 10.1)
255774ワット発電中さん:2010/12/30(木) 11:57:53 ID:gD9W9qJF
>>220
> ソフトウェアでは、JAVAやC#のおかげで、やっとC++から解放されつつあるのに。

クロックを止めたロジックセルをガベコレして、新しいロジックを上書き
するとかか?(w

VHDLやVerilogが残ってるとか以前に、へら絞り職人みたいに、残存者利益に
預かる一握りを除けば、ロリ設計もとい、論理設計レベルから新規にやる
ようなデバイス開発の仕事なんて、早晩(特に日本国内では)なくなりそうに
思うんだが?

あっても、ワードやエクセルみたく、既存の機能ロジックをペタペタ貼り
付けて終わりでそ。

本来既存の設計資産を生かすとはそういうこと。海外では分業化と資産の蓄積
と再利用が進む間に、日本国内では派遣に丸投げで、毎回フルスクラッチで
スクラップ&ビルドさせていた結果、ウラシマ状態に。
256774ワット発電中さん:2010/12/30(木) 13:20:17 ID:pWWqU41Q
>>254
>それとも「将来的にModelSimに一本化」というのが
>バージョン10で実行されたのでしょうか。

その通り。
257774ワット発電中さん:2010/12/30(木) 19:51:52 ID:gqMSr89/
>>256
ありがとうございます
大人しくModelSim使うことにします
258774ワット発電中さん:2011/01/01(土) 00:16:02 ID:ELVDqEOg
俺的にはABELが一番使いやすい
理由はプリプロセッサーと回路系がきちんと分離できているからだ
259774ワット発電中さん:2011/01/01(土) 12:04:49 ID:7aAOvYKL
なら PALASM でも使おうぜ
260774ワット発電中さん:2011/01/01(土) 17:17:28 ID:DuL/GvRA
PALASM 懐かしス。16R8とか1個1000円とかしてた気ガス。
261774ワット発電中さん:2011/01/01(土) 19:01:54 ID:I+uSuZ7D
言語としてABELも良かったけどツールはCUPLの方が好きだったかな?
すっかり影が薄くなっちゃったけどAHDLも結構好きだったよ
ABELはSynarioになってXilinxに売られ今はもうサポート外?
PALは一発書きで高かったし熱も出たよねぇ
GALが出てMMI終了してしまったが
EPROMに論理入れてた時も有ったなぁ
262774ワット発電中さん:2011/01/01(土) 20:15:40 ID:AgEEbROw
PALASMとSynarioのガードキーが
会社のどこかに転がってた気がする。
使ったことないけど。

高かっただろうに、今や誰も見向きもしない…。
263774ワット発電中さん:2011/01/02(日) 11:10:07 ID:ZJ2X966c
7セグメントLED×3をスイッチ×3(スタート、ストップ、リセット)で動作させる、という課題が出たのですが、
記述はどういう風に考えたら良いのでしょうか…?
よろしくお願いします。
264774ワット発電中さん:2011/01/02(日) 12:53:08 ID:vKflzV+Y
ABEL語で考えろ
265774ワット発電中さん:2011/01/02(日) 13:00:50 ID:ZJ2X966c
>>264
ABEL語…?
具体的にお願いします!
266774ワット発電中さん:2011/01/02(日) 19:34:13 ID:tgIGX9Wn
ステートマシンをまず作るんだ
...入門書の一冊二冊をひっくり返せば、同じ問題が回答付きで載ってるよ
267774ワット発電中さん:2011/01/02(日) 19:49:23 ID:PuBq3nIO
課題なら自分で考えさせるのが親切というものだ。
268774ワット発電中さん:2011/01/02(日) 20:25:05 ID:OZD2cQ4D
>>266
何でソフト的な解決方法とらせようするんだよ。
勉強・課題なら、王道進ませろ。
回路図でFF組み合わせてカウンタ作成しろ。
269774ワット発電中さん:2011/01/02(日) 20:40:28 ID:NfGO6ecn
>>268
ステートマシンも答えとして間違っちゃいないだろう。
オートマトンの考え方に基づく基本的な順序回路記述法。

>回路図でFF組み合わせてカウンタ作成しろ。
いきなりそれは無いだろ。
目的の動作を実現する為に、どういった機能ブロックが必要か考えるのが先だろ。
270774ワット発電中さん:2011/01/03(月) 02:13:08 ID:p4uKlagm
設計の常道としては、>>269の方針でやるのが正しいだろうね。
たまに、無茶なスケジュールで丸投げされて、
>>268のようなやり方になる事もあるけど、
後でバグが出たりスパゲッティコードになったりする。

>>263の課題の期限に余裕があるなら、
いきなり、どういう風に記述するかを考えるのではなく、
どういう動作を実現させるかという事を考えて、
仕様書を作ってから、それに沿って記述するのが良いと思う。
271774ワット発電中さん:2011/01/03(月) 10:37:03 ID:+xXYTu1T
plan->do->think->plan->do->think->plan->do->think->
272774ワット発電中さん:2011/01/03(月) 14:14:32 ID:C7VYt+l4
上流の記述だと「7セグメントLED×3をスイッチ×3(スタート、ストップ、リセット)で動作させる」でOK
273 ◆oZ0.m6plHM :2011/01/03(月) 18:12:45 ID:EeHhjIi9
>>263
ここで似たような課題やってるよ
http://monoist.atmarkit.co.jp/fembedded/index/eledrill3.html
274774ワット発電中さん:2011/01/12(水) 02:28:01 ID:yHrXUNDq
質問良いでしょうか?
メタステーブルについてです。

次のようなHDLを書いています。
module(
  wire A;  // 非同期の外部信号
);

always @ (.....) begin
  if( reset ) begin
    s <= 0;
  end else begin
    if( s==0 )begin
      if( xxx )begin
        いろいろ
        s <= 1;
      end
    end else if( s==1 )begin
      if( A == 1'b1 )begin
        いろいろ
        s <= 2;
      end
    end else if( s==2 )begin
      if( xxx )begin
        いろいろ(十分長い時間の処理)
        s <= 3;
      end
    end else if( s==3 )begin
      if( xxx )begin
        いろいろ(十分長い時間の処理)
        s <= 0;
      end
    end
  end
end

s=1の状態の時にAを見張って、A=1になったら、
s=2に行くのを期待しているのですが、s=2とならずにs=0に戻ってしまいます。
またAの信号が、メタステーブルの状態になると、
http://www.fpga-net.jp/fpga/word/metastable.html のような波形になるようです。

なぜs=0になるのか、わかりません。
仮に、Aが上記のような波形になったとしても、S=1を抜け出れば良くて、
S=2になれば、そのメタステーブルが終了するほど処理が待っています。
なのになぜかS=0に行ってしまいます。

メタステーブルに対する私の理解が不足していると思いますが、
実際にメタステーブルになると、どうなるのでしょうか?
「何が起こってもおかしくない」ということでしょうか?
275774ワット発電中さん:2011/01/12(水) 07:02:07 ID:fsImAvLC
ハードウェアなんで、プログラムみたいにシーケンシャルに処理される
わけじゃないからねぇ。
この場合だと、sのためのラッチの前段で、if〜elseなんかの組み合わせ
論理によるデータ生成のための組み合わせ論理回路(非同期回路)
が形成されるんじゃねぇの?
クロックと非同期に入力されるからビットごとに制定されるまでの時間差が
できる。
'01'=>'10'
とならなくてはならないけど、ビット0側の変化が間に合って、ビット1側が
間に合わないと'00'になってしまう。

ってあたりじゃね?
「グレイコードカウンタ」でググってやると幸せになれると思うよ。
276774ワット発電中さん:2011/01/12(水) 11:31:16 ID:4L3FIJTp
>>274
つっこみどころ満載だが、メタステーブルを避けたいのなら
A をクロックで叩けばいいだけ。2回叩けって人もいる。
277774ワット発電中さん:2011/01/12(水) 13:56:25 ID:ABVNlMj9
>>275
ありがとうございます。言い換えると、
A==1'b1の瞬間が、
偶々always(clock)の↑のメタステーブル時間に入ってしまったとき、
ということになりそうですね。理解出来ました。ありがとうございます。

>>276
ありがとうございます。さっそくやってみました。

  reg AA, AAA;

  always @ (.....) begin
    if( reset ) begin
      s <= 0;
      AA <= 0;
      AAA <=0;
    end else begin
      AA <= A;
      AAA <= AA;
        :
        :
      if( AAA == 1'b1 )begin
        いろいろ
        s <= 2;
      end
        :
        :
  結果 ・直りました。ちゃんと状態が変化するようになりました。
     ・ありがとうございました。

>つっこみどころ満載だが、
すみません、この突っ込みどころを教えてもらえないでしょうか?
書いたHDLを評価してくれる人が、私の回りにいなくて、
「本当にこれでいいのか?」と自問自答の毎日です。
いけないところ、良くないところを、是非知りたいです。
278774ワット発電中さん:2011/01/12(水) 23:35:15 ID:/ZyKf+JC
ステートマシーンとしてはとりあえずif...else if...else if...の形ではなく
if (s==1) begin ... end; if (s==2) begin ... end;の形じゃね?
279774ワット発電中さん:2011/01/12(水) 23:37:45 ID:+WqD/CpG
ぇ…case文使わんのかい。
280774ワット発電中さん:2011/01/12(水) 23:55:38 ID:ABVNlMj9
>>278
ありがとうございます。
最初の評価でtrueなら、それ以降は評価しなくてもいいと思うので、
else if()にしています。
FPGAはマイコンとは違うので、特にelse if()にしなくても大丈夫でしょうか?

>>279
case文ですか。ほとんど使ったことないです。if()でできてしまいますし。
case文の方がいいでしょうか? 
281774ワット発電中さん:2011/01/13(木) 02:55:28 ID:OlHqa35h
横槍ですか、おしえてください。
メタステーブルの話が出ていますが、
実際にメタステーブルの状態だと、どのようなことが起こるのでしょう?
そのFFの出力が不定になるのはなんとなく理解できるのですが、
その不定とは、
・HかLのどちらになるかわからない、なのか
・HとLの他にも、中間の電圧が出たり、Hi-Zになったりするのでしょうか?
・また その時間も、1secとか継続したりするものでしょうか?
282774ワット発電中さん:2011/01/13(木) 10:58:39 ID:2+ka+nFN
わずかな時間暴れるだけ
283774ワット発電中さん:2011/01/13(木) 16:10:43 ID:uH6hMgUL
入力ピン付近にある非同期専用ffをつかえるか、
同期信号を仮定して設計されたffに非同期信号をつっこむかの違いが出るかもしれん
284774ワット発電中さん:2011/01/13(木) 19:50:56 ID:Ec1s623r
使用するプロセス/テクノロジにも依るだろうけど、参考書とかを見れば
短時間中間レベルでフラフラしたり、オシレーションを起こしたりとか
そんなところでしょ。
ただ、問題としてはセットアップ/ホールドを正しく守ってFFを使用した
場合に比べ、出力が静定するまでの時間が延びることで、運が悪ければ
後段のFFにもタイミングエラーが伝播することがあるだろうね。
そうすると今回のように時々ステートマシンが意味不明な状態になって
みたり、頻度の一定しない問題に悩まされるだろうね。
285774ワット発電中さん:2011/01/13(木) 20:37:35 ID:uH6hMgUL
今回のは実は1つの非同期信号を複数のffでラッチしているから
バラツキがでているんじゃね?
286774ワット発電中さん:2011/01/13(木) 23:07:06 ID:gzfjLIyc
>>281
メタステーブルが発生する状態を作って、それをカウンタのクロックに突っ込んだら面白い事が起きるよ。
非同期回路なので普通こんな記述しないだろうが、実験してみたら現象が良く理解できた。
287774ワット発電中さん:2011/01/14(金) 03:30:03 ID:xS5wIR+n
FPGA個別で「メタステーブルの収斂時間」みたいな規定はあるんだろうか?
もし、1clock<暴れる時間 だったら、D-FFを2個直列にしても意味がないよね。
288774ワット発電中さん:2011/01/14(金) 07:16:26 ID:y9FMO/i8
ifとcaseは意味が違うし
ステートマシンではcaseを使うべきじゃね
289774ワット発電中さん:2011/01/14(金) 12:20:05 ID:Jnz6tPuf
>>288
ifとcaseで、何が違うの?
合成されれば同じじゃないの?
290774ワット発電中さん:2011/01/14(金) 15:35:02 ID:rgc5+Bx7
ifはpriority encodersに、caseはcomplex encodingになるらしいよ。
ttp://link.brightcove.com/services/player/bcpid601029461001?bctid=632825255001(14:45あたりから)
291774ワット発電中さん:2011/01/14(金) 18:48:07 ID:Jnz6tPuf
>>290
ありがとうございます。
なんか、caseのほうがいいようなこと、言ってますね。

訳してみました(Googleが)
http://loda.jp/mcnc/?id=97.png
292774ワット発電中さん:2011/01/14(金) 21:37:58 ID:uq34UDqI
ifは入力の優先順位を判断してコンパイルするけどcaseは判断しないので、
ifを使うとコンパクト且つ高速なコードを吐くけどcaseだとそうはならない。
また、ifで非同期信号を使ってはいけないけど、caseだと使える
って書いてあるのかな?
293774ワット発電中さん:2011/01/15(土) 00:31:03 ID:zdmHOWwx
>>288-292
if と case は違うって思ってたけど、
Verilog の仕様だと case も先頭行から評価していくので
言語仕様だけで言うと if も case も同じ。

ただし合成して同じ回路ができるかどうかは処理系依存。
294774ワット発電中さん:2011/01/15(土) 01:23:17 ID:P7YPHU5Z
assign H8_bus =  ( adr==xx )? Port_xx
        : ( adr==ss )? Port_ss
        : 16'z;
とかは、どうなるのでしょう?
マイコンのPIOとして、100段ぐらい使っているんですが。
295774ワット発電中さん:2011/01/15(土) 04:13:55 ID:O/N7/Knd
>assign H8_bus =  ( adr==xx )? Port_xx
>        : ( adr==ss )? Port_ss
>        : 16'z;

この場合は、16bit幅で入力が2系統のセレクタがカスケード接続で生成されるはず。
後の方に書かれている信号とH8_busの間に入るセレクタの段数が多くなるから、
100段くらい使うと、一番後ろの方の信号からH8_busまでの遅延が相当大きくなると思う。
296774ワット発電中さん:2011/01/15(土) 12:00:51 ID:OxEkkvPh
>>293
Verilog の仕様上はそう書いてあるのに、条件がかぶってたりすると
ツールに怒られる不思議。
基本、並列処理にしてくるけど、ツールの設定で変えられたりする。

>>294
意外にも、配列を使うのが便利だったり。

wire [15:0] hoge [0:255];
assign hoge[xx]= Port_xx;
assign hoge[ss]= Port_ss;
:

assign H8_bus= hoge[adr];
297774ワット発電中さん:2011/01/18(火) 02:50:59 ID:vnQKFzGe
お世話になります。
Verilogの書き方で質問させてください。

例えば、このようなHDLがあります。
module hoge1(
  input wire clock,
  input wire reset,
  input SW,
  output [7:0] COUNT
);

  Mona U1 ( .reset(reset), .clock(clock), .SW(SW), .count(count) );
  Mona U2 ( .reset(reset), .clock(clock), .SW(SW), .count(count) );
  Mona U3 ( .reset(reset), .clock(clock), .SW(SW), .count(count) );
  Mona U4 ( .reset(reset), .clock(clock), .SW(SW), .count(count) );
  Mona U5 ( .reset(reset), .clock(clock), .SW(SW), .count(count) );
endmodule

上記の例では、入出力端子は4行で書かれています。
このくらいなら別に何ともないのですが、入出力端子が50行、100行と多い場合、
これらのI/O定義?が、ソースの先頭からずーーっと、当分続くことになります。
そしてその後で、初めて本体が登場することになります。
このようなソースは、見にくいので、なんとか短くできないものか、と考えています。

本体部分は、関数化してインスタンシェーションすれば、実体は別のファイルとなり
短くなって、top階層のHDL全体の可視性が向上します。
ところが、入出力端子は、50、100あるのに、相変わらず input reg [7:0]...とかを
100行書くことになります。これをもっと短くできないかと思うのですが、
できないでしょうか? 
また、このようにtop階層の入出力定義部分は、下階層の入出力端子も全部書く必要があり
単につなぐだけなのに、1本1本記述していては、結構な労力になります。
入出力端子の記述を、ウマイ具合に、まとめられない者でしょうか?
298774ワット発電中さん:2011/01/18(火) 07:54:51 ID:NjIKPw5H
フォーで出来る。
299774ワット発電中さん:2011/01/18(火) 09:09:36 ID:IEmd9s9u
>>297
入力、出力をそれぞれバスにまとめるんだ!
そうすれば、ポートは2つですむ!
300774ワット発電中さん:2011/01/18(火) 19:41:34 ID:nVUTZ0iS
やっぱり、50行、100行と書かないといけない、みんなそうしてる、
ということでしょうか?
301774ワット発電中さん:2011/01/18(火) 22:10:28 ID:+jv6RjT5
ホントに50も100も入出力が必要?モジュールの分割に問題があるような気がする。
自分ならI/Oがそんなに増えるような分割は、なにか間違えてると判断するけとな・・・
302774ワット発電中さん:2011/01/18(火) 23:08:35 ID:nVUTZ0iS
>>301
ありがとうございます。
確かにmoduleの分割により、1モジュール当たりのI/O本数は減りますね。
ただ、全モジュールを、プロジェクトのどこかで使うわけですので、
最終的にはtop階層のI/Oポートから、全線が出入りすることに
ならないでしょうか?
303774ワット発電中さん:2011/01/19(水) 02:10:02 ID:J0aBwDln
>>302
ごめんなさい。よく読んでなかった。topの話ね。

topでは全部の端子を書くことになるかと。
配列が可能なら配列で。
あとは、エディタのブロックをたたみ込む機能で見やすくするとか?

VHDLだと、record使って
type io_t is record
 a : std_logic_vector();
 b : std_logic;
end record;

entity top is
 port (
  idata : in io_t;
 );
とかたまに。I/Oピン名に.(ドット)が付くけど。SystemVerilogではどうなんだろ?
304774ワット発電中さん:2011/01/19(水) 03:29:01 ID:miGyUXg9
>>303
ありがとうございます。
>エディタのブロックをたたみ込む機能で見やすくするとか?
これって、ALTERAですよね。Xilinx ISEには無い機能なんです。欲しいんですけど。

>topでは全部の端子を書くことになるかと。
やっぱり、そうですよね。
・なるべく見やすいソースを書きたい。
・でもI/O名はちゃんと信号名を書きたい。
と思うんです。
しかたないので、`includeを使っていますが、なんか残念な感じがして。

top階層だけは、回路図で書ければいいと、よく思います。
そもそも回路図が本分のハードウェアを、文字で表すのには限界があるような気がします。
305774ワット発電中さん:2011/01/19(水) 03:53:47 ID:DWPtbLG9
エディタなんか自分の使いたいもの使えばいい。
トップなんぞIOとモジュール間の接続が主なんだから
スクリプト回せば手作業の部分は1割程度でしょ。
あとはツール買ってもいいし。
306774ワット発電中さん:2011/01/19(水) 03:57:40 ID:miGyUXg9
>>305
情報ありがとうございます。でもわからないことばかりです。

>スクリプト回せば手作業の部分は1割程度でしょ。
スクリプトとは何でしょうか? 

>あとはツール買ってもいいし。
それはどのような名前のものでしょうか? ぜひ教えてください。
307774ワット発電中さん:2011/01/19(水) 08:36:27 ID:XUk9jzgd
>top階層だけは、回路図で書ければいいと、よく思います
回路図で書けば?
ISE は出来なかったっけ?
回路図のCADで Verilog 読み込むとか出きるだろ。

>そもそも回路図が本分のハードウェアを、文字で表すのには限界があるような気がします
回路図で書いても最後は edif とかで吐き出すんだけどな。
そもそも、HDL は、回路の構造を書くんじゃなくて動作を書くんだよ。
308774ワット発電中さん:2011/01/19(水) 11:21:50 ID:dWLdf+1E
>そもそも、HDL は、回路の構造を書くんじゃなくて動作を書くんだよ。
では構造は何で書くべきなの?
309774ワット発電中さん:2011/01/20(木) 00:10:47 ID:aJEEQcnt
回路図だよ。恥ずかしいから言わせんな。
310774ワット発電中さん:2011/01/20(木) 09:36:00 ID:fG4YMlLp
RTL記述でよろしく
311774ワット発電中さん:2011/01/22(土) 09:53:06 ID:p5BPlDoY
下位モジュールの接続だけでできてるモジュールは、回路図(ブロック図)のほうが
構造(接続関係)が分かりやすいことは確かだね
他人の作ったHDLの構造把握するのに、RTLビューア(?)で見たりする
312774ワット発電中さん:2011/01/22(土) 16:57:58 ID:b6hclcIQ
そうそう、「まとめてるだけモジュール」ってあるよね。
そういうのはブロック図で見てる。
313774ワット発電中さん:2011/01/25(火) 17:48:01 ID:MMDBatDM
Verilog-HDLで躓きましたのでご指導をお願いします。
OpenCoresにあるDESのIPコア(http://opencores.org/project,des)を使った回路を設計しているのですが
使用している基板のFPGAがCycloneの100ピンの物でピン数的に足りないとエラーが出たのでトップモジュールを別に作りました。
しかし、シミュレーション時に64ビットが吐き出されるはずが32ビットしか出ませんでした。

ちなみにトップモジュールではクロックの分周を行うのと適当なビットを取るために1ビットを取得しています。
//// Top Level Module
module destest(mck, trg);

input mck;
output trg;
reg [2:0] regs = 3'h0;
reg xclk = 1'b0;
always @(posedge mck)
regs <= regs + 1;
always @(posedge mck)
if (regs == 3'h0) xclk <= ~xclk;

des u0( .clk(xclk), .desOut_1(trg));

endmodule


これを追加すると
Warning: Compiler packed, optimized or synthesized away node "des:u0|desOut[奇数ビット]". Ignored vector source file node.
このような注意が出て、32ビット分しか出ませんでした。
なお、トップモジュール部を外すとちゃんと64ビットを吐き出しました。
書き方的にまずい場合はどのように修正すればいいのかご説明をお願いします。
314774ワット発電中さん:2011/01/25(火) 19:10:08 ID:yVQKA8oK
ポートが全部書かれていないから分からないけど、
ビット選択が間違ってるんだろう。
だからいらないと思って捨てられている。

いまどきトリップ解析ってのもなぁ
315774ワット発電中さん:2011/01/25(火) 23:26:49 ID:bMZ8NMPm
>>313
まず本買って勉強したほうがいいよ。

回路は逐次実行じゃなくてすべての行が並列実行される。
mckが立ち上がった時

reg [2:0] regs = 3'h0;

always @(posedge mck)
regs <= regs + 1;
が矛盾する。

さてregsにはどっちが入るのか。コンパイラはわかりません。


これがシミュレーションするためだけのトップモジュールならば
シミュレーション用の構文initial文も使うべし。
316774ワット発電中さん:2011/01/27(木) 01:57:37 ID:6Df0FoGB
>>314-315
ご回答ありがとうございます
今回は実基板上に実装し、消費電力を測る実験をしたいと思っています。
そのため、シミュレーション用の構文は使わないようにしています。
また、トップから直下のモジュールの文についても上げておきます。(改造したのはこの部分のみ)
http://www1.axfc.net/uploader/Sc/so/198633.txt
さらにご指導をお願いします。
317774ワット発電中さん:2011/01/27(木) 10:25:16 ID:3N/YVT9F
>>316
ちゃんとリセットしないとシミュレーション出来なくね?
318774ワット発電中さん:2011/01/27(木) 12:36:36 ID:zodoZ/Cp
たぶん学生だろうな。
319774ワット発電中さん:2011/01/27(木) 14:13:08 ID:QLI7tAzJ

♪フルスクラッチで書き上げた、そのロジックで〜 私 へ・ん・し・ん

という歌があるのですが、この場合のフルスクラッチとは、どういうことでしょうか?
メーカー提供のIPを使わずに書くということでしょうか、それとも
インスタンシエーションせずに、top改装に全部を書くということでしょうか?

320774ワット発電中さん:2011/01/27(木) 15:16:19 ID:Rqa/XPhF
IPというか、既存のコードを流用しないで、
最初から作る場合の事を指すのでは>フルスクラッチ
321774ワット発電中さん:2011/01/27(木) 16:26:36 ID:QLI7tAzJ
ありがとうございます。
既存のコードを使わない、というのは、IPはともかく、
自分が過去に作ったRS232 I/F部分があったとしても、今回は再度ゼロから書くということ
でしょうか? 過去に自分で作った物のコピー&ペーストくらいはいいような気がします。
それさえもしないで書く、という厳格さのある言葉なのでしょうか。
また、スクラッチで作るという行為自体が「俺はスゴイぞ」と自慢するようなことなのかも知りたいです。
すみません
322774ワット発電中さん:2011/01/27(木) 16:30:16 ID:Rqa/XPhF
複雑になりすぎてどうしようもなくなったソースコードの流用を止めて、
新規に分かりやすいコードで書き直すという場合の方が多いのではないかと。
323774ワット発電中さん:2011/01/27(木) 18:17:37 ID:QLI7tAzJ
>>322
そういうことですか。ありがとう。
だったら、僕は毎回フルスクラッチしてる。
324774ワット発電中さん:2011/01/27(木) 22:04:11 ID:6VJdBz+8
ちなみに、フルスクラッチは和製英語。
正しくはフロムスクラッチ = from scratch
英米人に full scratch と言うと、引っかき傷だらけの
何かをたぶん想像されてしまうだろう。
325774ワット発電中さん:2011/01/27(木) 22:50:26 ID:QLI7tAzJ
>>324
>正しくはフロムスクラッチ = from scratch
ありがとうございます。
Google翻訳で「from scratch」で訳したら「ゼロから」と出ました。
また「ゼロからの開発」を訳すと「Development from scratch」と出ます。
これで納得です。以降、フルスクラッチで・・・と言う人がいたら、教えてあげたいです。
どうもありがとうございます。

でも、なんでscratch(ひっかき傷)がゼロなのでしょう。
326774ワット発電中さん:2011/01/27(木) 23:26:05 ID:DlUdMGQP
フルスクラッチビルドを変なふうに略した結果なんじゃないかな?
327774ワット発電中さん:2011/01/28(金) 02:01:11 ID:oiiG+FLu
Full Scratch Buildですか?
328774ワット発電中さん:2011/01/28(金) 02:57:50 ID:DTXrDTB7
HDLとは殆ど関係ない話だわな。

http://eow.alc.co.jp/scratch/UTF-8/?ref=sa
2.〔棒で地面を引っかいて描いた〕スタートライン

つまりfrom scratchで
=スタートラインから =初めから =0から
329774ワット発電中さん:2011/01/28(金) 09:32:34 ID:gT2SE98F
1から始めるのと、ゼロから始めるのと、どっちが始めからなのか?
330774ワット発電中さん:2011/01/28(金) 12:25:15 ID:XfHltGWB
昔はインド以外は1から始めるだったんだろう
331774ワット発電中さん:2011/01/28(金) 13:28:41 ID:75o+e2Yb
へ〜〜〜 そうだったのか。
332774ワット発電中さん:2011/01/28(金) 13:47:09 ID:MIvWtYBJ
ゼロの概念は画期的だよな
333774ワット発電中さん:2011/01/28(金) 14:46:02 ID:XfHltGWB
そうそう
どんなモノでも贋作つくれるなんて画期的だよな
334774ワット発電中さん:2011/01/29(土) 01:01:11 ID:/0R0/oFc
>>329
HDL書きなら、当然ゼロからだろう。
8ビットの信号は wire [7:0] a であって、wire [8:1] a じゃないだろうw
335774ワット発電中さん:2011/01/29(土) 02:51:14 ID:+QdsWzAe
ちなみに、
wire [15:8] UE;
wire [ 7:0] SHITA;
という宣言をしたとき、
UE[15]という指定はだめで、UE[7]なら良いのですよね?
336774ワット発電中さん:2011/01/29(土) 14:10:06 ID:soToDccW
>>335
verilog 初心者本を1冊ぐらい読んだほうがいいぞ。
337774ワット発電中さん:2011/01/29(土) 19:26:30 ID:qmNFqQZx
Verilogの本って、探してみると結構無いですよね。
Verilogの文法書(コマンドリファレンス)みたいなのがあれば買いたいんですが。
338774ワット発電中さん:2011/01/29(土) 21:21:21 ID:7UauCDYI
Verilog2001の本が欲しい。
ステートマシンの説明が数ページで終わってしまうようなのは嫌。
339774ワット発電中さん:2011/01/30(日) 01:00:07 ID:dK9gWloH
340774ワット発電中さん:2011/01/31(月) 21:19:50 ID:POO5T2os

チップスコープで、教えてください。

インサーターで、トリガやクロックピンや観測したい信号を割り付けるとき、
左側のペイン(枠)の中の信号名を選んで「Make...」のボタンを押すことで決定しますが、
この左側のペインに表示される信号線には、表示が明るいものと暗いものがあります。
どちらも、選択して「Make....」で線が追加できます。
しかしシンセサイズすると、暗い方の信号名の場合は、エラーになってしまいます。
エラーの内容は「その信号線はダメです」みたいなエラー内容です。(だったら始めに言ってくれよという感じですが)

ここで質問ですが、
1. チップスコープ インサーターの段階で、左側のペインに表示される信号で、明るい表示とくらい表示は、何を表しているのでしょうか?

2. チップスコープは、どんな信号でも引っかけられるのではないのでしょうか?

3. 引っかけられる信号と、引っかけられない信号は、どのように見分ければ良いのでしょうか?

よろしくお願いします。

341774ワット発電中さん:2011/02/01(火) 00:46:26 ID:BFPXDo6z
やってみてダメだったら「そっか、これはダメなんだ」
と覚えることにしてる。
342774ワット発電中さん:2011/02/01(火) 10:34:36 ID:GXRmr/UV
みんなチップスコープ使ってるんだね。
きちんとシミュレーションかけたほうが効率いいと思うけど。

デバッグに必要な信号なら外に出しとけばいいだけだし・・・
いまいち使い道が分からんです。
343774ワット発電中さん:2011/02/01(火) 12:06:29 ID:87DR1MKm
>>342
いや基本使いたくない
でも内部バスなんかで見たい
時とか有るじゃん
344774ワット発電中さん:2011/02/01(火) 22:51:55 ID:uvyY7UhM
シミュレーションで動くけど、実機で動かない。
ってときにしか使わないな。
チップスコープやシグナルタップは。
345774ワット発電中さん:2011/02/02(水) 23:44:34 ID:WdkwrQJ4
デュアルポートRAMのIPで、A側は書き込みだけ、B側だけは読み込みだけという時、
DualPort U1 (
  .clkA(xxx), .wea(xxx), .wra(xxx), .adra(xxx), .dina(xxx), .douta(), 
  .clkB(xxx), .web(xxx), .wrb(xxx), .adrb(xxx), .dinb(), .doutb(xxx), 
);
と書きます。コンパイルはちゃんと通りますし、動作もするのですが、
「doutaが無いぞ」と「dinbが無いぞ」とのWarningが300個とか400個とか出ます。
これをWarinigが出ないようにするには、どのような記述をすればよいのでしょうか?

入力は dinb(o) とか書くといいのかな、と思いますが、出力のdouta()には
何を書けばいいのかわかりません。

A側のoutとB側のinは
346774ワット発電中さん:2011/02/03(木) 01:23:20 ID:P/+1pec6
出力のほうは適当なネットをつないだら Warning 減らない?
wire [15:0] dummy_douta;
.douta(dummy_douta),
.dinb(0),
347774ワット発電中さん:2011/02/04(金) 01:49:21 ID:FQ00645m
そうするとdummyの先がどこにもつながっていない、とWARNINGが出るので、
ワーニングの個数は同じじゃないの?
348774ワット発電中さん:2011/02/04(金) 02:33:10 ID:DG4dJSBV
>>345
.douta() で、特にWarning とかは出ないみたいだけど
(QuatusIIとISE で試した)
349774ワット発電中さん:2011/02/04(金) 18:30:46 ID:9tkLNZB3
xilinx の chipscopeで、
wireの信号を観測するには、どのようにしたらよいでしょうか。
clockが掴めないので困っています。
350774ワット発電中さん:2011/02/05(土) 01:23:39 ID:wF2s8qZv
chipscopeは、wireには接続できない。
だから、空いている出力ピンをdummyにして、
wire → reg → 出力ピンと接続して、regの出力を引っかける。
351774ワット発電中さん:2011/02/05(土) 17:54:04 ID:/im7Ouqx
chipscopeは、たまに変な値を示すことない?
352774ワット発電中さん:2011/02/05(土) 22:02:53 ID:Ir7VRQU1
ないよ。
予想と違う値が出た時には回路に問題がある。
353774ワット発電中さん:2011/02/05(土) 22:24:44 ID:PEnmSUJW
チップスコープインサーターで、信号を登録するとき、
自分の付けた名前の信号が選択できません。
チップスコープに薄く表示されているので、認識しているみたいなのですが、
選択してもエラーになります。これで正しいのでしょうか?

また、ロジックアナライザを起動して、JTAGで接続が成功すると、
前回のトリガー設定や波形ウインドウが出ます。
これを出さないようにする設定はあるでしょうか?
  (回路を変更した後の起動なので、前回と同じ設定を表示したくないんです。
   似たような表示が出ていると、知らずにそれで観測してしまいます。
   どうせ「右クリック、cofigration」とやって新規に読み込ませる訳ですし
   はじめから無しでててと思うんです)

チップスコープ自身のプリファレンスというか、初期設定が見つけられません。
どこにありますでしょうか。

あと、トリガー8本、観測信号50本とか設定して 観測しているときに、
「この信号で観測したい」と思っても、トリガーのグループに登録してない信号は
トリガーにできません。トリガー=観測信号にできないのでしょうか?
毎回、インサーターに戻って登録し直して、またコンパイルって、結構面倒です。
354774ワット発電中さん:2011/02/06(日) 03:17:48 ID:kFs5OhGK
ここで聞くより、
別の会議室のほうが
早くレスポンスが付くと思うよ。
355774ワット発電中さん:2011/02/16(水) 13:48:23 ID:Tm1yyUqZ
・信号名の表示が勝手に変わらなければ、
・インサーターで信号選択するときに、信号の位置移動に
  「UP UP UP・・・・」とか「DOWN DOWN DOWN・・・・」とか
  20回も50回もやらなくても良いようになれば、
・ロジックアナライザで、bus表示で値が表示されているのに、印刷すると値が表示されるようになれば、

チップスコープは使いやすいと思うよ。
356774ワット発電中さん:2011/02/18(金) 01:35:03 ID:BTd/Ry5u
VHDLで非同期な二つの信号(CLK1、CLK2とでもします)によって値が増えるカウンタを作りたいのですが、
二つの信号がほぼ同時に入力されてもちゃんと値が二つ増えるようにするにはどうしたら良いでしょう?

process (CLK1,CLK2) begin
  CLK <= CLK1 and CLK2
end process;
process (CLK) begin
  if CLK'event CLK='1' then
    (以下略)

というのを考えましたが、二つの入力が重なると一回しか動作しませんので
357774ワット発電中さん:2011/02/18(金) 01:42:07 ID:m8iYhBDH
process( CLK1, CLK2 )
 variable Incr : integer;
begin
 if CLK1'event CLK1 = '1' then


end process;
358774ワット発電中さん:2011/02/18(金) 01:44:57 ID:m8iYhBDH
途中で送信してもたスマン。

process( CLK1, CLK2 )
 variable Incr : integer;
begin
 Incr := 0;
 
 if CLK1'event CLK1 = '1' then
  Incr := Incr + 1;
 end if;
 
 if CLK2'event CLK2 = '1' then
  Incr := Incr + 1;
 end if;
 
 Cnt <= Cnt + Incr;
end process;

てのはどうだろうか?
359774ワット発電中さん:2011/02/18(金) 08:36:40 ID:dcukaS8h
本気(マジ)なの?
360774ワット発電中さん:2011/02/18(金) 10:33:45 ID:yrA2dXVN
別々にカウンタ作って、後で加算すればいいだろ
361774ワット発電中さん:2011/02/18(金) 10:57:04 ID:Y+BkwDrA
>>358
それは無理だろ・・・
362774ワット発電中さん:2011/02/18(金) 13:48:30 ID:BlxlWDPV
>>358
言語記述じゃなくて、ちょっと回路図書いてみなよ。
363774ワット発電中さん:2011/02/18(金) 13:57:57 ID:Yz/m11dI
CLK1、CLK2の最小パルス幅の1/2以下の周期のクロックでカウントしろよ。
364774ワット発電中さん:2011/02/18(金) 14:14:54 ID:ZwxsNBEM
>>363
正解。

>>360
正解

module(
input wire CLK0,
input wire CLK1,
input wire CLK2,
output [15:0] Q
);

reg [1:0] shift1, shift2;

always @ ( CLK1 )begin
  shift1 <= { shift1[0], CLK1 };
  shift2 <= { shift2[0], CLK2 };
  if( shift1 == 2'b01 ){ CLK1 += 1; }
  if( shift2 == 2'b01 ){ CLK2 += 1; }
end

assign Q <= CLK1 + CLK2;

endmodule
365774ワット発電中さん:2011/02/18(金) 16:46:10 ID:W3UgH2ol
>>364
不正解。
366774ワット発電中さん:2011/02/18(金) 17:05:49 ID:OGsBGWyJ
メタステーブル回避のためのコードが
always @ ( CLK1 )begin
  shift1 <= { shift1[0], CLK1 };
..
end
だけではまずい理由を別のスレで尋ねたのに、いまだ何のレスもないんだぜ...。
367774ワット発電中さん:2011/02/18(金) 17:11:45 ID:GFWYav68
それ以前にカウンターとクロック信号がごちゃ混ぜに。
368774ワット発電中さん:2011/02/18(金) 17:30:56 ID:un4mGraX
>>366

if ( shift1[1] == 1'b1 )
・・ 色々
っていう形で使うなら、定石的な2段FFで受ける形で問題ない

if ( shift1[1:0] == 2'b01 )
・・ 色々
という形でエッジ検出すると、(クロックが速い場合)
メタな状態の可能性のある1段目の値を使うから注意が必要
369774ワット発電中さん:2011/02/18(金) 18:07:15 ID:un4mGraX
例えば、
if ( shift1[1:0] == 2'b01 )
count <= count + 1;

みたいなのは一見不都合なさそうだけど、
count の各のFFのEnableに不安定な信号が入ってしまい
セットアップタイム違反を起こして誤動作する
370774ワット発電中さん:2011/02/18(金) 18:11:54 ID:ZwxsNBEM
>>369
お〜、勉強になります。ありがとう。
ということは、shiftを3bitにして
always @ ( CLK0 )begin
  shift1 <= { shift1[2:1], CLK1 };
  shift2 <= { shift2[2:1], CLK2 };
  if( shift1 == 3'b011 ){ CLK1 += 1; }
  if( shift2 == 3'b011 ){ CLK2 += 1; }
でどうですかね。
ていうか、+=1 に誰も突っ込みを入れてくれない
371774ワット発電中さん:2011/02/18(金) 18:20:07 ID:un4mGraX
ジョークだというのがちゃんと理解されてるんでしょw
周波数が高いときは、360案がいいと思うけど
違うクロックで動いてるカウント値を加算するのに一工夫必要になるな

reg [2:0] shift1, shift2;
//
always @ ( posedge CLK0 )begin
  shift1 <= { shift1[1:0], CLK1 };
  shift2 <= { shift2[1:0], CLK2 };
end

wire pedge1, pedge2;
//
assign pedge1 = ( shift1[2:1] == 2'b01 );
assign pedge2 = ( shift2[2:1] == 2'b01 );


reg [15:0] count;
//
always @ ( posedge CLK0, reset ) begin
if (reset) begin
count <= 0;
end else begin
case ({pedge1, pedge2})
2'b01: count <= count + 1;
2'b10: count <= count + 1;
2'b11: count <= count + 2;
default: ;
endcase
end
end
//
assign Q = count;
372774ワット発電中さん:2011/02/19(土) 00:09:16 ID:0RWLcdJt
ところで、その // は何を表現しようとしている?
373774ワット発電中さん:2011/02/19(土) 02:05:07 ID:la+DVM+7
>>371
なーるほど、Verilogは見やすいな。
どこかにある文字数の多い言語とは違うなぁ。
374774ワット発電中さん:2011/02/19(土) 12:01:16 ID:qAiyPstU
>>373
型チェックとか厳しく無いからな
便利だけど読み難いソースになる
事も有る
375774ワット発電中さん:2011/02/19(土) 12:42:58 ID:oagVFqpM
それは言えてるね。
型チェックをもっと厳しくして欲しいな。
だけど無駄に文字タイプの多い言語はやりたくない。
 <= xxx => なんで両方に←→が出てるん?
376774ワット発電中さん:2011/02/19(土) 13:27:24 ID:PCbA+5jD
型チェックは特に記述したときだけする
っていう仕様にしてほしいな。
377774ワット発電中さん:2011/02/19(土) 14:14:06 ID:0RWLcdJt
>>375
> 型チェックをもっと厳しくして欲しいな。
Lint使えば?

> <= xxx => なんで両方に←→が出てるん?
代入と不等号を < と = で表そうとした結果だな。
378774ワット発電中さん:2011/02/19(土) 14:36:13 ID:3+dKrffu
verilog で唯一惜しいのが、ほとんどCなのに
複分をくくる{}を begin end にしちゃったところ
連接の記号なんて、他の何かで何とでもできただろうに・・
379774ワット発電中さん:2011/02/19(土) 15:03:57 ID:3+dKrffu
あと、case_item の中に文の並びが書けないのも不便
これも、複文記号が{}なら、そんなにわずらわしくないのに
380774ワット発電中さん:2011/02/19(土) 21:30:42.86 ID:vOFj3F9n
ぶらさがりif文問題を回避するためじゃない?
分からんけど
381774ワット発電中さん:2011/02/19(土) 21:34:07.98 ID:1kmTDsdR
それより、中途半端に signed とか対応したから
ミスりやすい。(ってか、ツールのバグも多い)
型変換とかもCと違うのがややこしいし。
382774ワット発電中さん:2011/02/20(日) 03:12:37.84 ID:a7L/8KD2
>>378
激しく同意。

>>380
ぶらさがりif文 って、何でしょうか?
383774ワット発電中さん:2011/02/20(日) 04:57:09.67 ID:s1THWzz6
>ぶらさがりif文

{〜} を begin〜end で書くという話とは関係ないと思うけど、下の
1.の記述が、2.の意味なのか3.なのか分からんというような
話のことでは?

1.if()
  if()
   文
  else
   文

2.if(){
   if()
    文
   else
    文
  }

3.if(){
   if ()
    文
  }else{
   文
  }

確か、Cでは2.と解釈されるはず・・ありゃ?3.だったかな・・^^;
ってなるんで、結局 { } をつけなさいよ、ってことになるから
verilog だと end else begin みたいなウザったらしいこと書かないと
いけなくなるんだよなあ

オレは、{〜} を begin〜end にしちゃったせいで if文に関しては
VHDLの if 〜 then 〜 elsif 〜 endif のほうが使いやすいと思う
言ってもしょうがないけど・・
384774ワット発電中さん:2011/02/20(日) 05:00:05.77 ID:zM4taJDX
end if とかキモい。
385774ワット発電中さん:2011/02/20(日) 09:57:35.93 ID:LucHHTfG
c言語の中に突然現れたVBAって感じ?
386774ワット発電中さん:2011/02/20(日) 11:34:51.75 ID:92VfHVII
確かにendifとか変だと思う。
みんなendだけでいいのに。
Cのように}なら、もっといい。


VBAって、使いたくないね。
それまでの言語とは一線を画すビックリ言語。
記述に関して すごく窮屈で書きにくい。驚いた。

387774ワット発電中さん:2011/02/20(日) 17:09:25.45 ID:s1THWzz6
オレの言いたかったのは、本来簡潔な記述が身上のC系の言語で
{ } を begin end にしたばっかりに、「劇的に」簡潔さが
失われちゃったってこと


【verilog】
if (count == 10) begin
 ・・・
end else if (count == 5) begin
 ・・・
end else begin
 ・・・
end


【VHDL】
if (count = 10 ) then
 ・・・
elsif (count = 5) then
 ・・・
else
 ・・・
endif
388774ワット発電中さん:2011/02/21(月) 00:42:58.87 ID:1dPnKAe2
>>369
これ、ソフトの感覚で考えると、何でこれがいかんの?ってなるね
shift1[0]が不安定だとしても、結局はこの if文の条件が成立するか
どうかじゃねえ?
あるタイミングで成立しなくても次のクロックのときは成立するはずだから
別に問題ない。count が増えるのが1クロック遅れるだけだ。
・・・ていうような論法に言い負かされてしまいそう。
389774ワット発電中さん:2011/02/21(月) 13:42:30.90 ID:V6y/WSgG
>>387
激しく同意。
 { → begin 5倍のタイプ量
 } → ebd  3倍のタイプ量
なぜなんだ。

こう決めたヤツ、ちょっとこっち来い。

390774ワット発電中さん:2011/02/21(月) 16:56:44.19 ID:Or11W4/W
 } → ebd  30倍の文法エラーメッセージ
なぜなんだぜ!
391774ワット発電中さん:2011/02/21(月) 19:27:00.07 ID:HMr4sUuX
可読性は言語によらないと思う。
ライトオンリーと言われるPerlで書いても読みやすく書く人もいるし、
Pascalで書いても何じゃこりゃ、ってソース書く人もいる。
392774ワット発電中さん:2011/02/21(月) 21:44:29.84 ID:1dPnKAe2
上の話は、可読性というより記述性の話なんじゃ?

C, verilog では、{ }, begin end は、if文の一部ではなくて複文の記号だから、
if とか else の後に単文がくるときは本来は不要だけど
単文の場合でも必ずくくるスタイルをとってる人が多いみたいだ。

これも一つには可読性の向上のためだと思うけど、それを記述性をほとんど犠牲
にせずにできてた { } の代わりに begin end にしちゃったのがけしからん、
っていう話だと思う。(誰も{ }に文句言ってたやつはいないと思うのに・・)
393774ワット発電中さん:2011/02/21(月) 22:04:31.48 ID:1dPnKAe2
ちなみに、最近のC(++)のif文の記述スタイルは

if(・・)
{
 ・・
}
else
{
 ・・
}

のようなのが主流になってるようだけど、verilog では >>387 みたいな
昔風の K&R 流のが多いようだ。
これも、begin end にしちゃったために、↓のような記述をすると
可読性をかえって悪くするからのような気がする。

if(・・)
begin
 ・・
end
else
begin
 ・・
end
394774ワット発電中さん:2011/02/21(月) 22:46:07.69 ID:cfx3P6W1
elseはifの否定である。
395774ワット発電中さん:2011/02/22(火) 00:51:01.62 ID:rhCrr6Ml
>>387
> 簡潔な記述が身上のC系
ていうのは知らないな。
begin end が良かったとは思わないけど。
396774ワット発電中さん:2011/02/22(火) 03:46:04.90 ID:9bWEbUZa
Cの2代前の先祖の BCPL が begin end の代わりに { } を使った最初の言語らしい。
verilog の文法がCを元にしてるのは明らかだと思うんだけど、何で { } だけは
Cを踏襲せずに先祖がえり(あるいは Ada/Pascal 教に改宗)しちゃったのか、理由を聞いてみたい気がする。
(意外に、ビット連接で { } を使っちゃったから・・というだけの理由かも)
397774ワット発電中さん:2011/02/22(火) 09:42:47.07 ID:19cxFtBe
ISO646って知ってる?
世界中どこでもUS-ASCIIを使ってるわけではないんだよ。

[\]^`{|}~
この9文字は各国で異なる文字に割当てられてるのに
Cの言語仕様は独善的にUS文字セットを前提にしている。

日本は幸運にも\と~以外はUS互換なんで影響少ないけど
[]とか{}が括弧に割当てられてない文字セットだと最悪だ。
だからTRIGRAPHなんて不細工な発明がされたとも言える。
398774ワット発電中さん:2011/02/22(火) 14:44:48.34 ID:FEV/Qjzf
>>397
>[\]^`{|}~
>この9文字は各国で異なる文字に割当てられてるのに
それホント?
バックスラッシュ\ はともかく。ホントに?
399774ワット発電中さん:2011/02/22(火) 15:02:49.91 ID:V8mhBOIO
{}とか[]が非対照なキャラクターに割り当ててある文字セットは大笑いだな。
日本の\もちょっと笑える。
400774ワット発電中さん:2011/02/22(火) 16:21:39.24 ID:19cxFtBe
ほれ
http://en.wikipedia.org/wiki/ISO/IEC_646

ISO8859やISO10646(いわゆるUnicode)が普及する前はこれしかなかったんだぜ
これを笑うヤツは、CJKは16bit空間でも表現できない文字体系欲しいのかよって笑う
お馬鹿な西洋人と同じレベルまで墜ちてる
401774ワット発電中さん:2011/02/22(火) 17:35:03.95 ID:FEV/Qjzf
ほんとだぁ。ありがとう。
知らなかったよ。すごいねぇ〜。ヨーロッパ系統だと、{}や[]は全滅だね。
今でもそうなんだろうか? ヨーロッパのPCのキーボードが見てみたいな。
少なくとも{},[]よりかはウムラウトの方が頻度は高いわな。

しょうがねぇ、フランス言って見てくるか。(^^)
今からセントレア行ってくる。
402774ワット発電中さん:2011/02/22(火) 17:39:33.71 ID:E/TE3vqE
ウムラウトは、ドイツ語だぞっと。

フランスに渡米して来い。
403774ワット発電中さん:2011/02/23(水) 00:03:52.43 ID:CAaPquk7
トルコ語なんてIの小文字がiじゃないからなあ
404774ワット発電中さん:2011/02/23(水) 00:46:26.86 ID:JSWurAlL
トルコなんてIがなくて即Hだからなあ まで読んだ
405774ワット発電中さん:2011/02/23(水) 00:48:47.25 ID:MCFJjZZg
ワロタw
406トルコ青年:2011/02/23(水) 02:22:01.70 ID:qwzxgcEi
抗議スル!
新聞に投書シル!!
407774ワット発電中さん:2011/02/23(水) 12:51:47.24 ID:wIwvmXWK
フランス人やスペイン人は最初のHは声を出さないらしいよ。
408774ワット発電中さん:2011/02/24(木) 01:04:57.75 ID:qByXSApI
>>407
あたしはフランスに生まれないでよかった・・・orz
相手も初めてだったせいか不思議には思われなかったみたいだけど、
そうとう大きいらしい(///)
409774ワット発電中さん:2011/02/27(日) 22:46:36.82 ID:xdYyZ9NZ
>>393 のスタイルは、理屈で考えると変だと思うんだよね

if (<式>)
 a <= b;
else
 a <= c;

っていうスタイルには、恐らく誰も異論ないと思うんだけど
この a <= b; とか a <= c; の部分がブロックに置き換わるんだから
素直に考えると↓のようになるはず

if (<式>)
 begin
  a <= b;
  d <= b;
 end
else
 begin
  a <= c;
  d <= c;
 end

このスタイルは、C(++) では、たまに見かけるけど
verilog ではなぜか見たことないな
410774ワット発電中さん:2011/02/28(月) 14:27:50.49 ID:D7ZzvxUX
>>409
フリップフロップ毎にalways文で記述する方が、
バグの予防に効果的なのでは?
411774ワット発電中さん:2011/02/28(月) 16:59:21.64 ID:ywAtSbvi
そう言われていた時代がありました・・・
412774ワット発電中さん:2011/02/28(月) 22:07:47.82 ID:bqyh6Fa+
>>410
フリップフロップ毎に記述するから、always の中に
ブロック(複文)は使わないっていう意味?
413410:2011/03/01(火) 00:38:37.12 ID:+awILjEQ
>>412 >>409の例だと、一つのalwaysブロックに、
aとdという二つのフリップフロップが記述されているので、
後でメンテナンスとか改造をするときに、
修正漏れが起き易い様な印象がある。

例えば
always @(posedge CLK or negedge RESET) begin
if(式)
begin
a <= b;
end
else
begin
a <= c;
end
end

always @(posedge CLK or negedge RESET) begin
if(式)
begin
d <= b;
end
else
begin
d <= c;
end
end

の方が、aとdが別々のF/Fだとすぐ分かるし、
条件式もいじりやすいと思う。
414409:2011/03/01(火) 01:43:41.16 ID:CfG9VC68
私が書いたのは、begin 〜 end ブロックを
どういうふうにインデントするかってことだったんですけどね

確かに順序回路の always 中では、1個(あるいは1組)の
FFしか操作しない、っていうのを徹底すると、begin 〜 end とか
使う必要なくなるから >>393 とか >>409 みたいな話は無用になるかも・・
415774ワット発電中さん:2011/03/01(火) 09:24:14.17 ID:WQyf410b
>>413
片方修正して、もう一方を修正し忘れる可能性も大きくなるんだけどな
416774ワット発電中さん:2011/03/01(火) 16:51:44.73 ID:UMUaoHxZ
>>413
全角スペース使わないと見づらいよ。
417774ワット発電中さん:2011/03/07(月) 18:51:46.23 ID:6dolzKqn
んだ。
418774ワット発電中さん:2011/03/18(金) 18:18:45.73 ID:mTIZECYI
VHDLのif文やwhen文で代入式のように
(1=>'0',others=>'0')みたいな構文は使えないんでしょうか?
代わりになる構文はありませんか?
419774ワット発電中さん:2011/03/19(土) 19:10:53.99 ID:lxSXRtPH
>>418
質問が成立してないぞ。
420774ワット発電中さん:2011/03/28(月) 23:16:22.25 ID:CKLlnSCK
XilinxのISEを使いFPGAに実装しているのですが、
Synthesizeに非常に時間がかかります

さして最適化する必要はないので、なるべく合成を早くするにはどのようなオプションを指定すればいいのでしょうか
とりあえずEquivalent Register Removalは切っています
421774ワット発電中さん:2011/03/29(火) 01:20:29.07 ID:AxIaVRVa
ISEは、そういうものです。

422774ワット発電中さん:2011/03/29(火) 02:48:25.07 ID:MKDtA9Fv
I・S・E!!I・S・E!!
423774ワット発電中さん:2011/03/29(火) 02:54:46.14 ID:AxIaVRVa
ISE〜の、名〜物〜、赤福餅はえじゃないか。
424774ワット発電中さん:2011/03/29(火) 03:09:57.97 ID:MKDtA9Fv
このスレはほのぼのとしていてイイね。
425774ワット発電中さん:2011/03/29(火) 11:52:16.65 ID:FRXw4mDs
ISEの話が出たところで、教えて欲しいことがあります。
新規プロジェクトを作るときの操作についてです。

例えば、前回「hoge_Ver1.v」というVerilogソースを作成しました。
そうすると、mcsファイルも自動的に「hoge_Ver1.mcs」となり、バージョン情報が付くので
都合が良いからです。
それで、今回改造をすることになり、ソースを改造して「hoge_Ver2.mcs」を生成したいです。
すると、そのためにはVerilogファイルを「hoge_Ver2.v」にする必要があると思います。

このような場合、具体的にISEの操作として、どのようにすればよいのでしょうか?

1. Add existing sourceを使用
File, NewProject, Add existing Source, 「hoge_Ver1.v」(旧ファイル)を指定 とやると、
hoge_Ver2にはならず、再びjoge_Ver1ができてしまいます。
ならば、ということで今回作成したprojectフォルダに行って、手動でhoge_Ver2.vにリネームすると、
ファイルが無いと文句言われますし、仮に出来たとしても、プロジェクト内にVer1というゴミが出来て
しまい、イヤです。

2. 手動でリネーム
別途、仮フォルダーにVer1をコピー、Ver2にリネームした上で、
新規プロジェクトで、それを指定するのもありですが、CoreGenで作成したものは、
どれとどれをコピーしてくればいいかわかりません。特にブラックボックスで組み込むIPがある場合、
どのようにすれば良いのか、わかりません。

このように、ISEのプロジェクト作成時のファイル操作について、書かれた物は、何かあるでしょうか?
ご存じの方があれば、教えてください。
426774ワット発電中さん:2011/03/29(火) 14:55:42.63 ID:a+0TJkUw
各プロセスのヘルプ読めばどっかに書いてあったと思うけど

ISEの出力ファイル名はソースファイル名からじゃなくてトップエンティティ
(トップモジュール)の名前がつけられるはず
427774ワット発電中さん:2011/04/07(木) 20:12:27.13 ID:I9ta1g0N
教えてください。

Verilogで、RS232Cの送信部分を作っています。
16bitの数値を、10進数の文字にして、Terminalに送りたいのですが、
この場合、10で割っていく必要があると思います。
reg [15:0] data16;
reg [7:0] tx_data8;
reg [15:0] temp16;

tx_data <= data16 / 10000;
送信して
temp <= data16 - tx_data * 10000;
tx_data <= temp16 / 1000;
送信して
temp <= data16 - tx_data * 1000;  という感じです。

でも、2の階乗の割り算でないとダメだ(できない?)と聞いています。
このような場合は、どのような手法をとるべきでしょうか?

16進なら、ニブルを取り出して配列から引いてくる方法が考えられるのですが。
428774ワット発電中さん:2011/04/08(金) 09:47:25.75 ID:Mc6L6UyG
1クロックでやりたいならテーブル引きしかないだろ
複数クロックで処理するならいくらでもやりようがある

割算は面倒だから加算累積してみてはどうかな?
1. 5桁の2進化十進数の加算器をつくる
2. bit0=00001, bit1=00002 .... bit14=16768, bit15=32768と
  16個のテーブルだけ作る
3. 変換対象の各bitについて 16回 加算器に足しこんでいく
  (もちろんbitが立ってない場合は0を足す)
これなら20bit×16組の小さいテーブル用いて16クロックで計算可能。
429774ワット発電中さん:2011/04/08(金) 10:22:39.63 ID:HAF/NN7O
>>427
まじめにやると結構めんどくさいよね。
10000 と 10 のとき、
"10000" "10" にするか
"10000" " 10" にするか
"10000" "00010" にするかとか。
もう、"0x2710" "0x000A" でいいんじゃね?
430774ワット発電中さん:2011/04/08(金) 10:52:44.74 ID:SA3vUadi
>>427
除算器を作ればいいじゃない。
431774ワット発電中さん:2011/04/08(金) 10:54:22.17 ID:e9UZUhSz
>>427
CPU入れちゃうとか?
432774ワット発電中さん:2011/04/08(金) 13:00:50.33 ID:2fhtHZ/H
FPGA評価ボードにはLCD文字表示器が載っているけど、
エンコーダ→数値up/down→LCDに10進数で表示とか、
どうやってやっているんだろうか。
結局割り算をしないと表示できないですよね。
433774ワット発電中さん:2011/04/08(金) 13:03:03.89 ID:HAF/NN7O
ひんと:BCD
434774ワット発電中さん:2011/04/08(金) 13:04:23.31 ID:737nv9Ok
>>432
数値は単純に+1 or -1のアップダウンなんですか?
BCDでカウントすれば表示は簡単だと思いますよ。
435774ワット発電中さん:2011/04/08(金) 13:04:53.73 ID:737nv9Ok
かぶった・・・ora
436774ワット発電中さん:2011/04/08(金) 14:22:10.57 ID:2fhtHZ/H
なるほど、なるほど。こんな感じですかね。

reg [3:0] digit [0:3];

always @ ( ){
  if(エンコーダup){
    if(digit[0]==9){ digit[0]=0; } else { digit[0]++; }
    if(digit[0]==0){ digit[1]++; }
    if(digit[1]==0){ digit[1]++; }
    if(digit[3]==0){ digit[1]++; }
  }

  if(エンコーダdown){
    if(digit[0]==0){ digit[0]=9; } else { digit[0]--; }
    if((digit[0]==9)&&(digit[1]==0)){ digit[1]=9; }
    if((digit[1]==9)&&(digit[2]==0)){ digit[2]=9; }
    if((digit[2]==9)&&(digit[3]==0)){ digit[3]=9; }
  }
}
437774ワット発電中さん:2011/04/09(土) 01:56:40.59 ID:e2gHmHUD
Verilogで、モジュールをインスタンシエートして下層に組み込む場合、
最下層モジュールに必要な信号は、途中の階層も全部通って、top階層まで来て、
やっとI/Oと接続できると思います。
しかし、この方法では、各階層のカッコの中に書く信号の数が、とても多くってしまいます。
一番下の階層のために、途中階層では関係ない信号まで通過させなければなりません。
たとえば、最下層の信号を下から上まで布線して、topからピンに出してオシロで観察し、
終わったら、また信号を記述を消去。とても面倒です。

そこで、C言語のグローバル関数のように、clockとかresetなど、
topで宣言すれば下層まで響く、そんな記述方法は無いのでしょうか?
438774ワット発電中さん:2011/04/09(土) 02:23:45.13 ID:e2gHmHUD
×そこで、C言語のグローバル関数のように、
○そこで、C言語のグローバル変数のように、
439774ワット発電中さん:2011/04/09(土) 12:45:05.80 ID:XIEDZFk9
チップスコープの出番
440774ワット発電中さん:2011/04/09(土) 14:59:53.32 ID:S1d4642z
>>437
> 最下層モジュールに必要な信号は、途中の階層も全部通って、top階層まで
っていう設計手法が良くないと思うが。
デバッグせずにいきなり下層モジュールとして使っているのか?
441774ワット発電中さん:2011/04/10(日) 18:15:35.72 ID:PJf/OL+i
”ピンに出してオシロで観察”
って、普通にみんなやってるの?
442774ワット発電中さん:2011/04/10(日) 19:49:06.92 ID:+UhWPDhU
>>441
どうしようもない時だけ。ただし、大体ロジアナ。
基本的にSimで追いかける。
443774ワット発電中さん:2011/04/10(日) 20:56:20.57 ID:Zp7oPBqk
FPGAならSignalTapかChipScope使えよ。
444774ワット発電中さん:2011/04/10(日) 20:57:16.78 ID:rlti7T9U
デジタル回路できる人カッコイイ。
445774ワット発電中さん:2011/04/10(日) 23:34:48.21 ID:pVX9kYZn
たまにでいいので、Identifyも思い出してあげてください。
446YUI様:2011/04/11(月) 18:42:44.31 ID:J86qGUXX
********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
YUIです

ワンタッチBBSをYAHOOで検索してください
サーチのボタンをクリックしてください
リンクの板名をクリックしてください
コンピュータの画像掲示板で板名を検索してください

FPGA CMOSの解説尽き回路図の基礎が出てきます
誰でも簡単に回路図は書けます

********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
********************************************
447YUI様:2011/04/11(月) 19:34:15.16 ID:J86qGUXX
********************************************
********************************************
********************************************
********************************************
********************************************

☆YUI様 CHAT WORLDの20代チャットに出現中 ホスト遊び中

YUI様の写真です
http://image38.bannch.com/bs/M302/bbs/649726/img/0233342360.bmp
http://image36.bannch.com/bs/M302/bbs/649726/img/0233347315.bmp

********************************************
********************************************
********************************************
********************************************
********************************************
448774ワット発電中さん:2011/04/12(火) 04:59:25.82 ID:TgQEtT4j
このうざいマルチいろんなとこで見かけるんだけどなに
449774ワット発電中さん:2011/04/12(火) 05:43:05.39 ID:47Lasr31
じきにあぼんされるか、規制されていなくなるでしょ。
450774ワット発電中さん:2011/04/12(火) 20:15:14.12 ID:izT9xLb7
少なくとも半年以上は電電板に居座ってるぞ。
今までは自分でスレ立てて隔離されていたから規制されなかったのかな?
451774ワット発電中さん:2011/04/21(木) 10:14:54.29 ID:vah6YxA9
階層構造時にエラーが出て困っています

FPGAの勉強しており、Verilogを使い開発にはXilinxの10.1を使っています。(ボードが10.1までしか対応していないようです)

現在は拙いプログラムですが、正常に動作しており
1ファイルしかないので、階層構造化したところエラーが発生しました。

内容は
ERROR:HDLCompliers:247 -"ファイル名.v" line 引数使用しているところ全て Reference to vector wire "変数名" is not a legal reg or variable ivalue
ERROR:HDLCompliers:106 -"ファイル名.v" line 引数使用しているところ全て Iligal left hand side of nonbloking assigument
と表示されます。

調べてみたところ、wireを使用しているのに、Always文を使ってはいけないといったことが書かれていたのですが
http://japan.xilinx.com/support/answers/18363.htm
regを使っているのにこのエラーが出てきます。

mainプログラムから、下位moduleへ引数を渡し、下位moduleでinputしてキャッチしたのですが、それ全てが駄目なようです。
input側に input[7:0] 変数名や、input 変数名と試してみても変わらず
引数が多すぎるのかと思い、減らしてもやはり駄目でした。

原因としては何が考えられるでしょうか?
http://japan.xilinx.com/support/answers/18363.htm

一応アップローダーに、vファイルとそれをtxtにコピペしたのをアップしました・・・
http://www1.axfc.net/uploader/Sc/so/226418.zip
親module :project
下位module:CLK_Timing、LED_Lighting
です。
もう少し細分化したいのですが、簡単な分割ですらエラーが出てしまいorz
452774ワット発電中さん:2011/04/21(木) 10:19:00.65 ID:vah6YxA9
2重でサポートページ張ってしまった、申し訳ない

書き忘れです。何のプログラムかというと
1秒毎7seqの値が+1されていく、カウンターです。(2進数でLEDが光っていく)
最終的にはスイッチ使ったりして、時計やストップウォッチ動作にしたい予定です・・・
453774ワット発電中さん:2011/04/21(木) 10:20:07.17 ID:vm3qezgb
SEQ_POINT を定義する階層が違う
454774ワット発電中さん:2011/04/21(木) 10:22:41.55 ID:vm3qezgb
じゃなかった、代入してないだろ

SGのビット幅も違うし・・・
455774ワット発電中さん:2011/04/21(木) 10:32:41.03 ID:vah6YxA9
こんなに早くレスが来るとは
SEQ_POINTの階層が違うとは・・・

イメージだと
上位module projectで定義して、それを下位moduleのCLK_Timingへ送り
CLK_Timingでデータを取得し、それを上位moduleでLED_Lightingへ送って
動作させるってイメージなのですが・・・

Cで言えば、関数で処理して戻ってきたデータを別の関数で処理するといった
行動をしているつもりなのですが、全然違ったでしょうか?

SGはLED_Lightingの、case文の4bitと3bitの奴でしょうか?
456774ワット発電中さん:2011/04/21(木) 10:47:09.06 ID:vah6YxA9
プログラムの流れですが・・・
上位module(LED/ファイル名project)で、階層で使うデータを宣言して
それを各下位moduleで動作させるといった感じです。

上位moduleでやることはダイナミック制御のassign文だけです(絶縁処理)
最初にCLK_Timingへ、データを送り

CLK_Timingで1秒分の分周をさせ、1秒経過したら秒数を+1ずつカウントしていきます。
ここで現在の7Seqの位置を変更するダイナミック制御も行ってます。

LED_Lightingで、現在の秒数を調べ、それに対応する7Seqの数字とLEDを点灯させる

という流れです…。
457774ワット発電中さん:2011/04/21(木) 11:50:45.56 ID:vm3qezgb
SEQ_POINT は、誰が出すの?
CLK_Timing でカウントするなら、CLK_Timing 内で
reg 宣言しなきゃダメだし、CLK_Timing からは outputになるはず。

Cで言えば、引数と戻り値があるように、入力と出力は分けないとダメ。
リセットの処理もないけど、これだとミュレーションもできないよ。
458774ワット発電中さん:2011/04/21(木) 12:28:37.05 ID:vah6YxA9
>>457
レスありです。

つまりmodule LEDで宣言するときは

<<LED>>
reg[1:0] SEQ_POINTになり下位moduleに渡すときは

<<CLK_Timing>>
inout[1:0] SEQ_POINT
reg[1:0] SEQ_POINT

って書くということでしょうか?
引数がそのまま変わる、参照渡し見たいになるのかなと…


後誰が出すというのはどういうことでしょうか?
加算方法に関しては、CLK_Timingの最後に
SEQ_POINT <= SEQ_POINT + 2'b1;を書いています。
459774ワット発電中さん:2011/04/21(木) 12:31:55.15 ID:vah6YxA9
試しに書いてコンパイルしてみましたが
regがある場合はinputとどっちなの的なエラーがやはり出ました。

inout/outputでも変わらず…
460774ワット発電中さん:2011/04/21(木) 12:36:41.73 ID:vah6YxA9
エラーの部分を取ってみました。
基本的に上位module LEDから持ってきた変数に対して
使用しているところは全てエラー出ます…

http://iup.2ch-library.com/i/i0288934-1303356958.png
461774ワット発電中さん:2011/04/21(木) 19:22:19.16 ID:WgmLGxhP
そんなもんどうでもいからソース出せやグズ
462774ワット発電中さん:2011/04/22(金) 00:45:12.75 ID:Danvfud8
463774ワット発電中さん:2011/04/22(金) 08:35:50.24 ID:QTDLFlg7
>>461
>>451でzipにして置いてます DLパスはありません(vファイルとtxtファイルの2種類です)

>>462
見てみます
464774ワット発電中さん:2011/04/22(金) 09:17:11.40 ID:QTDLFlg7
一応貼り直し…
http://www1.axfc.net/uploader/Sc/so/226418.zip

pdf見てますが、以外にループ文多いんですね(for/while)
余り使わないほうが良いって聞いたんですけど、そんなことないのかな
465774ワット発電中さん:2011/04/22(金) 11:23:53.51 ID:qg15OYRi
>>458
inout なんてめったに使わないよ。

モジュールごとにコンパイルしてみれば?
466774ワット発電中さん:2011/04/22(金) 11:42:58.88 ID:QTDLFlg7
>>465
なるほど…
CheckSyntaxがそれに該当ですよね?

http://iup.2ch-library.com/i/i0289489-1303440015.png

単体でやってみましたが、やはりエラーが…
コンソールにはエラー数76でます…

一応CLK_Timingの方では、受け側でもinput [1:0]などサイズ指定してますが
こちらも駄目で、テスト用にこちらはサイズ指定はしてないです。
467774ワット発電中さん:2011/04/22(金) 14:34:59.37 ID:qg15OYRi
>>466

エラーメッセー時を理解してるか?

>Reference to scalar wire 'SG' is not a legal reg or variable lvalue
SG を定義してないからだろ。
reg [3:0] SG; って書けよ。

>Illegal left hand side of nonblocking assignment
これはクロック同期じゃないのにノンブロッキング使ってるからだろ。
組み合わせ回路に <= を使うなってこと。

>こちらも駄目で、テスト用にこちらはサイズ指定はしてないです。
全部指定しろ。
何で“テスト用だとしなくていい”って理解になるんだ?
468774ワット発電中さん:2011/04/22(金) 14:58:06.92 ID:QTDLFlg7
>>467
reg[7:0] SG;(reg[3:0] SGでも)と書くと >>459に書いたとおりエラーが出ます。
内容としては
ERROR:HDLCompilers:27 - "LED_Lighting.v" line 9 Illegal redeclaration of 'SG'

多分上位moduleにあるのに、再度regしているから発生するエラーだと思っています。

ノンブロッキング文に関しても = に変更した場合
ERROR:HDLCompilers:247 - "LED_Lighting.v" line 15 Reference to scalar wire 'SG' is not a legal reg or variable lvalue
ERROR:HDLCompilers:44 - "LED_Lighting.v" line 15 Illegal left hand side of blocking assignment
と出てやはり、エラーが発生します。

テスト用だとしなくていい、ではなくて
このエラーの原因が不明なので、、moduleが違うため原因を探るために、2種類のパターンで探っているだけです。
どちらもサイズ指定しても、しなくても変わらないためです。
469774ワット発電中さん:2011/04/22(金) 14:59:47.04 ID:QTDLFlg7
日にちがズレてIDが変わっていました

ID:vah6YxA9 =  ID:QTDLFlg7
です。
470774ワット発電中さん:2011/04/22(金) 15:04:27.72 ID:QTDLFlg7
>>467
付け加えますとSGは上位moduleで定義しています。

一部ソースを抜きますと

module LED (LED,CLK,SCAN,SG);
output [7:0] SG;
reg [7:0] SG;

LED_Lighting LED_Light(SEQ_POINT, S1, S2 ,S3 ,S4 ,SG, LED);
と、moduleを呼び出しています。

引数が多いので、最終的には削れるようなプログラムに変更したいと考えてるのですが、
引数に制限があるのでしょうか?
471774ワット発電中さん:2011/04/22(金) 15:13:44.18 ID:QTDLFlg7
LED_Lightingの方にも、サイズ指定を追加しました。

always内の
reg にたいしての代入は<=の方がいいのではないでしょうか?
wireに対してはassignですので、=だとは思いますが…

良く分からない点の1つとしてregを渡しているはずなのに
このエラーが出るのが全く分からない次第でして…
472774ワット発電中さん:2011/04/22(金) 15:35:08.13 ID:QTDLFlg7
追記
function文は使っていないので、割愛しまして
testモジュールに、S1,S2,を渡しまして、always文を書かずに

input [2:0] S2;
assign S2 = 3'b001;
と、書いたところエラーが発生せず、正常に動作しました。

上位moduleから下位moduleに渡したらregが強制的にwireになるのですか?
regのまま受け渡すことはできないのですかね…
473774ワット発電中さん:2011/04/22(金) 15:58:51.04 ID:qg15OYRi
>多分上位moduleにあるのに、再度regしているから発生するエラーだと思っています。
違う。

単体でコンパイルしてるんだろ。(してないなら、LED_Lighting.v だけでやれ)
上位モジュールは関係ない。

SG は output なんだから、上位で reg 宣言したら信号がぶつかる。


>ERROR:HDLCompilers:27 - "LED_Lighting.v" line 9 Illegal redeclaration of 'SG'
output SG; (1ビット)
なのに
reg [3:0] SG; (4ビット)
って書いてるから、ビット幅が違う信号を再定義してるって怒られてるんだよ。

これ以上はスレの無駄だからオレはレスしない。
474774ワット発電中さん:2011/04/22(金) 16:25:39.23 ID:QTDLFlg7
>>473
Error27に関しては、打ちミスだったみたいです。申し訳ない
とり合えず、対応全ての上位moduleにあったregを下位moduleに設置し、単体コンパイルを行うと
ERROR:HDLCompilers:120 - "LED_Lighting.v" line 14 Illegal redeclaration of input 'S1' as a reg
と表示される。

これが表示される場所が、inputのため、信号をoutputへと変更
その場合コンパイルは通る。

上位module自体も単体コンパイルし、全てのCheckSyntaxが通ったので全体コンパイルの
Synthesize-XSTをかけるとコンパイルエラーが発生する
ERROR:HDLCompilers:246 - "project.v" line 23 Reference to vector reg 'SEQ_POINT' is not a legal net lvalue
ERROR:HDLCompilers:102 - "project.v" line 23 Connection to output port 'SEQ_POINT' must be a net lvalue

SGのoutputで、信号がブツかるということなので、上位moduleのregを削除したところコンパイルが通り出力は出来たのですが、
今度は正常に作動しない

分からん…
475774ワット発電中さん:2011/04/22(金) 22:53:37.38 ID:/389fbag
>>474
とりあえずモジュール単位で完結させてから階層接続しようよ。
CLK_Timingで出力、つまり戻り値が存在しないってのはどう考えてもおかしいだろ。
CLK_Timing.v:
 input [1:0] SEQ_POINT;
  ↓
 output [1:0] SEQ_POINT;
 reg [1:0] SEQ_POINT;

project.v:
 reg [1:0] SEQ_POINT;
  ↓
 wire [1:0] SEQ_POINT;
476774ワット発電中さん:2011/04/23(土) 17:06:52.66 ID:T3ScQ+MP
>>475
thx,すごくこんがらがってたんですが、
このverilogの変数宣言って、Cでいうグローバル変数みたいな感じなんですね。
渡す側と渡される側が両方とも同じ変数名もってないと、なにそれ?状態になると思って
両方に色々書いてたりしたんですが・・・

ってことでプログラムを見なおして
http://codepad.org/0AmTjcDi
http://codepad.org/bN0rB8Nj
http://codepad.org/kxEDtmrq
http://iup.2ch-library.com/i/i0290188-1303533517.png
というふうに改良し、エラーはなくなったのですが
今度は正常に動作しません。
ワーニングを見てみるとシグナルエラーといった形
WARNING:Xst:638 - in unit LED_Lighting Conflict on KEEP property on signal Mtridata_SSG<0> and Mtridata_SSG<1> Mtridata_SSG<1> signal will be lost.
INFO:Xst:2261 - The FF/Latch <Mtridata_SSG_2> in Unit <LED_Lighting> is equivalent to the following 3 FFs/Latches, which will be removed : <Mtridata_SSG_3> <Mtridata_SSG_4> <Mtridata_SSG_7>
WARNING:Xst:638 - in unit LED_Lighting Conflict on KEEP property on signal Mtridata_SSG<2> and Mtridata_SSG<3> Mtridata_SSG<3> signal will be lost.

が表示されるのですが、output LEDとSGの書き方がまずいのですかね?
いまいちLEDとSGのoutputの書き方がわからず・・・
上位でoutputと書かないとダメみたいですし(module()の中にあるので
でも下位からデータを受けないといけないですし…

一応SSGとLLEDは一旦保管して、それをLEDとSGに渡すといった感じに分けてみたのですが
直接入れてる場合と変わらず‥
477774ワット発電中さん:2011/04/23(土) 18:27:20.55 ID:m3lav67H
>>476
まだこんがらがってる。これで動くほうがおかしい。

言語で書いているとはいえハードなんだよ。同時入力は出来ない。
信号ごとにalwaysを分けてみると同時入力になってるのがはっきり分かる。
CLK_SEC、CLK_ONの同時入力は、まぁ何とか動くだろうけど勝手に直した。
ttp://loda.jp/mcnc/?id=173.txt

>Cでいうグローバル変数みたい

そりゃあなたの理解が足りないだけ。信号名は変えられる。
でないと同じモジュールを並べて使うことが出来ないじゃない。
478774ワット発電中さん:2011/04/23(土) 20:12:50.54 ID:2ypVhz/S
すべてのレジスタは同時に動いているのだよ
479774ワット発電中さん:2011/04/23(土) 21:49:06.91 ID:Ds0a2Tyd
俺たちはコンカレントさ。
480ID:T3ScQ+MP:2011/04/26(火) 10:16:02.62 ID:K5gbBe+d
>>477-478
thx
えーと、全てのレジスタは同時に動いてるから、1つの処理に複数まとめて書くのが良くない
ということでしょうか?
流れ作業としても、別作業に関してはCLK毎に分割すると…

一応それも踏まえてLED_Lightingも7SEQとLEDに関しても分割してみました。
それと、エラーのこと調べていたら何か付けて置いたほうが良さそうなdefineもあったので追加
main LED:http://codepad.org/2GQ5Wa2w
CLK_Timing:http://codepad.org/SI19PnCH
LED_Lighting:http://codepad.org/0E8Zgz20

ですが、エラーが・・・orz
http://codepad.org/gSypRfAV
とり合えず、現状Xilinxのアンサーページとか見てエラーを解決しようとしている最中です。全く分からないけどorz

FPGAのCLKを使用するのでinput CLK
後はLEDと7SEQ、ダイナミックドライブするためにoutputを上位モジュールで書かないといけないと思うのですが
この場合、LEDとSG(7SEQ)を下位モジュールで使うときはどうすればいいのでしょうか?

S1〜S4やSEQ_POINTの場合は、態々メインで書かなくても良いので
下位で、作成しデータを入れ、outputで上位モジュールへ受け渡せばいいですが
上位で作ったやつを下位でデータ入れて、上位で出力する場合には…?

LED.とSGは上位でwire宣言し、下位モジュールと接続?
下位は出力したいので、output

一次保存用の(いるのかな?)regを宣言し、
そのregに取り敢えず保管
regに入ったデータを上位から持ってきたLEDとSGにassignして入れる。

ってやってるんですけど、そもそもS4に関してはよくわらからない_0,_1_2のワーニングが出てるし、
一次保存用に置いておいたSSGとLLEDにもワーニング出てるし、そもそもシグナルがロストしてるとか言われてるしorz

難しい…
481774ワット発電中さん:2011/04/26(火) 10:24:50.88 ID:K5gbBe+d
やっぱり一次保持regとか別に用意する意味もないだろう…と
LED_Lighitngを修正するも
http://codepad.org/qMDhJkKN

エラーは名称が変わっただけで
http://codepad.org/w0iuwUG4

エラーをまとめてみると
XST:638/1710/1895/2677

638:データが失われている
1710/1895:合成がうまくいっていない?http://japan.xilinx.com/support/answers/31856.htm
2677:接続がされていない的なエラー?

http://ja.edaboard.com/topic-647495.0.html
を見て638を見ているのですが双方向ウンヌンといったことを…
482774ワット発電中さん:2011/04/26(火) 10:41:41.71 ID:I0e0aA9v
>>480
まず回路図を書いて、それをHDLで記述することをお勧めする。
まさか回路図が書けないってことはないよね?
483774ワット発電中さん:2011/04/26(火) 10:54:43.40 ID:K5gbBe+d
>>482
全く書けないぜ…抵抗とかが何とか分かる位なんだが
FPGA初めて1ヶ月位の状態

取り敢えず、FPGAの回路図みて、使うポートを見つけてそれをセットする位なら出来るんだが…

一応週1で講師から教えてもらってるんだが、取り敢えず”弄ってみろ、やればやるほど分かる”とか
聞くより、やる量だって話になってプログラミングしてるんだ。
で、今回のこの件を質問しても講師すら分からないんだぜ…
取り敢えず落ち着いてやってみて、とかinputされてるよなぁ、なんでだろう的なことしかなくて
ラチがあかない…

回路図作成用にCADLUSサーキットをインストールしたんだけど
起動しかしていないな…
484774ワット発電中さん:2011/04/26(火) 12:24:08.93 ID:IUkn+gNA
>>483
LED_Lightingと、mainでそれを呼び出すところで、
カッコ内の信号の順番が違うみたい。

FPGAの、1つの出力ピンの、H/L(3.3V/0V)を保持(記憶)するフリップフロップ(reg)は、
FPGAの中で、唯一1つだけ。
練習で作ったモジュールを、下位モジュールとして呼び出すとき(使い回すとき)、
すでにその下位モジュールには、出力を決定するフリップフロップ(reg)が内蔵されているので、
それを呼び出すmainとかでは、wireで受けないといけない。

それを呼び出すmainとかで、その信号を別の下位モジュールにつなぎたいとき、
mainの中に接続用の信号線が無いといけない(宣言されてないといけない)。
前述の理由で、それはwireで宣言することになる。
このことは、基板上で2つのICを接続するのと良く似ている。
まず2つのICのVDDとVSSを電源とGNDに接続するでしょ。
次に、IC1の1pinと、IC2の3pinを接続したいとすると、電線でつなぐじゃない。
その電線がVerilogで言うところの、wire宣言になる。

次にIC間をつなぐ順番についても同様で、
IC1 (1 2 3 4 5)
IC2 (6 3 1 9 5)
上記の例は、IC1-1をIC2-6pinに、IC1-2をIC2-3pinに・・・・と、つなぐ例。
ここで大事なのは、カッコ内に登場する順番。

>講師から教えてもらってるんだが、取り敢えず”弄ってみろ、やればやるほど分かる”とか
自分の勉強不足は悪くない、講師の教え方がいけない、とでも言いたいみたいだな。
甘えていてはダメだ。俺なんて、会社に俺一人。聞ける人、教えてくれる人は誰もいない状態で
本を読んで、失敗して、繰り返して、徹夜して、苦しんで覚えた。
質は別としても、聞ける講師がいるだけマシだと思え。
485774ワット発電中さん:2011/04/26(火) 12:57:55.90 ID:K5gbBe+d
>>484
thx
wire電線でつなぐってイメージは何となくわかりました。

main→CLK→main→LEDって流れで行く時に
CLKで作った、S1~S4 SEQ_POINTのデータをLEDまで配線してやってなかった(mainにwireがなかった)
これを付けてやれば、取り敢えずダイナミックドライブは作動して、ワーニングも大幅に消えた

後は646が発生してS1とS3に問題があるっぽいから、その信号関連かもです。
ググリにいってきます今原因探し中…

講師に関しては一応書いておかないと講師にきけって感じになりそうなので
言い訳しちゃいました、申し訳ない。
486774ワット発電中さん:2011/04/26(火) 13:25:23.74 ID:gyDO96zz
この程度が教えられない講師なのか
それとも自分で考えて分かるようになるまで待ってるのか
487774ワット発電中さん:2011/04/26(火) 13:38:21.99 ID:K5gbBe+d
できたああああああああああああああああああああ、感謝orzzzzzzzz

main:http://codepad.org/DS45Qvbb
CLK_Timing:http://codepad.org/2eLWNeWr
LED_Lighitng:http://codepad.org/iNsm84kg

エラー/ワーニングなしで突破出来ましたorz
最後の部分は受け渡しの時に順番守っていたつもりが、呼び出しと呼び出される側の引数の順番が
違っていたっていう構文ミスでしたorz

スレ大量消費その他いろいろお手数かけました。
ありがとうございました。
488774ワット発電中さん:2011/04/26(火) 13:58:18.72 ID:K5gbBe+d
失礼main部分だけ更新されてなかった・・・ LED_LighitngのSEQ_POINT渡しと wire宣言の順番等変えました。それでは・・
489774ワット発電中さん:2011/04/26(火) 15:58:19.38 ID:IUkn+gNA
>>487
それはよかったね。

Verilogは、ICをつなぐことをイメージすると、理解しやすい。(私がそうだった)
wire regの問題は、私も当分填っていたからね。
記憶ものの信号出力は、reg=FFで記憶され、それがFPGA内で唯一1個しかないことに気付いた。
そうしたら、インスタンシエートした時のエラーが激減した。嬉しかったよ。

あと、インスタンシェートするときのカッコの中身は、Cでいう引数と思って問題ない。
ただ、Cでは順番で対応するけど、FPGAではICのピン名で対応させることもできる。
間違いが無いという点で、こちらの方が優れている。
PIC IC1 ( .CLK(clock), .WR(en_a), RD(en_b), LED_out() )とかって書く。
この文章の読み方は、
・IC1 には、PICというICを使用し、
・PIC階層の"CLK"ピンに、この階層の"clock"を接続して、
・PIC階層の"WR"ピンに、この階層の"en_a"を接続して、
・PIC階層の"RD"ピンに、この階層の"en_b"を接続する、
・PIC階層の"LED_out"ピンは、何もつながない(=使わない)
と読む。
欠点=下位階層PICの信号名も書く必要があり面倒くさい。
長所=カッコ内の記述順番は関係ないので、間違いが少ない。

あと、ポイントは、面倒くさくてもwireとregをハッキリ書くと良い。

module PIC (
  input wire   CLK,
  input wire   WR,
  input wire   RD,
  outut reg [6;0] LED_out
);

490774ワット発電中さん:2011/04/27(水) 08:21:38.66 ID:Qx8CMNXW
>>489
成程、まだインスタンシェートがどんなもものか分かっていないので
ぐぐって調べてみます。

ただ見た目はクラスっていうか構造体見たいな見た目ですね
wire/reg気をつけます。
有難う御座います
491774ワット発電中さん:2011/04/30(土) 16:50:36.29 ID:rYpYndq5
Verilogは2001があるけど、VHDLも最新版は何? VHDL2011とか、あるのかな
492774ワット発電中さん:2011/04/30(土) 17:43:38.35 ID:GT9cgRev
1987、1993が一般的だけど2002、2008もあるらしい。
違いは知らん。
493774ワット発電中さん:2011/05/01(日) 00:22:20.99 ID:QqbaXJ9E
>>492
ありがとう。やっぱりあるんだね。
例えばその機能を使おうとした時って、
われわれの手ではどうしようもなくて、
XilinxのISEが対応してくれるのを待つしかない、
という考え方で合っていますか?

494774ワット発電中さん:2011/05/01(日) 01:06:24.54 ID:ysCaeFcd
Synplifyとか precision synthesis 使ってみれば?
495774ワット発電中さん:2011/05/01(日) 02:00:11.27 ID:rCjjfIKp
なるほど、そういう手がありましたか。
名前は良く聞くけど、値段はどのくらいするものでしょうか?
5万とか10万くらい?
496774ワット発電中さん:2011/05/01(日) 10:02:48.56 ID:aM/YH2OU
>>495
桁が二つ位違うよ
497774ワット発電中さん:2011/05/01(日) 11:13:14.07 ID:2cH46XKr
もちろんUSドルだよね > 5万とか10万くらい
498774ワット発電中さん:2011/05/01(日) 16:08:44.68 ID:yq34QigY
VHDLシミュレーションの質問です.
quartusU9..1でwaveformを用いて回路の中間値を確認したいのです.
waveform上で信号を選択し表示させStartSimulationをするのですが,何度表示する信号を変更しようと毎回同じ信号(入力,出力,クロック)しか表示されません.
中間値を確認するにはどうすれば良いのでしょうか.

もう一つ質問です.
quartusでのシミュレーションが出来なかったためmodelsimを用いてシミュレーションを行いたいのです.
quartusではコンパイルが出来のですが,modelsimでは「Cannot find expanded name」とエラーが表示され,コンパイルが出来ません.
このエラーはなぜ表示されるのでしょうか.

質問ばかりでもうしわけありません.
どなたがわかる方がおられれば教えていただけると幸いです.
499774ワット発電中さん:2011/05/01(日) 16:14:37.56 ID:yq34QigY
自己解決しました.
原因はwaveformのファイル名が正しくないことでした.

お騒がせしてすみませんでした.
500774ワット発電中さん:2011/05/11(水) 09:07:03.65 ID:aYhD8Hpt
FPGAボードについてる、ブザーで音色を鳴らしたいと考えてるのですが、
音階がわかりません…
サンプルソースとして、http://wenku.baidu.com/view/7a838b42336c1eb91a375df5.html
に書かれている

originという変数で音階を作っていると思うのですが
この7281〜16383の値が、ドレミファソラシドのどれを表してるのかがわからず…(半音にする場合もわからない)

音階について調べてみたところ
http://www.cqpub.co.jp/dwm/turnout/200301/03/01_body.htm
http://www.eleki-jack.com/h8/2009/10/h8-25-1.html
を見ても、???状態です。
501774ワット発電中さん:2011/05/11(水) 12:41:13.18 ID:cjsap363
>>500
読みにくいコードだし、やってることが変だな。

origin=7281 のときは、carry で divider=7281 になって
あとはカウントアップ。divider=16383 になると carry が立って
7281 に戻る。

一回りに 9103 クロックかかるから、6MHz で動いているとすると
659.12Hz。これで sp が反転するから sp は、329.56Hz だ。
音程だと“ミ”だね。

余談だけど、ブザーが圧電素子だと、2KHz くらいないと音が小さいよ。
502774ワット発電中さん:2011/05/11(水) 14:50:41.23 ID:aYhD8Hpt
>>501
ありがとうございます、Hzの出し方そうだすんですね…

(6M / Origin) / 2 = 周波数

このプログラムを自分なりにアレンジして分かりやすくするよう頑張ります
有難う御座いました。
503774ワット発電中さん:2011/05/17(火) 13:45:21.51 ID:Pfhdv+hz
clockの作り方がいまいち分かりません。

http://www.csun.co.jp/SHOP/2010103101.html
こちらの開発ボードを使っているのですが、サンプルソース部分に

always @ ( posedge clk or negedge rst_n)
if (!rst_n )
clk_cnt <= 24'd0;
else
clk_cnt <= clk_cnt + 1'b1;
wire clk_6mhz = (clk_cnt[2]||(clk_cnt[1]&&clk_cnt[0])); //(clk_cnt[2]&&clk_cnt[1]);
wire clk_4hz = (clk_cnt[22]&&clk_cnt[23]);

と書かれています。

....... 128 64 32 16 8 4 2 1
のうち、2と1の部分をANDし、4をORすることで、どうして6MHzが作成されるのでしょうか?
同様に、4Hzの作り方もどうして、それで作れるのかが分かりません…

verilog clockの作り方等でググリましたがピンとくるものがなく、分かりやすいサイトとかあったら
一緒に教えて欲しいです。
504774ワット発電中さん:2011/05/17(火) 19:19:03.44 ID:cfrD4NVm
>>503
そのボードの販売店に聞くのが一番早くて丁寧だと思うよ。

>どうして6MHzが作成されるのでしょうか?
どこまで考えて、どの部分が分からなかったのでしょうか。
全く考えずに「教えてクレクレ君」ということはないですよね。
505774ワット発電中さん:2011/05/17(火) 20:41:56.11 ID:Z15SNHbP
>>503
・元のクロック周波数はいくつでしょう。
・真理値表を書いてみましょう。

正直まともな設計者ならそんな作り方しないと思う。
サンプルソースは営業マン or 新入社員が書いたに違いないw
506774ワット発電中さん:2011/05/17(火) 20:42:40.89 ID:gJl4xzv1
シミュレーションしてみれば。
507774ワット発電中さん:2011/05/18(水) 00:44:35.20 ID:kCt8DjQi
mHzと書いてあるのが違和感。
wire宣言が最後に書いてあるのが違和感。
beginとendを書かないので、<=の次の行で=が出てきて驚いた。
508774ワット発電中さん:2011/05/18(水) 04:06:53.61 ID:Rk377MCr
if()のbegin endが無いのはわかるけど、
always ()のendは、無しでもいいの?
509503:2011/05/18(水) 10:13:20.59 ID:fGYwStdj
Clock : 50MHz
FPGA内部はDLLがあって、50MHzのクロックをニーズに応じて必要なクロックを分類できる。
特殊なクロックは50MHzで生成出来ない場合はユーザーOptionをご利用ください。

と書いているので50MHzです。
60MHz= 1/60
510774ワット発電中さん:2011/05/18(水) 10:18:06.89 ID:fGYwStdj
途中で押してしまった(´・ω・`)
511774ワット発電中さん:2011/05/18(水) 10:21:29.57 ID:fGYwStdj
50MHz = 50M回/1s
6MHz = 6M回/1s

処理の差を考えると
50Mhzの動作を8.333(ry回繰り返せば6MHz1回分と同じ処理能力に落ちると思うのですが
その辺の計算も今一
512774ワット発電中さん:2011/05/18(水) 11:07:42.76 ID:fGYwStdj
取り敢えず、4Hzの作り方は
50.000.000 / 4 = 12.500.000なので

always @(posedge clk)
begin
if(!rst)
cnt <= 0;
else cnt <= cnt + 1;
end

always @(posedge clk)
begin
if(cnt == 12500000)
clk_4hz = 1;
end
513774ワット発電中さん:2011/05/18(水) 11:11:20.44 ID:fGYwStdj
Tab→Enterの罠…

always @(posedge clk_4hz)
begin
ほにゃらら
end

見たいな書き方に直せば動くと思うのですが
wire clk_6mhz = (clk_cnt[2]||(clk_cnt[1]&&clk_cnt[0])); //(clk_cnt[2]&&clk_cnt[1]);
wire clk_4hz = (clk_cnt[22]&&clk_cnt[23]);
↑の書き方がイミフなのです。

ただこのやり方の場合、先ほどの6Mhzの8.333333333333333333333333333
だと割り切れないのでズレが生じてくるのですが…
514774ワット発電中さん:2011/05/18(水) 11:13:07.20 ID:fGYwStdj
あれ、でもこれだと分周になってませんよね…
ちょっと考え直します、スレ消費ごめんなさい
515774ワット発電中さん:2011/05/18(水) 11:16:08.31 ID:fGYwStdj
いややっぱり、分周になってますよね。すみません
516774ワット発電中さん:2011/05/18(水) 11:24:26.41 ID:bnE6cBfn
サンプルソースとってこれない...
517774ワット発電中さん:2011/05/18(水) 12:16:57.87 ID:kCt8DjQi
#define `center 6250000
#define `period 12500000

always @(posedge clk or negedge rst) begin
  if(rst==1'b0) begin
    cnt <= 0;
  else
    if(cnt >= `period) begin
      cnt <= 0;
    end else if(cnt == 0) begin
      clk_4hz = 1'b1;
      cnt <= cnt + 1;
    end else if(cnt == `center) begin
      clk_4hz = 1'b0;
      cnt <= cnt + 1;
    end
  end
end
518774ワット発電中さん:2011/05/18(水) 13:02:30.02 ID:fGYwStdj
>>516
確かに今落とそうとするとロード始まりませんね…

>>517
これはclk_4hzはregですよね。
periodで、posして、 _|

centerにくるまで_| ̄上がった状態になって
centerにきたら下がる_| ̄|_って感じに
基本的にcenterの値は半分で問題ないのでしょうか?

これに当てはめると、6MHzを作る場合は
period 8
center 4

ただこの場合だと、0.3333ずつ誤差がでていくので、3回目ごとにperiod + 1の判定を作ったほうがいいのでしょうか?
519774ワット発電中さん:2011/05/18(水) 14:40:30.53 ID:kCt8DjQi
>>518
ごめん、clk_4hzは、regにしないといけないね。

>基本的にcenterの値は半分で問題ないのでしょうか?
この4hzの信号を使う回路が、↑エッジ動くならcenterは、適当な値でいい。

50MHzのclockから、6MHzできません。割り切れないからです。
48MHzのclockに変更が吉。
それか、DCMで(50MHz×3)/25すれば、1発でできる。

>ただこの場合だと、0.3333ずつ誤差がでていくので、3回目ごとにperiod + 1の判定を作ったほうが
平均値で6MHzでいいの? そんな適当な6MHzでいいのなら、それでいいんじゃない?
520774ワット発電中さん:2011/05/18(水) 14:58:53.06 ID:fGYwStdj
>>519
いえ、正確な値が良いです。

50MHzを48MHzに変更できるのですか?
マニュアル見たところ、>>509のとおりユーザーオプションをご利用くださいと書いていますので、
こちらを使用するのだとは思いますが

xxx.ucfに
NET "clk_48MHz" LOC = "p77";
を追加した後はどうしたらよいのでしょうか?(48MHzセット)

NET "CLK_48MHz" LOC = "p77" 48000000;
こんな感じで問題ないんでしょうか?

DCMを調べてみたら何やら難しい模様…
ttp://d.hatena.ne.jp/ippei-r/20080706/1215272062
521774ワット発電中さん:2011/05/18(水) 15:02:29.09 ID:fGYwStdj
あ、追加するところ的な意味は、でです。
それとも、ucfではなくてソース内で設定するのでしょうか?
522774ワット発電中さん:2011/05/18(水) 15:32:25.37 ID:cBBeXdQ1
常識的に考えて48MHzのオシレータを自分で実装(半田)しろってことだと思うが
523774ワット発電中さん:2011/05/18(水) 16:09:48.30 ID:fGYwStdj
>>522
oh...つまりDCMを使うしかないってことですね

ttp://marsee101.blog19.fc2.com/blog-date-20110112.html
を見る限り
DCM 関数名?{
ttp://www.xilinx.com/itp/xilinx5j/help/projnav/html/hidd_dcmdlg_lowfreq.htm
に書かれてる奴をセットする

といった使い方だと思うのですが、この設定項目見てもわからず…

初心者向けに細かい設定の仕方が書かれた、本かサイトってないですかね?
出来ればサンプルものっていると尚嬉しいのですが
524774ワット発電中さん:2011/05/18(水) 21:57:33.73 ID:TJhfgCXB
>>523
50Mhzでそのソース(だけ)だと
clk_6mhz6.25MHz、デューティ62.5%、clk_4hzは約5.9Hz、デューティ25%になる。

コピペしたところ以外に関連箇所がありそうだけど、サンプルソース見れないのでそれ以上分からん。
この辺りにうpしてくれると何か分かると思う。
ttp://loda.jp/mcnc/

いずれにせよ、既に回答があるようにDCM使わないと50MHzからジャスト6MHzは作れないんだけどね。
てか、サンプルソースで使ってないジャストの周波数が何で必要になるの?
525774ワット発電中さん:2011/05/18(水) 23:39:29.27 ID:kCt8DjQi
>>523
>oh...つまりDCMを使うしかないってことですね
なんで? >>522の言うとおり、水晶発振器を取り替えるということだよ。
水晶発振器を取り替えるとということは、ハードウェアを触るという意味で、
Verilogソフトをやucfファイルを触るわけではない。
一般的な評価ボードだと、水晶発振器は、2つ載せられるようになっているけど
1つしか載っていなくて、あと1つは空き屋になっている。なので自分で通販とかで
希望する水晶発振器を購入して、自分の手で差し込んで、使うということ。

それで、発振器No.2を使うのかNo1を使うのかを切り替えるには、
xxx.ucfファイルの中の1行を書換えて、再度コンパイルして、FPGAに焼き込む。
ucfファイル中の「clkは○○ピンの足につながっているよ」みたいな記述行を、
コピーして、1つコメントアウトしておいて、生きている行のピン番号の値に、
No2の発振器の出力がつながっているピンに変更してセーブ。

>出来ればサンプルものっていると尚嬉しいのですが
DCMは、今のキミにはちょっと難しいかもしれん。だいたいの手順イメージを書いておくね。
1. ISE上から、CoreGen(コアジェネレータ、略してコアジェン)という別アプリを立ち上げる。
2. CoreGenの設定で「'docomo'という名前で、50MHz入力、6MHz出力のICが欲しいじゃんね」と名古屋弁でセット、コンパイル。
  「50MHz→6MHz変換IC」が出来上がる。ICとは言ってもソフトなのでVerilogソースが1つ生成されるということね。
3. もともとのtopソースに戻って、
    docomo IC1 ( .入力(clk50MHz), .出力(clk6MHz) );
  という1行追加する。C言語で言う関数みたいな感じね。
  カッコで引数を渡して結果もカッコ内で受け取る。
  (このように、「よそにあるIC」を呼び出すように書くことを「インスタンシェートする」と言う。
                      意味は「組み込む」とほぼ同義)
4. そのICの出力を、何食わぬ顔をして今までのclockとして使ってソースを仕上げる。
5. あとは今まで通り、コンパイルして、FPGAに書き込んで、はい出来上がり。
6. 少し考えると分かると思うけど、4Hzのほうも同様に「softbankという名前で、4Hzを出すICが欲しいぎゃ」として作り、
   softbank IC2 ( .入力(clk50MHz), .出力(clk4Hz) );
  とできる。これがたまらなく便利なんだ。

おっと、仕事が始まった
526774ワット発電中さん:2011/05/18(水) 23:52:17.67 ID:YYueMM+P
>>523
サンプルみろよ。
527774ワット発電中さん:2011/05/20(金) 15:05:39.55 ID:mwM0W1tV
>>525
ふむふむ、今月少々余裕がないので
出来ればソフトウェア面で終わらせたいかなと

詳しい説明有難う御座います。CoreGenですか・・・
ググってみます。
使えるようになれば、CPU性能上限としていろいろなのが作れて便利そうですね。

>>524
成程、今出先のためアップ出来ないです申し訳ない。

サンプルが6MHzで作動させてたので、出来ればジャストがいいかな?と思ったのですが
5MHzなら割り切れるので、5MHz作ってあとは微調整すればいいんじゃ、とふと思いました。
取り敢えず5MHzで調整して思いますorz

長々と有難う御座いました。
528774ワット発電中さん:2011/05/24(火) 10:25:53.90 ID:03Pjpm3c
どもです、取り敢えず5MHzを作成することにして
実機に転送したのですが、音がなりませぬ…
後はimplemente programming fileにて、Warningが1つ出ます。

WARNING:Route:455 - CLK Net:CLK_inst/CLK_5MHz<0> may have excessive skew because

内容としては、CLK以外の場所でCLKとして使ってるというものらしいのですが
確かに5MHzと4Hzを作成してるので、出るのは仕方がないと思うのですが消せるのでしょうか?

取り敢えず、Xilinx ise13.1のシミュレータ(isim)を起動してテストしたのですが
5MHzと4Hzが上がりっぱなしで0になっていませんでした。(20nsゴトに~clock&rstを2000ms)

main:http://codepad.org/ISxOLChN
clk:http://codepad.org/fBfGjjhk
song:http://codepad.org/8kkDFSll
UCF:NETで、 CLK:p76 / RST:p152 / SP:p15

になります。
CLKのpos/neg判定もdefine変更しても変わらず
5MHzの場合、10回カウントしたらpos、5回目でnegといった判定にしてます。

原因として考えられる部分はCLK部分しかないと思うのですが
個人的には、判定式が間違ってるとは思えず、どこが問題あるのでしょうか?
VSのように、デバッグモードで1つずつずらせていければ良いのですが…

ちなみにサンプルの方はこちらになります
main:http://codepad.org/JuBfVq5v
song:http://codepad.org/BWlxzxpc
529774ワット発電中さん:2011/05/24(火) 12:43:18.00 ID:PsYZjE91
ちゃんとコードを書けよ

分周器の動作が、最初と真ん中と最後しか記述されて無いだろ。
530774ワット発電中さん:2011/05/24(火) 13:03:50.53 ID:03Pjpm3c
>>529

つまり、

//最初から、中央まで1
if(0 >= center -1) begin
  CLK_5MHz <= 1'b1;
clk_sec2;
end

//中央から、最後まで0
if(center >= Period_5MHz) begin
CLK_5MHz <= 1'b0;
clk_sec2;
end

という記述が必要ということですか?
regはデータを保存し続けるので、そのままでも

1 _____        _____________
0   |____________|       |_________
   center   period     center

こういった動作してくれるのかなと
531774ワット発電中さん:2011/05/24(火) 13:12:04.35 ID:03Pjpm3c
訂正 clk_sec2 <= clk_sec2 + 1;
532774ワット発電中さん:2011/05/24(火) 14:27:38.77 ID:03Pjpm3c
あ、おもいっきりif文が間違ってますねorz

if(clk_sec2 >= 0 && clk_sec2 <= center-1)


if(clk_sec2 >= center && clk_sec2 <= `Period_5MHz)
でした

なんであんなif文作ったんだ…
533774ワット発電中さん:2011/05/24(火) 14:36:34.99 ID:03Pjpm3c
おお、出来ました ノд`)

begin
//分周した場合
if(clk_sec2 >= `Period_5MHz)
clk_sec2 <= 0; //最初から
//初期_pos 1
else if(clk_sec2 == 0) //最初の場合
begin
CLK_5MHz <= 1'b1; //クロックをpos
clk_sec2 <= clk_sec2 + 1; //時間を進める
//0 ~ Center_5MHz pos 1
end else if(clk_sec2 >= 0 && clk_sec2 < `Center_5MHz)
begin
CLK_5MHz <= 1'b1;
clk_sec2 <= clk_sec2 + 1;
//Center neg 0
end else if(clk_sec2 == `Center_5MHz) //半分までカウントした場合
begin
CLK_5MHz <= 1'b0; //クロックをneg
clk_sec2 <= clk_sec2 + 1; //時間を進める
//Center ~ Period_5MHz neg 0
end else if(clk_sec2 > `Center_5MHz && clk_sec2 < `Period_5MHz)
begin
CLK_5MHz <= 1'b0;
clk_sec2 <= clk_sec2 + 1;
end
end
ただこのままだと、冗長なので(Centerだけの部分とPeriodだけの部分)
この二つをif文含める用にして、短くしたいと思います。

regで保存していても、毎回動作をしてあげないと駄目なんですね…
有難う御座いました。
534774ワット発電中さん:2011/05/24(火) 14:57:13.92 ID:03Pjpm3c
CLK:http://codepad.org/SneBnefx

Warningも全部消えました感謝です。
有難う御座いました。
535774ワット発電中さん:2011/05/25(水) 00:18:35.01 ID:PLGZ3WiX
>>534
リンク先は何なのか不明。

>>533
ちなみに、regは記憶するので、変化点だけ if()すればよいです。
clockを++するところは、各範囲にそれぞれ書くのは格好悪いので、
else if()で条件を跳ねまくって、最後に else { clock++; }とすれば
いいんでないかな。
(この文章の説明はC表記だけど、Verilogでちゃんと書いてね。)

コツは、reg変数に、同時に2箇所以上で代入が起こらないようにすること。
if(){
  clock++;
} else if() {
  clock++;
} else if() {
  clock++;
} else if() {
  clock++;
} else if() {
  clock++;
} else {
  clock++;
}
は、合格だけど、

if() {
  clock++;
}

if() {
  clock++;
}
というのは、喧嘩するかも知れないので、エラーになる。
536774ワット発電中さん:2011/05/25(水) 01:11:13.58 ID:X8pFBlA3
>>533>>534
人それぞれだろうけど、複雑に記述しててバグ誘発しそう。
こんな感じならすっきりしない?(まとめるのではなく分けてみた)

always @(posedge CLK or negedge RST)begin
  if(!RST)
    clk_sec2 <= 0;
  else begin
    if(clk_sec2 == (`Period_5MHz-1))
      clk_sec2 <= 0;
    else
      clk_sec2 <= clk_sec2 + 1;
    end
  end
end

always @(posedge CLK or negedge RST)begin
  if(!RST)
    CLK_5MHz <= 1'b0;  //初期化
  else begin
    if(clk_sec2 >= (`Center_5MHz-1))
      CLK_5MHz <= 1'b1;
    else
      CLK_5MHz <= 1'b0;
    end
  end
end

あと、シミュレーションはしっかりと。
パッと見、5MHzの周期が11クロック分になっているのではないかと。。。
537774ワット発電中さん:2011/05/25(水) 01:18:46.15 ID:UNRf718N
最近の論理合成ツールってコンパレーターをカウンタ出力にマップするまで自動で論理圧縮するの?
分周程度にコンパレーターはもったいない気がするけどどうなん?
538774ワット発電中さん:2011/05/25(水) 01:47:59.39 ID:PLGZ3WiX
>>537
こういうやり方ですか?

always @() begin
  if( counter < 16'bいくつか )begin
    counter <= counter + 1;
  end else begin
    counter <= 0;
  end
end
clock = counter[15];
539774ワット発電中さん:2011/05/25(水) 09:30:35.61 ID:rhnYq7xj
>>536
有難う御座います。
確かに、そちらのほうがif文を簡略化出来て楽そうです。

個人的には、if(clk_sec2 < (`Center_5MHz)と、最初から1の方が好みなのですが、
同期ウンヌンの問題で、後からposの方が宜しいのでしょうか?

シミュレータのクロック部分ですが、修正(好み版)テストしてみたところ

CLK_50MHz 開始20ns、20ns刻み
CLK_5MHz  開始20ns、200ns刻み

となっております。
ただ、5MHzがnegする部分が  _| ̄| ←ここ

                                 ↓220ns
5MHz
20ns| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|________

50MHz
20ns| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄|_| ̄
   1     2     3     4     5     1     2 

になりましたので、問題なくなったと思います。
                 
540774ワット発電中さん:2011/05/25(水) 10:47:22.70 ID:EUqIXZeO
>>537
たかだが数ビットだから論理圧縮うんぬんは関係なくね?
1ゲート1ゲート削ってるの?
541774ワット発電中さん:2011/05/25(水) 14:12:00.57 ID:UNRf718N
>>540
なるべくそうしてんな遅延減るから早い回路になるし
542774ワット発電中さん:2011/05/27(金) 00:42:16.27 ID:evzXoLuG
一時停止ってどうやればいいのかな?
スイッチを一回押せば停止、もう一回押せば再開って感じのやつ。
一応、今考えてるのは、

何か変数(例えばa)を用意してスイッチを押すと'0'を代入

while a='0' loop でa='0'の間ループ

もう一度スイッチを押すとaに'1'を代入

条件から外れて再開

っていう考え方でやってたんだけど全然できなくて。
他にもwait onとか考えてみたけどどうしても動かない(;w;)
分かる方ご教授お願いします。
543774ワット発電中さん:2011/05/27(金) 01:55:14.97 ID:i168wG5r
>>542
やっつけ。

process(rst_l,clk)begin
if(rst_l='0')then
  sw_lat <= '0';
elsif(clk'event and clk='1')then
  if(sw='1')then
    sw_lat <= not sw_lat;
  end if;
end if;
end process;

process(rst_l,clk)begin
if(rst_l='0')then
  count <= (others=>'0);
elsif(clk'event and clk='1')then
  if(sw_lat='1')then
    if(count>=x"1234")then
      count <= (others=>'0');
    else
      count <= count +1;
    end if;
  end if;
end if;
end process;
544774ワット発電中さん:2011/05/27(金) 03:34:11.84 ID:C90r20ye
Verilog歴1ヶ月の僕が考えた

module hoge (
  input wire clock,
  input wire reset,
  input wire SW_in,
  output reg OUT
);

  reg    SW_mem1;
  reg [ 3:0 ] SW_mem2;
  reg [ 2:0 ] state;

always @ ( posedge reset or posedge clock ) begin
  if( reset == 1'b1 ) begin
    OUT <= 1'b0;
    SW_mem1 <= 1'b0;
    SW_mem 2<= 4'b0;
    state <= 1'b0;

  end else begin
    SW_mem1 <= SW_in;
    SW_mem2 <= { SW_mem2[2:0], SW_mem1 };

    if( state == 0 ) begin
      if( SW_mem2 == 4'b1111 ) begin OUT <= ~OUT; state <= 1; end

    end else if( state == 1 ) begin
      if( SW_mem2 == 4'b0000 ) begin         state <= 0; end
    end
  end
end

545774ワット発電中さん:2011/05/27(金) 13:01:29.09 ID:x481HELu
>>542
まず使ってる言語から教えてくれ。
どうも考え方がHDLっぽくない。
546774ワット発電中さん:2011/05/27(金) 13:40:41.10 ID:9AOJQojp
>スイッチを一回押せば停止、もう一回押せば再開って感じのやつ。

eorでいいだろ。
547774ワット発電中さん:2011/05/27(金) 14:30:00.26 ID:Ly/428/h
オルタネートスイッチでいいだろ・・・


ってのはおいといても、チャタリングを考慮しろよ
548774ワット発電中さん:2011/05/27(金) 15:57:28.92 ID:q2HxBSGU
チャタリングって、チャタリングフィルタのために、
遅いクロックを生成しませんか? 何かFFがもったいない感じが市内でもない。
549774ワット発電中さん:2011/05/28(土) 00:26:06.68 ID:cbGRWRRm
ではどうすれば市外があると感じるんだ?
郊外しないからこっそり教えれ
550774ワット発電中さん:2011/05/28(土) 00:29:20.94 ID:cZPTsnTf
もったいなければ外部でチャタリング除去回路を組めばいいよ。
CR のLPF とヒステリシス・バッファ(7414なんか) で簡単にできるし。
551774ワット発電中さん:2011/05/28(土) 18:16:14.75 ID:FgofUqdM
タイマー回すほうがもっと簡単
552774ワット発電中さん:2011/05/28(土) 20:24:28.84 ID:UwwlLoJZ
>>551
タイマーってマイコンの?

FPGAやPLDならカウンタだよな。
わざわざチャタ取りのためにマイコン外付けとか有り得ない。
誰にとって簡単なんだか…
553774ワット発電中さん:2011/05/28(土) 22:11:55.82 ID:ZGxi1tVl
FPGA ならマイコン内蔵できるだろ
554774ワット発電中さん:2011/05/28(土) 23:10:14.83 ID:UwwlLoJZ
ブザー回路をカウンタで作ってチャタ取り用にマイコン内蔵かw
余計にあり得んわ!
555774ワット発電中さん:2011/05/28(土) 23:30:04.30 ID:loQJG52v
HDLって何でC言語とかより人気ないのかなぁ?
556774ワット発電中さん:2011/05/28(土) 23:31:40.62 ID:Llnxyx14
どういう意味?
557774ワット発電中さん:2011/05/29(日) 00:23:14.88 ID:P/Q8zZEt
どういう意味?
558774ワット発電中さん:2011/05/29(日) 01:11:06.12 ID:nP6E/7vn
どういう意味?
559774ワット発電中さん:2011/05/29(日) 14:08:14.34 ID:nP6E/7vn
基本的にHDL人口が少ないからじゃない?

マイコン職人は、身近に売るほどいるけど、FPGA職人は、5%以下。
同じソフト屋なのに、こんなに違いがあるんだ。
560774ワット発電中さん:2011/05/29(日) 14:32:04.42 ID:kCIRIya5
少ない分、市場での価値は相対的に高くなるかな?
それなりにできりゃぁ、食いっぱぐれることない?
561774ワット発電中さん:2011/05/29(日) 19:27:19.65 ID:0Ph0BDdR
>>560
HDLで何が出来るか次第だな。

受託で低速なグルーロジックぐらいしかしてない、
とかなら、付加価値がないと厳しいだろう。

それに人口が少ないのはそもそも需要がソフトより少ないからでもある。
562774ワット発電中さん:2011/05/29(日) 19:28:37.63 ID:nP6E/7vn
そうだと思う。
でも悲しいかな、半田付けもしたことがないHDL屋が蔓延している。
シュミレータ通してメールで納品らしい。PCだけで商売になるほど、世の中甘くない。
563774ワット発電中さん:2011/05/29(日) 19:31:26.42 ID:fR9GCc1x
蔓延ってことは商売がなりたってるって意味?
564774ワット発電中さん:2011/05/30(月) 00:30:58.36 ID:QCmuzmYL
それ理想じゃね?w
565774ワット発電中さん:2011/05/30(月) 03:32:28.44 ID:pAgMibam
問題も多々発生している。次からは依頼しない。
566774ワット発電中さん:2011/05/30(月) 14:41:32.59 ID:NTMa42Y+
>>562
実際のところ、よっぽどの零細企業でなければ、
半田付けは評価屋や実装屋の仕事になっている。

まあ、評価基板の手直しで半田付けをすることもあるけどね。
567774ワット発電中さん:2011/05/31(火) 01:34:14.39 ID:/pBpymJV
半田付けとかヤダー。
デジタル回路だけやってたーい。
568774ワット発電中さん:2011/05/31(火) 10:07:13.98 ID:cIOLhqFe
そういえば、スイッチ付近に馬鹿でかいローパスフィルタつけりゃ
チャタリング除去用のFFあんまいらんのかね?
で、受けるIOはヒス付で

でもチャタ除去用のHDL作ったほうが、おまけで長押し作れていいんでは
569774ワット発電中さん:2011/05/31(火) 10:52:28.47 ID:2zPnHFVh
それにしてもFFがもったいないよ〜、という話ね。
50MHz clockで、2ms×3回連続とかやるとき、
50MHz=0.02us, 2ms=2000us, 2000/0.02=1000×100=10万
log10万/log2=13.28771238bit→14個のFF
570774ワット発電中さん:2011/05/31(火) 19:05:29.70 ID:4SPdqrAU
ザイリンクスのDLページ開けない
571774ワット発電中さん:2011/05/31(火) 22:11:57.95 ID:wzfJWKg/
HDL屋さんになるにはどうすればいいですか?
572774ワット発電中さん:2011/05/31(火) 23:05:01.53 ID:/pBpymJV
まず服を脱ぎます
573774ワット発電中さん:2011/05/31(火) 23:28:54.41 ID:LSvNLCRI
靴下は何時脱ぐの?
574774ワット発電中さん:2011/05/31(火) 23:47:27.36 ID:wzfJWKg/
裸に靴下ですねわかります
575774ワット発電中さん:2011/06/01(水) 00:05:45.67 ID:4LqW/4kD
HDLだけ屋さんはもうお腹いっぱい。
FPGAの中身だけでなくて回路設計とか実機デバッグ、
試験用のソフト作成まで面倒見れる人がほしい。
576774ワット発電中さん:2011/06/01(水) 00:34:16.89 ID:JNgl7ZOJ
>>575
呼んだ?
577774ワット発電中さん:2011/06/01(水) 00:43:03.18 ID:HMyVUqkZ
何でもかんでも全部丸投げ出来る下請けが欲しいってことですか?
578774ワット発電中さん:2011/06/01(水) 00:57:12.82 ID:4LqW/4kD
FPGA設計、回路設計、実機デバッグ、評価くらいは自分で出来てる。
ソフトも簡単なものなら自分で出来るし、他人のコードを追跡するくらいなら出来る。
ただ一人でやるのは限界あるので、自分がもう一人いたらなぁ…と。
579774ワット発電中さん:2011/06/01(水) 01:17:50.96 ID:hndve+Y8
そのもう一人の自分もきっとこう思う
自分がもう一人いたらなぁ…と。
580774ワット発電中さん:2011/06/01(水) 02:31:00.29 ID:YKSRiErk
>>578
ぜひ僕を雇ってください。お茶くみでも電話番でもなんでもやります。
581774ワット発電中さん:2011/06/01(水) 02:46:51.36 ID:HMyVUqkZ
>>580
彼が所望しているのは彼と同じ事の出来る人です
お茶くみではありません
582774ワット発電中さん:2011/06/01(水) 09:48:04.07 ID:udy76ySI
どこの企業でも大切なのは教育なのよね。後で気づくけど。
ほっとくとボディーブローのように効いてくる。

特に人口の少ないこの世界はOJTOJT言ってるけどそれでいいんかねぇ。
最後までのノウハウな仕事なんだろうか。
583774ワット発電中さん:2011/06/01(水) 10:08:46.87 ID:YKSRiErk
FPGAを使った開発は、ツールの使い方を覚えるのが1つの壁になっている。
バージョンが変わると、操作性がまるで変わってしまう。
一方、ハードウェアは、いつの世も普遍的なものなら覚え解甲斐がある。

言いたいことが、わからなくなってきた。(爆)
584774ワット発電中さん:2011/06/01(水) 14:58:28.57 ID:Xmy2xxv1
FPGAやマイコンソフトができなくてもいいや。
・回路図渡せば、ユニバーサル基板の配線ができて、
・間違いに気付いたら「これおかしくないですか?」と指摘してくれて、
・電流経路やインピーダンスを考えた部品レイアウトや配線ができる
それだけでいい。
585774ワット発電中さん:2011/06/01(水) 15:03:04.56 ID:tPvy+Z+H
CAD 使えよ。
DRC もしてくれるぞ。
586774ワット発電中さん:2011/06/01(水) 19:20:47.03 ID:i6ZTuUU9
インピーダンスとか考えるのヤダーw
な温室(FPGA)育ちですw
587名無しさん:2011/06/01(水) 19:53:04.55 ID:+VwmQLga
考えるけどコントロール出来て無くてもいいですか
588774ワット発電中さん:2011/06/02(木) 17:33:12.87 ID:zbhkht9W
インピーダンスコントロールは結構大変だわな。
何よりまず基板代が跳ね上がる。
589774ワット発電中さん:2011/06/03(金) 13:41:26.01 ID:GEJsxV9e
いまさらだけど
FPGAってPLLあったのねー!

インピーダンスの考えをある程度減らすのにファンナウトというものが・・・
関係ないか。
>>542の子は宿題ちゃんとできたのだろか。
590774ワット発電中さん:2011/06/03(金) 14:08:44.43 ID:xmKg95a3
インピーダンス整合を気にするってことは
クロックラインとか高速シリアルI/Oとかなんだろ?
591774ワット発電中さん:2011/06/03(金) 21:57:12.59 ID:cZwgRqgC
DDR2メモリって等長配線が常識だけど実は適当でも動くんだな
倍も長さ違う配線あるのに140MHzで動いてやんのw
つかこんなレベルのがプロとして仕事してるのが信じられないorz
592774ワット発電中さん:2011/06/03(金) 22:47:01.82 ID:+vx7/isE
等長配線にしたいのならそう指示しない限りやってくれないよ。
パターン幅とかスルー・ホールの数とかインピーダンスもしかり。
・・つうか検図しなかったの?
593774ワット発電中さん:2011/06/03(金) 23:36:02.72 ID:XiO6gVXh
DDR2等長配線しないって・・・
自分みたいな素人でも心配するところだよw
確認取ろうとすらしなかったのかなぁ??
594774ワット発電中さん:2011/06/04(土) 00:16:56.86 ID:Sq/0LK9s
メモリのトレーニングがうまくいってるってことじゃないか。
半分だけ喜んでいいと思うよw
595774ワット発電中さん:2011/06/04(土) 02:04:59.59 ID:TCUympm+
まぁ距離にもよるんじゃない?

例えば3cmと6cmの違いだったら100psの遅延差になるよね。
制御線アドレス線なんかだとシングルエッジ動作だから十分余裕ある。
データ線だったらキャリブレーションするだろうから「誤差の範囲内」で動いてくれるかな。

考えた結果であればマシだけど、まったく考慮してなかったらちょっと怖いかも。
596774ワット発電中さん:2011/06/04(土) 04:27:25.73 ID:p3W1XEI+
基板アートワーク屋さんって、等長配線とかインピーダンスコントロールとかになると、
急に態度が変わりませんか?
「いつもウチでやっている幅と間隔でやるから。へんな指示するんじゃないぞ」って感じ。
でも結局は、実装屋さんとかにイプシロンとかの値を聞いて、CADの計算のまま。
597774ワット発電中さん:2011/06/04(土) 09:43:26.22 ID:VRe1UT7Y
>>596
うちんとこがよく依頼するところは別に態度は変わらないな。
598774ワット発電中さん:2011/06/04(土) 11:52:27.15 ID:BMsALaw/
うちは直系の子会社にお願いしてるけど、
当たり前のように等長配線やインピーダンスコントロールしてた。
新入社員のとき、「そんなことまで気にせにゃならんのかー!」って驚いたw

担当の人に
「お願いしてる基板とPCのマザーボードだったらどっちが難しいですか?」
って聞いたら、
「PCのマザボは積層数や配線数が少ないし、基本的にはガイドに沿って作るだけだから余裕」
って言ってた。
599774ワット発電中さん:2011/06/05(日) 10:21:52.22 ID:lUG6zcTD
Xilinx

エラー
現在、ウェブ サイトに問題が発生しているためリクエストを実行することができません。
しばらくして再度お試しくださ

ってなに
600774ワット発電中さん:2011/06/06(月) 13:24:16.78 ID:586SEZy4
そろそろ梅雨だねぇ
601774ワット発電中さん:2011/06/07(火) 17:00:55.59 ID:EYHWhPBa
DDR2等長配線無視と言えば、現物見てないけど、なひたふのRX62評価
ボードがそうだったような。

しかも途中でVIAを打ってて、あんな配線でも動くのかと、別の意味で
「感動した」。(w
602774ワット発電中さん:2011/06/07(火) 18:41:04.31 ID:bNFVauOv
未踏JTAGの人だよね!?
さすがに大丈夫という確信があってやったのでは・・・w
603774ワット発電中さん:2011/06/08(水) 17:57:55.03 ID:cUmn9VFm
>>601
PCなんってソケット2回(CPU,メモリソケット)通過して高速動作しているんだから
viaなんてたいしたことないじゃないか。
等長配線も距離が短ければあんまり気にしなくても良いような気がする。
604774ワット発電中さん:2011/06/08(水) 18:13:11.87 ID:mXNWMv3y
PCのメモリモジュールはVIAだらけ
605774ワット発電中さん:2011/06/08(水) 19:44:39.67 ID:L44NpdBK
つ インピーダンスコントロール
606774ワット発電中さん:2011/06/09(木) 14:57:41.44 ID:69CKu/Ci
Xilinx主催の6/28のセミナー、行く人いますか?
僕はトラックCに出席する予定です。

僕の目印は、Tシャツ、スラックス、メガネ、リュック、iPhone持ってます。
607774ワット発電中さん:2011/06/09(木) 15:13:33.32 ID:8VsxQYKo
しかもデブでハゲだろ・・・みんな一緒だよ!!
608 【東電 71.7 %】 :2011/06/10(金) 00:22:44.33 ID:52w6w4zH
胸に赤いバラつけなきゃわからん
609774ワット発電中さん:2011/06/10(金) 00:35:46.33 ID:a95+aH9+
ここはTシャツに蝶ネクタイで。
610774ワット発電中さん:2011/06/10(金) 00:38:33.75 ID:TXprswlh
このテのセミナーは、いかにもってヤツと、
何で?ってくらいリア充っぽいイケメンなヤツとに極端に分かれる。
611774ワット発電中さん:2011/06/10(金) 10:44:33.65 ID:Loy4xYa/
オレのことかーーー!
612774ワット発電中さん:2011/06/12(日) 02:11:39.06 ID:lUbWA3Dh
EDIFをVerilogに変換する方法を教えて下さい。
613774ワット発電中さん:2011/06/12(日) 16:10:21.10 ID:MigS4Ln6
>>612
EDIFをVerilog表記に変換できないことはないけど
あくまでもネットリスト。RTL形式にはならないよ。
614612:2011/06/12(日) 16:28:57.71 ID:lUbWA3Dh
>>613
レスありがとうございます。
はい、ネットリスト形式で構いません。
EDIF(ネットリスト)→Verilog(ネットリスト)変換をやりたいです。

まずフリーなツールを探しています。
次に、有償ツールでもよいのでどのような物があるのか知りたいです。

よろしくお願いします。
615774ワット発電中さん:2011/06/12(日) 18:55:44.56 ID:ECZUuHfB
普通は、design compiler だろ。
ってか、他に思い付かないんだが。
ケーデンスの何かあるかも。
616774ワット発電中さん:2011/06/17(金) 14:36:58.57 ID:zdBAwE0+
 何のためにそんなことがしたいの? 
Freeのソフト作って、UPしてもいいけど。 
617612:2011/06/19(日) 02:46:15.99 ID:fgBVhCsQ
>>616
お申し出ありがとうございます。

勉強のためにVerilog論理合成をフリーでやりたいのですが
ズバリなフリーツールが見つけきれなかったため
icarus verilog -tfpga でEDIFで出力して
それをVerilogに変換したいと思っています。
最適化はできなくて良いです。
618774ワット発電中さん:2011/06/21(火) 12:51:35.44 ID:v0/dAjjj
誰か system verilog のスゴさを語ってくれ!
619774ワット発電中さん:2011/06/23(木) 13:41:51.06 ID:HYmIdCYM
>>606ですが、
人気無いのでしょうか、まだ募集のメールが来ますよ。

僕は、Tシャツ、Gパン、トレッキングシューズ、リュック、メガネ、NYの帽子してます。
デブですが、禿ではありません。iPhoneとLets Note持って行きます。
胸に赤いバラは、目立つのでやりません。
620774ワット発電中さん:2011/06/26(日) 11:01:41.34 ID:CvUpQNzj
>僕は、Tシャツ、Gパン、トレッキングシューズ、リュック、メガネ、NYの帽子してます。

Coooooool!!
621774ワット発電中さん:2011/06/26(日) 11:07:50.10 ID:CvUpQNzj
>>548-549
>>549さん神がかってる!
622774ワット発電中さん:2011/06/26(日) 11:12:35.93 ID:0QIMvEAd
>>549は頭良さそうだな。
623549:2011/06/26(日) 20:12:42.75 ID:s1Tye4Xw
>>622頭良さそうとは言われるが、頭良いって言われたコト無い
624774ワット発電中さん:2011/07/08(金) 22:13:39.37 ID:DieDq/ja
やるおと学ぶverilog入門なんてのがあるのね。
>>1あたりのテンプレに入れたらどうだろうか?
625774ワット発電中さん:2011/07/08(金) 22:22:27.34 ID:wMAmxEah
やるおシリーズは楽しくてイイなw
VHDL編も作ってもらいたいものだ。

ソフトみたいなシーケンシャルな動きのつもりで書いちゃって戸惑うやるおキボンw
626774ワット発電中さん:2011/07/08(金) 22:26:09.84 ID:DieDq/ja
うわ!誰かいたんだ!!
そんなのはおいといて

1章だけ見たけどずいぶんコアな・・・
ただ、これくらい知らないと思う回路かけないよね。

さて、おうちに帰ろう・・・今日も疲れた
627774ワット発電中さん:2011/07/09(土) 03:12:57.44 ID:cjJS+kC0
>>626
みたけど、わかっている人が、初心者頃だった頃を忘れていて、
魔女宅のEDでキキがジジと会話できてない事態に陥っている気がする。
628 忍法帖【Lv=6,xxxP】 :2011/07/09(土) 10:25:47.72 ID:IlEDyuyW
てすと
629 忍法帖【Lv=12,xxxPT】 :2011/07/09(土) 10:59:44.50 ID:sw83/gLW
テストする前に、試験仕様書をお願いします。
630774ワット発電中さん:2011/07/09(土) 12:24:43.00 ID:5Rmuggj+
じゃあ、説明するから清書しておいて。
まずはテスターのレンジを20Vにあわせて黒のプローブを左手に、赤のプローブを右手に…(略
631 忍法帖【Lv=12,xxxPT】 :2011/07/09(土) 13:20:25.98 ID:xLrCWzji
赤のプローブが尿道で、黒のプローブが肛門ですか?

わからないから、ちゃんと書いておいてよ!!!
632774ワット発電中さん:2011/07/09(土) 14:11:37.27 ID:IlEDyuyW
肛門には角電池ですねわかります
633774ワット発電中さん:2011/07/09(土) 14:20:16.04 ID:2WRIYTfJ
おまいらがやる夫に見えてきたw
634774ワット発電中さん:2011/07/09(土) 15:28:29.39 ID:qiiLWArD
それやったらパンダが死んだんだよな。
635774ワット発電中さん:2011/07/10(日) 01:33:16.08 ID:giu1SZMt
>>625
はじめて扱ったHDLがVerilogで、
C言語風の文法なので、社内研修で初めて回路を設計したときには
シーケンシャルな動作を期待して、記述してしまいました。
636774ワット発電中さん:2011/07/10(日) 18:17:23.02 ID:6p/LqeGd
おれも初めてHDL読んだとき、プログラムのようなエントリポイントがどこなのか探したわ。
どこから始まるのよって。
テストベンチ書く場合はプログラムだけど、基本的にHDLは書くんじゃなく作るっていう感覚がないと駄目だと思った。
ソフトウェアプログラムだとやっぱり書くって感覚なんよね。
637774ワット発電中さん:2011/07/10(日) 18:19:03.25 ID:nRQsUK7E
最初はネットリスト記述から入ったらどうかなとか思うんだけど、どうかな?
638774ワット発電中さん:2011/07/10(日) 18:26:25.00 ID:j0aab2aA
やるおと学ぶVerilogわかりやすいけど1章しか出来てないのね
639774ワット発電中さん:2011/07/10(日) 18:41:18.76 ID:YgOokKGK
エントリポイントはリセット回路だよな
640774ワット発電中さん:2011/07/10(日) 19:21:02.10 ID:yUedgQyc
http://www.nicovideo.jp/mylist/21945950#+sort=0
ここのひとに次はHDLやってほしい
641774ワット発電中さん:2011/07/10(日) 19:29:00.03 ID:dZ9YknJw
どんな回路が合成されるか意識しながら記述するようになってから、
思い通りの回路が作れるようになってめちゃくちゃおもしろくなった。

ソフトは命令を、HDLは回路を"描いている"という意識を持てば混同なく、それぞれに最適な組み方ができるよ。
642 忍法帖【Lv=34,xxxPT】 :2011/07/10(日) 20:27:25.71 ID:bu3nYbAm
>>640
1年半前にブログに書いたっきりで、本人も初心者っぽかったから
講座とかはどうだろうな。
ttp://somtec.blog5.fc2.com/blog-category-4.html
643774ワット発電中さん:2011/07/10(日) 21:08:30.10 ID:6p/LqeGd
>>641
面白いっていうけど、LSI設計したり、GA設計したりしてる場合ば別として、
ほぼグルーロジック程度のものしか作ってないだろ?
ソフトの方は手っ取り早く作れるけど、
HDLは手間もかかるし、わざわざ回路を起こさなきゃいけないものってそんなにないんだよな。
せいぜいメモリコントローラとウィザード使ってPCIコントローラぐらいか?
ソフトではできない正確なタイミングが欲しい用途にほぼ限定されるんじゃないのか?
MPEG2デコーダや変復調回路趣味で作る奴はそういないだろうし。mp3デコーダだとプロセッサで出来てしまう。
644774ワット発電中さん:2011/07/10(日) 21:12:11.41 ID:yUedgQyc
>>642
分かってないですね
645774ワット発電中さん:2011/07/10(日) 23:51:03.34 ID:esg0/FOs
>>643
>>641さんはFPGAじゃなくASICの論理設計しているんですよ
646774ワット発電中さん:2011/07/11(月) 02:53:30.25 ID:eB05C4am
Nios II って、EP3C5でも載りますか?
647774ワット発電中さん:2011/07/11(月) 14:49:44.27 ID:PI8tk5zx
>>646
ちらっとぐぐった感じではなんとも分からんね。
Alteraさんに聞いてみるとよかろう。

とはいえHDLじゃないんでスレ違い?
648774ワット発電中さん:2011/07/11(月) 17:05:47.61 ID:3w0wj4Pz
別スレだが
Verilog学習のお供に
http://kamome.2ch.net/test/read.cgi/denki/1310362001/l50
CQ、自社オリジナルの開発諦めたのか
649774ワット発電中さん:2011/07/11(月) 20:24:19.95 ID:BmGeWwza
>>646
自分でツールダウンロードして試してみりゃいいじゃん。
どんな機能が必要か、あんたにしか分からないんだから。
650 忍法帖【Lv=35,xxxPT】 :2011/07/11(月) 20:55:35.68 ID:gk7gohI9
>>646
NIOS-e+UART+PIO8ビット+
内部ROM起動+デバッグ機能なしであれば
1600LEだった。

NIOS-eはキャッシュとか全然ないし
デバッグ機能載せないと動作確認が厳しいので
性能的に満足できるかどうか…
651774ワット発電中さん:2011/07/12(火) 00:53:21.96 ID:rhUW4i+v
>>648
そこだれもいないの?
652774ワット発電中さん:2011/07/12(火) 10:32:33.89 ID:hw31FoKQ
←←←誰も
いない→→→
653774ワット発電中さん:2011/07/15(金) 04:36:38.44 ID:v0MCmHKe
STARC の RTL 設計スタイルガイドってクソ高いけど、どんな感じ?
元は取れる内容なのかな。
654774ワット発電中さん:2011/07/15(金) 09:08:19.86 ID:yb8jOJU+
>>653
いや、あれ安いでしょ。
SpyGlass等を使う人にはおすすめ。
655774ワット発電中さん:2011/07/15(金) 10:56:21.05 ID:Vtmj47h8
>>653
クソとか もとが取れる とか言う人は、買わなくてよし。
本や知識のために金を出さない人には、無用の長物。
656774ワット発電中さん:2011/07/15(金) 16:43:46.36 ID:5GKK0WAR
こういうあほが喜んで買うんだなSTARCなんて。
STARCが仕様作ってるもしくは、世界中のHDL書いてる奴がSTARC本を読んでるなら信用してやるよ。wwww
糞情報にアホ値つけてうりくさって、それをあがめるアホが居ると思うと反吐がでるね。
天下り先の会社が元居た職場に売りつけるためだけに作った
誰も読まない1冊数万円のつん読本思い出した。
657774ワット発電中さん:2011/07/15(金) 20:17:57.31 ID:6XLH2snW
自腹で買ったけど、FPGAにはまったく役立たんかったw
ASIC向けかいね?
658774ワット発電中さん:2011/07/15(金) 21:27:50.61 ID:w+TYZ4qW
お作法の本だからFPGAではあまり使わない。
「LINTチェック」を知らない人だと猫に小判。
659774ワット発電中さん:2011/07/15(金) 23:53:17.19 ID:CmdpmVkQ
>>656
残念ながら、世界中のLintチェックツールには STARC ルールが導入されています。
660774ワット発電中さん:2011/07/16(土) 00:17:06.88 ID:k3cQFtb1
>>653
元が取れる取れないじゃなくて、最低限守るべきルールでしょ。

社内に1冊あればじゅうぶん。
IEEE1364調べるのと同じくらいの頻度で使う程度(年に数回レベル)。

っていうか、常識的な設計・コーディングしていればSTARCルールにひっかかるなんてこと無くね?
661774ワット発電中さん:2011/07/16(土) 02:14:15.03 ID:eYLnCOZC
>>656
購入を考えていますが、思い留まっています。
どういうところが、そうなのでしょうか、詳しく教えていただけないでしょうか?
662774ワット発電中さん:2011/07/16(土) 06:48:15.28 ID:kLElUiY6
>>660

最低限守るルールは文法であり言語仕様だろ。
それ以外にエラーにならないけれども やっちゃいけない、
もしくは副作用あるからどうしようもないときに使うにとどめるとか、
いわゆるべからず集、設計思想集というのは
仕様書読んだ後に一度は目を通しておかないとあとあと困るんだが、
Starc本それか?
Effective C++みたいな
663774ワット発電中さん:2011/07/16(土) 07:06:12.23 ID:k3cQFtb1
>>662
確かに、そういう意味では最低限ではないね。

でも、文法・言語仕様に合致してても、
合成可能かどうか・現実的な回路になるかどうかは別問題でしょ。
”現実的な設計をするにあたって”最低限守るルールだと思う。
設計思想よりも、もう少し低レベルな話。

社内ルールとかもっと厳しくない?
(大手の内情はしらないけど)
664774ワット発電中さん:2011/07/16(土) 08:46:28.76 ID:kLElUiY6
いや、合成可能かどうかってのは
LINT通すまでもなく合成してみりゃわかるだろ。
この段階ではじかれるものは、
間違いなく気づくからいいんだよ。
気づかない、エラーにならない、Warningも出ないが、
やってしまうと、あとあとメンテで泣かされることになるとか、
本来の思想とは異なる考え方で設計してるといったことの方が怖い
665774ワット発電中さん:2011/07/16(土) 10:46:53.36 ID:zEELuf1+
簡単に言えば、
  合成ツールに依存しない書き方
  等価検証で問題が出ない書き方
を紹介している。
だから「動けばいい」仕事しかしない人には不要。
666774ワット発電中さん:2011/07/16(土) 13:37:18.17 ID:kl28565p
ずいぶんと古い合成ツールの問題点を引きずってたりするし、
細かいルールまで全部守ってたら可読性がめちゃくちゃ悪くなる。
仕様書から実装するだけの↑の人にはいいだろうし、
発注元が指定してきたら守らざるを得ないからね。
667774ワット発電中さん:2011/07/16(土) 21:17:58.31 ID:uh4uV5sO
>>657
なんで?5000円ぐらいだった(よね?確か)頃のやつ読んだことあるけど、
メタステーブルのこととか、ミーリじゃのムーアじゃの結構参考になること
あったと思うけど。
668774ワット発電中さん:2011/07/16(土) 23:10:49.64 ID:Vx4EkwxN
>>667
去年買った。6300円だった。
買って良かったと思ってる。
なんでみんな、そんなに悪口言うのか分からない。
669774ワット発電中さん:2011/07/16(土) 23:47:15.04 ID:k3cQFtb1
>>664
合成してみりゃって、それじゃ手遅れ。
コード書く前に、遅くても書き終わった直後にチェックできれば、手戻りは極小。

それに、合成ツールのログ見ただけで判断できる?
結構チェックはいい加減だよ。
WarningとErrorとinformationの区別もツールによって違うし。
670774ワット発電中さん:2011/07/16(土) 23:55:03.17 ID:NL5jQy5b
>>667
その辺の話なら大学の教科書でもいいだろw
671774ワット発電中さん:2011/07/17(日) 03:13:04.31 ID:R0ifoksM
>>656
購入を考えていますが、思い留まっています。
どういうところが、そうなのでしょうか、詳しく教えていただけないでしょうか?
672774ワット発電中さん:2011/07/17(日) 09:20:16.05 ID:f1sTn2q0
>>671
趣味?仕事?どちらですか?
673774ワット発電中さん:2011/07/17(日) 09:23:38.42 ID:8G3ba5oR
>>669
>遅くても書き終わった直後にチェックできれば

ホントあたま悪いのかお前
書き終わった後、チェックするなら合成してチェックするのと同じだろうが。
そんな頭でよくエンジニアやれてるな。どーせ一事が万事、正しい論理判断できてないんだろうけど
674774ワット発電中さん:2011/07/17(日) 09:25:13.17 ID:8G3ba5oR
>>669

>合成ツールのログ見ただけで判断できる?

やっぱりな。お前故に判断できないんだろwww
675774ワット発電中さん:2011/07/17(日) 13:52:12.41 ID:c5uAkMIC
教えてください。初心者です。

FPGAのプログラムやる人たちは、
このスレのように「威張った人」が多いのでしょうか?
676774ワット発電中さん:2011/07/17(日) 13:53:28.19 ID:VUmGeJP6
そんなこと知ってどうするつもり?
677774ワット発電中さん:2011/07/17(日) 14:32:27.36 ID:33TZGtgo
FPGAのプログラムってなに?




っていう釣り針かな?
678774ワット発電中さん:2011/07/17(日) 14:52:08.28 ID:gSWZ1IED
きちがいのあいてすんな
679774ワット発電中さん:2011/07/17(日) 14:55:40.03 ID:jUZRSRGL
社内では希少なため、どうしても威張りがちになるw
680774ワット発電中さん:2011/07/17(日) 14:58:51.61 ID:c5uAkMIC
>>676
これからFPGAを勉強/使用するのに、注意しないといけないと思います。

>>677
>FPGAのプログラムってなに?
「HDLなんてプログラム、ソフトだよ、あんなもん」と先輩が言っていました。
ハンダ付けもできない椰子がPCだけで仕事 (略)
681774ワット発電中さん:2011/07/17(日) 15:17:58.46 ID:bbTZmCcn
ドツボ一直線だな
682774ワット発電中さん:2011/07/17(日) 18:10:08.63 ID:E6ndQJtQ
>>680
危険な兆候だ。
基本設計はハードウェアを意識して、
記述は保守性と重視して、バージョン管理も忘れずに。
デスマーチの罠から身を守るべし。
683774ワット発電中さん:2011/07/17(日) 22:03:26.70 ID:sFqp3jkK
職場からダメな匂いがプンプンしてる。
684774ワット発電中さん:2011/07/18(月) 01:22:01.49 ID:LphDJV0K
>>674
ありがとう。
判断できる人がいるということがわかったので、それはそれでいいと思います。
残念ながら私(と今までであったエンジニア)では判断できませんでした。
合成ツールが通ればOKなら、LINTの必要性って何なのでしょうかね?
685774ワット発電中さん:2011/07/18(月) 03:15:07.78 ID:91Ta/D49
>>680
FPGAはやめといたほうがいいよ。FPGAプログラマーには変わった人が多すぎる。

会社に突然無断で来なくなる人、だまって辞めてしまう人、平気で嘘をつく人、
毎日遅刻する人、ハンカチ持ってない人、トイレから出ても手を洗わない人、
酸っぱい臭いのする人、毎日風呂に入らない人、でもビールだけは毎晩飲む人、車の中が汚い人、
PCのキーボードのキーの下がゴミだらけの人、鼻くそほじった手でマウス触る人、
頑固で人の話を聞こうとしない人、自分の思いこみを曲げない人、独り言が多い人、
PC画面を見て寝てる人、

み〜んなも俺のことだ。
686774ワット発電中さん:2011/07/18(月) 03:33:14.03 ID:JBFCfpKm
最後フイタw
687774ワット発電中さん:2011/07/18(月) 07:50:36.95 ID:wI1RaE2G
>>684
>合成ツールが通ればOKなら、LINTの必要性って何なのでしょうかね?

LINT って、ベンダーなり発注元なりの受け入れ条件じゃないかな?
一言で LINT って言ったって、ガチガチに STARC なのか、
ベンダーの勝手な条件だったり、LINT かけて見とけよってだけだったり・・・

“合成ツールが通れば”ってのも、きちんと意図したとおりに合成されるのが前提だけどね。

LINT だって、Formality だって、カバレッジだって、確認のためのツールに
過ぎないんだから、うまく使いこなすことが大切だと思うんだけど、
やたらそれにこだわりすぎなんだよ、まったく!

だいたい、コードのチェックだけやっても、仕様の抜けとかアルゴリズムの
ミスとか、そっちはどうなんだよ。
688774ワット発電中さん:2011/07/18(月) 08:58:48.02 ID:GQK4Ec3v
>>684
LINTの必要性ってのは>>665だよ。
合成できたからといって「ちゃんと」動作するとは限らない。
689774ワット発電中さん:2011/07/18(月) 14:49:38.40 ID:QfbPMBf+
回路そのものが思い通りの方向で合成できてるか確かめるためにブロック図出力機能があるんだろ
そして、お前のいう"ちゃんと"動作することを確認するためにシミュレーションをやるんだろ。
690774ワット発電中さん:2011/07/18(月) 14:59:54.23 ID:QfbPMBf+
プログラム言語もHDLもLINTの存在意義なんて何も変わらない。
HDLの方は合成云々の問題があるとか言う奴は、
合成に関するコードチェックは合成ツールがやってるって当たり前のことを理解してるのか?、
691774ワット発電中さん:2011/07/18(月) 15:02:21.83 ID:kASyBYE0
実際問題として合成ツールが意図と違うような合成をしうるから問題なわけで
692774ワット発電中さん:2011/07/18(月) 15:29:16.08 ID:GQK4Ec3v
>>689
規模が大きくなったらブロック図出力機能なんて使ってられない。
そもそも、客先にIPとテストベクタ供給してシミュレーションさせるのか?
で、問題でたら「合成ツールがおかしい」って言うのか?

というか、IPベンダやASIC屋だとLINTチェックは絶対必要なんだがねぇ。
693774ワット発電中さん:2011/07/18(月) 15:33:26.36 ID:GQK4Ec3v
>>690
合成ツールがやってるコードチェックは合成ツールに依存するって当たり前のことを理解してるのか?
694774ワット発電中さん:2011/07/18(月) 19:26:05.60 ID:4B5x7BxZ
仲良く汁
695774ワット発電中さん:2011/07/18(月) 21:26:19.38 ID:+vRtXN61
>>689
ブロック図出力て・・・それで確認できる規模でよかったね。

RTLシミュレーションOKだけど、ネットでシミュレーションするとコケた時に、
ツールベンダーに文句言うために使う機能だとおもってたよ。
年に1回くらいあるよね、こういうこと。
最新バージョンでエンバグされたり、合成ツールって結構信頼できないよね。
696774ワット発電中さん:2011/07/19(火) 00:35:12.41 ID:t6l5MNUM
ブロック図クソワロタwww
数百ゲートぐらいならそれでもいいかもしれないけどさぁ、、、
ここの住人って10万ゲート以上、下手したら100万ゲート超の回路書いてる人ばっかりだと思ってたわ。
697774ワット発電中さん:2011/07/19(火) 00:51:53.80 ID:cS3XtZRg
ある程度大きな粒度でブロック図は確認するよ。
698774ワット発電中さん:2011/07/19(火) 01:45:01.54 ID:t6l5MNUM
ある程度大きな粒度じゃ合成結果が記述通りになってるか確認できないだろ
699774ワット発電中さん:2011/07/19(火) 10:46:46.11 ID:6SU6gRs3
ミクロからマクロまで、
いろんな視点で確認するということだよ、アマチュアさん。
700774ワット発電中さん:2011/07/19(火) 10:54:09.30 ID:Ct3NGs9+
「学生」とか「アマチュア」とかレッテル貼って勝利宣言する奴は、
たいてい屑プロフェッショナルであることが多い。
701774ワット発電中さん:2011/07/19(火) 14:15:07.60 ID:XBLIyM13
>>696 >>698
そのやり方で、せいぜい頑張ってください。
702774ワット発電中さん:2011/07/19(火) 14:52:35.51 ID:WbZY3QiJ
おう!
703774ワット発電中さん:2011/07/19(火) 19:01:29.44 ID:wX4v4yP2
>>698
スケマ目視で指さし確認は重要っすね。

何のためにHDL書いてるんだろうかw
704774ワット発電中さん:2011/07/20(水) 00:10:08.64 ID:SJ1f+37W
>>703
おまえこそわかってるのか
HDLで書くのは1にも2にも生産効率あげるためにやってる。
全体像の確認は回路図で確認する方がよほど手っ取り早い
こういうとあほは、全体像を最上位レイヤとしか解釈できねぇんだろな
適材適所使い分けられないアホは死ね
705774ワット発電中さん:2011/07/20(水) 00:12:06.99 ID:SJ1f+37W
>>696
>ここの住人って10万ゲート以上、下手したら100万ゲート超の回路書いてる人ばっかりだと思ってたわ。

グルーロジックしか書いたことのないお前には手に負えないよなぁwww
706774ワット発電中さん:2011/07/20(水) 00:17:02.96 ID:st6s5r5A
え、ほんとにスケマとか見てるの?
そんなことしないためにSTARC本が必要なんじゃないの?
707774ワット発電中さん:2011/07/20(水) 00:41:31.02 ID:mbQNQVL9
一度はスケマ確認する事が多いよ

スキャンテスト系との親和性や、予想外に冗長な論理合成結果が無いかどうかの確認くらい。

synopsys系のツールがあればGUIで割と簡単にできるしね。

708774ワット発電中さん:2011/07/20(水) 00:57:25.02 ID:b9/oO2ZM
グルーロジックって、何?
グルーランプ?
ホットボンド?
709774ワット発電中さん:2011/07/20(水) 01:01:48.26 ID:bQPtJjjP
Glue logic
チップ同士を接続するときに追加するちょっとしたロジック回路のことだと思った。
デコード回路とかそういうやつ
710774ワット発電中さん:2011/07/20(水) 01:17:53.03 ID:st6s5r5A
>>707
スキャンテストとの親和性ってのはよくわからないけど、
冗長な回路になってるかどうかはarea report見ればわかると思うんだけどな。
普通は合成してそのまま動くし、スケマとか見る気も起きないわ。
711774ワット発電中さん:2011/07/20(水) 06:56:46.78 ID:CieKjCiN
観賞用のスケマは持っていた方がよい。
712774ワット発電中さん:2011/07/20(水) 10:03:32.47 ID:lnmabFBP
>>710
>冗長な回路になってるかどうかはarea report見ればわかると思うんだけどな。

そりゃ、50ゲートのつもりが100ゲートになってりゃ分かるけどな
713774ワット発電中さん:2011/07/20(水) 12:44:01.54 ID:st6s5r5A
>>712
いやいや、逆に大きい回路こそスケマ見たらわかるのか聞きたいわ。
714774ワット発電中さん:2011/07/20(水) 13:28:08.01 ID:lnmabFBP
スケマ見るのは、ECO の時くらいだけどね。
アホな合成してんなぁとかたまに思う。
715774ワット発電中さん:2011/07/21(木) 00:15:50.29 ID:AzU7mDFp
>>708
>グルーロジックって、何?

ゆとり馬鹿はしねよ
716774ワット発電中さん:2011/07/22(金) 15:21:56.24 ID:Oi9++QY6
>>715
感じ悪いな、おまえ
717774ワット発電中さん:2011/07/22(金) 18:19:56.50 ID:UnSebzFh
>>716
頭悪いな、おまえ
718774ワット発電中さん:2011/07/23(土) 02:57:58.71 ID:CyfmkK5H
スケマというか、大雑把なブロック図は併用した方が早いかも。
どんなバスにどんなファンクションがのってるとか。

もっとも、某大手のAV機器関連のLSIでは細かいスケマを書かされましたね。
パチンコ関連のLSIではソースコードにコメントを書かずに、
設計仕様書と称してソースコードのコメントが書いてあるだけの資料があったりとか。

結局、生産性が上がるのも下がるのもプロジェクトマネージャーの能力次第なんですよね。
719774ワット発電中さん:2011/07/23(土) 11:47:04.09 ID:ECJBC9j3
verilog、コンパイラiverilog
reg[3:0] a
for(a=0;a<15;a=a+1) #10;

これでaの各ビットを$monitorで監視すると0ビット目が0、1ビット目が1のときだけ
表示されないのですがなぜか教えてほしいです


0 0 0 0 0
1 0 0 0 10
1 1 0 0 30
720774ワット発電中さん:2011/07/23(土) 11:50:59.93 ID:ECJBC9j3
>>719
解決しました、すみません
721774ワット発電中さん:2011/08/10(水) 03:41:59.54 ID:OCr52fJN
Verilogで、atan()の計算(アークタンジェントのけいさん)は、
とのようにするのでしょうか?
メーカー提供の開発ツールの、組み込みコアの中に関数パッケージみたいな
IPがあるのでしょうか?
722774ワット発電中さん:2011/08/10(水) 14:21:52.41 ID:3SXZvfsB
岩波数学辞典に載っている atan の表を入力すればいいのですよ。
723774ワット発電中さん:2011/08/10(水) 16:04:57.55 ID:fee0h0cS
cordic atan でぐぐれ
cordic は三角関数系はたいてい計算できるぞ
724774ワット発電中さん:2011/08/18(木) 23:04:05.39 ID:lefQx/bY
初歩的な質問なのですが、
1ビットのレジスタへの代入で「1」と「0」はわかるのですが「−1」はどういう意味でしょうか?
たとえば「A <= -1」といった代入文です。
725774ワット発電中さん:2011/08/18(木) 23:11:20.82 ID:fbYfCUCn
-1 は すべてのビットが1だよ
726774ワット発電中さん:2011/08/18(木) 23:17:40.53 ID:bjEhC3ZN
それってVerilogのみ??
727774ワット発電中さん:2011/08/18(木) 23:28:39.71 ID:gdz/pAud
>>726
まずは型をはっきりさせようか。
conv_std_logic_vector(-1,32)なら、全ビット1になるはずだけど。
728774ワット発電中さん:2011/08/18(木) 23:33:29.95 ID:bjEhC3ZN
あー、そういうことか。
729774ワット発電中さん:2011/08/18(木) 23:50:25.07 ID:lefQx/bY
>>724です。みなさん、レスありがと。
verilog専用スレでないことを忘れていました。すみません。verilogの話です。
reg [7:0] A;
と宣言されたレジスタにalways文の中で次のような代入文があります。
A[7] <= -1;
この結果A[7]にどのような値が入るのかわかりません。
730 忍法帖【Lv=40,xxxPT】 :2011/08/19(金) 00:06:58.99 ID:v3v8c/h2
1'b0 - 1'b1 はいくつになるでしょう。
つまりだな… >>725で既に答えが出てるってこった。
731774ワット発電中さん:2011/08/19(金) 01:05:02.86 ID:6eLbYSM+
1とせずに−1とするのはどういう意図があると考えられるのだろう?
1なら素直に1とすればいいんじゃないのかな、とふと思った。
732774ワット発電中さん:2011/08/19(金) 08:36:16.54 ID:6i3ZdpzW
マジレスすると、-1は32ビット符号付きの値。
その最下位ビットがA[7]にセットされる。
733774ワット発電中さん:2011/08/19(金) 12:16:42.37 ID:6eLbYSM+
>>732
省略した表現は32ビットの10進数というのを思い出した。ありがと。
734774ワット発電中さん:2011/08/20(土) 01:56:36.54 ID:m00aPofm
>>733
何か日本語として変だが。それとも頭の方か?
735774ワット発電中さん:2011/08/20(土) 02:00:36.47 ID:m00aPofm
>>732
そうなんだよ。 Verilogって範囲チェックしないんだよな。
reg宣言でバス表記を忘れてもちゃんと単信号として処理されるんだよね。
736774ワット発電中さん:2011/08/20(土) 07:58:29.83 ID:VW4Xosjp
>>735
そんな時にLINTチェック
737774ワット発電中さん:2011/08/22(月) 10:31:17.66 ID:ZMIHvk0F
LINT チェックしてもエラーにならないかもね。
738774ワット発電中さん:2011/09/06(火) 04:48:07.43 ID:siNemsZD
多ビットの信号定義するときって[MSB:LSB]だと思ってたけど
MicroBlaze関連のHDLソース眺めてたら[LSB:MSB]で定義されてるんだが別にどっちでもいいの?
バイトオーダの話とはまた違うものだよねこれ
739774ワット発電中さん:2011/09/06(火) 11:47:21.01 ID:Y+1iNjXC
68kと8086系のコンパイラで違ってきたりして
740774ワット発電中さん:2011/09/06(火) 12:58:11.86 ID:8lvhGIiV
バイトオーダーじゃなくてビットオーダーかな。
ビットにアドレスが付く時にLSBとMSBのどっちを0とするかはアーキテクチャで違う。

2のn乗、と相性が良いのはLSB=0で、バイトオーダーのビッグエンディアンと
相性が良いのはMSB=0。

[MSB:LSB] か [LSB:MSB] かは言語仕様に依るとしか言いようがないけど、
プログラミング言語の部分配列の記法との連想では、左側に数字が
小さい方が来たほうが一般的なのかなぁ。
741774ワット発電中さん:2011/09/07(水) 09:24:13.19 ID:xqbJCMSD
んなこたぁないわ。
(MSB,LSB)が大半だ。逆はきわめて特殊
742774ワット発電中さん:2011/09/07(水) 09:32:53.51 ID:dwC9zcEe
ああそうか、MSBが左にあったほうが自然か。
743774ワット発電中さん:2011/09/07(水) 10:09:42.90 ID:NBO5t4Ia
配列 bitvec(0)がLSBって自然なのは不動として、
(N downto 0) か (0 to N) どっちがいいのって話?
744774ワット発電中さん:2011/09/07(水) 21:48:50.53 ID:bdw0nXuA
std_logic_vectorは(N downto 0)
配列(メモリ記述)は(0 to N)
745774ワット発電中さん:2011/09/07(水) 22:27:32.73 ID:htmj8DWC
ビット列を整数値として考えると [N-1:0] としたほうが自然。
Nが多くなると表現できる桁が増える。

ビット列を固定小数値的に考えると [0:N-1] のほうが都合がよい。
Nが多くなると表現できる精度が増える。
746774ワット発電中さん:2011/09/08(木) 02:13:49.68 ID:olh6rTXC
Verilogで、
パラメータで渡された「maxカウント」の値 C によって、
自動的にreg [N : 0]と、Nの値を計算する方法って無いでしょうか?

log(C) / log(2)の結果を切り上げれば良いと思うのですが、
良くわかっていないので、使いもしない多bitで宣言して、
Warningを盛大に出しています。FFがもったいない。

747774ワット発電中さん:2011/09/08(木) 04:16:39.76 ID:CB77/5qb

Cを二進数で表現したら自ずとわかるのでは
748774ワット発電中さん:2011/09/08(木) 10:04:54.12 ID:UJwDvSBt
>>746
コーディング時に10進を2進に変換するのをめんどくさがっているだけなのか?
それとも動的再構成をやりたいということなのか?
749774ワット発電中さん:2011/09/08(木) 10:32:38.40 ID:Rsz4cdwB
あっちを変更したらこっちも変更しなければならない、という箇所を
ソースコードのあちこちにばらまくのは良くないからどうにかしたい、
ということだと思うけど。
750774ワット発電中さん:2011/09/08(木) 10:49:28.67 ID:xqDP9wBm
>>746
>使いもしない多bitで宣言して、
>Warningを盛大に出しています。FFがもったいない

最適化で削除されるからもったいないわけではない。
751774ワット発電中さん:2011/09/08(木) 16:39:04.87 ID:MMu1d9vL
VHDLではfunction使って必要なビット幅計算→signal宣言で使用
で出来るけど、verilogにはコンパイル時の定数算出の仕組みはないかな?
752774ワット発電中さん:2011/09/08(木) 20:29:08.74 ID:s2yu2Gz6
verilogも同じく、

localparam n=log2(m);
wire [n-1:0] data;

って書いてる。
753774ワット発電中さん:2011/09/08(木) 23:50:52.11 ID:UJwDvSBt
>>752
おー、なるほど。

このあたりのコーディングについては入門書にはかかれてないんだが、何を参考にしたらいいのかね?
入門書の次に読むべき書籍がわからない。
754774ワット発電中さん:2011/09/09(金) 10:11:44.12 ID:wUbKC8y8
log2 は、自分で関数作っとくの?
755774ワット発電中さん:2011/09/09(金) 10:51:24.46 ID:NEdr7How
切り捨て、切り上げの都合の良い物を自分で作る必要がある
756774ワット発電中さん:2011/09/10(土) 01:43:55.49 ID:Uk2IZ8Ed
log(m)の計算は、どのようにするのでしょうか?
757774ワット発電中さん:2011/09/10(土) 09:24:07.78 ID:bUaMVY3Y
ln(1+x)=Σ (-1)^n x^n/(n+1)
758774ワット発電中さん:2011/09/10(土) 10:12:39.54 ID:XAkl0O9V
ディーラー展開すればいいだろ
759774ワット発電中さん:2011/09/10(土) 10:30:13.64 ID:UKMdazoa
>ディーラー展開

聞いたことがあるような、ないような。数学とディーラー展開で検索してもヒットしないね。
760774ワット発電中さん:2011/09/10(土) 11:25:33.52 ID:3n4AU+fV
Taylor? Dealer?
761774ワット発電中さん:2011/09/10(土) 12:44:54.85 ID:JxRQDqVZ
カジノみたいだなw
762774ワット発電中さん:2011/09/10(土) 12:56:50.77 ID:CPoPg8OF
銀行家と興行主の闘いか
763774ワット発電中さん:2011/09/10(土) 12:57:02.26 ID:EoxWBR13
難しく考えなくて良いよ?
764774ワット発電中さん:2011/09/10(土) 17:52:26.40 ID:/QztOy3v
if( m < 2 ){ n = 1; }
else if( m < 4 ){ n = 2; }
else if( m < 8 ){ n = 3; }
else if( m < 16 ){ n = 4; }
else if( m < 32 ){ n = 5; }
   ;
   ;
つづく
765774ワット発電中さん:2011/09/11(日) 03:49:49.72 ID:jwuzQEwJ
他人のソースを見るのは、疲れます。
特に、我流で気づき上げたS課長のVerilogは、見るに値しません。
それでも「改造頼む」と、電車男状態です。
どうしたらいいでしょうか?
766774ワット発電中さん:2011/09/11(日) 04:33:19.23 ID:4TTIpaey
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
                        |
       ____.____    |
     |        |        |   |
     |        | ∧_∧ |   |   窓から
     |        |( ´∀`)つ ミ |   投げ捨てろ
     |        |/ ⊃  ノ |   |
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    |
767774ワット発電中さん:2011/09/11(日) 12:06:40.01 ID:jZ55MLe1
他人の回路の改造ほどダルいものはないね。
インターフェースくらいちゃんと設計しろと言いたくなる。
768774ワット発電中さん:2011/09/11(日) 12:13:58.30 ID:wEakGud9
みなさん、コメントはどのように書いていますか?
1. ソース行間
2. ソースの右半分
3. その他

僕は2. です。1.は、とても見にくいと思いますし、行数がやたらと
多くなります。「1行1000円」とかの仕事ならともかく・・・・
769774ワット発電中さん:2011/09/11(日) 17:18:16.89 ID:SPa7QYqc
両方
770774ワット発電中さん:2011/09/11(日) 18:35:58.95 ID:wEakGud9
選択肢が3つあるのに、両方というのはおかしいと思います。
771774ワット発電中さん:2011/09/11(日) 18:44:13.49 ID:mmADab1Y
なんでどちらか一方に絞らなければならないの?
目的によってコメントの書き方変えるぞ。
772774ワット発電中さん:2011/09/11(日) 19:51:01.09 ID:EiQuFh1J
自分も12両方。
と言っても各行間にコメントはいれないよ?ある程度のブロックで行間に、右側に機能のコメント、って分けてる
773774ワット発電中さん:2011/09/11(日) 22:41:25.40 ID:wEakGud9
ありがとうございます。
やっぱり、1. 2. 混合ですよね。僕も、タイトルは
//                         //
//  液晶に文字を出す練習プログラム        //
//                         //
とか書いて、ソースの途中は、
module (
  input wire clock,      // main clock
  input wire reset,      // reset (正論理)
  output reg [15:0]      // なんとか、かんとか
);
endmodule
とか書いています。
しかし、以前見たソースは、
module (
  // main clock
  input wire clock,
  // reset (正論理)
  input wire reset,
  // なんとか、かんとか
  output reg [15:0]
);
と、各行に1行のコメントがあって、イライラしたことがあるのです。
774774ワット発電中さん:2011/09/11(日) 23:25:01.87 ID:K/sQ/NBv
どんな時にonehotステートマシンって使っている?
775774ワット発電中さん:2011/09/11(日) 23:25:35.38 ID:jZ55MLe1
コンパイラに任せてますw
776774ワット発電中さん:2011/09/12(月) 00:29:46.13 ID:WJyPHPdB
>>775
それどう記述すれば良いん?
777774ワット発電中さん:2011/09/12(月) 01:41:06.85 ID:2NxPZWhL
>>773
プログラム・・・ね・・・
某人がVerilogで書かれたアプリとつぶやいていたのを思い出した・・・
778774ワット発電中さん:2011/09/12(月) 02:05:29.35 ID:jbwGaAds
プログラムでしょ、HDLは。
ハンダ付けもせず、PCだけで終わるのは。
779774ワット発電中さん:2011/09/12(月) 02:31:32.80 ID:oOy+wfij
FPGAならね。
少なくとも「ソフトウェア」ではない。
780775:2011/09/12(月) 02:38:52.80 ID:oOy+wfij
>>776

type STATE is ( S0, S1, S2 );
signal State : STATE;

case State is
when S0 => ・・・;
when S1 => ・・・;
when S2 => ・・・;
when others => ・・・;
end case;

てな感じで書けばコンパイラがステートマシンを推論してくれる。
最近やってるプロジェクトだとワンホットで合成してたな。
コンパイラのデザインゴールやステートマシン関連のオプションで
いろいろいじれると思う。
781774ワット発電中さん:2011/09/12(月) 03:05:40.44 ID:3gWw4qj7
お話に出ているワンホットについて教えてください。
言葉では何度も聞いているのですが、嬉しさがわかりません。

ワンホット = 1 hot = 1つのホット = ホットが論理1のことだと思うので、
論理1が1つある、と読めば良いのでしょうか。

ワンホットでカウンターを組んだとき、10進ならFFが10個を使用し、
その10個の中の1つのFFだけが"1"で、他は全部ゼロになる、そういう記憶の方法。
そしてワンホットは、ハザードが出ない、高速動作、などと書かれています。
ここまでは、ネットで調べてわかりました。
でも、どういうふうに嬉しいのかわかりません。

カウント分のFFが必要なんて、資源の浪費?ではないかと思うです。
FFが8個で256まで行けるのにです。
ハザードが出ないというのも、同期式カウンタなら通常のものでもハザードは出ませんし。
高速と言われても、クロックで同期している以上、どちらも小梨だと思うのです。

ワンホット方式の、いったい何が嬉しいのでしょうか?
何かおわかりの方、ぜひ教えてください。


782774ワット発電中さん:2011/09/12(月) 08:23:28.59 ID:WyKOuwKN
駆動する対象が、どれか一つがONになってる、という装置の時とか。
バイナリカウンタだったらデコーダで振り分けないといけない。

あるいは、ワンホットシーケンサならフローチャートっぽい構造をそのまま
実装できる。
783774ワット発電中さん:2011/09/12(月) 11:51:16.32 ID:vASOBHOV
>高速と言われても、クロックで同期している以上、どちらも小梨だと思うのです。
小梨の意味がわからんが、8ビットアダーよりシフトレジスタのほうが高速だと
思わないか?

そもそもカウンターにワンホット使う必要はないだろ。
小型で高速なカウンターならM系列だな。
784774ワット発電中さん:2011/09/12(月) 12:00:07.47 ID:WyKOuwKN
ほんとに単純にカウントするだけなら、一つ下の桁を2分周するだけだから
アダーはいらんけどね。
785774ワット発電中さん:2011/09/12(月) 12:03:46.43 ID:sD1paRVU
>>783
昔の4ビットマイコンのアドレス生成がM系列だった
デバッグ面倒臭かったじぇ
786774ワット発電中さん:2011/09/12(月) 12:26:42.22 ID:GNPzaXoa
>781

782も書いてるけど、
FFが256 → 8に減っても、デコーダの組合せ回路が 256個要ったらもとのもくあみだから。
それなら本質的に速いワンホットのほうでいい。
787774ワット発電中さん:2011/09/12(月) 12:30:36.09 ID:+yCNQ1h2
ワンホットだとデコーダーいらないでしょ?

------------------
10個ステートがあるとして、バイナリ表記で4bit。
・バイナリだと「4bit+条件」
・ワンホットだと「1bit+条件」
が入力信号の本数になる。

例えばが条件が4本ある回路を、LUTの入力が6本のFPGAに実装すると、
バイナリだと8入力→LUT2段
ワンホットだと5入力→LUT1段
となり、ワンホットの方が高速になる。

FPGAに限らず、一般的に入力信号の本数が増えると速度が落ちる。

-------------------
10本のうち、1本だけアクティブになるカウンターが必要な場合。
・バイナリ4bitのカウンタで作ると、FFは4個だが、インクリメンター(+1回路)、4to10 デコーダー
・ワンホットで作るとFF10個。だが、単純なシフトレジスタ
回路規模としては微妙。FPGAなら確実にワンホットの方が小さい。

-------------------
8000ステートをワンホットで作ることはそうそう無いだろう。
規模や目的によって使い分ける。
788774ワット発電中さん:2011/09/12(月) 12:50:43.48 ID:vASOBHOV
ジョンソンカウンターのほうがよくね?
まさに 4017
789774ワット発電中さん:2011/09/12(月) 13:09:44.74 ID:BkLgihES
>>786-787
その通り
だから、FPGAのお任せFSMでワンホットを生成するんだろ
790774ワット発電中さん:2011/09/18(日) 08:54:14.14 ID:2pd1SCyw
質問なのですが、
Verilogでバスで指定したレジスタ1bitごとに名前をつけて定義することは出来ますか?
イメージ的には、

reg [3:0] control{enable,ss2,ss1,ss0};

こんなことがしたいです。
791774ワット発電中さん:2011/09/18(日) 16:38:13.65 ID:gPhbUOhv
最近VHDLって元気ないんですか?
792774ワット発電中さん:2011/09/18(日) 16:59:15.32 ID:uAJ6T+JB
VHDLなら俺の横で寝てるよ
793 【東電 77.8 %】 :2011/09/18(日) 19:11:38.64 ID:aVAI3ZkE
で、使うのはVerilog
794774ワット発電中さん:2011/09/18(日) 20:01:38.68 ID:ukxNjTNb
さる代理店のFAEに
VHDLでは記述したまま回路になりやすいけど
Verilogで記述すると論理合成ツール任せで推論させる所が
多いので規模が小さくなる、と言われた。

そんな俺はVHDL派。
795arisa ◆QaHT6HayjI :2011/09/18(日) 20:09:27.43 ID:lIFaeKjV
最近、verilogも記述するようになってから、signed unsigned の記述をきちんとしないと、違う動作したり、
適当に記述しても、適当に動き出すから、逆に神経使うようになって、いらいらして、VHDLで書いてから、
あとで、会社がverilogなので、機械変換か人間変換した方が楽だなーと思っている。
最初のアルゴリズムを、いきなり書き出す場合は。
796774ワット発電中さん:2011/09/18(日) 20:10:58.46 ID:lIFaeKjV
>>794 VHDLで規模が小さくなるような書き方ができない技術者は氏ねってことだw
797774ワット発電中さん:2011/09/19(月) 00:03:59.17 ID:6K3DCga4
>>794
>論理合成ツール任せ
相当頭が良い奴ならともかく、日本では低脳化が進んでいるから
ツールの方が賢いだろうからな
低脳化のおかげで日本の電子産業落ちぶれてきているんだろ

>>796
日本に技術者ってどれぐらいいるんだ? 
実際はドカタなのに自称技術者が超多いんじゃないか
798774ワット発電中さん:2011/09/19(月) 03:45:25.44 ID:NLJ5og/9
>>797
もーねHDLはソフトウェアなんてすわ。
設計者は機能レベルまでしか面倒見ない。
どーいう回路がいいか考えるのは論理合成Iの仕事
799774ワット発電中さん:2011/09/19(月) 06:54:24.20 ID:GZUUFmkk
>>797 は高位合成を理解できてないバカか?
800774ワット発電中さん:2011/09/19(月) 11:50:44.73 ID:DwlPYow0
合成鶴くんが推論し易いように、かつ、
人間にとってもある程度読み易い可読性のあるコードを目指すのが最近の自分のトレンド。
801774ワット発電中さん:2011/09/19(月) 14:18:28.25 ID:zp/+yloc
>>798
他人がどういう仕事しているか興味ない、自分の世界で生きれる技術者乙。
論理合成Iが、正しくできないんだったら、論理合成I君修正するお仕事しろよ。
論理合成Iなんて所詮人のつくったものだから、人超えられてないんだよいまだに。

>>799
たぶん釣りだからw

>>800
その自分のトレンドを啓蒙して。剃毛はイヤズラ
802774ワット発電中さん:2011/09/19(月) 21:18:20.27 ID:e/8SEGJb
>>801
人間が作ったコンピュータが
チェスでチャンピオンを負かしてなかったか?
803774ワット発電中さん:2011/09/20(火) 08:25:46.25 ID:t2d+rdw+
他人が書いたソースは言語に関わらず読み難いよ
最近は記述長くなるのでVHDLはほぼ使わないなぁ
804774ワット発電中さん:2011/09/26(月) 04:00:05.98 ID:VPTvo7F9
Verilogの記述で、教えてください。
どちらの書き方で書くべきか、という質問です。

reg [2:0] s;  // 状態
reg    a,b,c;

always @ (・・・) begin     // 1つのalwaysの中に、複数のreg
  if( s==0 ) begin
    s <= 1;
    a <= xx;
    b <= xx;
  end else if( s==1 ) begin
    s <= 2;
    a <= xx;
    b <= xx;
  end else if( s==2 ) begin
    s <= 3;
    a <= xx;
    b <= xx;
  end else if( s==3 ) begin
    s <= 0;
    a <= xx;
    b <= xx;
  end
end


always @ (・・・) begin     // regごとにalways()を使用する。
  if( s==0 ) begin
    s <= 1;
  end else if( s==1 ) begin
    s <= 2;
  end else if( s==2 ) begin
    s <= 3;
  end else if( s==3 ) begin
    s <= 0;
  end
end

always @ (・・・) begin
  if( s==0 ) begin
    a <= xx;
  end else if( s==1 ) begin
    a <= xx;
  end else if( s==2 ) begin
    a <= xx;
  end else if( s==3 ) begin
    a <= xx;
  end
end

// bとcも同様に書く (省略します)

どちらでも動くのですが、どちらで「書くべき」でしょうか。

僕は、1つのalwaysだと思います。理由は、行数が少なくて、状態遷移が良くわかるからです。
805774ワット発電中さん:2011/09/26(月) 06:19:41.73 ID:fflV0+Nb
関連性で記述する。

はい、次の方どうぞ。
806774ワット発電中さん:2011/09/26(月) 11:10:29.02 ID:1yW+SWn6
分からないって、正直に書けよ。
807774ワット発電中さん:2011/09/26(月) 11:37:13.34 ID:7OwQTD8i
>804
上と下の記述は s と a の関連性という点で同一じゃない
(かもしれない。xx の内容を定義してないからこれだけでは分からない)
から、優劣はこれだけでは論じられない。


たとえば s と a への代入時刻が #10 だけ違うという記述を挿入したいとき、
上では容易だが下では可読性がほぼない。
逆に、s の代入だけクロックから #10 遅れるべきという記述は下では容易だが
上ではめんどくさい。
808774ワット発電中さん:2011/09/26(月) 12:10:04.68 ID:h4LT/21J
この例の場合は上でいいと思うが、
実際は状態を決めるのに幾つもの変数がからんだりする。
そんな場合、上の書き方だと異様に長くなるから、自分は
下の書き方でやる場合が多い。
809774ワット発電中さん:2011/09/26(月) 12:53:21.53 ID:xrtoQJpT
>>806-808
ありがとうございます。
この程度では、どちらも優劣つけられないということですね。

いつも、どうすべきなのか、悩みながら(迷いなから?)書いています。
たまには、上記の折衷で書いてたりします。
頭が良くないので、
・ミスや勘違いの発生しにくいのは、どちらか。
・1年後に見たとき、動作が思い出しやすいかのは、どちらか。
宗教のような感じで、迷っています。
810774ワット発電中さん:2011/09/26(月) 13:36:07.15 ID:OodnAGCY
どんな書き方しても1年後に見たらあまりかわらないんじゃ...
FPGAにしてもマイコンにしてもソフトの保守ほどいやなものはない(自分にとって)。
今の製品はライフサイクル短くて使い捨てみたいな感覚があるけどソフトの保守って必要?

811774ワット発電中さん:2011/09/26(月) 13:50:25.20 ID:1yW+SWn6
>>807
#10 遅延とか、テストベンチでも書くのかい?

>>810
一人だけで仕事してるならそれもあり。
仕事ですらないか…
812774ワット発電中さん:2011/09/26(月) 14:24:55.84 ID:xrtoQJpT
>>810
>ソフトの保守って必要?
納品時に、先方にはソース非公開ですので、重要ですよ。
改造、改造で、大変なことになっています。
「そんなこと、初めから言ってよね。そんなふうに作ってないよ」
「改造するより新規の方がいいですよ」って言っても、
IPなんて、openなんとかに転がってるんじゃないの? それ使ったら?
とか、おっしゃるので、「んじゃ、お前、自分でやってみろよ」と大声で
言ってやる。
心の中でね。
813774ワット発電中さん:2011/09/26(月) 16:50:38.45 ID:WYSCCXhX
>>810
会社によりけりだろ
自社製品を開発製造販売する企業...下請け開発ドカタ企業
などいろいろあるから、それによって保守の形態も違うだろ
なかには保守必要ないってところもあるんじゃないか

>>812
会社に大変なことしないで楽に仕事のできるところからのみ仕事請けて
って大声で言うと良いよ。
814774ワット発電中さん:2011/09/26(月) 18:26:15.31 ID:vqNZFQ0O
>>804
私の場合、ステートは別にする。
abcは関連度による。
815774ワット発電中さん:2011/09/26(月) 19:58:08.00 ID:3YcK0q/9
>>804
この場合だとどちらの書き方をしても回路規模は変わらないと思うから
可読性のある上の方で書くといいんじゃないかな。
>>814のようにステートだけ別にするっていう方法もいいと思う。
816774ワット発電中さん:2011/09/26(月) 20:42:09.24 ID:xrtoQJpT
>>813
ありがとうございます。
>会社に大変なことしないで楽に仕事のできるところからのみ仕事請けて
って大声で言うと良いよ。
いくら携帯から書込だと言っても、句読点くらい打ってください。
文の意味がわかりません。

817774ワット発電中さん:2011/09/27(火) 01:37:14.58 ID:kL/UNz1k
それより、3ビットのsでs==4以降の記述がない方が気になる。合成でエラーが出そう。
818774ワット発電中さん:2011/09/27(火) 02:37:06.65 ID:ZFSRAb/Y
最初は3bitで、4か5まで行こうと考えたけど、
行数が長くなって「改行が多すぎます」と言われたのでは内科と
819774ワット発電中さん:2011/09/27(火) 04:01:44.18 ID:F3EY7vrW
たまには3項演算子のことも思い出してあげてください
820774ワット発電中さん:2011/09/27(火) 07:50:56.84 ID:0ZqlXwOR
質問です
参考書ではramの実装方法について次のように書かれていました。
always@(write or data) begin
if(write) mem[addr] <= data;
end

RAMは書き込みのタイミングはネゲートした瞬間だと思うんですが、
データが変わったときにも行われるようにしているのはどういう意図でしょうか。
これがないと何か不都合がありますか。
821774ワット発電中さん:2011/09/27(火) 08:06:50.75 ID:0ZqlXwOR
質問です。
ノンブロッキング代入は直前のブロッキング代入のあとに行われることが保証されますか。

例えば、
A <= 1;
B <= 1;
state_change = ~state_change;
とすると、
state_changeの変化で動くイベントで、ABが1は保証されますか。
822774ワット発電中さん:2011/09/27(火) 10:12:07.04 ID:cLBzKQA4
>>816
人のこと言える文章なのか?
読解力つけようぜ。
823774ワット発電中さん:2011/09/27(火) 11:07:51.19 ID:EU1AMhpC
日本人じゃないんでしょ
824774ワット発電中さん:2011/09/27(火) 11:26:18.73 ID:mQg8sBHg
>>820
RAMを実現するために if(write) mem[addr] <= data; の一文を紹介するための例として
示しただけで実用コード例ではないんじゃない。

>>812
改造ということは商品の納入先が一般消費者じゃなくて企業ということですね。

一般消費者相手の民生品、たとえば携帯やデジカメなど一度売り始めたら改造とか
はなくて、それが必要なころには機能、性能など別物と思うような次の新製品に
かわるね。そういった性質のものにソフトの保守が必要なのかなってのを聞きたかった。
825774ワット発電中さん:2011/09/27(火) 12:10:42.26 ID:eMdWPP3P
FPGAだと if(write) mem[addr] <= data; みたいなコードを合成ツールに食わせると
うまくinferenceしてくれてblockRAMを割当てたりする。

いまどきのFPGA搭載のマルチポートblockRAMは、ライトバック/リードスルー
どっちにも対応してたりするんで、書いた通りに動くよ。
826774ワット発電中さん:2011/09/27(火) 12:19:08.61 ID:lFfvKgun
>>821
>ノンブロッキング代入は直前のブロッキング代入のあとに行われることが保証されますか。
そうだけど、その例だと、厳密に言うとstage_changeが変化した時点ではA,Bは不定。
でも時間差だよね。
827774ワット発電中さん:2011/09/27(火) 12:20:11.75 ID:lFfvKgun
間違えた orz

「でも時間差ゼロだよね。」
828774ワット発電中さん:2011/09/27(火) 12:55:21.55 ID:3pqZBm/W
>>790

wire[3:0]control= {enable,ss2,ss1,ss0};
か?
829774ワット発電中さん:2011/09/27(火) 22:55:00.55 ID:MCJ6IKoS
内部実装上の処理の動きをC的な書き方するとこんな感じ

A.next = 1;
B.next = 1;
state_change.next = ~state_change.prev;
state_change.prev = ~state_change.prev;

時刻を進める何かがあるとアップデート処理をする

A.prev = A.next;
B.prev = B.next;
state_change.prev = state_change.next;
830774ワット発電中さん:2011/09/27(火) 23:27:46.58 ID:oDzrixEa
>>821
Sim上では補償される。
831 忍法帖【Lv=40,xxxPT】 :2011/09/27(火) 23:30:52.75 ID:/78WOitc
まぁSim上ではデルタ遅延があるからね。
832774ワット発電中さん:2011/09/28(水) 00:05:31.65 ID:YQaCOtyJ
Verilogにはデルタ遅延ないよ。代入のイベント処理順が曖昧模糊に規定されてるだけ。
833774ワット発電中さん:2011/09/28(水) 01:29:21.67 ID:5cyCqXdw
今日は これで帰るよ。
また明日ね。
834774ワット発電中さん:2011/09/28(水) 12:52:55.11 ID:h/wSIJ6r
お聞きしたいことがあるのですが、I2Cすれーぶのステートマシン化をこころみています。
I2Cは基本的にSCL線の立ち下がりがステートの切り替わりなのですが、
通信の開始を表すのに、SDAラインの立ち下がりが使われます。
QuaterIIにステートマシンとして認識させるには、ステート変更箇所が
always@(posedge clk or negedge rst)の記述が必要とのことですが、
SCLとSDA両方にトリガーがある場合、ステートマシンにできますか?
835774ワット発電中さん:2011/09/28(水) 12:57:08.40 ID:qgQZUV0u
SCLクロックの4〜16倍を超す周波数のクロックを用意して
制御線をサンプリングするといいよ
836774ワット発電中さん:2011/09/28(水) 14:41:06.23 ID:h/wSIJ6r
採用させていだだきますm(__)m
837774ワット発電中さん:2011/10/05(水) 21:29:54.19 ID:iJZWJkQf
always@(posedge CLK)などの、アットマークってどういう意味があるんですか?
838774ワット発電中さん:2011/10/05(水) 23:25:35.94 ID:DUodoGod
そのまんまの意味だと思うけど・・・・
839774ワット発電中さん:2011/10/06(木) 14:39:15.56 ID:kkZGre77
always(posedge CLK) ってしなかったのはなぜですか?
840774ワット発電中さん:2011/10/06(木) 18:23:50.69 ID:kyjkslOS
構文的に区別がつかないじゃない
841774ワット発電中さん:2011/10/06(木) 20:01:11.85 ID:k3i380fZ
しらんがな
842774ワット発電中さん:2011/10/06(木) 21:39:18.17 ID:XNFC4QDt
文字通りatって意味を表したかったのかな。プログラミング言語と比べていろいろ無駄が多いna
843774ワット発電中さん:2011/10/06(木) 22:09:01.89 ID:LtIlTn1k
じゃあ、引っ越せ
844774ワット発電中さん:2011/10/06(木) 22:20:02.27 ID:kyjkslOS
プログラミング言語じゃないからね

VHDLがあっちこっち冗長感あふれる設計なのはAdaの影響だけど
845774ワット発電中さん:2011/10/06(木) 22:26:59.51 ID:Ol5pXGrT
あだ〜・・・!
846774ワット発電中さん:2011/10/06(木) 22:49:26.92 ID:NJY7dNug
文法上は always @(〜) という固定文句があるわけじゃないぞ?

@ の起動時刻指定つきの always文ってだけで、always #〜 とか書けるし、
@(〜) も always 以外の場所に書ける。
847774ワット発電中さん:2011/10/06(木) 23:11:41.54 ID:KtRdjNl3
やっぱ@は文法的ないみがあるのね。

も一つ質問なのですが、
if文がなるべく深くならないようにする工夫とかありますか?

普通のコンピュータ言語ならば、メソッドに小分けするなり、continueで中断するなりすればかなり解決しますが。
verilogは有効的な方法はありますか?
848774ワット発電中さん:2011/10/06(木) 23:39:59.53 ID:7Dp9Ak4s
っfunction,task
849774ワット発電中さん:2011/10/07(金) 01:29:20.13 ID:qEbPgtiN
always(3丁目 夕日)
850774ワット発電中さん:2011/10/07(金) 06:06:34.56 ID:vRrfSO5l
ゲートで書けばif文は一つもいらない。
851774ワット発電中さん:2011/10/07(金) 19:50:22.24 ID:5b4qVRT8
ゲートで書くのってアセンブラみたいだね。
だとしたらC言語にあたるものがVerilogかって言うと、どうなんだろ
852774ワット発電中さん:2011/10/07(金) 22:57:11.76 ID:Pak4QS+U
ゲートで書くは機械語直接書き
Verilogはアセンブラ
853774ワット発電中さん:2011/10/09(日) 10:31:56.34 ID:PVTsOB36
wire[7:0] R_DATA;
assign R_DATA = (internal == 1) ? I_DATA : DATA;
と書くのと、
wire[7:0] R_DATA = (internal == 1) ? I_DATA : DATA;
と書くのは一緒ですか?
854774ワット発電中さん:2011/10/09(日) 10:35:50.14 ID:BxV8Z9/s
同じじゃね?
855774ワット発電中さん:2011/10/09(日) 11:03:42.78 ID:Srs+8318
>>847
if文の条件次第だけど、うまく条件を整理出来たらif文をcase文に書き直せるのでは?
856774ワット発電中さん:2011/10/09(日) 13:41:41.86 ID:CkDi4xjy
if分とcase分って、どっちがお得ですかね。
どうもif分ばっかり使って、case分を使わないんです。
case文の記述でインデントが1つずれるのも いやな理由の1つです。
857774ワット発電中さん:2011/10/09(日) 18:10:22.81 ID:VOI1jXqt
case分のほうが回路規模小さくなる傾向にある。
作られるロジックを考えると納得するよ。
アドレスデコードをifの連なりで書くというとんでもない回路が社内で物議を醸してたw
858774ワット発電中さん:2011/10/09(日) 18:13:10.79 ID:Xf5yDY++
>>856
ソフト開発ではif分とcase分って、どっちがお得ですかね。
どうもif分ばっかり使って、case分を使わないんです。
case文の記述でインデントが1つずれるのも いやな理由の1つです。
どう思います?
859774ワット発電中さん:2011/10/09(日) 18:31:39.53 ID:Mq2Ed5+t
else if って書くのがキモい
860774ワット発電中さん:2011/10/09(日) 18:48:27.22 ID:BpyTr7iS
elsifかelifだよなやっぱり
861774ワット発電中さん:2011/10/09(日) 19:14:24.08 ID:Jh+ajMAw
elifはないわ〜
862774ワット発電中さん:2011/10/09(日) 23:24:22.04 ID:oyxZ6ydg
elfまで削った言語は無いよな
863774ワット発電中さん:2011/10/10(月) 01:00:02.77 ID:g29sHZwa
具象構文にこだわっても得なことは全くない
864774ワット発電中さん:2011/10/10(月) 05:19:22.80 ID:6oxFvSGc
>>857
FPGAですか?
865774ワット発電中さん:2011/10/10(月) 10:17:48.56 ID:VugyV/i6
自作でJKFFを作ったら、
Warning: Entity "JKFF" will be ignored because it conflicts with Quartus II primitive name
と怒られました。

QurtusIIでJKFFなど、デフォルトの組み込みプリミティブの詳細を見るには
どうすればいいのでしょうか?
866774ワット発電中さん:2011/10/10(月) 10:21:55.04 ID:tqyEzKAW
名前が衝突してるだけだろ。MYJKFF とかに名前変えたら?

そういうことじゃなくてprimitiveを使いたいからspec知りたいというなら
PDFのデータシート読めばいいと思うよ
867857:2011/10/10(月) 10:59:16.81 ID:aGwjZc+v
>>864
そうそうFPGAの話。
ASICは分かんない。
868774ワット発電中さん:2011/10/10(月) 11:31:18.74 ID:X+MEPlCy
>>864
例えばXilinxのSliceだと、埋め込みのマルチプレクサがあって、case文もしくはif〜then〜else文で使ってくれるとある。
ただ、一般的にif文よりもcase文の方がマルチプレクサを使ってくれる場合が多いらしい。
Dedicated Multiplexerとかで調べると出てくるね。
869774ワット発電中さん:2011/10/10(月) 15:49:49.75 ID:yeGVsMc3
あまり考えずにソフトウェア感覚でコードを書いていくとif文の階層が深くなりやすいね。
解決法はタイミングチャートなり他の方法なりで論理を整理し簡単化することじゃないかな。
870774ワット発電中さん:2011/10/11(火) 00:35:35.83 ID:b48GM8A7
それをツールがやってくれるんじゃないの?
871774ワット発電中さん:2011/10/11(火) 00:56:24.91 ID:+fVQ4kzB
>>870
だいたいやってくれる。
回路的に厳しい(規模・遅延)ところだと、人手でやった方が良いね。
ツールのオプションをいじるだけで良いに越したことはないんだが。

ソフトでも最適化が効くようなコード書くでしょ。
変化しないとわかっているメンバ変数は、一度ローカル変数に代入して使うとか。
872774ワット発電中さん:2011/10/11(火) 01:30:07.41 ID:lBh1pr+S
>>870
ツールうんぬんじゃなくてif文が深くならないための対策の話じゃないの?
FPGAの論理の考え方は産業機械で使われてるシーケンサのラダー回路作成と
似てる感じだな。一般にC言語などで書くソフトウェアとはなんか勝手が違う。
873774ワット発電中さん:2011/10/11(火) 20:04:00.51 ID:AFYkQi/L
ラダーみたいにオンラインエディットデバッグできたらいいんだけれどな〜
874774ワット発電中さん:2011/10/12(水) 15:23:59.37 ID:F4Ythbau
>>858
>>869
ソフトウェアなら最近は他段ifや他段のcase文嫌って
BridgeとかStrategyとか使えないかと考える場合もあるけどHDLだとそうもいかないしね〜
taskとか巧く使えないかなと悩むけど。
875774ワット発電中さん:2011/10/12(水) 18:18:38.67 ID:CFyRuOS0
task使ってシュミレーションしてればいいと思うよ。
876774ワット発電中さん:2011/10/12(水) 19:48:19.28 ID:z6PgL7YN
別にtaskを合成で使っても何の問題もないが。
877774ワット発電中さん:2011/10/14(金) 12:07:00.97 ID:eGE5KaLO
訃報: C 言語の開発者、デニス・リッチー氏が死去
ttp://developers.slashdot.jp/story/11/10/13/0224245/

Google+ で Rob Pike 氏が語ったところによると、C 言語の開発者、K&R の R であるところの Dennis Ritchie 博士が亡くなられた。
70 歳 (Rob Pike 氏による Google+ への投稿) 。

長らく闘病中だったとのことで、先週末に自宅で息を引き取ったそうだ。
878774ワット発電中さん:2011/10/14(金) 20:09:39.00 ID:kJTSLOO6
GoodBye World
879774ワット発電中さん:2011/10/14(金) 20:13:56.55 ID:fWHtjnkv
Hello worldの反対をゆってるならSea you world、な
880774ワット発電中さん:2011/10/14(金) 20:34:25.29 ID:kJTSLOO6
海 そなたは 万国なりや!
881774ワット発電中さん:2011/10/16(日) 17:28:09.01 ID:U0Y6Tw06
この場合see youは違うんじゃない?
生き返れないし
882774ワット発電中さん:2011/10/16(日) 21:21:33.65 ID:NDA7dcB1
あの世でまた会おう!
883774ワット発電中さん:2011/10/16(日) 21:40:46.94 ID:eX5ZKz7W
涅槃で待ってる
884774ワット発電中さん:2011/10/16(日) 21:46:41.61 ID:500CzSfw
C you later in next world !
885774ワット発電中さん:2011/10/17(月) 01:15:40.03 ID:vRw/Q//g
VHDLの開発者様はご存命なのだろうか。
886774ワット発電中さん:2011/10/17(月) 08:21:12.55 ID:02DRJS21
VHDLって委員会言語じゃなかったっけ
887774ワット発電中さん:2011/10/17(月) 22:18:07.77 ID:r5gt07/G
委員会でも中の人はいるでしょ
888774ワット発電中さん:2011/10/25(火) 18:24:22.88 ID:Qr5tl7yl
module REG (Vin,CLK,M);
input Vin;
input [1:0] CLK;
output M;
reg M;


always @(CLK[0] or CLK[1]) begin
if (CLK[1])
M <= Vin;
else
M <= CLK[0];
end
always @(CLK[0] or CLK [1])としているのに
CLKがどちらも変化していないときにMがVinになってしまうことがあります
どうしてでしょうか?
889774ワット発電中さん:2011/10/25(火) 18:41:13.49 ID:iUiwPnO0
クロック、立ち下がってないよね?

立ち下がるって変な表現・・・
890774ワット発電中さん:2011/10/25(火) 19:19:43.57 ID:EXPn2BHk
この記事をオススメする。Verilogマスターになりたければ必読。
http://monoist.atmarkit.co.jp/mn/kw/fpga_basic.html
891774ワット発電中さん:2011/10/25(火) 22:11:51.26 ID:T9iIl6x2
>>888 
おっさん、orなんて止めれ
always @*
892774ワット発電中さん:2011/10/25(火) 22:21:35.89 ID:N4uXfC+0
おい!
893774ワット発電中さん:2011/10/26(水) 13:11:54.22 ID:O7sbAyu8
>>890
う〜ん……ちょっとイマイチだな
894774ワット発電中さん:2011/10/27(木) 22:15:16.73 ID:PDEvyLWF
鳥海さんは大したことないよ。
895774ワット発電中さん:2011/10/28(金) 00:53:12.35 ID:qw9+eiQo
なんで?
896774ワット発電中さん:2011/10/28(金) 18:21:11.44 ID:b8caykWj
使えない本書いて絶版になってるし。
897774ワット発電中さん:2011/10/29(土) 03:00:49.70 ID:Amqd1ARC
そうか? 俺、2冊とも持ってるよ。
898774ワット発電中さん:2011/10/29(土) 09:43:33.57 ID:63HXKtE4
漏れは小林さんのファン
899774ワット発電中さん:2011/10/29(土) 11:59:02.81 ID:aF8M7fSj
小林芳直さんかな。あの人いいよね。
ステートマシンのことは、あの人の本で知った。
900774ワット発電中さん:2011/10/29(土) 19:44:52.17 ID:1kdbbFcL
CDのE-LARNINGはすばらしい。まじで
901774ワット発電中さん:2011/10/30(日) 01:01:36.32 ID:EgkUxFzC
>>900
LARNINGじゃなくて、learningね。
902774ワット発電中さん:2011/10/31(月) 12:50:59.82 ID:TNpp3/Im
> >899
小林優じゃね?
あの人の本嫌いだがw
903109:2011/10/31(月) 13:16:25.93 ID:4hSVA4fT
俺は、枝さんの本が好きだ。
904774ワット発電中さん:2011/10/31(月) 19:33:27.17 ID:Hbes3K1b
定本なんちゃらは良いな
905774ワット発電中さん:2011/10/31(月) 19:46:13.35 ID:+f1+OzC4
カルノー図を使った論理の簡単化なんてのがあったけど、HDLで回路を書くのに
あれはいまでも必要かな?
906774ワット発電中さん:2011/10/31(月) 23:02:41.69 ID:jGibaswK
CPU作るときは16×16で簡単化しました
907774ワット発電中さん:2011/11/01(火) 01:43:00.66 ID:CBHbNvGY
論理合成に任せちゃってる
908774ワット発電中さん:2011/11/01(火) 02:18:26.99 ID:NUHg2O1K
電卓があったって筆算くらいできなきゃダメだろ。
で、何、カルノー図?、何それうまいの?
909774ワット発電中さん:2011/11/01(火) 07:50:54.78 ID:40BhPbkz
自分で簡素化すると合成がうまくいかないって聞いたことあるから、自分もすべて任せちゃってるなぁ
910774ワット発電中さん:2011/11/01(火) 07:56:09.03 ID:ss5Wzhd+
>>907
論理合成に状態割り当てもまかせたい。
911774ワット発電中さん:2011/11/01(火) 08:56:00.32 ID:EFtXa8GA
最近は合成エンジンが優秀だからなぁ。
できるだけ任せてるよ。
こっちは可読性重視で書いてる。
912774ワット発電中さん:2011/11/01(火) 10:05:42.64 ID:Fsl8QhPY
でもま、パッと見でわかるような場合は簡略化しといた方が良いしな。
多少は論理圧縮を筆算でやる練習も意味はある。

状態数64とかから40箇所ぐらい〜とかだとメンドイっすw
と手抜きをすると、予定したCPLDにフィットしね〜とかなるしwwww
913774ワット発電中さん:2011/11/01(火) 13:05:58.71 ID:3eZS+Boy
手動簡略化とかオナニーだよな
完全に可読性消えて意図がわからなくなる
デバッグとか改造とか無理っす
914774ワット発電中さん:2011/11/01(火) 13:20:25.30 ID:Fsl8QhPY
>>913
簡略化して消える様な項なんて、要するに最初から不必要な条件だった訳だから
ソース的には見やすくなる場合も多いと思うけど…。
915774ワット発電中さん:2011/11/01(火) 13:22:42.36 ID:EICz27+7
アホだなあ。
コメントで、何をどのようにしたか書いておくだけじゃん
916774ワット発電中さん:2011/11/01(火) 15:01:06.54 ID:o/3h5h8S
>>908
今はコンパイラの進歩のため、論理回路の基礎でカルノー図は出てこないのかな?
それともただ基礎がないだけなのかな?
917774ワット発電中さん:2011/11/01(火) 15:11:35.71 ID:plcvrbgK
基礎がないに一票
プログラマなのに2進数とかできないのいるから、ハードもそんな感じになってると勝手に想像
918774ワット発電中さん:2011/11/01(火) 15:25:58.31 ID:FARqnd88
>>917
>2進数とかできないのいるから

2進数ができるってどういうことかな?
四則演算が10進数並にできるとか、8bitなら暗算するとか?
919774ワット発電中さん:2011/11/01(火) 16:54:56.07 ID:oGy+C0za
小数部も込みで2進変換とか
920774ワット発電中さん:2011/11/01(火) 17:44:12.37 ID:ZjVr0maB
>>918
>四則演算が10進数並にできるとか、8bitなら暗算するとか?
最低でもそれぐらい出来ないと、できるって言わないよな。
10111.000111 / 11110011.0011001 = ?
これぐらいは楽に出来ないとできるって言わないだろな
921774ワット発電中さん:2011/11/01(火) 19:00:38.79 ID:FARqnd88
それができる事がプログラマの条件なんですね、判ります。」
922774ワット発電中さん:2011/11/01(火) 19:18:43.98 ID:vfgKD3MT
基礎は基礎

人力でバグを入れ込むことなくカルノー図による簡単化をやれるのは
6入力か5入力ぐらいまでだろ

ハザード対策とか隣接テーマもあるからやるべきとは思うけど
923774ワット発電中さん:2011/11/02(水) 18:27:04.82 ID:PyhEchF8
暗算って言っても脳内で
2進10進変換→10進出で計算→10進2進変換するだけだよな
結局変換作業しかやってねえ
924774ワット発電中さん:2011/11/02(水) 18:53:23.60 ID:Rw6ZQdaz
えっー、バレルシフターぐらい実装してないの?
925774ワット発電中さん:2011/11/02(水) 20:32:14.16 ID:X6sseZVH
1 1 が 1、1 2 が 2、1 3 が 3・・・・1 a が a、1 b が b、・・・・1 f が f
1 1 が 2、2 2 が 4、2 3 が 6・・・・2 a が 14、2 b が 16、・・・・2 f が 1e
3 1 が 3、3 2 が 6、3 3 が 9・・・・3 a が 1e、3 b が 21、・・・・3 f が





926774ワット発電中さん:2011/11/02(水) 20:40:10.45 ID:VlRxEPBO
九九ならぬFF
927774ワット発電中さん:2011/11/02(水) 20:49:47.50 ID:Rw6ZQdaz
>>925
ヲ〜イ、バグってるぞぉ!
928774ワット発電中さん:2011/11/02(水) 22:14:40.77 ID:X6sseZVH
2 2 が 2 だった。すみません。
インドだったか、韓国の人は、2桁の掛け算を全部暗記するんだよね。凄いわ。
929774ワット発電中さん:2011/11/03(木) 00:41:48.38 ID:CaLgOUSO
すげぇな・・・
930774ワット発電中さん:2011/11/03(木) 09:05:04.74 ID:6d858VwQ
ぐぐった。ウィキペディアより

「インドでは二桁の九九が学ばれているが、地域や学校によって差があり、
最低でも1×1〜20×20、最高では1×1〜99×99まで学ぶ。インドの影響を受け、
中国や韓国でも二桁の九九(1×1〜20×20)はブームとなった。」

すぐ真似する中国韓国もすごいw
931774ワット発電中さん:2011/11/03(木) 09:37:41.75 ID:aXwBNccu
九九なんて使う機会が全く無いな
電子マネー決済で俺の中の演算機能は小1レベルまで退化したぞ
932774ワット発電中さん:2011/11/03(木) 10:18:40.29 ID:CaLgOUSO
>>931
あるあるw
スマフォに変えてお財布機能を失ったわけだが、
お釣りの硬貨数を最小化する暗算はけっこう楽しいことを再確認したw
933774ワット発電中さん:2011/11/03(木) 13:10:02.46 ID:8OH3Gu17
あれって暗算いらないだろ。

まずあらゆる貨幣が使えるとして最適な組み合わせを求めたうえで、
足りない分の貨幣を順次大きいものに変えてくだけじゃん。
934774ワット発電中さん:2011/11/03(木) 14:26:32.64 ID:hfGuLWRC
105円のもの買って1000円札と5円出すとかそんな感じか?
935932:2011/11/03(木) 14:47:24.16 ID:CaLgOUSO
>>933
>>934
そうそう、それだけではあるんだけど、
一応合ってるか引き算して確認したりして、お釣りが返ってくるまでの暇つぶしにしてるんだ。
936774ワット発電中さん:2011/11/03(木) 15:20:44.07 ID:aXwBNccu
コンビニレジで2380円になります、
って言われてから万札出しながら”肉まん2つ下さい”って言うと
加算されない事が多いなw
937774ワット発電中さん:2011/11/03(木) 15:21:08.10 ID:4FNj4vaz
財布の硬貨を最小枚数にする方が難しい。
938774ワット発電中さん:2011/11/03(木) 15:34:05.45 ID:CaLgOUSO
>>937
自分もそれ気にしてるw
財布内硬貨最小化の原則とか勝手に呼んでるw
939774ワット発電中さん:2011/11/03(木) 15:47:29.99 ID:s4bse4jj
Verilogの初心者講習会を12月11日(日)にやります。初心者の方で
興味のある方はぜひご参加ください。
http://atnd.org/events/21474
940774ワット発電中さん:2011/11/03(木) 17:14:01.98 ID:hfGuLWRC
>>937
一円五円は募金箱行きですが、なにか?
941774ワット発電中さん:2011/11/03(木) 17:14:45.08 ID:c4Ki0eqO
電子マネー使え
942774ワット発電中さん:2011/11/04(金) 01:23:56.60 ID:ZMC1OeT0
セルフレジで小銭を全部投入する。最後に札を投入して、つり銭が大量に払いだされる
943774ワット発電中さん:2011/11/04(金) 14:49:41.05 ID:CpO4C/3N
最近は偽造硬貨の換金防止のために
半端な小銭は先にスルーして落とすのも多いんだ
944774ワット発電中さん:2011/11/09(水) 08:59:17.72 ID:0xkfUnFE
おっと、大宮だ。降りるよっ!
945774ワット発電中さん:2011/11/13(日) 19:26:58.46 ID:wJzmOL5x
日本全体でベリロガーは何万人ぐらいいるのだろうか
946774ワット発電中さん:2011/11/13(日) 19:29:31.38 ID:5J24X0o6
だいたい800万人ぐらいじゃないか
947774ワット発電中さん:2011/11/13(日) 19:50:15.58 ID:wuPfIUf1
VHDLerはどれくらいだろう?
948774ワット発電中さん:2011/11/13(日) 19:55:41.35 ID:QUK1UqM/
だいたい8000万人ぐらいじゃないか
949774ワット発電中さん:2011/11/13(日) 22:15:51.39 ID:hJTlfG7M
ヴハドラー
950774ワット発電中さん:2011/11/13(日) 23:26:04.56 ID:37apwf5z
あれっ? Veriloggerは、1億3000万人くらいと聞いたことがあるけど。
951774ワット発電中さん:2011/11/14(月) 00:14:57.34 ID:NqLueDZC
中国人民が混ざってるぞ。
インド人か?
952774ワット発電中さん:2011/11/14(月) 05:18:48.28 ID:FHRBV4Ug
時代はSystemVerilogだろjk
953774ワット発電中さん:2011/11/14(月) 10:22:19.57 ID:JsYkdwxv
ISEでサポートしてないもん
954774ワット発電中さん:2011/11/15(火) 00:46:33.07 ID:67bzIsMp
>>947
銀河標準HDLだからな
だいたい8000兆ぐらいと聞いたが
VHDL8001が策定されると更に利用者が増える
955774ワット発電中さん:2011/11/15(火) 02:23:40.00 ID:bygC66C/
でも今日、近所のスーパーで、奥さんたちが
956774ワット発電中さん:2011/11/15(火) 08:20:16.10 ID:RShYv1SS
「あたしの回路、メタステーブルを起こしてしまいましたのよ〜、
シンクロナイザは欠かせませんわね、おほほ♪」
957774ワット発電中さん:2011/11/15(火) 13:01:04.33 ID:3okZ3cml
「ちょっと、ちょっと奥さん。今日は、SDRAMコントローラの特売日らしいわよ。
 ウチでは、今度ヤマダ電機が名駅にできるので、それまで待ってみようって、主人が」
958774ワット発電中さん:2011/11/15(火) 13:40:15.50 ID:pqxFhCw+
名駅w
959774ワット発電中さん:2011/11/15(火) 14:12:31.26 ID:/vtJ9Wh1
>>957
愛知県民乙
960774ワット発電中さん:2011/11/15(火) 14:55:41.00 ID:3okZ3cml
>>959
たって、すごいんだよ。
名駅〜ビックカメラ間の50m満たない区間で、
ビックカメラ、ヤマダ電機、ソフマップ、3社乗り入れでチラシ配ってる。
961774ワット発電中さん:2011/11/15(火) 14:56:59.76 ID:3okZ3cml
あっ、忘れた。
「〜ざますのよ。おホホホ」
962774ワット発電中さん:2011/11/15(火) 15:11:25.15 ID:/vtJ9Wh1
>>960
悪いな、俺も愛知県民だ。
963774ワット発電中さん:2011/11/15(火) 17:09:29.77 ID:3okZ3cml
やっぱ、名古屋は えーね。
964774ワット発電中さん:2011/11/15(火) 18:50:26.87 ID:KMUaNGYY
名駅って名古屋郷の停車場のこと?
965774ワット発電中さん:2011/11/15(火) 19:06:44.46 ID:Q8wC1QaC
だれか名古屋HDL作ってやれよ
966774ワット発電中さん:2011/11/15(火) 20:56:22.84 ID:nVbcRqgu
Hentai Down Lord
967774ワット発電中さん:2011/11/15(火) 21:35:25.14 ID:QVsEYKaB
各駅だと思って読んでたら名駅だったのか。
968774ワット発電中さん:2011/11/15(火) 21:38:21.48 ID:3okZ3cml
名駅は、地名です。

愛知県名古屋市中村区名駅1-1-4
営業時間 4:50〜00:20
969774ワット発電中さん:2011/11/18(金) 11:51:04.58 ID:UiMT/axh
電波テロ装置の戦争(始)エンジニアさん参加願います公安はサリンオウム信者の子供を40歳まで社会から隔離している
オウム信者が地方で現在も潜伏している
それは新興宗教を配下としている公安の仕事だ
発案で盗聴器を開発したら霊魂が寄って呼ぶ来た
<電波憑依>
スピリチャル全否定なら江原三輪氏、高橋佳子大川隆法氏は、幻聴で強制入院矛盾する日本宗教と精神科
<コードレス盗聴>
2004既に国民20%被害250〜700台数中国工作員3〜7000万円2005ソウルコピー2010ソウルイン医者アカギ絡む<盗聴証拠>
今年5月に日本の警視庁防課は被害者SDカード15分を保持した有る国民に出せ!!<創価幹部>
キタオカ1962年東北生は二十代で2人の女性をレイプ殺害して入信した創価本尊はこれだけで潰せる<<<韓国工作員鸛<<<創価公明党 <テロ装置>>東芝部品)>>ヤクザ<宗教<同和<<公安<<魂複<<官憲>日本終Googl検索
970774ワット発電中さん:2011/11/22(火) 14:09:12.10 ID:FahJ8W30
VHDL初心者です。

Verilog-HDLで

always @(*) begin
end

という記述はVHDLではどうやって記述するのでしょうか?

process(*)
begin

end process

*見たいな横着な書き方はできないのでしょうか?
971970:2011/11/22(火) 14:21:02.98 ID:FahJ8W30
補足するとprocessのセンシティビティリストを全部書きたくないという意図です。
972774ワット発電中さん:2011/11/23(水) 12:17:11.28 ID:KqT1046s
非同期記述をprocess文で書くことが無いので
センシティビティリストはクロックとリセットしか書かないな。
973774ワット発電中さん:2011/11/23(水) 20:43:51.77 ID:00sZmuAE
>>972
同意。

>>970
できない。VHDLは基本的に面倒。
974774ワット発電中さん:2011/11/27(日) 10:06:29.04 ID:4YgVzRXd
bird seaぼりすぎ
975774ワット発電中さん:2011/11/27(日) 14:51:55.69 ID:mG49AKuk
>>974
どのへんが?
976774ワット発電中さん:2011/12/03(土) 17:37:45.11 ID:PW1C3nNJ
人の悪口を書くんじゃないよ
977774ワット発電中さん:2011/12/03(土) 18:00:23.19 ID:vUr71gED
数少ないHDLer同士、仲良くしようZE。
978774ワット発電中さん:2011/12/04(日) 12:27:52.07 ID:op/xYoiK
>>970
糞VHDLなんて辞めてしまえ
979774ワット発電中さん:2011/12/04(日) 13:47:35.13 ID:9nUZA+d6
いつになったらISEでSystemVerilogサポートされるんですか?
980774ワット発電中さん:2011/12/04(日) 14:08:44.49 ID:G4Yf6xbv
具体的にはどんな記述?
シミュレーション?
981774ワット発電中さん:2011/12/04(日) 19:52:37.16 ID:bN2C6fr5
Alteraマンセー
982774ワット発電中さん:2011/12/04(日) 19:57:43.77 ID:T+48aLxP
Xilinxマンセー
983774ワット発電中さん:2011/12/04(日) 20:01:12.94 ID:pcUPtQsu
Latticeマンセー
984774ワット発電中さん:2011/12/05(月) 00:50:53.37 ID:dcVHxTSf
74HCマンドクセー
985774ワット発電中さん:2011/12/05(月) 04:20:42.77 ID:rEu8+3br
おしり洗浄器にも使われてるんだって
986774ワット発電中さん
DIPだとチクチクしそうでやだな