⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rom.v

📁 这个是用可编程器件进行仿真CPU的程序
💻 V
字号:
//**************************************************
//** Revision    :  0.1
//** File name   :  rom.v
//** Module name :  rom
//** Discription :  8-bit*16 ROM
//** Simulator   :  Quartus II 5.1 web edition
//** Synthesizer :  Quartus II 5.1 web edition
//** Author      :  IamFree
//** Last modified:    @ 2006///
//** Created date:  2006/03/10
//**************************************************

module rom(dout,nRD,nCS,address);
//Parameter define
parameter width=8;

//Port define
input  nRD;
input  nCS;
input  [3:0] address;
inout [width-1:0] dout;

//Port type
reg [width-1:0] data;
assign dout=nCS?8'bZZZZ_ZZZZ:data;

//Body
always @(address or nRD or nCS)
begin
if(!nRD & !nCS)
 case(address)//synthesis parallel_case
/*
  4'b0000:data=8'b00000_000;  //NOP
  4'b0001:data=8'b10111_001;  //LDI BX,#imm ;BX<-#25
  4'b0010:data=8'b00011_001;  //#25
  4'b0011:data=8'b11010_001;  //LDR BX      ;ACC<-BX

  4'b0100:data=8'b00010_000;  //SUBI #13     ;ACC<-ACC+#13
  4'b0101:data=8'b00001_101;  //#13
  4'b0110:data=8'b01001_001;  //ADDR BX     ;ACC<-ACC+BX
  //4'b0110:data=8'b00001_001;  //ADDI #5     ;ACC<-ACC+#5
  //4'b0111:data=8'b0000_0101;  //#5

  4'b0111:data=8'b00110_000;  //SHL         ;ACC<-ACC sl
  //4'b1000:data=8'b00111_000;  //SHR         ;ACC<-ACC sr
  4'b1000:data=8'b00111_000;  //SHL         ;ACC<-ACC sl

  4'b1001:data=8'b10011_111;  //JMP #101_0010_0101 ;PC<0x72d
  4'b1010:data=8'b00101_101;  //#0x2d
//Test LDV
  4'b1011:data=8'b01110_000;  //LDV #000_0000_0101 ;ACC<-[000_0000_0101]
  4'b1100:data=8'b00000_101;  //#0000_0101   [000_0000_0101]=#25

  4'b1101:data=8'b10101_000;  //STSPH   ;SPH<-ACC
  4'b1110:data=8'b10100_001;  //STR     ;BX<-ACC
  4'b1111:data=8'b11000_001;  //LDA     ;ACC<-[IM3:[BX]]
*/
/*
  4'b0000:data=8'b00000_000;  //NOP
  4'b0001:data=8'b10111_000;  //LDI ACC,0x00 ;ACC<-0x00
  4'b0010:data=8'b00000_000;  //#0x00
  4'b0011:data=8'b10101_000;  //STSPH        ;SPH<-ACC 

  4'b0100:data=8'b10111_000;  //LDI ACC,0x0f ;ACC<-0x0f
  4'b0101:data=8'b00001_111;  //#0x0f
  4'b0110:data=8'b10110_000;  //STSPL        ;SPL<-ACC  //Now SP=11'b000_0000_1111
  4'b0111:data=8'b11011_000;  //CALL 11'b000_0000_1011 ;Stack<-PC,PC<-11'b000_0000_1011

  4'b1000:data=8'b00001_011;  //#0000_1011

  4'b1001:data=8'b11101_000;  //PUSH ACC
  4'b1010:data=8'b11110_010;  //POP  R2
//PROC_START_HERE
  4'b1011:data=8'b01110_000;  //LDV 11'b000_0000_1110  ;ACC<-[000_0000_1110]=8  
  4'b1100:data=8'b00001_110;  //#0000_1110

  4'b1101:data=8'b01111_000;  //STV 11'b000_0000_0000  ;[000_0000_0000]<-ACC
  4'b1110:data=8'b00000_000;  //#0x00
  4'b1111:data=8'b11100_000;  //RET
*/
  4'b0000:data=8'b00000_000;  //NOP
  4'b0001:data=8'b10111_000;  //LDI ACC,0xff
  4'b0010:data=8'b11111_111;  //0xff
  4'b0011:data=8'b01111_100;  //STV #100_0000_0010 ;Set port direction 

  4'b0100:data=8'b0000_0010;  //#0000_0010
  4'b0101:data=8'b10111_000;  //LDI ACC,#0000_1001
  4'b0110:data=8'b00001_001;  //#0000_1001
//Label
  4'b0111:data=8'b00111_000;  //SHR         ;ACC<-ACC sr

  4'b1000:data=8'b01111_100;  //STV #100_0000_0000  ;Write port output buffer 

  4'b1001:data=8'b00000_000;  //#0000_0000
  4'b1010:data=8'b00000_000;  //NOP

  4'b1011:data=8'b00000_000;  //NOP
  4'b1100:data=8'b00000_000;  //NOP
  4'b1101:data=8'b00000_000;  //NOP

  4'b1110:data=8'b10011_000;  //JMP #000_0000_0111

  4'b1111:data=8'b00000_111;  //#0000_0111

 endcase
end


endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -