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/
探検
【Verilog】 記述言語で論理設計Project13 【VHDL】
レス数が1000を超えています。これ以上書き込みはできません。
2014/03/06(木) 16:37:02.77ID:sOpHVFq3
2014/03/06(木) 16:39:57.80ID: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/
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/
2014/03/06(木) 16:41:32.60ID: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・) 仲良くつかってね。
/ ||_彡,,, ノ彡,,, ノ彡,,, ノ
し' ̄(_)) ̄ ̄ ̄(_)) ̄(_)) ガラガラ
スレタイで検索しましょう。
・ログ速 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.54ID:c33fa+Z6 あぼーん
5あほ〜ん
2014/03/07(金) 07:29:39.99ID:kmlRrSr1 あほ〜ん
2014/03/07(金) 07:32:46.33ID:kmlRrSr1
FPGAでキャラクタLCDの初期化とか、
74HC595、74HC166などのシリアルものをやったときは、
FPGAを窓から投げたくなった。
マイコンが神様のように思えた。
74HC595、74HC166などのシリアルものをやったときは、
FPGAを窓から投げたくなった。
マイコンが神様のように思えた。
2014/03/07(金) 08:45:27.24ID:3a6perSe
ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは>>1乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは>>1乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
8774ワット発電中さん
2014/03/08(土) 18:57:41.86ID: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がでてきた
http://www.fullhd.gr/images/stories/2013/Teardown/SamsungUE65F9000/Samsungue65f9000-open-fullhd.gr.JPG
サムスンの4Kばらしたら
FPGAがでてきた
2014/03/12(水) 07:56:53.51ID:25IcEW3e
FPGAで家電作ってもおかしくないだろうけど
コスト合うのかな
お得意のウォン安パワー?
コスト合うのかな
お得意のウォン安パワー?
2014/03/12(水) 08:20:45.34ID:AVsyjRDF
ICにするほど数が出てないんじゃね?
2014/03/12(水) 09:51:12.88ID:fKpIq8EF
1000台作る製品のコストを1円下げるために、
何万円ぶんも人間をタダ働きさせるのが日本式だからなw
何万円ぶんも人間をタダ働きさせるのが日本式だからなw
2014/03/12(水) 17:07:00.03ID:npd8l9LA
TATが間に合わない事もあるしな
TVだとASIC作る時代でも無いし
ASSP+FPGAで急場を凌ぐかな
TVだとASIC作る時代でも無いし
ASSP+FPGAで急場を凌ぐかな
2014/03/12(水) 17:13:45.44ID:bgzyCiyO
4K売れんの?
2014/03/13(木) 20:18:43.48ID:UNefeDE1
開発期間短縮の為、FPGAを採用。
その後、4Kが大量に売れそうだったらASIC化するって事じゃないの?
その後、4Kが大量に売れそうだったらASIC化するって事じゃないの?
2014/03/13(木) 22:00:42.17ID:RztwXodP
FPGAで何か家電を作るとすれば・・・
炊飯器か
マイコン炊飯器より売れそう
炊飯器か
マイコン炊飯器より売れそう
2014/03/13(木) 23:44:06.38ID:iNUeE38h
4Kは売りつけるんだよ
その次はSHV(8K)を売りつける
ここまでは決まってるんじゃね
炊飯器よりエアコンにFPGA合うかも
センサー高度化してるし冷却も万全?
その次はSHV(8K)を売りつける
ここまでは決まってるんじゃね
炊飯器よりエアコンにFPGA合うかも
センサー高度化してるし冷却も万全?
2014/03/13(木) 23:49:37.02ID:Ac+UuqDx
炊飯器やエアコンでFPGA必要なほど高速な処理って何よ
2014/03/14(金) 09:43:30.62ID:xQ24+ER2
インバータ制御はマイコンじゃ無理
2014/03/14(金) 12:11:53.03ID:PsJKx6n+
FPGAが高速とか、笑わせるwww
そんなに高速なんだったら、お前の家からintel PCを一掃して全部FPGA PCにしろよw
そんなに高速なんだったら、お前の家からintel PCを一掃して全部FPGA PCにしろよw
2014/03/14(金) 12:36:28.47ID:xQ24+ER2
>>19
ワンチップMSXですね!
ワンチップMSXですね!
2014/03/14(金) 12:45:46.95ID:bB+o9K6L
そんな物もあったな
MSXは俺のルーツだからつい買ってしまったが、一度も通電する事無くどこかに放置してある
MSXは俺のルーツだからつい買ってしまったが、一度も通電する事無くどこかに放置してある
2014/03/14(金) 13:36:13.90ID:eQI3/KIC
>>19 規模の利益を全く無視したご意見、どうもありがとうございますw
2014/03/14(金) 22:58:50.67ID:qEl3daDL
高速か
何もかも皆懐かしい
何もかも皆懐かしい
2014/03/18(火) 09:36:59.58ID:PI6Arc2y
PSoC4 pioneerで遊んでるんだけど、alwaysのトリガに同期系
条件(posedgeとか)と非同期系条件(ピンチェンジ)を混ぜては
いけないってのはVerilogの制限?それともPSoCローカルな制限?
条件(posedgeとか)と非同期系条件(ピンチェンジ)を混ぜては
いけないってのはVerilogの制限?それともPSoCローカルな制限?
2014/03/21(金) 02:38:46.26ID:ixu+qUdJ
何をしたいのかがよくわからんけどVerilogの制限ではないな。
ただFPGAでVerilog使う場合でもそうだけど合成可能かどうかはまた別問題。
一般論としてリセット付きF/Fは合成可能だから大丈夫だと思うけど。
ただFPGAでVerilog使う場合でもそうだけど合成可能かどうかはまた別問題。
一般論としてリセット付きF/Fは合成可能だから大丈夫だと思うけど。
26774ワット発電中さん
2014/03/25(火) 23:07:06.93ID: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
↓みたいにすれば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
2014/03/26(水) 08:09:00.26ID:qLJPB8CT
やってみろ
まずはそれからだ・・・
まぁ良かったと思うけど
まずはそれからだ・・・
まぁ良かったと思うけど
2014/03/26(水) 23:22:34.70ID:TPlHqcXH
サンクスです。やってみました。できました。
でも質問した時はできなかったんですよね。。
今日はできた!
何が変わったんだろ
よくわからんw
すみませんでした。。
でも質問した時はできなかったんですよね。。
今日はできた!
何が変わったんだろ
よくわからんw
すみませんでした。。
2014/03/27(木) 13:41:51.12ID:51xj69oq
出来なかったというのは
合成すら出来なかったと言うこと?
じゃないよね
合成すら出来なかったと言うこと?
じゃないよね
2014/03/28(金) 00:42:29.71ID: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が対応していないのか御存知でしょうか?
フリー環境でSystemVerilogを動かしてみようとIcarus Verilogを使ってみたのですが、0.9.7版、20130827版と幾つかの版数を渡り歩いてみましたが、classやinterfaceといったkeywordに対してsyntax errorを吐きます。
webで検索したところ0.9版以降ではサポート中断という記事を見つけたので0.8.6版も試してみましたが同じでした。
questaやiesでは通るので文法的にはOKだと思っていますが、Icarus Verilogが対応していないのか御存知でしょうか?
2014/03/28(金) 01:14:32.64ID:8+Km2wty
SystemVerilog対応なんて、Wikipedia日本語版にしか書いてないような気がする。
英語版は、portions of SystemVerilog としか書いてない。
英語版は、portions of SystemVerilog としか書いてない。
2014/03/28(金) 02:23:34.68ID:Zcmh9bV1
>>29
合成はできたんですけどワーニングが出てて
出てきた電子回路見てみるとつなげてるはずの配線がざっくり無くなってました。
セレクタ?を記述しないといけないんだけどそれがうまく表現できず、ツールに伝わってないみたいでした。
合成はできたんですけどワーニングが出てて
出てきた電子回路見てみるとつなげてるはずの配線がざっくり無くなってました。
セレクタ?を記述しないといけないんだけどそれがうまく表現できず、ツールに伝わってないみたいでした。
3330
2014/03/29(土) 02:03:34.44ID:Nmk89wiM >>31
やはり、現版数では対応していないようですね。幾つかのサイトを見て回ったのですが、対応していると今後対応予定という情報が入り交じっていました。
Behavior simulationを目的としているので、試しにXilinxのVivado入れてみましたが、simulatorがSystemVerilog非対応でした...
現状、SystemVerilogのsimを行うとすると、やはり御三家のsimulator使うしか無いのですかね...
やはり、現版数では対応していないようですね。幾つかのサイトを見て回ったのですが、対応していると今後対応予定という情報が入り交じっていました。
Behavior simulationを目的としているので、試しにXilinxのVivado入れてみましたが、simulatorがSystemVerilog非対応でした...
現状、SystemVerilogのsimを行うとすると、やはり御三家のsimulator使うしか無いのですかね...
2014/03/29(土) 02:52:52.77ID:H0gNnTrg
QuartusはsystemVerilog対応って謳われてて
modelsimの無料版入ってるけどそれではだめなん?
modelsimの無料版入ってるけどそれではだめなん?
2014/03/29(土) 11:33:28.66ID:pxPByyKW
>>33
御三家って、シノプとケーデンスと・・・?
御三家って、シノプとケーデンスと・・・?
3630
2014/03/30(日) 03:31:22.30ID:PXg3sNCf2014/04/07(月) 14:31:55.70ID:u+9PXBq9
FPGAらしい
https://www.youtube.com/watch?v=tUIQItrpYBE
https://www.youtube.com/watch?v=RyezC1p_pak
http://internet.watch.impress.co.jp/docs/news/20140404_642876.html
http://game.watch.impress.co.jp/docs/news/20140221_636384.html
http://gigazine.net/news/20140404-pocket-miku/
http://nlab.itmedia.co.jp/nl/articles/1403/03/news057.html
http://japanese.engadget.com/2014/03/02/evocaloid/
http://www.amazon.co.jp/dp/4057504656/
http://www.dtmstation.com/archives/51888898.html
http://hitoriblog.com/?p=23019
http://www.otonanokagaku.net/nsx39/index.html
http://www.dtmstation.com/archives/51877546.html
http://otonanokagaku.net/nsx39/app.html
http://www.crypton.co.jp/cfm/news/2014/02/pocketmiku
http://m.youtube.com/watch?v=2-v5CB5krws
http://www.nicovideo.jp/watch/sm17357529
歌詞モードは知らんけど
リアルタイムモードは子音がサポートされてないのが残念
リアルタイムでも子音出せるのはこちら
↓
https://www.youtube.com/watch?v=ka8-SpSkmZA
http://vocaloid.blog120.fc2.com/blog-entry-11373.html
https://www.youtube.com/watch?v=tUIQItrpYBE
https://www.youtube.com/watch?v=RyezC1p_pak
http://internet.watch.impress.co.jp/docs/news/20140404_642876.html
http://game.watch.impress.co.jp/docs/news/20140221_636384.html
http://gigazine.net/news/20140404-pocket-miku/
http://nlab.itmedia.co.jp/nl/articles/1403/03/news057.html
http://japanese.engadget.com/2014/03/02/evocaloid/
http://www.amazon.co.jp/dp/4057504656/
http://www.dtmstation.com/archives/51888898.html
http://hitoriblog.com/?p=23019
http://www.otonanokagaku.net/nsx39/index.html
http://www.dtmstation.com/archives/51877546.html
http://otonanokagaku.net/nsx39/app.html
http://www.crypton.co.jp/cfm/news/2014/02/pocketmiku
http://m.youtube.com/watch?v=2-v5CB5krws
http://www.nicovideo.jp/watch/sm17357529
歌詞モードは知らんけど
リアルタイムモードは子音がサポートされてないのが残念
リアルタイムでも子音出せるのはこちら
↓
https://www.youtube.com/watch?v=ka8-SpSkmZA
http://vocaloid.blog120.fc2.com/blog-entry-11373.html
2014/04/07(月) 17:27:28.96ID:Vzj79MHB
>>37
GM音源とDSPを内蔵した専用チップだったはずだけど、FPGAなの?
http://download.yamaha.com/api/asset/file/?language=ja&site=jp.yamaha.com&asset_id=60768
ちなみに子音が出せないのは、ボタンが押される前に子音が出せてないと、音に合わせて声が出せないからだからな。
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.97ID: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
筆者は昨年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
2014/04/08(火) 18:59:13.74ID:x9l0EXnP
http://www.dtmstation.com/archives/51877546.html
ここにはFBGA(原文ママ)って書いてあるけど関係なさそう
ここにはFBGA(原文ママ)って書いてあるけど関係なさそう
2014/04/08(火) 22:45:38.28ID:sXzcO/hb
http://ja.wikipedia.org/wiki/FBGA
なるほど、半田付けしたくないな
なるほど、半田付けしたくないな
2014/04/09(水) 08:55:48.91ID:P+tY1Vpe
全然使ってないPT2の基盤眺めてたら
ざいりんくす乗ってた
なんのシリーズかは見てない
ざいりんくす乗ってた
なんのシリーズかは見てない
2014/04/09(水) 08:57:20.51ID:joIMvkge
2014/04/09(水) 12:19:21.92ID:P+tY1Vpe
そこらじゅうのスマホからミクの声がしてたら
それはそれで嫌だな
せからしか!ってなる
それはそれで嫌だな
せからしか!ってなる
2014/04/10(木) 08:16:44.50ID:rYFXsS2F
>>41
なるほど、勉強になった
なるほど、勉強になった
2014/04/13(日) 15:11:36.77ID:luH8iUKZ
2014/04/13(日) 21:21:50.36ID:EyrX6YJH
>>42
っ ttp://earthsoft.jp/PT1_PT2/tech-static-timing-report-PT2-01.html
っ ttp://earthsoft.jp/PT1_PT2/tech-static-timing-report-PT2-01.html
48774ワット発電中さん
2014/04/15(火) 20:04:37.66ID:+XCsDHpy >>19
FPGAはいくつもの処理を平行して処理できる。
FPGAはいくつもの処理を平行して処理できる。
2014/04/15(火) 21:25:29.74ID:t6NmlD9K
もちろん、プロセッサも!
2014/04/17(木) 20:00:43.67ID:f8sHtpTv
2014/04/18(金) 09:08:58.46ID:5ncclQCr
こんな計画もあったのか
また、今回の製品版には実装されていないが、これを利用して歌詞を入力する機能も試作された。
カーボンキーボードで文字入力を行なうプロトタイプの説明図。
鍵盤部で「あかさたな〜」といった子音の行を選び、リボン部で母音の段を選択する。
写真 https://fabcross.jp/interview/dmln530000007pmi-img/0314_uda_005.jpg
本文 https://fabcross.jp/interview/140314_uda_02_03.html
また、今回の製品版には実装されていないが、これを利用して歌詞を入力する機能も試作された。
カーボンキーボードで文字入力を行なうプロトタイプの説明図。
鍵盤部で「あかさたな〜」といった子音の行を選び、リボン部で母音の段を選択する。
写真 https://fabcross.jp/interview/dmln530000007pmi-img/0314_uda_005.jpg
本文 https://fabcross.jp/interview/140314_uda_02_03.html
2014/04/19(土) 04:20:41.84ID:CJYuQ4Ta
電電系は高慢だよなぁ…
53774ワット発電中さん
2014/05/03(土) 03:47:32.94ID:qHAfzWFm 某N社の仕事で、VHDLの回路改修を頼まれ、
アドレスデコーダーの回路見たら、
全部IF-ELSIF文でアドレスデコーダーを数百構文も書いてあった。
CASE文とIF文の使い分けもできないのか、この大手企業はと思った。
しかも担当者に聞いたら、その書き方じゃなきゃダメだと。
日本の「もの作り」とか言って、これじゃおわっとるよな。
アドレスデコーダーの回路見たら、
全部IF-ELSIF文でアドレスデコーダーを数百構文も書いてあった。
CASE文とIF文の使い分けもできないのか、この大手企業はと思った。
しかも担当者に聞いたら、その書き方じゃなきゃダメだと。
日本の「もの作り」とか言って、これじゃおわっとるよな。
2014/05/03(土) 04:09:17.38ID:iY7b3Yzy
if()ではだめなの?
2014/05/03(土) 06:43:45.69ID:39IpT7ho
言語的にはIfでcaseかけるので
ちゃんと書けば
同じ回路になるはず
ただデコーダエンコーダ
もしくはCPUのフェッチはcaseが良い(ほぼデコーダ)
人為的なミスが減る
ソースコードは人に優しくないと
ちゃんと書けば
同じ回路になるはず
ただデコーダエンコーダ
もしくはCPUのフェッチはcaseが良い(ほぼデコーダ)
人為的なミスが減る
ソースコードは人に優しくないと
2014/05/03(土) 09:49:08.35ID:SKkkuXvc
「もの作り」って、論理以前の物理的な「もの」しか対象に考えてないからな。
ブール先生から150年経つんだから、ざっと考えて200年前の伝統芸でしかない。
ブール先生から150年経つんだから、ざっと考えて200年前の伝統芸でしかない。
2014/05/03(土) 10:48:50.53ID:ew7hu1Tk
>>53
おおもとはexcelで書いてある。
おおもとはexcelで書いてある。
2014/05/03(土) 11:36:01.87ID:YH1cljc+
59774ワット発電中さん
2014/05/03(土) 22:04:53.10ID:1nIrmqXL 合成ツールの変なバグがあって、治るまで使うなと言ってたのが
いつのまにか絶対使うなに化けるとか、いろいろあるものだ。
いつのまにか絶対使うなに化けるとか、いろいろあるものだ。
60774ワット発電中さん
2014/05/04(日) 00:09:37.20ID:SII+IkUE ifでもcaseでも最近の合成ツールなら一緒だろ
2014/05/04(日) 04:33:15.82ID:ipfH05IF
教えてください。
FPGAで、sin波はDDSで出せますが、ノコギリ波は、どうやって出すのでしょうか?
工場の屋根みたいなヤツです。
シンメトリ(矩形波で言うDutyです)は変えませんが、
周波数を変えたいです。ROMにテーブルを入れて、読み出しを間引けばいいのかしら。
それとも、毎点毎点、計算を行うとか・・・・
宜しくお願いします。
FPGAで、sin波はDDSで出せますが、ノコギリ波は、どうやって出すのでしょうか?
工場の屋根みたいなヤツです。
シンメトリ(矩形波で言うDutyです)は変えませんが、
周波数を変えたいです。ROMにテーブルを入れて、読み出しを間引けばいいのかしら。
それとも、毎点毎点、計算を行うとか・・・・
宜しくお願いします。
2014/05/04(日) 10:18:48.15ID:1g4Be1vd
dds でどんな波形でも出せる
2014/05/04(日) 12:27:49.68ID:z7NcnrHU
>>61
DDSの様にROMでテーブル作ってアドレスカウンタで飛ばし読みするとか、
固定小数点を含んだような積和演算器(カウンタ)を作って
その加算値の整数部を出して行くとか、方法はいろいろあると思うよ。
DDSの様にROMでテーブル作ってアドレスカウンタで飛ばし読みするとか、
固定小数点を含んだような積和演算器(カウンタ)を作って
その加算値の整数部を出して行くとか、方法はいろいろあると思うよ。
2014/05/04(日) 13:50:33.56ID:ipfH05IF
DDSで、sin波を形生成する場合は、まだ良いと思うのですが、
三角波など、1ドットで「+ピーク」→「-ピーク」に変化する値を持った信号だと、
間引きstepにより、そのピーク点が採用されたり採用されなかったりして、
その結果、出力波形のピーク値が変化しないでしょうか?
また間引きstepが大きくなると、ほぼ直線変化だったものが、
階段のようにガタガタになってしまいます。
これは、外付けのLPFで除去するのかと思いますが、
その方法だと、ピーク点の尖りまで鈍ってしまいそうです。
DDSにおいて、
ピーク点の確保とガタガタ波形に対して、どのように考えれば良いのでしょうか?
三角波など、1ドットで「+ピーク」→「-ピーク」に変化する値を持った信号だと、
間引きstepにより、そのピーク点が採用されたり採用されなかったりして、
その結果、出力波形のピーク値が変化しないでしょうか?
また間引きstepが大きくなると、ほぼ直線変化だったものが、
階段のようにガタガタになってしまいます。
これは、外付けのLPFで除去するのかと思いますが、
その方法だと、ピーク点の尖りまで鈍ってしまいそうです。
DDSにおいて、
ピーク点の確保とガタガタ波形に対して、どのように考えれば良いのでしょうか?
2014/05/04(日) 13:50:53.12ID:a55Zjrqh
少しは自分の頭で考えて試してみたらいいんじゃねぇの?
シミュレーションだっていくらでもできるだろうて
シミュレーションだっていくらでもできるだろうて
2014/05/04(日) 14:38:08.12ID: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番(ピーク値)が欠落すると思います。
どうでしょうか?
考えました。
例えば、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番(ピーク値)が欠落すると思います。
どうでしょうか?
2014/05/04(日) 16:03:22.94ID:a55Zjrqh
そういうやり方をしたら、欠落するだろうね。
だったら、欠落しないようにする方法は?って考える。
だったら、欠落しないようにする方法は?って考える。
2014/05/04(日) 17:31:32.82ID:z7NcnrHU
>>66
同じようなことはsin波形でも起きる。
しかしD/Aした後にsinπx/πxのアナログフィルタを通すと、
このガタガタがきれいに取れる。
出力する周波数に対してサンプリング周波数が十分高ければ
そんなに気にしなくても大丈夫だよ。
ちなみに経験的なことを言うと、100KHz位の鋸歯状波を10MHzの位の
サンプリング周波数で出力してみたけど、ちゃんと鋸歯状波になってた@12bit分解能。
あくまで主観だけど。
同じようなことはsin波形でも起きる。
しかしD/Aした後にsinπx/πxのアナログフィルタを通すと、
このガタガタがきれいに取れる。
出力する周波数に対してサンプリング周波数が十分高ければ
そんなに気にしなくても大丈夫だよ。
ちなみに経験的なことを言うと、100KHz位の鋸歯状波を10MHzの位の
サンプリング周波数で出力してみたけど、ちゃんと鋸歯状波になってた@12bit分解能。
あくまで主観だけど。
2014/05/04(日) 20:46:24.07ID:veykLU/6
サイン波は高調波を持ってないけどノコギリ波は無限の高調波を持つ。
エイリアシングの影響を避けるためには出来るだけサンプリング周波数を
高くするということじゃないの?
エイリアシングの影響を避けるためには出来るだけサンプリング周波数を
高くするということじゃないの?
70774ワット発電中さん
2014/05/18(日) 17:41:18.72ID: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では同じソースファイルをコンパイルできるのに
誰か助けてください・・・
コマンドプロンプトで "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.31ID:l/3NqsGD パスに日本語含まれてないか?
72774ワット発電中さん
2014/05/19(月) 01:19:16.02ID:rbfBvD0v2014/05/19(月) 21:40:49.14ID:Vw0k0J7Z
この際だから、Linuxに移行したほうがいいんでないかい?
2014/05/25(日) 01:20:59.81ID:cSq2iRKv
Verilogを使い始めた初心者です。
LTC1744A/DコンバータをXilinxで動かしたいですが、質問があります。
FPGAからADにスタート信号を送ると、ADからADクロックとともにデータが出てきます。
ADのデータを取り込むには、そのクロック信号の立ち上がり立ち下がりで取り込むらしいです。
データーはADのクロックに合わせて出てくるので、FPGAのクロックと合っていません。(周波数は同じようです)
こういう場合、どのようにしてデータを取り込むのでしょうか?
・水晶→A/Dクロック信号で1つ完結。ADからのクロックを使ってそれ以降のFPGa全体を動かす。
・あくまでFPGAのクロックで動かし、A/Dクロックの変化点を見つけて、そのときのADデータを取り込む。
・FIFO変換回路を使う
・ディアルポートメモリーを追加する
LTC1744A/DコンバータをXilinxで動かしたいですが、質問があります。
FPGAからADにスタート信号を送ると、ADからADクロックとともにデータが出てきます。
ADのデータを取り込むには、そのクロック信号の立ち上がり立ち下がりで取り込むらしいです。
データーはADのクロックに合わせて出てくるので、FPGAのクロックと合っていません。(周波数は同じようです)
こういう場合、どのようにしてデータを取り込むのでしょうか?
・水晶→A/Dクロック信号で1つ完結。ADからのクロックを使ってそれ以降のFPGa全体を動かす。
・あくまでFPGAのクロックで動かし、A/Dクロックの変化点を見つけて、そのときのADデータを取り込む。
・FIFO変換回路を使う
・ディアルポートメモリーを追加する
2014/05/25(日) 03:02:39.57ID:FZ0AO30J
FIFOで正解
デュアルポートでもできるっちゃできるが
デュアルポートでもできるっちゃできるが
2014/05/25(日) 09:55:13.01ID:ZZ5caet9
FPGAのクロックをPLLで
ADの10倍くらいで動かせば余裕のよっちゃん
と何も考えず・・・
常にADの方が遅いイメージ
ADの10倍くらいで動かせば余裕のよっちゃん
と何も考えず・・・
常にADの方が遅いイメージ
2014/05/25(日) 12:01:01.53ID:7c+/MroJ
>>75
ありがとうございます。
やはりFIFOですか、了解です。コアジェンのFIFOジェネレーターで実験してみます。
>>76
>FPGAのクロックをPLLでADの10倍くらいで動かせば余裕
ヒントをありがとうございます。
これは、A/Dからの信号をFPGAで「高速に」刻めば、FPGAでA/Dのクロック変化を検出でき、
そのタイミングでデータを取り込めば、FIFOなしで良いということでしょうか?
もしそうだとすると、10倍も上でなくても3倍くらいではだめでしょうか?
・A/Dからのクロック信号を取り込み記憶。
・前回からの差を見て、変化点を検出。
・変化ありなら、その次点のデータを取り込む。(データは、この時点までホールドされていることが前提)
こんな感じでしょうか。
ありがとうございます。
やはりFIFOですか、了解です。コアジェンのFIFOジェネレーターで実験してみます。
>>76
>FPGAのクロックをPLLでADの10倍くらいで動かせば余裕
ヒントをありがとうございます。
これは、A/Dからの信号をFPGAで「高速に」刻めば、FPGAでA/Dのクロック変化を検出でき、
そのタイミングでデータを取り込めば、FIFOなしで良いということでしょうか?
もしそうだとすると、10倍も上でなくても3倍くらいではだめでしょうか?
・A/Dからのクロック信号を取り込み記憶。
・前回からの差を見て、変化点を検出。
・変化ありなら、その次点のデータを取り込む。(データは、この時点までホールドされていることが前提)
こんな感じでしょうか。
2014/05/25(日) 12:19:48.01ID:4j5bIsLa
2014/05/25(日) 12:24:56.08ID:7c+/MroJ
ありがとうございます。
3倍程度ではだめですか。了解しました。
やはりFIFOですね。
3倍程度ではだめですか。了解しました。
やはりFIFOですね。
2014/05/26(月) 07:33:33.83ID:pdHBd95s
一度クロック直で誤作動っぽい動きしていて
PLLに一度食わせただけで直った経緯から
最近はPLL使わない事の方が少ない
保険みたいな感じ
PLLに一度食わせただけで直った経緯から
最近はPLL使わない事の方が少ない
保険みたいな感じ
2014/05/26(月) 07:49:47.97ID:18vb85ra
PLLじゃなくてもNOTとかインバーター通しただけでも治ったかもね
82774ワット発電中さん
2014/05/27(火) 00:11:06.07ID:LZynj0Uu チップスコープで、16bitの値を見ているのですが、
観測点を、それ単独でコンパイルしたときと、
他の観測信号も一緒にしてコンパイルした時で、
表示される値が違うことないですか?
観測点を、それ単独でコンパイルしたときと、
他の観測信号も一緒にしてコンパイルした時で、
表示される値が違うことないですか?
2014/05/27(火) 00:52:51.65ID:Te7GmtAR
クロックが違うとか?
2014/05/27(火) 01:08:30.68ID:LZynj0Uu
>>83
ありがとうございます。
いえ、xxx.cdcで、メンバーに入れてコンパイル、入れないでコンパイル、
それだけで違うんです。半日悩んでいました。PCの再起動とかしてみたのですが。
一つ教えてください。
Verilogで、C言語のような、こんな書き方ってできるのでしょうか?
if( a == 'A' ) begin ...
end else if( a == 'K' ) begin ...
end else if( a == 'B' ) begin ...
試して見ればよいですね。すみませんでした。
ありがとうございます。
いえ、xxx.cdcで、メンバーに入れてコンパイル、入れないでコンパイル、
それだけで違うんです。半日悩んでいました。PCの再起動とかしてみたのですが。
一つ教えてください。
Verilogで、C言語のような、こんな書き方ってできるのでしょうか?
if( a == 'A' ) begin ...
end else if( a == 'K' ) begin ...
end else if( a == 'B' ) begin ...
試して見ればよいですね。すみませんでした。
2014/05/27(火) 01:14:42.01ID:LZynj0Uu
>試して見ればよいですね。すみませんでした。
ダメでした。残念
ダメでした。残念
2014/05/27(火) 03:17:41.14ID:/b2TR/5g
確かに、その表記ができると便利だと思う。
Cは本当によく考えられた言語だね。
Cで assign や <=代入ができるなら、もうVerilogやめてCで書けばいいと思う。
もちろん、beginは{に変更して。
Cは本当によく考えられた言語だね。
Cで assign や <=代入ができるなら、もうVerilogやめてCで書けばいいと思う。
もちろん、beginは{に変更して。
2014/05/27(火) 08:15:09.09ID:8+wuE6iM
文法的にはいけるはず…?
ttp://www.verilog.com/VerilogBNF.html
ttp://www.verilog.com/VerilogBNF.html
2014/05/27(火) 08:24:56.00ID:Tf9rgzmm
このBNFが規格そのものを表してるかわからないね
2014/05/27(火) 08:35:14.01ID:nlzGhsbP
232cの入力bitを検査するのにcase使ったけど
別に問題はなかったような
シミュレーションしかないかねぇ
別に問題はなかったような
シミュレーションしかないかねぇ
2014/05/27(火) 13:31:35.84ID:Te7GmtAR
CSP有効無効で、ユーザ回路側の挙動が異なる、ということ?
>82では
・16bitの値=観測点
・16bitの値だけをCSPで見た場合と
・16bitの値と同時に、他の信号をCSPで見た場合で
・得られる16bitの値が異なる(他の信号は?)
と読みました。
・16bitの値を、CSPを入れずに観測し(ピンなどに出した?)た結果と
・16bitの値を、CSで観測した結果が異なる
ということ?「他の観測信号」はどこでどう絡んでくる?
CSPで挙動がおかしい時の基本確認事項は
・タイミングレポートを確認する。CSP入れると周波数は落ちる傾向がある。
・観測対象の信号をドライブしているクロックとCSPが参照しているクロックが同じか?
辺りが第一歩ですかね。
>82では
・16bitの値=観測点
・16bitの値だけをCSPで見た場合と
・16bitの値と同時に、他の信号をCSPで見た場合で
・得られる16bitの値が異なる(他の信号は?)
と読みました。
・16bitの値を、CSPを入れずに観測し(ピンなどに出した?)た結果と
・16bitの値を、CSで観測した結果が異なる
ということ?「他の観測信号」はどこでどう絡んでくる?
CSPで挙動がおかしい時の基本確認事項は
・タイミングレポートを確認する。CSP入れると周波数は落ちる傾向がある。
・観測対象の信号をドライブしているクロックとCSPが参照しているクロックが同じか?
辺りが第一歩ですかね。
2014/05/27(火) 13:34:42.43ID:Te7GmtAR
それとも
・16bitの値を、CSPを入れずピンに出した結果と
・16bitの値を、CSPを入れてピンに出した結果が異なる
ということかな?CSPの観測結果は無関係?
・16bitの値を、CSPを入れずピンに出した結果と
・16bitの値を、CSPを入れてピンに出した結果が異なる
ということかな?CSPの観測結果は無関係?
2014/05/27(火) 16:25:58.25ID:jjR/qQb8
>>86
Handel-Cを思い出した。
Handel-Cを思い出した。
2014/05/27(火) 21:25:58.10ID:Xjo9OI3S
>82
君と同じ現象かどうかわからないけど
観測点増やしすぎると最高動作周波数が下がって
まともに観測できなくなることはあった。
君と同じ現象かどうかわからないけど
観測点増やしすぎると最高動作周波数が下がって
まともに観測できなくなることはあった。
94774ワット発電中さん
2014/05/27(火) 21:55:21.23ID: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が
実行されないとおかしくなるような状況です。
どなたか解説オナシャス!
本を読んで勉強してます。
その本によると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が
実行されないとおかしくなるような状況です。
どなたか解説オナシャス!
2014/05/27(火) 22:27:26.48ID:JJ928Zzv
ブロッキング代入なんて使うな
どの本だ、そのブロッキング代入を推奨してる本は
どの本だ、そのブロッキング代入を推奨してる本は
2014/05/27(火) 22:31:34.63ID:td83IcoB
実行順番が保障されるのだろ?
ちゃんと「data[i * 3 + offset] <= val」の後に「i <=i+1」
が記述されてあるだろ。
自分で言ってることじゃない。
何が分からないのだ?
ちゃんと「data[i * 3 + offset] <= val」の後に「i <=i+1」
が記述されてあるだろ。
自分で言ってることじゃない。
何が分からないのだ?
2014/05/27(火) 22:33:57.60ID:t8Xgoc8p
data[i * 3 + offset] <= val;
i <=i+1
はノンブロッキング代入だから順番が保障されないのかなぁ?と思った次第です・・
i <=i+1
はノンブロッキング代入だから順番が保障されないのかなぁ?と思った次第です・・
2014/05/27(火) 22:45:35.03ID: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;が次に起きたりしないのかな?ってことです。
data[i * 3 + offset] <= val;
i <= i + 1;
はまずdata[0 * 3 + offset] <= val;
をやって、次にiが1になるべきじゃないですか。
でもノンブロッキングなら先にiが1になっちゃって
data[1 * 3 + offset]<=val;が次に起きたりしないのかな?ってことです。
2014/05/27(火) 22:46:46.76ID: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
・ <= は、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.51ID:RXKAb72A101774ワット発電中さん
2014/05/27(火) 23:11:21.16ID:t8Xgoc8p >>100
すみません、よく読み直したらノンブロッキング代入はどうなるかわからないとは書いてませんでした。
それは自分が勝手に思い込んでたことでした。。
ノンブロッキング代入は、alwaysを抜けたときに値が確定し、
それまでは変更前の値で動作するって書いてありました。
すみません&ありがとうございました!
すみません、よく読み直したらノンブロッキング代入はどうなるかわからないとは書いてませんでした。
それは自分が勝手に思い込んでたことでした。。
ノンブロッキング代入は、alwaysを抜けたときに値が確定し、
それまでは変更前の値で動作するって書いてありました。
すみません&ありがとうございました!
102774ワット発電中さん
2014/05/27(火) 23:12:14.19ID:rHvm6VeS 複数のalwaysに別れてたらどうなるかわからないんだっけ?
103774ワット発電中さん
2014/05/27(火) 23:13:13.48ID:rHvm6VeS あれ、それはブロッキングの方だったかも
104774ワット発電中さん
2014/05/28(水) 00:01:48.19ID:QxNKuz4v >>102
複数のalwaysに分かれるとmultiple driver的なメッセージでコンパイルエラーじゃないかな
複数のalwaysに分かれるとmultiple driver的なメッセージでコンパイルエラーじゃないかな
105774ワット発電中さん
2014/05/28(水) 02:33:24.00ID:P8GRCWmu106774ワット発電中さん
2014/05/28(水) 23:55:49.77ID: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 ? のように、不定になるでしょうか
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.97ID:2WzJHs2r108774ワット発電中さん
2014/05/29(木) 00:01:15.78ID:r9wyqbqv ?じゃなくてzだな
109774ワット発電中さん
2014/05/29(木) 00:01:56.19ID:r9wyqbqv あ、ごめん
zじゃなかった
zじゃなかった
110774ワット発電中さん
2014/05/29(木) 00:19:48.26ID:nMtmMZJM >>106
普通に連結演算子を使え
普通に連結演算子を使え
111774ワット発電中さん
2014/05/29(木) 21:02:31.08ID:d7mG5S5m なんか学生ぽいのが増えてきましたね
さすがゴールデンウィーク明けですか
どしどし!
さてWin8にいかろす入れてみますかね
さすがゴールデンウィーク明けですか
どしどし!
さてWin8にいかろす入れてみますかね
112774ワット発電中さん
2014/05/30(金) 14:26:56.92ID:UpNH0mQC VerilogでHDLを書いていますが、ミスが多くて思うように進みません。
どのようにしたら、スイスイと作成できるでしょうか?
今までわかっていることは、
・自分の性格は、おっちょこちょいで落ち着きがありません。
・記憶力も悪いです。
・変数の内容がわかるように、u16_reg_AAAとか s32_wire_BBBとか書いています。
・代入する即値は、32'h1234_4c7f と、bit数を書いて_で4桁ずつ区切っています。
どのようにしたら、スイスイと作成できるでしょうか?
今までわかっていることは、
・自分の性格は、おっちょこちょいで落ち着きがありません。
・記憶力も悪いです。
・変数の内容がわかるように、u16_reg_AAAとか s32_wire_BBBとか書いています。
・代入する即値は、32'h1234_4c7f と、bit数を書いて_で4桁ずつ区切っています。
113774ワット発電中さん
2014/05/30(金) 14:32:36.90ID:UpNH0mQC 追記です。
一番多いエラーは、
「その変数、いつまでたっても0だよ。だから省略するからね」というやつです。
カウンターで使ったのに、常に0って、困るんですが。
一番多いエラーは、
「その変数、いつまでたっても0だよ。だから省略するからね」というやつです。
カウンターで使ったのに、常に0って、困るんですが。
114774ワット発電中さん
2014/05/30(金) 14:57:20.14ID:UpNH0mQC Cleanup Projectって何でしょうか?
プランヘッドを起動してもメッセージが出てエラーになります。
プランヘッドを起動してもメッセージが出てエラーになります。
115774ワット発電中さん
2014/05/30(金) 15:07:36.77ID:UpNH0mQC 114です。おかげさまでわかりました。ありがとうございます。
116774ワット発電中さん
2014/05/30(金) 15:47:20.43ID:VH9Uwlub いえいえ、どういたしまして
117774ワット発電中さん
2014/05/30(金) 19:03:23.35ID:80By6tY8 >>112
検証済みでサポート付きモジュールを使えばいいよ。
検証済みでサポート付きモジュールを使えばいいよ。
118774ワット発電中さん
2014/05/30(金) 23:34:54.73ID: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をバラバラな回路で評価、代入することができるのでしょうか?
連接で{ } することは良いと思うのですが。
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.78ID:K2OqSNHX どうぞどうぞ
120774ワット発電中さん
2014/05/30(金) 23:54:44.49ID:TgbourCb ええどうぞ
121774ワット発電中さん
2014/05/31(土) 01:49:10.42ID:+ufYh9Ek なんか一般化の下手な人だなって印象
俺ならそれくらい受け入れてくれるだろって見切り発車して
万一だめなら、何だこの使えないクソ言語って投げ捨てるところ
俺ならそれくらい受け入れてくれるだろって見切り発車して
万一だめなら、何だこの使えないクソ言語って投げ捨てるところ
122774ワット発電中さん
2014/05/31(土) 10:31:12.70ID:DMSCh7+V とりあえずソース書いてコンパイラ通してみればいいのに
こんなところで聞いても返事がいつ来るかわからないし
返事が来ても間違った内容かもしれない(悪意を持ってワザとウソ教えるケースも)
こんなところで聞いても返事がいつ来るかわからないし
返事が来ても間違った内容かもしれない(悪意を持ってワザとウソ教えるケースも)
123774ワット発電中さん
2014/05/31(土) 18:03:35.44ID:DJKvNDW9 動けば勝ち
124774ワット発電中さん
2014/05/31(土) 20:00:37.08ID:MzRrdpot >121,122
まー、
コンパイラ的には許されるけど作法的にあんまやっちゃいかんこと、
といった類のことは避けたいとかあるかもしれんし。
にしても一回試すには試さんとな。
まー、
コンパイラ的には許されるけど作法的にあんまやっちゃいかんこと、
といった類のことは避けたいとかあるかもしれんし。
にしても一回試すには試さんとな。
125774ワット発電中さん
2014/06/01(日) 00:35:27.34ID:d+7jdccI D-FFのD端子のH/Lを決めるのは、どんな方法でもいいよね。
ただ、4bit同時にclockされるというだけで。
しかし、やるなら全ビット書き込んであげなきゃ。
ただ、4bit同時にclockされるというだけで。
しかし、やるなら全ビット書き込んであげなきゃ。
126774ワット発電中さん
2014/06/01(日) 07:30:40.13ID:qc3kFICB >>125
えっ?
えっ?
127774ワット発電中さん
2014/06/01(日) 22:05:38.60ID:d+7jdccI おっと、Xilinxの悪口はそこまでにしとけよ
128774ワット発電中さん
2014/06/02(月) 23:49:25.47ID:WgGuuojj generateを使わずに、8回同じインスタンシエーションを書いたら、
大笑いされました。
そんなに可笑しい事でしょうか?
for()で書かないとうまく動かないのでしょうか?
大笑いされました。
そんなに可笑しい事でしょうか?
for()で書かないとうまく動かないのでしょうか?
129774ワット発電中さん
2014/06/03(火) 08:26:27.69ID:C0ffCLXU 人に見せた分だけ
コードは見やすくなる
ベタでも良い
見難いだけ
generateでかけば今度は笑われない だけ
コードは見やすくなる
ベタでも良い
見難いだけ
generateでかけば今度は笑われない だけ
130774ワット発電中さん
2014/06/03(火) 08:32:09.07ID:ZfJUF9cx 8回だとベタ書きとどちらが見やすいかは微妙。
大笑いするのはおかしいな。
ニヤけるレベル。
大笑いするのはおかしいな。
ニヤけるレベル。
131774ワット発電中さん
2014/06/03(火) 08:46:42.76ID:l6sjiyOx132774ワット発電中さん
2014/06/03(火) 22:03:54.67ID:NiiIYSIV Verilogじゃないけど、回路図インスタンスの配列記述が禁止の会社はあったな……
133774ワット発電中さん
2014/06/04(水) 00:36:33.16ID:U+InIE9D 内製のツール使ってたりするとNGの場合があるよね
134774ワット発電中さん
2014/06/07(土) 10:49:57.22ID:PLWZT36o VHDLで
a <= '1' when b=c;
とelse無しで書いたらエラー出ずにラッチが生成されるのは普通なの?
Quartusなんだけど、この前これではまったよ。
a <= '1' when b=c;
とelse無しで書いたらエラー出ずにラッチが生成されるのは普通なの?
Quartusなんだけど、この前これではまったよ。
135774ワット発電中さん
2014/06/07(土) 12:52:35.97ID:M8hKKun7136774ワット発電中さん
2014/06/07(土) 14:18:38.80ID:RtUul3Qu 字面だけ見るとラッチができそうだが、134が聞きたいのは、
(半分愚痴を込めて)これが規格的に合法なのかってことだろう。
俺が持ってる参考書には「必ずelse項を記述する必要があります」
って書いてある。
(半分愚痴を込めて)これが規格的に合法なのかってことだろう。
俺が持ってる参考書には「必ずelse項を記述する必要があります」
って書いてある。
137774ワット発電中さん
2014/06/07(土) 14:27:28.74ID:AQOvDX9f どう合成されるかなんて規格で決まってるわけじゃないからね。
138774ワット発電中さん
2014/06/07(土) 18:26:39.22ID:PLWZT36o139774ワット発電中さん
2014/06/07(土) 18:37:36.78ID:Cz4Q6h+Z 厳格にelseがないからラッチを合成したんだろ
140774ワット発電中さん
2014/06/07(土) 18:44:05.67ID:PLWZT36o LRM調べてみたら文法的にはelseがなくても正しいらしい。
conditional_signal_assignment ::=
target <= options conditional_waveforms ;
conditional_waveforms ::=
{ waveform when condition else }
waveform [ when condition ]
{ }は繰り返せる記述で0個でもよいらしい。
エラーであったほしかった…
conditional_signal_assignment ::=
target <= options conditional_waveforms ;
conditional_waveforms ::=
{ waveform when condition else }
waveform [ when condition ]
{ }は繰り返せる記述で0個でもよいらしい。
エラーであったほしかった…
141774ワット発電中さん
2014/06/07(土) 19:02:12.45ID:PLWZT36o もしかして
q <= d when clk'event and clk='1';
なんてのもありなのか?
今度試してみるかな。
q <= d when clk'event and clk='1';
なんてのもありなのか?
今度試してみるかな。
142774ワット発電中さん
2014/06/08(日) 16:25:41.37ID:tVBFGYUa Hardware Description Languageでユーザーがラッチ推定なモノをdescriptionしたのに
合法なのかとかエラーにしてくれとか、いちゃもんをつけられるHDLタン可哀想だ・・・
>>136の持ってる参考書がちと気になるけど、単に「不用意なラッチ推定を避ける為に
条件分岐は必ずelseやdefaultを使って全ての条件を並べたほうがいい」って程度の事を
「言語仕様的にelse必須」と勝手に読み替えてるだけ・・・なんて事はないよね?
合法なのかとかエラーにしてくれとか、いちゃもんをつけられるHDLタン可哀想だ・・・
>>136の持ってる参考書がちと気になるけど、単に「不用意なラッチ推定を避ける為に
条件分岐は必ずelseやdefaultを使って全ての条件を並べたほうがいい」って程度の事を
「言語仕様的にelse必須」と勝手に読み替えてるだけ・・・なんて事はないよね?
143774ワット発電中さん
2014/06/08(日) 19:21:26.61ID:qi4ksoiV 「文法」という、構文と意味のどちらを指すのか、はっきりしない表現で言語を理解しているからダメ。
構文と意味をちゃんと峻別しなさい、ってこと。
構文と意味をちゃんと峻別しなさい、ってこと。
144774ワット発電中さん
2014/06/09(月) 08:04:10.49ID:arQlrBz2 まぁ指示してないことを
指示してないので知りませんやりません、といわれるか
自分なりに考えて頑張りました、と言われるか
HDLたん頑張れ
指示してないので知りませんやりません、といわれるか
自分なりに考えて頑張りました、と言われるか
HDLたん頑張れ
145774ワット発電中さん
2014/06/09(月) 18:58:22.04ID:jJhVco3Q146774ワット発電中さん
2014/06/09(月) 19:42:50.65ID:NwRe7b0R 自分なりに考える言語ほど糞なものはない
147774ワット発電中さん
2014/06/09(月) 21:18:15.03ID:jJhVco3Q >>146
HDLと合成ツールの関係を理解したほうがいいと思う。
HDLと合成ツールの関係を理解したほうがいいと思う。
148774ワット発電中さん
2014/06/09(月) 21:27:28.51ID:IDLA9QRl spyglass とか使ってみるといいよ
149774ワット発電中さん
2014/06/09(月) 22:01:24.62ID:arQlrBz2150774ワット発電中さん
2014/06/09(月) 23:13:50.29ID:eaOTAJF+ spyglass使ってみたいけど、確か1000万円コースじゃなかったっけ?
151774ワット発電中さん
2014/06/09(月) 23:18:17.20ID:Tap9EwwS スケマ最高ー
152774ワット発電中さん
2014/06/09(月) 23:52:28.59ID:FmWdyBQB 落とし所としては、こいつはラッチになってほしくないよー、と明示したら、
ラッチになったらエラーにしてほしい、ですかねぇ
ラッチになったらエラーにしてほしい、ですかねぇ
153774ワット発電中さん
2014/06/10(火) 00:25:01.05ID:Xgqlm06a で>>134はその記述で何になって欲しかったの?
154774ワット発電中さん
2014/06/10(火) 18:55:59.76ID: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が抜ける可能性があるので・・・
他にもやり方は有るとおもう。
言語としての仕様はそのままでよくて、
記述の自由度を下げてまで何か縛りを入れるかは、
ユーザ側で考えればいいと思う。
やろうと思えば、いくつか縛りを入れれば近いことはできそう。
条件付信号代入文は使わない
選択信号代入文は使わない
組み合わせ回路を作る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.85ID:DrVnVoph つーか・・・
FFのクロックにクロック以外が入るような記述なんて
めったにしないから、ラッチの出来ようがないのだけど
FFのクロックにクロック以外が入るような記述なんて
めったにしないから、ラッチの出来ようがないのだけど
156774ワット発電中さん
2014/06/10(火) 22:46:26.64ID:5viGuzrF >>154
組み合わせ回路をprocess文で記述するとセンシティビティリストに変数書き忘れるだけでラッチになるから逆効果でしょ。
組み合わせ回路をprocess文で記述するとセンシティビティリストに変数書き忘れるだけでラッチになるから逆効果でしょ。
157774ワット発電中さん
2014/06/10(火) 23:11:31.55ID:ucuI4UvS 何言ってんだ。
LUTの出力を自身の入力につなげば自己保持回路できるじゃないか。
FPGA設計では禁止回路として真っ先に指摘される回路のひとつだけどw
LUTの出力を自身の入力につなげば自己保持回路できるじゃないか。
FPGA設計では禁止回路として真っ先に指摘される回路のひとつだけどw
158774ワット発電中さん
2014/06/10(火) 23:59:31.43ID:HHCZkr2b159774ワット発電中さん
2014/06/11(水) 00:44:08.73ID:y95R7ig0 無視?無視されると逆にラッチが実装できなくなる気がするけど。
センシティビティリストを書かないということか?
センシティビティリストを書かないということか?
160774ワット発電中さん
2014/06/14(土) 15:42:03.97ID:Yyru01VT ほんとbeginとendにした奴死んでほしい
なんで{}を使わなかったんだ
あと[7:0]とかって打ちにくい。これ考えたやつも死んだ方がいい
なんで{}を使わなかったんだ
あと[7:0]とかって打ちにくい。これ考えたやつも死んだ方がいい
161774ワット発電中さん
2014/06/14(土) 16:18:03.70ID:sItJlkqe >ほんとbeginとendにした奴死んでほしい
これには同意。せっかくC言語風なのになんでここだけPascal風なんだ
>あと[7:0]とかって打ちにくい。これ考えたやつも死んだ方がいい
VHDLの(7 downto 0)よりはマシかと。
これには同意。せっかくC言語風なのになんでここだけPascal風なんだ
>あと[7:0]とかって打ちにくい。これ考えたやつも死んだ方がいい
VHDLの(7 downto 0)よりはマシかと。
162774ワット発電中さん
2014/06/14(土) 18:14:01.00ID:+HXlp1C+ endの後にセミコロンが来ないのはC言語風なんだな。
そう考えるとずいぶん中途半端なんだな。
そう考えるとずいぶん中途半端なんだな。
163774ワット発電中さん
2014/06/14(土) 20:20:18.33ID:c8oKTZaO ソースの変換プログラム作れば、C言語風でキー入力して
HDL処理系にかかるソースに変換できるよ。 いわゆる
プリプロセッサみたいなプログラムな。
HDL処理系にかかるソースに変換できるよ。 いわゆる
プリプロセッサみたいなプログラムな。
164774ワット発電中さん
2014/06/14(土) 21:15:52.95ID:QY114qYD >>161
でも'rangeとかは便利だと思った。
でも'rangeとかは便利だと思った。
165774ワット発電中さん
2014/06/14(土) 22:46:10.69ID:9DkmzQOp >>160
粉雪
粉雪
166774ワット発電中さん
2014/06/14(土) 22:59:45.94ID:+HXlp1C+ わしは++が実装されなかったのが残念。SystemVerilogでもブロッキング文だけだし。
167774ワット発電中さん
2014/06/15(日) 01:23:14.86ID:yc123wkM プログラミング言語ぢゃねぇんだ
168774ワット発電中さん
2014/06/15(日) 08:10:17.83ID:CowFiSFw 符号と配列の扱いをもう少し真面目に考えて欲しかったな。あと、変数のスコープも変だ。
169774ワット発電中さん
2014/06/15(日) 08:24:23.05ID:8kPdCSXd VHDLみたいにオーバーロードには対応して欲しかった。
170774ワット発電中さん
2014/06/15(日) 15:58:54.02ID:ztHe/ha8 rubyの話してるのかと思た
171774ワット発電中さん
2014/06/16(月) 11:15:17.73ID:/nvOVh/f ++欲しいって、バカか
プログラムじゃねえっつーの
[7:0]がイヤならどんなならいいんだろう?
プログラムじゃねえっつーの
[7:0]がイヤならどんなならいいんだろう?
172774ワット発電中さん
2014/06/16(月) 16:30:19.90ID:zjoFDicQ ビットスライスする関数が欲しいかな。
(a+b)の[4:1]なんて、一度別の変数に入れるか、function作るしかないからね。
(a+b)の[4:1]なんて、一度別の変数に入れるか、function作るしかないからね。
173774ワット発電中さん
2014/06/16(月) 22:43:41.07ID:PXQcBzWV わしは++が実装されなかったのが残念。SystemVerilogでもブロッキング文だけだし。
174774ワット発電中さん
2014/06/16(月) 22:50:01.99ID:PXQcBzWV >>171はnand(out, in1, in2)とかで実装しているのか?
++あったら便利だと思うけどなぁ。
++あったら便利だと思うけどなぁ。
175774ワット発電中さん
2014/06/17(火) 07:00:02.23ID:kHqYmdNv176774ワット発電中さん
2014/06/17(火) 11:16:05.77ID:vkcvHALk177774ワット発電中さん
2014/06/18(水) 06:16:01.43ID:HOBEcg+m ++ってインクリメントのこと?
178774ワット発電中さん
2014/06/18(水) 06:27:08.29ID:3CtsA+5z 2増やすときどうするの?
179774ワット発電中さん
2014/06/18(水) 07:13:50.16ID:OnR4oA/+ ++a[7:1]
180774ワット発電中さん
2014/06/18(水) 08:15:23.55ID:Nv79+jlE その発想はなかった
で、3増やすには?
で、3増やすには?
181774ワット発電中さん
2014/06/19(木) 08:25:07.26ID:FWA/DOsU こうなったら・・・
i++++
i++++
182774ワット発電中さん
2014/06/19(木) 08:34:04.08ID:TwXhJQLP そもそも他の言語にもないだろ。
++はインデックスを増やすためのもんだから。
++はインデックスを増やすためのもんだから。
183774ワット発電中さん
2014/06/20(金) 19:07:57.27ID:6m/lXrSp こうとか。
procedure tt(signal a : inout std_logic_vector) is
begin
a <= a + 1;
end procedure;
procedure tt(signal a : inout std_logic_vector) is
begin
a <= a + 1;
end procedure;
184774ワット発電中さん
2014/06/23(月) 23:32:49.10ID:Z5rFlDP4 レジスタってカウントアップしていくと0にループして戻りますか?
185774ワット発電中さん
2014/06/24(火) 08:18:49.70ID:uHu73wuP レジスタの説明
カウンタ4種調べて説明
オーバーフロー、アンダーフローの説明とその活用
以上をレポート形式でまとめる事
文字数の規定無し
Wikiは認める
カウンタ4種調べて説明
オーバーフロー、アンダーフローの説明とその活用
以上をレポート形式でまとめる事
文字数の規定無し
Wikiは認める
186774ワット発電中さん
2014/06/24(火) 08:29:43.91ID:4iD0VDNj187774ワット発電中さん
2014/06/24(火) 09:22:31.03ID:xmQvWBz7 クロスカウンタ
188774ワット発電中さん
2014/06/24(火) 09:35:31.13ID:QaOx87lb カウンタ4種盛り合わせ
189774ワット発電中さん
2014/06/24(火) 11:23:19.33ID:1JDdtT3N ジャンク屋の適当袋?
190774ワット発電中さん
2014/06/24(火) 12:19:27.68ID:uHu73wuP しくしく
ベリログの本に4つあったから適当にかいたんだよー
レジスタのループはかいてなかったけど
ベリログの本に4つあったから適当にかいたんだよー
レジスタのループはかいてなかったけど
191774ワット発電中さん
2014/06/29(日) 18:12:46.30ID: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を複数のクロックでドライブできませんみたいなエラーになります。
こういう問題を扱うときはどうしてますか?
別の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.22ID:qHxlgh71 それぞれのクロック側で別々にフラグをもってハンドシェークする。
193774ワット発電中さん
2014/06/29(日) 19:10:43.63ID:q/4APH0d194774ワット発電中さん
2014/06/30(月) 08:14:57.78ID:Qy9pw8GW >>193
FFのクロック端子に別の信号を入れるのは基本的にタブー。
共通のクロックで出来ないかもう一度考えたほうがいい。
事情があって共通のクロックに出来ないなら同じに出来ないなら、
お互いが外部モジュール(非同期の)と考えて設計すればいい。
あと"メタステーブル"で検索して調べることを薦める。
FFのクロック端子に別の信号を入れるのは基本的にタブー。
共通のクロックで出来ないかもう一度考えたほうがいい。
事情があって共通のクロックに出来ないなら同じに出来ないなら、
お互いが外部モジュール(非同期の)と考えて設計すればいい。
あと"メタステーブル"で検索して調べることを薦める。
195774ワット発電中さん
2014/06/30(月) 09:08:58.50ID:MfUxpEAI >>194
位相が違うだけかもしれんよ
位相が違うだけかもしれんよ
196774ワット発電中さん
2014/06/30(月) 09:10:34.65ID:MfUxpEAI197774ワット発電中さん
2014/06/30(月) 09:35:25.14ID:847/h1GX clk1側は一回立てるだけだからハンドシェイクなんていらないだろ。
198774ワット発電中さん
2014/06/30(月) 23:32:39.19ID:ESyfd6dx >>197
いつフラグを落とせばいいか分かっているならね。
いつフラグを落とせばいいか分かっているならね。
199774ワット発電中さん
2014/06/30(月) 23:53:33.98ID:NGdFiTNI >>197
clk2がclk1より周波数が高かったらどうなる?
clk2がclk1より周波数が高かったらどうなる?
200774ワット発電中さん
2014/07/01(火) 00:18:46.50ID:lsYqPkq3 >>191
DPRAM or FIFO
DPRAM or FIFO
201191
2014/07/01(火) 00:51:08.50ID: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側のカウンタがまさにインクリメントされる瞬間にとてつもなくおかしな値に見えたらどうなってしまうんだろう。。
今のところうまく動いてます。
とりあえず、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.40ID:OfVeiwBo CDCチェッカでエラーになるソースコードだな
まあ数百の製品に載せる訳じゃないなら十分だけど
まあ数百の製品に載せる訳じゃないなら十分だけど
203191
2014/07/01(火) 01:15:50.26ID:FN3lKQ8N やっぱり駄目なやり方なんですね。
204774ワット発電中さん
2014/07/01(火) 05:54:42.27ID:g3kSawNA >>200
>DPRAM or FIFO
DPRAM
Dynamic Programming Radio Active Material
放射性物質の動的計画法
FIFO
Furtherment of International Friendship Organization.
国際的な乱交パーティー
>DPRAM or FIFO
DPRAM
Dynamic Programming Radio Active Material
放射性物質の動的計画法
FIFO
Furtherment of International Friendship Organization.
国際的な乱交パーティー
205774ワット発電中さん
2014/07/01(火) 07:35:02.03ID:suCzp7fk206774ワット発電中さん
2014/07/01(火) 07:51:32.43ID:AvsAOkxH207774ワット発電中さん
2014/07/01(火) 08:20:43.87ID:OlDsICgk CLK2系統に直接スタート信号渡して
CLK2系統が受け取ったらRDY下げて
処理終わったらRDYあげたらダメなの?
CLK2系統が受け取ったらRDY下げて
処理終わったらRDYあげたらダメなの?
208774ワット発電中さん
2014/07/01(火) 12:20:15.75ID:BZEUNZiC209774ワット発電中さん
2014/07/01(火) 12:35:14.58ID:RNGxZV4W >>208
>あるalways1(CLK1で同期)でフラグを立てて
>別のalways2(CLK2で同期)の中でフラグが立っていたら一回だけ処理したい場合どうすればよいのですか?
フラグを下げたいとは書いてない。
CLK1でフラグを立てて、CLK2でエッジ検出すればいいだけ。
>あるalways1(CLK1で同期)でフラグを立てて
>別のalways2(CLK2で同期)の中でフラグが立っていたら一回だけ処理したい場合どうすればよいのですか?
フラグを下げたいとは書いてない。
CLK1でフラグを立てて、CLK2でエッジ検出すればいいだけ。
210774ワット発電中さん
2014/07/01(火) 22:46:44.70ID:TvLg77wN211774ワット発電中さん
2014/07/01(火) 22:50:19.37ID:WCFSDlTu212774ワット発電中さん
2014/07/01(火) 23:01:34.73ID:WCFSDlTu >>201
はダメダメかとおもったけど、恐ろしいことに意外とうまく動くかも。
191が懸念している通りcnt1の変化時にラッチするとおかしな値にになるのだが、
cnt1とcnt2が等しいかどうかだけ分ければよいわけだし、cnt1とcnt2が等しいのに
等しくないと判定される可能性はなさそうなのでうまく動きそう。
cnt1とcnt2が等しくないのに等しいと判定されることはあるが、一時的なもので次のクロックでは
正しく判定されるだろうし。
はダメダメかとおもったけど、恐ろしいことに意外とうまく動くかも。
191が懸念している通りcnt1の変化時にラッチするとおかしな値にになるのだが、
cnt1とcnt2が等しいかどうかだけ分ければよいわけだし、cnt1とcnt2が等しいのに
等しくないと判定される可能性はなさそうなのでうまく動きそう。
cnt1とcnt2が等しくないのに等しいと判定されることはあるが、一時的なもので次のクロックでは
正しく判定されるだろうし。
213774ワット発電中さん
2014/07/01(火) 23:03:48.84ID:TvLg77wN >>212
同期ならならそうかもな。
同期ならならそうかもな。
214774ワット発電中さん
2014/07/01(火) 23:18:21.79ID:TvLg77wN 一応理由を書いとくと、
たとえば3->4に変化するときを2進で書くと011->100となる。
ビットごとに変化を書くとb2:0->1、b1:1->0、b0:1->0。
これらの信号の変化は完全に同時とはならない。
3->4になる瞬間に0,1,2,5,6,7などの複数の信号状態を経由する。
どの信号状態を経由するかは合成・配線毎、
あるいは環境温度で変わるかもしれない。
これを非同期で受けると・・・・以下略。
たとえば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.57ID:WCFSDlTu216774ワット発電中さん
2014/07/02(水) 00:04:20.77ID:gRh3e6jW cnt2が正しくないタイミングでインクリする
以上
以上
217774ワット発電中さん
2014/07/02(水) 00:04:22.71ID:8gg5QXac たとえばcnt2=3でcnt1が3->4に変化する瞬間にラッチするとき。すなわちエラー処理を一度だけ行う必要のある状態。
cnt1が3に見えたらその時は何もしない。次のクロックで4に見えるのでその時エラー処理する。OK。
cnt1が4に見えたらその時エラー処理する。OK。
cnt1が5や6に見えたらその時エラー処理する。次のクロックでは4に見える。OK!!
cnt1が3に見えたらその時は何もしない。次のクロックで4に見えるのでその時エラー処理する。OK。
cnt1が4に見えたらその時エラー処理する。OK。
cnt1が5や6に見えたらその時エラー処理する。次のクロックでは4に見える。OK!!
218774ワット発電中さん
2014/07/02(水) 00:09:15.93ID:gRh3e6jW メタスタが起こったら何が起こるか分かんねーからダメに決まってんだろ
219215
2014/07/02(水) 00:11:15.51ID:8gg5QXac まあ、いずれにしてもお勧めできる回路ではないから深追いすることもないか。
何かしら191の参考になっていればよいが、混乱させてしまっていたらすまぬ。
何かしら191の参考になっていればよいが、混乱させてしまっていたらすまぬ。
220215
2014/07/02(水) 00:22:48.64ID:8gg5QXac 非同期信号扱う以上、メタスタは回避できないしなぁ…
221774ワット発電中さん
2014/07/02(水) 00:38:23.88ID:Jlj2msnr222774ワット発電中さん
2014/07/02(水) 01:03:51.85ID:kone+CGS CLK1とCLK2の水晶を1つにする。
223774ワット発電中さん
2014/07/02(水) 06:53:29.34ID:C7ekoPpe 基本に立ち戻って、RS-FF
224774ワット発電中さん
2014/07/02(水) 09:24:15.05ID:EKqWOgbe FPGAで非同期セットとリセット両方が使えるとは限らんね
Spartan3は出来たと思うけど、Spartan6はムリ
Cycloneは出来るかな?
Spartan3は出来たと思うけど、Spartan6はムリ
Cycloneは出来るかな?
225774ワット発電中さん
2014/07/02(水) 23:04:58.98ID:8gg5QXac メタが気になるなら
cnt1tmp <= cnt1;
cnt1tmp2<= cnt1tmp;
cnt1tmp3<= cnt1tmp2;
と何段かのFFにすればよいんじゃない?
何段にしてもメタの確率0になることはないけど。(これは非同期の宿命)
cnt1tmp <= cnt1;
cnt1tmp2<= cnt1tmp;
cnt1tmp3<= cnt1tmp2;
と何段かのFFにすればよいんじゃない?
何段にしてもメタの確率0になることはないけど。(これは非同期の宿命)
226191
2014/07/02(水) 23:12:02.01ID:kqenebzf >>225
アドバイスありがとうございます!
さっそく実践したいと思います。
FPGAも電子回路も初心者なものでとんでもない物をさらしてしまいましたが
大変勉強になりました。
聞くは一時の恥ってやつですね。
アドバイスありがとうございます!
さっそく実践したいと思います。
FPGAも電子回路も初心者なものでとんでもない物をさらしてしまいましたが
大変勉強になりました。
聞くは一時の恥ってやつですね。
227774ワット発電中さん
2014/07/02(水) 23:58:58.26ID:8gg5QXac いや、おかげでこちらも勉強になったよ。
228774ワット発電中さん
2014/07/03(木) 08:41:13.26ID: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
フラグを立てる代わりにフラグをトグルして、トグルされたフラグを
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.62ID:4d6yP1bb230774ワット発電中さん
2014/07/03(木) 09:25:00.07ID:U4zEQx3m clk2が十分に早ければ
231774ワット発電中さん
2014/07/03(木) 12:25:59.39ID:v2WkR7YV 非同期のバイナリカウンタでも、2回叩いて値が変わってなければ同期化できたってことでいい。
232228
2014/07/03(木) 12:38:03.10ID:jwmrgXxC ×flag_sync <= {flag_sync[1:0],flag} //flagをclk2に同期化
○flag_sync <= {flag_sync[1:0],flag}; //flagをclk2に同期化
コロン付け忘れたw
>>230
clk1でフラグをトグルする間隔が、clk2の3クロック周期以上という意味だね。
○flag_sync <= {flag_sync[1:0],flag}; //flagをclk2に同期化
コロン付け忘れたw
>>230
clk1でフラグをトグルする間隔が、clk2の3クロック周期以上という意味だね。
233774ワット発電中さん
2014/07/03(木) 18:47:44.76ID:SDLrgbW9 191君がどういう理由でカウンタにしたかは定かではないが、
下記のような状況を考慮した可能性はないのかな?
clk1側でclk2側に処理させたい事象が短期間に5回発生した。
clk2側はその期間に1回の事象しか処理出来ないケースがまれにある。
見たいな。
下記のような状況を考慮した可能性はないのかな?
clk1側でclk2側に処理させたい事象が短期間に5回発生した。
clk2側はその期間に1回の事象しか処理出来ないケースがまれにある。
見たいな。
234774ワット発電中さん
2014/07/03(木) 20:07:20.15ID:SDLrgbW9 こんな印象ね。cnt2に直接メタステ乗るけど、面倒なんでcnt1tmpは省略した。
http://codepad.org/4bRwSelw
http://codepad.org/4bRwSelw
235774ワット発電中さん
2014/07/03(木) 20:27:38.62ID:SDLrgbW9 書いた後思ったけど、
(cnt1!=cnt2)の同期が保障されて無いと、
cnt2のビット毎にcnt2+1を通すか、
そのまま保持するか異なってくるタイミングあるかな?
cnt1tmpは省略不可か?
(cnt1!=cnt2)の同期が保障されて無いと、
cnt2のビット毎にcnt2+1を通すか、
そのまま保持するか異なってくるタイミングあるかな?
cnt1tmpは省略不可か?
236774ワット発電中さん
2014/07/03(木) 22:02:41.84ID:doLRbVKp >>235
そうだね。省略不可だね。
そうだね。省略不可だね。
237191
2014/07/04(金) 21:32:11.46ID:3O9b04Ik >>228
191です。わざわざありがとうございます!
ありがたく使わせていただきます。
メタステーブルという言葉を教えていただいたので
自分でもいろいろ調べることができました。
おかげさまで勉強がだいぶ進みました。
みなさんありがとうございました
191です。わざわざありがとうございます!
ありがたく使わせていただきます。
メタステーブルという言葉を教えていただいたので
自分でもいろいろ調べることができました。
おかげさまで勉強がだいぶ進みました。
みなさんありがとうございました
238774ワット発電中さん
2014/07/04(金) 22:53:06.35ID:qoZ+oeZm テストしてない回路は動いていないと考えた方がいいよ。
239774ワット発電中さん
2014/07/09(水) 21:14:51.37ID:DGyXiUmk シュミレーションは通るけど実機だと動かないから
見てくれと渡されたソースを調べてるんだけど
ちょと見ただけでゲートクロックやシーケンサもどきの部分で
組み合わせ回路からの非同期リセットが
あるんでISEでQuartusのDesign Assistantみたいなチェックをする方法ないですか? あるてらばっかし使ってたんでISEの設定がわからん
ソースごととにQuartusでコンパイルしなそえばみつかるかも知れないけど
見てくれと渡されたソースを調べてるんだけど
ちょと見ただけでゲートクロックやシーケンサもどきの部分で
組み合わせ回路からの非同期リセットが
あるんでISEでQuartusのDesign Assistantみたいなチェックをする方法ないですか? あるてらばっかし使ってたんでISEの設定がわからん
ソースごととにQuartusでコンパイルしなそえばみつかるかも知れないけど
240774ワット発電中さん
2014/07/09(水) 23:46:48.94ID:AqOzWriC シュミレーションて
最低だなおまえ
最低だなおまえ
241774ワット発電中さん
2014/07/10(木) 01:15:30.90ID:5cZOnQsg 趣味でやってるもんで…
242774ワット発電中さん
2014/08/02(土) 07:14:23.83ID:uBMfcSR0 そーかIntelもVerilogだったんだな
243774ワット発電中さん
2014/08/02(土) 15:14:55.10ID:uBMfcSR0 Verilogになる前のインテルの独自仕様のHDLがどんなだったか興味あるわ
244774ワット発電中さん
2014/08/03(日) 07:18:32.00ID:3iUqk1+3 やっぱりツールは内製しないと負けるよな
fpgaとかでも、日本は駄目過ぎる
fpgaとかでも、日本は駄目過ぎる
245774ワット発電中さん
2014/08/03(日) 09:16:25.23ID:wYsvvgCc ソフトも電子回路ももう日本は圧倒的に後進国だろう
モノづくりが強かったのは金型作るときの職人の腕がすごかっただけで
もう時代が違う
モノづくりが強かったのは金型作るときの職人の腕がすごかっただけで
もう時代が違う
246774ワット発電中さん
2014/08/03(日) 18:30:00.67ID:rSFFEn1l 手作りに賭ける。
247774ワット発電中さん
2014/08/04(月) 04:40:13.28ID:UIt3h80J まだ web は準備中な感じ
Tachyon DA's CVC Full 1364 Verilog HDL Compiled Simulator is now Open Source
http://www.tachyon-da.com/
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.70ID:C3V8tVMK つーかな、
日本のメーカーはソフトを軽視しすぎ。
ソフトというより、
あくせく汗水流してるとがんばって働いてるとか。
ホントの頭脳労働してても評価されない。
研究、開発、設計に現場と同じ感覚でQC活動なんかさせんな。
結局、勤勉さと、手先の器用さ以外の部分で見るべきものが全くなくなった
日本のメーカーはソフトを軽視しすぎ。
ソフトというより、
あくせく汗水流してるとがんばって働いてるとか。
ホントの頭脳労働してても評価されない。
研究、開発、設計に現場と同じ感覚でQC活動なんかさせんな。
結局、勤勉さと、手先の器用さ以外の部分で見るべきものが全くなくなった
249774ワット発電中さん
2014/08/04(月) 15:17:02.56ID:iBwRvjJp 殆どの付加価値はソフトウェアで実装されているが、
お客は、ハードが機能を実現していると思っている
経営者がこの感覚におちいっていると、ソフト技術者を冷遇する
経営者がこの現象を理解していると、ソフトを無料で配ってハードを高値で売る
いずれにしてもソフト技術者が尊敬されることは無い
お客は、ハードが機能を実現していると思っている
経営者がこの感覚におちいっていると、ソフト技術者を冷遇する
経営者がこの現象を理解していると、ソフトを無料で配ってハードを高値で売る
いずれにしてもソフト技術者が尊敬されることは無い
250774ワット発電中さん
2014/08/14(木) 19:17:23.52ID:8tlq/MX8 いかろすが8月一日に上がってた
入れはしたけど試しようがない・・・
サマリー読む気もない・・・
入れはしたけど試しようがない・・・
サマリー読む気もない・・・
251774ワット発電中さん
2014/09/14(日) 20:45:51.71ID:usnjQ+9J Verilog で複数リセットに対応したいとき
always @(posedge ck or negedge res1 or negedge res2)
と書いても一応論理合成できたんだけどこれでいいんだろうか。
assign res = res1 & res2;
always @(posedge ck or negedge res)
みたいに書かないとダメかなとか思ったりしたけど。
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.88ID:pHD1RiWz >>251
合成後の回路はどうなってるの?
合成後の回路はどうなってるの?
254774ワット発電中さん
2014/09/15(月) 01:33:52.62ID:3MkPeNbp 252じゃないけど
Quartusなら
Tools → Netlist Viewer → Technology Map Viewer (Post-Fittinng)
で合成後の回路が見られる
Quartusなら
Tools → Netlist Viewer → Technology Map Viewer (Post-Fittinng)
で合成後の回路が見られる
255774ワット発電中さん
2014/09/15(月) 09:17:44.71ID:UJFwcfHR おー、面白い。こんなふうになっていました。
http://img.wazamono.jp/pc/thumb/1410739993472s.jpg
assign res = res1 & res2;
always @(posedge ck or negedge res)
と同じかな?
複数リセットを使ってる例って見ないんですよね。
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.72ID:UJFwcfHR うは、サムネイルの方でした。こっちです。
http://img.wazamono.jp/pc/src/1410739993472.png
http://img.wazamono.jp/pc/src/1410739993472.png
257774ワット発電中さん
2014/09/15(月) 18:29:38.41ID:4YpBRKwJ 素朴な疑問なんだが検証はできるの?
258774ワット発電中さん
2014/09/16(火) 18:23:40.39ID:bTgXr+0e verilogの非同期リセットは何度見ても気持ち悪い。
259774ワット発電中さん
2014/09/16(火) 18:52:41.38ID:/7J8UsiO >>258
クロックのエッジとリセットのエッジで何らかの動作をするという本質をよく表してると思うけど
クロックのエッジとリセットのエッジで何らかの動作をするという本質をよく表してると思うけど
260774ワット発電中さん
2014/09/16(火) 20:25:52.82ID:YOoCniuq >>259
リセットはエッジじゃなくレベルでかかるべきだろ
ダウンエッジでFFがリセットされても
その後強烈なノイズが乗ってFFが1に化けたら
ダウンエッジでしか効かないリセットだとリセットは0なのに
FFは1に化けたままになりそう
リセットはエッジじゃなくレベルでかかるべきだろ
ダウンエッジでFFがリセットされても
その後強烈なノイズが乗ってFFが1に化けたら
ダウンエッジでしか効かないリセットだとリセットは0なのに
FFは1に化けたままになりそう
261774ワット発電中さん
2014/09/16(火) 21:04:36.58ID:bTgXr+0e 一応こうとも書けるらしいけど、
http://www.mtl.t.u-tokyo.ac.jp/~jikken/cpu/wiki/index.php?Env%2FVerilog%2FOutline
これはこれでなにか気持ちが悪いんだよな。
いや、単に俺が気持ち悪いだけですけどね・・・
http://www.mtl.t.u-tokyo.ac.jp/~jikken/cpu/wiki/index.php?Env%2FVerilog%2FOutline
これはこれでなにか気持ちが悪いんだよな。
いや、単に俺が気持ち悪いだけですけどね・・・
262774ワット発電中さん
2014/09/16(火) 21:16:50.04ID:/7J8UsiO >>260
うーん、その強烈なノイズってリセット期間中だけ発生してくれるもんなの?
うーん、その強烈なノイズってリセット期間中だけ発生してくれるもんなの?
263774ワット発電中さん
2014/09/16(火) 21:36:40.16ID:YOoCniuq264774ワット発電中さん
2014/09/16(火) 21:53:34.64ID:/7J8UsiO265774ワット発電中さん
2014/09/16(火) 21:59:13.68ID:h9M98SAH 全FFのセンシティブにnoise追加しとけば
266774ワット発電中さん
2014/09/16(火) 22:43:25.87ID:OTxxyOsv センシティビティリストってシミュレーションでしか使わないんじゃなかったっけ?
267774ワット発電中さん
2014/09/17(水) 00:45:10.54ID:7Aw1CviR268774ワット発電中さん
2014/09/17(水) 00:47:10.86ID:r7Go0FPS レベルの動作はSim.出来ません。
269774ワット発電中さん
2014/09/17(水) 08:11:23.63ID:GzHmrYfC だから
強烈なnoiseが来たときに
FFを不定なり
リセットなり
掛ければ良いのでは
・・・まぁそんなこと回路か動くことのまえでは意味ないし
ノイズならRTL以外でケアすべきところ
強烈なnoiseが来たときに
FFを不定なり
リセットなり
掛ければ良いのでは
・・・まぁそんなこと回路か動くことのまえでは意味ないし
ノイズならRTL以外でケアすべきところ
270774ワット発電中さん
2014/09/17(水) 23:04:47.86ID:XEmKdM0X >>261
どっちにしてもVHDLにしても変化があった時に動作するのがセンシティビティリストなので結局はレベル動作を表しているわけじゃないけどね。
どっちにしてもVHDLにしても変化があった時に動作するのがセンシティビティリストなので結局はレベル動作を表しているわけじゃないけどね。
271774ワット発電中さん
2014/09/18(木) 07:54:17.14ID:WfnlP8o0 RTLで表現出来る非同期リセットのノイズなら、エッジ評価で問題無いでしょうに。gate cellモデルならprimitive文で非同期リセットをレベル動作モデリングするのが通例。
272774ワット発電中さん
2014/09/18(木) 17:53:48.18ID: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はそもそもセンシティビティリスト自体不要だったと思うんだけど、
なぜあるんだろうね。
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.49ID:mLYjpwUg >>272
シミュレータが楽をするため
シミュレータが楽をするため
274774ワット発電中さん
2014/09/20(土) 09:35:37.68ID:EYqUSttY カムリてFFだったんだな
275774ワット発電中さん
2014/09/20(土) 23:17:38.22ID:wixbAogh フリップフロップ?
276774ワット発電中さん
2014/09/21(日) 00:49:47.24ID:MCfBJJ7P ファイナルファンタジー?
277774ワット発電中さん
2014/09/21(日) 07:55:34.05ID:xi+B4iVk トランジスタ特性条件?
278774ワット発電中さん
2014/09/21(日) 12:16:12.40ID:L/klupT2 カネが〜すべてさ〜♪
279774ワット発電中さん
2014/09/21(日) 12:46:47.14ID:MCfBJJ7P 5・7・5
の後に「それにつけても 金の欲しさよ」
を付ける。
の後に「それにつけても 金の欲しさよ」
を付ける。
280774ワット発電中さん
2014/09/24(水) 03:11:13.01ID:aIwnBJW5 けっこうカネもちなくせによく言うわ
281774ワット発電中さん
2014/10/30(木) 17:00:06.03ID: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
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.19ID:6RmVD04Q >>281
多分Verilogの仕様 。
32'hffff8180はunsignedなので算術シフトしても論理シフトになる。
算術シフトしたいなら32'shffff8180か $signed(32'hffff8180)のように
signedとして扱われるように記述する必要がある。
ただ、後者がセレクトされる理由は分かんないや。ゴメン。
多分Verilogの仕様 。
32'hffff8180はunsignedなので算術シフトしても論理シフトになる。
算術シフトしたいなら32'shffff8180か $signed(32'hffff8180)のように
signedとして扱われるように記述する必要がある。
ただ、後者がセレクトされる理由は分かんないや。ゴメン。
283774ワット発電中さん
2014/11/02(日) 15:30:56.46ID:RHpjiNww284774ワット発電中さん
2014/11/02(日) 16:54:34.20ID:iS0fpnsg >>281
うちにもフリーのツールしかないからModelSim ASEとVerilatorでしか試せてないけど、
Verilatorではちゃんと全部同じ値になった。
ffffff81
ffffff81
ffffff81
ffffff81
Verilogの仕様ってことはないんじゃないかな。
うちにもフリーのツールしかないからModelSim ASEとVerilatorでしか試せてないけど、
Verilatorではちゃんと全部同じ値になった。
ffffff81
ffffff81
ffffff81
ffffff81
Verilogの仕様ってことはないんじゃないかな。
285sage
2014/11/02(日) 22:44:59.56ID:YxW1cfDO >>281
仕様書読んでみたけど、3項演算子のときどうなるのかよく分からない。
verilogでsignedは後から追加された仕様だから謎の部分が多い。
どうしても使わなきゃいけない部分以外は、unsigned にしとくほうが安全だね。
http://www.edaplayground.com/
仕様書読んでみたけど、3項演算子のときどうなるのかよく分からない。
verilogでsignedは後から追加された仕様だから謎の部分が多い。
どうしても使わなきゃいけない部分以外は、unsigned にしとくほうが安全だね。
http://www.edaplayground.com/
286774ワット発電中さん
2014/11/04(火) 20:57:45.18ID:Zmp209bf 3番目はこう解釈されてるのかな?
$display("%x",
(1 ? $signed(32'hffff8180) >>> 8 : 0) ? 32'hffff8180 >>> 8 :0);
なぜ3番目だけこうなるのだろう。
$display("%x",
(1 ? $signed(32'hffff8180) >>> 8 : 0) ? 32'hffff8180 >>> 8 :0);
なぜ3番目だけこうなるのだろう。
287774ワット発電中さん
2014/11/04(火) 21:12:40.07ID:Zmp209bf 演算子の優先度を調べてみたけど、下記表現が
a ? b : c ? d : e ・・・(1)
下記のどちらで解釈されるかは
(a ? b : c) ? d : e
a ? b : (c ? d : e)
どこにも書いてない。
未定義なのかな?
未定義だとすると(1)と書くのがそもそも間違いという結論になるのかね。
a ? b : c ? d : e ・・・(1)
下記のどちらで解釈されるかは
(a ? b : c) ? d : e
a ? b : (c ? d : e)
どこにも書いてない。
未定義なのかな?
未定義だとすると(1)と書くのがそもそも間違いという結論になるのかね。
288774ワット発電中さん
2014/11/04(火) 21:38:03.82ID:n2YAtGDR >>286
手元のModelSim ASE 10.1dで試してみると
$display("%x", 1 ? $signed(32'hffff8180) >>> 8 : 0 ? 32'h12345678 : 0);
としても結果は
00ffff81
になるので、後ろの項が選択されているわけではないっぽい。
手元のModelSim ASE 10.1dで試してみると
$display("%x", 1 ? $signed(32'hffff8180) >>> 8 : 0 ? 32'h12345678 : 0);
としても結果は
00ffff81
になるので、後ろの項が選択されているわけではないっぽい。
289774ワット発電中さん
2014/11/04(火) 23:07:45.98ID:eG4OWape >>287
「同じ優先度の場合は左から右」って書いてあるよ
「同じ優先度の場合は左から右」って書いてあるよ
290774ワット発電中さん
2014/11/04(火) 23:08:50.37ID:eG4OWape a / b / c != a / ( b / c )
291774ワット発電中さん
2014/11/05(水) 00:04:33.47ID:YiwBjnU+292774ワット発電中さん
2014/11/05(水) 00:45:08.43ID:Y5QyR1i8293774ワット発電中さん
2014/11/05(水) 01:13:42.64ID:kVUs7aOQ 複雑なマルチプレクサならalways文で書け
294774ワット発電中さん
2014/11/05(水) 01:19:41.42ID:Y5QyR1i8 >>293
always文で組み合わせ回路書くの好きじゃない
always文で組み合わせ回路書くの好きじゃない
295774ワット発電中さん
2014/11/05(水) 08:06:17.72ID:WVJQMb68 じゃあファンクション
296774ワット発電中さん
2014/11/05(水) 09:16:43.08ID:kZzXAAQr297774ワット発電中さん
2014/11/05(水) 09:17:28.05ID:kZzXAAQr ってか、どちらにせよカッコ付けろよ
298774ワット発電中さん
2014/11/05(水) 09:52:22.27ID:RtvJ57gL >>296
あぁ、結合順じゃなくて評価順のことね。
あぁ、結合順じゃなくて評価順のことね。
299774ワット発電中さん
2014/11/05(水) 10:57:19.69ID:CkzFue08 条件演算子(3項演算子)の優先順位が変テコりんな言語はPHPだけ。
PHP以外は全てC言語と同じだろ?
PHP以外は全てC言語と同じだろ?
300774ワット発電中さん
2014/11/05(水) 12:25:35.27ID:+I/b1KAv カッコつけないで括弧つけろ
301774ワット発電中さん
2014/11/05(水) 12:40:51.77ID:WVJQMb68 セレクタとして使う信号には
頭にs_を付けて見るとー
頭にs_を付けて見るとー
302281
2014/11/05(水) 12:51:59.84ID: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())と二重になっていると、一つだけ(たぶん内側?)はがれる。
これが本当に仕様かどうかは確認できていません。
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.99ID:11EZsYb+ × シフト演算子の第2項の符号有無も第2項には無関係。
○ シフト演算子の第2項の符号有無も第1項には無関係。
○ シフト演算子の第2項の符号有無も第1項には無関係。
304774ワット発電中さん
2014/11/05(水) 19:25:05.65ID: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となり、以下略。
> ・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.38ID:YiwBjnU+306774ワット発電中さん
2014/11/05(水) 21:27:45.69ID: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);
もっと単純なルールで説明できますね。
・計算式中一つでも符号なしが存在した場合、
その式は符号なしとして計算される。
・$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.38ID:zhHmeCtP 誰かVCSとかNCで試してみてくれないかな
308774ワット発電中さん
2014/11/06(木) 00:40:01.61ID:EvWPeAFY Cならやってみた。符号はどの言語でもややこしい・・・
http://codepad.org/ooLUGl7shttp://codepad.org/UGnOMahv
シミュレーション実行可能なVerilogのソースアップローダってないのかな。
http://codepad.org/ooLUGl7shttp://codepad.org/UGnOMahv
シミュレーション実行可能なVerilogのソースアップローダってないのかな。
309774ワット発電中さん
2014/11/06(木) 00:41:06.24ID:EvWPeAFY 前のリンクがのこってたわ
http://codepad.org/UGnOMahv
http://codepad.org/UGnOMahv
310774ワット発電中さん
2014/11/06(木) 08:19:06.95ID:m3ocUVek 符号の扱いは、ieeeの規格書にちゃんと書いてあるだろ。見ているのか?
311774ワット発電中さん
2014/11/06(木) 12:05:58.55ID:LdPAe1f3313774ワット発電中さん
2014/11/07(金) 23:49:04.10ID:0OzJPhtw 算術演算のIP作ったとき、符号付、符号無の混在演算のサポートで結構悩んだなぁ。
割り算IPの場合、符号付A÷符号付B=符号付Qの演算の時とか、
Qの整数部のビット数=Aの整数部のビット数+1にしないと、Qの整数部がオーバーフローするんだよね。
例)
-65536÷(-1) = +65536
割り算IPの場合、符号付A÷符号付B=符号付Qの演算の時とか、
Qの整数部のビット数=Aの整数部のビット数+1にしないと、Qの整数部がオーバーフローするんだよね。
例)
-65536÷(-1) = +65536
314774ワット発電中さん
2014/11/09(日) 16:04:29.68ID: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
3. Mixed unsigned/signed expression (Verilog)
? Rule: Do not mix unsigned and signed types in one expression
315774ワット発電中さん
2014/11/09(日) 16:51:41.27ID: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)。
>>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.93ID:G0OG5WJ6 最近はルート配線で悩んでる
スラックを満たしてるけどクロックに対して余裕が少ない
単クロックばら撒いてるのに配線遅延のせいかタイミングが満たせない
スライス量が増えると適切な配置に限界があるのか
スラックを満たしてるけどクロックに対して余裕が少ない
単クロックばら撒いてるのに配線遅延のせいかタイミングが満たせない
スライス量が増えると適切な配置に限界があるのか
317774ワット発電中さん
2014/11/10(月) 20:28:56.99ID:mXuY5agi タイミングの類はベストとワーストでやるだろうから
結構マージンあると思うよ
結構マージンあると思うよ
318774ワット発電中さん
2014/11/14(金) 11:01:55.38ID:gBlB4OT4 ルート配線… シンセサイズ合成みたいなものか
スラック満たしてるなら全く問題ないと思うけど
ツールは制約満たしてればそれ以上無駄な努力はしないよ
無駄な努力を強制するなら、XilinxならContinue on Impossibleなんてオプションがあるけど
スラック満たしてるなら全く問題ないと思うけど
ツールは制約満たしてればそれ以上無駄な努力はしないよ
無駄な努力を強制するなら、XilinxならContinue on Impossibleなんてオプションがあるけど
319774ワット発電中さん
2014/11/15(土) 03:59:36.97ID:LqzTVCZu 設定次第ではアホみたいにコンパイル時間かかるよね
320774ワット発電中さん
2014/11/15(土) 08:57:07.12ID:lWJUCtB0 3日とかね
321774ワット発電中さん
2014/11/15(土) 18:41:56.89ID:ltgB1esX とりあえずメモリ増やせよ
322774ワット発電中さん
2014/11/23(日) 20:31:08.44ID:CxGRU0aw マージン増やそうと思ってクロック制約を割増なんてやっていいですか
323774ワット発電中さん
2014/11/23(日) 23:59:14.12ID:gccuASjv >322
リソース無駄に使うことになるけどそれでもよければ
リソース無駄に使うことになるけどそれでもよければ
324774ワット発電中さん
2014/11/24(月) 00:13:49.50ID:4vvitbkL 多クロック入れる場合は各々入力に制約つけてるがまずいんか
325774ワット発電中さん
2014/11/28(金) 23:49:57.23ID:Cq1F7Wfr このスレでvhdlは少数派か
俺もバイリンガルになろう
俺もバイリンガルになろう
326774ワット発電中さん
2014/11/29(土) 00:13:09.45ID:eqsRZsDi Verilogに対するSystemVerilogのようなものって、VHDLにはあるの?
327774ワット発電中さん
2014/11/29(土) 11:20:32.55ID:ObDwEzlE VHDL-2008とか?
328774ワット発電中さん
2014/11/30(日) 20:01:39.29ID:2m6XlH6Z ドワンゴ「急募!FPGA機器開発経験者!」 ニコニコ動画をFPGAで高速化、ハード技術者を募集中©2ch.net
http://hayabusa3.2ch.net/test/read.cgi/news/1417266799/
http://hayabusa3.2ch.net/test/read.cgi/news/1417266799/
329774ワット発電中さん
2014/11/30(日) 21:29:50.50ID:gn5WqU+B 呼ばれたような気がする
330774ワット発電中さん
2014/11/30(日) 21:42:33.99ID:81WBD9rk331774ワット発電中さん
2014/11/30(日) 21:56:50.32ID:zx8WHH08332774ワット発電中さん
2014/11/30(日) 22:00:47.47ID:yTkERP9G IPオフロード処理関連では無く、トランスコーダーの方なんだねぇ
素直にOpenMPとかOpenCL使ったアルゴリズムに力入れた方がヨクネ?とか思ったら負けなんだろうな…
素直にOpenMPとかOpenCL使ったアルゴリズムに力入れた方がヨクネ?とか思ったら負けなんだろうな…
333774ワット発電中さん
2014/11/30(日) 22:15:54.26ID:GCJWQoae デバイスドライバの実装はハードウェア設計者とは別だと思うんだが…
334774ワット発電中さん
2014/12/01(月) 00:48:10.80ID:82dKVpIt なんだかなぁ、IP集めて何か作ればそれで作ったような気になる、
こんな技術者が多すぎる。
何も自分の頭で基礎を考えようとしない?
それがものづくりなのか?
こんな技術者が多すぎる。
何も自分の頭で基礎を考えようとしない?
それがものづくりなのか?
335774ワット発電中さん
2014/12/01(月) 01:19:23.62ID:nnM/3m1X いまさら民主党
336774ワット発電中さん
2014/12/01(月) 07:35:44.43ID:LlcUaQKV 動けば勝ち
337774ワット発電中さん
2014/12/01(月) 09:13:16.16ID:0F1w/yf8 ライブラリをまったく持っていないだろうな。完成まで2,3年かかると見た。
338774ワット発電中さん
2014/12/01(月) 09:56:39.52ID:35Ru9Ydd >>334
チェンジニアとアセンブラですから。
チェンジニアとアセンブラですから。
339774ワット発電中さん
2014/12/01(月) 11:46:29.99ID:+MzLMqfC >>338
特許調査もめんどいしな
特許調査もめんどいしな
340774ワット発電中さん
2014/12/01(月) 13:19:51.95ID:VT4kKFcf >>328
金余ってるならルネサス救ってやれよ
金余ってるならルネサス救ってやれよ
341774ワット発電中さん
2014/12/04(木) 18:59:15.88ID:KtbaEH9n デバドラはMS-DOS時代に書いた事はあるけどWindowsやLinuxでは書いたことないからパスだな
342774ワット発電中さん
2014/12/04(木) 20:59:48.28ID:xq5Xyo8x 誰か応募しないのかよ。
2000万くらいふっかけてさ。
2000万くらいふっかけてさ。
343774ワット発電中さん
2014/12/08(月) 07:39:59.41ID:qCcY8gjl やだよぅ
あんたやりなよぉ
あんたやりなよぉ
344774ワット発電中さん
2015/01/06(火) 12:51:49.90ID:8EiV/sDa 勉強中の身なのですが質問があります。
verilogでnビット加算回路を作成したく思っています。
調べたところ、+記号を用いて簡単に作成しているものがありました。
+記号を使わずに、全加算器を用いてnビット加算回路を作成する方法はありますか?
例えば3ビットの場合、全加算器を3つ(または半加算1つと全加算3つ)記述しなければならないのと思うのですが、こういったものをn個(指定した個数)にするといった方法はあるのでしょうか?
verilogでnビット加算回路を作成したく思っています。
調べたところ、+記号を用いて簡単に作成しているものがありました。
+記号を使わずに、全加算器を用いてnビット加算回路を作成する方法はありますか?
例えば3ビットの場合、全加算器を3つ(または半加算1つと全加算3つ)記述しなければならないのと思うのですが、こういったものをn個(指定した個数)にするといった方法はあるのでしょうか?
345774ワット発電中さん
2015/01/06(火) 13:16:38.96ID:XbMNxlM+ generate
演算子使わないで全加算器連結なんて、お勉強以外で実際に使う事は無いと思うけど
演算子使わないで全加算器連結なんて、お勉強以外で実際に使う事は無いと思うけど
346774ワット発電中さん
2015/01/06(火) 14:58:58.25ID:VCO+erxy >>344
verilogじゃないけどVHDLで全加算器を自動で並べる記述をして
作ったことがあるよ。
この場合、FPGAだとキャリーチェーンを使わなくなってしまい
ロジックの消費も増えてだめだった。
結局素直に+演算子で記述した方が、ロジックの消費を抑えられたよ。
verilogじゃないけどVHDLで全加算器を自動で並べる記述をして
作ったことがあるよ。
この場合、FPGAだとキャリーチェーンを使わなくなってしまい
ロジックの消費も増えてだめだった。
結局素直に+演算子で記述した方が、ロジックの消費を抑えられたよ。
347774ワット発電中さん
2015/01/06(火) 15:09:43.27ID:StvSqy+U perlとかrubyでスクリプト組めば?
348774ワット発電中さん
2015/01/06(火) 16:06:16.36ID:1muLcfsw 初心者なんだけどビヘイビアレベルってなに?
vhdlで普通にかいたらrtlレベルの記述になるよね
それと
process(clk)
begin
if(clk'event)
って意味が重複してない?
process(clk)っでclkが変化したときだけ実行されるんだよね?
vhdlで普通にかいたらrtlレベルの記述になるよね
それと
process(clk)
begin
if(clk'event)
って意味が重複してない?
process(clk)っでclkが変化したときだけ実行されるんだよね?
349774ワット発電中さん
2015/01/06(火) 16:26:22.81ID:XbMNxlM+350774ワット発電中さん
2015/01/06(火) 17:09:05.15ID:StvSqy+U351774ワット発電中さん
2015/01/06(火) 17:25:31.30ID:XbMNxlM+ マジだったのか…そりゃ何でも出来るだろうけどさ
>>344 みたいな言語の構文で十分出来るような事までスクリプト組んで自動生成したいのか?
以前にPCヲタが仕事で「Excelで16進表記したいからVBAでマクロ組んだった」ってドヤ顔するの思い出したわ
>>344 みたいな言語の構文で十分出来るような事までスクリプト組んで自動生成したいのか?
以前にPCヲタが仕事で「Excelで16進表記したいからVBAでマクロ組んだった」ってドヤ顔するの思い出したわ
352774ワット発電中さん
2015/01/06(火) 18:36:13.39ID:B2E0K73a >>348
> 意味が重複してない?
> process(clk)っでclkが変化したときだけ実行されるんだよね?
そう。だから、clk'eventは必ず真になる。
でもこれはVHDLの文法での話であって、
合成ツールはそうじゃない。
合成ツールはVHDLのセンシビティリスト無視するから、
意図した回路ができない。
> 意味が重複してない?
> process(clk)っでclkが変化したときだけ実行されるんだよね?
そう。だから、clk'eventは必ず真になる。
でもこれはVHDLの文法での話であって、
合成ツールはそうじゃない。
合成ツールはVHDLのセンシビティリスト無視するから、
意図した回路ができない。
353774ワット発電中さん
2015/01/06(火) 19:26:38.59ID: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;
設計の初期段階に、
回路合成できるかどうかは無視して抽象的な設計をする
レベルって感じの意味。
たとえば、下記は合成はできないが、
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.91ID:Nz1HYU2m つかココ人居たんだ・・・
アルテラかなんかで32bit加算器を
適当APPNAと+記号で比べたら
+が断然速かったなぁ
アルテラかなんかで32bit加算器を
適当APPNAと+記号で比べたら
+が断然速かったなぁ
355774ワット発電中さん
2015/01/07(水) 00:14:52.12ID:nzEuH181356774ワット発電中さん
2015/01/07(水) 05:23:16.84ID:r1QvrnDk テスト用にでっち上げたスタブのRAMとかドライバは中身ちょ〜適当なので合成不可ばっかりだわw
357774ワット発電中さん
2015/01/07(水) 11:02:38.27ID:2VspyyQf 何が合成可能なのかいまいちわからん
wait系ならwait untilだけ、それも1processにつき一個まで
とか
断片的な知識しかない
合成不可なパターンをまとめたページとかありませんか?
wait系ならwait untilだけ、それも1processにつき一個まで
とか
断片的な知識しかない
合成不可なパターンをまとめたページとかありませんか?
358774ワット発電中さん
2015/01/07(水) 11:14:59.17ID:5UEMO4Cj うろ覚えだけど、XilinxのXSTはこんなのも合成してくれると資料に書かれていたような
誰得…
process begin
wait until rising_edge(CLK);
data <= '0';
wait until rising_edge(CLK);
data <= '1';
end process;
クロック信号と極性は全部同じでないと駄目で、さらにステート保持用にレジスタが生成されるはず
誰得…
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.28ID:D/XG739e >>357
こう書けば合成可能というしっかりした規格は無いと思う。
が、DesignCompilerという論理合成ツールがスタンダードと考えていい。
下記あたりで回路推定可能な記述はどんな形かを知っておくといい。
http://cseweb.ucsd.edu/~tweng/cse143/VHDLReference/08.pdf
こう書けば合成可能というしっかりした規格は無いと思う。
が、DesignCompilerという論理合成ツールがスタンダードと考えていい。
下記あたりで回路推定可能な記述はどんな形かを知っておくといい。
http://cseweb.ucsd.edu/~tweng/cse143/VHDLReference/08.pdf
360774ワット発電中さん
2015/01/21(水) 02:16:05.83ID: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で割って」加算すればよいか....
と思っていましたが、それは違うと思いました。
いかがでしょうか
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.52ID:IQ413lBG 8で割るなら3ビット落とさないと駄目なのでは
362774ワット発電中さん
2015/01/21(水) 09:27:36.05ID:esy4Oum6363774ワット発電中さん
2015/01/21(水) 20:29:31.45ID:y7S4LYjd 俺なら、最古引いて最新を足すで合計をだすな
364774ワット発電中さん
2015/01/22(木) 07:56:24.92ID:HiozZft4 >>363
8個前のデータを保持する方法が気になる
8個前のデータを保持する方法が気になる
365774ワット発電中さん
2015/01/23(金) 01:52:56.48ID:7LyKAswa 8個前のデータを保持するのは、言い換えれば、
8個手前のデータを与えることなので、
8個分の遅延をした値を与えればOK。
8個手前のデータを与えることなので、
8個分の遅延をした値を与えればOK。
366774ワット発電中さん
2015/01/23(金) 04:06:57.70ID: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行の命令はないのでしょうか?
何かコツはありますでしょうか?
結局今日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.73ID:ERlYt37C FPGAがどういうものかっていうのを今一度調べ直してみるといいのではなかろうか
368774ワット発電中さん
2015/01/23(金) 09:04:45.59ID:qufzxHsa >>366
うまく出ないというよりコンパイルできてないだろそもそも
うまく出ないというよりコンパイルできてないだろそもそも
369774ワット発電中さん
2015/01/23(金) 10:13:39.56ID:/gZpWmP5 クロックを200Hzで動かすんだ!
370774ワット発電中さん
2015/01/25(日) 06:34:20.05ID:EhYiihDE すみません、教えてください。
Verilogで、符号付きの計算で苦戦しています。
符号付きのレジスタは、
reg signed [7:0] tinco [0:7];
で宣言できます。また、正の定数は、
tinco [4] <= 8'sd250;
で、代入できます。
しかし、負の定数の記述方法がわかりません。
tinco [5] <= 8'sd-250;
は違うと思いますし。
宜しくお願いします。
Verilogで、符号付きの計算で苦戦しています。
符号付きのレジスタは、
reg signed [7:0] tinco [0:7];
で宣言できます。また、正の定数は、
tinco [4] <= 8'sd250;
で、代入できます。
しかし、負の定数の記述方法がわかりません。
tinco [5] <= 8'sd-250;
は違うと思いますし。
宜しくお願いします。
371774ワット発電中さん
2015/01/25(日) 10:13:41.55ID:JJ8QOH6O -8'sd250 でも -8'd250 でもどちらでも。
ビット長なんて気にしなくていいから、-250 でいいと思うけど。
ビット長なんて気にしなくていいから、-250 でいいと思うけど。
372774ワット発電中さん
2015/01/25(日) 10:20:03.32ID:JJ8QOH6O ってか、signed 8bit だと、-128〜+127 じゃない!
373774ワット発電中さん
2015/01/25(日) 22:13:11.11ID:g2x9f0W/ 10年振りにHDLでも弄ろうと思ったら、センシティビティリストとか手抜きできてびっくりした。
374774ワット発電中さん
2015/01/26(月) 01:58:23.40ID:t2z72wP8 Verilogで signed って使えるんだ。すごい。
reg signed [15:0] s16_aaa;
reg signed [11:0] s12_bbb;
があったとき、
s12_bbb <= s16_aaa; ってやると、どうなるの? ちゃんと値のLSB側が切られて
キャストされて代入されるの?
また逆に、s16_aaa <= s12_bbb; ってやると、ちゃんと符号拡張もやってくれるのかしら。
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.30ID:VNh3vzA2 >>374
IEEE1364-2005 に書いてあるから読め
IEEE1364-2005 に書いてあるから読め
376774ワット発電中さん
2015/01/29(木) 03:30:33.03ID:OlvVWTGw Verilogで、負の数値が扱えなかったころは、どうやって処理したのだろうか。
自分で負の処理を書いたのだろうか。
if( a == 16'h0 ) begin
a <= 16'hffff;
end else begin
a <= a - 16'h1;
end
とか
自分で負の処理を書いたのだろうか。
if( a == 16'h0 ) begin
a <= 16'hffff;
end else begin
a <= a - 16'h1;
end
とか
377774ワット発電中さん
2015/01/29(木) 06:38:01.91ID:qaht6dEb えっ
378774ワット発電中さん
2015/01/29(木) 07:33:12.58ID:xZAA/WqV 負数の内部表現は2の補数。unsignedだけでも符号拡張が面倒くさいがさほど困らんよ。
379774ワット発電中さん
2015/01/29(木) 08:01:11.00ID: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でも単項演算子としての-があるからあまり違いを気にする事はないけどね。
詳しくは規格を見てもらうとして、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.18ID:eKQkzo8n Xilinx ISEでVerilogをやっています。
少し修正するだけでも一通り全部のコンパイルをするので
時間がかかって困っています。
修正したファイルだけをコンパイルするだけで良いとか、
そういう方法はないのでしょうか?
少し修正するだけでも一通り全部のコンパイルをするので
時間がかかって困っています。
修正したファイルだけをコンパイルするだけで良いとか、
そういう方法はないのでしょうか?
381774ワット発電中さん
2015/01/31(土) 03:02:03.89ID:LE69sxSL 時間がかかるのはコンパイルよりP&Rですよ。
困るほど時間がかかるのは、デバイスの使用率が大きすぎるからだと思う。
あと、PCのメモリが足りないんじゃないかな?
困るほど時間がかかるのは、デバイスの使用率が大きすぎるからだと思う。
あと、PCのメモリが足りないんじゃないかな?
382774ワット発電中さん
2015/01/31(土) 03:29:40.42ID:Vtudet0c >>380
>修正したファイルだけをコンパイルするだけで良いとか、そういう方法
たぶん無いと思います。ガマンするしかありません。
PCのスペックを上げれば、確かに速くなりますが、劇的ではない予感がします。
時間がかかると言っても、30分程度なら短い方ですよ。
1晩とか平気でかかっていた時代もあったらしいです。
>修正したファイルだけをコンパイルするだけで良いとか、そういう方法
たぶん無いと思います。ガマンするしかありません。
PCのスペックを上げれば、確かに速くなりますが、劇的ではない予感がします。
時間がかかると言っても、30分程度なら短い方ですよ。
1晩とか平気でかかっていた時代もあったらしいです。
383774ワット発電中さん
2015/01/31(土) 16:27:08.97ID:XZgAsNTl 最上位だけ別に作っとけば、下位階層は別々にコンパイル出来るよ。
P&Rは、Virtex5で90%くらい使ってたときは一晩かかった。
コンパイル(論理合成)はSynplify Premierだったけど。
P&Rは、Virtex5で90%くらい使ってたときは一晩かかった。
コンパイル(論理合成)はSynplify Premierだったけど。
384774ワット発電中さん
2015/02/01(日) 04:56:19.19ID:5L5XPCwg 90%って、またスゴイね。
で、ちゃんと入ったの?
で、ちゃんと入ったの?
385774ワット発電中さん
2015/02/01(日) 12:07:15.07ID:bpR/jqmF ISEってインクリメンタルコンパイルってないの?
QuartusIIは有料版なら使えるけど無償版はできない
ISEも似たようなもん?
QuartusIIは有料版なら使えるけど無償版はできない
ISEも似たようなもん?
386774ワット発電中さん
2015/02/01(日) 19:44:07.14ID:CGfa1Llu387774ワット発電中さん
2015/02/07(土) 20:56:40.92ID:iJrGLt7v 仕事としてHDL使ってる人ってどんなもの作ってるの?
大学2年くらいの時に時計作らされたけどそれだけで発狂しそうになったわ
大学2年くらいの時に時計作らされたけどそれだけで発狂しそうになったわ
388774ワット発電中さん
2015/02/08(日) 00:43:46.08ID:mpFm0YX8 FPGAはもちろん、ほとんどのデジタルICはHDL使ってるんじゃね?
FPGAそのものもHDL使って設計してるらしいよ。
FPGAそのものもHDL使って設計してるらしいよ。
389774ワット発電中さん
2015/02/08(日) 03:46:02.80ID:7pSh59e+390774ワット発電中さん
2015/02/08(日) 16:44:26.61ID:ArGz65xC 学生にやらせるのは良いことだと思うよ
キャラクタLCDの初期化を通してマイコンの神々しさを知り崇拝するようになるだろう
キャラクタLCDの初期化を通してマイコンの神々しさを知り崇拝するようになるだろう
391774ワット発電中さん
2015/02/10(火) 10:21:44.52ID:akjyNrP6 つーか「HDL」ってくくりがおおまかすぎるねん。
たとえば「プログラミング言語」やったら、アセンブリ言語からPrologまで含まれるんやで。
たとえば「プログラミング言語」やったら、アセンブリ言語からPrologまで含まれるんやで。
392774ワット発電中さん
2015/02/11(水) 14:20:32.64ID:IQZNPz3q HDLとRTLの違いは、何ですか?
意味的にいうと、どっちかが、どっちかに包まれる言葉でしょうか?
意味的にいうと、どっちかが、どっちかに包まれる言葉でしょうか?
393774ワット発電中さん
2015/02/11(水) 16:49:13.70ID:MvNghKJk 高位合成界隈にはHDLだけどRTLじゃないってものはいくつかありそう。
ただ、OpenCLとかMATLABから高位合成した時にソースをHDLと認識するかとか考えると、
どっちも言ったもん勝ちの部分はありそうだけど。
ただ、OpenCLとかMATLABから高位合成した時にソースをHDLと認識するかとか考えると、
どっちも言ったもん勝ちの部分はありそうだけど。
394774ワット発電中さん
2015/02/11(水) 17:14:03.24ID:6AMHXY3y395774ワット発電中さん
2015/02/11(水) 23:07:20.59ID:TQqLUwBi RTLのLはlanguageじゃなくてlevel。直交した概念だ。
396774ワット発電中さん
2015/02/12(木) 03:10:34.97ID:12MXBcpZ RTL = Registor Transfer Level
データは、クロックによりFFを通って処理されるという回路接続方法という理解で
よいでしょうか?
データは、クロックによりFFを通って処理されるという回路接続方法という理解で
よいでしょうか?
397774ワット発電中さん
2015/02/12(木) 09:44:15.40ID:aktX9y/Z398774ワット発電中さん
2015/02/12(木) 09:51:29.89ID:xy/RjCci >>396
組み合わせ回路を記述してもいいけどな
組み合わせ回路を記述してもいいけどな
399774ワット発電中さん
2015/02/12(木) 10:15:43.97ID:2DYCtHvY 高水準のほうから見てくとわかりにくいが、低水準のほうから考えてゆけば良い。
ネットリストのレベルだと、全ての接続を静的に記述するわけだけど、
RTLの場合はそうじゃなくて、「こういった場合の時のはここからここにデータが伝わる」
という感じの記述になる、ということ。
それより高水準のビヘイビア記述は、メーカーとかも結局何がなんだか状態なんじゃねーのw
ネットリストのレベルだと、全ての接続を静的に記述するわけだけど、
RTLの場合はそうじゃなくて、「こういった場合の時のはここからここにデータが伝わる」
という感じの記述になる、ということ。
それより高水準のビヘイビア記述は、メーカーとかも結局何がなんだか状態なんじゃねーのw
400774ワット発電中さん
2015/02/12(木) 11:15:43.16ID:Abxz7T5y あなたもネットで告発しませんか?
ビッ苦カメラ札幌店 佐藤伸弦 暴行事件
ビッ苦カメラ札幌店 佐藤伸弦 暴行事件
401774ワット発電中さん
2015/02/12(木) 23:19:50.05ID:GlqxZMeS HDLの類は、あと10年か20年くらいで、ソフトウェアプログラミング言語と融合すると思うのだが。
眺めていると、そうなってほしくないという感情があるっぽい。
もともとハード屋かな。
眺めていると、そうなってほしくないという感情があるっぽい。
もともとハード屋かな。
402774ワット発電中さん
2015/02/12(木) 23:21:49.83ID:GlqxZMeS ソースを書いて、書き換え可能なメモリのようなものに記録する状態で、もう限りなくソフトに近い。
メモリにCPU解釈の命令列を出力するか、実行可能な回路を出力するか、その程度の違い。
メモリにCPU解釈の命令列を出力するか、実行可能な回路を出力するか、その程度の違い。
403774ワット発電中さん
2015/02/13(金) 04:05:52.45ID:4hHLN1pP >>402
僕もそう思う。
だから、人前で「FPGAのプログラム作ってる」と言っています。
マイコンのプログラムと何も違わないから。
しかし、Verilogに慣れると、久々にマイコンでCを書くとき、
Verilogには結構便利な機能があること気づきます。
一番感心するのは「 { } 」連接です。
bit単位で連結したり入れ替えたりできて、とてもありがたい。
Cでやろうとすると、シフトと&の連続ですよね。
僕もそう思う。
だから、人前で「FPGAのプログラム作ってる」と言っています。
マイコンのプログラムと何も違わないから。
しかし、Verilogに慣れると、久々にマイコンでCを書くとき、
Verilogには結構便利な機能があること気づきます。
一番感心するのは「 { } 」連接です。
bit単位で連結したり入れ替えたりできて、とてもありがたい。
Cでやろうとすると、シフトと&の連続ですよね。
404774ワット発電中さん
2015/02/13(金) 06:36:09.24ID:RXf7RWgA どんなものを作ってるんだろう
405774ワット発電中さん
2015/02/13(金) 09:40:44.85ID:pzz+U5OG ソフト屋だけどFPGAに初めて挑戦して
ソフトとハードは考え方から根本的に違うと思った。まる。
ソフトとハードは考え方から根本的に違うと思った。まる。
406774ワット発電中さん
2015/02/13(金) 10:01:05.83ID:FqcomeDH そもそも初期のコンピュータは配線を変えることによって
処理を変えていたんだから、それをプログラミングと呼ぶなら同等だろう。
C言語からそのままハードウェアってのはここ20年くらい言われているけど
ろくに実現できていない。言語の問題じゃなくて、
>>405 の感覚が正しいんだと思う。
処理を変えていたんだから、それをプログラミングと呼ぶなら同等だろう。
C言語からそのままハードウェアってのはここ20年くらい言われているけど
ろくに実現できていない。言語の問題じゃなくて、
>>405 の感覚が正しいんだと思う。
407774ワット発電中さん
2015/02/13(金) 23:39:24.35ID:sc3uuhjm ブロッキング代入とノンブロッキング代入、どっちが主流なんだろう。
408774ワット発電中さん
2015/02/14(土) 02:26:00.59ID:UbgZWfJb どっちがどっちか知らないけど、<= が好き
409774ワット発電中さん
2015/02/14(土) 03:18:39.70ID:VOSEu/vL ASICはまあなんとかなるかって記述しちゃうけど
FPGAの時は構造がアレだから記述はこうするか
って物理的な問題でブロッキング気にする事はあるが
主流とかは考えてはいないかなぁ
FPGAの時は構造がアレだから記述はこうするか
って物理的な問題でブロッキング気にする事はあるが
主流とかは考えてはいないかなぁ
410774ワット発電中さん
2015/02/14(土) 10:39:22.83ID:O7h4p72O >>406
HDLとFPGAの組み合わせは、配線を変えたプログラミングより、明らかにソフト寄り。
CPU設計者やFPGA設計者を本物のハード屋だけれども、
HDL屋はハード屋といいにくいと思う。
プログラミングという言葉には命令列生成というニュアンスがあるので、
ソフト的なものであっても『回路設計』にプログラミングという言葉を使うのは
違和感があるのかもしれない。
「ハードウェアとソフトウェア」と「回路設計と命令列設計」という
それぞれの概念軸は直行する考えていいかも。
命令列設計のほうが早くにソフト化したので、ソフトウェア設計と命令列設計
は同一視されたけども、20年後くらいはどうか。
ハードウェア回路設計(古典的な回路設計、CPU設計、FPGA設計)
ソフトウェア回路設計(HDLとFPGAの組み合わせ)
ハードウェア命令列設計(配線変更による太古のプログラミング)
ソフトウェア命令列設計(現在のプログラミング)
ソフトウェア回路設計とソフトウェア命令列設計は現在は「まだ」融合していない。
HDLとFPGAの組み合わせは、配線を変えたプログラミングより、明らかにソフト寄り。
CPU設計者やFPGA設計者を本物のハード屋だけれども、
HDL屋はハード屋といいにくいと思う。
プログラミングという言葉には命令列生成というニュアンスがあるので、
ソフト的なものであっても『回路設計』にプログラミングという言葉を使うのは
違和感があるのかもしれない。
「ハードウェアとソフトウェア」と「回路設計と命令列設計」という
それぞれの概念軸は直行する考えていいかも。
命令列設計のほうが早くにソフト化したので、ソフトウェア設計と命令列設計
は同一視されたけども、20年後くらいはどうか。
ハードウェア回路設計(古典的な回路設計、CPU設計、FPGA設計)
ソフトウェア回路設計(HDLとFPGAの組み合わせ)
ハードウェア命令列設計(配線変更による太古のプログラミング)
ソフトウェア命令列設計(現在のプログラミング)
ソフトウェア回路設計とソフトウェア命令列設計は現在は「まだ」融合していない。
411774ワット発電中さん
2015/02/14(土) 13:53:44.33ID: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] };
というところでしょうか?
>一番感心するのは「 { } 」連接です。
>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.19ID:0uPZFPNm413774ワット発電中さん
2015/02/14(土) 23:44:45.22ID:6/aIRu8O414774ワット発電中さん
2015/02/15(日) 03:22:45.40ID:5N+tCfqq >ハードウェアのすごいところは、ビット入れ替えはゲート数がゼロ。
そうとも限らない
そうとも限らない
415774ワット発電中さん
2015/02/15(日) 11:42:04.22ID:9/dk5YAi verilogで書いた回路をFPGAに実装する場合にテストベンチに当たるものってある?
416774ワット発電中さん
2015/02/15(日) 14:32:13.59ID:lCMoP7H9 デジタルはすべてソフト
417774ワット発電中さん
2015/02/15(日) 15:21:58.99ID:skpTyS9e アナログもソフトだよ。
418774ワット発電中さん
2015/02/16(月) 00:55:36.07ID:5K8pOZt+ assign a = { N[0],N[1],N[2],N[3],N[4],N[5],N[6],N[7] };
って、VHDLでは、なんと書くのでしょうか?
というか、VHDLでも連接ってできるのでしょうか?
って、VHDLでは、なんと書くのでしょうか?
というか、VHDLでも連接ってできるのでしょうか?
419774ワット発電中さん
2015/02/16(月) 01:14:04.32ID:ev3QAK1E Cでのビットの入れ替えは16ビット程度ならテーブルで一発だけどね
420774ワット発電中さん
2015/02/16(月) 06:41:25.38ID:BSM5hs8d >>418
N(0)&N(1)&〜&N(7)
N(0)&N(1)&〜&N(7)
421774ワット発電中さん
2015/02/16(月) 09:57:50.06ID:J7NaP67K VBAの文字列の連結みたいだな
422774ワット発電中さん
2015/02/18(水) 03:27:44.14ID:A5s+y/zG 教えてください。
Xilinxのスパルタン6をVerilogで書いていますが、回路がちょっと多くなるとスグに
「・・・・Dedicated route・・・・」というメッセージが出ます。
クロック信号を、いきなり外に出せるわけないじゃん とか
バンクをまたいでいるので、タイミングの保証はできませんよ。
だから上の呪文をucfに追加してね、という意味かと思います。
このwarningをでないように組むには、どのような点に注意すれば良いのでしょうか?
そもそも このメッセージがでる用では、まだまだプロとは言えない、ということでしょうか?
Xilinxのスパルタン6をVerilogで書いていますが、回路がちょっと多くなるとスグに
「・・・・Dedicated route・・・・」というメッセージが出ます。
クロック信号を、いきなり外に出せるわけないじゃん とか
バンクをまたいでいるので、タイミングの保証はできませんよ。
だから上の呪文をucfに追加してね、という意味かと思います。
このwarningをでないように組むには、どのような点に注意すれば良いのでしょうか?
そもそも このメッセージがでる用では、まだまだプロとは言えない、ということでしょうか?
423774ワット発電中さん
2015/02/18(水) 06:39:23.43ID:S2qvRNa3 事実をそのまま書いてもらわないと余計にわけわからない
424774ワット発電中さん
2015/02/18(水) 12:02:25.26ID: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
誰もが最初に通る道だ
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.34ID:f8HfTN0q ISE Web packはWin8に対応まーだじかんかかりそうですかねぇ
426774ワット発電中さん
2015/02/20(金) 21:25:10.26ID:XKzIXYX7 ISEくらい自分でWin8で使えるようにしろよ
もうメインストリームはVivadoに移行してんだから
もうメインストリームはVivadoに移行してんだから
427774ワット発電中さん
2015/02/20(金) 22:02:46.36ID:OGEoxal/ Vivado PlanAheadって、起動にめちゃくちゃ時間がかかりません?
428774ワット発電中さん
2015/02/21(土) 19:08:49.11ID:ApPmf7hA 痛いのは最初だけだって
すぐに気持ちよくなるから
すぐに気持ちよくなるから
429774ワット発電中さん
2015/03/01(日) 02:37:00.67ID:oV7uTKnc マイコンやって来た人にFPGAを説明するのって、とても難しいね。
同時に、一斉に、バラバラに、全速力で動くのが、わからないらしい。
同時に、一斉に、バラバラに、全速力で動くのが、わからないらしい。
430774ワット発電中さん
2015/03/01(日) 03:01:53.72ID:rhXFR2oe431774ワット発電中さん
2015/03/01(日) 05:54:03.76ID:EwyBnm4i ソフト屋にとって同期という概念はない。
概してソフト屋は言葉をハード屋から盗んでくるらしく
「同期」という言葉自体はある。同期・非同期呼出しとか。
でもそれはハードの言う概念とは全く違うんだよなぁ。
概してソフト屋は言葉をハード屋から盗んでくるらしく
「同期」という言葉自体はある。同期・非同期呼出しとか。
でもそれはハードの言う概念とは全く違うんだよなぁ。
432774ワット発電中さん
2015/03/01(日) 10:05:46.66ID:oV7uTKnc 僕らも便利だから「変数」と言う言葉を使ってしまうけど、実体はD-FFであり、
D端子が入力でQが出力で・・・と思うけど、彼らにとって「変数」とは、
数値記憶という考え方でしかない様子。
reg wire と説明すると、wireって何? と来る。
D端子が入力でQが出力で・・・と思うけど、彼らにとって「変数」とは、
数値記憶という考え方でしかない様子。
reg wire と説明すると、wireって何? と来る。
433774ワット発電中さん
2015/03/01(日) 10:47:47.11ID:oBL6vBXC434774ワット発電中さん
2015/03/04(水) 13:02:38.07ID:R6x/MPNl435774ワット発電中さん
2015/03/04(水) 14:53:16.24ID:Y8AtL0Wb always で組み合わせ回路作るとき。
センシティブリストを間違えてラッチができるとかもあるよね。
センシティブリストを間違えてラッチができるとかもあるよね。
436774ワット発電中さん
2015/03/18(水) 16:32:48.35ID:diGuPLNB Apple Japan合同会社の求人概要 -IC検証エンジニア-
http://next.rikunabi.com/company/cmi0239655055/nx1_rq0011827045/?fr=cp_s01810&list_disp_no=3
仕事の内容
IC検証エンジニアを担当して頂きます。
対象となる方
8年以上のSystem Verilogとその他の検証言語に関する経験をお持ちの方
http://next.rikunabi.com/company/cmi0239655055/nx1_rq0011827045/?fr=cp_s01810&list_disp_no=3
仕事の内容
IC検証エンジニアを担当して頂きます。
対象となる方
8年以上のSystem Verilogとその他の検証言語に関する経験をお持ちの方
437774ワット発電中さん
2015/03/18(水) 23:08:20.31ID:pNrAE7JD こんな所で人探しですか?
438774ワット発電中さん
2015/03/20(金) 09:38:31.17ID:hRooBFQA 本職さんはここを覗いてる暇なんぞないと思うぞ。
特にアナログ系なんぞ。
ルネとかが放出した人材でもあたってみれば?
特にアナログ系なんぞ。
ルネとかが放出した人材でもあたってみれば?
439774ワット発電中さん
2015/03/20(金) 12:50:37.09ID:9yT/HZzX 2ちゃんが、まともな掲示板だと思うようなおめでたい頭しているんだろうなぁ。
ここに書かれてることは便所の落書きと一緒だよ
ここに書かれてることは便所の落書きと一緒だよ
440774ワット発電中さん
2015/03/22(日) 07:17:42.24ID:80YU9/mM 僕は、そうは思わない。
有用なことも書いてある。玉石混淆。
有用なことも書いてある。玉石混淆。
441感電しょぼーん ◆N2/QcFjPdE
2015/03/22(日) 17:14:51.88ID:zJpW2wgT442774ワット発電中さん
2015/03/23(月) 11:53:29.56ID:lXBzJ3SU 昔、便所の落書きに書いてあった電話番号に電話してみたのはオレだけじゃないはず。
443774ワット発電中さん
2015/03/27(金) 11:36:34.45ID:MXXkLRvS 昔、便所の落書きに書いてあった。
正面に「右を見ろ」
右の面に「左を見ろ」
左の面に「後ろを見ろ」
後ろの面に「キョロキョロするな」
正面に「右を見ろ」
右の面に「左を見ろ」
左の面に「後ろを見ろ」
後ろの面に「キョロキョロするな」
444774ワット発電中さん
2015/03/28(土) 11:13:34.66ID:28ckET/Q FPGAを使って、FIRのデジタルフィルタを試したいですが、係数を出してくれるフリーのソフトはないでしょうか?
マトラボは持っていません
マトラボは持っていません
446774ワット発電中さん
2015/04/04(土) 19:46:06.03ID:+A/reOYk マイコン屋はタイマーとかDMAとかそれぞれ全力で動いてるからわかりそうな気がするけどどうなんだろうな
とりあえず全レジスタの動作を1個のalwaysで書こうとすんのは勘弁してほしい
とりあえず全レジスタの動作を1個のalwaysで書こうとすんのは勘弁してほしい
447774ワット発電中さん
2015/04/05(日) 02:37:49.23ID:MToPg2av 全部を1つのalwaysはやらないけど、SPIとか、関連するregは1つのalwaysで書くよ。
「1つのalwaysにはFF1個だけだ」という人がいたけど、見にくくてしょうがない。
あと、条件に演算記号を書かない人がいるけど、どうなの?
if( Push_SW ) begin...じゃなくて
if( Push_SW==1'b1 ) begin...と書いて欲しいわ。
「1つのalwaysにはFF1個だけだ」という人がいたけど、見にくくてしょうがない。
あと、条件に演算記号を書かない人がいるけど、どうなの?
if( Push_SW ) begin...じゃなくて
if( Push_SW==1'b1 ) begin...と書いて欲しいわ。
448774ワット発電中さん
2015/04/05(日) 10:05:46.13ID:WNNL5fsq if (Push_SW==1'b1) beginと書いて欲しいわ。
449774ワット発電中さん
2015/04/05(日) 10:08:50.84ID:lCf4doBs えっ!?、スペースもだめなの?
450774ワット発電中さん
2015/04/05(日) 10:36:53.97ID:cNJwr+1N if文でbegin end書かない奴が一番許せない
451774ワット発電中さん
2015/04/05(日) 12:54:57.33ID:gCN1lI7p if (Push_SW != 0) begin ... だろ?
452774ワット発電中さん
2015/04/05(日) 13:55:02.42ID:5HM+Dx7p if(1'b1==Push_SW) begin じゃないか?
453774ワット発電中さん
2015/04/05(日) 14:22:28.15ID:Yl3d4OHM スイッチは基本、プルアップだからONだと1'b0だな・・・
454774ワット発電中さん
2015/04/05(日) 15:45:20.08ID:zNwCUsLy defineして使え
455774ワット発電中さん
2015/04/05(日) 20:46:38.33ID:bbj5Ob7h 1000行越えるようなcaseを書かなければそれでいいよ。。。
456774ワット発電中さん
2015/04/05(日) 23:55:15.13ID:5HM+Dx7p verilogでROMを推論させようとするとcase文になるお
この前SystemVerilogなら配列で推論してくれると思って書いたら推論してくれなくてイラッとしたよ。
この前SystemVerilogなら配列で推論してくれると思って書いたら推論してくれなくてイラッとしたよ。
457774ワット発電中さん
2015/04/06(月) 04:20:18.70ID:0TjJAY3e 末尾の「お」の方がイラッと来たよ
458774ワット発電中さん
2015/04/06(月) 07:56:13.93ID:qcFKF1Cq SV じゃなくても配列からROM作ってくれるし。
459774ワット発電中さん
2015/04/06(月) 11:34:28.81ID:OpBXqrM1 クロックに同期させなかったとか
460774ワット発電中さん
2015/04/09(木) 10:13:54.77ID:ft5YhOoe461774ワット発電中さん
2015/04/22(水) 15:10:55.09ID:Iv44SatM 中小ってマジで仕様書書かずに作りはじめて物が出来てから手直し繰り返して仕上げるんだな
いままでと真逆のやり方すぎてついていけない・・・
いままでと真逆のやり方すぎてついていけない・・・
462774ワット発電中さん
2015/04/22(水) 16:41:53.01ID:hgHIdL2o >461
そうなんです。では、その仕様書は最後に出来上がった物とどの位合っているの?
最初から完璧な仕様書書ける位なら、とんでもなく楽な仕事だよ。
多分、過去に非常に類似した仕事をしている。
書かないことが悪いのではなく、書けるほど目標が見えていない。
最終的には報酬との相談になる。
ユーザー側からみたら”ボッタクリだ”と思うかもしれないが、
では”あなたの希望を完璧な文書で渡してください”と言われてどこまで詳細に仕様を決定できるの?
出来合いの製品や他社製品の似たような製品で良ければそれでもいいが、発注者と受注者の間で
認識の差がない開発案件はまず無いよ。
そこをどうやって調整していくかが中小企業とユーザーの努力すべき所です。
多分、大手に依頼しても相手にされない規模の案件でしょ。
そうなんです。では、その仕様書は最後に出来上がった物とどの位合っているの?
最初から完璧な仕様書書ける位なら、とんでもなく楽な仕事だよ。
多分、過去に非常に類似した仕事をしている。
書かないことが悪いのではなく、書けるほど目標が見えていない。
最終的には報酬との相談になる。
ユーザー側からみたら”ボッタクリだ”と思うかもしれないが、
では”あなたの希望を完璧な文書で渡してください”と言われてどこまで詳細に仕様を決定できるの?
出来合いの製品や他社製品の似たような製品で良ければそれでもいいが、発注者と受注者の間で
認識の差がない開発案件はまず無いよ。
そこをどうやって調整していくかが中小企業とユーザーの努力すべき所です。
多分、大手に依頼しても相手にされない規模の案件でしょ。
463774ワット発電中さん
2015/04/22(水) 20:35:12.78ID:vDNXh308 >>462
中小企業がgdgdだということは理解した。
中小企業がgdgdだということは理解した。
464774ワット発電中さん
2015/04/23(木) 23:57:32.13ID:VyS3ZMgQ 目標が見えてないってのがズバリだな
場当たり的で目の前の一時間だけが最優先で後行程に手間押し付けてる
一事が万事そんな感じ
勘で仕事してるんじゃなく運で仕事してる
場当たり的で目の前の一時間だけが最優先で後行程に手間押し付けてる
一事が万事そんな感じ
勘で仕事してるんじゃなく運で仕事してる
465774ワット発電中さん
2015/04/24(金) 09:41:11.43ID:YqO49T7f ふぅーん
466774ワット発電中さん
2015/04/24(金) 12:11:24.63ID:hXaOPl2e ほぉ〜
467774ワット発電中さん
2015/04/24(金) 16:35:57.23ID:BslYuWs7 あは〜ん
468774ワット発電中さん
2015/04/24(金) 20:03:19.93ID:YqO49T7f ----------------------------------------------------------------------------
◆間違いだらけの設計レビュー [演習付き実践セミナー]
http://coin.nikkeibp.co.jp/coin/itpro-s/seminar/sys/150526/?10mlmg/
システム構築の生産性や品質を高めるには、仕様書や設計書といったドキュメント
をしっかりとレビューすることが不可欠ですが、実際には、レビューアーがドキュメ
ント作成者の人格攻撃をしてしまったりと、多くの現場が間違ったレビューに陥って
います。
◆間違いだらけの設計レビュー [演習付き実践セミナー]
http://coin.nikkeibp.co.jp/coin/itpro-s/seminar/sys/150526/?10mlmg/
システム構築の生産性や品質を高めるには、仕様書や設計書といったドキュメント
をしっかりとレビューすることが不可欠ですが、実際には、レビューアーがドキュメ
ント作成者の人格攻撃をしてしまったりと、多くの現場が間違ったレビューに陥って
います。
469774ワット発電中さん
2015/04/26(日) 18:14:39.84ID:eFq/sM0M FPGA仕事あります?
みなさんやっぱりマイコン屋兼業ですか?
みなさんやっぱりマイコン屋兼業ですか?
470774ワット発電中さん
2015/04/27(月) 01:48:02.73ID:+qTlpnJH FPGAだけの仕事って、無いでしょう。
マイコン出来ーの、FPGA出来ーの、回路設計出来ーの、デジタル、アナログ回路設計出来ーの、
オールマイティにできることが重要。
マイコン出来ーの、FPGA出来ーの、回路設計出来ーの、デジタル、アナログ回路設計出来ーの、
オールマイティにできることが重要。
471774ワット発電中さん
2015/04/27(月) 06:56:44.40ID:bfKfWz8v そんな奴は、まずいない。
人材を育てることが重要。
人材を育てることが重要。
472774ワット発電中さん
2015/04/27(月) 07:14:38.05ID:+A1M7Wzf 俺はできる
473774ワット発電中さん
2015/04/27(月) 09:11:40.71ID:j1phWw85 俺も、一通りできる
474774ワット発電中さん
2015/04/27(月) 09:26:20.47ID:wbTPo3Sb >実際には、レビューアーがドキュメント作成者の人格攻撃をしてしまったりと、
世の中女性化していますからな。
個人的な好き嫌いが全てに影響してしまったりする
じょせーのしゃかいしんしゅつーーー
とやらで、女が増えるとそういう問題も増えるだろうね
世の中女性化していますからな。
個人的な好き嫌いが全てに影響してしまったりする
じょせーのしゃかいしんしゅつーーー
とやらで、女が増えるとそういう問題も増えるだろうね
475774ワット発電中さん
2015/04/27(月) 13:31:59.70ID:qp9o6QW9 人格攻撃は女のせいだったのか(驚愕)
476774ワット発電中さん
2015/04/27(月) 18:53:44.30ID:ZDJFZWc5 ひゃー
477774ワット発電中さん
2015/04/27(月) 21:27:57.02ID:wbTPo3Sb478774ワット発電中さん
2015/04/28(火) 04:38:28.77ID:e3rfdhsd479774ワット発電中さん
2015/04/28(火) 21:43:55.97ID:yiSymS0s >>478
脳味噌の構造上そういう傾向が出やすいみたいだよ。
脳味噌の構造上そういう傾向が出やすいみたいだよ。
480774ワット発電中さん
2015/04/29(水) 14:41:11.68ID:WTCCHXwn 論理記述だけでなく、一般的に、仕様を書いてその通り実装できる程度の仕事の場合、商品企画の出来がかなりいい。
実際には実現可能性と要求仕様の瀬戸際を攻めることになる。
ま、最終的に、モノと仕様が合ってればいいんじゃない。
青筋立てて怒って他人のせいにする輩はどこにでもいるけど。
実際には実現可能性と要求仕様の瀬戸際を攻めることになる。
ま、最終的に、モノと仕様が合ってればいいんじゃない。
青筋立てて怒って他人のせいにする輩はどこにでもいるけど。
481774ワット発電中さん
2015/04/29(水) 14:49:37.33ID:ZHzrOVsj はじめてのHDLはVerilogではじめまーす
482774ワット発電中さん
2015/04/29(水) 15:32:38.49ID:enxmKBMR >>480
つまり、仕様書を書いている段階で「出来ること」と「出来るかどうか」という壁が分かっている組織は成功しやすい。
問題は中小企業が出す委託ではそれを望めない現実がある。
要求仕様は高いが当人はそれを理解できず、見積金額は過去の実績を超えることを許さない。
正直、完全な新規では二の足を踏む。
つまり、仕様書を書いている段階で「出来ること」と「出来るかどうか」という壁が分かっている組織は成功しやすい。
問題は中小企業が出す委託ではそれを望めない現実がある。
要求仕様は高いが当人はそれを理解できず、見積金額は過去の実績を超えることを許さない。
正直、完全な新規では二の足を踏む。
483arisa ◆QaHT6HayjI
2015/05/01(金) 13:53:36.62ID:5QAKDipo 初めてはVHDLの方がいい
484774ワット発電中さん
2015/05/01(金) 14:15:55.73ID:++NVgAkl485774ワット発電中さん
2015/05/01(金) 14:25:40.49ID:+caATM85 >>483
えっΣ(´∀`;)
えっΣ(´∀`;)
486774ワット発電中さん
2015/05/01(金) 14:58:48.63ID:eJkGUhgD Altera使うならSystemVerilogがいい
487arisa ◆QaHT6HayjI
2015/05/01(金) 18:17:41.43ID:uF6UDALr 両方やればわかる
488774ワット発電中さん
2015/05/01(金) 18:23:07.77ID:+caATM85 今時のFPGA開発環境ってVHDLとVerilog両対応してるのがデフォだと思ってました
489774ワット発電中さん
2015/05/01(金) 23:27:45.77ID:6Q8Rv4/O 俺の都合で言語は決められないからどちらも使うけど、
VHDLのほうが言語として好きだな。
VHDLのほうが言語として好きだな。
490774ワット発電中さん
2015/05/01(金) 23:30:22.37ID:/3eGOnpk それは厳密性の観点で?
491774ワット発電中さん
2015/05/02(土) 17:59:39.74ID:N9ddX+7j VHDL習ってからVerilog覚えたけどVerilogの方が好きだったわ
VHDLはなんか記述が面倒というかなんというか使いにくいイメージだった
VHDLはなんか記述が面倒というかなんというか使いにくいイメージだった
492774ワット発電中さん
2015/05/02(土) 18:08:31.65ID:dNirQRnI エラーやワーニングを、たくさん出してくれるので
VerilogよりVHDLをやっておけば良かったかな、と思った時期もあった。
けど今は、Verilogでやってる。
文字タイプの数が少ないし、好き。
data_bus[7:3] <= { d6, d[2:0], d4 }; とかの連接は、しびれる。
VHDLではできない表記かな。
VerilogよりVHDLをやっておけば良かったかな、と思った時期もあった。
けど今は、Verilogでやってる。
文字タイプの数が少ないし、好き。
data_bus[7:3] <= { d6, d[2:0], d4 }; とかの連接は、しびれる。
VHDLではできない表記かな。
493arisa ◆QaHT6HayjI
2015/05/02(土) 20:52:25.53ID:tW+r8uHz ? 全部 downto 入れれば出来るけど?
494774ワット発電中さん
2015/05/03(日) 00:17:27.99ID:4TpcG5kk >>492
data_bus(7 downto 3) <= (d(6) & d(2 downto 0) & d(4));
記述数は確かに多い。
Verilogは左右のビット数があってなくてもエラーが出ない。
VHDLはエラーになる。
unsignedとsignedの掛け算やるとなぜか結果がunsignedになるVerilogの
糞仕様が許せないので俺はVHDL使ってる。
それとVerilogで書かれたコード見てると可読性の悪いきたない書き方する
コードばかりだからverilogはあまり好きになれん。
最初に覚えたのはverilogだったがw
確かケイデンスのセミナーで95年当時小林優氏がやってたセミナーだったと思う。
data_bus(7 downto 3) <= (d(6) & d(2 downto 0) & d(4));
記述数は確かに多い。
Verilogは左右のビット数があってなくてもエラーが出ない。
VHDLはエラーになる。
unsignedとsignedの掛け算やるとなぜか結果がunsignedになるVerilogの
糞仕様が許せないので俺はVHDL使ってる。
それとVerilogで書かれたコード見てると可読性の悪いきたない書き方する
コードばかりだからverilogはあまり好きになれん。
最初に覚えたのはverilogだったがw
確かケイデンスのセミナーで95年当時小林優氏がやってたセミナーだったと思う。
495774ワット発電中さん
2015/05/03(日) 03:53:37.27ID:foeCKpNq 「:」の1文字で表せるものを、なんで downto とか書くのですか?
また、&でつなげるのはVBAと似ていますね。
6bit目を示すカッコが ( ) なんですね。計算式の優先順位の ( ) と混乱しませんか?
また、&でつなげるのはVBAと似ていますね。
6bit目を示すカッコが ( ) なんですね。計算式の優先順位の ( ) と混乱しませんか?
496arisa ◆QaHT6HayjI
2015/05/03(日) 10:29:56.71ID:iYrBEYUe verilog2001だかなんだかで $signed だかなんかがあった希ガス
497774ワット発電中さん
2015/05/04(月) 07:46:59.08ID:SGZAbOa1 乗算の出力信号定義がsignedじゃないからunsignedになってるんじゃないの?
498774ワット発電中さん
2015/05/04(月) 10:13:50.66ID:l7rv7ssT 乗算器が、アンサインド×アンサインドしかできないので、
アンサインド × アンサインド = アンサインド
アンサインド × サインド = アンサインド
サインド × アンサインド = アンサインド
サインド × サインド = サインド
ということでしょうか?
アンサインド × アンサインド = アンサインド
アンサインド × サインド = アンサインド
サインド × アンサインド = アンサインド
サインド × サインド = サインド
ということでしょうか?
499774ワット発電中さん
2015/05/04(月) 13:42:33.18ID:aPg4LoVn vhdlが好きなのはaccess recorde unitsとか記述が豊富で、
attributesも豊富で色んな条件記述ができるところかな。
attributesも豊富で色んな条件記述ができるところかな。
500774ワット発電中さん
2015/05/04(月) 13:57:55.08ID:7OD5Qxys じゃあなんでVerilogなんか作ったのよぉ〜
新しいものを生み出す人を卑下するつもりはないけど、自己満と意地で
分裂するあるあるはいい加減やめて欲しいわ
優秀なんだから心の広さも優秀であってほしい
新しいものを生み出す人を卑下するつもりはないけど、自己満と意地で
分裂するあるあるはいい加減やめて欲しいわ
優秀なんだから心の広さも優秀であってほしい
501774ワット発電中さん
2015/05/04(月) 16:09:03.68ID:0zRa8i5/ 結局自分が最初に習得したHDLを推すわけだよ
502774ワット発電中さん
2015/05/04(月) 16:12:16.04ID:A/R6ypsE なんとかアーキテクチャー is とか
downto とか
妙に文章が長いので、Verilogで始めた。
やっぱりVerilogのほうがいいよね。
downto とか
妙に文章が長いので、Verilogで始めた。
やっぱりVerilogのほうがいいよね。
503774ワット発電中さん
2015/05/05(火) 02:02:12.47ID:3x5kt68f 一つのprocess文で、機能を全部書こうとする人いるけど、どうなの?
504774ワット発電中さん
2015/05/05(火) 03:38:32.43ID:wkkr+CzZ ステートマシンでしっかり状態が遷移するなら、いいと思う。
あとはツールが頑張れるかどうかです。
あとはツールが頑張れるかどうかです。
505774ワット発電中さん
2015/05/05(火) 08:02:48.53ID:q5SetmJH 見た目、書く量が少ないからと言ってVerilogを勉強し始めて
思わぬところでハマる人はよく見る
思わぬところでハマる人はよく見る
506774ワット発電中さん
2015/05/07(木) 12:37:54.33ID:dM1398bl507774ワット発電中さん
2015/05/07(木) 12:38:56.92ID:dM1398bl あ
>>503ね
>>503ね
508774ワット発電中さん
2015/05/09(土) 20:52:43.29ID:67hyxXC+509774ワット発電中さん
2015/05/10(日) 04:05:13.87ID:2pNmAPxs510774ワット発電中さん
2015/05/10(日) 10:57:22.66ID:dC34s4oK 前の会社で紙に回路図書いてからHDL書いてる人がいて悲惨だった。
511774ワット発電中さん
2015/05/10(日) 13:11:48.74ID:LFPgwbad >>510
AND ORの詳細までは書かないけど、FPGA開発ツールの回路図エディタで
機能ブロックとレジスタ、信号の内部構成は必ず書いてる。
そうしないと後で他人が見たとき効率的にデバッグできないし、
1年以上たってから改修するときとか、回路図みて
必要なコードだけ読み返せばいいので効率的だ。
それと回路の無駄な部分が見えてくるのでコンパクト化しやすい。
まさに「急がばまわれ」
AND ORの詳細までは書かないけど、FPGA開発ツールの回路図エディタで
機能ブロックとレジスタ、信号の内部構成は必ず書いてる。
そうしないと後で他人が見たとき効率的にデバッグできないし、
1年以上たってから改修するときとか、回路図みて
必要なコードだけ読み返せばいいので効率的だ。
それと回路の無駄な部分が見えてくるのでコンパクト化しやすい。
まさに「急がばまわれ」
512774ワット発電中さん
2015/05/10(日) 13:48:02.73ID:dC34s4oK513774ワット発電中さん
2015/05/10(日) 14:19:59.89ID:LFPgwbad 回路図ではない、機能構成図みたいなもの。
回路図だとHDLシミュレータに通せないだろう?
回路図だとHDLシミュレータに通せないだろう?
514774ワット発電中さん
2015/05/10(日) 16:04:36.86ID:LY14BFxW 大体ドキュメントがない。コメントがあるそうだが?
515774ワット発電中さん
2015/05/10(日) 16:21:11.14ID:Jl/FwsKg516774ワット発電中さん
2015/05/10(日) 21:11:26.83ID:LFPgwbad edif読めるテストベンチがHDLで書ける
フリーのHDLシミュレーターなんてあるの?
フリーのHDLシミュレーターなんてあるの?
517774ワット発電中さん
2015/05/10(日) 22:43:00.76ID:Jl/FwsKg518774ワット発電中さん
2015/05/21(木) 22:34:37.95ID:YEvnjBpL 思い通りに行かなくてうんこもれそう
519774ワット発電中さん
2015/05/22(金) 09:21:03.52ID:ZHtE6keH520774ワット発電中さん
2015/06/04(木) 10:05:38.93ID:Nk+jhl/S VHDLでnumeric_stdを使用しています。
real型をstd_logic_vectorに変換するにはどう記述すれば良いでしょうか?
ModelSimでreal型数値を与えてシミュレーションしたいと考えています。
回路内は浮動小数点をstd_logic_vectorとして扱っており演算処理するつもりです。
逆は↓で良いようですが、、、
to_real(to_integer(unsigned(slv)));
real型をstd_logic_vectorに変換するにはどう記述すれば良いでしょうか?
ModelSimでreal型数値を与えてシミュレーションしたいと考えています。
回路内は浮動小数点をstd_logic_vectorとして扱っており演算処理するつもりです。
逆は↓で良いようですが、、、
to_real(to_integer(unsigned(slv)));
521520
2015/06/04(木) 10:25:31.02ID:Nk+jhl/S ↓でコンパイル通りました。
std_logic_vector(to_signed(integer(real(i)),32));
お騒がせしました。
std_logic_vector(to_signed(integer(real(i)),32));
お騒がせしました。
522774ワット発電中さん
2015/06/05(金) 12:38:40.36ID:wif/LF4P FPGAでは固定少数しか使ったことないや
523774ワット発電中さん
2015/06/08(月) 18:28:09.51ID:WYkKIbsI VHDLで、トップレベルエンティティのportを、定数によって追加したり無効にする記述
(#ifdefのように)があったら教えて下さい。
シミュレーションの時のみPLLを無効にし、portを追加してテストベンチからクロックを
入れてやりたいのですがうまくいかず、今はコメントアウトで切り替えています。
(#ifdefのように)があったら教えて下さい。
シミュレーションの時のみPLLを無効にし、portを追加してテストベンチからクロックを
入れてやりたいのですがうまくいかず、今はコメントアウトで切り替えています。
524774ワット発電中さん
2015/06/08(月) 19:09:37.18ID:DFoYmhqc >>523
cpp通すってのはダメ?
cpp通すってのはダメ?
525774ワット発電中さん
2015/06/08(月) 21:52:41.69ID:UlJ30OYs >>523
if generateは?
if generateは?
526774ワット発電中さん
2015/06/09(火) 15:12:17.13ID:y5oRCkLN527774ワット発電中さん
2015/06/10(水) 00:52:26.38ID:Vak2xf0o >>523
VHDLではportの追加はできないのでport内各入力信号にデフォルト値を定義しておき、
上の階層から呼び出すときにcomponent宣言部で必要なport信号だけ呼び出せば?
(入力ポートを省略するとデフォルト値が入力されたものとして機能することを応用する)
VHDLではportの追加はできないのでport内各入力信号にデフォルト値を定義しておき、
上の階層から呼び出すときにcomponent宣言部で必要なport信号だけ呼び出せば?
(入力ポートを省略するとデフォルト値が入力されたものとして機能することを応用する)
528774ワット発電中さん
2015/06/10(水) 20:20:22.77ID:8C84KzyO 俺がやっている手法
・PLL.vhdコピー 名前をTEST_PLL.vhdとでもしておく
・端子以外の中身を削除 ※エンティティ名は変更しない
・中身をテスト用のCLK出す記述にする
・PLL.vhdの代わりにTEST_PLL.vhdをコンパイルする
・エンティティ名が一緒なのでPLL.vhdの代わりにTEST_PLL.vhdでSimが走る
ソースをいじらなくて済むし、Sim前に差し替えるものだけコンパイルすればいいので面倒が少ない
・PLL.vhdコピー 名前をTEST_PLL.vhdとでもしておく
・端子以外の中身を削除 ※エンティティ名は変更しない
・中身をテスト用のCLK出す記述にする
・PLL.vhdの代わりにTEST_PLL.vhdをコンパイルする
・エンティティ名が一緒なのでPLL.vhdの代わりにTEST_PLL.vhdでSimが走る
ソースをいじらなくて済むし、Sim前に差し替えるものだけコンパイルすればいいので面倒が少ない
529774ワット発電中さん
2015/06/15(月) 01:18:44.12ID:lsgSbJjN どこで質問していいかわからなかったので、ここで質問します。
宜しくお願いします。
Spartan6を使って、Verilogを勉強しています。
今はSPIを使って、A/DやD/Aを動かしています。
なんとなく動いているのですが、Warningが100個とか出て、困っています。
SPIでICの内部を設定しますが、24bitとかのレジスタに固定値を書くので、
「このbitが、いつもゼロじゃん」のWarningが大量に出ます。それがいくつかあって
100個以上もWarningが出ます。多すぎて気持ちが悪いので、
これを出ないようにしたいのですが、どのようにしたら良いでしょうか?
固定値なので、ソースの中に即値を埋め込めばWarningは減ると思いますが、
それではHDLで書くうまみがないと思います。
このような場合、みなさんは、どのようにしているのでしょうか?
宜しく教えて下さい。
宜しくお願いします。
Spartan6を使って、Verilogを勉強しています。
今はSPIを使って、A/DやD/Aを動かしています。
なんとなく動いているのですが、Warningが100個とか出て、困っています。
SPIでICの内部を設定しますが、24bitとかのレジスタに固定値を書くので、
「このbitが、いつもゼロじゃん」のWarningが大量に出ます。それがいくつかあって
100個以上もWarningが出ます。多すぎて気持ちが悪いので、
これを出ないようにしたいのですが、どのようにしたら良いでしょうか?
固定値なので、ソースの中に即値を埋め込めばWarningは減ると思いますが、
それではHDLで書くうまみがないと思います。
このような場合、みなさんは、どのようにしているのでしょうか?
宜しく教えて下さい。
530774ワット発電中さん
2015/06/15(月) 09:45:14.08ID:0qyqa6/C 気にしない。
あるいはROMにする。
あるいはROMにする。
531774ワット発電中さん
2015/06/15(月) 11:33:59.00ID:lsgSbJjN ありがとうございます。
気にしないでOKなのでしょうか。
YouTubeでISEの画面を見ていると、緑色の丸いマークが綺麗に並ぶのに、
僕のものでは、黄色三角ばっかりなんです。
気にしないでOKなのでしょうか。
YouTubeでISEの画面を見ていると、緑色の丸いマークが綺麗に並ぶのに、
僕のものでは、黄色三角ばっかりなんです。
532774ワット発電中さん
2015/06/15(月) 12:26:01.32ID:ezhwOx8k うちもそういうのは気にしないかなあ
設計段階で極力そういうのないようにしてるけど、今後の拡張を見越して予備端子を持ってる時はどうしても出るし
業務でWarningなしで通ったことないよ
もちろんWarningは全部チェックしてるけど
設計段階で極力そういうのないようにしてるけど、今後の拡張を見越して予備端子を持ってる時はどうしても出るし
業務でWarningなしで通ったことないよ
もちろんWarningは全部チェックしてるけど
533774ワット発電中さん
2015/06/15(月) 12:35:26.79ID:0qyqa6/C 全部なくすのは難しいよね。
Warning 除けの記述ばかりになると何してるのか分からなくなるし。
少なくとも趣味なら気にしないかな。
Warning 除けの記述ばかりになると何してるのか分からなくなるし。
少なくとも趣味なら気にしないかな。
534774ワット発電中さん
2015/06/15(月) 14:15:58.11ID:m/gBV2xZ でも、ニコ動の、ネギ降りマスターのやつは、気持ちよく緑丸ばかりなんですが。
535774ワット発電中さん
2015/06/15(月) 20:03:53.22ID:YKOGcGgj >>529
ビット幅はParameter使って対応するのはダメなの?
ビット幅はParameter使って対応するのはダメなの?
536774ワット発電中さん
2015/06/15(月) 23:56:40.78ID:8HCRsuUn xのwarningは糞味噌ごちゃまぜだし、おめー(ip内部)の問題だろ、ってのが多い。
全部チェックしてる人はすごいと思うわ。
vivadoは少しましになったけども。
alteraもこんな感じ?
全部チェックしてる人はすごいと思うわ。
vivadoは少しましになったけども。
alteraもこんな感じ?
537774ワット発電中さん
2015/06/16(火) 01:28:55.04ID:J6Kohop9 >>534
ばか、おまえ、そこは動画用に一生懸命Warning消しに勤しんだに決まってんだろ
ばか、おまえ、そこは動画用に一生懸命Warning消しに勤しんだに決まってんだろ
538774ワット発電中さん
2015/06/16(火) 09:36:52.30ID:FqDakbch そのワーニングが無視してもいい内容だけど、無視できないワーニングが出たときに
気がつきにくくなるから、なるべくワーニングはとるようにしている。
リセット信号で反転でもしておくとか。消費リソース増えるだろうけど。
気がつきにくくなるから、なるべくワーニングはとるようにしている。
リセット信号で反転でもしておくとか。消費リソース増えるだろうけど。
539774ワット発電中さん
2015/06/16(火) 11:38:11.33ID:cLWAs7rU ああ、書いちゃったよ、
ワーニング
ワーニング
540774ワット発電中さん
2015/06/16(火) 15:37:47.92ID:sGfTj4p3 default nettype none
にしているとき、IP内部がwire宣言してないぞ!というワーニングも出る。
「そんなの、俺は知らないよ。XilinxのIPの話じゃんか」
ということで、また1つワーニングが増える。
にしているとき、IP内部がwire宣言してないぞ!というワーニングも出る。
「そんなの、俺は知らないよ。XilinxのIPの話じゃんか」
ということで、また1つワーニングが増える。
541774ワット発電中さん
2015/06/16(火) 22:44:21.50ID:hMw9KGmd アップルパイじゃなくアポーパイだ君が湧いてるな。
542774ワット発電中さん
2015/06/17(水) 03:38:41.48ID:WQsb6dSL ラジオじゃない! レイディオだ。
543774ワット発電中さん
2015/06/17(水) 05:48:47.39ID:taPPXoJr アッテネーダ
544774ワット発電中さん
2015/06/17(水) 09:10:14.33ID:9EsOpUSW 昨日も誰ともアッテネーダ?
545774ワット発電中さん
2015/06/17(水) 09:55:16.86ID:vta0o2ES シュミレーションも許容する派?
546774ワット発電中さん
2015/06/17(水) 11:01:48.20ID:/HEBrtGj いいにくいシュミュレーション ミ'ω ` ミ
547774ワット発電中さん
2015/06/17(水) 11:37:32.68ID:NUuJtrlu >>545
趣味でレーション食うミリオタだろ?
趣味でレーション食うミリオタだろ?
548774ワット発電中さん
2015/06/17(水) 13:13:11.29ID:7pxKS2f0 いいにくいシュミュレーション
549774ワット発電中さん
2015/06/17(水) 16:42:09.94ID:cv854e4S 横文字は許容する。国語ができないのは
アレなんだなと納得する。
アレなんだなと納得する。
550774ワット発電中さん
2015/06/22(月) 22:36:13.61ID:LAEL9iZl cpuからアドレスデータバスなど使ってfpgaのレジスタに機能情報をライトするが
多次元配列を使ってるからスライスを消費してしまう
本当はRAMを使いたいが、RAMだとFPGA側からアドレスカウンタとかFIFO使ってアクセスせにゃならん
CPUのコントローラー部分が一番消費するがいい方法はないだろうか
多次元配列を使ってるからスライスを消費してしまう
本当はRAMを使いたいが、RAMだとFPGA側からアドレスカウンタとかFIFO使ってアクセスせにゃならん
CPUのコントローラー部分が一番消費するがいい方法はないだろうか
551774ワット発電中さん
2015/06/23(火) 00:10:02.26ID:ZYON8zxi ライトはましじゃね
リードはアレだが
リードはアレだが
552774ワット発電中さん
2015/07/07(火) 20:40:11.46ID:MqT80GyD そろそろVivadoでHLSやってみっかな。
553774ワット発電中さん
2015/07/08(水) 16:25:56.54ID:Eu/eSZdc 箱根山日経平均Appleギリシャ神田愛花なでしこ
その日の夕方、部屋で布団に入りうつ伏せになってたら、父(父=嶋●慎太郎)が来て
後ろから覆いかぶさり、胸を触りもみ。「舐めていいか?」と聴かれ結子は舐められ、次はクリを触られ
結子(ザキシマ結子=元稲城市立向陽台小学校評判Y子)は「気持ちいい」と言ってしまい父は「そうか、気持ちいいのかぁ」
と嬉しそうに沢山触っていました。兄(嶋●亮介(東京電機大学中学校評判万引少年)は小人病を苦に自殺。
ザキシマ結子一家の顔がGoogle検索『稲城市立向陽台小学校評判Y子』
その日の夕方、部屋で布団に入りうつ伏せになってたら、父(父=嶋●慎太郎)が来て
後ろから覆いかぶさり、胸を触りもみ。「舐めていいか?」と聴かれ結子は舐められ、次はクリを触られ
結子(ザキシマ結子=元稲城市立向陽台小学校評判Y子)は「気持ちいい」と言ってしまい父は「そうか、気持ちいいのかぁ」
と嬉しそうに沢山触っていました。兄(嶋●亮介(東京電機大学中学校評判万引少年)は小人病を苦に自殺。
ザキシマ結子一家の顔がGoogle検索『稲城市立向陽台小学校評判Y子』
554774ワット発電中さん
2015/07/09(木) 22:55:38.70ID:McDsP4yu Vivadoはシミュレーションでアナログ表示あるのにISEではない
VHDLだからうんこ
VHDLだからうんこ
555774ワット発電中さん
2015/08/08(土) 22:03:27.60ID:H0J5FdQb しばらく書き込みが途切れているようなので、
ネタとして頭の体操w 知っている人も多いかな?
---
wire [15:0] X , P , Q , R , S ;
とする時、以下の乗算を行う回路を16bitのCarry In付き加算器で実現して下さい。
それぞれ何個必要になるでしょうか?
なお、インバータは任意に使用してもらって可です。
また演算のオーバーフローに対するケアは不要(頭の体操ということで考え方重視)。
(1) P = X * 80 ;
(2) Q = X * 60 ;
(3) R = X * 81 ;
(4) S = X * 75 ;
※(1)〜(4)はそれぞれ独立の(個別の)問題です。
ですので、(1)の結果のPを(3)の演算に利用するのはナシ、ね。
ネタとして頭の体操w 知っている人も多いかな?
---
wire [15:0] X , P , Q , R , S ;
とする時、以下の乗算を行う回路を16bitのCarry In付き加算器で実現して下さい。
それぞれ何個必要になるでしょうか?
なお、インバータは任意に使用してもらって可です。
また演算のオーバーフローに対するケアは不要(頭の体操ということで考え方重視)。
(1) P = X * 80 ;
(2) Q = X * 60 ;
(3) R = X * 81 ;
(4) S = X * 75 ;
※(1)〜(4)はそれぞれ独立の(個別の)問題です。
ですので、(1)の結果のPを(3)の演算に利用するのはナシ、ね。
556774ワット発電中さん
2015/08/09(日) 10:58:46.68ID:Y38tbvw/557774ワット発電中さん
2015/08/09(日) 19:35:35.85ID:A2MKQhqs558774ワット発電中さん
2015/08/09(日) 21:29:05.77ID:z+64/g9B 15倍で1回、それの5倍でもう1回かな
559774ワット発電中さん
2015/08/09(日) 23:53:50.54ID:xBghXGkB 必要な回数だけ加算すればいいのさ・・ってか?
560774ワット発電中さん
2015/08/10(月) 06:38:51.05ID:p4oZHNgq561774ワット発電中さん
2015/08/10(月) 06:41:33.38ID:p4oZHNgq こうか
(1) 0個
(2) 1個
(3) 1個
(4) 3個
(1) 0個
(2) 1個
(3) 1個
(4) 3個
562774ワット発電中さん
2015/08/10(月) 07:32:42.10ID:p4oZHNgq 違う、こうだ
(1) 0個
(2) 1個
(3) 0個
(4) 2個
(1) 0個
(2) 1個
(3) 0個
(4) 2個
563774ワット発電中さん
2015/08/10(月) 08:30:14.31ID:xxQsYuxu 今日も大漁でつね!
564774ワット発電中さん
2015/08/10(月) 09:39:43.97ID:p4oZHNgq なんだ釣りか…
565774ワット発電中さん
2015/08/10(月) 14:54:26.31ID:z2vVYYjn DesignCompilerに頑張ってもらう
566555
2015/08/10(月) 21:19:59.47ID:fWXIgi/I 閑古鳥が鳴いているスレなのに、釣り認定だけは早いのねwww
>>556〜565
ほかにも解はあると思うけど、標準的な解答。
wire [15:0] X , P , Q , R , S ;
wire [15:0] X64 , X16 , X4 , nX4 , X9, X15 , nX ;
(1)80倍は64倍+16倍
assign X64 = ( X << 6 ) ;
assign X16 = ( X << 4 ) ;
assign P = X64 + X16 ; // →加算器1個
(2)60倍は64倍−4倍
assign X4 = ( X << 2 ) ;
assign nX4 = ~X4 ; // Xの4倍値の補数。
assign Q = X64 + nX4 + 1 ; // →加算器1個(+1はcarry in に)
(3)81倍は64倍+16倍+1倍
assign R = X64 + X16 + X ; // →加算器2個
別解として、81倍は9倍(=8倍+1倍)の9倍(=8倍+1倍)
assign X9 = ( X << 3 ) + X ; // →加算器1個
assign R = ( X9 << 3 ) + X9 ; // →加算器1個。合計で加算器2個
(4)75倍は15倍(=16倍-1倍)の5倍(=4倍+1倍)
assign nX = ~X ; // Xの補数。
assign X15 = X16 + nX + 1 ; // →加算器1個(+1はcarry in に)
assign S = ( X15 << 2 ) + X15 ; // →加算器1個。合計で加算器2個
ということで、>>556は全問正解かな(詳細が分からないけど)。
>>562の「0個」という答えはマジで気になっている。
>>556〜565
ほかにも解はあると思うけど、標準的な解答。
wire [15:0] X , P , Q , R , S ;
wire [15:0] X64 , X16 , X4 , nX4 , X9, X15 , nX ;
(1)80倍は64倍+16倍
assign X64 = ( X << 6 ) ;
assign X16 = ( X << 4 ) ;
assign P = X64 + X16 ; // →加算器1個
(2)60倍は64倍−4倍
assign X4 = ( X << 2 ) ;
assign nX4 = ~X4 ; // Xの4倍値の補数。
assign Q = X64 + nX4 + 1 ; // →加算器1個(+1はcarry in に)
(3)81倍は64倍+16倍+1倍
assign R = X64 + X16 + X ; // →加算器2個
別解として、81倍は9倍(=8倍+1倍)の9倍(=8倍+1倍)
assign X9 = ( X << 3 ) + X ; // →加算器1個
assign R = ( X9 << 3 ) + X9 ; // →加算器1個。合計で加算器2個
(4)75倍は15倍(=16倍-1倍)の5倍(=4倍+1倍)
assign nX = ~X ; // Xの補数。
assign X15 = X16 + nX + 1 ; // →加算器1個(+1はcarry in に)
assign S = ( X15 << 2 ) + X15 ; // →加算器1個。合計で加算器2個
ということで、>>556は全問正解かな(詳細が分からないけど)。
>>562の「0個」という答えはマジで気になっている。
567774ワット発電中さん
2015/08/10(月) 21:42:06.78ID:p4oZHNgq 完全に16倍を16ビットシフトと勘違いしてたわwww
0個はないわwww
0個はないわwww
568774ワット発電中さん
2015/08/14(金) 21:23:22.78ID:K+U9cDKe ARMみたいだな。
※逆です
※逆です
569774ワット発電中さん
2015/08/26(水) 12:21:56.14ID:PIMX37xz タイミング制約で、クロックの50%になるようにかける制約の
記述って何でしたっけ?
記述って何でしたっけ?
570774ワット発電中さん
2015/08/28(金) 00:10:22.05ID:hepd3KOU 乗算器はspartanなら18×18でロジック遅延含めて、パイプライン化するのが定石だけど
32×32で2つ乗算器使う場合は遅延も大きくなるんだよな
高クロックかつ、時分割で乗算器使い回すとき32×32は無謀か
32×32で2つ乗算器使う場合は遅延も大きくなるんだよな
高クロックかつ、時分割で乗算器使い回すとき32×32は無謀か
571774ワット発電中さん
2015/09/03(木) 01:09:31.24ID:cYYq7YP4 お騒がせしました。
572774ワット発電中さん
2015/10/30(金) 03:42:16.73ID:C7PxhMms Xilinxのスパルタン3でVerlilogの勉強をしています。
質問があり書き込みました。宜しくご指導願います。
異なる更新周期のデータの受け渡しの方法がわかりません。
例えば、A/Dコンバータでデジタルデータを得て、その結果を別のクロック同期回路が読む
という場合です。
・A/Dのサンプルが1ms、それを読み出す側の周期が1msなら、出入りの速度が同じなので
FIFOで一時的に保管すれば、不足も過剰もなくできそうに思います。
・A/D周期1ms、読み取り周期1.2msだと、FIFOは満タンになってしまいます。
FIFO満タンならA/Dが書き込むのを諦めればいいですが、古いデータを読むことになってしまいます。
・逆の場合は、A/Dの書き込みは問題ありませんが、読み出すデータが空になってしまいます。
前回のデータで代用して済ますのでしょうか?
一般にこういう場合、どのように処理をしているのでしょうか?
宜しくお願いします。
質問があり書き込みました。宜しくご指導願います。
異なる更新周期のデータの受け渡しの方法がわかりません。
例えば、A/Dコンバータでデジタルデータを得て、その結果を別のクロック同期回路が読む
という場合です。
・A/Dのサンプルが1ms、それを読み出す側の周期が1msなら、出入りの速度が同じなので
FIFOで一時的に保管すれば、不足も過剰もなくできそうに思います。
・A/D周期1ms、読み取り周期1.2msだと、FIFOは満タンになってしまいます。
FIFO満タンならA/Dが書き込むのを諦めればいいですが、古いデータを読むことになってしまいます。
・逆の場合は、A/Dの書き込みは問題ありませんが、読み出すデータが空になってしまいます。
前回のデータで代用して済ますのでしょうか?
一般にこういう場合、どのように処理をしているのでしょうか?
宜しくお願いします。
573774ワット発電中さん
2015/10/30(金) 09:22:39.62ID:t31kn5FP 読み出したデータをどうしたいのか?
来たデータだけ処理するのでは不都合なのか?
来たデータだけ処理するのでは不都合なのか?
574774ワット発電中さん
2015/10/30(金) 09:26:09.47ID:IzQRxBSC >>572
ADのデータが全て必要なら1ms以内で読み出すように作る。
読み出し側が早い場合は無効な値を読み込まない処理が必要。
例えばFIFO内のデータ数を読んでからデータを読み出すとか、
FIFOステータスも一緒に読み出すとか。
ADサンプルが常に実行されていて(止まらない)、
読み取りが遅い場合はデータ取りこぼしは仕方ないよね。
ADサンプルが一定期間ならその期間分データを貯められる
FIFOサイズにすれば良いと思う。
ADのデータが全て必要なら1ms以内で読み出すように作る。
読み出し側が早い場合は無効な値を読み込まない処理が必要。
例えばFIFO内のデータ数を読んでからデータを読み出すとか、
FIFOステータスも一緒に読み出すとか。
ADサンプルが常に実行されていて(止まらない)、
読み取りが遅い場合はデータ取りこぼしは仕方ないよね。
ADサンプルが一定期間ならその期間分データを貯められる
FIFOサイズにすれば良いと思う。
575774ワット発電中さん
2015/10/30(金) 09:43:11.71ID:r9CM0jzY FIFOいらない。
576774ワット発電中さん
2015/10/30(金) 09:50:14.29ID:i6CQvc0R FIFOいらないとは、初耳ですね。
577774ワット発電中さん
2015/10/30(金) 09:51:23.92ID:i6CQvc0R FIFOいらないとは、初耳ですね。
578774ワット発電中さん
2015/10/30(金) 15:08:59.84ID:L9XXnXEO >>572
ADCを別な周期で動作させない
後段の処理がそんなブレブレならADCのサンプルを後段のタイミングに合わせも問題無いんじゃねえの
そうじゃ無いなら後段を確実に速くして処理落ちしないようにするかだね
ADCを別な周期で動作させない
後段の処理がそんなブレブレならADCのサンプルを後段のタイミングに合わせも問題無いんじゃねえの
そうじゃ無いなら後段を確実に速くして処理落ちしないようにするかだね
579774ワット発電中さん
2015/10/30(金) 20:15:01.36ID:QL+C7A8K 要は非同期回路間のデータの受け渡しと考えていいのかな。
この場合だと
AD側が"データ取ってくれ信号"を発行して、
↓
使う側がその信号を見てデータを取得して、
"データ取ったよ信号"を発行する。
↓
取ったよ信号を受けたAD側が"データ取ってくれ信号"を無効にする。
↓
使う側が取ってくれ信号無効を見て、"データ取ったよ信号"を無効にする。
こんな感じじゃね。
この場合だと
AD側が"データ取ってくれ信号"を発行して、
↓
使う側がその信号を見てデータを取得して、
"データ取ったよ信号"を発行する。
↓
取ったよ信号を受けたAD側が"データ取ってくれ信号"を無効にする。
↓
使う側が取ってくれ信号無効を見て、"データ取ったよ信号"を無効にする。
こんな感じじゃね。
580774ワット発電中さん
2015/10/30(金) 23:26:40.61ID:6/OCltZu ん?最初はボード上にADCとFPGA並べて単純に繋げるイメージかと思ったけど
ストリーミングの同期再生みたいに完全に独立してて限り無く歪まないシステムを組たいのかな?
ストリーミングの同期再生みたいに完全に独立してて限り無く歪まないシステムを組たいのかな?
581774ワット発電中さん
2015/10/31(土) 01:22:02.77ID:IGOq6ueV582774ワット発電中さん
2015/10/31(土) 22:27:41.29ID:IN4fwEua >>572
Xilinxのスパルタン3でVerlilogの勉強中、とあるので、
ふと思いついた素朴な疑問なのかな?
前提条件がはっきりしないので何とも言えないけど、
一般にメモリを挟んで書き込み側と読み出し側のクロックが違う場合
(メモリを用いてクロックを乗換える場合)っていうのは、
映像信号みたいな、規則的で断続的なデータ入出力じゃないのかな。
その場合はブランキング期間というデータが途切れる期間を有効活用して、
書き込みと読み出しのメモリアドレスが追いつき追い越されないように
ちゃんとタイミング設計するので、
読み出す前に新しいデータで上書きしてしまったりとか、
新しいデータが来ないので古いデータを読んでしまう、なんて回路は作らないよ。
Xilinxのスパルタン3でVerlilogの勉強中、とあるので、
ふと思いついた素朴な疑問なのかな?
前提条件がはっきりしないので何とも言えないけど、
一般にメモリを挟んで書き込み側と読み出し側のクロックが違う場合
(メモリを用いてクロックを乗換える場合)っていうのは、
映像信号みたいな、規則的で断続的なデータ入出力じゃないのかな。
その場合はブランキング期間というデータが途切れる期間を有効活用して、
書き込みと読み出しのメモリアドレスが追いつき追い越されないように
ちゃんとタイミング設計するので、
読み出す前に新しいデータで上書きしてしまったりとか、
新しいデータが来ないので古いデータを読んでしまう、なんて回路は作らないよ。
583774ワット発電中さん
2015/11/04(水) 18:29:53.05ID:5PpTOzD9 携帯電話のときはどうなんでしょうかね。
自分のDACは相手のADCクロックに同期しないと
(圧縮コーデックはとりあえず無しとして)
いけないような気がするけど
そんなことしてるのかなぁ
音声波形データだったら誤魔化せそうだけど
時々(10秒に一回くらい?)サンプル抜けても/重複しても
人は判らないよね
自分のDACは相手のADCクロックに同期しないと
(圧縮コーデックはとりあえず無しとして)
いけないような気がするけど
そんなことしてるのかなぁ
音声波形データだったら誤魔化せそうだけど
時々(10秒に一回くらい?)サンプル抜けても/重複しても
人は判らないよね
584774ワット発電中さん
2015/11/05(木) 12:12:31.59ID:bt4Prqjr 人の耳は位相のずれには鈍感らしい
585774ワット発電中さん
2015/11/05(木) 21:25:48.94ID:mdcFfu6V 普通は必要な帯域が40KHzなり、100KHzだとしたら、
それより十分早いDACやADC使うと思うけど。
それより十分早いDACやADC使うと思うけど。
586774ワット発電中さん
2015/11/08(日) 03:38:17.56ID:qWjezxlw 2kHzの正弦波を24MHzでA/Dする私は、優等生だね
587774ワット発電中さん
2015/11/15(日) 22:28:27.78ID:iRZYSWky >・A/D周期1ms、読み取り周期1.2msだと、FIFOは満タンになってしまいます。
そもそも、1.2ms周期でしか読み取らないということは、1.2msよりも
速い変化が捉えられてもしょうがないということなんだから、
1.2ms周期で読んだら新規データよこせっていうので充分。
スタートかける=>+1ms後に次のデータ確定=>+1.2ms後にデータ取得
=>スタートかける=>・・・
そもそも、1.2ms周期でしか読み取らないということは、1.2msよりも
速い変化が捉えられてもしょうがないということなんだから、
1.2ms周期で読んだら新規データよこせっていうので充分。
スタートかける=>+1ms後に次のデータ確定=>+1.2ms後にデータ取得
=>スタートかける=>・・・
588774ワット発電中さん
2015/11/16(月) 02:42:53.54ID:XSfm7BAl XilinxのMicroBlaze MCS は、途中でTclを操作しなければなりません。(と、本に書いてあった)
でもTclができません。
何かもう少し簡単にSpartaの上にマイコンを日宇制する方法は無いでしょうか?
でもTclができません。
何かもう少し簡単にSpartaの上にマイコンを日宇制する方法は無いでしょうか?
589774ワット発電中さん
2015/12/04(金) 22:31:53.19ID:Rv9OglyE 32bitのレジスタが更新されたのを判断したいんだが、前の値と比較するしか無いですよね?
590774ワット発電中さん
2015/12/05(土) 00:57:42.65ID:7LjEZ5o+ ライトイネーブル見るだけだと、
同じ値が書かれたときに困るか。
同じ値が書かれたときに困るか。
591774ワット発電中さん
2015/12/05(土) 10:44:53.02ID:Mo9ueiJR ありえない値を書いておく。
592774ワット発電中さん
2015/12/05(土) 11:22:19.74ID:vTMa8y5Q タイミングが間に合えば書こうとしている値と今の値を比較するとか
593774ワット発電中さん
2015/12/06(日) 16:26:17.38ID:aeESMwWt 更新条件が自明なんだから、その信号を引き出せばよい。
594774ワット発電中さん
2015/12/08(火) 19:26:35.74ID:ajiZG8Ta595774ワット発電中さん
2015/12/23(水) 02:48:40.39ID:Vk8R0wOj 教えてください。
マイコンのPIOとしてFPGAを使うことがあると思います。
マイコンのPIOとしてFPGAを使うことがあると思います。
596774ワット発電中さん
2015/12/23(水) 02:56:36.40ID:n6bAhrfE そうですか
597774ワット発電中さん
2015/12/23(水) 07:04:08.28ID:CB9+gQuh 日本語でおk
598774ワット発電中さん
2015/12/23(水) 07:14:40.50ID:3ABb7uTn >>595
それで?
それで?
599774ワット発電中さん
2015/12/23(水) 10:13:34.95ID:TQS4jRHD >>598
以上です。よろしくお願いします
以上です。よろしくお願いします
600774ワット発電中さん
2015/12/23(水) 12:26:43.49ID:wYdMaLIO お疲れさまでした。
601774ワット発電中さん
2016/01/20(水) 02:55:21.62ID:L9DYXBNl クロックを5分周したいだけの簡単なことなんですけど
statement is not synthesizable since it does not hold its value under NOT(clock-edge) condition
ってエラーが、 if (RST = '1') thenの行にでるのはなぜでしょう?
まだvhdl初めて間もないのですが、ここは別の動作したコードをコピーしただけのつもりです
CLKが2.5周期の時点でQ5をあげて、さらに2.5周期の時点でQ5を下げるだけのコンセプトです
statement is not synthesizable since it does not hold its value under NOT(clock-edge) condition
ってエラーが、 if (RST = '1') thenの行にでるのはなぜでしょう?
まだvhdl初めて間もないのですが、ここは別の動作したコードをコピーしただけのつもりです
CLKが2.5周期の時点でQ5をあげて、さらに2.5周期の時点でQ5を下げるだけのコンセプトです
602774ワット発電中さん
2016/01/20(水) 02:57:00.05ID:L9DYXBNl library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity frec5 is
Port ( CLK : in STD_LOGIC;
RST : in STD_LOGIC;
Q5 : inout STD_LOGIC;
Q : out STD_LOGIC_VECTOR (2 downto 0));
end frec5;
architecture Behavioral of frec5 is
signal DFF_8 : std_logic_vector(2 downto 0);
begin
Q <= DFF_8;
process(CLK,RST,DFF_8)
begin
if (RST = '1') then ←ここ
DFF_8 <= "000";
Q5 <= '0';
elsif (falling_edge(CLK)) then
if (DFF_8 = "010") then
Q5 <= not Q5;
end if;
elsif (rising_edge(CLK)) then
if (DFF_8 = "100")then
Q5 <= not Q5;
DFF_8 <= "000";
else
DFF_8 <= DFF_8 + '1';
end if;
end if;
end process;
end Behavioral;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity frec5 is
Port ( CLK : in STD_LOGIC;
RST : in STD_LOGIC;
Q5 : inout STD_LOGIC;
Q : out STD_LOGIC_VECTOR (2 downto 0));
end frec5;
architecture Behavioral of frec5 is
signal DFF_8 : std_logic_vector(2 downto 0);
begin
Q <= DFF_8;
process(CLK,RST,DFF_8)
begin
if (RST = '1') then ←ここ
DFF_8 <= "000";
Q5 <= '0';
elsif (falling_edge(CLK)) then
if (DFF_8 = "010") then
Q5 <= not Q5;
end if;
elsif (rising_edge(CLK)) then
if (DFF_8 = "100")then
Q5 <= not Q5;
DFF_8 <= "000";
else
DFF_8 <= DFF_8 + '1';
end if;
end if;
end process;
end Behavioral;
603774ワット発電中さん
2016/01/20(水) 03:03:04.19ID:L9DYXBNl604774ワット発電中さん
2016/01/20(水) 08:31:37.44ID:rJCRWvMk >>601
その行に出るのは、そのifが閉じるend processの直前のend ifまでにエラーがあるから。
クロック信号の立ち上がりと立ち下がりのどちらでも値を更新できる回路は合成できないんじゃないかな。
その行に出るのは、そのifが閉じるend processの直前のend ifまでにエラーがあるから。
クロック信号の立ち上がりと立ち下がりのどちらでも値を更新できる回路は合成できないんじゃないかな。
605774ワット発電中さん
2016/01/20(水) 12:05:53.86ID:oGDvJEbi 回答ありがとうございます
if ・・・
elsif ・・・
elsif ・・・
endif
endif
endif
(インデント略)
という何重にもなっているのif文一つのなかに立ち上がり、立下り両方を書くことができないわけですね
今環境がないので試せないのですが、対策として
a(4bit)という別の信号を定義して
if falling_edge(CLK)
a<=a+1
endif
if rising_edge(CLK)
a<=a+1
endif
と別々に記述すれば、aのLSBはclkの2倍の周波数をもつようになって
aが4の時かつclk立ち上がりで5Q反転(0→1)
aが9の時かつclk立ち下がりで5Q反転(1→0)
としようと考えています
if ・・・
elsif ・・・
elsif ・・・
endif
endif
endif
(インデント略)
という何重にもなっているのif文一つのなかに立ち上がり、立下り両方を書くことができないわけですね
今環境がないので試せないのですが、対策として
a(4bit)という別の信号を定義して
if falling_edge(CLK)
a<=a+1
endif
if rising_edge(CLK)
a<=a+1
endif
と別々に記述すれば、aのLSBはclkの2倍の周波数をもつようになって
aが4の時かつclk立ち上がりで5Q反転(0→1)
aが9の時かつclk立ち下がりで5Q反転(1→0)
としようと考えています
606774ワット発電中さん
2016/01/20(水) 12:08:54.42ID:ijNmvkFK >>605
HDL の前に、どんな回路になるか考えたほうがいいよ。
HDL の前に、どんな回路になるか考えたほうがいいよ。
607774ワット発電中さん
2016/01/20(水) 12:11:06.25ID:ijNmvkFK >aのLSBはclkの2倍の周波数をもつようになって
ならないしさ・・・
タイミングチャートからかな。
ならないしさ・・・
タイミングチャートからかな。
608774ワット発電中さん
2016/01/20(水) 12:12:11.71ID:zuDDUCYg それはどうがんばってもムリです
ロジックではクロックの奇数分周はできない
↑↓両エッジで書き換えられるレジスタは作れないから
HDLは正しくてもハードに落とせない
プログラムとは違うのだよ。プログラムとは
ロジックではクロックの奇数分周はできない
↑↓両エッジで書き換えられるレジスタは作れないから
HDLは正しくてもハードに落とせない
プログラムとは違うのだよ。プログラムとは
609774ワット発電中さん
2016/01/20(水) 12:37:38.03ID:hFgc6Y1f >>608
>ロジックではクロックの奇数分周はできない
そうだね。
一番理解しやすそうなのは、0〜4まで回るカウンタを回して
0,1の時にHigh
2,3,4の時にLow
という回路かな。デューティ比が2:3だけどたいていの場合は問題ないよ。
>ロジックではクロックの奇数分周はできない
そうだね。
一番理解しやすそうなのは、0〜4まで回るカウンタを回して
0,1の時にHigh
2,3,4の時にLow
という回路かな。デューティ比が2:3だけどたいていの場合は問題ないよ。
610774ワット発電中さん
2016/01/20(水) 12:40:11.54ID:ijNmvkFK >それはどうがんばってもムリです
>ロジックではクロックの奇数分周はできない
そんなことないでしょ。
>↑↓両エッジで書き換えられるレジスタは作れないから
「作れない」というのは、原理的にということ?合成ツールのこと?
>ロジックではクロックの奇数分周はできない
そんなことないでしょ。
>↑↓両エッジで書き換えられるレジスタは作れないから
「作れない」というのは、原理的にということ?合成ツールのこと?
611774ワット発電中さん
2016/01/20(水) 13:58:15.12ID:bGlvMSjd612774ワット発電中さん
2016/01/20(水) 16:54:29.87ID:ijNmvkFK613774ワット発電中さん
2016/01/20(水) 17:04:00.99ID:ijNmvkFK module div5(input clk, output clk5, input rstn);
reg [2:0] cnt;
always @(posedge clk or negedge rstn)
if(!rstn) cnt<= 0;
else cnt<= (cnt==4) ? 0 : (cnt + 1);
reg [2:0] ncnt;
always @(negedge clk or negedge rstn)
if(!rstn) ncnt<= 0;
else ncnt<= cnt;
assign clk5= cnt[1] | ncnt[1];
endmodule
こっちのほうがグリッジが出なくていいな。実用的。
まあ普通はPLL回すだろうが。
reg [2:0] cnt;
always @(posedge clk or negedge rstn)
if(!rstn) cnt<= 0;
else cnt<= (cnt==4) ? 0 : (cnt + 1);
reg [2:0] ncnt;
always @(negedge clk or negedge rstn)
if(!rstn) ncnt<= 0;
else ncnt<= cnt;
assign clk5= cnt[1] | ncnt[1];
endmodule
こっちのほうがグリッジが出なくていいな。実用的。
まあ普通はPLL回すだろうが。
614774ワット発電中さん
2016/01/20(水) 17:11:36.17ID:dzNBkDB0 >>612
それを5分周というのはあまりに…。
それを5分周というのはあまりに…。
615774ワット発電中さん
2016/01/20(水) 17:26:09.82ID:hFgc6Y1f616774ワット発電中さん
2016/01/21(木) 00:38:28.03ID:RYekdWsp それが正道だけど結局は5clkに一回のenableで良かったってオチだよな大抵
617774ワット発電中さん
2016/01/21(木) 14:21:49.91ID:iGyXSyxi そうだね
例えば以前は雑誌なんかにも載ってたのが、非同期シリアルとかI2Cのモジュール
クロックにビットレートの16倍のを供給前提とかね
他のモジュールとのインタフェースがなきゃそれでいいかもだけど
FPGAの設計教科書としては、クロックじゃなく enable 作るっていうの
教えないと、って思った
例えば以前は雑誌なんかにも載ってたのが、非同期シリアルとかI2Cのモジュール
クロックにビットレートの16倍のを供給前提とかね
他のモジュールとのインタフェースがなきゃそれでいいかもだけど
FPGAの設計教科書としては、クロックじゃなく enable 作るっていうの
教えないと、って思った
618601
2016/01/21(木) 22:10:57.66ID:2Xk80YFB 601です、遅れました
現段階の知識では不可能みたいですねぇ
ありがとうございました
現段階の知識では不可能みたいですねぇ
ありがとうございました
619774ワット発電中さん
2016/01/22(金) 22:56:15.99ID:8yQZrqS+ cpuとのバス接続の部分が最も難しい部類だよね
620774ワット発電中さん
2016/01/22(金) 23:27:28.97ID:s0eW4+xO 2分周と3分周を交互に行えば2.5分周
621774ワット発電中さん
2016/02/07(日) 19:11:47.77ID:fhJ8NCfo CD-ROMでVerilongの独習をしているものです。
下記の修了判定が分かりません。
・8ビットのダウンカウンタを記述する
・ckの立ち上がりで、255,254,253とダウンカウントする
・RESが1で非同期リセットする(初期値は全ビット1とする)
・減算演算子を用いて記述する
module DOWNCOUNT(CK, RES, Q);
input CK,RES;
output [7:0] Q;
always @(posedge CK orposedge RES)
if(RES ==1'b1')
Q <= 「ここにどう記述すればいいんでしょうか?」 ;
else
Q <= Q - 8'h01;
endmodule
下記の修了判定が分かりません。
・8ビットのダウンカウンタを記述する
・ckの立ち上がりで、255,254,253とダウンカウントする
・RESが1で非同期リセットする(初期値は全ビット1とする)
・減算演算子を用いて記述する
module DOWNCOUNT(CK, RES, Q);
input CK,RES;
output [7:0] Q;
always @(posedge CK orposedge RES)
if(RES ==1'b1')
Q <= 「ここにどう記述すればいいんでしょうか?」 ;
else
Q <= Q - 8'h01;
endmodule
622774ワット発電中さん
2016/02/07(日) 19:14:55.52ID:CBMfnW3F >初期値は全ビット1とする
623774ワット発電中さん
2016/02/07(日) 19:21:10.06ID:fhJ8NCfo624774ワット発電中さん
2016/02/07(日) 20:19:23.86ID:0eRyaF8D 32'hDEADBEEFはどうでしょうか
625774ワット発電中さん
2016/02/07(日) 21:11:52.12ID:InHBhqdC (!RES != 1'sd0 )? 44'hbad_dead_baca: {4{2'd3}};
626774ワット発電中さん
2016/02/07(日) 21:15:36.21ID:jITFVCe9 >>621
>・減算演算子を用いて記述する
とあるけど、こういう書き方はいかが?
(実際の回路設計だとマイナスは使わないと思うので)
module DOWNCOUNT(CK, RES, Q) ;
input CK, RES ;
output [7:0] Q ;
always @(posedge CK or posedge RES)
Q <= RES ? 8'hff : Q + 8'hff ;
endmodule
動作は、255,254,・・・2,1,0の次は255になる。
>・減算演算子を用いて記述する
とあるけど、こういう書き方はいかが?
(実際の回路設計だとマイナスは使わないと思うので)
module DOWNCOUNT(CK, RES, Q) ;
input CK, RES ;
output [7:0] Q ;
always @(posedge CK or posedge RES)
Q <= RES ? 8'hff : Q + 8'hff ;
endmodule
動作は、255,254,・・・2,1,0の次は255になる。
627774ワット発電中さん
2016/02/07(日) 21:35:07.30ID:65DApXDO628774ワット発電中さん
2016/02/08(月) 12:39:32.26ID:oWwwNL1o 減算って、補数にして加算(+)する書き方が普通じゃないの?
シミュレーションだけだったら、マイナスで書いてもいいと思うけど。
シミュレーションだけだったら、マイナスで書いてもいいと思うけど。
629774ワット発電中さん
2016/02/08(月) 12:43:50.57ID:o0/Nv6jj >>628
そんなこともわからない合成ツールなんていらね。
そんなこともわからない合成ツールなんていらね。
630774ワット発電中さん
2016/02/08(月) 12:53:44.36ID:UXSfRfbU >>628
掛け算も自分で書いたほうが高速だとか思ってる?
掛け算も自分で書いたほうが高速だとか思ってる?
631774ワット発電中さん
2016/02/08(月) 14:42:33.76ID:JKhlAIc+ >>630は×4とか×8でも乗算器を使う人?
632774ワット発電中さん
2016/02/08(月) 14:56:39.79ID:UXSfRfbU633774ワット発電中さん
2016/02/08(月) 14:58:52.95ID:UXSfRfbU まさか、*20 だったら、
(a << 4) + (a << 2) とか書いてる?
(a << 4) + (a << 2) とか書いてる?
634774ワット発電中さん
2016/02/08(月) 20:36:47.15ID:Ny6QE0eK 合成環境ないからわからないけどunsigned設定で a+a , a*2 , a<<2 って、
違う回路合成するのかな?
違う回路合成するのかな?
635774ワット発電中さん
2016/02/08(月) 20:38:06.65ID:Ny6QE0eK >>634
a<<1 のまちがい。
a<<1 のまちがい。
636774ワット発電中さん
2016/02/08(月) 21:14:00.96ID:Ny6QE0eK 昔入れたQuartusの環境を思い出したんで、
下記を合成して見たら全部同じ回路になってた。
module Test0001
( input [31:0] a
, output [31:0] b
, output [31:0] c
, output [31:0] d
);
assign b = a+a;
assign c = a*2;
assign d = a<<1;
endmodule
スケマの感覚で下手に気を使ってソース書くと、
合成ツールの最適化が上手く働かなくなる可能性があるから、
(入力の不定値等も考えて厳密に同じ演算ではなくなってるケースなど)
やりたい演算を素直に書くのがいいと俺も思う。
タイミング間に合わなくなったらしょうがなくお世話する程度で。
下記を合成して見たら全部同じ回路になってた。
module Test0001
( input [31:0] a
, output [31:0] b
, output [31:0] c
, output [31:0] d
);
assign b = a+a;
assign c = a*2;
assign d = a<<1;
endmodule
スケマの感覚で下手に気を使ってソース書くと、
合成ツールの最適化が上手く働かなくなる可能性があるから、
(入力の不定値等も考えて厳密に同じ演算ではなくなってるケースなど)
やりたい演算を素直に書くのがいいと俺も思う。
タイミング間に合わなくなったらしょうがなくお世話する程度で。
637774ワット発電中さん
2016/02/09(火) 08:30:19.57ID:aD7gi6qC >>636
乙デアリマス。
定数乗算器をシフトで書くとか、
減算を補数でとか、20年前で止まってんじゃないかな?
(Abel でも減算は出来たけど)
生産性低いよね・・・
まあ、好きにすればいいけど。
乙デアリマス。
定数乗算器をシフトで書くとか、
減算を補数でとか、20年前で止まってんじゃないかな?
(Abel でも減算は出来たけど)
生産性低いよね・・・
まあ、好きにすればいいけど。
638774ワット発電中さん
2016/02/13(土) 00:10:35.10ID:dsAuLqDK ((N-1)*8 + 15 downto (N-1)*8)
とかなら使う
とかなら使う
639774ワット発電中さん
2016/02/22(月) 15:23:43.69ID:bV+ESC2k STARC 本ってもう買えなくなるんじゃろか。
640774ワット発電中さん
2016/03/25(金) 15:55:18.35ID:GXTolrdw Synthesizeがエラーも出ずにずっと回りっぱなしで終わらないんですけど,
どういう時に起こるんですか?
どういう時に起こるんですか?
641774ワット発電中さん
2016/03/25(金) 17:20:01.43ID:GXTolrdw Building and optimizing final netlist ...
から進みません
から進みません
642774ワット発電中さん
2016/03/25(金) 18:52:41.28ID:ID/3twVi >>641
これみたいなやつ?
https://forums.xilinx.com/t5/Synthesis/Syntesis-takes-too-long-at-quot-Low-level-synthesis-quot-part/td-p/492452
7系ならvivadoに行くか、でなきゃ設計を小さくしろってさ
FF大量に使わずにRAM使うとか
これみたいなやつ?
https://forums.xilinx.com/t5/Synthesis/Syntesis-takes-too-long-at-quot-Low-level-synthesis-quot-part/td-p/492452
7系ならvivadoに行くか、でなきゃ設計を小さくしろってさ
FF大量に使わずにRAM使うとか
643774ワット発電中さん
2016/04/09(土) 05:10:22.18ID:Kf7VbiEL >>621
module DOWNCOUNT(
input rst_n,
input clk,
output reg [7:0] Q
);
always @(negedge rst_n or posedge clk) begin
if (rst_n ==1'b0) begin
Q <= {8{1'b1}};
end else begin
Q <= Q - 1;
end
end
endmodule
リセットを非同期負論理リセット、クロックの信号名を変えておいたがこんな感じ。
module DOWNCOUNT(
input rst_n,
input clk,
output reg [7:0] Q
);
always @(negedge rst_n or posedge clk) begin
if (rst_n ==1'b0) begin
Q <= {8{1'b1}};
end else begin
Q <= Q - 1;
end
end
endmodule
リセットを非同期負論理リセット、クロックの信号名を変えておいたがこんな感じ。
644774ワット発電中さん
2016/04/10(日) 02:14:18.79ID:/KLfeoRF >>643
input rst_n, clk, と続けて書かない理由は何?
また
input wire rst_n,
input wire clk, と wire と書かない理由は何?
input rst_n, clk, と続けて書かない理由は何?
また
input wire rst_n,
input wire clk, と wire と書かない理由は何?
645774ワット発電中さん
2016/04/10(日) 04:54:09.91ID:gsGhnQBK >>644
input wire clk なんて、初めて見た。
input wire clk なんて、初めて見た。
646774ワット発電中さん
2016/04/10(日) 11:16:02.37ID:9g8SLq3j647774ワット発電中さん
2016/04/10(日) 12:33:20.96ID:niBWLNk9 >>644
input は、wire しかないんだから、わざわざ書く必要なくね?
むしろ、書く理由は?
output reg も、「一見してレジスタ出力だと判る」という利点がありそうだけど、実は組み合わせ回路にもなりうるという落とし穴がある。
input は、wire しかないんだから、わざわざ書く必要なくね?
むしろ、書く理由は?
output reg も、「一見してレジスタ出力だと判る」という利点がありそうだけど、実は組み合わせ回路にもなりうるという落とし穴がある。
648774ワット発電中さん
2016/04/10(日) 21:32:34.47ID:oyxhmEcn DNA用の「プログラミング言語」をMITが開発。望みの機能をコーディング〜コンパイルし、細胞へインストール
http://japanese.engadget.com/2016/04/05/dna-mit/
verilogベースで作られているらしい
転職先として……と思ったけど、さすがに分野違いすぎてつらいな
http://japanese.engadget.com/2016/04/05/dna-mit/
verilogベースで作られているらしい
転職先として……と思ったけど、さすがに分野違いすぎてつらいな
649774ワット発電中さん
2016/04/12(火) 11:59:34.34ID:K2Uok63W >>647
直行性があり、ミスが起こりにくいと思う。
`default nettype none
module AAA (
input wire CLK,
input wire RESET,
output reg [7:0] DBUS,
output wire [3:0] CODE
);
always @ ( posedge CLK ) begin
if( RESET == `L ) begin
・・・・
else
・・・・
end
end
という感じね。
直行性があり、ミスが起こりにくいと思う。
`default nettype none
module AAA (
input wire CLK,
input wire RESET,
output reg [7:0] DBUS,
output wire [3:0] CODE
);
always @ ( posedge CLK ) begin
if( RESET == `L ) begin
・・・・
else
・・・・
end
end
という感じね。
650774ワット発電中さん
2016/04/12(火) 22:00:56.74ID:NsTeiWzv 学生さんかな?
651774ワット発電中さん
2016/04/12(火) 23:27:50.14ID:EC2go6w0652774ワット発電中さん
2016/04/13(水) 00:38:52.15ID:62K8ZRVl アメリカの半導体メーカーで働いてるけど、verilogで input wire xxx って記述初めて見たわ
653774ワット発電中さん
2016/04/13(水) 01:04:20.19ID:TW8pKd9k >>652
だったら今回見ておいて良かったですね。
Googleで input wire で検索しただけでも、ゾロゾロでて来るんですが、
>>652の国では、出てこないのかな。
直交性という意味では、
input wire [0:0] CLOCK,
input wire [7:0] BUS,
output wire [0:0] ENABLE,
output reg [3:0] state,
など、省略せずにちゃんと書くようにしたほうが、バグが出にくくていいよね。
先頭行で
`default_nettype none にしておけば、input CLOCK, と書いたときにエラーを出してくれる。
最終行で
`default_nettype wire にしておかないといけない。
XilinxのCoreGenで生成したソースで、 input XXX と書いてあって、エラーになるから。
だったら今回見ておいて良かったですね。
Googleで input wire で検索しただけでも、ゾロゾロでて来るんですが、
>>652の国では、出てこないのかな。
直交性という意味では、
input wire [0:0] CLOCK,
input wire [7:0] BUS,
output wire [0:0] ENABLE,
output reg [3:0] state,
など、省略せずにちゃんと書くようにしたほうが、バグが出にくくていいよね。
先頭行で
`default_nettype none にしておけば、input CLOCK, と書いたときにエラーを出してくれる。
最終行で
`default_nettype wire にしておかないといけない。
XilinxのCoreGenで生成したソースで、 input XXX と書いてあって、エラーになるから。
654774ワット発電中さん
2016/04/13(水) 01:25:42.69ID:62K8ZRVl ミスが少なくなるので良さそうだけど、
手書きで書いた部分と自動生成した部分で扱いが異なるのは、ちょっと気持ち悪くないですか?
今社内のコーディングルールを改定しようとしてるので提案してみるわ。
うちも自動生成されるコードもあるけど、その位はツールベンダーに依頼すれば対応してもらえるし。
手書きで書いた部分と自動生成した部分で扱いが異なるのは、ちょっと気持ち悪くないですか?
今社内のコーディングルールを改定しようとしてるので提案してみるわ。
うちも自動生成されるコードもあるけど、その位はツールベンダーに依頼すれば対応してもらえるし。
655774ワット発電中さん
2016/04/13(水) 12:22:04.80ID:uKm/XHGo >>653
学生さんかな?
学生さんかな?
656774ワット発電中さん
2016/04/13(水) 12:40:56.09ID:G8Yljnbf >>646
う゛ぇりろぐ2001記述じゃ
う゛ぇりろぐ2001記述じゃ
657774ワット発電中さん
2016/04/13(水) 12:41:47.34ID:G8Yljnbf >>649
同期リセット組むんじゃねー
同期リセット組むんじゃねー
658774ワット発電中さん
2016/04/13(水) 12:58:14.11ID:GN9RZ9iZ >>657
FPGAは同期リセット推奨らしいぞ
Xilinxの人が「リセットは同期で作ってくれ〜」って言ってた
又聞きだがAlteraもそうらしい
というかできるならリセット記述すらしないでレジスタ宣言やsignal宣言(VHDL)に初期値を書けということだった
FPGAは同期リセット推奨らしいぞ
Xilinxの人が「リセットは同期で作ってくれ〜」って言ってた
又聞きだがAlteraもそうらしい
というかできるならリセット記述すらしないでレジスタ宣言やsignal宣言(VHDL)に初期値を書けということだった
659774ワット発電中さん
2016/04/13(水) 13:03:52.56ID:gFfvRMHA リセットなしで、どうやってIPの初期化するんだろうね?
初期値書くのは、シミュレーションやFPGAの初期化直後はいいけど。
非同期だとタイミングの保証が面倒くさい。
初期値書くのは、シミュレーションやFPGAの初期化直後はいいけど。
非同期だとタイミングの保証が面倒くさい。
660774ワット発電中さん
2016/04/13(水) 13:08:28.21ID:gFfvRMHA661774ワット発電中さん
2016/04/13(水) 17:40:52.39ID:XHK+yK+f >>658
漏れASICにするのをFPGAで組んでる
漏れASICにするのをFPGAで組んでる
662774ワット発電中さん
2016/04/13(水) 19:38:49.09ID:5mtEjhxy >>661
検証ご苦労さまです。
検証ご苦労さまです。
663774ワット発電中さん
2016/04/13(水) 20:41:34.90ID:Znw1Qv4I >>661
バグの見逃しご愁傷様です。
バグの見逃しご愁傷様です。
664774ワット発電中さん
2016/04/13(水) 21:36:55.39ID:rI6mKa2X 非同期リセットは解除時のタイミングが合わないから必要最低限にして、他は同期リセットにするのがわしは好き。
665774ワット発電中さん
2016/04/13(水) 22:59:55.70ID:TW8pKd9k666774ワット発電中さん
2016/04/13(水) 23:03:19.40ID:TW8pKd9k 僕は、常時、100%、必ず、いつも、同期Resetで書いています。
どんな時に非同期Resetが必要なのでしょうか?
どんな時に非同期Resetが必要なのでしょうか?
667774ワット発電中さん
2016/04/13(水) 23:14:33.86ID:DWQIXPjB668774ワット発電中さん
2016/04/14(木) 00:14:13.62ID:RKRcU1KM >>666
クロックがなくてもリセットがかかってほしいとき。
クロックがなくてもリセットがかかってほしいとき。
669774ワット発電中さん
2016/04/14(木) 00:22:55.37ID:2psijDZI >>665
合成通らないだろ。ぼけw
合成通らないだろ。ぼけw
670774ワット発電中さん
2016/04/14(木) 00:24:57.85ID:2psijDZI >>666
ASICの合成で、リセットがないFFが構築され、論理合成後のゲートシミュレーションで、不定が乗って仕事にならない。
ASICの合成で、リセットがないFFが構築され、論理合成後のゲートシミュレーションで、不定が乗って仕事にならない。
671774ワット発電中さん
2016/04/14(木) 00:37:24.42ID:2psijDZI >>666
複数の、非同期クロックがある場合。同期リセットだと、リセット回路を考えなくてはならない。
結果、FPGA上のグローバルラインの節約になる。
結局どっちがいいという議論は常にあって、最適なほうを選択する。
RTL設計スタイルガイド に書いてあったような気がするが、高額だし絶版っぽくなってきて。よくわかんねー
複数の、非同期クロックがある場合。同期リセットだと、リセット回路を考えなくてはならない。
結果、FPGA上のグローバルラインの節約になる。
結局どっちがいいという議論は常にあって、最適なほうを選択する。
RTL設計スタイルガイド に書いてあったような気がするが、高額だし絶版っぽくなってきて。よくわかんねー
672774ワット発電中さん
2016/04/14(木) 01:31:08.44ID:2psijDZI STARC解散で、まだ在庫は若干あるらしい
http://www.starc.jp/bookstore/
http://www.starc.jp/bookstore/
673774ワット発電中さん
2016/04/14(木) 02:03:28.80ID:/SVQW/U8 非同期resetの場合、reset信号の優先度が一番高いという理解で良いでしょうか?
674774ワット発電中さん
2016/04/14(木) 02:25:48.92ID:2psijDZI675774ワット発電中さん
2016/04/14(木) 05:17:20.50ID:rcybrDH6676774ワット発電中さん
2016/04/14(木) 05:18:52.50ID:rcybrDH6 >>669
どんな合成ツール使ってるの?
どんな合成ツール使ってるの?
677774ワット発電中さん
2016/04/14(木) 06:32:44.32ID:2psijDZI >>676
$signed(8'b1) を解釈できるとは思わないから、VHDLで書くべきだw
$signed(8'b1) を解釈できるとは思わないから、VHDLで書くべきだw
678774ワット発電中さん
2016/04/14(木) 08:48:02.66ID:bFbBxjj7 メタステイヴォー
679774ワット発電中さん
2016/04/14(木) 11:03:57.20ID:ht+BPKNC いずれにしろ、signed は、扱いが難しいよね。
式の右辺に、1つでもunsigned が入ると、もうsigned ではなくなるし。
signed の変数に、負のsignedをセットする命令も、なかなか出てこない。
式の右辺に、1つでもunsigned が入ると、もうsigned ではなくなるし。
signed の変数に、負のsignedをセットする命令も、なかなか出てこない。
680774ワット発電中さん
2016/04/14(木) 12:29:53.90ID:1CwzZOTl signedの場合は必ずsignedと記述するようにしてるよ
ミスもなくなるし、コード見ただけでsignedの信号だとわかるし
ミスもなくなるし、コード見ただけでsignedの信号だとわかるし
681774ワット発電中さん
2016/04/14(木) 13:01:08.04ID:ht+BPKNC >signedの場合は必ずsignedと記述するようにしてるよ
これは、変数の中に signed の文字を入れている、という意味ですよね?
例)
signed16_zahyou
これは、変数の中に signed の文字を入れている、という意味ですよね?
例)
signed16_zahyou
682774ワット発電中さん
2016/04/14(木) 13:26:12.33ID:4n69BSmL >>674
その例えは今の子わからんだろうw
その例えは今の子わからんだろうw
683774ワット発電中さん
2016/04/14(木) 13:36:02.68ID:2j/4EaLg684774ワット発電中さん
2016/04/14(木) 18:17:52.49ID:ht+BPKNC >>683
Verilogで キャストが出来るんですか?
Verilogで キャストが出来るんですか?
685774ワット発電中さん
2016/04/14(木) 19:24:19.25ID:2psijDZI use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_signed.all;
書いたことない奴と語りたくない。
use IEEE.std_logic_signed.all;
書いたことない奴と語りたくない。
686774ワット発電中さん
2016/04/14(木) 19:24:36.94ID:RKRcU1KM687774ワット発電中さん
2016/04/18(月) 02:30:27.11ID:XRg6GlDB リセットは同期式で書いてください、とTEDの人が言っていた
688774ワット発電中さん
2016/04/18(月) 04:28:57.44ID:2dh8O92i FPGAだけの話でしょ
689774ワット発電中さん
2016/04/18(月) 08:39:05.87ID:P19smY9y 非同期リセットだと各FFでリセットタイミングが非同期なので気持ち悪いわ。
690774ワット発電中さん
2016/04/18(月) 10:30:47.74ID:QStvRiuR 十年ほど前までASICの論理設計をずっとやっていたけど、
原則、非同期リセット使用だったな。
回路は大きくなるけど、検証で不定に悩まされること考えたら
リセットを入れさえすれば値が確定し、不定を一掃できるのは、
短期間設計を強いられる身にはありがたい。
>>689の言っていることは分からないな。
原則、非同期リセット使用だったな。
回路は大きくなるけど、検証で不定に悩まされること考えたら
リセットを入れさえすれば値が確定し、不定を一掃できるのは、
短期間設計を強いられる身にはありがたい。
>>689の言っていることは分からないな。
691774ワット発電中さん
2016/04/18(月) 17:23:44.58ID:hnqpl+9P fpgaで非同期リセット使うと使用率が跳ね上がるよな
692774ワット発電中さん
2016/04/19(火) 00:38:31.28ID:HC+pskw2 非同期リセットのリカバリタイムは問題ないの?
693774ワット発電中さん
2016/04/19(火) 07:30:33.43ID:u1e4cfjy 同期リセットはリセットじゃないの〜♪
694774ワット発電中さん
2016/04/19(火) 13:50:34.31ID:IIKq7CqQ 飾りじゃ無いのよリセット、ホッホー
695774ワット発電中さん
2016/04/20(水) 00:29:37.95ID:JQiA2r0L 鬼のように情け容赦がなく値を確定させるのが非道鬼リセット。
不定が残らないか胸をドキドキさせながら実行するのが動悸リセット。
不定が残らないか胸をドキドキさせながら実行するのが動悸リセット。
696774ワット発電中さん
2016/04/20(水) 01:05:29.51ID:LcLXabCG 同期リセットで不定になりうるのってどんなとき?
697774ワット発電中さん
2016/04/20(水) 03:27:11.20ID:mnp+dKrz どんなとき?
698774ワット発電中さん
2016/04/20(水) 07:35:34.88ID:jblnRGnm クロックが入っていないとき
699774ワット発電中さん
2016/04/20(水) 22:16:09.20ID:HK2VpTOT フリップフロップの非同期リセットと同期リセット
http://imgur.com/4gtd5BM
非同期リセットフリップフロップはRST_X=Lだけでリセットがかかる。
同期リセットの場合、クロック(CLK)が入らないとリセットはかからない。
http://imgur.com/4gtd5BM
非同期リセットフリップフロップはRST_X=Lだけでリセットがかかる。
同期リセットの場合、クロック(CLK)が入らないとリセットはかからない。
700774ワット発電中さん
2016/04/20(水) 23:53:29.02ID:S0GAT74N マ イ ン ド コ ン ト ロ ー ル の手法
・沢山の人が、偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い
靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト
10人に一人は カ ル ト か 外 国 人
「ガ ス ラ イ テ ィ ン グ」 で 検 索 を !
・沢山の人が、偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い
靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト
10人に一人は カ ル ト か 外 国 人
「ガ ス ラ イ テ ィ ン グ」 で 検 索 を !
701774ワット発電中さん
2016/04/25(月) 11:10:06.32ID:XY4y5vDf >>689
リセット信号はクロックに同期化して使うものじゃないの?
ここで言ってる非同期、同期リセットってのは
DFFのリセット端子に接続するのが非同期リセットで
組み合わせ回路に組み込むのが同期リセット
リセット信号はクロックに同期化して使うものじゃないの?
ここで言ってる非同期、同期リセットってのは
DFFのリセット端子に接続するのが非同期リセットで
組み合わせ回路に組み込むのが同期リセット
702774ワット発電中さん
2016/04/25(月) 20:41:52.06ID:utlCRzPD 素朴な疑問だけど、
"リセット信号はクロックに同期化して使う"ならば、
非同期リセットを使うメリットって何?
同期リセットのメリットは、
同期にするだけで対ノイズ性はよくなるし、
CTSはりやすくなるだろうしなんとなく分かるんだけど。
"リセット信号はクロックに同期化して使う"ならば、
非同期リセットを使うメリットって何?
同期リセットのメリットは、
同期にするだけで対ノイズ性はよくなるし、
CTSはりやすくなるだろうしなんとなく分かるんだけど。
703774ワット発電中さん
2016/04/26(火) 06:44:08.43ID:ehiKBWfk >>702
設計の失敗でFF出力がダイレクトにバスドライバーをON/OFFしているとき。
設計の失敗でFF出力がダイレクトにバスドライバーをON/OFFしているとき。
704774ワット発電中さん
2016/04/26(火) 07:58:48.31ID:cZR30AE8 >>670や>>693が書いているように、
また>>699の図 http://imgur.com/4gtd5BM.jpg を見たら明らかなように、
同期リセットは回路を(FFを)リセットする訳じゃないからね。
(FFを通常動作をさせて値を流し込む、ってかんじかな)
また>>699の図 http://imgur.com/4gtd5BM.jpg を見たら明らかなように、
同期リセットは回路を(FFを)リセットする訳じゃないからね。
(FFを通常動作をさせて値を流し込む、ってかんじかな)
705774ワット発電中さん
2016/04/26(火) 08:49:27.68ID:PgAblwgT リセットするまでクロック出ないとかいう設計するの?
706774ワット発電中さん
2016/04/27(水) 00:02:36.22ID:IQdL5SmA Xilinxのホワイトペーパー WP231から抜粋
同期リセットと非同期リセットでLUTの数に差が出る
すべてのFFに対してLUTが増えるのでリソースを圧迫する
http://i.imgur.com/XkeuvjZ.png
http://i.imgur.com/94gDLs6.png
まぁこれはFPGAの合成についての話なので、ASIC化を考えているなら非同期リセット使うべきだろうね
同期リセットと非同期リセットでLUTの数に差が出る
すべてのFFに対してLUTが増えるのでリソースを圧迫する
http://i.imgur.com/XkeuvjZ.png
http://i.imgur.com/94gDLs6.png
まぁこれはFPGAの合成についての話なので、ASIC化を考えているなら非同期リセット使うべきだろうね
707774ワット発電中さん
2016/04/27(水) 02:43:25.26ID:HVHLyzlH それ、古いデバイス(V4とか)の情報だぞ
708774ワット発電中さん
2016/04/27(水) 05:37:08.49ID:vw8XUNYC 考え方は変わらないよ。FPGAでは同期リセット使った方が得な感じだね。
Xの話だけど
FFのR、C、CEの線はSlice単位で共通
DSP Blockは同期リセットしかない
リセットが無ければSRLやDMEMが推論出来る
同期の場合はLUT使うかFFのR線使うかをツールが判断する
非同期の場合は強制的にFFのR線を使う
この辺が基本ルールらしい。
回路からリセットを無くせるならそれがベター
フレーム単位ならGSRが使える
US以上ならGSRの自由度は高い
非同期リセットの場合はクロックのとレーシングを必ず考慮する
(全てのFFが同時にリセット解除されるとは「限らない」)
なんて話も。
Xの話だけど
FFのR、C、CEの線はSlice単位で共通
DSP Blockは同期リセットしかない
リセットが無ければSRLやDMEMが推論出来る
同期の場合はLUT使うかFFのR線使うかをツールが判断する
非同期の場合は強制的にFFのR線を使う
この辺が基本ルールらしい。
回路からリセットを無くせるならそれがベター
フレーム単位ならGSRが使える
US以上ならGSRの自由度は高い
非同期リセットの場合はクロックのとレーシングを必ず考慮する
(全てのFFが同時にリセット解除されるとは「限らない」)
なんて話も。
709774ワット発電中さん
2016/04/27(水) 14:41:27.76ID:zbUHs6vO710774ワット発電中さん
2016/04/27(水) 17:45:50.24ID:3wbhCdSJ すみません、教えて下さい。
VerilogでSpartan6をプログラムしています。
bit幅の違うsignedの値の代入は、どのようになるのでしょうか?
reg signed [15:0] s16bit;
reg signed [13:0] s14bit; が、あるとき、
s16bit <= s14bit;
は、 { [13],[13], [13:0] } でしょうか、
それとも { [13:0], 2'b00 } なのでしょうか、
また
s14bit <= s16bit;
は、{ [15:2] } と、LSB欠落でしょうか
それとも、{ [15][12:0] } [14:13]が欠落でしょうか
宜しくお願いします。
VerilogでSpartan6をプログラムしています。
bit幅の違うsignedの値の代入は、どのようになるのでしょうか?
reg signed [15:0] s16bit;
reg signed [13:0] s14bit; が、あるとき、
s16bit <= s14bit;
は、 { [13],[13], [13:0] } でしょうか、
それとも { [13:0], 2'b00 } なのでしょうか、
また
s14bit <= s16bit;
は、{ [15:2] } と、LSB欠落でしょうか
それとも、{ [15][12:0] } [14:13]が欠落でしょうか
宜しくお願いします。
711774ワット発電中さん
2016/04/27(水) 19:09:14.73ID:WvjMIZM6 増える方は当然前者
減る方は[15,14]が欠落
減る方は[15,14]が欠落
712774ワット発電中さん
2016/04/27(水) 19:33:41.49ID:3wbhCdSJ >>711
さっそくありがとうございます。
どちらの場合も、右詰め基準で処理されるということですね。
ありがとうございます。
増える方は符号拡張で、右詰で良いと思いますが、
減る方は[15,14]が欠落しても、符号bitは降りてくると考えれば
よいでしょうか。
つまり、符号は同じで、数値の絶対値が小さくなるということです。
さっそくありがとうございます。
どちらの場合も、右詰め基準で処理されるということですね。
ありがとうございます。
増える方は符号拡張で、右詰で良いと思いますが、
減る方は[15,14]が欠落しても、符号bitは降りてくると考えれば
よいでしょうか。
つまり、符号は同じで、数値の絶対値が小さくなるということです。
713774ワット発電中さん
2016/04/27(水) 19:52:02.70ID:WvjMIZM6 >>712
[15,14]が欠落であって[14,13]が欠落じゃない。
符号は合ってて絶対値が変わるとか便利か?
Cでlongをshortに代入とか左シフトとか想像してみ。
オーバーフローが起きうるなら自分で検出して対処。
[15,14]が欠落であって[14,13]が欠落じゃない。
符号は合ってて絶対値が変わるとか便利か?
Cでlongをshortに代入とか左シフトとか想像してみ。
オーバーフローが起きうるなら自分で検出して対処。
714774ワット発電中さん
2016/04/27(水) 22:33:34.74ID:zbUHs6vO >>710=712
質問に対する答えではないんだけど、結果がどうなるか確信持てないときは
とりあえずは確信持てる表記で書くほうがいいのでは?
どういうのを期待してるか分からないけど、例えば
s16bit <= {2'b00, s14bit};
s14bit <= s16bit[13:0];
とか書いたからって、「そんな書き方するな!」とか文句言うやつは
誰もいないと思うけど・・・
質問に対する答えではないんだけど、結果がどうなるか確信持てないときは
とりあえずは確信持てる表記で書くほうがいいのでは?
どういうのを期待してるか分からないけど、例えば
s16bit <= {2'b00, s14bit};
s14bit <= s16bit[13:0];
とか書いたからって、「そんな書き方するな!」とか文句言うやつは
誰もいないと思うけど・・・
715706
2016/04/27(水) 23:36:07.49ID:+w/6mK+W 非同期リセットについて色々と調べてみた
Xilinxについては、RAMやDSPが同期リセットを前提とした作りになっているため非同期リセットはそもそもNGなんだと
というか非同期リセットのFF出力をRAMにつないだりするとVivadoでErrorになってそもそも合成できない(たしか)
リセットについて書かれているUserGuideすべてに「Xilinxでは非同期リセットを推奨していません」と注意書きが書かれてる
あと、リセットするときはアクティブHighにすること
FFはアクティブHighの論理で作られているので、アクティブLowで記述した場合、リセット入力前に反転する回路が作られてリソースを圧迫する
そもそもリセットの配線自体が回路を圧迫するので、リセット記述自体の削減を検討すること
signal a : std_logic := '1'; みたいに初期値を書けば、立ち上がった時にその値が反映されるのでそれを活用すること
こういったコーディング手法は「Vivado Design SuiteでのUltraFast設計手法」でトレーニング可能なので知りたい人は受講したほうが良いとのこと
(42,000円かぁ……うーん……)
Alteraについては特に資料見つからなかった
もしかしたら公開してないだけかもしれないけど
Xilinxについては、RAMやDSPが同期リセットを前提とした作りになっているため非同期リセットはそもそもNGなんだと
というか非同期リセットのFF出力をRAMにつないだりするとVivadoでErrorになってそもそも合成できない(たしか)
リセットについて書かれているUserGuideすべてに「Xilinxでは非同期リセットを推奨していません」と注意書きが書かれてる
あと、リセットするときはアクティブHighにすること
FFはアクティブHighの論理で作られているので、アクティブLowで記述した場合、リセット入力前に反転する回路が作られてリソースを圧迫する
そもそもリセットの配線自体が回路を圧迫するので、リセット記述自体の削減を検討すること
signal a : std_logic := '1'; みたいに初期値を書けば、立ち上がった時にその値が反映されるのでそれを活用すること
こういったコーディング手法は「Vivado Design SuiteでのUltraFast設計手法」でトレーニング可能なので知りたい人は受講したほうが良いとのこと
(42,000円かぁ……うーん……)
Alteraについては特に資料見つからなかった
もしかしたら公開してないだけかもしれないけど
716774ワット発電中さん
2016/04/28(木) 00:05:10.63ID:DDDVrqna717774ワット発電中さん
2016/04/28(木) 01:11:49.56ID:EOM5i1uo >>714
どうせテストしてないんでしょ。ww
どうせテストしてないんでしょ。ww
718774ワット発電中さん
2016/04/28(木) 09:20:05.65ID:8ZASIU1D そもそもFPGAだとConfigからのスタートだからなぁ
719774ワット発電中さん
2016/04/28(木) 12:32:04.11ID:7osbKzj8 >>718
コンフィグって、なに?
コンフィグって、なに?
720774ワット発電中さん
2016/05/03(火) 12:01:25.17ID:/AL+CPaC FPGAにおいては、電源投入後 ユーザー回路が動くように
RAMの情報を書き換えて準備すること。
RAMの情報を書き換えて準備すること。
721774ワット発電中さん
2016/05/06(金) 00:32:41.21ID:jHduD6g7722774ワット発電中さん
2016/05/06(金) 04:40:17.66ID:f1rl2Pal FFをCMOS回路れべるで描けないと無理だよ。
複数クロックの問題もあるし
複数クロックの問題もあるし
723774ワット発電中さん
2016/05/06(金) 17:20:00.61ID:kdHS2/Nv724774ワット発電中さん
2016/05/06(金) 19:22:27.12ID:GYtclIH2 故障検出はないのか。
725774ワット発電中さん
2016/05/06(金) 20:14:42.54ID:9saA/j3C どうせテストしないんでしょ。
726774ワット発電中さん
2016/05/06(金) 20:21:07.06ID:QxEnI6Uy スキャンまで大学で教えてるところはそうないんじゃね?
スキャン付きFFは面積デカくなるよな。
スキャン付きFFは面積デカくなるよな。
727774ワット発電中さん
2016/05/06(金) 20:58:00.20ID:9saA/j3C テストしてない回路は物がないより悪い。
728774ワット発電中さん
2016/05/10(火) 11:21:13.51ID:fdceohCP ソフトウェア出身なのでよくわからないのですが、ハードウェアのテスト(シミュレーション)にも条件網羅や境界値分析のような基準があるのでしょうか?
テスト手法に関する著名な図書があれば教えていただきたく…
テスト手法に関する著名な図書があれば教えていただきたく…
729774ワット発電中さん
2016/05/10(火) 20:27:54.56ID:i76bA3yq 100%だよ
緩和については各々の事情による
ゴンペルツ曲線に合うようにテストするんだぞ
見つけ過ぎたりしちゃダメだからな配分考えて
緩和については各々の事情による
ゴンペルツ曲線に合うようにテストするんだぞ
見つけ過ぎたりしちゃダメだからな配分考えて
730774ワット発電中さん
2016/05/10(火) 21:12:48.81ID:zjM4uPOh >>729
アドバイスありがとうございます
コードカバレッジ100%ですね
基本的な考え方はソフトと同じだと思えてきました
ゴンペルツ曲線は久しぶりに(初めて?)聞きました
今後意識してみます
あと職場の本棚に『Verilog HDL&VHDLテストベンチ記述の初歩』があったので熟読しておきます
アドバイスありがとうございます
コードカバレッジ100%ですね
基本的な考え方はソフトと同じだと思えてきました
ゴンペルツ曲線は久しぶりに(初めて?)聞きました
今後意識してみます
あと職場の本棚に『Verilog HDL&VHDLテストベンチ記述の初歩』があったので熟読しておきます
731774ワット発電中さん
2016/05/10(火) 22:36:09.56ID:D8/k7BjM ソフト屋が RTL やると、カウンタの判定でまずハマる (経験談)。
732774ワット発電中さん
2016/05/10(火) 22:38:25.33ID:a+jFlcEe733774ワット発電中さん
2016/05/12(木) 21:30:19.34ID:ZBOtvQmY734774ワット発電中さん
2016/05/12(木) 23:52:15.26ID:sKNOTwXk735774ワット発電中さん
2016/05/13(金) 08:56:53.78ID:0YJlXOfI 開発規模がわからないけどフォーマル検証やランダム検証なんかも使えるといいね
エミュレート環境もあれば便利だよFPGAなら実機あるかもだけど
エミュレート環境もあれば便利だよFPGAなら実機あるかもだけど
736774ワット発電中さん
2016/05/27(金) 23:26:48.46ID:jV/oAcm1 固定小数点の除算ってどうすればいいでしょうか?
(? / ?)*(2**小数部ビット数)でやってるんですがうまくいきません
(? / ?)*(2**小数部ビット数)でやってるんですがうまくいきません
737774ワット発電中さん
2016/05/27(金) 23:54:29.75ID:xGSVIS28 シミュレーションが出来ない
合成できない
リント通らない
タイミングメットしない
ゲート規模デカすぎる
他になにかあるかな?
合成できない
リント通らない
タイミングメットしない
ゲート規模デカすぎる
他になにかあるかな?
738774ワット発電中さん
2016/05/28(土) 00:21:12.50ID:uKWD48qj >>736
固定小数点のまえに整数ならできるのか?
固定小数点のまえに整数ならできるのか?
739774ワット発電中さん
2016/05/28(土) 00:33:24.72ID:8D70xttd >>738
最初は整数で実装してみたんですが小数精度がないとうまく動きませんでした
とりあえず掛け算は resize( (? * ?) / (2 ** 小数部ビット数) , 全ビット数)
でうまく動いているみたいなのですが割り算でつまずいています
最初は整数で実装してみたんですが小数精度がないとうまく動きませんでした
とりあえず掛け算は resize( (? * ?) / (2 ** 小数部ビット数) , 全ビット数)
でうまく動いているみたいなのですが割り算でつまずいています
740774ワット発電中さん
2016/05/28(土) 00:44:30.44ID:uKWD48qj741774ワット発電中さん
2016/05/28(土) 06:52:12.85ID:9YsLJlaU742774ワット発電中さん
2016/05/28(土) 10:05:02.16ID:ULBNFiQM DesignWareでも使っとけ
743774ワット発電中さん
2016/05/28(土) 14:20:29.32ID:kfdpq1Vd >>736
(?<<少数)/?だろ
(?<<少数)/?だろ
744774ワット発電中さん
2016/05/28(土) 15:24:34.65ID:Irvs/sGA みなさんありがとうございます割り算実装できましたm(__)m
745774ワット発電中さん
2016/05/28(土) 17:50:54.29ID:DTbvPBnh ASICでやらかしたのを遠目に見たことはある。<除算が合成できない。
配線で直せたらしいが。
配線で直せたらしいが。
746774ワット発電中さん
2016/05/28(土) 22:09:30.35ID:OdAwcFKy >>745
合成できないのに配線も何もないだろ。
合成できないのに配線も何もないだろ。
747774ワット発電中さん
2016/05/29(日) 14:52:12.40ID:JjforECz 合成出来ないのにシリコン化ってのが有り得ないよな
ECOでバグ直したってのなら分かるけど
ECOでバグ直したってのなら分かるけど
748774ワット発電中さん
2016/05/29(日) 18:45:41.02ID:yfNsMcqN おっしゃる通り。バグ自体は数式の転写ミス。
本来の数式なら除算があったが、
合成が(そのバグ部分は)あっさり成功していた。
本来の数式なら除算があったが、
合成が(そのバグ部分は)あっさり成功していた。
749774ワット発電中さん
2016/05/29(日) 23:58:34.53ID:VC7z7VvT RTLやネットリストで確認してなかったのか?
750774ワット発電中さん
2016/06/08(水) 20:33:52.01ID:QQfJu5fi altera de1-soc での外部メモリを使う方法がわからん
情弱すぎてつらいんだが
外部メモリ使用した経験ある人いませんか?
情弱すぎてつらいんだが
外部メモリ使用した経験ある人いませんか?
751774ワット発電中さん
2016/06/13(月) 17:04:10.62ID:zPjI7duP 差動クロックをタイミング制約で動作周波数を落としたいのですがPN両方ではなくP側のみの制約を掛けなければならないのですか?
752774ワット発電中さん
2016/06/14(火) 16:18:02.34ID:M+ZoFngS binファイルが途中から読み込めなくなる現象が起きているんですが、原因わかりませんか?
3次元配列しているbinを$readmembでレジスタに配置して、alwaysで要素を取り出しassignしているのですが
一定アドレスから読み込まれずハイインピー状態になります。
誰か解決策教えてください。
3次元配列しているbinを$readmembでレジスタに配置して、alwaysで要素を取り出しassignしているのですが
一定アドレスから読み込まれずハイインピー状態になります。
誰か解決策教えてください。
753774ワット発電中さん
2016/06/14(火) 18:28:23.23ID:GIkUv0Ll $readmembで reg [31:0]ROM[0:9][0:99]; みたいなのに
読み込んでるってことなのかな?
ROMの内容をダンプしてみたら? 多分読み込めてないんだと思う
読み込んでるってことなのかな?
ROMの内容をダンプしてみたら? 多分読み込めてないんだと思う
754774ワット発電中さん
2016/06/14(火) 18:32:22.92ID:GIkUv0Ll あ、ゴメン、そこは見当ついてるってことか
原因は $readmemb の仕様だと思うから、上の例だと
reg [31:0]ROM[0:999]; みたいな形にしてみたら行けるのでは
原因は $readmemb の仕様だと思うから、上の例だと
reg [31:0]ROM[0:999]; みたいな形にしてみたら行けるのでは
755774ワット発電中さん
2016/08/14(日) 05:12:53.53ID:S0I4J04X 質問いいでしょうか?
FPGAのリセット信号をDCM_Lockを反転して使っている記事なとを見かけますが、
DCM素子を使わないことも多いんです。
リセット信号発生のためだけに
FPGAのリセット信号をDCM_Lockを反転して使っている記事なとを見かけますが、
DCM素子を使わないことも多いんです。
リセット信号発生のためだけに
756774ワット発電中さん
2016/08/14(日) 08:52:59.36ID:/XNyijvB 質問を続けて、どうぞ
757774ワット発電中さん
2016/08/14(日) 13:36:16.40ID:O4huRkYu DCMがないっていうんなら別だけど、あるなら、リセット信号発生のためだけに
使ってもいいんでは?
単に外部クロックx1として使ってもいいし
使ってもいいんでは?
単に外部クロックx1として使ってもいいし
758774ワット発電中さん
2016/08/14(日) 19:33:29.27ID:4dmQ74Dx いやいやまだ質問が終わってないんだが...
759774ワット発電中さん
2016/08/14(日) 20:58:26.97ID:6/Yp08RB 彼の質問はここで途切れている。
760774ワット発電中さん
2016/08/15(月) 00:03:10.15ID:uGZ7Tjz5 触れてはならない闇に触れようとしたから、書いてる途中で消されてしまったのか・・・
761774ワット発電中さん
2016/08/15(月) 00:35:55.50ID:c9XijXTt すみません、755です。
書いている途中に MPが来て連行されてしまいました。
質問は、リセット信号の生成のためだけに DCMを使うという DCMの使い方は
邪道でしょうか?
外部にリセットICやリセットSWを置くよりも、楽で寿司。
もう一つ教えてください。
FPGAにマイコンを書いて行うのが流行だと思いますが、
Xilinxだと、有料版でないと使えなかったり制限があったりするようです。
なので、マイコン(H8)を外部バスモードにしてFPGAをつなごうと思っています。
「今どき、別々でやるんか?」と言われるのではないかと心配しています。
やはり、おかしいでしょうか?
書いている途中に MPが来て連行されてしまいました。
質問は、リセット信号の生成のためだけに DCMを使うという DCMの使い方は
邪道でしょうか?
外部にリセットICやリセットSWを置くよりも、楽で寿司。
もう一つ教えてください。
FPGAにマイコンを書いて行うのが流行だと思いますが、
Xilinxだと、有料版でないと使えなかったり制限があったりするようです。
なので、マイコン(H8)を外部バスモードにしてFPGAをつなごうと思っています。
「今どき、別々でやるんか?」と言われるのではないかと心配しています。
やはり、おかしいでしょうか?
762774ワット発電中さん
2016/08/15(月) 01:18:24.43ID:1HTnyLKQ ソフトコアなんぞ話題性を出してソフト屋に売り込みたいだけの話で、主流でも何でもないと思うが。
普通はソフト資産なりハード資産なり大人の事情なりで先にプロセッサーが決まっててそこに足りないものを継ぎ足すものでしょ。
普通はソフト資産なりハード資産なり大人の事情なりで先にプロセッサーが決まっててそこに足りないものを継ぎ足すものでしょ。
763774ワット発電中さん
2016/08/15(月) 01:55:03.83ID:uGZ7Tjz5 FPGAのソフトコアCPU使ったからといって、FPGAだけでできるっていう
わけにはいかないんだよね
普通は、外部にプログラム・データ用のRAMとかROMが必要になる
今時のマイコンだとそういうのは内蔵されてるから、マイコン+FPGAって
構成は当然ありだし、マイコンに内蔵されてるLCD・USBインターフェイスの
ようなものをFPGAに組み込むことに時間と労力を費やすのもどうかと思う
(いくらIPとライブラリがあったとしても、1日でできるとかありえないから)
わけにはいかないんだよね
普通は、外部にプログラム・データ用のRAMとかROMが必要になる
今時のマイコンだとそういうのは内蔵されてるから、マイコン+FPGAって
構成は当然ありだし、マイコンに内蔵されてるLCD・USBインターフェイスの
ようなものをFPGAに組み込むことに時間と労力を費やすのもどうかと思う
(いくらIPとライブラリがあったとしても、1日でできるとかありえないから)
764774ワット発電中さん
2016/08/15(月) 16:10:18.67ID:+HyJQTyf > ソフトコアなんぞ話題性を出してソフト屋に売り込みたいだけの話
> マイコンに内蔵されてるLCD・USBインターフェイスの
> ようなものをFPGAに組み込むことに時間と労力を費やす
なんかこう・・・
> マイコンに内蔵されてるLCD・USBインターフェイスの
> ようなものをFPGAに組み込むことに時間と労力を費やす
なんかこう・・・
765774ワット発電中さん
2016/08/15(月) 16:39:18.46ID:WkYFrbIA 鬼に金棒ですね。
766774ワット発電中さん
2016/08/15(月) 18:09:47.62ID:PtN2WXNj USBもLCDCも内蔵されてるマイコンもあれば無いのもあるし
内蔵してる奴は大抵fpBGAでアマチュアだと厳しく
でもSATA1.5G程度でも実装可能な高速serdes持ってるfpgaもfpBGAだっりする訳で
色々とままならず
つまひは立場によるって話でしかなく
内蔵してる奴は大抵fpBGAでアマチュアだと厳しく
でもSATA1.5G程度でも実装可能な高速serdes持ってるfpgaもfpBGAだっりする訳で
色々とままならず
つまひは立場によるって話でしかなく
767774ワット発電中さん
2016/08/15(月) 21:32:18.31ID:MFE0irQ1 >>764
何を言いたいの?
何を言いたいの?
768774ワット発電中さん
2016/08/16(火) 06:04:15.92ID:KL3GSvF4 たぶん、実用性なし。
769774ワット発電中さん
2016/08/16(火) 23:01:40.47ID:VCBjYydD MicroBlazeとか、出始めた頃はその頃のマイコンとしては高性能の部類だったけど
今となっては、Cortex-M3の安いやつくらいの性能しかない
だからホントは、マイコン―高速バス―FPGAって感じの構成が一番いいと
思うけど、残念ながら高速バスは標準がないし、最近の高集積マイコンは
外部バス自体なかったりするんだよな
今となっては、Cortex-M3の安いやつくらいの性能しかない
だからホントは、マイコン―高速バス―FPGAって感じの構成が一番いいと
思うけど、残念ながら高速バスは標準がないし、最近の高集積マイコンは
外部バス自体なかったりするんだよな
770774ワット発電中さん
2016/08/16(火) 23:09:53.13ID:5UMCaW5Y PCIeで良いじゃん
771774ワット発電中さん
2016/08/17(水) 00:23:31.80ID:AQmTpAMT んなもん生えてるマイコンは良いじゃん言えるほど無いし、パフォーマンスも出なかったりするけどな
772774ワット発電中さん
2016/08/17(水) 00:24:16.34ID:/i4c9OrV ラズパイクラスでもPCIeなんてついてないでしょ
FPGAのほうも、PCIeでインタフェースするくらいなら
Zynqとかってなっちゃうし
FPGAのほうも、PCIeでインタフェースするくらいなら
Zynqとかってなっちゃうし
773774ワット発電中さん
2016/08/17(水) 03:05:31.24ID:Blf+LXRq MIPI
774774ワット発電中さん
2016/08/21(日) 23:58:41.40ID:1Jqal/Qh ハードIPコア入りのを最初からつかうのがいいよ
775774ワット発電中さん
2016/08/22(月) 20:26:30.52ID:tqckmrN+ そんなコスト無視のアドバイスされてもなあ
マイコン+FPGAだと2千円くらいからできるけど
ハードコアCPU内臓FPGAだと1万くらいからでしょ?
マイコン+FPGAだと2千円くらいからできるけど
ハードコアCPU内臓FPGAだと1万くらいからでしょ?
776774ワット発電中さん
2016/08/22(月) 20:27:51.94ID:tqckmrN+ 訂正:SmartFusionだと5千円くらいからかな?
777774ワット発電中さん
2016/08/22(月) 20:59:01.14ID:Se6nq+Lw んなもん要件次第だろ。お前が何作ろうとしてるかなんか知るかよ
778774ワット発電中さん
2016/08/22(月) 21:19:19.23ID:tqckmrN+ ソフトコアCPUの話は >>761の質問から始まってるんだが・・・
779774ワット発電中さん
2016/08/23(火) 14:54:56.46ID:j5Axv+ou XとかAにも Cortex-M3かM4クラスのがのったチップが欲しいね
ソフトコアの上がA9とかギャップがありすぎ
ソフトコアの上がA9とかギャップがありすぎ
780774ワット発電中さん
2016/08/23(火) 14:58:20.05ID:nxHC0mgz それこそコストの話になるわな
781774ワット発電中さん
2016/08/23(火) 21:29:50.29ID:Y3KcuaQA べつに大きい分には困らないでしょ
ZYNQはFPGAにしては安いし
ZYNQはFPGAにしては安いし
782774ワット発電中さん
2016/08/27(土) 23:28:12.02ID:lFMWVUKk VHDLの記述方法に関して教えて下さい。
Vivado2016.2を使用しています。
階層間を接続する記述の仕方でエラーが発生します。
ena <= sig_a, (OK)
ena <= not sig_a, (NG)
調べるとVivadoがサポートしているVHDL-93ではNGの記述がサポートされていない事が
原因と分かったのですが、これを回避するにはどう記述するのが定石なのでしょうか?
今は↓こんな感じで3行で書いているのですが、面倒だし行数が増えて嫌なんですが・・・
何か良い方法をアドバイス頂けませんか?
signal not_sig_a : std_logic;
not_sig_a <= not sig_a;
ena <= sig_a,
Vivado2016.2を使用しています。
階層間を接続する記述の仕方でエラーが発生します。
ena <= sig_a, (OK)
ena <= not sig_a, (NG)
調べるとVivadoがサポートしているVHDL-93ではNGの記述がサポートされていない事が
原因と分かったのですが、これを回避するにはどう記述するのが定石なのでしょうか?
今は↓こんな感じで3行で書いているのですが、面倒だし行数が増えて嫌なんですが・・・
何か良い方法をアドバイス頂けませんか?
signal not_sig_a : std_logic;
not_sig_a <= not sig_a;
ena <= sig_a,
783774ワット発電中さん
2016/08/28(日) 01:12:17.25ID:21NvIqvt ・集団ストーカー・電磁波犯罪被害の科学的根拠及び、技術上の根拠は以下のアドレスへ (警察板より退避)
http://jbbs.shitaraba.net/bbs/read.cgi/study/12517/1415977550/
これを読まずして、貴方は、集団ストーカー・電磁波犯罪被害者を統合失調症呼ばわり出来ない
・レーザーは赤外線だと軌道が見えないし、軌道から外れたら、計測も困難を極めるだろう。
マイクロ波の周波数帯だったら、メーザー呼ばれ、軌道が見えないし、 軌道から外れたら計測が出来ないから、計測は困難だぞ。
学者・研究者でも証明は困難だぞ。
究極の個人攻撃が可能だ。
レーザー・メーザーを照射されていると主張しているからと言って、精神病とは限らない。 大問題になるぞ、人権的にも。
メーザー
http://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%BC%E3%82%B6%E3%83%BC
レーザー
http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%82%B6%E3%83%BC
レーザーポインター
http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC
・マイクロ波聴覚効果
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E6%B3%A2%E8%81%B4%E8%A6%9A%E5%8A%B9%E6%9E%9C
ファクトシートNo.226 1999年6月 電磁界と公衆衛生:「レーダーと人の健康」
http://www.who.int/peh-emf/publications/facts/radars_226.pdf
電波は聞こえるよーん。ここに詳しい解説があるから、勉強しておいてね。
『ガリレオ2』第3話の数式、パルス電磁波のフレイ効果による耳の奥の弾性波か
http://tenmei.cocolog-nifty.com/matcha/2013/04/post-6f27.html
これでも、電波は聞こえないという奴は、科学の敵だ。
http://jbbs.shitaraba.net/bbs/read.cgi/study/12517/1415977550/
これを読まずして、貴方は、集団ストーカー・電磁波犯罪被害者を統合失調症呼ばわり出来ない
・レーザーは赤外線だと軌道が見えないし、軌道から外れたら、計測も困難を極めるだろう。
マイクロ波の周波数帯だったら、メーザー呼ばれ、軌道が見えないし、 軌道から外れたら計測が出来ないから、計測は困難だぞ。
学者・研究者でも証明は困難だぞ。
究極の個人攻撃が可能だ。
レーザー・メーザーを照射されていると主張しているからと言って、精神病とは限らない。 大問題になるぞ、人権的にも。
メーザー
http://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%BC%E3%82%B6%E3%83%BC
レーザー
http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%82%B6%E3%83%BC
レーザーポインター
http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC
・マイクロ波聴覚効果
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E6%B3%A2%E8%81%B4%E8%A6%9A%E5%8A%B9%E6%9E%9C
ファクトシートNo.226 1999年6月 電磁界と公衆衛生:「レーダーと人の健康」
http://www.who.int/peh-emf/publications/facts/radars_226.pdf
電波は聞こえるよーん。ここに詳しい解説があるから、勉強しておいてね。
『ガリレオ2』第3話の数式、パルス電磁波のフレイ効果による耳の奥の弾性波か
http://tenmei.cocolog-nifty.com/matcha/2013/04/post-6f27.html
これでも、電波は聞こえないという奴は、科学の敵だ。
784774ワット発電中さん
2016/08/28(日) 01:12:32.95ID:21NvIqvt 集団ストーカー・電磁波犯罪被害の加害装置はレーザー・メーザーらしいな
・レーザー兵器について知ろう!
ドキュメンタリー - 未来の戦争 レーザー兵器
https://www.youtube.com/watch?v=t6vPM-S1YdE
防ぐことは、ほぼ、不可能。核兵器以上かもね
・集団ストーカー・電磁波被害の加害装置がレーザー・メーザーによるものだとしたら、レーダーを使うはず。加害者にはこのように見えているハズ。ちょっと、エロです。
64MHzの電波を使って撮像しているMRIの動画
MRI Shows What Sex Looks Like From The INSIDE | What's Trending Now
https://www.youtube.com/watch?v=nDhYLaGPmGU
見えている各臓器、脳も含めて、レーザーを照射すれば、危害を加える行為が成立する
参考までにCTの動画
Radiologist discusses CT and xray small bowel obstruction Imaging
https://www.youtube.com/watch?v=8dNTHdUO_3Q
PCB Imaging: 3D/CT X-Ray Animated Slicing (Top to Bottom)
https://www.youtube.com/watch?v=itTkItXiHsk
・レーザー・メーザーが開発されたのが、1950年台以降、メーザー初の発振が1953年、レーザーの初の発振が1960年
https://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%82%B6%E3%83%BC
この記念すべき年以降の、人体の自然発火現象は怪しい
人体自然発火現象
https://ja.wikipedia.org/wiki/%E4%BA%BA%E4%BD%93%E8%87%AA%E7%84%B6%E7%99%BA%E7%81%AB%E7%8F%BE%E8%B1%A1
No.31 突然人間が燃え上がり、焼死に至る「人体発火現象」
http://ww5.tiki.ne.jp/~qyoshida/kaiki/31zintaihakka.htm
No.157 人体発火現象2
http://ww5.tiki.ne.jp/~qyoshida/kaiki2/157jintaihakka2.htm
人体 自然 発火現象 : 人の体が突然 灰になるまで 燃えつきる / 世界の衝撃ストーリー
dailymotionを上のタイトルで検索してみ
・モスクワシグナル事件
興味のある方は、集団ストーカー・電磁波犯罪被害の基礎知識として、知って下さい
あなたの脳は誰のもの?(1)モスクワシグナル 前編
http://nueq.exblog.jp/17871225/
あなたの脳は誰のもの?(2)モスクワシグナル 後編
http://nueq.exblog.jp/17875689/
・レーザー兵器について知ろう!
ドキュメンタリー - 未来の戦争 レーザー兵器
https://www.youtube.com/watch?v=t6vPM-S1YdE
防ぐことは、ほぼ、不可能。核兵器以上かもね
・集団ストーカー・電磁波被害の加害装置がレーザー・メーザーによるものだとしたら、レーダーを使うはず。加害者にはこのように見えているハズ。ちょっと、エロです。
64MHzの電波を使って撮像しているMRIの動画
MRI Shows What Sex Looks Like From The INSIDE | What's Trending Now
https://www.youtube.com/watch?v=nDhYLaGPmGU
見えている各臓器、脳も含めて、レーザーを照射すれば、危害を加える行為が成立する
参考までにCTの動画
Radiologist discusses CT and xray small bowel obstruction Imaging
https://www.youtube.com/watch?v=8dNTHdUO_3Q
PCB Imaging: 3D/CT X-Ray Animated Slicing (Top to Bottom)
https://www.youtube.com/watch?v=itTkItXiHsk
・レーザー・メーザーが開発されたのが、1950年台以降、メーザー初の発振が1953年、レーザーの初の発振が1960年
https://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%82%B6%E3%83%BC
この記念すべき年以降の、人体の自然発火現象は怪しい
人体自然発火現象
https://ja.wikipedia.org/wiki/%E4%BA%BA%E4%BD%93%E8%87%AA%E7%84%B6%E7%99%BA%E7%81%AB%E7%8F%BE%E8%B1%A1
No.31 突然人間が燃え上がり、焼死に至る「人体発火現象」
http://ww5.tiki.ne.jp/~qyoshida/kaiki/31zintaihakka.htm
No.157 人体発火現象2
http://ww5.tiki.ne.jp/~qyoshida/kaiki2/157jintaihakka2.htm
人体 自然 発火現象 : 人の体が突然 灰になるまで 燃えつきる / 世界の衝撃ストーリー
dailymotionを上のタイトルで検索してみ
・モスクワシグナル事件
興味のある方は、集団ストーカー・電磁波犯罪被害の基礎知識として、知って下さい
あなたの脳は誰のもの?(1)モスクワシグナル 前編
http://nueq.exblog.jp/17871225/
あなたの脳は誰のもの?(2)モスクワシグナル 後編
http://nueq.exblog.jp/17875689/
785774ワット発電中さん
2016/08/28(日) 01:12:47.62ID:21NvIqvt 「自分達は手を出さず人を追い込む方法があるんだってさ」
「多人数で人を追い込むんだってさ」
「電波攻撃で攻撃するんだってさ」
「他人の考えとか想いがわかる装置があるんだってさ」
集団ストーカー(組織的ストーカー行為)・電磁波被害の加害装置を持たせる時の誘い文句だそうです。
他にもいろいろあると思いますが、これに類するセリフを聞いた事がある人は、警察に一報をいれて貰えたらと思います。
「多人数で人を追い込むんだってさ」
「電波攻撃で攻撃するんだってさ」
「他人の考えとか想いがわかる装置があるんだってさ」
集団ストーカー(組織的ストーカー行為)・電磁波被害の加害装置を持たせる時の誘い文句だそうです。
他にもいろいろあると思いますが、これに類するセリフを聞いた事がある人は、警察に一報をいれて貰えたらと思います。
786774ワット発電中さん
2016/08/28(日) 11:28:16.64ID:4hUD09au >>782
矢印の向きが違う気がするけどport mapのことだよね?
であれば標準のVHDL-93はそういうもの。VHDLは何かと行数が増える。
VHDL-2008にしたらNG記述でも行けるはず。
でも、QuartusだとなぜかnotだけならVHDL-93でもNG記述で行けていたような気がする。
矢印の向きが違う気がするけどport mapのことだよね?
であれば標準のVHDL-93はそういうもの。VHDLは何かと行数が増える。
VHDL-2008にしたらNG記述でも行けるはず。
でも、QuartusだとなぜかnotだけならVHDL-93でもNG記述で行けていたような気がする。
787774ワット発電中さん
2016/08/28(日) 19:36:39.86ID:rlXywQpI >>782
行数増えるのが嫌な人が使う言語ではないわな、VHDLは。
行数増えるのが嫌な人が使う言語ではないわな、VHDLは。
788774ワット発電中さん
2016/08/28(日) 23:36:30.39ID:VQ+b249R alteraはMAX+plus IIの時代から、かなり汚い文法でも行けた。port mapに定数を置いたり。
789774ワット発電中さん
2016/08/30(火) 22:11:04.38ID:SgzUEwI4 port mapに定数よく使ってるけど本当はダメなのか。
でもいままでエラーになったツールはみたことないような気がする。
でもいままでエラーになったツールはみたことないような気がする。
790774ワット発電中さん
2016/10/07(金) 21:40:18.40ID:38Z+SGOz verilogで論理回路設計の勉強を始めたのですが
例えばあるクロックを生成するモジュールを作って、そのモジュールにワンショットのトリガー信号が入ったら、クロックを10発だけ出すといったような場合どういった記述をすればいいのでしょうか
例えばあるクロックを生成するモジュールを作って、そのモジュールにワンショットのトリガー信号が入ったら、クロックを10発だけ出すといったような場合どういった記述をすればいいのでしょうか
791774ワット発電中さん
2016/10/07(金) 22:16:36.36ID:j3+Wtknq >>790
省電力のためどうしてもというのでない限り、クロックを生成するような回路設計はやめた方がいい。
省電力のためどうしてもというのでない限り、クロックを生成するような回路設計はやめた方がいい。
792774ワット発電中さん
2016/10/07(金) 22:33:48.86ID:SyWqDWh6 クロックって書いちゃったからなぁ。
↓以下、ダメ出しが続きます。
↓以下、ダメ出しが続きます。
793774ワット発電中さん
2016/10/07(金) 23:15:46.77ID:3+IlyYvP 「クロック→パルス」って直します
794774ワット発電中さん
2016/10/08(土) 00:14:31.46ID:xBCdZsr7 >>790
まあカウンター使う感じじゃないの
まあカウンター使う感じじゃないの
795774ワット発電中さん
2016/10/08(土) 01:18:25.70ID:sFDtwLAt796774ワット発電中さん
2016/10/08(土) 14:47:31.31ID:tO3CgMWD トリガーは1でアクティブ
出力はデフォルトL
パルス幅は1クロック周期とする
異常状態は考えない
行頭空白はご愛嬌
input clk,xrst,trigger;
output pulse;
reg [4:0] count;
always@(posedge clk or negedge xrst) begin
if(~xrst) begin
count <= 5'd0;
end
else if(count > 0) begin
count <= count -5'd1;
end
else if(trigger) begin
count <= 5'd19;
end
end
assign pulse = count[0];
出力はデフォルトL
パルス幅は1クロック周期とする
異常状態は考えない
行頭空白はご愛嬌
input clk,xrst,trigger;
output pulse;
reg [4:0] count;
always@(posedge clk or negedge xrst) begin
if(~xrst) begin
count <= 5'd0;
end
else if(count > 0) begin
count <= count -5'd1;
end
else if(trigger) begin
count <= 5'd19;
end
end
assign pulse = count[0];
797774ワット発電中さん
2016/10/08(土) 15:26:40.51ID:ovbSp6gW >>796
画竜点晴を欠く
画竜点晴を欠く
798774ワット発電中さん
2016/10/08(土) 15:34:22.28ID:AFFtgHMK troggerを微分しなくていいの? 連続Hが来続けたら、スタートしないよ。
動作中に再trigger来たら、スタートに戻ってしまうよ。
input wire clk, nRESET, trigger;
output wire pulse;
reg p;
reg [4:0] count;
wire RESET;
assign RESET = ~nRESET;
always @ (posedge clk) begin
if (nRESET == 1'd1) begin
p <= 1'd0;
count <= 5'd0;
end else begin
if( p == 3'd0 ) begin
if( trigger == 1'd1 ) begin
count <= 5'd19;
p <= 3'd1;
end
end else if( p == 3'd1 ) begin
if(count > 5'd0) begin
count <= count -5'd1;
end else begin
p <= 3'd0;
count <= 5'd0;
end
end
end
end
assign pulse = count[0];
動作中に再trigger来たら、スタートに戻ってしまうよ。
input wire clk, nRESET, trigger;
output wire pulse;
reg p;
reg [4:0] count;
wire RESET;
assign RESET = ~nRESET;
always @ (posedge clk) begin
if (nRESET == 1'd1) begin
p <= 1'd0;
count <= 5'd0;
end else begin
if( p == 3'd0 ) begin
if( trigger == 1'd1 ) begin
count <= 5'd19;
p <= 3'd1;
end
end else if( p == 3'd1 ) begin
if(count > 5'd0) begin
count <= count -5'd1;
end else begin
p <= 3'd0;
count <= 5'd0;
end
end
end
end
assign pulse = count[0];
799774ワット発電中さん
2016/10/08(土) 15:35:29.33ID:AFFtgHMK まちがい
× if (nRESET == 1'd1) begin
○ if ( RESET == 1'd1) begin
× if (nRESET == 1'd1) begin
○ if ( RESET == 1'd1) begin
800774ワット発電中さん
2016/10/08(土) 15:40:00.85ID:/9RlcOC5 そうやって答を教えてしまっては…
801774ワット発電中さん
2016/10/08(土) 15:58:19.63ID:tO3CgMWD802774ワット発電中さん
2016/10/08(土) 18:25:03.78ID:IhihHlxD >>790です
ありがとうございます
減算を使ってですね。その発想は出なかったのですごく勉強になりました
トリガ信号は1クロック分のパルスを作るので大丈夫そうです
I2CやSPIのプログラムも自作で作ってみたいみたいのですが、同様の考え方で行うものでしょうか
ありがとうございます
減算を使ってですね。その発想は出なかったのですごく勉強になりました
トリガ信号は1クロック分のパルスを作るので大丈夫そうです
I2CやSPIのプログラムも自作で作ってみたいみたいのですが、同様の考え方で行うものでしょうか
803774ワット発電中さん
2016/10/08(土) 19:17:03.14ID:oqE2bdG+804774ワット発電中さん
2016/10/08(土) 20:45:35.69ID:C30lqwUN 魚に青なのか、その下が円なのかは、単に書体の違いぐらいらしいのに、
日の青なのか、その下が円なのかは、意味が違ってくるんだね。
サバと同じでどっちでも良いものだと思っていました。勉強になるわ。
日の青なのか、その下が円なのかは、意味が違ってくるんだね。
サバと同じでどっちでも良いものだと思っていました。勉強になるわ。
805774ワット発電中さん
2016/10/08(土) 21:23:53.88ID:AFFtgHMK >>802
>同様の考え方で行うものでしょうか
考え方は同じです。
秋月などの文字表示液晶の初期化などを作ると、しびれるほどエキサイティングです。
マイコン処理のように、ステップ毎に進んで行く処理は、
状態遷移を使って処理していきます。
always @( posedge CLOCK ) begin
if(リセット=1)なら、
その他のFF=初期値にして
状態遷移=0にして
そうではなくて通常なら、
if(状態=0)のなら
if(○○=xx)になったら
aaをして
次は状態=1に行く
end
そうでなくてif(状態=1)なら
if(vvvv)なら
WWWWをして
次は状態=2に行く
end
そうでなくてif(状態=2)なら
if(UUUU)なら
DDDDをして
次は状態=3に行く
end
そうでなくてif(状態=xx)なら
if(UUUU)なら
DDDDをして
次は状態=0に行く
end
end
毎回スキャンしたいことは、ここに書く。
あるいは、
別の状態のグループを置いてもいい。(簡単なマルチタスクのイメージ)
end
end
という感じにすれば、
微分も必要ないし、思い通りの処理ができます。
流れを変えたければ、状態番号を変えるだけで楽だし、
状態の値で、どこを処理しているかわかるので、LEDなどでデバッグ
しやすいです。
この方法に気づくまでは、毎晩徹夜ばかりしていました。
>同様の考え方で行うものでしょうか
考え方は同じです。
秋月などの文字表示液晶の初期化などを作ると、しびれるほどエキサイティングです。
マイコン処理のように、ステップ毎に進んで行く処理は、
状態遷移を使って処理していきます。
always @( posedge CLOCK ) begin
if(リセット=1)なら、
その他のFF=初期値にして
状態遷移=0にして
そうではなくて通常なら、
if(状態=0)のなら
if(○○=xx)になったら
aaをして
次は状態=1に行く
end
そうでなくてif(状態=1)なら
if(vvvv)なら
WWWWをして
次は状態=2に行く
end
そうでなくてif(状態=2)なら
if(UUUU)なら
DDDDをして
次は状態=3に行く
end
そうでなくてif(状態=xx)なら
if(UUUU)なら
DDDDをして
次は状態=0に行く
end
end
毎回スキャンしたいことは、ここに書く。
あるいは、
別の状態のグループを置いてもいい。(簡単なマルチタスクのイメージ)
end
end
という感じにすれば、
微分も必要ないし、思い通りの処理ができます。
流れを変えたければ、状態番号を変えるだけで楽だし、
状態の値で、どこを処理しているかわかるので、LEDなどでデバッグ
しやすいです。
この方法に気づくまでは、毎晩徹夜ばかりしていました。
806774ワット発電中さん
2016/10/08(土) 22:53:47.87ID:rncrFR0r これじゃダメかな。
integer i;
reg CLK;
always @( posedge TRIGGER) begin
for( i=1; i<=10; i=i+1) begin
CLK = 1'b1;
#10 CLK = 1'b0;
#10;
end
end
integer i;
reg CLK;
always @( posedge TRIGGER) begin
for( i=1; i<=10; i=i+1) begin
CLK = 1'b1;
#10 CLK = 1'b0;
#10;
end
end
807774ワット発電中さん
2016/10/08(土) 23:31:35.17ID:oqE2bdG+ >>804
残念。月と円の違いもあるけど本質的じゃなく、
本当の違いは左側が「日」か「目」か。
晴は天気の良いことだけど、睛は「ひとみ」の意味なんだよ。
画竜点睛を欠くとは、
絵にかいた龍に最後に書き入れる目が足りないという意味。
「がりょうてんせい」全体で漢字変換する事を勧める。
スレチでした。
残念。月と円の違いもあるけど本質的じゃなく、
本当の違いは左側が「日」か「目」か。
晴は天気の良いことだけど、睛は「ひとみ」の意味なんだよ。
画竜点睛を欠くとは、
絵にかいた龍に最後に書き入れる目が足りないという意味。
「がりょうてんせい」全体で漢字変換する事を勧める。
スレチでした。
808774ワット発電中さん
2016/10/08(土) 23:34:04.34ID:h82z50Iq >>802
横からだけど
「減算で」っていうのは必須じゃないよ
ある値まで加算する、っていうのでもいいし、実装したときの
使用リソースも(固定値と比較する場合は)変わらないはず
減算が有利なのはカウント値をプログラマブルにするときかな
横からだけど
「減算で」っていうのは必須じゃないよ
ある値まで加算する、っていうのでもいいし、実装したときの
使用リソースも(固定値と比較する場合は)変わらないはず
減算が有利なのはカウント値をプログラマブルにするときかな
809774ワット発電中さん
2016/10/09(日) 00:37:27.65ID:wbyXhJ5E810774ワット発電中さん
2016/10/09(日) 04:02:32.81ID:yYvEbQTn >>809
上の798さんのサンプル見ても分かるとおり、出力するパルスは
FPGAのクロックとイコールじゃない
I2CのSCL,SDAも同じことで、SCLをクロックと考えると間違える
あくまでもFPGAのクロックから生成されるパルスだってことを
しっかり押さえといがほうがいい
上の798さんのサンプル見ても分かるとおり、出力するパルスは
FPGAのクロックとイコールじゃない
I2CのSCL,SDAも同じことで、SCLをクロックと考えると間違える
あくまでもFPGAのクロックから生成されるパルスだってことを
しっかり押さえといがほうがいい
811774ワット発電中さん
2016/10/09(日) 04:37:24.58ID:oJtloawK813774ワット発電中さん
2016/10/09(日) 10:22:01.41ID:tPYLHFhE 申し訳ありません。
シミュレーションするためのクロックだと思ったので。
論理合成するならこちら
reg [1:0] t2;
reg [4:0] count;
reg CLK2; // variable
always @( posedge CLK ) begin
if( t2 == 2'b01 ) begin
count = 5'd20;
end
else begin
if( count != 5'd0 ) begin
count = count - 1'b1;
end
end
CLK2 = count[0];
t2 = {t2[0], TRIGGER};
end
減算に 1'b1 としているのは回路の初期にカウンタを推定させるため
20年ぐらい前の古い書き方かも知れません。
シミュレーションするためのクロックだと思ったので。
論理合成するならこちら
reg [1:0] t2;
reg [4:0] count;
reg CLK2; // variable
always @( posedge CLK ) begin
if( t2 == 2'b01 ) begin
count = 5'd20;
end
else begin
if( count != 5'd0 ) begin
count = count - 1'b1;
end
end
CLK2 = count[0];
t2 = {t2[0], TRIGGER};
end
減算に 1'b1 としているのは回路の初期にカウンタを推定させるため
20年ぐらい前の古い書き方かも知れません。
814774ワット発電中さん
2016/10/09(日) 10:37:12.99ID:WBW8mo1f んじゃ、あたいからは一点。
FFだと考えてるならノンブロッキング代入文を使おう。
文中だけでも、CLK2とかSimと実物で動き変わんで。
FFだと考えてるならノンブロッキング代入文を使おう。
文中だけでも、CLK2とかSimと実物で動き変わんで。
815774ワット発電中さん
2016/10/09(日) 10:50:29.28ID:tPYLHFhE816774ワット発電中さん
2016/10/09(日) 10:55:48.24ID:oJtloawK .
インデントされていないと、読む気にならないので添削した
reg [1:0] t2;
reg [4:0] count;
reg CLK2; // variable ← 出力のことでしょ?
always @( posedge CLK ) begin
t2 = {t2[0], TRIGGER}; // 意味合い的に、この位置に書こう
// = でいいの? <=ではなくて?
if( t2 == 2'b01 ) begin
count = 5'd20;
end else begin
if( count != 5'd0 ) begin
// count = count - 1'b1; // = は間違いと思う
count <= count - 1'b1; //
end
end
// CLK2 = count[0]; // = でいいの? <=ではなくて?
CLK2 <= count[0]; //
end
インデントされていないと、読む気にならないので添削した
reg [1:0] t2;
reg [4:0] count;
reg CLK2; // variable ← 出力のことでしょ?
always @( posedge CLK ) begin
t2 = {t2[0], TRIGGER}; // 意味合い的に、この位置に書こう
// = でいいの? <=ではなくて?
if( t2 == 2'b01 ) begin
count = 5'd20;
end else begin
if( count != 5'd0 ) begin
// count = count - 1'b1; // = は間違いと思う
count <= count - 1'b1; //
end
end
// CLK2 = count[0]; // = でいいの? <=ではなくて?
CLK2 <= count[0]; //
end
817774ワット発電中さん
2016/10/09(日) 11:34:56.56ID:tPYLHFhE >>816
重ね重ねすいません。
書き直しました。
wire CLK2;
reg [1:0] t2;
reg [4:0] count;
assign CLK2 = count[0];
always @( posedge CLK ) begin
t2 <= {t2[0], TRIGGER};
if( t2 == 2'b01 ) begin
count <= 5'd20;
end
else begin
if( count != 5'd0 ) begin
count <= count - 1'b1;
end
end
end
重ね重ねすいません。
書き直しました。
wire CLK2;
reg [1:0] t2;
reg [4:0] count;
assign CLK2 = count[0];
always @( posedge CLK ) begin
t2 <= {t2[0], TRIGGER};
if( t2 == 2'b01 ) begin
count <= 5'd20;
end
else begin
if( count != 5'd0 ) begin
count <= count - 1'b1;
end
end
end
818774ワット発電中さん
2016/10/09(日) 12:22:33.75ID:oJtloawK819774ワット発電中さん
2016/10/09(日) 14:43:09.92ID:Lq5j80jZ 検証してないコードはウンコード。
820774ワット発電中さん
2016/10/09(日) 20:30:48.86ID:DZ8xF1HN ブロッキング代入怖い病か?
821774ワット発電中さん
2016/10/09(日) 21:06:31.61ID:SofKAkkl わざわざブロッキングを使う理由がわからない。
822774ワット発電中さん
2016/10/09(日) 21:33:45.42ID:wJJOjKYk それな
823774ワット発電中さん
2016/10/09(日) 22:36:37.65ID:tPYLHFhE 自分はブロッキング代入が良いですね。
824774ワット発電中さん
2016/10/09(日) 22:42:44.88ID:b9rLnd16825774ワット発電中さん
2016/10/09(日) 23:29:59.27ID:tPYLHFhE こっちの記述の方が良いわ。
reg [1:0] t2;
reg [19:0] line_buf;
reg CLK;
always @( posedge CLKx2 ) begin
if( t2 == 2'b01 ) begin
CLK = 1'b0;
line_buf = 20'b1010101010101010101010101010101010101010;
end
else begin
{CLK, line_buf} = {line_buf, 1'b0};
end
t2 = {t2[0], TRIGGER};
end
reg [1:0] t2;
reg [19:0] line_buf;
reg CLK;
always @( posedge CLKx2 ) begin
if( t2 == 2'b01 ) begin
CLK = 1'b0;
line_buf = 20'b1010101010101010101010101010101010101010;
end
else begin
{CLK, line_buf} = {line_buf, 1'b0};
end
t2 = {t2[0], TRIGGER};
end
826774ワット発電中さん
2016/10/10(月) 01:50:38.95ID:yG1AVqIm >>824
はい、よくないです。
5bit幅の変数に、1bit幅の1は減算できません。
5bit幅の変数には、同じ5bit幅の1、00001を減算します。
あと、if() else では、どちらの場合でも ちゃんと変数の値を指定しましょう。
例
if( t2 == 2'b01 ) begin
CLK <= 1'b0;
end
と、書く人が多いですが、ちゃんと
if( t2 == 2'b01 ) begin
CLK <= 1'b0;
end else begin
CLK <= 1'b1;
end
のように書きましょう。
はい、よくないです。
5bit幅の変数に、1bit幅の1は減算できません。
5bit幅の変数には、同じ5bit幅の1、00001を減算します。
あと、if() else では、どちらの場合でも ちゃんと変数の値を指定しましょう。
例
if( t2 == 2'b01 ) begin
CLK <= 1'b0;
end
と、書く人が多いですが、ちゃんと
if( t2 == 2'b01 ) begin
CLK <= 1'b0;
end else begin
CLK <= 1'b1;
end
のように書きましょう。
827774ワット発電中さん
2016/10/10(月) 03:59:02.07ID:/UcYzAMc FFは<=
組み合わせ論理は=
FFで<=使わないのは分周クロック生成ぐらい。
組み合わせ論理は=
FFで<=使わないのは分周クロック生成ぐらい。
828774ワット発電中さん
2016/10/10(月) 07:57:54.61ID:SJoJLhav829774ワット発電中さん
2016/10/10(月) 08:11:18.99ID:yZ3oZRGD >>826
それは間違い。
//a--------------
if( t2 == 2'b01 ) begin
CLK <= 1'b0;
end
//b-----------------
if( t2 == 2'b01 ) begin
CLK <= 1'b0;
end else begin
CLK <= 1'b1;
end
a,bは意味がちがう。
aは
if( t2 == 2'b01 ) begin
CLK <= 1'b0;
end else
CLK <= CLK;
に等価だ。
それに不必要なbegin endは入れない。ビット幅が決まっているのに
いちいちビットを指定してはいけない。わかりづらい。
if( t2 == 2'b01 )
CLK <= 0;
else
CLK <= 1;
もしくは
CLK = (t2 == 2'b01) ? 1 : 0;
それは間違い。
//a--------------
if( t2 == 2'b01 ) begin
CLK <= 1'b0;
end
//b-----------------
if( t2 == 2'b01 ) begin
CLK <= 1'b0;
end else begin
CLK <= 1'b1;
end
a,bは意味がちがう。
aは
if( t2 == 2'b01 ) begin
CLK <= 1'b0;
end else
CLK <= CLK;
に等価だ。
それに不必要なbegin endは入れない。ビット幅が決まっているのに
いちいちビットを指定してはいけない。わかりづらい。
if( t2 == 2'b01 )
CLK <= 0;
else
CLK <= 1;
もしくは
CLK = (t2 == 2'b01) ? 1 : 0;
830774ワット発電中さん
2016/10/10(月) 08:16:37.85ID:yZ3oZRGD >q <= 0 としてたけど、これもいけない子ですか?
このほうが良い。ビット幅を指定しないと誤まるようなコンパイラは今ではない。
であるから悪習は早くやめるべき。
このほうが良い。ビット幅を指定しないと誤まるようなコンパイラは今ではない。
であるから悪習は早くやめるべき。
831774ワット発電中さん
2016/10/10(月) 08:31:32.15ID:yZ3oZRGD >>817
if( t2 == 1 )
count <= 20;
else if( count != 0 )
count <= count - 1;
このほうが見やすいだろ。
if( t2 == 1 )
count <= 20;
else if( count != 0 )
count <= count - 1;
このほうが見やすいだろ。
832774ワット発電中さん
2016/10/10(月) 09:43:44.24ID:6iMx+As8 >>830
ありがとう
ちょっと安心しました
ついでにもう一ついいですか?
モジュールの接続は
MODULE_A MODA(
.a(a),
.b(b)
);
と
MODULE_A MODA(a,b);
のどちらの記述がいいですか?
ありがとう
ちょっと安心しました
ついでにもう一ついいですか?
モジュールの接続は
MODULE_A MODA(
.a(a),
.b(b)
);
と
MODULE_A MODA(a,b);
のどちらの記述がいいですか?
833774ワット発電中さん
2016/10/10(月) 10:36:24.05ID:yG1AVqIm834774ワット発電中さん
2016/10/10(月) 10:51:47.37ID:6iMx+As8835774ワット発電中さん
2016/10/10(月) 11:22:58.52ID:Q6I3vfg+ >>826
いい加減なこと書くのは良くないよ。
いい加減なこと書くのは良くないよ。
836774ワット発電中さん
2016/10/10(月) 11:44:56.86ID:MzKpf8a7 古いDesign Compiler の制約を引きずった書き方してきたので
最近の記述方法が知りたいなあ。
論理合成のために、こんな記述してた。
count = count - 1'b1;
A = A + B + 1'b1;
最近の記述方法が知りたいなあ。
論理合成のために、こんな記述してた。
count = count - 1'b1;
A = A + B + 1'b1;
837774ワット発電中さん
2016/10/10(月) 12:41:26.14ID:yZ3oZRGD >>833
ISEはそうなの? Primeしか知らない。Primeは問題なし。
ISEはそうなの? Primeしか知らない。Primeは問題なし。
838774ワット発電中さん
2016/10/10(月) 12:42:02.60ID:yZ3oZRGD Verilogのテクとして
ifロジック記述ではbegin endは使わない。
どうしても必要な大きなロジックの場合はfunctionにする。
したがって大きな組み合わせ回路はすべてfunctionで書く。
★alwaysを使った組み合わせ回路は書かない。
このようにするとregとwireが意味的に混在することがない。
これはverilog文法の混乱している箇所だから、禁則にする。
<=はレジスタライト専用
=はアサイン、組み合わせ回路専用
最近verilogを始めたばかりだが、驚くほど間違った通説があるようだ。
言語もひどいが教科書が酷い。間違いが多い。
alwaysで組み合わせを書くときにはregで定義するとか、何を考えて
コンパイラを作ったのか理解に苦しむ。
ifロジック記述ではbegin endは使わない。
どうしても必要な大きなロジックの場合はfunctionにする。
したがって大きな組み合わせ回路はすべてfunctionで書く。
★alwaysを使った組み合わせ回路は書かない。
このようにするとregとwireが意味的に混在することがない。
これはverilog文法の混乱している箇所だから、禁則にする。
<=はレジスタライト専用
=はアサイン、組み合わせ回路専用
最近verilogを始めたばかりだが、驚くほど間違った通説があるようだ。
言語もひどいが教科書が酷い。間違いが多い。
alwaysで組み合わせを書くときにはregで定義するとか、何を考えて
コンパイラを作ったのか理解に苦しむ。
839774ワット発電中さん
2016/10/10(月) 12:48:20.08ID:Qmw2RVOM 言語仕様で出来上がりが確定しちゃうより
中の人に自由に頑張って貰って、よりラッチやら何やら減らして貰った方が良いじゃん
中の人に自由に頑張って貰って、よりラッチやら何やら減らして貰った方が良いじゃん
840774ワット発電中さん
2016/10/10(月) 13:15:46.21ID:MzKpf8a7 >>838
言語がひどいとならVHDLを使った方が良いと思うよ。
言語がひどいとならVHDLを使った方が良いと思うよ。
841774ワット発電中さん
2016/10/10(月) 14:18:00.41ID:eSYzpTpi842774ワット発電中さん
2016/10/10(月) 14:24:04.65ID:Q6I3vfg+843774ワット発電中さん
2016/10/10(月) 14:56:07.73ID:zcGo6JRy >>838
System Verilogを使うといいぞ。
System Verilogを使うといいぞ。
844774ワット発電中さん
2016/10/10(月) 18:36:10.58ID:PcSZfyN6 838は自分ルールとしては概ね合理性あるように思うけど
if文でbegin〜end使うなっていうのはちょっと無理があるような
if文でbegin〜end使うなっていうのはちょっと無理があるような
845774ワット発電中さん
2016/10/10(月) 19:08:22.79ID:eSYzpTpi if文でbegin〜end使うなっていうのは、マイコンのアセンブラみたい。
次の行を実効するか、1つ飛ばした行を実効するか、みたいな。
実効 → 実行のまちがいです。
次の行を実効するか、1つ飛ばした行を実効するか、みたいな。
実効 → 実行のまちがいです。
846774ワット発電中さん
2016/10/10(月) 19:19:45.06ID:6IT8b84b847774ワット発電中さん
2016/10/10(月) 19:44:06.11ID:DoI5RKN2848774ワット発電中さん
2016/10/11(火) 04:42:00.08ID:03S+S6sS >begin endは使わない
わいは逆やな。if分岐では必ずbegin endで括る。
case文では可読性重視で削ってるけど。
わいは逆やな。if分岐では必ずbegin endで括る。
case文では可読性重視で削ってるけど。
849774ワット発電中さん
2016/10/11(火) 11:50:45.12ID:rkzrhgEy >>842
まあ例外もあるからどうしてもってときは許可する。
しかしこれのほうがいい。4行が2行だし、紙が節約できる。
enable <= (x == a);
data <= (x == a) ? hoge : data;
always もbeginendはなるべく入れない。
モジュールのinput,outputは2度書きしない。
module oneshot(input clk, reset, pls, output pr_q);
reg srff; wire cy; reg [3:0] count_q;
assign pr_q = srff;
assign cy = (count_q == 4'd10);
always @(posedge clk or posedge reset)
if (reset)
srff <= 0;
else if (pls | cy)
srff <= pls & (!cy);
always @(posedge clk or posedge reset)
if (reset)
count_q <= 0;
else if (srff)
count_q <= cy ? 0 : count_q + 1;
endmodule
まあ例外もあるからどうしてもってときは許可する。
しかしこれのほうがいい。4行が2行だし、紙が節約できる。
enable <= (x == a);
data <= (x == a) ? hoge : data;
always もbeginendはなるべく入れない。
モジュールのinput,outputは2度書きしない。
module oneshot(input clk, reset, pls, output pr_q);
reg srff; wire cy; reg [3:0] count_q;
assign pr_q = srff;
assign cy = (count_q == 4'd10);
always @(posedge clk or posedge reset)
if (reset)
srff <= 0;
else if (pls | cy)
srff <= pls & (!cy);
always @(posedge clk or posedge reset)
if (reset)
count_q <= 0;
else if (srff)
count_q <= cy ? 0 : count_q + 1;
endmodule
850774ワット発電中さん
2016/10/11(火) 12:06:37.08ID:rkzrhgEy >>841
798はちょっと意味わからんのだけど、ワンショット回路なら↑ね。
798はちょっと意味わからんのだけど、ワンショット回路なら↑ね。
851774ワット発電中さん
2016/10/11(火) 12:11:14.96ID:rkzrhgEy なんで非同期リセットをいれるかというとRTLがきれいになる。非同期リセットを
入れないと、プリミティブのクロックイネーブルを使わない回路になりやすい。
ある寺の場合だけど。
しかたないので非同期リセットを入れてる。W
入れないと、プリミティブのクロックイネーブルを使わない回路になりやすい。
ある寺の場合だけど。
しかたないので非同期リセットを入れてる。W
852774ワット発電中さん
2016/10/11(火) 12:33:52.34ID:rkzrhgEy >わいは逆やな。if分岐では必ずbegin endで括る。
いろいろ試してみたがbegin endは煮ても焼いても食えない。
悪いことはいわん、とにかく削除すべし。
いろいろ試してみたがbegin endは煮ても焼いても食えない。
悪いことはいわん、とにかく削除すべし。
853774ワット発電中さん
2016/10/11(火) 12:40:29.15ID:uySzsvl5 >>849
> if(reset)
> srff<=0;
もう1行増えたらどうするの? begin end 使うのですよね?
if(reset)
srff<=0;
dff<=1;
> if(reset)
> srff<=0;
もう1行増えたらどうするの? begin end 使うのですよね?
if(reset)
srff<=0;
dff<=1;
854774ワット発電中さん
2016/10/11(火) 14:05:11.72ID:rkzrhgEy if(reset)
{srff,dff}<= {0,1};
上の奴もこういう書き方が望ましい。
if(x==A)
{enable, data} <= {1, hoge};
{srff,dff}<= {0,1};
上の奴もこういう書き方が望ましい。
if(x==A)
{enable, data} <= {1, hoge};
855774ワット発電中さん
2016/10/11(火) 14:13:45.21ID:rkzrhgEy >もう1行増えたらどうするの? begin end 使うのですよね?
300ページある教科書をみたが、一か所も必要ないな。
それから
独自cpu開発って本400ページあるのをみたがパイプライン処理のところ
1箇所くらいやな。
あとはbegin end 削ったらずいぶん簡単なソースコードになる。
コードが激減する。
300ページある教科書をみたが、一か所も必要ないな。
それから
独自cpu開発って本400ページあるのをみたがパイプライン処理のところ
1箇所くらいやな。
あとはbegin end 削ったらずいぶん簡単なソースコードになる。
コードが激減する。
856774ワット発電中さん
2016/10/11(火) 14:45:05.76ID:rkzrhgEy だから複雑な組み合わせが発生する可能性はもちろんある。その場合はfunction
で書く。
しかし普通の制御はbegin endなんて必要ない。必要な時は下手な回路やと考えて
間違いない。
教科書に一か所もないというのは嘘で、必要なところは一か所もないということ。
例えばシリパラ変換
reg [7:0] ps;
begin
ps <= ps <<1;
ps[0] <= si;
end
こんな風に教科書にはかいてあるが,こんな書き方はまずい。
正しくは
ps <= {ps[6:0] << 1, si};
こうすると意味がはっきりする。
で書く。
しかし普通の制御はbegin endなんて必要ない。必要な時は下手な回路やと考えて
間違いない。
教科書に一か所もないというのは嘘で、必要なところは一か所もないということ。
例えばシリパラ変換
reg [7:0] ps;
begin
ps <= ps <<1;
ps[0] <= si;
end
こんな風に教科書にはかいてあるが,こんな書き方はまずい。
正しくは
ps <= {ps[6:0] << 1, si};
こうすると意味がはっきりする。
857774ワット発電中さん
2016/10/11(火) 14:47:35.71ID:rkzrhgEy もっと分かり易くかくとすると
{ps[7:1],ps[0]} <= {ps[6:0] << 1, si};
{ps[7:1],ps[0]} <= {ps[6:0] << 1, si};
858774ワット発電中さん
2016/10/11(火) 14:55:13.78ID:03S+S6sS > {srff,dff}<= {0,1};
こういうの見ただけで儂の頭がバグりそうになる。
こういうの見ただけで儂の頭がバグりそうになる。
859774ワット発電中さん
2016/10/11(火) 15:18:54.51ID:rkzrhgEy >858
慣れよ。
ただし、その場合にはbit幅を指定しないとエラーになる。
正しくは
{srff, dff} <= {1'd0, 1'd1};
ちょっと見づらいな。
{srff, dff} <= {low, high};
これなら見やすいが,,,,
慣れよ。
ただし、その場合にはbit幅を指定しないとエラーになる。
正しくは
{srff, dff} <= {1'd0, 1'd1};
ちょっと見づらいな。
{srff, dff} <= {low, high};
これなら見やすいが,,,,
860774ワット発電中さん
2016/10/11(火) 15:24:17.83ID:03S+S6sS 慣れでエラー仕込むなよw
861774ワット発電中さん
2016/10/11(火) 15:37:36.54ID:rkzrhgEy 俺もまだ慣れてないからな。W
862774ワット発電中さん
2016/10/11(火) 15:39:30.59ID:03S+S6sS >ps <= {ps[6:0] << 1, si};
これも慣れ?
これも慣れ?
863774ワット発電中さん
2016/10/11(火) 15:45:00.29ID:MqMlpS1H864774ワット発電中さん
2016/10/11(火) 16:10:19.48ID:03S+S6sS pythonぽいという意味では今風。
そういう書き方にカブレて言語批判を繰り広げるも、
実力が伴わずバグを続出。
そういう書き方にカブレて言語批判を繰り広げるも、
実力が伴わずバグを続出。
865774ワット発電中さん
2016/10/11(火) 17:35:01.45ID:b2rTYmZ5 >>856
教科書のは、合成できんやろ。
教科書のは、合成できんやろ。
866774ワット発電中さん
2016/10/11(火) 18:01:09.86ID:uySzsvl5 カッコ内に○×をつけてください
( ) begin end を使わないほうが、コンパイル時間が速い
( ) begin end を使う ほうが、コンパイル時間が速い
( ) begin end を使っても使わなくても、コンパイル時間は変わらない
( ) begin end を使わないほうが、FFの使用量が少ない
( ) begin end を使う ほうが、FFの使用量が少ない
( ) begin end を使っても使わなくても、FFの使用量は変わらない
( ) begin end を使わないほうが、コンパイル時間が速い
( ) begin end を使う ほうが、コンパイル時間が速い
( ) begin end を使っても使わなくても、コンパイル時間は変わらない
( ) begin end を使わないほうが、FFの使用量が少ない
( ) begin end を使う ほうが、FFの使用量が少ない
( ) begin end を使っても使わなくても、FFの使用量は変わらない
867774ワット発電中さん
2016/10/11(火) 18:29:13.69ID:gdPhewZD あーいるいるPython風に書く人
868774ワット発電中さん
2016/10/11(火) 19:10:50.51ID:rkzrhgEy Python一目見たが好きになれないな。W
どこが似てるのかなーー?
begin endは大きなゴミ。まずは大きなゴミは履いて捨てる。
ゴミの代わりに?とリストを積極的に使うだけだものな。
assign decode = !ena ? 4'b0000 :
sel == 0 ? 4'b0001 :
sel == 1 ? 4'b0010 :
sel == 2 ? 4'b0100 :
sel == 3 ? 4'b1000 :
4'bxxxx ;
?のこんな使い方はCライクだと思うが、、、どこがPython?
begin
ps <= ps <<1;
ps[0] <= si;
end
こんなんより
ps <= { ps[6:0] << 1, si };
このほうが昔も今もセンスは上だな
どこが似てるのかなーー?
begin endは大きなゴミ。まずは大きなゴミは履いて捨てる。
ゴミの代わりに?とリストを積極的に使うだけだものな。
assign decode = !ena ? 4'b0000 :
sel == 0 ? 4'b0001 :
sel == 1 ? 4'b0010 :
sel == 2 ? 4'b0100 :
sel == 3 ? 4'b1000 :
4'bxxxx ;
?のこんな使い方はCライクだと思うが、、、どこがPython?
begin
ps <= ps <<1;
ps[0] <= si;
end
こんなんより
ps <= { ps[6:0] << 1, si };
このほうが昔も今もセンスは上だな
869774ワット発電中さん
2016/10/11(火) 20:35:41.71ID:03S+S6sS × ps <= { ps[6:0] << 1, si };
○ ps <= { ps[6:0], si };
○ ps <= { ps[6:0], si };
870774ワット発電中さん
2016/10/11(火) 22:16:06.01ID:l9D3Os+V ・マイクロ波の危険性 法の外にいる御用学者達
https://www.youtube.com/watch?v=EJluXfJQCuk
・元MI5部員Dr. Barrie Trowerの語る電磁波兵器@
https://www.youtube.com/watch?v=NRoN2Fsci3o
・ニック・ベグジェッチ博士 HAARP 機密科学ハイテク洗脳@
https://www.youtube.com/watch?v=Kpf2iKOtSfg
動画「陰謀論 脳侵略者」
https://vimeo.com/119665215
https://vimeo.com/118485020
https://vimeo.com/119029616
それぞれの動画の加害装置の電磁波の出力が「小さい」と言っている理由について
レーザーに例えると、60Wでプラズマ核融合炉のプラズマを発生させるためにつかっているのに対して、家庭では電球が60W
このギャップに気付かなければならない
誘導放出され、増幅されたマイクロ波を計測するのではなく、メーザーの出力の表示の数字が強さの目安
だから、動画のインタビューに出てくる人達は、「弱い」とか「小さい」という単語を使っていると思われ
https://www.youtube.com/watch?v=EJluXfJQCuk
・元MI5部員Dr. Barrie Trowerの語る電磁波兵器@
https://www.youtube.com/watch?v=NRoN2Fsci3o
・ニック・ベグジェッチ博士 HAARP 機密科学ハイテク洗脳@
https://www.youtube.com/watch?v=Kpf2iKOtSfg
動画「陰謀論 脳侵略者」
https://vimeo.com/119665215
https://vimeo.com/118485020
https://vimeo.com/119029616
それぞれの動画の加害装置の電磁波の出力が「小さい」と言っている理由について
レーザーに例えると、60Wでプラズマ核融合炉のプラズマを発生させるためにつかっているのに対して、家庭では電球が60W
このギャップに気付かなければならない
誘導放出され、増幅されたマイクロ波を計測するのではなく、メーザーの出力の表示の数字が強さの目安
だから、動画のインタビューに出てくる人達は、「弱い」とか「小さい」という単語を使っていると思われ
871774ワット発電中さん
2016/10/11(火) 23:12:53.94ID:uySzsvl5 assign decode = !ena ? 4'b0000 :
sel == 0 ? 4'b0001 :
sel == 1 ? 4'b0010 :
sel == 2 ? 4'b0100 :
sel == 3 ? 4'b1000 :
バスのアドレスデコーダで、こんな書き方していました
sel == 0 ? 4'b0001 :
sel == 1 ? 4'b0010 :
sel == 2 ? 4'b0100 :
sel == 3 ? 4'b1000 :
バスのアドレスデコーダで、こんな書き方していました
872774ワット発電中さん
2016/10/11(火) 23:39:53.72ID:DM05OVZL >>849
紙を節約したいならalwaysもifも改行せずに1行にしたほうがいいんじゃないの?
紙を節約したいならalwaysもifも改行せずに1行にしたほうがいいんじゃないの?
873774ワット発電中さん
2016/10/12(水) 00:01:32.75ID:vHLBvbps >>864
登場から25年経ってる言語が今風なのかね
登場から25年経ってる言語が今風なのかね
874774ワット発電中さん
2016/10/12(水) 01:23:35.50ID:KzFQnxH+ >○ ps <= { ps[6:0], si };
そうか。こうだ!!!
めっちゃ美しい。
ps <= ps <<1;
こんな書き方では最下位ビットはどうなるのかわからん。
<<の演算子はいらないな。どう考えても使い道がない。ゴミ決定。
ifのbegin end,<<,>> 使用禁止
そうか。こうだ!!!
めっちゃ美しい。
ps <= ps <<1;
こんな書き方では最下位ビットはどうなるのかわからん。
<<の演算子はいらないな。どう考えても使い道がない。ゴミ決定。
ifのbegin end,<<,>> 使用禁止
875774ワット発電中さん
2016/10/12(水) 01:24:05.70ID:KzFQnxH+ >紙を節約したいならalwaysもifも改行せずに1行にしたほうがいいんじゃないの?
alwaysを1行にするのはダメ。
ifを1行にするのはありだとは思う。しかし
always @(posedge clk or posedge reset)
if (reset) //DFFの非同期リセット
count_q <= 0;
else if (srff) //DFFのクロックエネーブル
count_q <= cy ? 0 : count_q + 1; //DFFのデータ
RTLをみると上は
count[*].clr =(reset) //DFFの非同期リセット
count[*].ena =(srff) //DFFのクロックエネーブル
count[*].d = cy ? 0 : count[*].q + 1; //DFFのデータ
のように合成される。
ifはenableを意識した書き方だな。
alwaysを1行にするのはダメ。
ifを1行にするのはありだとは思う。しかし
always @(posedge clk or posedge reset)
if (reset) //DFFの非同期リセット
count_q <= 0;
else if (srff) //DFFのクロックエネーブル
count_q <= cy ? 0 : count_q + 1; //DFFのデータ
RTLをみると上は
count[*].clr =(reset) //DFFの非同期リセット
count[*].ena =(srff) //DFFのクロックエネーブル
count[*].d = cy ? 0 : count[*].q + 1; //DFFのデータ
のように合成される。
ifはenableを意識した書き方だな。
876774ワット発電中さん
2016/10/12(水) 06:08:52.13ID:APrV9kJg877774ワット発電中さん
2016/10/12(水) 06:10:37.09ID:C5En5uqG おまえら、VHDL使え。Verilogの緩い文法議論が、くそうぜえ。使ってないから、そういう議論が頭悪いことに気づかないのか
878774ワット発電中さん
2016/10/12(水) 06:13:42.62ID:C5En5uqG if文でbegin〜end は必ず使え<VHDL上がりの意見。
879774ワット発電中さん
2016/10/12(水) 06:36:12.10ID:Z8kt2vjy880774ワット発電中さん
2016/10/12(水) 07:04:43.82ID:C5En5uqG >>879
ニッポンから技術者が消えて、馬鹿な豚どもになりつつあるんだよ。だから仕方が無い。
ニッポンから技術者が消えて、馬鹿な豚どもになりつつあるんだよ。だから仕方が無い。
881774ワット発電中さん
2016/10/12(水) 07:08:13.45ID:C5En5uqG >>874
ps[7:0] <= { ps[6:0], si };
ps(7 downto 0) <= (ps(6 downto 0) & si );
じゃないとだめ。
ああ、VHDLしばらく触らせてもらえないから忘れてきた。
つうか、大手半導体レイアウト会社でも、VHDLをどうして使うかってわかんないんだな。しっかり、符号演算のためって書いてあげたのに。
ニッポンやバイヨ。
ps[7:0] <= { ps[6:0], si };
ps(7 downto 0) <= (ps(6 downto 0) & si );
じゃないとだめ。
ああ、VHDLしばらく触らせてもらえないから忘れてきた。
つうか、大手半導体レイアウト会社でも、VHDLをどうして使うかってわかんないんだな。しっかり、符号演算のためって書いてあげたのに。
ニッポンやバイヨ。
882774ワット発電中さん
2016/10/12(水) 07:26:02.86ID:GrfPE86B >しばらく触らせてもらえない
やはりVHDLは廃れますか。
verilogとVHDLの中間ぐらいでいいんだが、
System-verilogに向かうのかねえ。
やはりVHDLは廃れますか。
verilogとVHDLの中間ぐらいでいいんだが、
System-verilogに向かうのかねえ。
883774ワット発電中さん
2016/10/12(水) 07:35:05.20ID:C5En5uqG >>882
業種による。
アセンブラは廃れるけど、スーパーマリオの重力計算の微分方程式はすごいよ。
最近、オブジェクト指向の「ハードわかんね」というソフトウエアの技術者が、FPGAあたりをかじってマンセーとか、
ニコニコ本社で、「どうだオレサマすごいだろ」とかいうプレゼンをみせられたりして、つまんないというか、めんどくさい。
ぐらいに、廃れはしないと思うよ。
廃れていると思ったら、目線が狭いんだよ
業種による。
アセンブラは廃れるけど、スーパーマリオの重力計算の微分方程式はすごいよ。
最近、オブジェクト指向の「ハードわかんね」というソフトウエアの技術者が、FPGAあたりをかじってマンセーとか、
ニコニコ本社で、「どうだオレサマすごいだろ」とかいうプレゼンをみせられたりして、つまんないというか、めんどくさい。
ぐらいに、廃れはしないと思うよ。
廃れていると思ったら、目線が狭いんだよ
884774ワット発電中さん
2016/10/12(水) 08:02:12.04ID:KzFQnxH+ >シフトした残りには0が入るって決められてるから、
>分からん訳じゃ無いと思うけど。
つまりps[0]に関していえば、同じalways内で
ps[0] <= 0;
ps[0] <= si;
って2回書くってことだよな。この意味が不明というか、好きじゃない。
この書きかたは好きじゃない。こういう書き方って普通にやるのか?
ps[0] <= a;
ps[0] <= b;
ps[0] <= c;
これと同じなんだろうけど、
ps[0] <= a or b or c;
>分からん訳じゃ無いと思うけど。
つまりps[0]に関していえば、同じalways内で
ps[0] <= 0;
ps[0] <= si;
って2回書くってことだよな。この意味が不明というか、好きじゃない。
この書きかたは好きじゃない。こういう書き方って普通にやるのか?
ps[0] <= a;
ps[0] <= b;
ps[0] <= c;
これと同じなんだろうけど、
ps[0] <= a or b or c;
885774ワット発電中さん
2016/10/12(水) 08:04:13.54ID:KzFQnxH+ >おまえら、VHDL使え。Verilogの緩い文法議論が、くそうぜえ。使ってないから、そういう議論が頭悪いことに気づかないのか
VHDLはverilogよりもっと糞だということに早く気が付けよ。W
VHDLはverilogよりもっと糞だということに早く気が付けよ。W
886774ワット発電中さん
2016/10/12(水) 08:25:37.39ID:GrfPE86B887774ワット発電中さん
2016/10/12(水) 08:51:34.42ID:MInAQ2CY psはffの出力
ps<<1はpsを入力とする組み合わせ回路の出力
<<1がpsのffそのものをシフトするように勘違いしてるように見える
ps<<1はpsを入力とする組み合わせ回路の出力
<<1がpsのffそのものをシフトするように勘違いしてるように見える
888774ワット発電中さん
2016/10/12(水) 09:21:58.82ID:H6KHsZ+P 国防省がソフトはAda,ハードはVHDLとして無理強いした。
Adaが糞で、糞から生まれたVHDLは糞の子。
Adaが糞で、糞から生まれたVHDLは糞の子。
889774ワット発電中さん
2016/10/12(水) 11:18:39.63ID:+FcNU1ya ps[0] <= a;
ps[0] <= b;
ps[0] <= c;
これって、エラーで通らないんじゃないですか?
ps[0]俺はどうすりゃいいんだ? となる。
Verilogの柔軟な書き方は歓迎
でも、もう少し厳しい文法チェックが欲しい。
徹夜でもうろうとしているとデバッグが進まないから。
ps[0] <= b;
ps[0] <= c;
これって、エラーで通らないんじゃないですか?
ps[0]俺はどうすりゃいいんだ? となる。
Verilogの柔軟な書き方は歓迎
でも、もう少し厳しい文法チェックが欲しい。
徹夜でもうろうとしているとデバッグが進まないから。
890774ワット発電中さん
2016/10/12(水) 12:45:24.04ID:KzFQnxH+ >ps<<1はpsを入力とする組み合わせ回路の出力
><<1がpsのffそのものをシフトするように勘違いしてるように見える
組み合わせ回路だけどシフトだろ。
ps <= ps << 1
これは
ps[7].d = ps[6].q;
ps[6].d = ps[5].q;
ps[5].d = ps[4].q;
ps[4].d = ps[3].q;
ps[3].d = ps[2].q;
ps[2].d = ps[1].q;
ps[1].d = ps[0].q;
ps[0].d = 0;
こういう意味だよ。
だから
ps[0].d = si; こいつをもう一度書く。
2重定義でしか入力をセットできない。
><<1がpsのffそのものをシフトするように勘違いしてるように見える
組み合わせ回路だけどシフトだろ。
ps <= ps << 1
これは
ps[7].d = ps[6].q;
ps[6].d = ps[5].q;
ps[5].d = ps[4].q;
ps[4].d = ps[3].q;
ps[3].d = ps[2].q;
ps[2].d = ps[1].q;
ps[1].d = ps[0].q;
ps[0].d = 0;
こういう意味だよ。
だから
ps[0].d = si; こいつをもう一度書く。
2重定義でしか入力をセットできない。
891774ワット発電中さん
2016/10/12(水) 12:46:10.16ID:KzFQnxH+ >これって、エラーで通らないんじゃないですか?
通るんじゃね。それなんとなく見たことあるから。
orじゃないかもしれないが、、、、
もしエラーになるんならひょっとするとディフォールトかな?
count <= 99;
if(a == 3)
count <= count + 1;
これはa != 3の時はcount=99になるだろ。
ps[0].d = 0;じゃなくて
ps[0].d = 未定;
ps[0] <= si; で未定が確定なのかもしれない。
通るんじゃね。それなんとなく見たことあるから。
orじゃないかもしれないが、、、、
もしエラーになるんならひょっとするとディフォールトかな?
count <= 99;
if(a == 3)
count <= count + 1;
これはa != 3の時はcount=99になるだろ。
ps[0].d = 0;じゃなくて
ps[0].d = 未定;
ps[0] <= si; で未定が確定なのかもしれない。
892774ワット発電中さん
2016/10/12(水) 14:21:30.74ID:cg1IM12S 久しぶりに設計やらないといけなくなったんだけど
昔Model Simってテストベンチかかなくても、GUIで波形成形出来なかったっけ?
昔Model Simってテストベンチかかなくても、GUIで波形成形出来なかったっけ?
893名無しさん
2016/10/12(水) 15:04:12.25ID:/kKoBx9M if (test&mode[3:0]==4'b0010)
のコードを見て、verilog死ねと思った
のコードを見て、verilog死ねと思った
894774ワット発電中さん
2016/10/12(水) 18:03:22.04ID:qYGEQeZr ちょくちょく教科書という単語が出てくるけど何の本を指してるの?
895774ワット発電中さん
2016/10/12(水) 18:04:24.69ID:eMR/rK/f 絡みネタ来ましたよ
896arisa ◆QaHT6HayjI
2016/10/12(水) 18:12:14.69ID:NOMuf+ZS verilogで$signed使うと、バグが出て。
VHDLでuse IEEE.std_logic_unsigned.all すると止まるのは、
何とかならないものでしょうか。
VHDLでuse IEEE.std_logic_unsigned.all すると止まるのは、
何とかならないものでしょうか。
897arisa ◆QaHT6HayjI
2016/10/12(水) 18:13:47.06ID:C5En5uqG 間違った・・・・
verilogで$signed使うと、バグが出て。
VHDLでuse IEEE.std_logic_signed.all すると止まるのは、
何とかならないものでしょうか。
verilogで$signed使うと、バグが出て。
VHDLでuse IEEE.std_logic_signed.all すると止まるのは、
何とかならないものでしょうか。
898774ワット発電中さん
2016/10/12(水) 18:57:27.39ID:6xhXCb4o ps<<1を利用してpsを左シフトしつつps[0]にsiを代入したいから
always文の中でシーケンシャルな代入文を記述してるってことか
話を勘違いしてた
always文の中でシーケンシャルな代入文を記述してるってことか
話を勘違いしてた
899774ワット発電中さん
2016/10/12(水) 20:19:21.64ID:y9GS8u9k900arisa ◆QaHT6HayjI
2016/10/13(木) 05:35:53.77ID:dZW5rAGi >>899
VHDLでつくったのを戻してビット幅あわせてもおこるんよ。
VHDLで組むと起きないので、verilogの深くて単純な話にはまりそう。なので仕事では諦めた。
これ以上追うのは趣味の世界だし。
全てVHDLで組む信号処理の分野も理解できるし、verilog万歳な気持ちもよくわかる。
verilogがVHDLのように厳密な言語仕様にする別モードがあったら、VHDLいらない。
負の演算があるFIRフィルターを、verilogで組んでくださいとか言われたら切れるね。
できなくはないけど10倍デバックがかかる。
そこがデバック終わって数値演算ライブラリがverilogでできればいいけど、外部コンポーネント参照山のようにして、誰が見ても理解不能コードになることうけあい
面倒くさいから最初からVHDLでかいたほうがいいいやん。
テストベンチは、verilogの方が便利ね。
特にバス調停の決まり切った物。task文とか
verilogが曖昧過ぎて、その曖昧な部分を埋めたシミュレータとか論理合成ツールは偉いと思う。でも、デバックはVHDLじゃないと出来なさそうw
VHDLでつくったのを戻してビット幅あわせてもおこるんよ。
VHDLで組むと起きないので、verilogの深くて単純な話にはまりそう。なので仕事では諦めた。
これ以上追うのは趣味の世界だし。
全てVHDLで組む信号処理の分野も理解できるし、verilog万歳な気持ちもよくわかる。
verilogがVHDLのように厳密な言語仕様にする別モードがあったら、VHDLいらない。
負の演算があるFIRフィルターを、verilogで組んでくださいとか言われたら切れるね。
できなくはないけど10倍デバックがかかる。
そこがデバック終わって数値演算ライブラリがverilogでできればいいけど、外部コンポーネント参照山のようにして、誰が見ても理解不能コードになることうけあい
面倒くさいから最初からVHDLでかいたほうがいいいやん。
テストベンチは、verilogの方が便利ね。
特にバス調停の決まり切った物。task文とか
verilogが曖昧過ぎて、その曖昧な部分を埋めたシミュレータとか論理合成ツールは偉いと思う。でも、デバックはVHDLじゃないと出来なさそうw
901774ワット発電中さん
2016/10/13(木) 11:26:42.15ID:i7+FYgaz >>900
興味あるなー。でも勘違いしてるんじゃない?
曖昧っていったってビット幅は正確に決められるしどんなところが問題なのか、具体的
な例はないの?
「1−1が0にならよ」とか、まさか負のキャリが立たないとかW
verilogで負の演算ができないなんてことはないだろ。W
FIRって知らんが、x/+-が素直に動けばもんだいなくできると思うが、、、W
興味あるなー。でも勘違いしてるんじゃない?
曖昧っていったってビット幅は正確に決められるしどんなところが問題なのか、具体的
な例はないの?
「1−1が0にならよ」とか、まさか負のキャリが立たないとかW
verilogで負の演算ができないなんてことはないだろ。W
FIRって知らんが、x/+-が素直に動けばもんだいなくできると思うが、、、W
902774ワット発電中さん
2016/10/13(木) 12:01:44.40ID:1PGgeP2M903774ワット発電中さん
2016/10/13(木) 12:15:39.05ID:sPFxRlgf signedは敬遠してるな。機械様には全部符号なしで宣言してる。
符号付き演算だと思ってるのは人間だけで、あとは設計書類とコメントぐらい。
S*Sだと、{S1,R1}*{S2,R2}に分解して、筆算。
R1*R2 -((S1)? R2<<a:0) -((S2)? R1<<b:0) +((S1&S2)? 2^c:0);
あとは、例えば(-128)*(-128)をサポートするならbit幅が1つ余分に要るとか。
signedを使いこなせたらもっと楽になるんだろうけど
我ながら低レベルな記述をしてる。
符号付き演算だと思ってるのは人間だけで、あとは設計書類とコメントぐらい。
S*Sだと、{S1,R1}*{S2,R2}に分解して、筆算。
R1*R2 -((S1)? R2<<a:0) -((S2)? R1<<b:0) +((S1&S2)? 2^c:0);
あとは、例えば(-128)*(-128)をサポートするならbit幅が1つ余分に要るとか。
signedを使いこなせたらもっと楽になるんだろうけど
我ながら低レベルな記述をしてる。
904774ワット発電中さん
2016/10/13(木) 12:47:23.77ID:i7+FYgaz signedだからって関係ないだろ。 でも俺もfloat以外では使うことないな。
905774ワット発電中さん
2016/10/13(木) 16:13:06.19ID:1PGgeP2M >>> や <<< の出番ですね
906774ワット発電中さん
2016/10/13(木) 21:53:37.92ID:HgzOp4vD 論理回路設計の勉強をしてるのですが、プロの人達はまず最初にブロック図的なものを書くところから始めるのでしょうか
それとも構想を頭で描きながら記述していくのでしょうか
ブロック図などを書く場合はどういったツールを使用していますか
それとも構想を頭で描きながら記述していくのでしょうか
ブロック図などを書く場合はどういったツールを使用していますか
907774ワット発電中さん
2016/10/13(木) 22:07:46.57ID:zNmCQkYT >>906
紙と2Hの鉛筆
紙と2Hの鉛筆
908774ワット発電中さん
2016/10/13(木) 22:10:47.40ID:hnTHZ2s4 オレは裏紙にボールペン
909774ワット発電中さん
2016/10/13(木) 22:47:21.08ID:64+HsgyJ 紙とシャーペン
ブロック図を書いたら回路図を書いて
フリップフロップをalways、AND,ORはassignにする。
ブロック図を書いたら回路図を書いて
フリップフロップをalways、AND,ORはassignにする。
910774ワット発電中さん
2016/10/13(木) 23:59:52.10ID:i7+FYgaz 基本設計をしてデバイス選定をする。
Libreoffice Writer を立ち上げてタイトルを書く。日付を入れる。
次に概要を書く
解決すべき問題がないかをリストアップする。
IPなど必要資料をリストアップする。
全体構成を箇条書きする。
タイトル名でプロジェクトディレクトリを作成する。
その下に
ドキュメントディレクトリ
VerilogTopディレクトリを作る。さらにその下にサブプロジェクトのディレクトリ
ツリーを作成する。
あとは漫画を描きながら各モジュールを作成してテストベンチを作成してテストする。
漫画はジェットストリームでノートに書く。完成した漫画はスマフォで撮影して
Evernoteでクラウドに挙げて、Libreofficeのドキュメントに貼り付けていく。
テストベンチのWaveデータもsnippingツールで画像コピーをしてドキュメントに
貼り付けていく。
というようなやり方だな。
Libreoffice Writer を立ち上げてタイトルを書く。日付を入れる。
次に概要を書く
解決すべき問題がないかをリストアップする。
IPなど必要資料をリストアップする。
全体構成を箇条書きする。
タイトル名でプロジェクトディレクトリを作成する。
その下に
ドキュメントディレクトリ
VerilogTopディレクトリを作る。さらにその下にサブプロジェクトのディレクトリ
ツリーを作成する。
あとは漫画を描きながら各モジュールを作成してテストベンチを作成してテストする。
漫画はジェットストリームでノートに書く。完成した漫画はスマフォで撮影して
Evernoteでクラウドに挙げて、Libreofficeのドキュメントに貼り付けていく。
テストベンチのWaveデータもsnippingツールで画像コピーをしてドキュメントに
貼り付けていく。
というようなやり方だな。
911774ワット発電中さん
2016/10/14(金) 02:40:41.01ID:U+MZJOfy ジェットストリームって、書きやすいですよね
912arisa ◆QaHT6HayjI
2016/10/14(金) 05:38:50.68ID:M5fLLkZA Excelとかパワポとか言い出したら、目立・ル○サス系なのでそいつには気をつけろ!自分のやった領域以外の仕事はできない!
Wordでも書くよといいだしたら、信用できるかもw
Visioが使いやすいんじゃないかなあ。Word/Excel/パワポと描画エンジンはもう同じだけどw
要は、就職先によるだろ。
個人の場合は、描かない。めんどくさいし。
ブロック図で描かないと、設計できない人と。描いてしまうと、設計できなくなる人と。分かれる。
ASIC時代の人は、前者が多い。最近の人は、後者。
でも、両方体験して、どっちもできる賢者になるのをおすすめします。
>>910
在宅Webプログラマっぽい。かっこいい。w
余談というか、愚痴。
この仕事になった10年前あたりから、テストベンチの波形データを貼り付けたままで。満足。
「この信号のこの部分が、xx[ns]になっているから、仕様と一致することを確認した」
と書く意識のない奴ってなんなの。なぜかベテランに多い。
そういう人のverilogは、たいてい怪しくて、はまることが多い。
>>911
わし、ユニボール シグノ 0.5mm
ブロック図で、微妙な濃淡。微妙な太い細いが表現できて、毛筆のようなそのときの気持ちが表現できて気に入ってる。
ジェットストリームは、車の中とかの過酷な環境で使っている、あれいいよね。でもすぐになくす。
そういえば、最近、論理記号の定規をみないな、何処にしまったんだろ・・・
Wordでも書くよといいだしたら、信用できるかもw
Visioが使いやすいんじゃないかなあ。Word/Excel/パワポと描画エンジンはもう同じだけどw
要は、就職先によるだろ。
個人の場合は、描かない。めんどくさいし。
ブロック図で描かないと、設計できない人と。描いてしまうと、設計できなくなる人と。分かれる。
ASIC時代の人は、前者が多い。最近の人は、後者。
でも、両方体験して、どっちもできる賢者になるのをおすすめします。
>>910
在宅Webプログラマっぽい。かっこいい。w
余談というか、愚痴。
この仕事になった10年前あたりから、テストベンチの波形データを貼り付けたままで。満足。
「この信号のこの部分が、xx[ns]になっているから、仕様と一致することを確認した」
と書く意識のない奴ってなんなの。なぜかベテランに多い。
そういう人のverilogは、たいてい怪しくて、はまることが多い。
>>911
わし、ユニボール シグノ 0.5mm
ブロック図で、微妙な濃淡。微妙な太い細いが表現できて、毛筆のようなそのときの気持ちが表現できて気に入ってる。
ジェットストリームは、車の中とかの過酷な環境で使っている、あれいいよね。でもすぐになくす。
そういえば、最近、論理記号の定規をみないな、何処にしまったんだろ・・・
913arisa ◆QaHT6HayjI
2016/10/14(金) 05:48:34.90ID:M5fLLkZA914774ワット発電中さん
2016/10/14(金) 07:46:30.37ID:M87vCzzy915774ワット発電中さん
2016/10/14(金) 12:41:12.51ID:D7c3gZma 遠い地平線が消えて、深々とした夜の闇に心を休めるとき…
916774ワット発電中さん
2016/10/14(金) 13:28:27.84ID:AZkCOEOH 一つの光が宇宙へ飛んでゆく。
917774ワット発電中さん
2016/10/14(金) 15:43:05.55ID:TNvPoqxe それがぼくなんダヨー
918774ワット発電中さん
2016/10/14(金) 17:07:25.67ID:8geS1lyO >>809のお世話になった者です
I2Cのパターンを途中まで作ってみたのですが、考え方などあっているでしょうか
DATA[7:0]想定です
reg [4:0] cnt_addr;
reg [6:0] cnt_rate;
wire cnt_enable;
wire cry_addr;
// -- cnt_addr ----------------------------------------
always @(posedge clk or negedge reset) begin
if(reset == 1'b0)
cnt_addr <= 0;
else if(start_trigger == 1'b1)
cnt_addr <= 8;
else if(cnt_addr > 0)
if(cry_addr == 1'b1)
cnt_addr <= cnt_addr - 1;
else
cnt_addr <= cnt_addr;
else
cnt_addr <= 0;
end
assign cnt_enable = (cnt_addr > 0) ? 1'b1 : 1'b0;
// -- cnt_rate ----------------------------------------
always @(posedge clk or negedge reset) begin
if(reset == 1'b0)
cnt_rate <= 0;
else if(cnt_enable == 1'b1)
if(cry_addr == 1'b1)
cnt_rate <= 0;
else
cnt_rate <= cnt_rate + 1;
else
cnt_rate <= 0;
end
assign cry_addr = (cnt_rate == 99) ? 1'b1 : 1'b0;
I2Cのパターンを途中まで作ってみたのですが、考え方などあっているでしょうか
DATA[7:0]想定です
reg [4:0] cnt_addr;
reg [6:0] cnt_rate;
wire cnt_enable;
wire cry_addr;
// -- cnt_addr ----------------------------------------
always @(posedge clk or negedge reset) begin
if(reset == 1'b0)
cnt_addr <= 0;
else if(start_trigger == 1'b1)
cnt_addr <= 8;
else if(cnt_addr > 0)
if(cry_addr == 1'b1)
cnt_addr <= cnt_addr - 1;
else
cnt_addr <= cnt_addr;
else
cnt_addr <= 0;
end
assign cnt_enable = (cnt_addr > 0) ? 1'b1 : 1'b0;
// -- cnt_rate ----------------------------------------
always @(posedge clk or negedge reset) begin
if(reset == 1'b0)
cnt_rate <= 0;
else if(cnt_enable == 1'b1)
if(cry_addr == 1'b1)
cnt_rate <= 0;
else
cnt_rate <= cnt_rate + 1;
else
cnt_rate <= 0;
end
assign cry_addr = (cnt_rate == 99) ? 1'b1 : 1'b0;
919774ワット発電中さん
2016/10/14(金) 17:08:41.13ID:8geS1lyO scl/scl_o、sda/sda_oがあるのはどうしたほうがいいのかよくわからなくなり
とりあえず試しているところです。。
// -- scl -------------------------------------------
assign scl = out_scl(cnt_enable,cnt_addr,cnt_rate);
function out_scl;
input en;
input [4:0] addr;
input [6:0] cnt;
begin
if(en == 1'b1)
if(cnt < 50)
out_scl = 1'b1;
else
out_scl = 1'b0;
else
out_scl = 1'b0;
end
endfunction
// -- scl_o -------------------------------------------
always @(posedge clk or negedge reset) begin
if(reset == 1'b0)
scl_o <= 1'b0;
else if(cnt_enable == 1'b1)
if(cnt_rate < 50)
scl_o <= 1'b1;
else
scl_o <= 1'b0;
else
scl_o <= 1'b0;
end
とりあえず試しているところです。。
// -- scl -------------------------------------------
assign scl = out_scl(cnt_enable,cnt_addr,cnt_rate);
function out_scl;
input en;
input [4:0] addr;
input [6:0] cnt;
begin
if(en == 1'b1)
if(cnt < 50)
out_scl = 1'b1;
else
out_scl = 1'b0;
else
out_scl = 1'b0;
end
endfunction
// -- scl_o -------------------------------------------
always @(posedge clk or negedge reset) begin
if(reset == 1'b0)
scl_o <= 1'b0;
else if(cnt_enable == 1'b1)
if(cnt_rate < 50)
scl_o <= 1'b1;
else
scl_o <= 1'b0;
else
scl_o <= 1'b0;
end
920774ワット発電中さん
2016/10/14(金) 17:09:02.30ID:8geS1lyO reg [7:0] rom_sda = 8'b10110111;
// -- sda -------------------------------------------
assign sda = out_sda(cnt_enable,cnt_addr,rom_sda);
function out_sda;
input en;
input [4:0] addr;
input [7:0] rom_data;
begin
if(en == 1'b1)
out_sda = rom_data[addr - 1];
else
out_sda = 1'b0;
end
endfunction
// -- sda_o -------------------------------------------
always @(posedge clk or negedge reset) begin
if(reset == 1'b0)
sda_o <= 1'b0;
else if(cnt_enable == 1'b1)
sda_o <= rom_sda[cnt_addr - 1];
else
sda_o <= 1'b0;
end
// -- sda -------------------------------------------
assign sda = out_sda(cnt_enable,cnt_addr,rom_sda);
function out_sda;
input en;
input [4:0] addr;
input [7:0] rom_data;
begin
if(en == 1'b1)
out_sda = rom_data[addr - 1];
else
out_sda = 1'b0;
end
endfunction
// -- sda_o -------------------------------------------
always @(posedge clk or negedge reset) begin
if(reset == 1'b0)
sda_o <= 1'b0;
else if(cnt_enable == 1'b1)
sda_o <= rom_sda[cnt_addr - 1];
else
sda_o <= 1'b0;
end
921774ワット発電中さん
2016/10/14(金) 18:01:19.25ID:TNvPoqxe 簡単でも仕様を書く(目標を定める)
○ i2cマスタっぽい何かを作りたい
○ clkは何MHz SCLはその1/50
○ SCL↓とSDAの位相をずらさない
○ SCLもSDAもデフォルトLで構わない
○ スレーブアドレスは渡さない
○ r/wも渡さない
○ アクノリッジも見ない
○ データの8bitだけ渡す
○ シングルスレーブ、書き込みのみ
○ SDAはオープンドレインにしない
文法的にはアレだな。かわいそうだけど
begin~else否定派が生まれちゃったな。
resetは負論理ならxでもnでもpreでもsufでも付けましょう。
○ i2cマスタっぽい何かを作りたい
○ clkは何MHz SCLはその1/50
○ SCL↓とSDAの位相をずらさない
○ SCLもSDAもデフォルトLで構わない
○ スレーブアドレスは渡さない
○ r/wも渡さない
○ アクノリッジも見ない
○ データの8bitだけ渡す
○ シングルスレーブ、書き込みのみ
○ SDAはオープンドレインにしない
文法的にはアレだな。かわいそうだけど
begin~else否定派が生まれちゃったな。
resetは負論理ならxでもnでもpreでもsufでも付けましょう。
922774ワット発電中さん
2016/10/14(金) 18:09:06.55ID:eJCe6+VN なかなか筋がいい。綺麗だね。
しかし921がいうように仕様をきめること。
それからステートマシンでプロトコルを書くのが先だな。
スタート待ち
アドレス検出、もし不一致ならストップへ
アック検出
、、、、、、
ストップ
みたいな感じでステートマシンを書く
しかし921がいうように仕様をきめること。
それからステートマシンでプロトコルを書くのが先だな。
スタート待ち
アドレス検出、もし不一致ならストップへ
アック検出
、、、、、、
ストップ
みたいな感じでステートマシンを書く
923774ワット発電中さん
2016/10/14(金) 19:03:34.03ID:M87vCzzy >>921>>922
ありがとうございます
いろいろと至らない点がありすみません
指摘頂いたこと以後注意します
今はまだ考え方がふわふわしてて記述に自信が持てません
一応シミュレーションだけはかけていますが。。
begin〜endは自分も全部付けて複数行かくスタイルでやってましたが、ここ最近のスレのやりとりでちょっと見直してみました
考え方が問題なければ、スタート/ストップコンディション、ACK含めステートマシン的な考え方で出来ればと思ってます
ありがとうございます
いろいろと至らない点がありすみません
指摘頂いたこと以後注意します
今はまだ考え方がふわふわしてて記述に自信が持てません
一応シミュレーションだけはかけていますが。。
begin〜endは自分も全部付けて複数行かくスタイルでやってましたが、ここ最近のスレのやりとりでちょっと見直してみました
考え方が問題なければ、スタート/ストップコンディション、ACK含めステートマシン的な考え方で出来ればと思ってます
924arisa ◆QaHT6HayjI
2016/10/14(金) 19:13:10.80ID:0y15DUWZ うーん、opencore.orgのI2C masterを登録してダウンしてみるといいと思う。
今見たらメンテナンス中ってでるけど。
今見たらメンテナンス中ってでるけど。
925774ワット発電中さん
2016/10/14(金) 21:13:05.87ID:M87vCzzy926774ワット発電中さん
2016/10/14(金) 21:27:26.76ID:AZkCOEOH I2CはZだよ!
927774ワット発電中さん
2016/10/14(金) 21:29:27.23ID:TNvPoqxe 次のような記法は好きでない。(cnt_adrが0の時とかね)
rom_sda[cnt_addr - 1]
scl/sdaを組み合わせ回路で組んでいるが、
外部とやり取りする部分は基本FFにする。
rom_sda[cnt_addr - 1]
scl/sdaを組み合わせ回路で組んでいるが、
外部とやり取りする部分は基本FFにする。
928774ワット発電中さん
2016/10/14(金) 21:31:59.03ID:AZkCOEOH929774ワット発電中さん
2016/10/14(金) 21:38:31.90ID:TNvPoqxe そういえば、alteraだったかのライブラリで
reg <= 1'bz
という記述があって驚いた。
実際に(FPGAで)合成可能で二度驚いた。
reg <= 1'bz
という記述があって驚いた。
実際に(FPGAで)合成可能で二度驚いた。
930774ワット発電中さん
2016/10/14(金) 22:27:22.24ID:M87vCzzy931774ワット発電中さん
2016/10/15(土) 00:46:00.81ID:K5J3IGad >>929
で実際にハイインピーになった?
で実際にハイインピーになった?
932arisa ◆QaHT6HayjI
2016/10/15(土) 02:28:48.45ID:RFC1SU7U933774ワット発電中さん
2016/10/15(土) 07:44:10.02ID:RV4MTfqG そりゃFFにzを保持できる訳がないという先入観があったからな。
代入される信号もI/Oに繋がっていないと駄目だし、
合成結果も1/0を保持するFFと、open/driveを制御するFFの二つが
出力される。ASICしかしてない時は想像もしてなかった。
代入される信号もI/Oに繋がっていないと駄目だし、
合成結果も1/0を保持するFFと、open/driveを制御するFFの二つが
出力される。ASICしかしてない時は想像もしてなかった。
934774ワット発電中さん
2016/10/15(土) 10:35:18.28ID:HFltrKTw reg [7:0] rom_sda = 8'b10110111;
sda_o <= rom_sda[cnt_addr - 1];
へー、こういうアクセスってできるんだ。初めて知った。テストベンチなら使い
そうだがロジックでは使ったことがないな。どういう風に合成されるんだろ。
セレクタになるんだろうなきっと。この書き方気に入った。Goodだよ。
>最終的にはトライステート出力にするつもりです
スタート
アドレス
RW選択
アック待ち ここは入力に切り替えてトライステートにしないといけないから、最初
から考えておかないと。
受信はクロックストレッチというのがあって、要するにマスターはHにしてもスレーブがL
にしたままだとSCLがHにならない。
マスターはトライステートにしてSCLがHになるのを確認してから次のSCLをLにする。
ここはI2Cの肝だから、、、
sda_o <= rom_sda[cnt_addr - 1];
へー、こういうアクセスってできるんだ。初めて知った。テストベンチなら使い
そうだがロジックでは使ったことがないな。どういう風に合成されるんだろ。
セレクタになるんだろうなきっと。この書き方気に入った。Goodだよ。
>最終的にはトライステート出力にするつもりです
スタート
アドレス
RW選択
アック待ち ここは入力に切り替えてトライステートにしないといけないから、最初
から考えておかないと。
受信はクロックストレッチというのがあって、要するにマスターはHにしてもスレーブがL
にしたままだとSCLがHにならない。
マスターはトライステートにしてSCLがHになるのを確認してから次のSCLをLにする。
ここはI2Cの肝だから、、、
935774ワット発電中さん
2016/10/15(土) 11:13:17.23ID:T0D5lwKY936774ワット発電中さん
2016/10/15(土) 13:11:51.69ID:KuJZd4Hb937774ワット発電中さん
2016/10/15(土) 13:43:02.10ID:wm8bbykV >>936
ROMが合成すると、cnt_addrを使った組み合わせ回路になるだけ。
ROMが合成すると、cnt_addrを使った組み合わせ回路になるだけ。
938774ワット発電中さん
2016/10/15(土) 14:26:22.30ID:KuJZd4Hb >>937
そういう時もあるだろう。
そういう時もあるだろう。
939774ワット発電中さん
2016/10/16(日) 00:11:12.50ID:p8eBhC7/ reg [7:0] decode[7:0]
= '{
8'b00000001,
8'b00000010,
8'b00000100,
8'b00001000,
8'b00010000,
8'b00100000,
8'b01000000,
8'b10000000
};
こういうのもできるから美しいデコーダができそうと喜んだが、できるのはSystemVerilog
だけのようだね。
これだけのためにコンパイラをSystemVerilogにすると何か問題あるだろうか?
= '{
8'b00000001,
8'b00000010,
8'b00000100,
8'b00001000,
8'b00010000,
8'b00100000,
8'b01000000,
8'b10000000
};
こういうのもできるから美しいデコーダができそうと喜んだが、できるのはSystemVerilog
だけのようだね。
これだけのためにコンパイラをSystemVerilogにすると何か問題あるだろうか?
940774ワット発電中さん
2016/10/16(日) 00:32:40.82ID:C4yvG3Gf >>939
できない?
できない?
941774ワット発電中さん
2016/10/16(日) 01:44:31.79ID:MpNji2nG reg [7:0] decode[7:0]
ではなくて
reg [7:0] decode[0:7]じゃなかったっけ?
ではなくて
reg [7:0] decode[0:7]じゃなかったっけ?
942774ワット発電中さん
2016/10/16(日) 07:55:03.04ID:p8eBhC7/ 文法的にはどっちでもいいと思うよ。アクセスの順番が違うだけ。
上の例だと decode[0] が128,decode[7]が1
上を0にする方がわかりやすいから[0:7]が一般的なんだろう。
ってこっちのつもりだった。W
上の例だと decode[0] が128,decode[7]が1
上を0にする方がわかりやすいから[0:7]が一般的なんだろう。
ってこっちのつもりだった。W
943774ワット発電中さん
2016/10/16(日) 08:31:29.54ID:sZ8uTgeU >>939
"コンパイラ"って良く書いてあるけど、何を指してるのさ?
"コンパイラ"って良く書いてあるけど、何を指してるのさ?
944774ワット発電中さん
2016/10/16(日) 08:33:29.38ID:GC2K+fku >>939
なんでこんなverilogでできるやんググレカスレベルなことを恥ずかしくもなく聞いてくるんだよ
なんでこんなverilogでできるやんググレカスレベルなことを恥ずかしくもなく聞いてくるんだよ
945774ワット発電中さん
2016/10/16(日) 09:22:32.85ID:fYo3/EPL どうせ、テストしないんでしょ。
946774ワット発電中さん
2016/10/16(日) 11:31:10.13ID:/NzhU0Zt いや、シンタックスエラーぐらいは潰すよ。
947774ワット発電中さん
2016/10/16(日) 11:48:27.32ID:sZ8uTgeU948774ワット発電中さん
2016/10/16(日) 12:00:41.27ID:/NzhU0Zt そりゃ多分アホの子が書いたんでしょ。
949774ワット発電中さん
2016/10/16(日) 15:16:43.76ID:p8eBhC7/ >943
Prime
記述はまともだとおもうがな。コンパイラが通るから。テストはそのうち
してみるが、今2chで忙しい。
Prime
記述はまともだとおもうがな。コンパイラが通るから。テストはそのうち
してみるが、今2chで忙しい。
950774ワット発電中さん
2016/10/16(日) 16:46:32.13ID:iWApK0ZI 2chで忙しいとは
951774ワット発電中さん
2016/10/17(月) 23:05:58.78ID:O4bfrZzA カウンターやらシフトレジスタやらロムやら教科書に出てくるようなもん一通り出来たら、何作ればいいかな
会社に入ったら練習させられる課題とかありますか?
会社に入ったら練習させられる課題とかありますか?
952774ワット発電中さん
2016/10/18(火) 00:27:14.78ID:Q6rSTMVy UARTはどうだい?
とりあえず受信したデータをエコーバックするだけ
とりあえず受信したデータをエコーバックするだけ
953774ワット発電中さん
2016/10/18(火) 05:35:43.88ID:+An+H3Ke なにこのゆとり教育スレ
954774ワット発電中さん
2016/10/18(火) 11:13:25.29ID:Jw2REV+E module counter(clk,out)
input clk;
output out;
reg [3:0] out;
always@(posedge clk)begin
if(out==4'b1111)
out<=4'b0000;
else
out<=out+1;
end
endmodule
リセット入力無しの4進カウンタ作ろうと思って書いたんですが何度シミュやってもoutが不定出すんです
問題点あったら教えてもらいたいです
input clk;
output out;
reg [3:0] out;
always@(posedge clk)begin
if(out==4'b1111)
out<=4'b0000;
else
out<=out+1;
end
endmodule
リセット入力無しの4進カウンタ作ろうと思って書いたんですが何度シミュやってもoutが不定出すんです
問題点あったら教えてもらいたいです
955774ワット発電中さん
2016/10/18(火) 11:39:33.68ID:yPCqzc8L >>954
問題なくシミュレーションできてると思いますが。
問題なくシミュレーションできてると思いますが。
956774ワット発電中さん
2016/10/18(火) 11:52:54.74ID:ep8pCCN6 電源投入直後のレジスタは製造バラつき・温度・電源電圧カーブ・
クロックグリッチ・電磁波・粒子線・量子力学効果その他の影響により、
一般には不定です。
クロックグリッチ・電磁波・粒子線・量子力学効果その他の影響により、
一般には不定です。
957774ワット発電中さん
2016/10/18(火) 12:09:20.11ID:Jw2REV+E >>955
//テストベンチ
module counter_test;
reg clk;
wire out;
parameter STEP=100;
counter uut (
.clk(clk),
.out(out) );
initial begin
clk=0;
end
always@ #(STEP/2)
clk=~clk;
endmodule
こんな感じに出てしまうんですが何が悪いんでしょうか
http://i.imgur.com/nUnNtSQ.png
//テストベンチ
module counter_test;
reg clk;
wire out;
parameter STEP=100;
counter uut (
.clk(clk),
.out(out) );
initial begin
clk=0;
end
always@ #(STEP/2)
clk=~clk;
endmodule
こんな感じに出てしまうんですが何が悪いんでしょうか
http://i.imgur.com/nUnNtSQ.png
958774ワット発電中さん
2016/10/18(火) 12:10:01.66ID:Aj8H3TFE それをどうやって初期化するかが考えどころだな。
でもな、必死で考えてリセット無しでsim通すことができるようにできても
実際のデバイスには全部リセットが入ってるからな。W
でもな、必死で考えてリセット無しでsim通すことができるようにできても
実際のデバイスには全部リセットが入ってるからな。W
959774ワット発電中さん
2016/10/18(火) 12:16:30.91ID:Aj8H3TFE Last Modified: January 13, 2012
Version Found: v11.1Type: Errata
Simulation Fails with NativeLink
Description
When you use the NativeLink to run EDA RTL simulations for Verilog top-level file, the simulation fails and displays the following error message:
#**Error: (vlog-7) Failed to open design unit file ?test.vo? in read mode. # No such file or directory. (errno= ENOENT)
Workaround/Fix
On the Simulation page, under EDA Netlist Writer settings, set Format for output netlist to VHDL. Then, replace the following codes of the generated <variation>.v file to a single-line code before running the NativeLink simulation.
このエラッタ知ってる?
いまでも発生するんだよな。さっきまで何の問題もなくsimできてたのに最後の最後
でtopのデバッグをやろうと始めたらエラーがでる。
いくら頑張っても#**Error: (vlog-7) Failed to open が出る。でwebを探したら
これだよ。 VHDLなら問題なくOK。W
こっちはVerilogなのにVHDLでネット出せってよ。
クッソ腹立つ。
しかし考えても、腹立てても無駄。おとなしく従うほかない。
Version Found: v11.1Type: Errata
Simulation Fails with NativeLink
Description
When you use the NativeLink to run EDA RTL simulations for Verilog top-level file, the simulation fails and displays the following error message:
#**Error: (vlog-7) Failed to open design unit file ?test.vo? in read mode. # No such file or directory. (errno= ENOENT)
Workaround/Fix
On the Simulation page, under EDA Netlist Writer settings, set Format for output netlist to VHDL. Then, replace the following codes of the generated <variation>.v file to a single-line code before running the NativeLink simulation.
このエラッタ知ってる?
いまでも発生するんだよな。さっきまで何の問題もなくsimできてたのに最後の最後
でtopのデバッグをやろうと始めたらエラーがでる。
いくら頑張っても#**Error: (vlog-7) Failed to open が出る。でwebを探したら
これだよ。 VHDLなら問題なくOK。W
こっちはVerilogなのにVHDLでネット出せってよ。
クッソ腹立つ。
しかし考えても、腹立てても無駄。おとなしく従うほかない。
960774ワット発電中さん
2016/10/18(火) 12:17:26.43ID:f+QowtL/ verilogなら外部から強制的に値を入力できるから、シミュレーション上動作させることは可能じゃね?
961774ワット発電中さん
2016/10/18(火) 12:20:24.80ID:EjL30mNG962774ワット発電中さん
2016/10/18(火) 12:40:03.59ID:6mMvi04/ >>957
テストベンチのwireを[3:0]にすればいいよ
テストベンチのwireを[3:0]にすればいいよ
963774ワット発電中さん
2016/10/18(火) 12:46:01.81ID:oYKSvSsj initial out=0; が抜けてるんじゃね?
964774ワット発電中さん
2016/10/18(火) 13:32:01.11ID:Aj8H3TFE モデルシムではイニシャルが入らないと無理だな。
965774ワット発電中さん
2016/10/18(火) 14:03:21.36ID:Aj8H3TFE これならOK リセットなしでも動く
module poweron_reset(input clk, output reset_out);
//1.3msec reset width at 48Mhz
reg [15:0] count_q = 0;
reg res = 0;
assign reset_out = ~res;
always @(posedge clk)
if (count_q != 16'd10)//$1. for test only, Chage to 16'hffff after test.
{ count_q} <= { count_q + 1};
else
{res, count_q} <= {1'd1, count_q};
endmodule
module poweron_reset(input clk, output reset_out);
//1.3msec reset width at 48Mhz
reg [15:0] count_q = 0;
reg res = 0;
assign reset_out = ~res;
always @(posedge clk)
if (count_q != 16'd10)//$1. for test only, Chage to 16'hffff after test.
{ count_q} <= { count_q + 1};
else
{res, count_q} <= {1'd1, count_q};
endmodule
966774ワット発電中さん
2016/10/18(火) 14:19:32.85ID:Jw2REV+E ちょっと出先で試せないので帰ったら試してみます!
967774ワット発電中さん
2016/10/18(火) 16:08:14.02ID:Jw2REV+E テストベンチの
output→output wire [3:0]out
にしたら不定のままで
outputをwire→regにして
initial out=0;
を足したら今度はout=0をずっと出すようになりました
う〜ん
output→output wire [3:0]out
にしたら不定のままで
outputをwire→regにして
initial out=0;
を足したら今度はout=0をずっと出すようになりました
う〜ん
968774ワット発電中さん
2016/10/18(火) 16:39:31.31ID:b1VviC2x969774ワット発電中さん
2016/10/18(火) 23:14:23.72ID:Aj8H3TFE おれも不定に困ってめんどくさいから全部リセットを入れて問題なくsimできて喜んだ
のも束の間、最後に「あれ、poweron_resetどうやんの?」
ってことになって焦って作ったのが上。Primeなら問題なく動いてる。W
テストベンチはこれ
`timescale 1 ns/ 1 ps
module poweron_reset_vlg_tst();
parameter CYC = 50; //50nsec
reg clk;
wire reset_out;
poweron_reset i1 (
.clk(clk),
.reset_out(reset_out)
);
initial
begin
#(0) clk = 1'b1;
#(CYC*100) ;
$stop;
end
always #(CYC/2) clk = ~clk; // clock
endmodule
のも束の間、最後に「あれ、poweron_resetどうやんの?」
ってことになって焦って作ったのが上。Primeなら問題なく動いてる。W
テストベンチはこれ
`timescale 1 ns/ 1 ps
module poweron_reset_vlg_tst();
parameter CYC = 50; //50nsec
reg clk;
wire reset_out;
poweron_reset i1 (
.clk(clk),
.reset_out(reset_out)
);
initial
begin
#(0) clk = 1'b1;
#(CYC*100) ;
$stop;
end
always #(CYC/2) clk = ~clk; // clock
endmodule
970774ワット発電中さん
2016/10/18(火) 23:19:46.42ID:Aj8H3TFE パワーオンリセットとかどうやってやってるんだろ。PLLのロック信号とか?
PLL使わないときはどうすんの?
「どうせボード作るのは俺じゃないし、めんどくさいから外部リセットIC追加」
とか?
PLL使わないときはどうすんの?
「どうせボード作るのは俺じゃないし、めんどくさいから外部リセットIC追加」
とか?
971774ワット発電中さん
2016/10/19(水) 04:09:46.31ID:xKIW9tHy PLLがないチップなら別だけど、そうでないなら(リセット専用に)PLL使えばいいだけ
分からならなおさら
分からならなおさら
972arisa ◆QaHT6HayjI
2016/10/19(水) 07:28:04.25ID:WXCUTXeQ CR遅延回路、とかいても。
コンデンサってなんですか?
抵抗ってなんですか?
どうして遅延できるんですか?
とか質問されそう。
コンデンサってなんですか?
抵抗ってなんですか?
どうして遅延できるんですか?
とか質問されそう。
973774ワット発電中さん
2016/10/19(水) 11:49:13.96ID:AL4HUdWZ >>951
CPU
CPU
974774ワット発電中さん
2016/10/19(水) 15:15:22.34ID:7FziahEk 合成制約の勉強
複雑な演算(例えば32bit*32bit*32bit)を書いて、周波数を確認
パイプラインという概念の理解
あんまり使わないけど除算回路とかを記述してみる
テストログを出力し、(他の言語で)自動チェック
テスト項目の列挙
わざと間違えた回路を書きエラー検出
ラッチ記述や循環参照を一度合成してみる
合成結果・ログの確認
自分なりにコーディングルールを作ってみる。それを変えてみる(客>自社>マイルール)
複雑な演算(例えば32bit*32bit*32bit)を書いて、周波数を確認
パイプラインという概念の理解
あんまり使わないけど除算回路とかを記述してみる
テストログを出力し、(他の言語で)自動チェック
テスト項目の列挙
わざと間違えた回路を書きエラー検出
ラッチ記述や循環参照を一度合成してみる
合成結果・ログの確認
自分なりにコーディングルールを作ってみる。それを変えてみる(客>自社>マイルール)
975774ワット発電中さん
2016/10/19(水) 18:38:26.91ID:KZz2FIuG PLLのリセット用の使い方詳しく教えて頂けないでしょうか
976774ワット発電中さん
2016/10/19(水) 19:02:47.95ID:f7iyAddM PLLは発信機だから、安定するまでに時間がかかる。1msecくらいかな?
安定すると「安定いたしました。クロックを使ってもいいです」って
知らせる信号がHになる。これをPLLロック信号という。PLLが安定したら
回路を動かしてもいいので、このロック信号をリセット解除にするという
のがPLLのロック信号をリセットに使うということですy。
安定すると「安定いたしました。クロックを使ってもいいです」って
知らせる信号がHになる。これをPLLロック信号という。PLLが安定したら
回路を動かしてもいいので、このロック信号をリセット解除にするという
のがPLLのロック信号をリセットに使うということですy。
977774ワット発電中さん
2016/10/19(水) 19:07:45.88ID:7FziahEk input clk, locked;
output reset ;//1-active
reg [1:0] locked_d;
always@(posedge clk or negedge locked) begin
if(locked == 1'b0)
locked_d <= 2'b00;
else
locked_d <= {locked_d[0], locked};
end
assign reset = ~locked_d[1];
output reset ;//1-active
reg [1:0] locked_d;
always@(posedge clk or negedge locked) begin
if(locked == 1'b0)
locked_d <= 2'b00;
else
locked_d <= {locked_d[0], locked};
end
assign reset = ~locked_d[1];
978774ワット発電中さん
2016/10/19(水) 19:41:18.71ID:KZz2FIuG979774ワット発電中さん
2016/10/19(水) 21:50:31.52ID:laexxhVf980774ワット発電中さん
2016/10/19(水) 21:54:44.36ID:I+3mr2qn >>977
negedge locked は変じゃない?
negedge locked は変じゃない?
981774ワット発電中さん
2016/10/19(水) 22:10:56.09ID:Op/cxxrm 変ではないよ
非同期信号をD-FFのリセットとデータに入力してクロック乗せ換えをする方法
非同期信号をD-FFのリセットとデータに入力してクロック乗せ換えをする方法
982774ワット発電中さん
2016/10/19(水) 22:26:56.19ID:TyHAIg4P negedgeをどのタイミングでとらえるの?ってことじゃ
センシティビティリストにいらないんじゃね?じゃないの?違うか
センシティビティリストにいらないんじゃね?じゃないの?違うか
983774ワット発電中さん
2016/10/19(水) 23:31:39.73ID:7FziahEk locked信号がHになる時、内部のクロックが動き始めた後か?
既に動き始めていることが保障されている→非同期で無くてもよい
ちょっとわからない→非同期で受ける
何故FFで受ける?
完全非同期だと、あるFF群はまだリセットが効いているのに、あるFF群は
動き出してるというケースがあり得る。(実際に不具合が出たと言う話も聞く)
そして、非同期リセットでも解除タイミングは同期化したいという要求が生まれる。
で、同期化の為にFF受けすんだけど、clockに関わらず伝搬させるには非同期で
つまり、〜edgeにする必要がある。
FPGA内臓のPLLは大概locked信号も(PLL自身のクロックで)同期化されてるはずなんだが、
ベンダーがそう言ってるで終わらせず、明示的に書くことも多い。
ASICの場合、こういう細工はSCANモードとの絡みがあるが、実務では先輩が
対策してるだろう。たぶんね。
既に動き始めていることが保障されている→非同期で無くてもよい
ちょっとわからない→非同期で受ける
何故FFで受ける?
完全非同期だと、あるFF群はまだリセットが効いているのに、あるFF群は
動き出してるというケースがあり得る。(実際に不具合が出たと言う話も聞く)
そして、非同期リセットでも解除タイミングは同期化したいという要求が生まれる。
で、同期化の為にFF受けすんだけど、clockに関わらず伝搬させるには非同期で
つまり、〜edgeにする必要がある。
FPGA内臓のPLLは大概locked信号も(PLL自身のクロックで)同期化されてるはずなんだが、
ベンダーがそう言ってるで終わらせず、明示的に書くことも多い。
ASICの場合、こういう細工はSCANモードとの絡みがあるが、実務では先輩が
対策してるだろう。たぶんね。
984774ワット発電中さん
2016/10/19(水) 23:38:18.22ID:7FziahEk ちなみに非同期リセットのアサートは、実を言うとエッジじゃなくてレベル。
実デバイスでは時間0から有効だとしてもちゃんと効く。VHDLなんかもレベルで書く。
しかし、verilogのセンシティビティリストでは伝統的に〜edgeと書かれている。
Simでは実際にedgeがないとリセットされなかったり。
実デバイスでは時間0から有効だとしてもちゃんと効く。VHDLなんかもレベルで書く。
しかし、verilogのセンシティビティリストでは伝統的に〜edgeと書かれている。
Simでは実際にedgeがないとリセットされなかったり。
985774ワット発電中さん
2016/10/19(水) 23:53:04.19ID:xKIW9tHy always@(posedge clk or locked) って書くと
if文の else のほうは (locked != 1'b0)って解釈するほうが自然って
話になるかも
まあ、元々else のほうを暗黙で if(clk == 1'b1) って解釈するのが
強引なんだけど
if文の else のほうは (locked != 1'b0)って解釈するほうが自然って
話になるかも
まあ、元々else のほうを暗黙で if(clk == 1'b1) って解釈するのが
強引なんだけど
986774ワット発電中さん
2016/10/19(水) 23:57:30.80ID:7FziahEk lockedにedgeが無いと、Simでlockedが立ち上がった時にも
文が実行されちゃう。
文が実行されちゃう。
987774ワット発電中さん
2016/10/20(木) 00:15:40.83ID:gs2gxDBW 適当だけど、こんなんはいけないの?
input clk, locked;
output reset ;//1-active
reg locked_d = 1'b1;
always@(posedge clk) begin
locked_d <= locked;
end
assign reset = ~locked;
input clk, locked;
output reset ;//1-active
reg locked_d = 1'b1;
always@(posedge clk) begin
locked_d <= locked;
end
assign reset = ~locked;
988名無しさん
2016/10/20(木) 00:26:38.13ID:8EyTARlq クロックが安定していない。
って、かいてなかったっけ?君アスペ?
って、かいてなかったっけ?君アスペ?
989774ワット発電中さん
2016/10/20(木) 08:20:01.50ID:yf8IlF0Q 例えばこんな時
vim>wave zoom range 1000 2000
simulationはpsでやってるがTCLで制御したいときに1000000て入れるのは面倒なので制御単位
をnsecにしたいんだがどうやるの?
vim>wave zoom range 1000 2000
simulationはpsでやってるがTCLで制御したいときに1000000て入れるのは面倒なので制御単位
をnsecにしたいんだがどうやるの?
990774ワット発電中さん
2016/10/20(木) 12:04:58.70ID:qc1PvTe3 >>989
timescale 1ns / 1ns ヽ(^o^)丿
timescale 1ns / 1ns ヽ(^o^)丿
991774ワット発電中さん
2016/10/20(木) 14:23:55.54ID:4dWVvHSn 991
992774ワット発電中さん
2016/10/20(木) 15:11:13.03ID:wnyLsRWX >>977
二段にせんと駄目ってこと?
二段にせんと駄目ってこと?
993774ワット発電中さん
2016/10/20(木) 15:43:58.15ID:slxaj7BY assign reset = ~locked_d[1];
としてるから、
非同期リセット信号として使われる事を想定しての、メタス対策だろ
なら、普通にこうするよ
この程度、ケチった処でタカが知れてるし
としてるから、
非同期リセット信号として使われる事を想定しての、メタス対策だろ
なら、普通にこうするよ
この程度、ケチった処でタカが知れてるし
994774ワット発電中さん
2016/10/20(木) 15:56:48.56ID:TV1DGHlX >>977>>993
いろいろと勉強になった。ありがとう
いろいろと勉強になった。ありがとう
995774ワット発電中さん
2016/10/20(木) 16:00:02.24ID:sC1C3+jY 996
996774ワット発電中さん
2016/10/20(木) 19:45:01.83ID:Bj7JrKFs 997
997774ワット発電中さん
2016/10/21(金) 02:28:26.31ID:L/X71M9Y 998
998774ワット発電中さん
2016/10/21(金) 08:12:25.64ID:NOXCEQzP 999
999774ワット発電中さん
2016/10/21(金) 09:06:25.88ID:U5t+B83V 1000
1000arisa ◆QaHT6HayjI
2016/10/21(金) 11:39:03.96ID:KzOpsY4l VHDLでおっぱいを信号処理したい。MATLABじゃなくてscilabで
1000なら叶う!!!!
1000なら叶う!!!!
10011001
Over 1000Thread このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 959日 19時間 2分 2秒
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 959日 19時間 2分 2秒
10021002
Over 1000Thread 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【テレビ】 永野芽郁&田中圭の不倫報道をワイドショーが『全スルー』に募るネットの違和感 「広末の不倫はあんなにやったのに」★2 [冬月記者★]
- 中居正広、水面下で反撃の準備か 第三者委員会の報告書での“性暴力者”認定に強い抵抗感、自らの口で真相を明らかにする考えも ★5 [Ailuropoda melanoleuca★]
- 【婚活】若い女性と結婚できるのは「年収1800万円超」だけ…中年男性には厳しすぎる“婚活の現実” ★4 [ぐれ★]
- 【高知】「殺された…」自動運転モードで着替えか 正面衝突で1歳児死亡 運転手「記憶ない」 ★2 [ぐれ★]
- 【航空】「7月に日本で大地震」…漫画「私が見た未来 完全版」の「予言」信じて訪日敬遠か 香港―仙台、徳島便が減便 [ぐれ★]
- うずくまる永野芽郁に5600件以上のコメント殺到「本当のことを話せばいい」「芽郁ちゃんを信じたい」「コメ欄閉じたほうが良い」の声 [muffin★]
- トランプ「中国と関税の交渉をしている」中国「え、してないけど…」 [805596214]
- __米、2024年度米中除く世界全ての国のGDP上回る税収👈小さな政府なんてそんなもの [827565401]
- 全自動ウンチングマシーンハッシーン🤖 ブリブリブリブリブリブリブリ💩🏡
- まんさん「義母の貴女は妊娠中世話してくれたけど、最初に赤ちゃん抱くのは実母って理解してあと迎え来て🙆」→大炎上 [339712612]
- 【悲報】キラキラ女子(35)「えっ、ちょっとまって。私達ってチーズ牛丼と結婚するしかない感じ…?👩(絶句)」 [315952236]
- GWは全部水曜学園アイドルマスター学マススレ