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

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

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

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

前スレ
【Verilog】記述言語で論理設計 Project4【VHDL】
http://science6.2ch.net/test/read.cgi/denki/1143016023/l50
2 ◆YMO/ALTERA :2007/03/20(火) 01:00:15 ID:JXobcCSA
関連スレ
【FPGA/CPLDスレ】 XILINX/ALTERA/Lattice/Actel 03@電気・電子
http://science3.2ch.net/test/read.cgi/denki/1119984464/l50

暇だからVHDLでも書こうかな@プログラム
http://pc8.2ch.net/test/read.cgi/tech/1043858153/l50

フリーのツール(情報追加よろしく!)
ALTERA Quartus II Web Edition http://www.altera.co.jp/
XILINX ISE WebPack http://www.xilinx.co.jp/

評価基板とか(追加情報よろしく!)
Spartan-3 Starter Kit http://www.xilinx.co.jp/products/spartan3e/s3eboards.htm
CQ出版のシリーズ http://www.cqpub.co.jp/eda/

雑誌
Design Wave Magazine(DWM) http://www.cqpub.co.jp/dwm/
※基板が付録で付いている号はバックナンバー希少になりがち
Interface http://www.cqpub.co.jp/interface/


前々々スレ972情報

FPGA
QuickLogic http://www.quicklogic.co.jp/
30日間無料だと思った。ワンタイムだけどね・・・

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

Verilogシミュレーター(無料)
Icarus http://icarus.com/
 説明 http://ryusai.hp.infoseek.co.jp/icarus.htm
http://www.ice.gunma-ct.ac.jp/~kimsyn/verilog/FreeSim/iverilog/iverilog.html
IVI http://ivi.sourceforge.net/
 説明 http://www.kumikomi.net/article/explanation/2005/10icarus/01.html

VCDフォーマットの波形表示(無料)
GTKWave http://www.cs.manchester.ac.uk/apt/projects/tools/gtkwave/
 説明 http://ryusai.hp.infoseek.co.jp/gtkwave.htm
http://www.is.kyusan-u.ac.jp/cgi-bin/is-admin/wiki.cgi/CAD?page=GTKWave
3774ワット発電中さん:2007/03/20(火) 02:42:09 ID:sbbSC4aB
4774ワット発電中さん:2007/03/20(火) 04:51:09 ID:w24ZizUq
>>1
乙です( ・∀・)っ旦~ オチャモドゾ
5774ワット発電中さん:2007/03/21(水) 00:24:42 ID:VHTc3BzO
HDL懐かしす
昔応援に行った部署で書いてたぉ
ちなみに自分の現在の本職はJavaプログラマ
最近はウェブアプリのセキュリティ研究しています

で、このスレに立ち寄ったのも何かの縁なので、質問させていただきます。
Alteraとxilinxのツール両方触ったことあるけど、xilinxの統合開発環境のエディタって糞じゃないですか?
ソフト屋の俺に言わせれば、なぜ、Alteraとxillinxが肩を並べているのかわからん
Quartusはそれなりに洗練された開発環境だが、iseって統一感なくないですか?

ハード屋のみなさん、どうなんでしょ?
FPGAとか、ハードはxilinxの方がいいのかな?
6774ワット発電中さん:2007/03/21(水) 00:59:16 ID:RcnGmbuq
エディタはvimを使ってます
7774ワット発電中さん:2007/03/21(水) 02:30:42 ID:d7WfTP+g
俺はWZ
IDEのエディタなんて飾りですよ
ツールのできは圧倒的にQuartusのほうがイイね
8774ワット発電中さん:2007/03/21(水) 02:44:45 ID:M6P2EdXk
統合環境なんて使わないから関係ない、って人は少数派なのか。

AlteraはあくまでFPGA中心で、
そこで完結が前提の小サイズのもの作る人とかにも易しい統合環境に力いれてる感じ?

XilinxはASIC流れっていうか、統合環境どうでもいいって感じ?
別CADメインな人とか、emacsでMakefileな人とか、統合環境関係ないから。
9774ワット発電中さん:2007/03/21(水) 07:30:54 ID:+31E2fvO
IDEのエディタなんて飾りですよ
105:2007/03/21(水) 11:08:06 ID:VHTc3BzO
おはようございます。
やっぱり、皆さんもIDEのエディタは使って無かったですか。

ちなみに自分はサクラエディタでverilogHDLとVHDL用の設定ファイル作って作業してました。
VHDLもverilogもCっぽく、最初に変数宣言がいる、古い言語だから、自動補完とか候補選択とか簡単そうですけどね。
なんで、Quartusもiseもやらないんだろ

後は、Ruby使って、設計したステートマシンやFFを自動記述するものを作ってました。
ついでに、ブロッキング代入とか、ラッチとかステートマシンの無限ループもチェックさせてた(ソフトのできはまだまだ完成度低かったけど)。
学生時代はJava,C++,Cだけの人間だったけど、スクリプト言語を学びたくてRuby勉強してたら、思わぬ業務で役に立ち大感謝。
自分以外の人間でハード出身のひとも結構Perlに頼っている人いましたね。人それぞれですけど。

入社半年過ぎたころにHDL書く部署に応援に行き、最悪の納期前は自動記述できない部分だけで、1日5千行書いたりして、
ついでに、その検証作業も大変だったため、逃げてしまいましたが、またHDL書きたいな。

Javaは家でも楽しめるけど、HDLは個人ではあまり楽しめないですよね。
休日HDLのバイトでもしよっかな。
11774ワット発電中さん:2007/03/21(水) 12:21:01 ID:+31E2fvO
君の分類方法によるとJavaも古い言語なんだね
12774ワット発電中さん:2007/03/21(水) 12:30:07 ID:1tBaExnA
つーか 回路設計ってのは検証工程がメインで
HDLのコードを書くなんてのは全体工数の1割もいかないだろ
13774ワット発電中さん:2007/03/21(水) 12:33:30 ID:P4+UCZSO
Veritak ドーヨ?
同僚が薦めてくれた。
145:2007/03/21(水) 12:40:32 ID:VHTc3BzO
>>11
Rubyみたいなスクリプトが最近はやっていて、Javaを時代遅れと言う意見は実際に多い。
俺自身は古い言語ではなく、「堅い」言語だと考えているが。

俺が最近仕事しているウェブアプリの分野だとRubyOnRailsのおかげでRubyはJavaの10倍の生産性を持つとか言われている。
しかし、個人的には型宣言が必要な言語は統合開発環境の支援が非常に受けやすいので、開発環境を考慮すると、RubyもJavaもそんなに変わらない気がするのだけどね

ちなみに、Cは「最初に」変数宣言がいるが、Javaは「最初に」変数宣言がいらない
最初はソースコードの最初の意味だ

for文を例にしてコードで書くと
Cの場合
int i;

for (i = 0; i < 10; i++){}

だが
Javaの場合for文が出てきた時点で
for(int i = 0; i < 10; i++){}

とかける

Javaの方がint iのスコープが限定されてバグの温床が減る
15774ワット発電中さん:2007/03/21(水) 12:47:42 ID:1tBaExnA
板違いだが 本当に「古い」のは
C99 なら for(int i = 0; i < 10; i++){} と書けることを知らない
>>5 の知識ということでよろしいか
165:2007/03/21(水) 13:00:12 ID:VHTc3BzO
>>15
失礼しました

>C99 なら for(int i = 0; i < 10; i++){} と書けることを知らない
恥ずかしいことに、C99自体知りませんでした
てか、Cの仕様がいまだに拡張されていることすらノーチェックでした
17774ワット発電中さん:2007/03/21(水) 13:19:21 ID:+31E2fvO
漏れもRubyOnRails使ってるが結局言語がどうこうじゃなくて
Frameworkや統合環境が整備されているかどうかの問題だろ
だからDは新しくてもまだ一部の人にしか使われていない

eclispe + HDL の話がしたいという意味なら酸性だが

話題を逸らすのが得意な香具師とは会話しにくい
って激しく釣られたのか俺
18774ワット発電中さん:2007/03/21(水) 16:08:46 ID:QwIW8KFh
いいんじゃないか?
“言語で論理”のスレだし。
19774ワット発電中さん:2007/03/21(水) 16:34:03 ID:Mb9pejqt
そういえばISE9.1の新機能にエディタの自動候補表示みたいなのがあるらしいよ
20774ワット発電中さん:2007/03/21(水) 17:20:16 ID:nq1Xa1hR
iseは思いからなぁ
21774ワット発電中さん:2007/03/21(水) 17:52:45 ID:+yhzH3+j
エディタはxyzzyですが
ise重すぎてワロタ → 次の日からquartus使ってた

まあCでもソースの最初というよりブロックの最初だからなあ
for(;;){
 int k;
 k =...
}
でおk?あれこれもC99からだっけ?
22774ワット発電中さん:2007/03/21(水) 18:14:14 ID:+31E2fvO
それより

int hogehoge(void){

for(int i=0; i<10; i++){
}

・・・

for(int i=0; i<10; i++){
}

}

って書いたとき(r

23774ワット発電中さん:2007/03/21(水) 22:29:21 ID:/bM7sZwt
>>22
1998年ISO以降のC++とC99ではその問題は解決している。
つまりiのスコープはforの内側。
24774ワット発電中さん:2007/03/21(水) 22:40:49 ID:1tBaExnA
>>21 Cのブロック先頭での変数宣言は K&Rの時代から普通にOK
25774ワット発電中さん:2007/03/22(木) 07:38:38 ID:KJ7vPmEg
26774ワット発電中さん:2007/03/22(木) 22:05:19 ID:ZVE4rJno
C99は途中で変数宣言がokニナッタ?
27774ワット発電中さん:2007/03/22(木) 22:55:49 ID:oFi6486s
OKのはずだが。

俺面倒だからCでもC++でもg++でコンパイルしてるから
なんか間違ってるかも。
28774ワット発電中さん:2007/03/23(金) 09:39:11 ID:46m1B/tT
g++なんて糞コンパイラ使ってるのかw
プギャー
29774ワット発電中さん:2007/03/23(金) 09:50:01 ID:4KLsxDcM
ここにも来たか・・・
30774ワット発電中さん:2007/04/06(金) 18:17:24 ID:+xmh1rog
http://page9.auctions.yahoo.co.jp/jp/auction/k40357318
キタ─wwヘ√レvv〜(゚∀゚)─wwヘ√レvv〜─ !!
31774ワット発電中さん:2007/04/08(日) 01:54:44 ID:UwW3Aukf
お前が出品したんだろ
いまどき需要がどれだけあるかはわからんが
入札しようと思ってる香具師は
くれぐれも次点詐欺には注意してくれ給へ
32774ワット発電中さん:2007/04/08(日) 08:16:52 ID:f23xUPPq
>>30
これいいですね!
33774ワット発電中さん:2007/04/08(日) 08:58:57 ID:Q0eokhnW
これ俺持ってるけどなんか貴重品なの?
34774ワット発電中さん:2007/04/08(日) 11:49:37 ID:UwW3Aukf
これのVGAのRGBって1bitづつしかないんだっけ?
35774ワット発電中さん:2007/04/08(日) 14:33:04 ID:f23xUPPq
>>30
これはいいものです
36774ワット発電中さん:2007/04/08(日) 15:14:21 ID:zUHwr4LV
このスターターキットのおかげで素人もFPGA使うようになった
といっても過言ではないような。
最近はDDR(2)-SDRAMなのでMicroBlazeなしには敷居が高いし。
37774ワット発電中さん:2007/05/10(木) 11:21:49 ID:ermi7L4u
小笠原やノリは獲得に向かうべきだったな
38774ワット発電中さん:2007/05/10(木) 20:55:52 ID:DItlKhpU
相談させてください。
●言語
verilogです。

●相談したいこと
あるファイルで定数をまとめて規定しておき、
複数のmodule(それぞれ別のvファイル)からその定数を参照したい。
どんな方法があるでしょうか。

●自分の理解度
・定数指定というと、上位moduleからparameterで渡す方法しかやったことないです。
・defineとかincludeとか使うのかな。defineの有効範囲がイマイチわからない。
自分が持ってる入門編にはこのあたりのことが突っ込まれてない。

イメージとして、
hoge.geファイルにparameter XXX = yy;などをいくつも記述しておいて、

include "hoge.ge";とかでその定数を呼び出せたらいいなーと思ってたんですけど……(全然違うかも)
39774ワット発電中さん:2007/05/10(木) 21:02:12 ID:mc+jGDxz
sim開始前にperlで.vファイルの該当箇所をhoge.geの中身と置換するんだ!
4038:2007/05/10(木) 21:24:32 ID:DItlKhpU
>>39
ありがとうございます。…って、ぱーる(゚Д゚ )!?
すみません、あまりアクロバティックなことはせずに
verilogの範囲内でお願いします。。
書き忘れましたが、AlteraのQuartusです。。
41774ワット発電中さん:2007/05/10(木) 21:25:38 ID:SZLuoFvn
>>38
既に自分で答えを出しているようですねw
処理系によっては、includeするファイルの置き場所を指定する必要があるかも。

--[param.v]---------------
`define PARAM0 2'b00
`define PARAM1 2'b01
`define PARAM2 2'b10
`define PARAM3 2'b10

--[hoge1.v]-----------------
include "param.v"


--[hoge2.v]-----------------
include "param.v"

---------------------------
4238:2007/05/10(木) 21:30:58 ID:DItlKhpU
>>41
ありがとうございます!!
やったーーーーーーーーーーー
43774ワット発電中さん:2007/05/16(水) 21:49:00 ID:QK334Gx+
ALTERA Quartus II Web Edition はコンパイル、シミュレーションは出来ない仕様ですか?
44774ワット発電中さん:2007/05/17(木) 00:27:26 ID:ahGLln98
ライセンス
45774ワット発電中さん:2007/05/17(木) 03:00:52 ID:WduDbQUF
コンパイルというか合成+フィッタがなければ意味無いだろこの手のツールって。
しみゅれーしょんはModelsimでやるもの
46774ワット発電中さん:2007/05/22(火) 19:54:43 ID:YjMwr24G
お前らの使用シミュレータは?
47774ワット発電中さん:2007/05/23(水) 01:15:14 ID:PJ8pDelw
veritak
48774ワット発電中さん:2007/05/23(水) 01:27:52 ID:dzjyJbCP
modelsim
49774ワット発電中さん:2007/05/23(水) 07:21:52 ID:4yyIbgti
modelsim
50 ◆YMO/ALTERA :2007/05/23(水) 10:02:33 ID:7nGcM+mx
QuartusII内蔵のwww
51774ワット発電中さん:2007/05/23(水) 20:19:40 ID:ea/Rghjb
VCSで機能動作のアタリを付けて実機で検証w

内蔵simやMXEロハ版ライセンスの存在を知らなかったんだ・・・orz
52774ワット発電中さん:2007/05/23(水) 21:59:55 ID:i1sUsbnt
gcc
53774ワット発電中さん:2007/05/23(水) 22:10:32 ID:3hQ3BW21
脳内sim。
永久無料ライセンス。小規模以外無理。時々間違える事あり。
54774ワット発電中さん:2007/05/24(木) 18:43:53 ID:3bbYE1Fa
OpenSPARC ってなんだ?
ttp://japan.cnet.com/special/ent/story/0,2000056934,20349383,00.htm


” SunのOpenSPARCプログラム部門シニアディレクターであるShrenik Mehta氏は
「弊社はそのために、FPGA上で実行できるOpenSPARCバージョンをリリースした」と語る。
「デザインはシンプルなシングルコア、シングルスレッドにしてあり、研究者はその質を
高める方法を見つけ出すことができる」という。”

誰か試してみた?
55774ワット発電中さん:2007/05/27(日) 02:02:06 ID:CBw8xfV2
これからはSystemCの時代
56774ワット発電中さん:2007/05/27(日) 03:13:26 ID:gzeCI3nG
SystemC興味あるわ
ぜんぜん触ったことないけど
Cから合成できる時代なんだよなーすげえ
57774ワット発電中さん:2007/05/27(日) 08:27:45 ID:pDUp5foC
CのようでCじゃない
58774ワット発電中さん:2007/05/27(日) 09:48:14 ID:AUkRSBvC
SpecCなら使ったことあるが、
動作合成の言語は非常に気持ち悪いですw
59774ワット発電中さん:2007/05/27(日) 09:51:54 ID:FJOImSK1
いや、CどころかいまやPythonで合成できるらしいぞ。
- http://myhdl.jandecaluwe.com/doku.php

サンプル:

 from myhdl import *
 def dff(q, d, clk):
  @always(clk.posedge)
  def logic():
   q.next = d
   return logic

まあ見ての通りVerilogで、シミュレーションやユニットテストがPython、
合成はtoVerilog関数でVerilogを出力したのをベースにしてるんだけど、
こりゃおどろいた。
60774ワット発電中さん:2007/05/27(日) 13:40:16 ID:8OY1TqfJ
この中の殆どは、仕事でVerilog使ってるの?
最近仕事で始めたけど、100万ゲート以上あって
素人には大変です。
6156:2007/05/27(日) 13:44:00 ID:gzeCI3nG
Pythonねえ
いやclkとかでてくるとなんか高次合成って感じしないな
それじゃVerilogと同じじゃんとかおもたw
6256:2007/05/27(日) 13:46:25 ID:gzeCI3nG
高次合成なんて言葉ないかw
動作合成っていうの?
63774ワット発電中さん:2007/05/27(日) 15:10:12 ID:pe6gf5oh
動作合成でのパイプライン化って局所的にはウマーなんだけど
大域的に見るとぶつ切りなんだよなあ

一言語でHW/SWってどんだけ冗長なんだよ
64774ワット発電中さん:2007/05/30(水) 16:04:44 ID:50oLj29Q
1ヶ月ほど前にverilogを習い始めた初心者です。
verilogで除算器を作成しているのですが、どうも思うようにいきません。
記述した主な内容は以下のとおりです。
(outputは乗算器の出力も兼ねていますので16ビットにしてあります)

input[7:0] a, b;
output[15:0] out1
reg[7:0] div1, div2, div3;

div1 = a;
div2 = 0;
div3 = 0;
while(div3<a) begin
 div1 = div1 - b;
 div2 = div2 + 1;
 div3 = div3 + b;
end
out1 = div2;

Xilink ISE 9.1iを使用してコンパイルしているのですが、
"Use set -loop iteration limit XX"というエラーがでて通りません。
これって、どこで設定すればいいのでしょうか?
また、別の除算器の方法があれば教えていただけないでしょうか?
65774ワット発電中さん:2007/05/31(木) 01:11:12 ID:lQGvDE71
>>64
while は合成に使えないだろ?

>Use set -loop iteration limit XX
定数ループだったら展開するって意味じゃ?

ソフト屋が入門するときの罠だが
まずはパイプライン組め。
次はステートマシン組め。
66774ワット発電中さん:2007/05/31(木) 01:26:54 ID:sT5GWkD8
64の回路が本当に合成されたらヤだよな。
商の回数だけ回り続けるんだぜ?
67774ワット発電中さん:2007/05/31(木) 02:13:19 ID:AzoqnXDn
完全にプログラムじゃねーかよッ アホンダラ! >>64
回路を作くんだよッ回路をよッ
68774ワット発電中さん:2007/05/31(木) 05:00:28 ID:3+ZG1Nal
>>66
いや、順序回路になっていないから回り続けるどころか
商の数だけ同じ回路が展開される。
まあ、何個展開するのかは知らんが(笑)
まさにコンパイラが
>Use set -loop iteration limit XX
と怒っている通り。
69774ワット発電中さん:2007/05/31(木) 08:20:30 ID:dqTMR+9n
b=0がありうるから無限に展開
70774ワット発電中さん:2007/05/31(木) 20:06:33 ID:8R58pjUg
なるほど
while使っても個数が決まれば合成可能なのね
71774ワット発電中さん:2007/05/31(木) 20:36:08 ID:4Eeu0CNj
合成は可能なんだが、普通回路作る時ってそういう作り方しないだろ。
あんまりお勧めじゃないな。
同じ回路ならモジュールとして独立させてそいつを呼び出すとかな。
手順を書いてるわけじゃないんだから。
72774ワット発電中さん:2007/05/31(木) 22:16:51 ID:BPcis0OB
whileって要するにプログラム言語的な反復手順記述ではなく、
回路としてマクロ展開するための反復展開命令みたいなもんなのか
73774ワット発電中さん:2007/05/31(木) 23:11:17 ID:4Eeu0CNj
何言ってんの?
すべて回路展開するための命令
シミュレーション記述以外手順の記述なんてもんはHDLにない
74774ワット発電中さん:2007/05/31(木) 23:18:06 ID:BPcis0OB
いやだからそこがソフト屋とハード屋のギャップってこと。

つまりソフト屋にはHDLのwhileとかもろもろは全部LISPのマクロと同じですと説明すれば
きれいに理解できるようになる(のか?)
75774ワット発電中さん:2007/05/31(木) 23:34:40 ID:4Eeu0CNj
ヤレヤレ ┐(´ー`)┌ マイッタネ 何をわけのわからんことを
76774ワット発電中さん:2007/06/01(金) 04:35:07 ID:/3j7NNJk
今時のソフト屋はLISPを知らない

>>64はwhileじゃなくifでうまく書けば
通ることは通るかも
77774ワット発電中さん:2007/06/01(金) 09:40:17 ID:OHS3Pzc/
この手の問題はSystemCで書いても変わらない
やっぱSystemCに未来はないか…
78774ワット発電中さん:2007/06/01(金) 13:14:17 ID:Zn7uA93N
何かいい参考書や入門書ない?
あったら教えて。
79774ワット発電中さん:2007/06/01(金) 13:27:32 ID:8S21enCc
quartusやISEではVHDLで回路を記述しても最終的に要らない論理は省略されて合成されませんよね?
あれを強制的に生成できるオプションのようなものはありませんか?
80774ワット発電中さん:2007/06/01(金) 14:26:20 ID:7DUbEIHy
>79
残したい信号を出力として定義する。
81774ワット発電中さん:2007/06/01(金) 15:07:24 ID:oIHRSjJr
>>80
ありがとうございます。
やはりそれしかないんですか。
信号線たくさんあるとめんどくさいんですよね。
82774ワット発電中さん:2007/06/02(土) 00:09:49 ID:4Qu+s3Ad
verilogなら
reg my_reg /* synthesis preserve = 1 */;

vhdlなら
signal my_reg: std_logic;
attribute preserve: boolean;
attribute preserve of my_signal: signal is true;

論理合成するツールによって文法が違ったりする。
8379:2007/06/02(土) 14:37:50 ID:SS4K8Z06
>>82
あ!さがしてたのはそんな感じの方法です。
xilinxでもpreserveの代わりにSYN_KEEPでいけるようです。
84774ワット発電中さん:2007/06/03(日) 00:05:20 ID:G18FCJ8q
>>79
82が言うように合成のツールによって違ったりするからツールをよく勉強しる。
確実なのは出力にしちゃうことだよね、いらなくなったらコメントアウトしちゃえばいいし。

誰かverilogでリセット記述したときのスマートな記述知らないか?
VHDLなら othersで何ビットでも一気にできちゃうんだが、、、
85774ワット発電中さん:2007/06/03(日) 07:37:58 ID:2/+Lf2p5
>>84
0にリセットしたい場合なら、試したことないけど、 ビット数指定しないというのは?

a <= 'h0;

32bit扱いになると思うけど、多い分は捨てられるんじゃないだろうか?
86774ワット発電中さん:2007/06/03(日) 23:52:09 ID:e9AWKYZS
>>85
あ、指定しないと埋まるんだ、、、ありがとう
どう合成されるか、だけ気になるけど今度試してみるっす。。
87774ワット発電中さん:2007/06/04(月) 02:02:51 ID:eHEvEFbX
あぁ、これでまたVHDL人口が1人減ったか。
すばらしく良く出来た言語なんだけどなぁ・・・・・
現状では仕方ないか。
88774ワット発電中さん:2007/06/04(月) 02:18:26 ID:+lHTPnw4
VHDLめんどいから
できれば使いたくない
89774ワット発電中さん:2007/06/04(月) 02:23:55 ID:Bq3yJhwr
emacs + vhdl-mode.el は快適だわさ。

M-x vhdl-port-copy から始まる各種のテンプレート自動生成がとっても便利。
インデント調整や構文補完機能なんてのも重宝しております。

ココ見てる皆さんの、verilog/VHDL限らずお薦め記述環境ってどんなもんがあります?
90774ワット発電中さん:2007/06/04(月) 04:26:06 ID:+lHTPnw4
ああ、そっか。
emacs使える人は、
vhdlモードだとかverilogモードだとか
ああいうので自動生成するから
vhdlでもいいのか。

lispがわかれば
なんたら.elとかいうのも自分で作れるんだろうしねえ
91774ワット発電中さん:2007/06/04(月) 04:26:51 ID:+lHTPnw4
とりあえずemacsとlisp勉強せいということか...鬱になりそうorz
92774ワット発電中さん:2007/06/04(月) 04:50:59 ID:Bq3yJhwr
そんなに身構えなくても大丈夫だと思うけどw
Win使いならMeadow辺りを入れて試してみるとか。(vhdl-mode.elも含まれている)

VHDLがめんどくさく感じるのは、記述がいちいち厳密で冗長っぽい所ですからね。
そう言うところ(宣言文や結線記述)はツールに任せてしまえば楽できます。
93774ワット発電中さん:2007/06/06(水) 12:59:59 ID:8op1M9NM
>>89
emacs(meadow)+verilog-mode.elは(もっと)^100快適だわさ

VHDLなんて、商売上のmust司令以外使う意味なし
94774ワット発電中さん:2007/06/06(水) 13:04:51 ID:8op1M9NM
>VHDLがめんどくさく感じるのは、記述がいちいち厳密で冗長っぽい所ですからね。

記述が厳格というのはメリットもあるけど、
予約語がなんの短縮の工夫もなく原語そのまま使ってるのがいかにもマヌケ
条件コンパイルもお手軽にできねーし
verilogは標準化されないかも?ってところからVHDLが期待されただけで、
IEEEで規格化された今となっては所詮Adaとおなじ運命たどるだけ
会社で強制されてるんでなければSystemVerilog使えるようになっとく方がはるかに吉
95774ワット発電中さん:2007/06/06(水) 22:28:23 ID:pb9fx9Ru
素人な俺はVHDLがいいけどなぁ。細かいエラーもガンガン出してくれるんで初学者には
ありがたい。
96774ワット発電中さん:2007/06/07(木) 06:55:18 ID:KALdxM4X
zsh+screen+vimが最強だとおもいます!
97774ワット発電中さん:2007/06/07(木) 18:45:29 ID:IvQC1H/8
いつになったらビヘイビアレベルでの論理設計が一般化するんだ?
VHDLとかVerilogとかSystemVerilogとか目糞鼻糞だろ
98774ワット発電中さん:2007/06/07(木) 22:33:10 ID:NseeeIsm
>>95
同意。
99774ワット発電中さん:2007/06/07(木) 23:13:15 ID:OvZSRhcv
>>97
そんなもんが出来るようになったら俺らおまんま食い上げだわさ。
100774ワット発電中さん:2007/06/07(木) 23:18:09 ID:BFrK/cp1
きっとUMLからボタンポンでASICができる時代がくるよ(棒読み   キットクルヨ!
101774ワット発電中さん:2007/06/07(木) 23:38:56 ID:F9lLT+zD
状態遷移図からHDLコード吐くツールは既にある
102774ワット発電中さん:2007/06/08(金) 00:04:52 ID:8OcR759A
>>101
STATE MACHINE CADみたいなのか?
それなら高校生でもつくれるぜ
103774ワット発電中さん:2007/06/08(金) 01:14:26 ID:qvsc4mEq
じゃ作ってみろや
ちなみにMentor のHDL Designerがその手のツールだ。
お前が作って商売成立すれば大いにめでたい。
はよ作れ池沼
104774ワット発電中さん:2007/06/08(金) 13:01:40 ID:Qv/2RQTn
>>95
同意。
105774ワット発電中さん:2007/06/08(金) 22:04:21 ID:JVt9UB0m
Verilogにもattributeがあればいいのに、と思う。
106774ワット発電中さん:2007/06/12(火) 14:30:35 ID:E2GLb7jL
あるよ〜
107774ワット発電中さん:2007/06/12(火) 20:02:20 ID:DtOgiLrH
VHDLの方がコーディングの量が多いって具体的に何?
componet宣言とか?
言うほど変わらない気がするんだけど。
それは特に気にならないが、気になるのはツール類かな。
verilogお断りよりもvhdlお断りの方が断然多い。今後、その傾向は強まるのかね。
少し残念だ。
108774ワット発電中さん:2007/06/12(火) 20:09:22 ID:l3Wa94Uz
うちはverilogお断りのほうが多い。
昔のスケマ→VHDLにしる、ってのが多い。

verilogは「言語?どっちでもいいよ?verilog?いんじゃね?」って感じ。
あぁ、でも、5人くらいでコーディングするとき多数決でverilogになったときもあった。

VHDLはまだ初心者だけど、
Componentと、ポートに直接代入できないのがめんどいなって思う。
でもVHDLに慣れてくるとその良さが解ってくるし、
逆にverilogに戻ったときポートリスト書くのめんどいと思った。あほな文章ですまん
109774ワット発電中さん:2007/06/12(火) 21:35:34 ID:+pJVfs0F
ソフト系から入るんでVerilogの方がCっぽいなーで本+独学でVerilog始めたんだが
やっぱVHDLも出来た方が良いのかい?
110774ワット発電中さん:2007/06/12(火) 21:54:48 ID:ESL735Fk
VHDLできなくても全く問題なし。
111774ワット発電中さん:2007/06/12(火) 22:28:37 ID:nd4Yy2xx
どっちかできれば、もう片方もできる(ようになるのは容易)。
言語よりもテストベンチしっかり書く癖とか、言語そのものではなく
道具を使う上でのポリシを確立しとけばなんとでもなる。
112774ワット発電中さん:2007/06/13(水) 00:38:42 ID:meSEM2FD
>VHDLの方がコーディングの量が多いって具体的に何?
辞書の単語をそのまま使ってるのも一つだが、
何より条件コンパイルをサポートしてない。実験しようとかってときにコーディング量というより、
他のツールに頼ったりってのがメンドい
113774ワット発電中さん:2007/06/13(水) 01:48:09 ID:ukpoVUYT
ifdefっぽい条件コンパイルは if-generate文で済ませちゃいますね。
コンパイル制御用の定数は、TOPのパッケージあたりに入れとく感じ。
まあ、Verilogに比べたら確かにめんどくさい罠w

constant c_TEST_SW : boolean := true; -- Type.Aを使う
-- constant c_TEST_SW : boolean := false; -- Type.Bを使う


L_IF_T: if (c_TEST_SW = true) generate
-- Type.A
end generate L_IF_T;

L_IF_F: if (c_TEST_SW = false) generate
-- Type.B
end generate L_IF_F;
114774ワット発電中さん:2007/06/13(水) 18:05:55 ID:meSEM2FD
Cのプリプロセッサ通せばいいとは言うものの面倒なことは間違いない
115774ワット発電中さん:2007/06/13(水) 19:34:25 ID:G4ikDAuJ
cpp -P をスクリプトに入れとけば特に面倒でもないような。
116774ワット発電中さん:2007/06/15(金) 10:36:40 ID:QDmcm87D
いまどき cppじゃなくて m4だろ
cppとか gcc -Eとか言い出すなんて、オマイラ20年前から時間が止まってるのか?
117774ワット発電中さん:2007/06/15(金) 11:59:05 ID:U2Q0TOZy
m4で「いまどき」ってのもなんかすごいが・・・
118774ワット発電中さん:2007/06/15(金) 22:47:26 ID:ovaWuvLv
居るよなこういう奴。 >>116
119774ワット発電中さん:2007/06/16(土) 19:59:33 ID:2YPSBKeE
20年前でもm4だよな
120774ワット発電中さん:2007/06/23(土) 18:04:06 ID:Loaicqtj
ところで、みなさんアサーション使って開発してる?
121774ワット発電中さん:2007/06/23(土) 20:33:40 ID:B6C6rDpZ
なにそれ
122774ワット発電中さん:2007/06/23(土) 20:42:15 ID:zMTMjnPx
http://www.cadence.co.jp/bana/abv/index.html

ざっくり言えば、テストでは動作の確認ではなく仕様の検証をしよう話。
ここまでは従来もテストでの手法・方針として言われてたが、仕様記述言語を
導入してやろうというのが新しいのかな。
123774ワット発電中さん:2007/06/23(土) 22:34:17 ID:aIi82tfa
検証用モデルと仕様との一致をどうやって保証すればいいんでしょ?
実装で用いてる言語とテストに用いる言語が別の論理体系なのでさっぱりワヤですわ....orz
124774ワット発電中さん:2007/06/25(月) 08:59:39 ID:cmueV80j
まさかと思って検索したら、こんなスレがあったのかw


       ____
     /      \
   /  _ノ  ヽ、_  \
  /  o゚⌒   ⌒゚o  \  <今日も高位合成ツールが吐き出したコードを
  |     (__人__)    |   延々検証する作業が始まるお
  \     ` ⌒´     /
   ノ          \
 /´              ヽ

125774ワット発電中さん:2007/06/25(月) 13:13:28 ID:Nvec1j7c
>>123
ビヘイビアモデルを想像しているようだけど、アサーションはそこまで高機能な
ものを記述するものではなく、バスプロトコルのチェッカー辺りが費用対効果が
一番高い領域だと思う。
また、イマイチ直感に反する書き方をしなければいけない時もあるけど、
アサーション記述言語はRTLよりも思った通りの仕様を素直に書けるから、
正しいアサーションを書く事はそんなに難しくない。
本当に便利だから、使える環境にある人はすぐに使った方が良いよ。
126774ワット発電中さん:2007/06/26(火) 09:15:40 ID:M7boI6b+
vhdlの予約語busとかregisterってどういう使い方するんだ?
127774ワット発電中さん:2007/06/27(水) 10:55:20 ID:/3u2U6fd
今頃vhdlなんてほったらかしとけ
128774ワット発電中さん:2007/06/27(水) 18:57:44 ID:M8Ks9ggX
最近はVerilogが主流になってるのかねぇ。
129774ワット発電中さん:2007/06/27(水) 18:58:12 ID:JGfVvfaz
Verilogから、VHDLへ異色中
others 便利すぎわろた
130774ワット発電中さん:2007/06/27(水) 22:15:10 ID:xbx6feWB
今VHDL勉強中だけど、
徐々にVHDLの需要が少なくなってるそうですね。

やはりVHDLより、これから活躍する(?)System Verilogを
勉強した方がいいんでしょうか・・・・

それにしても慣れてないせいかVHDL難しい
131774ワット発電中さん:2007/06/28(木) 00:15:04 ID:TW3NANfp
みなさん、業務で設計する時、まずFF+ゲート的なレベルの回路図描く?
もう少し上位のブロック図は描くと思うんだけど。
132774ワット発電中さん:2007/06/28(木) 00:28:40 ID:cy9jyX1t
>>131
上司もしくは客がそれしか理解できない系?
133774ワット発電中さん:2007/06/28(木) 00:37:40 ID:TW3NANfp
>>132
YES
ゲートレベル回路書いてそれをRTLにコンバートしてるんだよねぇ。
RTLじゃなくてUMLで設計したら?って思う。
134774ワット発電中さん:2007/06/28(木) 00:59:03 ID:ykiNzLAg
emacsのverilog-mode、tabとspaceを混ぜてインデントしてくれるので
他のエディタを使ってる人からぶーぶー言われるんだよね。
インデントがめちゃくちゃになってるって。

emacs派の皆さんはどうしてますか?
135774ワット発電中さん:2007/06/28(木) 01:07:20 ID:t409W0Pf
つ C-xC-sのタイミングでTAB-SPC置換する
つ (setq indent-tabs-mode nil) <- 効くかは知らんけど
136774ワット発電中さん:2007/06/28(木) 01:17:12 ID:KJa4x80s
仕様の検証なんてできるわけない。
仕様は必ず物が出来てからいじくられる。
死んでしまえー。
137774ワット発電中さん:2007/06/28(木) 23:22:50 ID:POnc1w40
>>136
だな、

日本的設計手法だと
最初は結構あいまいな仕様でスパイラル的に開発が進行してくもんな。

日本人が文章の構造を考える前に書き初めて
MS-Wordは使いにくいって感じるのと同じだな。
138774ワット発電中さん:2007/06/29(金) 00:32:11 ID:Q1vaFPO9
>>137
そこで「スパイラル」って言葉使うと一見アジャイル風でカコイイなw
139774ワット発電中さん:2007/06/29(金) 00:37:52 ID:E/RU+zBE
わが社はプログレッシブJPEGのような開発体制です(最後の瞬間になるまではっきりした姿にはなりません!)。
140774ワット発電中さん:2007/06/29(金) 00:51:49 ID:jZeBzSC6
“あいまい開発”をサポートするツール希望(w
141774ワット発電中さん:2007/06/29(金) 00:56:54 ID:0jPORKR4
わが社は納品1週間後くらいに仕様が決まるよ。
だからどんな仕事でも1〜2ヶ月は遅延してる orz
つーか、まず完成品持って打ち合わせしないと要求仕様を考えてくれない。
142141:2007/06/29(金) 00:58:56 ID:0jPORKR4
↑書き込み1行抜けた。 FPGA の話ね。
143774ワット発電中さん:2007/06/29(金) 01:20:51 ID:E/RU+zBE
その期間分なり仕様変更プロセス分の成果に対応する金の払いがあるなら
そういう客ということでいいんじゃね?

そういう所に限って期限オーバーだからもっと早くとかテストは省略とか
デバッグはバグがあるというあってはならないコト前提だから計画に
入れなくていいとかいうわけだが。
144141:2007/06/29(金) 02:16:21 ID:0jPORKR4
>>143
そのバグまみれの機器を、そのまま販売(1桁台の数量だが)されて
客の客から怒られた事があるよ。 客の担当は逃亡して、俺とユーザーでバトル。
145774ワット発電中さん:2007/06/29(金) 06:15:54 ID:lqUJOxKb
仕様は変わることを予想して設計する
146774ワット発電中さん:2007/06/29(金) 06:17:30 ID:bN1UpSbh
>>141
それは考えようによってはラクだ。
最終形からどのくらいデグレードした仕様を提示すればいいかのキャスティングボード握れるわけだし。
(御客の考えてる仕様をちょっと満足させないスペックにしておいて、そこをメインの改良点に承諾させれば楽勝)

ただ取次ぎで中間マージン取ってるだけのアホが、中抜けの仕様を持ってくることもあるんだよね。
そういう場合には仕様確認をどっさり持ち帰らせて取次が理解できないような質問もして
最終納品先のエンジニアと直通ラインを掘っておかないと最終段階でアボーンしたりするから気をつけろ。
147774ワット発電中さん:2007/06/29(金) 06:24:07 ID:bN1UpSbh
>>145
そんなことは余程程度の低い仕事をしているか
余程設計や製作の実力が余っていないと無理だよ。

じゃなければ過剰品質でコストを余分に掛けてるってことだ。

まあ、お役所みたいにコスト意識ないとこに出す場合は
そういう仕様変更やアフターサービス分も盛り込んで
何倍も吹っかけて見積もりをだすけどな。
そうしないと赤字になるし不愉快でやってられなからな。
148774ワット発電中さん:2007/06/29(金) 22:36:21 ID:bXJPDRFs
>> 131 について意見をいただけませんでしょうか?
一般的な意見をきかせてください。
149774ワット発電中さん:2007/06/30(土) 00:54:39 ID:QodABuTa
>>148
書かない。
RTLレベルだとテンプレート記述がすでに在ってそれをコピペする。

テンプレートない時には
テストパターンと期待値を作るのにステート図を書いたりはする。
150774ワット発電中さん:2007/06/30(土) 01:34:44 ID:nYgww0jm
つか、ゲートレベルのライブラリが無い限り『回路図』を想定して設計できないべ?

超大昔にゲートアレイでやった記憶があるにはあるが......
151774ワット発電中さん:2007/06/30(土) 01:57:50 ID:QodABuTa
いまどき学生実験でもなければ書かないと思う。
CADで大体欲しいレポートが出るし。

宇宙環境とかでFFの保持が絶対保証では無いケースで
ステート遷移パスを冗長にする必要があるとかなら書くかもしれん。
152148:2007/06/30(土) 01:59:39 ID:Yu42PFZi
ほんとに信じられんよ。
RTLと一対一の回路図(またはその逆)を一所懸命書いてなんか満足してるみたい。
で、仕様書はというと形はあるが、殆んど内容なしの3ページ程度。

RTLにコメントもろくに挿入されてないから、読んでも何やる回路かすらわからない。
信号名も6文字程度の暗号文だし。
153774ワット発電中さん:2007/06/30(土) 02:28:11 ID:QodABuTa
>>152
紙ベースのゲート回路図からRTLへの書直しは普通にある作業だと思う。
74シリーズTTLの実体配線図から起こすというのまである。

もちろん仕様書なんて1枚もなし。
何やる回路か最後まで判らなくても同じ動作さえすればオッケー。
154774ワット発電中さん:2007/06/30(土) 02:44:08 ID:Yu42PFZi
> 紙ベースのゲート回路図からRTLへの書直し
って何のメリットがあると思う?ひとつもない気がするんだけど。

>同じ動作さえすればオッケー
何と同じ動作ですか??
155774ワット発電中さん:2007/06/30(土) 07:43:14 ID:et9M7y/T
>>153
テストしてんのか?
156774ワット発電中さん:2007/06/30(土) 07:50:52 ID:QodABuTa
>>155
自分で考えてみな
157774ワット発電中さん:2007/06/30(土) 08:11:11 ID:QodABuTa
>>154
あなたは学生かサラリーマン?
現場って結構俗っぽいのよ〜ん。
道路を何度も掘り起こすのと同じで本当の意味でのメリットはないね
もちろん元のボードと同じ動作にする。(ように努力するw)
158774ワット発電中さん:2007/06/30(土) 10:23:49 ID:bxWMiLo8
で、へたに人力で論理圧縮したり言語で書き直すと、突然後から
“このピンの信号を外出ししたいんだけどなー”とか言われるわけだ(w
159774ワット発電中さん:2007/06/30(土) 10:35:34 ID:jtaGXT/I
>>158
あー、分かる分かるw
昔は洗練された回路にしよう、とか一生懸命考えて美しいコンパクトなのができると
自己満足してた。
でも今は無駄に余裕持って作るようになって、急な仕様変更をすぐ受けられる
ようになったときに自己満足w

社会人になって学んだリスク回避だなぁ。悲しいけど。
160774ワット発電中さん:2007/06/30(土) 11:48:16 ID:FHjQ4ZCl
>158
まだいいじゃん。ピン出すだけなら。
俺なんか「この配線部分に100pFのコンデンサ追加できるようにしてくれ。」って言われたぞ。
説明しても分かってもらえないから無理やり作ったけどな。その後どうなったかは知らん。
161774ワット発電中さん:2007/06/30(土) 15:33:56 ID:QodABuTa
>>160
そういうのはEMC対策でよくあることだよね。

次のボードのラッチが前のボードのゲート遅延を期待してて
書き換えるとホールドタイムが足りなくなるのも常に想定して作ってるよ。
162774ワット発電中さん:2007/06/30(土) 15:40:46 ID:QodABuTa
>>158
でも、実は非同期カウンタとか書き直せないんだよね。
真面目にやろうとするとCADでワーニングの山が出るんだが
出たままだと御客に渡せないのでごまかすのに一苦労とか。
163160:2007/07/01(日) 00:37:50 ID:Y7+I2ueX
EMC対策じゃないっすよ。
デバイスの中の配線、論理合成したら圧縮されてどう展開されるか分からないような部分。
下手すると消えてしまうかもしれない配線。
途中までの回路を記述して、一旦ピンに出してPCBでCR挟んで、また中に戻ってくるような回路。
デジタル回路じゃ無いよな〜これって。
164774ワット発電中さん:2007/07/01(日) 01:14:53 ID:+5A9cod0
論理合成したら、行き着く所は、無の境地 ですね?
165774ワット発電中さん:2007/07/01(日) 01:17:48 ID:apwyPKFK
>>163
いや、そういうもんだと諦めろwwww。

まあディレイ回路か微分パルス回路なのだろうが、
それをデジタル回路に置き換えるのが仕事のうちなのだよ。
お金の元になるのだよ。
166774ワット発電中さん:2007/07/01(日) 03:04:06 ID:KZ0Behu9
>> ID:apwyPKFK

糞が、デジタルなんてほざく奴が人様の教育なんざぁ百年早いんだよこのゴミ
会社も考えたもんよ。糞にこそ新人教育させる
簡単に首切れねぇからなぁ
167774ワット発電中さん:2007/07/01(日) 03:21:25 ID:apwyPKFK
>>166
気○? 怖っ。
168774ワット発電中さん:2007/07/01(日) 03:56:24 ID:rPrPMVJQ
ID:KZ0Behu9は他のスレでも煽り入れまくりだな。
あぼーん設定したらスレの見通しの良いことw
169774ワット発電中さん:2007/07/04(水) 11:55:22 ID:Fn6aEZHL
Meadow + verilog-modeで C-c C-t mしてmodule名入れるとエラーになる。
内部的にskeletonの展開で無限再帰呼び出しになってる。

最近のverilog-modeって何か動作変わった?
それともMeadow側(skeleton.el側)の問題かなぁ?
170774ワット発電中さん:2007/07/06(金) 23:08:01 ID:xProPxP6
お家PCでVerilogの記述をシミュレーションしたいときに
(記述もうちょっとだけど終バス来ちゃうから15分くらい早く切り上げたいなとか)
cygwin上でcVerでも使おうかなと思うのですがどのバージョンを使うのが良いでしょう?
(評判ではかなり?みたいですがVeritak買うほどじゃないということで)
他にこんなの使っているよというアドバイスあればよろしくお願いします。

条件としてはシミュレーション単位は1000行行かない。
シミュレーションはディレイは無考慮で良い、PLLみたいな非同期動作も不要
専用マシンじゃないのでメモリは512M位でシミュレーションできる
時間は超劇遅じゃなければXLの10倍掛かってもOK
最終確認はXLでできるので特殊条件でのバグは許容。
171774ワット発電中さん:2007/07/07(土) 00:37:15 ID:MWJ/JE9/
>>170
QuartusII Web editionでダメ?
172774ワット発電中さん:2007/07/07(土) 00:54:39 ID:qyrEwPsa
>>170
verilator
173774ワット発電中さん:2007/07/07(土) 02:47:22 ID:e6Xo7kHY
>>170
Icarus Verilog
174774ワット発電中さん:2007/07/07(土) 09:40:24 ID:2Vj1Nmzr
>>170
verilator
ただしライブラリは使うのかどうなのか
175774ワット発電中さん:2007/07/07(土) 17:16:58 ID:VynPq6DQ
仕事持って帰るのはダメ
176774ワット発電中さん:2007/07/07(土) 17:25:13 ID:2wuGDdOH
>>170
ModelSim Web Editionもありますけど。

他にはパターン制限有るけどVeritak CQ版(フリー)
http://verilogician.net/books/verilog2/appendix/Ctop.html

VeritakもBasic版なら安いです。こちらはパターン制限ありません。
http://www.vector.co.jp/soft/winnt/edu/se412183.html
177774ワット発電中さん:2007/07/07(土) 23:42:27 ID:fNP5goeH
veriwellもある。
http://sf.net/projects/veriwell
178170:2007/07/07(土) 23:53:08 ID:2tvEaDL7
みなさんありがとうございます。

>>171
QuartusII でVerilog使ったことないので試して見ます。でもメモリ使いすぎっぽい印象です。

>>172,>>174
verilator だとVerilogのデバッグという枠を外れてしまうので×です。

>>173
Icarus は検討したのですがcVerよりダメっぽい感じでした。

>>176
一応前提条件としてVeritakは外したのですが、やっぱりVeritak買うのが無難かな。

ご意見ありがとうございました。
179774ワット発電中さん:2007/07/08(日) 00:22:23 ID:797mB05C
>>178
印象を並べる前に使ってみろって感じです。
180774ワット発電中さん:2007/07/08(日) 01:17:33 ID:UEk8TvjV
単に2chに期待しすぎて失望しただけだろ。すげえ回答でも期待してたんじゃないのかw。
一定レベル期待するならFPGA BBSとかで質問しないと無理だわさ。
181774ワット発電中さん:2007/07/08(日) 10:51:56 ID:E0M841+T
ずっとネタがないから、食いつきはいいね・
182774ワット発電中さん:2007/07/08(日) 21:52:42 ID:Z+R3jxvz
>>170
どのバージョンでも、フリーなんだから試してみれば。
よく分からんなら、最新を使えばいい。

俺の場合はたいてい、cver で事足りてるけど。
183ひっし:2007/07/19(木) 17:45:12 ID:K06d3+Z0
だれかSynopsys VCSのシュミレーターの事、詳しい人、いませんか?
来月からSynopsys VCSのシュミレーターを使うのですが、触った事のなく、
見た事もなく、非常に不安です。ネットでマニュアル見てもさっぱり・・・。
184774ワット発電中さん:2007/07/19(木) 20:23:00 ID:YwdDj1sH
>183
不安とか言っても、何が知りたいのか書かないと答える方も答えられないと思うが。
185774ワット発電中さん:2007/07/19(木) 21:51:45 ID:G16I76ml
http://science6.2ch.net/test/read.cgi/denki/1184835980

何も考えず糞スレ立てるような奴には絶対教えない


   死   ね   ご   み   野   郎 >>183
186774ワット発電中さん:2007/07/19(木) 23:24:49 ID:/owkDuOJ
quartusとmodelsimを無料で落とすにはどうすればいいですか?
187774ワット発電中さん:2007/07/19(木) 23:37:51 ID:v89JIli0
無料で落とせばいい。
わざわざここで質問するほど難しいことじゃないと思うが・・
ん?ネタを提供してくれたのか?
188774ワット発電中さん:2007/07/20(金) 07:59:27 ID:98TUo/OX
多分英語を見ると蕁麻疹が出るタイプの人じゃないか?
189774ワット発電中さん:2007/07/20(金) 11:26:42 ID:qJywNR6I
>>2
190774ワット発電中さん:2007/07/23(月) 22:44:55 ID:n5Ganh0i
proxyサーバを通してダウンローダを使うとだめだったような気がする。
191774ワット発電中さん:2007/07/24(火) 00:14:28 ID:hVp7Im0p
なんでFPGAすれでVHDLのことやってんだ?w
こっちでやれよ
192774ワット発電中さん:2007/07/24(火) 19:55:03 ID:vwNBeA/f
こっちに書かないであっちで誘導しないとわからないだろw
193774ワット発電中さん:2007/07/24(火) 22:48:31 ID:LgZtkP6J
最近、VHDLの勉強を始めたのですが、よく分からないところがあります。

1)
component HOGE
...
end component;
としたとき、HOGE はどこから、どうやって探してくるのでしょうか?
同じディレクトリ (プロジェクト?) に entiry HOGE が書かれているファイルが
複数あった場合は、どうなるのでしょう?

2)
architecture ... of HOGE is
の ... の部分は何を書くべきなのでしょう?
てもとにある本では「複数のアーキテクチャ部を切り替える場合の識別子」
と書かれているのですが、そのような場合の例が無いため、結局どのように
使われるのかが良く分かりません。

非常に初歩的な質問だと思いますが、よろしくお願いします。
194774ワット発電中さん:2007/07/25(水) 00:25:52 ID:JG9s/BRW
>>193
1) ツール(コンパイラ等)が探してくるから、ツールのマニュアルを読め。
2) 自分でわかりやすいように適当に決めて良い。RTL記述ならRTLとか、
Behavior記述ならBehavioralとかsimとか。

シミュレータとか合成ツールとかは、topレベルのentity(architecture)を
指定するようになっているから、その指定の仕方を調べると分かると思う。
195193:2007/07/25(水) 20:38:15 ID:G4074WxP
>>194
レス、どもです。なんとなく分かってきましたが、まだすっきりしない部分があるので、
さらに質問させて下さい。

1) については規格 (IEEE 1076?) ではどのように規定されているのでしょう?

2) について、
> シミュレータとか合成ツールとかは、topレベルのentity(architecture)を
> 指定するようになっているから、その指定の仕方を調べると分かると思う。

ということは、基本的にはプロジェクト単位でのきりかえということでしょうか?
例えば、
entity HOGE1 は architecture V1 で (V2 もある)、
entity HOGE2 は architecture V2 で (V1 もある)、
はできないということでしょうか? (この辺もツール依存?)
具体的にそういうことをやりたい訳ではないのですが、気になってしまって。
この辺も規格での規定について分かれば嬉しいです。

よろしくお願いします。
196774ワット発電中さん:2007/07/25(水) 20:58:21 ID:g8IAgjC7
http:
197774ワット発電中さん:2007/07/25(水) 21:04:00 ID:W33RAaQS
>>195
規格を自分で読むとかするつもりはないの?
198774ワット発電中さん:2007/07/25(水) 21:04:23 ID:lXLi2gpO
(2)の...の部分は、最近のツールは読まないって本に書いてあったけど。
乱暴な例だけど「aaa」でも「bbb」でもプロジェクト内で混じっていてもエラーにはならない。
俺はRTLとsimしか使わない。規格については知らない
199774ワット発電中さん:2007/07/25(水) 21:23:10 ID:G4074WxP
>>197
> >>195
> 規格を自分で読むとかするつもりはないの?

(簡単に) 入手できるんだったら、もちろんそのつもりはあるけど、IEEE の規格って
簡単に手に入る?
どこかに PDF でも置いてあれば読むんだけど… (探してみたけど、みあたらなかった)

おそらく有料になると思うんだけど、正直なところ、そこまでして知りたいというほどでもないし
(金額にもよるけど)、 そもそも、どの規格を読めば良いかが分からない。
(本当に IEEE 1076 で良いのか? 1076.[12346] とかもあるようだけどこれは必要ないのか?
(Extension っぽいから↑の目的では不要っぽいけど))

どこかに (できれば無料で) 置いてあるんだったら、どこにあるか是非教えて下さい。
200193:2007/07/25(水) 21:29:06 ID:G4074WxP
>>198
> 最近のツールは読まないって本に書いてあったけど。

そういうもんなんですね。
ぐぐってみたら、それっぽいことが書かれたページもありました。

あと、今私が使ってるツール (VHDL Simili 3.1) は、ドキュメントを斜め読みした
限りでは、(たぶんプロジェクト単位で) 指定できるみたいです。

結局のところ、あんまり気にしないで適当に書いておけばOK、なのかな?
ちょっとすっきりしないけど…
201774ワット発電中さん:2007/07/25(水) 23:49:38 ID:tJRLaroA
あそこは本当はcomponentでインタフェースベース設計をしたら、
後は合成ツールが全体最適化をかける時に組み合わせとしてベストな
architectureを選択するぜ!これで同種IPの自由な交換・流通とか
できちゃったりして、ここまで考えたオレってsugee!

・・・ということだったんだろうな。

時代の先を行き過ぎて結局使われなかった(それとも使われたけど
あんまり効果出せなくて廃れた?)。
202774ワット発電中さん:2007/07/26(木) 08:44:58 ID:NFhugjMq
>>201
インタフェース設計して、最初はarchはBLで動作を検証。
その後RTLに入れ換えて論理検証・合成ってことを考えてたのだと思う。
203774ワット発電中さん:2007/07/30(月) 15:27:12 ID:E6UQ3v81
verilog2001で負の定数を書きたい場合、
例えば、"-5"だったら、

8'sd_-5

と書くのか

-8'sd_5

どっちがいいのでしょうか?
こういうことをネット上で詳しく書いてあるところってないですかね?
204774ワット発電中さん:2007/07/31(火) 14:46:13 ID:9sK1UH/J
>>203
2001を意識したこと無いからそんなの出来るのしらなかった。
RTL見やすくなりそうだね。
調べて報告してくれぇい
205774ワット発電中さん:2007/07/31(火) 19:12:02 ID:MrC/gFTX
>>203
d の直後に _ を持ってきたり、d の後に負の値が書けるんだ
最近あまり Verilog 書いてないからすっかり忘れているな


206203:2007/08/03(金) 10:39:59 ID:GkstIZvM
>>204
私は、QuartusIIで、

8'sd_-005

などとやったら、負の数としてバス信号できました。
(コンパイルオプションでverilog2001にする必要あり)
ただし、今回は結果オーライでできましたが、
2の補数表現かどうかとか、明示した記述でないので
かなり曖昧さを含んでると思います。
207774ワット発電中さん:2007/08/03(金) 14:23:36 ID:IuWqR5gy
上の記述は、
BNF(2005)からすると
decimal_number ::=unsigned_number
| [ size ] decimal_base unsigned_number
| [ size ] decimal_base x_digit { _ }
| [ size ] decimal_base z_digit { _ }
なんで通るのか分からない。VCSでも通るの?
208774ワット発電中さん:2007/08/09(木) 02:09:27 ID:CGRJMj+P
VHDL
variableとsignalの違いはなに?
209774ワット発電中さん:2007/08/09(木) 19:42:46 ID:jnytOMym
解らんうちは、signalだけで記述すべし
210774ワット発電中さん:2007/08/09(木) 21:51:13 ID:NjlIKXnT
spartan3について質問させてくだされ

IO_L01P_5/CS_B って端子を汎用ポートとして使いたいんだ。
だがコンフィギュレーションしてみると常に出力が"H"にしかならない。

記述はまぁ一般的にVHDLで
この端子 <= '0';
で書いているので間違いは無いと思う。
データシートに
「コンフィギュレーション後は、汎用ピン (DIN/D0-D7、DOUT/BUSY、
INIT_B、CS_B、および RDWR_B) をユーザー I/O として使用でき
ます。 これを可能にするには、BitGen オプション〜」

と書いてあるんだけどこれを設定していないから使えないのかな?

先輩が作ったファイルだとちゃんと動作するのでハードウェア的には問題ないと思う。
(今先輩とは連絡が取れないのです)

誰か助けて下さいまし
211774ワット発電中さん:2007/08/09(木) 23:18:22 ID:6TKYx7Gr
VerilogでCPU作りたいんだけど、難しいかな?
212774ワット発電中さん:2007/08/09(木) 23:20:19 ID:L+bxX5DC
簡単ではない、でも自分が欲しいだけの機能を持ったマイコン程度なら作れると思う
コンパイラどうするとかは知らん
213774ワット発電中さん:2007/08/09(木) 23:24:18 ID:6TKYx7Gr
なるほど
コンパイラうんぬんまで行けたら十分すごいですね
214774ワット発電中さん:2007/08/09(木) 23:34:11 ID:sZTfO8JO
性能云々言わなきゃ簡単でしょ。
パタヘネ読んどけばパイプラインまではわりと作れる。
キャッシュとか例外とか泥臭いところは、それこそ手間だろうが。
215774ワット発電中さん:2007/08/09(木) 23:40:57 ID:1WlDA8pz
>>214
うんうん
標準ロジックICシリーズの14500とかレベルなら定番教科書なくてもいけそう
ttp://www.cpu-world.com/CPUs/MC14500B/index.html

・・・と思ったら、やっぱり書いてる奇特な人がいるw
ttp://www.brouhaha.com/~eric/retrocomputing/motorola/mc14500b/
ttp://www.brouhaha.com/~eric/retrocomputing/motorola/mc14500b/mc14500b.vhdl
216774ワット発電中さん:2007/08/10(金) 02:25:54 ID:LXbP4UhV
うぉ、こんなん昔はあったのか。
最初1bit?4bitじゃないのとか思ったら、オペコードから加算とかが男らしくカットされている・・・
217215:2007/08/10(金) 03:53:04 ID:2QdIldrk
昔(厨房のころ)、標準ロジック規格書(小遣いで買うには高かった!)に載っていた
これを見て、ぜひ買って使ってみたい(使い方ワカランかったけど)と思っていたが、
いつ雑誌の広告を見ても取り扱いされているのを見掛けたことがなかった。
ある意味思い出、ある意味まぼろしの石だ・・・
218774ワット発電中さん:2007/08/11(土) 07:09:57 ID:SNsXa0fq
PROC_Timer : process ( RST_N, CLK)
begin
if ( RST_N = '0' ) then
counter_reg <= (others => '0');
time_over_reg <= '0';
elsif ( CLK'event and CLK='1' ) then
if(timest_reg = '1') then
time_over_reg <= '0';
counter_reg <= x"0001";
else
if ( counter_reg = C_TIMCT ) then
counter_reg <= (others => '0');
time_over_reg <= '1';
elsif( counter_reg = x"0000" ) then
time_over_reg <='0';
else
counter_reg <= counter_reg + 1;
time_over_reg <= '0';
end if;
end if;
end if;
end process PROC_Timer;
初心者です。
一応動いているみたいですが、ifの使い方とか間違っていませんか?
なんか問題ないですか?

219774ワット発電中さん:2007/08/11(土) 07:22:19 ID:SNsXa0fq
PROC_Timer : process ( RST_N, CLK)
begin
    if ( RST_N = '0' ) then
        counter_reg <= (others => '0');
        time_over_reg <= '0';
    elsif ( CLK'event and CLK='1' ) then
        if(timest_reg = '1') then
            time_over_reg <= '0';
            counter_reg <= x"0001";
        else
            if ( counter_reg = C_TIMCT ) then
                counter_reg <= (others => '0');
                time_over_reg <= '1';
            elsif( counter_reg = x"0000" ) then 
                time_over_reg <='0';
            else
                counter_reg <= counter_reg + 1;
                time_over_reg <= '0';
            end if;
        end if;
    end if;
end process PROC_Timer;
220774ワット発電中さん:2007/08/11(土) 11:10:16 ID:ez68Csbk
>>219
オレが書くならcounter_regとtime_over_regは別processにする。
processを分けることによって、片方のsignalのみ代入されるネストが無くなるので。

time_overしたあとtimest_regが入らないと、C_TIMCT後にもう一度time_over_regが'1'になるけど桶?
一度でよければC_TIMCTになったらcounter_regはholdしてtimest_regが入ったらそっから動くようにする。
time_overはパルスにならないので微分する。

何度も出ていいならcounter_regはC_TIMCTで0に戻してフリーランさせて、time_overはC_TIMCTと一致を見るだけ。

 if(counter_reg = C_TIMCT)then
  time_over_reg <= '1';
 else
  time_over_reg <= '0';
 endif;

余談:
合成エンジンによっては、合成時に変数名の最後に"_reg"を追加するものがあるので、signal名に_regはつけない方がいい。
netlistではcounter_reg_reg[0]とかって名前になっちゃうので(苦笑)
221774ワット発電中さん:2007/08/11(土) 13:07:15 ID:SNsXa0fq
>processを分けることによって、片方のsignalのみ代入されるネストが無くなるので。

意味が分りませんが、どういうことでしょうか?

>time_overしたあとtimest_regが入らないと、C_TIMCT後にもう一度time_over_regが'1'になるけど桶?
オーバーするとカウンター=0で、カウンター0の時はカウントしないようにしています。
ですから次のスタートが来るまで0のままです。

>一度でよければC_TIMCTになったらcounter_regはholdしてtimest_regが入ったらそっから動くようにする。
>time_overはパルスにならないので微分する。

 holdってどうやるんでしょう。
 微分って別プロセスでやるのでしょうか?
222774ワット発電中さん:2007/08/11(土) 13:07:53 ID:SNsXa0fq
PROC_Timer : process ( RST_N, CLK)
begin
    if ( RST_N = '0' ) then
        time_over_reg <= '0';
    elsif ( CLK'event and CLK='1' ) then
        if(timest_reg = '1') then
            time_over_reg <= '0';
        else
            if ( counter_reg = C_TIMCT ) then
                time_over_reg <= '1';
            else
                time_over_reg <= '0';
            end if;
        end if;
    end if;
end process PROC_Timer;

PROC_count : process ( RST_N, CLK)
begin
    if ( RST_N = '0' ) then
        counter_reg <= (others => '0');
    elsif ( CLK'event and CLK='1' ) then
        if(timest_reg = '1') then
            counter_reg <= x"0001";
        else
            if ( counter_reg = C_TIMCT ) then
                counter_reg <= (others => '0');
            elsif( counter_reg = x"0000" ) then 
            else
                counter_reg <= counter_reg + 1;
            end if;
        end if;
    end if;
end process PROC_Timer;
223774ワット発電中さん:2007/08/11(土) 13:20:04 ID:qmjE97Ja

ifの中の条件式って、「==」ではないのでしょうか?
あとthenではなくてbeginだし、
clockのエッジ方向は、posedge(↑)、negedge(↓)ではないでしょうか。
224VHDL初心者:2007/08/11(土) 13:45:18 ID:SNsXa0fq
↑こら、茶々いれるな。
225774ワット発電中さん:2007/08/11(土) 19:45:57 ID:I33F0HOu
223って茶々なの? 痛い子かと思った。
226774ワット発電中さん:2007/08/11(土) 20:17:40 ID:jkJiToYJ
質問させてください。

Verilogのテストベンチで、テストするモジュールの内部信号を
テストベンチ内で処理したいのですが
モジュールにoutputのポートを追加せずに直接引っ張り出す方法とかありますか?
227774ワット発電中さん:2007/08/11(土) 20:27:48 ID:cqyks25M
モジュール名.内部信号 で見れると思うが
228774ワット発電中さん:2007/08/12(日) 11:13:03 ID:+LH36H3X
Pascal?
229774ワット発電中さん:2007/08/12(日) 14:12:29 ID:0wsJ4QCk
Modula-2じゃね?
230774ワット発電中さん:2007/08/12(日) 19:56:35 ID:1sfMolr9
Eiffel
231220:2007/08/12(日) 21:01:54 ID:jl0mHeWT
>>221

> 意味が分りませんが、どういうことでしょうか?

プロセスを分けたいのは、カウンタとフラグは動作条件が違うから。

elsif( counter_reg = x"0000" ) then 
 time_over_reg <='0';

例えばこのネストでcounter_regが定義されてない=この条件はカウンタには必要ない=動作条件が違う。
動作も合成も問題なくできるけど、不確定要素を極限まで減らしたいので。


> オーバーするとカウンター=0で、カウンター0の時はカウントしないようにしています。
> ですから次のスタートが来るまで0のままです。

仕様がわかってなかったわ。
これだったら、イネーブル作ってカウンタ回す。
カウンタの条件がすっきりするし、検証するときに分かりやすいから。
counter_regが1clock遅れるからC_TIMCTを1減らす必要がある。
#constant宣言の方で減らすか条件の方で減らすかは好みで。
##time_overをFFで叩かない(when分で書く)ことでC_TIMCTをいじらないで同じ動作にすることも可能。

イネーブル:
timest_regが'1'のとき'1'
counter_regがC_TIMCTと一致したら'0'
elseは書かないでokだが、書きたければ'0'にする

カウンタ:
イネーブルが'1'のときは+1
それ以外は'0'

フラグ:
カウンタがC_TIMCTと一致したら'1'
それ以外は'0'


>holdってどうやるんでしょう。

カウンタ値がC_TIMCT以下のときのみカウントするという条件にする。
elseは記述しない。
今回書いたイネーブルを使うやり方なら必要ないです。


>微分って別プロセスでやるのでしょうか?

別プロセスです。
詳しくは立ち上がりエッジ検出回路を調べてください。
232220:2007/08/12(日) 21:10:41 ID:jl0mHeWT
>>231
>イネーブル:
>elseは書かないでokだが、書きたければ'0'にする

'0'にしちゃダメです。書きたければenable <= enable;ですね。


>when分

when文ね。
233220:2007/08/13(月) 12:03:08 ID:l/ZX2Zbs
余分なイネーブルなんてないバージョン。作りたいのはこれですね。
RTL書くのはためにならないと思って書いてたけど面倒になったのでRTL。w
しばらくVHDL書いてないので文法的な間違いあったらごめんなさい。

考え方の肝は各々の信号が動作する条件がわかってるかということ。
無駄な論理(条件)は極力削ること。


P_CTR : process(CLK, RST_N)
begin
 if(!RST_N)then
  counter_reg <= (others => '0');
 elsif(CLK'event and rising_edge(CLK))then
  if(timest_reg = '1')then
counter_reg <= 1;
  elsif(counter_reg > 0 and counter_reg < C_TIMCT)then -- ここの論理が膨らまないか心配
   counter_reg <= counter_reg + 1;
  else
   counter_reg <= (others => '0');
  end if;
 end if;
end process;

P_FLG : process(CLK, RST_N)
begin
 if(!RST_N)then
  time_over_reg <= '0';
 elsif(CLK'event and rising_edge(CLK))then
  if(counter_reg = C_TIMCT)then
   time_over_reg <= '1';
  else
   time_over_reg <= '0';
  end if;
 end if;
end process;
234774ワット発電中さん:2007/08/13(月) 12:15:44 ID:wc9KAAOB
お返事ありがとう。色々考えていて丁度貼り付けようと思ったところでした。
自分なりに全体を書き直してみたんですが、どうでしょう?(timest_reg は微分されているという条件で)

PROC_Timer : process ( RST_N, CLK) 
begin 
    if ( RST_N = '0' ) then 
        time_over_reg <= '0'; 
        conter_en  <= '0';
        conter_clr <= '0';
    elsif ( CLK'event and CLK='1' ) then 
        if(timest_reg = '1') then 
            conter_en   <= '1';
            conter_clr  <= '1';
            time_over_reg <= '0'; 
        end if; 
        if ( counter_reg = C_TIMCT ) then 
            conter_en  <= '0';
            time_over_reg <= '1'; 
        end if; 
    end if; 
end process;


PROC_count : process ( RST_N, CLK) 
begin 
    if ( RST_N = '0' ) then 
        counter_reg <= (others => '0'); 
    elsif ( CLK'event and CLK='1' ) then 
        if(counter_clr = '1') then 
           counter_reg <= (others => '0');
        elsif(counter_en = '1') then 
           counter_reg <= counter_reg + 1; 
        end if;
    end if; 
end process PROC_count; 
ここで conter_en、conter_clrはこの場合レジスターになると思う。
しかし単なるnode(ネット)にすることも可能と思うが其の時はどうすればいいのだろう。
timest_regがレジスターなのでconter_en、conter_clrはNode(ネット)の方がいいと思うが
CLKeventの中に書くとレジスターになるようなきがする。

235774ワット発電中さん:2007/08/17(金) 20:41:18 ID:GE+6c8hy
すまんけど、日本語でやりたいこと書いてくれない?
236774ワット発電中さん:2007/08/17(金) 20:53:35 ID:jOSDE62A
日本語VHDLか日本語Verilog作ってくれたらね
237774ワット発電中さん:2007/08/18(土) 13:56:08 ID:4evQ/EEC
ModelSIM使ってる HVDLファイルが20個ある。でそのうちの一つのファイル
が全くブレークポイントがかからない。何でだろう。
 ブレークポイントをつけるには行番号が赤くなる必要がある。そのファイルは
行番号が全く、赤くならない。コンパイルはもちろんOK。とくべつ問題は
なさそうだが、なぜだろ。
238774ワット発電中さん:2007/08/18(土) 14:31:13 ID:TxUlrNPP
エスパーさん、ご指名です。
239774ワット発電中さん:2007/08/18(土) 15:53:36 ID:GOJCHQgX
エスパーさんは、明日まで盆休みで帰省らしいよ。
240774ワット発電中さん:2007/08/18(土) 20:53:17 ID:o1yvLJlY
> HVDLファイル
VHDLファイルのことだと仮定して
> 行番号が赤くなる必要がある。
メモ帳では色はつけられません。
241774ワット発電中さん:2007/08/18(土) 22:53:29 ID:eQwuQIBD
ここはひねくれ。
242774ワット発電中さん:2007/08/18(土) 22:55:12 ID:eQwuQIBD
 VHDLみたいな糞つかってたら、ひねくれてもやむえ。
243774ワット発電中さん:2007/08/19(日) 09:11:00 ID:CE545k/E
VHDL って、小官吏が「こうやれ・こう書け」という規則を押し付けたような気がする。
244774ワット発電中さん:2007/08/19(日) 13:35:33 ID:1hN+2LzD
とVHDLもかけない人達が申しております。
245774ワット発電中さん:2007/08/19(日) 19:56:05 ID:hsbHeRoD
-- おまえら
-- そろそろ
-- 仲直り汁
246774ワット発電中さん:2007/08/19(日) 23:43:49 ID:5h3pwL1q
>>243
元々はDARPAの仕様記述要請から始まってるわけだから、当然と言えば当然。
247774ワット発電中さん:2007/08/19(日) 23:49:00 ID:1hN+2LzD
そのVHDLがコードの移植性でVerilogより勝っているからな。
厳格な仕様記述のおかげであまりメーカーにとらわれない論理設計ができるのは歓迎すべき。
248774ワット発電中さん:2007/08/19(日) 23:53:26 ID:xh9dl4yl
>>247
そうか? オレはVHDLの先行きが不安なんですけど。
Verilogはアナログとの統合模索してるのにVHDLって止まってる気がする。
249774ワット発電中さん:2007/08/19(日) 23:57:17 ID:1hN+2LzD
VHDLに将来性があるとはいってないぞ。VHDLにはこういうよい特徴もあったといっているだけ。
ソフト系の言語もやってる側からするとと、VHDLみたいな無茶苦茶な言語はさっさと
モダンな言語に入れ替わってほしいw
250774ワット発電中さん:2007/08/20(月) 00:16:30 ID:7/ittTZ+
将来、需要も機能も伸びる事はなさそうだが、
ながく残りそうではある。
251774ワット発電中さん:2007/08/20(月) 08:15:56 ID:OWJGKhxa
>モダンな言語に入れ替わってほしいw

 そのためには批判をおそれないことだ。
100万人が糞糞糞と叫んだら、世界は変る。さも無くば、糞に群がる
糞バエの一匹に成り下がるかだ。
252774ワット発電中さん:2007/08/20(月) 08:54:54 ID:o5GE9zOb
せめて日本語BAISCくらいにはなってほしいもんだ。
253774ワット発電中さん:2007/08/20(月) 21:29:26 ID:QMjhCRxO
ググる先生に聞くと、勝手に「日本語BASIC」の結果が出てきてしまいます orz
254エスパー:2007/08/20(月) 21:32:24 ID:OWJGKhxa
>行番号が全く、赤くならない。コンパイルはもちろんOK。とくべつ問題は
>なさそうだが、なぜだろ。

Modelsimの場合エラーチェックが甘い。他のコンパイラでチェックすると
ワーニングが出ていると思う。ワーニングを解決すると治る。場合によっては
その行を移動するだけで解決する場合がある。

255774ワット発電中さん:2007/08/27(月) 01:11:50 ID:LzK2Tt1j
今、VHDLを勉強中しています。
双方向のレジスタを作っているのですが、
記述に問題があるような気がします。

ソースと簡略図を掲載しますので、ご意見戴けませんか?
実際は他に制御信号があるのですが、掲載のものは省いています。

レジスタはDFFで階層にしています。
http://uproda11.2ch-library.com/src/1124939.txt
http://uproda11.2ch-library.com/src/1124940.txt

簡略図。 
http://uproda11.2ch-library.com/src/1124941.jpg


256a ◆cA2ugObkLQ :2007/08/27(月) 01:50:03 ID:igp7ClgW
>>255
通りすがりです。これが原因じゃないかもしれないけど。
HOST <= sg_host_a when A_RD = '1' else (others => 'Z');
HOST <= sg_host_b when B_RD = '1' else (others => 'Z');
は、
HOST <= sg_host_a when A_RD = '1' else
             sg_host_b when B_RD = '1' else
       (others => 'Z');
257774ワット発電中さん:2007/08/27(月) 12:35:59 ID:JRQE3wS4
>>256
なるほど、ありがとうございます。
指摘頂いた箇所についてですが、記述の
変更により意味が変わるのでしょうか?



258774ワット発電中さん:2007/08/27(月) 19:43:42 ID:6wjUyZq5
a.
簡略図にHOSTはひとつしかない。

b.
HOST <= sg_host_a when A_RD = '1' else (others => 'Z');
HOST <= sg_host_b when B_RD = '1' else (others => 'Z');
↑これだとHOSTがふたつあることになる。


意味は違う。


っていう説明じゃ納得できない?
ちょこっと電気の勉強するとすぐ解ると思うです。
259774ワット発電中さん:2007/08/27(月) 20:31:49 ID:JRQE3wS4
>>258
ありがとうございます。
簡潔な回答でわかりやすく、納得できました。

合成の時ワーニングが出ていたような気がしますが、
エラーにならなかったので気にしていませんでした。



別件ですが、今、ISE8.2i Webpack使用しています。
合成したあとに、RTL Schematicで配線の確認って
してます?



260774ワット発電中さん:2007/08/27(月) 23:03:43 ID:6wjUyZq5
>>259 配線の確認

自分は、
小規模回路のとき:なんとなく見ておく。
大規模回路のとき:見ても手のつけようがない。

もひとつ、
仕様にもよるけど、自分だったらこう書くな。

HOST <= sg_host_a when (A_RD = '1' and B_RD = '0') else
      sg_host_b when (A_RD = '0' and B_RD = '1') else (others => 'Z');

A_RDとB_RDが同時にアクティブ(=1)になってしまったとき、
sg_host_a とsg_host_b がぶつかるから。
261774ワット発電中さん:2007/08/28(火) 11:32:37 ID:8ar4g4Nt
>>260
レスどうもです。

そうなんですよね、指摘された私の記述だと

HOST <= sg_host_a when A_RD = '1' else (others => 'Z');
HOST <= sg_host_b when B_RD = '1' else (others => 'Z');

矛盾していた事に気がつきました。


HOST <= sg_host_a when (A_RD = '1' and B_RD = '0') else
      sg_host_b when (A_RD = '0' and B_RD = '1') else (others => 'Z');

だと、間違いないですね。
度々有難うございます。


配線確認ですが、記述の仕方によって見難い場合があるので、
見易くなるように記述を修正する癖がついてしまいました。
どうも気にし過ぎなようで、皆さんはどうなのかと聞いてみました。
色々どうもです。




262774ワット発電中さん:2007/08/28(火) 20:23:36 ID:MhJ/pO7v
> A_RDとB_RDが同時にアクティブ(=1)になってしまったとき、
> sg_host_a とsg_host_b がぶつかるから。
ぶつからないよ。
263774ワット発電中さん:2007/08/30(木) 00:53:17 ID:vjGUKJsi


fight!

264774ワット発電中さん:2007/09/01(土) 12:58:05 ID:rhNM7rmU
hoshu
265774ワット発電中さん:2007/09/01(土) 21:36:42 ID:QL7QbdLi
ぶつからないよね?

HOST <= sg_host_a when A_RD = '1' else (others => 'Z');
HOST <= sg_host_b when B_RD = '1' else (others => 'Z');

が間違いっていうのが、しっかり理解できてないんじゃない?
266774ワット発電中さん:2007/09/01(土) 22:27:16 ID:OFQtA0+T
HOSTがbusならいいんじゃね?
267774ワット発電中さん:2007/09/03(月) 21:06:37 ID:iOM1u+Cx
ほしゅ
268774ワット発電中さん:2007/09/04(火) 20:02:09 ID:cojTKx5l
チップ内で'Z'使ったら、なんか言われなかったっけ?
269774ワット発電中さん:2007/09/16(日) 10:39:21 ID:u6i4TWes
>>268
ワーニング出るよな。

となるとだ、8255のようなパラレルI/OのIPはそのへんどう処理してるんかが気になる。
270774ワット発電中さん:2007/09/16(日) 11:09:10 ID:z6uWoOLj
'Z'が使えなかったら内部バスがモデリングできないだろ。
よくわかって無いやつが多いな。トライステートくらい普通に集積されてるのに。
271774ワット発電中さん:2007/09/16(日) 11:54:29 ID:RHszHQBw
できるからって実際に使ってよいかどうかは別問題。
内部のバスをトライステートになんてしたら、フルスキャンテストできないじゃん。
272774ワット発電中さん:2007/09/16(日) 12:47:49 ID:nMLiUyEh
FPGAしか使った事ないんで良く知らんのだが、内部バスにトライステート使ってるような
ものってあるんですか。ASICでは普通に使えるの?
273774ワット発電中さん:2007/09/16(日) 12:59:47 ID:My2KYco3
内部バスで'Z'使っても実際にはセレクタやらに変換されると
聞いたが、特定のツールだけの話かもしれない。
274774ワット発電中さん:2007/09/16(日) 13:24:24 ID:z6uWoOLj
FPGAはものが無いからMUX等で代用。
CPLDはPIAの部分にあるからそのままだと思う。
275バカ晒し上げ:2007/09/16(日) 16:33:08 ID:/xzi4ZEO
>>269
ワーニングってのはアリゲータですかそれともクロコダイル?
276774ワット発電中さん:2007/09/16(日) 18:27:31 ID:kb5Ormc2
ワーニングだろうがウォーニングだろうが、
正しい発音と全然違う点では一緒。

とでも言って欲しいのだろうか?
277バカ晒し上げ:2007/09/16(日) 18:43:41 ID:/xzi4ZEO
↑バカ言いわけに必死
278774ワット発電中さん:2007/09/16(日) 18:56:13 ID:kb5Ormc2
あらら・・・
どこで覚えたか知らないが、ググってみ。
賛否あるから。
279774ワット発電中さん:2007/09/16(日) 19:04:25 ID:QvIaS4W0
初めて使う「晒し上げ」が嬉しくってたまらないんだよ
そっとしておいてあげようよ。
280774ワット発電中さん:2007/09/16(日) 19:25:43 ID:JTbSxP9p
この間民主党の原口議員もワーって言ってたよ。
ワー発音は和製英語ってことでいいじゃん。
281774ワット発電中さん:2007/09/16(日) 19:46:41 ID:Fm5f7YOA
> この間民主党の原口議員もワーって言ってたよ。
それはむしろ、バカ晒し上げバカに加勢してしまうネタかもw
282774ワット発電中さん:2007/09/16(日) 20:45:30 ID:/xzi4ZEO
>>ID:kb5Ormc2 バカ確定
283774ワット発電中さん:2007/09/16(日) 20:46:36 ID:UuL4VxLf
ASICは俺がお願いすれば何だってやってくれる。
284774ワット発電中さん:2007/09/16(日) 20:53:19 ID:d38RDFWU
魔法回路 りりかるASIC
285774ワット発電中さん:2007/09/17(月) 01:00:51 ID:wdnfFJnO
>>282 必死だな
286774ワット発電中さん:2007/09/17(月) 01:06:49 ID:C34FoIz9
ID:wdnfFJnO = ID:kb5Ormc2
必死なのはお前。カタカナ表記はカタカナ表記なんだよ。
Vはブイじゃないってレベルの駄レス。
287774ワット発電中さん:2007/09/17(月) 01:15:36 ID:wdnfFJnO
「Vはブイに決まってるだろう」と言ってキかないレベルに言われたくないな。
288774ワット発電中さん:2007/09/17(月) 07:35:54 ID:nnQCCxk1
どうでも良いがそれはこのスレでするような問題なのか?
言語スレに同じような不毛なスレがあった気がするので自主的にそちらに移動しようと思わないのか?
289774ワット発電中さん:2007/09/17(月) 11:06:24 ID:gzGeS55+
そもそも、Vの発音なんて日本語にないものを、わざわざ誰もとりあげてない
warningをワーニングと表記する時点で日頃から全く読めてないことを公表してるようなもん

ID:kb5Ormc2 は日々ワークマン聴きながらシュミレータの出すワーニングに悩まされてるんだろ?
すなわち

   バ   カ   確   定
290774ワット発電中さん:2007/09/17(月) 11:12:17 ID:nnQCCxk1
おまえが馬鹿なのはよく分かった
291774ワット発電中さん:2007/09/17(月) 12:56:30 ID:vhHBz9nI
すごい馬鹿だな。
warningというのは何もHDL設計のとき以外からワーニングという表記で
普通につかっているものだった。実際、Googleで検索すると
ウォーニングよりもワーニングの方が多い。

Vもそうだが、他にもreviewをレビューと書くかリビューと書くか、
どっちで書いても、原音の発音に忠実なわけじゃない。
英語がぺらぺらで発音もいい人はいちいちカタカナ表記どうこうにはあまり執着しないぞ。
292774ワット発電中さん:2007/09/17(月) 12:57:42 ID:nnQCCxk1
おまえも馬鹿なのはよく分かった
293774ワット発電中さん:2007/09/17(月) 13:00:30 ID:MDU4S6OM
そうだな、warningは「ウォァニン」が正解だな。
「ワーニング」なんて読んだら英語ネイティブに爆笑されるよな。
294774ワット発電中さん:2007/09/17(月) 13:04:50 ID:nnQCCxk1
おまいらいい加減に言語スレでやれと###############
295774ワット発電中さん:2007/09/17(月) 13:08:00 ID:YsqidiJv
レビューに関してはもう日本語になってる気がする。
ワーニングに関しては、わざわざカタカナで書かないで
もう素直にwarningってアルファベットで書けば
こんな問題にならんのに。。。
296774ワット発電中さん:2007/09/17(月) 14:46:13 ID:czKUY/AX
普通はどう書こうが日本人に伝わりゃ問題にならない。
問題になるのはそれをわざわざ問題にする奴の存在。
297774ワット発電中さん:2007/09/17(月) 14:49:28 ID:gvA4olnt
馬鹿の言い訳にしかならんけどな
298774ワット発電中さん:2007/09/17(月) 15:03:52 ID:MDU4S6OM
ゲルマニウムもペンティアムも受け入れる日本語は市民権を得た方が正しい。
アイロン、ミシン、ブリキは正しい。
よって、ワーニング、アワードは正しい。
299774ワット発電中さん:2007/09/17(月) 15:08:44 ID:sjIYxnhs
最近の電電板はスルー力検定試験ばっかw
300774ワット発電中さん:2007/09/17(月) 15:15:47 ID:YsqidiJv
アイロンミシンブリキは正しいとしても、
ワーニングやアワードは(まだ)正しくないんだろね。
301774ワット発電中さん:2007/09/17(月) 15:37:15 ID:vhHBz9nI
302774ワット発電中さん:2007/09/17(月) 15:43:21 ID:Kz+0urm9
「ワーニング」って使ってる例を示せばいいと思ってるところがまた馬鹿っぽい。
303774ワット発電中さん:2007/09/17(月) 15:47:08 ID:vhHBz9nI
馬鹿はお前。
ワーニング・レターとかもそうだし、普通につかわれてるよ。
単に出くわしたこと無いやつが違和感感じてさわいてるだけ。
304774ワット発電中さん:2007/09/17(月) 15:55:19 ID:gzGeS55+
バカはお前

>ワーニング・レターとかもそうだし、普通につかわれてるよ。

使われてるかよアホ

>単に出くわしたこと無いやつが違和感感じてさわいてるだけ。

アホの文章なんか読む必要ないもんな。アホじゃあるまいし。
アホの集いで何の問題もないと思って、世の中に持ち出すな。 

アホのID:vhHBz9nI
305774ワット発電中さん:2007/09/17(月) 15:58:57 ID:gvA4olnt
>>303
おまえ、自分が的外れなことばっかり言ってるっていい加減気づけよ・・・
306774ワット発電中さん:2007/09/17(月) 16:00:23 ID:61l9R4g8
そのうち「検索結果でワーニングが多いからってワーニングを使う馬鹿」
なんて言い出すかな。
307774ワット発電中さん:2007/09/17(月) 16:00:57 ID:gzGeS55+
>>ID:vhHBz9nI バカの遠吠え集

>>291
>すごい馬鹿だな。 
>warningというのは何もHDL設計のとき以外からワーニングという表記で 
>普通につかっているものだった。実際、Googleで検索すると 
>ウォーニングよりもワーニングの方が多い。 

>Vもそうだが、他にもreviewをレビューと書くかリビューと書くか、 
>どっちで書いても、原音の発音に忠実なわけじゃない。 
>英語がぺらぺらで発音もいい人はいちいちカタカナ表記どうこうに>はあまり執着しないぞ。 


>>301
http://www.compaq.co.jp/products/software/oe/Linux/mainstream/support/doc/option/nic/bonding_rhel_diff.html 

↑バカの集いを検索しただけってことすら気づかない

>>303
>馬鹿はお前。 
>ワーニング・レターとかもそうだし、普通につかわれてるよ。 
>単に出くわしたこと無いやつが違和感感じてさわいてるだけ。

テメエが属するバカ近傍を暴露 何が正しいかもわからない

  ア  ホ  は  死  ね  >>ID:vhHBz9nI
308774ワット発電中さん:2007/09/17(月) 16:04:23 ID:vhHBz9nI
>>304-305
英語を発音するときにカタカナ表記で考えたりしないし、
ワーニングでもウォーニングでも通じればいいんだよ。
君らが頭固すぎで協調性が無いだけ。実社会にでればそんなことにいちいち
噛み付いているやつ中二病のやつなんていねぇよ。
309774ワット発電中さん:2007/09/17(月) 16:07:33 ID:nnQCCxk1
おまえらいい加減カナ文字スレに移動してくれお…
310774ワット発電中さん:2007/09/17(月) 16:07:46 ID:gzGeS55+
【Verilog】記述言語で論理設計 Project5【VHDL】
http://science6.2ch.net/test/read.cgi/denki/1174319964/269

>>268 
>ワーニング出るよな。 

>となるとだ、8255のようなパラレルI/OのIPはそのへんどう処理してるんかが気になる。 

↑バカにふさわしく全角英数

http://science6.2ch.net/test/read.cgi/denki/1174319964/291

>すごい馬鹿だな。 
>warningというのは何もHDL設計のとき以外からワーニングという表記で 
>普通につかっているものだった。実際、Googleで検索すると 
>ウォーニングよりもワーニングの方が多い。 

>Vもそうだが、他にもreviewをレビューと書くかリビューと書くか、 
>どっちで書いても、原音の発音に忠実なわけじゃない。 
>英語がぺらぺらで発音もいい人はいちいちカタカナ表記どうこうにはあまり執着しないぞ。

↑己の馬鹿レス弁護に必死
311774ワット発電中さん:2007/09/17(月) 16:12:52 ID:nnQCCxk1
  <⌒/ヽ-、___・・・・・・
/<_/____/
312774ワット発電中さん:2007/09/17(月) 16:16:42 ID:Nz4+b2g6
なんだか、俺も「ワーニング」を使った方が無難な気がしてきたwww
313774ワット発電中さん:2007/09/17(月) 16:18:41 ID:Nz4+b2g6
晒し上げ君、スレたてたよwww
314774ワット発電中さん:2007/09/17(月) 16:21:35 ID:yNr5nmr3
結局、ワーニングって書いてる奴はバカ確定ってことでいんだな?
315774ワット発電中さん:2007/09/17(月) 16:23:01 ID:trRbXbVN
まぁ普通ワーニングだな。
316774ワット発電中さん:2007/09/17(月) 16:23:58 ID:Nz4+b2g6
>>314
GCCはクソ君ですか?
ここではなんですから一緒にあっちに行きましょう。
317774ワット発電中さん:2007/09/17(月) 16:30:36 ID:ZB29qGo4
ええい、なんでmodelsimのバージョン6xはこんなに使いづらいんだ
5.8に戻そうかな

#最近S/N落ちてますなぁ
318774ワット発電中さん:2007/09/17(月) 16:37:37 ID:LGC8msQ4
>>308
>実社会にでればそんなことにいちいち 
>噛み付いているやつ中二病のやつなんていねぇよ。

中学生レベルの学力を後ろ指さされていることも気付かない真正バカ
319774ワット発電中さん:2007/09/17(月) 16:51:35 ID:vhHBz9nI
中学生相当の学力と精神年齢だとワーニングがどうしても気に入らなくて、
興奮してスレたてしちゃったりするんだね(それが自分の知見の頂点らしい)www
ちなみに8255 IPの人と俺は別人なので…。
http://science6.2ch.net/test/read.cgi/denki/1190012676/
320774ワット発電中さん:2007/09/17(月) 17:00:30 ID:UKcHPvyV
>>319
もういいから。
いつまで続けるんだ。
321774ワット発電中さん:2007/09/17(月) 17:18:56 ID:LGC8msQ4
>>319 というより ID:vhHBz9nI

>ちなみに8255 IPの人と俺は別人なので…。 

オマエさ。

ttp://science6.2ch.net/test/read.cgi/denki/1190012676/2
ttp://science6.2ch.net/test/read.cgi/denki/1190012676/3

で晒されてるのはオマエ自身じゃん。誰が間違えるんだい


322スレ立て人:2007/09/17(月) 17:34:04 ID:1VS+o0hV
学問版でワーニングなどと戯言をほざき
指摘されても居直るゆとり世代バカ>>ID:vhHBz9nIに我慢ならなくてスレ立てましたッ
323774ワット発電中さん:2007/09/17(月) 23:14:45 ID:Txs/LXxW
HDLに関係ないから、メールかなんかで個人的にやりあってろよ、おまえら。
324774ワット発電中さん:2007/09/17(月) 23:46:50 ID:pvilnNar
公開罵倒チャットはヤメレ

ISE 9.2ってどうなん?
7.1使ってるんだが新デバイス使わない限り更新不要のような気がしてる
最近は代理店にDVDクレ!というと翌日宅配で送ってくるので手軽に試せるのだが
テスト用サブマシンに入っている8.1を使ってみてあまりメリットなさそうなので更新止まってる。

modelsimは制限緩くなってるみたいだが
各ベンダOEMで一番緩いのはxilinxでok?
325774ワット発電中さん:2007/09/18(火) 07:51:20 ID:RrshTRC9
三行であらわすと

凄い
勢いで
落ちる
326pagex:2007/09/21(金) 03:09:25 ID:8CoQa1bO
なんでGHDLでやれねーの
ADAだから?
327774ワット発電中さん:2007/09/22(土) 22:34:22 ID:4OrVo57z
さすが糞VHDLや糞VERILOG使いだな。スレのレベルが低い。
糞扱ってると人間も糞になる。
シュミレートで噛み付く馬鹿を釣るのが流行っていたが、今度は
ワーニングでも釣れる。糞でも食いつくドンコだな。

328774ワット発電中さん:2007/09/22(土) 22:59:56 ID:P/uSzKwr
>>327
よくわからんが まけ犬の遠吠え? 
329774ワット発電中さん:2007/09/23(日) 00:26:29 ID:9cnYYMa9
本当に釣られやすいやつだなw
330774ワット発電中さん:2007/09/23(日) 01:17:16 ID:jZREc1ax
urinate into the pants
331pagex:2007/09/23(日) 11:30:51 ID:ClHazeZz
HDLのシミュレートは、キャラクターベースにかぎる。
WINDOWSもXもつかわない。
GHDLだと、はやい、やすい、とまらない。
332774ワット発電中さん:2007/09/23(日) 12:14:56 ID:pFHzFvXW
GHDL をコンパイルしようと思ったんだけど、Ada をコンパイルするのに Ada が
必要ってどういうことよ?
ということで、いまだに GHDL を使ったことない orz
333pagex:2007/09/23(日) 15:16:22 ID:9Akf1/6I
debianだとsargeでGHDLがstableになっていて
そのままapt-getできたけど、etchになったらtesting
に降格。しかたなく、chrootでsargeでGHDL。
GHDLのhomepageのバイナリは、debian/etchでは、
Adaのライブラリーの関係で動かない。
コンパイルしなおせば、いいのだろうけどやってない。


334774ワット発電中さん:2007/09/24(月) 16:35:51 ID:zK4mb2ih
GHDLで生成したバイナリの内部信号て見れない?
いちいちライン引っ張ってこんといかんのかな
335774ワット発電中さん:2007/09/24(月) 17:01:42 ID:UibjjD3L
まさか、このスレでWindows使ってる人なんかいないよね
336774ワット発電中さん:2007/09/24(月) 18:14:40 ID:V9L+Q3dT
使っていますけど。
MS-Windows用の合成ツール、MS-Office、Putty、Cygwin X、coLinux、VNCなど。
あまり困りません。
337774ワット発電中さん:2007/09/24(月) 18:16:39 ID:DIB+aXtz
Windows以外でゲームするとか有り得ない
338774ワット発電中さん:2007/09/27(木) 23:14:40 ID:vt9VZRsz
これからverilog勉強するから、一週間でマスターできる本教えろ。
339774ワット発電中さん:2007/09/27(木) 23:20:18 ID:klJ7tLKZ
猿でも出来るVerilogHDL
340774ワット発電中さん:2007/09/28(金) 00:21:04 ID:3puji4iN
>>338
ハードを知ってるならどの本でも1週間もかからん。
341774ワット発電中さん:2007/09/28(金) 09:48:28 ID:JB5B63bY
それが真実ならスケマからHDL設計についていけなかった奴なんかいなかったわけだが
342774ワット発電中さん:2007/09/28(金) 19:13:07 ID:CvwiUBo1
条件:年寄りは除く
343774ワット発電中さん:2007/09/28(金) 21:48:26 ID:9rNfaE6X
一週間で解らなかったら、そいつはハードを知らないんだ。
というトートロジー。
344www.cs.tuat.ac.jp/:2007/09/28(金) 22:37:04 ID:uuIIzKR/
>>343
3年前期の情報工学実験でVerilog HDLを習うまで
電子工作を全くやったことが無かった俺はどうなる・・・?
半年後に気づいたら家にオシロや安定化電源と
手ハンダで作ったマイコンボードのとなりに
Spartan3Eの評価ボードがあるような人間になってたorz

お前らが半導体なんて発明してなかったら俺も人間でいられたのに(泣)


つーか質問。信号線の宣言は
module mips_top(CLK, data, address, nReset, ....);
    input CLK;
    inout [15:0] data;
....
って書くように習ったんだが、
インターネッツで人の書いたコードを見ていると
module mips_top(
    input wire CLK,
    inout wire [15:0] data,
    output reg [19:0] adderss,
...);
ってな感じに書いてあるソースが多いんだが、こっちのほうがいいのk?
345774ワット発電中さん:2007/09/28(金) 22:38:38 ID:tjwR3/s2
2002だかなんだかの仕様から、そう書けるようになった。
書きたきゃそう書けば良いんじゃない?
Cと同じで書き方の答えはないかと
346www.cs.tuat.ac.jp/:2007/09/28(金) 23:01:13 ID:uuIIzKR/
>>345
ということは教官の好みか。
どうせなら二つ教えてくれてれば良かったのに。
加えて質問。インターンシップに行った友達は派遣先でVHDLを
使ってなんかを組むトレーニングを受けたらしいんだが、
Verilogを中心に使うにしてもVHDLのコードも読めるように
なっていたほうがいいのですk?
多分基本は同じだと思うんだけど、VerilogでRTL記述と動作レベル記述を区別せずに
勉強してしまったのでそこら辺が厳しそうなVHDLを理解できるか不安なのですが。
if文とか平気で使うんでハードをきっちり意識して条件代入文だけで書いてる
人のコードを見ると時々不安になる。ISEやQuartus IIで論理合成できればいーやじゃだめk?
347774ワット発電中さん:2007/09/28(金) 23:23:15 ID:+wnYC7OM
RTL設計スタイルガイドを読めばおk
348www.cs.tuat.ac.jp/:2007/09/29(土) 00:12:07 ID:X9MXe2KI
>>347
図書館にあるか調べてみたんですが、これでいいんですか?
http://websrv.biblio.tuat.ac.jp/opac/books-query?mode=2&place=&code=20121343&key=B119099284218708
349774ワット発電中さん:2007/09/29(土) 00:16:37 ID:EohGUgDC
もっと新しい版があった筈。
買った方が良いよ。無駄にはならない。

俺が買った1刷には
糞みたいな誤植(文字化けwww)があったが
さすがにもう治ってるだろうし。
350774ワット発電中さん:2007/09/29(土) 00:18:08 ID:EohGUgDC
>>346
前から疑問だったんだが
Verilogって動作レベルで記述出来るって言っていいのか?
351www.cs.tuat.ac.jp/:2007/09/29(土) 00:35:24 ID:X9MXe2KI
>>349
とりあえず図書館の奴を見てから財布と相談して頑張ってみます(;´_`)
もしかしたら集積回路研のほうに最新の版が置いてあるかも知れないので
そっちで見せてもらえるように頼んでみるかもです(・。・)

>>350
すいません、どっからどこまでがRTLかって僕もわかってなくてorz
352774ワット発電中さん:2007/09/29(土) 17:18:35 ID:UTp2N5cu
process(reset, clk) begin
if reset='1' then
c_state <= idle;
elsif clk'event and clk='1' then
c_state <= n_state;
end if;
end process;

どうせお前らの世界はFFとゲートで出来てるんだろ。
なんでFFとゲートで書かんのだ。

elsif clk'event and clk='1' then
c_state <= n_state;
end if;

これはなんだこれは。馬鹿じゃあるまいか?

c_state(3:0) is ff;

c_state().reset = reset;
c_state().clk = clk;
c_state().d = n_state;

この方が直感的でわかりやすい。そう思わんか?


353774ワット発電中さん:2007/09/29(土) 17:43:34 ID:/n/vAerr
↑ 頭大丈夫?
354774ワット発電中さん:2007/09/29(土) 17:48:27 ID:5RIR3ROJ
思わんね
355774ワット発電中さん:2007/09/29(土) 20:48:22 ID:AR9qt1EW
>>352
「おれはVHDLよくわかんねーんだ」と言いたいのは痛いほど解った。
356774ワット発電中さん:2007/09/30(日) 07:47:46 ID:7wz65yVZ
早く馬鹿だと気が付け。

ついでに言うなら
module mips_top(
    input wire CLK,
    inout wire [15:0] data,
    output reg [19:0] adderss,
...);
こういう仕様を考える馬鹿ども。一体こいつらは何を考えているんだ。

wireは接続関係だろ input属性を着けるなんて邪道もいいとこだ。
357774ワット発電中さん:2007/09/30(日) 09:58:09 ID:3Ig7AtUj
>>356
なにこれw
こんな書き方今できるの?
他人の読むとき大変だ
358774ワット発電中さん:2007/09/30(日) 10:28:00 ID:ti9fflU1
荒しはスルーで。
荒しにレスする人も(ry
359774ワット発電中さん:2007/09/30(日) 10:29:29 ID:kt2CRVza
いいからおまえは新しい論理記述言語の仕様を作る作業に戻るんだ
360774ワット発電中さん:2007/09/30(日) 17:56:11 ID:N4rqvyjh
もう論理記述言語はいいだろw
必要なのは機能記述だ
361774ワット発電中さん:2007/09/30(日) 22:19:39 ID:psf6CC5L
おれならこう書きたい

state=new ff::c_state(3:0);

state.reset(reset);
state.clk(clk);
state.d(n_state);
362774ワット発電中さん:2007/10/01(月) 09:55:33 ID:pqGnP/4d
回路はすべて永続オブジェクトなんだから
newとかdeleteとかアリエナイだろ
363774ワット発電中さん:2007/10/01(月) 13:02:27 ID:0hq8dJXX
おれはABEL風の>>352がいいな
364774ワット発電中さん:2007/10/01(月) 16:10:08 ID:nfj4v17h
じゃじゃ俺はこう
10 DIM C_STATE[3:0] AS FF
20 REM
30 LET C_STATE.RESET=RESET
40 LET C_STATE.CLK=CLK
50 LET C_STATE.D=N_STATE
365774ワット発電中さん:2007/10/01(月) 20:10:54 ID:XtH95K8Y
>>364

久しぶりに和路多yo。
366774ワット発電中さん:2007/10/02(火) 06:03:04 ID:3h4CRDYy
process (state, in1)
begin
case state is
when s0 =>
out1 <="000";
if in1 = '1' then
next_state <= s1;
else
next_state <= s0;
end if;


ステートマシンでこのように書いている例が多いんだけど、このelseはいらない
でしょう。
 なんで。
 なにか理由があるんだろか?
367774ワット発電中さん:2007/10/02(火) 06:05:30 ID:3h4CRDYy
process (state, in1)
begin
    case state is
        when s0 =>
            out1 <="000";
            if in1 = '1' then
                next_state <= s1;
            else
                next_state <= s0;
            end if;
368774ワット発電中さん:2007/10/02(火) 08:31:40 ID:tqCoWw2q
つまりif文でin1が0とXの場合の両方を書けっていうのか?
369774ワット発電中さん:2007/10/02(火) 12:38:29 ID:Ppfit/Vf
いやelseの場合は入らないってこと。
「条件がそろはなければ前の状態を保持する」のだからS0にとどまる。
それなのになんでわざわざ next_state <= S0 って書くのか。
その神経が分からない。ってことだろ。
つまり次の方がよい。

process (state, in1)
begin
    case state is
        when s0 =>
            out1 <="000";
            if in1 = '1' then
                next_state <= s1;
            end if;
            
にもかかわらずVHDLerはやたらとelseを入れる。
370774ワット発電中さん:2007/10/02(火) 12:57:33 ID:0AFvvdo8
合成ツールの出来が悪かった頃は else節がない記述だと
面積でかくなったりしたんだよ

今のツールなら差は出ないんだろうけど
書いても害がないなら書いてもいいよなってノリじゃないの?
371774ワット発電中さん:2007/10/02(火) 12:59:26 ID:Qtme8k6L
>>369
ちょwwwおまえ笑われるぞ。
372774ワット発電中さん:2007/10/02(火) 13:00:09 ID:zT4TyYZd
RTLチェッカーでelse書いてないとWarning出す場合がある。
373774ワット発電中さん:2007/10/02(火) 19:49:18 ID:Ppfit/Vf
>ちょwwwおまえ笑われるぞ。

お前以外にも笑ってる奴がいるんだが、どっちが折の中かってことだな。
昔からの奴はelseを書くらしい。気持ち悪いなー。
374774ワット発電中さん:2007/10/02(火) 22:07:44 ID:YWcZ0gt7
書かないと最適化でたまに勝手に削られてたり、他のロジックとマージされたり
ひどい場合がある。
375774ワット発電中さん:2007/10/02(火) 22:20:23 ID:alpvRwxe
ステートマシンでelse無いと万が一の異常状態から復帰できないだろ……
ツールがとかWarningがとか何考えてRTLやってんだよ
376774ワット発電中さん:2007/10/02(火) 22:48:26 ID:2EYOlaOl
未記入ステートがない方がデバックでの勘違い等が減らせると思うが?
非明示的な記述を嫌うのはVHDLスタイルとしては普通じゃねぇの?
377774ワット発電中さん:2007/10/03(水) 00:24:57 ID:Z9WjZz4O
>>370が正解。
合成ツールをどこまで信用するかってことやね。
Cコンパイラほど信頼性は高くないのよ。
だから、その数行でリスク回避できるなら書いておこうって話。
378www.cs.tuat.ac.jp/:2007/10/03(水) 04:09:26 ID:gv443B6y
ISE 9.1でintegerを使うと論理合成までは
できるのに、Fittingで死ぬんですが・・・何故でしょうか。
マクロセル数が足りないんじゃなくてマクロセル間の結線が足りない?
みたいな不思議な失敗をします。
379774ワット発電中さん:2007/10/03(水) 23:29:56 ID:Z9WjZz4O
>>378
それはもう、エラーログ見て問い合わせるなり調べるなりするほうが手っ取り早い
380774ワット発電中さん:2007/10/03(水) 23:50:32 ID:Bf8LNhui
>>369
なんかソフト屋的発想の臭いがするなぁ。
ソフトだと変数の値は代入されない限り値を保持するのが当たり前だが
ハードじゃゲートなりFFなり入力が確定しないと出力も不定になるだろ。

in1が'1'じゃ無い場合はnext_stateの入力が不定っておかしくね?だからelseで
ちゃんと指定しようぜ!って発想はハード屋にとってはごく自然な考え方だと思う。

>>372
やっぱりワーニングは全部消さないとな。ジョエルも言ってたし間違いない。
381774ワット発電中さん:2007/10/04(木) 00:46:08 ID:aXqayzWa
>ハードじゃゲートなりFFなり入力が確定しないと出力も不定になるだろ。

言ってることが変だ。出力は0か1に確定してる。
どちらになっているか判らないから不定として表示してるだけだろ。

実際FFはセル毎に大体倒れる方向決まってるJTAGで解析してみ。
382774ワット発電中さん:2007/10/04(木) 00:51:23 ID:aXqayzWa
つうかジェネレータがelseでも同じ回路生成してくれるならいいじゃん。
どうせ生成した回路でも検証するんだし。
383774ワット発電中さん:2007/10/04(木) 10:12:53 ID:yQAfw8Px
>やっぱりワーニングは全部消さないとな。ジョエルも言ってたし間違いない。


出た出たワーニング馬鹿

なんか中卒的発想の臭いがするなぁ。 
中卒だと a があったらローマ字そのままで読んで "あ"をアサインしたくなるんだろうが
ちょっと英語知ってたらaward なんかの発音と同じってことに気づくだろ。 
384774ワット発電中さん:2007/10/04(木) 10:41:20 ID:ySLB8+JI
一般的に「警告」が出ないようなソースを作るのはいいことだろう。
しかし相手にもよるね。「警告」出まくりのソフトウェアなんて使わないこと。
人にたとえれば、つき合わないってことさ。
385774ワット発電中さん:2007/10/04(木) 11:01:58 ID:ndwVVB52
警告もワーニングかアラートか
コーションかで対応違うし、
警告レベルの設定にもよるし。
386774ワット発電中さん:2007/10/04(木) 13:00:30 ID:TTqHUQX3
>>385
厨が湧いてくるからワーニングという言葉は
使わないでほしい。ウォーニングな。

warningをワーニングと読むのは、
Star Warsをスターワーズ、
cautionをカウチョンと読むのと
同レベルの間違いだから恥ずかしいぞ。
387774ワット発電中さん:2007/10/04(木) 13:06:53 ID:5xo8kt/O
ワープ(warp)もウォープと書かないとダメすか?
実際母音部は war と同じ発音なのだが

英語にも方言があって warとかwarpとかwarningが
日本語のワーっぽい発音する国/地域もあるけど
そこんとこはどーなのよ
388774ワット発電中さん:2007/10/04(木) 13:11:30 ID:TTqHUQX3
>>387
warn と warは語源が同じ。
warpとは語源が異なる。

訛りは仕方ねーずら

You see?
389774ワット発電中さん:2007/10/04(木) 13:45:36 ID:5xo8kt/O
語源と発音は関係なかろうよ
つーか語源至上主義ならラテン語風発音が正しいってことになるべ
ジーザスじゃなくてイエズスだろ みたいな
390774ワット発電中さん:2007/10/04(木) 13:47:26 ID:Se+Po4hb
>>388
語源って何だよ。そこまで説明しろよ糞野郎!
ググッてやる!
391774ワット発電中さん:2007/10/04(木) 14:04:13 ID:8iE9zUN5
また発音厨荒らしか。
自演もスルー。
392774ワット発電中さん:2007/10/04(木) 15:25:07 ID:mC5Z4SSd
発音だの語源だの言うくせにingを「ング」と言うのはなぜなんだぜ?
393774ワット発電中さん:2007/10/04(木) 15:35:21 ID:KOa/35Fq
>>386
ワーニング罵倒はこちらへどーぞ
http://science6.2ch.net/test/read.cgi/denki/1190012676/
394774ワット発電中さん:2007/10/04(木) 18:34:59 ID:vSLsjDZR
ノシュットオールマンコホール
395774ワット発電中さん:2007/10/04(木) 18:52:40 ID:vSLsjDZR
>ハードじゃゲートなりFFなり入力が確定しないと出力も不定になるだろ。

 不定不定って成りもしない不定にビクビク、オドオド。
不定じゃないだろ。そりゃ不安だろが。
 じゃあ、process文内で厳密に不定になるロジック書いてみろよ。
書けるもんなら書いてみろよ。アホー。





396774ワット発電中さん:2007/10/04(木) 18:55:10 ID:W1dXAgLQ
module hoge(asdf);
  input asdf;
  assign asdf = 1'bz;
endmodule
397774ワット発電中さん:2007/10/04(木) 19:07:22 ID:Se+Po4hb
こりゃ不定だな
398774ワット発電中さん:2007/10/04(木) 19:25:56 ID:3IV6UjWi
誰がアホーなのか、はっきりしましたね。
399774ワット発電中さん:2007/10/04(木) 19:32:03 ID:5xo8kt/O
出力が不定になる記述で困るのは実機動作じゃなくてシミュレーションの方だ
modelsimのwave窓がXだらけになるぜ
400774ワット発電中さん:2007/10/04(木) 21:02:37 ID:0H2G4IS3
>>396
process文内でって書いてあるのに・・・
401774ワット発電中さん:2007/10/05(金) 08:37:49 ID:HBe1cN3l
>>395
process(clock)
begin
 if clock'event and clock='1' then
  ff0 <= not ff0;
 end if;
end process

これ ff0を初期化するコードがないからシミュレータではずっと不定値のまま
もちろん実機ではちゃんとクロックを2分周した波形が出力されるわけだが
402774ワット発電中さん:2007/10/05(金) 08:44:17 ID:WxpIBEJT
>>399,401
折角盛り上がりそうなのにシュミレータ、シュミレーションと書けよ
403774ワット発電中さん:2007/10/05(金) 11:10:51 ID:Iqq+bPXS
あほだなぁと思いつつ職場ではワーニングだとかpingをピングと言って周りに合わせている俺。
最近反抗期なのでピングーと読んだりしてます。
404774ワット発電中さん:2007/10/05(金) 12:08:43 ID:8tQIkzSd
405774ワット発電中さん:2007/10/05(金) 15:22:36 ID:AlbrFx5d
暇なので昔AHDLで書いたコードをVHDLに書き直して遊んでた
AHDLって型もへったくれもなくて楽だな
406774ワット発電中さん:2007/10/05(金) 20:15:42 ID:sQXKdVFR
> pingをピングと言って周りに合わせている俺。
しゃべり言葉で「ピン」って言うと、余計混乱しそう。
407774ワット発電中さん:2007/10/06(土) 00:47:00 ID:wNbm0dvh
粘土のペンギンかよwww
408774ワット発電中さん:2007/10/06(土) 04:31:24 ID:jfj5TcqT
>これ ff0を初期化するコードがないからシミュレータではずっと不定値のまま
>もちろん実機ではちゃんとクロックを2分周した波形が出力されるわけだが

全然厳密じゃねえじゃん。「厳密に」って書いてあるだろ。
よくよめ。アフォー
これはただシミレータがアフォだからじゃん。

409774ワット発電中さん:2007/10/06(土) 07:30:07 ID:oKO8/sdq
「ping」をピンと言うのもピングと言ってるのと大差ない。「pin」と発音違うし。

>>408
実際に波形が出力されるのと、時間軸上に波形を描けるのは別。
どんなシステムと環境で利用するのか分からないのに
クロック発振開始がわかるのならシミュレーションではなく予言だな。

_| ̄|_| ̄|_| ̄| A

| ̄|_| ̄|_| ̄|_ B


410774ワット発電中さん:2007/10/06(土) 07:50:23 ID:j8YSSz/q
HDLってのはもともとシミュレーションを行う目的で作られた言語だからな
まともにシミュレーションできない記述はダサいって心理が働くんだろ

論理合成はHDLのシミュレーション記述から
そのまま回路ネットリストが作れるって
魔法の弾丸のようなものを目指して作られたもの

残念ながら現状では全然魔法の弾丸のレベルには達していないのだが…
411774ワット発電中さん:2007/10/06(土) 09:32:54 ID:NjhjppOB
新規の論理設計をするのはバカ。基本はパクリンチョだ。
412774ワット発電中さん:2007/10/06(土) 09:51:37 ID:c0yFF+cq
<ヾ`∀´> 朝鮮人がこのスレに興味をもったようです
413774ワット発電中さん:2007/10/06(土) 10:05:01 ID:7rBH0blo
>>410
だからシュミレーションと言って盛り上げろと言ってるのに!

>>411
基本は
パクリンチョン
だろ?
414774ワット発電中さん:2007/10/06(土) 12:35:14 ID:jfj5TcqT
//実際に波形が出力されるのと、時間軸上に波形を描けるのは別。
//どんなシステムと環境で利用するのか分からないのに
//クロック発振開始がわかるのならシミュレーションではなく予言だな。
//
//_| ̄|_| ̄|_| ̄| A
//
//| ̄|_| ̄|_| ̄|_ B

 アフォー。設計者が開始位置が関係ないって言ってるのだからSimulaterの
如きは、設計者の意図をチャンと理解しろってこと。
 それに、お前は暗黙の了解ってのを知らないのか? 暗黙の了解がなければ
世界はなり立たない。それはある時は空気、である時は常識だ。いまは厳密を要求
されていんだ。
 
ff0 <= not ff0;

ff0の初期値が0なら次のクロックで1だし、ff0の初期値が1なら次のクロック
で0だし、何処が不定なんだ。あーん。お前のような脳タリンは2つのことを同時に
考えられんらしい。だったら半分にしてやろう。
いいか初期値は0だ。世界は0から始まる。これが仮定だ。

もう一度言う。
じゃあ、process文内で厳密に不定になるロジック書いてみろよ。
書けるもんなら書いてみろよ。アホー。

415774ワット発電中さん:2007/10/06(土) 13:13:11 ID:7rBH0blo
暗黙の了解で本来バグもしくはバギーなものをあぶりだしてくれんかったら、
シミュレーションの意味がないがな
鑑賞用のスピーカとかヘッドフォン使って録音モニタができないのと一緒

>いいか初期値は0だ。世界は0から始まる。これが仮定だ。 

あのー ID:jfj5TcqTってバカなん?
416774ワット発電中さん:2007/10/06(土) 13:49:05 ID:7WLEOdHP
>>415
一目瞭然です。口先だけの14V。
417774ワット発電中さん:2007/10/06(土) 13:59:42 ID:7rBH0blo
>>416
誰が14Vって?
418774ワット発電中さん:2007/10/06(土) 15:10:36 ID:7WLEOdHP
>>417
ID:jfj5TcqTが14Vって。
419774ワット発電中さん:2007/10/06(土) 17:05:39 ID:7rBH0blo
ヲイヲイ!
14Vはそんな間抜けなことは言わん。
あと、悪意の全くない嘘もつかん。
なんでそんあことがわかるかって?
なぜなら俺が14Vだから。
420774ワット発電中さん:2007/10/06(土) 17:59:23 ID:GX+9v5eT
わかったよ。
こう言えばいいんだろ

14V乙!!
421774ワット発電中さん:2007/10/06(土) 18:21:52 ID:iZbWKMOZ
もっと言うと14Vは具体的な解説は出来ない。
422774ワット発電中さん:2007/10/06(土) 18:39:48 ID:qumvTW4x
アホバカマヌケエタヨツゴミギャハハ中卒高卒無能知障賤民Metcal〜がよ
を見かけたら全部まとめて14Vでいいんじゃね?
何人かいたとしても、どうせ脳味噌の程度は同着最下位なわけだし。
423774ワット発電中さん:2007/10/06(土) 18:50:24 ID:7rBH0blo
>>422
>アホバカマヌケエタヨツゴミギャハハ中卒高卒無能知障賤民Metcal〜がよ

↑とお前が罵倒されたのか?悔しい悔しいのー 
424774ワット発電中さん:2007/10/06(土) 19:53:18 ID:sF/z3Ooh
414に誰も回答できんのですか?
425774ワット発電中さん:2007/10/06(土) 19:54:54 ID:t0frKLm+
回答してもまたH丸出しで新しい条件付けしたお題出してくるの分かりきってる
回答したけりゃ勝手にしたら?
426774ワット発電中さん:2007/10/06(土) 20:37:38 ID:sF/z3Ooh
根をあげるのが早過ぎると思いますよ。
かなり重要なことだと思います。
 彼が意図していることは、「想定内の不定は不定じゃない。」って
ことです。想定外のことが起こるとき厳密に不定なのです。
だからシミュレータが簡単に発見する不定は不定の内に入らない。

「シミュレータが1と判断しているのに0になるような回路があるのか?」
というのがテーマに近いです。

 実際問題としてもそういう回路が問題なのであって、シミュレータが容易に発見する
不定は問題ないでしょう。

理想のシミュレータがあればこのようなことは起こらないのです。理想の一歩手前の
完成度のシミュレータをだます回路でしょう。そういう回路がかけるかという問いかけ
で、これはかなり難問ではないでしょうか?
427774ワット発電中さん:2007/10/06(土) 21:29:58 ID:i3///XYz
理想論バカ
HDLもシミュレータも単なる道具だろ
何を作るかどうやって作るかが大事だと思うんだが
428774ワット発電中さん:2007/10/06(土) 21:51:09 ID:j8YSSz/q
>>414
> いいか初期値は0だ。世界は0から始まる。これが仮定だ。

この仮定そのものが厳密におかしいだろ
実機で必ず成立すると限らない仮定を導入したら
シミュレーションと実機の動作がずれて当然だ
429774ワット発電中さん:2007/10/06(土) 23:42:56 ID:jyNx1vnj
初期値は0って…、回路設計者の発言とはとても思えないなw
430774ワット発電中さん:2007/10/06(土) 23:53:57 ID:PcVCCFxN
SRAMタイプのFPGAだとコンフィグした時点で初期値は確定してるから、
実回路とシミュレーションを一致させるため「だけ」の非同期リセットは使いたくない。
機能上で必要なリセットには同期リセットしか有り得ないし。
でも最近は、設計スタイルごっこが流行っていて社内基準として非同期リセットを義務付けられている。

無駄を極限まで省いた美しいコードを目指しているところに、そんなおまじないを強要されると
はげしくやる気が失せる。
431774ワット発電中さん:2007/10/07(日) 00:01:13 ID:pMZD/bF2
生産台数によってはASIC化もあるわけで
そういう意味では非同期リセットにする意味はあるよね

というか、同期リセットならコードが美しくなって非同期だとそうならない
ってシーンが思い浮かばないな

そもそも、目指すべきはコードの美しさではなくて回路の美しさだと思う
432774ワット発電中さん:2007/10/07(日) 00:12:20 ID:yEClCOwz
回路の動作とは全く無関係にシミュレータの都合で、
使用されることの無い非同期リセットを付加するのを美しいと思う人もいるのかな?
433774ワット発電中さん:2007/10/07(日) 00:14:41 ID:34yMaD9v
>そもそも、目指すべきはコードの美しさではなくて回路の美しさだと思う

俺としては美しさの基準は人による場合があると思うので、ちがうと思う。
汚くてもかまわないからとりあえず期待通り動く事が望ましい。
それが出来る上で読みやすいのが望ましい。


434774ワット発電中さん:2007/10/07(日) 00:15:50 ID:QNrbKvFV
目指すべきは美しさなどではなく安定動作である。
435774ワット発電中さん:2007/10/07(日) 00:37:23 ID:ulawATti
目指すものは売り上げである。
436774ワット発電中さん:2007/10/07(日) 00:48:44 ID:GDelqxvs
目指すものなぞない、ただクレームを処理するのみ…
437774ワット発電中さん:2007/10/07(日) 01:15:07 ID:f+raN4yD
不定の定義が不定なのではっきりさせようや。

シミュレーションでの不定はある特定時間での値が不明なのであり、
0か1の信号ではあるけどどちらであるか不定。
アナログ的にMOSの閾値レベルを十分に超えて無くて
PMOSもNMOSも半開き状態で信号電圧がLowレベル(GND)とHigh(VDD)の
中間にあり次に繋がるロジックでも同じように半開き状態になり伝搬していく
LowでもHighでもない不定。

前者はすでに例があげられているとおりで、
後者の場合は高周波クロック入力や同期ずれで寄生容量がチャージされる前に
入力信号を切り替えれば不定になる。
寄生容量考慮し遅延情報を与えたシミュレーションならどんなprocess文でも
不定を発生させられるが、遅延情報なしの場合は>>401のように
process(asdf)
begin
  asdf <= 'Z';
end process;
ハイインピーダンス作ってSiウェハからゆっくりリークしていくのを待つしか
ないんじゃないのか。


>>430
コンフィグ直後はいいけど、ECCメモリとかがあるようにロジックでも確率的にエラーが発生するのに
設計バグなどを含めてエラーが出た場合にどうやって復帰するの。
非同期リセットじゃなくて同期リセットを発生させるような外部信号入力だけにしたいってこと?
438774ワット発電中さん:2007/10/07(日) 01:20:05 ID:f+raN4yD
すまん記述がおかしかったので変更
process(asdf)
begin
if (asdf='1') then
out <= '1';
else
out < 'Z';
end process;
439774ワット発電中さん:2007/10/07(日) 01:26:58 ID:pMZD/bF2
後者と言いたいであろうsetup time/hold time違反で起きる現象とは
メタステーブル状態という大変嫌らしいシロモノであって
半開き状態が伝播していくとかいう生易しい話ではないんだぜ

メタステーブル条件においては確率的な要素が入り込むので
厳密なシミュレーションは無理っぽ

非同期FIFOが面倒な理由のひとつ
440774ワット発電中さん:2007/10/07(日) 07:00:53 ID:ugyDJICE
>>438
実デバイスの内部でZ出力とか無理じゃね?と隅をつついてみる。
441774ワット発電中さん:2007/10/07(日) 07:35:57 ID:pMZD/bF2
>>440
最近はASICにもFPGAにも内部で3state(内部bus)が使えるものがあったりするよ
便利な世の中になったもんだ
442774ワット発電中さん:2007/10/07(日) 07:38:28 ID:kvdhaZgE
>>440
全然変じゃない。配線領域を減らすために時分割バス方式も使う推奨はされないが。
443774ワット発電中さん:2007/10/07(日) 08:42:44 ID:GpPgcMTi
>>441
中の配線が融けるぞ
444774ワット発電中さん:2007/10/07(日) 09:30:25 ID:qX9V9LU3
>>431
っていうか、せっかく言語設計してるのに、その素子特有の初期状態をあてにしてるってダメだよな。
445774ワット発電中さん:2007/10/07(日) 11:49:04 ID:yEClCOwz
>>444
全然わかってないなぁ。
実回路の初期状態は同期リセットで確定させるんだよ。
非同期リセットの記述が必要なのは、あくまでも一部のシミュレータでの制約。
素子特有の初期状態をあてにしているのではなくて、
一部のシミュレータ特有の不具合を回避するための記述なんだよ。
設計スタイルガイドを読み直してみ。
446774ワット発電中さん:2007/10/07(日) 12:09:19 ID:pMZD/bF2
同期リセット以外認められないという原理主義者?

実回路で非同期リセットを採用するシステムも珍しくないというか
むしろ多数派って気もするが、>>445の知ってる世界はせまいのだなぁ
という感想しか出ません。

もちろん同期リセットを否定するわけではないが、その場合は
同期リセットに適したツールを使えばいいだけの話ではないのかね
447774ワット発電中さん:2007/10/07(日) 12:15:36 ID:JorRgAJF
>設計スタイルガイドを読み直してみ。 

このスレ前から見てるけど、
世界的になーんにも認定されてないような設計スタイルガイドを
さも、金科玉条の如く持ち出すアホがいるよな。バカなのか?
448774ワット発電中さん:2007/10/07(日) 12:19:00 ID:pMZD/bF2
>>447
starcに頼らないとasicおこせない程度の財力しかない環境にいると
RTL設計スタイルガイドが金科玉条に見えてしまうのだろう
懐が寂しいと心も貧すという典型例
449774ワット発電中さん:2007/10/07(日) 12:25:10 ID:JorRgAJF
というか世界的に何の認知もされてないもんを
水戸黄門の印籠のように持ち出して、"あれ見てみろ"っていったいどういうオツムしてんだ?
C言語のコーディングスタイルとしてK&R見ろってなら理解できるがね。
450774ワット発電中さん:2007/10/07(日) 12:41:05 ID:5pBJc/dM
文字化け(笑)している状態で平然と販売するような
スタイルガイドなんて(ry

ついでに言うと「コーディングスタイルとしてK & R見ろ」も理解できない。
451774ワット発電中さん:2007/10/07(日) 12:45:20 ID:JorRgAJF
なんで?K&Rが設計者なんだから、そこにこそ設計思想がある
設計思想も知らずにスタイルを論じるなんてお笑いだ
452774ワット発電中さん:2007/10/07(日) 12:50:04 ID:JorRgAJF
もっというと、
原典をあたらず、
それを解説本読んでわかった気になってるなんて、間抜け以外の何物でもない
言語のコーディングスタイルごときにその価値があるかどうかは別にしてな
453774ワット発電中さん:2007/10/07(日) 13:51:27 ID:FnSFsyVP
>>445
システムの論理初期化と素子単位の値確定を混同してる模様。
スタート時に『外部動作不定』のまま走り出すのを避けるのは非同期リセット使うだろ?マジもんの実回路では。
同期リセット(セット)は所定動作の為の初期値を与えるのに使ってるぞ。ソフト側から発行させてる場合が多いと思うが。

シミュレータ要求による非同期リセットの要請とは関係なく、“実際に必要な入力”として設計に盛り込まれて
他の入力同様に検証されるものだと思うぞ>>非同期リセット


つか、電源監視からのリセット要求とか、クロック信じられない状況でどうやって同期リセットで止めるよ?
454774ワット発電中さん:2007/10/07(日) 15:17:39 ID:OBI8V+py
>>451-452=懐古厨

古いものを妄信する迷惑な原理主義者の典型だな。
455774ワット発電中さん:2007/10/07(日) 15:35:29 ID:5pBJc/dM
別に間違ったこと書いてある本じゃないから
迷惑ってことは無いと思うが。
必死だな、とは思う。
456774ワット発電中さん:2007/10/07(日) 16:10:00 ID:KwYFenxW
K&Rはきちんと解説してあるから読んでおくべきだと思うが、基準として考えるにはちょっと。
ま、頭っから否定するやつと妄信するやつは、相手にしない方がいいけどな。
457774ワット発電中さん:2007/10/07(日) 16:11:59 ID:/8Jy555/
同期リセットで不具合の起きるシミュレータって何?

あと、Cの原典はISOでK&Rは入門書な。
458774ワット発電中さん:2007/10/07(日) 17:15:34 ID:hjgcqfm3
>あと、Cの原典はISOでK&Rは入門書な。

馬鹿も休み休み言え。K&Rを入門書?お前読んだことないだろ。
良著と言われながら、難解でもっとも完読率の低いのがK&Rだ。
それとだ、ISOはいろんな変遷を経ての結果だ。
設計思想なんてもんは基本的に仕様書には書かれてないことぐらい覚えとけ。
その調子だとStraustrapもModern C++ Designも論文の類も読んだことないだろ?
仕様書は辞書代りに引くもの、じっくり読むのは設計思想が書かれてる原著の方だ。

459774ワット発電中さん:2007/10/07(日) 17:23:36 ID:hjgcqfm3
>>454
古いものを盲信するって?文章をまともに負えない知的障害者が何ほざいてる
人の設計思想を理解する姿勢のない奴は、まともな設計はできないことは保証してやるぜ。
460774ワット発電中さん:2007/10/07(日) 17:43:42 ID:/8Jy555/
K&Rに難解な点があるとすれば、規格表に書いてあることがK&Rには
書いてないってことかな。読んでためになったから、入門書には
いいと思ったよ(当時は)。今更読もうとも思わない。JISならいつでも
ただで読めるしね。

ISOが変遷の結果とすれば、変遷の結果であるCの思想は、K&Rに
書いてないのでは?
461恥晒し上げ:2007/10/07(日) 17:50:40 ID:oScaHJyF
>>457
ハァ?ISOがCの原典って?
ID:/8Jy555/ は日本語理解できないのか?
こういうアホが技術屋やってりゃ日本の将来真っ暗だな。
462774ワット発電中さん:2007/10/07(日) 17:53:31 ID:D/4g6hJG
s/8Jy555//g
463774ワット発電中さん:2007/10/07(日) 17:57:50 ID:pMZD/bF2
一般にはJIS規格書はタダではない
464774ワット発電中さん:2007/10/07(日) 18:22:14 ID:wd72cESY
K&Rはともかくストラウストラップは1,2,3もannotatedも持ってるんだが、
今の若い子はいきなり机の上にVol3を置かれてあれでC++をマスターしようって気になるのか?
こっちはpure Cから順番に長い年月かかってやってきたからなんとかついていけるようなものの。
いきなり千ページ越えじゃやる気が失せないのかね?
465774ワット発電中さん:2007/10/07(日) 18:26:54 ID:wd72cESY
そういう俺は最近JavaScriptに目から鱗で勉強中
なかなかいいやんこれ!
466774ワット発電中さん:2007/10/07(日) 20:27:03 ID:GpPgcMTi
リセットは解除のタイミングが重要だよ
467774ワット発電中さん:2007/10/07(日) 20:43:04 ID:Vn+3nGjY
FPGAのリセットってどうやってやるの?
電源落とすとか、JTAG経由でなにかやるとか?

アホな疑問でスマソ。
468774ワット発電中さん:2007/10/07(日) 20:45:25 ID:GDelqxvs
ROMに書いたら普通に電源落す
FPGAに直接書いたら勝手にリセットかかる
469774ワット発電中さん:2007/10/07(日) 21:16:12 ID:pMZD/bF2
xilinxのvirtexなら INITXという非同期リセット端子がある
コンフィギュレーション動作からからやり直すよ
470774ワット発電中さん:2007/10/07(日) 21:49:20 ID:Vn+3nGjY
>>468
>>469

どうもありがと。
スパルタンVEに同じ端子があるかどうか調べてみます。
471774ワット発電中さん:2007/10/07(日) 23:47:47 ID:ulawATti
どうでもいいようなことをキーキー言い合いして
ガキかお前ら
472774ワット発電中さん:2007/10/07(日) 23:52:58 ID:CRrUg8Wt
遅れて来た酔っ払い乙。
473774ワット発電中さん:2007/10/07(日) 23:59:08 ID:ZGmAKXKZ
>>466
解除タイミング丁度にクロックエッジが!(w
474774ワット発電中さん:2007/10/08(月) 00:01:15 ID:M1lLYo+u
>>473
何が問題だ?
475774ワット発電中さん:2007/10/08(月) 01:48:50 ID:8f92s9mv
コンフィギュレーション動作からやり直すようなデバイスそのもののリセットを>>470は望んでたのか?
普通はそのレベルからのリセットなんかされたら困る場合が多いと思うが?
476774ワット発電中さん:2007/10/08(月) 06:50:13 ID:mo1ahJa7
非同期リセットはロースキュー配線を使わなければいけないことを知っている
人は1/20ぐらい。
477774ワット発電中さん:2007/10/08(月) 07:38:58 ID:bMrvyFDW
1/20ぐらいに初詣に行く?
478774ワット発電中さん:2007/10/08(月) 10:00:45 ID:C8B9QK2q
>>476
そんなことはあるまい。
FPGAばっかりな人でも、リセットラインだけ特別な配線リソースが
与えられてるくらいの事はデータシート見るだけでも分かるぞ?
479774ワット発電中さん:2007/10/08(月) 18:13:11 ID:kDYFxalM
VHDLもそこそこ使える。しかし一番のネックは変数の隠蔽だな。
Blockとシェアード変数で出来るんじゃないかって検討している奴がいたが、
どうなんだろうな。
480774ワット発電中さん:2007/10/08(月) 18:23:19 ID:bMrvyFDW
論理設計で使うRTL記述では変数使わないよな
スレ違い?
481774ワット発電中さん:2007/10/09(火) 14:51:13 ID:hT7epoOe
VHDLはじめたばっかりだけど
std_logicとstd_logic_vectorの違いがよくわからん
1ビットの信号をstd_logic_vectorで宣言してもコンパイラは怒らないし
じゃあ全部同じでいいじゃんと思ってしまうのですが
どこかおかしかったらしゃぶってください
482774ワット発電中さん:2007/10/09(火) 19:19:04 ID:3SF3CSIh
全部同じでいいよ。
483774ワット発電中さん:2007/10/09(火) 23:49:46 ID:2KnLDI1N
Cとかで要素がひとつしかない配列も配列として宣言できるような感じじゃないか
484774ワット発電中さん:2007/10/10(水) 01:27:30 ID:fr6kcgm1
後々パラメタライズ設計をする時に効いてくるので std_logic_vector オススメ。
Recordタイプの初期化も (others=>(others=>'0')) とかで済むからねえ。
485774ワット発電中さん:2007/10/10(水) 04:04:00 ID:A284TC0G
Recordタイプってなんだよ。(others=>(others=>'0')) こんな
書き方始めてみた。
 
486774ワット発電中さん:2007/10/10(水) 19:29:19 ID:fr6kcgm1
データの内部構造を抽象化する時に使います。要は構造体ですね。

architecture RTL of TEST is
 type t_PIXFMT is record
  MVF : std_logic_vector(0 downto 0);
  MSK : std_logic_vector(0 downto 0);
  RED : std_logic_vector(9 downto 0);
  GRN : std_logic_vector(9 downto 0);
  BLU : std_logic_vector(9 downto 0);
 end record;

 signal r_PIXEL : t_PIXFMT;

begin -- RTL
 L_LATCH: process (CLK)
 begin -- process L_LATCH
  if CLK'event and CLK = '1' then -- rising clock edge
   if RST = '1' then -- synchronous reset (active high)
    r_PIXEL <= (others=>(others=>'0')); -- メンバにstd_logicが混じってるとコレがツカエネー
   else
    r_PIXEL <= PIXEL_I;
   end if;
  end if;
 end process L_LATCH;
 PIXEL_O <= r_PIXEL;
end RTL;
487774ワット発電中さん:2007/10/10(水) 19:41:19 ID:A284TC0G
へー。こんなことができるのか。すげー。全然しらなかった。
早速使わせてもらおう。
ありがとよ。
488774ワット発電中さん:2007/10/10(水) 21:53:56 ID:g2iS/MiB
リセットの話はFPGAしか知らない人と
ASICやってるひとじゃ話が通じないな
489774ワット発電中さん:2007/10/10(水) 22:26:39 ID:khmdpq84
そして毎回ループ
490774ワット発電中さん:2007/10/10(水) 23:09:26 ID:ihl20qjE
>>488
ASICやってる人というよりは基板を含めた
回路設計やってる人とじゃ話が違うと思う。
491774ワット発電中さん:2007/10/11(木) 01:16:45 ID:FlWi1p7Z
>>490
非同期リセットの解除タイミングの話とか、セット設計/実装屋の方で問題発覚する類いの物だしな。
電源瞬断試験でリセット信号のライズタイム規格オーバーが見つかったり(ry
492774ワット発電中さん:2007/10/11(木) 07:20:27 ID:wnqLFVL7
>>491
おらあんまり経験ない上にstarcしか知らんもんで後学のために教えてけろ
>非同期リセット解除タイミング
これ問題になるのはリセット解除時にクロックがすでに動いてるシステムですよね?
その場合非同期リセット入力を2段FFで同期化して、それをFFの非同期リセットに
使う方法でも問題になることはありますか?
>ライズタイム
Schmitt triggerの入力パッド使っても問題でたりしますか?
493774ワット発電中さん:2007/10/11(木) 07:53:46 ID:vUZ/halR
×リセット解除時にクロックがすでに動いてるシステム
○リセット解除時にクロック動作がどうなってるか保証がない

>非同期リセット入力を2段FFで同期化
論外だろ リセット印加時にクロックが動いていなかったらリセットかからん
494774ワット発電中さん:2007/10/11(木) 07:56:32 ID:vUZ/halR
>Schmitt triggerの入力パッド使っても問題でたりしますか?

問題は電位レベル閾値ではなくて解除タイミングなのだから
シュミットトリガ使っても何の解決にもならないよ
495774ワット発電中さん:2007/10/11(木) 08:03:36 ID:wnqLFVL7
クロック動いてないとリセットかからないから
クロックがすでに動いてるという前提での話です。
個人的にはそういうシステムは扱ったことなくて
リセット解除後にクロック開始なのでもちろん
同期化なんてしてませんです。
これstarcにのってる方法なんですが
starcはやっぱり駄目なんですかねw
496774ワット発電中さん:2007/10/11(木) 08:10:45 ID:vUZ/halR
設計の都合で勝手な前提を導入すんなよ

starcのデザインガイドは悪いんじゃなくて適用範囲が狭いというだけの話
安く作ってやるからシステムの方が石の方に合わせろって上から目線なんだよ
497774ワット発電中さん:2007/10/11(木) 08:19:33 ID:wnqLFVL7
クロックが動いてなかったら解除タイミングは関係なくないですか?
実際にリセットのタイミング違反を避けるのはどうやってるんでしょう。
色々考えてはいるのですが、良い方法が思いつかなくて
皆はどうやってるのかなあと。
498774ワット発電中さん:2007/10/11(木) 13:16:00 ID:62dyw6fT
クロックが動いていなかったら確かにいつリセットを解除しても
構わないけど、普通そんな事はしないだろう。
PLLがロックする前のどんな波形になるかまったく予想がつかない
クロックを入力されても誤動作しないような回路ばかりだったら
それも可能だろうけど、普通はそんな事はないからPLLが
ロックしてクロックが安定するまでリセットをかけ続けるだろう。

リセットのタイミング合わせは解除のタイミングだけを同期化する。
Lowでリセットの場合は、同期化のF/FとANDゲート一個で作れる。
あと、全てのF/Fの入力がF/F出力の初期値と一致している保証が
あるならば、解除タイミングを全く気にしないという荒業も使える。
499a ◆cA2ugObkLQ :2007/10/13(土) 11:42:26 ID:prsSMvKP
リセットで重要なのは、クロックモジュールに供給するクロックが安定するまで、
クロックモジュールをリセット->解除、
クロックモジュールからの出力が安定した後に、そのクロックを使う回路のリセットを解除する事です。
(FPGAだけで処理出来ない)
あとは回路が意図しない挙動を示した時に動作回路を正常化すること、通知することです。
(ブービートラップ、本来は当たり前のようにあるべき考え方)
回路内で復帰可能なことと、そうでない事がありますから・・

Zですが、inout宣言してもこの記載がないと単なる出力ポートになります。
コンパイルしてRTL回路みれば、すぐにわかるんだけど・・
500a ◆cA2ugObkLQ :2007/10/13(土) 11:53:08 ID:prsSMvKP
システム最初のリセット解除はCPUすら動いてませんから、
電圧が所定の位置まで上がってきて、水晶(セラロックもあるけどね)が安定発振するまで、
リセットICでリセットしています。
これはCPUと水晶とリセットICと基板と電源回路の設計値から決めます。
なお、リセット解除とリセットではヒステリシスを持つので意味が違います。
回路が異常といってもロジックで異常なのか電圧電流ノイズ熱で異常になるのかの検証が必要です。
ジャンクション温度は主に内部回路の消費電力に依存しますので・・
501774ワット発電中さん:2007/10/14(日) 15:09:28 ID:v34H9FR2
大学のゼミでVerilogを勉強することに決めました。
しかし、一体何から手をつけて良いのかわからなくて・・・

シングルサイクルCPUとマルチサイクルCPUは回路図を用いて設計したことはあります(MAX PLUS仕様

とりあえずQuartusUをインスコしてコンパイル、シミュレーションの手順は把握

参考書読んで勉強していくのが一番ですかね?
502774ワット発電中さん:2007/10/14(日) 15:17:51 ID:jzDQzzcb
それ以外にないような・・・
503774ワット発電中さん:2007/10/14(日) 23:51:57 ID:LAU/yIHX
>>501
デジタル回路の初歩的なことを理解する事、デジタルを除いたアナログの勉強をする事、
色々な人たちとコミュニケ-ションをとる事、正しく見積もりが出来る事、
自分で考えられる事は自分で考える事。これらを特に推奨するよ。
どれも一見HDLの理解には関係ないけど君が社会人としてやっていくには
必要な事だね。これからよき技術者としてやっていけるよう頑張ってください。
504774ワット発電中さん:2007/10/15(月) 00:43:43 ID:UJ+m7bf3
>>501はゼミで使うだけで、就職は全く別分野に1票
505774ワット発電中さん:2007/10/15(月) 03:26:21 ID:pQRjLOdI
使うだけのひとタイプ
506774ワット発電中さん:2007/10/15(月) 04:11:45 ID:NWmvhv1g
メモリの使用方法に関して質問させていただきます。

ターゲットデバイスがVirtex-5はです。
Virtex-5でのQDRUSRAMインターフェースの仕様書はあったのですが、
それを実際どのように実装してよいのかがわかりません。

よろしければご教授お願いいたします。
507774ワット発電中さん:2007/10/15(月) 07:40:35 ID:uhCbX5Jr
>>501
回路図を用いてCPUを設計した経験があるなら、
まずはそれをHDLで起こし直して見る事から始めるのもイイかも。
記述がどのような回路に落ちるのか・・・を意識しながら勉強していく感じ。

>>506
CoreGenに含まれるMiGでMemoryInterfaceを生成するのがお手軽です。
508ど素人:2007/10/15(月) 12:35:55 ID:z8/m8P9J
>>501 >>507
CPUの設計って”回路図(SCH.CAD?)※”で
簡単に設計できるものなの・・・????

※ 結線図外ではテキスト形式又は記述の様な表し方
509774ワット発電中さん:2007/10/15(月) 16:49:56 ID:CfBQ9rGN
どういうレベルのものかはまではわからんが
MAXPLUS使用で回路図と言うからにはGDFで書いたんでしょ
HDLで書き直してみるにはいい題材と思うぜ
なにせ間違いなくMaxplusでコンパイルできるからな
510774ワット発電中さん:2007/10/15(月) 21:46:32 ID:Bc+7usKI
HDLを覚えると回路図入力が億劫になってかなわん。
トップレベルはGDFでブロック図代わりになっていいんじゃね?とか思ったが
想像以上にめどいんであきらめた。
511774ワット発電中さん:2007/10/15(月) 23:58:14 ID:Z6tOScDa
>>510
TOPは面倒でも気合でGDF入力してる。「ブロック図ブロック図」って煩い上司がいるもんで・・・
512774ワット発電中さん:2007/10/16(火) 00:08:46 ID:q2fQ8ymn
逆に考えるんだ
TOPをGDFで書けば、ブロック図を書かずに済むと
513501:2007/10/16(火) 13:43:22 ID:WThxZgAY
皆さんありがとうございます
.gdfで書いたものをHDLで書き直してみたいと思います
514イカロス:2007/10/17(水) 16:16:54 ID:cVfIx5C6
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity hitoketa is
port ( CLK : in std_logic;

SEG7LED : out std_logic_vector(7 downto 0));
end hitoketa;

architecture RTL of hitoketa is

signal BIN4 : std_logic_vector(3 downto 0);
signal CNT : integer range 0 to 32999999;
signal T1S,RESET,STOP : std_logic;
515イカロス:2007/10/17(水) 16:17:24 ID:cVfIx5C6
begin


process (CLK,STOP)
begin
if (CLK' event and CLK= '1') then
if(STOP='1')then
CNT<=CNT
elsif ( CNT = 32999999 ) then
T1S <= '1';
CNT <= 0;
else
CNT <= CNT + 1;
T1S <= '0';
end if;
end if;
end if;
end process;
516イカロス:2007/10/17(水) 16:18:35 ID:cVfIx5C6
process ( T1S , RESET)
begin
if (RESET ='0')then
BIN4 <="0000";
elsif(T1S' event and T1S= '1') then
if( BIN4 = "1001" )then
BIN4 <= "0000";
else
BIN4 <= BIN4 + 1;
end if;
end if;
end process;
517イカロス:2007/10/17(水) 16:19:54 ID:cVfIx5C6
process (BIN4)
begin
case BIN4 is
when "0000" =>SEG7LED<= "00000011";
when "0001" =>SEG7LED<= "10011111";
when "0010" =>SEG7LED<= "00100101";
when "0011" =>SEG7LED<= "00001101";
when "0100" =>SEG7LED<= "10011001";
when "0101" =>SEG7LED<= "01001001";
when "0110" =>SEG7LED<= "01000001";
when "0111" =>SEG7LED<= "00011111";
when "1000" =>SEG7LED<= "00000001";
when "1001" =>SEG7LED<= "00001001";
when others => null;
end case;
end process;

end RTL;

10進1桁カウンタ回路を作ろうと思ってます。何度試行錯誤しても動きません。
どなたかご教授おねがいします。。。
518774ワット発電中さん:2007/10/17(水) 17:42:30 ID:VIzEyb9X
分周出力が次の段のクロック入力っすか?

やめようよ.......
519774ワット発電中さん:2007/10/17(水) 18:08:37 ID:ehXSz0i/
>>517
動く動かない以前にコンパイル通らないだろ。
エラー無くなるまで直して再提出な。
520774ワット発電中さん:2007/10/17(水) 20:19:10 ID:2bNN58G6
CNTのリセット追加とintegerをstd_logic_vectorへ、
記述が分かれていても'eventに使う信号は1つのみで何種類も使わない。
521774ワット発電中さん:2007/10/17(水) 22:24:18 ID:OLVTvSnO
>>'eventに使う信号は1つのみで何種類も使わない
全体を一つのものとして考えるとそうだが、彼の場合は本人の言ってる通り、
目的はあくまでも10進カウンタの部分だけであって、分周している部分は
学校かどこかの実機で動作確認するための都合とも考えられる。
つまり載ってる発振器の周波数が高すぎて目視じゃわからないので遅くしているとか。
もしそうなら現状の方が適当だろう。
522774ワット発電中さん:2007/10/17(水) 22:53:17 ID:R5knYzO3
resetとstopは何処から与えられるんだ?
523774ワット発電中さん:2007/10/17(水) 23:03:23 ID:OLVTvSnO
霊界とか黄泉の国とか・・・・
524774ワット発電中さん:2007/10/18(木) 05:27:56 ID:j3YsJMPm
こういう時って、RESETはデフォールトで'0'なんだろうか?
これはワーニングかエラーでるよな。
525774ワット発電中さん:2007/10/18(木) 21:36:56 ID:7Bm7z3QO
↑ワーニング低学歴バカ発見
526774ワット発電中さん:2007/10/18(木) 21:37:56 ID:TN7aWq/S
>>515-516
T1Sをクロックにしてるのがすげぇ気持ち悪い。
>>516
process( CLK,T1S,RESET )
begin
--リセットは省略
elsif( CLK'event and CLK='1' and T1S='1' ) then

だろ。

>>527
早朝から釣りですかw
527774ワット発電中さん:2007/10/18(木) 21:39:09 ID:vM+HTRWc
釣りです。
528774ワット発電中さん:2007/10/18(木) 22:14:10 ID:RKNyQHmQ
シュミレート、シュミレーター、シュミレーション
529774ワット発電中さん:2007/10/18(木) 22:15:02 ID:vM+HTRWc
シミュレーションがシュミレーションだと思っていた高校3年生の夏。
530774ワット発電中さん:2007/10/18(木) 22:46:31 ID:ddjtZLpR
逆起電力は起きますか?
531774ワット発電中さん:2007/10/18(木) 23:17:03 ID:2E7T3j3h
そりゃ逆でも起電力ですから。
532774ワット発電中さん:2007/10/19(金) 01:42:24 ID:Y1+l8dST
warningは「尾張」と読むのが正しい。
533774ワット発電中さん:2007/10/19(金) 07:20:47 ID:S3/0Jrlb
>>524
デフォールト→デファウルト
エラー→エロー

誤読するなら、これぐらい徹底しようよ。
534774ワット発電中さん:2007/10/19(金) 08:53:49 ID:SYhtRV2A
エロルじゃなかったのか
535774ワット発電中さん:2007/10/19(金) 13:31:30 ID:ORfh0f1Y
>>533
うわキモ
536イカロス:2007/10/19(金) 14:58:48 ID:5qDhjbar
process( CLK,T1S,RESET )
begin
if (RESET ='0')then
BIN4 <="0000";
elsif( CLK'event and CLK='1' and T1S='1' ) then
if( BIN4 = "1001" )then
BIN4 <= "0000";
else
BIN4 <= BIN4 + 1;
end if;
end if;
end process;

こうしたけどエラーがでる><>>526
537774ワット発電中さん:2007/10/19(金) 18:13:11 ID:zX1rlKuf
どんなエラーが出る?まずはそこからだ。

クロックがおかしいって言われてねぇ?
538774ワット発電中さん:2007/10/19(金) 20:08:19 ID:u5BJZJYj
エラーには普通、行番号が書いてあったと思うけど、気にしない前向きな性格?
539774ワット発電中さん:2007/10/19(金) 22:22:25 ID:xCO2qNx+
周辺回路設計、電源設計、Verilogって全部やってる人って結構多い?
540774ワット発電中さん:2007/10/20(土) 21:39:06 ID:clJCs4Ym
電源はやらない
541774ワット発電中さん:2007/10/20(土) 23:11:18 ID:zTE9LU1W
俺は全部やる。
基板設計もやるし、外注に出すところは実装くらい
542774ワット発電中さん:2007/10/21(日) 10:20:27 ID:k2GcMwXn
俺は実装だけだな。後は全部外注。
VHDLなんて誰でもできるし。
543774ワット発電中さん:2007/10/21(日) 13:36:30 ID:pVpuRbJo
実装業者かよ
544774ワット発電中さん:2007/10/21(日) 13:41:39 ID:RPKVwyr1
実装設計屋なのかアセンブリ屋なのかはっきりしろ。

両方一貫でやってくれるアリガタイ業者なら尚よし。
545774ワット発電中さん:2007/10/21(日) 13:46:19 ID:rsbUwthk
この板にいる方は社会人の方ですか?

詳しそうな人がいっぱいいそうです><
546774ワット発電中さん:2007/10/21(日) 23:29:38 ID:7a8yOQa9
542は、設計の話をしてるところに颯爽と工員が登場
っていうギャグだと思ったんだけど違うの?上げてるし。
547774ワット発電中さん:2007/10/22(月) 13:04:28 ID:eGXl3v0e
sageデフォ脳か
548774ワット発電中さん:2007/10/22(月) 15:16:01 ID:Chq82aGd
開き直りage厨か。
549536:2007/10/23(火) 14:08:48 ID:n4aHg+oc

Error (10500): VHDL syntax error at hitoketa2.vhd(35) near text "elsif"; expecting ";"
をクリックするとelsif ( CNT = 32999999 ) then
を表示するの


Error (10500): VHDL syntax error at hitoketa2.vhd(43) near text "if"; expecting "process"をクリックすると
end if;を表示します。

解読不能です><
550774ワット発電中さん:2007/10/23(火) 15:49:38 ID:mX1+TLjQ
>>549が英文読めないのは理解した
551774ワット発電中さん:2007/10/23(火) 19:13:49 ID:PmNGQyUl
近所の中学生に1000円ほど払って読んでもらうといいんじゃないか?
でも見知らぬ子に声かけると犯罪者と間違われるから要注意な。
552774ワット発電中さん:2007/10/23(火) 19:37:11 ID:Cbo1gWYb
解読する必要なんか無いぞ
hitoketa2.vhd(35) 35行目前後を調べる。
hitoketa2.vhd(43) 43行目前後を調べる。
これで十分。
553774ワット発電中さん:2007/10/23(火) 21:24:21 ID:LEpmBsMd
CNTがsignalだからじゃね?
554774ワット発電中さん:2007/10/24(水) 08:49:36 ID:6m39vtEn
だからsyntax errorだっていってんでんだろうが
555774ワット発電中さん:2007/10/24(水) 08:59:54 ID:7nKCgP3v
こんなに詳しく親切なエラーメッセージなのにまったく活用できてないんだね

>>549にとっては
 ?SN Error in 35
だけのエラーメッセージと同じことなんだろうな
556774ワット発電中さん:2007/10/24(水) 09:02:06 ID:ffzXFEVi
ちょー懐かしいな、そのエラーメッセージww
557774ワット発電中さん:2007/10/25(木) 23:29:33 ID:shL5zhAS
あれだよ、if文の評価式の右辺が型指定されてないからだよ!
558774ワット発電中さん:2007/10/25(木) 23:48:24 ID:K2JripOK
グローブボックスの下
559774ワット発電中さん:2007/10/26(金) 08:59:16 ID:Yh92q9nY
マジレスすれば elsifの前(34行目?)で ; が抜けてて
そのせいで if - end if;の対応がずれてしまってるとかいう話だろうな

つーか、ネタバラシするの早すぎたらゴメン
560774ワット発電中さん:2007/10/26(金) 10:31:21 ID:lnW5Kuzd
>>559
残念ちょっとちがうんだな
561774ワット発電中さん:2007/10/26(金) 11:57:02 ID:y528K3d9
↑尾間塩谷和歌欄だろか巣。
562イカロス:2007/10/26(金) 14:58:51 ID:ExakaBRP
>>559
マジサンクスm(__)m
プログラミングって難しい><
563774ワット発電中さん:2007/10/26(金) 19:29:10 ID:DJBAH7la
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
expecting ";"
564774ワット発電中さん:2007/10/26(金) 22:23:24 ID:Yh92q9nY
難しいのプログラミングではなくてイカロスの英語読解力だな
565774ワット発電中さん:2007/10/26(金) 22:40:48 ID:LsLT2QXZ
ああ、if〜elsif〜end if
566774ワット発電中さん:2007/10/26(金) 23:58:06 ID:C1ij8dZM
何でelseifじゃなくてelsifなんだろうな?>VHDL
567774ワット発電中さん:2007/10/26(金) 23:58:57 ID:HhP4qhCU
perlもelsifだっけ。
568774ワット発電中さん:2007/10/27(土) 00:30:35 ID:eesPErsp
パーサがelseifだとelse ...とelseifの区別にはelseの次まで見ないと
いけないが、elsifならその必要がないから・・・という貧乏な理由だったり。

else if と elif/elseif/elsif ならぶら下がり問題がないからだけど、
elseifとelsifだとよくわからん。
569774ワット発電中さん:2007/10/27(土) 00:38:25 ID:buGTinJF
>>568
人間が読むときもelsifのほうが分岐の深さを気にしないで読めるけどね。
elseif だと else if と読んだ時の音同じになるから elsif にしてるんじゃないのかね?
構文決めたの昔の話だし
570774ワット発電中さん:2007/10/27(土) 01:23:03 ID:1GeRkc38
好みの問題じゃねーの?
571774ワット発電中さん:2007/10/27(土) 09:26:23 ID:mKWGqqnm
VHDLは使う側は大変だろうが、チェックしたりする時にソフト処理するのには
単純で、都合がいいね。
572774ワット発電中さん:2007/10/27(土) 11:04:45 ID:pDi0anjS
VHDLのような型が強い言語は融通がきかない
だがそこがいい
573774ワット発電中さん:2007/10/27(土) 19:23:18 ID:MLMMDhIu

VHDLの仕様決めた偉いセンセたちは、TAB=space*6で使っていたからに決まっている。
574774ワット発電中さん:2007/10/29(月) 20:29:23 ID:p0hJNiV3
うまいこと言い過ぎるとレスが止まるので注意。
575774ワット発電中さん:2007/10/30(火) 09:34:50 ID:/WfVnL43
vhdlで
std_logic_vector(7 downto 0);
と宣言した信号を
std_logic_vector(0 to 7);
と宣言した信号にまとめて代入するにはどうしたらよいでしょうか?
1ビットづつ代入するしかないのでしょうか?
576774ワット発電中さん:2007/10/30(火) 09:51:51 ID:hE+3KpBw
こんな感じでいかが?

architecture demo of sample is
 signal downvector : std_logic_vector(7 downto 0);
 signal upvector : std_logic_vector(0 to 7);
begin
 upvector <= downvector(0 to 7);
end demo;
577774ワット発電中さん:2007/10/30(火) 10:11:07 ID:/WfVnL43
>>576
ありがとうございます。

以下ソースでやってみました。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity test is port(
    in1 : in std_logic_vector(7 downto 0);
    out1 : out std_logic_vector(0 to 7));
end test;

architecture rtl of test is
 signal tmp:std_logic_vector(0 to 7);
begin

   tmp<=in1(0 to 7);
   out1<=tmp;

end rtl;


quartusでは14行目のin1(0 to 7)のところで以下のようなエラーになってしまいます。
range direction of object slice must be same as range direction of object
オブジェクトのスライスの方向(アップかダウンか)は(代入される)オブジェクトの方向と同じでなければならないという意味ですよね?
実際に同じ方向にそろえてあるのですがなんでエラーになるか解りません。
578774ワット発電中さん:2007/10/30(火) 20:07:50 ID:EK71F/Ff
答えはわからんけど、やりたいこともわからん。
in1(0)を、out1(0)に入れたいのかout1(7)に入れたいのか。
579774ワット発電中さん:2007/10/30(火) 21:04:28 ID:Rf9yf58a
in1宣言時と逆方向に並べた時点で文句いわれてるんじゃね?in1(0 to 7)
地道にfor文で1ビットずつ入れる方が安全かと。
580774ワット発電中さん:2007/10/30(火) 21:14:05 ID:Yqj0scIz
普段"to"って使う?
混在するとややこしいことになるから"downto"で統一しろと教わったなあ。

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity conv is
 generic (
  DWID : integer := 8);
 port (
  DAT_I : in std_logic_vector(DWID-1 downto 0);
  DAT_O : out std_logic_vector(0 to DWID-1)
  );
end conv;

architecture RTL of conv is

begin -- RTL

 L_GEN_CONV: for i in 0 to DWID-1 generate
  DAT_O(i) <= DAT_I(DWID-1-i);    -- DAT_O(0) <= DAT_I(7);
--  DAT_O(i) <= DAT_I(i);    -- DAT_O(0) <= DAT_I(0);
 end generate L_GEN_CONV;

end RTL;
581575:2007/10/30(火) 22:39:37 ID:0onhVnTr
>>578
上の例の場合はin1(0)をout1(7)に入れたいです。
用途は、ひとつのベクタ信号をある変数に代入するときにフラグが'1'か'0'かによって昇順降順を切り替えたいのです。
一発で入れ替える方法が無ければ>>579さんのおっしゃるように1ビットづつ入れ替えてもいいのですが、
一般的に使われそうなのでコンバート用のマクロなどがあるかと思いました。

"range direction"で探してみますと、以下のようなのがみつかりました。

Note the inverse range directions (FAQ Part 4 - B.193) of the slices (FAQ
Part 4 - B.222) and the arrays "r3" and "r4". The 87 LRM does not clarify,
if this is legal, but the official interpretation of the 87 language (VASG)
says that the directions of slices must match the direction of the array
being sliced. So it is not legal code. This decision is reflected in the
VHDL'93 LRM.
http://www.sigda.org/Archives/NewsGroupArchives/comp.lang.vhdl/1999/Dec/comp.lang.vhdl.26156.txt

すくなくとも93年版のVHDLだとオブジェクトの宣言時のdirectionとそのスライスのdirectionは同じじゃないといけないということでしょうか
582575:2007/10/30(火) 22:44:20 ID:0onhVnTr
>>580
ありがとうございます。参考にさせていただきます。
583774ワット発電中さん:2007/10/31(水) 21:06:49 ID:cGp2wgv1
VHDL関係の本はCQ出版とSTARCしか知らないんですが、
VHDL'93とかVHDL'98 ?のリファレンスってどこかで入手可能なのでしょうか。

本を読んで回路は書けるようにはなったものの CONV_ 等の記述が不足してたり
索引がしょぼくて機能が見つけにくかったりしますし、
ソフトに依存しない便利な記述があるなら積極的に使って分かりやすくしたいなと。
ソフトに依存する部分はそれはそれとして分けてあるといいんですが。
584774ワット発電中さん:2007/10/31(水) 23:04:18 ID:CYChW3zf
>>583
この辺はどう?

ttp://ieeexplore.ieee.org/xpls/abs_all.jsp?tp=&isnumber=4299593&arnumber=4299594&punumber=4299592
1076c-2007
IEEE Standard VHDL Language Reference Manual Amendment 1: Procedural Language Application Interface

ttp://ieeexplore.ieee.org/xpls/abs_all.jsp?tp=&isnumber=21658&arnumber=1003477&punumber=7863
1076-2002
1076 IEEE Standard VHDL Language Reference Manual

ttp://ieeexplore.ieee.org/xpls/abs_all.jsp?tp=&isnumber=19335&arnumber=893288&punumber=7180
1076-2000
IEEE Standard VHDL Language Reference Manual

ttp://ieeexplore.ieee.org/xpls/abs_all.jsp?tp=&isnumber=8908&arnumber=392561&punumber=3116
1076-1993
IEEE standard VHDL language reference manual.

ttp://ieeexplore.ieee.org/xpls/abs_all.jsp?tp=&isnumber=987&arnumber=26487&punumber=2589
1076-1987
IEEE standard VHDL language reference manual

その他多数
ttp://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&q=site%3Aieee.org+-filetype%3Apdf+vhdl+reference&lr=
585774ワット発電中さん:2007/10/31(水) 23:24:00 ID:2VjLGFO0
VHDLでTESTというout信号に対して

TEST <= '0' when (条件1) else 'X';
TEST <= 'Z' when (条件2) else '1';

※↑process文の外

というように同時に違う条件で値が代入される書き方ってダメですよね?
人様が書いたコードの中にこのようなところがあったのですが・・・。
コンパイルもTEST信号に問題があると言われて通りませんし。
コメントアウトし忘れたのでしょうか??
586774ワット発電中さん:2007/11/01(木) 00:22:32 ID:wFX1zV2E
普通にOKだよ。 ORになる。
587774ワット発電中さん:2007/11/01(木) 00:25:54 ID:aEeZMnAC
このスレ見てるとVHDLが多そうだけど、Verilogの方が少数なの??
588585:2007/11/01(木) 07:03:45 ID:e5U8B0Qz
>>586
おお、そうでしたかw
もう一度よく見直してみます。
ありがとうございました。
589774ワット発電中さん:2007/11/01(木) 08:18:10 ID:Aq9UO/ZC
Multi-sourceの記述がorに落とし込まれるかどうかは、合成ツールの実装に依存するんじゃないかな。

>>585の元ソースを書いた人も、使っている合成ツールによって下記のような記述に落ちる事を
想定して記述したのだとは思いますが、どんなツールでも通る様に記述しておくのが無難だと思います。

TEST <= '0' when (条件1) else
      'Z' when (条件2) else '1';
590774ワット発電中さん:2007/11/01(木) 20:07:15 ID:op/4kQsF
>>583
> ソフトに依存
ってなんですか?

conv_云々などの使い方なら、std_1164.vhdとかnumeric.vhdとか、そんな名前の
ツール付属の標準ライブラリのソースを見たらいいんじゃないでしょうか。
591774ワット発電中さん:2007/11/01(木) 20:11:18 ID:lHWiItlg
アルテラにだけ有るROMだかのツールとかそう言う事じゃない?
592774ワット発電中さん:2007/11/01(木) 20:54:28 ID:uPi/fod3
>>584
せっかく紹介してもらったのですがIEEE会員になるのは敷居が高いです。
593584:2007/11/01(木) 21:36:10 ID:zbBZt9jW
>>592
会員にならなくてもPDFあったでしょ?なかった?
594774ワット発電中さん:2007/11/02(金) 09:55:21 ID:0xDjFbUf
IEEE memberじゃなくてもOK
誰でもIEEE web accountの登録が可能
そうすればIEEE規格書を購入できるよ
595774ワット発電中さん:2007/11/03(土) 00:26:19 ID:J+M94r5F
>>594
JTAGの規格書買おうとしてあまりの高額さに泣いたよ。

そんなの払うくらいならIEEE memberになってやる!と思って調べると
IEEE Computer Society(こっちの方が自分には近い)はIEEE本体とは
別組織ですみたいな感じでまた泣いたよ。
596774ワット発電中さん:2007/11/05(月) 11:14:08 ID:L1YbATXa
http://yamazaki3104.seesaa.net/article/22970350.html
■ハード屋の祭り
ハード屋の方で珍しく祭りが起きていた。いや、普段から祭りのようなのだが
俺たちが気付いていなかっただけだった。
何でも、ブレッドボードの作成&評価日程がスケジュールから押し出されて、
一気にハードだけでも最終製品に仕上げてしまうとの事だった。
俺にはそれはどれほど大変な事なのか分からなかった。所詮はハードの話だ。
所詮はハード、俺たちには無関係。そう思っていられたのは、ES製品のASIC
(プロセッサ内臓)に付いているはずのJTAG-ICE端子が基板設計ミスによって
ボード上に繋がっていなかったと知るまでの間だった。
「ICEが繋がらない?」
「端子にジャンパ線繋げれば出来るはずだろ?」
「それがBGA品なんです。ジャンパは不可能です。」
それを横で聞いている時には、意味が分からなかった。

--------

 デスマーチにハマるのは、ソフトウェア開発という仕事だけではありません。
ハードウェアの開発部隊であっても、スケジュールがタイトであれば、
ソフトウェア開発と同じようにデスマーチになるわけです。
おそらく、デスマーチにハマるのはシステム開発という職種が発症する
特別な病気ではなく、規模が巨大で、スケジュールが短いプロジェクトでは、
業界の職種を問わず発症する病気なのでしょう。
 規模が巨大なため仕様が曖昧になり、何をすればいいのかわからなくなり、
やってもやっても作業は減らず、報われず、疲労とストレスが溜まり、
ひたすら体力勝負の全力疾走を強いられ、これが与えられた仕事だから、
周りに迷惑をかけたくないから……といった正義感だけで体を支え、
鞭を打って働く。これは、決して個人の能力の無さによって発症するのではなく、
単純に「金さえあれば規模や短納期の問題は乗り越えられる」と考える
一部の視野の狭い管理職の判断ミスから発症しているのです。
597774ワット発電中さん:2007/11/05(月) 11:27:26 ID:J2McFt1m
ハードって無理なものは無理だからな
勝手に上がスケジュールの線を縮めてもすぐ無理が露見するだけ

修正コストが高いからこそ、設計の検証をきっちりやってて
ミスが露見しにくいだけであって、簡単な仕事をやってるわけではない

最悪出荷した後でも修正がきくソフトとは大違い
598774ワット発電中さん:2007/11/05(月) 12:03:06 ID:mkZqgTqy
金さえあればと考える管理職なんてマシ。
今は何が何でも金を出さない管理職が蔓延してる。
599774ワット発電中さん:2007/11/06(火) 01:54:42 ID:zM7sFVZl
600774ワット発電中さん:2007/11/07(水) 02:08:38 ID:lXM8BMob
>>598
人をかければ何とかなるんだろう、人を呼んできて…
と言うが、人を呼ぶための金の話になるとトタンにそんなに出せん、と言う。

人件費の感覚がマヒしてるんだよな。自分の所が、「定額制」だから。
いくら忙しく残業を増やしても、人件費は変わらないんで。
601774ワット発電中さん:2007/11/07(水) 02:15:06 ID:UV3LS02B
簡単に金で人材は買えないよ。
頭数増やしても納期は縮まらないのにな。
602774ワット発電中さん:2007/11/07(水) 09:07:45 ID:gmNerxUg
>>601
金で人材は買えるが、単にそこまで出せないだけ。

宝石店の前で「ウワァーン、10000円も出すのにダイヤの指輪買えない!」と
泣き叫ぶようなもん。お前にはガラス球ですらもったいないわ!といいたい。
603774ワット発電中さん:2007/11/07(水) 15:43:47 ID:QRKcUUfm
w
604774ワット発電中さん:2007/11/07(水) 16:14:47 ID:qFR6NDkj
俺俺。月120万の契約で助っ人に入ったが、待ち状態で、仕事がない。
漫画読んで、2chやっておしまい。

605774ワット発電中さん:2007/11/07(水) 20:53:44 ID:Irkn5p9G
>>597
でも、言語設計してるとハードも納入後に変更が効くと思ってる奴がいるんだぜ?

勘弁して下さい........orz
606774ワット発電中さん:2007/11/07(水) 22:32:19 ID:ZUdEJs4H
>>605
効くじゃん。初期費とリペア費を払ってもらえば。www

人手に関しては似たりような会社が多いって事かorz
必要の無いときには「人手が足りなければ雇えばいい。」って大きい事言ってるくせに
土壇場になると「予算が無い。」とか言い出しやがる。
607774ワット発電中さん:2007/11/08(木) 04:28:37 ID:ZofkN9LB
細かい仕様は実物が出来てから決めればいいと思ってる
馬鹿客が多いのが困りものだ。

このての輩は、その期に及んでもろくに考えていないから
思いつきで作らせては変更を繰り返し、上司が何か言うとすぐに意見を変える。
608774ワット発電中さん:2007/11/08(木) 06:46:18 ID:gqZlpIn9
「最近はあれだろ?FGPAとかで出荷後でも修正できるんだろ?」
609774ワット発電中さん:2007/11/08(木) 10:10:13 ID:bBra6JpP
仕様が天から降ってくるのを口を開けて待っている馬鹿ってほんとつかえねえよな
610774ワット発電中さん:2007/11/11(日) 08:46:15 ID:/acDCb/P
611774ワット発電中さん:2007/11/11(日) 12:38:42 ID:Mkw9xbF9
自動車も出荷後に修正が出来れば楽なんだけどな。
・・・・リコールすれば出来るけどな。つか7割はリコールだが。
612774ワット発電中さん:2007/11/11(日) 22:27:40 ID:/acDCb/P
時々エンジンの自動アップデートしてくれる時代がもうすぐ来ますよ
613774ワット発電中さん:2007/11/11(日) 23:12:45 ID:klrLzPGA
排気ガス規制が強化されるたびにパッチが当たるのですね
614774ワット発電中さん:2007/11/11(日) 23:21:35 ID:GEZ58RWQ
トラ技に出てた“ノーパソ繋げっぱなしのECU”を思い出した(w
615774ワット発電中さん:2007/11/12(月) 12:37:42 ID:TLFgfv5m
失礼します。

Verilogで、シングルポートSRAMの動作モデルを記述すると、
inとoutでポートが異なるのが一般的ですが、
実際のシングルポートSRAMはinとoutで同じポートです。

設計時にはこの違いのどのような点に気をつけるべきですか?
また、動作合成及び配置配線時に、何かソースに手を加えないといけないことがありますか?

ご教授願います。
616774ワット発電中さん:2007/11/12(月) 14:35:39 ID:Ii8xJ+H6
inoutとかってポート指定は無いの?
617774ワット発電中さん:2007/11/12(月) 15:06:43 ID:TLFgfv5m
>>616
inoutという、ポートの種類はあるんですが、

RAMの動作記述では、多くの参考書ではinoutが使用されていません。
下記のように、書き込み用と読み出し用にデータポートが分かれています。

module sram1 (clk, wr_en, data_in, addr, data_out);
parameter DATA = 8;
parameter ADDR = 8;

input clk, wr_en;
input [DATA-1:0] data_in;
input [ADDR-1:0] addr;

output reg [DATA-1:0] data_out;

reg [DATA-1:0] ram [(2**ADDR)-1:0];

always @(posedge clk)
if (wr_en)
ram[addr] <= data_in;
else
data_out <= ram[addr];
endmodule

実際のSRAMの構造と違うので、合成の段階で何か特殊な操作が
必要なのかと思い引っかかっています。
618774ワット発電中さん:2007/11/12(月) 15:13:16 ID:kWrNfhQu
たしかISEでinout使うとIOバッファを作らないみたいなオプション入れないとコンパイルできなかったな
趣味のレベルの人間だから良くわからんけど
619774ワット発電中さん:2007/11/12(月) 15:34:41 ID:TLFgfv5m
>>618
そうですか。ありがとうございます。

配置配線時にメモリマクロを使う場合、問題は起こらないでしょうか?
620774ワット発電中さん:2007/11/12(月) 16:12:06 ID:68lNT5PG
メモリマクロって事はオンチップのメモリの事?
621774ワット発電中さん:2007/11/12(月) 16:25:36 ID:TLFgfv5m
>>620
その通りです。
計算でどうしても必要、というかぶっちゃけた話、FFTの回路で使おうと思っているんですが、
どうしても実際のRAMと動作モデルとのメモリインターフェースの違いが気になって仕方ないんです。
622774ワット発電中さん:2007/11/12(月) 16:37:15 ID:68lNT5PG
オンチップメモリのマクロはFPGAだったら、in out別だよ。
ASICは知らないけど、。
623774ワット発電中さん:2007/11/12(月) 16:49:01 ID:TLFgfv5m
>>622
参考になりました。
ありがとうございます。

参考資料のRAMの動作モデルの記述がinとoutが別なのは、
FPGAをターゲットにしてるからかも知れません。


自分としては、シングルポートSRAMの構造に従って、inoutで記述してみようと思います。
624774ワット発電中さん:2007/11/12(月) 18:42:09 ID:Uv2gXr1o
なんでわざわざ内蔵RAMをシングルポートにしたいの? 意味ないよ

外付SRAMデバイスが双方向シングルポートである理由は
単にI/Oパッドとデバイス間配線のコスト問題

将来的に大きいサイズの外付SRAMを使う予定でもない限り
in/out別の参考資料の通り使えばいいよ
625774ワット発電中さん:2007/11/12(月) 19:08:43 ID:TLFgfv5m
>>624
そうなんですか。

確かに大きい外付SRAMを使う予定はありません。
気にする必要が無ければ、inとoutが別の方が格段に考え易いので、
そちらにしたいと思っています。

大変参考になりました。ありがとうございます。
626774ワット発電中さん:2007/11/12(月) 21:23:37 ID:BFr08yDW
44ピンのパッケジーに60ピンのRAMを入れたいのだが
627774ワット発電中さん:2007/11/12(月) 21:32:39 ID:kWrNfhQu
cpld挟んで上のほうのアドレス固定してやれば?
628774ワット発電中さん:2007/11/12(月) 21:50:16 ID:OEUyV1mG
「パッケジー」に「60ピンのRAM」・・・質問です氏かなぁ。
629774ワット発電中さん:2007/11/13(火) 16:13:34 ID:braUWCUL
エラーを小出しにするんじゃねえぼけ>quartus
630774ワット発電中さん:2007/11/13(火) 16:32:32 ID:kKzDjn0J
糞なソース書くんじゃねえよ
631774ワット発電中さん:2007/11/13(火) 19:27:03 ID:Qg7pUU3d
小出しって・・・そんなにいくつもw
632774ワット発電中さん:2007/11/16(金) 01:46:49 ID:vtJ1VAnm
エラー:お前のコードは汚すぎてコンパイルできない。一昨日きやがれ。
とか?
633774ワット発電中さん:2007/11/16(金) 17:42:10 ID:CCfioVEJ
wait for -2 * 24 * 60 * 60 sec;
634774ワット発電中さん:2007/11/16(金) 19:13:41 ID:LcgMwa/U
ちと苦しいトランスレーションだな、それw
635774ワット発電中さん:2007/11/16(金) 22:50:32 ID:CCfioVEJ
少なくとも合成はできません
636774ワット発電中さん:2007/11/20(火) 23:07:25 ID:X9b0VIn3
みなさんどこに勤めてるの?でんきめーか?
637774ワット発電中さん:2007/11/20(火) 23:23:49 ID:HM6hw+1T
無線機器メーカですー。
638774ワット発電中さん:2007/11/21(水) 01:35:16 ID:AM4Auc2D

土建屋です。
639774ワット発電中さん:2007/11/21(水) 03:25:48 ID:486/5gPC
飲食店
640774ワット発電中さん:2007/11/21(水) 07:19:06 ID:1ncoChU5
638-639 マジだろうか?
俺ガラス店(家業)
641774ワット発電中さん:2007/11/21(水) 15:12:18 ID:dX5WpAc3
同じくガラス店(家業)
642774ワット発電中さん:2007/11/21(水) 20:04:04 ID:PIONHzT6
ガラス店を使ってる工務店
643774ワット発電中さん:2007/11/21(水) 22:38:08 ID:uAR+ru9t
最近のガラス店は凄いな
644774ワット発電中さん:2007/11/22(木) 00:17:17 ID:nNtUutkB
大学につとめてます。
645774ワット発電中さん:2007/11/22(木) 12:51:26 ID:uXA6iknv
>>615
実際のS-RAMってのは、ICのことだろ。
FPGAやASICの中ではスリーステートバスは使えないのが常識。まあ、昔は使えてたが。それに、同期RAMしかないだろ、いまどき。

あ、オレ、家電メーカな。
646774ワット発電中さん:2007/11/22(木) 21:26:40 ID:Cz84/C7o
農家です。
647774ワット発電中さん:2007/11/22(木) 21:45:37 ID:biqHZMpq
お客様の中で自宅警備員か住職の方はいませんか?
648774ワット発電中さん:2007/11/23(金) 12:24:55 ID:NSEyAoKx
>>645
そうすると

 inout bus;
 reg busdata;
 assign bus = busdata;
 
 busdata = 1'bz;

とかは合成不可能なんでしょうか?実機なし、シミュレータのみの
畳上趣味Verilogger入門者ですが、プログラムとして書ける内容と合成可能な
書き方に結構落差があるようでなかなか馴染めません。

上も最初は tri 使うのかと勘違いしてはまり、その後で force/release を
使ってはまり、そしていまトライステートはそもそもできないと読んでややorz・・・
649774ワット発電中さん:2007/11/23(金) 12:32:02 ID:sCOL9LEM
畳上趣味Verilogger入門より先にやることあるんじゃね!?
650774ワット発電中さん:2007/11/23(金) 14:35:36 ID:sNVhkNMt
いま>>649が上手い子と言った(なぜか変換できない)

>>648
トップモジュールでtriバッファ使用ならfpgaのピンはHiインピーダンスに
なるんじゃないかな。階層化した子モジュールではやるべきじゃない。
651774ワット発電中さん:2007/11/23(金) 16:53:11 ID:LU5JCeai
quartusのwebエディションってインクリメンタルコンパイル使えないの?
settingの項目がインクリメンタルoffしか選択できない。

>>648
>実機なし

DWM買わなかったのかい?

652774ワット発電中さん:2007/11/23(金) 18:36:26 ID:S7jC1TXT
>>648
Quartus あたりで試してみたら?
スリーステートバスは、マルチプレクサーに変換してくるかも。
653774ワット発電中さん:2007/11/23(金) 18:46:38 ID:NSEyAoKx
>>651
DWMは買いましたが、いまだ旧式ノートのままなんで遅くてどうもならんです。
QuartusとかISEとか、ありえんて感じ。まあPCは新調するんですが、今はLinuxの
Verilog環境で書き方とかシミュレータレベルで修行中。なので畳水練。

こないだバス接続の実現方法としてZ入れてる例を参考書で見て「なるほどこうするのか」と
思ったばかりだったので反応したんですが、シミュレータ(&脳内)で動くのと合成可能の間の
ギャップが大きい。このギャップが逆に面白くて手を染めてるわけですが、3度目の正直で
わかったと思ってた所に「それ昔の話」となってorzでした。
654774ワット発電中さん:2007/11/23(金) 19:40:08 ID:BnOsMOOk
同じプロセッサ使ってるならModel Sim の速度は Win < Linuxだよ
655774ワット発電中さん:2007/11/23(金) 20:53:30 ID:S7jC1TXT
>>653
まあなんだ、Verilog の記述がそのまま全部回路に出来る訳じゃないしな。
FPGAならFPGA、ASICならASICの固有の問題もあるし、実際の回路を
イメージ出来ないと合成までやるのはむずいかもな。

ソフト屋を連れてきて、システムCで書かせりゃLSI出来るって思ってる
お偉いさんたちからして間違ってるわけだが。

まあ、頑張って精進してくれ。同志として応援しとるよ。
656774ワット発電中さん:2007/11/27(火) 01:21:22 ID:4ox8wMf6
ASICで意図せずにHiZライン作ってしまって消費電流増えてた事があったな。
657774ワット発電中さん:2007/11/29(木) 23:09:49 ID:bAqRrXg6
modelsimで、各種パラメータが宣言してあるverilogファイルをinclude
しているverilogファイルをコンパイルすると、includeを使っている
verilogファイルがすべて、includeしているファイルを開くことができません
 というエラーがでるのですが、解決方法ご存知の方いらっしゃいましたら
教えてください。宜しくお願いします。
658774ワット発電中さん:2007/11/30(金) 01:24:20 ID:UhbKK2h8
>>657
なぜ開くことができなかったのかが不明だが。
パスを確認。あるいは、多重定義ならifdef せよ。
659774ワット発電中さん:2007/11/30(金) 12:42:29 ID:+BetROSY
>>657
特許の請求項みたいで、何を言いたいのかよく分からん。
660774ワット発電中さん:2007/11/30(金) 14:17:08 ID:9hg2Sg8y
具体的には`include "./mig20_parameters_0.v"としていて、
実行ファイル(〜.ise)がある場所と同じ場所にmig20_parameters_0.vを
置いて、ISEにもmodelsimにもaddしてあります。
それで`include "./mig20_parameters_0.v"←この記述を使っているファイルが
modelsimでコンパイルエラーになってしまうという状態です。
661774ワット発電中さん:2007/11/30(金) 16:02:04 ID:9N5uOePG
modelsimの実行ディレクトリはそのファイルがおいてあるディレクトリかい?
662774ワット発電中さん:2007/11/30(金) 17:24:33 ID:9hg2Sg8y
iseの実行ファイル(プロジェクト)がある場所には、全てのverilogファイルが置いてあって、
modelsimを起動してiseの実行ファイルがある場所からverilogファイルを参照しています。
なのでmodelsim.exeがある場所とは違うところにファイルがあります。
C:\Modeltech_xe\win32xoem\ フルパスでいうとここにmodelsim.exeがあって
C:\Xilinx_ISE9.2i\projectfile\test\ ここにシミュレーションしたいverilogファイルと
mig20_parameters_0.vがあります。
663774ワット発電中さん:2007/11/30(金) 17:39:10 ID:9N5uOePG
modelsimのプロンプトでpwdコマンドを実行して、
表示されるディレクトリがファイルの置いてある場所と違ってたら、

1) Workspaceにてマウスの右クリックで表示される [ Compile > Compile Properties ]
  を選択しProject Compiler Settingsダイアログを表示する。

2) ダイアログの中の [ Other Verilog Options ] にて、[ Include Directory ] ボタンをクリックし
  Includeファイルの参照フォルダを指定する。

一緒の場合は、原因はちょっとわからない。
後、includeされるファイルはaddしなくて良い(Compile時に自動的に読まれる)
664774ワット発電中さん:2007/12/03(月) 01:07:18 ID:0EMvkg4p
ありがとうございました。
無事コンパイルできました。
665774ワット発電中さん:2007/12/04(火) 15:55:39 ID:LNM5BD/G
VHDL から C で記述された関数等を呼びたいんですが、
インターフェースは規定されてないんでしたっけ?
Verilog における VPI みたいなのが規定されていると嬉
しいんですが。
666774ワット発電中さん:2007/12/04(火) 18:09:47 ID:gx21EzC+
modelsimでVHDLからC関数の呼出ができるのは知っているが
IEEE規格にはなってないような気がする
667774ワット発電中さん:2007/12/05(水) 12:01:07 ID:M87xa0r8
>>666

昔調べた時は simulator 依存だったんですが、その頃から
変わってないということですね…。
668774ワット発電中さん:2007/12/06(木) 00:15:45 ID:n2QWKcSc

何を持って規定されているとするのかが良く分からんけど、
 ttp://www.cyber-labo.co.jp/ghdl_guide/Interfacing-to-other-languages.html
この辺りかなぁ。VHDLで決められている多言語インターフェースって。
669774ワット発電中さん:2007/12/06(木) 00:39:13 ID:7x3aZ1Sv
Verilog使用のCPLD初心者です。2weekも壁にぶち当たっています。
Altera MAX2 でGlobalCLK 75MHzを入力し150MHz動作を実現したい
のですができません。クロックを1/4サイクル遅延してEXORする事
で倍速駆動できないかと内部遅延を考えましたが実現できません。
何か上手い手はないでしょうか?
670774ワット発電中さん:2007/12/06(木) 06:56:39 ID:rlc9QweU
>>669
どうやって 1/4サイクル遅延させようとしたのか興味ある。
意味無い記述って事でコンパイラに消されてる予感。

外部に逓倍器、或いはPLL内臓のFPGAへ変更が妥当。
671774ワット発電中さん:2007/12/06(木) 09:54:39 ID:apL+2t31
>>669
言語関係ねー
672774ワット発電中さん:2007/12/06(木) 13:56:52 ID:Ifl1X9uX
>>669
もしかして、外部75MHz→CPLDとして、CPLD内部で1/4移相、exorしてる?
1/4移相の方法はどんなふうにしたの?
673774ワット発電中さん:2007/12/06(木) 16:46:27 ID:OfWcT/zV
clk_d = #3.3 clk;
だろ、普通 w
674774ワット発電中さん:2007/12/06(木) 17:08:03 ID:NcU8yY+g
>>668

>何を持って規定されている

VPI のように IEEE 等で規格化されていることを規定されて
いると言ってました。

張って頂いた URL は GHDL と呼ばれる処理系のもので、
これを使えば C と Ada が扱えるというもののようですね。
商用のシミュレータと同程度に高速なのならば良いんですが、
これって実用に耐えうるだけの速度が出せるんでしょうか?

私も以前調べて知っていますし、666 にもあるように
modelsim では使えるようなので、そちらを利用する方向で
考えます。

ところで、emacs の VHDL mode って、verilog mode
における auto wire や auto reg のようなモジュールの自
動接続ってできないんでしょうか?できない場合は、それに
代わるツールとかって無いんでしょうか?
675774ワット発電中さん:2007/12/06(木) 19:43:01 ID:rwdi3bA2
>>670
その予感に快感1票。

>>669
lcellとかいうのをport mapで数珠繋ぎにして、内部遅延させたことがあるよ。
・・・あ、これはVHDLだね。verilogは知らん。MAX7000でリングオシレータをやりました。
とりあえず電源電圧ぐらいしかいじれなかったんだけど、結構敏感でしたね。

MAX2とかの(実質)FPGAだと、またちょっと性質が変わってくるかも知れないけど、
75MHz→150MHzは「一時的に実験してみるレベル」は脱せないと思う。
このやり方ではね。
676774ワット発電中さん:2007/12/06(木) 21:33:44 ID:hZDECQiG
>>674
verilog-modeの自動接続機能についてはよく知りませんが
入力支援機能として M-x vhdl-port-*** が重宝します。

最初に entity の所で「M-x vhdl-port-copy」を実行し portmapを覚えさせた後で、
下記のコマンドを実行していきます。

1. コンポーネント宣言の生成 (M-x vhdl-port-paste-component)
2. 信号リスト宣言の生成 (M-x vhdl-port-past-signals)
3. インスタンス宣言の定義 (M-x vhdl-port-past-instance)

全自動とは行きませんが、結線記述で多少は楽ができるかと。

(おまけ) テストベンチの雛形生成 (M-x vhdl-port-past-testbench)
677774ワット発電中さん:2007/12/06(木) 21:36:51 ID:hZDECQiG
>>676
eが抜けてた(;´Д`) > vhdl-port-paste-***

678774ワット発電中さん:2007/12/06(木) 23:53:03 ID:7x3aZ1Sv
>>669 の者です。
皆様、有難いアドバイスを頂き有難うございます。
下記の様に記述し、コンパイルは無事通るのですが、
見事に遅延は無視されている様です。
always begin
XTAL_D <= #3.4 XTAL;
end
正攻法で行くならやはりデバイス変更となりますが、
内部or外部で数珠繋ぎを実験的にやってみようかと
考えています。
もし内部数珠繋ぎのやり方をご存知の方がいましたら
この初心者にご教授下さいませ。
ちなみに使用デバイスは"EPM570T100C5"です。
679774ワット発電中さん:2007/12/07(金) 01:20:01 ID:AFZUNi/I
>>678
無視されるもなにも、そりゃシミュレーション記述だ。
680774ワット発電中さん:2007/12/07(金) 15:25:35 ID:gEXh3ZqX
誰か書いてたけどlcell繋げばいいんじゃないかね
しかし遅延量なんか全然保証されないぞ
デバイスのばらつきや温度の影響をうけまくる
681774ワット発電中さん:2007/12/08(土) 01:29:39 ID:69cLEjj2
lcell u_lc1(.in(A), .out(B));

とりあえず書き方だけ。
lcellは配線領域が足りなくなったときのためのもの。
遅延セルではないので>>680のいうとうり遅延量の保障はされない。
(でも大体3nsぐらいの遅延だったような。)

構造上、クロック信号だと入力できないかもね。。。

久しくFPGA触ってないので、間違ってたら失礼。
682774ワット発電中さん:2007/12/08(土) 08:26:14 ID:9Pixs2RO
>>669 です。
lcellで1/4サイクルの遅延が出来ました!
一つの壁を乗り越えられたので実験を進めて行きます。
とてもいい勉強ができました。
皆様、的確なアドバイスをこの初心者に頂き有難うございました。
683774ワット発電中さん:2007/12/08(土) 16:17:01 ID:z7qcRjdY
>>682
全然、勉強できてないぞ!
>>680 とか >>681 を、ちゃんと読んだか?
684774ワット発電中さん:2007/12/08(土) 20:45:16 ID:JZ6/cCpe
初心者に間違った知識与えてどうするよ。
クロック専用線使わずに150MHzだと同期がとれずに結局使えないんじゃ。
685774ワット発電中さん:2007/12/08(土) 23:15:03 ID:x184G6IR
そのクロック専用線とやらには、クロック入力ピンからもロジック出力からも
入力できたと思ったが、最近のMAX2ではできないのか? >>684
686774ワット発電中さん:2007/12/10(月) 02:22:39 ID:FSf0QY1H
>>682
悪いことは言わん。
「150Mhzの波形を見たい」だけ以外ならば、素直に
クロックダブラーICを使うことを強く強く勧める。

「安定した1/4遅延」はlcellでは絶対に無理だ。

TIの CDC5801Aなんかが使えそう。
IDT2308はMAXが133Mhzだった。
687774ワット発電中さん:2007/12/10(月) 10:06:19 ID:TKSLCisF
俺ならオシレータを交換するぜ
688774ワット発電中さん:2007/12/10(月) 19:59:01 ID:MPGbIbTj
実験つってんだからやらせときゃいいだろ。
安定しないっていうのは初めのレスから書かれてること。
689774ワット発電中さん:2007/12/10(月) 22:35:07 ID:ba8n58bm
>>669 です。
皆様、頂いたアドバイスは全て有難く、心から感謝します。
実際には150MHzクロックモジュールか外部2逓倍するデバイスを探していた最中です。
PLLもDLLもないMAX2ですが開発環境含めC/P面で魅力ですのでもうちょっと続けてみます。
>>686 さん、情報有難うございます。検討してみます。
内部逓倍は並行してあくまでも実験として進めてみます。
おかげでAltera DSEも初めて使ったしクロック専用線やFitter Optionも色々と興味が沸いてきました。
HDLを始めて1month未満の超初心者ですがワンチップマイコンプログラムとは全く別物だと体で感じました。
初心者の無謀をお許し下さい。
690774ワット発電中さん:2007/12/11(火) 19:28:14 ID:/BtVDb5l
> クロック専用線やFitter Optionも色々と興味が沸いてきました。
興味云々するようなしろもんじゃないと思うが、7400の回路構成に感動する
人もいるだろうから、まぁいいかw
691774ワット発電中さん:2007/12/14(金) 22:55:25 ID:/uO7/YCS
NIOSでバスとノードを接続する方法を教えてください。

1.2ビットのPOを作ると、そのピンはPO[1..0]と表現される。
2.これらを、たとえばPIN1(BUZZER_OUT)とPIN2(LED_OUT)に接続する

2.でFPGAのPINをOUT[1..0]と定義し、ノードで接続するのはNGです。
692774ワット発電中さん:2007/12/15(土) 09:29:13 ID:qeKq0twA
↑ ピンネームにカンマ区切りで複数入力
693774ワット発電中さん:2007/12/27(木) 00:03:02 ID:CfukrSzk
verilog で 下記の VHDL の A のように特定のビットの値は '1' & その他は '0'
みたいな記述、できましたっけ?

signal A : std_logic_vector (7 downto 0);
A <= (3 => '1', 5 => '1', others => '0' );
694774ワット発電中さん:2007/12/27(木) 13:27:56 ID:WGhHezJF
>>693
verilog に 'その他' ていう扱いあったんだっけー?

A <= 8'b0010_1000; あたりしか書けない気もー。。。それとも !?
695774ワット発電中さん:2007/12/27(木) 21:05:06 ID:5bl88uFo
VHDLの知識ナシなんだが、othersってどういう場面で便利に使えるんだろう。
>>693くらい単純な例だと>>694のように直接bit列を書いた方がよさそうだし。
無理やりそれっぽいコード書いてみたんだが、こんなのでどうか。

integer i;
reg [7:0] A;
always for (i=0; i<=7; i=i+1) case(i) 3,5: A[i]<=1; default: A[i]<=0; endcase

文法チェッカ通してないしシミュレーションしてないし合成できるか
わからないが、方向性として。
othersの方がスマートな記述でシミュレーションへの負荷が軽そうな
気がするのは間違いない。
696774ワット発電中さん:2007/12/27(木) 21:08:41 ID:oUYKZAju
>    A <= (3 => '1', 5 => '1', others => '0' );
ツール依存の記述じゃないの? これ。
697774ワット発電中さん:2007/12/27(木) 21:34:26 ID:zXWF+wPW
MIG(Xilinx Memory Interface Generator)でSpartan3のDDR SDRAMのインターフェイスを生成し、
Model Simでシミュレーションを行いました。
そこで、実機でMIGで生成したインターフェイスをFPGAに実装し、動作確認を行いたいのですが、
どのようにすれば比較的簡単に実装確認ができるでしょうか。
MIGから生成されたテストベンチを実機用にもっていければいいのですがうまくいきません。
ただFPGAとDDR SDRAM間のやりとりが出来ていることが確認できればいいのですが…
MIGに関してご存知の方宜しくお願いします。
698774ワット発電中さん:2007/12/27(木) 21:47:55 ID:CfukrSzk
>>695
レジスタのビット位置/初期値とか define で指定しておけば、ビットの
入れ替え時に直接ビット列書くより楽かな/見た目くらいかな!?
あるとどれだけ便利かより、VHDL と verilog 両方使っていて自分の中で
対応する機能が空欄のままなのが others なので気になっているのです

サンプルコードありがとう、後ほどで試してみます
699774ワット発電中さん:2007/12/28(金) 20:40:52 ID:6DEIJWo2
>>696
使えないツールを教えてください。
700774ワット発電中さん:2007/12/28(金) 20:43:15 ID:g5TxGd9N
>>697
コマンド発行が出来てるかどうかを確認する程度でしたら
ChipScopeProでDDRに行く制御線をプローブするのがお手軽ですね。

701774ワット発電中さん:2007/12/28(金) 22:51:25 ID:ax5xJI/j
>>693
a <= (1 << 3);
702774ワット発電中さん:2008/01/11(金) 16:54:03 ID:k0pxsXQu
ISEでのエラーのことについて質問したいのですが、

Xilinx ISE9.2iでImplement Designを実行すると
ERROR:NgdBuild:924 - input pad net 'sys_clk_p' is driving non-buffer primitives:
pin C on block syncro/q0 with type FDC,


というようなエラーが出てきて、Xilinxのサイトで調べてみたところ、

ソリューション
Spartan-3 デバイスでは、ループバック タイミング信号を作成するために、
外部で DDR2_DQS_DIV_I および DDR2_DQS_DIV_O 信号を使用する必要があります。
この信号が接続されていないと、IBUF に含まれる IBUF への入力が内部グランドに接続されます。
これが原因で、グランド信号に複数のドライバが作成され、IBUF とパッドの接続が不正になります。

とあったのですが、具体的にどのようにすればいいかご存知の方いらっしゃいましたら
ご教授願います。

よろしくお願いします。
703774ワット発電中さん:2008/01/11(金) 18:14:10 ID:jEpdNPYv
そのエラーについてはよく分からないけどどんな回路が作りたくてsys_clk_pって何に繋いでる何の意味を持つ信号?
クロックっぽいのは分るが

情報小出しは分る人が居ても答えて貰えない場合が多いよ
704774ワット発電中さん:2008/01/15(火) 10:16:13 ID:fIAYUrss
Verilog-HDLで「parameter」宣言した場合のスコープは何処までですか?
トップモジュールで宣言した場合、下位モジュール全てに有効でしょうか?
705774ワット発電中さん:2008/01/15(火) 11:21:35 ID:RIujOY6p
下位モジュールにパラメータを渡したいなら、インスタンスを作るときに明示的に渡さないとダメ。
706774ワット発電中さん:2008/01/16(水) 15:08:59 ID:t594uw4J
いつになったらWindows版のGTKwaveはリロードで死ななくなるんだ。
Unix(Linux)版に離される一方だな。
しょうがない、シミュレーションはLinuxでやるか。
707774ワット発電中さん:2008/01/20(日) 11:03:22 ID:pR6hxx5X
エンティティ宣言の信号名の前にsignalが付いているのは一体何なんでしょう??
signalというと、ロジック内部間での接続に使う信号用に宣言するものだと思うのですが・・・
708774ワット発電中さん:2008/01/20(日) 22:58:40 ID:AeaLvsNv
port宣言のsignalって、普通は省略するだけで本当は付けるのが正式なんじゃなかったっけ?
709707:2008/01/21(月) 00:15:28 ID:j6jHMiIB
>>708
うわー!そういうことでしたかw
ありがとうございました!
710774ワット発電中さん:2008/01/21(月) 21:27:17 ID:9z4L07Hr
FPGAにbitファイルを使って書き込む時、
Impactのオプションでmskファイルを生成するように設定すれば
正しく書き込めますよね?
711774ワット発電中さん:2008/01/23(水) 11:58:07 ID:41/hdoeg
702です
XilinxのMIG(メモリインタフェースジェネレータ)を使用して
メモリのインターフェース回路を生成してみたのですが、いざFPGAで
実装確認しようと、生成した回路に自分で書いてみた回路を追加
したところ出てきてしまったエラーです。
'sys_clk_p' というのはボードについている発信機からのクロック
信号です。

自分で書いてみた回路は、FPGA上で動作確認するため、ユーザプッシュスイッチで
FPGAの出力端子から出てくる信号を切り替えるための回路とプッシュスイッチのシンクロ
回路だけなのですが…

MIGから生成されたrtlに付属のISEプロジェクトを生成して、各種プロパティの設定をしてくれる
バッチファイルを使えばMIGから生成された物を、そのままならXSTからIMPCTまで可能で、FPGAに実装
できたのですが、そのままボードに実装しても何も確認できないので、取り敢えず
assign pin packageを実行してみたら
Command line parameter '" -p xc3s2000-fg676-4 C:/Xilinx92i/projectfile/MIG_0116/
mig20/user_design/rtl/mig20.v -uc mig20.ucf -intstyle ise' is not valid and will be ignored.
という警告が出てきて、ピン配置ができないエラーもでてきてしまいます。
それでなくても回路を追加すると702のようなエラーがでてしまいます。

どうしようもない状態です。
712774ワット発電中さん:2008/01/23(水) 15:30:51 ID:DCxyMUtK
ふ〜ん
713774ワット発電中さん:2008/01/23(水) 16:44:13 ID:yFHOJCrI
がんばれ〜
714774ワット発電中さん:2008/01/23(水) 20:57:34 ID:J4JfRU6z
がんばらなくていい〜
715774ワット発電中さん:2008/01/24(木) 02:09:50 ID:g4EK7ZlL
>>711
まずは MiG の初期化完了ステータスフラグ出力ピンを LED に LOC する事から初めてはどうか。
716774ワット発電中さん:2008/01/24(木) 09:08:49 ID:TdSQGTAK
それだけの回路にXC3C2000とは。
717774ワット発電中さん:2008/01/24(木) 12:21:11 ID:iVMG4vXB
大きなお世話だぜ
718774ワット発電中さん:2008/01/24(木) 19:23:16 ID:bavybs99
>外部で DDR2_DQS_DIV_I および >DDR2_DQS_DIV_O 信号を使用する必要があります。
> この信号が接続されていないと、IBUF に含まれる IBUF への入力が内部グランドに接続されます。

つなげばイイんでねの?
719774ワット発電中さん:2008/01/24(木) 21:58:53 ID:IWCzRnbk
>>718
まぁそうなのですが…
マニュアル読んでみてもその信号の使い方がよくわからないんですよね。

というか、MIGで生成されたものをどうやって使っていったらいいものか・

verilogで生成して、プロジェクトにxcoで読み込んで
トップモジュールの下に置きたかったのでトップモジュールに

mig20(モジュール名) inst_mig20(インスタンス名)(
.インターフェースとの接続〜
);
で宣言して、MIGのucfをトップのucfにコピーすれば使えるものかと
思っていたのですが、
HDLCompilers:87 "トップモジュール名.v" line 115 Could not find module/primitive 'mig20'
という具合にエラーがでる始末です。

このツールを使うときに、他に参考にできる資料やサイトご存知の方いましたら
教えてください。
720774ワット発電中さん:2008/01/24(木) 23:25:07 ID:ThKO5e4a
インスタンスが生成されてないとかじゃないだろうな?
721774ワット発電中さん:2008/01/24(木) 23:26:57 ID:g4EK7ZlL
>>719
コンポーネントがミツカラネーヨと言われる点は、「Synthesis Options」の「Verilog Include Directories」で
MiG の RTL が置いてあるディレクトリを指定すれば良いと思います。
722774ワット発電中さん:2008/01/25(金) 00:30:03 ID:YcMwcQfS
階層構造も正しい構造をしていて、RTLが置いてあるディレクトリ指定して
やっても同じエラーがでました。
.iseが置いてある場所にMIGのrtl全部コピーしてみてもだめでした
723774ワット発電中さん:2008/01/25(金) 01:21:57 ID:Al/39G9m
肝心の MiG のネットリストのコピーをし忘れてたw・・・というオチは無いか。

xco 経由でネットリストにしたIPコアを読み込ませるのではなく、
RTL を全部 Project に登録してしまい、コントローラコアを
ユーザーロジックと一緒に合成するのが確実なんじゃないかな。
コンパイル時間はもちろん延びるけど・・・。

私は VHDL ですが、そうやって MiG を利用してます。(クロック生成とかは自前)
724774ワット発電中さん:2008/01/25(金) 02:39:10 ID:YcMwcQfS
それではxco使わなくてもrtlをプロジェクトに追加してしまえば、
それで出来てしまうんですね。
とりあえず動かしてみるなら、rtlをプロジェクトに追加して
自作のトップモジュールにMIGをインスタンス化する記述を書いて、
MIGのucfの内容をトップモジュールのucfにコピーする以外
必要なことってありますか?
MIGの記述の変更やプロパティの変更など


あと、MIGのucfの入出力ピンの記述を変更しても、何か他に影響及ぼさないですよね?
725774ワット発電中さん:2008/01/25(金) 20:27:39 ID:Al/39G9m
>>724
>MIGのucfの内容をトップモジュールのucfにコピーする以外
>必要なことってありますか?

問題を切り分けるためにも、最初は sys_clk_p に対する PERIOD 制約と
DDR2信号ピンの LOC・IOSTANDARD指定のみに留めるべき。>UCF追加
LOCで指定するピン番号も、MiGが自動生成したピン番そのままではなく
ちゃんと「自分の基板のピン配置」に直してね。

>MIGの記述の変更やプロパティの変更など

MiG の GUI 上で自分が使う DDR2-SDRAM 品種を選択して Generate したのであれば、
DDR2の各種パラメータが記述された include 用の .v が出来てるハズ。ソレを使えばOK。

>あと、MIGのucfの入出力ピンの記述を変更しても、何か他に影響及ぼさないですよね?

状況によりけり。
どっちにせよ、ピンのLOC指定は自分の基板のピン番号に直さないとダメですね。
直した結果、PARのバンク配置規則から逸脱していた事が判明したらご愁傷様です。

S3 はわかんないけど、V4/5用のコントローラは、BUFIO を使う関係上 DQS信号が
CC I/O ピンにアサインされてないとダメポでした。
なので、MiG 登場前に作られた様な評価ボードでは実装できない事があるかもね。
726774ワット発電中さん:2008/01/30(水) 08:36:14 ID:hu3PMW51
留年しそうなんだけど、俺でも回路設計者になれるかな?
727774ワット発電中さん:2008/01/30(水) 09:20:14 ID:GCiK6jND
卒業できたらな
728774ワット発電中さん:2008/01/30(水) 23:51:47 ID:hu3PMW51
SFL素晴らしい
729774ワット発電中さん:2008/01/31(木) 00:36:04 ID:dZYucowN
>728
2年前だったか、使うのをやめた。
同期回路に限定して記述も簡単だが、あの閉鎖性が気にくわない。
来年どうなるか、わからないという状態では、使う気が失せる。
ユーザー数は減少の一途だと思うよ。
730774ワット発電中さん:2008/01/31(木) 12:06:25 ID:vIifPA59
ってか、ユーザーいるの?
731774ワット発電中さん:2008/02/06(水) 17:25:02 ID:fvYflb0j
使用OS:WinXP-Pro,ソフト:Web-ISE 9.2i,FPGA:Spartan2 XC2S15-5VQ100C

長文になりますが、Web-ISEの表示で質問です。

ttp://monoist.atmarkit.co.jp/fembedded/fpgastartup/fpgastartup01/fpgastartup01c.html
のcase部分を改変し、3個のボタンの位置と、8個のLEDの右側3個のLEDの点灯位置を1対1
で一致させるために
case(~{A,B,C})
3'b000:Y=~(8'b00000000); //無点灯
3'b001:Y=~(8'b00000001); //右端が点灯
3'b010:Y=~(8'b00000010); //中央が点灯
3'b100:Y=~(8'b00000100); //左端が点灯
endcase

としたところ、Web-ISEの「Implement Design」に警告マークが現れました。これを展開して
みると「Place & Route」に警告があり、ここのプロパティを見ると http://1rg.org/up/5227.jpg
の表示が出ました。また、「Warnigs」タブを選択すると以下のように出ます。

WARNING:Place:837 - Partially locked IO Bus is found.

またPlace:837は下の表示が出ました
Place:837 - Partially locked IO Bus is found.
Following components of the bus are not locked:
Comp: Y<7>
Comp: Y<6>
Comp: Y<5>
Comp: Y<4>

Y<4>〜Y<7>は、元ソースでは残りの(左側の)LED用I/Oです。

これは何を意味しているのでしょうか?
よろしく願います。

なお今回の改変ソースをFPGAにダウンロードしたところ、ボタンとLEDの点灯位置は
一致しましたが、Y<4>〜Y<7>に相当する残りのLEDは常にボヤ〜と点灯しています。
732774ワット発電中さん:2008/02/06(水) 18:59:25 ID:6Z4hs02s
Ooops! I've found a warning-boy!
733774ワット発電中さん:2008/02/06(水) 19:00:52 ID:mbGXcSjS
>>729
来年どうなるか(笑)
そんときゃ自前でRTL生成ツール作ってでも使うけどな
734774ワット発電中さん:2008/02/06(水) 19:35:46 ID:ehrmhM7O
ISEは、9.2でもエディタ上の漢字使用はNGでしょうか?
まだISE7で使ってる私。
735774ワット発電中さん:2008/02/06(水) 22:07:54 ID:THUNcwt5
>>731
(A,B,C) = (On,On,Off),(Off,On,On),(On,Off,On),(On,On,On) の時は
どういう表示をさせたいん?あと、ABCに不定が入った時の扱いは?

>>734
最初から Unicode には対応している見たいです。
EUC や SJIS は普通に化けちゃってイヤンな感じ。
今度出る ISE 10.1i ではどうなんだろう・・・。
736774ワット発電中さん:2008/02/06(水) 22:25:12 ID:mC9g4VCt
すみません、酔った勢いで質問。

FPGAキット等で、FPGA周辺にリセット回路が無い(リセット入力が無い)場合
記述する回路のリセットはどう行うのでしょうか?(どう記述するのか?)

仕事で起こす基板は、外部回路に
PowerOnResetとConfig後のResetを置いてしまうのだけど。

昔、やっぱりリセット入力の無い基板をもらったことがあって、そのときは、
FPGA内のPLL_lockedをリセットに割り当てて誤魔化したんだけど(既に時効)、
普通はどうするのかな、って。
737731:2008/02/06(水) 22:39:27 ID:ux2pID25
>>735
レス有り難うございます。
元ソースには (A,B,C) = (On,On,Off),(Off,On,On),(On,Off,On),(On,On,On) の際の処理が
書かれており、それに見合った(LED点灯用の)ピン配置も書かれています。
しかし今回は動作実験ということで、731以外の(735さんのABCの組以外の)ピン配置を
ISE上で行わず処理も書かなかったことが原因のようです。

実際、(A,B,C) = (On,On,Off),(Off,On,On),(On,Off,On),(On,On,On) の処理を書き、相応の
ピン配置を行うと今回の警告は無くなりました。

なお、ABCに不定が入った時の扱いは default:Y=8'bxxxxxxxx; で処理しています。



>>734
vファイル表示のタブでのことでしょうか? この場合なら、Web-ISE 9.2iは漢字OKです。
738774ワット発電中さん:2008/02/06(水) 23:07:12 ID:FwcSc7/R
>>736
DDRがあったらddr_init_doneを使う。

なければ外部入力信号でリセット条件を作る。
1本でなくて数本の条件にすれば何とかなる。
CPUとつながっていればソフトウェアリセット条件でリセットする。

FPGA単体の時はカウンターでカウント値を数えて設定値になったら内部リセットを発行する。
これは最後の手段なのでお勧めはしないけどFPGA単体でテストパターンを出力するような場合はこれしかないと思う。

ほかになにか良い方法があれば俺も聞きたい。





739736:2008/02/06(水) 23:56:02 ID:mC9g4VCt
>>738
ありがとうございます。
やはり何かしらのResetを自分で作るんですね。init_doneはなるほどです。

今度キットでも買って遊ぼう〜と思ってスペックを見ていたのですが
普通にリセット入力が無くて、「これが普通なのか???リセットどうするの???」と悩んでました。

>カウンターでカウント値を数えて
これ、カウンタの初期値は保証されないわけですよね(だから最後の手段)
設定値に悩むところです

今回はキットなので(好き勝手できる)、doneにCRで遅延させようと思います。
ありがとうございました
740774ワット発電中さん:2008/02/07(木) 00:04:38 ID:UTpM1aZV
ModelSim Xilinx Edition III を使い始めるところですが、ここで使用する
テストベンチファイル(xxx.v)には、Verilogと同じようにコメントを //〜〜
と書いてももいいのでしょうか?
741774ワット発電中さん:2008/02/07(木) 00:07:28 ID:ZLShIBaj
>>740
いんじゃないでしょうか。
書いたらエラーでもでたの?
742774ワット発電中さん:2008/02/08(金) 01:01:49 ID:J7VrhBrj
>>741
ModelSim Xilinx Edition III 6.2g で試したところ、コメント開始は //
で認識してくれています。
但し、日本語は不可で、文字化けします。
743774ワット発電中さん:2008/02/08(金) 15:30:58 ID:7ziFxdnd
inout のバスに直接値を代入しようとして、ModelSimでなにをしてもUになってしまうので困っています。
744774ワット発電中さん:2008/02/08(金) 16:30:47 ID:P/TLSe9b
この手のトラブルはコードの記述がいくない。
in側のセットしただけではダメ。出力される側の信号をちゃんとセットする。
当然I/O制御信号もやる。

おっと忘れていた、出力信号を見る時にはin側の指定をzにしないと出力信号とぶつかったときUになるけど此れかな?
745774ワット発電中さん:2008/02/08(金) 17:05:05 ID:7ziFxdnd
あー。いま、簡単なコード書いてて、自己解決してた。

>>744 どもです


entity a1 is
Port (
B : inout std_logic;
C : out std_logic
);
end a1;

architecture RTL of a1 is

begin
C <= B;
B <= 'Z'; -- ←この記述が無かった
end RTL;
746774ワット発電中さん:2008/02/09(土) 01:43:48 ID:N3ImjGe8
勉強になった。
747774ワット発電中さん:2008/02/09(土) 03:16:38 ID:10DLWwBM
使用OS:WinXP-Pro,ソフト:Web-ISE 9.2i,FPGA:Spartan2 XC2S15-5VQ100C

ボタンを押すことにより点灯している2つのLED両方を消すVerilogを書いていますが、
片方のLED1しか消えません。 ※すみません。ソース全体を下に貼ります。

module led_onoff_2(Btn1, LED0, LED1);
//
input Btn1; // スイッチ入力
output LED0; // LED出力
output LED1;

//
assign {LED0, LED1} = !Btn1 ; //2つを反転で消灯する
//
endmodule


LEDとボタンが1対1のソースでは問題なく消えます。
どうしたら良いでしょうか?
748774ワット発電中さん:2008/02/09(土) 04:41:10 ID:hPISxAAc
>>747
{LED0, LED1}
これ2ビット
749774ワット発電中さん:2008/02/09(土) 09:13:52 ID:y/xCRK/C
>>747
!Btn1
これ1ビット
750774ワット発電中さん:2008/02/09(土) 18:48:04 ID:7j/OWiLM
>>748-749
さんきゅうです。
ポート宣言と動作記述を下のように改変したところ、1つのスイッチで2つのLEDを
同時に消すことが出来ました。

input [1:0] Btn1; // スイッチ入力
output LED0; // LED出力
output LED1;
//
assign LED0 = !Btn1[0];
assign LED1 = !Btn1[0];


しかし今度は、論理合成で WARNING:Xst:647 - Input <Btn1<1>> is never used. 
という警告が出ます(配置配線とFPGAデータの生成は成功しています)。

今回はBtn1<1>を担当するピンを未定義にましたが、こような警告が出ないスマートな
記述にはどのようなものがあるのでしょうか?
751774ワット発電中さん:2008/02/09(土) 18:55:08 ID:3V7kuiOr
>>750
なんでスイッチ入力ポートを2bit幅にしたん?
752774ワット発電中さん:2008/02/09(土) 18:59:12 ID:1KpjmU1R
Btn1<1>を担当するピンを定義してみれば。
753749:2008/02/09(土) 19:43:15 ID:A1pj6zAv
>>750
何と言うか、発想が固定化しちゃってるんだな。
assign {LED0, LED1} = {!Btn1, !Btn1};
754774ワット発電中さん:2008/02/09(土) 21:53:57 ID:cy68BfUL
>>731 = >>747
Warning くらい気にしないで先に進めよ。
まずは、自分でやってみろ。
どれだけスレ消費するつもりなんだ?
755774ワット発電中さん:2008/02/09(土) 23:35:36 ID:tfWURHhy
回路設計を意識しないで“コード書き”に陥ってる予感。
宣言や書式が何を意味してるかイメージできるようになると良い気がする。
756747&750:2008/02/10(日) 00:42:48 ID:iG+Uyp9e
>>751-755
レス有り難うございます。色々試した結果、1つのスイッチで同時に4つの
LEDを消灯できるようになりました。 以下がそのソースです

module led_onoff_05(Btn1, LED);
//
input Btn1; // スイッチ入力
output [3:0] LED; // LED出力
//
assign LED[0] = !Btn1;
assign LED[1] = !Btn1;
assign LED[2] = !Btn1;
assign LED[3] = !Btn1;
//
endmodule
757774ワット発電中さん:2008/02/10(日) 00:43:26 ID:eyRgCku4
まぁなんだ・・・とにかくオメ
758774ワット発電中さん:2008/02/10(日) 11:50:43 ID:7AA2/mm5
>回路設計を意識しないで“コード書き”に陥ってる予感。

それ以前の問題と思う
759774ワット発電中さん:2008/02/10(日) 14:48:10 ID:FGf872Ju
今、VHDLで簡単なCPUを作っているんだが、
どうすればPCから16進数ファイルをROMに書き込むことができるか教えて!!
VHDLにfile構文があるから、使えると考えているのだが・・
760759:2008/02/10(日) 14:55:28 ID:FGf872Ju
補足:OSはWindowsで、FPGAにファイルをRomに書き込んで実行したい
    ちなみに、16進数ファイルはテキストファイルに書いています。
761774ワット発電中さん:2008/02/10(日) 15:10:51 ID:vWx0uNnq
hex2vhdl でググってみればええんでなかろうか?
762774ワット発電中さん:2008/02/10(日) 15:20:05 ID:GHajPVUd
>>759
ROMってのがFPGA内部につくるのならsignalの初期化で
type rom_type is array (0 to ROMSIZE-1 of std_logic_vector (DATASIZE-1 downto 0);
signal ROM : rom_type :=
(X"なんたら", X"かんたら",・・・); -- 16進ファイルを整形してコピペでどうぞ
ってかんじでいくんでね。
外部にあるROMならシラネ。
file構文はシミュの時しか使ったことないな(俺が知らんだけかも)。
763774ワット発電中さん:2008/02/10(日) 15:31:47 ID:FGf872Ju
>>761
 hex2vhdlでググってみたけど僕にはよくわかりませんでした orz

>>762
やっぱりそれしかないですね。外部Romに書き込むのも考えていたんですが、難しそうなので、
 FPGA内部のRomに直接書き込むことにします。

二人ともありがとう!!

764774ワット発電中さん:2008/02/10(日) 16:01:56 ID:7U1RF/tj
>>759
XILINX の場合
ROM を CORE Generator で作っているのならば、メモリ初期値を定義する
COE ファイルを用意しとけば OK です。COE の構文は簡単なので、
HEXファイルから COE に変換するスクリプトを作っておくと便利です。

SIM 中のROM初期値設定を汎用的に file 構文で記述したいということならば、
RESETアサート中に readline/read でHEXファイルから1行づつEOFまで読み出し
ROM(実際はRAMだけど)に書き込むのが良いと思います。
765774ワット発電中さん:2008/02/10(日) 16:20:24 ID:7AA2/mm5
起動後にPCからダウンロードを始めるっていうのはどう?
766759:2008/02/10(日) 16:37:22 ID:FGf872Ju
<<764
 とりあえずそれで、できそうなのですが、16進数テキストファイルをどのようにして、HEXファイルに変換すればいいのかがわかりません。
 HEXファイルを調べたんですが、よくわからなかったんで・・・

<<765
当初は、その方法でやろうと思っていて、16進数のテキストファイルをハイパーターミナルでシリアル通信をして送ろうとしてたんですが、
ハイパーターミナルは16進数のAをASCIIコードのAで送信してしまい、16進数のまま送ることができなかったので、ファイルをRomに書き込もうと考えたのです。
767774ワット発電中さん:2008/02/10(日) 16:52:37 ID:7AA2/mm5
HEXフォーマット
とか
Sフォーマット
とかでぐぐれ

>ハイパーターミナルは16進数のAをASCIIコードのAで送信してしまい、16進数のまま送ることができなかったので

そりゃそうだろう
768774ワット発電中さん:2008/02/10(日) 17:10:23 ID:FGf872Ju
>>764, 767
ググったらある程度わかったので、もう少し自分で調べて、Rom初期値設定の方法でやってみようと思います。
 細かく説明してくれてありがとうございます。

>そりゃそうだろう
 さっき知ってかなりショックでした orz
769774ワット発電中さん:2008/02/10(日) 23:41:23 ID:YvLVP2Oi
使用OS:WinXP-Pro,ソフト:Web-ISE 9.2i,FPGA:Spartan2 XC2S15-5VQ100C

デザインウエーブの本を見て、LEDがスイッチにより 点灯⇔消灯 になるようなVerilogの
FFコードを書きました(ポート:SW0, LED0)。Web-ISEで作業したところ、Impement Designで
以下のエラーが出ました。

ERROR:MapLib:93 - Illegal LOC on IPAD symbol "SW0" or BUFGP symbol "SW0_BUFGP"

このサポートページを見たところ
  ソリューション
 この問題は、GCLKIOB がないサイトを使用する場合、パッドが IBUFG ではなく、IBUF を駆動
 するように指定することで回避できます。 このように指定するには、次の制約を含む合成制約
 ファイル (.xcf) を作成します。

と書いてありますが、意味が分かりません。
どなかたか解説願います。

なお、always部分の記述は

always @(posedge SW0) begin
LED0 <= !LED0 ; // レジスタ出力の反転値を代入する
end

で、LED0はreg宣言しています。
770769:2008/02/11(月) 01:48:23 ID:TsRElycA
(補足)
参考にした本(実習 Verilog-HDL論理回路設計)と目的の動作に近いコードは、
デザインウエーブマガジンの
ttp://www.cqpub.co.jp/DWM/contents/0095/dwm009501300.pdf
ですが、このソースをそのまま使っても同じエラーが出ます。

なお、このPDFのコードと上で試したコードは、共にWeb-ISEの文法チェックで
OKでした。
771774ワット発電中さん:2008/02/11(月) 05:26:01 ID:mcr0FwP3
回避方法については、検索したアンサーデータベースの XCF 記述例がそのものズバリなんだが、
どの部分が分からないのかな。

合成ツールは、回路記述から類推したクロックネット(この場合 SW0)に対して、自動的に IBUFG を
使って駆動しようとするんだけど、SW0 を割り当てた PAD はクロック入力専用 PAD じゃないので
IBUFG を利用できない・・・コレMAPデキネーヨ!! というのがエラーの概略。

それならばということで、「SW0 の buffer_type に汎用入力バッファの "IBUF" を使うよう明示しろ」
というのがアンサーの内容。

FPGA の UserGuide とツールのドキュメントぐらいは軽く目を通しておいた方がイイと思うな。
HDL記述の文法がOKなら万事OKというワケにはいかないので。
772769:2008/02/11(月) 22:26:09 ID:ZjTnPkFd
>>771
有り難うございます。単語でいうとグローバルバッファやパッドの意味が分からな
かったのですが、レスと併せて「開発システム リファレンス ガイド 9.1i」
http://toolbox.xilinx.com/docsan/xilinx9j/books/docs/dev/dev.pdf
を読んでエラーメッセージの意味が分かってきました。

ここで、XCFファイルを作成したいのですが、この例文は以下のようになっています。
BEGIN MODEL "entity_name"
PIN "signal_name" loc=string;
NET "signal_name" buffer_type=ibuf;
END;

今回の "signal_name" は SW0 だと思うのですが、"entity_name" は何になるの
でしょうか?
引き続きよろしくお願いします。
773769&772:2008/02/12(火) 00:26:24 ID:dMkHgn+4
すいません。
直リンのURLを書いてしまいました。
774774ワット発電中さん:2008/02/12(火) 01:28:00 ID:+mrCBk5m
>>772
Verilog: module
VHDL: entity
775774ワット発電中さん:2008/02/12(火) 05:17:24 ID:XA1nPc+U
いちいちこのスレで質問しないで少しは自分でヤレよ。
その記述が合成できたにしろ、swのチャタリングできちんと点滅しないから。
776769&772:2008/02/12(火) 20:14:50 ID:kOBywodj
どうも。

デザインウエーブマガジンの
ttp://www.cqpub.co.jp/DWM/contents/0095/dwm009501300.pdf
のvファイルと同じプロジェクトフォルダにXCFファイルをLED_DISP.xcf
という(module名と同じ)名前で置きましたが、やはりImpement Design
で同じエラーコードでエラーになります。中身は以下の通りです。

BEGIN MODEL "LED_DISP"
PIN "SW_in" loc=string;
NET "SW_in" buffer_type=ibuf;
END;

念のため、vファイルと同じ名前、WebLED0.xcfで試しましたが駄目でした。

今までにコードを微妙に変えて20回近く試した上に、このXCFファイルでも
駄目だったので、今回はここで止めることにします。

お手数をお掛けしました。
777774ワット発電中さん:2008/02/12(火) 23:19:01 ID:v0s9Qt5k
スイッチ入力を別のピンにすれば,解決しそうな気もするナ。
778774ワット発電中さん:2008/02/12(火) 23:44:27 ID:+mrCBk5m
>>776
XCF ファイルは XST 用の制約ファイルであり、XST Synthesise Options にて
使用するかどうかを指定します。デフォは「使用する」だけどファイルは未指定状態。
Check: [Use Synthesis Constraints File] / [Synthesis Constraints File]

あと、制約ガイド(cgd.pdf)の「LOC制約」についても、ちゃんと目を通した方が良いとオモウ。
SpartanIIって"string"って名前のPADがあるん?string=文字・・・UCFにも同じような行(ry
779774ワット発電中さん:2008/02/13(水) 23:41:49 ID:6zwRzUqE
どうしてもわからないので質問します。

process(RomData, endALU, CLK) begin

if (endALU'event and endALU = '1') then
BIT_CNT <= (others => '0');
end if;
   
if(CLK'event and CLK = '1') then
処理
end if;
end process;

このようなプログラムを書くと Signal BIT_CNT cannot be synthesized, bad synchronous description.や、unsupported Clock statement.
と出ます。一つのプロセス内に、複数のevent文を入れることはできないのでしょうか?
知っているから教えてください。
780774ワット発電中さん:2008/02/14(木) 00:23:26 ID:rWYfpLLF
>>779
実際の回路を紙に書いてみるんだ
クロック2つあるDFFなんて普通使わないだろう?

プログラムって誰が言ってるんだ
781774ワット発電中さん:2008/02/14(木) 00:34:33 ID:BKuyF0Go
<<780
やはり書けないようですね。確かにVHDLはプログラムじゃなく回路を記述しているのを忘れてました。
他の方法で試してみることにします。
レスありがとう
782774ワット発電中さん:2008/02/14(木) 01:25:10 ID:NptAAtS+
基本的な所で、Verilogのreg信号のデータ(ビットデータ)で質問です。

ttp://kazunoko.kuee.kyoto-u.ac.jp/~kobayasi/refresh/0108/main.pdf
にルーレットのソース(roulette.v)があり、その中で点灯LEDを動かすための
2^11のカウンタ信号 reg [10:0] divide があります。

これは1クロック毎に divide<=divide+1; で増加され、if(divide==0) ・・・; で
判定されるのですが、Verilogのreg信号というのは、それが定義された最大値
を越えると自動的に0(0が11個)にリセットされるのでしょうか?
783774ワット発電中さん:2008/02/14(木) 01:47:38 ID:/Fj3mPI3
ほほう、そうすると どのようになるべきだと思うの?
+1していって、最大値を超えたらさらに上に増殖していけばいいの?
だとしたら「reg [10:0] divide」で11bit確保している意味がなくなっちゃうよね。
ソース上でreg [10:0] divideと書くと、11個のD-FFを内部の回路に
用意してくれるわけだ。その後さらにdivide<=divide+1と書くと、
今度はその11個のD-FFをカウンタ用に配線してくれるわけだな。
D-FFって、0か1しかセットできないのよ。だからもし今1つのD-FFが0だったとき、
次のclockで+1されて、そのD-FFは1になる。そしてさらに次のclockで+1されて、
2になりたいけど、それは無理でしょ。0になってしまう。それが11個のD-FFでも
起こっているわけね。
784774ワット発電中さん:2008/02/14(木) 11:02:57 ID:3KzuHgFU
>>783
ソフト的に考えたら、桁あふれしたところでランタイムエラー吐き出して止まったりするじゃん?
ハードウェアは桁あふれても一周して0になることを勝手に期待しちゃうって記述に明示性を欠くんじゃね?

という問いかけではないかと好意的に解釈してみる(w
785774ワット発電中さん:2008/02/14(木) 12:12:15 ID:oTUcq6Fu
reg 宣言をしたからと言って、D-FF を用意してくれる訳じゃないだろ。ラッチかもしれないし、ただのノードかもしれない。verilog の気持ち悪いところでもあるが。
最大値って言っても、その値をどう解釈するかにもよるしな。このソースは違うけど、signed の時とか。
786774ワット発電中さん:2008/02/14(木) 17:43:19 ID:s5H9OKUb
今更ですがMIGについてアドバイスくださった方ありがとうございます。
もうちょっと試してみます。
787774ワット発電中さん:2008/02/14(木) 21:59:18 ID:245hUz/g
>>783-785
さんくすです。
質問の意図としては784さんの表現が一番近いです。つまり、4ビットのreg信号
reg [3:0] count があったとしたら、0000 → 1111 になったとき、(勿論ですが)
1と0000とはならずに、一周して0000になるかどうかという点です。

実際、ttp://kazunoko.kuee.kyoto-u.ac.jp/~kobayasi/refresh/0108/main.pdf
ルーレットは問題なく動きましたので、Verilogさんはのregは、(たぶん)ご親切にも
0000 → 1111 → 0000 をしてくれたのだと思います。
788774ワット発電中さん:2008/02/14(木) 22:02:24 ID:B/sxtBba
逆に考えるんだ!
Verilogさんはのregは、一生懸命桁上がりの処理をしてくれてるんだ!
だから1111の次の桁上がりは放置(−o−b
789774ワット発電中さん:2008/02/14(木) 23:00:28 ID:NdBVbqqM
>>788
レジスタ+内蔵加算器でカウンタが実装されて、
フィットさせるデバイスよって微妙に挙動が
変わったりしてな。
ビット数がある幅を超えると突然桁上がり処理が
遅延しはじめるとか。(しかも0に帰る時だけトラブル)

ソースは同じなのに(w
790774ワット発電中さん:2008/02/14(木) 23:41:18 ID:OjuJ8a+I
Verilog の場合、ビット長は左辺に合わせて演算が行われたはず。
あと、桁あふれは見事に無視されるから、+1に限らず、加算でも
乗算でも上位のビットはなくなってしまう。
オーバーフローしたときに、0xFFFF に張り付いていて欲しかったり
しても自動では出来ないから、その分の回路は書かなきゃなんない。
プログラマーでも、アセンブラーをやっている人だと馴染みやすいんだ
ろうけどね。
791774ワット発電中さん:2008/02/15(金) 03:07:21 ID:TR0ggc3F
HDL使ってる人は増えてるけどアセンブラ使ったことある人は
減ってるのかな、C++からじゃレジスタとか見えないだろうし
792774ワット発電中さん:2008/02/15(金) 03:33:13 ID:CaI2nDql
仕事でアセンブラ使う人はどんどん減ってるだろうね。
ホビー用途へのマイコン普及のおかげで、アマチュアレベルでは逆に増えてるだろうけど。
793774ワット発電中さん:2008/02/15(金) 22:55:42 ID:cQyWxkOf
>>791
HDLならましなほうで
SystemCとかで澄ましてるのも多い
794774ワット発電中さん:2008/02/16(土) 02:08:28 ID:WZGDpH5P
NormalのCならunsignedでOverFlow起こしたら0に戻るがな、singnedでOverFlowしたら負になるし・・・
普通に考えたらこうなると思うのだが、今時の普通は違うのか?
795774ワット発電中さん:2008/02/16(土) 02:32:24 ID:d9mkqoIR
とりあえずSystemCの合成ツールが使い物になってきた?段階で
試してみようともしない所は今後もHDLでヒィヒィ言ってそうだな
HowToとかたまってなくて

SystemCみたいに気を使う言語は気持ち悪くて使いたくないけど
796774ワット発電中さん:2008/02/16(土) 02:38:16 ID:d9mkqoIR
>>794
なんでソフトウェアでの普通の話をしてるんだ?
HDLでunsignedもsignedも無いだろうに
あるのはビット幅と1と0とツールの解釈の違いだけだ
797774ワット発電中さん:2008/02/16(土) 09:50:37 ID:qvLCO7xk
ふつーにあるだろ > HDLでunsignedもsigned
つーかなんで無いと思えるのか?!
798774ワット発電中さん:2008/02/16(土) 09:59:14 ID:h+hVQQvu
>>797
Verilogはよう知らんのだが、
素のVHDLにはsignedもunsignedもない。
定義しているのはieeeなどのライブラリ。
ライブラリのソースは公開されてるから、
ソース読めば振る舞いはわかる。
俺様ライブラリを作って
独自の振る舞いをさせることも可能。
799774ワット発電中さん:2008/02/16(土) 11:25:51 ID:HCMv6GoT
つか、『宣言されたビット幅で表せる最大値を法として(ry』というのをシステムが
保証してくれてないのは論理屋さんから見ると気持ち悪いんじゃないか?
結果的に同等の動作をしていても。
800774ワット発電中さん:2008/02/16(土) 12:00:18 ID:19BzynSw
ソフトの論理屋はそうかもしれないが
ハードの論理屋さんはそんなこと気にしない
801774ワット発電中さん:2008/02/16(土) 12:02:31 ID:19BzynSw
ああ、誤解されそうだな
「気にしない」っていうのは「気持ち悪い」とは思わないってだけで
考慮はしてるよ
802774ワット発電中さん:2008/02/16(土) 12:05:31 ID:hF7Id5vQ
>>976
>あるのはビット幅と1と0とツールの解釈の違いだけだ

オレは、Verilog しか使わないが、VHDL にも X や Z は
あるだろ。それに、ツールの解釈の違いをなくすために
標準化をしてるんじゃないのか?
803774ワット発電中さん:2008/02/16(土) 18:15:15 ID:uYsfTxs/
「実装依存」と定義するのも標準化のうちだけどな。
804774ワット発電中さん:2008/02/16(土) 22:52:40 ID:fJfFviiy
よし、今こそLispベースのハードウェア記述言語を(ry
805774ワット発電中さん:2008/02/16(土) 23:14:08 ID:hF7Id5vQ
>>803
ソフトなら高速化のためとかでそれが許されるけど、
HDL でやられたら困るよなあ。

>>804
個人的には FORTH がいいかな。
806774ワット発電中さん:2008/02/17(日) 03:21:44 ID:OAXS24ol
>>802
メジャーなHDLにはXもZもあるけどレスの流れ的にそれは関係ない

あと完全な標準化は無理、bit幅が違うときの実装なんてそれぞれ
言語もツールも決まったものしか使わないのなら問題ないんだろうけど
807774ワット発電中さん:2008/02/17(日) 04:43:20 ID:xXp9ceJq
 
808774ワット発電中さん:2008/02/17(日) 14:26:45 ID:nZtlTJDI
>>798
素のVHDLってなんなんだ?
IEEE定義の標準ライブラリも含めてVHDL規格だろ?

特定の処理系の実装ローカルの話と規格の話をごっちゃにしないでくれ
809774ワット発電中さん:2008/02/17(日) 15:57:44 ID:t2gNetpN
趣味でFPGAを使ってみたいと思っているのだが
SystemVerilogとかSystemCの開発環境は有償なのか?

複雑な物理シミュレーションを行なうプログラムをFPGAを使って
高速化しようと思っているので、なるべくなら抽象度の高い言語で
書きたいのだが。

FPGAをやるに当たって開発環境、言語についてお勧めがあれば教えて。
810774ワット発電中さん:2008/02/17(日) 16:34:32 ID:0FUmy2Hf
ハードに突っ込めば速くなるなんてのは幻想です
ソフト屋にはそれが分らんのです

簡単な計算をいくつも同時に大量にこなすならともかくね
複雑な〇○なんて個人がチョチョっと書いてどうにかなるもんじゃないんで諦めた方が…
それでもやるって言うならまずは適当なスターターキット買えばいいかと
VerilogとVHDLとなんか図で書く奴はザイリンクスもアルテラもメーカ純正ツールは無償である(無償のは使えるデバイスに制限あるんだっけ?
でもSystemCとかは有償で、それもその言語で書いたのをVHDLにコンバートしてそれをメーカ純正ツールでコンパイルだったはず
非常に複雑なもの書くためのものだから直接Verilogとかで書いたほうが速くなるかと
スターターキットで言語覚えたりハードウェアについて覚えて、PCI-Eキットで通信覚えてそのままPCI-Eデバイス開発の流れかな?
811774ワット発電中さん:2008/02/17(日) 16:56:40 ID:LWQRjuP8
MMXだけで早くなるかもね
812774ワット発電中さん:2008/02/17(日) 17:15:53 ID:nZtlTJDI
>>809
回路の論理記述そのものを抽象度が高い言語でやる必要はない
抽象度が高いI/Fを用意すればいいだけの話

デバイスドライバ本体を抽象度の高い言語で記述してもロクなものはできないだろ?
I/F設計さえ妥当ならば実装はアセンブリ言語やC言語で書きゃいいってのと同じ話だ
813774ワット発電中さん:2008/02/17(日) 17:20:27 ID:isV/QQso
>>809
>複雑な物理シミュレーションを行なうプログラムをFPGAを使って
>高速化しようと思っているので
それが目的なら、FPGAを使うという選択が誤ってるだろ。
DSPかCellに行けって。
814774ワット発電中さん:2008/02/17(日) 17:28:05 ID:t2gNetpN
>>810
> 簡単な計算をいくつも同時に大量にこなすならともかくね

複雑な計算だけど並列化は見込める演算なので、ハード化、特にFPGAで実装する価値のある
処理だと考えてます。

SystemVerilogのほうは開発ツール/環境は有償ですか?

>>811

同じ処理を複数やるわけではないのでMMX/SSEでは速くなる見込みはないです。

>>812
> 回路の論理記述そのものを抽象度が高い言語でやる必要はない

非常に複雑な(難しいという意味ではなく、コードのステップ数が多いという意味で)計算なので
なるべく抽象度の高い(記述力のある)言語で書きたいのです。
815774ワット発電中さん:2008/02/17(日) 17:46:47 ID:t2gNetpN
>>813
> DSPかCellに行けって。

物理計算と書いたのが誤解を招いたようですみません。 > all

やろうとしているのはあいにくDSP向きの処理ではないのです。

また、途中計算自体は1000個ぐらいに分割し(その1000個はそれぞれ異なる計算)、
並列化できるのですが、その途中計算自体が次の段の計算に必要なため、
CellのSPEが全く生かせないのです。

FPGAなら1サイクルでこの1000個の計算を一気に求めることが出来ると考えてます。
816774ワット発電中さん:2008/02/17(日) 17:55:36 ID:9+FVNgni
演算部分だけ、Cっぽいので書いて、HDL に変換出来るツールがあれば
便利だと思う。モジュールコンパイラーを使えばいいのかもしれないけど。
結局、SystemC って、Cだけど構文がすごく限定されるから書きにくい。
817774ワット発電中さん:2008/02/17(日) 19:25:38 ID:m2FBvr3s
>>810
> 簡単な計算をいくつも同時に大量にこなすならともかくね
物理屋の計算っていったら普通は簡単な計算をいくつも同時に大量にこなすなんじゃねえの?
天体の重力の計算とかだろ?
818774ワット発電中さん:2008/02/17(日) 22:09:32 ID:nZtlTJDI
まずはMATLAB/simulinkで演算処理のフローを書いてみたら?
自動的にHDLに変換できるよ。
でもMATLABは高価だから個人的趣味では無理かも…

「抽象度の高い」ってのがイマイチどっち方向に高いのかよくわからんのだが
ソフトウェア的な複雑な条件判断を含む繰り返し手続きコードを書いておけば
そのまま回路に落ちるって意味なら、そんな銀の弾丸は存在しない。

泥臭いけど地道に計算フローのデータパス設計するしかないと思うよ

DSPやCELL以外にもIPFlexのDAP/DNAなんつーデバイスもあるぜ
819774ワット発電中さん:2008/02/18(月) 00:40:34 ID:UhLs1Wnz
それかTileraのTILE64とかね。
http://www.tilera.com/products/processors.php
820774ワット発電中さん:2008/02/18(月) 08:27:30 ID:LCes8b0+
>>818
DAPDNA2は以前購入を検討しましたがPEが少なすぎて
FPGAで実現するほうが高速だと考えています。

>>819
TILE64はチップ間のデータ通信にかかるコストが許容できないのです。
(前段での計算結果を次段で参照するため)


やりたいことは、簡単にモデル化すれば、

In[N+1 , i ] = Out[N , j ] ・ K[i,j]

このような計算で、前段のすべての計算結果にそれぞれ一定の係数を掛け、
それらをすべて足し合わせたものを次の段の入力に使うのです。
(実際は掛け算ではなくひとつひとつが異なる数式の、もう少し複雑な処理です)

一定の係数を掛けて足し合わせる部分は並列化できるのですが、
並列化をプロセッサの分割によって実現すると通信オーバーヘッドが膨大になります。

条件判断はほとんど必要ではありません。

しかし数式自体は別のシミュレーションの結果から持ってくるので頻繁に
変わります。そのたびに再コーディングはやってられないので、その部分を
自動化する必要があって、なるべくなら記述力のある記法で書きたいと思っています。
821774ワット発電中さん:2008/02/18(月) 09:46:51 ID:VDPr4S2p
スレ違いなツッコミだけど
> 並列化をプロセッサの分割によって実現すると通信オーバーヘッドが膨大になります

そんなことないだろ?
全ノードを共有バス型ネットワークに接続してやって
各ノードについて自分が計算した結果を自分以外の他ノードに
ブロードキャストで通知してやりゃあいいだけの話

計算結果をブロードキャストするだけなら
通信オーバーヘッドなんて高が知れてると思うがいかが?
822774ワット発電中さん:2008/02/18(月) 10:13:18 ID:qCgorUhY
数式自体が頻繁に変わるとすると、全ての場合に対応するように回路を組むか、再合成が必要になるんでねの?
823774ワット発電中さん:2008/02/18(月) 10:31:57 ID:UhLs1Wnz
再合成しなきゃいかんのは大前提で、その元になる記述のレベルをなるべく数式に
近いものにしたいってことなんでしょう。

しかし、その(簡易)モデルだと、演算はブロック化できるんでは。
そしたら通信オーバヘッドはある程度隠蔽できそうな気がするんだけど。
FPGA使うにしても元値の入力と演算結果の出力では結局通信オーバヘッドが生じるし、
オーバヘッドの少ないチップ内通信(ステージ間のデータ転送とか)ですべてまかなえるほど
データ量が小さいわけでもないだろうから。
824774ワット発電中さん:2008/02/18(月) 10:36:30 ID:LCes8b0+
>>821
> 計算結果をブロードキャストするだけなら

各段の計算結果は10KB程度あります。1段終了ごとにその10KBをbroadcastすると
100Gbpsのバスでつないだとしても 100Gbps / 10KB = 1.342MHzしか出ないのです。

ハードには詳しくないので、もっと速度が出るということでしたらすみません。

>>822
確かに、数式自体は頻繁に(1日に一回ぐらいのペースで)変更になるので、
FPGAでやろうとした場合、数式の変更ごとに再合成は必要になります。

再合成自体にかかる時間はなるべく少ないほうが良いですが、1日に一回なら
寝る前に開始しておけばいいのではないかと思っています。
825774ワット発電中さん:2008/02/18(月) 10:45:48 ID:LCes8b0+
>>823
> オーバヘッドの少ないチップ内通信(ステージ間のデータ転送とか)ですべてまかなえるほど
> データ量が小さいわけでもないだろうから。

最終的な演算結果(10KB程度)を次段(次のクロックで行なわれる計算)の入力に回したいだけなのですが
こういう処理はFPGA向きではないですか?
826774ワット発電中さん:2008/02/18(月) 11:02:53 ID:VDPr4S2p
1ステップの計算所要時間が1μ秒以下の状況を想定している??
O(n^2)の演算を高速化したいっていうから少なくとも1分よりは長いと思ってた

そんなに1ステップあたりの演算量が少ないなら並列化しても効果薄いんじゃないか?
最新のインテルアーキテクチャのCPUでぶん回すのが一番速そう
827774ワット発電中さん:2008/02/18(月) 11:55:40 ID:LCes8b0+
>>826
演算は O(n^2) ですが、nはそれほど大きくありません。(nは1万ぐらいで、ほぼ固定)

現在、Xeon X5355の8コアでx64環境で計算させてますが、
コアの分割による並列化がほとんど生きないのでそれほど速くないのです。

せめてあと10倍速くなれば..と思うのですが。
現在、1段のパイプラインの実行に要する時間が 1μsec程度。

私の試算によると、この計算の1段のパイプラインは50万LE程度のFPGAであれば1クロックで
実行できるので10MHzぐらいで動作してくれれば10倍ぐらい速いことになるのですが。
828774ワット発電中さん:2008/02/18(月) 12:43:43 ID:B2V67uem
マンション分譲
株式会社アジャクスなど2社
事業停止、自己破産申請へ
負債122億8000万円

神奈川県横浜
829774ワット発電中さん:2008/02/18(月) 13:11:25 ID:VDPr4S2p
>>827
「パイプライン」が何を指しているのかいまひとつわからないなぁ
1クロックで実行とはどういう意味なのか?
演算パイプラインのスループットが1出力/1クロックっことなのかな?
パイプラインの深さ(段数)はいくつくらいの見積?
いったい何本のパイプラインを用意するの?
係数データ k(n,n)はどう配置するつもり??
演算は固定小数点 浮動小数点?
浮動小数点なら1クロックで動く加算器を作るの大変そうですね

演算パイプライン1本について、乗算器と加算器を並べた図を描いてみた?
→それを自動化したいというならそんな魔法の弾丸はないと(以下略
830774ワット発電中さん:2008/02/18(月) 23:17:05 ID:lZn/HFOd
なんか昨日書こうと思ってたことが書いてあってワロタwww
結局は>>829ですよね精度とか必要だろうに
831774ワット発電中さん:2008/02/19(火) 00:45:21 ID:GylIYAYE
話の流れをブッタギル様でスマンが。

>>790
VHDLはしらんがVerilogでは加算のオーバーフローは
暗黙に1ビット確保される。
assign [n+1:0] = [n:0] + [n:0] な感じ。

合成ツールによっては、オーバーフロー考慮しない
加算回路は"ビット幅が違う"警告をくれるぞ。
832774ワット発電中さん:2008/02/19(火) 19:34:25 ID:apW/Gxdd
OS:WinXP-Pro,Mem:1GB,ソフト:Web-ISE 9.2i 使用

4個の7セグメントLEDで右から順にゼロを移動させながら表示したく思っています。
一応、リセットのボタンを押すと目的の動作はするのですが、初期状態から移動点灯
の動作をさせてたく思っています。

つまり、無点灯の7セグメントLEDを [ ] で表現すると、
[ ] [ ] [ ] 0 → [ ] [ ] 0 [ ]  → [ ] 0 [ ] [ ] の感じです。現在は、0 0 0 0 から
開始してしまいます(左端に行くと、右端に戻る)。

ボードのマニュアルでは、無点灯LEDにするにはハイ・インピーダンスを与える必要が
あるので assign SA = 4'bzzz0; //初期条件 を信号定義とalways文の間に書いたところ
エラーになりました。これを削除すると、0 0 0 0 からリセットで移動点灯します。
どうすればよいでしょうか? 

ソースは、クロックをCLK,リセットをRST,セグメント選択信号をSA,セグメント内LED
信号をSegとしたとき、以下の通りです(抜粋)。

assign Seg = 8'b0000001_1; // 初期条件。0を表示
always @(posedge CLK or negedge RST)
begin
if(!RST) //RSTが0のときリセット
begin
divide<=0;
SA_tmp<=4'bzzz0;
end
else
begin
//SAでセグメントLEDの遷移状態を記述
end

アドバイスを願います。
833774ワット発電中さん:2008/02/19(火) 20:14:44 ID:JRQ9wSZq
省略はいかん
834774ワット発電中さん:2008/02/19(火) 20:23:40 ID:hqRoD+NR
出力信号にzを代入するんじゃなくて、
出力をtristate bufferにして、
enableをnegateするんじゃないの。
よくわかってないので間抜けなこと言ってたらスマン。
835774ワット発電中さん:2008/02/19(火) 20:35:36 ID:JRQ9wSZq
大抵こういうのは
自分で関係ないと思って省略している部分に問題がある
836774ワット発電中さん:2008/02/19(火) 20:53:52 ID:VFfoi/Hq
>>835
おまえ、いいこと言う!
837832:2008/02/19(火) 21:23:48 ID:apW/Gxdd
>>833-835
レスありがとうございます。
VerilogのRTL記述全体をUpしました。 http://1rg.org/up/7034.txt

この中で //assign SA = 4'bzzz0; のコメント記号//を外すと、
  ERROR:Xst:528 - Multi-source in Unit <SevenSegs2b> on signal <SA<0>>
というエラー表示が出ます。これをコメント化すると 0 0 0 0 から始まります。

どうやら、SA<0>に問題があるようなのですので、このエラーコードをザイリンクス
のHPで調べると http://japan.xilinx.com/support/answers/14264.htm のように
なっていますが、内容がよく分かりません。
※ソリューション1で「競合が回避されるようにコードを修正してください」とのこと
ですが、どうすれば良いのでしょうか?

出来ましたら、解説願います。
838774ワット発電中さん:2008/02/19(火) 21:33:12 ID:JRQ9wSZq
上から順位実行されると思ってるな
文字通り「初期条件」のつもりで書いたんだろうけど

ソフトウェアじゃないから

assign SA = 4'bzzz0;
assign Seg = 8'b0000001_1;
assign SA=SA_tmp;

これじゃぶつかる
839774ワット発電中さん:2008/02/19(火) 22:30:03 ID:1F14oDK0
if(!RST) //RSTが0のとき
の上に
if (SA_tmp==4'b0000) SA_tmp <= 4'bzzz0;
をいれたらどう?インチキだけど。

840774ワット発電中さん:2008/02/19(火) 22:47:30 ID:JRQ9wSZq
インチキだけど
begin
if (SA_tmp[3] == 0) SA_tmp<=4'bzzz0;
else if (SA_tmp[0] == 0) SA_tmp<=4'bzz0z;
else if (SA_tmp[1] == 0) SA_tmp<=4'bz0zz;
else if (SA_tmp[2] == 0) SA_tmp<=4'b0zzz;
else SA_tmp<=4'bzzz0;
end
841774ワット発電中さん:2008/02/19(火) 22:59:20 ID:Uew5mgSP
レジスターにZを入れるという感覚が理解できない
842774ワット発電中さん:2008/02/19(火) 23:09:33 ID:JRQ9wSZq
まもなくリセット論議が開始されます
843774ワット発電中さん:2008/02/19(火) 23:23:27 ID:TS4kVs82
お題
リセットはフツー非同期だろ? いやいやプロなら同期だろ?
844774ワット発電中さん:2008/02/19(火) 23:31:06 ID:QEgSouPl
いや、最近の流行は調歩同期だろ。
845774ワット発電中さん:2008/02/19(火) 23:39:46 ID:TS4kVs82
んにゃ
これからは無手順たれ流しじゃよ
846774ワット発電中さん:2008/02/20(水) 00:14:54 ID:zT7HG/YC
お題
イマドキ正論理だよな?いやいや、TTL時代からリセットは負論理だよ。
847774ワット発電中さん:2008/02/20(水) 00:17:54 ID:QYRKdN1k
最近Verilog-HDLのRTL設計見習いになったのですが、疑問が。

今課題出されてるのですが、今日RTL書いてる際に上司から
「1bitはバイナリで書くこともあるが、それ以外はヘキサで書く」と言われたんですが。
ヘキサって0-Fまでのヤツですよね。ヘキサで書くのって4bit以上の信号だと思ってたんですが、
2bitとか3bitの信号も、3'h4みたいに記述するんですか?
848774ワット発電中さん:2008/02/20(水) 00:36:05 ID:zT7HG/YC
べつに、バイナリで書こうが、16進で書こうが、10進で書こうが、いいんでねの?
無理にヘキサで書く必要は感じない。っていうか、分かりやすく書くことが大切。
ビット2を立てたいなら、3'b100 でいいし、レジスタに4を入れたいなら、4'h4 でも
4'd4 でもお好きに。

まあ、社内ルール(ってか、上司の脳内ルールw)があるなら、したがったら?
849774ワット発電中さん:2008/02/20(水) 00:37:48 ID:zT7HG/YC
あ、あと、casex 文では、バイナリーで書く必要があるじゃなぁい?(ギター侍風に)
850832&837:2008/02/20(水) 00:55:53 ID:tBpoIZIo
>>838-841
ありがとうございます。

838さんの指摘の「ぶつかる」というは、具体的に
どういう状態になるのでしょうか?


なお、目的の動作自体は、839さんの記述でOKでした。
851774ワット発電中さん:2008/02/20(水) 01:23:27 ID:wvomu+9N
>>850
別解として
信号定義の部分で
reg [3:0] SA_tmp = 4'bzzz0; //セグメントLED用Reg
としてうまくいかないかな。
ASICだとだめだと思うけど、FPGAなら
デバイスのコンフィグ時に面倒見てくれそうな希ガス。
852774ワット発電中さん:2008/02/20(水) 01:45:26 ID:wvomu+9N
>>850
always文と10行目の代入文は同時に実行される。
multiplexerを介さずに複数の信号を入力することは無理。
一般のCPUによる逐次処理とは違う。
853774ワット発電中さん:2008/02/21(木) 16:33:46 ID:ownEVKjM
>>850
話がそれるけど、
このボードってHi-ZだとLEDが無点灯になって、'0'を与えると点灯するの?
じゃあ、'1'だとどうなる??
'0'で無点灯、'1'で点灯で良いように思うのだが。
854774ワット発電中さん:2008/02/21(木) 17:24:15 ID:A/qjOOy3
MOSはチャンネル長が同じならNチャン(CMOSでのL出力)の方がドライブ能力が高いので、CMOSでLEDを
直接ドライブして点灯するときは、L出力で点灯という回路設計をすることが多い。
855774ワット発電中さん:2008/02/21(木) 18:03:04 ID:HSpzawFT
単に TTL時代の電流吐出し能力は低いが吸込み能力は大きい頃の名残じゃないか?

CMOSはドライブ能力を対等に作るものだから(だからこそ complementary-MOS)
吐出しも吸込みも同じに設定してあることが多い。
つーか同じになるようにnMOSとpMOSのチャンネル幅/長を変える。
そうじゃないと H→LとL→Hの遷移時間が同じじゃなくなってイヤな感じ。
856774ワット発電中さん:2008/02/21(木) 18:18:44 ID:+ZB6hIio
多い少ないは分からんが、データシート上でCMOSデバイスで吸い込みのほうが
多いやつも、両方同じやつも、どっちも普通にあるな。

しかし吐き出しのほうが多いやつは見たことがない。であれば、吸い込みのほうが
「少ないことはない」と考えるのは妥当だろうね。
857774ワット発電中さん:2008/02/21(木) 19:25:29 ID:B6DsDKrq
>>856
いまさら「1+1は2である」とか自慢げに書かれても困ってしまいます。
だれも「違う」なんて言ってないんだから。
858774ワット発電中さん:2008/02/21(木) 20:11:55 ID:8jbd1S6T
「carry chain」について調べている途中で、イネーブル(enable)信号と
キャリー信号の違いが分からなくなりました。

どなたか、解説願います。
859774ワット発電中さん:2008/02/21(木) 20:54:15 ID:T4LqkGGi
>>855
つか、オープンコレクタドライバの名残なんじゃね?>>L点灯
負論理だし(w
860774ワット発電中さん:2008/02/21(木) 22:07:19 ID:jvdaua3t
電子とホールの移動度の違い
861774ワット発電中さん:2008/02/22(金) 01:00:26 ID:OKQ04IKo
言語:Verilog ソフト:Web-ISE

大きな数値の表現で質問です。
例えば6GHzの60億をパラメーター FRQ に定義するとき、
parameter FRQ = 6000000000; などと書くことができますが、
もっとスマートな表記法はないでしょうか?
例えば、
 FRQ = 6*10^9; ( ^ はVerilogではEx-ORですが)

な感じで。
862774ワット発電中さん:2008/02/22(金) 02:03:48 ID:I4SAAZo/
6.0E+9
863774ワット発電中さん:2008/02/22(金) 02:41:10 ID:OKQ04IKo
>>862
Thx
864861:2008/02/22(金) 04:07:23 ID:OauL8eg7
すいません。エラーになりましたので再質問です。

クロックが6MHzなので parameter OneSec = 6.0E+6; // 6MHz
と書いたところ、論理合成で下記のエラーが出ました。

FATAL_ERROR:Xst:Portability/export/Port_Main.h:127:1.17 - This application has discovered an exceptional condition from・・・
Process "Synthesize" failed

OneSec = 6000000; とすると問題無いです。
もしかして、Web-ISEはこの 6.0E+6; の表記をサポートしていない、という
ことはないのでしょうか?
865774ワット発電中さん:2008/02/22(金) 05:24:43 ID:HhBbvNCJ
わろす
866774ワット発電中さん:2008/02/22(金) 07:30:13 ID:Iaetvd/F
6 * 1000 * 1000 * 1000
でいいじゃんか
867774ワット発電中さん:2008/02/22(金) 12:11:29 ID:vWGmmsVz
そんなことにこだわるよりも、ほかに勉強すべきことがたくさんあろうに。
868774ワット発電中さん:2008/02/24(日) 01:12:09 ID:snhpJd0G
6_000_000_000
869774ワット発電中さん:2008/02/25(月) 02:12:59 ID:lpPGZXEk
w = Ci ・ Xi (Ciは定数 , XiはBIT , i=0..N-1 , N=1000ぐらい)

というような足し算を高速化したいのだが

w0 = C0・X0 + C1・X1
w1 = C2・X2 + C3・X3
w01 = w0 + w1

のように2個ずつ足し合わせようと思っている。
この場合、加算ブロックが、log2 N 段必要になる。

2個ずつではなく M個ずつ足し合わせたら(log2 N)/(log2 M) 段で済むので、
そこでM個ずつ足し合わせるようにしたいのだが、APNAか何かで高速に
M個まとめて足してくれるライブラリはないものか?
870774ワット発電中さん:2008/02/25(月) 10:39:47 ID:CGuZ0v1J
869=827かい?

2入力加算器 と M入力加算器(M>2) では速度も面積もぜんぜん違うよ
ブロック図での見た目の段数で論じても無意味だと思う

つーか、演算したいデータが固定小数点なのか浮動小数点なのか
ビット幅はどのくらいなのか まだ回答されてないけど
そういうところ無視して検討されても机上の空論以前で答えようもない

1クロックで演算がすべて終わる幻想 まだ捨ててなかったのかと…
871 ◆YMO/ALTERA :2008/02/25(月) 10:49:32 ID:1KzMwTEh
加算器程度だったら遅延覚悟で組み合わせ回路にしてしまえる。
fmaxを向上させるのかトータルのレイテンシを重視するのか
自身のアプリと相談だ。
872774ワット発電中さん:2008/02/25(月) 11:06:38 ID:CGuZ0v1J
>>871
固定小数点ならそうかもしれないが、浮動小数点の場合
加算器は乗算器よりも複雑かつ遅い回路となるのだよ
873869:2008/02/25(月) 11:47:18 ID:lpPGZXEk
>>870
俺は827とは違う。
俺は8bit程度の正の整数の足し算をしたいだけ。(合計は最大で16bit程度)
874774ワット発電中さん:2008/02/25(月) 15:19:19 ID:9jrY0L/0
演算回路と聞くとすぐに浮動小数点とか言い出す香具師は何なの?おまいはコプロでも作ってろよw
875774ワット発電中さん:2008/02/25(月) 18:02:19 ID:TVmBD8Ot
FPGA設計者ってIT系のソフト開発よりも給料が高いのでしょうか?
自給7千円もらえるって聞いたんですけど(??)
876774ワット発電中さん:2008/02/25(月) 18:33:01 ID:CGuZ0v1J
固定小数点(=正の整数演算)で
Ci * Xiが8bitに納まり 1000個累算したwが16bitに納まるってことでOK?
Ci と Xi はそれぞれ何bit幅?
877774ワット発電中さん:2008/02/25(月) 18:49:14 ID:9jrY0L/0
FPGA の設計をしたいなら、Altera か Xilinx に就職したほうがいいよ。日本法人じゃダメだけど。
878774ワット発電中さん:2008/02/25(月) 18:55:29 ID:lpPGZXEk
>>876
Xi は 1bit(boolean)
Ci は 8bit(有効桁5bitぐらいでも可)

ARITH
http://www.aoki.ecei.tohoku.ac.jp/arith/mg/index.html

使ってもいいのだが、こういうのがライブラリ化されていないのか
気になったもので。
879774ワット発電中さん:2008/02/25(月) 19:12:00 ID:V/qXyokc
>>875
何処から聞いたんだよ。
880774ワット発電中さん:2008/02/25(月) 19:21:05 ID:CGuZ0v1J
Xiは1bitかよ!
それだったらテーブル作ればいいんじゃないの?
Xi〜i+11 までの12bit入力 10bit出力くらいのテーブル用意すれば
たかだか40kbitのブロックRAMから参照するだけで12入力の乗算/累算が完了するぞ
881774ワット発電中さん:2008/02/25(月) 20:18:18 ID:WFniKoBI
>>880
テーブル作成は表計算ソフトでだな(w
882774ワット発電中さん:2008/02/25(月) 21:23:59 ID:lpPGZXEk
>>880
1) テーブルを参照するコストはARITHでコード生成したものより小さい?
2) 12入力の乗算/累算をしたあとは結局どうすればいい?
883774ワット発電中さん:2008/02/25(月) 21:32:19 ID:CGuZ0v1J
>>882

1)いわゆるブロックRAMを使うならテーブル参照の方が全然小さい
 しこしこ計算するにしたってCiを格納するレジスタファイルが要るわけだしな

2)1000/12=83.3だから 84種の12入力のテーブル参照回路を用意して
 結果をすべて足せばいいんじゃないの?

12入力がいいのか 8入力がいいのか 16入力がいいのか
そこらへんはどんなデバイスに実装するかを含めて
検討してみる必要があるだろう
884 ◆YMO/ALTERA :2008/02/25(月) 21:49:59 ID:Nn390wW/
>>872
高卒でいきなり浮動小数点の加減算組まされたので
そのへんの講釈は結構っす。

# 三角関数のCORDICもな!

>>873
まっとうに組めば合成でそれなりに最適化されるハズなのだけど
逆に、この手の演算を効率よく落とせるノウハウがあったら知りたいところ。
885774ワット発電中さん:2008/02/25(月) 21:54:25 ID:lpPGZXEk
>>883

1)については了解。ありがとう。

2)について、84つの結果を足し合わせるのに、うまい技法があれば知りたいのだが。

何か適切なライブラリがないようなら、ARITHで N 変数の和を求めるコードを生成して、
N ^ M ( >= 84 ) と M段で求めようと思うのだがこのときの{ N , M } として { 10 , 2 }ぐらい
にするか、{ 4 , 4 } ぐらいにするか何がいいのかさっぱり指針がなくて困る。

実際、論理合成してみればいいのか..そうか..
886774ワット発電中さん:2008/02/25(月) 22:06:44 ID:CGuZ0v1J
くどいけどしつこく助言するぜ

すべてを組み合わせ回路(1クロックで演算)って構成やめた方がいいと思うよ
無駄に面積食って遅いだけ

なんでそんなに組み合わせ回路にこだわりますか?
887774ワット発電中さん:2008/02/26(火) 01:00:27 ID:DjP/dCN3
小規模な回路をgenerate文でたくさん生成しているんですが、FPGAの容量に余裕がなくなってきました。
単位となる回路を少しでもスマートにできれば効果は大きいと思うのですが、そうするためのコツみたいな
ものがあればご助言願いたいです。
処理アルゴリズム自体をスマートにできればそれが一番なんでしょうけど、微妙な記述の違いで
変わるとか(C言語であれば2で割るとき、「/2」と書くよりも「>>1」と書くほうが速いというような感じ)でも
効果的だと思うのでお願いします。
888774ワット発電中さん:2008/02/26(火) 01:09:41 ID:acYy0JhO
どんな回路か分からないと助言のしようもないけどさ。
そのFPGAの構造に合った記述にすると効率的だよ。
使い回しが利きにくくなるけど。
889 ◆YMO/ALTERA :2008/02/26(火) 10:47:02 ID:ggozKriS
>>887
業務で"なるべくたくさんのモジュールを目一杯詰め込む"は
やっちゃいけないことだな。
セオリーでは、性能を決めて、それに合うデバイスを
余裕を持って使う。

もちろん趣味でやるなら、俺自身が99%まで詰め込んだことがあるので
できなくもないけど、Fittingで試行錯誤(Seedをひたすら変更とか)
することになる。

もちろん配線の自由度ががっくり下がるので、速度は期待できなくなるぞ。

QuartusIIのばあい、モジュール毎に最適化オプションを変えられる。
890774ワット発電中さん:2008/02/26(火) 14:06:45 ID:3f2h4cSS
そうそう。仕様変更やバグフィックスで入りきらなくなったら、泣くしかない。
891774ワット発電中さん:2008/02/26(火) 14:32:18 ID:0RZJuHe3
>>887
最近のツールじゃ記述方法によるサイズの違いはほとんどないと思うな。
容量が足りなくなったら設計側で地道にロジックを削るしかないと思う。
簡単なのは余分なレジスタを削除する。
たとえば6ビットしか使わないレジスタがあっても書き込み側が16ビットだと16ビットで記述しているとかないか?
892774ワット発電中さん:2008/02/26(火) 21:35:52 ID:IlPkB9m1
>>887
アップカウンタをダウンカウンタや乱数カウンタに置き換えるとか。
関係ないけどスマートの使い方間違ってない?
893774ワット発電中さん:2008/02/26(火) 22:22:34 ID:Uy1zXSex
パチンコかよ! > 乱数カウンタ
894774ワット発電中さん:2008/02/26(火) 22:25:06 ID:cfI9FSqT
>>887
メモリ容量やDSPブロックを減らすには?
http://monoist.atmarkit.co.jp/fembedded/articles/fpgatuning/03/fpgatuning03a.html
895887:2008/02/26(火) 22:54:26 ID:n5Y9ifjX
>>888-894
みなさん、たいへん有意義なご助言、ありがとうございました!!
これでだいぶ喰らいついていけそうです!

今回こんなことになったのは、FPGA選定当初は容量に余裕を持ったデバイスを選んだのに、
仕様の詰めが甘かったようで思わぬ変更が入り、回路が増えてしまったからなんです。

何とか抑えてみます。
ありがとうございました。
896 ◆YMO/ALTERA :2008/02/27(水) 01:28:48 ID:aJDot9Nt
そゆ場面でケチって詰め込むノウハウを訊きたいなら
始めからそう言ってくれい。

つワケで、どんな回路か、差し障りのない範囲でこぼすといいとオモ
あと、デバイス名とか、要求性能とか。
897774ワット発電中さん:2008/02/27(水) 09:32:51 ID:msvqJCk/
みんなどれ位余裕を持ってデバイスを選ぶのか教えてくんろ。

おいらの場合はこんな感じです。

CPLD程度であれば仕様検討段階で必要なカウンタやレジスタ数で5−6割程度で決める。
FPGAなどになるとRAMとかレジスタ数で決まるので、必要とされるRAM7割くらいで押さえておく。
当然デバイスを選ぶ時には同じピンでサイズのでかいのがあればそれを選んでおくようにしている。
検討段階でTQFPで一番大きなFPGAを選ぶよりもBGAを選んで一つ上に置き換えできるようにしている。

昔はデバイスが大きくなるとスピードがガクンと落ちてタイミングがNGとなるケースが多かったが、最近はサイズが大きくなってもスピードはほとんど変わらないのでありがたい。
898774ワット発電中さん:2008/02/27(水) 12:03:42 ID:HNHSLIi2
どうしてもFPGAではレジスターが余りがち。というか、FFを使わずLUTだけ使うセル/エレメントが多くなる。そういう意味で乱数カウンタ(M系列のことだよね)は効果ある。いかんせん、デコード値が分かりにくい。
FFを多用すると意外とエレメント数では小さくなったりするよ。
899774ワット発電中さん:2008/02/27(水) 17:00:07 ID:OYAvhjPz
>当然デバイスを選ぶ時には同じピンでサイズのでかいのがあればそれを選んでおくようにしている。

ってのは、同じパッケージで最大のを選ぶという意味?
セオリーとしては逆のような希ガス

>検討段階でTQFPで一番大きなFPGAを選ぶよりもBGAを選んで一つ上に置き換えできるようにしている。

って書いているので日本語の問題だと思うのだが…気を悪くしないでくれ。
900774ワット発電中さん:2008/02/27(水) 19:08:15 ID:Zx8gYA8k
>>898
20bitカウンタとかでも半分のリソースで済むよね
チャタリングマスクが多いときなんか効果大!

でもいかんせんデコード値が分かりにくいので、generic文でコンパイル時に
カウント値からエンコードしてくれないかなと試したけどうまくいかなかった
結局バッチスクリプトで生成して埋め込んでる
901774ワット発電中さん:2008/02/27(水) 19:25:29 ID:bC4CHJ2n
基本、シフトレジスタだからね。initial 時に for 文で回してできないかな?やったことないけど。ヒマをみて試してみます。
902774ワット発電中さん:2008/02/28(木) 05:48:16 ID:vmF1n63s
テストベンチでのファイル出力(書き込み)で質問です。
WinXP-ProでModelSim XE III 6.2gを使用。

本やWebを参考に、シミュレーション結果をテストベンチと同じディレクトリにある
Sim.txtに書き込むため、テストベンチのendmoduleの前に以下のように書きました

 ・・・
 ・・・
integer fp;
initial
begin
fp=$fopen("Sim.txt");
$fwrite(fp,"Sim.txt");
$fclose(fp,"Sim.txt");
end

endmodule

この記述では、 「・・・$fclose : Wrong number of arguments.」と出て、エラー表示
「# Error loading design」が出ます。

どのように修正すればよいのでしょうか?
903774ワット発電中さん:2008/02/28(木) 07:55:24 ID:UpzNA6nD
closeにファイル名は要らないんじゃないすか?
904887:2008/02/28(木) 21:44:59 ID:TWNKP7KU
>>896
すみません、まだその回路の理解が不十分なので、取り組んでいく中で助言をお願いしたいことが
出てきたら、そのときにまたお願いします。
ありがとうございました。
905902:2008/02/28(木) 22:23:42 ID:qen/8UG7
>>903
どうも。

自分なりに修正しました。
integer fp;
initial
begin
fp=$fopen("Sim.txt"); //用意していたSim.txtを開く
$fwrite(fp,$stime," ENABLE=%b ins1=%h LED=%b", ENABLE, ins1.COUNT_tmp, LED);
// Sim.txtに 時間,ENABLE, ins1.COUNT_tmp(カウントのレジスタ値), LED の4つを書き込む
$fclose();
end

※全文は http://upload.jpn.ph/img/u12908.txt 

これだと、Sim.txtの最初の1行は 0 ENABLE=x ins1=x LED=xxxxxx になっていますが、その後が続きません。

すいませんが、再度ご指摘願います。
906774ワット発電中さん:2008/02/28(木) 23:06:36 ID:UpzNA6nD
その後って?
open → 1行書く → close してるんだから 1行しかないのは当然だろ??

もし既存のファイルに追加書込みしたいなら$openの代わりに$openaを使え
907774ワット発電中さん:2008/02/29(金) 06:55:59 ID:3r2KW8K/
質問です。

VerilogRTLレビューで修正点が出た場合のコメントの付け方は、
皆さんどうされてるのでしょうか?
私はheader部分に、version 日付 本文中に"//verxx" (xx:数字)で
書こうと思っているのですが。

908774ワット発電中さん:2008/02/29(金) 06:56:21 ID:3r2KW8K/
質問です。

VerilogRTLレビューで修正点が出た場合のコメントの付け方は、
皆さんどうされてるのでしょうか?
私はheader部分に、version 日付 本文中に"//verxx" (xx:数字)で
書こうと思っているのですが。

909907:2008/02/29(金) 06:57:54 ID:3r2KW8K/
すいません、書き込みエラーが表示されたので更新したら
重複書き込みしていました。
910774ワット発電中さん:2008/02/29(金) 07:30:23 ID:Q8pq12SK
普段の修正と同じく、CVS や Subvsesion の ChangeLog で管理かなあ。

RTLにもコメントを残したいという時は、本文中に"// $Log$"で自動追記。
911774ワット発電中さん:2008/02/29(金) 09:31:55 ID:/z00B2/X
いちいちバージョン管理なんてしねーよ
912774ワット発電中さん:2008/02/29(金) 11:40:18 ID:sDE0Cn/P
>>911
アマチュアはそれでいいが、プロの場合はバージョン管理しないと、
思い違いで、とんでもないバグを紛れ込ませて、めちゃくちゃ痛い思いをするよ
HDLに限らずソフトウェア、設計書、ドキュメント管理では必須
913774ワット発電中さん:2008/02/29(金) 11:44:53 ID:wzhQPqMi
関わる人が自分だけなのか複数なのかでも違ってくるよね > リビジョン管理
まぁ独りでやってる場合でもリビジョン管理やってると助かることは多い
914774ワット発電中さん:2008/02/29(金) 12:46:43 ID:vq2CkIXr
少なくとも自分のとこのバグは取ってからリリースしろよ、っと。
915774ワット発電中さん:2008/02/29(金) 14:29:37 ID:xKaZ/CTf
>>911
作って動けばOKメンテなしだったら問題ないけど、半年ほどしてから手直ししてと言われる場合には管理は重要だよ。
それで終わればいいけどまた半年後に手直しがはいる。
きちんと管理していないと何回かメンテを繰り返すと提出した時期とバージョンがだんだんわからなくなってくる。

俺がやった失敗でこんなのがある。

デバックでソースを修正しながらFPGAの変更をやっていた。
動かないのでA0->A1−>A2とbitfileを変更していった。
当然ソースは上書きしてた。
A2で動かないと悩んでいたら、相手側にバグがあった事が判明。
ためしにA1を書いてみたら動き始めた。bitfileは保存していたがデバッグ中だったのでA1のソースファイルはない。orz
A0のソースはあるけど、A0のbitfileでは動かない。

記憶を頼りに手直ししてみるが、A1と同じソースは復活できなかった。なぜかA0でも動かない。
そのときからデバッグ中でもソースファイルはバックアップを取りながらやるようになった。

とりあえずデバッグ中でもソースとbitfileはバックアップを取りながらやっている。
バックアップはさくらエディターのバックアップ機能を使うようにしてから戻れなくなる事は無くなった。
916902&905:2008/02/29(金) 15:15:14 ID:kGKa+jcN
>>906
ども。
initialの下に always #() を使い、"〜"内にバックスラッシュを使うことによって、複数行
のファイル出力に成功しましたので報告します。

initial文とalways #()文両方に全く同じ記述をする必要はなく、UpしたTxtのように最初の
行(initial文)のみをコメント付き行として扱うことも出来ました。また、カンマを入れること
ができましたので、CSVファイル化もできます。
http://upload.jpn.ph/img/u12944.txt

なお、$openaは$fopenaと共に使用不可でした(予約語として認識されないようです)。
917774ワット発電中さん:2008/02/29(金) 16:31:26 ID:fqkJ6rD4
>>916
「バックスラッシュを使う」と言っているのは、\nを入れたことを言っている?
だとしたら全然関係ないよ。
複数行出力されるようになったのは、alwaysの中にも$fwriteを記述したから。
あと、alwaysの中でも$fopenしているけど、これは間違い。
今動いているのは使っているシミュレータがものすごく親切だから。
本来だったらエラーになっても文句は言えない。

余談だけど、initial内の$fwriteで一行目が書き込まれるのは、厳密に言うと
言語仕様上は保証されていない。仕様上はalwaysをinitialの前に実行する事も
許されている。まあ、知っている限りでは、そんなシミュレータは聞いた事ないが。
918902&905&916:2008/02/29(金) 18:22:03 ID:7IkK4/OS
>>917
使用しているのは、ModelSim XE III 6.2g(フリー版)です。

alwaysだけだと、最初の1行が抜けてしまうので、回避処置としていれています。
あと、\nは最初エラーになりましたが、試しに\\nを入れると1行に連なった状態で\n
が「文字列として」テキストファイルに書き込まれていたので、もしやと思い
再度\nにすると改行してくれました。

次回はalwaysの$fopenは外してやってみます。
919774ワット発電中さん:2008/03/01(土) 08:59:30 ID:nkT886II
本文中のコメントは
大幅な改変か機能アップならバージョンかなと思うが、
修正ならバージョンで書くよりも日付かな。
920774ワット発電中さん:2008/03/04(火) 19:48:17 ID:FUj4hU0g
すみません。Verilog初心者の素朴な疑問に答えてやってもらえませんか。
それはalwas@()の中身についてです。
買ってきた本のソースや、ネットにあるVerilogソースを見ると、
たていてが、always@()の中身が少なく、複数入っているんです。例えば、
modeule A(....);
  always@(posedge clock ....)begin
    if(.....)begin
      .....
    end else begin
      .....
  end
  always@(posedge clock ....)begin
    if(.....)begin
      .....
    end else begin
      .....
  end
  always@(posedge clock ....)begin
    if(.....)begin
      .....
    end else begin
      .....
  end
endmodele
という感じで、always@()を複数使い、さらにその中身はif() else end のように2通りだけです。

僕が思うには、全部のalways@()が同じclockで一緒に動くんだから、1つのalways@()の中に
複数のif()を入れればいいのではないか、と思うのです。
また、ifの中身についても、trueかfalseの2通りの流れだけでなく、
else if() else if() else if() と、いくつも使えば良いような気がするのですが。
僕の考え方では、何かまずいことがあるのでしょうか?
宜しくお願いします。
921774ワット発電中さん:2008/03/04(火) 19:55:10 ID:9uhcR1wM
ひとつのalways内で変更されるレジスタは1個だけにした方が
ソースが読みやすくなるからじゃないの?

else ifでいっぱい条件書かないのは
論理合成したときに問題が生じるからかと。

あとは、詳しい人のちゃんとした説明を
俺と一緒に待とうw
922774ワット発電中さん:2008/03/04(火) 20:39:47 ID:FUj4hU0g
>>921
ありがとうございます。
あまりに細分化した記述だと、何をしているのかわかりにくいと思うんです。
でも、みなさん そうしているところを見ると、何か理由があると思うんですが。
Cの記述でも、画面2ページ分ぐらいのif() else if() else if() else だったら、
僕は書いています。だって、わかりやすいから。

>俺と一緒に待とうw
激しく笑ってしまいました。すみません。でも面白かった。

923774ワット発電中さん:2008/03/04(火) 21:02:20 ID:vOnJEWJk
2ページに渡るってそれネスト無しで?
それはSelect文の出番じゃ…
ネスト有りだとしても一個間違って消した事でバグとかありそうだし、後の人が大変そうだな
924774ワット発電中さん:2008/03/04(火) 22:30:14 ID:VD+GeyYD
>>920
まあ、書き方のスタイルだから、好きに書けばいいと思うよ。
個人的には、その本に書いてあったみたいに、同じクロックで
動作するものを複数書くのはイヤだけどな。

ただ、非同期リセットがらみだと、最初にリセット条件を if 文で
書かなきゃいけないという決まり(というか、合成ツールの制約)が
あるから、どうしてもいきなり if(reset) で始まるのは仕方ない。

always@(posedge clock or posedge reset) begin
 if(reset) begin
   :
 end else begin
   :
 end
end

>>922
if() else if () のネストにすると、条件に優先順位が付くから、
回路規模が大きくなることがある。注意したほうがいいよ。
case 文にしたほうがいい。

>>923
Select は、VHDL ですかね。そちら方面はよく知らないんですが。
925774ワット発電中さん:2008/03/04(火) 22:34:56 ID:vOnJEWJk
あれ?Cってselect文じゃなかったっけ?
ゴメンもうCやらVBやらLUAやら半端に弄ってるせいでもう訳分らないんだ
926774ワット発電中さん:2008/03/04(火) 22:38:18 ID:wCAY7+dy
>>923
Cのselectってあのデバイスポーリングの関数のこと?
927774ワット発電中さん:2008/03/04(火) 23:19:27 ID:FUj4hU0g
>>924
920です。
> まあ、書き方のスタイルだから、好きに書けばいいと思うよ。
さっそくありがとうございました。ちょっと安心しました。
同一clockなのにalways@()でいくつも分けて書くと、
・合成の早い
・回路規模が小さくなる
とかはあるかもと思うのですが、
1つのalways@()のときでもツールが分けて考えてくれればよいのでは?と思っています。
あくまでも、人間が見やすいように書きたいと。


928774ワット発電中さん:2008/03/04(火) 23:20:44 ID:mCrnGrc1
C言語はswitchだろw
コンパイラがジャンプテーブルに変換してくれれば高速

alwaysに全部入れちゃうと回路規模大きくなるしな
>>922は質問するよりまず自分で試した方がいい
初心者全般に言えることだけど
929774ワット発電中さん:2008/03/04(火) 23:36:04 ID:7LoofD78
>>927
ソフトやってる人からは信じられないくらいコンパイラの性能悪いよ
このくらい分かれよ、みたいなのが全然分かってくれない。
この業界の人の持ってるノウハウって、こんなソースを書いたら
こんなオブジェクト(回路)が出てくるみたいな知識の集積だ。
その昔、どんな機械語が出るか分かってないと効率のいいFortranプログラムが
書けなかったとか、そんなイメージだよ。
930774ワット発電中さん:2008/03/05(水) 01:57:35 ID:KNHq2IPH
Doxygen の VHDL サポートキテタ━(゚∀゚)━!
931774ワット発電中さん:2008/03/05(水) 06:36:16 ID:XxNtuX8D
>>924
コードの再利用を考えた場合のコピペのし易さ。
932774ワット発電中さん:2008/03/05(水) 09:35:14 ID:xbyJMsln
一瞬なるほどって思ったけど
コピペするような再利用の仕方は良くないような。
933774ワット発電中さん:2008/03/05(水) 11:01:29 ID:v/vKls07
>>927
一つのalways文に全部詰め込むと 、合成後の回路を考えにくくなんないかな?
934774ワット発電中さん:2008/03/05(水) 12:05:55 ID:FLa9Nq+J
HDLはあくまでもシミュレーション用言語だからね
頭の中に最終形の回路があって、それを機械がシミュレーションできるような
形式に書き下していくためのもの

少なくとも現在のHDLは、信号のビヘイビアを記述すれば
自動的に回路が設計されるみたいな代物じゃない
935774ワット発電中さん:2008/03/05(水) 12:37:47 ID:gxg4KJU0
それはどうかな
936774ワット発電中さん:2008/03/05(水) 12:48:47 ID:xbyJMsln
俺は>>934に同意なんだが
なんか違うか?
937774ワット発電中さん:2008/03/05(水) 13:03:26 ID:ayAMoC5m
>>929
ソフトやってた人は信じられないような記述をすることがあるからね。
FPGAの合成ツール類は十分な最適化を施してると思う。
無償ツールであっても。

# ソフトやったことがない連中も信じがたい記述をするケースあり

> この業界の人の持ってるノウハウって、こんなソースを書いたら
> こんなオブジェクト(回路)が出てくるみたいな知識の集積だ。

この点には同意。
HDL屋さんは処理系の最適化性能に無頓着な希ガス
938774ワット発電中さん:2008/03/05(水) 21:33:17 ID:eYqDQ42d
コンカレント動作である点を考慮するくらいで、あとはC言語の感覚でVHDL書いてるんですけど、
みなさんはこの信号がレジスタになってとか、ラッチが生成されるとか考えながら書かれてますか?
939774ワット発電中さん:2008/03/05(水) 21:53:36 ID:tl9X6hZH
ラッチは生成されないように気を付けてはいる。
940774ワット発電中さん:2008/03/05(水) 21:56:20 ID:K/80Adh8
>>920 >>922 >>924
ひとつのalwaysに2つ以上のifやcaseを並べて書くのは禁物。
例えば、あるif文で処理した内容がほかのif文の条件になってたりすると、
たとえ不要であったとしてもプライオリティ回路が生成されてしまったりする。
また、すべて違う信号の処理であっても、1回のクロックで実行されるのは
一つのブロックに限定されるような書き方をした方がいいらしい。
つまり、alwaysにbegin〜endはあるべきではないと。

else ifを続けるのが特に問題になるというのは聞いたことがない。

ソフトの経験があるとどうしても考え方がソフト的になってしまうけど、
HDLでの設計はまったく別物なので、アタマの切り替えには時間がかかると思う。

詳しくは次の書籍を見てみてくれ。
ttp://www.starc.jp/bookstore/index-j.html

ちょいと高いが、相当なノウハウが詰まってる。俺も欲しいんだけど…。
941774ワット発電中さん:2008/03/05(水) 22:12:40 ID:tl9X6hZH
おいおい、スタークかよw
942774ワット発電中さん:2008/03/05(水) 22:34:14 ID:FLa9Nq+J
STARCは確かに参考にはなるが、決して聖典視してはならないね
反面教師としてアラ探しするのには、いい教材といえる
943774ワット発電中さん:2008/03/05(水) 23:22:38 ID:b4lCJvr1
最近VerilogHDL始めてるんだけど言語としてまだまだこなれてないというか、
コンパラにおもねったコーディングをしないとまともな回路が出てこなくないですか?
944774ワット発電中さん:2008/03/05(水) 23:42:49 ID:BgwXTi4F
そんなもんだ
945774ワット発電中さん:2008/03/06(木) 00:24:07 ID:OUo7vZ3J
>>943
ネットリストからデバイスに落とす時にもう1プロセス。
残念だが同一コードでもターゲットデバイスによって最適解は違う

あきらめれ。
946774ワット発電中さん:2008/03/06(木) 01:01:08 ID:ZyLRyx9p
>>943
コンパラってなによ。
コンパイラーに文句言うやつに限ってまともなソース書いていない場合が多いと思われる。
とりあえず気になるソースどこかにうpしたら添削してやるお。
947774ワット発電中さん:2008/03/06(木) 01:55:18 ID:7vNKXKdu
ハードを完全無視しようとするから思ったようにならないんじゃねーか?
ハード側から思考を巡らせりゃそれほど悩まねーぞ。
948774ワット発電中さん:2008/03/06(木) 01:58:40 ID:fp2TyyYK
質問があります。

今カウンタ回路を作っています。
・10進UPカウンタ
・任意の値を設定可。ただし任意の値を設定する場合は、
 LOAD信号の立ち上がりを検出して値を設定する。

信号の立ち上がり検出をbit連接とbitshiftの場合で書いてみたのですが、
bit連接で書いた方は、SIMを走らせるとLOAD信号の立ち上がりを検出しても
設定値が読み込まれないことがありました。

立ち上がり検出に部分を下記のようにしています。
load_inをregにしているのは、カウンタブロックで、
条件文として使用している為です。
※ LOAD:カウンタに任意の値を設定する時に使用する信号。
  load_in:LOAD信号の立ち上がりを検出する為の内部信号

reg [1:0] load_in;

always @(posedge CLK or negedge SYSRESET)
begin
if (SYSRESET == 1'b0)
load_in <= 2'h0 ;
else
assign load_in = { load_in[0], LOAD } ;
// load_in <= load_in << 1;
// load_in[0] <= LOAD ;
end

bit連接は左辺をwire宣言して使用するというのが本に書かれていました。
誤作動しているのは、wire宣言の所をreg宣言している為なのでしょうか。
949774ワット発電中さん:2008/03/06(木) 02:33:41 ID:tWcDuLj5
>>948
>bit連接は左辺をwire宣言して使用するというのが本に書かれていました。
なんて本?
950948:2008/03/06(木) 03:27:20 ID:fp2TyyYK
>>949
入門Verilog HDL記述(CQ出版)です。
bit連接を左辺で使う場合、右辺で使う場合の例が記載されていました。


951774ワット発電中さん:2008/03/06(木) 09:27:05 ID:DaTi+Ik6
答えだけ書くと、regのままで、assignの代わりに<=で代入な。

ところで、論理合成ツールをコンパイラって呼ぶのは違和感あるな。会社でもフツーに使われてるけど。
952774ワット発電中さん:2008/03/06(木) 09:54:35 ID:gbp8ZiHh
つ デザインコンパイラ
953774ワット発電中さん:2008/03/06(木) 10:37:03 ID:HL0t0Sy4
コンパイラの一種のような気もする。

合成ツールて言うとマヌケに聞こえるし
シンセサイザて言うと別分野の用語に聞こえてしまう。


ロジックシンセサイザ…長い。
954774ワット発電中さん:2008/03/06(木) 11:27:03 ID:1PQbIh19
>>951はなんと呼ぶのがええと思う?

おいらは違和感ないよ。
だって、HDLで書いた論理を圧縮してさらにそのロジックをデバイスの内部ロジックに置き換えてくれる。
ここまで複雑な変換をしてくれるのをコンパイラーと呼ぶ以外考えられない。

ソフトウェアをやる人には一緒にして欲しくないのかもしれんが、そんなのかんけぇねぇ!
955774ワット発電中さん:2008/03/06(木) 11:32:52 ID:CjuGTT8a
シンセサイザがいいと思う。

「変換」という意味的にはコンパイラでもおかしくないんだろうけど
一緒にして欲しくないとかでなく、違和感はある
956774ワット発電中さん:2008/03/06(木) 12:04:42 ID:E8WKFPXH
合成ツールじゃだめなの?
ついでに言うと、「最適化」ってのも、最適になるわけじゃないから気持ち悪い。
957774ワット発電中さん:2008/03/06(木) 12:13:01 ID:l3Xy6JH0
HDLで書かれたソースコードをシミュレータで動かすために
中間コードまたはバイナリコードに変換する処理がコンパイル

RTL形式で書かれたHDLソースコードをネットリストに変換する処理が論理合成

全然違う
958774ワット発電中さん:2008/03/06(木) 16:04:46 ID:upXGD61x
組み合わせ回路をalwaysで書くとき、case文にdefaultは必須ですが、
順序回路でcase文を使ったときにdefaultは必要なんでしょうか?

というか、順序回路で、どの値にも当てはまらないときは何も処理したくないので、
defaultを書かなくていいならそれだけでいいのですが。
959774ワット発電中さん:2008/03/06(木) 16:08:58 ID:CjuGTT8a
何も処理しないってことを書いときゃいいじゃん。

960774ワット発電中さん:2008/03/06(木) 16:31:02 ID:cZC4E4CF
別に必須じゃないだろ。
全部の条件が書いてあれば無問題。なければラッチw
961774ワット発電中さん:2008/03/06(木) 16:33:57 ID:EKm4epzD
defaultでX入れとけ
962774ワット発電中さん:2008/03/06(木) 16:58:37 ID:VG8qxoBE
>>958
何もしたくないときは"何もしない"ということを明示しな。

記述に絶対の自信があって検証もちゃんとできるなら X 入れて ktkr
963774ワット発電中さん:2008/03/06(木) 17:15:46 ID:cZC4E4CF
X入れるのは、シミュレーションで分かりやすくするのと、回路削減へのわずかな期待。
964958:2008/03/06(木) 18:28:23 ID:upXGD61x
レスありがとうございます。

どうやらFF使う順序回路ではdefault書かなくてもいいみたいですね。
今書いてるのは制御部分で、caseに当てはまらない値が不具合だけでなく
普通に存在するので、不定にするのはまずいのです。

verilogで何もしないことを明示するにはどうするんでしょう?
空のbegin endを書いとけばいいんでしょうか。
965774ワット発電中さん:2008/03/06(木) 18:38:12 ID:2vIpvUE4
出力を入力に突っ込めばいいんじゃないの?>何もしないことを明示
966774ワット発電中さん:2008/03/06(木) 19:14:05 ID:I2m3PRQ6
;
967958:2008/03/06(木) 21:38:00 ID:upXGD61x
>>965
それが一般的のようですが、一部のコンパイラなどのツールでは使えないことがあるそうです。

>>966
やっぱそれですかね。
968948:2008/03/06(木) 22:59:01 ID:fp2TyyYK
>>951
回答ありがとうごさいます。
確かにassignを除いて、"="を"<="に変更したら期待通りの動作をしました。

ただ原因が分からないのが相変わらず。
6回試行してみたのですが、結果は4/6(○×○○×○: ×読み込み不可)
なんでこんな中途半端に動作が変わるのか。
まだ論理合成もかけてないので、ゲート遅延でタイミングが間に合わない
という事態は起きないはずなのですが。
969774ワット発電中さん:2008/03/06(木) 23:27:49 ID:PR594FG9
>>968
“=”と“<=”で、代入がどのタイミングで行われるのか(文法の)違いを調べてみよう
970774ワット発電中さん:2008/03/07(金) 00:05:13 ID:a7MS6wde
>>968
いいこと教えてあげよう。僕も君と同じくらいの初学者なんだけど、
<=と=の違いは、以下のように理解している。

  <= は、次回の予定を表している。a <= a + 1; だとしたら、
      次回のaは、今回のaに+1したものにしてね、ということ。
  =  は、今すぐの動作を表している。a = a + 1; だとしたら、
      その行(正確には、そのかたまりの中)にであったら、スグに
      a+1になる。

  で、次回というのは何かというと、ズバリclockの変化したときね。
  always@( posedge clock )から、対応するendまでの世界。
  そう考えると、<=は、その世界の中にしか置けないし、=は、
  その外側に置くことがわかる。

  で、この「次回の予定」って、どういうことかも考えた。
  これすなわち、D-FFのD端子のこと(だと思う)。
  そのFFのD端子の1/0がQに伝わるのは、clockの↑の一瞬だけだから。
  例えば、Qを反転して自分自身のDにつないだときは
  現在の値Qは1だけど、「次回の予定」は0。で、clock↑になると、
  現在の値Qが0になるけど、「次回の予定」は1。これで分周器のできあがり。

971774ワット発電中さん:2008/03/07(金) 00:12:20 ID:yLuUxgox
すごく親切で丁寧でほめてあげたいんだけど、
ちょっと違う
972774ワット発電中さん:2008/03/07(金) 00:40:42 ID:35BbOFMm
え゛ーっ? 何か違ってますか? ぜひ教えてください。
973774ワット発電中さん:2008/03/07(金) 01:02:51 ID:2lxLRNm4
=は配線の接続を表しているだけ
974774ワット発電中さん:2008/03/07(金) 01:14:07 ID:35BbOFMm
はい、そうだと思っています。74HC00のNANDなどのように、
clockの関係ないものの出力を表しているのだと思います。
なので、assign Q = ~( A & B )のように書くのだと....。
これらは、常時接続というか、D-FFのように次回のclockの↑まで堰き止めておく制御が
できないので、alwyas@()〜endの中には書けない(書かない?)のだと思います。
975774ワット発電中さん:2008/03/07(金) 01:28:51 ID:yZ1AZaIg
「=」:普通のプログラムで言うところの代入文ぽいヤツ(代入してから次の行を実行)
「<=」:同じ時刻だったら(右辺を評価した後に)同時に代入が行われる

ハードの特徴である「並列性」を表現するにはどうすれば良いか、
どんな記述が必要となるかを考えていくと、ノンブロッキング代入文「<=」の
必要性や「=」との違いが認識し易いんじゃないかなぁ。
976774ワット発電中さん:2008/03/07(金) 02:18:28 ID:gutaUPT0
初学者には「次回」=「次のクロックエッジ」と理解した方が混乱は少ないだろうし、
今の例やその他ほとんどのケースでそれは成り立つので、今はそのように
理解していても良いのだけど正確には違う。
多分今説明しても混乱するだけだし、ここで説明できるほど簡単でもないので
説明しないけど、テストベンチを書く時になって、alwaysの順番を変えたら
シミュレーションの結果が変わったとか、シミュレータによって結果が違う
といった事におそらく一回は嵌る事になると思うので、その時に「デルタ遅延」
というキーワードを勉強して欲しい。
977774ワット発電中さん:2008/03/07(金) 02:23:28 ID:2iHf+UYK
>>974
alwyas@()〜endの中でも、=を使うよ。
<=と混在はさせないが。
978774ワット発電中さん:2008/03/07(金) 02:35:00 ID:1KpJyUQ1
A,B,Cそれぞれ0でスタート

B=A+1
C=B+1
A=C+1

普通に計算してみると

B=1
C=2
A=3

でもコンパイルすると

“ループしてますエラー”
979774ワット発電中さん:2008/03/07(金) 03:02:59 ID:0sNfxgNs
B = Aは
#define B ((A)+1)
って理解しとくとOK?
980774ワット発電中さん:2008/03/07(金) 03:04:06 ID:0sNfxgNs
>B = A
B = A+1
のつもりでした。。。orz
981774ワット発電中さん:2008/03/07(金) 07:42:44 ID:ULqBX53S

微妙に分かりやすく書かれていて
初心者には受けが良い説明なんだろうけど
決定的な間違いがあるから
初心者が誤解したまま覚えてしまうとかなり危険


>  =  は、今すぐの動作を表している。a = a + 1; だとしたら、
>      その行(正確には、そのかたまりの中)にであったら、スグに
>      a+1になる。

違う

>次回のclockの↑まで堰き止めておく

違う
982774ワット発電中さん:2008/03/07(金) 07:55:52 ID:s1qZfti+
否定厨キター
正解の解説をかけよ
983774ワット発電中さん:2008/03/07(金) 09:00:23 ID:aGZWtcsO
レジスタ代入に、ブロッキングとノンブロッキングの両方でできるようになっている言語仕様が悪い。ついでに、レジスタにならないものをreg宣言させるのもいくない。
984774ワット発電中さん:2008/03/07(金) 13:42:56 ID:35BbOFMm
>>981
どのように違うか、教えてください。

確かに、a = a + 1 はヤバイと思います。
a = b + 1 なら、まだいいんですが。

次回のclockの↑まで堰き止めておくというのは、その1つのD-FFについての説明で
その出力Qが、レベル動作素子(andとかorとかの組み合わせ回路)につながっていれば
それらは動いてしまいます。
985774ワット発電中さん:2008/03/07(金) 17:55:56 ID:NWaCkhxT
a = a + 1
とか書いてる人はちゃんと頭の中で回路図も描いてるの?
単に記述動作だけでデザインやってるってものすごく怖い
986774ワット発電中さん:2008/03/07(金) 18:36:57 ID:gutaUPT0
>>981
> >  =  は、今すぐの動作を表している。a = a + 1; だとしたら、
> >      その行(正確には、そのかたまりの中)にであったら、スグに
> >      a+1になる。
> 違う

漏れもどこが違うのか知りたい。ちなみに以下は遅延制御なしのブロッキング代入文を
どのように処理するかという定義をVerilogのLRMからコピーしたもの。

if it returns immediately if no delay is specified, the process performs the assignment
to the left-hand side

これ以外の遅延なしブロッキング代入文の動作があるのならば知りたい。
987774ワット発電中さん:2008/03/07(金) 18:39:27 ID:4kn2us9H
>>977 のように分かってやってるならいいと思うよ
988774ワット発電中さん:2008/03/07(金) 18:49:21 ID:gutaUPT0
>>981
> >次回のclockの↑まで堰き止めておく
> 違う

これは同意だが、初心者に今それを説明しても混乱するだけだろうというのは
976で書いたとおり。

>>984
どうしても今知りたければ、
ttp://japanese.sugawara-systems.com/tutorial/verilog/framepage7.htm
の6章 代入文を参照。ただし上級コースなので、そのつもりで。
989774ワット発電中さん:2008/03/07(金) 21:19:07 ID:Hj2AO/bF
すまんけど、VHDL的に言うところの、:= と <= の違いかね?
990774ワット発電中さん:2008/03/07(金) 21:23:11 ID:ajeKem9t
>>988
それ、シミュレータ動作から見た説明になってるんで、回路作りたい人用には分かりづらくね?
なんつーか、抽象度上げっていうか。
991774ワット発電中さん:2008/03/07(金) 21:55:41 ID:9MHwqslE
Veritak ユーザーのオレは勝ち組
992774ワット発電中さん:2008/03/07(金) 23:06:52 ID:TPPzCD9q
VHDLに関し、お勧めの書籍はありますか?
初心者用の本は読んだのですが、なかなか地元の本屋に中級者用の書籍がなくて困っています。
993774ワット発電中さん:2008/03/08(土) 00:17:43 ID:MA4RUCUZ
>992
森岡澄夫 『HDLによる高性能ディジタル回路設計』
とか…というか、その初心者用の本て何よ。

994774ワット発電中さん:2008/03/08(土) 01:36:34 ID:MFFm3J4v
>989
そういうこと。
シミュレーション用は別として
回路で = は使うなってことだ。
995774ワット発電中さん:2008/03/08(土) 01:59:52 ID:2HH4KlIK

ちなみに、ブロッキング代入とノンブロッキング代入というのがありますよね。
なんで「ブロッキング」と言うのでしょうか。
しかも、「=は、ブロッキング代入」「<=は、ノンブロッキング代入」って、
何かイメージと違う気がする。

996774ワット発電中さん:2008/03/08(土) 02:14:03 ID:WuIMuHW2
>>990
だから、初心者は今知る必要はないし上級コースだよと断っているでしょう。
でも、racing問題にはそのうち必ずはまるので、その時には結局はシミュレータの
動作が分かっていないと根本的対策は打てない。
問題を起こした信号に#1のユニット遅延を付加することで直ることは直るけど
それではいつまでたってもモグラ叩きでしょう。
997774ワット発電中さん:2008/03/08(土) 02:18:51 ID:+H0kv0E5
>>994
>回路で = は使うな

普通に使うよ。
998774ワット発電中さん:2008/03/08(土) 02:53:52 ID:MFFm3J4v
>997
中間変数使って速く処理したい場合とか便利ですよね。
あなたは使っても無問題。
新人にはレイアウトを経験させてから使わせてる。
基本的に、頭の悪い俺は自分の作った回路が
あとで見て、わけわからなくなるからつかわん。
999774ワット発電中さん:2008/03/08(土) 02:59:26 ID:BzTCKM0A
うめ
1000774ワット発電中さん:2008/03/08(土) 02:59:58 ID:BzTCKM0A
うめ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。