资源描述:
《CPU VHDL代码及详细注释》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一个TISC的模拟cpu代码,一共有200多行,不过麻雀虽小,却五脏俱全,而且作者对每行代码都做了详细的说明,下面仔细的分析一下。先看看作者写的指令说明:--VinsVHDLTiscCPUCore,15thNov2001--Myfirstattemptatprocessordesign,thanksto:---TimBoscke-CPU8BIT2,Rockwell-6502,Microchip-Pic--JienChungLo-EL405,SteveScott-Tisc,--GiovanniMoretti-IntrotoAsm--Uses12b
2、itprogramword,and8bitdatamemory --2regmachine,accumulatorbased,withakkuandindexregs--Harvardarchitecture,usesreturnxsoastoeliminateneedofpmem--indirectinstructionslike8051.--pcis10bits,akkuandidxare8bit. --Hascarryandzeroflags,--threeaddressingmodes:-immediate,indirectandreg
3、.--seperateprogramanddatamemoryforpipelininglater... --Instructionscodedasthus:- --Longinstructionsfirst-programjump.--Bothstorereturnaddressforsubroutinecalls,1deepstack.--00xxxxxxxxxxjc pmem10 ;ifc==1,stack=pc,pc<-pmem10,fi--01xxxxxxxxxxjzpmem10 ;ifz==1,stack=pc,pc<
4、-pmem10,fi --Immediateops--bits9and8selectwhattodo--1000xxxxxxxx lda#imm8 ;a=imm8,c=0,--1001xxxxxxxx ret#imm8 ;a=imm8,pc=stack --1010xxxxxxxx adc#imm8 ;addwithcarryimm8,cyandzset--1011xxxxxxxx adx#imm8 ;addimm8toidxreg,z=(a==0) --Indirecta
5、ndaluops--bit9selectsindirectoraluops --Indirect-bits7and8selectwhattodo--11000 xxxxxxxlda[ix] ;loadaindirectdatamem--11001 xxxxxxxsta[ix] ;storeaindirectdatamem --registerregister--11010 xxxxxxxtax ;x=a,--11011 xxxxxxxtxa ;a=x --Arithmeticopsuseindirectaddressing--all
6、aluopsindirect,bits7and8selectaluop.--11100 xxxxxxx adda,[ix];addwithcarry--11101 xxxxxxx suba,[ix];a=a+~[idx],incaafterforpropersubtract--11110 xxxxxxx anda,[ix];andmemcontentsintoa--11111 xxxxxxx nora,[ix];nor --States.--000instructiondecode--010 loadaindirect-lda[ix]--011
7、 storaindirect-sta[ix]--100adda,[ix]--101suba,[ix[--110anda,[ix]--111 nora,[ix] 1.外部接口说明1.1处理机控制Clock --时钟信号 Reset--复位信号1.2总线信号Data[11..0]--数据 address[9..0]--地址1.3控制信号Rd--读信号 wr--写信号 psen--pmem 2.内部信号及寄存器说明2.1程序控制Stack--堆栈 PC--程序计数器2.2寄存器Akku--累加寄存器 Idx--索引寄存器
8、 Z--零标志寄存器2.3ALU运算器运算输入:aluinput,temp操作 符:aluop运算结果:aluout存放目标选择:aludest 3指