現在進行中
- USBコントローラ(完成)
- SRAMコントローラ (完成)
- FPU(完成)
- RS232Cコントローラ(完成)
今後の予定
- USBエコーテスト(完了)
- USB→SRAM、SRAM→USBテスト(完了)
- FPUテスト(簡易テスト完了、本体への組み込みは完了した模様)
- RS232Cテスト(ほぼ完了)
- レイトレ実機テスト~USB~(未完了)
- レイトレ実機テスト~RS232C~(未完了)
進捗状況↓
1/30 : USBエコーテスト完了、とりあえずは動きます。
2/14 : SRAM 動いたぽ。でもまだバグありそうなので頑張るぽ。
2/16 : FADD制作開始。
暇つぶし(?)にfloat ⇔ 32bit列の変換をする超簡単なプログラムを作りますた。なんとなくデバッグに使えるとか使えないとかなので、わざわざそんなもん実装する3分が勿体ねえぜ、という方にはあげます笑
2/20 : FADD完成。とりあえず動くものはできた。
2/21 : ちょい適当だったFADDの丸めをしっかりしたものに。コーディングが冗長だけど無視。無限大とか無限小とかの扱いをどうするのか良く分からんので無視。計算できる物を作るのが先決。
2/22 : FSUB制作開始。ADDをちょこっと変えればいいかなと思ってたら意外に罠が・・・ADDとSUBを一気に扱うコンポーネントにしても良かったがコード量が多くなるので別にして、FPUの側で符号とオペコードを見てから分岐させるようにしようと思いました。
FMULはできたらしいので、2月中にFPU完成することを目標に頑張ります。
2/23 : FSUBほぼ完成しますた。丸めとかも多分だいじょぶ。
あとはADD、SUBを振り分けていく回路を書けば大丈夫かと思われます。
これからFTOIとITOFに着手したいと思います。
コードが冗長なんで適宜短く出来るとこは短くしていきたいですわ。
2/25 : ITOF完成、その他ADD、SUBの軽いデバッグ。
2/26 : FTOIも完成。ぼちぼちFPU自体を書きはじめたいところ。
しかしオペコードとかどうなってるかなぞなので、そこらへんを煮詰めたい。
あと割り算についてもソフト側でのサポートが欲しいので、まぁ何ともいえないが、、、ハード側でもある程度できるようにはしておきたい。
あと、ライブラリの実装とか・・・けど俺そこまでできるんだろうかorz
早田さんが来ない。FPU付きのCPUまでが。。。遠いorz
手が空いたら俺の方でもCPU本体に手を付けていったほうが良いのだが、
形式言語の試験がもうすぐorz
なんというかorz
3/4 : ちょっと間あいたけど、FTOIのちょこっとしたミスを修正。
FMULをやや修正。
FLOORが意外にめんどくさそうな気がしてきた。
今考えていること
- SHRやらSHLやらを使わずに手でバレルシフタを書いたほうがいいのだろうか。
しかし書くとしたら24ビット用とかプライオリティエンコーダみたくそれぞれ書かなきゃいけないので3つくらい必要になる。ルーチンワークなのでやろうと思えばすぐにできるが、、、
とりあえずの所はつかえるもんは使っとけってことで・・・。
- 明日にはUSBからSRAMにデータ送らなきゃ・・・
- FPU用のオペコードは適当につくっちゃっていいんでせうか?
FLOORできますた!
とりあえず俺の見解としては
FTOI→小数点以下を四捨五入してINTに
FLOOR→小数点以下を切捨ててFLOATに
という意味だと解釈しているんですが・・・
大丈夫っすよね(^^;
だいぶVHDLに慣れてきたのでサクサクいきたいところ(おせえだろww)。
今からFPU書きます。
FPU書いてて思ったこと
- やっぱADD、SUBまとめちゃった方が楽かしら(^ω^;)
- 何かどの命令が何nsかかるとかちゃんと考えてないんだけど、
きっとだめだめなんだろうな・・・
3/6 : とりあえずFPU完成。割り算まだだけどorz
正直ソフト側でどうしたらいいのか分かってないのでだめぽ。
かくなる上はハードウェア実装・・・!?
FPUの精度は全く問題ないと思われます。
ただFPUで結果を出力するタイミングが微妙です。順序回路でひたすら計算流すように作っただけなので何クロックかかるか分からないので、どうしたらいいやら・・・
クロック同期で計算するようにしたとしても1クロックでどこまで計算終わるか分からないので結局同じことだと思ったり。
FADDとかをステートマシンで書くのはだいぶまんどくさいと思うので、
とりあえずFPUを実機で動かしてみて対策してみたいと思ってます。もう自分でも良く分かってないので模索中。
一応fnegとかできるようにしときました。
3/7朝 : SRAMの内容をUSB経由で落としてバイナリファイルに書き込むようにしたんだけど、
ステートマシンがややこしくなったのでうまく読めなくなりましたーーーー
やばいやばい。
データ→SRAMへWRITE→SRAMからREAD→USBへWRITE→PC
流れはあっているはずなんだけど・・・
つうかデータが1つとかなら大丈夫だったんですけどねぇ。
眠くてわけわかんなくなってきたので続きはまた午後に・・・
水・木曜日中にはその辺を確実に仕留めたいところ。
金曜までにFPUを実機で走らせてみます。
やばいやばい。やること盛りだくさん。
CPUのデバッグに時間をかけられるのだろうか・・・
3/8と3/9 : USB関係でストール。。。orz
ものすごい勢いで色々試して、なんとかちゃんとした4Mの値を読めるように。
しかしステートマシンでめちゃくちゃ待たないと正しい値を読めないってのは
いかがなものかと。
クロックを落とせばできるんだけど、待ちステートを増やすって実にアドホックなやり方。どうしたらバッファ詰まりっぽい現象を根本から解決できるか分からない。
他の班はどういうUSBのコードを書いてるんだろう。orz
3/10、3/11 :
ものすごい勢いでUSBを全て書き直す。エコーテストからやり直しorz
USBがようやくデレを見せてくれたので何とかSRAMを読み込むことに成功。
しかしUSB→SRAMができない。
一晩悩んだ末、USBREADサイクルに問題あり。再びUSBを書き直すorz
3/12早朝 : ようやく長い戦いに終止符。SRAMに書き込みも完璧。
しかし何故かSRAMの0番地にUSBから書き込めない。
なんどやっても同じで、しかも他の班からも同様との報告を受けたので、
0番地は使用しないという意見で一致(脳内会議)
かくしてSRAMとUSBの2穴同時調教は完了した。
次回、「FPUはデレデレ!?」に続く。
3/12
FPUほぼ完成。ISEでのコンパイルだと計算に39nsかかっている模様。
50MHzなら2CLKでいけるぽ。
一応計算結果をSRAMに書き込むようにしたところ、正しい値が書き込まれている。
しかし簡易テストなので絶対的な保証はない。
「バグは、一時の成功に浮かれた我々の脳内に存在する。」
FPUでは
FADD
FSUB
FMUL
FTOI
ITOF
FLOOR
FABS
FNEG
FHALF
を実装。全てクロック非同期の組み合わせ回路。
入力とOPCODEをもらって動きます。出力は2CLK後の値をとってください。
FDIVとかSQRTとかに関してはソフトウェアの方が頑張ってくれたみたいなんで、期待してます><
今後の予定としては、RS232Cの制御回路、CPU本体のデバッグにあたりたいと思ってます。
よろしこ。
3/14昼間
RS232Cのコントローラをとりあえず書いてみる。
これからエコーテストに入る予定。
14日中にはエコーテストその他を終わらせ、全力でCPU本体のデバッグに手を付けたいと思います。
やばいやばいやばいやばい。
俺の精神状態もやばいやばい。
3/14夜
RS232Cが動かない、というよりもむしろポートすら開かない。
拡張基板から見直すも特に目立ったミスはない。
また罠か。
教訓「罠は常に目の前に存在する。」
とりあえずエコーテスト一体型のコントローラを書いて、
同じような感じでREADサイクル、WRITEサイクルを持つコントローラを作り、
READについてはLEDで1バイト光らせて確認。
WRITEについてはタイミングよくPCでデータを受け取るようにするにはどうしたらいいのか分からないので停止中。
3/15朝寝起きから猛烈な腹痛、死にそうになりながらストッパをぶち込み、なんとか持ちこたえた。しかし脳さえ動けばなんとかなるので戦線復帰。皆無言でキーボードを叩く。
すでに完動している5、6班がやけに楽しそうだ。orz
とりあえずModelSim上でRS232Cっぽい動きをするものを作って動かしてみた。
予想通りの動きだが、予想があっているとは限らない。
同日夕方、RS232Cコントローラはおそらく完成、動作も問題ない。
1バイトずつ読むようにしたので、今日中に4バイト一気に読めるものに作り変える予定。→4バイトのエコーも完了、これでおそらく本番の通信は無問題、使う所までいければの話だがorz
3/16早朝
ものすごい勢いで実機デバッグ、数々の罠にはまりながらも何とかひとつずつ潰しつつある。
3/30昼
だいぶあいたけど・・・
早田氏の尽力でCPU実機デバッグが着々と進行中。
ぶっちゃけ俺のできることは全てやった感があるわけだが、
後はレイトレを動かすのみ。
FPUの精度とかあやしい所もあるかもだけど、とにかく動けばいいと思っている。
RS232Cもせっかく作ったし、使ってみたいなと思ってはいる。。。
がんばりませう!
最終更新:2007年03月30日 14:21