blob: 78aea75e70cd9d83f6010b489718c2a5dd8744aa [file] [log] [blame] [edit]
// file: InsMem.v
// author: @tasneem_ismail
`timescale 1ns/1ns
module InsMem(FFlag3, clk,rst, PC, Ins, FFlag1);
input clk;
input FFlag3;
input rst;
input [7:0]PC;
output reg[13:0]Ins;
output reg FFlag1;
reg [13:0] Mem [0:255];
always @(posedge clk)begin
if(!rst)begin
Mem[0]=14'b00011110001000;//ADDWF d->1 reg[16]
Mem[1]=14'b00011100001001;//ADDWF d->0 reg[17]
Mem[2]=14'b00001010001010;//SUBWF d->1 reg[18]
Mem[3]=14'b00001000001011;//SUBWF d->0 reg[19]
Mem[4]=14'b00001000001100;//DECF d->1 reg[20]
Mem[5]=14'b00001100001101;//DECF d->0 reg[21]
Mem[6]=14'b00010110001000;//ANDWF d->1 reg[16]
Mem[7]=14'b00101000001001;//INCF d->0 reg[17]
Mem[8]=14'b00010010001010;//IORWF d->1 reg[18]
Mem[9]=14'b00100100001011;//COMF d->0 reg[19]
Mem[10]=14'b00011010001100;//XORWF d->1 reg[20]
////////////////////////////////////////////////////
Mem[11]=14'b01001110001000;//BCF b->7 reg[16]
Mem[12]=14'b01000110001001;//BCF b->2 reg[17]
Mem[13]=14'b01010110001010;//BSF b->3 reg[18]
Mem[14]=14'b01010100001011;//BSF b->2 reg[20]
////////////////////////////////////////////////////
Mem[15]=14'b11111100001111;//ADDLW K=00001111
Mem[16]=14'b11100100001000;//ANDLW K=00001000
Mem[17]=14'b11100000000001;//IORLW K=00000001
Mem[18]=14'b11110100000010;//SUBLW K=00000010
Mem[19]=14'b11101000000100;//XORLW K=00000100
////////////////////////////////////////////////////
end
else if(FFlag3) begin
Ins<=Mem[PC%20];
#20 FFlag1<=1;
end
end
endmodule