📄 rom.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 + -