Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PICを作ろう ,命令の定義 ~昼休みにまったり進めるプロジェクト~

いやー,東京は激暑いね.というわけで,まず,インストラクションを定義しよう.

 
`ifdef __PIC_INSTRUCTIONS_H
`else
`define __PIC_INSTRUCTIONS_H
//
// Based on Table 15-2 PIC16F627A/628A/648A INSTRUCTION SET
// (c) 2007 BAKAOyaji
// $Id
//

// Byte oriented File Register Operations
`define INST_ADDWF 14'b00_0111_xxxx_xxxx
`defineINST_ANDWF 14'b00_0101_xxxx_xxxx
`defineINST_CLRF 14'b00_0001_1xxx_xxxx
`defineINST_CLRW 14'b00_0001_0xxx_xxxx
`defineINST_COMF 14'b00_1001_xxxx_xxxx
`defineINST_DECF 14'b00_0011_xxxx_xxxx
`defineINST_DECFSZ 14'b00_1011_xxxx_xxxx
`defineINST_INCF 14'b00_1010_xxxx_xxxx
`defineINST_INCFSZ 14'b00_1111_xxxx_xxxx
`defineINST_IORWF 14'b00_0100_xxxx_xxxx
`defineINST_MOVF 14'b00_1000_xxxx_xxxx
`defineINST_MOVWF 14'b00_0000_1xxx_xxxx
`defineINST_NOP 14'b00_0000_0xx0_0000
`defineINST_RLF 14'b00_1101_xxxx_xxxx
`defineINST_RRF 14'b00_1100_xxxx_xxxx
`defineINST_SUBWF 14'b00_0010_xxxx_xxxx
`define INST_SWAPF 14'b00_1110_xxxx_xxxx
`defineINST_XORWF 14'b00_0110_xxxx_xxxx

// BIT-Oriented File Register Operations
`define INST_BCF 14'b01_00xx_xxxx_xxxx
`defineINST_BSF 14'b01_01xx_xxxx_xxxx
`defineINST_BTFSC 14'b01_10xx_xxxx_xxxx
`defineINST_BTFSS 14'b01_11xx_xxxx_xxxx

// Literal and control Operations
`defineINST_ADDLW 14'b11_111x_xxxx_xxxx
`defineINST_ANDLW 14'b11_1001_xxxx_xxxx
`defineINST_CALL 14'b10_0xxx_xxxx_xxxx
`defineINST_CLRWDT 14'b00_0000_0110_0100
`defineINST_GOTO 14'b10_1xxx_xxxx_xxxx
`defineINST_IORLW 14'b11_1000_xxxx_xxxx
`define INST_MOVLW 14'b11_00xx_xxxx_xxxx
`define INST_RETFIE 14'b00_0000_0000_1001
`defineINST_RETLW 14'b11_01xx_xxxx_xxxx
`defineINST_RETURN 14'b00_0000_0000_1000
`defineINST_SLEEP 14'b00_0000_0110_0011
`defineINST_SUBLW 14'b11_110x_xxxx_xxxx
`defineINST_XORLW 14'b11_1010_xxxx_xxxx

`endif // `if __PIC_INSTRUCTIONS_H
// EOF pic_instructions.h



こんな感じかな。xはVerilog-HDLでは、一般的には「不定」を意味することになっているのだが、私はちょっと「不定」という用語には違和感を覚える。RTLのソースコード中ではむしろ、「無視」、あるいは「どうでもよい」の意味になる。英語では「don't care」に相当します。
たとえば、

`define INST_ADDWF  14'b00_0111_xxxx_xxxx

の下位8ビットの「x」(=don't care)は、命令のオペランドの部分なので、命令のデコードをするためには、「どうでもよい」部分ということです。
----
本日の御託
 「ラプター」について、ちょっと調べてみた。まあ、所詮「戦争の道具」だけど、男の子は飛行機はすきなのだ。
水平尾翼は一応独立した形になっているが、主翼と同一面のようだし、主翼との大きさとの比率からいっても、むしろ無尾翼機の発展型といってもいいように思う。巡航速度がマッハ1.5程度の超高速機にもかかわらず、エンジンはターボファン(!)。純粋な、ジェットエンジンってもうないんだろうね。
 ところが、米国議会は、日本には売ってくれないらしい。
「けっ、いらねいよ!」

 



コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://diesaliquanti.blog.fc2.com/tb.php/347-c4e4ae0f
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。