Reduced numbers to be sorted in gnome_sort.asm to fit in lcd, fixed hlt on real hardware, slowed down cpu, increased lcd fifo and with that I almost got gnome_sort.asm working perfectly on real hardware
This commit is contained in:
parent
e06c0eeaa0
commit
7d2cb5672f
@ -5,7 +5,7 @@ mov sp,#STACK
|
|||||||
MOV SI,#DATA
|
MOV SI,#DATA
|
||||||
|
|
||||||
GNOME_SORT:
|
GNOME_SORT:
|
||||||
CMP SI,#DATA+31
|
CMP SI,#DATA+23
|
||||||
JZ GNOMED
|
JZ GNOMED
|
||||||
MOV AX,[SI]
|
MOV AX,[SI]
|
||||||
INC SI
|
INC SI
|
||||||
@ -29,7 +29,7 @@ PRINT_LOOP:
|
|||||||
MOV AL,[SI]
|
MOV AL,[SI]
|
||||||
call PRINT_0_8_HEX
|
call PRINT_0_8_HEX
|
||||||
INC SI
|
INC SI
|
||||||
CMP SI,#DATA+32
|
CMP SI,#DATA+24
|
||||||
JNZ PRINT_LOOP
|
JNZ PRINT_LOOP
|
||||||
|
|
||||||
MOV AH,#0x02
|
MOV AH,#0x02
|
||||||
@ -41,7 +41,6 @@ hlt
|
|||||||
DATA: DB 0x51, 0x17, 0x37, 0x5d, 0x06, 0x3f, 0x51, 0x8b
|
DATA: DB 0x51, 0x17, 0x37, 0x5d, 0x06, 0x3f, 0x51, 0x8b
|
||||||
DB 0xa5, 0x33, 0x54, 0xdf, 0xae, 0xee, 0x3a, 0x18
|
DB 0xa5, 0x33, 0x54, 0xdf, 0xae, 0xee, 0x3a, 0x18
|
||||||
DB 0xe9, 0xdb, 0x1f, 0x21, 0x44, 0x4f, 0x99, 0x09
|
DB 0xe9, 0xdb, 0x1f, 0x21, 0x44, 0x4f, 0x99, 0x09
|
||||||
DB 0x2a, 0x23, 0x82, 0x4f, 0x52, 0xf1, 0xdc, 0x0b
|
|
||||||
|
|
||||||
.BLKB 200
|
.BLKB 200
|
||||||
STACK:
|
STACK:
|
||||||
|
@ -504,13 +504,21 @@ always @( posedge clock ) begin
|
|||||||
11'b1111_0100_??? : begin
|
11'b1111_0100_??? : begin
|
||||||
/* HLT - Halt */
|
/* HLT - Halt */
|
||||||
/* 1 1 1 1 0 1 0 0 | */
|
/* 1 1 1 1 0 1 0 0 | */
|
||||||
opcode_size=0;
|
|
||||||
IN_MOD=3'b011;
|
IN_MOD=3'b011;
|
||||||
HALT<=1;
|
HALT<=1;
|
||||||
ERROR<=`ERR_NO_ERROR;
|
ERROR<=`ERR_NO_ERROR;
|
||||||
MEM_OR_IO<=0;
|
MEM_OR_IO<=0;
|
||||||
seq_addr_entry<=`UCODE_NO_INSTRUCTION;
|
seq_addr_entry<=`UCODE_NO_INSTRUCTION;
|
||||||
next_state=`EXEC_WAIT;
|
|
||||||
|
opcode_size=0;
|
||||||
|
Wbit=1;
|
||||||
|
in_alu_sel1=2'b10;
|
||||||
|
in_alu_sel2=2'b00;
|
||||||
|
PARAM2=16'hFFFF;
|
||||||
|
ALU_OP<=`ALU_OP_ADD_SIGNED_B;
|
||||||
|
OUT_MOD=3'b101;
|
||||||
|
MEM_OR_IO<=0;
|
||||||
|
next_state=`EXEC_WRITE_ENTRY;
|
||||||
DEPENDS_ON_PREVIOUS<=0;
|
DEPENDS_ON_PREVIOUS<=0;
|
||||||
memio_address_select=0;
|
memio_address_select=0;
|
||||||
end
|
end
|
||||||
|
@ -40,7 +40,7 @@ wire [15:0] data_bus_read,data_bus_write;
|
|||||||
wire rd,wr,BHE,IOMEM;
|
wire rd,wr,BHE,IOMEM;
|
||||||
|
|
||||||
system system(
|
system system(
|
||||||
/* MISC */ clk48,reset
|
/* MISC */ counter[7],reset
|
||||||
/* MEMORY / IO */ ,address_bus,data_bus_read,data_bus_write,BHE,rd,wr,IOMEM,HALT,ERROR
|
/* MEMORY / IO */ ,address_bus,data_bus_read,data_bus_write,BHE,rd,wr,IOMEM,HALT,ERROR
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ end
|
|||||||
reg reset=0;
|
reg reset=0;
|
||||||
reg [1:0] state=0;
|
reg [1:0] state=0;
|
||||||
|
|
||||||
always @(posedge counter[3]) begin
|
always @(posedge counter[15]) begin
|
||||||
if(user_button==0)
|
if(user_button==0)
|
||||||
state=2'b00;
|
state=2'b00;
|
||||||
case (state)
|
case (state)
|
||||||
@ -100,7 +100,7 @@ always @(negedge wr) begin
|
|||||||
if(IOMEM==1'b1 && address_bus[7:0]==8'hA5 )begin
|
if(IOMEM==1'b1 && address_bus[7:0]==8'hA5 )begin
|
||||||
//disp_write_cache[disp_cache_end]<=data_bus_write[7:0];
|
//disp_write_cache[disp_cache_end]<=data_bus_write[7:0];
|
||||||
disp_write_cache[disp_cache_end]<=data_bus_write[15:8];
|
disp_write_cache[disp_cache_end]<=data_bus_write[15:8];
|
||||||
disp_cache_end<=disp_cache_end+5'd1;
|
disp_cache_end<=disp_cache_end+6'd1;
|
||||||
end else if(IOMEM==1'b1 && address_bus[7:0]==8'hB0 )begin
|
end else if(IOMEM==1'b1 && address_bus[7:0]==8'hB0 )begin
|
||||||
if(data_bus_write[0:0]==1)
|
if(data_bus_write[0:0]==1)
|
||||||
rgb_led_color=3'b000;
|
rgb_led_color=3'b000;
|
||||||
@ -113,16 +113,16 @@ end
|
|||||||
// Cache to allow the slow display to have a
|
// Cache to allow the slow display to have a
|
||||||
// chance to keep up with the relentless CPU
|
// chance to keep up with the relentless CPU
|
||||||
|
|
||||||
reg [4:0] disp_cache_start=0;
|
reg [5:0] disp_cache_start=0;
|
||||||
reg [4:0] disp_cache_end=0;
|
reg [5:0] disp_cache_end=0;
|
||||||
reg [7:0] disp_write_cache [31:0];
|
reg [7:0] disp_write_cache [63:0];
|
||||||
reg ascii_state=0;
|
reg ascii_state=0;
|
||||||
always @(posedge clk48)begin
|
always @(posedge clk48)begin
|
||||||
case (ascii_state)
|
case (ascii_state)
|
||||||
1'b0:begin
|
1'b0:begin
|
||||||
if(ascii_data_ready&disp_cache_start!=disp_cache_end)begin
|
if(ascii_data_ready&disp_cache_start!=disp_cache_end)begin
|
||||||
ascii_data<=disp_write_cache[disp_cache_start];
|
ascii_data<=disp_write_cache[disp_cache_start];
|
||||||
disp_cache_start<=disp_cache_start+5'd1;
|
disp_cache_start<=disp_cache_start+6'd1;
|
||||||
ascii_data_write_req<=1;
|
ascii_data_write_req<=1;
|
||||||
ascii_state<=1'b1;
|
ascii_state<=1'b1;
|
||||||
end
|
end
|
||||||
|
@ -34,7 +34,7 @@ initial begin
|
|||||||
$readmemh(boot_code, memory,0,`BUILTIN_RAM-1);
|
$readmemh(boot_code, memory,0,`BUILTIN_RAM-1);
|
||||||
`else
|
`else
|
||||||
//TODO: don't have it hard coded
|
//TODO: don't have it hard coded
|
||||||
$readmemh("../boot_code/colored_led.txt", memory,0,`BUILTIN_RAM-1);
|
$readmemh("../boot_code/gnome_sort.txt", memory,0,`BUILTIN_RAM-1);
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
`ifdef NOT_FULL
|
`ifdef NOT_FULL
|
||||||
|
Loading…
Reference in New Issue
Block a user