Module | Description |
pc_reg | Module of PC register |
if_stage | Instruction Fetch stage |
if_id_reg | Registers between IF and ID stages |
id_stage | Instruction Decode stage |
id_exe_stage | Registers between ID and EXE stages |
exe_stage | Execute stage |
exe_mem_reg | Registers between EXE and MEM stages |
mem_stage | Memory stage |
mem_wb_reg | Registers between MEM and WB stages |
wb_stage | Writeback stage |
except | Module of exception handling |
| |
| Instruction Cache top |
| Data Cache top |
| | |
| | JLUT top |
| | SPC is stored in CAMs, and it will take less than two clock cycles to get address of the CAMs content specified. |
| | TPC is stored in ubiquitous RAMs. |
Instruction | Format | Usage |
campi | opcode, rs, 5’h0, rd, 5’h0, func | campi rd, rs |
camwi | opcode, rs, rt, 5’h0, 5’h0, func | camwi rt, rs |
ramwi | opcode, rs, rt, 5’h0, 5’h0, func | ramwi rt, rs |
ramri | opcode, rs, 5’h0, rd, 5’h0, func | ramri rd, rs |
8086 | MIPS |
AX | s0(R16) |
CX | s1(R17) |
DX | s2(R18) |
BX | s3(R19) |
SP | s4(R20) |
BP | s5(R21) |
SI | s6(R22) |
DI | s7(R23) |
CS | t4(R12) |
DS | t5(R13) |
ES | t6(R14) |
SS | t7(R15) |
IP | t8(R24) |
oo | 功能 |
00 | 如果mmm=110,那么位移量在操作码后面,否则没有使用位移量 |
01 | 操作码后面是8位有符号的位移量 |
10 | 操作码后面是16位有符号的位移量 |
11 | mmm指定一个寄存器而不是一种寻址方式 |
mmm | 16位寄存器 |
000 | DS:[BX+SI] |
001 | DS:[BX+DI] |
010 | SS:[BP+SI] |
011 | SS:[BP+DI] |
100 | DS:[SI] |
101 | DS:[DI] |
110 | SS:[BP] |
111 | DS:[BX] |
rrr | w=0 | w=1 |
000 | AL | AX |
001 | CL | CX |
010 | DL | DX |
011 | BL | BX |
100 | AH | SP |
101 | CH | BP |
110 | DH | SI |
111 | BH | DI |
rrr | 段寄存器 |
000 | ES |
001 | CS |
010 | SS |
011 | DS |
字段 | 说明 |
d | 运算方向 |
w | 是否为字 |
s | 是否符号扩展 |
disp | 位移量 |
data | 数据,如立即数 |
端口类型 | 端口地址 |
rs232数据端口 | 20000000H |
rs232忙位检测 | 20000004H |
vga显示基址 | 50000000H |
led | 70000000H |
键盘 | 90000000H |
unsigned int* text_base = (int *)0x000C0000; unsigned int* graphics_base = (int *)0x50000000; //VGA 端口 unsigned int* ps2_base = (int *)0x90000000; //ps2键盘 端口 unsigned int* rs232_base = (int *)0xFFFFE000; unsigned int* rs232_busy = (int *)0xFFFFF000; unsigned int* font_base = (int *)0x000C12C0; //字库 端口 |
欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |