SOC設計技術の実習レビュー 2月12日(木) 最終日。10:00に学校について55号館へ。いつもどおり。 今日は発表のみ。とりあえずこの前音量調節まで実装できたので、その部分のパワーポイントを作る。 作っている途中で森田さんがきたので作成中止。とりあえず見てもらう。 一応OKが出たが、不安なので状態遷移あたりを確認しようとも思う。 そうこうしているうちに、30になってしまった。 で、発表。チーム1の発表はそこそこ資料がまとめられていて良かった。 デモで倍速関係の部分がうまくいかなかったのが少し残念。 チーム2の発表。デモ要員として前に呼ばれる。 うちの班はパワーポイントがダメ。全然情報量が足りない上に嘘を書いている。 ちょっと反省。で、作ったもののデモはそこそこうまくいった。 音量調整が2倍速の時分かりにくかったのには少し参った。 参ったといえば、やっぱり状態遷移がおかしかったらしく、逆速再生の時時間がおかしくなるバグが出てきた。icounterあたりがダメだったようだ。自分ですべてやるといった気概が必要だと感じた。 うちの班はもっとチーム内での情報のやり取りをするべきだった。 チーム3。ほぼ完璧なプレゼンと、微妙なデモ。パケットを削るといった形で倍速を実装しているため。 音量も実際のものから音を落としていくといった手法。これは255以上いくのを防げるが、音が元から小さい時はピンチ。 まあ一長一短。ここが一番良く出来ていた。 で、総評。想定よりダメだったそうだ。そこそこ頑張ったので個人的には満足。 もっと早く倍速に見切りをつけていたら、もっと良いものが出来たかもしれない。 まあ、チームプレイといってもこんなものか。 結構勉強になった。12:10まで 2月10日(火) 5日目。10:00に学校に着き、そのまま55号館へ。 入試のためか、学校の様子がかなり変わっている。人が立ち入れないようフェンスがそこら中に立っていた。 今日は実装だけをすればよかったのでらくだ。 前日にやらせておいた配置が終わっていた。 クリティカルパスが90nsと出てきてしまってあせるが、実はJPEG部分なので関係ないということが判明。 具体的には、この部分は4分周でやるので間に合うらしい。 で、自分はひたすら機能を実現しようとする。 むこうは論理合成やら、実機へ焼きつけやら。 色々やっているうちにチーム琵琶湖の発表となった。 彼らは今日で終わりなので、今日の発表となる。 彼らのチームの実装では倍速はサンプリングレートの変化でやったらしい。 正直拍子抜け。こっちはなんで頑張っていたのやら。 だが、2人でそこまで出来たのは凄いとも思う。 で、自分は機能実現のために残る。 今日は音量調節まで出来た。 生のデータに対して、128引いてからx倍して128を足すという方法で実現した。 操作部分は簡単に出来たが、controlでの状態の遷移がどうもうまくいかなかった。 が、breakをはずして常にcontinueすることによって解決した。 これを実現するのにチーム1の力を借りた。ありがとう。 まぁ、こっちも倍速の技術を提供したが。 残業は19:30まで。 2月9日(月) 4日目。今日はレポートの提出が1個あるのでやる気が出ない。 10:00に学校に着いたが、しばらく学生読書室で遊んでいた。 そろそろいいかなと思い55号館へ行ってみる。 立命館ペア以外の受講生がいない。ちょっと今日は集まりが悪かった模様。 大川内君が初めて時間通りにきた。 実習が始まる。きょうも自分は倍速の実装。正直やる気がでねえ。だって3日も悩んでいるから。 そこまで悩んで結果が出ないなら無理だろう。 柳沢研ペア+大川内君はHW協調検証。 結局午前中は不可能だった。 午後になり、急展開。 実はFSM部分の実装が大変なために、PCM_Driverないでは削る事は(時間的に)不可能という事が判明。早く言ってくれよ。 そうすれば音量に早くいけたのに。そして実装してやったのに。と思いつつ、こりこりコードを書き続ける。 本格的に実装に向けた動きが始まる。検証を終えて論理合成、配線、などを終わらせる。明日は実装だ。 今日の最後に発表があった。不意打ちでチーム4からという事なのでみんなビビル。 2つだけ質問できた。 sw検証の値が1秒をきっているのはおかしいのではないかという事と(チーム4)、 どうやってパケットの捨てが出来たのかということ(チーム1)を聞いた。 結局チーム1は偶然動作していただけで実はダメだったらしい。 そうこうしているうちに、禁断のDeccounter部分をいじる許可が出たので、いじる。 こりこりいじって倍速は完成。配列をいじればよかっただけなので楽だった。 今日はそれで満足して、みんな帰る。 おそらく明日は実装をやりつつ、またコードを書く事になるだろう。 機能が出来れば楽しいものである。 後一つ。TAは早く情報を開示してくれ。こういうことで悩む事も確かにためになる勉強だが、出来ない事をさもできるように言うのは止めて。 時間が(ある意味)無駄になるから。 18:30ごろまでやっていた。 2月7日(土) 3日目。まさに混沌。設計が全く進まなくなってきた。 土曜日なので人の出足が遅い。自分はいつも通り10:00に学校に着いた。 学生読書室によってwavのいい資料がないかどうかを見てまわる。 いい資料が無かったので(というか実装は制約条件があるのでここでの資料探しは実はあまり意味が無かった)55号館へ。 やっぱり学生の中では一番乗り。 パソコンを立ち上げてしばらく倍速を考える。 やはりパケットをうまく削れない。PCM_Driver内部でwriteとreadを各一回ずつやらなければならないのが分からなさを増している。 readを2回してwriteを1回という形でのデータの廃棄が出来ないので辛い。 また、最初64bitで読み込んで32bitで出してやる方法を思いつくが、いじってはいけない部分に、pcm_driverへのバッファ書き出しがあったのでそれも出来なかった。 結局2班に分かれて、自分は2倍速(必須機能)の実現、リーダーたちはHWSW協調検証ということになった。 自分の方は進展はあまり無かった。 lSizeやiDeccountあたりをいじってみたがうまくいかず。全く疲れる上に意味がない。 かなりの壁となった。 星さんが17時過ぎに。大川内くんが18:00ぐらいに。残りは19:40ぐらいまで残った。 結局倍速は全く進まず、協調検証はexciteが終わって、cometでのSW協調検証まで終わった。 疲れた。 (順不同、かなり混沌としているレビュー、というより日記メモに近い) 2月6日(金) 2日目。 だんだん辛くなってくる。 電車の都合上10:00ぐらいに学校にたどり着く。 そのまま55号館へ。誰もいないと思っていたが2,3人がいた。 今日は必須機能である倍速を実現するのに大苦戦。 パケット自体を間引くのではなく、パケットの中身を間引くらしい。 パケットを間引こうとすると、システムが止まってしまう。 これは、バッファでデータを待ち続けてしまうかららしい。 結局、パケットの中身を間引く事に。 そのまま間引こうとしても、ここでもシステムが止まってしまう。 バッファでデータを待ち続けるという現象がここでも起こっている。 ある意味当然なのだが。 TAに聞いて、パケットのヘッダとwavのヘッダを書き換えないとダメだという事が判明。 早速書き換える。 パケットの制御部、wav2つ、合計3箇所の部分を書き換えた。 途中、エンディアンで悩むが特に問題が無かった事が分かる。かなり愕然。 パケットを書き換える事は出来たが、音が半分になっただけで何の意味も無かった。 wavのデータ部を2分の1に減らさないといけないのだが、実は減らしていない。 というか減らそうと思うとバッファでシステムが止まる。 全く意味不明。 結局今日中には出来なかった。各自の宿題となっている。 途中上田研進路相談を挿んでここまでで19:15分。かなりの残業。ヤバイ。 という訳で、wavフォーマットなどについて調べてみる。 WAVファイルを作る http://www.alpha-net.ne.jp/users2/ei9711/vbkouza/kouza17.html WAV ファイルフォーマット http://www.kk.iij4u.or.jp/~kondo/wave/ フォーマットやヘッダの構成は分かったのだが、データの削り方は出てない。 どういうことだ? specCの記述に問題があるのか、wavできちんと範囲を指定してやらないとダメなのか不明なので困ったなっと。 結局、ヘッダをいじるだけだと、音声の質が悪くなるだけで、音自体は聞けた。 これは、specCのバッファがかなり悪い事を示しているのかもしれない。 もしバッファがヘッダを見てドレぐらいのデータが来るかを判断しているとしたら、 それでは聞けなくなるはずだ。訳分からん。 2月5日(木) SOC設計技術A実習。今日が初日。 10:30に55号館2階第4会議室に集まる。 自分の班はTeam2で5人班 Aでは倍速の設計が必須で、音量まで扱えるように出来ればイイらしい。 今日はとりあえず倍速の設計に取り掛かることにした。 自分の役目は設計という事になった。 倍速をやっていくのにいくつかSPECCでも問題があった。 whileを変えた、func_decodeをつけた、statusを変えたぐらいの事で、PCMの倍速は実行できるようになった。 但し、wavのサンプリングレートを変えただけなので、2倍とはいえない。なんといっているのかを聞き取れるようにしないといけないらしい。 これにはパケットを減らす事が必要だ。どうすればいいのかまだ不明。おいおい分かってくるだろう。 あと、画像もそれに合わせて間引かないとダメらしい。 とすると文字も? 結構疑問。 パケットを削る方式にするとpcmdriverが激しく楽になる。デコードするだけでいいから。 パケットを見る必要もなくなるし。 明日に期待。結局4時20ぐらいまで残業。