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

このエントリーをはてなブックマークに追加
1774ワット発電中さん
HDLの処理系も、それを実際に動かすシミュレータ・評価基板も、
安価で入手できるようになってきました。

このスレが目に入ったお嬢さん! HDLで何か作って遊んでみませんか。
日曜工作のHDL書き、学生さん、プロの方、主婦の方、カキコお待ちしております。
関連情報は >2-10 あたり。

入れ食いキーワード
・Nios、MicroBraze
・Artix-7、Kintex-7、Virtex-7、ハードコアCPU内蔵 Zynq-7000

前スレ (直近スレのみ)
2012/11/03〜 【Verilog】 記述言語で論理設計Project12 【VHDL】
http://uni.2ch.net/test/read.cgi/denki/1351913871/
2011/12/07〜 Project11
http://uni.2ch.net/test/read.cgi/denki/1323187568/
2010/09/17〜 Project10
http://kamome.2ch.net/test/read.cgi/denki/1284652343/
2774ワット発電中さん:2014/03/06(木) 16:39:57.80 ID:sOpHVFq3
・FPGA
 Xilinx ttp://japan.xilinx.com/
 ALTERA ttp://www.altera.co.jp/
 Lattice ttp://www.latticesemi.co.jp/
 Actel  ttp://www.actel.com/intl/japan/
 QuickLogic ttp://www.quicklogic.com/

・ASICベンダ推奨ツール類 (高価)
 Synopsys ttp://www.synopsys.co.jp/
 Cadence ttp://www.cadence.co.jp/
 Mentor ttp://www.mentorg.co.jp/
 Synplicity ttp://www.synplicity.jp/

・Verilogシミュレーター (無料)
 Icarus Verilog
  ttp://iverilog.icarus.com/
  ttp://ryusai-hp.web.infoseek.co.jp/icarus.htm (解説)
  ttp://www.ice.gunma-ct.ac.jp/~kimsyn/verilog/FreeSim/iverilog/iverilog.html (解説)
 IVI
  ttp://ivi.sourceforge.net/
  ttp://www.kumikomi.net/archives/2005/06/10icarus.php (解説)

・VCDフォーマットの波形表示 (無料)
 GTKWave
  ttp://gtkwave.sourceforge.net/
  ttp://ryusai-hp.web.infoseek.co.jp/gtkwave.htm (解説)

・関連書籍
 STARC ttp://www.starc.jp/
 CQ出版 ttp://www.cqpub.co.jp/
 Interface ttp://interface.cqpub.co.jp/
 Design Wave Magazine (休刊) ttp://www.cqpub.co.jp/dwm/
 ディジタル・デザイン・テクノロジ (旧DWM) ttp://digital-design.cqpub.co.jp/

・解説サイト
 やるおと学ぶ Verilog-HDL ttp://hirokinakaharaoboe.net/yaruo_verilog/

・関連スレ
 【FPGA/CPLD】 XILINX/ALTERA/Lattice/Actel
      http://uni.2ch.net/test/read.cgi/denki/1387718215/
 【EP3】DE0で始めるVerilog HDL【C16】
      http://uni.2ch.net/test/read.cgi/denki/1310362001/
3774ワット発電中さん:2014/03/06(木) 16:41:32.60 ID:sOpHVFq3
過去ログ参照したいときは、外部キャッシュサイトも便利です。
スレタイで検索しましょう。
・ログ速 ttp://www.logsoku.com/
・2chビューアーD ttp://2ch.viewerd.com/
・unkar ttp://unkar.org/r/denki/
他にもあると思う

以上、テンプレらしきもの。
     _,,,
    _/::o・ァ
  ∈ミ;;∧,ノ∧    ,,,,,   ,,,,,
    ( ´・ω・) ,,,,(o・e・),(。・e・),,     新スレです
     /ヽ○==(。・e・)(。・e・)(o・e・)     仲良くつかってね。
    /  ||_彡,,, ノ彡,,, ノ彡,,, ノ
    し' ̄(_)) ̄ ̄ ̄(_)) ̄(_))  ガラガラ
4あぼーん:2014/03/06(木) 19:25:57.54 ID:c33fa+Z6
あぼーん
5あほ〜ん:2014/03/07(金) 07:29:39.99 ID:kmlRrSr1
あほ〜ん
6774ワット発電中さん:2014/03/07(金) 07:32:46.33 ID:kmlRrSr1
FPGAでキャラクタLCDの初期化とか、
74HC595、74HC166などのシリアルものをやったときは、
FPGAを窓から投げたくなった。
マイコンが神様のように思えた。
7774ワット発電中さん:2014/03/07(金) 08:45:27.24 ID:3a6perSe
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
8774ワット発電中さん:2014/03/08(土) 18:57:41.86 ID:67Qa5TNW
854 名前:名無しさん┃】【┃Dolby[sage] 投稿日:2014/03/07(金) 12:54:14.90 ID:w9n1Ku5o0
http://www.fullhd.gr/images/stories/2013/Teardown/SamsungUE65F9000/Samsungue65f9000-open-fullhd.gr.JPG

サムスンの4Kばらしたら
FPGAがでてきた
9774ワット発電中さん:2014/03/12(水) 07:56:53.51 ID:25IcEW3e
FPGAで家電作ってもおかしくないだろうけど
コスト合うのかな

お得意のウォン安パワー?
10774ワット発電中さん:2014/03/12(水) 08:20:45.34 ID:AVsyjRDF
ICにするほど数が出てないんじゃね?
11774ワット発電中さん:2014/03/12(水) 09:51:12.88 ID:fKpIq8EF
1000台作る製品のコストを1円下げるために、
何万円ぶんも人間をタダ働きさせるのが日本式だからなw
12774ワット発電中さん:2014/03/12(水) 17:07:00.03 ID:npd8l9LA
TATが間に合わない事もあるしな
TVだとASIC作る時代でも無いし
ASSP+FPGAで急場を凌ぐかな
13774ワット発電中さん:2014/03/12(水) 17:13:45.44 ID:bgzyCiyO
4K売れんの?
14774ワット発電中さん:2014/03/13(木) 20:18:43.48 ID:UNefeDE1
開発期間短縮の為、FPGAを採用。
その後、4Kが大量に売れそうだったらASIC化するって事じゃないの?
15774ワット発電中さん:2014/03/13(木) 22:00:42.17 ID:RztwXodP
FPGAで何か家電を作るとすれば・・・
炊飯器か

マイコン炊飯器より売れそう
16774ワット発電中さん:2014/03/13(木) 23:44:06.38 ID:iNUeE38h
4Kは売りつけるんだよ
その次はSHV(8K)を売りつける
ここまでは決まってるんじゃね

炊飯器よりエアコンにFPGA合うかも
センサー高度化してるし冷却も万全?
17774ワット発電中さん:2014/03/13(木) 23:49:37.02 ID:Ac+UuqDx
炊飯器やエアコンでFPGA必要なほど高速な処理って何よ
18774ワット発電中さん:2014/03/14(金) 09:43:30.62 ID:xQ24+ER2
インバータ制御はマイコンじゃ無理
19774ワット発電中さん:2014/03/14(金) 12:11:53.03 ID:PsJKx6n+
FPGAが高速とか、笑わせるwww

そんなに高速なんだったら、お前の家からintel PCを一掃して全部FPGA PCにしろよw
20774ワット発電中さん:2014/03/14(金) 12:36:28.47 ID:xQ24+ER2
>>19
ワンチップMSXですね!
21774ワット発電中さん:2014/03/14(金) 12:45:46.95 ID:bB+o9K6L
そんな物もあったな
MSXは俺のルーツだからつい買ってしまったが、一度も通電する事無くどこかに放置してある
22774ワット発電中さん:2014/03/14(金) 13:36:13.90 ID:eQI3/KIC
>>19 規模の利益を全く無視したご意見、どうもありがとうございますw
23774ワット発電中さん:2014/03/14(金) 22:58:50.67 ID:qEl3daDL
高速か
何もかも皆懐かしい
24774ワット発電中さん:2014/03/18(火) 09:36:59.58 ID:PI6Arc2y
PSoC4 pioneerで遊んでるんだけど、alwaysのトリガに同期系
条件(posedgeとか)と非同期系条件(ピンチェンジ)を混ぜては
いけないってのはVerilogの制限?それともPSoCローカルな制限?
25774ワット発電中さん:2014/03/21(金) 02:38:46.26 ID:ixu+qUdJ
何をしたいのかがよくわからんけどVerilogの制限ではないな。
ただFPGAでVerilog使う場合でもそうだけど合成可能かどうかはまた別問題。

一般論としてリセット付きF/Fは合成可能だから大丈夫だと思うけど。
26774ワット発電中さん:2014/03/25(火) 23:07:06.93 ID:sDlLkAoj
reg_cntをインデックスにしてreg_buffバッファにreg_fooの値を突っ込みたいのですが
↓みたいにすればOKですか?


always @ (posedge xxx) begin
 if (RESET) begin
  reg_cnt <= 0;
 end else begin
  reg_cnt <= reg_cnt + 1;
  reg_buff[reg_cnt] <= reg_foo;
 end
end
27774ワット発電中さん:2014/03/26(水) 08:09:00.26 ID:qLJPB8CT
やってみろ
まずはそれからだ・・・

まぁ良かったと思うけど
28774ワット発電中さん:2014/03/26(水) 23:22:34.70 ID:TPlHqcXH
サンクスです。やってみました。できました。
でも質問した時はできなかったんですよね。。
今日はできた!
何が変わったんだろ
よくわからんw
すみませんでした。。
29774ワット発電中さん:2014/03/27(木) 13:41:51.12 ID:51xj69oq
出来なかったというのは
合成すら出来なかったと言うこと?
じゃないよね
30774ワット発電中さん:2014/03/28(金) 00:42:29.71 ID:HZnzQFgO
Icarus Verilogに関して御存知の方いらっしゃいましたら教えて下さい。
フリー環境でSystemVerilogを動かしてみようとIcarus Verilogを使ってみたのですが、0.9.7版、20130827版と幾つかの版数を渡り歩いてみましたが、classやinterfaceといったkeywordに対してsyntax errorを吐きます。
webで検索したところ0.9版以降ではサポート中断という記事を見つけたので0.8.6版も試してみましたが同じでした。
questaやiesでは通るので文法的にはOKだと思っていますが、Icarus Verilogが対応していないのか御存知でしょうか?
31774ワット発電中さん:2014/03/28(金) 01:14:32.64 ID:8+Km2wty
SystemVerilog対応なんて、Wikipedia日本語版にしか書いてないような気がする。
英語版は、portions of SystemVerilog としか書いてない。
32774ワット発電中さん:2014/03/28(金) 02:23:34.68 ID:Zcmh9bV1
>>29
合成はできたんですけどワーニングが出てて
出てきた電子回路見てみるとつなげてるはずの配線がざっくり無くなってました。
セレクタ?を記述しないといけないんだけどそれがうまく表現できず、ツールに伝わってないみたいでした。
3330:2014/03/29(土) 02:03:34.44 ID:Nmk89wiM
>>31
やはり、現版数では対応していないようですね。幾つかのサイトを見て回ったのですが、対応していると今後対応予定という情報が入り交じっていました。
Behavior simulationを目的としているので、試しにXilinxのVivado入れてみましたが、simulatorがSystemVerilog非対応でした...
現状、SystemVerilogのsimを行うとすると、やはり御三家のsimulator使うしか無いのですかね...
34774ワット発電中さん:2014/03/29(土) 02:52:52.77 ID:H0gNnTrg
QuartusはsystemVerilog対応って謳われてて
modelsimの無料版入ってるけどそれではだめなん?
35774ワット発電中さん:2014/03/29(土) 11:33:28.66 ID:pxPByyKW
>>33
御三家って、シノプとケーデンスと・・・?
3630:2014/03/30(日) 03:31:22.30 ID:PXg3sNCf
>>34
日頃馴染みが無かったのでアルテラ試していませんでした。情報ありがとうございます。ユーザー登録してダウンロードしてみます。
>>35
あと品川の御殿山をイメージしていましたが(^_^;
37774ワット発電中さん:2014/04/07(月) 14:31:55.70 ID:u+9PXBq9
38774ワット発電中さん:2014/04/07(月) 17:27:28.96 ID:Vzj79MHB
>>37
GM音源とDSPを内蔵した専用チップだったはずだけど、FPGAなの?
http://download.yamaha.com/api/asset/file/?language=ja&site=jp.yamaha.com&asset_id=60768
ちなみに子音が出せないのは、ボタンが押される前に子音が出せてないと、音に合わせて声が出せないからだからな。
39774ワット発電中さん:2014/04/08(火) 18:48:23.97 ID:x9l0EXnP
http://nlab.itmedia.co.jp/nl/articles/1403/03/news057.html
筆者は昨年11月のMake Faireで披露された「歌うキーボード」のプロトタイプを実際に試してみたのだが、
そのときから長足の進化を遂げたようだ。まず、レスポンスがぜんぜん違う。
Make Faireのときには操作はできるものの、反応はちょっと微妙で、演奏はコツがいる感じだったが、
現在のバージョンは十分リアルタイムでの演奏に追従できる。なんらかの改良が行われているようだ。
「さしすせそ」の発音は、VOCALOIDでは母音の前の子音部分が長く、
鍵盤を押してから発音されるまでタイムラグがあるものだが、
ポケット・ミクではそこが実用になる範囲に収まっている。
ひょっとしたら、素のままのNSX-1チップではないのかもしれない。
http://nlab.itmedia.co.jp/nl/articles/1311/04/news010.html
http://nlab.itmedia.co.jp/nl/articles/1204/29/news007.html
40774ワット発電中さん:2014/04/08(火) 18:59:13.74 ID:x9l0EXnP
http://www.dtmstation.com/archives/51877546.html
ここにはFBGA(原文ママ)って書いてあるけど関係なさそう
41774ワット発電中さん:2014/04/08(火) 22:45:38.28 ID:sXzcO/hb
http://ja.wikipedia.org/wiki/FBGA
なるほど、半田付けしたくないな
42774ワット発電中さん:2014/04/09(水) 08:55:48.91 ID:P+tY1Vpe
全然使ってないPT2の基盤眺めてたら
ざいりんくす乗ってた

なんのシリーズかは見てない
43774ワット発電中さん:2014/04/09(水) 08:57:20.51 ID:joIMvkge
>>37-41
音源としてはえらい安いな

そのうちすべてのPCやスマホに標準搭載されると良いな
44774ワット発電中さん:2014/04/09(水) 12:19:21.92 ID:P+tY1Vpe
そこらじゅうのスマホからミクの声がしてたら
それはそれで嫌だな

せからしか!ってなる
45774ワット発電中さん:2014/04/10(木) 08:16:44.50 ID:rYFXsS2F
>>41
なるほど、勉強になった
46774ワット発電中さん:2014/04/13(日) 15:11:36.77 ID:luH8iUKZ
47774ワット発電中さん:2014/04/13(日) 21:21:50.36 ID:EyrX6YJH
48774ワット発電中さん:2014/04/15(火) 20:04:37.66 ID:+XCsDHpy
>>19
FPGAはいくつもの処理を平行して処理できる。
49774ワット発電中さん:2014/04/15(火) 21:25:29.74 ID:t6NmlD9K
もちろん、プロセッサも!
50774ワット発電中さん:2014/04/17(木) 20:00:43.67 ID:f8sHtpTv
51774ワット発電中さん:2014/04/18(金) 09:08:58.46 ID:5ncclQCr
こんな計画もあったのか


また、今回の製品版には実装されていないが、これを利用して歌詞を入力する機能も試作された。

カーボンキーボードで文字入力を行なうプロトタイプの説明図。
鍵盤部で「あかさたな〜」といった子音の行を選び、リボン部で母音の段を選択する。

写真 https://fabcross.jp/interview/dmln530000007pmi-img/0314_uda_005.jpg

本文 https://fabcross.jp/interview/140314_uda_02_03.html
52774ワット発電中さん:2014/04/19(土) 04:20:41.84 ID:CJYuQ4Ta
電電系は高慢だよなぁ…
53774ワット発電中さん:2014/05/03(土) 03:47:32.94 ID:qHAfzWFm
某N社の仕事で、VHDLの回路改修を頼まれ、
アドレスデコーダーの回路見たら、
全部IF-ELSIF文でアドレスデコーダーを数百構文も書いてあった。
CASE文とIF文の使い分けもできないのか、この大手企業はと思った。
しかも担当者に聞いたら、その書き方じゃなきゃダメだと。
日本の「もの作り」とか言って、これじゃおわっとるよな。
54774ワット発電中さん:2014/05/03(土) 04:09:17.38 ID:iY7b3Yzy
if()ではだめなの?
55774ワット発電中さん:2014/05/03(土) 06:43:45.69 ID:39IpT7ho
言語的にはIfでcaseかけるので
ちゃんと書けば
同じ回路になるはず

ただデコーダエンコーダ
もしくはCPUのフェッチはcaseが良い(ほぼデコーダ)
人為的なミスが減る

ソースコードは人に優しくないと
56774ワット発電中さん:2014/05/03(土) 09:49:08.35 ID:SKkkuXvc
「もの作り」って、論理以前の物理的な「もの」しか対象に考えてないからな。
ブール先生から150年経つんだから、ざっと考えて200年前の伝統芸でしかない。
57774ワット発電中さん:2014/05/03(土) 10:48:50.53 ID:ew7hu1Tk
>>53
おおもとはexcelで書いてある。
58774ワット発電中さん:2014/05/03(土) 11:36:01.87 ID:YH1cljc+
>>57
人手で書くわけじゃなくて、
何かのソフトが吐き出すんだろうね。
アドレスデコーダならテーブル引くほうがいいけど。
59774ワット発電中さん:2014/05/03(土) 22:04:53.10 ID:1nIrmqXL
合成ツールの変なバグがあって、治るまで使うなと言ってたのが
いつのまにか絶対使うなに化けるとか、いろいろあるものだ。
60774ワット発電中さん:2014/05/04(日) 00:09:37.20 ID:SII+IkUE
ifでもcaseでも最近の合成ツールなら一緒だろ
61774ワット発電中さん:2014/05/04(日) 04:33:15.82 ID:ipfH05IF
教えてください。
FPGAで、sin波はDDSで出せますが、ノコギリ波は、どうやって出すのでしょうか?
工場の屋根みたいなヤツです。
シンメトリ(矩形波で言うDutyです)は変えませんが、
周波数を変えたいです。ROMにテーブルを入れて、読み出しを間引けばいいのかしら。
それとも、毎点毎点、計算を行うとか・・・・
宜しくお願いします。
62774ワット発電中さん:2014/05/04(日) 10:18:48.15 ID:1g4Be1vd
dds でどんな波形でも出せる
63774ワット発電中さん:2014/05/04(日) 12:27:49.68 ID:z7NcnrHU
>>61
DDSの様にROMでテーブル作ってアドレスカウンタで飛ばし読みするとか、
固定小数点を含んだような積和演算器(カウンタ)を作って
その加算値の整数部を出して行くとか、方法はいろいろあると思うよ。
64774ワット発電中さん:2014/05/04(日) 13:50:33.56 ID:ipfH05IF
DDSで、sin波を形生成する場合は、まだ良いと思うのですが、
三角波など、1ドットで「+ピーク」→「-ピーク」に変化する値を持った信号だと、
間引きstepにより、そのピーク点が採用されたり採用されなかったりして、
その結果、出力波形のピーク値が変化しないでしょうか?
また間引きstepが大きくなると、ほぼ直線変化だったものが、
階段のようにガタガタになってしまいます。
これは、外付けのLPFで除去するのかと思いますが、
その方法だと、ピーク点の尖りまで鈍ってしまいそうです。

DDSにおいて、
ピーク点の確保とガタガタ波形に対して、どのように考えれば良いのでしょうか?
65774ワット発電中さん:2014/05/04(日) 13:50:53.12 ID:a55Zjrqh
少しは自分の頭で考えて試してみたらいいんじゃねぇの?
シミュレーションだっていくらでもできるだろうて
66774ワット発電中さん:2014/05/04(日) 14:38:08.12 ID:ipfH05IF
ありがとうございます。

考えました。
例えば、16ステップの鋸歯状波を考えたとき、
間引き0だと、0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15と再生しますが、
1つ間引くと、0 2 4 6 8 10 12 14 と再生し、15番(ピーク値)が欠落すると思います。
どうでしょうか?
67774ワット発電中さん:2014/05/04(日) 16:03:22.94 ID:a55Zjrqh
そういうやり方をしたら、欠落するだろうね。
だったら、欠落しないようにする方法は?って考える。
68774ワット発電中さん:2014/05/04(日) 17:31:32.82 ID:z7NcnrHU
>>66
同じようなことはsin波形でも起きる。
しかしD/Aした後にsinπx/πxのアナログフィルタを通すと、
このガタガタがきれいに取れる。
出力する周波数に対してサンプリング周波数が十分高ければ
そんなに気にしなくても大丈夫だよ。
ちなみに経験的なことを言うと、100KHz位の鋸歯状波を10MHzの位の
サンプリング周波数で出力してみたけど、ちゃんと鋸歯状波になってた@12bit分解能。
あくまで主観だけど。
69774ワット発電中さん:2014/05/04(日) 20:46:24.07 ID:veykLU/6
サイン波は高調波を持ってないけどノコギリ波は無限の高調波を持つ。
エイリアシングの影響を避けるためには出来るだけサンプリング周波数を
高くするということじゃないの?
70774ワット発電中さん:2014/05/18(日) 17:41:18.72 ID:nYV+BQml
Windows 8.1 update 64bitでicarus verilog 0.9.7が動かない・・・
コマンドプロンプトで "iverilog" って打つと "iverilog: no source files."みたいにちゃんと実行されるんだけど、
"iverilog hogehoge.v"って打つと "ivl.exeは動作を停止しました" ってエラーウィンドウが表示されてコンパイルできない
Windows 8 64bit上のicarus verilog 0.9.7では同じソースファイルをコンパイルできるのに
誰か助けてください・・・
71774ワット発電中さん:2014/05/18(日) 18:21:02.31 ID:l/3NqsGD
パスに日本語含まれてないか?
72774ワット発電中さん:2014/05/19(月) 01:19:16.02 ID:rbfBvD0v
>>71
パスに日本語は含まれてない
ソースファイルにも含まれてない
73774ワット発電中さん:2014/05/19(月) 21:40:49.14 ID:Vw0k0J7Z
この際だから、Linuxに移行したほうがいいんでないかい?
74774ワット発電中さん:2014/05/25(日) 01:20:59.81 ID:cSq2iRKv
Verilogを使い始めた初心者です。
LTC1744A/DコンバータをXilinxで動かしたいですが、質問があります。

FPGAからADにスタート信号を送ると、ADからADクロックとともにデータが出てきます。
ADのデータを取り込むには、そのクロック信号の立ち上がり立ち下がりで取り込むらしいです。

データーはADのクロックに合わせて出てくるので、FPGAのクロックと合っていません。(周波数は同じようです)
こういう場合、どのようにしてデータを取り込むのでしょうか?
・水晶→A/Dクロック信号で1つ完結。ADからのクロックを使ってそれ以降のFPGa全体を動かす。
・あくまでFPGAのクロックで動かし、A/Dクロックの変化点を見つけて、そのときのADデータを取り込む。
・FIFO変換回路を使う
・ディアルポートメモリーを追加する
75774ワット発電中さん:2014/05/25(日) 03:02:39.57 ID:FZ0AO30J
FIFOで正解
デュアルポートでもできるっちゃできるが
76774ワット発電中さん:2014/05/25(日) 09:55:13.01 ID:ZZ5caet9
FPGAのクロックをPLLで
ADの10倍くらいで動かせば余裕のよっちゃん


と何も考えず・・・
常にADの方が遅いイメージ
77774ワット発電中さん:2014/05/25(日) 12:01:01.53 ID:7c+/MroJ
>>75
ありがとうございます。
やはりFIFOですか、了解です。コアジェンのFIFOジェネレーターで実験してみます。

>>76
>FPGAのクロックをPLLでADの10倍くらいで動かせば余裕
ヒントをありがとうございます。
これは、A/Dからの信号をFPGAで「高速に」刻めば、FPGAでA/Dのクロック変化を検出でき、
そのタイミングでデータを取り込めば、FIFOなしで良いということでしょうか?

もしそうだとすると、10倍も上でなくても3倍くらいではだめでしょうか?
・A/Dからのクロック信号を取り込み記憶。
・前回からの差を見て、変化点を検出。
・変化ありなら、その次点のデータを取り込む。(データは、この時点までホールドされていることが前提)
こんな感じでしょうか。
78774ワット発電中さん:2014/05/25(日) 12:19:48.01 ID:4j5bIsLa
>>77
3倍程度だとインターバルがグダグダになるからダメ。
タイミングが一定のように見えてわずかに揺らぐため、2倍と4倍が入り混じる可能性がある。
# もちろん、個体差があるので念のため。
79774ワット発電中さん:2014/05/25(日) 12:24:56.08 ID:7c+/MroJ
ありがとうございます。
3倍程度ではだめですか。了解しました。
やはりFIFOですね。
80774ワット発電中さん:2014/05/26(月) 07:33:33.83 ID:pdHBd95s
一度クロック直で誤作動っぽい動きしていて
PLLに一度食わせただけで直った経緯から
最近はPLL使わない事の方が少ない

保険みたいな感じ
81774ワット発電中さん:2014/05/26(月) 07:49:47.97 ID:18vb85ra
PLLじゃなくてもNOTとかインバーター通しただけでも治ったかもね
82774ワット発電中さん:2014/05/27(火) 00:11:06.07 ID:LZynj0Uu
チップスコープで、16bitの値を見ているのですが、
観測点を、それ単独でコンパイルしたときと、
他の観測信号も一緒にしてコンパイルした時で、
表示される値が違うことないですか?
83774ワット発電中さん:2014/05/27(火) 00:52:51.65 ID:Te7GmtAR
クロックが違うとか?
84774ワット発電中さん:2014/05/27(火) 01:08:30.68 ID:LZynj0Uu
>>83
ありがとうございます。
いえ、xxx.cdcで、メンバーに入れてコンパイル、入れないでコンパイル、
それだけで違うんです。半日悩んでいました。PCの再起動とかしてみたのですが。

一つ教えてください。

Verilogで、C言語のような、こんな書き方ってできるのでしょうか?

  if( a == 'A' ) begin ...
  end else if( a == 'K' ) begin ...
  end else if( a == 'B' ) begin ...

試して見ればよいですね。すみませんでした。
85774ワット発電中さん:2014/05/27(火) 01:14:42.01 ID:LZynj0Uu
>試して見ればよいですね。すみませんでした。

ダメでした。残念
86774ワット発電中さん:2014/05/27(火) 03:17:41.14 ID:/b2TR/5g
確かに、その表記ができると便利だと思う。
Cは本当によく考えられた言語だね。
Cで assign や <=代入ができるなら、もうVerilogやめてCで書けばいいと思う。
もちろん、beginは{に変更して。
87774ワット発電中さん:2014/05/27(火) 08:15:09.09 ID:8+wuE6iM
文法的にはいけるはず…?
ttp://www.verilog.com/VerilogBNF.html
88774ワット発電中さん:2014/05/27(火) 08:24:56.00 ID:Tf9rgzmm
このBNFが規格そのものを表してるかわからないね
89774ワット発電中さん:2014/05/27(火) 08:35:14.01 ID:nlzGhsbP
232cの入力bitを検査するのにcase使ったけど
別に問題はなかったような

シミュレーションしかないかねぇ
90774ワット発電中さん:2014/05/27(火) 13:31:35.84 ID:Te7GmtAR
CSP有効無効で、ユーザ回路側の挙動が異なる、ということ?

>82では
・16bitの値=観測点
・16bitの値だけをCSPで見た場合と
・16bitの値と同時に、他の信号をCSPで見た場合で
・得られる16bitの値が異なる(他の信号は?)
と読みました。

・16bitの値を、CSPを入れずに観測し(ピンなどに出した?)た結果と
・16bitの値を、CSで観測した結果が異なる
ということ?「他の観測信号」はどこでどう絡んでくる?

CSPで挙動がおかしい時の基本確認事項は
・タイミングレポートを確認する。CSP入れると周波数は落ちる傾向がある。
・観測対象の信号をドライブしているクロックとCSPが参照しているクロックが同じか?
辺りが第一歩ですかね。
91774ワット発電中さん:2014/05/27(火) 13:34:42.43 ID:Te7GmtAR
それとも
・16bitの値を、CSPを入れずピンに出した結果と
・16bitの値を、CSPを入れてピンに出した結果が異なる
ということかな?CSPの観測結果は無関係?
92774ワット発電中さん:2014/05/27(火) 16:25:58.25 ID:jjR/qQb8
>>86
Handel-Cを思い出した。
93774ワット発電中さん:2014/05/27(火) 21:25:58.10 ID:Xjo9OI3S
>82
君と同じ現象かどうかわからないけど
観測点増やしすぎると最高動作周波数が下がって
まともに観測できなくなることはあった。
94774ワット発電中さん:2014/05/27(火) 21:55:21.23 ID:t8Xgoc8p
Verilog初心者です
本を読んで勉強してます。
その本によるとalwayブロックで、ブロッキング代入すると順番が保障されるとありました。
a=a+4
b=b+a
だとa=6, b=4だったらbは14になるし、
a<=a+4
b<=b+a
だったらどうなるかはわからないよーとのことでした。

またその本では別の章ではこうも書いてました。
data[i * 3 + offset] <= val;
i <=i+1

この例の場合、dataのindexにiが使われていて、次の行ではiを増やしています。
これっておかしくないですか?先にiが増えたらindexが違う場所をさしちゃいますよね?

ちなみにRGBデータを処理する話で、文脈から言って
必ずdata[i * 3 + offset] <= valが実行されてからi<=i+1が
実行されないとおかしくなるような状況です。

どなたか解説オナシャス!
95774ワット発電中さん:2014/05/27(火) 22:27:26.48 ID:JJ928Zzv
ブロッキング代入なんて使うな
どの本だ、そのブロッキング代入を推奨してる本は
96774ワット発電中さん:2014/05/27(火) 22:31:34.63 ID:td83IcoB
実行順番が保障されるのだろ?
ちゃんと「data[i * 3 + offset] <= val」の後に「i <=i+1」
が記述されてあるだろ。

自分で言ってることじゃない。
何が分からないのだ?
97774ワット発電中さん:2014/05/27(火) 22:33:57.60 ID:t8Xgoc8p
data[i * 3 + offset] <= val;
i <=i+1
はノンブロッキング代入だから順番が保障されないのかなぁ?と思った次第です・・
98774ワット発電中さん:2014/05/27(火) 22:45:35.03 ID:t8Xgoc8p
もし今i=0の状態でalwaysの信号が来たとき、
data[i * 3 + offset] <= val;
i <= i + 1;
はまずdata[0 * 3 + offset] <= val;
をやって、次にiが1になるべきじゃないですか。
でもノンブロッキングなら先にiが1になっちゃって
data[1 * 3 + offset]<=val;が次に起きたりしないのかな?ってことです。
99774ワット発電中さん:2014/05/27(火) 22:46:46.76 ID:LZynj0Uu
>>94

・ <= は、always @ ()の中だけ使用。
・ = は、assign だけで使用。
のほうが、いいですよ。
どちらも同時に起こりますのでわかりやすいです。

それよりも、慣れるまでは、以下のようにbit数を意識する癖を付けた方が良いと思います。

wire    a;
wire [7:0] b;
reg [1:0] s;
reg [3:0] c;

always @ ( posedge clock ) begin
  if( RESET==1'd1 )begin
     s <= 2'd0;     // s <= 0; と書きたくなるけど 2'd0とbit数を意識
     c <= 4'd0;

  end else begin
    s <= { s[0], a };
    if( s == 2'b01 ) begin
      c <= c + 4'd1;   // c <= c + 1; と書きたくなるけど 4'd1と....
    end
  end
end

assign b = { c, s, 2'b00 };  // = は、assignだけで使う

endmodule
100774ワット発電中さん:2014/05/27(火) 22:55:29.51 ID:RXKAb72A
>>94
>a<=a+4
>b<=b+a
>だったらどうなるかはわからないよーとのことでした。
ここが間違い。
クロック同期なら右辺に使われる変数は
次のクロックエッジまで変化しない。
101774ワット発電中さん:2014/05/27(火) 23:11:21.16 ID:t8Xgoc8p
>>100
すみません、よく読み直したらノンブロッキング代入はどうなるかわからないとは書いてませんでした。
それは自分が勝手に思い込んでたことでした。。
ノンブロッキング代入は、alwaysを抜けたときに値が確定し、
それまでは変更前の値で動作するって書いてありました。

すみません&ありがとうございました!
102774ワット発電中さん:2014/05/27(火) 23:12:14.19 ID:rHvm6VeS
複数のalwaysに別れてたらどうなるかわからないんだっけ?
103774ワット発電中さん:2014/05/27(火) 23:13:13.48 ID:rHvm6VeS
あれ、それはブロッキングの方だったかも
104774ワット発電中さん:2014/05/28(水) 00:01:48.19 ID:QxNKuz4v
>>102
複数のalwaysに分かれるとmultiple driver的なメッセージでコンパイルエラーじゃないかな
105774ワット発電中さん:2014/05/28(水) 02:33:24.00 ID:P8GRCWmu
>>101
>alwaysを抜けたときに値が確定し、
どういうときに,alwaysを抜けるの?
106774ワット発電中さん:2014/05/28(水) 23:55:49.77 ID:P8GRCWmu
教えてください。

Verilogで、以下のようなことはできるでしょうか?

wire [7:0] A; // 8bit幅
wire [2:0] B; // 3bit幅
wire [1:0] C; // 3bit幅

assign A[6:4] = B;  // 8bit幅の変数に、3bit幅の値を接続する
assign A[2:1] = C;  // 8bit幅の変数に、3bit幅の値を接続する

Aは、 0 B2 B1 B0 0 C1 C0 0 のように、

指定位置に入れ込んで、他を0で埋めてくれるのでしょうか?
それとも

Aは、 ? B2 B1 B0 ? C1 C0 ? のように、不定になるでしょうか
107774ワット発電中さん:2014/05/28(水) 23:58:07.97 ID:2WzJHs2r
>>106
やってみれば?
assignがひとつもなかったらどうなる?
108774ワット発電中さん:2014/05/29(木) 00:01:15.78 ID:r9wyqbqv
?じゃなくてzだな
109774ワット発電中さん:2014/05/29(木) 00:01:56.19 ID:r9wyqbqv
あ、ごめん
zじゃなかった
110774ワット発電中さん:2014/05/29(木) 00:19:48.26 ID:nMtmMZJM
>>106
普通に連結演算子を使え
111774ワット発電中さん:2014/05/29(木) 21:02:31.08 ID:d7mG5S5m
なんか学生ぽいのが増えてきましたね
さすがゴールデンウィーク明けですか

どしどし!

さてWin8にいかろす入れてみますかね
112774ワット発電中さん:2014/05/30(金) 14:26:56.92 ID:UpNH0mQC
VerilogでHDLを書いていますが、ミスが多くて思うように進みません。
どのようにしたら、スイスイと作成できるでしょうか?
今までわかっていることは、
・自分の性格は、おっちょこちょいで落ち着きがありません。
・記憶力も悪いです。

・変数の内容がわかるように、u16_reg_AAAとか s32_wire_BBBとか書いています。
・代入する即値は、32'h1234_4c7f と、bit数を書いて_で4桁ずつ区切っています。
113774ワット発電中さん:2014/05/30(金) 14:32:36.90 ID:UpNH0mQC
追記です。
一番多いエラーは、
「その変数、いつまでたっても0だよ。だから省略するからね」というやつです。
カウンターで使ったのに、常に0って、困るんですが。
114774ワット発電中さん:2014/05/30(金) 14:57:20.14 ID:UpNH0mQC
Cleanup Projectって何でしょうか?
プランヘッドを起動してもメッセージが出てエラーになります。
115774ワット発電中さん:2014/05/30(金) 15:07:36.77 ID:UpNH0mQC
114です。おかげさまでわかりました。ありがとうございます。
116774ワット発電中さん:2014/05/30(金) 15:47:20.43 ID:VH9Uwlub
いえいえ、どういたしまして
117774ワット発電中さん:2014/05/30(金) 19:03:23.35 ID:80By6tY8
>>112
検証済みでサポート付きモジュールを使えばいいよ。
118774ワット発電中さん:2014/05/30(金) 23:34:54.73 ID:UpNH0mQC
何度もすみません。教えてください。(帰れない)

reg [3:0] hoge;

alwys @ (posedge clock) begin
  if( res ) begin

  end else begin
hoge[3] <= ....
     :
     :
hoge[2] <= ....
     :
     :
hoge[1] <= ....
     :
     :
    if( hoge== ...) begin
    
     :
  end
end

上記のように、4bitのhogeを、4bit まとめて
hoge <= ....
とせずに、各bitをバラバラな回路で評価、代入することができるのでしょうか?
連接で{ } することは良いと思うのですが。
119774ワット発電中さん:2014/05/30(金) 23:49:57.78 ID:K2OqSNHX
どうぞどうぞ
120774ワット発電中さん:2014/05/30(金) 23:54:44.49 ID:TgbourCb
ええどうぞ
121774ワット発電中さん:2014/05/31(土) 01:49:10.42 ID:+ufYh9Ek
なんか一般化の下手な人だなって印象
俺ならそれくらい受け入れてくれるだろって見切り発車して
万一だめなら、何だこの使えないクソ言語って投げ捨てるところ
122774ワット発電中さん:2014/05/31(土) 10:31:12.70 ID:DMSCh7+V
とりあえずソース書いてコンパイラ通してみればいいのに

こんなところで聞いても返事がいつ来るかわからないし
返事が来ても間違った内容かもしれない(悪意を持ってワザとウソ教えるケースも)
123774ワット発電中さん:2014/05/31(土) 18:03:35.44 ID:DJKvNDW9
動けば勝ち
124774ワット発電中さん:2014/05/31(土) 20:00:37.08 ID:MzRrdpot
>121,122
まー、
コンパイラ的には許されるけど作法的にあんまやっちゃいかんこと、
といった類のことは避けたいとかあるかもしれんし。

にしても一回試すには試さんとな。
125774ワット発電中さん:2014/06/01(日) 00:35:27.34 ID:d+7jdccI
D-FFのD端子のH/Lを決めるのは、どんな方法でもいいよね。
ただ、4bit同時にclockされるというだけで。
しかし、やるなら全ビット書き込んであげなきゃ。
126774ワット発電中さん:2014/06/01(日) 07:30:40.13 ID:qc3kFICB
>>125
えっ?
127774ワット発電中さん:2014/06/01(日) 22:05:38.60 ID:d+7jdccI
おっと、Xilinxの悪口はそこまでにしとけよ
128774ワット発電中さん:2014/06/02(月) 23:49:25.47 ID:WgGuuojj
generateを使わずに、8回同じインスタンシエーションを書いたら、
大笑いされました。
そんなに可笑しい事でしょうか?
for()で書かないとうまく動かないのでしょうか?
129774ワット発電中さん:2014/06/03(火) 08:26:27.69 ID:C0ffCLXU
人に見せた分だけ
コードは見やすくなる

ベタでも良い
見難いだけ

generateでかけば今度は笑われない だけ
130774ワット発電中さん:2014/06/03(火) 08:32:09.07 ID:ZfJUF9cx
8回だとベタ書きとどちらが見やすいかは微妙。
大笑いするのはおかしいな。
ニヤけるレベル。
131774ワット発電中さん:2014/06/03(火) 08:46:42.76 ID:l6sjiyOx
>>130
でも将来8が16や64になる可能性がわかってるのにベタに書いたら
大笑いというより怒られてもおかしくない

それより>>129のいうように学ぶための機会を得たと思えばいい
132774ワット発電中さん:2014/06/03(火) 22:03:54.67 ID:NiiIYSIV
Verilogじゃないけど、回路図インスタンスの配列記述が禁止の会社はあったな……
133774ワット発電中さん:2014/06/04(水) 00:36:33.16 ID:U+InIE9D
内製のツール使ってたりするとNGの場合があるよね
134774ワット発電中さん:2014/06/07(土) 10:49:57.22 ID:PLWZT36o
VHDLで
a <= '1' when b=c;
とelse無しで書いたらエラー出ずにラッチが生成されるのは普通なの?

Quartusなんだけど、この前これではまったよ。
135774ワット発電中さん:2014/06/07(土) 12:52:35.97 ID:M8hKKun7
>>134
> VHDLで
> a <= '1' when b=c;
> とelse無しで書いたらエラー出ずにラッチが生成されるのは普通なの?
普通です。
ラッチを記述してるからラッチが出来ただけ。
136774ワット発電中さん:2014/06/07(土) 14:18:38.80 ID:RtUul3Qu
字面だけ見るとラッチができそうだが、134が聞きたいのは、
(半分愚痴を込めて)これが規格的に合法なのかってことだろう。
俺が持ってる参考書には「必ずelse項を記述する必要があります」
って書いてある。
137774ワット発電中さん:2014/06/07(土) 14:27:28.74 ID:AQOvDX9f
どう合成されるかなんて規格で決まってるわけじゃないからね。
138774ワット発電中さん:2014/06/07(土) 18:26:39.22 ID:PLWZT36o
>>136
そうなんですよ。
一般的にはどうなのかと、VHDLの文法的、規格的にはどうなのかと。
VHDLは厳格な印象があったのでかなり意外だったし。
139774ワット発電中さん:2014/06/07(土) 18:37:36.78 ID:Cz4Q6h+Z
厳格にelseがないからラッチを合成したんだろ
140774ワット発電中さん:2014/06/07(土) 18:44:05.67 ID:PLWZT36o
LRM調べてみたら文法的にはelseがなくても正しいらしい。

conditional_signal_assignment ::=
target <= options conditional_waveforms ;
conditional_waveforms ::=
{ waveform when condition else }
waveform [ when condition ]

{ }は繰り返せる記述で0個でもよいらしい。
エラーであったほしかった…
141774ワット発電中さん:2014/06/07(土) 19:02:12.45 ID:PLWZT36o
もしかして
q <= d when clk'event and clk='1';
なんてのもありなのか?
今度試してみるかな。
142774ワット発電中さん:2014/06/08(日) 16:25:41.37 ID:tVBFGYUa
Hardware Description Languageでユーザーがラッチ推定なモノをdescriptionしたのに
合法なのかとかエラーにしてくれとか、いちゃもんをつけられるHDLタン可哀想だ・・・

>>136の持ってる参考書がちと気になるけど、単に「不用意なラッチ推定を避ける為に
条件分岐は必ずelseやdefaultを使って全ての条件を並べたほうがいい」って程度の事を
「言語仕様的にelse必須」と勝手に読み替えてるだけ・・・なんて事はないよね?
143774ワット発電中さん:2014/06/08(日) 19:21:26.61 ID:qi4ksoiV
「文法」という、構文と意味のどちらを指すのか、はっきりしない表現で言語を理解しているからダメ。
構文と意味をちゃんと峻別しなさい、ってこと。
144774ワット発電中さん:2014/06/09(月) 08:04:10.49 ID:arQlrBz2
まぁ指示してないことを
指示してないので知りませんやりません、といわれるか
自分なりに考えて頑張りました、と言われるか

HDLたん頑張れ
145774ワット発電中さん:2014/06/09(月) 18:58:22.04 ID:jJhVco3Q
だから >>134 はラッチの記述なんだって。
b=cのときにaを1にして、それ以外のときは保持するわけだから。

>>140
> エラーであったほしかった
VHDLの文法としてwhenでラッチも記述しているようにしているわけで、
VHDLの文法の段階でエラーにして欲しいとか意味がよくわからない。

>>141
文法上はOKだけど、その記述でFFを推定するかは合成ツール依存。
デザインコンパイラはFFを推定するはず。
146774ワット発電中さん:2014/06/09(月) 19:42:50.65 ID:NwRe7b0R
自分なりに考える言語ほど糞なものはない
147774ワット発電中さん:2014/06/09(月) 21:18:15.03 ID:jJhVco3Q
>>146
HDLと合成ツールの関係を理解したほうがいいと思う。
148774ワット発電中さん:2014/06/09(月) 21:27:28.51 ID:IDLA9QRl
spyglass とか使ってみるといいよ
149774ワット発電中さん:2014/06/09(月) 22:01:24.62 ID:arQlrBz2
このスレは>>146がHDLから巣立ち
スケマ書きエンジニアになっていく様を
温かく見守るスレになりました
150774ワット発電中さん:2014/06/09(月) 23:13:50.29 ID:eaOTAJF+
spyglass使ってみたいけど、確か1000万円コースじゃなかったっけ?
151774ワット発電中さん:2014/06/09(月) 23:18:17.20 ID:Tap9EwwS
スケマ最高ー
152774ワット発電中さん:2014/06/09(月) 23:52:28.59 ID:FmWdyBQB
落とし所としては、こいつはラッチになってほしくないよー、と明示したら、
ラッチになったらエラーにしてほしい、ですかねぇ
153774ワット発電中さん:2014/06/10(火) 00:25:01.05 ID:Xgqlm06a
>>134はその記述で何になって欲しかったの?
154774ワット発電中さん:2014/06/10(火) 18:55:59.76 ID:HHCZkr2b
>>152
やろうと思えば、いくつか縛りを入れれば近いことはできそう。
 条件付信号代入文は使わない
 選択信号代入文は使わない
 組み合わせ回路を作るprocess文では必ず変数経由で記述する
   process (...)
    variable a : ....
   begin
    a:=0;
    if b=c then a:=1234;
    elsif d=e then a:=5678;
    end if;
    out <= a;
   end process;
  上の例では効果がわかりずらいけど、
  条件が複雑になると、どこかでelseが抜ける可能性があるので・・・
他にもやり方は有るとおもう。

言語としての仕様はそのままでよくて、
記述の自由度を下げてまで何か縛りを入れるかは、
ユーザ側で考えればいいと思う。
155774ワット発電中さん:2014/06/10(火) 21:49:16.85 ID:DrVnVoph
つーか・・・
FFのクロックにクロック以外が入るような記述なんて
めったにしないから、ラッチの出来ようがないのだけど
156774ワット発電中さん:2014/06/10(火) 22:46:26.64 ID:5viGuzrF
>>154
組み合わせ回路をprocess文で記述するとセンシティビティリストに変数書き忘れるだけでラッチになるから逆効果でしょ。
157774ワット発電中さん:2014/06/10(火) 23:11:31.55 ID:ucuI4UvS
何言ってんだ。
LUTの出力を自身の入力につなげば自己保持回路できるじゃないか。
FPGA設計では禁止回路として真っ先に指摘される回路のひとつだけどw
158774ワット発電中さん:2014/06/10(火) 23:59:31.43 ID:HHCZkr2b
>>156
合成のときはセンシティビティリストは無視だよ。
RTLシミュレーションのときに問題になるけど。
159774ワット発電中さん:2014/06/11(水) 00:44:08.73 ID:y95R7ig0
無視?無視されると逆にラッチが実装できなくなる気がするけど。
センシティビティリストを書かないということか?
160774ワット発電中さん:2014/06/14(土) 15:42:03.97 ID:Yyru01VT
ほんとbeginとendにした奴死んでほしい
なんで{}を使わなかったんだ
あと[7:0]とかって打ちにくい。これ考えたやつも死んだ方がいい
161774ワット発電中さん:2014/06/14(土) 16:18:03.70 ID:sItJlkqe
>ほんとbeginとendにした奴死んでほしい
これには同意。せっかくC言語風なのになんでここだけPascal風なんだ

>あと[7:0]とかって打ちにくい。これ考えたやつも死んだ方がいい
VHDLの(7 downto 0)よりはマシかと。
162774ワット発電中さん:2014/06/14(土) 18:14:01.00 ID:+HXlp1C+
endの後にセミコロンが来ないのはC言語風なんだな。
そう考えるとずいぶん中途半端なんだな。
163774ワット発電中さん:2014/06/14(土) 20:20:18.33 ID:c8oKTZaO
ソースの変換プログラム作れば、C言語風でキー入力して
HDL処理系にかかるソースに変換できるよ。 いわゆる
プリプロセッサみたいなプログラムな。
164774ワット発電中さん:2014/06/14(土) 21:15:52.95 ID:QY114qYD
>>161
でも'rangeとかは便利だと思った。
165774ワット発電中さん:2014/06/14(土) 22:46:10.69 ID:9DkmzQOp
>>160
粉雪
166774ワット発電中さん:2014/06/14(土) 22:59:45.94 ID:+HXlp1C+
わしは++が実装されなかったのが残念。SystemVerilogでもブロッキング文だけだし。
167774ワット発電中さん:2014/06/15(日) 01:23:14.86 ID:yc123wkM
プログラミング言語ぢゃねぇんだ
168774ワット発電中さん:2014/06/15(日) 08:10:17.83 ID:CowFiSFw
符号と配列の扱いをもう少し真面目に考えて欲しかったな。あと、変数のスコープも変だ。
169774ワット発電中さん:2014/06/15(日) 08:24:23.05 ID:8kPdCSXd
VHDLみたいにオーバーロードには対応して欲しかった。
170774ワット発電中さん:2014/06/15(日) 15:58:54.02 ID:ztHe/ha8
rubyの話してるのかと思た
171774ワット発電中さん:2014/06/16(月) 11:15:17.73 ID:/nvOVh/f
++欲しいって、バカか
プログラムじゃねえっつーの

[7:0]がイヤならどんなならいいんだろう?
172774ワット発電中さん:2014/06/16(月) 16:30:19.90 ID:zjoFDicQ
ビットスライスする関数が欲しいかな。
(a+b)の[4:1]なんて、一度別の変数に入れるか、function作るしかないからね。
173774ワット発電中さん:2014/06/16(月) 22:43:41.07 ID:PXQcBzWV
わしは++が実装されなかったのが残念。SystemVerilogでもブロッキング文だけだし。
174774ワット発電中さん:2014/06/16(月) 22:50:01.99 ID:PXQcBzWV
>>171はnand(out, in1, in2)とかで実装しているのか?
++あったら便利だと思うけどなぁ。
175774ワット発電中さん:2014/06/17(火) 07:00:02.23 ID:kHqYmdNv
>>172
(a+b)>>1でいいだろ。

++は合った方が良いな
176774ワット発電中さん:2014/06/17(火) 11:16:05.77 ID:vkcvHALk
>>175
(((a+b)>>1)&4'hF) だよ
177774ワット発電中さん:2014/06/18(水) 06:16:01.43 ID:HOBEcg+m
++ってインクリメントのこと?
178774ワット発電中さん:2014/06/18(水) 06:27:08.29 ID:3CtsA+5z
2増やすときどうするの?
179774ワット発電中さん:2014/06/18(水) 07:13:50.16 ID:OnR4oA/+
++a[7:1]
180774ワット発電中さん:2014/06/18(水) 08:15:23.55 ID:Nv79+jlE
その発想はなかった
で、3増やすには?
181774ワット発電中さん:2014/06/19(木) 08:25:07.26 ID:FWA/DOsU
こうなったら・・・
i++++
182774ワット発電中さん:2014/06/19(木) 08:34:04.08 ID:TwXhJQLP
そもそも他の言語にもないだろ。
++はインデックスを増やすためのもんだから。
183774ワット発電中さん:2014/06/20(金) 19:07:57.27 ID:6m/lXrSp
こうとか。
procedure tt(signal a : inout std_logic_vector) is
begin
 a <= a + 1;
end procedure;
184774ワット発電中さん:2014/06/23(月) 23:32:49.10 ID:Z5rFlDP4
レジスタってカウントアップしていくと0にループして戻りますか?
185774ワット発電中さん:2014/06/24(火) 08:18:49.70 ID:uHu73wuP
レジスタの説明
カウンタ4種調べて説明
オーバーフロー、アンダーフローの説明とその活用

以上をレポート形式でまとめる事
文字数の規定無し
Wikiは認める
186774ワット発電中さん:2014/06/24(火) 08:29:43.91 ID:4iD0VDNj
>>185
カウンタ4種ってなんだろ
ジョンソンカウンタとかリングカウンタとかグレイコードカウンタとかだろうか
187774ワット発電中さん:2014/06/24(火) 09:22:31.03 ID:xmQvWBz7
クロスカウンタ
188774ワット発電中さん:2014/06/24(火) 09:35:31.13 ID:QaOx87lb
カウンタ4種盛り合わせ
189774ワット発電中さん:2014/06/24(火) 11:23:19.33 ID:1JDdtT3N
ジャンク屋の適当袋?
190774ワット発電中さん:2014/06/24(火) 12:19:27.68 ID:uHu73wuP
しくしく
ベリログの本に4つあったから適当にかいたんだよー


レジスタのループはかいてなかったけど
191774ワット発電中さん:2014/06/29(日) 18:12:46.30 ID:q/4APH0d
あるalways1(CLK1で同期)でフラグを立てて
別のalways2(CLK2で同期)の中でフラグが立っていたら一回だけ処理したい場合どうすればよいのですか?

reg flag;
always(posedge clk1 or rst) begin
 if(rst) flag <= 0;
 else begin
  if(エラー) flag <= 1;
 end
end

always(posedge clk2 or rst) begin
 if(rst) xx
 else begin
  if(flag) begin
   なんか一度だけのことをする。たとえばエラーメッセージをバッファに入れるとか。
   flag <= 0;//ここで落とす。もうエラー処理したので。
  end
 end
end

これだとFFを複数のクロックでドライブできませんみたいなエラーになります。
こういう問題を扱うときはどうしてますか?
192774ワット発電中さん:2014/06/29(日) 19:02:17.22 ID:qHxlgh71
それぞれのクロック側で別々にフラグをもってハンドシェークする。
193774ワット発電中さん:2014/06/29(日) 19:10:43.63 ID:q/4APH0d
>>192
ありがとうございます
ちょっと考える時間ください。。
194774ワット発電中さん:2014/06/30(月) 08:14:57.78 ID:Qy9pw8GW
>>193
FFのクロック端子に別の信号を入れるのは基本的にタブー。
共通のクロックで出来ないかもう一度考えたほうがいい。
事情があって共通のクロックに出来ないなら同じに出来ないなら、
お互いが外部モジュール(非同期の)と考えて設計すればいい。
あと"メタステーブル"で検索して調べることを薦める。
195774ワット発電中さん:2014/06/30(月) 09:08:58.50 ID:MfUxpEAI
>>194
位相が違うだけかもしれんよ
196774ワット発電中さん:2014/06/30(月) 09:10:34.65 ID:MfUxpEAI
>>192
ハンドシェークって言うとちょっとわかりづらくない?
要は、処理したよフラグも用意しろって言えばいいじゃん
197774ワット発電中さん:2014/06/30(月) 09:35:25.14 ID:847/h1GX
clk1側は一回立てるだけだからハンドシェイクなんていらないだろ。
198774ワット発電中さん:2014/06/30(月) 23:32:39.19 ID:ESyfd6dx
>>197
いつフラグを落とせばいいか分かっているならね。
199774ワット発電中さん:2014/06/30(月) 23:53:33.98 ID:NGdFiTNI
>>197
clk2がclk1より周波数が高かったらどうなる?
200774ワット発電中さん:2014/07/01(火) 00:18:46.50 ID:lsYqPkq3
>>191
DPRAM or FIFO
201191:2014/07/01(火) 00:51:08.50 ID:FN3lKQ8N
みなさんありがとうございます!

とりあえず、clk1とclk2でそれぞれカウンタを用意して、clk1ブロックがclk2ブロックにお願いしたいときは
カウンタを進め、clk2ではそのカウンタと自分のカウンタが違ったら処理する、というやり方にしました。
always(clk1) begin
 if(なんか処理をお願いしたいとき)
  cnt1 <= cnt1 + 1;
end

always(clk2) begin
 cnt1tmp <= cnt1;
 if(cnt2 != cnt1tmp) begin
  処理
  cnt2 <= cnt2 + 1;
 end
end

でも2つのクロックはまったく関係ない外部デバイスから引っ張ってきてるので、
周波数も位相も違います。
clk1側でカウンタを進めたときに、clk2側でそれをcnt1tmpに読んだときに
おかしな値になってないか心配です。
clk1側のカウンタがまさにインクリメントされる瞬間にとてつもなくおかしな値に見えたらどうなってしまうんだろう。。

今のところうまく動いてます。
202774ワット発電中さん:2014/07/01(火) 01:11:33.40 ID:OfVeiwBo
CDCチェッカでエラーになるソースコードだな
まあ数百の製品に載せる訳じゃないなら十分だけど
203191:2014/07/01(火) 01:15:50.26 ID:FN3lKQ8N
やっぱり駄目なやり方なんですね。
204774ワット発電中さん:2014/07/01(火) 05:54:42.27 ID:g3kSawNA
>>200
>DPRAM or FIFO

DPRAM
Dynamic Programming Radio Active Material
放射性物質の動的計画法

FIFO
Furtherment of International Friendship Organization.
国際的な乱交パーティー
205774ワット発電中さん:2014/07/01(火) 07:35:02.03 ID:suCzp7fk
>>201
処理が終わる前に次の処理依頼が来ないのなら、
1ビットのカウンタでいいんじゃないの?
つまり、1足さずに、反転。
206774ワット発電中さん:2014/07/01(火) 07:51:32.43 ID:AvsAOkxH
>>198-199
>>191 のコード見た?
一回フラグ上げたらリセットまで上がりっぱなしだろ?
207774ワット発電中さん:2014/07/01(火) 08:20:43.87 ID:OlDsICgk
CLK2系統に直接スタート信号渡して
CLK2系統が受け取ったらRDY下げて
処理終わったらRDYあげたらダメなの?
208774ワット発電中さん:2014/07/01(火) 12:20:15.75 ID:BZEUNZiC
>>206
191のコードは明からに間違えてるだろ?
上げたフラグは下げたい、って言ってるだろ?
で、おまえはclk1だけで一方的に制御すれば良いって言ったんだろ?
209774ワット発電中さん:2014/07/01(火) 12:35:14.58 ID:RNGxZV4W
>>208

>あるalways1(CLK1で同期)でフラグを立てて
>別のalways2(CLK2で同期)の中でフラグが立っていたら一回だけ処理したい場合どうすればよいのですか?

フラグを下げたいとは書いてない。
CLK1でフラグを立てて、CLK2でエッジ検出すればいいだけ。
210774ワット発電中さん:2014/07/01(火) 22:46:44.70 ID:TvLg77wN
>>191
このソースの一つ目の順次処理文のflagと、
二つ目の順次処理文のflagはまったく同じ信号のつもりっぽいね。
このレベルで非同期の設計は難しいかな。
>>201
記述の間違いはおいといて、というかぜんぜん違うけど。
やりたいことをエスパーして答えると、
その考えの延長では非同期だと上手く動かないよ。
タイミングによって処理1回行うところを間違えて2回行っちゃったりね。
211774ワット発電中さん:2014/07/01(火) 22:50:19.37 ID:WCFSDlTu
なぜカウンタに!
やりたいことによるが、>>205 のいうとおり1ビットでできるはず。
カウンタを使うならグレイコードカウンタを使わないと。
212774ワット発電中さん:2014/07/01(火) 23:01:34.73 ID:WCFSDlTu
>>201
はダメダメかとおもったけど、恐ろしいことに意外とうまく動くかも。

191が懸念している通りcnt1の変化時にラッチするとおかしな値にになるのだが、
cnt1とcnt2が等しいかどうかだけ分ければよいわけだし、cnt1とcnt2が等しいのに
等しくないと判定される可能性はなさそうなのでうまく動きそう。

cnt1とcnt2が等しくないのに等しいと判定されることはあるが、一時的なもので次のクロックでは
正しく判定されるだろうし。
213774ワット発電中さん:2014/07/01(火) 23:03:48.84 ID:TvLg77wN
>>212
同期ならならそうかもな。
214774ワット発電中さん:2014/07/01(火) 23:18:21.79 ID:TvLg77wN
一応理由を書いとくと、
たとえば3->4に変化するときを2進で書くと011->100となる。
ビットごとに変化を書くとb2:0->1、b1:1->0、b0:1->0。
これらの信号の変化は完全に同時とはならない。
3->4になる瞬間に0,1,2,5,6,7などの複数の信号状態を経由する。
どの信号状態を経由するかは合成・配線毎、
あるいは環境温度で変わるかもしれない。
これを非同期で受けると・・・・以下略。
215774ワット発電中さん:2014/07/01(火) 23:30:53.57 ID:WCFSDlTu
>>214
それを非同期で受けたとして、以下略せずにまずいことが起こるパターンを教えてくれ。
今回に限ってはまずいことが起きないように思えるのよ。
216774ワット発電中さん:2014/07/02(水) 00:04:20.77 ID:gRh3e6jW
cnt2が正しくないタイミングでインクリする
以上
217774ワット発電中さん:2014/07/02(水) 00:04:22.71 ID:8gg5QXac
たとえばcnt2=3でcnt1が3->4に変化する瞬間にラッチするとき。すなわちエラー処理を一度だけ行う必要のある状態。
cnt1が3に見えたらその時は何もしない。次のクロックで4に見えるのでその時エラー処理する。OK。
cnt1が4に見えたらその時エラー処理する。OK。
cnt1が5や6に見えたらその時エラー処理する。次のクロックでは4に見える。OK!!
218774ワット発電中さん:2014/07/02(水) 00:09:15.93 ID:gRh3e6jW
メタスタが起こったら何が起こるか分かんねーからダメに決まってんだろ
219215:2014/07/02(水) 00:11:15.51 ID:8gg5QXac
まあ、いずれにしてもお勧めできる回路ではないから深追いすることもないか。
何かしら191の参考になっていればよいが、混乱させてしまっていたらすまぬ。
220215:2014/07/02(水) 00:22:48.64 ID:8gg5QXac
非同期信号扱う以上、メタスタは回避できないしなぁ…
221774ワット発電中さん:2014/07/02(水) 00:38:23.88 ID:Jlj2msnr
>>219
君の言いたいことはこうかな?
要するに、>>201のソースで。
たとえば cnt1:3->4 と変化するときに
cnt1tmp:3->6->4見たいに変化することがある。
cnt2 != cnt1tmpのときにcnt2はインクリメントされるわけだから、
& 同時性を示すためにcnt2をそのままcnt1tmpの方を括弧付きであらわすと、
cnt2(cnt1tmp):3(3)->3(6)->4(4)
でつじつまが合うと。このケースは確かにそうかな。
メタスと一度でもcnt1<cnt2になったらcnt2がインクリメントし続けるのが気になるけど。
222774ワット発電中さん:2014/07/02(水) 01:03:51.85 ID:kone+CGS
CLK1とCLK2の水晶を1つにする。
223774ワット発電中さん:2014/07/02(水) 06:53:29.34 ID:C7ekoPpe
基本に立ち戻って、RS-FF
224774ワット発電中さん:2014/07/02(水) 09:24:15.05 ID:EKqWOgbe
FPGAで非同期セットとリセット両方が使えるとは限らんね
Spartan3は出来たと思うけど、Spartan6はムリ
Cycloneは出来るかな?
225774ワット発電中さん:2014/07/02(水) 23:04:58.98 ID:8gg5QXac
メタが気になるなら
cnt1tmp <= cnt1;
cnt1tmp2<= cnt1tmp;
cnt1tmp3<= cnt1tmp2;
と何段かのFFにすればよいんじゃない?
何段にしてもメタの確率0になることはないけど。(これは非同期の宿命)
226191:2014/07/02(水) 23:12:02.01 ID:kqenebzf
>>225
アドバイスありがとうございます!
さっそく実践したいと思います。
FPGAも電子回路も初心者なものでとんでもない物をさらしてしまいましたが
大変勉強になりました。
聞くは一時の恥ってやつですね。
227774ワット発電中さん:2014/07/02(水) 23:58:58.26 ID:8gg5QXac
いや、おかげでこちらも勉強になったよ。
228774ワット発電中さん:2014/07/03(木) 08:41:13.26 ID:jwmrgXxC
191氏がまだ見てるかどうか知らんが、191のシチュエーションだと、
フラグを立てる代わりにフラグをトグルして、トグルされたフラグを
clk2のFFで2回たたいて同期化し、そのあとflagのエッジ検出して処理開始すれば確実だよ。
異なるクロック間で処理開始の伝達はよくある事なので、俺はこれ専用の回路を
モジュール化(IP化)して使いまわしてるけど。
修正案↓
reg flag;
reg [2:0] flag_sync; //flagのclk2同期化とエッジ検出用レジスタ
always(posedge clk1 or rst) begin
 if(rst) flag <= 0;
 else begin
  if(エラー) flag <= !flag;
 end
end

always(posedge clk2 or rst) begin
 if(rst) xx
 else begin
flag_sync <= {flag_sync[1:0],flag} //flagをclk2に同期化
  if(flag_sync[2] != flag_sync[1]) begin //エッジ検出
   なんか一度だけのことをする。たとえばエラーメッセージをバッファに入れるとか。
  end
 end
end
229774ワット発電中さん:2014/07/03(木) 09:11:46.62 ID:4d6yP1bb
>>228
うん、この1bitの同期化受渡しが正解だな
>>225の多bit同期化はbit毎にズレが発生するのでやってはいけない設計
230774ワット発電中さん:2014/07/03(木) 09:25:00.07 ID:U4zEQx3m
clk2が十分に早ければ
231774ワット発電中さん:2014/07/03(木) 12:25:59.39 ID:v2WkR7YV
非同期のバイナリカウンタでも、2回叩いて値が変わってなければ同期化できたってことでいい。
232228:2014/07/03(木) 12:38:03.10 ID:jwmrgXxC
×flag_sync <= {flag_sync[1:0],flag} //flagをclk2に同期化
○flag_sync <= {flag_sync[1:0],flag}; //flagをclk2に同期化
コロン付け忘れたw

>>230
clk1でフラグをトグルする間隔が、clk2の3クロック周期以上という意味だね。
233774ワット発電中さん:2014/07/03(木) 18:47:44.76 ID:SDLrgbW9
191君がどういう理由でカウンタにしたかは定かではないが、
下記のような状況を考慮した可能性はないのかな?
 clk1側でclk2側に処理させたい事象が短期間に5回発生した。 
 clk2側はその期間に1回の事象しか処理出来ないケースがまれにある。
見たいな。
234774ワット発電中さん:2014/07/03(木) 20:07:20.15 ID:SDLrgbW9
こんな印象ね。cnt2に直接メタステ乗るけど、面倒なんでcnt1tmpは省略した。
http://codepad.org/4bRwSelw
235774ワット発電中さん:2014/07/03(木) 20:27:38.62 ID:SDLrgbW9
書いた後思ったけど、
(cnt1!=cnt2)の同期が保障されて無いと、
cnt2のビット毎にcnt2+1を通すか、
そのまま保持するか異なってくるタイミングあるかな?
cnt1tmpは省略不可か?
236774ワット発電中さん:2014/07/03(木) 22:02:41.84 ID:doLRbVKp
>>235
そうだね。省略不可だね。
237191:2014/07/04(金) 21:32:11.46 ID:3O9b04Ik
>>228
191です。わざわざありがとうございます!
ありがたく使わせていただきます。

メタステーブルという言葉を教えていただいたので
自分でもいろいろ調べることができました。
おかげさまで勉強がだいぶ進みました。

みなさんありがとうございました
238774ワット発電中さん:2014/07/04(金) 22:53:06.35 ID:qoZ+oeZm
テストしてない回路は動いていないと考えた方がいいよ。
239774ワット発電中さん:2014/07/09(水) 21:14:51.37 ID:DGyXiUmk
シュミレーションは通るけど実機だと動かないから
見てくれと渡されたソースを調べてるんだけど
ちょと見ただけでゲートクロックやシーケンサもどきの部分で
組み合わせ回路からの非同期リセットが
あるんでISEでQuartusのDesign Assistantみたいなチェックをする方法ないですか? あるてらばっかし使ってたんでISEの設定がわからん
ソースごととにQuartusでコンパイルしなそえばみつかるかも知れないけど
240774ワット発電中さん:2014/07/09(水) 23:46:48.94 ID:AqOzWriC
シュミレーションて
最低だなおまえ
241774ワット発電中さん:2014/07/10(木) 01:15:30.90 ID:5cZOnQsg
趣味でやってるもんで…
242774ワット発電中さん:2014/08/02(土) 07:14:23.83 ID:uBMfcSR0
そーかIntelもVerilogだったんだな
243774ワット発電中さん:2014/08/02(土) 15:14:55.10 ID:uBMfcSR0
Verilogになる前のインテルの独自仕様のHDLがどんなだったか興味あるわ
244774ワット発電中さん:2014/08/03(日) 07:18:32.00 ID:3iUqk1+3
やっぱりツールは内製しないと負けるよな
fpgaとかでも、日本は駄目過ぎる
245774ワット発電中さん:2014/08/03(日) 09:16:25.23 ID:wYsvvgCc
ソフトも電子回路ももう日本は圧倒的に後進国だろう
モノづくりが強かったのは金型作るときの職人の腕がすごかっただけで
もう時代が違う
246774ワット発電中さん:2014/08/03(日) 18:30:00.67 ID:rSFFEn1l
手作りに賭ける。
247774ワット発電中さん:2014/08/04(月) 04:40:13.28 ID:UIt3h80J
まだ web は準備中な感じ
Tachyon DA's CVC Full 1364 Verilog HDL Compiled Simulator is now Open Source
http://www.tachyon-da.com/
248774ワット発電中さん:2014/08/04(月) 10:53:08.70 ID:C3V8tVMK
つーかな、
日本のメーカーはソフトを軽視しすぎ。
ソフトというより、
あくせく汗水流してるとがんばって働いてるとか。
ホントの頭脳労働してても評価されない。
研究、開発、設計に現場と同じ感覚でQC活動なんかさせんな。
結局、勤勉さと、手先の器用さ以外の部分で見るべきものが全くなくなった
249774ワット発電中さん:2014/08/04(月) 15:17:02.56 ID:iBwRvjJp
殆どの付加価値はソフトウェアで実装されているが、
お客は、ハードが機能を実現していると思っている

経営者がこの感覚におちいっていると、ソフト技術者を冷遇する
経営者がこの現象を理解していると、ソフトを無料で配ってハードを高値で売る

いずれにしてもソフト技術者が尊敬されることは無い
250774ワット発電中さん:2014/08/14(木) 19:17:23.52 ID:8tlq/MX8
いかろすが8月一日に上がってた

入れはしたけど試しようがない・・・
サマリー読む気もない・・・
251774ワット発電中さん:2014/09/14(日) 20:45:51.71 ID:usnjQ+9J
Verilog で複数リセットに対応したいとき

always @(posedge ck or negedge res1 or negedge res2)

と書いても一応論理合成できたんだけどこれでいいんだろうか。

assign res = res1 & res2;

always @(posedge ck or negedge res)

みたいに書かないとダメかなとか思ったりしたけど。
252774ワット発電中さん:2014/09/14(日) 21:41:21.88 ID:pHD1RiWz
>>251
合成後の回路はどうなってるの?
253251:2014/09/15(月) 00:56:42.56 ID:UJFwcfHR
>>252
むむ、何を見ればいいんでしょう。Quartus 使ってます。
254774ワット発電中さん:2014/09/15(月) 01:33:52.62 ID:3MkPeNbp
252じゃないけど
Quartusなら
Tools → Netlist Viewer → Technology Map Viewer (Post-Fittinng)
で合成後の回路が見られる
255774ワット発電中さん:2014/09/15(月) 09:17:44.71 ID:UJFwcfHR
おー、面白い。こんなふうになっていました。
http://img.wazamono.jp/pc/thumb/1410739993472s.jpg

assign res = res1 & res2;

always @(posedge ck or negedge res)

と同じかな?
複数リセットを使ってる例って見ないんですよね。
256774ワット発電中さん:2014/09/15(月) 09:18:47.72 ID:UJFwcfHR
うは、サムネイルの方でした。こっちです。
http://img.wazamono.jp/pc/src/1410739993472.png
257774ワット発電中さん:2014/09/15(月) 18:29:38.41 ID:4YpBRKwJ
素朴な疑問なんだが検証はできるの?
258774ワット発電中さん:2014/09/16(火) 18:23:40.39 ID:bTgXr+0e
verilogの非同期リセットは何度見ても気持ち悪い。
259774ワット発電中さん:2014/09/16(火) 18:52:41.38 ID:/7J8UsiO
>>258
クロックのエッジとリセットのエッジで何らかの動作をするという本質をよく表してると思うけど
260774ワット発電中さん:2014/09/16(火) 20:25:52.82 ID:YOoCniuq
>>259
リセットはエッジじゃなくレベルでかかるべきだろ
ダウンエッジでFFがリセットされても
その後強烈なノイズが乗ってFFが1に化けたら
ダウンエッジでしか効かないリセットだとリセットは0なのに
FFは1に化けたままになりそう
261774ワット発電中さん:2014/09/16(火) 21:04:36.58 ID:bTgXr+0e
一応こうとも書けるらしいけど、
http://www.mtl.t.u-tokyo.ac.jp/~jikken/cpu/wiki/index.php?Env%2FVerilog%2FOutline
これはこれでなにか気持ちが悪いんだよな。
いや、単に俺が気持ち悪いだけですけどね・・・
262774ワット発電中さん:2014/09/16(火) 21:16:50.04 ID:/7J8UsiO
>>260
うーん、その強烈なノイズってリセット期間中だけ発生してくれるもんなの?
263774ワット発電中さん:2014/09/16(火) 21:36:40.16 ID:YOoCniuq
>>262
でもレベルでリセットが効く方が有利だろ。
車のパーキングブレーキが
「引いた瞬間しか効かない」ものだったらどうなるか想像してみてくれ。
264774ワット発電中さん:2014/09/16(火) 21:53:34.64 ID:/7J8UsiO
>>263
まぁわかるんだけどね。実装はどうせそうなるし。
でもロジック上は区別がないのが気持ち悪さになるのかな。
265774ワット発電中さん:2014/09/16(火) 21:59:13.68 ID:h9M98SAH
全FFのセンシティブにnoise追加しとけば
266774ワット発電中さん:2014/09/16(火) 22:43:25.87 ID:OTxxyOsv
センシティビティリストってシミュレーションでしか使わないんじゃなかったっけ?
267774ワット発電中さん:2014/09/17(水) 00:45:10.54 ID:7Aw1CviR
>>266
VHDLではRTLシミュレーションでしか意味が無い。
でもverilogはそうじゃない。
268774ワット発電中さん:2014/09/17(水) 00:47:10.86 ID:r7Go0FPS
レベルの動作はSim.出来ません。
269774ワット発電中さん:2014/09/17(水) 08:11:23.63 ID:GzHmrYfC
だから
強烈なnoiseが来たときに
FFを不定なり
リセットなり
掛ければ良いのでは

・・・まぁそんなこと回路か動くことのまえでは意味ないし
ノイズならRTL以外でケアすべきところ
270774ワット発電中さん:2014/09/17(水) 23:04:47.86 ID:XEmKdM0X
>>261
どっちにしてもVHDLにしても変化があった時に動作するのがセンシティビティリストなので結局はレベル動作を表しているわけじゃないけどね。
271774ワット発電中さん:2014/09/18(木) 07:54:17.14 ID:WfnlP8o0
RTLで表現出来る非同期リセットのノイズなら、エッジ評価で問題無いでしょうに。gate cellモデルならprimitive文で非同期リセットをレベル動作モデリングするのが通例。
272774ワット発電中さん:2014/09/18(木) 17:53:48.18 ID:20hcEhHE
下記のようなラッチを
always@(G or D)
if (G) Q <= D;

こう書くのと似た気持ち悪さってことかね。
always@(posedge G or posedge D or negedge G or negedge D)
if (G) Q <= D;

VHDLはそもそもセンシティビティリスト自体不要だったと思うんだけど、
なぜあるんだろうね。
273774ワット発電中さん:2014/09/18(木) 19:13:43.49 ID:mLYjpwUg
>>272
シミュレータが楽をするため
274774ワット発電中さん:2014/09/20(土) 09:35:37.68 ID:EYqUSttY
カムリてFFだったんだな
275774ワット発電中さん:2014/09/20(土) 23:17:38.22 ID:wixbAogh
フリップフロップ?
276774ワット発電中さん:2014/09/21(日) 00:49:47.24 ID:MCfBJJ7P
ファイナルファンタジー?
277774ワット発電中さん:2014/09/21(日) 07:55:34.05 ID:xi+B4iVk
トランジスタ特性条件?
278774ワット発電中さん:2014/09/21(日) 12:16:12.40 ID:L/klupT2
カネが〜すべてさ〜♪
279774ワット発電中さん:2014/09/21(日) 12:46:47.14 ID:MCfBJJ7P
5・7・5
の後に「それにつけても 金の欲しさよ」
を付ける。
280774ワット発電中さん:2014/09/24(水) 03:11:13.01 ID:aIwnBJW5
けっこうカネもちなくせによく言うわ
281774ワット発電中さん:2014/10/30(木) 17:00:06.03 ID:dNw3/Urz
VerilogでALU的なのを書いていたらはまったのですが、
ModelSim-Altera Starter Edition 10.1e で次のコードを実行したら、
なぜか三つめだけ論理シフトになってしまいます。

これはVerilogの仕様なんでしょうか?あるいはModelSimのバグ?
他の環境ではどうなるのでしょう?

`timescale 1ns / 1ps
module alu_tb;
wire dummy;

initial begin
$display("%x",
$signed(32'hffff8180) >>> 8);
$display("%x",
1 ? $signed(32'hffff8180) >>> 8 :
0);
$display("%x",
1 ? $signed(32'hffff8180) >>> 8 :
0 ? 32'hffff8180 >>> 8 :
0);
$display("%x",
1 ? $signed($signed(32'hffff8180) >>> 8) :
0 ? 32'hffff8180 >>> 8 :
0);
$stop;
end
endmodule
282774ワット発電中さん:2014/11/02(日) 14:58:30.19 ID:6RmVD04Q
>>281

多分Verilogの仕様 。
32'hffff8180はunsignedなので算術シフトしても論理シフトになる。
算術シフトしたいなら32'shffff8180か $signed(32'hffff8180)のように
signedとして扱われるように記述する必要がある。

ただ、後者がセレクトされる理由は分かんないや。ゴメン。
283774ワット発電中さん:2014/11/02(日) 15:30:56.46 ID:RHpjiNww
>>282
あ、3つめも後者の論理シフトが選択されてるわけではなくて、
$signedの付いている方の式を実行してるんです。
紛らわしい例でごめんなさい。
284774ワット発電中さん:2014/11/02(日) 16:54:34.20 ID:iS0fpnsg
>>281
うちにもフリーのツールしかないからModelSim ASEとVerilatorでしか試せてないけど、
Verilatorではちゃんと全部同じ値になった。
ffffff81
ffffff81
ffffff81
ffffff81
Verilogの仕様ってことはないんじゃないかな。
285sage:2014/11/02(日) 22:44:59.56 ID:YxW1cfDO
>>281
仕様書読んでみたけど、3項演算子のときどうなるのかよく分からない。
verilogでsignedは後から追加された仕様だから謎の部分が多い。
どうしても使わなきゃいけない部分以外は、unsigned にしとくほうが安全だね。

http://www.edaplayground.com/
286774ワット発電中さん:2014/11/04(火) 20:57:45.18 ID:Zmp209bf
3番目はこう解釈されてるのかな?
$display("%x",
(1 ? $signed(32'hffff8180) >>> 8 : 0) ? 32'hffff8180 >>> 8 :0);
なぜ3番目だけこうなるのだろう。
287774ワット発電中さん:2014/11/04(火) 21:12:40.07 ID:Zmp209bf
演算子の優先度を調べてみたけど、下記表現が
 a ? b : c ? d : e  ・・・(1)
下記のどちらで解釈されるかは
 (a ? b : c) ? d : e
 a ? b : (c ? d : e)
どこにも書いてない。
未定義なのかな?
未定義だとすると(1)と書くのがそもそも間違いという結論になるのかね。
288774ワット発電中さん:2014/11/04(火) 21:38:03.82 ID:n2YAtGDR
>>286
手元のModelSim ASE 10.1dで試してみると
$display("%x", 1 ? $signed(32'hffff8180) >>> 8 : 0 ? 32'h12345678 : 0);
としても結果は
00ffff81
になるので、後ろの項が選択されているわけではないっぽい。
289774ワット発電中さん:2014/11/04(火) 23:07:45.98 ID:eG4OWape
>>287
「同じ優先度の場合は左から右」って書いてあるよ
290774ワット発電中さん:2014/11/04(火) 23:08:50.37 ID:eG4OWape
a / b / c != a / ( b / c )
291774ワット発電中さん:2014/11/05(水) 00:04:33.47 ID:YiwBjnU+
>>289
結合性が左ということは、
>>281
の実行結果は本来こうなるのが正しいということでOK?
ffffff81
ffffff81
00ffff81
00ffff81
292774ワット発電中さん:2014/11/05(水) 00:45:08.43 ID:Y5QyR1i8
>>289
三項演算子が左から右ってありえなくない?
そんなことになったらマルチプレクサ書くのにカッコの山になる。
293774ワット発電中さん:2014/11/05(水) 01:13:42.64 ID:kVUs7aOQ
複雑なマルチプレクサならalways文で書け
294774ワット発電中さん:2014/11/05(水) 01:19:41.42 ID:Y5QyR1i8
>>293
always文で組み合わせ回路書くの好きじゃない
295774ワット発電中さん:2014/11/05(水) 08:06:17.72 ID:WVJQMb68
じゃあファンクション
296774ワット発電中さん:2014/11/05(水) 09:16:43.08 ID:kZzXAAQr
>>292
foo= a ? b : c ? d : e; だと、
c じゃなくて a を先に評価しろってことでしょ?
a が真なら b、
偽なら c ? d : e 。
297774ワット発電中さん:2014/11/05(水) 09:17:28.05 ID:kZzXAAQr
ってか、どちらにせよカッコ付けろよ
298774ワット発電中さん:2014/11/05(水) 09:52:22.27 ID:RtvJ57gL
>>296
あぁ、結合順じゃなくて評価順のことね。
299774ワット発電中さん:2014/11/05(水) 10:57:19.69 ID:CkzFue08
条件演算子(3項演算子)の優先順位が変テコりんな言語はPHPだけ。
PHP以外は全てC言語と同じだろ?
300774ワット発電中さん:2014/11/05(水) 12:25:35.27 ID:+I/b1KAv
カッコつけないで括弧つけろ
301774ワット発電中さん:2014/11/05(水) 12:40:51.77 ID:WVJQMb68
セレクタとして使う信号には
頭にs_を付けて見るとー
302281:2014/11/05(水) 12:51:59.84 ID:11EZsYb+
みなさんありがとうございます。
ISE14.7のISimでもやはり三つめが論理シフトになってしまいました。
ModelSimと同じエンジンを使っているという可能性もありますが、
どうもVerilogの仕様かもしれません。

式をいろいろいじったところ、次のような結果になりました。

`timescale 1ns / 1ps
module alu_tb;
wire dummy;

initial begin
$display("%x", $signed(32'hffff8180) >>> 8); //ffffff81
$display("%x", $signed(32'hffff8180) >>> 32'd8); //ffffff81
$display("%x", ($signed(32'hffff8180) >>> 8) + 0); //ffffff81
$display("%x", ($signed(32'hffff8180) >>> 8) + 1); //ffffff82
$display("%x", ($signed(32'hffff8180) >>> 8) + 32'b0); //00ffff81
$display("%x", ($signed(32'hffff8180) >>> 8) + $signed(32'b0));//ffffff81
$display("%x", $signed($signed(32'hffff8180) >>> 8) + 32'b0); //ffffff81
$display("%x", $signed(($signed(32'hffff8180) >>> 8) + 32'b0));//00ffff81
$stop;
end
endmodule

推測ですが、次のようなルールと思われます。

・0や1は符号なしではないが、32'b0は符号なし。

・右辺式のいずれかの値が符号なしだと、全体が符号なしになる。
 このとき$signed()をつけていてもはがれる。
 ただし
 三項演算子では、a ? b : c のとき、aの符号有無はb, cには無関係。
 シフト演算子の第2項の符号有無も第2項には無関係。

・$singed($signed())と二重になっていると、一つだけ(たぶん内側?)はがれる。

これが本当に仕様かどうかは確認できていません。
303281:2014/11/05(水) 12:56:05.99 ID:11EZsYb+
× シフト演算子の第2項の符号有無も第2項には無関係。
○ シフト演算子の第2項の符号有無も第1項には無関係。
304774ワット発電中さん:2014/11/05(水) 19:25:05.65 ID:YiwBjnU+
>>302
> ・0や1は符号なしではないが、32'b0は符号なし。
例を見るとそれっぽいね。

> ・右辺式のいずれかの値が符号なしだと、全体が符号なしになる。
近い感じだけどちょっと違うかな?

> ・$singed($signed())と二重になっていると、一つだけ(たぶん内側?)はがれる。
これはたぶん違うんじゃないかな?
下から2番目
$display("%x", $signed($signed(32'hffff8180) >>> 8) + 32'b0); //ffffff81
に適応すると
$display("%x", ($signed(32'hffff8180) >>> 8) + 32'b0); //ffffff81
これは上から5番目と同じ形だから結果は00ffff81になるはず。

だから >>302 に共通するルールは
 論理シフトを実行する場合、その次に実行される演算まで評価して数値型を決める。
 上記評価範囲内に符号なしが存在すれば符号なし型となり、
 すべて符号付であれば符号付型となる。
じゃないかな?

下から2番目の最初に実行されるシフト演算と、その次に実施される演算を抜き出すと、
$signed($signed(32'hffff8180) >>> 8)
だから、上記部分は$signed(32'hffffff81)となり、以下略。
一番下の最初に実行されるシフト演算と、その次に実施される演算を抜き出すと、
($signed(32'hffff8180) >>> 8) + 32'b0
だから、上記部分は32'h00ffff81 + 32'b0となり、以下略。
305774ワット発電中さん:2014/11/05(水) 19:52:22.38 ID:YiwBjnU+
>>304
> 論理シフトを実行する場合
算術シフトね。
306774ワット発電中さん:2014/11/05(水) 21:27:45.69 ID:YiwBjnU+
度々すいません。
もっと単純なルールで説明できますね。
 ・計算式中一つでも符号なしが存在した場合、
  その式は符号なしとして計算される。
 ・$signed(*)見たいなものは*が先に計算されてから$signedに渡される。
  これはFunc(*)等の関数でも同様。
考えてみれば当たり前ですね。

// 08000000
$display("%x",'sh80000001/'sh10 + 'sh0 + 'sh0 + 'h0);
$display("%x",$signed('sh80000001/'sh10 + 'sh0 + 'sh0 + 'h0));
// f8000001
$display("%x",'sh80000001/'sh10 + 'sh0 + 'sh0 + 'sh0 + 'sh0);
$display("%x",$signed('sh80000001/'sh10 + 'sh0 + 'sh0) + 'h0);
$display("%x",$unsigned('sh80000001/'sh10 + 'sh0 + 'sh0) + 'h0);
307774ワット発電中さん:2014/11/05(水) 23:40:44.38 ID:zhHmeCtP
誰かVCSとかNCで試してみてくれないかな
308774ワット発電中さん:2014/11/06(木) 00:40:01.61 ID:EvWPeAFY
Cならやってみた。符号はどの言語でもややこしい・・・
http://codepad.org/ooLUGl7shttp://codepad.org/UGnOMahv
シミュレーション実行可能なVerilogのソースアップローダってないのかな。
309774ワット発電中さん:2014/11/06(木) 00:41:06.24 ID:EvWPeAFY
前のリンクがのこってたわ
http://codepad.org/UGnOMahv
310774ワット発電中さん:2014/11/06(木) 08:19:06.95 ID:m3ocUVek
符号の扱いは、ieeeの規格書にちゃんと書いてあるだろ。見ているのか?
311774ワット発電中さん:2014/11/06(木) 12:05:58.55 ID:LdPAe1f3
>>307
VCS と irun(nc-verilog) でやってみたぜ。

>>281 をそのままやったら、どちらも
ffffff81
ffffff81
00ffff81
ffffff81
312774ワット発電中さん:2014/11/06(木) 12:08:23.58 ID:LdPAe1f3
>>308
オレが >>285 にリンク貼ってやっただろ
313774ワット発電中さん:2014/11/07(金) 23:49:04.10 ID:0OzJPhtw
算術演算のIP作ったとき、符号付、符号無の混在演算のサポートで結構悩んだなぁ。
割り算IPの場合、符号付A÷符号付B=符号付Qの演算の時とか、
Qの整数部のビット数=Aの整数部のビット数+1にしないと、Qの整数部がオーバーフローするんだよね。
例)
-65536÷(-1) = +65536
314774ワット発電中さん:2014/11/09(日) 16:04:29.68 ID:Qfbx8iBP
http://www.eecg.toronto.edu/~laforest/hdl_references/coding_guidelines.pdf
3. Mixed unsigned/signed expression (Verilog)
? Rule: Do not mix unsigned and signed types in one expression
315774ワット発電中さん:2014/11/09(日) 16:51:41.27 ID:Qfbx8iBP
身もふたも無いので・・・
>>306
↓これでOK?

$signed(32'hffff8180) >>> 8
$signed(u) >>> s
s >>> s      すべてsなので算術シフト
s
結果は32'shffff8180(signed)。

1 ? $signed(32'hffff8180) >>> 8 : 0
s ? $signed(u) >>> s : s
s ? s >>> s : s      すべてsなので算術シフト
s
結果は32'shffff8180(signed)。

1 ? $signed(32'hffff8180) >>> 8 : 0 ? 32'hffff8180 >>> 8 :0
s ? $signed(u) >>> s : s ? u >>> s : s
s ? s >>> s : s ? u >>> s : s      uがあるので論理シフト
u
結果は32'h00ffff81(unsigned)。

1 ? $signed($signed(32'hffff8180) >>> 8) : 0 ? 32'hffff8180 >>> 8 :0
s ? $signed($signed(u) >>> s) : s ? u >>> s : s
s ? $signed(s >>> s) : s ? u >>> s : s    $signedに渡される s >>> s がすべてsなので算術シフト
s ? $signed(s) : s ? u >>> s : s
s ? s : s ? u >>> s : s      uがあるので論理シフト
u
結果は32'hffff8180(unsigned)。
316774ワット発電中さん:2014/11/09(日) 20:53:17.93 ID:G0OG5WJ6
最近はルート配線で悩んでる
スラックを満たしてるけどクロックに対して余裕が少ない
単クロックばら撒いてるのに配線遅延のせいかタイミングが満たせない
スライス量が増えると適切な配置に限界があるのか
317774ワット発電中さん:2014/11/10(月) 20:28:56.99 ID:mXuY5agi
タイミングの類はベストとワーストでやるだろうから
結構マージンあると思うよ
318774ワット発電中さん:2014/11/14(金) 11:01:55.38 ID:gBlB4OT4
ルート配線… シンセサイズ合成みたいなものか
スラック満たしてるなら全く問題ないと思うけど
ツールは制約満たしてればそれ以上無駄な努力はしないよ
無駄な努力を強制するなら、XilinxならContinue on Impossibleなんてオプションがあるけど
319774ワット発電中さん:2014/11/15(土) 03:59:36.97 ID:LqzTVCZu
設定次第ではアホみたいにコンパイル時間かかるよね
320774ワット発電中さん:2014/11/15(土) 08:57:07.12 ID:lWJUCtB0
3日とかね
321774ワット発電中さん:2014/11/15(土) 18:41:56.89 ID:ltgB1esX
とりあえずメモリ増やせよ
322774ワット発電中さん:2014/11/23(日) 20:31:08.44 ID:CxGRU0aw
マージン増やそうと思ってクロック制約を割増なんてやっていいですか
323774ワット発電中さん:2014/11/23(日) 23:59:14.12 ID:gccuASjv
>322
リソース無駄に使うことになるけどそれでもよければ
324774ワット発電中さん:2014/11/24(月) 00:13:49.50 ID:4vvitbkL
多クロック入れる場合は各々入力に制約つけてるがまずいんか
325774ワット発電中さん:2014/11/28(金) 23:49:57.23 ID:Cq1F7Wfr
このスレでvhdlは少数派か
俺もバイリンガルになろう
326774ワット発電中さん:2014/11/29(土) 00:13:09.45 ID:eqsRZsDi
Verilogに対するSystemVerilogのようなものって、VHDLにはあるの?
327774ワット発電中さん:2014/11/29(土) 11:20:32.55 ID:ObDwEzlE
VHDL-2008とか?
328774ワット発電中さん:2014/11/30(日) 20:01:39.29 ID:2m6XlH6Z
ドワンゴ「急募!FPGA機器開発経験者!」 ニコニコ動画をFPGAで高速化、ハード技術者を募集中&copy;2ch.net
http://hayabusa3.2ch.net/test/read.cgi/news/1417266799/
329774ワット発電中さん:2014/11/30(日) 21:29:50.50 ID:gn5WqU+B
呼ばれたような気がする
330774ワット発電中さん:2014/11/30(日) 21:42:33.99 ID:81WBD9rk
>>328
テクノマセマティカルでも買ったほうがいいよ。
エンジニアはほとんど残ってないみたいだけど。
331774ワット発電中さん:2014/11/30(日) 21:56:50.32 ID:zx8WHH08
>>328
このスレで「これができる奴は30代でも年収1000万超えてるレベルだろ」って言われてるけど
500万の俺は一体・・・
332774ワット発電中さん:2014/11/30(日) 22:00:47.47 ID:yTkERP9G
IPオフロード処理関連では無く、トランスコーダーの方なんだねぇ

素直にOpenMPとかOpenCL使ったアルゴリズムに力入れた方がヨクネ?とか思ったら負けなんだろうな…
333774ワット発電中さん:2014/11/30(日) 22:15:54.26 ID:GCJWQoae
デバイスドライバの実装はハードウェア設計者とは別だと思うんだが…
334774ワット発電中さん:2014/12/01(月) 00:48:10.80 ID:82dKVpIt
なんだかなぁ、IP集めて何か作ればそれで作ったような気になる、
こんな技術者が多すぎる。
何も自分の頭で基礎を考えようとしない?
それがものづくりなのか?
335774ワット発電中さん:2014/12/01(月) 01:19:23.62 ID:nnM/3m1X
いまさら民主党
336774ワット発電中さん:2014/12/01(月) 07:35:44.43 ID:LlcUaQKV
動けば勝ち
337774ワット発電中さん:2014/12/01(月) 09:13:16.16 ID:0F1w/yf8
ライブラリをまったく持っていないだろうな。完成まで2,3年かかると見た。
338774ワット発電中さん:2014/12/01(月) 09:56:39.52 ID:35Ru9Ydd
>>334
チェンジニアとアセンブラですから。
339774ワット発電中さん:2014/12/01(月) 11:46:29.99 ID:+MzLMqfC
>>338
特許調査もめんどいしな
340774ワット発電中さん:2014/12/01(月) 13:19:51.95 ID:VT4kKFcf
>>328
金余ってるならルネサス救ってやれよ
341774ワット発電中さん:2014/12/04(木) 18:59:15.88 ID:KtbaEH9n
デバドラはMS-DOS時代に書いた事はあるけどWindowsやLinuxでは書いたことないからパスだな
342774ワット発電中さん:2014/12/04(木) 20:59:48.28 ID:xq5Xyo8x
誰か応募しないのかよ。
2000万くらいふっかけてさ。
343774ワット発電中さん:2014/12/08(月) 07:39:59.41 ID:qCcY8gjl
やだよぅ
あんたやりなよぉ
344774ワット発電中さん:2015/01/06(火) 12:51:49.90 ID:8EiV/sDa
勉強中の身なのですが質問があります。
verilogでnビット加算回路を作成したく思っています。

調べたところ、+記号を用いて簡単に作成しているものがありました。

+記号を使わずに、全加算器を用いてnビット加算回路を作成する方法はありますか?

例えば3ビットの場合、全加算器を3つ(または半加算1つと全加算3つ)記述しなければならないのと思うのですが、こういったものをn個(指定した個数)にするといった方法はあるのでしょうか?
345774ワット発電中さん:2015/01/06(火) 13:16:38.96 ID:XbMNxlM+
generate
演算子使わないで全加算器連結なんて、お勉強以外で実際に使う事は無いと思うけど
346774ワット発電中さん:2015/01/06(火) 14:58:58.25 ID:VCO+erxy
>>344
verilogじゃないけどVHDLで全加算器を自動で並べる記述をして
作ったことがあるよ。
この場合、FPGAだとキャリーチェーンを使わなくなってしまい
ロジックの消費も増えてだめだった。
結局素直に+演算子で記述した方が、ロジックの消費を抑えられたよ。
347774ワット発電中さん:2015/01/06(火) 15:09:43.27 ID:StvSqy+U
perlとかrubyでスクリプト組めば?
348774ワット発電中さん:2015/01/06(火) 16:06:16.36 ID:1muLcfsw
初心者なんだけどビヘイビアレベルってなに?
vhdlで普通にかいたらrtlレベルの記述になるよね

それと
process(clk)
begin
if(clk'event)

って意味が重複してない?
process(clk)っでclkが変化したときだけ実行されるんだよね?
349774ワット発電中さん:2015/01/06(火) 16:26:22.81 ID:XbMNxlM+
>>346
そうなる罠
FPGAベンダのツールじゃ無くて、Synplifyみたいな高級品使えばそういう所も意図を汲んでくれる、らしい
使った事ないから知らんけど

>>347
ネタじゃ無くて実際にそんなやり方してるの?
350774ワット発電中さん:2015/01/06(火) 17:09:05.15 ID:StvSqy+U
>>349
Xilinx の何とかwizardもそうだろ?
何でも出来るぞ。
351774ワット発電中さん:2015/01/06(火) 17:25:31.30 ID:XbMNxlM+
マジだったのか…そりゃ何でも出来るだろうけどさ
>>344 みたいな言語の構文で十分出来るような事までスクリプト組んで自動生成したいのか?

以前にPCヲタが仕事で「Excelで16進表記したいからVBAでマクロ組んだった」ってドヤ顔するの思い出したわ
352774ワット発電中さん:2015/01/06(火) 18:36:13.39 ID:B2E0K73a
>>348
> 意味が重複してない?
> process(clk)っでclkが変化したときだけ実行されるんだよね?
そう。だから、clk'eventは必ず真になる。
でもこれはVHDLの文法での話であって、
合成ツールはそうじゃない。
合成ツールはVHDLのセンシビティリスト無視するから、
意図した回路ができない。
353774ワット発電中さん:2015/01/06(火) 19:26:38.59 ID:B2E0K73a
後、ビヘイビアレベルだけど、
設計の初期段階に、
 回路合成できるかどうかは無視して抽象的な設計をする
レベルって感じの意味。
たとえば、下記は合成はできないが、
1秒毎進むカウンタを表現している。
細かいことは無視して構想設計して、
次の段階で合成可能なRTLレベルに落とし込んでいくイメージ。
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity Test1 is
port(A : out integer);
end Test1;
architecture behavior of Test1 is
signal B : integer;
begin
A <= B;
process begin
B <= 0;
while true loop
wait for 1 sec;
B <= B +1;
end loop;
end process;
end behavior;
354774ワット発電中さん:2015/01/06(火) 21:22:38.91 ID:Nz1HYU2m
つかココ人居たんだ・・・

アルテラかなんかで32bit加算器を
適当APPNAと+記号で比べたら
+が断然速かったなぁ
355774ワット発電中さん:2015/01/07(水) 00:14:52.12 ID:nzEuH181
>>353

ありがとう!なんとなくわかってきた!

ビヘービアでは論理合成できるとは限らないのか

テストとかでなら使えそうだね
356774ワット発電中さん:2015/01/07(水) 05:23:16.84 ID:r1QvrnDk
テスト用にでっち上げたスタブのRAMとかドライバは中身ちょ〜適当なので合成不可ばっかりだわw
357774ワット発電中さん:2015/01/07(水) 11:02:38.27 ID:2VspyyQf
何が合成可能なのかいまいちわからん
wait系ならwait untilだけ、それも1processにつき一個まで
とか

断片的な知識しかない
合成不可なパターンをまとめたページとかありませんか?
358774ワット発電中さん:2015/01/07(水) 11:14:59.17 ID:5UEMO4Cj
うろ覚えだけど、XilinxのXSTはこんなのも合成してくれると資料に書かれていたような
誰得…

process begin
 wait until rising_edge(CLK);
 data <= '0';

 wait until rising_edge(CLK);
 data <= '1';
end process;

クロック信号と極性は全部同じでないと駄目で、さらにステート保持用にレジスタが生成されるはず
359774ワット発電中さん:2015/01/07(水) 18:56:23.28 ID:D/XG739e
>>357
こう書けば合成可能というしっかりした規格は無いと思う。
が、DesignCompilerという論理合成ツールがスタンダードと考えていい。
下記あたりで回路推定可能な記述はどんな形かを知っておくといい。
http://cseweb.ucsd.edu/~tweng/cse143/VHDLReference/08.pdf
360774ワット発電中さん:2015/01/21(水) 02:16:05.83 ID:uTdAJ0ud
初心者ですが、教えて下さい。

Verilogで、ADコンバータの値を8回の移動平均しようと考えています。
以下のように記述を考えましたが、何か勘違いしているでしょうか?

always @ (posedge CK) begin
 if( RESET ) begin
   ・・・・
 end else begin
  meta <= AD_pin; //メタフィルタ
  AD0 <= meta;  //記憶(最新)
  AD1 <= AD0;  //
  AD2 <= AD1;  //
  AD3 <= AD2;  //
  AD4 <= AD3;  //
  AD5 <= AD4;  //
  AD6 <= AD5;  //
  AD7 <= AD6;  //記憶(最古)
  AD_gokei <= AD0+AD1+AD2+AD3+AD4+AD5+AD6+AD7; //合計する
  AD_heikin <= AD_gokei[19:2]; //8で割る
 end
end

過去7個を持たなくても、前回平均値に「最新値を8で割って」加算すればよいか....
と思っていましたが、それは違うと思いました。
いかがでしょうか
361774ワット発電中さん:2015/01/21(水) 04:16:12.52 ID:IQ413lBG
8で割るなら3ビット落とさないと駄目なのでは
362774ワット発電中さん:2015/01/21(水) 09:27:36.05 ID:esy4Oum6
>>361
FIRとIIRの違い。調べてみよう。

ちなみに、AD_goukei は、レジスタでなくていいのでは?
363774ワット発電中さん:2015/01/21(水) 20:29:31.45 ID:y7S4LYjd
俺なら、最古引いて最新を足すで合計をだすな
364774ワット発電中さん:2015/01/22(木) 07:56:24.92 ID:HiozZft4
>>363
8個前のデータを保持する方法が気になる
365774ワット発電中さん:2015/01/23(金) 01:52:56.48 ID:7LyKAswa
8個前のデータを保持するのは、言い換えれば、
8個手前のデータを与えることなので、
8個分の遅延をした値を与えればOK。
366774ワット発電中さん:2015/01/23(金) 04:06:57.70 ID:E3fKCcch
FPGAで2行LCDを駆動しようとプログラム(Verlog)していましたが、
結局今日1日かかってもできませんでした。
待ちに次ぐ待ちで、タイマーを何本も作りましたが、うまく文字が出ませんでした。
reg [19:0] count;

reg timer_start1;
reg timer_start_0;
reg timer_start_1;
reg timer_end1;

timer_start_0 <= timer_start1;
timer_start_1 <= timer_start_0;

if( (timer_start1==1'b0) && (timer_start0==1'b1) ) begin // 立ち上がったら
  if( count < 20'd50000 ) begin             // カウンタが50000より小さいなら
    count <= count + 20'd1;              // カウンタアップ
    timer_end1 <= 1'b0;                // 終了ではない
  end else begin
    timer_end1 <= 1'b1;                // タイマ終了である
  end
end

マイコンだと、__delay_ms(5)って書くと5ms待つんですが、
FPGAは何行も書くのですが、そういう1行の命令はないのでしょうか?
何かコツはありますでしょうか?
367774ワット発電中さん:2015/01/23(金) 06:40:58.73 ID:ERlYt37C
FPGAがどういうものかっていうのを今一度調べ直してみるといいのではなかろうか
368774ワット発電中さん:2015/01/23(金) 09:04:45.59 ID:qufzxHsa
>>366
うまく出ないというよりコンパイルできてないだろそもそも
369774ワット発電中さん:2015/01/23(金) 10:13:39.56 ID:/gZpWmP5
クロックを200Hzで動かすんだ!
370774ワット発電中さん:2015/01/25(日) 06:34:20.05 ID:EhYiihDE
すみません、教えてください。

Verilogで、符号付きの計算で苦戦しています。

符号付きのレジスタは、
reg signed [7:0] tinco [0:7];
で宣言できます。また、正の定数は、
tinco [4] <= 8'sd250;
で、代入できます。

しかし、負の定数の記述方法がわかりません。
tinco [5] <= 8'sd-250;
は違うと思いますし。

宜しくお願いします。
371774ワット発電中さん:2015/01/25(日) 10:13:41.55 ID:JJ8QOH6O
-8'sd250 でも -8'd250 でもどちらでも。
ビット長なんて気にしなくていいから、-250 でいいと思うけど。
372774ワット発電中さん:2015/01/25(日) 10:20:03.32 ID:JJ8QOH6O
ってか、signed 8bit だと、-128〜+127 じゃない!
373774ワット発電中さん:2015/01/25(日) 22:13:11.11 ID:g2x9f0W/
10年振りにHDLでも弄ろうと思ったら、センシティビティリストとか手抜きできてびっくりした。
374774ワット発電中さん:2015/01/26(月) 01:58:23.40 ID:t2z72wP8
Verilogで signed って使えるんだ。すごい。

reg signed [15:0] s16_aaa;
reg signed [11:0] s12_bbb;
があったとき、

s12_bbb <= s16_aaa; ってやると、どうなるの? ちゃんと値のLSB側が切られて
キャストされて代入されるの?

また逆に、s16_aaa <= s12_bbb; ってやると、ちゃんと符号拡張もやってくれるのかしら。
375774ワット発電中さん:2015/01/26(月) 09:36:27.30 ID:VNh3vzA2
>>374
IEEE1364-2005 に書いてあるから読め
376774ワット発電中さん:2015/01/29(木) 03:30:33.03 ID:OlvVWTGw
Verilogで、負の数値が扱えなかったころは、どうやって処理したのだろうか。
自分で負の処理を書いたのだろうか。

if( a == 16'h0 ) begin
  a <= 16'hffff;
end else begin
  a <= a - 16'h1;
end
 とか 
377774ワット発電中さん:2015/01/29(木) 06:38:01.91 ID:qaht6dEb
えっ
378774ワット発電中さん:2015/01/29(木) 07:33:12.58 ID:xZAA/WqV
負数の内部表現は2の補数。unsignedだけでも符号拡張が面倒くさいがさほど困らんよ。
379774ワット発電中さん:2015/01/29(木) 08:01:11.00 ID:Hk1KNEU0
1995と2005では負の値に対するnumberの扱いがちと違う。

詳しくは規格を見てもらうとして、xやzを無視した10進整数に限って言えば
// 1995
decimal_number ::=
 [sign] unsingned_number
 | [size] decimal_base unsigned_number
decimal_base ::= 'd | 'D
// 2005
decimal_number ::=
 unsigned_number
 | [size] decimal_base unsigned_number
decimal_base ::= '[s|S]d | '[s|S]D

もちろん2005でも単項演算子としての-があるからあまり違いを気にする事はないけどね。
380774ワット発電中さん:2015/01/31(土) 02:21:59.18 ID:eKQkzo8n
Xilinx ISEでVerilogをやっています。
少し修正するだけでも一通り全部のコンパイルをするので
時間がかかって困っています。
修正したファイルだけをコンパイルするだけで良いとか、
そういう方法はないのでしょうか?
381774ワット発電中さん:2015/01/31(土) 03:02:03.89 ID:LE69sxSL
時間がかかるのはコンパイルよりP&Rですよ。
困るほど時間がかかるのは、デバイスの使用率が大きすぎるからだと思う。
あと、PCのメモリが足りないんじゃないかな?
382774ワット発電中さん:2015/01/31(土) 03:29:40.42 ID:Vtudet0c
>>380
>修正したファイルだけをコンパイルするだけで良いとか、そういう方法
たぶん無いと思います。ガマンするしかありません。
PCのスペックを上げれば、確かに速くなりますが、劇的ではない予感がします。
時間がかかると言っても、30分程度なら短い方ですよ。
1晩とか平気でかかっていた時代もあったらしいです。
383774ワット発電中さん:2015/01/31(土) 16:27:08.97 ID:XZgAsNTl
最上位だけ別に作っとけば、下位階層は別々にコンパイル出来るよ。

P&amp;Rは、Virtex5で90%くらい使ってたときは一晩かかった。
コンパイル(論理合成)はSynplify Premierだったけど。
384774ワット発電中さん:2015/02/01(日) 04:56:19.19 ID:5L5XPCwg
90%って、またスゴイね。
で、ちゃんと入ったの?
385774ワット発電中さん:2015/02/01(日) 12:07:15.07 ID:bpR/jqmF
ISEってインクリメンタルコンパイルってないの?
QuartusIIは有料版なら使えるけど無償版はできない
ISEも似たようなもん?
386774ワット発電中さん:2015/02/01(日) 19:44:07.14 ID:CGfa1Llu
>>384
96%くらいまでは入るよ。
スッゴい時間かかるけど。
387774ワット発電中さん:2015/02/07(土) 20:56:40.92 ID:iJrGLt7v
仕事としてHDL使ってる人ってどんなもの作ってるの?
大学2年くらいの時に時計作らされたけどそれだけで発狂しそうになったわ
388774ワット発電中さん:2015/02/08(日) 00:43:46.08 ID:mpFm0YX8
FPGAはもちろん、ほとんどのデジタルICはHDL使ってるんじゃね?
FPGAそのものもHDL使って設計してるらしいよ。
389774ワット発電中さん:2015/02/08(日) 03:46:02.80 ID:7pSh59e+
>>387
>作らされた
それは大変でしたね
390774ワット発電中さん:2015/02/08(日) 16:44:26.61 ID:ArGz65xC
学生にやらせるのは良いことだと思うよ
キャラクタLCDの初期化を通してマイコンの神々しさを知り崇拝するようになるだろう
391774ワット発電中さん:2015/02/10(火) 10:21:44.52 ID:akjyNrP6
つーか「HDL」ってくくりがおおまかすぎるねん。
たとえば「プログラミング言語」やったら、アセンブリ言語からPrologまで含まれるんやで。
392774ワット発電中さん:2015/02/11(水) 14:20:32.64 ID:IQZNPz3q
HDLとRTLの違いは、何ですか?
意味的にいうと、どっちかが、どっちかに包まれる言葉でしょうか?
393774ワット発電中さん:2015/02/11(水) 16:49:13.70 ID:MvNghKJk
高位合成界隈にはHDLだけどRTLじゃないってものはいくつかありそう。
ただ、OpenCLとかMATLABから高位合成した時にソースをHDLと認識するかとか考えると、
どっちも言ったもん勝ちの部分はありそうだけど。
394774ワット発電中さん:2015/02/11(水) 17:14:03.24 ID:6AMHXY3y
>>392
HDL ⊃ RTL だけど、
この場合のHDL は、Verilog と VHDL くらいで、
edif とか SystemC は入らない気がする。
395774ワット発電中さん:2015/02/11(水) 23:07:20.59 ID:TQqLUwBi
RTLのLはlanguageじゃなくてlevel。直交した概念だ。
396774ワット発電中さん:2015/02/12(木) 03:10:34.97 ID:12MXBcpZ
RTL = Registor Transfer Level
データは、クロックによりFFを通って処理されるという回路接続方法という理解で
よいでしょうか?
397774ワット発電中さん:2015/02/12(木) 09:44:15.40 ID:aktX9y/Z
>>395
「HDL言語を使って」とか
「RTLレベルで書かないと」とかつい言っちゃうよね。

「HD言語」「RTレベル」が正しい。
398774ワット発電中さん:2015/02/12(木) 09:51:29.89 ID:xy/RjCci
>>396
組み合わせ回路を記述してもいいけどな
399774ワット発電中さん:2015/02/12(木) 10:15:43.97 ID:2DYCtHvY
高水準のほうから見てくとわかりにくいが、低水準のほうから考えてゆけば良い。
ネットリストのレベルだと、全ての接続を静的に記述するわけだけど、
RTLの場合はそうじゃなくて、「こういった場合の時のはここからここにデータが伝わる」
という感じの記述になる、ということ。
それより高水準のビヘイビア記述は、メーカーとかも結局何がなんだか状態なんじゃねーのw
400774ワット発電中さん:2015/02/12(木) 11:15:43.16 ID:Abxz7T5y
あなたもネットで告発しませんか?

ビッ苦カメラ札幌店 佐藤伸弦 暴行事件
401774ワット発電中さん:2015/02/12(木) 23:19:50.05 ID:GlqxZMeS
HDLの類は、あと10年か20年くらいで、ソフトウェアプログラミング言語と融合すると思うのだが。
眺めていると、そうなってほしくないという感情があるっぽい。
もともとハード屋かな。
402774ワット発電中さん:2015/02/12(木) 23:21:49.83 ID:GlqxZMeS
ソースを書いて、書き換え可能なメモリのようなものに記録する状態で、もう限りなくソフトに近い。
メモリにCPU解釈の命令列を出力するか、実行可能な回路を出力するか、その程度の違い。
403774ワット発電中さん:2015/02/13(金) 04:05:52.45 ID:4hHLN1pP
>>402
僕もそう思う。
だから、人前で「FPGAのプログラム作ってる」と言っています。
マイコンのプログラムと何も違わないから。

しかし、Verilogに慣れると、久々にマイコンでCを書くとき、
Verilogには結構便利な機能があること気づきます。
一番感心するのは「 { } 」連接です。
bit単位で連結したり入れ替えたりできて、とてもありがたい。
Cでやろうとすると、シフトと&の連続ですよね。
404774ワット発電中さん:2015/02/13(金) 06:36:09.24 ID:RXf7RWgA
どんなものを作ってるんだろう
405774ワット発電中さん:2015/02/13(金) 09:40:44.85 ID:pzz+U5OG
ソフト屋だけどFPGAに初めて挑戦して
ソフトとハードは考え方から根本的に違うと思った。まる。
406774ワット発電中さん:2015/02/13(金) 10:01:05.83 ID:FqcomeDH
そもそも初期のコンピュータは配線を変えることによって
処理を変えていたんだから、それをプログラミングと呼ぶなら同等だろう。

C言語からそのままハードウェアってのはここ20年くらい言われているけど
ろくに実現できていない。言語の問題じゃなくて、
>>405 の感覚が正しいんだと思う。
407774ワット発電中さん:2015/02/13(金) 23:39:24.35 ID:sc3uuhjm
ブロッキング代入とノンブロッキング代入、どっちが主流なんだろう。
408774ワット発電中さん:2015/02/14(土) 02:26:00.59 ID:UbgZWfJb
どっちがどっちか知らないけど、<= が好き
409774ワット発電中さん:2015/02/14(土) 03:18:39.70 ID:VOSEu/vL
ASICはまあなんとかなるかって記述しちゃうけど
FPGAの時は構造がアレだから記述はこうするか
って物理的な問題でブロッキング気にする事はあるが
主流とかは考えてはいないかなぁ
410774ワット発電中さん:2015/02/14(土) 10:39:22.83 ID:O7h4p72O
>>406
HDLとFPGAの組み合わせは、配線を変えたプログラミングより、明らかにソフト寄り。

CPU設計者やFPGA設計者を本物のハード屋だけれども、
HDL屋はハード屋といいにくいと思う。

プログラミングという言葉には命令列生成というニュアンスがあるので、
ソフト的なものであっても『回路設計』にプログラミングという言葉を使うのは
違和感があるのかもしれない。

「ハードウェアとソフトウェア」と「回路設計と命令列設計」という
それぞれの概念軸は直行する考えていいかも。
命令列設計のほうが早くにソフト化したので、ソフトウェア設計と命令列設計
は同一視されたけども、20年後くらいはどうか。


 ハードウェア回路設計(古典的な回路設計、CPU設計、FPGA設計)
 ソフトウェア回路設計(HDLとFPGAの組み合わせ)

 ハードウェア命令列設計(配線変更による太古のプログラミング)
 ソフトウェア命令列設計(現在のプログラミング)

ソフトウェア回路設計とソフトウェア命令列設計は現在は「まだ」融合していない。
411774ワット発電中さん:2015/02/14(土) 13:53:44.33 ID:UbgZWfJb
>>403
>一番感心するのは「 { } 」連接です。
>Cでやろうとすると、シフトと&の連続ですよね。
具体的にCでやるとどうなるんだろう。

MSB←→LSBの入替は、

#define N 0x12
unsigned chr a;
a =(N&0x01)? 0x80 : 0x00;
a+=(N&0x02)? 0x40 : 0x00;
a+=(N&0x04)? 0x20 : 0x00;
a+=(N&0x08)? 0x10 : 0x00;
a+=(N&0x10)? 0x08 : 0x00;
a+=(N&0x20)? 0x04 : 0x00;
a+=(N&0x40)? 0x02 : 0x00;
a+=(N&0x80)? 0x01 : 0x00;

Verilog

wire [7:0] N = 8'h12;
wire [7:0] a = 8'h00;
assign a = { N[0],N[1],N[2],N[3],N[4],N[5],N[6],N[7] };

というところでしょうか?
412774ワット発電中さん:2015/02/14(土) 14:21:24.19 ID:0uPZFPNm
>>411
これがいいかも
ttp://ikautak.hatenablog.com/entry/2013/02/14/221500

他にも分岐不要で出来るものが色々あったと思う
413774ワット発電中さん:2015/02/14(土) 23:44:45.22 ID:6/aIRu8O
>>412
何という情報量の少なさ。

>>411
ハードウェアのすごいところは、ビット入れ替えはゲート数がゼロ。
414774ワット発電中さん:2015/02/15(日) 03:22:45.40 ID:5N+tCfqq
>ハードウェアのすごいところは、ビット入れ替えはゲート数がゼロ。

そうとも限らない
415774ワット発電中さん:2015/02/15(日) 11:42:04.22 ID:9/dk5YAi
verilogで書いた回路をFPGAに実装する場合にテストベンチに当たるものってある?
416774ワット発電中さん:2015/02/15(日) 14:32:13.59 ID:lCMoP7H9
デジタルはすべてソフト
417774ワット発電中さん:2015/02/15(日) 15:21:58.99 ID:skpTyS9e
アナログもソフトだよ。
418774ワット発電中さん:2015/02/16(月) 00:55:36.07 ID:5K8pOZt+
assign a = { N[0],N[1],N[2],N[3],N[4],N[5],N[6],N[7] };
って、VHDLでは、なんと書くのでしょうか?
というか、VHDLでも連接ってできるのでしょうか?
419774ワット発電中さん:2015/02/16(月) 01:14:04.32 ID:ev3QAK1E
Cでのビットの入れ替えは16ビット程度ならテーブルで一発だけどね
420774ワット発電中さん:2015/02/16(月) 06:41:25.38 ID:BSM5hs8d
>>418
N(0)&N(1)&〜&N(7)
421774ワット発電中さん:2015/02/16(月) 09:57:50.06 ID:J7NaP67K
VBAの文字列の連結みたいだな
422774ワット発電中さん:2015/02/18(水) 03:27:44.14 ID:A5s+y/zG
教えてください。

Xilinxのスパルタン6をVerilogで書いていますが、回路がちょっと多くなるとスグに
「・・・・Dedicated route・・・・」というメッセージが出ます。
クロック信号を、いきなり外に出せるわけないじゃん とか
バンクをまたいでいるので、タイミングの保証はできませんよ。
だから上の呪文をucfに追加してね、という意味かと思います。

このwarningをでないように組むには、どのような点に注意すれば良いのでしょうか?
そもそも このメッセージがでる用では、まだまだプロとは言えない、ということでしょうか?
423774ワット発電中さん:2015/02/18(水) 06:39:23.43 ID:S2qvRNa3
事実をそのまま書いてもらわないと余計にわけわからない
424774ワット発電中さん:2015/02/18(水) 12:02:25.26 ID:qX4gvd9c
ロジックの出力をクロック信号に使ってるんだろう
誰もが最初に通る道だ
Spartan6ならまず↓を全部読む
ttp://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx14_3/sim.pdf
ttp://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx14_4/xst_v6s6.pdf
425774ワット発電中さん:2015/02/18(水) 21:21:11.34 ID:f8HfTN0q
ISE Web packはWin8に対応まーだじかんかかりそうですかねぇ
426774ワット発電中さん:2015/02/20(金) 21:25:10.26 ID:XKzIXYX7
ISEくらい自分でWin8で使えるようにしろよ
もうメインストリームはVivadoに移行してんだから
427774ワット発電中さん:2015/02/20(金) 22:02:46.36 ID:OGEoxal/
Vivado PlanAheadって、起動にめちゃくちゃ時間がかかりません?
428774ワット発電中さん:2015/02/21(土) 19:08:49.11 ID:ApPmf7hA
痛いのは最初だけだって
すぐに気持ちよくなるから
429774ワット発電中さん:2015/03/01(日) 02:37:00.67 ID:oV7uTKnc
マイコンやって来た人にFPGAを説明するのって、とても難しいね。
同時に、一斉に、バラバラに、全速力で動くのが、わからないらしい。
430774ワット発電中さん:2015/03/01(日) 03:01:53.72 ID:rhXFR2oe
>>429
マイコンだけとかパソコンのプログラムだけの人に説明するのには苦労しました
わかっていただけたかはわからないけど
431774ワット発電中さん:2015/03/01(日) 05:54:03.76 ID:EwyBnm4i
ソフト屋にとって同期という概念はない。
概してソフト屋は言葉をハード屋から盗んでくるらしく
「同期」という言葉自体はある。同期・非同期呼出しとか。
でもそれはハードの言う概念とは全く違うんだよなぁ。
432774ワット発電中さん:2015/03/01(日) 10:05:46.66 ID:oV7uTKnc
僕らも便利だから「変数」と言う言葉を使ってしまうけど、実体はD-FFであり、
D端子が入力でQが出力で・・・と思うけど、彼らにとって「変数」とは、
数値記憶という考え方でしかない様子。
reg wire と説明すると、wireって何? と来る。
433774ワット発電中さん:2015/03/01(日) 10:47:47.11 ID:oBL6vBXC
>>432
reg で宣言しても FF になるとは限らないし、
仕様書でも Variable って呼んでるのも混乱の元。
434774ワット発電中さん:2015/03/04(水) 13:02:38.07 ID:R6x/MPNl
>>433
>reg で宣言しても FF になるとは限らないし、
それは、どういう時でしょうか? 教えてください
435774ワット発電中さん
always で組み合わせ回路作るとき。

センシティブリストを間違えてラッチができるとかもあるよね。