Datasheet
DS89C450 Evaluation Kit
4 of 13
Serial Ports
Both serial ports of the DS89C450 (Serial Port 0 and Serial Port 1) are translated to RS-232 levels and brought out
to DB9 connectors at J2 and J3. Serial Port 0 (J2) must always be used when communicating with the bootloader.
Memory
The external memory of the DS89C450 on this EV kit is designed to operate with the address and data bus
multiplexed on P0 and P2. A 128kB x 8 SRAM is installed, which is accessed as both program and data memory
by this multiplexed bus. Note that as the total memory space of the DS89C450 is only 64kB of program memory
and 64K of data memory, port pin memory banking must be used to access the entire 128kB-memory space.
CPLD
The CPLD device on the EV kit board is preprogrammed to perform several functions.
Address latching of the low 8 bits of the external memory address from port P0.
Mapping together program and data memory.
Performing port pin memory banking (optional).
The RTL code preprogrammed into the CPLD is as follows.
module Eval(AD, nRD, ALE, nPSEN, CFG0, CFG1, SW_IN, P1, A, A16, A17, nOE, SW_OUT);
input [7:0] AD; // Multiplexed low-order address and data from micro
input nRD; // Data memory read enable from micro
input ALE; // Address latch enable from micro
input nPSEN; // Program memory read enable from micro
input CFG0; // Configuration input zero (from DIP switch)
input CFG1; // Configuration input one (from DIP switch)
input SW_IN; // Interrupt switch input (from pushbutton)
inout [7:0] P1; // Port 1 from micro
output [7:0] A; // Demultiplexed low-order address to RAM
output A16; // Address line to RAM
output A17; // Address line to RAM
output nOE; // Output enable to RAM
output SW_OUT; // Interrupt switch output (to micro)
reg [7:0] A;
always @(negedge ALE) begin
A <= AD;
end
assign A16 = (CFG0 == 0) ? P1[0] : 1'b0;
assign A17 = (CFG0 == 0) ? P1[1] : 1'b0;
assign P1[0] = (CFG1 == 0) ? SW_IN : 1'bz;
assign P1[1] = (CFG1 == 0) ? SW_IN : 1'bz;
assign P1[2] = (CFG1 == 0) ? SW_IN : 1'bz;
assign P1[3] = (CFG1 == 0) ? SW_IN : 1'bz;
assign P1[4] = (CFG1 == 0) ? ~SW_IN : 1'bz;
assign P1[5] = (CFG1 == 0) ? ~SW_IN : 1'bz;
assign P1[6] = (CFG1 == 0) ? ~SW_IN : 1'bz;
assign P1[7] = (CFG1 == 0) ? ~SW_IN : 1'bz;
assign nOE = nRD & nPSEN;
assign SW_OUT = SW_IN;
endmodule