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

このエントリーをはてなブックマークに追加
1パラメタライズ推進委員

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

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

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

 前スレ
  【Verilog】記述言語で論理設計 Project8【VHDL】
    http://science6.2ch.net/test/read.cgi/denki/1233392876/
2パラメタライズ推進委員:2009/10/05(月) 13:31:28 ID:q3gnCkvW

参考情報
  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/
      ※基板が付録で付いている号はバックナンバー希少になりがち
  関連スレ
    【FPGA/CPLDスレ】 XILINX/ALTERA/Lattice/Actel 12@電気・電子
      http://science6.2ch.net/test/read.cgi/denki/1253127442/
    ディジタル・デザイン・テクノロジ 死亡予定?
      http://science6.2ch.net/test/read.cgi/denki/1239321359/
    暇だからVHDLでも書こうかな@プログラム
      http://pc11.2ch.net/test/read.cgi/tech/1043858153/
    フリーのツール(情報追加よろしく!)
      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ワット発電中さん:2009/10/05(月) 18:56:13 ID:4uYxAHsE
おつかれ3
4774ワット発電中さん:2009/10/05(月) 20:41:56 ID:z2EWooR9
 VHDLとかじゃなしに、もうちょっとマシな言語はできんの?
XHDLとかどう? 昔AHDLってのがあったが、あの方がかなりまし
だったね。
5774ワット発電中さん:2009/10/05(月) 20:55:28 ID:SnqMgIHI
>>2に追加
FPGA
 Achronix http://www.achronix.com/
 SiliconBlue http://www.siliconbluetech.com/
6774ワット発電中さん:2009/10/05(月) 21:37:23 ID:B5BAEm4e
>>4
AHDLって型があってないようなデタラメ加減がすげえ楽だったな
7774ワット発電中さん:2009/10/06(火) 10:28:07 ID:AA/3Sp2w
>>1
最近は主婦もHDL書くのか? (笑)
8774ワット発電中さん:2009/10/06(火) 12:15:22 ID:FJ8VnzBU
>>7
結構流行ってるみたいよ。

昨日も、○ピタのサービスカウンターで、お姉さんが説明してたし。

客「チラシに出ていたフリーの開発環境の物が欲しいんですが」
サ「WebPackですね。デバイス限定ですがよろしいですか?」
客「Virtex4なんですが、大丈夫でしょうか?」
サ「はい、LX25までなら大丈夫です。18番の通路の奥、洗剤の隣のコーナーです」
って。驚いた。

そのあと家電売り場に行ったら、これがまたビックリ。
「メーカー推奨 Virtex5, Virtex6開発に必須!! RAM 4GB 2枚セット 本日限り」とか。
9774ワット発電中さん:2009/10/06(火) 12:50:24 ID:7hCejI4d
>>8
たぶんFPGAのやつに4GBもRAMついてたら
論理設計よりOSとか乗っけるレベルだと思う・・・
10774ワット発電中さん:2009/10/06(火) 15:30:48 ID:FJ8VnzBU
結局WinXPでは、頑張っても3GBでしょう?
Xilinxは、Virtex6なら8GB RAMで開発してくれって言ってるみたいだけど。
11774ワット発電中さん:2009/10/06(火) 15:45:42 ID:6eAKkO6R
>10
それって、一番でかいのを設計する時の話だろう。
使用するデバイスが小さくて、使用率も高くなければ3GBでもOKだと思われる。
12774ワット発電中さん:2009/10/06(火) 18:10:31 ID:FJ8VnzBU
そうだと思いますが、Windowsで簡単に使用できないRAM容量を
要求するメーカーっていったい。
しかもV6はまだ出ていないし。V5でさえ使ったことがない→オレ。
13774ワット発電中さん:2009/10/06(火) 19:11:49 ID:S9EisVd5
V5だのS3だのを使ってるのがどれだけいるのやら
14774ワット発電中さん:2009/10/06(火) 19:32:41 ID:jDK/6qxS
>>10
でかいのは、Linuxでやれってことじゃない?
15774ワット発電中さん:2009/10/06(火) 19:35:14 ID:oNwmm1P+
>>12
FPGA以外のデバイス開発環境では、winが少数派だから。。
16774ワット発電中さん:2009/10/06(火) 19:45:01 ID:3QsTGHzr
V6はそれぐらいすごいから、それにあわせたの使えよだろ
だから、もう64bitOSでV6は開発汁ってことだ
あと、俺、V6のでかいのなんかをXiの安いツールでやるってどうかなって思うんだよな。
このクラスの開発ツールとなると数百万ぐらい出さんと、カリカリに開発できないんじゃね
64bitOS+DC ultraクラス+最大搭載可能RAM、こんな感じじゃねか
おまえらは、10万ゲート程度にあわせた開発環境を1000万ゲート規模の開発に十分使えるって思ってるのか?
17774ワット発電中さん:2009/10/06(火) 20:12:43 ID:7Zl06xuW
RAM3GB以上じゃないと合成できないような、でかいV6って個人で買える値段なの?
18774ワット発電中さん:2009/10/06(火) 20:25:09 ID:PWuB9OMr
個人といっても様々だし、けど確実に言えるのは
V6の値段>>>64bit環境の値段
19774ワット発電中さん:2009/10/06(火) 20:46:57 ID:6eAKkO6R
>18
つまり普通の個人じゃ買えないって事だな。
ICだけ買っても基板に実装しないと使えないからな。

>>17
合成できないって事じゃなくて、メモリスワップがおきまくるので時間が掛かるからダメって事だろうな。
20774ワット発電中さん:2009/10/06(火) 20:47:20 ID:FJ8VnzBU
V6のスゴイのって、over 100万なんでしょ。
21774ワット発電中さん:2009/10/06(火) 20:49:40 ID:iKOi0rB0
DC に Xilinx のライブラリあるの?
DC FPGA ってのが昔あったけどね。

64bit で最大搭載可能 RAM ってのも
エクサバイトだか、ゼタバイトだか想像もつかんな。
22774ワット発電中さん:2009/10/06(火) 21:31:10 ID:4/PHi518
まあSynopsysはSynplicity買収してるから、
FPGAカテゴリはSynplifyへ統合なんでしょうね
23774ワット発電中さん:2009/10/06(火) 22:02:32 ID:NH9J3U83
>3のASICのベンダーツールのライセンス料っていくらぐらいするものなの?
cadenceのRTLcompilerとかって年数千万とかなんとからしいけど・・・
24774ワット発電中さん:2009/10/06(火) 23:24:28 ID:DENHdXrr
>>22
Synplify は合成だけで、配置配線は結局 ISE なんだよなぁ。
何というか、中途半端 orz

>>16
1000万ゲートを一気に合成するのか、おまいは?w
25774ワット発電中さん:2009/10/06(火) 23:26:30 ID:djT87RGR
>>17
スワップで時間がかかって現実的ではないのではなく
合成やら配置配線やらで使用メモリが2G(ユーザーメモリの最大値)超えて落ちる
まぁこのへんはISEのつくりがおかしいとはおもうがw
26>>22:2009/10/07(水) 00:35:30 ID:EvSiLHxV
>>24
まあ、そうかも知れない
(オイラ今までAオンリーなんで今のところISEを知らないし、Q2に満足してたりする)

そういやAmprifyだかという配置までやるのあった気もする。
配線/STAまでやるかは忘れたw
その後SynplifyPremierに化けたんだっけなあ?
それなら全部出来たりするのかも。
27774ワット発電中さん:2009/10/07(水) 00:44:27 ID:LpyQkT6w
>>25
でかいのを32bitOSでやろうとしている自分自体がどうかしていると思うんだ

てか、クラウド時代の今、自前のPCだけでやろうなんてのも時代遅れだがな
遠くで連携する超高性能計算機群にやらせても良いじゃないか。Gbネットが普通なんだから
もう、手元PC扱う感覚だ。アル、財もそうだがメリケンの大手ベンダはクラウドよる開発サービス提供が
主流でソフトライセンス提供なんて後進国向けだけらしい。自前のハード用意して、それに、ソフト入れて
やる20世紀の古典開発スタイルやっている会社、いまや、ほとんどないだろ。
ソフト、ハード、ネットワークがもすごい勢いで進化しているのに、自前でソフト、それようPCを導入して
て使っているって....
28774ワット発電中さん:2009/10/07(水) 00:58:05 ID:JAhAkPLi
>>27
計算機環境がクラウドになっただけで、大昔の“ベンダさんにお任せ”に回帰してるような気が.
リモートで作業できる点は大進歩なんだけどさ。
29774ワット発電中さん:2009/10/07(水) 01:08:50 ID:EvSiLHxV
クラウドって知らない他人に金玉握らせてるみたいで気持ち悪い気もする。
ギュッってされたらあぼーんしそう。
30774ワット発電中さん:2009/10/07(水) 01:19:22 ID:WdL+ZNgm
>>29
むしろ“誰も握っていてくれない”のがヤバいような。
プロジェクト自体が雲の中なのにサービスにトラブルがあった時に
ちゃんと復旧できるんだろうか?

アマゾンの例もあるし......
31774ワット発電中さん:2009/10/07(水) 03:33:18 ID:ujSFbgdV
アマゾン??
32774ワット発電中さん:2009/10/07(水) 07:04:13 ID:wHPcDYZ+
クラウドまでは行かないけど、LSFとか使用して開発している。
合成とかそんなメモリ食わないけど、レイアウトみたいな
フィジカルとかは普通に64GBとかもスワップしたりする。
33774ワット発電中さん:2009/10/07(水) 08:24:59 ID:0Vw8OiDl
Web 上で合成してくれるやつがなかったけ?
RTL アップロードすると合成結果を返してくれるやつ。
さすがに仕事使うのは憚られたけど。
34774ワット発電中さん:2009/10/07(水) 10:06:47 ID:Jsk+2E9p
35774ワット発電中さん:2009/10/07(水) 21:09:55 ID:aeeoh5DO
>>34
ありがとう
36774ワット発電中さん:2009/10/07(水) 22:16:45 ID:AZdtKRRk
送信されたデータは、当社の各種サービス提供のため、関連企業に提供されることがあります。
と、サイトのすみっこにコッソリ書いてある気がして怖いw
37774ワット発電中さん:2009/10/07(水) 22:33:48 ID:AFBJS0hJ
>>36
いつの間にか無償提供ライブラリに当社製品が!(w
38774ワット発電中さん:2009/10/08(木) 09:56:16 ID:adICBKI/
お前ら、台風どうしてる
電車止まっているから家にまだいる。午前中休みだな
台風様様だな
39774ワット発電中さん:2009/10/08(木) 17:21:54 ID:z7q8E3rZ
自分の居場所くらい書いていけ
40774ワット発電中さん:2009/10/09(金) 00:59:35 ID:2jnOwH06
>>7
> >>1
> 最近は主婦もHDL書くのか? (笑)

さいきん、HDLの値が増えて悩んでいる主婦が多いってな。マジリアルで。
41774ワット発電中さん:2009/10/09(金) 01:17:48 ID:NfueaJLl
悩むのはいいがHDL書くのか?
42774ワット発電中さん:2009/10/09(金) 03:13:07 ID:tvHJdjff
HDL欠くのが良くなくて、
LDL多いのがヤバイんじゃないかな???
43774ワット発電中さん:2009/10/09(金) 07:36:53 ID:HJkN6pjv
LDL 高め 尿酸値高め ウエスト90cm
どうみてもメタボです、ありがとうございました。
44774ワット発電中さん:2009/10/09(金) 16:37:14 ID:Cu38Ic+h
>>43
本当にありがとうございました、来世でまた☆

去年の夏、尿酸値12、中性脂肪400以上、GOT/GPTいずれも400付近という脂肪肝
体重93KG(身長165)というSPECでしたが、
医者に、10年後に慢性肝炎、10年後に肝硬変、10年後に肝ガンで死ぬよ って言われて
悟った32歳

今全て正常化(体重66)

デスクワークばっかりだと、こうなりがちだね
やせたほうがいいよ
45774ワット発電中さん:2009/10/09(金) 19:30:46 ID:jtKbFN3a
> 医者に、10年後に慢性肝炎、10年後に肝硬変、10年後に肝ガンで死ぬよ って言われて
それ、ヤブ医者。
3年後にまず通風。
46774ワット発電中さん:2009/10/09(金) 20:36:33 ID:rFG5L+NY
>>45
ああ、尿管結石は既に2回済みw
通風はナゼかやってない
10年くらいは尿酸値8以上10付近だったのに???
47くり:2009/10/10(土) 10:56:43 ID:rrUTUW21
>>45, >>46

通風? 痛風のこと? だとしたら「通風」の当て字は意味からして間違い。

>通風はナゼかやってない 10年くらいは尿酸値8以上10付近だったのに???

高尿酸血症が必ずしも痛風の発症につながる訳ではないらしい。

ttp://ja.wikipedia.org/wiki/%E7%97%9B%E9%A2%A8

日本の医者は、すぐ「痛風になるぞ」って脅すけど。
48774ワット発電中さん:2009/10/10(土) 18:46:15 ID:IJiAAIJy
つながる訳ではない、の裏には、つながるリスクは異常に高まっている、がある。
正常範囲は≦7


俺は大体8前後w
49774ワット発電中さん:2009/10/11(日) 00:51:20 ID:31saDQT0
なぜこんな流れに…?
50774ワット発電中さん:2009/10/11(日) 00:55:40 ID:egGBo74Z
【HDL】記述言語で体調管理 【LDL】
51くり:2009/10/11(日) 00:57:44 ID:hx+vOv4b
>>49
>なぜこんな流れに…?

 さぁ・・・?
52774ワット発電中さん:2009/10/11(日) 01:11:09 ID:Z0qTqyjL
>>49
高齢化の波じゃないでしょうか?w
53774ワット発電中さん:2009/10/11(日) 01:51:56 ID:6Af0laWF
VHDLを用いた講義の課題で以下のようなものが出されたのですが、お力をお貸しください。

http://koideai.com/up/src/up29100.jpg

この課題では、MIL記号を用いて論理設計すればいいだけなので、スレ違いかもしれませんが…よろしくお願いします。
54774ワット発電中さん:2009/10/11(日) 02:25:14 ID:b0beNW+w
>>50
ワrタ
55774ワット発電中さん:2009/10/11(日) 12:55:14 ID:jFfER0gl
>>53
このスレは【HDL】記述言語で体調管理 【LDL】になりました。
スレ違いです。
56774ワット発電中さん:2009/10/11(日) 17:52:59 ID:mq5o449V
>>55
こらこらwww
57774ワット発電中さん:2009/10/11(日) 20:35:14 ID:jP1B6XhG
>>53
画像が見えないぞ
エッチサイトへの誘導か?
58774ワット発電中さん:2009/10/11(日) 22:06:21 ID:8RTvJ4zB
59774ワット発電中さん:2009/10/11(日) 22:13:39 ID:O2Gbz/qq
60774ワット発電中さん:2009/10/11(日) 22:18:21 ID:xlleGm20
61774ワット発電中さん:2009/10/11(日) 22:25:46 ID:CQc+sWDt
>>59
ちなみに、貴方は大学生ですか?
62774ワット発電中さん:2009/10/11(日) 22:50:36 ID:8RTvJ4zB
二進カウンタとキャリーでぐぐればいくらでも答えが転がってるが 学生なら自分でやった方がいいよ
63774ワット発電中さん:2009/10/12(月) 10:22:41 ID:BPB5JDaU
>>59
あのなぁ、「答えを教えてくれ」じゅなくてさ、
自分なりに書いて、「どうですか?」っていうスタイルくらい取れないの?
64774ワット発電中さん:2009/10/12(月) 10:26:36 ID:2EmZQ3Vc
うるせえ
カスのくせに説教すんな
65774ワット発電中さん:2009/10/12(月) 13:36:47 ID:9Y9mRo3b
うるせえ
本人じゃないくせにレスすんな
66774ワット発電中さん:2009/10/12(月) 14:14:35 ID:wSgStJvS
そうそう 俺も別人にやられたことがある。
質問書きこんだら5分後に「解決しました」とかいって。
「よかったね」って、それで尾張。しょぼん。
67 ◆R/xRQM4zu. :2009/10/12(月) 19:42:16 ID:qThcjriI
トリつけて質問すれば?
6859:2009/10/12(月) 20:17:58 ID:oMJOa1My
自分で考える気なんてハナからねぇーよ
6959:2009/10/12(月) 20:18:51 ID:cgopNy4R
だな
7059:2009/10/12(月) 20:19:53 ID:L+E+VF1E
モレ漏れも
71774ワット発電中さん:2009/10/12(月) 23:34:31 ID:WJA7QMSN
釣りじゃなくて真面目にわかんないんだろうか・・・
だとすれば向いてないと思う。この方面。
72774ワット発電中さん:2009/10/13(火) 08:29:23 ID:HDBwHBNF
向き不向き以前の問題。
やる気ないんだから、社会人になっても
使えない→退職→ニートの道まっしぐら。
73774ワット発電中さん:2009/10/13(火) 14:05:05 ID:EBrYU5mc
ヤル気が無いけど卒業はしたいのか
だから2chに聞きに来るのか
2ch卒業証書くれてやろうか つ□
74774ワット発電中さん:2009/10/15(木) 03:26:38 ID:j2YBc7f4
Verilogで、教えてください。

以下の信号線は、その右のような呼び方て良いでしょうか?

wire [15:0] w15;  ベクターワイヤ
wire    w1;  スケーラーワイヤ
reg [15:0] r15;  ベクターレジ
reg     r1;  スケーラーレジ

75774ワット発電中さん:2009/10/15(木) 09:40:12 ID:/w/h9Q7C
reg 宣言しても、FFに決まるわけではないから、
信号線の名前は名前だけでよいと思うが。
76774ワット発電中さん:2009/10/15(木) 10:06:32 ID:1gJi8flR
スケベーオヤジ
77774ワット発電中さん:2009/10/15(木) 11:56:43 ID:HrkUsVjd
53でふと思ったが、HDLで書くのは
論理設計(も書けるけど)じゃなくて
機能設計だっけか?
78774ワット発電中さん:2009/10/15(木) 14:11:01 ID:vo90rKH0
>>75
ありがとうございます。せっかくなのですが、信号名の件ではなくて、
wire [幅] xxxx → これをベクターワイヤという呼び方は正しいでしょうか?という質問でした。
言葉足らずですみません。言い方を変えますと、
複数本のことをベクタ、1本のことをスカラ、という言葉は適当かどうか?というとです。

あと、1つ教えてください。
「reg 宣言しても、FFに決まるわけではないから、 」というお話ですが、
どのようなケースでしょうか。私はregと来たらFFが配置される、と思っています。

宜しくお願いします。
79774ワット発電中さん:2009/10/15(木) 14:13:48 ID:AsTfdtl4
適切
always文で組み合わせ回路を作る場合
80774ワット発電中さん:2009/10/15(木) 14:20:28 ID:vo90rKH0
>>79
ありがとうございます。安心できました。

>always文で組み合わせ回路を作る場合
ということは「ベクタ=複数線、スカラ=単線」というのは、
常時OKな表現ではないということでしょうか?

よろしければ教えてください。
81774ワット発電中さん:2009/10/15(木) 15:15:44 ID:1ykhYKXM
デジタル集積回路とかハードウェア記述言語の文脈において常時OK
テストベクタって言葉を聞いたことがないかい?
82774ワット発電中さん:2009/10/15(木) 15:20:03 ID:vo90rKH0
>>81
聞いたことあります。
意味はわかりませんが、予想するにテスト用のデータで、
あの信号、この信号、その信号と、複数種類もあるので、「ベクタ」でしょうか。
83774ワット発電中さん:2009/10/15(木) 16:06:36 ID:1gJi8flR
>>79 は、「always で組み合わせ回路を作ると
FF が出来ないよ」と言っていると思う。


register という表現が混乱を生じるから
Verilog 2001 からは、variable と呼んでいる。

あと、“ベクター”という表現は普段使わないなぁ。
使うとしても net に対してだと思う。

“5ビットのレジスター”とか言えばすむ話じゃね?
“8ビットバス”とか。

とりあえず、IEEE1364-2001 を読め。
84774ワット発電中さん:2009/10/15(木) 16:25:36 ID:vo90rKH0
>>83
ありがとうございました。
よくわかりました。
ISEのエラーメッセージでは、平気で vector  scaler と言ってくるので、
知識として知っておきたいと思い、質問しました。

resisterは、置数器、数字を記憶する、という意味であれば、
特に混乱はしないかな?なんて思いますが。
variableというのも、言い得ていていいですね。ズバリ「変数」ですね。
vector, scalarよりも親しみが持てます。

ありがとうございました。
85774ワット発電中さん:2009/10/15(木) 20:03:28 ID:nKFFn5Yd
always@(a, b)
c = a & b;

このときcはreg宣言だけど果たしてFFになりますでしょうか?
86774ワット発電中さん:2009/10/15(木) 21:48:42 ID:/9UEsysT
>>85
なあ、DFFって知ってる?
87774ワット発電中さん:2009/10/15(木) 23:57:48 ID:ijQrCvqQ
>>85
お前、前スレから簡単な質問をして、それを何回も説明して
もらっても理解できなかったやつだろ。
簡単な質問をするなとは言わないが、教えてもらっているのに
同じ事を何回も聞くな。

どのような記述がFFになるかは、教科書や論理合成ツールの
マニュアルを読んで自分で調べろ。
それ以外の記述はregで宣言してあろうともFFにはならない。
88774ワット発電中さん:2009/10/16(金) 01:22:06 ID:wiXUNLhs
合成してFloorplan Editorとかで中を見れば早いんじゃないの?
89774ワット発電中さん:2009/10/16(金) 12:22:50 ID:lFv/IGS/
上げ
90774ワット発電中さん:2009/10/16(金) 19:27:29 ID:7PM+022t
>>85は>78のレスジャマイカ?
91774ワット発電中さん:2009/10/17(土) 17:42:02 ID:bMoNWqE8
何で、レジになるかどうかで悩まんならんのだ? わかるか?
あほな言語つかうなよ。www
楽な言語で、定義が明確なのがあるだろ。 50年も前の糞言語、使う奴の
気がしれん。
92774ワット発電中さん:2009/10/17(土) 18:10:43 ID:fLSkBiwl
>>91
なんで、草はやしてんの?馬鹿なの?死ぬの?
93774ワット発電中さん:2009/10/17(土) 18:11:23 ID:aFvwGpjR
>>91
日本語でお願いします。
94774ワット発電中さん:2009/10/17(土) 18:16:30 ID:oTXrbt39
>>93
何を言いたいんだ?
日本語で挨拶お願いしますとお願いしているのか?
低脳の日本語は肝心なところがないからな、意味不明だよな
95774ワット発電中さん:2009/10/17(土) 18:18:17 ID:TuflYnF9
>>92
「馬鹿なの?死ぬの?」はねえだろ
何年遅れてんだよ。
96774ワット発電中さん:2009/10/17(土) 18:39:15 ID:YhPiZ4gU
自演乙
97774ワット発電中さん:2009/10/17(土) 18:53:53 ID:G4nXSwuO
IDこそ違え、自演そのものって感じだなw
98774ワット発電中さん:2009/10/17(土) 19:55:45 ID:7d2Z9IML
>>91
>>50年も前の糞言語
って何?
99774ワット発電中さん:2009/10/17(土) 21:44:58 ID:6yiufRRD
>>98
その疑問、オイラもw ナニソレ?
100774ワット発電中さん:2009/10/17(土) 22:51:30 ID:udidUm6c
自分も知りたい。
50年も前の言語って、FORTRANかCOBOLくらいしか知らないのだけど
このスレでの発言だから当然HDLの事だよねw
101774ワット発電中さん:2009/10/18(日) 22:34:43 ID:i+qQ3URf
お前らはどう>>91を解釈してレスしてるんだ
俺的には
50年前からほとんど進化していない糞言語を使うからregとか悩むんだ
俺が現役の50年前は半導体、真空管が超貴重部品で使えなくてメカニカルリレーが使われてた時代でな、
その当時もブール代数的表記のc = a & bで論理設計(各社各様の社内論理設計表記「言語」で)をしていたんだよ。
で、ブール代数に記憶素の表記ないから記憶どうするで悩んだよ
だから、これは記憶素ニダと注記してた。それに毛が生えたような言語を50年後でも使うからそういうことになるんだ。

俺的には、お前らと違って"楽な言語で、定義が明確なのがあるだろ"を知りたいんだがな
なんで、お前らは50年も前の糞言語 に反応したん? そのほうが有用情報の可能性あると思ったのか?

ついでに解釈
レジになるかどうかで悩まんならんのだ <= 必要性疑問提示
わかるか <= 悩む必要理由理解してる?
あほな言語つかうなよ <= これが>>91の結論、その言語はアホで使用すべきでないと(詳細不明)
楽な言語で、定義が明確なのがあるだろ <= アホ言語より良いのあらしい。キーワードは定義が明確
50年も前の糞言語、使う奴の 気がしれん。 <= 50年前の糞言語を未だに使っているんだ(俺解釈嫁)!頭大丈夫?

短い文で詳細不明だが、>>91は当然補完できるとレスしたんだろ。
無理ならその程度の脳力ってことだな
今日、俺暇だった
102774ワット発電中さん:2009/10/18(日) 22:36:34 ID:I4+epuF+
>91乙
103774ワット発電中さん:2009/10/18(日) 23:24:10 ID:G/eC5WGE
発狂すんなよ
104774ワット発電中さん:2009/10/18(日) 23:25:46 ID:i9D3/Swy
なんだかまた面倒くさいのが湧いてるなあ
105774ワット発電中さん:2009/10/18(日) 23:45:05 ID:UKZ3Kls3
50年前現役って・・・少なくとも70代か。
すごくじじいだな
106774ワット発電中さん:2009/10/18(日) 23:51:25 ID:eM7jCYzp
>>101
よく「お前の話はただ長くて言いたいことがわからない」って言われない?
107774ワット発電中さん:2009/10/19(月) 00:19:10 ID:Q5KI4T36
>定年すると毎日が日曜日

まで読んだ
108774ワット発電中さん:2009/10/19(月) 01:03:20 ID:YnN3Knmg
reg c;
always@(a, b)
c = a & b;
cがwireで駄目な理由わからんのだが
regでなければいけない理由って何?
109774ワット発電中さん:2009/10/19(月) 01:11:48 ID:2wNTfYkM
そう言う言語なのだから仕方ない。
嫌ならVHDLでもどうぞ
110774ワット発電中さん:2009/10/19(月) 12:02:18 ID:scjdNsxY
regにはclockが使われていないと
奥歯にゴミが詰まったような不快感が・・・
111774ワット発電中さん:2009/10/19(月) 15:09:02 ID:isSpaoOP
wire c;

assign c = a & b ;

ではだめなの?
112774ワット発電中さん:2009/10/19(月) 20:32:59 ID:scjdNsxY
質問なんだけど、RTLの書き始めのコメント(ヘッダ?)には何を書いてる?
なんか書くときに毎回迷う・・・きめりゃいいんだろうけど。

モジュール名
モジュールの説明
作った人
日付
更新履歴

だいたいの階層とかいるの?
113774ワット発電中さん:2009/10/19(月) 20:36:57 ID:PBfTL5AA
昨日の晩ご飯でも書いておけ
114774ワット発電中さん:2009/10/19(月) 20:40:05 ID:GfDuEk80
客「HDLわからんから、回路図でくれ」(タダで)


うぜー
115774ワット発電中さん:2009/10/19(月) 22:05:44 ID:k0lh+enB
>>114
あるある、そういうの。
以前、HDLが分からないという客向けに、
同じ機能の回路を大量に作る羽目になったときには、
正直言って参った。
116774ワット発電中さん:2009/10/19(月) 23:00:42 ID:Q5KI4T36
>>112
参考にしたこのスレのURLとレス番も忘れずにな
117112:2009/10/20(火) 11:38:05 ID:XAzMOomh
>>113
プロジェクト名につけよう!って一瞬出ましたよ。
tonkotu_riceプロジェクト

>>114,115
HDLではまだないけどSPICEの方で・・・

>>116
ここで・・・ありましたっけ?
Project7ぐらいからちらほら来てましたけど

ググってもでないんすよね
118113:2009/10/20(火) 23:33:56 ID:SZz3u47Y
>>117
一瞬でも出たのか・・・つか豚骨ライスって何だ?

あとマジレスだけどemacsのvhdl lispだと>112と同じものぐらいしか書かないかな。
コメントだしあんまり長々と書いてもしょうがないかなと。
過去スレにコメントに何故変更したかを細々と書くといった人も居ましたが。
119112:2009/10/21(水) 12:19:32 ID:9rzjGtMt
>>118
後は経験だけですね。
どうもありがとうございました。

そろそろ名無しに、と

あと>>59の?課題も終わっただろうし
適当に作りたいのですが画像が見れませんね。
120774ワット発電中さん:2009/10/23(金) 17:20:07 ID:33OQ8Tg6
ISE早くマルチコアに最適化してくれよ
現状はCore i7のTurbo Boostが効く分かりやすい例だけどさw
121774ワット発電中さん:2009/10/24(土) 03:22:08 ID:CQ2iaBsJ
>現状はCore i7のTurbo Boostが効く分かりやすい例だけどさw

詳しく!
i7マシン買ったけどあんま速くならなくて…
122774ワット発電中さん:2009/10/25(日) 19:54:26 ID:bQZ1GiZr

教えてください。
以前このスレで、Verilogで合成の場合のfor()は、記述の簡略化だと書かれていました。
今、ADの値を移動平均を出そうとしています。

しかしその個数が128個と多いので、僕の知っている知識で書くと、
dat[127] <= dat[126];
dat[126] <= dat[125];
  (延々と続く)
dat[2] <= dat[1];
dat[1] <= dat[0];
dat[0] <= new_data;   そして引き続き、

sum = dat[0] + dat[1] + dat[2] + dat[3] + ・・・・・・
   dat[10] + dat[11] + dat[12] + dat[13] + ・・・・・・
   dat[20] + dat[21] + dat[22] + dat[23] + ・・・・・・
   dat[30] + dat[31] + dat[32] + dat[33] + ・・・・・・
      延々と続く
   dat[120] + dat[12] + ・・・・ + dat[126] + new_data;
と書くしかないのですが、

こういうときに、for()を使ってスマートに書ける、と考えれば良いでしょうか?
また、移動平均自身の、もっとスマートな書き方があれば、教えて頂けないでしょうか。
FPGAはスパータン3です。
123774ワット発電中さん:2009/10/25(日) 20:23:36 ID:ou6Vdi6f
俺ならアキュムレータ使う
124774ワット発電中さん:2009/10/25(日) 21:28:49 ID:vrL39I0s
悪夢霊多
125774ワット発電中さん:2009/10/25(日) 22:00:00 ID:bQZ1GiZr
ありがとうございます。
アキュームレータを調べてみましたが、よくわかりませんでした。
アキュームレータと聞くと、マイコンのcpuのワークレジスタを思ってしまいます。

for()で、それっぽく書いているのを見つけましたので、それで一度やってみます。
ありがとうございました。
126774ワット発電中さん:2009/10/25(日) 22:04:42 ID:id2Er8t9
CPU用のプログラムじゃないんだから・・・
それだけの並列処理加算回路をロジックで生成するつもり?
まぁ、生成できるなら止めはしないけど・・
127774ワット発電中さん:2009/10/25(日) 22:04:52 ID:ou6Vdi6f
それであってるし FIRフィルタとかで調べたらなんぼでも出て来るだろ
128774ワット発電中さん:2009/10/25(日) 23:04:44 ID:9M6rZjyI
>>122の場合、CoreGenでFIRが生成できるなら、
タップ係数が全て1で128段のFIRを生成するのが手っ取り早いと思う。
129774ワット発電中さん:2009/10/26(月) 01:38:07 ID:PVzUXh1g
>>122
せめて、
dat[127:0] <= { dat[126:0], new_data };
これで。
130774ワット発電中さん:2009/10/26(月) 06:04:42 ID:vK9OqmOU
>>122
sum <= sum - dat[127] + new_data;
差分だけ計算すりゃいいじゃん
書き方の問題だけじゃなくて、アルゴリズムを検討すれば。
131774ワット発電中さん:2009/10/26(月) 12:57:05 ID:+N8fvSvg
>>129
1ビットかよ!
132774ワット発電中さん:2009/10/26(月) 15:36:52 ID:l01LTbb0
ADの値はどうくるんだろうか?
133774ワット発電中さん:2009/10/26(月) 22:46:13 ID:kNILTLqQ
1ビットオーディオってやつか・・・
134774ワット発電中さん:2009/10/27(火) 00:41:16 ID:e9XQIBf4
>>131
2次元配列じゃないの?
135774ワット発電中さん:2009/10/27(火) 10:36:05 ID:+mV2niQ6
127:0 <= 126:0
どうみても1bitです。
136774ワット発電中さん:2009/10/28(水) 22:16:58 ID:pt3HExvX
1bitのΔΣのADコンバータだろ

sum <= sum + new_data - data[i];
data[i] <= new_data;
i = i + 1;

で終了
137774ワット発電中さん:2009/10/28(水) 23:06:25 ID:Gc89yiXZ
ははw
138774ワット発電中さん:2009/10/29(木) 01:44:39 ID:Pllex2g+
てか、
sum_dat <= sum_dat + new_data;
で、128カウンタつければ?
139774ワット発電中さん:2009/11/12(木) 18:14:27 ID:uqa11j4O
パラレル出力のADコンバータで、2の補数出力できるものがあります。

この出力を、FPGAに取り込むとき
signed reg またはsigned wireで取り込めば、
signedとしてそのまま扱えると思うのですが、
この考えは正しいでしょうか?
140774ワット発電中さん:2009/11/12(木) 19:01:34 ID:N10d/Sk+
>>139
後段でどのような処理をするか次第。
信号としては、signed/unsignedなんて関係なく取り込むだけ。
141774ワット発電中さん:2009/11/12(木) 19:46:17 ID:uqa11j4O
>>139
ありがとうございます。確かにそうですね。

私の質問の説明も悪かったです。
次のような理解ですが、もう一度問わせてください。

パラレル出力のADコンバータで、ストレートバイナリと2の補数と切替出力できるADがあります。
後段のFPGA処理で、加減算を行いたい場合、
FPGA内部をunsigned値で0x8000を足して引いてとやるのもありですが、
ADコンバータ出力を2の補数で出力に設定して、
FPGAに取り込むとき、signed reg またはsigned wireで取り込めば、
FPGA内部の計算処理でそのまま加減算が扱えると思っています。

ADコンバータの出力の「2の補数出力」は、
まさにこのような時に使うための出力形式と考えています。
この考えは正しいでしょうか?
142774ワット発電中さん:2009/11/12(木) 20:48:28 ID:wx8Rjg2x
>>141
2の補数なんだから
オーバーフローを切り捨てれば
signed/unsignedなんか関係ないと思うぞ
143774ワット発電中さん:2009/11/12(木) 21:25:27 ID:N10d/Sk+
>>141
いや、だから取り込み信号の符号は実際はどっちでもよくて、

> FPGA内部の計算処理でそのまま加減算
この加減算をどのように処理するか次第。

例えば、signed で加減算のロジックを作ったならば、
取り込み信号線(入力)が signed だろうが unsigned だろうが
関係なく、演算結果(出力)は同じ。
144774ワット発電中さん:2009/11/12(木) 22:50:17 ID:lzRXySbV
3ビット[0,7][-4,3]ぐらいの範囲で紙に書いて計算したほうが早いよ。
ビット列を人間がどの数と結びつけるかの問題に過ぎないから。

もし考え込むことがあるとしたら、
CPUを作るときのステータス・フラグとかだな。
145774ワット発電中さん:2009/11/12(木) 23:09:00 ID:wx8Rjg2x
>>143
unsigned で加減算のロジックを作っても
同じだと思うが?
signedの加減算とunsignedの加減算って同だろ?
146774ワット発電中さん:2009/11/13(金) 00:30:48 ID:ScTKhXXT
>>145
そのオーバフロー処理というか桁次第だけど。
入力を16bitとして、出力を16bit/20bitの両方考えると、

sb
0xFFFF(65535) + 0x0001(1) = 0x0000(0) / 0x10000(65536)
0xFFFF(65535) - 0x0001(1) = 0xFFFE(65534) / 0x0FFFE(65534)

2's
0xFFFF(-1) + 0x0001(1) = 0x0000(0) / 0x00000(0)
0xFFFF(-1) - 0x0001(1) = 0xFFFE(-2) / 0xFFFFE(65534)

となるから、違う場合もあるということで。
147774ワット発電中さん:2009/11/13(金) 00:58:27 ID:P/gdbOsT
それはないだろ
148774ワット発電中さん:2009/11/13(金) 01:08:42 ID:Y5TvjUPw
入力16bit、出力20ビットの加算器ってどんなの?
線のつなぎがよく分からない。
絵で描いてうpろだに上げてみてくれない?
149774ワット発電中さん:2009/11/13(金) 01:30:41 ID:Y5TvjUPw
描いてというのも面倒な話だと反省。

たくさん書くの大変なので
>入力を16bitとして、出力を16bit/20bitの両方考えると、
を次のように変えても意味は変わらないよね?
>入力を8bitとして、出力を8bit/12bitの両方考えると、

↓まで書いてみたよ。

入力x[7:0](8bit)
入力y[7:0](8bit)
出力o[7:0](8bit)
出力c[7](1bit)
half_adder0(.C(c0), .O(o0), .X(x0), .Y(y0));
full_adder1(.C(c1), .O(o1), .X(x1), .Y(y1), .Z(c0));
full_adder2(.C(c2), .O(o2), .X(x2), .Y(y2) ,.Z(c1));
full_adder3(.C(c3), .O(o3), .X(x3), .Y(y3), .Z(c2));
full_adder4(.C(c4), .O(o4), .X(x4), .Y(y4), .Z(c3));
full_adder5(.C(c5), .O(o5), .X(x5), .Y(y5), .Z(c4));
full_adder6(.C(c6), .O(o6), .X(x6), .Y(y6), .Z(c5));
full_adder7(.C(c7), .O(o7), .X(x7), .Y(y7), .Z(c6));
150774ワット発電中さん:2009/11/13(金) 03:38:33 ID:4lVKY55j
>>146
質問です。
sbはストレートbinaryの略だと思います。
2'sは、2の補数だと思いますが、sは何の略でしょうか?
補数だとすると、coplementのcかなって。
151774ワット発電中さん:2009/11/13(金) 09:26:45 ID:p1+pL8GQ
146じゃないけど、単に所有格の「's」じゃね
152774ワット発電中さん:2009/11/13(金) 11:20:42 ID:UJ4Qd5m0
>>151
なるほど、そのsですか。了解しました。
どうもありがとうございます。

153774ワット発電中さん:2009/11/16(月) 12:39:50 ID:+jbzgMZo
でも、Verilog で sb って書くと signed binary のことなんだよな。
8'sb10000000 とかね。
154774ワット発電中さん:2009/11/16(月) 14:22:50 ID:Ix1QpgtY
Verilogで、top階層で作った物を、
インスタンシイェーションするだけでエラーが10個以上出て、
修正時間が1時間以上かかります。
・moduleの付け忘れ
・regのままで、wireにしていない
・()の行末の,が抜けている、あるいは最後の行まで,がついている
・コンパイラーに「そんなポートねぇよ」と言われる。

こんな私はまだまだ経験が足りないでしょうか?

インスタンス化でエラー無しで一発で動く人って、すごいと思う。
155774ワット発電中さん:2009/11/16(月) 17:30:00 ID:4ZWUYbRe
emacs LISP
156774ワット発電中さん:2009/11/16(月) 22:02:56 ID:LaP/gteE
>>155
verilog-mode.el か、
ちなみに、Meadowでも動く。
157774ワット発電中さん:2009/11/17(火) 00:58:17 ID:3tDlrZUe
すみません、教えてください。

Verilogで、signed の代入について 次のような場合、どのようになるのかがわかりません。

1. assign 8bit_signed = 6bit_signed;   // bit幅が異なる場合 広=狭 のとき
2. assign 6bit_signed = 8bit_signed;   // bit幅が異なる場合 狭=広 のとき
3. assign 8bit_unsigned = 8bit_signed;  // bit幅が同じで、型が違う場合 us=s のとき
4. assign 8bit_signed = 8bit_unsigned;  // bit幅が同じで、型が違う場合 u=us のとき

考えたのですが、
1の場合、コンパイラが6bit側を符号拡張して計算してくれるので、そのままの値になる。

2の場合、コンパイラが8bit側を符号縮小して計算してくれて、5bitに入らない場合は、11111となる。

3の場合は、signedのbit模様が、そのままunsignedに代入される。ので、
signed が-1(11111111)のとき、unsigned は、0xff=255になる。

4の場合は、unsignedのbit模様が、そのままsignedに代入される。ので、
unsigned が128(10000000)のときは、signed は、-128になる。

よろしくお願いします。
158774ワット発電中さん:2009/11/17(火) 01:32:49 ID:kvxKCcuV
>>157
1,2は、そういう記述してはいけない。
3,4は、そうなるだろう。が、そういう記述をすべきではない。
ソフトではなくて、あくまでも回路だから、
キャスト(型変換)というのは奇妙、というか意味がない。
159774ワット発電中さん:2009/11/17(火) 01:41:39 ID:/fiKAdKW
学部の卒業研究でSFL使ってるけどマイナーなのかなこの言語
160774ワット発電中さん:2009/11/17(火) 02:23:33 ID:4FCYX2U9
それ、国内限定だろ
161774ワット発電中さん:2009/11/17(火) 03:08:31 ID:31J9a6Na
>>158
ありがとうございます。
>1,2は、そういう記述してはいけない。
そうなのですか。
「いけない」原因は何でしょうか?
・signedだからいけない
・bit幅が異なるからいけない。
・上記がどちらか一方なら良いが、同時に起こるのがいけない。

でも、こういう場合って、往々にして発生しませんか?
unsigned 同士なら、
assign unsgned_16bit = { 4'b0, unsigned_12bit };
とかできますが、signed だと
assign signed_16bit = { {4{signed_12bit[11]}}, signed_12bit };
とかでよいのでしょうか。
162774ワット発電中さん:2009/11/17(火) 03:50:00 ID:D8cKY6Ui
>>161
STARCの本を買え。
163774ワット発電中さん:2009/11/17(火) 08:19:03 ID:W6dA/9B9
>>159
マイナーだね
164774ワット発電中さん:2009/11/17(火) 14:05:22 ID:Jx5/lTFB
>>161
あんたの言う「広=狭」の場合は、「広」の方の足りないビットに詰め物をするべき。
「狭=広」の場合は、明示的に必要なビットを選(よ)って接続すべき。
記述が「配線」を意味するものであるということを考えれば、きちんとビット数を
合わせる必要があることにそう疑問が出ることはないと思うんだけれども。
165774ワット発電中さん:2009/11/17(火) 14:49:02 ID:3tDlrZUe
>>164
>記述が「配線」を意味するものであるということを考えれば、
ありがとうございます。この言葉に納得しました。なるほど。

ということは、signed変数もunsigned変数も同じで、
8'b10000000というデータは、unsignedで扱いたい人にとっては128だし、
unsignedで扱いたい人にとっては、-127ということですね。
なので、signed8bit = unsigned8bit; は、全然問題無しということですね。

すると、if( )での比較でも同じなのでしょうか?
if( unsined8bit==unsined6bit )という比較は、コンパイラが符号拡張してくれる
と思っているんですが、どうでしょう。

>>162
STARCって、たまに見るのですが、何でしょうか? 本の名前でしょうか。
Cで言う「C言語辞典」のVerilog版みたいな本があれば便利なのですが、
ご存じでしたら、教えてください。
CQの本ばっかり何冊も増えていくんです。
166774ワット発電中さん:2009/11/17(火) 16:41:12 ID:2UZ9ziHZ
>signed8bit = unsigned8bit;
VHDLな俺からするともうこの時点でだめ。
HDLは型なんかは基本的に関係なく、正負論理としか考えない。
167774ワット発電中さん:2009/11/17(火) 18:26:21 ID:3tDlrZUe
>>166
>HDLは型なんかは基本的に関係なく、正負論理としか考えない。
前半と後半の内容が背反な感じがしますけど、どうですか?
168774ワット発電中さん:2009/11/17(火) 18:34:29 ID:3cXiA5e5
型てのは正負論理にあるルールを付け加えたものだろ べつに背反しないと思うが
169774ワット発電中さん:2009/11/17(火) 22:06:40 ID:6bBo6X+9
>>159
ツールはNTTが開発したPARTHENONですか?
170774ワット発電中さん:2009/11/17(火) 23:29:35 ID:/fiKAdKW
>>169
シミュレーションはPARTHENONで、
FPGAに載っけるのはsfl2vl使ってます。
論理合成結果考えたら最初からVerilogとかで書いたほうが明らかにいいんだけどね。
171774ワット発電中さん:2009/11/17(火) 23:40:00 ID:wg18y8mq
{signed1bit,signed2bit} = {unsigned1bit,unsigned2bit}; とかも全然問題無しですよ。
if( unsined2bit==unsined2bit )は、 if( (unsined2bit[1]==unsined2bit[1] ) && ( unsined2bit[0]==unsined2bit[0]) ) とおおよそ等価です。
符号拡張?なんですか、そんな文法あったっけ?
172774ワット発電中さん:2009/11/18(水) 00:47:09 ID:iyZ6X2DN
>符号拡張?なんですか、
すみません、確信犯できに間違って使っていました。
符号拡張ではなくてbit拡張です。すんません。

>{signed1bit,signed2bit} = {unsigned1bit,unsigned2bit}; とかも全然問題無しですよ。
すばらしいですね。連接って、ステキですよね。

ところで、連接で、これもOKでしょうか?

 {signed2bit,signed3bit} = {unsigned3bit,unsigned2bit};

  何が言いたいかというと、
   signed2bit = unsigned3bit[2;1];
   signed3bit = { unsigned3bit[0],unsigned2bit };
  みたいな変換もできてしまうのでしょうか?ということです。
  こうなると、もう何でもアリですね。
173774ワット発電中さん:2009/11/18(水) 01:28:47 ID:X4yvLQfy
>>165の言う「Cで言う「C言語辞典」のVerilog版みたいな本」というのは、
あるんでしょうか? > ALL

あったら、ぜひ解体、いや買いたい。3万円までなら出すよ。Verilog2001対応版ね。

あとISEで、文法チェックというか もろもろのチェックをもっと厳しくしたいんだけど、
設定はないですか?
174774ワット発電中さん:2009/11/18(水) 15:43:52 ID:FjaldwvU
STARC 厨が沸いてるね
175774ワット発電中さん:2009/11/18(水) 16:14:46 ID:FjaldwvU
>>158 >>164

マジレスすると、カウンターの記述とかどうやってるの?

hoge<= hoge + 1'b1;

ってすると、左右でビット長変ってくるよね。
一旦、別の変数に入れて、下位ビットだけ入れなおすの?

assign hoge_tmp= hoge + 1'b1;

hoge<= hoge_tmp[7:0]; とか?
176774ワット発電中さん:2009/11/18(水) 17:08:01 ID:iyZ6X2DN
158,164ではないですが、

そっか、そう言われると、bit幅の異なる代入は、平気でやってるなぁ。
なるほど、、、、。
ありがとう。
177774ワット発電中さん:2009/11/18(水) 17:50:59 ID:+p0gPSkV
>>175
> hoge<= hoge + 1'b1;
>
> ってすると、左右でビット長変ってくるよね。

変わってこない。

hoge[7:0]<= hoge[7:0] + 1'b1;
としたら、両辺とも 8bit。
右辺がオーバフローしても、
勝手に 9bit とかになったりはしない。
178774ワット発電中さん:2009/11/18(水) 21:41:27 ID:39P1Xwo6
>>177
勉強し直し
179774ワット発電中さん:2009/11/18(水) 21:49:20 ID:1ePmCu5c
勉強し直しはどっちだよ
180774ワット発電中さん:2009/11/18(水) 23:38:40 ID:X4yvLQfy
ここ最近の書き込み見ていると、
結局プロでやってる皆さんでも、Verilog文法をよく知らずにやってる、ってことですね。
「それでもやっていける」というか、「触れないようにしている」のか。

どこかにバイブルのような本はないのでしょうか? STARTC以外で。
Cのように本が多くないし。
181774ワット発電中さん:2009/11/19(木) 00:03:18 ID:t0/lSgP4
>>180
入門書で概念的な事を理解したら、あとはIEEEの原典。
嫌味や冗談でなく本気で言ってます。自分はそうしているし。

すべての本を見た訳ではないけど、解説本では結局細かいところの
説明を端折っていたり、場合によっては間違っていたりするので
正確さを求めるならばIEEEの規格が一番。
182774ワット発電中さん:2009/11/19(木) 01:10:58 ID:GzRv3PCN
>>180
> 結局プロでやってる皆さんでも、Verilog文法をよく知らずにやってる、ってことですね。
仕事でやってる人だけが、ここに書いてるわけでもないだろう。
趣味とか、学生で、ひとまず動かすことが目的なだけなら、
詳細は知らなくてもいいし。

そういう意味では、Verilog文法をよく知らずにやってるのは、
プロというか仕事人としては駄目だろう。
183774ワット発電中さん:2009/11/19(木) 10:50:02 ID:4CWmNEOs
Verilog の問題点は、文法とシミュレーションと合成とで微妙に異なることにある。
文法的には、>>157 のビット幅が異なる代入をしても無問題。
符号拡張されるし、上位ビットは捨てられる。
という意味で、>>164 は間違い。
ハードでしかものを考えてない。74シリーズでも使ってろ。

STARC は、初期の合成ツールで制約が多かったから、それを安全に
使うためのガイドライン。文法の本じゃない。
ただ、合成ツールも進化してるし、それに固執して分かりにくいコードを
書くのもどうかと思う。IP屋なら仕方ないけど。

hoge[7:0]<= hoge[7:0] + 1'b1;
hoge<= hoge + 1;

でどっちでもいいんじゃね?

もっと言うなら、hoge のビット長をパラメータ化しないと使いまわせないから
hoge[hoge_bit_length - 1:0]<= hoge[hoge_bit_length - 1:0] + 1'b1;
とでも書くべきだね。

STARC の本は、自己矛盾がたくさんあるし、だいたい、DC のディレクティブを
使え、使うな、って説明すんなよ。

文法を知りたければ、IEEE Std 1364-200x を見るしかない。
184774ワット発電中さん:2009/11/19(木) 12:37:02 ID:vzR3Td0Y
そのIEEEのって、本か何かで手に入る というか、
アマゾンで買えますかね?
買いたい。 でも英文でしょうけど。
185774ワット発電中さん:2009/11/19(木) 14:32:51 ID:C2ysEPKC
加算で1'b1って符号拡張したら+1になるの?-1になるの?
186774ワット発電中さん:2009/11/19(木) 16:11:42 ID:ZCs3zgEp
icarusで
$dumpvars;だけでVCDダンプしてくれるのね。

ちょっと感動しちゃった。
187774ワット発電中さん:2009/11/19(木) 18:30:29 ID:GzRv3PCN
>>185
符号ビットがないため、拡張不能。
188774ワット発電中さん:2009/11/19(木) 22:40:06 ID:eieg7cqB
>>183
STARCが重視しているのは保守性の高い判りやすいコードを書くこと
決して分かりにくいコードでは無い
189774ワット発電中さん:2009/11/19(木) 22:53:09 ID:YBgAAK+1
過去は振り返らない主義
ぱんつははかない主義
190774ワット発電中さん:2009/11/19(木) 23:28:27 ID:t0/lSgP4
>>184
アマゾンからは無理かもしれないけど、
IEEEのWebから直接買えるよ。
もちろん、Webも仕様書も英語。
191774ワット発電中さん:2009/11/20(金) 16:29:39 ID:bY59iNxM
前に紀伊国屋webからVerilog2001のIEEE本買った気もする
192悩んでます:2009/11/20(金) 18:07:28 ID:u0oSCyr3
下のように書くと・・・
シフトしてからsr[0]入れるのか
sr[0]入れてからシフトするのか
もしくは不定なのでこんな事は出来ない?

always@(posedge clk)
begin
if (shift == 1'b1)
begin
sr[63:1] <= sr[62:0];
sr[0] <= sr_in;
end
end
193774ワット発電中さん:2009/11/20(金) 18:13:27 ID:UasOPw0K
ノンブロッキング代入 でぐぐるんだ!
194774ワット発電中さん:2009/11/20(金) 18:47:40 ID:OCkt+ePB
連接 でくぐるんだ!
195774ワット発電中さん:2009/11/20(金) 18:50:01 ID:zzMuHcWs
>>192
FF動作なのでノンブロッキング代入でOK
正しい記述になってます
判りやすくしたければ

sr[63:0] <= {sr[62:0],sr_in};

ですけどね
196774ワット発電中さん:2009/11/21(土) 01:54:24 ID:4e3doTtU
sr[63:0] <= {sr[62:0],sr_in};
のほうが、2.23630679倍見やすいと思うな。

俺は、デバッグ用のピンを出すとき、こんなふうに書いてる。

  output wire [7:0] TP
);

  TP = {
    reset,    // 7
    clock,    // 6
    count,    // 5
    LED1,     // 4
    start_SW,   // 3
    1'b0,     // 2
    1'b0,     // 1
    1'b0     // 0
  };
197悩んでます:2009/11/21(土) 13:05:08 ID:E0eNTL/5
なるほど!
たすかりました。
スッキリしました。
ありがとうございました。
198774ワット発電中さん:2009/11/21(土) 13:20:05 ID:YLTQ362E
連結使ってスッキリ、で終わらせるのでなく
ノンブロッキング代入が何かも理解しておかないと
後々困ることになるよ。
199悩んでます:2009/11/21(土) 13:44:39 ID:E0eNTL/5
ノンブロッキング代入は
 >>192 のように代入文が複数ある場合
どのタイミングで代入されるのですか?
イメージとして
>>192の場合シフト後のsr[0]にsr_inを代入と考えたほうがよいのかな?
なのでclkの↑(立ち上がり)で実行後は 元々あったsr[0]のデータは
sr[1]にあると考えてよい?
じゃぁ・・・
これに
sr[10]<=in_a;
sr[15]<=in_b;
といくつかステートメントを追加して書いても
配列への代入はそれぞれシフト後の[10][15]に入るのでしょうか?
厳密にはステートメントは書いた順に実行されて、どこかに予約され
何かのタイミングで"せーの”で一斉に実行されるのですか?
るのでしょうか?
200774ワット発電中さん:2009/11/21(土) 15:46:03 ID:KtV5yHzv
>>199
clockで動作するソースは、こういう風に読むんだよ。

  always@(posedge clk) begin    // clockの↑の一瞬で
    if (shift == 1'b1) begin
      sr[63:1] <= sr[62:0];  // sr63番〜se1番のFFの入力は、sr62番〜sr0番のFFの出力が駆動する。
      sr[0] <= sr_in;     // sr0番のFFの入力は、sr_inの信号(bufferの出力が駆動する。
    end
  end
書いてある上から順にやるわけじゃなくて、clockの↑の一瞬だけでしか動かない。
ということは、各行は一斉に1回だけやるということなんだ。
だから、書く順番に関係がない。beginとendに囲まれた範囲を、clockの↑の一瞬だけ1回実施する。
しかも、左辺の物は1回しか登場してはいけない。
マイコンだと上から順にやっていくので、
A = B + C;
A = in_a;  とか書ける。HDLは、それはだめ。

なので、
sr[10]<=in_a;
sr[15]<=in_b; を追加するとどうなるかというと

    if (shift == 1'b1) begin
      sr[63:1] <= sr[62:0];  // sr63番〜se1番のFFの入力は、sr62番〜sr0番のFFの出力が駆動する。
      sr[0] <= sr_in;     // sr0番のFFの入力は、sr_inの入力bufferの出力が駆動する。
      sr[10]<=in_a;      // sr10番のFFの入力は、in_aの入力bufferの出力が駆動する。
      sr[15]<=in_b;      // sr15番のFFの入力は、in_bの入力bufferの出力が駆動する。
    end
よく見るとおかしい。sr10番のFFの入力は、
      sr[63:1] <= sr[62:0];
の行でsr9番の出力によって駆動される、と言っているのに、
      sr[10]<=in_a;
の行で、sr10番のFFの入力は、in_aで駆動される、とも言っている。

「私はどっちの言うことを聞けばいいの?(はぁと)」ということになって、おかしい。
この状態を名古屋弁で「マルチソース駆動になっとるじゃん。あかんじゃん」と言います。
マルチソース=Multi Source=複数の供給源が駆動している状態。
201774ワット発電中さん:2009/11/21(土) 16:27:28 ID:TSlVoV67
>>199
全て間違い
ノンブロッキング代入はその式が評価された時に
代入のスケジューリングが行われるが、代入自身は
同時刻の他の処理が全て終わった後に実行される
(代入する値は評価された時に決まる)

また、複数のノンブロッキング代入の処理順序は
シミュレータによって振る舞いが異なる
202774ワット発電中さん:2009/11/22(日) 01:20:42 ID:AuB4Q31Q
FFの動作を理解するのが先じゃない?
203774ワット発電中さん:2009/11/22(日) 03:05:37 ID:MGeafn5k
今はだいぶ慣れたけど、最初の頃は腹が立ってしょうがなかった。
どんなに記述しても、エラーが必ず出る。
エラーメッセージを見るけど、英語で書いてあってスグにわからない。
コンパイルにも素晴らしく時間がかかって、イライラしてるのに、輪をかけて英文の羅列。
16本の本だとerrorXXX:hoge<15>  errorXXX:hoge<14>・・・と16行もメッセージが出る。
わかった、わかった。丁寧に16行言わなくても1行でいいよ。
やっぱりマイコンがいいなぁ。コンパイルはあっという間だし、Cで書けば楽に書けるし。
妙なデバイスに手を出さずに、大人しくマイコンでやれば良かったと、何度思ったかわからない。
みんなよくこんな時間のかかる開発やってるよな。
エラーメッセージをコピーして、web翻訳をかけても、変な和訳で ますますわからない。
エラー番号をクリックすると、メーカーのホームページに飛ぶのは便利だけど、
これは次期バージョンで修正予定とかで、当面の処置が書いてあるが、
すでに使い慣れた人向けのような文章で、疑問が疑問を呼ぶ状態。
周りに聞ける人もいない。販売店に聞いてみる。
「営業なんでわからない。東エレに聞くからしばらく待って」となる。
なんか俺の質問はよっぽど難しいのか、変な内容なんだろうか。

ここで一発逆転を狙おうと、本を読み、自力で修正してみる。
<= を = にしてコンパイル。なんだよ、エラーが増えたじゃねーか。
やっぱり<=が正解みたいだな。
メニューをいろいろ触っていて、変なのを見つけた。クリーンナッププロジェクト。
その後、ダメ元でコンパイル。何事もなかったようにエラー無しで通る。
おいおい、なんだよそれ。こんなのアリかよ?

こんなに難しい言語、というか環境で、みんな良くやってると思うよ。
もうFPGAは使わないよ、マイコンで頑張る。
そうそう
SH6だったか、PLL内蔵で「ど速い」らしい。やっばりマイコンだあ。
204774ワット発電中さん:2009/11/22(日) 03:13:45 ID:roalVB33
母から、本当の父は誰だか分からないと言われて
混乱してるだけなので、>>203の行為は許してやって下さい。
205774ワット発電中さん:2009/11/22(日) 03:51:05 ID:MGeafn5k
ここはどこ? 私は誰?
206774ワット発電中さん:2009/11/22(日) 03:52:47 ID:nTmYDl4b
いや、普通にこなしてる人でも最初はこんなリアルな失敗、悩み、疑問があったんだよ
っていうことがよくわかるいい文章だと思う。
惜しいのは、結局マイコンでやるのとは何が違うのかを書かなかったことだ
207774ワット発電中さん:2009/11/22(日) 10:59:32 ID:oWHyRNvl
なんで英語で書いてあるのスグにわからないの?
なんでわざわざ機械翻訳で珍訳を生成するの? 仕事中にも笑いが欲しい?

まさが英語読めないとか? まさかね…
208774ワット発電中さん:2009/11/22(日) 11:50:09 ID:NScoHg+I
>まさが英語読めないとか? まさかね…
日常言語以外の言語を、
てにをはにいたるまでの理解はできないぞ、普通。
209774ワット発電中さん:2009/11/22(日) 12:15:26 ID:NScoHg+I
>>207
次のメッセージは何を言っているのか教えてくれませんか?

line 122 Reference to vector wire 'HOGE' is not a legal reg or variable lvalue.

210774ワット発電中さん:2009/11/22(日) 12:42:52 ID:f2AMmf/m
>>200 >>201
Verilog の仕様すら知らずにこういうことを言い出す輩が湧くんだが、
具体的に仕様通りに動かないシミュレータを挙げてくれまいか?
君らの脳内シミュレータが10年前からバージョンアップされてないのは仕方ないが・・・
211774ワット発電中さん:2009/11/22(日) 12:46:58 ID:NScoHg+I
>>210
>>200(オレ)と>>201は別人だけど、それでも両者に言ってるの?
212774ワット発電中さん:2009/11/22(日) 13:05:13 ID:L9MFkjkT
煽るだけ煽って彼の言う正しい答えを書かない
無能に反応しなくていいと思うよ
213774ワット発電中さん:2009/11/22(日) 13:41:28 ID:pqRRj75R
>>210

>>201 だが
俺はVerilogの仕様を書いたつもりだが
何処が間違えているか書いてくれないか?
214774ワット発電中さん:2009/11/22(日) 15:10:12 ID:skyMdkmp
>>209
以前もまったく同じ文章の意味が分からんって奴がいたが
これってそんなに難しい英語か??
確かにlvalueってはのは普通の英語じゃないけど、IT系の人間で
lvalueとか左辺値を知らないってのは本人の不勉強だろう。

まあ、以前話題になった時はvectorの意味が分からんという
論外だったけどw
215210:2009/11/22(日) 17:45:04 ID:iLByihQM
>>211
混乱させてすまん。

じゃあ別々に
>>200
>「私はどっちの言うことを聞けばいいの?(はぁと)」ということになって、おかしい。
>この状態を名古屋弁で「マルチソース駆動になっとるじゃん。あかんじゃん」と言います。

IEEE Std 1364-2001
5.4.1 Determinism
2) Non blocking assignments shall be performed in the order the statements were executed.

「実行した順番に評価しろ」だから、どちらに評価するかは明白。それにマルチソースじゃない。
まあ、名古屋弁ではそう言うのかもしらんが、混乱するのでなるべく方言は避けたほうが無難。


>>201
>また、複数のノンブロッキング代入の処理順序は
>シミュレータによって振る舞いが異なる

Verilog の仕様に準拠していれば、振る舞いが異なることはないはず。
だから、もし、振る舞いが異なるシミュレータがあるなら教えて欲しいということ。

別々の @(posedge CLK) 内で評価すれば、「シミュレータによって異なる」というのはその通りなんだけども。
216774ワット発電中さん:2009/11/22(日) 18:33:37 ID:U7q9ahM4
>>215

Verilogの言語仕様書って、実は結構曖昧ですよ。
動作が厳密に定義されてなくて、シミュレータ的に答えのない動作もある。
(そういう時は、大手商用ベンダのシミュレータの動作が正解・・・)

例:
FAQ 160
http://japanese.sugawara-systems.com/faqs.htm

とか、典型例。
システムタスク($fopen)なんかは、カオス。


>また、複数のノンブロッキング代入の処理順序は
>シミュレータによって振る舞いが異なる

215さんが書かれているように、同期回路ではあまり聞きませんね。

ノンブロッキング代入という言葉だけだと、最近は、always文で
非同期回路も書けるし、そういう場合は処理順序は異なるでしょうね。
(実行順序は不定。)
217216:2009/11/22(日) 18:37:54 ID:U7q9ahM4
あっ、処理順序は異なるってのは、複数の非同期回路が
書かれていた場合、非同期回路が評価される順番が違うって事ね。

シミュレータ的には、同じ時間であれば
どういう順番で評価しても構わない事になっていたはず。
218774ワット発電中さん:2009/11/22(日) 18:40:39 ID:pqRRj75R
>>215
あんたの思っている仕様はVerilog2001じゃないか?
一般的にVerilogといえばVerilog95を指す

俺の知っている舞いが異なるシミュレータとしては Verilog-XL

もちろんVerilog-XLはVerilog2001に対応していない
219774ワット発電中さん:2009/11/22(日) 19:49:45 ID:cDsCxXR9
そんなにかっちりとした仕様が欲しければVHDL使えば?
220210:2009/11/22(日) 22:01:06 ID:iLByihQM
>>216
そうですね。
バイナリファイル扱うと挙動が違ったりするし。

ただ、ここでは、言語仕様について >>200 が間違ってたから指摘しただけです。

>>218
Verilog-1995 も同じですってば。仕様書読んでくださいよ。
それ以前のバージョンのVerilog-XLはそうかもしれないけど、そんな古いシミュレータのこといわれてもなぁ。
現行バージョンで試しましたか?
221774ワット発電中さん:2009/11/22(日) 22:58:29 ID:pqRRj75R
>>220
古いシミュレータの事と言いますが、貴方が指摘した元の
私の文章を読んでください

>また、複数のノンブロッキング代入の処理順序は
>シミュレータによって振る舞いが異なる

このシミュレータには全てのVerilogシミュレータが含まれる
のでは無いですか?
それとも最新版ではないVerilog-XLはVerilogシミュレータでは
無いという事ですか?

222774ワット発電中さん:2009/11/23(月) 02:25:53 ID:dDeZOG6U
>>219
それはちがう。これらの柔軟性がVerilogの魅力。

おまじないの文章を何行も書いて、タイピングの練習がしたい人には、VHDLがベストです。
223774ワット発電中さん:2009/11/23(月) 03:46:40 ID:LSr1kp5A
VHDL は vhdl-mode.el があれば人の手で打ち込む必要のある記述量は Verilog と大差ないと思うな。
Verilog も verilog-mode.el を使えば port 宣言記述の自動化が出来て更に入力を減らせるけど。

何が言いたいかというと HDL 入力に emacs 最高w
224210:2009/11/23(月) 06:05:02 ID:R0ImaWo0
>>221
>>218 で、貴殿は「Verilog とは、Verilog-95 を指す」とおっしゃってますよね。
Verilog-XLはそれ以前からあるし、それが1995の仕様を満たしていないのは仕方ないでしょう。
なら、その古いXLは、Verilog のシミュレータではないですね。
何か矛盾でも?

もし現行のシミュレータが Verilog の仕様を満たしていないなら、それはバグなんだからFIXすべきでしょ。
「(初期の)Verilog-XL は仕様を満たしてないよ」ってのは有用な情報です。ありがとうございます。
今のバージョンは大丈夫なですよね。確認したいのですが。

で、あなたは、>>200 ですか?
もしそうなら、間違いは謙虚に認めませんか?
225774ワット発電中さん:2009/11/23(月) 10:18:34 ID:vbHztXyQ
>>224

私の主張はVerilogの言語仕様を完全に満たす物だけが
Verilogシミュレータでは無いという事

Verilog-XLはVerilogのシミュレータでは無いと言う貴方と
議論しても意味が無い

ここを読んでる多数の人が
Verilog-XLはVerilogのシミュレータでは無いと思うのであれば
私の間違いであり

Verilog-XLはVerilogのシミュレータだと思うのであれば
貴方が間違っているという事だろう

私は>>201です
226外野:2009/11/23(月) 10:59:25 ID:dHIdYGRg
多数派かどうかは知らないが、俺は
 規格非準拠バージョンのVerilog-XLはVerilogのシミュレータでは無い
と思う派
227774ワット発電中さん:2009/11/23(月) 11:15:13 ID:p8WFxSLc
>>222
今の流れからみてその柔軟性が魅力と思えることにびっくり。
>223でも書いてあるようにLisp使えば記述力が減らせる、個人的には補完とか考えれば
VHDLモードの方が記述力は少ない。
228774ワット発電中さん:2009/11/23(月) 11:21:35 ID:AFur5VmV
記述「力」ってナンだよオイ…
「量」だろ

ところで皆さんそんなにEmacs使ってるの?
229774ワット発電中さん:2009/11/23(月) 11:23:11 ID:p8WFxSLc
>>228
ぉぅぃぇ・・・
230774ワット発電中さん:2009/11/23(月) 12:48:14 ID:+zx+S2Ao
>>228
やっぱり vi(クローン含む) だよなw
231774ワット発電中さん:2009/11/23(月) 13:16:52 ID:SLqZW4dO
VHDLかVerilogかの論争の後は
Emacsかviかの論争かよ

終わりがない
232774ワット発電中さん:2009/11/23(月) 13:45:01 ID:LSr1kp5A
お次はインデント論争かなw

私は「SPACE×2個」派
インデントに統一感の無いHDLを見るとイラっと来るわ
233774ワット発電中さん:2009/11/23(月) 14:03:50 ID:p8WFxSLc
>>232
そういうのはLispの自動整形やっちゃうな、まぁ変なネストやると大変だけど。

あと区切り文字も追加で、俺はアンダーバーです。
234774ワット発電中さん:2009/11/23(月) 14:18:01 ID:+zx+S2Ao
SPACE×2個やTAB4, TAB8はどうでもいい
見た目はそろってるのにSPACEとTABが混じってるものが腹が立つ
235774ワット発電中さん:2009/11/23(月) 16:54:00 ID:YuBK/yxK
見た目がそろってるならまだいいじゃないか。extend -8 とか通せばいいんだし。

ttp://www.amazon.co.jp/dp/4320122224
なんか、ソースリストのインデントが壊れてんだぞ。
236774ワット発電中さん:2009/11/23(月) 16:58:39 ID:IM7Ma9Dh
著者と編集の間のやり取りで壊れたんだろうな。
237774ワット発電中さん:2009/11/23(月) 18:37:15 ID:6r3cr2mD
インデントは、TAB4と決まっています。
238774ワット発電中さん:2009/11/25(水) 16:27:28 ID:nLql/K24
シミュレーションのタイムアウトって
皆さんどうやって作ってます?
239774ワット発電中さん:2009/11/25(水) 22:06:42 ID:sjkREQUV
意味が分かりません、$finish?
240774ワット発電中さん:2009/11/25(水) 22:37:46 ID:PE7E0fVC
run時間を指定せず、testbench側で一連の処理完了後したら自動停止させたいとか?
sim終了条件で引っかけて errorレベルで assert すればいいんじゃないかな。

if (sim終了条件) then
 assert (FALSE) report "finished !!" severity error;
end if;
241774ワット発電中さん:2009/11/26(木) 01:07:00 ID:hzwnbqkx
initial begin
#1000 // タイムアウトまでの時間
$display("Timeout");
$stop;
end
じゃダメなのか?
242774ワット発電中さん:2009/11/26(木) 09:12:18 ID:G814z+f1
VHDLとVerilogが混在してるな
Verilogなら >>241 で良いし
VHDLにはそもそもそんな機能無いから >>240 の方法しかない
243238:2009/11/26(木) 12:07:13 ID:Y8ZLocsg
皆さん回答ありがとうございます。

現状で>>241のような書き方でやってました(先に書けよ自分orz)。

>>240さんのような書き方もあるんですね。
assertの動作がどうなるかちょっと勉強してきます。
244774ワット発電中さん:2009/12/09(水) 02:15:22 ID:GHlPOyiL
verilogでtaskに文字列を引数で渡す時、
受け側では当然十分なビット幅を用意しておくんだけど、
これを$displayすると、余分な空白が付いてしまいます。
lstrip()的な事は出来ないものでしょうか。
245774ワット発電中さん:2009/12/09(水) 13:07:51 ID:DdpyCbNF
task特有の問題かわからないけど
6桁表示とするとたぶん%6dとかでいいと思う。
integer a;
$display("a = %6d",a);
とか、Cと一緒
246774ワット発電中さん:2009/12/10(木) 13:53:35 ID:Ymq5uMhk
教えてください。

ASCII文字の数字←→バイナリの変換をするとき、
マイコンだと bin = ASCII - '0'; という書き方が出来て、見やすくていいのですが、
Verilogでは、どのように書けば良いのでしょうか。

assign bin = ASCII - '0'; という書き方はダメなのでしょうか?
ERROR:HDLCompilers:26 - "test.v" line xx unexpected token: ''' と言われてしまいます。
247774ワット発電中さん:2009/12/10(木) 14:45:17 ID:aM3p/zVO
assign bin = ASCII - "0";
248774ワット発電中さん:2009/12/10(木) 21:12:46 ID:Ymq5uMhk
>>247
ありがとうございます。
ダブルクォーテーションですか。ありがとうございます。
早速ソースが修正できます。
ありがとうございました。
249774ワット発電中さん:2009/12/11(金) 04:19:34 ID:8C8d8l63
>>245
うーん、そういうことではなくて、
$display("[DEBUG] %s hoge=%d", str, hoge);
みたいな事をしたいとして、
strが文字列リテラルであればなんの問題もないのだけど、
[MAX_LEN*8:1] str;
のようにしていて、必要以上のビット幅を確保した場合、
余計なスペースが入ってしまって嫌だなぁ、という事です。
str[variable -: constant]
として、任意の位置から固定幅を抜き出すことはできても、
str[variable:1]
とするのはエラーになってしまうし。
250774ワット発電中さん:2009/12/11(金) 11:52:08 ID:0oR6+FWW
>>249
>>245 をよく読め
251774ワット発電中さん:2009/12/11(金) 13:31:49 ID:GSylvgAP
>250
Verilog は C言語の printf()ライブラリ関数と同じではない
>245 のような桁数指定は実は規定されていない(最近の規格は知らないが)。
但し対応してるシミュレータもある。

例 (ISE WebPACK 8.1.03i)
ISE Simulator 桁数指定無視
Model Sim XE 桁数指定有効

>249
>244 の書き方では 引数が文字列のとき望みの表示にならない ように読めたが、
>249 を読むと何がやりたいのか分かりません。

エラーにはならないのなら、実際のコードと出力結果、そして 期待する出力 を
書いた方が早いよ
252774ワット発電中さん:2009/12/11(金) 14:26:33 ID:GSylvgAP
あと、>244 だけを読んでて思ったんだけど、

$display("[DEBUG] %0s hoge=%d", str, hoge);

   %s じゃなくて %0s、 左詰印字指定 が欲しかった?

沢山出力するときに 桁位置がずれると読みにくいから、
普通は固定幅にするものだと思うのだが…
253774ワット発電中さん:2009/12/13(日) 16:43:29 ID:Yyu9URp8
>244
先頭に余白があったらスワップさせるルーチン組んだらダメなん?
こんな感じで。

task main_banner;
input [8*80:1] strings;
 begin
    while(strings[8*80:8*80-7]==8'h0) begin
        strings = { strings[8*80-8:1], 8'h0 }; 
    end
  $display("%s",strings);
 end
endtask

254774ワット発電中さん:2009/12/14(月) 02:36:46 ID:MLe93wQb
それだと右に余白ができるのでは?
255774ワット発電中さん:2009/12/16(水) 13:34:18 ID:vGgxmV9w
どなたかお力をお貸し下さい。
VHDLのシミュレーションで、同じファイルを何回も読み込みたいのですが
うまく行きません。気持ち(?)を表したソースを載せますので良きアドバイスを!

file READ_FILE : text open read_mode is "param.txt";
−−−中略−−−
for N in 1 to 100 loop
while not(endfile(READ_FILE)) loop
readline(READ_FILE , LINE_DATA);
−−−中略−−−
end loop;
end loop;

これだと初めの一回しか読み込みが行われません。
繰り返し読み込むにはどうすれば良いでしょうか?
256774ワット発電中さん:2009/12/16(水) 14:04:14 ID:p5K3IkzB
file_close(READ_FILE); して、openからやり直す?
257255:2009/12/16(水) 15:32:32 ID:/HAZItS5
>>256さん(ある意味キリ番?)
さっそくヒントをありがとうございます。
「file_close」なるモノを使った事が無いのでさっそく勉強します。
もう少し他にも助言頂けるとありがたいです。
258255:2009/12/16(水) 21:17:25 ID:Mep0dqIg
ヒントを頂き無事に解決しましたので、お礼を兼ねて結果を報告します。

for N in 1 to 100 loop
 file_open(READ_FILE, "param.txt", read_mode);
 while not(endfile(READ_FILE)) loop
  readline(READ_FILE , LINE_DATA);
  −−−中略−−−
 end loop;
 file_close(READ_FILE);
end loop;

頂いたヒントの「file_close」から調べて辿り着きました。
256さんを含めて住人皆様に「ありがとう」です。では。
259774ワット発電中さん:2010/01/25(月) 10:45:49 ID:zD88Hw3b
Verilog のシミュレーションには cver を使っていますが、
フリーの VHDL シミュレータはどんなものがありますか。
というか、Mixed-HDL シミュレーションができるもの。
職場が VHDL なんですが、メーカー提供のモデルは Verilog が多いので
難儀してます。
260774ワット発電中さん:2010/01/25(月) 11:02:30 ID:A5ay+Mkz
GHDL
261774ワット発電中さん:2010/01/25(月) 20:31:02 ID:zD88Hw3b
>>260
レスどうも。

VHDL のシミュレータならこんなのもあるようですが、どんなもんでしょう。
ttp://freehdl.seul.org/
やたらバージョン番号が小さいので、実用性がいかがなものか気になるところです。

Verilog と VHDL のミックスドでシミュレーションできるフリーのシミュレータというのはさすがに見当たりませんね。
VHDL を強要されている人たちはどうやってシミュレーションしてますか?
とりあえず今のところ、全部 Verilog で書いて VHDL に変換、というのが現実的かなと思ってます。
262774ワット発電中さん:2010/01/25(月) 21:09:54 ID:Dv1AzRTi
会社からmix環境でやれと言われたら会社にEDAを買わせる。
そもそも何でフリーなんだ?
263774ワット発電中さん:2010/01/26(火) 01:49:50 ID:YPuSjNhY

すみません。教えてください。

Windows XP + ISE10.1で、次のようなエラーが出て、困っています。

ERROR:HDLCompilers:26 - "CCC.v" line 3 expecting 'endmodule', found 'module'

上記の意味は、次のように理解しています。正しいでしょうか?
 「上から見ていって、endmoduleが来るのを期待していたのに、
                  moduleが来た。だからエラーだよ」

また、ソースは以下のように記述しているのですが、
何かおかしいところを指摘いただけないでしょうか?
1つのテキストファイルに、次のように記述しています。

module AAA(    );
  xxxxx
  xxxxx
  xxxxx
endmodule

module BBB(    );
  xxxxx
  xxxxx
  xxxxx
endmodule

module CCC(    );
  xxxxx
  xxxxx
  xxxxx
endmodule

module〜endmoduleで閉じていれば、いくつ書いても良いと思っています。

宜しくお願いします。
264774ワット発電中さん:2010/01/26(火) 08:24:02 ID:emtZnNhR
>>261
Modelsimで混載simが可能になったらハッピーなんですけどね。
混載simをしたい場合、一端 QuartusII の「Generate Functional Simulation Netlist」で
混載部分の VHDL Netlist を生成し、ModelsimにてSimulationしてました。
Simulation時間がとても長くなってしまうのが難点ですが。

>>263
Projectかソースを置いてあるパスにスペースが含まれているとか?
(たぶんブランクになってる)「Verilog Include Directories」に、RTLの置き場所を明示するのも手。

>module〜endmoduleで閉じていれば、いくつ書いても良いと思っています。
無難に「1ファイル=1モジュール」で「ファイル名=Module名」にしておいたほうが良いと思います。
265774ワット発電中さん:2010/01/26(火) 11:35:46 ID:YPuSjNhY
>>263
ありがとうございます。

>無難に「1ファイル=1モジュール」で「ファイル名=Module名」
はい、これは実行しています。
しかしAAAの中だけで使うKKKは、関連性もあるので、1ファイル内に
File名「AAA.v」
module AAA ();
  KKK U1 ();
  KKK U2 ();
  xxxx
endmodule

module KKK ();
  xxxx
endmodule
のように、同居させていますが、マズイでしょうか?
KKKはどこにあるんだ? というときに困るかも、という問題はあると思いますが、
秀丸のgrepで検索しています。

あと、
上記のような、Verilog表記というか「作法」について知るには、
どのようにすれば良いのでしょうか?
僕1人で、聞ける人がいなくて困っています。
商社の講習会に何度か参加しましたが、このような内容は特になかったです。
Verilogの作法から教えてくれる講習会があれば、ぜひ参加してみたいです。
266774ワット発電中さん:2010/01/26(火) 19:05:46 ID:emtZnNhR
>>265
コンパイラ指示子の「`include "ファイル名"」で関連性を明示しちゃうのも手。
-------------------
`include "KKK.v"

module AAA ();
  KKK U1 ();
  KKK U2 ();
  xxxx
endmodule
-------------------

「作法」については、やはり先人の「マネ」から入るのが手っ取り早いですね。
慣れてきたら徐々に自分の記述スタイルを構築して行きましょう。

ちょっと堅苦しい記述だけど、「RTL設計スタイルガイドVerilog-HDL編」を
眺めて見るのも参考になるかもです。
267774ワット発電中さん:2010/01/26(火) 21:11:36 ID:V8wYbU4f
>>265
自分も、特定のモジュールからしか呼ばれないローカルなモジュールを
親モジュールと同じファイルに入れてるよ。

SystemVerilogならモジュールの入れ子ができるけど、
普通のVerilogはダメなんだよなあ。
268774ワット発電中さん:2010/01/27(水) 01:20:44 ID:WZwmUI6r
ISEで、教えてください。

ISEのソースウインドウに表示される内容の読み方についてです。
ウインドウの一番上にから、
+−プロジェクト名
+−+−デバイスの型式
  +−AAA (111.v)
  +−BBB (222.v)
  +−CCC (333.v)
  +−top (top.v)
    +−U1 KKK(444.v)
    +−U2 KKK(444.v)
    +−U3 KKK(444.v)
という具合に、インデントが付いて、表示されます。
このインデントで分けられた物の意味がわかりません。上記の例ですと、

444.vというファイル内にある、KKKというインスタンスが、
topモジュールの中で、U1, U2, U3として使用されている、
と読むのだと理解しています。

わからないのは、
topの上に表示されるAAA,BBB,CCCです。これは一体何でしょうか。
topモジュールと同じ位置関係にあるモジュールというのが
イメージ出来ません。
ここに表示されることが、いけないことなのか、良いことなのか、
ワケがわからないので、不安いっぱいです。

また、topモジュール内部で、KKKを記述するとき、
知らずにスペルミスすると、それまでtopモジュールの下に表示されていたKKKが、
AAA〜CCCの仲間と同じ位置に勝手に移動してしまい、これもなんだかわかりません。
頼んでも以内のに表示位置が勝手に移動してしまうのです。

これらの表示位置によって、宣言が無いとか、ダブってるとか、のエラーが出てしまい
なかなか修正ができません。知らずにちょっと何かあると、ドバーっとエラーが出てきて、
どうして良いかわからず、ISEを使うのが 半分怖いです。

とてもとまどっています。この辺りの情報を知るには、どうしたら良いのでしょうか。
Xilinxのwebも探してみましたが、見つけられませんでした。
WebPackなので、Xilinxに聞くわけにも行かず、周りに聞ける人がいなくて困っています。

どうぞ宜しくお願いします。
269774ワット発電中さん:2010/01/27(水) 01:27:00 ID:WZwmUI6r
>>266
ありがとうございます。
`include "ファイル名"は、バリバリ使っています。
マイコンのCのときと同じで、とても便利だと思っています。

>「作法」については、やはり先人の「マネ」から入るのが手っ取り早いですね。
そうですか。本に載っているソースをたくさん見ることですね。
回路図集を眺めて回路を覚えるような感じですね。

>ちょっと堅苦しい記述だけど、「RTL設計スタイルガイドVerilog-HDL編」を
高いですよね、この本。ちょっと躊躇しています。(汗

>>267
ありがとうございます。
>自分も、特定のモジュールからしか呼ばれないローカルなモジュールを
>親モジュールと同じファイルに入れてるよ。
そうですか、安心しました。
270774ワット発電中さん:2010/01/27(水) 07:49:55 ID:BzMnVh0d
>>268
topの中でインスタンス宣言されたモジュールがtopの下に来るだけのこと。
topの同レベル(デバイス直下)にいるモジュールは、source->addされたのにも関わらず
どこからも参照されていないモジュールであることを示す。

ビルドでエラーが起きるのは、Source windowの表示位置が悪いからではなく
ビルドエラーが起きるような記述ミスがあるために正しい位置に表示されないだけ。
因果関係が逆。
271774ワット発電中さん:2010/01/28(木) 17:15:03 ID:Lt4yon6O
>>270
ありがとうございます。
なるほどです。ということは、次のような理解で良いでしょうか?
+−プロジェクト名
+−デバイスの型式
  +−AAA (111.v)
  +−BBB (222.v)
  +−CCC (333.v)
  +−top (top.v)
    +−U1 KKK(444.v)
    +−U2 KKK(444.v)
    +−U3 KKK(444.v)
a) 上記の例では、モジュールの表記されている位置だけでは、コンパイルにエラーがあるかどうかはわからない。
b) AAA, BBB, CCC, topは、互いに参照もされず、関係が(からみ)も無い。なので
  AAA, BBB, CCC, topは、1つのFPGA上にまるで「回路が同居している」ように考えれば良い。
d) ということは、コンパイルの時に、AAA, BBB, CCC, top全てがコンパイルの対象になる。
e) なので、AAA, BBB, CCC, topは、それぞれ単体で「エラーが無く話が完結している」必要がある。
f) top内でのタイプミス等により、AAA BBB CCCのレベルにモジュールが上がってくると、
  e)の理由により、一気にエラーが量産されてしまう。
g) f)のタイプミスを修正すれば、f)で上がってきたモジュールはtopの内部に戻るので、
  自動的に?AAA, BBB, CCC, topのレベルから表示が消える。
272774ワット発電中さん:2010/01/28(木) 19:01:49 ID:pqx+eWaE
>>271
いやいやいや
AAA,BBB,CCC,topのうち、トップモジュールに設定されたどれか1つが論理合成の対象。
例えばtopがトップモジュールに設定されている場合、AAA,BBB,CCCに何が書かれていても無視され、論理合成でエラーは出ない。
273774ワット発電中さん:2010/01/28(木) 21:47:55 ID:4FjBU8cW
>>271
論理合成にかける前にシミュレータで文法チェックしたのかな?
Xilinx版Modelsimも無償で入手できるはず。

vlog top.v
vlog 444.v
でコンパイルして
vsim top
でエラーが出なければ、Verilogの文法的には合ってる可能性が高い。
もちろん、論理合成できるかどうかは別問題だけど。

あと、素直にVerilog HDLの本を買ったほうがいいんじゃないかなあ。
274774ワット発電中さん:2010/01/29(金) 04:19:28 ID:Me353m+D
vlog top.v 、vsim top って、何?
275774ワット発電中さん:2010/01/29(金) 04:38:10 ID:eDRr4cmu
コマンドラインで実行したことない人ですか?
276774ワット発電中さん:2010/02/04(木) 04:04:55 ID:nehoMBmZ
教えてください。
Verilogで、clockAで動くmodule Aと、clockBで動くmodule Bがあります。
Clock周波数が異なる(非同期な)2つのmodule間で、信号をやりとりしたいです。

module Aから、modeule Bに「AD変換依頼」の信号を定周期で送り、module Bでそれを受けてAD変換処理をする
というものです。
そこで考えたのは、
module B内にRS-FFを置き、module Aの指示でSetされ、
SetされていたらAD変換処理を行い、AD処理終了したらRS-FFをResetするという方法です。

このRS-FFは、Clock Aに同期してSetされClock Bに同期してResetされるわけですが、
module B内部に、どのように記述すればいいかわかりません。
RS-FFは合成できませんと書かれた本もあれば、OKという本もあります。
タスキがけの組み合わせ回路を書けば良いと思うのですが、まずいでしょうか。
RS-FFがダメとなると、どのような手法で実現するのが一般的でしょうか。
DualPortRAMの使用、とか。
277774ワット発電中さん:2010/02/04(木) 10:56:38 ID:Mabj5bnb
>>276
ターゲットデバイスによってやり方は違う。
ASICならRS-FFの非同期セット/リセット使うという手もなくはない。
FPGAならRS-FFなんてないから無理。

送りたい情報が1bit程度なら、ハンドシェイク方式で十分なので
DualPortRAMやら非同期FIFOやらまで持ち出さなくてもいいだろう。

異なるクロックドメイン間の通信は、受け側で2回D-FFを通せば
メタステーブル状態を回避して、状態を検知できる。
対向1組の信号線があれば1bitの情報をハンドシェイクで伝送できる

ModuleA出力 REQ (初期値L)
ModuleB出力 ACK (初期値L)
 ModuleA AD変換依頼を発信 REQをL→H
 ModuleB REQがHを確認したら ACKをL→H
 ModuleA ACKがHなのを確認したら REQをH→L
 ModuleB REQがLを確認したら ACKをH→L
 ModuleA ACKがLになるまで待機した後、最初に戻る
278774ワット発電中さん:2010/02/15(月) 22:45:13 ID:Y1+QD653

>>276
1bitのset信号ならFF2段通せばおk
メタステーブルでググれ

ClockBの方が遅いとして、
ClockAからのsetを、ClockBで拾えるように
十分長くする。

always @(posedge ClockA)begin
set_ff <= set_pls;
set_ff2 <= set_ff;
set_ff3 <= set_ff2;
end

assign set_4cycle = set_pls | set_ff | set_ff2 | set_ff3;

//ClockBで叩いてClockB同期信号にする
always @(posedge ClockB)//clock乗せ換え//メタステーブル発生可能性あり
set_clkb_meta <= set_4cycle;//set_4cycle is ClockA domain

always @(posedge CloclB)//メタス伝播保護
set_clkb <= set_clkb_meta;

always @(posedge ClockB)//このレジスタは完全に同期
if(set_clkb)
rs <= 1'b1;
else if(clr)//clrはClockBドメイン
rs <= 1'b0;
279278:2010/02/15(月) 23:39:58 ID:Y1+QD653
グリッジで受け取れませんでした
さーせん
280774ワット発電中さん:2010/02/16(火) 14:05:10 ID:gx7eOtBv
質問いいでしょうか。初心者です。

Verilogで、
モジュールの中のインスタンス化した物の中の、
これまたインスタンス化した中の、
これまたインスタンス化した中の・・・・の最下位moduleの中の信号を、
topまで引っ張り出して、外部端子からオシロで信号が見たいです。

しかし、下からtopに向かって、全てのmodule( )のカッコ内に
モニタのためだけに信号名を追加で書かなければならないのでしょうか?

最下位のmoduleから直接topの端子につなぐことは出来ないのでしょうか?
281774ワット発電中さん:2010/02/16(火) 21:18:13 ID:mss5Njfl
>>280
できない、はず。
SignalTap(Altera)やChipScope(Xilinx)を使えば、
RTLを変えずにJTAG経由で内部信号を見られるが…。

>>279
set_4cycleをFF(ClockA駆動)で叩いてからClockBドメインに渡せば
動くということ?
282774ワット発電中さん:2010/02/16(火) 21:42:24 ID:gx7eOtBv
>>281
ありがとうございます。

そうすると、そのインスタンスを参照している「全てのmoduleのポートリスト」を
修正しないと行けないのでしょうか?
どれか1つでtopまで上がってきて、他の参照moduleはほったらかし、ということはNGでしょうか?

>SignalTap(Altera)やChipScope(Xilinx)を使えば、
なるほど了解です。

Verilogだとダメだけど、VHDLならできるよ、とかありますか?
283774ワット発電中さん:2010/02/16(火) 21:42:47 ID:5NAIUMh0
>>280
シミュレーション用記述ではカンマで階層参照できますが
assign aaa = testbench.fpgatop.modulea.modulea_b.signal_ccc;
って感じで。

合成して端子から出してオシロで見るなら
おっしゃるとおり通過するmoduleに全部にport追加してます。

>>281
そのとおり。
284774ワット発電中さん:2010/02/16(火) 21:45:16 ID:5NAIUMh0
カンマじゃねえしww
アホだろおれ
285774ワット発電中さん:2010/02/16(火) 23:59:50 ID:gx7eOtBv
>>283
大丈夫です、「点」ですね。

しかし、面倒ですね。RS232の送信回路とか作ったときなど、
最下層の信号が見てみたいことがよくあるのですが・・・。

hoge U1 ( .CK(CK), .RES(RES), .DEBUG(DEBUG ) ) ) );
hoge U2 ( .CK(CK), .RES(RES), .DEBUG(   ) ) ) );
hoge U3 ( .CK(CK), .RES(RES), .DEBUG(   ) ) ) );
hoge U4 ( .CK(CK), .RES(RES), .DEBUG(   ) ) ) );
hoge U5 ( .CK(CK), .RES(RES), .DEBUG(   ) ) ) );
hoge U6 ( .CK(CK), .RES(RES), .DEBUG(   ) ) ) );
hoge U7 ( .CK(CK), .RES(RES), .DEBUG(   ) ) ) );
hoge U8 ( .CK(CK), .RES(RES), .DEBUG(   ) ) ) );
hoge U9 ( .CK(CK), .RES(RES), .DEBUG(   ) ) ) );

という感じですよね。
286774ワット発電中さん:2010/02/18(木) 17:47:21 ID:yIeLHpwf
>>285
実機で確認したいなら、深くする前に一部だけ実装して、
浅い段階で確認すれば?
しかし、遅い信号なら、シミュレーションで確認すれば、
ほぼ問題ないと思うけど。
287774ワット発電中さん:2010/02/24(水) 19:20:28 ID:QlmSv/vw
テストベンチの話です。
ALTERA、FPGA、Modelsim AEです。

FPGAのパルス出力の数をテストベンチでカウントしたいのですが
方法を教えていただけないでしょうか。

テストベンチ内のProcess文内で
エッジを検出してカウントさせる方法が思いつきません。

よろしくお願いします。
288774ワット発電中さん:2010/02/24(水) 19:42:01 ID:QlmSv/vw
>>287

wait until CLK'event and CLK='1';

これで出来ました。
失礼しました。
289774ワット発電中さん:2010/02/25(木) 00:47:49 ID:knIewJvt
みなさん読みやすさ重視で記述してます?
記述の段階で最適化(笑)かけちゃいます?
コピペの修正しやすさ重視でif文横に引き伸ばしちゃいます?
カウンタのbit[3]を使い回す時名前そのままでつなげちゃいます?
290774ワット発電中さん:2010/02/25(木) 01:10:46 ID:VQJbK0Dq
>みなさん読みやすさ重視で記述してます?
当然です。
>コピペの修正しやすさ重視でif文横に引き伸ばしちゃいます?
もちろんです。

可読性が最優先です。
291774ワット発電中さん:2010/02/25(木) 01:22:56 ID:1e290r5x
一年後の自分は他人と同じ、
すぐ理解&メンテし易いように記述しておくのが吉
292774ワット発電中さん:2010/02/25(木) 03:12:31 ID:6oNNVfGL
>>289
おれも>>290と同じ。
「1年後の自分は他人」って、まったくその通り。半年でも。

  if( count >= 4'b1001 ) begin count <= 0;     end
           else begin count <= count + 1; end

読みにくい例
  if( count >= 4'b1001 )
  begin
    count <= 0;
  end
  else
  begin
    count <= count + 1;
  end


293774ワット発電中さん:2010/02/25(木) 03:25:19 ID:njmrG6b+
単なるカウンタなのに、それだと両方読みづらい…。
294drcoop:2010/02/25(木) 06:13:10 ID:bHhCiqJw
http://www.youtube.com/watch?v=ZOU8GIRUd_g

Rock - Paper - Scissors - Lizard - Spock
295774ワット発電中さん:2010/02/25(木) 23:56:16 ID:+xMLIC94
>>293
激しく同意。自分もそうだけど、センスなさ杉><
296774ワット発電中さん:2010/02/26(金) 00:57:02 ID:Nv7ueyBt
/*
教えてください。もう、わけがわかりません。
以下のソースをコンパイルするのですが、思い通りになってくれません。

0〜9までのcounter変数の、特定の1bitを取り出して、LEDを点ける回路を
書きました。シンセシスした後、回路図を表示させて確認しています。
下の例では、counterの2bit目を取り出そうとしていますが、wire変数LEDで取り出せないんです。
回路図を見ると出力LED自身が消されています。カウンタ回路部分はどの場合でも生成されています。
*/

module test (
  input  wire  clock,
  output  wire  LED
);
  reg [3:0] counter;

  always @ ( posedge clock ) begin
    if( counter >= 4'b1001 ) begin counter <= 4'b0000;       end // 9になったら、次回は0
              else begin counter <= counter + 4'b0001;  end // そうでなければ、++する。
  end

// assign LED = ( counter[2] == 1'b1 )? 1'b1 : 1'b0;    // パターンA) だめ 消えてしまう。
// assign LED = ( counter[2:2] == 1'b1 )? 1'b1 : 1'b0;   // パターンB) だめ 消えてしまう。
  assign LED = ( counter & 4'b0100 )? 1'b0 : 1'b1;     // パターンC) OK
endmodule

A)では、coubterの2bit目を取りだして評価しているつもりです。本命だと思っていたんですが。
同様にB)では、counterの「2bit目から2bit目」を取りだして、取り出しています。
C)は、別法として疑問はありません。
なぜA)やB)の場合はだめなのでしょうか?
涙出てきました。宜しくお願いします。
297774ワット発電中さん:2010/02/26(金) 01:14:13 ID:wyrTm3DG
>>295
counterが不定のままなんじゃなかろうか?
298774ワット発電中さん:2010/02/26(金) 01:21:52 ID:panB1ZHK
>>297
外にあるはずのalwaysの記述も、リセット記述も省いてるだけだろ。
299774ワット発電中さん:2010/02/26(金) 05:44:57 ID:0nac0MMq
>>296
// assign LED = ( counter[2] == 1'b1 )? 1'b1 : 1'b0;    // パターンA) だめ 消えてしまう。
↑は、合成したら↓こうなったんじゃないのかな。
assign LED = counter[2];
300774ワット発電中さん:2010/02/26(金) 16:11:33 ID:Nv7ueyBt
>>297->>299
ありがとうございます。
リセットが書いてありませんでしたが、resetを書いても同じで、変でした。
counterの値も正しく加算されているようでした。

そこで、いろいろとやってみたところ、原因?がわかりました。
これを見てください。↓
http://mcnc.hp.infoseek.co.jp/cgi-bin/img-box/img20100226160605.jpg
ISEの回路図表示が変のようです。RTLで見るとclockとLEDがあるのに、
それをダブルクリックして、その中身を見るとLED出力が無くなってる。
ここでビックリしていたわけです。
だけど、その状態でTechnology Schematicで見ると、ちゃんと出力はある。
試しにFPGAで動作させると、ちゃんと出力される。なんだかなぁ。
ISE不信になりそうです。

ありがとうございました。
301774ワット発電中さん:2010/02/26(金) 22:57:11 ID:aXIPBmIw
Technology Schematicで消えるなら問題ありそうだが、RTLのはおまけのイメージが
302774ワット発電中さん:2010/02/27(土) 00:16:16 ID:1ZzAkfsO
>RTLのはおまけのイメージが
ユーザーはツールの出力するものすべてを信用してると思います。
RTLスケマの結果を大目にみると、合成結果もいい加減な結果を許容することになるし。
変なツール。要はバグではないかと思います。
303774ワット発電中さん:2010/02/27(土) 03:07:56 ID:Ie9tdjeA
Verilogで教えてください。2つあります。

1つ目
defpermやparameter=で設定する値は、
通常、ソースに即値で書き込んでコンパイルします。
これを、外部のスイッチの値を放り込みたいのですが、可能でしょうか?
SW on/off → "true"/"false" とか、
SW[3:0] → WIDTH値 とかです。

2つ目
親moduleから子moduleにセットできる通常のパラメータ値ですが、
さらに上の階層から指示することはできるのでしょうか。
親module → 子module → 孫module → ひ孫moduleをセット という感じです。

いくつも質問してすみません。よろしくお願いします。
304774ワット発電中さん:2010/02/27(土) 16:33:51 ID:DZ7MRIXi
>>303
1つ目
質問の意味が、ランタイムな変更という意味ならば、不可。

2つ目
可能。
305774ワット発電中さん:2010/02/28(日) 00:13:21 ID:82lxoNwM
>>304
ありがとうございます。

やはり、1つ目はだめでしょうか。
例えばPLLの分周比をスイッチの値によって、コロコロ変えたいのです。
そんな用例というか需要はないのでしょうか。ハードウェアで製作するPLLなどは、
DIP SWの値を読み込みながら、PLLのM/N値に反映させることはよくやるんですけど。

2つ目は、どのような記述になるのでしょうか。ぜひ教えていただけないでしょうか?
また、そのようなことは、どこに書かれているのでしょうか。
Verilogの文法書を見つけられないのです。
XilinxのXSTガイドは、それほど詳細に書かれてはいないし。
半導体研究センター?の本に載っているのでしょうか。
306774ワット発電中さん:2010/02/28(日) 01:06:18 ID:XDGpK0KC
1つめ
そういう回路は自分で作る。

2つめ
そのままパラメータを入れ子。
↓文法
ttp://www.verilog.com/VerilogBNF.html
307774ワット発電中さん:2010/02/28(日) 18:12:53 ID:7wMeK2ov
>>305
> Verilogの文法書を見つけられないのです。
> XilinxのXSTガイドは、それほど詳細に書かれてはいないし。
> 半導体研究センター?の本に載っているのでしょうか。

IEEEの規格書を買え。
308774ワット発電中さん:2010/02/28(日) 18:43:37 ID:6W0LOl+x
>>305
「verilog IEEE standard」でググればPDFが見つかる。
Verilog-2001の規格名は、IEEE Std 1364-2001な。
309774ワット発電中さん:2010/03/02(火) 21:32:25 ID:81+EotMo
>例えばPLLの分周比をスイッチの値によって、コロコロ変えたいのです。
>そんな用例というか需要はないのでしょうか。

alteraもxilinxも上位デバイスでは
そういう機能が付いてるPLLを内蔵してる

おれならマスタークロックは常に最速で
全レジスタにクロックイネーブル付けて
間欠動作させるかな
310774ワット発電中さん:2010/03/02(火) 23:34:14 ID:4s0jU0sP
>>305
AlteraだとStratixII以降であればPLLの設定を変えられるよ。
Megawizardでそういうのがあった。
altpll_reconfigだったかな。
リファレンスデザインや資料もAlteraのサイトにあったよ。
311774ワット発電中さん:2010/03/03(水) 02:40:11 ID:S3qPzYik
Xilinxだと、Virtex4以上に、DCM_ADV(DCM Advance)に、
DynamicReconfigrationという機能がある。
Spartan3には無いので注意。
312774ワット発電中さん:2010/03/03(水) 09:03:03 ID:0GsTbo+F
というか分周比をスイッチで切り替えれるようにしたらいいだけでは?
313774ワット発電中さん:2010/03/03(水) 09:46:42 ID:pfI8X0+V
PLLどうこうじゃなくて、
parameterが静的なものか、
という認識の問題じゃないのか?
314774ワット発電中さん:2010/03/03(水) 10:03:26 ID:m4y8+OAo
>全レジスタにクロックイネーブル付けて
笑うところ?
315774ワット発電中さん:2010/03/18(木) 22:01:00 ID:kTupe04I
Spartan3でucfを書いたのに、ちっとも動かない。1日悩んだ。
よく見たら、Spartan3Aのピン配表を見ていた。がっくり。
316774ワット発電中さん:2010/03/19(金) 17:18:35 ID:WDEVT429
けっきょく >>300は、処理系のバグだったということで決着なの?
似たような現象に遭ったから気になっているんだけど。
317774ワット発電中さん:2010/03/19(金) 19:31:48 ID:qmPDeeK7
仕様だろ?
wireで結んじまったので片方の名前が必要なくなって記載するの止めたってだけの。
シンセサイザに最適化させない程度に変なことしておくと同一と認識されずに残ると。

バグを仕様と言い張った「仕様」じゃなくて、
(賛否はともかく)そういうつもりで作ってるという意味で、仕様。
この程度でごちゃごちゃ言ってたらISEとつきあえないぜ。
318774ワット発電中さん:2010/03/22(月) 01:02:48 ID:NFd9C7Ol
ISE12.1が5月らしいが一体いつまで俺たちは有料βテスタなんだろう…
319774ワット発電中さん:2010/03/22(月) 02:36:39 ID:+A1zxxUB
それは次のβテスタ(有料)の始まりですね、わかります
320774ワット発電中さん:2010/03/22(月) 13:27:08 ID:N+fq4nKl
本屋さんの立ち読みで、自分の隣に立つ人って気になるな。
昨日の夜、名古屋のジュ○ク堂で、HDLの本をみていたオレの横に若者来た。
「おっ、こいつもHDLソフト屋か?」と思いつつ。すると手に取ったのは、リレーシーケンスの本。
「そうか、そうか、制御盤屋か」と思ったら、
次に手に取ったのが、ModelSimの本。さらに次は、SystemVerilogの本。
横の人が気になるオレ。
321774ワット発電中さん:2010/03/22(月) 21:26:53 ID:AMCLQFZY
>>320
RFとかアナログとかメカ・素材系の若手が、
急にロジック系の勉強をするように言われて
右往左往しているような感じだな。
322774ワット発電中さん:2010/03/24(水) 01:36:43 ID:MAPBp+X4
とある、CPU評価ボードを貰って遊んでるのですが、教えてください。
回路図を見ているとCPUと、USBホストデバイスや、ネットワークデバイスの間に、ザイリンクスのチップが入っています。
これの目的は、デバイスの切り替えなんだろうなと思いますが、
ふと疑問に思いました。

CPUからつながってるデバイスが一個の場合もこのチップは必要なのでしょうか?
タイミングの調整なんかもしてるのでしょうか?
チップのプログラム?もあったので読みましたが、不思議な言語でチンプンカンプンでした。
おそらくVHDLという言語なのかな?と思い、本を購入しようと思いましたが、
書店にはVHDLとverilogHDLという本がありましたが、これは別物でしょうか?

とりとめない質問で申し訳ないですが、
この勉強をしたい場合、なにの本がお勧めなんでしょう?
323774ワット発電中さん:2010/03/24(水) 01:59:14 ID:8WEw/6W3
盛大な釣りじゃないか?

>CPUからつながってるデバイスが一個の場合もこのチップは必要なのでしょうか?
>タイミングの調整なんかもしてるのでしょうか?
って、そのチップが何をしているかに依るんじゃないか?
中身(プログラム)がわからないと、わかんないよ。


>書店にはVHDLとverilogHDLという本がありましたが、これは別物でしょうか?
言葉がちがうから、もちろん別物じゃないか?

>この勉強をしたい場合、なにの本がお勧めなんでしょう?
みんな「オススメの本ある?」って聞くけど、そんなもん個人の価値観だから、
どれも良いしどれもダメ。本屋さんで、少し読んでみて、簡単そうなやつを1冊だけ買ってくる。
その1冊を何度も何度も読む。そしたら次の本を買ってくる。また何度も何度も読む。
読んでいるうちに必ず中身がわかってくる。本とはそういうものです。

ネットの書込みやホームページのものは、最初はダメね。自分のお金を使って買ってくることに意義がある。
324774ワット発電中さん:2010/03/24(水) 19:13:32 ID:MJ6yeuam
盛大な釣りか・・・そんな感じだ。
自分でなんとかしようという気が微塵も感じられないw
たぶん、モノにはならない。

> 本屋さんで、少し読んでみて、簡単そうなやつを1冊だけ買ってくる。

一通りのことが書いてある本を、ともかく理解できなくても読み通してから、
紹介のようなのに挑戦する。曖昧な記憶でも、最初の本は使える辞書代わりになる。
英語だの中国語だの、そんなのを辞書から始めるのは無理だけど、こういう言語モノは
そこまで覚える量は多くないから、使える手。
325774ワット発電中さん:2010/03/24(水) 20:49:05 ID:2dLqAnQb
別にHDLなんてこれといった本買わなくても使えるけどな。
326774ワット発電中さん:2010/03/25(木) 01:35:33 ID:ZchGoKZs
言語の本っていうよりもっと基礎的な物がを説明してる本の方がよいとおもう


コンピュータアーキテクチャのエッセンス
あたりはどうかな?
俺は買ってないけど
327774ワット発電中さん:2010/03/25(木) 03:06:12 ID:0diLUS2+
>>325
>別にHDLなんてこれといった本買わなくても使えるけどな。
そんなことないだろう。

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

8bitのregを、
3bitで表せる個数、つまり8個の配列を用意、かと思ったら
3個用意する、という意味らしいじゃないか。
そんなこと、なんでわかるんだ?
やっぱり本を見ないとわからんでしょ。
328774ワット発電中さん:2010/03/25(木) 03:15:14 ID:jsjdnXp4
図書館から本借りれば本買わなくても使えるようになる、って意味なのかしら

>>327
2次元配列と思えば、要素数8には見えない。
329774ワット発電中さん:2010/03/25(木) 12:00:48 ID:6q81LNr+
>>328
>2次元配列と思えば、要素数8には見えない。
それはわかるけど、だったら素直に reg [7:0] data [3];
と、書かせれば良いと思う。
あえて[2:0]と書かせる理由がわかんないですよね。

330774ワット発電中さん:2010/03/25(木) 12:17:45 ID:c7U+ff4q
だったら reg [8] data [3]; ではダメなのか?
reg [7:0] data; は、data を8個用意するだけだし。

とりあえず規格書を読め。
331774ワット発電中さん:2010/03/25(木) 17:39:52 ID:XS0+Y3Sg
>>329
そう言う事じゃなくて、[7:0]って書くと8ビット
使えるように見えるってことじゃね?

VHDLだと(7 downto 0)って書くから明らかに「8個」ってわかるのに。
332774ワット発電中さん:2010/03/28(日) 04:43:59 ID:QnJXMeAg
HDLスレの先生!これ、あまりのひどさにトラ技スレ手ではに負えません
どうか教育してやってください
http://science6.2ch.net/test/read.cgi/denki/1267108759/500
500 :774ワット発電中さん:2010/03/28(日) 03:01:42 ID:teNl6CtW
//
//    ちょうど 真ん中だね。
//

module TRAGI (
    input wire   reset,   // reset信号
    input wire   clock,   // clock
    input wire [7:0] DIP_SW,   // ボード上のDIP SW
    output reg [7:0] LED     // ボード上のLED
  );

  reg [24:0] count;          // counter
  reg     clock_0.5sec;

  always @ ( negedge reset or posedge clock ) begin
    if( reset == 1'b0 ) begin
      counter <= 0;
      clock_0.5sec <= 0;
    end else begin
      if( counter < 12000000 ) begin
        clock_0.5sec <= 1'b1;
      end else if( counter < 24000000 ) begin
        clock_0.5sec <= 1'b0;
      end else begin
        counter <= 0;
      end
    end
  end

  reg clock_0.5sec_zenkai;
  always @ ( negedge reset or posedge clock ) begin
    if( reset == 1'b0 ) begin
      LED <= 8'b1;
    end else begin
      if( clock_0.5sec_zenkai==1'b0) && (clock_0.5sec==1'b1) ) begin
//       LED <= { LED[6:0], 1'b0 };   //
        LED <= { LED[6:0], LED[7] };  // バーレルshifter
      end
    end    
    clock_0.5sec_zenkai <= clock_0.5sec;
  end
endmodule
333774ワット発電中さん:2010/03/28(日) 08:43:07 ID:Qwo5C/kf
何やりたいんだろ。
今の記述だと、24Mクロック毎にLEDの点灯位置を変えたいように見えるが。
そもそもcountがcounterになってたり、countのインクリメントがなかったりで
こりゃ動くわけないわな。

reg [24:0] count;
localparam [24:0] INTERVAL = 25'd24000000;

always @(posedge clock or negedge reset)
if (~reset)
  count <= 1'b0;
else if (count == INTERVAL - 1'b1)
  count <= 1'b0;
else
  count <= count + 1'b1;

always @(posedge clock or negedge reset)
if (~reset)
  LED <= 8'b1;
else if (count == INTERVAL - 1'b1)
  LED <= {LED[6:0], LED[7]};
334774ワット発電中さん:2010/03/28(日) 12:38:36 ID:b5f1HE+k
>>333
>localparam [24:0] INTERVAL = 25'd24000000;
localparam って、何でしょうか?
parameter とは、違うのでしょうか?
335774ワット発電中さん:2010/03/28(日) 12:40:22 ID:b5f1HE+k
あと、こんな書き方できるの?
module TRAGI (
    input wire   reset,   // reset信号
    input wire   clock,   // clock
    input wire [7:0] DIP_SW,   // ボード上のDIP SW
    output reg [7:0] LED     // ボード上のLED
  );
336774ワット発電中さん:2010/03/28(日) 12:44:09 ID:Qwo5C/kf
>>334
基本的には同じ。
parameterの場合、呼び出し側から値を変更できるけど、
localparamの場合は変更できない。違いはそれだけ。
337774ワット発電中さん:2010/03/28(日) 13:59:12 ID:Z074WhGo
>>335
こんなって、どこのことだかわからんが、
特に問題ないだろう。
Verilog2001以降ならだが。
338774ワット発電中さん:2010/03/28(日) 16:08:25 ID:b5f1HE+k
>>336 >>337
ありがとう。勉強になりました。

339774ワット発電中さん:2010/03/31(水) 10:41:38 ID:OTdeLcJh
どうでもいいかもしれんけど
GTKWAVEがじりじりとバージョンを上げている・・・しぶい。
340774ワット発電中さん:2010/04/01(木) 00:12:55 ID:j/8mflK7
簡単な除算回路を作りたいと思っているのだけれど、引き放し法をどう記述したらいいのか…。
減算(加算)の結果を得るステート、とかシフトして新たに被除数作るステートとか分ければいいのかな。
このあたりのアルゴリズムを記述するスキル磨かないとだめね…。
341774ワット発電中さん:2010/04/02(金) 10:17:35 ID:/U+FSpOz
大学の教授が研究して考え出した、
理解するのも難儀するアルゴリズムを
回路に実装するのって楽しいですよね。

私の場合は最初はベタ書きでも、無駄な処理サイクルがあっても、
とりあえずsim結果が期待値一致するところまで進めます。
その後の最適化は・・・無能なので・・・
342774ワット発電中さん:2010/04/02(金) 10:37:09 ID:Nuu0KjCE
作る予定の回路を人に伝えるためのスキルも必要・・・

ソフトウェアと比べて歴史は深いけどこの辺は浅い気がする。
343774ワット発電中さん:2010/04/02(金) 11:06:37 ID:JnWOFSK/
>>340
タイガー計算機(機械式)割り算の方法の解説とか探してみれば?
カウンターオブジェクトと必要なメソッドがわかるぞ(w

あとは2進法に置き換えて実装するだけ。アルゴリズム最適化についてはシラン。
344774ワット発電中さん:2010/04/02(金) 11:37:56 ID:VV2Fz5AI
>340
http://www.cqpub.co.jp/hanbai/books/36/36171.htm
わりとそのまんまな本だが、これではいかんの?

タイトルのマニアックぶりでどん引きしかけるが
中身は普通に回路への変換テク上級編だと思う。
345774ワット発電中さん:2010/04/04(日) 00:45:17 ID:EIE+GYZh
>>343
なるほど、検索かけたら出てきた。見てみようありがとありがと。


>>344
よし買ってきた。
ホスト規制かかっててレスポンス遅れたけどこの本いいね。
タイトルの胡散臭い感じがたまらんです。ありがとありがと。
346774ワット発電中さん:2010/04/19(月) 12:00:19 ID:Rtt6NDOz
module xxx ();
  always @ ( ) begin
  end
endmodule
347774ワット発電中さん:2010/04/23(金) 12:28:50 ID:wqQkubA2
GTKWaveってcygwin上でもbuildとINSTALLできるんかな。
gcc4.0になったせいで、コンパイルが通らないっぽいけど。
348774ワット発電中さん:2010/04/29(木) 07:06:43 ID:Rs/4qSRr
シミュレータモドキ作ってみたが、興味ある人なんて居るかな?
verilogをはしょったような言語(自分で考案した)で、
C言語のソースを吐き出してくれるのだが。

一応、VCDファイルで波形確認が出来る。
349774ワット発電中さん:2010/05/03(月) 22:21:01 ID:Dp1wNlA1
デバッガー募集のお知らせですか?
350774ワット発電中さん:2010/05/23(日) 14:43:09 ID:ZN4dh6mZ
最近スレ荒れないな。おもしろくない。
351774ワット発電中さん:2010/05/25(火) 20:40:17 ID:lpM5NbCm
規制まだ解けてないかな?
352774ワット発電中さん:2010/06/01(火) 00:59:07 ID:8XcplhZn
電子産業衰退で書き込み数減少だな
353774ワット発電中さん:2010/06/02(水) 08:42:55 ID:a1IDKALh
作ったツールうpしてみた。

ttp://www.dotup.org/uploda/www.dotup.org932055.exe.html

DL用パスワード:1234
解凍用パスワード:mail欄

実行は、解凍後に./run
cygwin上でリンクしたので、cygwin以外で使えるかは不明
354774ワット発電中さん:2010/06/02(水) 15:20:09 ID:ynEV0bNy
2chにURL貼られたバイナリなんか実行できるわけない
ソース出せ
355774ワット発電中さん:2010/06/02(水) 21:02:17 ID:a1IDKALh
ttp://www.dotup.org/uploda/www.dotup.org933210.gz.html

んじゃ、アタッシュケースも削って、アセンブリソースetcに改変。
DL-key は1234

tgzが使えんので .tar.gzにしたが、なぜか.gzでDLされる。
関係無しに.tar xvfz fuile.gzで解凍できる
356774ワット発電中さん:2010/06/03(木) 00:36:21 ID:mDJqRX+k
それ、どんなツール?
357774ワット発電中さん:2010/06/03(木) 01:05:43 ID:69E6Vl8T
教えてください
ISE + Verilogで、シリアルDAの駆動プログラムを作っています。

16bit,12bit,10bitとシリーズ化されたDAコンバータICで、12bitのものを
駆動しようとしています。送信bit数の共通化のため、
上位4bitは常時'0'で送りなさい、となっています。
ですので、reg [15:0] data; として変数を宣言して、送信します。
ちゃんと実機で動作はするのですが、
ISEは、変化しない上位4bitを見つけては、Warningを出します。
bit16〜bit12まで4bitあるので、ご丁寧に、4回も同じWarningを出してくれます。

そこで質問なのですが、このWarningを取るためには、どのようにすれば良いのでしょうか。
reg [11:0] data; として、bit16〜bit12は、処理上でゼロを送出するのでしょうか。
そんなもん、ほっときゃ大丈夫、という話もあると思いますが、
プロセスウインドウにWarningの△マークが付くのがイヤで、全部緑の○にしたいのです。
よろしくお願いします。

358774ワット発電中さん:2010/06/03(木) 06:17:18 ID:CT09VwSu
verilogの記述次第でどういうwarningが出るかが変わる
シリアル変換している所周りをちゃんと書かないと分からん
359774ワット発電中さん:2010/06/03(木) 21:04:16 ID:HdtVpFyp
>>357
data[15:12]が、4'b0000に固定されているから、警告が出る。
360774ワット発電中さん:2010/06/03(木) 21:35:46 ID:zGobx6n2
reg data_reg[11:0];
assign data = {4'b0000, data_reg};
ってやればWarningとれるかも?

あと、XSTの設定で、そのWarning出さないようにできないのかなあ。
361774ワット発電中さん:2010/06/03(木) 21:44:25 ID:eRkrPEJT
Warningなんて気にしてたらやってられないと思うんだが。
というかWarningが一つも出ないでコンパイル通った事(書き込みまで)のある奴いるの?
362774ワット発電中さん:2010/06/03(木) 23:14:49 ID:Js3VkDtD
>>357
仕事してるとこの手の強迫神経症クンが一番たちが悪い
363774ワット発電中さん:2010/06/04(金) 01:04:13 ID:gx2OSBRm
理由付けの出来るウォーニングはスルーすべき。
364774ワット発電中さん:2010/06/04(金) 07:11:00 ID:g8y1YUD2
ライブラリIP使うだけでWarning出るしなあ。
無視していいのは無視すべき。
365774ワット発電中さん:2010/06/04(金) 07:34:44 ID:Vs3oFJNv
無視してるとどんどん増えて、大切なメッセージを読みこぼす事がありそうなので極力つぶしてる。
366774ワット発電中さん:2010/06/04(金) 09:40:35 ID:EvspQzWb
>>365
ありがち。
C言語でもgccの-Wallでワーニングでないのを基本にしてる。

リファレンスに用意されたプログラムが変数の初期化しないで通るループあって、
解析に手間がかかった経験あり。
渡した相手に突っ込んだら、とぼけやがったし、次にそういうのが無い様に要求したら
逃げやがった。

そういう相手と仕事していると、仕事の手間ばかりが増えて大変です。(涙)
367774ワット発電中さん:2010/06/04(金) 12:33:38 ID:ImM0SAWn
細かいことはわからんのですが、黄△マークが出ているのが、とにかくイヤ。
全部緑○チェックマークにしたいです。
「Generate programming file」意外では、最近お目にかかったことがない。

ISEのverが上がるだけで△が出るし。もうXイヤ。Aに乗り換えようかな。

368774ワット発電中さん:2010/06/05(土) 01:15:51 ID:3ws/ruUv
みんなISEのバージョンはいくつでやってる?
俺はこの間まで9.2だった。やっと10.1にしたところだ。
12.1でやってる人、いるのかなぁ。
369774ワット発電中さん:2010/06/05(土) 02:29:49 ID:lDo7WYiG
メインは11、ノートに12が入れてある
370774ワット発電中さん:2010/06/05(土) 17:14:26 ID:t9UfmR6F
先日10から11に変更したら、操作がゴロッと変わって戸惑ってる中。
Plan aheadでI/Oピン制約するとき、
1ピンずつ「Wクリック→ピンNo入力→Applyボタン」を繰り返さないといけない。
PACEのように表計算っぽく連続して入力したいのに、疲れる。
電圧の同じね。全部LVCMOS3.3Vにしたいのに、デフォルトが2.5Vになってる。
どこかに設定がないかと思うんだけど。使いにくくなった。


371774ワット発電中さん:2010/06/05(土) 19:19:02 ID:dzG5dmJ2
1個コピー>ペースト先複数選択>ペースト
で、コピペできたと思う。
372774ワット発電中さん:2010/06/06(日) 18:28:54 ID:1QJ/VdhF
>>371
ありがとうございます。
>1個コピー>ペースト先複数選択>ペースト
この「1個」というのは、何を指すのでしょうか? 

PlanAheadの、
・画面の下部の表計算っぽい表示のところでは、「1個」選択仕様と思っても「1行」単位でしか選択出来ません。
・画面左中の「PackagePinProperty」では、表形式の表示を触ることすらできないのですが、
どうでしょうか?
373774ワット発電中さん:2010/06/07(月) 13:42:42 ID:OPCH6Ee7
>>366

>ワーニングでないのを基本にしてる。

鰐がどーしたって?
374イザベラ*アイリス:2010/06/07(月) 18:08:21 ID:Oip0qjpn
****************************
****************************
****************************
http://sakutuu.ddo.jp/sakura2/sanka.asp
さくら通信で俺は名古屋の人と交渉する
情報を無料であげよう
しかし私は夜の6時から11時の間だ
ほぼ毎日出現している
私ができるのは

無線と増幅とCPUとVHDLなどのデジタル工学だ
分かりやすく簡単に説明する
****************************
****************************
****************************
375774ワット発電中さん:2010/06/08(火) 16:59:32 ID:D2qoaruY
↑ 仕事が無くなって新しい取引先でも探しているの
376sage:2010/06/11(金) 13:18:51 ID:QdBkcztn
そういえばVerilogの設計のことをプログラムっていうんだっけ?
377774ワット発電中さん:2010/06/11(金) 22:01:30 ID:ottgvxbm
>>376
普通は言わないと思います。
378774ワット発電中さん:2010/06/11(金) 22:15:46 ID:pkFan213
>>376
ここ↓で議論されて、HDLはソフトウェアと決まっています。
http://science6.2ch.net/test/read.cgi/denki/1262623977/492-
379774ワット発電中さん:2010/06/12(土) 00:32:28 ID:BJ7d1jHV
どう見てもハードだという結論だけどな。
ソフトと言ってる奴はただ煽ってるだけじゃん。
380774ワット発電中さん:2010/06/12(土) 05:21:49 ID:xGRkhrM6
どうみてもソフトだと言う結論だけどな。
ハードと言ってる奴は無知なだけじゃん。
381774ワット発電中さん:2010/06/12(土) 13:11:36 ID:i3LndQo6
回路図は絵画、実際の電子回路は彫刻だから、デジタル回路は美術の括りだな。
実際、アートワークっていうしな。

言語化できたら、ハードウェアもソフトウェアとして扱えるわけだ。
まあ、本来のハードウェアって、ヤカンとかフライパンとかだからな。
382774ワット発電中さん:2010/06/12(土) 13:26:58 ID:bov2q0KF
HDLは、ソフトウェアです。
電源電圧変動も、環境温度も、ノイズも関係のない、クリーンな世界で
プログラム記述次第でなんとでもなる、
これをソフトウェアと言わず何と言う?

チームで仕事してるときに必ず言う。
「えっ、パターンミス? 勘弁してよぉ○○ちゃ〜ん」

オシロもロジアナもがあるんだから、
ハード設計者なら自分で信号追って解決して見せろよ。
383774ワット発電中さん:2010/06/12(土) 13:43:51 ID:QNU9nVZo
HDL屋さんでも内部の遅延(タイミング)設計くらいはするんじゃないの?
それとも実チップにフィティングとかしない人もいるのかな。
うちんとこは基板に実装して動かすまでするけど
384774ワット発電中さん:2010/06/12(土) 14:51:28 ID:PgkH9tws
コンパイル結果の確認ぐらいするだろ
DCでやるか、FPGAにするかは別にして

バグ取り前に、ある程度のあたりを付けるため、
一発だけコンパイルかけるとかはやるけどね、普通。

チームリーダのやり方次第ではあるが
385774ワット発電中さん:2010/06/12(土) 14:56:45 ID:WzPm5sgv
HDLでシミュレーションした結果、ロジック的な誤りは無いので、
電気的な要因を探って、電源の問題を見つけたり、
やはり、HDLでシミュレーションした結果、ロジック的な誤りが無く、
ファームの誤りである事を見つけたりした俺は、
ソフト屋なのかハード屋なのかどっちでしょうか?
386774ワット発電中さん:2010/06/12(土) 16:36:44 ID:NAUEMUM0
@Vengineer
387774ワット発電中さん:2010/06/12(土) 16:56:15 ID:ZmjwMPLF
デバグはやれる人がやるだけだろう。
うちは回路設計(ボード)とかファームもやる人がRTLもやるから、
そのソフト屋ハード屋という区別はないな。
ASICで100人超の大規模設計やってる人は、
RTLで閉じるかもしれない。
そういうのと小規模FPGAと比べてもしょうがないだろう。
そもそも実機とか無いし。
388774ワット発電中さん:2010/06/12(土) 20:53:34 ID:WzPm5sgv
>>387
なるほど。
ちなみに、RTL設計と実機デバッグしていたのはASICのごく一部だった。
389774ワット発電中さん:2010/06/13(日) 16:02:11 ID:8dpgnMpm
ソフトだ、ハードだって話、もういいよ。
HDL書きはソフト屋に決まっているから。
390774ワット発電中さん:2010/06/13(日) 23:09:38 ID:3dXCQ4Db
荒らそうと必死な馬鹿は市ね。
391774ワット発電中さん:2010/06/14(月) 07:04:19 ID:qFnRce2G
HDL書く奴はソフト屋って言われて不名誉なのかな。
どうみてもハード屋とは言えないし、別に問題じゃ無いと思うが。
392774ワット発電中さん:2010/06/14(月) 07:11:48 ID:EbN2me3U
また嵐がきたか
393774ワット発電中さん:2010/06/14(月) 16:27:29 ID:QsaJWLE+
>>392
今すごい勢いでテレビにも雑誌にもバンバン出てるよね!
394774ワット発電中さん:2010/06/14(月) 20:07:06 ID:BMavy8N4
万博のコンサート、中止になっちゃったね。
3952SC1815Y:2010/06/15(火) 00:35:07 ID:FVx168LB
>>394
それはSMAPでしょ
396774ワット発電中さん:2010/06/15(火) 00:39:10 ID:ZMzqUIMZ
あらら、あっちのスレでフルボッコにされた恨みをこっちのスレでぶつけてるのか。
可哀そうな奴。
397774ワット発電中さん:2010/06/15(火) 10:30:14 ID:nHiSV1aX
round_前半_|~|_|~|_|~|_|~|_|~・・・・
round_後半___|~|_|~|_|~|_|~|_・・・・

こんな信号を作ろうと思ってるんですが
良い信号名ありませんかね?

俺ならこう付けるってのを教えて下さい。
398のうし:2010/06/15(火) 14:38:08 ID:Ei3v2OT5
信号名は波形じゃなく機能や用途で付けようぜ
399774ワット発電中さん:2010/06/15(火) 14:41:41 ID:lj5Xj89R
round_zen
round_kou
400774ワット発電中さん:2010/06/15(火) 19:38:33 ID:hWgSnxqG
コンパイルするとインプットが使われていないので消します、といわれます。

なにがいけないのでしょうか。

port(
S1:in std_logic;
T1:in std_logic;
D1:out std_logic;
)

...

signal X1:std_logic;

process(S1,X1)
begin
if(S1='1' and 1='1') then
X1<=X1+'1';
end if;
end process;
401774ワット発電中さん:2010/06/15(火) 19:40:26 ID:hWgSnxqG
>>400

コンパイルするとインプットが使われていないので消します、といわれます。

なにがいけないのでしょうか。

port(
S1:in std_logic;
T1:in std_logic;
D1:out std_logic);
...
signal X1:std_logic;

process(S1,X1)
begin
if(S1='1' and T1='1' and S1'event) then
X1<=X1+'1';
end if;
end process;
402774ワット発電中さん:2010/06/15(火) 20:09:08 ID:nAL9QZXI
センシティビティリスト
403774ワット発電中さん:2010/06/15(火) 20:13:11 ID:hWgSnxqG
>>402
レスありがとうございます。
process(S1,T1,X1)でしょうか??
404774ワット発電中さん:2010/06/15(火) 23:11:59 ID:xiN0XHUL
X1はセンシティビティリストに入れちゃダメでしょ
405774ワット発電中さん:2010/06/16(水) 00:14:28 ID:8JX/1jzm
なんでですか?
406774ワット発電中さん:2010/06/16(水) 01:17:32 ID:teIWPiMt
D1をドライブしてる人は?
4072SC1815Y:2010/06/16(水) 01:20:53 ID:jqCV4qtR
port(
  S1:in std_logic;
  T1:in std_logic;
  D1:out std_logic
);
  ...
  signal X1:std_logic;

  process(S1,X1) begin
    if(S1='1' and T1='1' and S1'event) then
      X1<=X1+'1';
    end if;
  end process;

Verilogしかわからないオレがエスパーしてみる。
X1が変化したら中身を実施するよ!と言っている中に、X1がいるのって
おかしくないか?

関係ないけど、D1はどこにあるの?
408774ワット発電中さん:2010/06/16(水) 08:48:38 ID:yuk/2ce4
>>404-407
ありがとうございます。

今日process(S1)とprocess(S1,T1)で試してきます。
中身が変化したら実行という意味ではprocess(S1)でいいと思ったんですが、
先生がX1もいれると言っていたような気がしていました。
409774ワット発電中さん:2010/06/16(水) 08:53:05 ID:yuk/2ce4
>>407
すいません。
X1はstd_logic_vector(3 downto 0);で
if(X1="0000")then
D1<='1';
というような感じになっています。

もしかしてこれがおなじprocessだったらprocess(S1,X1)で
別プロセスだったらprocess(S1)とprocess(X1)ということでしょうか。
410774ワット発電中さん:2010/06/16(水) 08:58:18 ID:urhT5tSc
何かすごい誤解があるようだから、コードを勝手に切りだすのではなくて
全コードを貼るなりうぷするなりしてくれ
411774ワット発電中さん:2010/06/16(水) 10:16:54 ID:wwDeAD+i
>>409
基本が判っていないみたいだね。
S1がクロックでステート動作したいのであればX1は要らない、というかあったらエラーでない?
412774ワット発電中さん:2010/06/16(水) 10:25:07 ID:YvhxCa8n
学校の宿題関係なら、なぜ先生に聞かないんだ?

その理由を教えてくれ
413774ワット発電中さん:2010/06/16(水) 10:46:33 ID:teIWPiMt
悪いこと言わない、「わからない」とちゃんと言ってもう一度先生に教えてもらった方が良い。
この問題を解くことが目的ではなく、あなたがちゃんと理解することが目的だから。
414774ワット発電中さん:2010/06/16(水) 13:01:28 ID:8phVUdbP
>>397
round_pos
round_neg
かなぁ。エッジと間違えそうだけど。

か、round_first round_second .....

はいはい亀レス
415774ワット発電中さん:2010/06/16(水) 13:44:25 ID:lfxrv5WP
>>398-399
>>414
ありがとう。参考にします。

>波形じゃなく機能や用途で付けようぜ
おっしゃる通り機能通りの名前でございます。
前半とか後半の英語をどうしようかと。
416774ワット発電中さん:2010/06/16(水) 15:58:42 ID:rJKyjnlK
後半のことを英語でsecond halfと言うらしい。
417774ワット発電中さん:2010/06/16(水) 19:40:41 ID:179z8tFx
>>409
スレ無駄に消費するから情報の小出しはするな。
 問題部分を単純化して短くして全文貼り付けるか、
 長ければどこかにアップロードせよ。
 コンパイルとは何か?(合成?シミュレータにかけるためのコンパイル?)
 ツールは何か?
 正確なエラーメッセージは何か?
 やりたいことは何なのか?

"インプットが使われていないので消します"
基本的に入力信号の変化が出力に現れない場合、
最適化されて回路そのものが出来ない。
>>401
の例だと、X1の変化が何らかの出力信号として外に出ていなければ、
そういった内容のメッセージが出るかもしれない。
>>409
これによるとX1の変化によって外部出力のD1も変化するようだから、
今ある情報では見当がつかない。

>if(S1='1' and T1='1' and S1'event) then
上記は次のどちらとして解釈されるか言語上は未定義。
1.
if (T1='1')then
 if(S1='1' and S1'event) then
2.
if(S1='1' and S1'event) then
 if (T1='1')then
出来上がる回路が違うのでそのような記述をしてはいけない。
418774ワット発電中さん:2010/06/17(木) 07:18:16 ID:1B27sq5u
>>417
>>410-413
すごく分かりやすい説明をありがとうございます。m(_ _)m
先生の説明はまったくわからないので途中で聞くのを止めました;;
今日もういちど試して来ます。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity VHDLQ265 is
port(sw1,dip1:in std_logic;--sw1(CLK),dip1(on/off)
tr1,tr2:out std_logic--;tr1(16^0の桁),tr2(16^1の桁)
a1,b1,c1,d1,e1,f1,g1:out std_logic);--デジタル表示

end VHDLQ265;

architecture Behavioral of VHDLQ265 is
signal X1:std_logic_vector(3 downto 0);
signal X2:std_logic_vector(3 downto 0);

begin
X1<="0000";
X2<="0000";

process(sw1)
begin
if(dip1='1' and sw1='1' and sw1'event) then
if(X1="1111") then
X2<=X2+'1';
end if;
X1<=X1+'1';
end if;
end process;

process(X1)
begin
tr1<='0';
tr2<='1';

if(X1="0000") then--dip1='0' and dip2='0' and dip3='0' and dip4='0') then
a1<='0';
b1<='0';
c1<='0';
d1<='0';
e1<='0';
f1<='0';
g1<='1';
elsif(X1="0001") then--dip1='0' and dip2='0' and dip3='0' and dip4='1') then
中略
process(X2)
中略
end if;
end process;

end Behavioral;
419774ワット発電中さん:2010/06/17(木) 07:23:29 ID:1B27sq5u
>>418
xilink社のツールでコンパイルすると
synthesis
translate
Fit
generate program
のうちFitだけwarningがでます。
WARNING:Cpld:1007 - Removing unused input(s) 'dip1'. The input(s) are unused
after optimization. Please verify functionality via simulation.

WARNING:Cpld:1007 - Removing unused input(s) 'sw1'. The input(s) are unused
after optimization. Please verify functionality via simulation.

WARNING:Cpld:1006 - Design 'vhdlq265' has no inputs.

if(dip1='1' and sw1='1' and sw1'event) then
if(X1="1111") then
X2<=X2+'1';
end if;
X1<=X1+'1';
else
X1<=X1+'0';--<==この一文をいれて試してきます。
end if;

m(_ _)m
420774ワット発電中さん:2010/06/17(木) 07:44:32 ID:Nb480Pcu
コンパイルよりもまずはSimulationしてみるべき。
その記述だとX1とX2が常時"0000"になるんじゃね?
421774ワット発電中さん:2010/06/17(木) 09:14:23 ID:MJjvddtV
>>418
VHDLはすべてのロジックを記述するのがお約束。
elseは必ず書きましょう。

process(sw1)
begin
if(dip1='1' and sw1='1' and sw1'event) then
if(X1="1111") then
X2<=X2+'1';
else
X2<=X2;
end if;
X1<=X1+'1';
else
X1<=X1;
X2<=X2;
end if;
end process;
422774ワット発電中さん:2010/06/17(木) 16:36:31 ID:bsJQ9hH2
>>420
教授の中に
4年の時しかVerilog使わせないのにシミュレーションさせても仕方ない
とかいう理由でFPGAでの動作検証しかさせてない人を思い出した。

ひょっとするとこのVHDLの学生さんはそういう人の下かもしれない。

そういやVHDLのシミュレーションとか忘れたなぁ・・・
423774ワット発電中さん:2010/06/17(木) 21:29:53 ID:fq7Awvyp
>>422
マスクを作る前に、シミュレーションで、ある程度の検証出来るのが
HDLを使うメリットの一つだけど、それを飛ばしちゃよろしくないな。

FPGAでやるのも悪くは無いけど、実際のチップとは違う部分があるから、
できれば、アナログセルとかメモリセルのモデルを組み込んだシミュレーション技法まで、
今の教育課程では入れた方が良いと思う。
424774ワット発電中さん:2010/06/17(木) 22:46:51 ID:W2JSwwHm
アナログセルの挙動は、馬鹿には理解出来ないだろ。

賢くても、結構経験が必要だろうし。

馬鹿でも分かる内部回路のみにしておくのが有用かな。
425774ワット発電中さん:2010/06/17(木) 23:21:05 ID:Ey+wtKxc
>>418
正直基礎からやり直したほうが・・・
一応エスパーしとく。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity VHDLQ265 is port
  ( sw1,dip1:in std_logic;
    tr1,tr2,a1,b1,c1,d1,e1,f1,g1:out std_logic
  );
end VHDLQ265;
architecture Behavioral of VHDLQ265 is
  signal X:std_logic_vector(7 downto 0);
  signal tr:std_logic_vector(1 downto 0)
  signal dig:std_logic_vector(6 downto 0);
begin
  tr1 <= tr(0); tr2 <= tr(1);
  a1 <= dig(0); b1 <= dig(1); c1 <= dig(2); -- 略
  tr <= "00"; -- trのタイミングを何で作るのか想像できん。
  process (sw1) begin
    if(sw1='1' and sw1'event) then -- チャタリング心配
      if (dip1='0') then X <= (others => '0');
      else X <= X +1;
      end if;
    end if;
  end process;
  process(tr,X)
    variable a : integer;
  begin
    if (tr="01") then a := conv_integer(X(3 downto 0));
    else a := conv_integer(X(7 downto 4));
    end if;
    case(a)is
    when 0 => dig <= "0000001";
    when 1 => dig <= 略;
    when others => dig <= 略;
    end case;
  end process;
end Behavioral;
426774ワット発電中さん:2010/06/18(金) 18:55:47 ID:sLnApqv1
>>420-422
>>424-425
ありがとうございます。elseつけてできました。
数字を表示するパーツに電源を供給するためにトランジスタ(tr)をLowにする必要がありました。
チャタリングしました;;
caseの方が並列に処理できるので良いのですね。

みなさんに授業してもらったほうが遥かに分かりやすかったです。
ありがとうございましたm(_ _)m
427774ワット発電中さん:2010/06/18(金) 19:14:49 ID:VbfbXzIN
> caseの方が並列に処理できるので良いのですね。
これってつまり、>>389ってこと?
428774ワット発電中さん:2010/06/18(金) 23:05:28 ID:4Hbop9m5
>>426
教える側が糞だとしても、分からないことを人のせいにするな。
VHDLに関する情報はあちこちに溢れている。
君が分からなくとも教える側は痛くもかゆくも無い。
自ら調べる癖を付けよ。
429774ワット発電中さん:2010/06/19(土) 03:28:04 ID:WzZOI2QE
教えてください。
XilinxのISEで、ver10の時に問題なく通ったプロジェクトが、
ver11でやってみると、いきなりSyntaxエラーが出てしまいます。
言語はVerilogです。
エラーの内容は、「変数の2重定義」だとか「`ABC」が定義されていないとかです。

top.vで、AAA.v BBB.v CCC.vをincludeする要に記述してあります。
module top (...)
  wire W1;
  reg r1;
   :
   :
  `include "AAA.v"
  `include "BBB.v"
  `include "CCC.v"
endmodule

エラーの内容は、AAA.vやBBB.vを単体で文法チェックしたようなエラーで、
「AAA.vの中で、W1が定義されていない」とか
「BBB.vの中で、r1が定義されていない」とかです。
なんで? top.vの最初に宣言してあるじゃん!!!と思うのですが。

僕が何かおかしな勘違いをしているでしょうか?
宜しくお願いします。
430774ワット発電中さん:2010/06/19(土) 05:35:32 ID:5YYuW04f
>>429
プロジェクトへのファイルの登録順じゃない?
431774ワット発電中さん:2010/06/20(日) 19:21:45 ID:2LU/1W8a
>caseの方が並列に処理できるので良いのですね。
432774ワット発電中さん:2010/06/20(日) 20:00:15 ID:sqbfH90G
>>429
もしAAA.vとかBBB.vをプロジェクトに登録してるなら
外してtop.vだけにしてみるとか?

あと、単独でコンパイルできないファイルの拡張子は
他と区別するためにvhのほうがいい気がする。
まあ、好みは人それぞれだろうけど。
433774ワット発電中さん:2010/06/21(月) 13:42:23 ID:djdnVH8p
>>429
include文の中に回路記述はあんまり書かないかなぁ。
defineとかparameterぐらいしか

エラー文から推測してるけど、そういうことしてなかったらごめん。
434774ワット発電中さん:2010/06/21(月) 19:25:03 ID:Ud0BHt//
>>429
端折って書いてるから分からんが、トップはゲートレベル記述?
ならincludeじゃなく
マズタ名 インスタンス名(接続)と書けば問題ないのでは?
435774ワット発電中さん:2010/06/21(月) 22:32:13 ID:vj+GHTqt
超能力を求められる質問が多いな。
メーリングリストの例だが、掲示板でも共通すると思うので、読んで損は無い。
ttp://www.hyuki.com/writing/techask.html
436774ワット発電中さん:2010/06/22(火) 10:01:02 ID:re71mwIF
>>435
↑みたいに書いたら、「3行でまとめろ」って言われるぜ

437774ワット発電中さん:2010/06/22(火) 22:14:33 ID:9xMlea0R

verilogで、C言語のプロトタイプ宣言のような記述は出来ないでしょうか?
「このインスタンス名は今回初めて登場だけど、
 あとで出てくるから、この場は見逃してね」
みたいな。
438774ワット発電中さん:2010/06/22(火) 23:14:43 ID:9xMlea0R
以前のverのISEで作成したucfファイルを ISE11でインプリメントすると、
エラーがメチャメチャ出ます。PaceのucfはPlanAheadだと理解できないのでしょうか?
変換するツールとかあるでしょうか? みなさん、どうしていますか
439774ワット発電中さん:2010/06/22(火) 23:51:12 ID:zXeddzm5
>>431
普通に出来るだろ。
てかプロトタイプ宣言に代わるものすらいらない。
Cに置き換えて考えるのはやめた方がいい、マイコンの記述言語とHDLは根本的に違うから。
440774ワット発電中さん:2010/06/23(水) 00:10:37 ID:n0cfqGfg
SystemCでもやってろ、ってことですね、SystemCについて詳しく知らんけど。>Cとは違うんだよ、Cとは!
441774ワット発電中さん:2010/06/23(水) 00:16:26 ID:Dg056Gnp
Cを知ってるからSystemCならHDLが書けるぜと思ってる馬鹿はそれでいいんじゃね?
論理合成で挫折するのが目に見えてるけどなw
442774ワット発電中さん:2010/06/23(水) 01:33:13 ID:454FGRLk
Cのフロントエンドプロセッサを噛ませば、マクロレベルでの細工はできそうだけどな。
まあ、Cのじゃなくても、テキスト編集系のスクリプト言語処理系でもいいけど。
verilogなら`ifdefがあるから、条件コンパイルもできるから、そんな必要性はない気もするけど。
やればできるけど、そんな必要性を感じるほどHDL書いてないしなあ。
443774ワット発電中さん:2010/06/24(木) 20:15:52 ID:hO7hPwbC
C言語で書いたアルゴリズムをVHDL化したいのですが、
まずは浮動小数点数で記述しているところを、固定小数点で書き直して、
必要なビット幅を詰めていきたいと思っています。
そこで、固定小数点数演算の考え方や注意すべき点などを整理したく、
参考になる書籍やWebサイトをご存知でしたら教えてください。
よろしくお願いします。m(_ _)m
444774ワット発電中さん:2010/06/24(木) 20:44:46 ID:U/n+lb70
整数演算からやり直しませう
445774ワット発電中さん:2010/06/24(木) 23:17:24 ID:NZKGCQ1v
固定小数点は、パーセントとかPPMで計算するのと同じですよ。
他の系とのインターフェース(パーセントなら系に入る時は100倍し、系を出る時は100で割る)さえ気を使えばよくて、
系の中では整数演算そのものですよ。
扱う数値範囲に応じて、小数点の位置を変えてみたりするとかですかね。
446443:2010/06/25(金) 00:31:43 ID:uABfpEqy
>>444-445
ありがとうございます!
本質的には整数演算、ということなんですね。
あとは計算過程でのオーバーフロー、アンダーフロー、小数点位置の調整(常にQ何表記なのか意識)に
注意といったところでしょうか。

C言語ソース上での固定小数点化をスムーズに行うため、
固定小数点数クラス型を作ろうかと画策中です。
コンストラクタでビット幅、小数点位置を指定するようなもので、
=、*、/といった演算子はオーバーロードすることで、固定小数点化ならではの処理をクラス内に
隠蔽してやろうという魂胆です。
このようなクラス型を用いれば、既存のCソースのfloat型宣言記述を「CFixed」みたいに書き換えるだけで、
固定小数点化の効果を検証できるのではと思っています。
型宣言部以降の演算部分は書き換えることがないので、間違いが起こりませんし、
各固定小数点数のビット幅をランタイムで変化させながら効果を検証するといったこともでき、
調整の効率が高まるのではないかと期待しています。

ありがとうございました。
447774ワット発電中さん:2010/06/25(金) 00:53:16 ID:az8cw8Mz
>>446
必要な最大bit数は扱う値の最大値と演算の内容で求め、
そこからどのくらい削るかは仕様から決める、という感じですかね。

自分もそういうクラス作ってます。C++が多いです。
bit精度の検証とか演算回数の計測とか検証用データの作成とかに
使ってます。
448774ワット発電中さん:2010/06/25(金) 13:15:10 ID:M8ADDY/7
CからRTLをぽいっと出すツールはたけーもんなぁ・・・
動くかどうかわからんし
449774ワット発電中さん:2010/06/25(金) 13:38:30 ID:rxDX+Ibh
あまり普通には動かないだろ
450774ワット発電中さん:2010/06/25(金) 20:14:40 ID:F0yd0Jwy
多分シミレーションは出来ても合成出来ないだろ。
451774ワット発電中さん:2010/06/25(金) 22:21:06 ID:cp6VFwdJ
「固定小数点数クラス」でググったら
独自実装した話が大量に引っかかる
452443:2010/06/27(日) 01:12:00 ID:GbRRaOeG
>>447
>必要な最大bit数は扱う値の最大値と演算の内容で求め、
>そこからどのくらい削るかは仕様から決める、という感じですかね。
なるほど。
とても参考になりました。
ありがとうございます。

>自分もそういうクラス作ってます。C++が多いです。
おお、クラス作られたんですね!

>bit精度の検証とか演算回数の計測とか
なるほど、クラスにすればそういうことが可能ですね。
こういった機能も取り入れたいです。

>>448
3社ほど評価使用しましたが、便利そうでした。
結局、不景気と値段が高いのとで不採用になりましたが・・・
でもVHDLでガリガリ組む経験もしたかったので、別によかったかなと。

>>451
ほんとですね。
これは参考になります。
ありがとうございます。
453774ワット発電中さん:2010/07/05(月) 12:06:19 ID:wN/h3tXV
教えてください。

FPGAで、Verilogで、duty50%の1/3分周器を作りたいと考えています。
普通に考えると、
always@( posedge clock ) begin
  if( count==2 ) begin
    count=0;
  end else begin
    count++;
  end
end
assign out=(count==0)? 1'b1 : 1'b0;
とかになると思うのですが、これだとdutyが1:1になりません。
assign out=(count==1.5)? 1'b1 : 1'b0;
だと50%になりますが、1.5はできないと思います。
どのようにすれば良いでしょうか。
454774ワット発電中さん:2010/07/05(月) 12:28:22 ID:C0awEyf4
通常のFFを使う限り、dutyが1:1のを作るのは不可能。

また、クロック目的でassignで生成した出力を使うと
ヒゲが出たりして痛い目にあう。

count[1]が2の時だけ'1'なのでそれを使うのがお勧め。
455774ワット発電中さん:2010/07/05(月) 13:18:24 ID:wN/h3tXV
ありがとうございます。
やっぱり_っぽいですよね。

書き込んでから考えたのですが、
00→01→10→00→・・・を、
000→001→010→011→100→101→000→・・・として、
0,1,2→H、3,4,5→Lで、50%になることがわかりました。
早速やってみたのですが、恥ずかしくて結果が書けません。(悲)

456774ワット発電中さん:2010/07/05(月) 13:23:44 ID:C0awEyf4
それは6分周だろ。w

FPGAで禁じ手のRS-FFを使えば50%に近いのを作れるが、
入力クロックのdutyとdelayばらつき次第で微妙に比率が変わる。

6分周でも 1=>6としてMSBを使えばFFからの直接出力が可能となる
457774ワット発電中さん:2010/07/05(月) 17:34:01 ID:tz6hpByL
>>455
PLLかDCM使った方がいい。
458774ワット発電中さん:2010/07/05(月) 21:45:17 ID:0OaxSJ+W
duty33%とduty66%の信号を交互に出して、
外部回路でローパスかけたら、それっぽくなんないかな?
459458:2010/07/05(月) 21:52:38 ID:0OaxSJ+W
いまエクセルの罫線で、タイミングチャートかいてみたら、
全然それっぽく無いと分かった。
460774ワット発電中さん:2010/07/05(月) 22:54:00 ID:0OaxSJ+W
duty33%の3分周信号Aと、
信号Aを半相ずらした(立下りエッジFFで作成)信号Bを作り、
AとBをorして出力するとか。
461774ワット発電中さん:2010/07/05(月) 23:27:42 ID:J6ZsP2Yi
みんなで意見を出し切った頃に質問者が一言。
「31KHzの信号作りたいだけなんだけどね。」とかないかな?
462774ワット発電中さん:2010/07/05(月) 23:48:14 ID:wN/h3tXV
みなさん、ありがとうございます。
現在の周波数のままで、「1/奇数」のduty50%は、難しいことがわかりました。
DCMのFXで2倍して、FFで1/2がいいみたいですね。が、CPLDにはDCMは無いことも判明。
だるまさん状態です。

みなさん、いろいろと考えてくれて、ありがとうございました。
>>461
31kHzだとおいしいことがあります?
僕は、3MHzくらいの周波数でしたが。
463774ワット発電中さん:2010/07/06(火) 04:11:25 ID:e/set0Kb
RS-FFを使えばこんなのが出来るが、RSのところだけ外部に出さないと弾かれるかもね。
(デバッグしてないので動きが変かもしれないが)

always@( posedge clock ) begin
  mctr <= {~&(mctr[1:0]),mctr[1]} ; // 3-count
end
always @( negedge clock ) begin
  ctr1 <= mctr==2&b01 ; // half-clk-delay
end
assign ckrst_x = ~({mctr,ctr1}==3'b011 ;
assign ckset_x = ~({mctr,ctr1}==3'b110 ;
// rs-FF
assign rsff_r= ~({rsff_s,ckkrst_x}==2'b11) ;
assign rsff_s= ~({rsff_r,ckset_x}==2'b11) ;
464774ワット発電中さん:2010/07/06(火) 10:50:25 ID:+UaWFo9N
>>462

>>461では無いが

> 僕は、3MHzくらいの周波数でしたが。

21.47727MHz位のクロック使ったら?

465774ワット発電中さん:2010/07/06(火) 20:07:12 ID:sVq8herg
>>456
> FPGAで禁じ手のRS-FFを使えば50%に近いのを作れるが、
> 入力クロックのdutyとdelayばらつき次第で微妙に比率が変わる。
そこまで求めてなさそうな・・・・
466774ワット発電中さん:2010/07/06(火) 20:11:59 ID:EQblFw0q
何、その禁断の秘術みたいなの!?
何かカッコイイw
467774ワット発電中さん:2010/07/06(火) 22:18:11 ID:TK73qpJ+
D-FFだけでも出来そうだが。
468774ワット発電中さん:2010/07/06(火) 23:00:27 ID:uAVXCQY4
>>453

always@( posedge clock ) begin
  if( count1==2 ) begin
    a <= '0'
    count1=0;
  end else if( count1==1 ) begin
    a <= '1'
    count1++;
  end else if( count1==0 ) begin
    a <= '0'
    count1++;
  end
end//'a'は2クロック目の立ち上がりのみ1を出力

always@( negedge clock ) begin
  if( count2==2 ) begin
    b <= '1'
    count2=0;
  end else if( count2==1 ) begin
    b <= '0'
    count2++;
  end else if( count2==0 ) begin
    b <= '0'
    count2++;
  end
end//'b'は3クロック目の立下りのみ1を出力

c <= a or b//'c'は「2クロック目の立ち上がり」と「3クロック目の立下り」で'1'

always@( posedge c ) begin
  out <= not out;
end//'c'の立ち上がりでoutを反転

これで1/3になんね?wwwwwwwwwww
469774ワット発電中さん:2010/07/06(火) 23:05:04 ID:TK73qpJ+
>「1/奇数」のduty50%は、難しいことがわかりました。

1、ポジクロックでカウンター回す。
2、ネガクロックでカウンター回す。
3、ポジ、ネガの立ち上がりエッジをOR取ってそれを1/2分周すれば一応1/奇数のDuty50%
は実現できる。
この時ネガのカウンターは変則にする必要がある。
470774ワット発電中さん:2010/07/06(火) 23:07:49 ID:TK73qpJ+
あれ、書いてる間にダブったかな?
471774ワット発電中さん:2010/07/06(火) 23:26:05 ID:hvCn6YM5
>>468
verilogよく分からんのだが、
↓これじゃだめなの?
always@( posedge clock ) begin
  if( count==2 ) begin
    count=0;
    a <= '1'
  end else begin
    count++;
    a <= '0'
  end
end
always@( negedge clock ) begin
  b <= a
end
out <= a or b
472774ワット発電中さん:2010/07/07(水) 00:07:26 ID:n4Xmt9ic
>>471うめぇwww
473774ワット発電中さん:2010/07/08(木) 19:25:29 ID:cRgo3djp
やや感動したので整形しとく

module div3(
CLK,
RST_X,
ENB,
CLK_DIV3_OUT
);

input CLK;
input RST_X;
input ENB;

output CLK_DIV3_OUT;

reg [1:0] Q;
reg [1:0] Q_neg;

wire Q_num2;
wire Q_neg_num2;

always @(posedge CLK or negedge RST_X)
begin
   if(!RST_X)
      Q <= 2'd0;
   else if (ENB)
   begin
      if(Q_num2)
         Q <= 2'd0;
      else
         Q <= Q + 2'd1;
   end
   else
      Q <= Q;
end

always @(negedge CLK or negedge RST_X)
begin
   if(!RST_X)
      Q_neg <= 2'd0;
   else
      Q_neg <= Q;
end

assign Q_num2 = (Q == 2'd2);
assign Q_neg_num2 = (Q_neg == 2'd2);

assign CLK_DIV3_OUT = Q_num2 | Q_neg_num2;

endmodule


・・・空白うまく出てなかったらごめん
474774ワット発電中さん:2010/07/08(木) 20:16:33 ID:mUfKUoGV
assign clkx2 = clk ^ !clk;
475名無しさん@そうだ選挙に行こう:2010/07/10(土) 14:28:03 ID:H/f6/TFn
みんな気にせずnegedge使っているけど、
元のクロックのduty 50%は保証されてるの?
476名無しさん@そうだ選挙に行こう:2010/07/10(土) 19:50:03 ID:v4NPhpjn
477名無しさん@そうだ選挙に行こう:2010/07/11(日) 00:51:41 ID:ryXbezxy
PLL通して1/2分周したクロックならDutyは保障されてるけど。
478名無しさん@そうだ選挙に行こう:2010/07/11(日) 19:06:45 ID:1jnzDgAF
>>462
479774ワット発電中さん:2010/07/14(水) 23:57:49 ID:TDmmEMFY
ステートマシンについての質問です。
ムーア型ステートマシンを記述するときalwaysを3つ使い
状態決定部、状態保持部、制御信号出力部に分ける理由なんですか?
なぜすべてをまとめて1つにalwaysで記述しないほうが良いですか?
480774ワット発電中さん:2010/07/15(木) 00:41:03 ID:Yy2se1Ad
わかりません
481774ワット発電中さん:2010/07/15(木) 17:10:07 ID:IgO1J6gJ
>>498

じゃ、ミーリーはどう書くの?
482774ワット発電中さん:2010/07/15(木) 17:20:47 ID:Yy2se1Ad
>>481
今度の土日くらいになりそうだよ。
483774ワット発電中さん:2010/07/17(土) 15:41:19 ID:J1+JNm5o
「組み合わせ回路」と「順序回路」の違いに関してなんですが、
ラッチが付いた回路は組み合わせ回路でしょうか?
だとすれば、フリップフロップが使われる=順序回路という自分の考え方は訂正しないといけません・・・
484774ワット発電中さん:2010/07/17(土) 15:51:03 ID:ho1SDpvU
ラッチとFFは違う品
485483:2010/07/17(土) 15:54:01 ID:J1+JNm5o
>>484
ありがとうございます。
FFはより原始的な構成要素であって、それの使われ方によって
DFFやラッチ等となる、という印象を持っています。
486774ワット発電中さん:2010/07/17(土) 16:49:26 ID:HC3/7o4B
>>483
フリップフロップが使われる=順序回路
これは「=」ではないよ。
487774ワット発電中さん:2010/07/17(土) 17:08:21 ID:Rm4tYSlp
同期回路は?
488483:2010/07/17(土) 17:23:37 ID:J1+JNm5o
>>486
やはりそうでしたか。
すっきりしました!

>>487
特に何と同期するかを明記しない場合、「クロック信号と」同期する回路を指すと理解しています。
489774ワット発電中さん:2010/07/17(土) 20:00:26 ID:R2gQ7+Fc
世の中にはクロックを用いない論理回路も存在する
RS-FFみたいなので値を保持しつつ、スパゲティ式に値の加工を伝播させて…という形で

データ駆動型等で書かれているはず

>483が何と何をどう区別したいかが今ひとつ不明
490774ワット発電中さん:2010/07/18(日) 01:23:53 ID:vUfvP/U/
この場合のラッチってトランスペアレント型ラッチのこと?
どっちにしろFFなりラッチなり入ってれば、もう組合せ回路ではなよ
491483:2010/07/18(日) 01:47:58 ID:XehrasD0
>>490
はい、トランスペアレント型のことです。

>どっちにしろFFなりラッチなり入ってれば、もう組合せ回路ではなよ
うーん、やはり「以前の状態が絡む回路」ということで「順序」回路になるんですかね・・・

VHDLを勉強していて、process〜end process外に書かれた回路はすべて組み合わせ回路になるという
解釈でいいのかな?という疑問が湧いたんですが、ラッチが生成されることがあり、これをどう捉えるかで
上記解釈の成否が変わると思ったので気になりました。

ちなみに、process〜end process内に書かれた回路は書き方によっては組み合わせ回路が生成されることもあり
(コンパイラの最適化?)、常に順序回路が生成されると考えないほうがいいと解釈しています。
492774ワット発電中さん:2010/07/18(日) 23:44:11 ID:TAyAPpYb
>>491
クロックイベントを書いて組み合わせを作ることはないと思うが?
勿論クロックイベントが無ければ組み合わせorラッチになるが、基本的に同期回路設計ではラッチは悪だしなぁ
493774ワット発電中さん:2010/07/19(月) 15:43:40 ID:L2AZNg/j
質問です。
ACEX1K の内蔵メモリに読み書きしたいんですが

ttp://japanese.sugawara-systems.com/tutorial/tutorial/sram.htm
↑のページを参考にしてsram1port_32x256.vhd や .qip を生成してプロジェクトに読み込みました。

ですが、そこからメイン?のArchitectureで読み書きする方法がまったくわからないので
教えてください。よろしくお願いします。
Quartus II Web Edition8.1を使用しています。
494774ワット発電中さん:2010/07/19(月) 18:29:38 ID:EEHKPqHI
>>493
そのページのテストベンチ31〜34行目でやってるような感じでインスタンス化し、
読み書きする信号線に結線してあげればOK。
VHDLでのインスタンス化記述のサンプルはMegaWizardが吐き出してたと思う。
495774ワット発電中さん:2010/07/20(火) 11:54:42 ID:JogNLnr5
>>491
process文はVHDLの言語の構文であって、
FFを作るかどうかはprocess文には直接関係が無い。
VHDLのソースを読んで合成ツールが勝手にFFを類推しているだけ。

VHDLの構文は同時処理文であるから、文がソース中どこにあっても全く同じ意味になる。
 a<=b;
 b<=c;
と書いても
 b<=c;
 a<=b;
と書いても同じ意味。
process文は上から順に解釈させたい場合に使用する。
文がどの位置にあるかで意味合いが異なってくる。
 process(b,c,x,y)begin
  if(x=y)then
   a<=b;
  else
   b<=c;
  end if;
 end process;

 process(b,c,x,y)begin
  if(x=y)then
   b<=c;
  else
   a<=b;
  end if;
 end process;
とでは意味が異なる。
上から順に解釈すべきif文は結果的にprocess文中にしか存在しえない。(generateとか例外があり)
FFをVHDLで表現するには、if文やwaitといった順次処理的構文でしか表現できず、
都合VHDLでFFを合成ツールに類推させる場合、必ずprocess文を使うことになる。
496483:2010/07/21(水) 00:56:09 ID:JYcY4CAz
>>492
基本、process文はClkをセンシティビティにして書くべきということですね。
しかし、process外のコンカレント部でもwhen〜elseの記述内容によってはラッチができてしまいます・・・
気を付けなくては。

>>495
詳細な説明、ありがとうございます。
あれから勉強を続けて、メモリの生成方法を学びました。
そこではコンパイラにどのようなメモリ(分散メモリ、ブロックメモリ)を推測させるかというのがポイントに
なると知りました。
この「推測」って、メモリ以外でも重要ですよね。
教えていただいたことも参考に、どのような回路ができあがるのか常に意識しながら記述したいと思います。

ありがとうございました。
497774ワット発電中さん:2010/07/24(土) 01:21:04 ID:asqL3UnZ
gtkwaveがwindows7-64bit上で動いてくれない・・・誰か助けて下さい
本体は公式ページので、
gtk+_2.20.0-1_win64.zipとzlib_1.2.3-2_win64.zipの中身をつっこんだんだが
正しく起動できませんでしたになってしまう。。。
498774ワット発電中さん:2010/07/24(土) 09:14:48 ID:U2uK1yJH
何故素直にModelsim使わない?
499774ワット発電中さん:2010/07/24(土) 10:48:41 ID:asqL3UnZ
32bit版のDLLで普通に動いた・・・
gtkwave自体が32bitだったのかw
完全にスルーしてました。お騒がせいたしました
500774ワット発電中さん:2010/07/24(土) 13:08:22 ID:7QdGoTAH
>>498
素直な選択肢がなぜ Modelsim なんだい?
501774ワット発電中さん:2010/07/24(土) 17:42:04 ID:DSFJB4Qh
メンターの暴利主義が気にくわないので、おれはModelsimのメンテナンス契約、更新しない。
502774ワット発電中さん:2010/07/25(日) 14:56:53 ID:5RTXqtp1
EDAベンダーなんてどこもそんな物だろ
503774ワット発電中さん:2010/07/25(日) 15:11:49 ID:t6rIceJO
商売だからね・・・
504774ワット発電中さん:2010/07/25(日) 21:28:59 ID:P5iyauMF
ケイデンスはもっと滅茶苦茶。
505774ワット発電中さん:2010/07/27(火) 07:57:21 ID:mphPN1WR
しのぷしすなんて・・・
506774ワット発電中さん:2010/07/30(金) 15:01:43 ID:SG5Er+j0
教えてください。
Verilogを勉強していますが、本で、次のような記述を見つけました。

wire a = (cnt>=9) & carry;

これは、
wire a;
assign a = (cnt>=9) & carry;
と同じと考えれば良いのでしょうか?
507774ワット発電中さん:2010/07/30(金) 17:18:55 ID:+fPBVuGj
同じ

大昔なら、ツールによってはそういう記述をサポートしてないこともあった
508774ワット発電中さん:2010/07/30(金) 19:31:23 ID:SG5Er+j0
ありがとうございました。
これは便利そうなので、今後使おうと思います。

ちなみに、regでは使えないでしょうか?

always(....) begin
  if( posedge RESET==1'b0 ) begin
    reg [3:0] a <= 4'd12;  // ここで宣言して、いきなり初期値代入
  end else begin
    a <= a + 3'd1;     // count up
  end
end
    みたいな。
509774ワット発電中さん:2010/07/30(金) 19:35:27 ID:tnNeEPPA
>>508
ng
510774ワット発電中さん:2010/07/30(金) 21:12:18 ID:+fPBVuGj
あんまりお勧めしないよ
予め宣言して無いと変なバグの元になる

あと、そういう部分の記述についてはプロジェクト毎のルールとかもあるかもしれないね
511774ワット発電中さん:2010/07/30(金) 21:17:24 ID:VQpgzogm
ソフト屋はそういう変な記述しtがる子が多いね。
普通に書いた方が見やすいし、引き継ぎも楽’なのに。
あと記述くらsinpryfiでもダウンロードしてコンパイルしてみりゃ分かるだろうに。
512774ワット発電中さん:2010/07/31(土) 01:01:05 ID:7hvjLWsq
みなさん、ありがとうございました。
やっぱり、やめときます。
変数を見て、これって何bit?と思ったときに、ソース中を探さなくても、
ソースの先頭の方にまとめて書いてあった方が、スグにわかりますね。
横着をせずに、もっと精進したいと思います。
ありがとうございました。
513774ワット発電中さん:2010/07/31(土) 01:25:10 ID:ebRRB9Jl
>>512
それは、
 a[3:0] <= a[3:0] + 3'd1;
て記述する。
514774ワット発電中さん:2010/07/31(土) 01:54:10 ID:kc7nigrg
>>513
ビット幅間違ってるぞ
515774ワット発電中さん:2010/08/07(土) 01:10:39 ID:FrB9mgRm
Verilogの$dist_normal(seed, mean, std)について教えてください.
この関数は戻り値がinteger型な仕様のせいで,
指定した標準偏差の白色ガウス雑音が精度よく得られません.

戻り値がreal型だったら全く悩まなくていいところだと思うのですが,
何かいい解決方法をご存知の方はいらっしゃいませんでしょうか?
516774ワット発電中さん:2010/08/17(火) 01:11:22 ID:j3YbVNXz
casexとcarsexって似てるな
517774ワット発電中さん:2010/08/17(火) 18:58:07 ID:L+ENaG4B
どちらか、もしくは両方に、かなり強い思い入れがあるから、そう思うのでしょう。
518774ワット発電中さん:2010/08/19(木) 01:05:19 ID:Uum69Jif
某マンデータのボードにはSDRAMが張り付いているんで、それを使いたいが、
SDRAMコントローラがない。どこかにSDRAMのフリーIPはないでしょうか?
519774ワット発電中さん:2010/08/19(木) 01:30:51 ID:yhio344v
お前のパソコンの中に入ってるだろ
520774ワット発電中さん:2010/08/19(木) 02:43:07 ID:CAWhQgKT
>>518
それくらい書けよ。
521774ワット発電中さん:2010/08/19(木) 10:28:18 ID:LVzr9RLB
SDRなら自分で書いた方が楽だと思う
522774ワット発電中さん:2010/08/19(木) 19:48:33 ID:KG3I5N/g
初心者ならサンプルコード付きのボードを手に入れた方がいい。
少しは経験があるのなら、OpenCores だな。
523774ワット発電中さん:2010/08/19(木) 19:53:33 ID:Uum69Jif
SDRAMコントローラは、けっこう難しい。初期設定が・・・・・
SRAMに逃げた。
524774ワット発電中さん:2010/08/19(木) 21:40:48 ID:G4GKQ6NR
> SDRなら自分で書いた方が楽だと思う
DDRだと、どう書いていいのかワカラン。
両エッジなんて・・・倍速のクロックを調達してくるのかな?
525774ワット発電中さん:2010/08/20(金) 01:58:48 ID:SSYscQnv
悩むところか?ADC,DACもDDR多いだろ。
526774ワット発電中さん:2010/08/20(金) 02:38:53 ID:A+atcoMI
>>516
casezでも使っとけリアル厨房。
527774ワット発電中さん:2010/08/20(金) 06:32:34 ID:DqBdLoNh
>>524
入力側はposedgeとnegedgeのペアで解決
出力側は切り替えで対処…かな

どちらにしても、端子側のところに専用のI/O無いと速度的に満足できないだろうね
SDRにしても   FPGAではそういう指定できるはず…かな
528774ワット発電中さん:2010/08/20(金) 12:21:47 ID:hODVqyj8
SDRはクロック以外は汎用I/Oで全然OKだよ
529774ワット発電中さん:2010/08/20(金) 18:41:12 ID:1Tis3/9p
試しに使うレベルで、全力で動かす必要もないし。
3.58MHzぐらいでぼちぼちやればいいよ。
530774ワット発電中さん:2010/08/20(金) 19:58:58 ID:o9Dul3cV
FPGAだがAlteraのQuartus使えば、
SRAMよりSDRAMの方がむしろ簡単。
531774ワット発電中さん:2010/08/21(土) 03:08:16 ID:BTeS9ung
>>530
えっ? マジですか?
532774ワット発電中さん:2010/08/21(土) 08:03:59 ID:tCXmq+Vg
HDDの容量を食うけど落として試してみればいい。
確かに悩むのがアホらしくなる。
533774ワット発電中さん:2010/08/21(土) 17:12:49 ID:ud8ZD2Od
>>531
ホント簡単だよ。
どっちもほとんどマウスのクリックだけで接続できるが、
SDRAMの方がより簡単に接続可能。
534774ワット発電中さん:2010/08/21(土) 17:16:39 ID:ud8ZD2Od
ここに概要の説明があるんで見てみると良いかも。
http://www.kumikomi.net/archives/2010/04/ep15ddt5.php?page=1
SDRAMは2ページ目。
535774ワット発電中さん:2010/08/21(土) 17:28:24 ID:ud8ZD2Od
536774ワット発電中さん:2010/08/21(土) 23:51:19 ID:sVIgpkAW
どれもこれもALTERAだけど、Xilinxはどうでしょ?
アルテラで簡単にできるなら、Xilinxでも簡単にできそうな・・・・
537774ワット発電中さん:2010/08/22(日) 00:02:56 ID:/XYyFnAe
>>536
お前が調べてこのスレに書けばおk
538774ワット発電中さん:2010/08/22(日) 11:44:47 ID:XhuVOVxw
だからSDRぐらい自分で書け。
539774ワット発電中さん:2010/08/22(日) 16:25:27 ID:x19gvC+v
俺もXilinxにSDRAMをつないで動かしたい。
自分で書くにしても、一番良い方法(参考サイト、本)を知りたい。
540774ワット発電中さん:2010/08/22(日) 17:14:18 ID:tx61iHfI
MIGを使えばいいんとちゃう?
541774ワット発電中さん:2010/08/22(日) 18:42:24 ID:vxw2KZYN
DDR なら標準で持ってるだろ。
アプリケーションノートにも載ってたはず。
542774ワット発電中さん:2010/08/22(日) 20:17:41 ID:x19gvC+v
MIGはDDR以上しかサポートしていないっす。
代理店にも確認しますた。
543774ワット発電中さん:2010/08/22(日) 22:12:28 ID:VwaRLEEE
>>540
MIGで構成するのは、FPGA内部のBlockRAMを使ったものであって、
FPGA外部のSDRAMについては、MIGでは・・・・・

>>541
DDRじゃなくてSDRAM。良く読んでね。
544774ワット発電中さん:2010/08/22(日) 22:39:36 ID:6RsKZMhV
SDRだと簡単にかけるので、IPとしての価値は殆どない。
DDRだと遅延量調節をする必要があるので、IPとして価値がある。
逆に、SDR位かけないのなら、それはスキル不足。勉強すべし。

>>543
細かいことだけど、DDRもSDRAMの一種。
545774ワット発電中さん:2010/08/23(月) 00:08:58 ID:F8g2XGKS
あんまり細かくもないがw
SDRをSDRAMと読んでいたとしたら、話が通じない。
546774ワット発電中さん:2010/08/23(月) 01:36:19 ID:rA3PwKcq
すみません
 DDR  = Double Data Rate ....
 SDRAM = Synchronus Dynamic RAM でしたね。失礼。

>>541
DDRじゃなくてSDRですよ。

>>544
>SDRだと簡単にかけるので、IPとしての価値は殆どない。
簡単に書ける割には、本を見ても、ネットで探しても、SDRのIPは出ていないんですよ。
秋月の2行LCD程度のHDLならいいですが、初期化から面倒なことが続くみたいで複雑。
結果、基板上のFPGA外部に大容量SDRAMが張りついて、FPGAに配線もされているのに、
内蔵のブロックRAMを使うことになります。変な違和感が・・・・・・
547774ワット発電中さん:2010/08/23(月) 08:25:53 ID:Lm3QtXij
>>546
簡単に書き捨てられるレベルだからネットで検索しても落ちてないんだよ

つーか、>>546がネットで拾ってきたコードを改変って一丁上がりって
開発(?)スタイルを捨てない限り、先はないよ
SDR-SDRAMのアクセスコードくらいスクラッチからサクっと書いてくれ
548774ワット発電中さん:2010/08/23(月) 19:50:10 ID:Tu9FXiP9
> 初期化から面倒なことが続くみたいで複雑。
面倒だけど複雑ではないのでは。
549774ワット発電中さん:2010/08/23(月) 22:53:52 ID:KrcNNywA
わかりやすい解説がついて、ソース付きであれば5万円でマジで買います。

だれがやったらいいのに・・・。
550774ワット発電中さん:2010/08/24(火) 10:17:35 ID:eG7zvDp9
S-RAM と違って、書きたいときに書き込めるわけじゃないし、システム側とのアービトレーションが面倒くさい。
だから汎用で使うってのがそもそも間違ってる。
551774ワット発電中さん:2010/08/24(火) 10:53:32 ID:qice5oqM
552774ワット発電中さん:2010/08/24(火) 11:02:34 ID:KZjZNXHy
553774ワット発電中さん:2010/08/26(木) 23:10:10 ID:eB6rKLZJ
XilinxのISEの「View RTL Schematic」でRTL図を確認しているんですが、
たまに明らかに接続されているはずのところが繋がって描かれていないときがあります。
シミュレーションではちゃんと繋がっている動作をするので、実際は繋がっているはずなんですが・・・
省略表記?にしても、その基準が分かりません・・・
なぜこのようなことが起こるのでしょうか??
554774ワット発電中さん:2010/08/27(金) 03:39:51 ID:yVSBdFRU

表示ソフトのバグだと思う。僕も最初は驚いた。
だいたい、点線だったり実践だったり、太かったり細かったり、
どういうつもりであの線種を変えているのか、サッパリ予想が付かない。
さらに、箱外からの線と箱内の線が、箱に入ったところでバッサリ切れてるわ、
ちょっとひどくないですかね。
さらに、信号線名の字の小さいこと、じゃってんで、F7,F8で画面拡大縮小をした日には
暴走したかと思うくらい固まってしまう。
RTLの下にあるもう一つの表示方法だと全線つながって見えると思う。

僕は、外部エディタを使っているんだけど、
ISE10以降?から、外部エディタをsaveしてISEの画面に移行すると、
じーーーっと、しばらく考えて、やっとシンセサイズのボタンが触れるようになる。
思わず画面に向かって「何やってんの?」と怒鳴ってしまったよ。
たぶん変更したソースの階層構造を調べ直しているんたろうけと、
だったら「調べてるから、待ってね」とダイアログを出せよ、って感じ。
何も言わずに止まってしまうのは、反則。
これほど重くて、動作がもっさりのソフト、はじめて。

ちなみに、CPUは Core2Duo 3GHz 4GB /3GB XP SP3, 250GB RAID0。
他のアプリ全て停止でね。

そんなISEだけど、いつかきっと「サクサク」動く日が来ると信じてる。
555774ワット発電中さん:2010/08/27(金) 06:26:12 ID:P64pZiwU
マウスの形は変わってるだろ
556774ワット発電中さん:2010/08/27(金) 23:35:21 ID:3XoGZBtr
>>554
>そんなISEだけど、いつかきっと「サクサク」動く日が来ると信じてる。
いつかっていつだ? と3年前から胃が痛い人が聞いてみる。
557774ワット発電中さん:2010/08/27(金) 23:37:57 ID:3XoGZBtr
ISEのModelSimサポートも終了らしいな
FPGAの部さんで知った。
558774ワット発電中さん:2010/08/28(土) 01:20:15 ID:oBUpY8XO
>>556
遠くはない未来です。戸籍上は168才まで生きますから、それまでには。
559774ワット発電中さん:2010/08/28(土) 01:30:03 ID:sNB8DRsT
日本の平均寿命ってどうなってんだろうね
560553:2010/08/28(土) 20:16:20 ID:dvgnYEXX
>>554
レスありがとうございます。
やっぱり表示おかしいですよね^^;

自分も外部エディタ使ってます。
ISEにフォーカスを移すと、たしかに少し固まりますね。
固まりが解けるとソースの階層構造表示が更新されるので、
変更ソースの解析のためで間違いないと思います。
自分の場合はまだ我慢できるレベルの固まり時間ですが、最終的にモジュールを結合して
大きな回路になったときはかなり長くなるのかな・・・

ISE、昔よりはだいぶ良くなったと聞きますが、
さらなる改善を期待したいですね。
561774ワット発電中さん:2010/08/29(日) 04:22:10 ID:sWlgWhKl
今日、PCがコケて、ISEを入れ直したんだけど、気がついたことがある。
Ver 11.4にするためには、いったん11.1を導入済みでないとインストールできないのね。
都合5GBぐらいのダウンロードになる。これはしんどい。

また、フルなんとかというバージョンは、
ダウンロードが5.3GBくらいあって、それはtarファイル。
デスクトップで解凍後、いざインストールを始めると、
「○○を解凍中・・・」と表示される。圧縮した物をさらに圧縮してるんだね。
なんという巨大、なんという時間のかかること。
562774ワット発電中さん:2010/08/29(日) 04:46:02 ID:7iq2ukqq
ディスク容量が12GB以上余ってないとインストール出来ないのか
563774ワット発電中さん:2010/08/29(日) 10:37:30 ID:kA2RPhm0
MicroBlazeに接続可能な(SDR-)SDRAMのIPってフリーか安い値段で市販されていないでしょうか?
564774ワット発電中さん:2010/08/29(日) 13:38:32 ID:ByHtHvrA
open coreにあった気がする
うまく使えたら、教えて。俺も使いたいと思ってる。

ごめん、MicroBlazeか。じゃわからんわ。
565774ワット発電中さん:2010/08/29(日) 19:10:38 ID:Y3tCUsgu
>>563
MicroBlaze(EDK)のライセンスを持ってるならばMPMCで良いんじゃないの。

↓SDRAMにも対応しているみたいし。
http://www.hdl.co.jp/xilinx/microblaze/mpmc_sdram/index.html
566774ワット発電中さん:2010/08/31(火) 14:34:02 ID:rx0cXXAT
そういえば>>2のリンクって相当ほったらかし?
567774ワット発電中さん:2010/08/31(火) 14:50:12 ID:RMy+FPue
少なくとも2年は放ったらかされてるな
568774ワット発電中さん:2010/09/07(火) 02:23:05 ID:LBpmufKQ
教えてください。

VerilogでHDLを書くときの、考え方についてです。
例えば、
FPGA外部の発振器からメインクロックsysCLKを取り込み、HDL全体のクロックとして使います。
ところが下位層では、ローカル処理用に高速なclockが必要なので、sysCLKを逓倍して作成したCLK10があります。
下位層の状態信号など、top階層でモニタして使用したいと思うのですが、
下位層は高速のCLK10で動作しているため、sysCLKで刻んでいるtop階層では、見逃してしまいます。
こんなときは、どのように対処するのが「正しい」方法なのでしょうか?
僕の考えつくところでは、
1) ハンドシェイクをする方法
   下位にFFを設けて、イベント発生をラッチ(記憶)して、上位に知らせ、
   上位では、了解信号を下位に送り、下位はそのラッチをクリアする。
   やりとりが面倒で、間違いも起きやすいと思います。

2) 全体をCLK10で駆動する
   DCMの逓倍部分をtopに持ってきて、このCLK10をFPGA全体のclockにする。
   わかりやすく確実だと思いますが、リソースがたくさん必要になると思います。
   10nsを100万回数えて、10msを生成して・・・・と、FFが一杯要りそう。
   例えばRS232の受信部のように16倍のclockで刻む必要がある場合、
   ボーレートの変更により、CLK10が変化してしまい、調子が悪いとも思います。

こういうときは、どうすべきなのでしょうか。
宜しくお願いします。
569774ワット発電中さん:2010/09/07(火) 07:41:08 ID:oB+K90Lw
逓倍したクロックと元のクロック間では位相は保障されないのが普通

高いクロックに合わせて動作させるのが常套手段だが、sirial入力を
オーバサンプリングでデータ取りする場合は、内部接続のパラレルビット幅を
増やし、受け側に対して十分低速にして受け渡す

あとはハンドシェイクするなり何なりだな
570774ワット発電中さん:2010/09/07(火) 10:53:12 ID:IOoIZnVA
異クロックドメイン間の通信はFIFOとメールボックスを使うのが筋だな
>>568の例だと非同期メールボックス(要はハンドシェイク)を使えばいい

つーか、ハンドシェイクってやりとり面倒か?
確かにシミュレーションモデルでの検証は面倒かもしれないけどね
571774ワット発電中さん:2010/09/07(火) 11:36:13 ID:wjakz+Dk
イベントを示すパルスの幅を充分に広げてやれば
めいよううぇんてい
572774ワット発電中さん
私の場合1)の方法はやったことありますが、2)の方法はやった事は無いですね。

事足りるのであれば、下位から上位に伝えるパルスを
sysCLKで確実に1回以上拾えるように
CLK10の16cycle幅に伸ばすだけでいいと思います。
上位からのclr信号はいりません。
グリッドが出ないようにレジスタ出力で上位に渡しましょう。

心配性なので10cycleだと不安ですしどうせ2のべき乗のカウンタなので16にしました。