-
電気・電子
-
【Verilog】 記述言語で論理設計Project13 【VHDL】
-
UPLIFTで広告なしで体験しましょう!快適な閲覧ライフをお約束します!
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/t...gi/denki/1351913871/
2011/12/07〜 Project11
http://uni.2ch.net/t...gi/denki/1323187568/
2010/09/17〜 Project10
http://kamome.2ch.ne...gi/denki/1284652343/ - コメントを投稿する
-
・FPGA
Xilinx http://japan.xilinx.com/
ALTERA http://www.altera.co.jp/
Lattice http://www.latticesemi.co.jp/
Actel http://www.actel.com/intl/japan/
QuickLogic http://www.quicklogic.com/
・ASICベンダ推奨ツール類 (高価)
Synopsys http://www.synopsys.co.jp/
Cadence http://www.cadence.co.jp/
Mentor http://www.mentorg.co.jp/
Synplicity http://www.synplicity.jp/
・Verilogシミュレーター (無料)
Icarus Verilog
http://iverilog.icarus.com/
http://ryusai-hp.web...eek.co.jp/icarus.htm (解説)
http://www.ice.gunma...erilog/iverilog.html (解説)
IVI
http://ivi.sourceforge.net/
http://www.kumikomi....2005/06/10icarus.php (解説)
・VCDフォーマットの波形表示 (無料)
GTKWave
http://gtkwave.sourceforge.net/
http://ryusai-hp.web...ek.co.jp/gtkwave.htm (解説)
・関連書籍
STARC http://www.starc.jp/
CQ出版 http://www.cqpub.co.jp/
Interface http://interface.cqpub.co.jp/
Design Wave Magazine (休刊) http://www.cqpub.co.jp/dwm/
ディジタル・デザイン・テクノロジ (旧DWM) http://digital-design.cqpub.co.jp/
・解説サイト
やるおと学ぶ Verilog-HDL http://hirokinakahar...e.net/yaruo_verilog/
・関連スレ
【FPGA/CPLD】 XILINX/ALTERA/Lattice/Actel
http://uni.2ch.net/t...gi/denki/1387718215/
【EP3】DE0で始めるVerilog HDL【C16】
http://uni.2ch.net/t...gi/denki/1310362001/ -
過去ログ参照したいときは、外部キャッシュサイトも便利です。
スレタイで検索しましょう。
・ログ速 http://www.logsoku.com/
・2chビューアーD http://2ch.viewerd.com/
・unkar http://unkar.org/r/denki/
他にもあると思う
以上、テンプレらしきもの。
_,,,
_/::o・ァ
∈ミ;;∧,ノ∧ ,,,,, ,,,,,
( ´・ω・) ,,,,(o・e・),(。・e・),, 新スレです
/ヽ○==(。・e・)(。・e・)(o・e・) 仲良くつかってね。
/ ||_彡,,, ノ彡,,, ノ彡,,, ノ
し' ̄(_)) ̄ ̄ ̄(_)) ̄(_)) ガラガラ -
あぼーん
-
あほ〜ん
-
FPGAでキャラクタLCDの初期化とか、
74HC595、74HC166などのシリアルものをやったときは、
FPGAを窓から投げたくなった。
マイコンが神様のように思えた。 -
ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは>>1乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. ::: -
854 名前:名無しさん┃】【┃Dolby[sage] 投稿日:2014/03/07(金) 12:54:14.90 ID:w9n1Ku5o0
http://www.fullhd.gr...0-open-fullhd.gr.JPG
サムスンの4Kばらしたら
FPGAがでてきた -
FPGAで家電作ってもおかしくないだろうけど
コスト合うのかな
お得意のウォン安パワー? -
ICにするほど数が出てないんじゃね?
-
1000台作る製品のコストを1円下げるために、
何万円ぶんも人間をタダ働きさせるのが日本式だからなw -
TATが間に合わない事もあるしな
TVだとASIC作る時代でも無いし
ASSP+FPGAで急場を凌ぐかな -
4K売れんの?
-
開発期間短縮の為、FPGAを採用。
その後、4Kが大量に売れそうだったらASIC化するって事じゃないの? -
FPGAで何か家電を作るとすれば・・・
炊飯器か
マイコン炊飯器より売れそう -
4Kは売りつけるんだよ
その次はSHV(8K)を売りつける
ここまでは決まってるんじゃね
炊飯器よりエアコンにFPGA合うかも
センサー高度化してるし冷却も万全? -
炊飯器やエアコンでFPGA必要なほど高速な処理って何よ
-
インバータ制御はマイコンじゃ無理
-
FPGAが高速とか、笑わせるwww
そんなに高速なんだったら、お前の家からintel PCを一掃して全部FPGA PCにしろよw -
>>19
ワンチップMSXですね! -
そんな物もあったな
MSXは俺のルーツだからつい買ってしまったが、一度も通電する事無くどこかに放置してある -
>>19 規模の利益を全く無視したご意見、どうもありがとうございますw
-
高速か
何もかも皆懐かしい -
PSoC4 pioneerで遊んでるんだけど、alwaysのトリガに同期系
条件(posedgeとか)と非同期系条件(ピンチェンジ)を混ぜては
いけないってのはVerilogの制限?それともPSoCローカルな制限? -
何をしたいのかがよくわからんけどVerilogの制限ではないな。
ただFPGAでVerilog使う場合でもそうだけど合成可能かどうかはまた別問題。
一般論としてリセット付きF/Fは合成可能だから大丈夫だと思うけど。 -
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 -
やってみろ
まずはそれからだ・・・
まぁ良かったと思うけど -
サンクスです。やってみました。できました。
でも質問した時はできなかったんですよね。。
今日はできた!
何が変わったんだろ
よくわからんw
すみませんでした。。 -
出来なかったというのは
合成すら出来なかったと言うこと?
じゃないよね -
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対応なんて、Wikipedia日本語版にしか書いてないような気がする。
英語版は、portions of SystemVerilog としか書いてない。 -
>>29
合成はできたんですけどワーニングが出てて
出てきた電子回路見てみるとつなげてるはずの配線がざっくり無くなってました。
セレクタ?を記述しないといけないんだけどそれがうまく表現できず、ツールに伝わってないみたいでした。 -
>>31
やはり、現版数では対応していないようですね。幾つかのサイトを見て回ったのですが、対応していると今後対応予定という情報が入り交じっていました。
Behavior simulationを目的としているので、試しにXilinxのVivado入れてみましたが、simulatorがSystemVerilog非対応でした...
現状、SystemVerilogのsimを行うとすると、やはり御三家のsimulator使うしか無いのですかね... -
QuartusはsystemVerilog対応って謳われてて
modelsimの無料版入ってるけどそれではだめなん? -
>>33
御三家って、シノプとケーデンスと・・・? -
FPGAらしい
https://www.youtube..../watch?v=tUIQItrpYBE
https://www.youtube..../watch?v=RyezC1p_pak
http://internet.watc...20140404_642876.html
http://game.watch.im...20140221_636384.html
http://gigazine.net/...0140404-pocket-miku/
http://nlab.itmedia....1403/03/news057.html
http://japanese.enga...014/03/02/evocaloid/
http://www.amazon.co.jp/dp/4057504656/
http://www.dtmstatio...chives/51888898.html
http://hitoriblog.com/?p=23019
http://www.otonanoka...net/nsx39/index.html
http://www.dtmstatio...chives/51877546.html
http://otonanokagaku.net/nsx39/app.html
http://www.crypton.c...s/2014/02/pocketmiku
http://m.youtube.com/watch?v=2-v5CB5krws
http://www.nicovideo.jp/watch/sm17357529
歌詞モードは知らんけど
リアルタイムモードは子音がサポートされてないのが残念
リアルタイムでも子音出せるのはこちら
↓
https://www.youtube..../watch?v=ka8-SpSkmZA
http://vocaloid.blog...log-entry-11373.html -
>>37
GM音源とDSPを内蔵した専用チップだったはずだけど、FPGAなの?
http://download.yama...m&asset_id=60768
ちなみに子音が出せないのは、ボタンが押される前に子音が出せてないと、音に合わせて声が出せないからだからな。 -
http://nlab.itmedia....1403/03/news057.html
筆者は昨年11月のMake Faireで披露された「歌うキーボード」のプロトタイプを実際に試してみたのだが、
そのときから長足の進化を遂げたようだ。まず、レスポンスがぜんぜん違う。
Make Faireのときには操作はできるものの、反応はちょっと微妙で、演奏はコツがいる感じだったが、
現在のバージョンは十分リアルタイムでの演奏に追従できる。なんらかの改良が行われているようだ。
「さしすせそ」の発音は、VOCALOIDでは母音の前の子音部分が長く、
鍵盤を押してから発音されるまでタイムラグがあるものだが、
ポケット・ミクではそこが実用になる範囲に収まっている。
ひょっとしたら、素のままのNSX-1チップではないのかもしれない。
http://nlab.itmedia....1311/04/news010.html
http://nlab.itmedia....1204/29/news007.html -
http://www.dtmstatio...chives/51877546.html
ここにはFBGA(原文ママ)って書いてあるけど関係なさそう -
http://ja.wikipedia.org/wiki/FBGA
なるほど、半田付けしたくないな -
全然使ってないPT2の基盤眺めてたら
ざいりんくす乗ってた
なんのシリーズかは見てない -
そこらじゅうのスマホからミクの声がしてたら
それはそれで嫌だな
せからしか!ってなる -
>>41
なるほど、勉強になった -
>>19
FPGAはいくつもの処理を平行して処理できる。 -
もちろん、プロセッサも!
-
こんな計画もあったのか
また、今回の製品版には実装されていないが、これを利用して歌詞を入力する機能も試作された。
カーボンキーボードで文字入力を行なうプロトタイプの説明図。
鍵盤部で「あかさたな〜」といった子音の行を選び、リボン部で母音の段を選択する。
写真 https://fabcross.jp/...img/0314_uda_005.jpg
本文 https://fabcross.jp/...40314_uda_02_03.html -
電電系は高慢だよなぁ…
-
某N社の仕事で、VHDLの回路改修を頼まれ、
アドレスデコーダーの回路見たら、
全部IF-ELSIF文でアドレスデコーダーを数百構文も書いてあった。
CASE文とIF文の使い分けもできないのか、この大手企業はと思った。
しかも担当者に聞いたら、その書き方じゃなきゃダメだと。
日本の「もの作り」とか言って、これじゃおわっとるよな。 -
if()ではだめなの?
-
言語的にはIfでcaseかけるので
ちゃんと書けば
同じ回路になるはず
ただデコーダエンコーダ
もしくはCPUのフェッチはcaseが良い(ほぼデコーダ)
人為的なミスが減る
ソースコードは人に優しくないと -
「もの作り」って、論理以前の物理的な「もの」しか対象に考えてないからな。
ブール先生から150年経つんだから、ざっと考えて200年前の伝統芸でしかない。 -
>>53
おおもとはexcelで書いてある。 -
合成ツールの変なバグがあって、治るまで使うなと言ってたのが
いつのまにか絶対使うなに化けるとか、いろいろあるものだ。 -
ifでもcaseでも最近の合成ツールなら一緒だろ
-
教えてください。
FPGAで、sin波はDDSで出せますが、ノコギリ波は、どうやって出すのでしょうか?
工場の屋根みたいなヤツです。
シンメトリ(矩形波で言うDutyです)は変えませんが、
周波数を変えたいです。ROMにテーブルを入れて、読み出しを間引けばいいのかしら。
それとも、毎点毎点、計算を行うとか・・・・
宜しくお願いします。 -
dds でどんな波形でも出せる
-
>>61
DDSの様にROMでテーブル作ってアドレスカウンタで飛ばし読みするとか、
固定小数点を含んだような積和演算器(カウンタ)を作って
その加算値の整数部を出して行くとか、方法はいろいろあると思うよ。 -
DDSで、sin波を形生成する場合は、まだ良いと思うのですが、
三角波など、1ドットで「+ピーク」→「-ピーク」に変化する値を持った信号だと、
間引きstepにより、そのピーク点が採用されたり採用されなかったりして、
その結果、出力波形のピーク値が変化しないでしょうか?
また間引きstepが大きくなると、ほぼ直線変化だったものが、
階段のようにガタガタになってしまいます。
これは、外付けのLPFで除去するのかと思いますが、
その方法だと、ピーク点の尖りまで鈍ってしまいそうです。
DDSにおいて、
ピーク点の確保とガタガタ波形に対して、どのように考えれば良いのでしょうか? -
少しは自分の頭で考えて試してみたらいいんじゃねぇの?
シミュレーションだっていくらでもできるだろうて -
ありがとうございます。
考えました。
例えば、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番(ピーク値)が欠落すると思います。
どうでしょうか? -
そういうやり方をしたら、欠落するだろうね。
だったら、欠落しないようにする方法は?って考える。 -
>>66
同じようなことはsin波形でも起きる。
しかしD/Aした後にsinπx/πxのアナログフィルタを通すと、
このガタガタがきれいに取れる。
出力する周波数に対してサンプリング周波数が十分高ければ
そんなに気にしなくても大丈夫だよ。
ちなみに経験的なことを言うと、100KHz位の鋸歯状波を10MHzの位の
サンプリング周波数で出力してみたけど、ちゃんと鋸歯状波になってた@12bit分解能。
あくまで主観だけど。 -
サイン波は高調波を持ってないけどノコギリ波は無限の高調波を持つ。
エイリアシングの影響を避けるためには出来るだけサンプリング周波数を
高くするということじゃないの? -
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では同じソースファイルをコンパイルできるのに
誰か助けてください・・・ -
パスに日本語含まれてないか?
-
この際だから、Linuxに移行したほうがいいんでないかい?
-
Verilogを使い始めた初心者です。
LTC1744A/DコンバータをXilinxで動かしたいですが、質問があります。
FPGAからADにスタート信号を送ると、ADからADクロックとともにデータが出てきます。
ADのデータを取り込むには、そのクロック信号の立ち上がり立ち下がりで取り込むらしいです。
データーはADのクロックに合わせて出てくるので、FPGAのクロックと合っていません。(周波数は同じようです)
こういう場合、どのようにしてデータを取り込むのでしょうか?
・水晶→A/Dクロック信号で1つ完結。ADからのクロックを使ってそれ以降のFPGa全体を動かす。
・あくまでFPGAのクロックで動かし、A/Dクロックの変化点を見つけて、そのときのADデータを取り込む。
・FIFO変換回路を使う
・ディアルポートメモリーを追加する -
FIFOで正解
デュアルポートでもできるっちゃできるが -
FPGAのクロックをPLLで
ADの10倍くらいで動かせば余裕のよっちゃん
と何も考えず・・・
常にADの方が遅いイメージ -
>>75
ありがとうございます。
やはりFIFOですか、了解です。コアジェンのFIFOジェネレーターで実験してみます。
>>76
>FPGAのクロックをPLLでADの10倍くらいで動かせば余裕
ヒントをありがとうございます。
これは、A/Dからの信号をFPGAで「高速に」刻めば、FPGAでA/Dのクロック変化を検出でき、
そのタイミングでデータを取り込めば、FIFOなしで良いということでしょうか?
もしそうだとすると、10倍も上でなくても3倍くらいではだめでしょうか?
・A/Dからのクロック信号を取り込み記憶。
・前回からの差を見て、変化点を検出。
・変化ありなら、その次点のデータを取り込む。(データは、この時点までホールドされていることが前提)
こんな感じでしょうか。 -
ありがとうございます。
3倍程度ではだめですか。了解しました。
やはりFIFOですね。 -
一度クロック直で誤作動っぽい動きしていて
PLLに一度食わせただけで直った経緯から
最近はPLL使わない事の方が少ない
保険みたいな感じ -
PLLじゃなくてもNOTとかインバーター通しただけでも治ったかもね
-
チップスコープで、16bitの値を見ているのですが、
観測点を、それ単独でコンパイルしたときと、
他の観測信号も一緒にしてコンパイルした時で、
表示される値が違うことないですか? -
クロックが違うとか?
-
>>83
ありがとうございます。
いえ、xxx.cdcで、メンバーに入れてコンパイル、入れないでコンパイル、
それだけで違うんです。半日悩んでいました。PCの再起動とかしてみたのですが。
一つ教えてください。
Verilogで、C言語のような、こんな書き方ってできるのでしょうか?
if( a == 'A' ) begin ...
end else if( a == 'K' ) begin ...
end else if( a == 'B' ) begin ...
試して見ればよいですね。すみませんでした。 -
>試して見ればよいですね。すみませんでした。
ダメでした。残念 -
確かに、その表記ができると便利だと思う。
Cは本当によく考えられた言語だね。
Cで assign や <=代入ができるなら、もうVerilogやめてCで書けばいいと思う。
もちろん、beginは{に変更して。 -
文法的にはいけるはず…?
http://www.verilog.com/VerilogBNF.html -
このBNFが規格そのものを表してるかわからないね
-
232cの入力bitを検査するのにcase使ったけど
別に問題はなかったような
シミュレーションしかないかねぇ -
CSP有効無効で、ユーザ回路側の挙動が異なる、ということ?
>82では
・16bitの値=観測点
・16bitの値だけをCSPで見た場合と
・16bitの値と同時に、他の信号をCSPで見た場合で
・得られる16bitの値が異なる(他の信号は?)
と読みました。
・16bitの値を、CSPを入れずに観測し(ピンなどに出した?)た結果と
・16bitの値を、CSで観測した結果が異なる
ということ?「他の観測信号」はどこでどう絡んでくる?
CSPで挙動がおかしい時の基本確認事項は
・タイミングレポートを確認する。CSP入れると周波数は落ちる傾向がある。
・観測対象の信号をドライブしているクロックとCSPが参照しているクロックが同じか?
辺りが第一歩ですかね。 -
それとも
・16bitの値を、CSPを入れずピンに出した結果と
・16bitの値を、CSPを入れてピンに出した結果が異なる
ということかな?CSPの観測結果は無関係? -
>>86
Handel-Cを思い出した。 -
>82
君と同じ現象かどうかわからないけど
観測点増やしすぎると最高動作周波数が下がって
まともに観測できなくなることはあった。 -
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が
実行されないとおかしくなるような状況です。
どなたか解説オナシャス! -
ブロッキング代入なんて使うな
どの本だ、そのブロッキング代入を推奨してる本は -
実行順番が保障されるのだろ?
ちゃんと「data[i * 3 + offset] <= val」の後に「i <=i+1」
が記述されてあるだろ。
自分で言ってることじゃない。
何が分からないのだ? -
data[i * 3 + offset] <= val;
i <=i+1
はノンブロッキング代入だから順番が保障されないのかなぁ?と思った次第です・・ -
もし今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;が次に起きたりしないのかな?ってことです。 -
>>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
↑今すぐ読める無料コミック大量配信中!↑