0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

vistaでquartus その26

Last updated at Posted at 2020-08-17

#概要

vistaでquartusやってみた。
cpu作ってみた。

#cpuの仕様

スタックマシン
スタック長 8word
命令長 16bit
データ長 16bit
アドレス長 12bit
実装メモリー 256word

#アセンブラの作成

##push

スタックトップに、データを直接積む。

##get

メモリーから読み込んで、スタックトップに積む。アドレスを直接指示。

##set

スタックトップを、メモリーへ格納。アドレスを直接指示。

##jmp

アドレスに飛ぶ。

##jz

スタックトップが0なら、アドレスへ飛ぶ。

##out

スタックトップをシリアルへ出力。

##op

算術計算。加算と比較のみ、実装。

#アセンブラでhello_world


push 'h'
out
push 'e'
out
push 'l'
out
push 'l'
out
push 'o'
out
push ' '
out
push 'w'
out
push 'o'
out
push 'r'	
out
push 'l'
out
push 'd'
out
push '!'
out
loop:
jmp loop

#命令セット

|ニーモニック|bit15|bit14 |bit13 |bit12|bit11|bit10 |bit9 |bit8 |bit7 |bit6 |bit5 |bit4 |bit3 |bit2 |bit1 |bit0 |16進 |
|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|
|push I|0 |0 |0 |1 |I|I |I |I |I |I |I |I |I |I |I |I |1000+I |
|get A |0 |0 |1 |0 |A|A |A |A |A |A |A |A |A |A |A |A |2000+A |
|set A |0 |0 |1 |1 |A|A |A |A |A |A |A |A |A |A |A |A |3000+A |
|jp A |0 |1 |0 |0 |A|A |A |A |A |A |A |A |A |A |A |A |4000+A |
|jz A |0 |1 |0 |1 |A|A |A |A |A |A |A |A |A |A |A |A |5000+A |
|jnz A |0 |1 |1 |0 |A|A |A |A |A |A |A |A |A |A |A |A |6000+A |
|out |1 |1 |1 |0 |-|- |- |- |- |- |- |- |- |- |- |- |E000 |
|+ |1 |1 |1 |1 |-|- |- |- |- |- |- |0 |0 |0 |0 |0 |F000 |
|> |1 |1 |1 |1 |-|- |- |- |- |- |- |0 |0 |0 |0 |1 |F001 |
|< |1 |1 |1 |1 |-|- |- |- |- |- |- |0 |0 |0 |1 |0 |F002 |

#ハンドアセンブル


		mem[0]  = 16'h1068;//push 'h'
		mem[1]  = 16'he000;//out
		mem[2]  = 16'h1065;//push 'e'
		mem[3]  = 16'he000;//out
		mem[4]  = 16'h106c;//push 'l'
		mem[5]  = 16'he000;//out
		mem[6]  = 16'h106c;//push 'l'
		mem[7]  = 16'he000;//out
		mem[8]  = 16'h106f;//push 'o'
		mem[9]  = 16'he000;//out
		mem[10] = 16'h1020;//push ' '
		mem[11] = 16'he000;//out
		mem[12] = 16'h1077;//push 'w'
		mem[13] = 16'he000;//out
		mem[14] = 16'h106f;//push 'o'
		mem[15] = 16'he000;//out
		mem[16] = 16'h1072;//push 'r'	
		mem[17] = 16'he000;//out
		mem[18] = 16'h106c;//push 'l'
		mem[19] = 16'he000;//out
		mem[20] = 16'h1064;//push 'd'
		mem[21] = 16'he000;//out
		mem[22] = 16'h1021;//push '!'
		mem[23] = 16'he000;//out
		mem[24] = 16'h4018;//jmp 24

#環境

windows vista 32bit
quartus ii v13.0
ep2c5t144ボード

#コンパイル結果

無題.jpg

#実行結果

無題.jpg

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?