Line 27... |
Line 27... |
wire [63:0] scr_dato;
|
wire [63:0] scr_dato;
|
wire [15:0] tc_dato;
|
wire [15:0] tc_dato;
|
wire [15:0] pic_dato;
|
wire [15:0] pic_dato;
|
wire tc_ack;
|
wire tc_ack;
|
wire pic_ack;
|
wire pic_ack;
|
reg pulse1000Hz;
|
reg pulse1000Hz,pulse100Hz;
|
|
|
wire uart_ack = sys_iocyc && sys_stb && (sys_adr[23:8]==16'hDC_0A);
|
wire uart_ack = sys_iocyc && sys_stb && (sys_adr[23:8]==16'hDC_0A);
|
wire rast_ack = sys_iocyc && sys_stb && (sys_adr[23:8]==16'hDA_01);
|
wire rast_ack = sys_iocyc && sys_stb && (sys_adr[23:8]==16'hDA_01);
|
wire AC97_ack = sys_iocyc && sys_stb && (sys_adr[23:8]==16'hDC_10);
|
wire AC97_ack = sys_iocyc && sys_stb && (sys_adr[23:8]==16'hDC_10);
|
wire spr_ack = sys_iocyc && sys_stb && (sys_adr[23:16]==8'hD8);
|
wire spr_ack = sys_iocyc && sys_stb && (sys_adr[23:16]==8'hD8);
|
wire Led_ack = sys_iocyc && sys_stb && (sys_adr[23:8]==16'hDC_06);
|
wire Led_ack = sys_iocyc && sys_stb && (sys_adr[23:8]==16'hDC_06);
|
|
wire dt_ack = sys_iocyc && sys_stb && (sys_adr[23:8]==16'hDC_04);
|
|
wire p100ack = sys_iocyc && sys_stb && (sys_adr[63:0]==64'hFFFFFFFF_FFFF0010);
|
|
wire p1000ack = sys_iocyc && sys_stb && (sys_adr[63:0]==64'hFFFFFFFF_FFFF0000);
|
|
|
assign ram_ack = sys_cyc && sys_stb && (sys_adr[63:32]==32'd1);
|
assign ram_ack = sys_cyc && sys_stb && (sys_adr[63:32]==32'd1);
|
assign sys_ack = br_ack|stk_ack|scr_ack|tc_ack|pic_ack|ram_ack|uart_ack|rast_ack|AC97_ack|spr_ack|Led_ack;
|
assign sys_ack = br_ack|stk_ack|scr_ack|tc_ack|pic_ack|ram_ack|uart_ack|rast_ack|AC97_ack|spr_ack|Led_ack|dt_ack|p100ack|p1000ack;
|
|
|
initial begin
|
initial begin
|
clk = 1;
|
clk = 1;
|
pulse1000Hz = 0;
|
pulse1000Hz = 0;
|
|
pulse100Hz = 0;
|
rst = 0;
|
rst = 0;
|
nmi = 0;
|
nmi = 0;
|
#100 rst = 1;
|
#100 rst = 1;
|
#100 rst = 0;
|
#100 rst = 0;
|
#800 nmi = 1;
|
#800 nmi = 1;
|
#100 nmi = 0;
|
#100 nmi = 0;
|
end
|
end
|
|
|
always #10 clk = ~clk; // 50 MHz
|
always #20 clk = ~clk; // 25 MHz
|
always #290930 pulse1000Hz = 1;
|
always #29930 pulse1000Hz = 1;
|
always #130 pulse1000Hz = 0;
|
always #130 pulse1000Hz = 0;
|
|
always #299030 pulse100Hz = 1;
|
|
always #130 pulse100Hz = 0;
|
|
|
|
|
reg pulse1000HzB;
|
reg pulse1000HzB,pulse100HzB;
|
always @(posedge clk)
|
always @(posedge clk)
|
if (rst) begin
|
if (rst) begin
|
pulse1000HzB <= 1'b0;
|
pulse1000HzB <= 1'b0;
|
|
pulse100HzB <= 1'b0;
|
end
|
end
|
else begin
|
else begin
|
if (pulse1000Hz)
|
if (pulse1000Hz)
|
pulse1000HzB <= 1'b1;
|
pulse1000HzB <= 1'b1;
|
else begin
|
else begin
|
if (sys_adr==64'hFFFFFFFF_FFFF0000)
|
if (p1000ack)
|
pulse1000HzB <= 1'b0;
|
pulse1000HzB <= 1'b0;
|
end
|
end
|
|
if (pulse100Hz)
|
|
pulse100HzB <= 1'b1;
|
|
else begin
|
|
if (p100ack)
|
|
pulse100HzB <= 1'b0;
|
|
end
|
end
|
end
|
|
|
|
|
rtfTextController tc1
|
rtfTextController tc1
|
(
|
(
|
Line 143... |
Line 156... |
.dat_i(sys_dbo[15:0]),
|
.dat_i(sys_dbo[15:0]),
|
.dat_o(pic_dato),
|
.dat_o(pic_dato),
|
.vol_o(), // volatile register selected
|
.vol_o(), // volatile register selected
|
.i1(),
|
.i1(),
|
.i2(pulse1000HzB),
|
.i2(pulse1000HzB),
|
.i3(), .i4(), .i5(), .i6(), .i7(),
|
.i3(pulse100HzB),
|
|
.i4(), .i5(), .i6(), .i7(),
|
.i8(), .i9(), .i10(), .i11(), .i12(), .i13(), .i14(),
|
.i8(), .i9(), .i10(), .i11(), .i12(), .i13(), .i14(),
|
.i15(),
|
.i15(),
|
.irqo(cpu_irq), // normally connected to the processor irq
|
.irqo(cpu_irq), // normally connected to the processor irq
|
.nmii(nmi), // nmi input connected to nmi requester
|
.nmii(nmi), // nmi input connected to nmi requester
|
.nmio(cpu_nmi), // normally connected to the nmi of cpu
|
.nmio(cpu_nmi), // normally connected to the nmi of cpu
|