--- yastak古 ---


buyobuyon氏の例にならって、ログページを作成。


作業進行


2007.02.23

そういえば、21日の進度報告を忘れていました。
SRAM初期化→CPU動作の流れは作れました。
fibを動かしていたのですが、プログラムカウンタの動きはいい感じなのに、
なぜか動作してなくて、どうやらALUに原因があることが発覚した、
というあたりで作業終了。

遅ればせながら、本日ALUの構造を書き換えました。
次に学校に行けるのが日曜になりそうなので、その時にテストします。

後、命令フェッチにミスがある感じがするので、
これから修正します~。

  • 日曜って試験日で入校禁止だったりしませんか? -- buyobuyon (2007-02-23 19:45:24)
  • 入構規制はとられるみたいだけど、
    事務室からのメールからすると、
    学生証あれば大丈夫だと思われます~。
    -- yastak (2007-02-23 20:51:38)
  • 命令フェッチは多分大丈夫なことが判明したので修正なし…。
    なんか、
    おかしい?→確認→おかしくない(+別のところがおかしいorz)
    っていうパターンが多い気がする…。 -- yastak (2007-02-23 20:54:27)

2007.02.21

あの、いまさらなんですけど、SRAMはエントリが1Mなので、
アドレスは(19 downto 0)の20bitです。
したがって、
「immは、上位7ビットがimm7、下位19ビットがimm19の符号つき整数」
(命令セットより)というときは、imm7の最下位ビット+imm19としています。
レジスタからアドレスを取るときは下位20bitをとっています。

…でも、符号付にするならもう1bit多くとるべき?
ジャンプの幅が、「disp19」のところは符号コミで19bitだったりするんだけど、
(因みに符号拡張して20bitにしています)
そんなに大ジャンプはしなくて良い、ってことで大丈夫ですかね…。

2007.02.20 part2

帰り道でタイミングの問題ではないことに気づいたので、
考え直す方向を改めまして。
SRAM擬似回路etc.を書き直しました。
また明日テストします!

2007.02.20

シミュレーションしてみました。
コンパイルに時間かかった(汗)
どうやらSRAM擬似回路か、シミュレーション用のテストベンチに問題があるらしく、
うまくいきませんでした…。
色々直しているうちにわけのわからないことになったので、
タイミングやらなにやら、考え直してみようと思います。
(ファイル操作はどうやら問題なかったようです。)

2007.02.18 again

シミュレーション回路書き終えました。(多分)
ファイル操作にやっぱりちょっと自信がないですが、
とりあえずやってみよう、という状態になったので、
2/19か2/20にやってみます。(結局週内には収まらなかったorz)
ここまでのCPUファイル群をUPします。
usbword.vhdは、作ろうと思って作らなかったごみファイルです。
(消すの忘れてましたm(_ _)m)

2007.02.18

ただ今IN命令(USB対応)を組み込み終えました。
外部デバイスはこれからrs232cの研究ですかね…。

シミュレータ、SRAM擬似回路の初期化を
ファイルからSRAM擬似回路へ内容書き込み(→CPU実行)
を考えていたのですが、
vhdlでのファイル操作が細やかに出来なくて微妙。
方針転換をすべきか否か…。

  • 連続命令間の制約、了解です。
    とりあえずは、STOREDと直後のLOAD/LOADD/LOADIの間に
    NOPを挟んでおけば良いですね。
    遅延スロット中のSTOREDも避けた方が良いか…。

    END命令は…、このまま停止状態になるので良いような気がします。 -- buyobuyon (2007-02-18 19:32:56)
  • Stored、よろしくお願いします。

    Endも了解しました☆ -- yastak (2007-02-18 20:36:25)

2007.02.18 コメント返信

皆様、返信遅くなってすみません。

☆buyobuyon氏
1.連続命令間の制約
(問題になるのは)連続する書き込みとかの話ですよね?
レジスタに関するものはないです。
現在命令の結果を書き込んでから次の命令の読み出しを行うので…。

メモリに関するものは、
読み出し→書き込み
読み出し→読み出し
書き込み→書き込み
に関しては制約なしで、

書き込み→読み出し
の連続になるとき、同一アドレスでない時と、
同一アドレスでも、書き込み命令がSTOREDでないなら大丈夫です。

同一アドレスで、STORED命令の直後だとおそらくまずいです。

SRAMの読み出し(アドレスを入れた2clock後にデータが出てくる)が、
「アドレスを入れたタイミングでのSRAMの内容」を読み出すときはまずくて、
「アドレスを入れた2clock後のSRAMの内容」を読み出すのなら大丈夫、
なのですが、SRAMのマニュアルからは
どちらなのかよくわかりませんでした…。
(読み込み不足かもしれないのでもちょっと探してみます)
でもフツウに考えたらまずそうだよね、というのがとりあえずの結論です。

遅れた割に判明しきらず申し訳ない…m(_ _)m

という感じです。

2.遅延スロットが入るのは、全てのジャンプ系命令です。
因みに、コードは
if 現在命令(機械語)の最上位2つ = "11" then
  次の次のPCは現在命令の結果による(分岐)
else
  次の次のPCは現在命令+1(通常)
end if;
というようになっております~。
因みに、ENDがきたら回路は停止状態になるようにしていることに気づきました。
ひょっとして、リセットがくる、と言う方が正しい動作ですかね?
レイトレだけ動けばそれで良いだろうという感じで作っていたので…。
リセット、にした方がいいですかね?

☆harry

ありがとう~。
OUTだけでO.K.です!

2007.02.15

初期化用回路、完成しました!
これでSRAMとUSBの通信に問題はないはずです。
USBを使ったSRAM操作をまとめたファイルをあげておきます。(sram0215.zip)
CPUのシミュレーション回路は、現在ちょこちょこ書き始めているところです。
(多分SRAMの初期化をする部分を書くのがちょっと手間)
今週中にはシミュレーション回路は完成して、シミュレーションができる予定。
目標はFibのシミュレーション上動作です…(すごい遅れだ汗)

  • 着々と進んでいるじゃないですか。

    ところで、どの命令の直後何命令が遅延スロットになるかと、
    またその他に連続する命令間の制約などがあれば、まとめておいていただけますか? -- buyobuyon (2007-02-15 20:12:35)
  • 遅延スロットは全て1つとして実装しています~。
    それ以上必要なとき(命令実行に時間がかかるとき)にはバブル挿入で対応しています。

    命令間の制約はあまり深く考えていませんでした汗
    整理してまとめておきますね。(土曜日までには!)

    -- yastak (2007-02-16 00:43:55)
  • あ、了解です。
    こちらもしばらくレジスタ割り付けの実装で手間取っていると思うので、
    まとめるのは時間のあるときで良いですよ。

    あともう一つ。
    初歩的な質問で申し訳ないのですが、遅延スロットが入るのは、全てのジャンプ系命令
    (BEQ, BNE, BGT, BGE, JMP, JMPL, JMPR, JMPRL, RET, END)
    の直後でしたっけ? -- buyobuyon (2007-02-16 01:00:39)
  • 修正部分はOUTだけでいいのかな?
    直しました☆
    また変更あったらどんどん言ってね -- harry (2007-02-17 13:50:16)
  • 返信は02.18の日記にてしますm(_ _)m -- yastak (2007-02-18 16:13:01)

2007.02.14

ところで、中間レポートって、出題されてますっけ?
出題予告はあったような気がしますが…。
具体情報って出てないです、よね?
(私の見落としかな汗)

  • 一月の中間発表を知らせるメールに出題予告がありますね
    具体的な情報は今のところメールにも掲示にもなかったかと思います -- tsuy (2007-02-15 02:00:16)
  • そうかぁ。やっぱり出てないっぽいんだね。
    ありがとう~! -- yastak (2007-02-15 13:17:08)

2007.02.12

皆さん元気ですか?
そういえば私は試験疲れなのか何なのか、土曜日に寝込んだのですが、
皆さんは体調大丈夫ですか?
とりあえず、初期化用回路テストを木曜日に行う予定です。
告知だけしておきます。

  • 同じく、倒れていました…。
    もう大丈夫なのですか?お大事に。 -- buyobuyon (2007-02-13 01:29:38)
  • 1日寝たら治りました♪
    buyobuyon氏もお大事に! -- yastak (2007-02-13 01:57:31)

2007.02.11

お久しぶりです。試験お疲れ様でした。
現在CPUに外部デバイスとの接続(てかUSB操作)を組み込もうとしているところです。
それに伴って、また命令セットに変更を要求しています。
本当にすみません。主に被害を受けるだろうharryさんには今度ケーキでもおごりましょうw

USBとの通信は1word単位になるんですけど、
それで問題ないですかね?
コンテストのサーバとの通信のreadmeに、
通信開始信号で、0xaa(1バイト)を送る、とかあったような気がしますが…。

外部デバイスの指定がほとんど必要ないと思うんで、
(USBorシリアル基盤)
即値部に「何バイト(1-4)通信する」という指定があるようにしても良いかと思うんですけど、
どうでしょう?

  • とりあえず、OUT命令だけ完成させました。
    IN命令の前に、初期化回路の完動を目指します。
    なぜかって、動作的に似ているからです。 -- yastak (2007-02-11 18:47:01)


2007.01.31

TOPレベルの回路を書きました。
って、接続関係書いただけだけど。
これから、シミュレーション用の回路を書いたりして、
シミュレーションします。

そういえばUSBを組み込むのを忘れていたことに気づきました。
それもやります。

2007.01.30

SRAMの回路、どうやらテスト回路にバグがあった模様です。
微妙に書き換えたテスト回路で行ったところ、
無事4Mの読み出しが出来ました。
初期化用回路はうまく動かなかったので、
失敗検討と書き直しを急ぎます。

2007.01.27

EXW書き終わりました…。
あとはトップレベルの回路を書いて、
(レイトレテスト用のUSB通信回路もかかなくちゃ?)
(FPUをのせれば)完成です。
FPUの前に動作テストをしようと思います。

というところで、そろそろテスト勉強に移ります。
SRAMのテストやらなにやら残っていますが、テスト後にやりますー。

ところでみなさん、シリアル通信回路の製作、どうしましょう?
そろそろ考え始めないとまずい、ですよね…。

  • あ゛…、存在自体すっかり忘れていました…。
    どうする…、というか何をすればよいか全くわかっていなかったり…。
    とりあえずテスト後…ですかね。 -- buyobuyon (2007-01-27 19:30:39)


2007.01.26 part2

IFDRがほぼ書き終わった感じです。
即値の符号拡張を考えるのに億劫な気持ちになっていますw
単純に肩が凝ったからです。休憩してみます。

  • 書き終わりました!
    が、終了状態のことを考えていないことに気づきました。 -- yastak (2007-01-27 01:06:29)
  • それくらい面倒がってちゃだめだよね!
    …追加しました。
    ぼちぼちEXWも書いていきます。 -- yastak (2007-01-27 01:11:46)
  • だいぶ完成が近づいてきていますね。
    コンパイラも頑張らないと…。 -- buyobuyon (2007-01-27 15:13:02)


2007.01.26

CPUを書く予定が、register fileでブロックRAMの呼び出しと
IFDR/EXWのアクセス競合とかで混乱していたら、
時間がいつのまにか過ぎてしまった…
めげずにちょっとでも書こうと思います。

2007.01.25

進捗報告したら、アドバイスをもらえたので、
今度テストします。
ついでにテスト回路にちょっと改変を加えた別物をつくったり。
SRAMを模倣する回路も作ってみました。(シミュレーション用)

ところで、SRAM操作が入る命令には時間がかかるけど(1clockじゃ終わらない)、
そのときにはパイプラインはバブル入れてストール、であってますよね?
って考えると、FPUに2clockとか要しても大丈夫だと思うのですが…。

2007.01.19

sramのファイルが大きすぎてupできませんでした…。
大きかったのは、sramから読んできたデータ(4MB)でした。
それをのぞいてupします。

そういえば、usbから4MのデータをSRAMに送り込むような
回路も必要だなぁと気づいたので、それとCPUと平行して作ります。
でもぼちぼちテスト勉強に移行するかも…

2007.01.18

こっそり木曜日の事情聴取を期待していたけど、ないようですね…。
メール送らなきゃ。

第二次SRAMテストしました。
どうやら通った見込みです。(50MHz)
何がいけなかったのか、いまいち定かでないですが、
致命的に間違っていたところもあったので、それが主原因?
ただ、4Kbyteを読むと、最後の1bitの値が変です。
(前と同じ値…)
アドレスを000...から、111...まで読んでいるのですが、
count upで読むとだめで、count downでよむと最後の1bitまで大丈夫…。
とりあえず、ここまでのファイルを固めてupします。

2007.01.16

下に書いた鯖落ちは、緊急メンテナンスだったようです。
SRAMの回路をちょっと書き直しました。
マイナーチェンジですが。
echo回路がまだかけておりません…。
でもまぁ、再テストしてみます。
多分明日はできないので、木曜日にやります。
あ、でも事情聴取あるんだっけ?

2007.01.14

一昨日はwikiがおちていたらしく、書き込めませんでしたが…。
金曜日にSRAMのテストをしました。
回路は動いているような気配を見せたのですが、
書き込み&読み込みが出来ていないようです…。

どこができていないのかなどは詳細にはわからないので、
とりあえず、クロック速度を落とす(金曜日は50MHzでやりました)、
別のテスト回路(多分echo)を書く、などの方法で再実験したいと思います…。


2007.01.11

あけましておめでとうございます。
CPUのサイクル整理(の詳細化)をやっとしました。
サイクル整理って言うか、ほぼコードの構想ですけど…。
その関係で命令セットの機械語部分をちょっと書き換えさせていただきました。
アセンブリ命令は変えていないので、被害はharryに集中するかと…ごめんなさい。

レジスタの値を読み出すときに、R2,R3の部分に書かれたアドレスを機械的に与えているので
読み出し対象のレジスタはR2,R3の部分に書いてもらった方が便利だからですー。

明日はSRAMのテストをします。
本当は今日の予定でしたが…睡眠不足で挫折しました。
SRAMテストが終ったら、タイミングチャートの確認をして(自分がSRAMの動作を勘違いしていないか)
IFDR,EXWの回路を書いて、とりあえずfibを動かすための準備に入ります。
予定より大分遅れてしまいました…。ちょっと焦って頑張ります。

今日はこのあと連続系のLU分解のレポートを今頃書いて、
余裕があったらIFDR,EXWをちょっと書き始めようかなぁと。
投機的実行wですが。分岐予測がはずれませんように。

2006.12.31 part2

ALUが書き終わりました。
今年中にfibも無理でした…。
年明けに急ピッチでテストなどしていく予定です…。
みなさん調子はどうですか?

  • ごめんなさい、全く進んでいない感じです。 -- buyobuyon (2006-12-31 23:45:30)
  • パイプライン化について。言われてみれば、確かにReadを前段に含めてしまった方が良さそうですね。 -- buyobuyon (2006-12-31 23:48:34)

2006.12.31

以前の中間レポートを提出したときに、
パイプラインはFDR/EXWという分け方のほうが良いのではないかと言う指摘を受けたのですが、いかかでしょう?
EXに時間がかかるので、後者の方を小さくまとめた方がよいという話でした。
とりあえず、1段目でレジスタのアドレスをregfileに与えて、
2段目でそれを受け取るような形にして実装しようと考えています。
何かご指摘ありましたらよろしくお願いします!

2006.12.30

まだSRAMのテストができていません…
というか、地下に全然いけていません。申し訳ないです。
CPUの回路を構想中。
パイプラインが頭の中でごちゃごちゃしています。
タイミングチャートの整理…。

2006.12.14

すみません、前日家に帰っていなかったので(汗)テスト回路はまだだし
テストする気力もないしで、
「いつもの面子」がいなかったのでノロウイルスの危険を感じて(地下大丈夫なのかな?)
…ってのを言い訳にして、テスト延期ですorz 今週中って言ったのに…。
とりあえずテスト回路は書きましたー。
あ、.ucfがまだだった…。書きます。

  • 地下ってノロウィルス密度高いのですか!?
    まぁ23日までは人が密集する空間は避けた方が良さそうですね。

    23日が終わったら、また進行状況等書いてくださいね
    (って一週間書いていない私が言えることではないか…)。 -- buyobuyon (2006-12-21 01:09:28)
  • なんとなく高そうじゃないですか?
    飛散したら残りそうだし…。
    疑わしきは…ってやつですー。
    実際は結構大丈夫なのかも? -- yastak (2006-12-21 18:43:21)


2006.12.12

SRAMテスト回路、SRAMからREADするものは書きました。
あ、.ucf書くの忘れてた!…まぁさくっとかけるので木曜日にでも。
SRAMへWriteしないとどうしようもないので、
次はその回路を。
USB経由をやめようと思っているので、READより簡単に書ける…はず。

  • あ、USB経由をやめたのは、
    debugが複雑になりすぎないため&バイトデータを用意するのが面倒になったためwです。 -- yastak (2006-12-13 01:19:06)


2006.12.11

SRAMテスト回路準備中…
明日はまだテストできなさそうです(>_<)

2006.12.08

SRAM書き直しました。
前回のものがうまく利用できなくてテスト回路まで手が回りませんでした。
テスト回路・.ucfを今後書いていきます。

が、とりあえず連続系の課題をやらせてください…。
実はFFTも途中で放置状態だったりorz

  • 課題を優先してください。私も明日から常微分方程式に集中します。 -- buyobuyon (2006-12-09 00:33:02)
  • ども…。
    常微分方程式…orz -- yastak (2006-12-11 23:37:56)


2006.12.07

SRAM、以前書いたものを見直したのですが、
やっぱり書き直します。
とはいえ、ほとんど同じコードを書くので、それほどの手間ではないです。

同時にテスト回路をどんな感じに書くか検討中。
テスト結果が見えないと意味ないので、
USB→SRAM、SRAM→USB
というデータの流れでエコーできるかやってみようかなぁと。
USBのPC側のソフトで、提供されているのが後者の回路に使えるので
都合がいいかなぁとか考えつつ。

2006.12.05

USBテストしました。
PC側のソフトは過去の人が作ったechoを使っちゃいました。
テスト内容は、
1.echo
2.PCから読んだデータに1をたして書き込む(aを書くとbが返ってくる)
の二つです。
一応動きました。
ステートに応じてLEDを光らせてdebugしようと思ったのですが、
LED反応せず…よく考えたらnsレベルで動いているんだから
無理だよなぁとおもいました。
(全然関係ないLEDカウンタをつけてみたら動きましたw)

基盤その他部品は私のロッカーに入る見込みです。
ご入用の際はご連絡ください☆

2006.12.04

USBとテスト(echoテスト)ファイルを書き直しました。
ほとんど内容は変わっていないのですが。
内容をよく整理して、少なくとも自分には可読性の高いコードにしました。
というわけで再UPします。
クロックの使い方がいまいちよくわからない…。これでいいはず、だけど…。
とにもかくにも、buyobuyon氏の言うとおり明日テストしてみます!


2006.12.01

usb.ucf書きました。一応ピン配置はこれでO.K.なはずですが。
usb.vhd,usb_test.vhdを読み返してみたら、
何だか疑問あふれるコードだったので(自分で書いておいてなんですが)、
ちょっと書き直しを考えています。(書き直したら.ucf含め再UPします)
むしろこれ間違っている気も…。

  • あまりコードを見て悩むよりも、一度テストしてみた方が良いのでは?
    でもUSBが何となく進んでいる感じなので安心しました。
    後々になってUSBやSRAMで悩むことになるのが一番心配だったもので…。 -- buyobuyon (2006-12-02 00:54:37)

2006.11.30

とりあえず、USBに関するVHDLを上げておきます。
お恥ずかしながら、久々にコードを見たので自分が何を書いたのかよくわかりません…。
.ucfもちょっと書いたのですが、書きかけです。
くれぐれもこのまま実行しないでくださいw
明日、.ucfファイルを完成させます(=コードの中身を完全に思い出します。)

  • 一通りといったのにUSBしか上げていないことに気づく…。
    CPU周り・SRAMはちょっと書き直そうと思っているので待ってください~。
    -- yastak (2006-12-01 00:23:03)


2006.11.24

今日は頭痛で駒場祭には行かなかったわけですが…。
(パブロン飲んだら良くなりました。やった!)
駒場祭期間中は「ちょっとは時間取れるかも」と思っていたのですが、
どうやら完全拘束される(てか空き時間が分散して微妙すぎる)感じなので無理そうです…。
buyobuyon氏の言うとおり、月末からスパートかけます!

ところでFFTもさっぱりです。こまった。

2006.11.08

もう、本当に申し訳ありません。
書くのも心苦しいですが、進んでません。
もう少し、お待ちを…。

  • やっぱり駒場祭が終わるまでは大変ですよね。
    月末からスパートかけて頑張りましょう。 -- buyobuyon (2006-11-17 00:56:49)


2006.10.28

浮気進行中w
USBのテスト回路かいてみました。
これでいいのかよくわからん…VHDLの知識不足が明らかにorz
がんばりますー。

SRAM,ALU放置中…。

2006.10.27

USBに浮気しましたw
ブログにも書いてるけど、何がどうなっていれば良いのか、
よくわかんなくなってきたので一時休戦。
今、これ1回書いて、コメント欄をCut&Pasteしようとして
うっかりCtrl-W(ブラウザのウィンドウを閉じる)を押しちゃった…orz
emacsの癖は恐ろしい…。

そういえば、トップレベル回路にUSBはあんまり必要ないかも。
基盤にシリアル通信回路を設定できた後は、の話ですが…。

2006.10.26

SRAMを書き始めています。ALUは書くといっててまだかいてませんorz
SRAMはほぼ書き終わったかなという感じはしています。
テスト用のVHDLとかを書けばとりあえず完成かな?
でもタイミングチャートが想定と違うものになってる感じです。
動作確認しつつ正しいタイミングチャート把握を目指す所存です~。

  • あ、備忘録。
    サンプルのLEDを動かしました。動きました、ってことで! -- yastak (2006-10-26 18:47:13)

2006.10.25

ごぶさたしてます。昨日はすみませんでしたm(_ _)m
だんだんとコードを書いていってます。
現在パイプラインの一段目。
程々なところまで書いたら、二段目・ALUなどかいていく予定です。

  • いえいえ、お大事に。
    コードをまだ書き始めていないのが私だけなので、
    ちょっと焦ってみたり…。 -- buyobuyon (2006-10-25 15:40:06)

2006.10.20

レジスタアクセスとSRAMアクセスを混同していました。
…どうりで何かおかしいと思ったw
現在命令種ごとのタイミングチャートを考えています。
それをうまく実現するように実装していこうと思ってます~。
では夕飯の買い物に行ってきます(オイ)

2006.10.19

とりあえず過去のVHDLファイルなど見てます。
CPUのトップレベル回路の構造は、
TOP---- USB
   |-- SRAM
   |-- Fetch&Decode
   |-- Read&Execute&Write
というような感じで作っていこうかなぁと。
Execute&Writeのあたりは、FPUを使うのか否かでわけなきゃだめかな。
つだくんその辺そのうち話し合いましょうー!

おぼろげなイメージだけど、とりあえずそんな感じで。
これから具体化していきます。

  • ハードウェア任せっぱなしで申し訳ないです。
    土日か来週あたりに、TA様による事情聴取があるらしいので、ご注意を。 -- buyobuyon (2006-10-19 23:05:23)

  • いいえー。逆にソフト方面任せっぱなしで申し訳ないですm(_ _)m
    事情聴取…。そういや昨日聴取される前に逃げちゃったしなぁ…。
    土日は出現しないので来週かな…。覚悟しておきます(><) -- yastak (2006-10-20 15:49:25)
最終更新:2007年02月23日 22:24