【Verilog】 記述言語で論理設計Project12 【VHDL】
HDLの処理系も、それを実際に動かすシミュレータ・評価基板も、
安価で入手できるようになってきました。
このスレが目に入ったおまえ! HDLで何か作って遊んでみませんか。
日曜工作のHDL書き、学生さん、プロの方、主婦の方、カキコお待ちしております。
関連情報は >2-10 あたり。
入れ食いキーワード
・Nios、MicroBraze
・Artix-7、Kintex-7、Virtex-7、ハードコアCPU内蔵 Zynq-7000
前スレ (直近スレのみ)
・Project11 uni.2ch.net/test/read.cgi/denki/1323187568/ 2011/12/07〜
・Project10 kamome.2ch.net/test/read.cgi/denki/1284652343/ 2010/09/17〜
979 :774ワット発電中さん :2012/11/01(木) 13:40:52.57 ID:Q80B2X2d
>>976 >レベルだけじゃなくて、位相特性の測定もお願いします…orz
おもしろいから聴いてやろう
雑音の位相特性をどうやって決めるんだい?ウスノロ
位相特性と言う限り、入力は正弦波が前提になる。
雑音の位相とは何か定義して教えてくれや。
位相どころか、雑音の微係数だって、リーマン=ルベグの意味では定義できないんだがな。
980 :774ワット発電中さん :2012/11/01(木) 14:58:21.32 ID:CaVGBd7P
>>979 976が書いてる正弦波で測定する場合は位相特性オシロで見るとかででるでしょ??
雑音でやる場合は、FFT掛けるから一括で特性出るよ??
981 :774ワット発電中さん :2012/11/01(木) 15:01:45.03 ID:CaVGBd7P
この場合で測定しようとしてるのは、フィルタの伝達特性だよね?
982 :774ワット発電中さん :2012/11/01(木) 17:36:02.88 ID:Q80B2X2d
>>980 >>981 >雑音でやる場合は、FFT掛けるから一括で特性出るよ??
戯言ほざくなお前は
システムの伝達関数を調べたければ入力はδ関数インパルス入力だ。
インパルス入力と雑音が一致してるのはスペクトル特性だけ。
理屈の上からは極めて長い周期の一様乱数でガウス雑音を作れば、
f特は1に近づくが、どれだけの周期のものが必要かお前はわかってんのかい。
だいたい、雑音自身の位相なんて決めようがないのにどうやって出力位相を決定するつもりだ。
それと、なんでオシロを見るんだ。ディジタルフィルタだからバス入力があるだろうが、
そこにマイコンかUSB出力をシリパラするでポートたたいて直接ディジタルデータ入力しろと言ってる。
983 :774ワット発電中さん :2012/11/01(木) 17:38:23.93 ID:Q80B2X2d
>>980 >雑音でやる場合は、FFT掛けるから一括で特性出るよ??
ガウス雑音入力してどうやって位相特性出すのか解説してもらおうか。
ごまかさずにちゃんと書け
984 :774ワット発電中さん :2012/11/01(木) 18:47:47.32 ID:6mBhdETp
>>983 あんたの罵倒ことばが大嫌い
985 :774ワット発電中さん :2012/11/01(木) 23:02:45.70 ID:PG9w/7bV
よくわからないけど、982で決定的に恥をかいているような気がする。
>>雑音でやる場合は、FFT掛けるから一括で特性出るよ??
>ガウス雑音入力してどうやって位相特性出すのか解説してもらおうか。
擬似乱数で作った雑音だったり
>>1 乙やめブラ
ちなみに
>前スレ (直近スレのみ)
過去スレ、ならともかく前スレならProject11だけ挙げればいいような気も
日曜HDL書きは、今日も元気にalwaysしてます
何作ってんの?
って、自演かい!!
"今日も元気にalways"ってなんかやる気になるなw
ツッパリハイスクールロックンロールかと思ったw
10 :
774ワット発電中さん:2012/11/05(月) 10:15:05.42 ID:scJ6GysZ
毎日がエブリデイって感じ?
最近、少しFPGAに慣れてきました。
マイコンに比べて動作clockが速いので、
今まで遅くてあきらめていた部品、シリアルA/DやシリアルD/Aが、
とても気持ちよく動くようになりました。
RS232も230kbpsとかが平気で使えるので、
MAX232などのI/F ICの動作上限に迫る勢いで、ちょっと気分がいいです。
で、ややこしい処理になってくると、CPUの有り難味がでてきたり、
して、PSoC3/5あたりも結構美味っぽく感じたりもするんだけど、
ちとチップが高いのよね。
そうそう、だいたいそのコースね。
FPGAでキャラクタLCDの初期化とか、
74HC595、74HC166などのシリアルものをやったときは、
FPGAを窓から投げたくなった。
マイコンが神様のように思えた。
チップの中に1人しかいないのは、なんと楽なことか。
チップの中に1人しかいないのは
なんと非力なことか、とは思わないのね。
Xilinxが、LCDの初期化IPを、CoreGenに入れてくれればいいのにね。
ついでに、UARTとSPIも。
そんなもの自分で作るんだよ、と言われたことがある。
マイコン制御に慣れてるならPicoblazeを入れると捗るぜ。
picobrazeって、Cで書けるの?
一応 PCCOMP という C Compiler があります。
「あった」が正しい。
>19の手もとにあるなら放流してくれ。
>>20 PCCOMP開発者のF.Poderico氏のWebPageが消失していたのですね。
ググってみたところ「Pccomp下?」で最初に表示されるページから今でも入手できるようです。
一応簡単なVirusチェックで確認はしてみましたが、
以前の一次公開元からDLしたpccomp.exeが手元に残ってる人は md5sum 値を晒して欲しい。
-----------------------------------------------------------------------------------------------------------
Picoblaze C Compiler for PicoBlaze, Version alpha 1.8.4 optimazer ver. 1.0.2
2006/12/03 13:45 356,287 pccomp.exe
[md5sum]: 60120d152207a074c91a80dd773d3a78 *pccomp.exe
-----------------------------------------------------------------------------------------------------------
たぶん同じところから拾ってきた。ついでにマニュアルとかも。だんけ >21
しかし放流してくれと書いといてなんだが、バイナリだけだと試すのに度胸いるね…。
すると、picobrazeは、assemblerで書くのでしょうか。
>>23 純正 assembler は使い難いので、互換品の pBlazASM を使うのが良いかも。
コードのデバッグは pBlazSIM というシミュレータが便利です。
ドイツ語だろ
27 :
774ワット発電中さん:2012/11/17(土) 12:42:40.87 ID:Cozdkgt0
ドイツ語は、ダッチじゃないの?
ていうか、なんでドイツ語なんか使うの?
ダンケシェンでggrks
スレ違いのことで上げんな。
29 :
774ワット発電中さん:2012/11/18(日) 13:07:51.62 ID:+dbdo4mz
ggrks って、何ですか?
ggrks --help
>>30 おかしいな・・・
俺の環境では使えないようだ
(^▽^)
NCVerilogにはggrksコマンドがないようだ
このコマンドを使える処理系をぐぐって調べるか・・・
以下の条件に一致する商品は見つかりませんでした。
キーワード:ggrks
検索対象:タイトル
そうなの?
タッチワイブスって言うじゃん。
オランダ妻は電気ウナギの夢を見るか!?
教えてください
Verilogで、マイコンとのI/F部分を作っていますが、
困った部分があります。
マイコンとは非同期なので、FPGAに入ってから、
FFを1段通して、メタステーブルの対策をしようと考えました。
ReadとかWriteなどのマイコンからの出力は、一方通行なので、
in----D Q----D Q---->in' と、書けるし動くのですが、
データバスは、inout なので、上記のようにFFを通すというワケには
いかないと思います。
このような場合は、どうしたらよいのでしょうか?
トライステートスイッチを通って、データの方向が決まってから、
----D Q----とするのでしょうか?
inout [7:0] data;
wire [7:0] odata;
reg[7:0] idata;
assign data = oe ? odata : 8'hz;
always @(posedge clk)
if(!rst) idata <= 8'h0;
else idata <= data;
Xilinx ISE、VerilogでHDLを書いています。
型宣言無しでも、defaultでwireにしてくれる、という機能がイヤで、
`default_nettype noneで書いています。
今までずっと順調だったのですが、CoreGenでDCMを作ってつないだら、
エラーで止まってしまいました。原因は、CoreGenの吐くコードが、
default_nettypeが wireで作ってあるみたいで、
そのコードに私がwireという宣言を入れたら、通りました。
通常そういうものなのでしょうか?
Xilinxにイラっと来てしまいました。俺は悪くないのにって。
そういうものです
えーーーっ、そうなんですか?
すると、`default_nettype noneで書くのは、やめたほうが良さそうですね。
せっかく、ちょっと厳しいチェックで、タイプミスとかも減るかと思ったんですが。
でも、Xilinxもずるいような気がします。
Xilinx チップスコープで質問お願いします。
Chip Scopeの、CoreGenでIPを作って、
HDLソースに貼り付け、そこで配して、その後XSTする方法で、
Chip scopeに表示される信号名が、DATA PORTになっていて、
もう一方のやり方のように信号名が表示されません。
「データポートの26番目だから、登録したときのぉ、えーっと・・・」
という感じで行うのでしょうか?
信号名を表示させる方法があれば教えてください。
また、このとき
・ICONは、top階層に、
・ILAは、下位階層でもOK
とかの決まりはあるのでしょうか?
>>44 FPGA Editorを起動してTools→ILA→Write CDCで設定を書き出せます。
階層は何処でもOKだろうけど「ICONは1個のみ」という縛りがあります。
>>45 >FPGA Editorを起動してTools→ILA→Write CDCで設定を書き出せます。
あれって、インサーターくらい完璧な文字が出ますか? 半分くらいのような気がした。
.
Lintチェッカーが欲しいですが、価格は、どのくらいするものでしょうか?
5万、10万、50万、100万・・・・
ネットで検索すると、糸くず取り680円しか出てこないんです。
リントチェッカーって、実質 spyglass しかないような・・・
300万だか500万だかそのくらいだったと思う。(年間ライセンス)
厳密でなくていいなら合成ツール(dc)を使う手もあるけど。
>>48 ありがとうございました。いい感じですね。探したら、日本語で説明しているページもありました。
どうもありがとうございました。
>>49 そんなにするんですが。ありがとうございます。
日曜HDLerが300万も出したら、嫁に刺されそうです(w
>>48さんのものを調べて見ます。
すみません、教えてください。
今は、Verilogでシュミレーションの勉強をしています。
その記述の中で、initial文というのがあります。
最初に1回だけ実行されるようです。
begin〜end内が全てinitial文だと思います。
ところが、本のサンプル例では、どれもinitial文の中に
テストする信号変化など、一切全部を記述して、$finishで終了しています。
これでは、initial文ではないように思います。
initialだというのなら、
それに対応する通常の動作部分があってもいいと思うのです。
例えば、以下のように、initialとmainとかです。
なぜinitial文と言うのでしょうか?
initial begin // Initialize
RST_X=1'b0; counton=1'b0;
end
main begin // 通常動作文
#10;
#100 RST_X=1'b1;
#100 RST_X=1'b0;
#100 counton=1'b1;
#1500 RST_X=1'b1;
#100 RST_X=1'b0;
#500 counton=1'b0;
#100 counton=1'b1;
#500 $finish;
end
>>50です。
すみません、自己解決しました。
initial文に対応する文は、always文でした。
initial文 先頭から、一方通行的に終わる
always文 先頭から、最後まで実行すると、再び最初から実行されるイメージ
always @ () @()で立ち止まり、()内の条件が真になったら、その中身を実行し、
再び、@()で立ち止まる。
ありがとうございました。
@ は、initial の中でもどこにあってもいい。
複数あってもね。
clock 同期回路の記述の定番は
always @(posedge ... だけど。
>>52 always@(*) って書いたら全部のイベントに反応するのかな
実装によるんじゃない?
大規模論理ではセンシティブリストに載り切らないから実用的ではないね。
実装?シミュレータの?
話が変わるけど、
階層構造で記述したとき、最下層の信号を、I/Oピンに出そうとすると、
.aaa(bbb)という感じで、延々と引っ張り上げないといけない?
何か「top」とか書くと最上層までパスしてくれるとかは、ないんでしょうか。
>>56 Verilogだと「インスタンス名.インスタンス名.….インスタンス名.変数名」で
下層モジュール内の信号を参照できるけど、合成可能な記述なのかは知らぬ。
58 :
774ワット発電中さん:2012/12/03(月) 10:41:09.95 ID:AFI7m40H
すごいですね、そんなことができるなら使いたい。
使い終わったら、一行コメントアウトすれば、楽チン
テスト用出力なら、
普通は全部出さずにマルチプレックスして出すよ。
でもどっちにしろ、引っ張り上げる必要あり。
つーか、どんだけ階層作ってんだよwww
普通は多くても3階層位だろ。
4〜5階層は普通ですよ。
趣味のFPGAと仕事のSoCでは違うのだよ
62 :
774ワット発電中さん:2012/12/09(日) 01:20:03.87 ID:DeCBsBox
前スレ
>>932 parameter [REG_WIDTH-1:0] cmd = {{(REG_WIDTH-1){1'b0}, 1'b1}; とかでどうかな?
63 :
sage:2012/12/09(日) 01:24:25.07 ID:DeCBsBox
parameter [REG_WIDTH-1:0] cmd = {{(REG_WIDTH-1){1'b0}}, 1'b1}; だった.
VerilogHDLに関する質問です。
100バイトぐらいの配列を確保して、その配列をランダムアクセスしたいのですが、
高速化のためにその部分の処理を並列化したいのです。
reg [7:0] mem [0:99];
こう↑書いて論理合成した場合、巨大なセレクター回路が並列化した数だけ生成されるのでしょうか?
こういう処理を書くための定石があれば教えてください。
65 :
774ワット発電中さん:2012/12/19(水) 00:39:34.19 ID:ELbnHg01
>その部分の処理を並列化したい
の意味がよくわからん。2ポートRAMみたいに出口を複数取るってことか?
配列はSRAM推定させるとき以外は使用しない方が無難だけど、
書き方によっては並列処理できるようにFF推定してくれるかもね。
処理系依存だからなんとも言えない。
67 :
64:2012/12/19(水) 02:37:45.37 ID:2KT5/1kc
.
>>65 > 2ポートRAMみたいに出口を複数取るってことか?
はい、そうです。
その場合、FFにするしかないと思うのですが、これがFFになったとした場合、
並列化する数だけ配列のindexからその配列要素に対応するFFへのセレクター回路が生成されることになるかと思うのですが
これがすこぶる大きな回路になるのではないかというのを心配しています。
他に良い方法は無いのでしょうか…
FF実装の場合、FFの面積に比べたらMUXの面積なんてたいしたことないと思うけど。
まずは適当な処理系で合成してみたら?
69 :
64:2012/12/19(水) 04:25:39.33 ID:2KT5/1kc
>>68 なるほど。やってみます。
ありがとうございました。
>>68 横からですが、教えてください。
>適当な処理系
この場合の処理系とは、何を指すのでしょうか?
>>70 いま使っているIC開発ソフト
それでどのように合成されるか見れば良いんじゃないか
今回、初めてSPIのインターフェースをFPGAで作りましたが、
とても大変でした。
マイコンだと、あんなに簡単なので、
楽勝だと思っていたら、大変難しかったです。
みなさん、こんなに難しいのをやっているのでしょうか?
これならマイコンでやればいいのにと、つくづく思ってしまいました。
>>72 適材適所
・マイコンのみで
・マイコンを中心に、一部の処理をFPGAで
・FPGAを中心に、一部の処理をマイコンで ← これ、実はあまりやった事がない
・FPGAの中にCPUコアを実装して
・FPGAのみでシコシコと
・ディスクリートでシコシコと ← 今時こんな仕事が来る事はほぼない
予算、規模、納期、開発リソース、保守性などで適当なのを選べばいいだけ。
もっともあまり考慮せずに選んだものが下請けに落ちてくるような仕事も多いわけだが。
俺的にはSPI(+α)の機能が欲しいだけならSPIを持ってるマイコンのみでやるのが一番楽っぽいw
待ちが発生する処理は、とにかくFPGAでは めんどくさい。
秋月液晶の初期化の待ち時間カウンタなんて、何bitいるのか。
15ms/7.5ns=2×10^12
分周してから使えよ
マジレスすると分周してもトータルのbit数が減る事はないけどなw
えっ?
システムクロック100MHzで、1秒と1.3秒クロックを作り出すHDLを作り、上位からそれらを呼んだとき、
二つが別々の文集カウンターを持つのでしょうか?
それとも、途中からもらってくろのでしょうか?
前者だとすごくたくさんのFFを使うことになると思うのですが。
自分で作るからどっちでも可能。
まぁ俺なら100usカウンタ作って共用するけど。
違う違うw 100msカウンタだ。
まぁ、条件次第だな。
その1秒や1.3秒が変わる可能性が無いなら共用でいいが、
出来た後に他人の思いつきで
「ちょっとこっち1.2999999秒にしてみてよ」
なんてことになる可能性が高いなら最初から分けておく。
例えばワンショト叩くような場合、イベントでたたいても直ぐ点灯しない。100msecカウンタに同期して
点灯する。誤差が100msecもでることになるので、不味い場合がある。
そんなとき、遅い周波数の発振器を もう一つ使ってはどうだろうか。
低速発振器の信号を、高速clockでFFを2つくらい通して同期化する。
それは原理的に無理だな。
このスレを、高速道路走行中の車内で、携帯で読んでる人、いるだろうか?
あるいは、今日は最終日で、みんな帰ったのに、会社に残って仕事してる人もいるんだろうなあ
自宅研究員…
あ〜〜〜〜
やっと、Syntax Errorが直ったぁ。1日かかって見つけた。
直って嬉しい。
シンタックスエラーが取れないようじゃ、まだまだだね。
パッと見てビジュアルでわかるようにソースコードを書かないと。
ソースを油絵で描けるようになったらアマチュア卒業ってホントですか?
明けましておめでとうございます。
今年も元気にalways
今回、初めてFPGAのソフト開発をしているのですが、
マイコンに比べて、コンパイルなどの時間がとても長くかかり、
開発時間は待ち時間ばっかりです。FPGAは、こんな世界なのでしょうか。
>>91 「ソフト開発」がNiosIIやMicroBlazeのプログラム開発の事を指しているのであれば
FPGA回路の再コンパイル無しでプログラムコードの更新を行うことも可能です。
93 :
774ワット発電中さん:2013/01/07(月) 21:43:11.06 ID:Wh04JUNS
verilog初心者なんですが、modelsimでverilogのシミュレーションをしようと
思ったら、テストベンチで参照してる、下位モジュールの`define指示子(?)の
定数が「Macro `XXX is undefined.」ってエラーになっちゃいます。
Compile Orderを下位モジュールを先にしても駄目です。
どないしたらええのでしょうか。
94 :
774ワット発電中さん:2013/01/07(月) 23:20:34.33 ID:btK9+kxG
参照する側も ` を付けてるか?
Cの感覚でいると忘れがち
95 :
93:2013/01/08(火) 01:50:37.37 ID:LA34CP9D
>>95 includeで参照しているファイル(*.vhとか)の置き場所指定を忘れているんじゃないかな。
Compile→Compile Options→Verilog&SystemVerilog→Include Directory
ベンダー提供のテストベンチならばSimulationスクリプトも付属してるとは思うけど
vlog +incdir+<hoge> foo.vみたいな感じで指定してると思う。
日曜HDLerです。教えてください。
Verilogで書いているのですが、
ICの内部設定をする通信部分を作るとき、などに
将来のことを考えて、全パラメーターを可変出来るように作ろうとしますが、
その後、流用したことがありません。やるたびに少しずつ少しずつ仕様が違い、変更が面倒だからです。
だったら簡単に、設定はデフォルトにして、必要なところだけ書き換えるように書きますが、
そうすると、毎回ゼロから作る事になります。
その中間の作り方で、前回の物を持って来て改造することもありますが、
改造って、変更に手間がかかり、はじめから作るのと変わらないことか多いです。
みなさん、どのようにしていますか?
もうひとつは、変数名の付け方で質問があります。
wire [7:0] a; とか書くと、何の信号かわからないので、
wire [7:0] AD_ch1_read_data; とか書くと、長くて、タイプミスも出やすいです。
しかも、変数だけ見て、sugned か unsignedか、bit幅、入出力、論理とかを盛り込むと、
wire [7:0] AD_ch1_read_data_Uint8_input_buffer; とか
wire AD_ch1_read_data_Uint8_input_status_pos; とか ドンドン長くなります。
みなさん、どのようにしていますか?
Verilogの記述文法とかも大事だと思いますが、このような「運用の仕方?」も重要で、
知りたいのですが、なかなか良い本が見つけられません。
98 :
774ワット発電中さん:2013/01/12(土) 16:37:21.67 ID:a2cEOORd
自分で自分のルールを決めるしかないな
現場だってその現場独自のコーディングルールを決めるとかするわけだし
根本的な解決策はない
具体的な例で言うと、俺ならAD_ch1_read_data_Uint8_input_status_posは
AD_rdata_sts_1 で済ますな
ビット幅を変数名に含めるとビット幅変えたときに変数名との整合が取れなくなるし
論理は「負論理は最後に_Nと付ける」と決める。statusとかreadとか、よく見る単語は
sts、r、とかの短縮後でも間違わないだろって感じで
結線に使うwireには s_XXX、FFを生成するregには r_XXX を付けてる。
自分ルールを他人に布教していくと、他人の書いたソースも読みやすくなってくるのがイイ。
wire a; でいいよ。
見やすいコードを書いてくれ。
あと、適切なコメントも。
>>98,99
ありがとうございます。
やっぱり、独自にルール決めですね。
>根本的な解決策はない
これを聞いて、安心しました。「こうすべきだ」という定義があれば、その理由が見てみたかったです。
>布教していくと
確かに、布教ですね。(笑ってしまいました。すみません)
心配性なのか、変数を一目見ただけで、パッとわかるようにしたいし、
記述の体裁も気になってしかたありません。
たとえば、
wire [3:0] a;
wire b;
reg c;
というのはイヤで、
wire [3:0] a;
wire b;
reg c;
と縦を揃えたくて、記述するだけでとても時間がかかってしまいます。
単線ワイヤの場合でも、
wire [0:0] hoge;
と書く方法もあることを、先日本屋さんの本で知りました。それを使えば、全桁が揃うので、
検討中です。
一度だけ、プロの書いたソースをみたことがありますが、その人は、こんな事に全く気を遣っていなくて、
全部1スペース空けで、変数は3〜5文字でパッと見わからず、コメントはほとんどありませんでした。
(ゆっくりやっている時間がないんでしょうね)
>>101 ソースコードの整形はエディタに任せてしまうのが良いと思います。>emacsのverilog-modeとか
そういう事に時間を使うよりは検証をじっくりやりたい。
プロというか、大手のライブラリでも
酷いのは酷いからなぁ。
Align.vimはよく使ってた
部長に信号名とか付けるコツをきいたところ
「フィーリングとかで」
納品前に、コメントをすべて消してしまうソフトってありますか?
全変数名を、AD_ch1_read_data_Uint8_input_buffer; → A1とか無味乾燥な変数名に変えるソフトってありますか?
>>106 難読化ツールならググれば見つかる。
多分お望みの機能は実装されてるだろう
むしろ似たような間違った名前に変えておけ
ソフト屋なら自分で作れよ
>>106 要するにソースを見せたくないということなんだろうが、
納品する成果物について初めに話せんのか?
スレ見て思ったけど、今はVHDLよりVerilogの方が良く使われているの?
112 :
774ワット発電中さん:2013/01/17(木) 02:25:59.05 ID:s6ZImxHj
はい、Verilogが主流です。
XのツールはVHDL前提のような印象
研究・教育では VHDL、企業などの実務では Verilog が多いってじっちゃんが言ってた。
XilinxはEDKのIPがVHDLで作られてきたけど、AXI関連はVerilogなので
混乱してる模様
117 :
774ワット発電中さん:2013/01/17(木) 22:58:17.80 ID:RFNw65ro
>>116 つまり?VITALのバイタルが0ってこってすね。
Verilogは、bit幅のチェックを もっと厳しくして欲しい。
reg がワイヤーになるのやめてほしい。
別に always のなかに wire 書いたっていいじゃん。
Verilogで一番面倒なのがregとwireだね
他にVHDLで出来てVerilogに出来ない事って信号のattibuteくらいだな
逆にVerilogで出来てVHDLに出来ない事はシミュレーションでの階層内の
信号取出しかな
(株)Verilog お客様相談センターの電話番号、
何番だっけ?
reg がワイヤーになるってどんな場合に起るんですか?
逆に ワイヤーがregになることはあるの?
>122
どちらも起きない。
かなり奇妙な質問なので、今教わってる先生以外に別の先生さがしたほうがよい。
wireは「配線」の抽象化で、
regは「(配線上の)電圧」の抽象化。
>>122 組み合わせ回路を always で書くと reg はワイヤーになる。
逆はない。
SystemVerilogにしてからlogicしか使わなくなった
>>124 always の中に、wire 書けるの?
Verilogで許せないのは配列からビット取出しができないこと
hoge[n][7:0] みたいな書き方が許されない
VHDLなら hoge(n)(7 downto 0) って書けるのに
>>126 元の人
>>119はverilogのwireを区別する意味でワイヤーと書いているんですよ
regと宣言した変数がwireとして扱われている。それがワイヤー
で、なんでalways中の変数はregでないといけないの?
>>123の後半となんか関係あるの
>127
許せないのはそれだけか? おまいは寛容だな。俺はこんな糞言語がいつまで蔓延る
のかと、腹が立って腹が立って、、、、
まあでもSystemVerilogがでててすとべんちは少し楽になった。
assign されないといけないのが wire
そうでないのが reg
はっきり言って、さほど深く考えて決めたようには思えない。
VHDLだと下記で済む記述が
a <= (others=>'1');
VerilogだとBIT幅(N)を指定しないとダメなのがイラっとくる
a = { N {1'b1} };
SystemVerilogだと「a = '1;」でシンプルに書けるんかな。
132 :
774ワット発電中さん:2013/01/19(土) 19:00:13.69 ID:iY+W0XIk
verilogは言語としてはゴミだよな
ハード屋がプログラミング言語を見よう見まねで真似て作りましたって感じ
あるいはハードウェアからっきしのプログラミング言語屋が(以下略
>>130 ちなみにregもalways/initial内ではassign/deassignできるけどな
begin, endが美しくない、嫌いだ
a=-1; も捨てがたい
>>136 >>137 ビット幅省略すると32ビットになるから、それ以上のビット幅だと符号拡張されるか怪しいね
まあ a={N{1'b1}} でNをparameter/localparamするのが正しいな、LINTとかメンテナンス性考えても
怪しいも何も、32bit でしかないだろ?
ところで、parameter にしたとき、ちゃんと検証してる?
N=257 の時、動かねえぞゴルァ!とか言われるかもよ。
N=8 か 16 で使ってくださいってドキュメントに残すの?
>>137の
a=-1;
の場合は32bitまでは符号拡張されるけど、それを超えるbit幅の場合は
verilogの実装依存になり、ある物は符号拡張され、ある物は符号bitに関係なく0拡張される
ですか?
>>139 変更しないparameterはlocalparam、変更できるparameterはポートリスト内で宣言して、
ドキュメントのparameter一覧表に保証できる範囲を書く
当然保証した範囲では検証はやる
組み合わせを全通りやるか限定するかはケースバイケースで品質と工数と客の考え次第
>>140 そもそもそんな曖昧なコード書くなということだな
どういう動作するか迷う時点で可読性の点でアウト
せいぜい使い捨てベンチ程度でしか許されない書き方
Verilogなんて捨てちまえ。
これからの時代、ハードウェア記述言語なんてクソの役にも立たないよ。
悪いことはいわん。
ハードじゃなく、ハード寄りのソフトやりな。
143 :
774ワット発電中さん:2013/01/27(日) 03:15:23.74 ID:fSP0Zp4D
ほう、例えば どんなことをするの?
VHDLもVerilogも、ソフトウェアだよ。
「いや、ハードゥエアだ」と譲らない人もいるけど、
やってることは、ソフトウェアと何も変わらない。
145 :
774ワット発電中さん:2013/01/27(日) 06:04:07.39 ID:jsWS49Qt
>>144 ASICとかやったことない人だね わかるよ
意味論が変にプログラミング言語っぽいけど、ハードウェアだということを考えながら
記述しないと、いくつも罠があるよ。
Bluespecあたりにとっとと移行してほしいのだが。
ソフトとハードの両方をやってると、FPGAって規模が小さいので「バカチョン」
と思いがち。
今回も簡単な画像処理やったんだが、論理的には簡単で1か月もあれば、、、と
思っていたら、タイミングシュミレーションや実機デバッグになると、ハード固有
のトラブルで無茶苦茶苦労した。
1回ごとのテストコンパイルに無茶苦茶時間がかかるし、シグナルタップはノイズ
だらけで動いてるのか動いてないのか定かにわからない。
終わってみたら、2週間も納期オーバーでしかも徹夜の連続。
こんだけ苦労したのに直ぐに忘れて、次の仕事ではいいカッコして
「1ヶ月もあれば十分です」なんてまた言うんだよな。WW
>>145 ソフトウェアは、ハードウェアを意識せずに書けると思っているの?
ソフトウェアだって、タイミング制約はあるし、シミュレーションもあるし。
FPGAと別格ではないよ。
>>149 ソフトウエアの世界のタイミングは実行時間の問題だが、ハードウエアの世界のタイミングは
それにプラスして内部遅延の問題だぞ。それを同一視してどうするw
クロック単位を意識して制御できるソフトウェアエンジニアって、かなり特殊だと思うがw
意識することは出来るけど
完全にクロック単位で制御するのは
マイコンじゃ無理だよ。
>これからの時代、ハードウェア記述言語なんてクソの役にも立たないよ。
こんなこと言っている奴に限ってアセンブラできない
C言語ができたくらいでソフトができるつもりになっている
154 :
774ワット発電中さん:2013/01/27(日) 16:06:34.19 ID:jsWS49Qt
>>149 ASIC作った無い人だねって質問に何でその回答?
何を言ってるかわかってないんだね
>>153 あのな。。。オレは、需要と供給のバランスのことを言ってる。
ハードウェア設計のエンジニアがどんだけ職にあぶれていると思ってるんだ・・
パイが少ないわけよ。
ソフト屋はハード屋より多いが、パイがデカイ分、食いっぱぐれる危険性が少ない。
中でもハード寄りのソフト屋は、パイがデカイ割に、人数が少ない。
悪いことは言わん。ハードはやめておけ。
PLD(HDL): 高速 (比較的) 単純作業
マイコン: 複雑な作業でそこそこのスピード
な使い分け (もしくは合わせ技) が一般的にいわれてるわけだが。
どうも専門家はどっちかに統一したがるね。FPGA 屋はなんでも FPGA でやろうとするし。
いや、マイコンだけで何もかもやるよりは不可能じゃないと思うけどあまり現実的じゃ
ないことも多い。
157 :
774ワット発電中さん:2013/01/27(日) 16:16:55.54 ID:jsWS49Qt
需給のことで言ったら、ファームもそんなにいいとは思えんけどな
そういう話で言ったら上層へ上って行った方がいいだろ
FPGAやる人は、いつも上から目線でものを言うからキライ。
マイコン屋を下に見てる
>>158 心配するな。
マイコン屋の方が将来有望だ。
FPGA屋なんて、パイが小さすぎて、まったくつぶしが利かない。
今日の変な人ホイホイスレはここか
ソフト屋なら仕事はいくらでもある。
介護職の仕事がいくらでもあるように。
どちらも使い捨てで単価が安いのが問題。
>これからの時代、ハードウェア記述言語なんてクソの役にも立たないよ。
そうだねぇ・・Handel-Cなんていうのも使ったことがあるけど、
限りなくCで、少し拡張したって程度だけど、面白かった。
シミュレーションはVisualStudioでやれっていうのも(笑)
Cと回路についてある程度知ってる組込み屋なら新しく覚える
ことは最小限で、とりあえず動くものはできるから。
まぁそういうものでサラッとぬるく作ってしまっても良い
ようなものもあるかもな。最終的にC風に書いた物から論理合成に
しても、コンパイルしてソフトウェア化してもよし。
>FPGA屋なんて、パイが小さすぎて、まったくつぶしが利かない。
これからはマイコンもFPGAの中に入れる流れになっていくけどね
マイコンはディスコンになったら終わりだけど(特にやばいのがルネサス)
FPGAはディスコンになっても新しいFPGAに同じマイコンのIPを入れればいい
FPGAを毛嫌いしている奴は現実から目を背けているだけだな
>>163 学生さんは現実を知らんなぁ。
まぁ、がんばって、FPGA極めてくれや。
>これからはマイコンもFPGAの中に入れる流れになっていくけどね
はぁ?大学でお遊びやりたいだけやってれ!
使用アプリにあわせて、ハードをダイナミックに生成しながら動くようになるんじゃないか?
>>165 は?
ありえない・・
例えば、スマホ内蔵のチップが全部FPGAに置き換わるとでも?
アリエナイ・・・
コスト面でも、処理能力面でも、サイズ面でも、信頼性の面でも…
大学で教授は、そういうアフォなこと教えてるのか・・・?
>>163 これからというか、すでにそういうことをやってるところはやってるわな。
でも使いたいマイコンの IP ってそんなに簡単に手に入るもんか?
古くさいマイコン (CPU) のクローンなんかは結構転がってたりするけど。
それに電源がキツイ (ボタン電池とかの) 組み込み機器へはまず FPGA なんか使えない。
168 :
774ワット発電中さん:2013/01/27(日) 23:11:44.46 ID:jsWS49Qt
車載のチップをFPGAにするなんて怖すぎてありえない
>>163 ニッチ分野でライフサイクルが長いとそのやり方がいいな。
設計が同じでもFPGAを新しくするだけで最新プロセスの恩恵が得られる。
マイコンIPはMIPSやARMのクローンもOpenCoresにあったはず。
それとは別の流れで、FPGAにハードマクロCPUを入れるのもあるな。
Altera/Xilinx共にARMが入るようになってから注目されてるんじゃないかな。
車載でも高度な情報処理部分はFPGAが入ってるよ。 エンジン回りは
暴走したときのことを考えないといけないので、FPGAは怖い。
点火パルスなんかは10Kボルトもあるので、ノイズ発生が多い。FPGAは
ノイズには弱い。
ドカタじゃHDLの話は禄に出来ないからな。盛り上がるのは雑談て
チョンにすら負けるようになるよな
>>170 FPGAがノイズに弱いというのは本当なの?
ロジック情報が入ったSRAMがソフトエラー起こすとかの構造的な問題なのか、
単に出回ってる品種の特性上の問題なのかどっちだろう?
ソフトエラーでしょ。
だからそういう過酷な環境かつ消えたら困る機器の少量生産には、
アンチヒューズ型のFPGAを使うとか聞いた。
QuickLogic ナツカシス
FPGAって使った事無いんだけどSRAMからのロードって起動するたびにやるんだよね?車載って温度特性やノイズ耐性、価格以外に起動性能(起動速度)もかなり重要なんだけど大丈夫なの?
SRAMはFPGAの中にあって、外部のシリアルEEPROMから、SRAM「に」ロードする。
要求仕様にもよるだろうけど、CPLD使うんじゃないの?
(一応、不揮発性のFPGAも、ないわけじゃない)
>>174 シビアな用途にはSRAM型じゃなくて不揮発型のFPGAを使えってことね。
ちょっと調べたけど、フラッシュ型でもMLCは危険性があるらしいな。
ECC付きのフラッシュ型とか、アンチヒューズ型ならソフトエラーの心配は無いかな。
>>176 SRAM型だと全ロジックセル分のコンフィグレーションデータを毎回ROMから転送するから
それなりの起動時間はかかるけど、不揮発型ならその点の問題は無い。
>>171 エンジン周りじゃなくても暴走したときのこと考えろよ。
ブレーキとかエアバッグとかさ。
>>179 暴走した時のリカバリはマイコンも一緒
エンジンくらいなら結構いい加減でも
回るしな
今ある自己診断がある程度ピンポイント
で化けた箇所示せてそこにパーシャル
リコンフィグ可能ならFPGAも選択肢に
はいるかもよ
AならHardCopy勧めてきそうだけどw
本気で信頼性確保するならリダンダンシー構成だろうな。
同じ回路を3つ並べて出力値を多数決で決める。
そういう場合に融通が利くのがFPGAの利点だ。
今時のFPGAならコンフィグRAMを常時CRCチェックするとかしてるでしょ
強烈なノイズが乗ったらRAMが化けるなんてのはマイコンでも同じ
むしろマイコンは内蔵/外付けのRAMの常時チェックなんかしてないよね
183 :
774ワット発電中さん:2013/01/28(月) 22:58:39.29 ID:rfXuyrMP
RAMを常時チェックなんかできないだろ
どういう構造だよ
(´д⊂)‥ハゥ
そういう問題じゃない・・・
やっぱ、学生さんが多いのか。。
FPGAのタイミング調整なんて、すんごい適当。
あんなもん車に使われたら、死ねるわ。
まぁ、実際には、通信基地局とかに使われるらしいけど、
・一箇所故障しても別経路で通信を維持出来る
・チップを作るほど数が出ない。
・アップデートが頻繁にある。色んな意味で。
みたいな特殊用途だよ。
後は、試作や、学生さんたちの勉強みたいな用途が大半だ。
タイミング調整?
186 :
774ワット発電中さん:2013/01/29(火) 01:26:06.78 ID:GUcXP3CX
セットアップとホールドのタイミング解析のことだろ
あれ適当なのか
>>184 車載の話なら分かるけどFPGA自体の事言ってるの?手持ちのオーディオ機器や
NASのCPUとかそうだったし普通に製品として使われてると思うんだけど違うの?
ETのセッションとかでも画像処理や高速通信用途とかみたいなDSPの分野向けに
いろいろ製品出てるって言ってたし宇宙向けを売りにしてるものもあるぜ?
フツーのテレビでは使わないだろ。
セルレグザくらいならあるいは・・・
具体的な情報があるのか?
>>190 ソニーの初代BDレコーダーにも入ってたよ。
でもテレビじゃないし、フツーの製品じゃない。
昔俺のクラウンは工事現場の近くを通るとプスンって、止まってたものな。
どうもノイズで、ETCが飛んでいたらしい。まあ今は軽自動車にのってるので
問題ないが。
ETCでバーが開かないと焦るよな
バーを吹き飛ばした事があるよ
197 :
774ワット発電中さん:2013/01/30(水) 00:48:37.22 ID:l9g8mIxN
車に傷はつかない?
バーは、どういう材質で出来ているんだろうか
スレ全部読んでないんですが、verirog対応無料エディタでいいのありませんか?
今は、サクラエディタに、ネットから定義ファイル拾ってきてインポートして使ってるんですが、
本文中ところどころ、コメントでもないのにコメントに近い色になっちゃって間際らしいけど、対処がわかんない。
俺はgvim
万人向けじゃないな
素直にemacsでverilog-mode使えよ。
unix無いならVMwareにubuntuでも入れとけ。全部ロハだ。
>>200 Windows版emacsもあるけどね。
>>201 Windowsに限定するならCygwinもあるな。
けどVerilogを扱うならunix環境を整えることを強く推奨する。
>>202 まぁ、スクリプトとか豊富にあるので、バッチ組むには、便利だけどね。
ただ、シミュレーションまで、PCで実行するかは別問題かな。
>>204 >>198はエディタのことだけ聞いてるけど、unixでフリーのシミュレーターが何がいいかということなら、
Icarus Verilogでいいんじゃね。
確かubuntuならapt-getコマンド一発でインストールできる。
Icarusは文法チェックが甘いからLINT目的でVerilatorと、
波形ビューワーGTKwaveも入れればVerilogの環境は最低限揃う。
とってもthanks
ubuntu に移行するわ
FPGAのライブラリ化ってどうやるの? ソースをコピーして使ってるけど
なんかいい方法ない?
>>207 ソフトウェア言語のコンパイル済みライブラリをイメージしてるなら、HWでは少し考え方が違うな。
合成レイアウト済みのデータを揃えることがSWでのライブラリに相当するけど、HWではメリットが少ない。
SWではルーチンを共通化してメモリを削減できるけど、HWでは呼び出した分だけ面積は消費される。
ASICではライブラリ化(ハードマクロ化)をやることもあるけど、FPGAのユーザーがやる必要はないと思う。
そうじゃなくて単にソースコード管理の問題で、よく使う部品(FIFOとか)のソースを共通化したいということか?
それなら適当に自分でライブラリ用ファイルを作って、使い回ししたいモジュールをそこに書いて、毎回プロジェクトに追加すればいいだけ。
目的はソース管理と重要なノウハウ部分を客先に出したくないこと。しかしpofファイルだけ
では客先がメンテできなくなる。
例えばLIB\Verilogというディレクトリにソースを入れておいて、prjAAAにプロジェクトを
作成する。そしてコンパイルしてdegug完了する。
プロジェクトをコピー保存する。 客先に出す場合はこのコピーをだしたらいいのかな?
商売で金とってやってんならそれくらい自分で調べろよ
ソフト屋って、ソース管理はきちんとやってるよな。
その割に開発効率悪そうだが。
客先がメンテくらい出来るなら
RTLだせって言ってくると思うけどなぁ
まあソース中にコメントは入れとけ
>212
ベンダーはアルテラだよ。ピッタンコ。骨折れそうだけど読ませてもらう。
暗号化というほどじゃなくて、一部分ソースを出さないで、全体がコンパイルかかればいいのだけど
暗号化になるのかな?
>214
普通は言ってこないが、言ってきても重要ノウハウを出さないためだろ。
実際のところ、たいしたノウハウなんてないんだけどね。
出来るのはコードをモジュールごと流用するくらい。
教えてください。
Verilogで、module間をまたいで共通参照できる変数、Cで言う
グローバル変数みたいな宣言はできるでしょうか?
それとも、やはりmodule()の中に書いて上位に持ち上げて、
上位で別のところとwireで接続するしかないのでしょうか?
結構面倒でイライラしてます。
219 :
774ワット発電中さん:2013/02/05(火) 15:51:21.94 ID:l/b957yF
Cでいうところのヘッダファイルを作ってインクルードすれば?
vri.vh
の中に書く。
>>218 > それとも、やはりmodule()の中に書いて上位に持ち上げて、
> 上位で別のところとwireで接続するしかないのでしょうか?
そうです。せいぜい比較的いろんなところから参照できる module を作ることでしょうか。
まあ何にしても module にするしかありません。どちらかというと、C# の必ずクラスに
しなければいけないのに似ています。
そもそも Verilog で生成されるものは「回路」なので、まずその辺をきっちり
固めるべきでしょう。
>>218 グローバル変数とは例えばクロックリセットやモード値とかのことだな。
それ以外でそういうのが欲しくなるなら、構造化がうまくいっていない疑いがある。
本当に今のモジュールの分け方が最良なのかどうか、もう一度見直すべき。
各モジュールの目的がはっきりしていて、単体で動作可能なようにするといい。
目安としては、各サブモジュールのポートの説明文が一行で済むことが望ましいだろう。
決してコードの長さを基準にせず、大きくなることも小さくなることも恐れるな。
>>220-221 ありがとうございます。
今回そう思ったのは、デバッグするときに、
下位の下位の下位層の信号を、FPGAのピンに出したいのです。
Global変数ができれば、top階層で定義(といってもポートリストに入れるだけ)で、
あとは、好きなところで使えば良いので、とても楽ちんだと思ったのです。
module の分割は、悩ましいです。
alwaysの分割も同じです。どれとどれを一緒に処理すれば見やすいかばかりを考えています。
FF毎にalwaysを書く人もいますが、見にくいので、1つのalwaysにマイコンプログラムのように
3つも4つも「<=」しています。見やすいです。
if( .... ) begin
a <= SW;
end else begin
a <= a;
end
という書き方に、未だになじめません。タイプ量が増えてしまうので、
if( .... ) begin
a <= SW;
end
で済ませています。
>>222 RTLは変更せずに、制約ファイルだけでピンに割り当てするのはどうだろう?
合成時に階層がフラットになる設定なら、トップ階層に見たいネットは出てきているだろうし、
トップ階層のポート定義も実は必須じゃなかったと思う。
それと合成時に消えないようにKEEP制約を入れることは必要になる。
もしかすると階層フラットじゃなくても、「NET sub/subsub/net LOC=ball名」でできるかもしれない。
そういうのやってみたことないから自信はない。アイデアだけだから誰か知ってたらフォローして。
QuartusIIに開いているIOに好きなネットリストのネット出せるやつなんだっけ?
サブスクリプションエディションのやつ
そんなのなかったっけ?
SignalProbe?
つか、普通に`defineつかえばいいのでは・・・
defineなら、シミュレータの引数でも変更できるから、
同じテストパタンで、条件変更して検証したり普通にするが・・
もうちょいオマイラバカに教えてやると、
defparamてのがある。
シミュレーション環境構築するのに、defineやdefparam
使いこなせない奴は、素人。使えない奴。
>>222 見やすいことは大切だよ。
always 分けるのは昔の書き方じゃないかな?
>>227 ありがとうございます。
今はISEがお利口になったから、そのような書き方が出来るんだよ、
と聞いたことがあります。
が、バラして書いたら、何が何だかサッパリわからないと思うんですが。
229 :
774ワット発電中さん:2013/02/06(水) 01:12:33.41 ID:+l6/HgCp
alwaysはFFごとに分けた方がいい
タイミング解析でつまづいたときにわかりやすい
>>228 always分けるのも、elseでループさせるのも、ハードウェアを意識してるからだよ。
RTL(レジスタ間の論理を記述)だから、どのレジスタ同士がつながってるか、
またどの程度の論理の深さでつながっているかを気にすることは大事。
その辺を疎かにすると、とんでもなくでかい論理になってスピードが出なかったり、
非同期の部分で罠にはまったりする危険性がある。
まあけど、always分けたり、elseでループさせたりしただけで性能が上がったりはしないけど。
今のスタイルでいいと思う。ただし、ハードウェアではどうなるかを想像しながらコーディングすれば、
より良いものができるはず。
>>222 以下は、FlipFlopの回路図が容易に想像できるよ。
if( X==1'b1 ) begin // XがHなら
Q <= SW; // 次回のQは、SWになる
end else begin // XがLなら
Q <= Q; // 次回のQは、自分自身を上書き
end
SW--------切替器-----FFのD FFのQ-----Q
↑
切替信号X
Clock----FFのCK
if( X==1'b1 ) Q <= SW;
なら、イネーブル制御になるか、
クロックゲーティングになるわけだな。
SWとXの信号が逆だと
しっくりくるね
あとalways抜くとFFじゃないかも知れない
ループとは書いてあるけれど
>>222 順序回路は後者でいいだろうけど、組み合わせ回路はすべてのケースを書いておかないと
ダメだろ。勝手に作られるラッチをあてにしてはいかんと思う。
>>234 「<=」で書いてあるので、組み合わせ回路ということはないと思いますが
>>236 ありがとうございます。
always内の「どれか1つでも変化したら、スグ動作する」→組み合わせ回路と同じ
という、あれでしょうか?
なるほどです。
そのときは、reg宣言で、「<=」を使えるのでしょうか?
238 :
774ワット発電中さん:2013/02/06(水) 15:28:07.73 ID:doj7y5od
>>237 文法上は使える。
「<=」とは「右辺の計算を全て終わらせてから左辺への代入をしてください」の意味。
それを利用すればFFの動作をうまく表現できる。
always @(posedge clk) begin
b <= a;
c <= b;
end
この例で1回のクロックエッジで a -> b -> c とならないことを防止するための工夫だ。
always @*の場合だと、計算結果が確定するまで何度もalways内が繰り返されるから、
結局は「<=」でも「=」でも同じ動作になる。
けどわざわざ「<=」を使う必要もないから、普通は「=」を使う。
ツールに余計な仕事をさせることになるし、ツールによっては「普通こう書かないと思うけど、何かのミスじゃね?」
とか言ってくるかもしれない。
Verilogは最初にシミュレーション言語として開発された経緯があるから、まずはシミュレーションではどうなるかを考え、
それからそれと同じ動作をさせるにはどんな回路になるか、という順に考えると理解しやすいと思う。
この辺の説明何回したかわからんね
ただソフト上がりに適当な課題の回路書いてもらったら
すさまじいブロッキング文で焦った
ソフト上がりにHDL書かせんなよ…
Verilogで、
if(....) begin
を、
if()
begin
と改行後にbeginを書いてあるのを見かけますが、
なぜ、改行してから書くのでしょうか?
どちらでもOKなことは知っているのですが、下にbeginを書くと、
無駄に行数が増えてしまうと思うんです。
同様に、
begin endを書かないこともあるようです。
if(....)
a <= a + 3'b1;
とかです。
常にbegin end を書いた方が、頭を切り換えなくてもいいのでミスも減ると思うのですが、
書くのが面倒なのでしょうか。
これらのように、書き方の違うソースを見るときに、僕は自分の書く形式に
改行を取ったり、begin endを付加したりしてから、内容を見るようにしています。
みなさんは、どのようにするのでしょうか。
begin
end
は書かないと、ミスる元だね。
()に続けて書くか、改行してから書くかはどっちでも。
私は、改行して書くかな。
対応するbeginとendを探すのがキツイ。
エディタとかいいのあるのかもしれないけど、
未だにEmacsで書いてるな・・
Verilogに特化したエディタとかないのかねぇ?
>>242 >対応するbeginとendを探すのがキツイ。
これは、どちらの書き方のときの話でしょうか。
if( .... ) begin
end
の書き方でも、インデントがしてあるので、対応はスグにわかり、不自由はしていないのですが。
ISEに付属のエディタなどで、対応するカッコがハイライトしたり、
Verilog予約語の色が変わったりするようですが、全〜部offにして、
黒一色にしています。色がチカチカして、思考の邪魔になると思うので。
ですので、自分用にカスタマイズしたエディタでしか、コードを書けないですが。
else を esle などと、タイプミスしたら、即座に教えてくれるエディタが欲しいですね。
他にも、begin を begim とか。
begin の位置は好みとしか言いようがないな。
自分も昔は上下が揃ってた方がよかったので改行して書いてたが、
今は行数が増える方が嫌になったので if () の後に続けてる。
あと、ブロック内に処理が1行しかないときは begin、end は書かないけど、
判定がネストする場合は書く。
別にどれがいいとかはないけど、統一されてないのが一番良くない。
> の書き方でも、インデントがしてあるので、対応はスグにわかり、不自由はしていないのですが。
複数人でコードいじってると、インデントが嘘になることがある。自分でもややこしい判定いじってると
わけわからなくなることがあるがね。
スペルミスは、キーワードが色分けされるエディタ使ってればすぐにわかるだろ。
自分は vim 使ってる。最初は使いにくかったけど、使い込むと便利だね。
他人のコードにケチ付け始めるとキリがないからやめなよ。
自分のコーディングスタイルを決めてミスらないようにすればいいよ。
他人のことなんかしらん。
>自分のコーディングスタイルを決めてミスらないようにすればいいよ。
それはそうなんだけど前任者のソースをメンテするなんてこともあるしな。
全部書き直したい衝動に駆られるけどそれでトラブルが発生するのもいやだし
結局違うスタイルが混在することに・・・
247 :
774ワット発電中さん:2013/02/10(日) 15:53:28.83 ID:3Ei5oc8W
コーディングスタイルなんて何十年も前から話されてるけど
有効な議論がなされた試しがないんだから
そもそももはや問題視すること自体つまらんこととなってる感があるな
初心者は大いに悩めばいいと思うが、中〜上級者にとってはそういう感じだよってのは覚えてもらいたい
まぁ、昔よりはコードの書き方マシになったと思う。
俺が欲しいのは、VisualStudioライクなエディターね。
Verilogは、未だにテキストエディターでコード書いてるから
デバッグ機能が貧弱・・
249 :
774ワット発電中さん:2013/02/10(日) 16:30:42.90 ID:3Ei5oc8W
Visual Studioのエディタってここ数年で見違えるような高機能になったよな
そこは認めるけども、C/C++/C#/VBを書く人間の数と、Verilogを書く人間の数を考えると
Verilogに対してその進化は見込めないだろうね
自分で作ったらいかがか?
弘法筆を選ばず
プロはエディッタを選ばす
仕事で書いてるのならどんなプアな環境でも最低限の成果を上げる必要がある。
これは効率を上げるために自分用にカスタマイズした環境のほうがいいという話とは別次元の話。
極端な話、Windows環境ならメモ帳だけでソースが書けない人はプロとは言えん。
普段emacsな俺はたまに客先での仕事でviで書かなきゃいけなくなると(特にVHDLだと)
効率が半分ぐらいに落ちるのでまだまだ修業が足りないと自覚するorz
251 :
774ワット発電中さん:2013/02/10(日) 16:56:10.90 ID:3Ei5oc8W
それはたしかにそうだが、別次元の話ってわかってるならこっちの次元に割り込んでこなくてもいいよ
今は効率の話の次元ですからね
>>250 それはプロではなく職人だw プロは筆を選ぶよ。
仕事でお金を貰ってこそプロ。
成果を出すために効率を上げる。
そのくらいの損得勘定は当たり前だと思ってたんだが。
>>250 >極端な話、Windows環境ならメモ帳だけでソースが書けない人はプロとは言えん。
まぁ、そういう考え方の上司いるわ。
最近のツールまったく扱えないくせにね。
なぜ、VerilogでVisualStudioのような高機能エディタが出ないか?
簡単なこと。売れないから。
HWのEDAツールてSWから見れば、アフォみたいに高い。
設計者は、望んでいるが、お金を握ってる上司からしたら
テキストエディタで十分とか思っちゃうわけ。
だから、開発もされないし、売れない。
edlin でも使ってろよ
vimで・・・って言ったら負けなんだろうか
欲しい機能そんなにないなぁ
ところでことわざの大元は
太公望は議事餌を選ばず で
道具が違っても同じ仕事が出来るってことじゃなかったっけ
数年前と同じ仕事しかできないんじゃ
どうしようもないと思うが
>>254 edlinで開発効率が下がる奴はプロじゃないよね
だいたいプロにはHDLは不要
プロなら回路図設計でHDL並みの開発効率出せるのに、なんでHDLなんだろ
プロが減っって自称プロのゆとりが増えたからだよね
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
食いつけよ
261 :
774ワット発電中さん:2013/02/10(日) 20:03:39.88 ID:3Ei5oc8W
∩___∩ /
| ノ ヽ /
/ > < |/ 回路図で100k規模のLSI作れるんですか!?すごいですね!!
| //// ( _●_)/ミ
彡、 l⌒l ノ
/ __ \ \ヽ
. (___) \__)
. O| /
| /\ \
| / ) )
∪ ( \
\,,_)
>>261 >すごいですね!!
そういわれるのが日本の真のプロ
自称プロのゆとりは他からすごいですねなんて言われない。馬鹿にされるだけ
プロがゲシュタルト崩壊してきた
太公望が出たから釣りをはじめるって....
こんなのあった
http://www.codepatata.com/ Leisurely editor for VHDL and Verilog HDL
Code Patata will present a relaxing coding to you.
Now, experience fast and efficient coding by utilizing language-based code recognition and HDL code wizard.
Code Patata supports VHDL and Verilog HDL.
1 copy $299
もうSystemVerilog,SystemCでいまさらVHDL/Verilogをって感じじゃないか
>>266 そんなことはない。
未だにVerilogが主流だな。
SystemVerilogは、近い将来主流となる可能性はあるが、
SystemCは・・・多分消える。
268 :
774ワット発電中さん:2013/02/13(水) 19:16:39.74 ID:Qcz7M5Ud
結局のところ主流はVHDLよりVerilogなん?
最近勉強しようと資料を漁り始めているんだけどVHDLから入った方が双方を
理解しやすいという話を聞いたんだけどVerilogだけ勉強するのでも問題なし
だったりするのかな?
CとPascalくらいの違いしか無い
どっちもどっち
俺はVerilogから入ったが、今は時代に逆行してVHDL派
>>268 多分、世界的にもVerilogが主流。(日本は完全Verilog)
VHDLはヨーロッパとかじゃないかなぁ。
たまーに、VHDLのコード扱うことになるけど、まぁ大変・・
無理やりVHDL→Verilog変換したりしてデバッグを試みるけど、
正直手に負えない。
日本人ならPARTHENON
272 :
268:2013/02/13(水) 21:47:07.42 ID:Qcz7M5Ud
>>269 その比較って差があるのかないのか・・・w どっちも分かるけどさ
>> 270
なるほど。そういう意味ではツブシが効くのはVerilogかぁ。
ただ、片付けがVHDLの方が厳格なので論理化しやすいという話はどうなんだろ?
Verilogは適当な書き方するとダメとか書いてあったのでそれはそれで面倒だなとか
思ったんだけど・・・。まぁ、キチンと出力結果をイメージできれば問題無いのは
どの言語も一緒だけど。
>>272 そそ、言語は、長いものにどんどん巻かれた方がいい。
最適かどうかなんてどうでもいいよ。
使う人が多くないと、結局自分が困ることになる。
英語がそうだし、Cだってそうだ。
ISEとかのツールに、lintの機能が載ってくれないかな。
bit幅だけでも厳しくしてくれたら、なんとありがたいことか。
だからと言ってVHDLをやろうとは思わない。
XilinxでVerilogの組み合わせは、やってる人が少ないみたい。
max2plusの頃からやってるので未だにVHDL。
AHDLには手を出す気になれんかった。
Verilog VHDL の比較は、不毛。
Verilogが優れているのは歴然としているから。
>>272 適当に書くと適当に動いてくれるんだぜ。
なんて親切なんだ!
>>278 それで良いレベルの物を作っているうちはそれで良いんだろうな。
正直
>>274 のlintが無いというのには衝撃を受けたが・・・。
完全なソフト屋な俺からするとハードに近い世界ってやり直しがきかない分ソフトとは
比べ物にならない位精度を上げるべき世界だと思っていたのでそういう仕組みが無い
というのは衝撃。FPGAはちょっと違うのかね。ASICになると話は違うんだろうけど。
FPGAは何度でもやり直しが効くんだが…
ASICは全く別世界
>>280 心構えの話をしてるのだよ。ハード屋はそういう意識をもってやっているものだと
思ったのにやり直しが出来るからと適当にやるというのが驚きだと言ってるの。
ちょっと前に誰かが書いていたFPGAが試作にしか使われないという話なら納得だけどさ。
そもそもlintみたいな事前にバグ出しする機構は複雑になればなるほど、そういう
風につくり手のスキルが落ちれば落ちるほど必要になるものなんだがね。
なんだ、ソフトだけ屋の精神論か
>>282 心構えという言葉は書き方が悪かったと思うがlintとかのツールを使って
モノづくりの精度を上げないのは何で?って話なのに精神論とか・・・二度目のビックリ
Verilogのテキトーさは、なんつーか独特のもんだから。
ハードウェア屋がみんなあーいうノリだと思ったら勘違い。
おまえらバレンタインデーぐらいまったりと言語記述を楽しめよ
何が楽しくて自ら敵を作りたがってるんだかw
んと、何が楽しい日なんだorz 義理チョコ中止のお知らせなんて聞いてねえよ!!!
HDL書き屋はハード屋じゃないよな。コーダーだよな
ちゃんとハードウェアにもLintはある。
無知なだけ。
但し、ハードウェアの世界の開発ツールは恐ろしく高いからな。
ソフトみたいに買取じゃない。普通に1本年間ライセンスで100万〜1000万クラスのカネがかかる。
>>281 >そもそもlintみたいな事前にバグ出しする機構は複雑になればなるほど、そういう
>風につくり手のスキルが落ちれば落ちるほど必要になるものなんだがね。
そんなふうにとらえるの?
自分で精一杯チェックして、さらにだめ押しでLintのチェックをかけて、
万全を期すという意味だよ。
Lintなんてコーディング最後に初歩的なミスをチェックするためにしか
使ったこと無いけど。
最近のLintはアルゴリズムの不具合もチェックしてくれるのか?
品質上げるならlintってよりUnittestしろって話だと思うんだけど違うんかね
ここの住人は初心者しかいないのね・・・
lintはコーディングのスタイルを縛ることによって潜在的なケアレスミスとかを無くす為の物だけど・・・やればバグが無くなる物とか書いてないが?アルゴリズムがどうのとかアホか。
>>291 んなもん両方やる方が良いに決まってるだろ。まあユニットテストしたから完璧とかそういう物では無いのは理解してるよな?定期的にメンテしなければ意味ないし、テストそのものが間違ってる場合もある。
> そもそもlintみたいな事前にバグ出しする機構は複雑になればなるほど、そういう
バグ出しとか書いてあるよ?
SpyGlassにルールを追加してみんなが大好きなコーディングルールなんかをまとめて
チェックかけるってのは昔やってた事があるし、ある程度効果はあったんだけど、
いかんせんライセンス代と釣り合うか、という問題があったので最近はやってない。
まあルールをカスタマイズして使わんと時間の無駄になりやすいって問題もあるので
使えばOKというほどお気楽極楽なツールでもないけどね。ないよりはあったほうがマシ。
Alintっていくらぐらいするんだろう
297 :
774ワット発電中さん:2013/02/15(金) 11:57:20.55 ID:Nctac0VA
>>288 良い商売だな・・・おまいらの経験総動員してルール作ってlint作った方が
FPGAでご飯食べるより儲かるんじゃない?w
lintは
>>293に書いてある様に元々は間違えやすい記述や移植しにくい記述を
排除してコーディングルールを統一することによって潜在的なバグを減らし
可搬性を上げるもの。なので低スキルな人の底上げにもつながるものだ・・・
とか書いていて気付いたけど最も初期のlintはコンパイラの構文チェックの
強化版だったからその程度のイメージを持っている人が多いのかもね。
俺が普段使っているものはMISRA-C+先達の経験からの独自ルールみたいな
のをチェックしていたりするのでこういう認識になっている。
lint 通すために書き直すと却って読みにくくなるから
STARC ガチガチ+独自ルールとかやめてくれ
Cの話でHDLと全然関係ない話でスマンが、
NECエレのコードレビューで、「構造体は代入できません」
って言われて書き直しさせられたの思い出した
>>299 A) まだANSI Cに対応してない処理系(いわゆるK&R初版仕様)でコンパイルする必要があった
B) 文法的に書けるからってそれをされたらCPU TIMEの無駄遣いなので止めさせたかった
C) K&R初版で勉強した人で世の中まだまだそれが普通だと思っている
D) 単にCの文法をあやふやにしか理解してなくそう思い込んでるだけ
まあAなら仕方なし、Bなら正しい日本語で指摘してもらえばOK、
Cな人が未だに生き残ってるのかどうかは知らん、Dな人はレビューから追い出せw
現実的には何byte以下の構造体なら代入しちまってもいいけど、それを超える時は
old styleで書いてもらうってコーディングルール(笑)を作っとくのが無難ではあるな
>>293 アホかって。。。だからそんなこと知ってるけど、バグ出しできるって
書いてる人がいたから最近はそうなのかと訊いただけなのだが。
(10年位前までは使ってた。今はその仕事から離れたので知らん。)
>>299 サイバーワークベンチだっけ?
使えないよね。
チョーVerilog, チョーVHDL
NHK Eテレで「NHK高校講座 チョー基礎から始めよう!」なんて番組
やってるぞ。視聴者に媚び売りすぎだろ。
| |
| |
_,r'⌒| |⌒ヽ_
| | `ヽ
| (^⌒⌒⌒)\ (⌒⌒⌒ヽ | {
.:.::::::::| ⌒⌒⌒ │ `⌒⌒⌒´ |::::.:... )
:::/⌒| | |:::::::::::::.:...:(
:/へ│ | |⌒ヽ:::::::::ノ
:l .:.::| | | ヘ l:::::ノ
゙| ::/| | |_ |´
.∨:ヽ! / |ノ /
\_j ヽ |_,ノ チョー基礎から
| /´ ̄ ̄ ̄`\ |
| 〃 ヽ | HDLをはじめますよ
| {{_!_________j_} |
| |
| |
| |
日笠陽子が習字やってるNHK-Eに今更何を驚けというのだ
けっこう大きい。すごく大きい。
スレ見ると駄目って言われている電子産業のスレって感じだな
コードがほとんど出ないって...
仕事でもこんな感じで雑談的なことが主業務じゃないのか
2ちゃんに仕事のコード出すバカはいないだろうwww
教えてください。
ISE14.1でucfファイルの記述についてですが、
NET CLK LOC="P10" | IOSTANDARD = LVCMOS33;
とorで繋いで書いても、PlanAheadというありがたいソフトに、
バラバラにされてしまいます。
バラバラだと修正のときに2カ所も修正しなければならず、煩雑です。
1行でorで繋いで書きたいのですが、そのようなことは出来ないでしょうか?
要は、PlanAheadで読むのはいいけど、勝手に変えるなよ、という指示がしたいのです。
また、PlanAheadでucfを記入すると、これまた、複数の行になって生成されます。
これを、以前のPACEのように or で繋いで出力させる方法は無いでしょうか?
>>311 HDLではそんな指示できません。諦めるように
>>312 そうではなくて、ucfを自分で編集する前提です。
一番最初に生成するときは、PlanAheadで入力して、
その後の追加削除は、自分でucfを直接さわる、みたいな。
その「一番最初にPlanAheadが生成したucf記述」がタコなのでイヤだ、という話です。
ucfの中身も順番を整えたり、コメントを付けたり、自分流に表現したいのに、
PlanAheadが余計なことをしてくれるのです。
314 :
774ワット発電中さん:2013/03/08(金) 00:21:52.88 ID:mBsHv75l
>>314 すみませんでした。
では、あちらに移動して質問することにします。
ありがとうございました。
316 :
774ワット発電中さん:2013/03/09(土) 02:20:31.86 ID:cYEs0JmX
test
317 :
774ワット発電中さん:2013/03/10(日) 10:56:31.63 ID:0D65oh0V
花粉症がひどいのですが、こういうときは、どうしたら良いでしょうか?
外出せずに家でひたすらコーディングすると良いと思うのです。
lintしてもいいけど
その後の論理合成が100倍ほど大切なので
教えていただきたく、よろしくお願いいたします。
次のような書き方(verilog)は、合成可能でしょうか?
(ポイントだけ書いています。module宣言やpointerのalways文などは省略してます。)
input [15:0] shift_seq;
reg [3:0] pointer; // 0-15を繰り返すカウンター
wire seq_flag;
assign seq_flag = shift_seq[pointer];
// seq_flagには、shift_seq[0]からshift_seq[15]の値が順繰りに現れる。
イマドキのツールなら問題ない。
Quartus か ISE 入れてやってみたら?
seq_flag=shift_seq >> (15 - pointer);
のほうがそれっぽいかな。
いっぱつ全ビット拾ってからシフトしてたら
レジスタがもったいないのね・・・
324 :
774ワット発電中さん:2013/03/13(水) 19:27:12.03 ID:R0MsWIbn
seq_flag=shift_seq >> (15 - pointer);
は無いわ
assign seq_flag = shift_seq[pointer];
のほう(
>>321の)がいい 可読性も高い
>>432 ぼくもそう思った。
seq_flag=shift_seq >> (15 - pointer); って、どんな回路が生成されるのか
想像がつかない。
>>325の現象は
デジタル風に言えばビット化け?
327 :
774ワット発電中さん:2013/03/13(水) 22:18:41.53 ID:R0MsWIbn
ちなみに合成は可能だよ
は?合成可能?
shift_reqがinputで、pointerがreg?
つか、ココは素人しかいねーのか・・
329 :
774ワット発電中さん:2013/03/14(木) 00:29:52.66 ID:PO3+WnKg
お前こそ何だ
普通に合成可能だっつの
case文で書く方が無難
case文って、あーた
一行で書けるものを、なんで20行も使うの?
>>321の書き方で良いじゃん
俺も、そう思う
質問者が出したソースが中途半端なだけで
回答も中途半端でもしょうがない
ただバイナリカウンタでデコードしてそのまま出したら
髭がすごそうだなぁ・・・
まぁFPGA内部で使う信号ならいいんじゃない?
outputじゃなくてwireで記述してるし。
VHDLならこんな感じ。(verilogよりちょっと文字数多目)
seq_flag <= shift_seq(conv_integer(pointer));
6,7年前にXでやった時は出来なかった気がするけど
今やったら普通に出来た。
conbってVHDLで使える関数?
ぐぐってないけど
process文ぐらいから見たいなー
>>336 できました
ありがとうございました
これは便利
>>335 ワンホットとかジョンソンにしてもヒゲは出るんじゃね?
そのままI/Oに出せるほどの幅もなさそうだし。
何が言いたいんだ?
グレイカウンタならヒゲは出ないよ
グレイカウンタにヒゲが出るかどうかと間接参照の結果にヒゲが出るかどうかは別だよね(´・ω・`)
>340
普通のカウンタからXORでグレイコードにする手抜きな作りだとヒゲ出るんだぜ。
入門書の善し悪しの判別に使ってる。
それはグレイコードにでこーどしてるだけちゃうん?
やっぱ贅沢にFFに拾ってから
シフトレジスタしかねーな
と誘導してみる
345 :
774ワット発電中さん:2013/03/16(土) 02:51:35.28 ID:lVeDkTFx
しかもメタスの対策に、FFを2段入れてください。
346 :
774ワット発電中さん:2013/03/16(土) 09:01:30.95 ID:8hieWMnf
何でいつの間に非同期の話になってんだよ
347 :
有能な政治家を貶め、無能な政治家を持ち上げ国力を削ぐ在日カルト:2013/03/17(日) 01:27:03.33 ID:k8xNq4Aj
★マインドコントロールの手法★
・沢山の人が偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
↑マスコミや、在日カルトのネット工作員がやっていること
TVなどが、偏った思想や考え方に染まった人間をよく使ったり、左翼を装った人間にキチガイなフリをさせるのは、視聴者に、自分と違う考え方をする人間が世の中には大勢いるんだなと思わせる効果がある。
..
ダット落ちというのは何時起きるんです?
未だにテープ使ってるのかよ
紙テープと穿孔装置、FORTRAN77は、未だに現役ですが、何か?
351 :
774ワット発電中さん:2013/04/05(金) 04:03:29.76 ID:Wr7Ki1x+
H68/TRって知ってる?
いにしえの6800 CPUを使ったトレーニングボードのことかい?
353 :
774ワット発電中さん:2013/04/05(金) 12:26:14.59 ID:j9zRJj/+
電卓みたいなコンソールのやつだね。
TK80が全盛のときに、持ってるやつが羨ましかった
7セグLEDで強引にアルファベット表示するやつだね。
もともとトレーニングキットと言われるように、大型コンピュータ技術者の教育用に
開発されたんじゃなかったっけ? それが、一般人に評判になって・・・・。
日本製でも、いろいろあった。日立、東芝、NEC、富士通、シャープ。
L-kit16とかに憧れた。
TK80→PC80,88→PC98 住友グループのお荷物から優等生に
しかし、おごる平氏は久しからずのたとえ通り
DOSVで風向きが変わり海外PC事業からの撤退
98時代は\498,000定価の殿様商売も今は昔。
\15,000で投げ売りし、見せかけのシェア確保するも
赤字体質から脱却できず201x年PC事業から撤退する
その数年前には携帯電話事業からも撤退しており
一体何で食ってくのよこの会社?
教育の対象としては、大型コンピュータの技術者というよりは、制御機器とかの設計者。
MAXシリーズってIPのROM使えないのねー
え。データシートも見ずに組んでるの?
せめてデバイスの概略仕様だけでも把握しようよ。
ぐぬぬ
でもRAMはあるのよねー
Megawizardよくわからぬ
ROM組んで合成してみる
RAMで内容をコンフィグ時に初期化すれば良くね
ワンタイムRAM?
Megawizardについてるっけ
あの会社
集団ストーカーとかで人が亡くなってるんだよな
社員は、みんな魂売ってる
365 :
774ワット発電中さん:2013/04/17(水) 19:50:55.72 ID:PovPqCxp
VHDLのtype文でステートマシンの各状態を列挙してます。
このステートの状態に応じて接続するcomponent内の動作も変えたいんですが、
その場合はそのtypeのsignalをcomponentに直接接続する事ってできますか?
それとも、ステートに応じたstd_logic_vector等のsignalを作って接続する必要がありますか?
前者が可能な場合は記述方法を教えて下さい。
signal作って接続すれ
列挙typeそのままって出来なくもないが、やめといた方が無難
367 :
774ワット発電中さん:2013/04/17(水) 20:24:44.90 ID:PovPqCxp
package使えばいいんですね、自己解決しました。
…と思ったら。やめたほうがいいんですか? 理由教えて下さい。
>>367 pakageでtypeを宣言すればやりたい事は出来る
ステートマシンの状態信号は合成の最適化でエンコードされるんだけど
状態信号が他のモジュールに接続されるとその最適化の妨げになる、
ような気がする
本当のところはどうか分からん
Xilinxのツールで試してみたら、状態に当たる信号をI/Oに引き出していても引き出してなくても
同じ最適化(状態を特定のエンコードへ変換)は行われているみたい。
外部に出ている信号は変換後からロジックで作られていた。
常にこうなるとは言えないけど、なんか無駄なことやってるような…
ステートはステート、信号は信号で分けたほうがいいかな。
>369 状態に当たる信号をI/Oに引き出していても引き出してなくても
そらそうよ。ステートマシンから見たら
ステートに合わせて「適当にピンを上げ下げする」というお仕事の一つに過ぎないもの。
特別扱いして、その出力の手間を最小してやる義理はないっしょ。
本来の仕事向けのステートをあっちこっち引っぱりまわすラインの数とか遅延時間とかを
小さくするほうが優先になるのは自然。
>>366は単にpackage使えばいいこと知らなかっただけだろw
もし最適化がファイル単位でしか掛からないと思ってるんだったらいつのロートルだ?
ファイル単位って…?
VHDLにはファイルの概念は無いと思うけどね
ModelSimでvsimコマンドの-doで指定するファイルで下記のようにすると信号を固定できます。
force -freeze /testbench/top/wire1 '1'
信号の値を取得するにはどのようにすればよいでしょうか。
イメージは下記のように使いたいと思っています。
if {/testbench/top/wire1 == 1} {
noforce /testbench/top/wire2
}
そういうふうにテストベンチで書いたらだめなの?
Modelsimでしようとせずに
?
Quatus, Modelsimでテストベンチ実行させればいいだろ
>>376 verilogのテストベンチ記述内でforceしたり信号参照するって意味では
ザイリンクスのISEは、今でも
ベリログを 一旦VHDLに変換してからコンパイルしてるでしょうか?
379 :
774ワット発電中さん:2013/05/11(土) 14:18:52.79 ID:OpdMt0D5
>>379 動けばそれでも良いんじゃない
回路の設計とらえるかソフトの設計とらえるの違いって気がする
参照先は回路設計としてとらえ
>>379はソフト開発とらえているって感じ
そのステートマシンを回路図ベースの設計でやってみるのも良い
参照先のはVHDLを使い典型的なステートマシンの回路ブロック図を回路(組み合わせと順序回路)
にして目的のステートマシンを実現
レス有り難うございます。
ということは、参照しましたページが少しだけ実際の回路に近い
抽象度の低い記述というだけで、各々の場合に最終的に合成される
回路の内容や規模、回路の信頼性などに差は出ないと考えて
大丈夫なのでしょうか(合成ツールにもよるのかもしれませんが)。
ほとんど無いと考えて良いよ
>>381 回路なんて意識しないでいいよ
今のHDLでの開発はソフト開発と同じ。回路の内容や規模は開発ツールに任せる
ベテランで相当な実力あれば別だけど、
アホ設計者が回路を意識してHDLすると今の優秀な開発ツールが力を発揮できなくて、
設計者レベル相当の糞な回路になる。
開発ツールにステートマシンビルダー機能あれば、それ使え。自分でやるより
デバイスに合った良いものを作成してくれる。他に回路も同様、
で、もし無ければ自分で自己満足の糞回路をHDLする。
DFTとかECOとかケアしないならご勝手に
FPGAなら最先端プロセスかつプログラマブルなんで
気にしないでいいだろう
ところでFPGAに信頼性ってあるっけ?
がじぇるねの SAKURA 良いな。安いし高機能。無駄にメモリがでかいけど。
アルファプロジェクトの1万ほどするボード使ってたけど次からこっちにしよう。
しかしいつ終わるかもしれないサービス使って開発する気にはなれんな。
>>384 >DFTとかECOとかケアしないならご勝手に
DFTて何?ecoと併記してるってことは discrete Fourier transform. のことじゃないだろーし
Drive Fitness Test?
Design For Test?
Density functional theory?
DuPont Fabros Technology?
いっぱいありすぎてどれかわからん
ごめん誤爆。今頃気づくのもすげえな。
いつの間にスレ変わってたんだろ。
>>386 ヒント:RTLでケアできる奴
しかしよくもまぁそんなに見つけてきたもんだ
尊敬する
>>385 も明らかにルネサススレの誤爆っぽいし、
誤爆2連発とは珍しいな
>>386でしらんやつ多いし
一個ずつ調べてみよう
携帯からだから調べてたらパケ死ぬが
【論理力テスト】次の文章は正しいようで実は論理的に間違っています。どこがどうおかしいか貴方は説明できますか→「何度学校を変わってもいじめられるのは、いじめられる側に原因がある証拠だ」…答えは「感情自己責任論」で検索
>147
signaltapはFFにならない信号が上手く見れなかった気がする。
といっても、現在までのすべてのバージョン/石で確認したわけじゃないけど。
何度学校を変わってもいじめられるのは、いじめられる側に原因がある可能性が高い
これで間違いないように思うが
バーンテストでは何の問題もなく試験にパスするのに
1ヶ月使うと異なるメーカのメモリが次々こわれるのはMB側に原因がある可能性が高い
GA-7ZX 実際回収騒ぎになりました
>156
部品点数を減らしたいって希望があるので、自陣営のデバイスで大部分のことをできると言わざるを得ない
さすがにソフトコアCPUで全部ってのは無理があるから、X社もA社もまじめにハードコアCPUを積みだした。
(もともとATOMつきFPGAとかPowerPC入りFPGAとかあったけど)
>166
全部はないだろうけど、一部はあるかもしれない。
旧いプロセスのASICと新しいプロセスのFPGAなら性能はトントンで、ASICを新規に起こすことはどんどん難しくなってきている。
運よく既存のSoCで全機能を実現できりゃいいけど、どうしてもカスタムロジックを積まなきゃならないなら...
リコンフィグでコーデックごとに論理組み直すのってソニーがウォークマンで
やっていたような
詳細が公開されてないからどこまでちゃんとやってるかは知らんが
最新のFPGAってソフトだとPowerPCどれぐらいのクロックで動くの
ウォークマンてCPUじゃなくてFPGAでデコードやらせてんの?
いつの話し?今でしょ じゃないでしょ?
>>398 FPGAにやらせるんじゃなくてSoC内のDSPじゃない? いくらでもソフトウェアで組み直しできるし。
>>398 wikiだが、
>当時現れた数少ない実用製品例をソニーが2002年から自社の携帯機器であるウォークマンやPSPシリーズに、動的再構成技術であるVME(Virtual Mobile Engine)として採用したが、その詳細は明かされていない。
これ
今使ってないってことはあんま良くなかったんだろう
リコンフィギュラブルなシステムって、
イマイチぱっとしないな。
カシオのデジカメも一時期使ってたけど
主流にはならなかった。
テンシリカも潰れたようなもんだし。
離婚フィギュアLoveる
と
プログラマブルってのはどーちがうの?
Xilinx VerilogHDLにおいて、
assign[N] = 1'b1;
のような記述はできないのでしょうか?
Nの部分を数字にすると、通るのですが、変数にするとエラーがでてしまいます。
Xilinx EDX-002(Verilog)において2ケタのダイナミック点灯方式7セグLEDを用いたカウンターを制作中です。
Check Syntaxは通るのですが、以下のようなエラーが出て、ビットマップファイルが生成されません。
おそらくchatend(7セグに表示させる数字)が原因だと思うのですが、いまいち解決方法がわかりません。
ERROR:MapLib:661 - LUT3 symbol "Mmux_chatend_Result<0>1"
(output
signal=chatend<0>) has input signal "chat2<0>"
which will be trimmed. See the
trim report for details about why the input signal will become undriven.
また、ダイナミック点灯式なので、交互に7セグLEDを切り替えるのですが、処理を確認するために、切り替えのタイミングを極端に遅くし、
交互に点滅が行われているか実機で確認してみました。
しかし、片方が点灯している間、片方は消灯しているわけではなく、薄く光っている状態となっています。
これは正常なのでしょうか?
最後に以下の処理がどのような動作をするのか、あまり自信がありません
wire up = (shift_reg == 8'b00000000);
upにLEDをつなげてみて確認してみたのですが、
upはshift_regが8b'00000000となった場合にのみ、shift_regが代入されるという解釈であっていますか?
以下ソースコードです。
よろしければアドバイスいただけると助かります。
http://www.dotup.org/uploda/www.dotup.org4209651.txt
信号名はすごくわかりやすい
ただ回路記述は見難い・・・
upは一回しかでないの?
シミュレーションはした?
つか合成でエラーでて書き込み出来るのかな
>>404 wire up = (shift_reg == 8'b00000000);
== は演算子(演算をして結果を返す)
別の演算子の+を使った
clock_counter = (clock_counter + 1);
も理解できないよね
clock_counter = clock_counter + 1;
これを意味不明で使っているの?
chatend じゃなくて、chat2 が変
chat2のトコ、always文のイベント式がposedgeじゃないからかな?
この書き方で続けるなら、chatが9になったら桁上げ信号を出す様にして
その信号でchat2を変化させる様にすれば良い
wire up2;
assign up2 = (chat == 4'd9);とか書いて、chat2の記述を
always @(posedge up2) beginにするとかだね
>>405 インデントがバラバラになってるのは仕方無いとして
クロック的信号が多くなるのはあまり好ましい記述では無いだろうねぇ
一時HDL書くのが面白かったんだが、
C#でパラレルプログラミングやってるほうがずっとたのしくなって
Qusestaとかいじるのがめちゃ苦痛になって
もうソフトだけでいっかとか思うようになった。アプリレベルならほぼC#で事足りる
みんなHDLどんな仕事でつかってんの?情報家電なんてもう仕事ないでしょ?
未だにHDLのニーズて高い?それはCPU+できあいの専用LSIとかじゃムリ?
>>409 技術者としてすごく尊敬。
HDL屋さんってマイコンとか別の環境に対する
ハングリー精神がなんつうかな・・・
いうならハードウェアはコストを極めれるので
生き残ってる
少量のアプリケーションにはマイコンとかFPGAのが良いかと
あとはギガヘルツ回路とか最先端はやっぱり・・・
(アナログ設計が多いが)
結構あるかも
>>404 chat, chat2で実現しているカウンタがへん(chat2は動作しない)。
まず、7セグ表示なんてしないで、
chat, chat2でalways @(posedge CLOCK_50M)を使い、入力信号upのパルスを
カウントする00-99カウントの十進カウンタ実現することからはじめたほうが良い。
十進カウンタはシミュレーションで動作確認する。
>>408 >>404を尊重するとそうなるけど、この程度の回路でそのやり方は止めたほうが良いと思う。
>>404 記述が読み難いのは、モジュール毎に分割して記述されてない面もあると思う
チャタリング対策部、カウンタ部、LED表示部にそれぞれまとめて記述して
それぞれにコメントを入れると読みやすくなる
moduleで分割するのも良い
あの程度でモジュール分割とかやめてくれ
>>413 慣れるにはこの程度ぐらいで練習した方が良いと思うのさ
分割しやすい感じだしね
分割するメリットの一つに再利用がある
7セグ用の自分の(評価ボードの)表示モジュールを作ってつかーさい
回答は一週間後ぐらいに
(想像で作るけど
>409
動画CODECとか。
enc/decを10ms未満で行ったりとかそこまで行かなくても実時間でenc/decしたりとかクロックリカバリしたりとかはまだHDLの方が楽。
放送用なので、できあいの石だとちょっとした機能不足が致命的になったりする。
(「仕様です」で突っぱねる力がないだけともいう)
できればDSP/GPUソリューションにもちょっとは触手を伸ばしたいんだけど...
触手があるってところが凄いです
触能って奴か…
規制掛かりすぎで家PCから書き込めないっっ!!
421 :
774ワット発電中さん:2013/06/13(木) 00:07:21.81 ID:hHPnZp7R
符号付きビット加減算が、わかりません。
-107100-(-25500)とかを2進数、または、16進数で計算する方法教えてください。上は10進で書いてますが、符号付きビットのマイナスどうしの減算方法知りたい。
桁がちがったらビット拡張?とかいうのやるの?
>>421 計算は符号無しでやって、結果を符号付きと解釈すればいいよ。
結果がオーパーフローしてなければ答は合ってる。
>桁がちがったらビット拡張?とかいうのやるの?
yes
VHDLは知らんが、Verilogの符号付き演算は後付けだから
使うと訳が分からなくなるよ。
混在すると符号なしで評価してくるし、
特に乗算は注意だな。
424 :
sage:2013/06/13(木) 10:00:34.79 ID:AhrinLfE
ただビット演算がVerilogと関係するのか否かは・・・不明だ。
でもほかは何処で聞けばいいんだろう?
425 :
sage:2013/06/13(木) 13:14:16.65 ID:PueyUaQi
>>421 VHDL87で「LPM_ADDSUB」と同等機能以上のIPコア作ったことがあるのでちょっとご説明致しましょう。
上記の場合、マイナスの値は2の補数に変換してそのまま計算すればよい。
その際、ビットの桁数をどちらか大きい方に合わせて計算する。
また、この場合、符号付減算となるので、桁数の小さい方のMSBを、
大きい方の桁数に合わせてコピーする。(符号無は0をコピー)
例)111101001-11011=111101001-111111011
↑
引く数のMSB'1'を大きい方の桁数分コピー
>>423 VHDLでは「std_logic_arith」パッケージと「std_logic_unsigned」を
ライブラリに追加し、必要にな時だけ'singed(A)'として符号付にして
計算すればOK。
426 :
425:2013/06/13(木) 21:46:14.21 ID:yntM2XKu
×必要にな時だけ'singed(A)'として
○必要にな時だけ'singed(A)'というように、signed型にして
後から見返したらなんか文章が変だったw
矢印も位置違ったし、失礼
>427
とりあえず1つのファイルにまとめてupして。面倒過ぎて見る気にもならん。
429 :
774ワット発電中さん:2013/06/26(水) 18:41:31.41 ID:jBcQ+lkB
VHDLで、文字列をASCIIコードに変換するにはどうしたらいいんでしょうか。
ソースでこんな風に書きたいです。
constant CHAR1 : std_logic_vector(7 downto 0) := code('A'); -- =X"41"
constant CHAR2 : std_logic_vector(7 downto 0) := code('B'); -- =X"42"
constant CHAR3 : std_logic_vector(7 downto 0) := code('C'); -- =X"43"
あるいは
constant CHAR : std_logic_vector(23 downto 0) := code("ABC"); -- =X"414243"
>>429 最初の3行みたいに一文字づつ代入したいんなら
Character型使えばいいんじゃねーの
最後の行みたいな文字列の場合はわからん
つーか普通VHDLで文字列扱うことはめったに無いと思うけど
>VHDLで、文字列をASCIIコードに変換するにはどうしたらいいんでしょうか。
あきらめる
432 :
>>427:2013/06/27(木) 12:23:36.07 ID:NVKYFdv1
21行目、EH1HZはEN1HZの間違いじゃないのかな
>427
Simはかけたのかい?
本題とはちがうんだけど、always で組み合わせ回路を書くときは
センシティビティリストに 「*」 書くのが普通なの?まじめに入力信号書くと漏れが
出たりするけど、合成に違いとか出ない?
でもちゃんと記述する方が扱う信号明確にできて、多すぎるなら分けるなりした方が
良さそうだと個人的には思うんだけど、古いのかな。
漏れが出て結果が違うなら
それは記述が悪いんじゃね?
* が使えるようになったのは2000からだったような・・・
シミュレーションに時間がかかるとかあったけど、
今は解消されてるような感じ。
437 :
sage:2013/06/28(金) 12:30:22.94 ID:NVNuExfQ
>>429 function文でstring型からstd_logic_vectorに変換する例を
作ってみたのでご参考にどーぞ
-- ASCII code to std_logic_vector convert function
function ascii_to_std_logic_vector(A:string) return std_logic_vector is
variable tmp_chr : character; -- Temporary extracted character from input string
variable str_length : integer; -- String length
variable std_pos : integer; -- Std_logic_vector insertion point by 8bit division
variable dec_pos : integer; -- Decremented std_pos
variable std_tmp : std_logic_vector(7 downto 0); -- Temporary converted std_logic_vector by 8bit
variable result : std_logic_vector(A'length*8-1 downto 0); -- Result
begin
-- String length
str_length := A'length;
-- Std_logic_vector conversion loop
asccnv_lp: for I in 1 to str_length loop
-- Extract A character from right to left
tmp_chr := A(I);
-- std_logic_vector insertion point
std_pos := str_length - I + 1;
dec_pos := std_pos - 1;
-- ASCII character to std_logic_vector decoder
case tmp_chr is
when NUL => std_tmp := "00000000";-- 0x00
when LF => std_tmp := "00001010";-- 0x0A
when CR => std_tmp := "00001101";-- 0x0D
when ' ' => std_tmp := "00100000";-- 0x20
when '"' => std_tmp := "00100010";-- 0x22
when 'A' => std_tmp := "01000001";-- 0x41
when 'B' => std_tmp := "01000010";-- 0x42
when 'C' => std_tmp := "01000011";-- 0x43
when 'D' => std_tmp := "01000100";-- 0x44
・
・
・
when others => std_tmp := "11111111";-- 0xFF
end case;
result(std_pos*8-1 downto dec_pos*8) := std_tmp;
end loop;
return result;
end function;
>>435 よく考えて、合成に違いが出ると思うのか?
always * で済むならそれでいいじゃないか。
変更時に同じ事を2回書くのはバカのする事だ
自己満足したいならご自由にどうぞ
VHDLには * なんて素晴らしい仕様は無いんだぞっと
XSTさんはセンシティビティリストに抜けがあると、
「合成は仰せのままにするけど、Simで違いが出るかもしれんが良いか?」と警告出す
そこでSystemVerilogですよ
XSTは、「ビット長が違うから切り捨てましたよ」って警告を
出したり出さなかったりするのをやめてくれ。
VHDL-2008はprocess(all)でいける
で、VHDL-2008はどこで使えるの?
なんだかなー
VHDLを名乗ってるくせにそんな仕様でいいのかよっ、て感じ
常に進化する物が生き残ると進化論で
でもSEARCですらverilog-95以外の記述禁止とか
書いてあって・・・
ところでモジュールのなかにinout書く奴が慣れないなー
分ける派?入れる派?
SEARCってなに?
inoutは1個のモジュールでしか使わない信号ならinoutのままつないじゃうな
STARCでした○rz
モジュールの中に入れるとシンプルなんだけど
reg宣言が困る・・・
>>446 A <= B when C = '0' else D;
も全部プロセス文にいれなあかんのかな 可読性上げるなら
>>444 STARCって、日本国内で一線を外れた元技術者が集まって、あーだこーだとうるさいルールを作っている団体。
海外の技術者は、わざわざ日本のSTARCに合わせるのがバカバカしいって嘆いている。
日本の会社は、Verilog1995の文法に未だにこだわって社内ルールにしている所が多いそうだ。
その理由は、Verilog1995でなくVerrilog2001でソース書かれると、対応していない環境への
流用が利かないから困るだそうだ。
もちろん、STARCルールを細かく気にして慎重にソースコード書いていても、
日本の半導体メーカーは進化についていけなくてバッタバッタ潰れたので、結局は流用できませんが。
でも、何かあったときは、ひとまずSTARC見るじゃん。
過去体験の集大成として。そういう意味では、2冊持ってるよ、STARC。
STARC見る前に自分のコードを疑えよ。
451 :
774ワット発電中さん:2013/07/08(月) NY:AN:NY.AN ID:yMWdXmlp
自分のコードが間違っていないか確認するためにまずはSTARCだっつってんだろ
なんだかんだいって、あれには先人が合成で泣いた経験がつまってるからな。
453 :
774ワット発電中さん:2013/07/09(火) NY:AN:NY.AN ID:3mQy4MOk
そうそう、みなさんSTARCの悪口を言ってばかりですが、
先人の知恵が入っていると思います。なぜこんなこと言うんだろう、と考えると、
よい勉強になります。休憩室に置いておきたい1冊。
ASICやってたけど、日本の設計ルールとか変なとこあると思う
ここでSTARC1の1くらいから読み合わせしたいね
ダメだろうけど
456 :
774ワット発電中さん:2013/07/10(水) NY:AN:NY.AN ID:U3atyN0R
読み合わせって、何すること?
とりあえず一項読んだ後に
ここ可笑しいーとか
ここ意味わからねーとか
なにいってんだ?こいつとか
心配しすぎとか
ところで今日の昼のソバおいしかったねーとか
458 :
774ワット発電中さん:2013/07/10(水) NY:AN:NY.AN ID:+3rjpnNl
OLじゃあるまいし、昼飯の話なんか会議でするかバカ
今晩どこ飲みに行く?
暑いしビヤガーデンとかいいよね・・・だろ。
OLじゃあるまいし。
ダメだダメだ否定的に決め付けるのはどうかと思うぞ。
困難に挑戦してこそ、成長といものがあるんだろ?
無理だと思えるようなことにこそ、挑戦する価値があるんだよ。
さあ、みんなで OLを目指そうず!!(そこかよ
何?OL殺そうってか!!!
テロ予告で通報しといたから首洗って待っとけ
今時そんな優雅なOLいるか?
事務だけの腰掛けOLポジは派遣事務員が駆逐しただろう。
なにか皆さんすごいノリすね。
おやじー替バリカタね
おまいらどんだけOLに恨みがあるんだ?
そんなにいじめられたのか
OLの乙女回路をFPGAで実装してくだしあ
OLに置換して実刑受けました
15年位前のアニメにそんなのあったな。
教えてください。
♪ フルスクラッチで書き上げた、そのロジックで、あたい返信・・・・
というFPGAの歌がありますが、
この「フルスクラッチ」ってどういう意味なのでしょうか?
辞書で調べると、スクラッチとは、ひっかく、こするといういみなのですが。
そんな歌があるんだ
>>468 模型製作方法の「フルスクラッチビルド」
出来合のIPを使わずに自分でイチからRTLカキカキする事を、
模型全体の部品を素材から削り出しで自作する事になぞらえてると思われ。
模型分野で使われてる用語だというのは知ってるけど、
それが「発祥」なのかなぁ?
>>470 ありがとうございました。
なるほど「1から作る」というときに使われるみたいですね。
どうもありがとうございました。
でもなんで Scratch なんだろうか、そちらも興味があります。
どうもありがとうございました。
ステマ乙
>472 なんで Scratch なんだろうか
競走でのスタートライン(一本棒)から。途中からでなく最初から。
だから「スクラッチから作る」と言うのであって
「スクラッチで作る」は本来誤用。
慣用句だろ
「from scratch」という慣用句。
確か地面をひっかいて書いた線をスタートラインにするところから転じたんだと思った。
よし、ではまずシリコンのインゴット引き上げから
採掘からやれよ
てことは、インゴット引き上げる設備の加熱電源の設計からだな。
珪素の鉱石つかったらゼロじゃないじゃん・・・真空から作らなきゃ!
シランはすぐ爆発するらしいよ。よく知らんけど。
絶対神かよ
真空は空間が無ければ存在できない
ビッグバンからだ
そろそろやめるか・・・
正直インゴット引っこ抜くところから言って
悪かったよ
488 :
774ワット発電中さん:2013/07/21(日) NY:AN:NY.AN ID:OuBpSk+z
以前のISEには、回路図、言語、状態遷移図でエントリーできました。
状態遷移図だけで全部掛ける物でしょうか?
>>488 Matlabの昨日にそんなのがあったな
OLの膣内をFPGAで再現して疑似セクロスしたいのですが、どのように組んだらいいですか?
まずは、てんがを買ってくることだね。
愛はRTLに積めな
回路がそれに答えてくれる
このくだらない流れいつまで続けるつもり?
あと500くらい
クソスレ
496 :
774ワット発電中さん:2013/07/23(火) NY:AN:NY.AN ID:54BM2dsS
まもなく折り返し地点を通過しようかという勢いであります。
なぜか2032年問題を思い出した
498ゲット
499 :
774ワット発電中さん:2013/07/24(水) NY:AN:NY.AN ID:3JvpoVbZ
499だぜ
折り返しにだ
501 :
774ワット発電中さん:2013/07/26(金) NY:AN:NY.AN ID:FvL2TJeD
毎晩1つがつ書き込もうかな。
そうすれば、1年と3.5ヶ月後には、新スレが立つ
502 :
774ワット発電中さん:2013/07/27(土) NY:AN:NY.AN ID:tJNQC/3s
503
暇ならなんかRTL書いたらー?
initial begin
$stop;
end
always @ ( posedge clock ) begin
if( reset==H ) begin
end else begin
end
end
begin と end の間に文がないとエラー
507 :
774ワット発電中さん:2013/07/28(日) NY:AN:NY.AN ID:J2YG0tDB
Hとは何だろうか?
(〃∇〃)
509 :
774ワット発電中さん:2013/07/29(月) NY:AN:NY.AN ID:fxtqv+9C
STARCからのお願いです。
みなさん、Warningは、放置せず、必ず取り去って、
Error 0
Warning 0
にしましょう。
通報しました
511 :
774ワット発電中さん:2013/07/29(月) NY:AN:NY.AN ID:3n3pTQTj
Spyglassのワーニング全部って無理だろ
あっちを立てればこっちが立たずになるんだから
ワーニングって何?
513 :
774ワット発電中さん:2013/07/30(火) NY:AN:NY.AN ID:0F3Jye9a
Warningのこと。
ウォーニングと同じ。
この読み方をスレの話題にするつもりだろうけど、日本ではどちらも通じます。
おわり。
ワーニングなんてものはこの世の中に存在しません
どうせカタカナでは正確な表音はできない。
正確を期すなら毎回アルファベット表記するしかない。
I2Cの読み方みたいな
518 :
774ワット発電中さん:2013/08/02(金) NY:AN:NY.AN ID:kijuZIMS
ぬるぽ
ワーニングホリデー
HDLにもコンセプトを導入しないと駄目だよな
ここはSystemCはのけ者?
Xilinx のVivado SE 製品バージョンはSystemCの合成できるみたいだけど
だれか使った人いない?SystemCがまともなら何も無理してHDL使わなくてすむんだけど
話題がないってことはまだ HDL に取って代わるほどじゃないってことでは?
値段を考えると客が少ないんじゃないかなー。
高位合成ガチ勢はASICでも合成できるツールを使うだろうし。
俺もそうおもた
専用合成ツールってのは値段が高くて一般に広まってない
フィッタが合成機能を持って、それが広く使えるようになった段階で
みんなの評価を知りたい
SystemCでちゃんと製品などを設計した経験あるのか?
SystemCでLEDチカチカすらできないのに、SystemCがあーだこーだじゃないよな
俺はSystemCさっぱりだけどな
SystemCでクロック分周してLEDチカチカ、どう記述するんだ?
C++のテンプレートリだから、C++知ってればテンプレートライブラリとして仕様調べるだけで使えるけどな
日本語で
verilogでアナログっぽく書くのやめてくれー
トランスファゲート何段あるんだよぉー
HDLは正常だったが
LDLが高かった
夏休みの宿題で書き込みが来そうな予感だが
過疎ってるので保守
夏厨ではないけど、大学の研究でFPGA(DE2)始めたので、初歩的な質問させて下しあ。
ひとまず、Verilog-HDLの文法は勉強して覚えることはできました。
文法だけ知ってても、行き当たりばったりで書くとスパゲッティ&バグだらけになったので、やはりまだ知識・経験不足です。
入門書(文法中心のもの)の次に読むべき資料・文献でおすすめがあれば教えて欲しいです。
皆さん、コーディングのマナーとか、開発の流れ、要件定義からのモジュール分割などのテクニックは
どういったもので習得していますか?
うちは社内ルールだな。
組み合わせ回路のreg/assign禁止とか、ポート名はi_* / o_ * にするとか。
前者は他社から変態呼ばわりされることもあるけど、バカがしでかすよりましかなーと思ってる。
>534
reg/always禁止だ。assign禁止とかあったらひどすぎるw
536 :
774ワット発電中さん:2013/08/25(日) NY:AN:NY.AN ID:AaDJX47G
バカがしでかすのを見つけるためのspyglassだろ
お偉いさんを安心させるだけのツールだからな
VerirogやめてVHDLにすればいいのに
なぜかVerilog隆盛なんだよな。
最近の案件ほぼ全部Verilog。
俺のところは最近VHDL案件ばっかだぞ。
自分のところは紙に回路図書いてからVerilogを書く人が多かったけど
これって普通なの?
回路の種類やレベルによるかな。
ブロック図はだいたい隠し。
画像フィルタとか作る場合はどこで小数点以下何ビット保持するかを図に書いたりする。
542 :
532:2013/08/25(日) NY:AN:NY.AN ID:qrJjXwyo
>>533 良さそうな資料ですね
検索かけたら図書館にあったので、今度借りて読んでみます
>>534 verilogは自分以外の人はやってないので、社内(研究室)ルールが無いんですよね。
今は資料を参考に自分なりのルールを作るしかなさそうです。
>>535 組み合わせ回路を意図的に作るときはそのルールでやってますけど、
未だにRTLの作法・セオリー(組み合わせ回路のフィードバックは好まれないとか、クロック周りの取り扱いとか)
を理解しきれてないです。
マイコンは8bitから32bitまで触ったのでデータシートと簡単な参考書さえあれば大抵いじれるんですけど、
HDLはマイコンのソフトウェアの感覚で書けないのでまだ慣れません。
VHDLについて
ほしい情報がVHDL記述の時あるので、そのうちVHDLも覚えたいですね。
現場で動くにはやっぱり両方できないと難しいんですかね?
回路図からHDLに変換する、ってのはどうなんだろ。
回路図の方が動作がわかりやすい物があるのも事実で、ツールがHDLしか受け付けない
場合が多いのでHDLで書き直す、という理由ならわかる。
この場合、ドキュメントはHDLと一緒に回路図のまま残した方がわかりやすいね。
でも回路図からHDLだと、回路図で記述できる範囲の物しか作れない。
HDLって回路図記述では難しい抽象度の高い記述をするために生まれたんだよね。
>>532 >皆さん、コーディングのマナーとか、開発の流れ、要件定義からのモジュール分割などのテクニックは
>どういったもので習得していますか?
開発の流れとか、要件定義からのモジュール分割とか、むつかしい事言ってるけど、
HDL書きは、体力というか、体で覚えるのが重要だと思います。
僕は、気に入った著者の本を何冊か買い込み、先頭ページから載っているソースというソースを
片っ端から全部入力しました。
1冊の本を3回くらい繰り返すと、自然とHDLの書き方というか 体裁というかが
わかってくるので、その後にVerilog文法を勉強しました。
ソフト屋上がりならCQの森岡さんの本一択だ
PDFしかないけど
546 :
774ワット発電中さん:2013/08/27(火) NY:AN:NY.AN ID:xR5susse
サービス停止後は閲覧できなくなるって
出版社がやーめたと言ったら、ただのバイナリファイルになるのか
怖くて買えないな
それは違うと思う
スキャンしたPDFと書いてあるが検索出来るように透明テキストが入っているのかが知りたい
>>550 買ってみたが、検索・目次両方使えるから読みやすくなってた。
初心者です。質問させてください
verilogで、ビット指定の添え字(インデックス)に16進数を使うことは出来ないんですか?
出来ますがなも
555 :
774ワット発電中さん:2013/09/10(火) 03:30:38.31 ID:db4ygDmL
4'hC7 とかでいいんじゃないの?
556 :
774ワット発電中さん:2013/09/10(火) 08:38:43.39 ID:KFsHAwfv
ビット幅足りてねえぞ
ち、ちょっと初心者君に気づいてもらおうと思って
わざと間違えただけっ
て言われたらどーすんのよ
どうもしない
559 :
553:2013/09/10(火) 14:13:37.57 ID:UJ+9DnGI
>>554-558 レスありがとうございます。
簡単なテストコードを書いたところ、うまく動きました。
なぜ元のコードがコンパイルできなかったかというと、原因を勘違いしていたためです(エラーコードの読み間違え・勘違い)
本来の原因は、操作対象がレジスタのビットではなく、レジスタ配列の各要素だったためのエラーでした。
下記のように、波括弧でレジスタ配列をずらして連結して循環シフトをやりたかったのですが、各要素ごとに代入文を書けと怒られますね・・・
reg [7:0] reg_hoge [31:0];
always @(posedge clock) begin
reg_hoge<={reg_hoge[0], reg_hoge[31:1]};
end
各要素の代入文全てを書くとエラーは無くなったので、generate文を使おうと思ったのですが、
alwayの中では使えないようですし。
このような記述はできないのでしょうか?
また、コレ以外にエラーの出ないスマートな書き方はありますか?
reg [255:0] homo;
略
homo <= { homo[7:0], homo[255:8] };
end
こんなんはイヤか?
>>560 なるほど
5ビットでアドレス作ってインクリメントするだけでは駄目なのかな?
562 :
553:2013/09/12(木) 09:37:54.48 ID:cjRtOk4s
>>560 その方法は思いつきませんでした。
8bitレジスタとして使うとき、ちょっとかさばりますが良いと思います。
ちなみに下記のように記述しても、希望する動作・回路ができたので一応報告しておきます。
環境:QuartusII、DE2
reg [7:0] reg_shift [31:0];
reg [4:0] cnt;
always @(posedge clock, posedge reset) begin
if(reset) begin
for(i=0;i<32;i=i+1)
reg_shift[i] <= 8'd0;
end
else begin
for(i=0;i<31;i=i+1) begin
reg_shift[i] <= reg_shift[i+1];
end
reg_shift[31] <= reg_shift[0];
end
end
>>561 複数の配列要素を同時に読み書きしたいので、
アドレス+セレクタで対象を指定するのは難しそうです。
でも、小規模な配列であちこちにアクセスする用途ならいい案ですね。
ありがとうございます。
シミュならいいが、
回路の中にループとかの手順を書くな
ループで生成なんて普通じゃん
昔からやってる人はこういうの全然使わないね
まあ、ツールにいろいろ問題があったから仕方ないかもしれないけど
ASICの世界は知らんけど、今のFPGA用ツールでは全く問題無く合成してくれる
>>565 むしろ、ASIC向けの合成ツールのほうが進んでる。
こういう人は、generate も使わないんだろうな。
568 :
774ワット発電中さん:2013/09/13(金) 00:06:50.57 ID:RIrZm0h9
合成ツールだけ対応しててもダメだろ
Lint もカバレッジも対応してますが・・・
ツールは対応してるけど
設計者側が対応していないんじゃね
社内ルールで禁止されてるとか
>563 みたいなこと言うレビュアーがいるとか
571 :
774ワット発電中さん:2013/09/13(金) 23:10:22.19 ID:RIrZm0h9
>>569 等価検証は?ECOツール?大手になればなるほど内製ツールもあるけど?
ルネサスさん、書き込みご苦労様です
うちはいまだに回路図で書いてるから保守性悪すぎ
574 :
774ワット発電中さん:2013/10/01(火) 09:59:21.57 ID:H91NrtXb
トップ階層だけは回路図で書いて、モジュールはHDLで書いてみたい
それが一番いいよな
ブロック図相当のトップは絵図がいいと思う
FPGA Advantageとかの状態遷移図からのHDL生成とかはど?
使ってみたけどこれで十分じゃないかとオモタんだが?
FPGA Advantageは総合ツールで
HDL Designerだったな。
俺のところはモジュールのブロック図を描けって指導うけるんだよな
初めのころは単純なのまでブロック図描かされていたからな
578 :
774ワット発電中さん:2013/10/01(火) 15:51:17.52 ID:CLrp8IQH
HDLで書くと、wireが どこに何箇所飛んでいくのか、
さっぱりわからないからね。CTRL+Fで探せと言われそうだけど、
回路図には負ける。
ブロック図とタイミングチャートをちゃんと書いた方がいいよ。
実装なんて作業だけだから。
>>579 そんな面倒なことは前もってしないで、コード書きながら脳内でなんとなく描いて
コード書きサイコーって陶酔って奴多いんじゃないか。
行き当たり場当たり設計手法が最強!
時代はスケマ
HDLで書いてRTL Viewerで確認。
スケマでもいいけど、ツールのバージョンが変わった時が恐い…。
結局HDL Designer 使ってる人少なそうだな。
状態遷移図きちんと書けば自然とHDLコードができるのは
花子やVisioよりいいと思うんだが
いろんなツールあるんだ。
自分はSynopsysだけだな。
Cadenceも使ってあげてくださいな
>>585 シミュレータはVerilog-XL NC-Verilogだった。
後、Gate Ensembleを少々。
どこか就職できないかなあ。
>>586 HDLできる奴の求人はたくさんあるだろ。売り手市場で高給転職ができる
売り手?まじすか先輩!
派遣頼むと、ソフトなら80くらいなのに
ハード屋だと120とかだかんなぁ
オレの倍以上貰ってんだな
派遣の人月計算ならそんなもんすよ
雇ったほうが安いんですが
首が切れないので赤字回避出来ないんです。
教えてください。
XilinxのISE14で、HDLを書いて勉強中です。
CoreGenからDCMを作成して、使用すると、エラーが出ます。
内容を読むと、ucfに
PIN "UU1/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; を追加しなさいと出ます。
その通りにすると、確かにWarningに格下げされて、動きました。
このエラーの内容は、DCMの出力先が通常配線層でありclockの通るところじゃないよ。
というものみたいです。
これをまじめに対処するには、どのようにしたら良いのでしょうか? Warningを消したいということです。
DCMの出力にBUFGを挿入すれば良いのかと思いましたが、DCMの出力にはすでにBUGが入っています。
もう一つ質問があります。
DCMを入れた途端に「未使用の出力があるよ」とWarningが5個くらい出ます。
僕のせいではなくて、CoreGenが勝手に生成したプログラムに、
not_useみたいなwire信号があり、それが未接続だと言うのです。
このWarningを取る方法は、どのようにしたら良いのでしょうか?
僕のせいでWarningが出ているなら、努力して消したいと思いますが、
Xilinxの生成したものでWarningが出るのでは困ってしまって、ワンワンワワンです。
DCMを生成するときにバッファ挿入するかどうか指定できるよ
593 :
774ワット発電中さん:2013/10/04(金) 09:51:13.14 ID:qB0sVh1J
FPGAスレとVerilog/VHDLスレが分かれているのに
このスレでのFPGAの質問の多さたるや
>>593 そんな奴が普通の電子産業
>困ってしまって、ワンワンワワン
な奴いっぱいだからね
>>592 >DCMを生成するときにバッファ挿入するかどうか指定できるよ
ありがとうございます。
CoreGenのDCM生成画面でNoBufferにしてみました。
しかし、まだClock Dedicated Route = FALSEにしなさい、と出てしまいます。
このメッセージは、どういう時に出て、どうすれば消えるのでしょうか。
今、Xilinxのページを検索しているところです。
16桁2行のLCD表示器を、Verilogでアクセスしようと思っています。
初期化まてはなんとか行ったのですが、実際の文字表示の段で困りました。
マイコンのように、処理のあちこちでLCDに表示文字を送りたいのですが、
出力がコンフリクトになるらしくて、うまくできません。
16×2行=32個のメモリを置き、LCD駆動側は、常に0〜31までを
LCDに出力し続けるのはできたのですが、各所から1つのメモリーに書き込むには
どのようにしたら良いのでしょうか?
マイコンのように、メモリーにバスをつないで、イネーブル信号でバス券を奪取して
書き込むという方法でしょうか?
アービタ入れるしかないんじゃね
優先順位付けるだけでいいと思う
>優先順位付けるだけでいいと思う
すると、こんな感じでしょうか。
5番「書き込み開始だ!」
2番「書き込みしようかな」
5番「おっと、俺より優先の人が書き込んでる。おれは降りる」
2番「書き込み終わった終わった」
5番「2番の書き込み終わったけど、俺は再書き込みしない。だって2番の内容を消してしまうから」
根本が間違っている。
うまく表示できない原因を特定すべきじゃないの?
ほんとうにコンフリクトが原因なら、
一つのメモリの複数のアドレスに同時に書き込もうなんて無理だからアービタ必須。
メモリにアクセスするモジュールを一つだけ専用に用意する方が見通しがいい。
各所はそいつに表示依頼するという形式にする。
そもそも表示の変化が速すぎて何のことやらわからなくなってるだけなら、
一つ表示したらしばらく次の表示を禁止するしかない。
バッファを1段余分にかませれば時間的に間引くことは簡単。
うまく表示できないというか、そもそも合成できないでしょ
まず16bitLCD表示器を愛さないとな
16ビットじゃなかった・・・orz-3
表示を見るのはユーザーなんだから、ユーザーにどれを表示させるか選択させれば良いんだろ
どれを表示させるか選ぶセレクタを入れるだけで良いんじゃないのか
それとも、ランダムに表示したいのかな
複数の処理が同じ「アドレス」に書き込んでるわけじゃないよね?
もし同じ「アドレス」に書き込んでたらわけわかんなくなってあたりまえ。それは設計が悪い。
たとえば時計と温度計を同時に表示するようなものを作るなら
メモリを2つに分けて時計は上の段の16バイト、温度計は下の段の16バイトに
書き込むようにすれば競合は起こらない
同時に表示させるアイテムが増えても考え方は同じ。8バイト×4に分割するとか。
つーか16×2くらいならわざわざメモリにせんでも8ビットレジスタ32個でいいんじゃ?
>16×2行=32個のメモリを置き、
(中略)
>各所から1つのメモリーに書き込むには
>どのようにしたら良いのでしょうか?
すみません私の読解力が足りませんでした
つまり
>>596さんの定義は8ビットレジスタ1個が「メモリ一個」なんですね。
どんなUIを想定してるんだろう?
イベントA発生→タスクAが液晶に情報Aを表示
:
(次のイベント発生まで表示は情報Aのまま)
:
イベントB発生→タスクBが液晶に情報Bを表示
:
(次のイベント発生まで表示は情報Bのまま)
:
みたいな感じかな? それならタスクごとに32バイトのメモリを持って、
最後に起動したタスクのメモリ内容をMUXで選んで表示すればいいと思うけど
詳しい仕様がわからないからなんとも言えん
そうじゃねえよ
違うアドレスであれ、一つのRAMに同時にどうやってつっこむのよ
611 :
774ワット発電中さん:2013/10/08(火) 23:09:56.09 ID:X/84Pb6b
この問題の真に完全なる回答を持っているが
テキストオンリーの2chで説明してあげることが私にはできない
いやだからRAMを複数持って表示だけ切り替えれば?
って言ってるんだけど
>>611 図とか使わなくても、VerilogかVHDLで書いてくれたらそれでいいよ
キャラクタ液晶の場合はDDRAMアドレスの指定をしてデータを書くという
一連の動作の間バスを占有する必要があるから、FIFOを設けてLCDへの
出力は1箇所からやればいい。FIFO
バッファの内容を周期的にLCDに全部送るようにして、内部処理はバッファ
に書くだけという方法もある。
でも、1つのバスを 取り合いになるんじゃないかな?
>マイコンのように、処理のあちこちでLCDに表示文字を送りたいのですが、
根本的に設計思想が間違っているとしか言いようが無い。
マイコンも理解してないなこりゃ
質問者が質問したまま放置すると、
こうして質問者をけなすだけで役に立たない連中が出てくる
適当に考えれば書き込むクライアントごとにFIFOのバッファつけて
ラウンドロビンでFIFOを読み出して書くモジュールがLCDに書けばいいんじゃね
もう、マイコン使っちゃいなYO!
>>618 「これをこのままコピペしろ」という回答が得られず、
質問内容がよろしくないといわれた事を、
質問者への攻撃なのだと言い出す
日本語の不自由な奴がわいてくる。
なんか解決策見つけたんでねーの?
いやいや、変な奴の多さにびびってひっこんだだけだよ
まっ、質問者よりはまともだけどな。
EDX-005CとADCのLTC1298を用いて電圧の変化をFPGAで読み取るような
プログラムを現在作っています。
http://www.dotup.org/uploda/www.dotup.org4577837.txt ※48行目は正しくは if( AD_cnt > 5 )begin です。
しかしながら
ERROR:HDLCompilers:26 - AD_convr.v line 48 unexpected token: '\201'
というエラーが出てしまいます。
48行目のif文の条件の定数を変えても出てしまいます。
またこの部分はコメントアウトすると次のようなエラーがでてしまいます。
ERROR:HDLCompilers:247 - AD_convr.v line 39 Reference to scalar wire 'DIN' is not a legal reg or variable lvalue
ERROR:HDLCompilers:106 - AD_convr.v line 39 Illegal left hand side of nonblocking assignment
ERROR:HDLCompilers:247 - AD_convr.v line 40 Reference to scalar wire 'CS' is not a legal reg or variable lvalue
ERROR:HDLCompilers:106 - AD_convr.v line 40 Illegal left hand side of nonblocking assignment
ERROR:HDLCompilers:247 - AD_convr.v line 41 Reference to scalar wire 'DIN' is not a legal reg or variable lvalue
ERROR:HDLCompilers:106 - AD_convr.v line 41 Illegal left hand side of nonblocking assignment
ERROR:HDLCompilers:247 - AD_convr.v line 42 Reference to scalar wire 'DIN' is not a legal reg or variable lvalue
ERROR:HDLCompilers:106 - AD_convr.v line 42 Illegal left hand side of nonblocking assignment
ERROR:HDLCompilers:247 - AD_convr.v line 43 Reference to scalar wire 'DIN' is not a legal reg or variable lvalue
ERROR:HDLCompilers:106 - AD_convr.v line 43 Illegal left hand side of nonblocking assignment
どなたか助言をお願いします
>625
コメントの日本語コードを食えない方がいるようなきがする。
とりあえずコメントを全部消してみて再挑戦よろ。
それでうまくいったら、日本語のエンコーディングを変える検討をするとよいかと。
または、合成向けだけ日本語を削るスクリプトを作るとか。
入出力はalwaysの外でassignして代入することでcheck syntax通りました。
しかしWARNINGでCLK(マスタークロック)を文中に書いてあるのに使用されていない
という風にエラーが出ます。
CLKに関するプログラムは以下の部分のみです。
parameter Pscale = 20'd600; // プリスケーラ //
wire PS_CLK = (cnt == Pscale);
// プリスケーラ作成 //
always @(posedge CLK)begin
if( Pscale )begin
cnt = 0;
end else begin
cnt = cnt +1;
end
end
マスタークロックからプリスケーラーを作っているだけのプログラムです。
どこかに間違いがあるでしょうか?
> ERROR:HDLCompilers:26 - AD_convr.v line 48 unexpected token: '\201'
が問題だとしたらとりあえずそれは解決した方がいいと思うけど、
そうじゃなくてもこのコードだとシミュレーションでも不具合を見つけられそう。
外部のパラメータ制御にもよるけど、cntの値が変化する気がしない。
そういうことか
これは・・・ありがちなミス
一回やると注意するよね
やっぱりそうですか。
関係ないけど内部クロック生成してるのは嫌だな。
有難うございました。動きました。
全角スペースか?
Rictyフォントは全角スペースが見えるからいいよぉ
バイナリ配布してないから生成するのが環境づくりも含めて面倒だけどね
エディタの機能であるやん
エディタ依存
Isimだーれもつかってねーの?
使ってるけど
むしろ最近はIsim以外選択肢がないような
ModelSim無償版は無くなったよね。
有償版だとXiでも使えるんだろうか?
別にmodelsim導入すればよくね
silos 年間2万円は微妙
Xiと寺でSimがちがうのヤじゃない?
ModelSim使えば統合できる
>ModelSim使えば統合できる
だからそのModelSimの無償版が無くなったって話をしてるのに
有償版は知らん 俺趣味でFPGAやってるだけだから
開発ツールも買えないならグダグダ言わずに使ってろよ
modelsim 300万円ぐらいしたと思うが
仕事で使ってるけど金出してくれん。
中小で社長の理解がないのはまだ良いんだが、ならやらすな。
二言目にはワシの頃はってあんた、デジタル設計したことないだろ。
簡単なアナログ基盤のパラメータ変更程度の設計しかした事ないくせに。
そう愚痴ったら先輩に叱られたよ。
「失礼な事をいうもんじゃない。第一あれは設計じゃなくて設定だ。」
でもSystem Editionじゃないので高位合成できないのかショボーン
Logic Editonは、30万円くらいだったような
デバイスロックされてるんでしょ?
655 :
774ワット発電中さん:2013/10/28(月) 00:44:24.24 ID:pPS8sU0r
デバイスロックって何?
ノードロックかな?
* Vivado Design Suite: Design Edition (フルライセンス)
* ターゲット デバイスは Artix-7 XC7A200T FPGA にロック
フルライセンスだけど特定のデバイス用しか合成できないんじゃね?
658 :
774ワット発電中さん:2013/10/28(月) 09:55:42.84 ID:Zezw1BdB
はるほど、使用可能デバイスが限定されているなことを、デバイスロックと言うんだね
初めてデバイスロックという言葉を聞いたんだけど、
この世界でちゃんと通用する言葉でしょうか?
他所で使うと笑われちゃうとか、ないですよね?
限定されているのにフルライセンスって何か違和感あるよね。
なんていうか、俺の村では世界一、みたいな?
ガンダムの各種改造完了してるのに
バルカンしか付いてないとか?
機能はフルで対象デバイスは限定だから別に変じゃなくね
>>660 いや、フル装備だけど、ザク相手にしか攻撃できないみたいな
663 :
774ワット発電中さん:2013/10/31(木) 02:59:12.56 ID:u6C+pKjv
Verilogで、
reg [7:0] A,B,C;
C <= ( (A+B)
>>1 ) + 8'h12;
というのは、動かないのでしょうか?
動く。Verilog の仕様どおりに。
667 :
774ワット発電中さん:2013/11/01(金) 14:21:47.07 ID:E7tCNLZc
Verilogに、仕様書ってあるのでしょうか? STARC?
IEEE 1800
>>665 ちなみに、その記述は適切には動かないと書いてある。
(計算の途中で桁あふれするから)
IEEE Std 1364-2001 §4.4.2
670 :
774ワット発電中さん:2013/11/02(土) 00:01:21.15 ID:srXxKNsQ
仕様通りに動くってのはおかしい
逆にきくが仕様通りに動かないものってあるのか?バグとか無しに
VHDLとVerilogの使い分けってどうやってる?
シミュレーションかける時Verlogの方が楽に書けるからついつい全部Verilogで書いてるけど
良い使い分けとかあるなら知りたい。
既存ファイルの修正以外でVHDL使うのはマゾだけでしょ
>>670 仕様で決まってない部分があるだろ、たまに。
仕様書が間違ってる時もあるし。
おあえら「Verilogの」仕様どおりってとこちゃんと読めや
675 :
774ワット発電中さん:2013/11/02(土) 12:20:06.16 ID:ecICTLls
IEEE Std 1364って、pdダウンロードでも 1500ドルもするけど、
みんな買ってるの?
闇でいくらでもロハでダウソできるだろ
verilogで7セグLEDにダイナミック点灯で4桁の数字を出力するような回路を作っています。
数字を分割するためモジョロ演算子を使いたかったのですが、verilogでは使えないのでしょうか?
エラーが出てしまいました。
その次に除算でやろうと思いましたが、除算演算子も使うことができませんでした。
verilogでは"/"、"%"は使うことができないのですか?
使えますよ。
/の実装は難しいと思いますが。
>>677 四桁の数字はどんな形で持ってるかによるけど、除算は出来る限り避ける
定数での除算は乗算でやる方法もあるけどな
剰余を求めるにはさらに乗算がいるしやっぱりいまいち
直接の答えではないが…
俺が周波数カウンターを作ったときは、
16進->10進変換を避けるために
始めから10進カウンターを用意した
レシプロカル方式で割り算を避けられないケースは
CPUを導入した
16進のままでは駄目なのか?
4桁なら12ビットだろうから割り算の回路作れば良い
間違えた。
10で割るだけでは駄目だった。
12ビット出なく13ビットかな。
十進表記を卒業して十六進表示にすれば解決。
DEC (PDP-11) 流の8進表示もおつ
256くらいまでの16進を、暗記している人って、いるのだろうか
脳内で16→10進数を毎回やるって事?
各桁の最大値だけパッと10進数ででてきたら十分だと思うけど。
エディタとかでガッとテーブル書いて
合成掛けたらどうなるかな
やっぱでかいかな
HEXをDECだと
10bit1023ぐらいならテーブル合成でも楽勝じゃないかね。
トレードオフ
ハードオフ
ハードオフとオフハウスの違いがイマイチよくわからん
レイオフ
割り算作っても10ビット、7ビット、4ビットの減算器が4個ずつで
片方が定数だから割と小さくなると思う。
何サイクルもかけていいなら、
それこそパタヘネにもある単純な引き戻し法を実装すれば、
加減算器1個とレジスタとMUXだけでできるだろ。
てか、表示用ならこれでよくね?
>>695 そうなんだけど、クロックが分からないからベタにした。
でも表示用にゆっくり加工して問題になるクロックなんてないよね、正直
割り算なんかFPGAツールに付属してるIP使っておけばええやん。
そこを手で書くのがこのスレのロマンなんだよ
ツールまかせならFPGAスレに行けばいい
まああそこでも推論誤爆で盛り上がってるが
700 :
774ワット発電中さん:2013/11/08(金) 04:35:46.89 ID:Ng/gcyIH
引いて、引いて、引きまくり、引けなくなったら、1/10して、
引いて、引いて、引きまくり、引けなくなったら、1/10して、
延々繰り返す、でしょうか?
そこでCPU論理実装ですよ。
>>700 1000で割った余りを100で割って余りを10で割る。
10で割った答えを10で割るを繰り返しても良いけど。
10進4桁ってことは14bitで足りるから
ROMで持ってもたいしたことない。
705 :
774ワット発電中さん:2013/11/08(金) 11:07:37.58 ID:KZOy/mpM
10で割るって、FPGAでできるの?
1 2 4 8 と、2の階乗しかできないと思っていた
a/10 とか書いたらダメよ?
最近はその書き方でもツールが落とし込んでくれね?
>>705 SIN/COSでもlogでもFPGAでできるさ。
>>705 割り算は小学校で習っただろ。
まだ教えてもらってなかったらスマソ
>>700 が書いてるような、機械的に計算を進める方法は学校では教えてないだろ。
足し戻し法とか引きっ放し法とか。
>705
基本的な引き戻し法だと、除数のビット数だけ
レイテンシ(クロック数)必要になるけど普通に実現可能。
他の大抵の算術演算もにたようなアルゴリズムで作れる。
桁数固定なら14ビットフルアダーで
1000をひたすら引く
100をひたすら引く
10をひたすら引く
で最大30クロックでもいいじゃん
>>688 やってみた。
ソフトはQuartusU 12.1、FPGAはEP4CGX15BF14A7。
結果は Total logic elements 938 / 14,400 ( 7 % )
だって。今のFPGAなら結構何とかなるんじゃね?
HDLは↓こんな感じ。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity divtest is
port (
a : in unsigned(13 downto 0);
y : out unsigned(15 downto 0)
);
end divtest;
architecture Behavioral of divtest is
begin
process(a)
begin
case a is
when "00000000000000" => y <= X"0000";
(中略)
when "10011100001111" => y <= X"9999";
when others => y <= X"FFFF";
end case;
end process;
end Behavioral;
>>713 ありがと〜
VHDLなのがしぶい
がotherは不定のほうがいいんでない?
715 :
713:2013/11/08(金) 22:23:59.91 ID:fHJvKQGS
>がotherは不定のほうがいいんでない?
そこは実装する人の趣味でご自由に。
すごいな、入力が面倒臭そうだが
エクセルなりスクリプト駆使して書けばいい
718 :
774ワット発電中さん:2013/11/09(土) 10:48:45.94 ID:JNEFVKLn
for使えばいいじゃん
for文で除算テーブル記述するとか無茶言うなw
しかし思ったよりLE食わないね。
クロック同期にしてROM推論させたら
M9Kが32個必要になるはずだし。
ROMを推論しない方が楽なんだろうな。
BCDの各ビットの真理値表を書いてみたら意外とシンプルっぽい。
人間はgenerate for辺りで楽して書いても、今の合成系は適宜圧縮してくれそうだ。
... 元が10bitではなく32bitだと結構複雑になりそうだけど。
721 :
774ワット発電中さん:2013/11/09(土) 14:44:39.19 ID:/pyNp8+K
ちょっとだけテスト
722 :
714:2013/11/09(土) 15:08:29.14 ID:/pyNp8+K
Verilogで書いたのになんか増えてる・・・なんでだろう?
なんでdefault不定のほうが多いんだ・・・
Flow Status Successful - Sat Nov 09 15:04:09 2013
Quartus II 64-Bit Version 12.1 Build 243 01/31/2013 SP 1 SJ Web Edition
Revision Name HEX2DEC
Top-level Entity Name HEX2DEC
Family Cyclone IV GX
Device EP4CGX15BF14A7
Timing Models Final
Total logic elements 963 / 14,400 ( 7 % )
Total combinational functions 963 / 14,400 ( 7 % )
Dedicated logic registers 0 / 14,400 ( 0 % )
Total registers 0
Total pins 30 / 81 ( 37 % )
以下RTL
module HEX2DEC(
HEX,
DEC1000,
DEC100,
DEC10,
DEC1
);
input [13:0] HEX;
output [3:0] DEC1000;
output [3:0] DEC100;
output [3:0] DEC10;
output [3:0] DEC1;
function [15:0] HEX_to_DEC;
input [13:0] HEX;
begin
casex(HEX)
14'd0: HEX_to_DEC = {4'd0,4'd0,4'd0,4'd0};
14'd1: HEX_to_DEC = {4'd0,4'd0,4'd0,4'd1};
14'd2: HEX_to_DEC = {4'd0,4'd0,4'd0,4'd2};
略
14'd9997: HEX_to_DEC = {4'd9,4'd9,4'd9,4'd7};
14'd9998: HEX_to_DEC = {4'd9,4'd9,4'd9,4'd8};
14'd9999: HEX_to_DEC = {4'd9,4'd9,4'd9,4'd9};
default: HEX_to_DEC = 16'hXXXX;
endcase
end
endfunction
assign {DEC1000,DEC100,DEC10,DEC1} = HEX_to_DEC(HEX);
endmodule
32ビットだと人間が頭使うメリットあるだろうな。
724 :
774ワット発電中さん:2013/11/09(土) 20:16:19.91 ID:Va6ukwXn
HDLとRTLの違いは何ですか?
ハードウェア記述言語とレジスタ転送レベルの違い
726 :
774ワット発電中さん:2013/11/09(土) 23:01:22.32 ID:OdY4DGw1
トランジスタレベル
ゲートレベル
レジスタトランスファーレベル(RTL)
ビヘイビアレベル
回路の書き方には上記のように階層がある
下に行くほど抽象的な書き方
これらの書き方を記述する言語を総称して、ハードウェア記述言語(HDL)という
RTLは階層の1つ
>>722 うろ覚えだが、アルテラは不定値を0として扱う癖があったように思う。
なので不定値にしたから最適化されるとは必ずしも言えない。
まじすか
明日やってみます
マジメな話、ALTERAとXILINXって、どちらが高性能なんでしょうか?
ツールはALTERAだけど、性能はXILINXと聞いたことがあります。
FPGAスレでやれ
>>713相当のVHDLを作ってコンパイルしたら、コンパイル時間が
Quartus v9.1SP2 → 30秒くらい
Quartus v12.1SP1 → 5分くらい
だった。なんでだろ?
メモリの問題?
スペック分からんが
デフォルトFFFFにしたら939になりました
1負けました!
新しけりゃいいってわけじゃないみたいね。
ウチはノートパソコンで寺用のModelSimがVer 6.xとかは動いていたのに
最近の10.xを入れたら動かなかった。
メインのデスクトップパソコンでは動いているからいいんだけど。
でもノートで移動しながら出来た方が便利だね。
環境は違うけど、デスクトップでしか動かなくて机周りに評価ボードやらオシロやら並べた時は気が狂うかと思った。
古いバージョンとかUIが使いやすい。慣れてるから。
ise最近のいれたら
浦島太郎でした
動かせる気がしない・・・
iseってそんなにかわってるか?
739 :
774ワット発電中さん:2013/11/13(水) 10:47:00.70 ID:eYS8Pcv9
それはISEじゃないでしょ?
ビバホームだかなんだかでしょうに
>>698 割り算はハードでやるもんじゃなくニュートン法でソフトでやらせるのが正解だよ
1クロックに1回演算が必要な場合もある。
大小判断によって処理内容の変わる除算が1クロック演算できるてwww
まともにHWでやると、
演算結果に32bit精度必要な場合に、
32クロック要ってこと理解してるのか?
パイプラインって知ってる?
スループット1なら普通じゃね
これだからソフト屋上がりは・・・
細かいところはどうでもいいや。
言いたかったのは「〜が正解」なんてのは無いって事。
「〜の場合は〜が正解(適している)」ならあるかも知れないけど。
最初から正解を決めてると応用範囲が狭くなるよ。
恥をかいて学習する
ってことかな
がんばろうっと
>>743 パイプラインの乱れって知ってるか?
インテルCPU+コンパイラで除算をどう処理してるか一から勉強し直せ
>>746 正解ってのは存在するね。工学の場合それはパッケージング、時代とともに変化するだけだ。
それを理解しないのは単なる無能。
除算において単精度フローティング以上の精度がほしいならテーブル参照するニュートン法の実装を考えることだな。
それが現時点の常識だ。
>>ID:mMmqtwI7
>パイプラインって知ってる?
こいつ、除算の話をしてるときにパイプラインて。
そもそも除算がいったいどういう処理をしてるのかわかってないんだろうな。
現状のCPUやコンパイラがどういう処理を選択してるのかすら知らない
無知な上に学習能力もない情弱ときた。エンジニアとしては最低な部類
高速な演算が要求されない分野で良かった^_^
またキチガイが湧いてるのか
除算器をパイプライン化すればレイテンシは32クロックでもスループットは1演算/1クロックにできるってことじゃね?
実用性はないだろうけどパイプライン化しなくても周波数下げれば1サイクルで終わるし
対数とって引き算して、逆対数で戻せばいいのさ。
オペアンプでやったりしてたっけな、そういえば。
あ、radix4にすれば16サイクルで終わるか
パイプライン化ならradix2よりもリソース減るかな
まじで、プロセッサとかコンパイラとかのソフト屋は勘弁
クロックすらいらんだろ
コンパレータと減算器が32個づつあればいい
「コンパレータで比較→引けるなら減算器で減算」というのを32段並べれば済む
なんかADCぽいっすね
積和を1クロックは山ほどあったけど
除算を1クロックは今までの短いキャリアではなかったな。
クロック100Hzくらいかな
メンドイしipでいいや
引きっぱなし法じゃなくて最初に比較する?
アダーだけでいいな
除算が1クロックで出来たら暗号界は全滅
>>764 そりゃ、たとえば1024ビットの割り算をクロックレスで実行する回路は
サイズの問題で今のFPGAには入らないだろうし
仮に実現できてもロジックエレメントを何千段も通るから速度は相当遅くなるだろうけど
しかしクロックレスで割り算することは原理的には可能であることをまだ否定し続ける?
最初に「32ビットの割り算に32クロック必要」を笑われたのがそんなに悔しかった?
不正アクセスするような輩はパスワード自体よりも、ユーザーネームを大量に手にいれて
度々アンケートが出てるよく使われてるパスワードで辞書攻撃する方が手っ取り早い気がするけど。
相手が誰でもいいならだけど。
>>764 除算が今までの定数倍速くなったからって暗号全滅したりしない
暗号わかってる?
>>764 少なくともAESやDESは割り算関係なくね?
スループットとレイテンシの区別もついてない奴がいるな
レイテンシ1サイクルは不可能だろうけど、スループット1サイクルは可能だろ
1サイクル1演算ってスループットの話だろ?
うちのBBAのレイテンシが年々酷くなるんだけど、なんかのバグ?
>>770 > レイテンシ1サイクルは不可能
なんで?
>>772 言い方が悪かった
不可能じゃないけど遅延が大きすぎて速度が出ないので通常使わない
了解
>>765 ザイリンクスのツールに付属していたDivider Genで試して見た
メモリをSRT法のテーブルに使うHigh Radixオプションを使えば
32bit/32bitでも5サイクルで終わるみたい
これは極端にしても、普通Radix-4を使って16サイクルにしないか?
基本演算でのブレークスルーが起これば世界が根底から変わる。
まだ知ったか続けんの?
実際のロジック回路では作れるけど、
Verilog、VHDLでは基準不可能な回路って有るの?
>778
register-transfer になってない回路は基本全滅だろう。
HCU04使ったアンプとかは書けない。
リングオシレータもだめな気がする。
離散値を使うからディジタル回路とは言っていいけど、
「論理」回路とは言いにくくね?
非同期のRS-FFとかも無理そう
なんで?
ロジックセル間の配線としては表現できるんじゃないかな
シミュレーションとか合成が上手く行くかはわからないけど
HC14使った発振回路とか出来る気がしない。
バッファ使った遅延回路はLUTで置き換えできるけど
HDL記述だけでは無理かも。
再現せんとあかんのか?
遅延の モデリングは出来るだろ
Verilog AMS ってあるけど、正直、そういうのはやめてほしい。
手続き遅延やpath遅延で通常は充分なのだが…
FFが入っていないフィードバックループは記述できるけど
ツール類が対応してないからエラーになるな
合成もしてくれないの?
タイミング解析ができないだけじゃなくて?
今ツールが手元にないんであれだけど、
例えば、3入力多数決回路をモジュールで作って、
出力を入力の一本につなぐとかできない?
いわゆるC素子ってやつだけど。
MullerのC素子のことじゃね
http://en.wikipedia.org/wiki/C-element RS-FFの変形みたいな奴
XilinxのXSTとSynopsysのDCはフィードバックループを検出するとエラー扱いで止まった覚えが
Warningにして無理やりやらせる方法もあるのかもしれないけど、知らない
どちらにしても同期回路前提のツール類で非同期は無理がある気が
794 :
774ワット発電中さん:2013/11/16(土) 00:30:05.24 ID:hH4FKy4M
書くだけなら書けるだろ、合成もできる
動くかどうかは運次第
いや合成できるかどうかはツールによるだろ
エラーではねる合成ツールもあったはず
書ける。
0timeで発振しなければSimも通る。
合成は出来たが当然ワーニングで教えてくれる。
latchとnandで構成できるのだから合成可能だろう
Quartusでリングオシレータ作ろうとした。
合成は通ったけどネットリストビュアーで見るとどう見ても発振しなさそうな回路に・・・
ttp://uploda.cc/img/img5286d707ec16d.png library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity aaa is
port (
aout : out std_logic
);
end aaa;
architecture Behavioral of aaa is
signal a:std_logic;
signal b:std_logic;
signal c:std_logic;
begin
process(a,b,c)
begin
a <= not c;
b <= not a;
c <= not b;
end process;
aout <= a;
end Behavioral;
>>799 そう言うのは、プリミティブセルを直置きするのが普通では?
>>800 HDLだけで何とかするって話じゃなかったっけ?
ウィザードとか使ってプリミティブセル置いたらもうHDLではない気がするけど
(そのへんの感覚は人によって違うのかもしれないけど)
PLLとかwizard使わざるを得ないからなぁ。
メモリやFIFOくらいは何とかするけど。
>>801 HDLにはタイミング制約定義出来ないから遅延時間に意味のある回路は記述出来ないよ。
set_min_delay制約を与えて合成すればそれなりの回路が合成される。この場合タイミングはfrom/toで切断されるからエラーも起きない。
>802
Xilinxはすべてプリミティブだけで作れたような…
ただ、デバイスメーカが供給してるライブラリ使った時点で
主旨が変わってる気がする。
最近プリミティブな合体してないなぁ
>>796 Symplifyでエラーではねられた記憶があるんだが?
このスレは、何が何でもHDLで記述する事が主旨なのか
うごかねぇ回路はタダの・・・だ
>>809 その意味なら、作成可能な論理回路のうち論理合成で生成できない回路は
山ほどあるけど、HDLで記述できない回路は無いと言えるね。
PLLとかはアナログ回路だからね。
812が無能だってのはわかった
そこでDLLですよ
815 :
774ワット発電中さん:2013/11/18(月) 01:25:06.73 ID:/PATEu6A
早く、HDLで食っていけるようになりたいのですが、
みなさんは何年くらいで一人前になりましたか?
>その意味なら、作成可能な論理回路のうち論理合成で生成できない回路は
>山ほどあるけど、HDLで記述できない回路は無いと言えるね。
記述できても合成できなかったら意味ないのに何言ってるんだろう・・・
シミュレーションモデルとしては価値はあると思うけど
XilinxはSpartan-3A向けのPicoBlazeのサンプルで
LUTをループさせるリングオシレータ使ってた
MaximのSHA-1暗号ICの制御で動作タイミングに適当なジッタを意図的に
入れるためだったと思う
>>815 HDLで食ってる奴なんかいるのかな?
それってCADで食っていくって言ってるようなもんだよ。
設計の一部としてHDLがあるだけ。
論理合成できなかったら意味がないってことはないんじゃないの?
HDLってハードウェアを抽象化して記述することが目的のものであって、論理合成とは関係ないという認識なんだけど
ペンタゴンに納める仕事しかしないならそれで良いんだろうけど、
少なくとも俺の仕事はHDLを使って動くFPGAデザインを作る事だからな
>HDLってハードウェアを抽象化して記述することが目的
実際これだけが目的でHDL使ってる人なんているのか?
>>821 回路の抽象化は20年ぐらい前の話ですね。
懐かしい。
>>821 ASICのプリミティブのライブラリ屋さんとか、検証・シミュレーションモデル屋さん
とかが相当するのでは?
824 :
774ワット発電中さん:2013/11/19(火) 02:11:39.45 ID:5zYnchNK
多分絶対数で行ったら、回路記述をしてる人よりそういうモデル作成の人と
検証する人のほうが多いんだろうね
monitorって信号がminitorになってて一日潰したった!
長いのはいかん
monにしとけ
monitorは前に$付いたら別の意味になるし
そう言う予約語は使わないのがいいとかすたーくでゆってた
>>827 そうだな、気をつけるわ
まあ、原因わかってスッキリしたからよかった。
最近したミスは・・・
レジスタ増やしたときに
アドレスがもう1bit必要になってて
レジスタのリードライトくらいのシミュレーションを無事通過し
合成ツールに同じ意味のレジスタなので消すね
って言われて気づいた
>>829 合成の前にLintツールでつぶせよ。
その程度なら verilatorのLintモードでも検出できるんじゃね?
みなさんどうやってその辺りの知識を身につけたんですか?
うちは小さなメーカでFPGAを導入しようって話になって、試作レベルではちょいちょい書くようになったのですが
情報の入手が難しいのが悩みどころです。
>>831 参考に出来るのはSTARC設計スタイルガイドと、バッドノウハウを蓄積 した社内文書位だった。後は、師匠に教えを乞う事になる。
色々と失敗しないと身に付かないと思う。
会社で…
90年代初頭からFPGA使ってるから、ノウハウが蓄積されている
(元々自社でLSIを作ってたのも技術的アドバンテージが結構大きい)
FPGAベンダの技術の人が会社に来てくれるから疑問があったら聞ける
あと、ツールがバージョンアップしたら説明してくれる(最近だとXilinxのVivadoとか使い方のデモしてくれた)
確実なのはAlteraとかXilinxに聞くことだわね
ベンダの人と懇意にしとくと色々と情報が入ってくるしサポートしてくれるよ
やっぱり社内ノウハウか。
糞中小は商社からして冷たいからなぁ(泣)
今もあるのか分からないけどSynopsysのHDL Compilerの本
Synopsysを導入したからもらった。
OPENCOREを使いこなせ!
その苦労わかるわ
中小だから商社に舐められる
838 :
774ワット発電中さん:2013/11/24(日) 03:37:54.07 ID:UpMEGBTG
だいたいFPGA関連の人たちって、上から45目線。嫌い。
被害妄想
>だいたいFPGA関連の人たちって、上から45目線。嫌い。
別にFPGA屋に限ったことじゃない
ソフト屋も高周波屋も相手が自分より下と見ると急に居丈高になる
技術屋は全部そうなんじゃないかな。
でも、その中でもFPGA屋は顕著だと思う。
「FPGAでやれば簡単なのに」とか
「あ〜、マイコンだと、そうするしかないよね」とか。
最高にムッとするのが、
半田付けも、オシロの使い方もできないのに「ハード設計やっています」とか言う。
半田付けできて、オシロ使いこなせる人が、効率的な回路を設計できるかは別問題
843 :
774ワット発電中さん:2013/11/24(日) 16:51:08.86 ID:NG41BaO6
はんだ付けとオシロがハード設計とは思えない
>>841 それただ単に付き合ってる所が低レベルなだけ
アナログとデジタルという棲み分けなら
オシロ云々だけど
ハードと言う以上はスルーレートくらいはケアできないと
だめじゃない?
負荷0?
FPGA扱って10年くらいだけど、そんな態度は一部の人じゃないかと思う。
ソフトだと数行で済むんだろうなって考えさせられることなんてしょっちゅうだし。
ちなみにFPGAだけしか扱えないわけじゃないんだからね!
半田付け普通にするし機構図面書くし検証用のソフトくらいなら作れる。
たまたま仕事の中心がFPGAになっただけ。
ほんと、ソフト屋とハード屋は仲悪いな。
面白いのがハードは任せろって鼻息荒かった連中が簡単な記述のルールが覚えられなくて
ソフト(FPGA)は信用ならんとか言ってる所。
デジタルはソフトの仕事。
ソフトハードを内包出来るのがFPGAなのに
mcSをメールで送ってくる。
しばらくすると、請求書送ってくる。
実機で動作確認するのは、発注したこちら。
おかしくないか?
オシロで波形が出るのん確認するまでやるのがお前の仕事だ。
そんなもん契約次第だろう
条件に入れてないならお前が悪い
853 :
774ワット発電中さん:2013/11/25(月) 02:44:54.19 ID:RR7YhysF
>>852 そういうふうだから、上から目線って言われるんじゃないの?
>「FPGAでやれば簡単なのに」とか
FPGAを使うことが最適解の場合はなんて言えばいいんだろう? 何も言わないほうがいいのかな。
上から目線とかむかっとくるとか、気持ちはわかるけど、それを抑えて本質にこだわって最善を
尽くすのがエンジニアじゃないの?
もちろん他人の神経を不必要に逆なでするのは良くないけどね。
>>853 >オシロで波形が出るのん確認するまでやるのがお前の仕事だ。
これは?
>FPGAを使うことが最適解の場合はなんて言えばいいんだろう?
最適解なんてものが存在するのかどうかも解らない。
現在ギターの信号を入力させ周波数を7セグに表示させるものを作っています。
以下がソースコードです
http://www.dotup.org/uploda/www.dotup.org4689772.txt 現在以下のようなエラーが出ます。
WARNING:Xst:1291 - FF/Latch <DATA_R_10> is unconnected in block <ADconvert>.
WARNING:Xst:1291 - FF/Latch <AD_DATA_11> is unconnected in block <ADconvert>.
ERROR:Xst:415 - Synthesis failed
CPU : 1.39 / 1.51 s |
Elapsed : 2.00 / 2.00 s
WARNING:Xst:1710 - FF/Latch <Hz_cnt_13> (without init value) is constant in block <Hz_count>.
WARNING:Xst:1710 - FF/Latch <Hz_DATA_13> (without init value) is constant in block <Hz_count>.
WARNING:Xst:1710 - FF/Latch <Hz_cnt_0> (without init value) is constant in block <Hz_count>.
WARNING:Xst:1710 - FF/Latch <Hz_DATA_0> (without init value) is constant in block <Hz_count>.
以下Hz_cnt_1~12 Hz_DATA_1~12 AD_DATA_0~9 DATA_R0~9まで
Hz_cntはHz_DATAに代入するあたりで不具合がでるんじゃないかと思えますが、
ADconvertの方はまったくわかりません
どなたかアドバイスお願いします
12'd5000 があやしいね
なんか
>>858の言い回しがじわじわ来る
ところでギターの信号ってなんだろう?
どんなデバイスなのだろうか
860 :
>>857:2013/11/25(月) 23:18:50.84 ID:wI7YBl+K
>>858 それは現在適当な値を入れてます
信号の基準(?)となる値を後で入れるつもりです
>>859 ギターの信号は通常のサイン波と思ってもらってかまわないです
LTC1298というADCにギターの信号を入れて、12bitの出力をFPGAに入力させてます
ここでいう12bitの値はSDATAからAD_DATAに入れてます
Hz_cnt関数では周波数をカウントしてます。
まず入力信号は0と1の短刑波に変換します。
信号が1周期繰り返すごとにHz_cntという変数に1を入れていきます。
n秒置きにHz_cntの値をHz_DATAに入れて7セグに出力するというシステムです。
>>860 いやだから、5000は12ビットなのかと。
矩形波
短刑波
ADCは他でも使うの?
使わないんだったら検波回路でも組んで最初から矩形波で入力したらいいのに。
>>861 あ、13ビットですね・・・・・・
>>863 予定では周波数カウンタができたらカラオケのリバーブのような機能もつけようと考えてます。
なのでADコンバータは必須です。
仮に周波数カウンタのみだったらプログラムでパルスに変えるより検波回路でやったほうがいいのでしょうか?
>>864 13ビットとわかって、何か修正して進展したのか?
parameterのとこだけ12を13にしておしまいなら、
ハード設計に向いてない無能だぞ
いやADCが12である以上
13にしては・・・
でも面白そうなことしてるよね
よい酒の肴
>>864 ギターの音の波形見た?
FFTしたほうがいいんじやない?
>>866 >面白そうなことしてるよね
俺もそう思う。カラオケのリバーブってなんか作る楽しみってのを感じる
オーディオ
無線
パワエレ
3大巨塔っす
高調波も相当混じってるんだがな。
とりあえず周波数カウントが出来れば、チューナとして使える。
でもハードオフのジャンク箱で700円ぐらいのギターエフェクタの沢山有るオマケ機能の
1つに過ぎない。ってかベリンガーで良ければ、新品保証付きエフェクタが1980円だよ。
前に出てきたMullerのC素子だけど、
the following signals form a combinatorial loop
って警告は出たけど、ISEでちゃんと合成できたよ。
非同期回路も合成しようと思えばできる。
報告まで。
そんなの話題にでてたっけ?
非同期式回路をFPGAでなんてのは5年以上前から何度も論文投稿されてるけど
わざわざ非同期にするのはなんで?
ノイズとか異様に弱そう
信号強度で動きが変わるのはどうなんだろ?
ゲートサイズいじれないとちょっと気持ち悪い。
非同期のARM996HSよりも新しい同期設計のM系の方がスペックの消費電力が小さいような
HSって量産化したのかな
みんながどんなもの設計してるか知らないけど結構消費電力とか気にするものなのか。
うちは制御対象が10kVA下回る事ないから、制御部の消費電力なんて電源の選定以外出来にした事ないわ。
携帯向けとかは気に使う。
据え置き向けはあまり気を使わないw
FPGAって何もしなくても結構電力食うからな。
消費電力気にする分野だとあまり使われないと思う。
>>878も
>>879もFPGAに限定して無いんだけどね。
CPLDとか、もしかしたらゲートアレイかもしれない。
>>880 CoolRunnerは、全然電気喰わないよ。
9500シリーズは、ダーダーに電気喰う。DC(0Hz)で300mAとか。信じられない。
何が嬉しいのか、XC9500。
CoolRunner2は、2.5Vなので使いにくい。
CoolRunner2(XPLA3)は、3.3Vができて、電気も食わなくて、最高です。
なんで廃盤に追いやったのか、まったくわからない。
3.3vくらいが丁度いいのだけど
消費電力は絶対に不利になるよねー
中にレギュレータ入れるのもまた面倒
verilogってなんで入力ポートに初期値を設定できないの?
そのせいで、あちこちで使用しているモジュールに入力ポートを追加したいときに面倒なことになる。
SystemVerilogになっても改善されることはなく、とても不思議なのだが。
インスタンスにして固定するなり
シミュレーションならregで初期値入れるなりすればいいんじゃない?
それともプルアップかプルダウンしたいの?
>>884 入力portは必ずドライブするはずだから、なぜ初期値を設定する必要があるかわからない。
入力portをのドライバより、弱い信号強度で定数値をassignすれば?
インスタンスするときに、記述していないポートにデフォルト値を与えたい、って事だよね。
VHDLだと
port (
a : in std_logic;
b : in std_logic := '0'
);
を
port map (
a => a
);
ってインスタンスすると、記述していないbはデフォルトで'0'になる。
後から追加した入力ポートにデフォルト値を与えておいて、すでにインスタンスされているモジュールは
追加したポートを記述しなくても影響が無いようにしたい。
という理解で良いかな?
便利そうだけど、個人的な感覚としては、最初からそう設計したならとにかく、後からパッチ的に
ポート追加してデフォルトの動作を期待する、というのはちょっと気持ち悪いかな〜
「入力ポートが未接続だぞ!」ってエラー出してくれた方が安心なので、VHDLでもこの記述は使ってない。
>>884 だからSystemCに急速移行してるんだよ
889 :
774ワット発電中さん:2013/12/08(日) 20:52:53.38 ID:+wmEzAS9
あ
SystemCに急速移行なんかしてるか?
遙かにSystemVerilogの方が多いと思うが
>>888 EDSフェアにもsystemC関係ほとんどなくなってたし、
高位合成はダメだでしたってことになってきてるみたいよ。
SystemC == オートルータ ?
>884
できない。
面倒なら、
旧モジュールは残して、機能追加した新しいモジュールとして使うとか
似た機能の存在が許せないなら、旧モジュール名で新モジュールをwrappingして使うとか
あ、追加ポートがインスタンス毎の固定値だったなら
ポートじゃなくてパラメータで宣言するといい。
895 :
884:2013/12/09(月) 22:16:42.54 ID:aNrI93OC
>>887 そうそう、そういうことです。
入力未接続の時も不満があって、私の使ったことのあるツールは皆エラー出ません。
これも多分言語の仕様なのでしょうが…
>>893 やっぱりそうなりますよね。
>>885 >>894 たとえば、ほかでも使われているあるモジュールにclk_enを追加して再利用したい、というような場合です。
プルアップは私も試したことあるのですが、うまくいかなかったですね。
当方FPGA使用しているのですがたしか合成の時に無視されたと思います。
パラメータがOKなら、
パラメータによってポートの値を使うか固定値を使うか選べば?
ザイリンクスのIPがそんなやり方だったな
作る場合は良いけど使い回す時に作った人が気の利いた設計してなかったら泣くね
899 :
884:2013/12/11(水) 22:44:12.96 ID:Rqhb5rTv
>>896 確かに実現できるけど、煩雑だなぁ
今日たまたまAlteraのIP見てたら
input tri0 hoge; // default 0
input tri1 moge; // default 1
といった記述で実装してた。
試してみたらQuartusではこの方法でコンパイルできたけど、ISEではエラーになったよ。
>>899 俺様拡張あるからな
Xi、Alでお互いに使いまわす時大変だよな
Cコンパイラーではコンパイラ識別マクロ(__GNUC__、_MSC_VERとか)あって、
それを使って各社のコンパイラの俺様拡張部を記述するんだけど、HDLコンパイラー
でもこれあるのか? あるなら、Xi、Alのコンパイラ識別マクロは何?
XILINX_ISIM とか XILINX_SIMULATOR とか MODEL_TECH っていうのはあるらしい。
XSTの predfined macro で調べても、同じような質問があるだけ。
Verilogにて、1モジュールの記述量はどれくらいが適当?
Javaみたいな感覚で1機能1モジュールで再利用しやすい単位でモジュール分割して
たくさんのモジュール作ったら、怒られたよ。
1モジュール100行とか200行くらいの。
まとめろ、って指示があったので、つなげて3000行くらいのモジュールにしたら、ニッコリされたよ。
もちろん、再利用は絶対不可能な塊りとなったお。
モジュール数十個でまとめろってどこの糞コンパイラだよ
どうせ再利用なんてしないよ
再利用とか効率化とかしないように尽力する上司もいるからな。
技術の内容は誰にでもは分からないけど、時間がかかってるのは誰にでもわかる。
熟慮してもボーッとしてても分からないけど、汗かけば誰からも頑張っているように見える。
TTLを並べたボードを何ヶ月もかかってデバッグしてた仕事が
シミュレーションで30分で終わったとしても
もらえる給料は30分分だ!
>>903 モジュールの分割単位が小さいと、モジュールのポート記述部の分だけ冗長になるから、
合成後の回路のサイズとかスピードが悪くなる。
だから、なるべくモジュールに分割しないで、A0用紙1枚の回路図を書く感覚で記述しろ。
って、年長者は言っていたなあ。
Flatten? なにそれ?
一つのmoduleにまとめないとコンパイラさんが消化できなくて、おかしな回路を吐き出すぞ。
単純ミスを防ぐために心掛けてる事ってある?
ラッチを作らないですむように、組み合わせ回路にalwaysを使わないとか。
今だとalways_comb でいいけど。
>>909 人に書かせて手を入れる。
逆も。
効率的なやり方とかがあれば、それを案として伝えるけど、そう組むように指示はしない。
こういう作業に関しては本当に1+1=2じゃない。
>>911 > こういう作業に関しては本当に1+1=2じゃない。
たしかに。
単純な成果物の量だけ見ると、 1+1 <<2 だから、上司は嫌がるけど
品質は 1+1
>>2 だよね。
913 :
774ワット発電中さん:2013/12/23(月) 20:31:06.08 ID:bgEipdJ0
1+1を2ビット左にシフトする
単純ミスを防ぐためには、
>>912 みたいな記述をしないことだ。
1+1<<2 じゃなくて、きちんと括弧をつけて (1+1)<<2 が望ましい。
数学記号だったら≪を使った方が
括弧は執拗なくらい書いてるな。
掛け算でも括弧。
917 :
774ワット発電中さん:2013/12/28(土) 11:08:39.63 ID:YGe8yxBP
1+2*3= パッと見、9と思ってしまう俺は、アホ?
そうだな
>>917 プログラマの心理として
1+2*3の並びなら
(1+2)*3を計算したい時が多いかな
本当に1+2*3としたい時は
2*3+1と書くだろうな
a*a+b*b みたいな書き方なら多いんじゃないか?
たいていはそんな演算式を1クロック内で収めようとしない。
>>917 確定だろ。間違いなく池沼レベル
>>919 >本当に1+2*3としたい時は
>2*3+1と書くだろうな
はぁ?
合成やP&R後にセトアプエラ出る可能性を恐れたら
電力や面積が増えてでも分割するのは仕方ない。
鬼の首を取ったように騒ぎ立てるからな。
iMPACTでダウンロードケーブルで読み出せないように書き込めるの?
+1*23
って書けばよい(どやっ
927 :
774ワット発電中さん:2013/12/30(月) 12:13:25.75 ID:uK3uNiq4
FPGAで、PICマイコンは作れますか?
トラ技で作る記事あったねなつかしい
FPGAをつかってエフェクターのディレイをつくっています
http://www.youtube.com/watch?v=fVxoNzcRO1I 現在、AD変換したのをDA変換して出力する部分までは作ることができました。
そこで、FPGAに大量のレジスタを作って信号を遅延させようと考えていました。
しかし、論理合成にかなり時間がかかってしまうのと、回路規模が大規模になってしまうので
外部メモリを使用しようと思います。
しかし、外部メモリは初めて扱うので、どれを使うのが適切かわかりません。
どのようなRAMを買えばいいのでしょうか?
なるべく扱いやすいものが望ましいです。
信号は11bitでサンプリング周波数は約100kHzです。
最大1.5秒ほど遅延させたいので、11bit*100k * 1.5 で2Mbit程度のデータを格納できるものがいいです。
評価キットの類を使うならそれについてるSRAM/DRAMを使ってもいいし、ターゲットFPGAによっては内蔵RAMでカバーしきれるかもしれない。
やはり順当なのはDDRかなー。
DDRの場合は何かしらのコントローラが必要になるから、その組み込みがだるいならQDR SRAMか。
934 :
774ワット発電中さん:2014/01/10(金) 02:46:53.30 ID:DA5TPMR7
DDRのコントローラって、IPはあるのでしょうか?
それとも、苦労して自作でしょうか
935 :
774ワット発電中さん:2014/01/10(金) 02:48:23.24 ID:V6sBNAo/
IPがある
マイコンを使ってみて
言っちゃダメか
しかし11bitのadか
12bitのしか知らないなぁ
8bit アクセス限定なのかな?
素人な質問ですまないけど、気になってて…教えてください:
CPUのTLB(仮想記憶のアドレス変換のキャッシュ)のエントリに、今実行してる命令のオペランドのアドレスが入ってるか探そうとすると、
TLBの全エントリと比較しないといけないけど、逐一やってると遅いだろうし、力技で全エントリに比較回路積んでor取るのも回路量が凄そうだし、
どうやってるのでしょう?何か上手い工夫あり?
キャッシュと同じでセットアソシエイティブで最適化すればいいのでは?
でもキャッシュよりはきついか
TLBは普通のキャッシュほどエントリいらないので、
エントリ数が少なければ全部に比較回路入れるケースもあるよ。
Core i7だと4-way set associativeだったかな。
一致見るだけならセレクタと大して変わらないんじゃないの
>>939 メモリ上のアドレス変換テーブルをそのままキャッシュするTLBもあるけれど、
変換した結果をちょっとだけ(16個とか8個だけ)専用レジスタに入れといて
一致しなかったら例外割り込みかけてソフトウェアで変換テーブル引きなおすって方式も多く使われてる
上位アドレスはあまり変化しないので、その程度でも実用になる
この手の方式の場合、比較数が少なければ、全部に一致検出回路入れちゃうのもアリ
なので、そこら辺の実装は考え方次第〜
945 :
939:2014/01/12(日) 15:21:45.89 ID:PhnKYz2t
みなさんレスどうもです。
知りたかったのはTLBの仕組みではなく、
>>943氏の146にある図の「一致」と書いてある所の回路構成はどうなってるの?
全部比較してたら比較器の山になりそうだなあ、と言う点なのですが
まあしかし、驚く様な方法が何かあるってわけでもなさそうですね。
ある寺は昔、CAMを載っけてたね
ふとスレチかとおもったけど
CPU設計の類でココより詳しいスレってあるのかな
昔はアーキテクチャスレとかあったような気がしたけどな
>403
何の目的でそう書きたいのかわからないけど、generate / genverでいいならそれは使えると思うよ。
HDLに未来はありますか?
HDL書くだけのやつに未来はない
うむ、シミュレーションもしろ
958 :
774ワット発電中さん:2014/02/06(木) 17:46:42.01 ID:fgL1xB7J
これからはC言語設計
と言われ続けて20年
960 :
774ワット発電中さん:2014/02/06(木) 21:29:06.63 ID:fgL1xB7J
そろそろフリーのツールが出てもいい頃だよな
システムCならシミュレータはフリーだろ。
波形とか見れるのか知らんが・・・
HDLがどうのとかじゃなく回路設計全般食ってけねぇ
>>962 回路もアートワークもソフトも実装も全部自分で出来る人が必要(キリッ ってのが世の要望かと。
無論一人分の給料で(年収で算出だから)残業代なし、必要とあらば何日でも残業する事を暗に要求される。
というブラックな仕事なら幾らでもあるよ?
こういう香具師は暇な時も給料出てることには文句言わないんだよな
暇な時なんてあるんかね?
963みたいな事を要求されたら。
966 :
774ワット発電中さん:2014/02/13(木) 13:06:11.39 ID:Q7I6KMZD
言われてみると、確かに暇がないわ。
いつの間にかISEじゃなくてVIVADOになってるー?
スレ違いね
ちなみにVivadoは7シリーズ以降しか使えないよ
>>968 Xilinxは、なんでVivadoでSpartanシリーズを捨てたんでしょう。
Spartanの性能で十分に仕事になるし、
Spartanをサポートしていないのでは、Vivadoを使おうという気は起きない。
Spartanシリーズ好きなんだけど。
サポートに聞けよ
開発チームがバラバラだからな
戦略統一性にかける
やりたい事優先になりやすい
VivadoでSpartanをサポートしても利益が出ないからでしょ
そもそもSpartan自体がオワコンだし
オワコンって・・・終わったコン・・・・なんだ???
さすがにSpartan-3は終わってほしい。未だに指定される事があるけど。
Spartanいいじゃん。3ANとか素敵。
flash内蔵が標準になってほしい
3ANだけでやめちゃったって事は、ベンダーには旨みが無いんだろうね
>>971 Spartan6なんて時代に合わないのを出すぐらいだからな
【Verilog】 記述言語で論理設計Project13 【VHDL】
http://uni.2ch.net/test/read.cgi/denki/1394091422/ _,,,
_/::o・ァ
∈ミ;;∧,ノ∧ ,,,,, ,,,,,
( ´・ω・) ,,,,(o・e・),(。・e・),, 新スレです
/ヽ○==(。・e・)(。・e・)(o・e・) 仲良くつかってね。
/ ||_彡,,, ノ彡,,, ノ彡,,, ノ
し' ̄(_)) ̄ ̄ ̄(_)) ̄(_)) ガラガラ
もうジスレの季節か
今回はおそかたね
梅