?rev1line? |
?rev2line? |
|
|
|
Known bugs of the T48 uController core
|
|
======================================
|
|
Version: $Id: KNOWN_BUGS 295 2009-04-01 19:32:48Z arniml $
|
|
|
|
|
|
Release 0.6.1 BETA
|
|
------------------
|
|
|
|
*******************************************************************************
|
|
Deassertion of PROG too early
|
|
|
|
PROG is deasserted in XTAL2 cycle which might lead to read data being already
|
|
invalid (tri-stated) when the core samples P2[3:0] at the end of XTAL3.
|
|
|
|
Fixed in:
|
|
clock_ctrl.vhd 1.12
|
|
Fix will be included in next release.
|
|
|
|
|
|
|
|
Release 0.6 BETA
|
|
----------------
|
|
|
|
*******************************************************************************
|
|
Deassertion of PROG too early
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
P2 Port value restored after expander access
|
|
|
|
After access to expander interface (ANLD Pp; MOVD A,Pp; MOVD Pp,A; ORLD Pp)
|
|
the port value of P2 is restored. This is wrong according to chapter "Port 2
|
|
Operations" of the "Expanded MCS-48 System" manual. It states that previously
|
|
latched I/O information will be removed and not restored.
|
|
|
|
Fixed in:
|
|
p2.vhd 1.8
|
|
Fix will be included in next release.
|
|
|
|
*******************************************************************************
|
|
Problem when INT and JMP
|
|
|
|
When code is executed from Memory Bank 1, the injected CALL triggered by the
|
|
interrupt does not always vector to address 3. This happens because of a bus
|
|
collision between the decoder unit and the db_bus unit. The resulting address
|
|
can be either:
|
|
* 000h, 001h, 002h, 003h for external and timer interrupt
|
|
* 004h, 005h, 006h, 007h for timer interrupt
|
|
|
|
The problem was introduced in release 0.6 BETA when the glitch on PCH was
|
|
fixed.
|
|
|
|
Fixed in:
|
|
decoder.vhd 1.21
|
|
New regression test: int_on_mb1
|
|
Fix will be included in next release.
|
|
|
|
|
|
|
|
Release 0.5 BETA
|
|
----------------
|
|
|
|
*******************************************************************************
|
|
Deassertion of PROG too early
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
P2 Port value restored after expander access
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
Target address of JMP and CALL to Program Memory Bank 1 corrupted by interrupt
|
|
|
|
An interrupt occuring during the execution of a JMP instruction, forces bit 11
|
|
of the target address to 0. This corrupts target addresses that are located in
|
|
Program Memory Bank 1.
|
|
|
|
Fixed in:
|
|
int.vhd 1.5
|
|
New regression test: white_box/int_on_int
|
|
Fix will be included in next release.
|
|
|
|
*******************************************************************************
|
|
MSB of Program Counter changed upon PC increment
|
|
|
|
The current implementation of the Program Counter allows that the MSB (bit 11)
|
|
is modifed when the PC increments at address 07FFh linear code execution. This
|
|
is contrary to the description found in "The Expanded MCS-48 System" which
|
|
states that bit 11 is only altered by JMP and CALL/RET but not by normal
|
|
increment.
|
|
|
|
Fixed in:
|
|
pmem_crtl.vhd 1.4
|
|
New regression test: white_box/pc_wrap_bit11
|
|
Fix will be included in next release.
|
|
|
|
*******************************************************************************
|
|
Wrong clock applied to T0
|
|
|
|
After executing the 'ENT0 CLK' instruction, the internal clock (XTAL divided
|
|
by 3) should be applied to T0.
|
|
The t48_core applies clk_i to T0. This is equal to XTAL in the current
|
|
implementation of t8048 and others. Therefore, the clock at T0 is three times
|
|
faster than specified.
|
|
|
|
Fixed in:
|
|
clock_ctrl.vhd 1.7
|
|
t48_core.vhd 1.8
|
|
Fix will be included in next release.
|
|
|
|
|
|
|
|
Release 0.4 BETA
|
|
----------------
|
|
|
|
*******************************************************************************
|
|
P2 Port value restored after expander access
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
Target address of JMP and CALL to Program Memory Bank 1 corrupted by interrupt
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
MSB of Program Counter changed upon PC increment
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
Wrong clock applied to T0
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
RD' and WR' not asserted for INS A, BUS and OUTL BUS, A
|
|
|
|
The control signals RD' and WR' are not asserted when the instructions INS A,
|
|
BUS and OUTL BUS, A are executed. The BUS is read or written but the control
|
|
signals are missing.
|
|
|
|
Fixed in:
|
|
decoder.vhd 1.16
|
|
Fix will be included in next release.
|
|
|
|
*******************************************************************************
|
|
P1 constantly in push-pull mode in t8048
|
|
|
|
Port P1 is constantly driven by an active push-pull driver instead of an
|
|
open-collector driver type. This inhibits using any bit of P1 in input
|
|
direction.
|
|
|
|
Fixed in:
|
|
t8048.vhd 1.4
|
|
Fix will be included in next release.
|
|
|
|
|
|
|
|
Release 0.3 BETA
|
|
----------------
|
|
|
|
*******************************************************************************
|
|
P2 Port value restored after expander access
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
Target address of JMP and CALL to Program Memory Bank 1 corrupted by interrupt
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
MSB of Program Counter changed upon PC increment
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
Wrong clock applied to T0
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
RD' and WR' not asserted for INS A, BUS and OUTL BUS, A
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
P1 constantly in push-pull mode in t8048
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
PSENn Timing
|
|
|
|
PSENn is erroneously activated during read or write from external memory when
|
|
the read and write strobe signals RDn and WRn are active. This happens when
|
|
code is executed from external Program Memory.
|
|
|
|
The problem lies in the decoder module where the PSENn signal is generated
|
|
based on the current machine cycle.
|
|
|
|
Fixed in decoder.vhd 1.15
|
|
Added waveform check for PSENn in if_timing.vhd 1.3
|
|
New regression test: white_box/psen_rd_wr_timing
|
|
Fix will be included in next release.
|
|
|
|
|
|
|
|
Release 0.2 BETA
|
|
----------------
|
|
|
|
*******************************************************************************
|
|
P2 Port value restored after expander access
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
MSB of Program Counter changed upon PC increment
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
Wrong clock applied to T0
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
RD' and WR' not asserted for INS A, BUS and OUTL BUS, A
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
P1 constantly in push-pull mode in t8048
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
PSENn Timing
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
Program Memory bank can be switched during interrupt
|
|
|
|
During an interrupt service routine (i.e. after vectoring to location 3 or 7
|
|
of the Program Memory and befor executing the RETR instruction) the Program
|
|
Memory bank can be switched by executing a JMP or CALL instruction. These
|
|
instructions honour the current state of the Program Memory Bank Flag and thus
|
|
switch the Program Memory bank upon execution.
|
|
|
|
Fixed in:
|
|
int.vhd 1.2
|
|
decoder.vhd 1.14
|
|
Updated regression test:
|
|
black_box/mb/int
|
|
Fix will be included in next release.
|
|
|
|
|
|
|
|
Release 0.1 BETA
|
|
----------------
|
|
|
|
*******************************************************************************
|
|
P2 Port value restored after expander access
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
MSB of Program Counter changed upon PC increment
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
Wrong clock applied to T0
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
RD' and WR' not asserted for INS A, BUS and OUTL BUS, A
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
PSENn Timing
|
|
|
|
See above.
|
|
|
|
*******************************************************************************
|
|
Program Memory bank can be switched during interrupt
|
|
|
|
See above.
|
|
|
|
******************************************************************************
|
|
External Program Memory ignored when EA = 0
|
|
|
|
The external Program Memory is always ignored when EA = 0 with the t8048 system
|
|
toplevel. Desired behaviour is to access external Program Memory when code
|
|
has to be fetched from an address location that is outside the internal
|
|
Program Memory.
|
|
|
|
Fixed in t8048.vhd 1.3
|
|
Fix will be included in next release.
|
|
|
|
******************************************************************************
|
|
ANL and ORL to P2 read port status instead of port output register
|
|
|
|
The ANL and ORL instructions for P2 read the port status and apply the logical
|
|
operation on this value. Instead, they should read the port output register
|
|
and operate on this value.
|
|
|
|
Fixed in p2.vhd 1.5
|
|
Regression test:
|
|
white_box/p2_port_reg_conflict
|
|
Fix will be included in next release.
|
|
|
|
******************************************************************************
|
|
Counter is not incremented
|
|
|
|
When in counter mode, the timer/counter module does not increment upon a
|
|
falling edge of T1. Reason is a typo in the code for the edge detection signal
|
|
t1_inc_s - it will never become true.
|
|
|
|
Fixed in timer.vhd 1.3
|
|
Regression tests:
|
|
black_box/cnt/cnt
|
|
black_box/cnt/int
|
|
Fix will be included in next release.
|