2004.06.06

LDとST動いたよ。


自作CPU pmeteoの方は、LDとSTが良い感じで動くようになった。最新のソースはここ。ST命令でフラグが変わるかどうかで混乱したが、CASLの本を読んで変わらないことを確認。
試験一覧をIdeaTreeでまとめないと。

| | Comments (0) | TrackBack (0)

2004.06.05

今日の日記

思い出したように、自作CPUの動作確認開始。
まずは、メモリの表現を、
reg [15:0] mem00, mem01, mem02, mem03, mem04, mem05, mem06, mem07;
というベタなFFに変換。これで何とかiverilogでシミュレーション可能。

LD命令もバグがあり、さくさく直す。ストアもバグがあり、デバッグをしなくては。一命令に一個バグがあるな。

なぜかPeggyProのリビジョン管理機能が上手く動かない。RCSでチェックインしようとすると、
C:\Documents and Settings\Natu\Local Settings\Temp\$AP29.tmp と C:\home\pmeteo\verilog\pmeteo_core.v を比較中...
Usage: diff.exe [-beiw] [-c[1-9]] file1 file2
比較に失敗しました.
コマンドが正しく実行できませんでした.
とエラーがでる。

コマンドラインから、ciコマンドを実行しても同じ。
LXからDIFF.exeを取ってきたらそれっぽく動いた。謎

クマーとワルツは第4章まで読みました。日本語だと5分くらいで読めるんだけどね・・

| | Comments (0) | TrackBack (0)

2004.05.27

メモリ周りで悩む

自作CPUの方を思い出したように再開。CPUに一番近いところのメモリの設計って難しいな。遅くても良いのなら何とでもなるんだけど、パフォーマンスを出しつつ、柔軟なウェイトを入れるようにするのはちょっと面倒。SH見たいに、メモリコントローラ側は立ち下がり動作って言うのは理にかなっている。ライトは何とでもなるけど、リードっていうか、命令フェッチの部分はCPUパフォーマンスの生命線だ。マイクロプロセッサ・アーキテクチャ入門にも書いてあるが、CPUのCLKよりもフェッチの性能をもっと重要視するべきだと思う。Xtensaは、フェッチとライトの部分を変更することでパイプラインを5~7に変更できるが、フェッチの部分を改良する事でパイプラインの段数が増えても、結果的にパフォーマンスが上がることは十分考えられる。面白い。

iverilogの方だが、メモリのシミューレーションが上手く行かない。
mem[adr]みたいなアクセスで、読み出す値が不定にになる。adrが
0、1、2までは読めてるんだけど、3以上になると不定が読める。
微妙だ。4以上ならちょっとはわかるんだが・・・。
会社のModelsimとか使えればもう少し切り分けできるんだが。

というわけで、ハマリ気味。まあ、面白いな。

| | Comments (0) | TrackBack (0)

2004.05.09

NOPとHALT動いたよ。

単にCPU_ENが1になってなかっただけなので、1にしたら無事動きました。
動いたファイルはここ

今日のメモ
iverilogでは繋がっていない信号はエラーでなく0扱いっぽい。

| | Comments (0) | TrackBack (0)

iverilog動いた

pmeteo再開。シミュレーション用のテストベンチを作成し、iverilogでコンパイル

C:\home\pmeteo\verilog>iverilog ram.v rom.v pmeteo_core.v commet.v commet_tb.v -o a.exe

こんなエラーが出て、ダメになる。
C:\home\pmeteo\verilog>a.exe
プログラムが大きすぎてメモリに入りません.

googleでも情報無し

とりあえず,usモードに切り替えて
C:\home\pmeteo\verilog>a.exe
Program too big to fit in memory

これでも情報見つからない

ここをみてわかった。a.exeをじっこうするんじゃないんだ。
普通に、a.outを作って、
vvp a.out
でシミュレーションできたーー。

500 0 0 0 00000000000000000000000000000000000000000
1000 1 0 0 00000000000000000000000000000000000000000
1500 0 0 0 00000000000000000000000000000000000000000
2000 1 0 0 00000000000000000000000000000000000000000
2500 0 0 0 00000000000000000000000000000000000000000
3000 1 0 0 00000000000000000000000000000000000000000
3500 0 0 0 00000000000000000000000000000000000000000
4000 1 0 0 00000000000000000000000000000000000000000
4500 0 1 0 00000000000000000000000000000000000000000
5000 1 1 0 00000000000000000000000000000000000000000
5500 0 1 0 00000000000000000000000000000000000000000

上手く動いてないけど、CLK発振して、リセットが解除されている。

gtkwave0509.JPG


そして、GTKwaveも無事動く。ステートマシーンが止まってるな。
しかし、フリーでこれだけできるなんてすごいや。

| | Comments (0) | TrackBack (0)

2004.04.21

ソース変更終了

pmetoはVHDLからVerilogへのソースの変換終了。iverilogでもとりあえずエラー無し。WebPackか、なにかで一回くらい論理合成したいが、すぐ動く環境がないので、GWくらいに挑戦。
明日から、メモリのモデルつないで、テストベンチ作成。

| | Comments (0) | TrackBack (0)

2004.04.11

符号付き演算と、符号無し演算

CPU作成の方は、符号付き演算で混乱。
CASL2では、ADDA,SUBA,ADDL,SUBLの4つの算術命令がある。それぞれ、算術加算、算術減算、論理加算、論理減算。別の言い方をすると、符号付き加算、符号付き減算、符号無し加算、符号無し減算と。

符号付きと符号無しって、データの表現方法の違いだけで演算器って共通じゃなかったっけ?ヘネパタの本と、まとめたノートは会社なので、さっとわからない。

4bitで考えてみよう。
符号なしだと、表せる範囲は0~15、符号付きだと、-8~7。


16進 符号なし 符号あり
F 15 -1
8 8 -8
7 7 7
1 1 1
0 0 0

大事な値はこれくらい。0は演算に影響しないから、F+8, F+7, 8+7,F+1,7+1くらいを考えてみる。

F+8 は符号無しだと、17hなので答えは7(0111)とOF。これは普通に足すだけ。符号付きだと、-9hなので、7(0111)とOF。これは符号付き、符号無しで一緒。

同様に、計算してみる。
F+7:符号無しで16(0110)でOF。符号付きで6(0110)でOF無し。
8+7:符号無しで15(1111)でOF無し。符号付きだと-1(1111)でOF無し。
F+1:符号無しで0でOF。符号無しで0でOF無し。
7+1:符号無しで8(1000)でOF無し。符号無しで、-8(1000)でOF有り。

計算結果が同じで、オーバーフローかどうかの判断が変わるだけですね。明日会社のヘネパタで確認しよう。

日記:
つるきソバを食べた。ソバよりも、うどんよりも天ぷらが美味しかった。
ゲイツの本は、10個のうち8個まで読めた。あと法則2つ。月曜の出張中に読み切れるか。

| | Comments (0) | TrackBack (0)

2004.03.22

PMETEO仕様書0,1


ようやくPMETEO仕様書がちょっとできました。

こんなの仕事だったら一日で書けちゃう量だけど、なかなか時間がかかった。

明日からVerilog書き始めよう。
iverilogがちゃんとうごいてくれるだろうか。

| | Comments (0) | TrackBack (0)

2004.03.13

割込のブロック図を書いてみました。

pmeto_int.gif

ちょっとずつCPUの仕様書作成中。
あと、割込レジスタの仕様書いて、ブート時の動き書いて、拡張命令の仕様を書けば
いったん完成、ようやくコーディング開始予定。先は長い。

そして最寄りの本屋でH8付きトラ技売り切れ。
明日は京都に出かけても確実にゲットしなくては。

| | Comments (0) | TrackBack (0)

2004.02.22

CPUブロック図

とりあえず、CPUのブロック図。わかる人にはわかる。
PMETEO_block.png

| | Comments (0) | TrackBack (0)