URL
https://opencores.org/ocsvn/t48/t48/trunk
Subversion Repositories t48
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 296 to Rev 297
- ↔ Reverse comparison
Rev 296 → Rev 297
/t48/rel_1_2/COPYING
File deleted
/t48/rel_1_2/sim/rtl_sim/Makefile.ghdl
File deleted
/t48/rel_1_2/sim/rtl_sim/Makefile.hier
File deleted
/t48/rel_1_2/sw/dump_compare.signals
File deleted
/t48/rel_1_2/sw/verif/black_box/da/test.asm
File deleted
t48/rel_1_2/sw/verif/black_box/da/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/jmp/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/jmp/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/jmp/test.asm (nonexistent)
@@ -1,11 +0,0 @@
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jmp pass
- FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/jmp/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/add/rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/add/rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/add/rr/test.asm (nonexistent)
@@ -1,106 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ADD A, Rr without carry, RB0 and RB1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- ;; fill RB0
- call fill
-
- ;; check RB0
- sel rb0
- call check
-
- ;; fill RB1
- sel rb1
- call fill
- sel rb0
-
- ;; clear RB0
- mov r0, #007H
- clr a
-clr_loop:
- mov @r0, a
- djnz r0, clr_loop
-
- ;; check RB1
- sel rb1
- call check
-
- ;; check RB0 for all 0
- mov r0, #000H
- mov r1, #008H
-chk0_loop:
- mov a, @r0
- jnz fail
- inc r0
- djnz r1, chk0_loop
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0300H
-fill: mov a, #0FEH
- mov r0, a
- mov a, #0FDH
- mov r1, a
- mov a, #0FBH
- mov r2, a
- mov a, #0F7H
- mov r3, a
- mov a, #0EFH
- mov r4, a
- mov a, #0DFH
- mov r5, a
- mov a, #0BFH
- mov r6, a
- mov a, #07FH
- mov r7, a
- ret
-
-
-check: mov a, #002H
- add a, r0
- jnz fail_p3
-
- mov a, #003H
- add a, r1
- jnz fail_p3
-
- mov a, #005H
- add a, r2
- jnz fail_p3
-
- mov a, #009H
- add a, r3
- jnz fail_p3
-
- mov a, #011H
- add a, r4
- jnz fail_p3
-
- mov a, #021H
- add a, r5
- jnz fail_p3
-
- mov a, #041H
- add a, r6
- jnz fail_p3
-
- mov a, #081H
- add a, r7
- jnz fail_p3
-
- ret
-
-
-fail_p3:
- FAIL
t48/rel_1_2/sw/verif/black_box/add/rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/add/a_data/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/add/a_data/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/add/a_data/test.asm (nonexistent)
@@ -1,82 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ADD A, data without carry.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #000H
-
- add a, #055H
- jz fail
- ;; exact check for 055H
- jb0 ok_1
- jmp fail
-
-ok_1: jb1 fail
-
- jb2 ok_2
- jmp fail
-
-ok_2: jb3 fail
-
- jb4 ok_4
- jmp fail
-
-ok_4: jb5 fail
-
- jb6 ok_6
- jmp fail
-
-ok_6: jb7 fail
-
- add a, #0AAH
- jz fail
- add a, #001H
- jnz fail
-
- add a, #011111110B
- jb0 fail
-
- add a, #011111111B
- jb1 fail
- jb0 ko_1
- jmp fail
-
-ko_1: add a, #011111110B
- jb2 fail
- jb1 ko_2
- jmp fail
-
-ko_2: add a, #011111100B
- jb3 fail
- jb2 ko_3
- jmp fail
-
-ko_3: add a, #011111000B
- jb4 fail
- jb3 ko_4
- jmp fail
-
-ko_4: add a, #011110000B
- jb5 fail
- jb4 ko_5
- jmp fail
-
-ko_5: add a, #011100000B
- jb6 fail
- jb5 ko_6
- jmp fail
-
-ko_6: add a, #011000000B
- jb7 fail
- jb6 pass
-
-fail: FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/add/a_data/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/add/ind_rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/add/ind_rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/add/ind_rr/test.asm (nonexistent)
@@ -1,129 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ADD A, @ Rr without carry.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov r0, #010H
- mov r1, #020H
- mov a, #0FEH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FDH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FBH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0F7H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0EFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0DFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0BFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #07FH
- mov @r0, a
- mov @r1, a
-
- ;;
- mov r0, #010H
- mov r1, #020H
- mov a, #002H
- add a, @r0
- jnz fail
- mov a, #002H
- add a, @r1
- jnz fail
-
- inc r0
- inc r1
- mov a, #003H
- add a, @r0
- jnz fail
- mov a, #003H
- add a, @r1
- jnz fail
-
- inc r0
- inc r1
- mov a, #005H
- add a, @r0
- jnz fail
- mov a, #005H
- add a, @r1
- jnz fail
-
- inc r0
- inc r1
- mov a, #009H
- add a, @r0
- jnz fail
- mov a, #009H
- add a, @r1
- jnz fail
-
- inc r0
- inc r1
- mov a, #011H
- add a, @r0
- jnz fail
- mov a, #011H
- add a, @r1
- jnz fail
-
- inc r0
- inc r1
- mov a, #021H
- add a, @r0
- jnz fail
- mov a, #021H
- add a, @r1
- jnz fail
-
- inc r0
- inc r1
- mov a, #041H
- add a, @r0
- jnz fail
- mov a, #041H
- add a, @r1
- jnz fail
-
- inc r0
- inc r1
- mov a, #081H
- add a, @r0
- jnz fail
- mov a, #081H
- add a, @r1
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/add/ind_rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/tim/int/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/tim/int/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/tim/int/test.asm (nonexistent)
@@ -1,41 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test Timer Interrupt.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
- jmp start
- nop
- jmp fail
- jmp fail
- jmp timer_int
- jmp fail
-
- ;; Start of test
-start: mov a, #0F8H
- mov t, a
- clr a
- mov r0, a
- mov r1, a
-
- en tcnti
- jtf fail
-
- strt t
-
-loop: mov a, r0
- jnz pass
- djnz r1, loop
-
-fail: FAIL
-
-pass: PASS
-
-
-timer_int:
- mov r0, #0FFH
- retr
t48/rel_1_2/sw/verif/black_box/tim/int/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/tim/int/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/tim/int/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/tim/int/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-Modelling accuracy of interrupts is not sufficient for 1:1 dump compare.
Index: t48/rel_1_2/sw/verif/black_box/tim/t/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/tim/t/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/tim/t/test.asm (nonexistent)
@@ -1,110 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test Timer.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0F8H
- mov t, a
-
- strt t
- jtf fail
-
- mov r0, #000H
-poll1: jtf goon1
- djnz r0, poll1
- jmp fail
-
-goon1: mov a, t
- jnz fail
- mov r0, #000H
-poll2: mov a, t
- add a, #0FBH
- jz goon2
- djnz r0, poll2
-
-goon2: stop tcnt
- clr a
- mov t, a
- strt t
-
- mov a, t
- jnz fail
-
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
-
- mov a, t
- dec a
- jnz fail
-
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
-
- mov a, t
- dec a
- dec a
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/tim/t/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/jc/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/jc/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/jc/test.asm (nonexistent)
@@ -1,20 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test JC instruction.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jc fail
- mov a, #0FFH
- add a, #001H
- jc pass
-
-fail: FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/jc/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/jbb/jbb_all_1/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/jbb/jbb_all_1/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/jbb/jbb_all_1/test.asm (nonexistent)
@@ -1,34 +0,0 @@
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0FFH
- jb0 ok_0
- jmp fail
-
-ok_0: jb1 ok_1
- jmp fail
-
-ok_1: jb2 ok_2
- jmp fail
-
-ok_2: jb3 ok_3
- jmp fail
-
-ok_3: jb4 ok_4
- jmp fail
-
-ok_4: jb5 ok_5
- jmp fail
-
-ok_5: jb6 ok_6
- jmp fail
-
-ok_6: jb7 pass
-
-fail: FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/jbb/jbb_all_1/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/jbb/jbb_55/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/jbb/jbb_55/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/jbb/jbb_55/test.asm (nonexistent)
@@ -1,36 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test the JBb instruction on 055H.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #055H
- jb0 ok_0
- jmp fail
-
-ok_0: jb1 fail
-
- jb2 ok_2
- jmp fail
-
-ok_2: jb3 fail
-
- jb4 ok_4
- jmp fail
-
-ok_4: jb5 fail
-
- jb6 ok_6
- jmp fail
-
-ok_6: jb7 fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/jbb/jbb_55/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/jbb/jbb_aa/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/jbb/jbb_aa/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/jbb/jbb_aa/test.asm (nonexistent)
@@ -1,35 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test the JBb instruction on 0AAH.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0AAH
- jb0 fail
-
- jb1 ok_1
- jmp fail
-
-ok_1: jb2 fail
-
- jb3 ok_3
- jmp fail
-
-ok_3: jb4 fail
-
- jb5 ok_5
- jmp fail
-
-ok_5: jb6 fail
-
- jb7 pass
-
-fail: FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/jbb/jbb_aa/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/jbb/jbb_all_0/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/jbb/jbb_all_0/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/jbb/jbb_all_0/test.asm (nonexistent)
@@ -1,20 +0,0 @@
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #000H
- jb0 fail
- jb1 fail
- jb2 fail
- jb3 fail
- jb4 fail
- jb5 fail
- jb6 fail
- jb7 fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/jbb/jbb_all_0/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/orld/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/orld/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/orld/test.asm (nonexistent)
@@ -1,109 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ORLD.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; port 4
- mov a, #000h
- movd p4, a
- mov a, #001h
- orld p4, a
- cpl a
- movd a, p6
- xrl a, #001h
- jnz fail
- movd a, p4
- xrl a, #001h
- jnz fail
-
- mov a, #00eh
- orld p4, a
- movd a, p6
- xrl a, #00fh
- jnz fail
- movd a, p4
- xrl a, #00fh
- jnz fail
-
- ;; port 5
- mov a, #000h
- movd p5, a
- mov a, #006h
- orld p5, a
- cpl a
- movd a, p7
- xrl a, #006h
- jnz fail
- movd a, p5
- xrl a, #006h
- jnz fail
-
- mov a, #003h
- orld p5, a
- movd a, p7
- xrl a, #007h
- jnz fail
- movd a, p5
- xrl a, #007h
- jnz fail
-
- ;; port 6
- mov a, #000h
- movd p6, a
- mov a, #009h
- orld p6, a
- cpl a
- movd a, p4
- xrl a, #009h
- jnz fail
- movd a, p6
- xrl a, #009h
- jnz fail
-
- mov a, #006h
- orld p6, a
- movd a, p4
- xrl a, #00fh
- jnz fail
- movd a, p6
- xrl a, #00fh
- jnz fail
- jmp pass
-
- ;; port 7
- mov a, #000h
- movd p7, a
- mov a, #004h
- orld p7, a
- cpl a
- movd a, p5
- xrl a, #004h
- jnz fail
- movd a, p7
- xrl a, #004h
- jnz fail
-
- mov a, #00ah
- orld p7, a
- movd a, p5
- xrl a, #00eh
- jnz fail
- movd a, p7
- xrl a, #00eh
- jnz fail
-
-
- jmp pass
-
- jmp fail
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/orld/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/mov/mov_rr_a/data_num/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/mov/mov_rr_a/data_num/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/mov/mov_rr_a/data_num/test.asm (nonexistent)
@@ -1,59 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test MOV Rr, A for RB0 with 2*r.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0FEH
- mov r0, a
- mov a, #0FDH
- mov r1, a
- mov a, #0FBH
- mov r2, a
- mov a, #0F7H
- mov r3, a
- mov a, #0EFH
- mov r4, a
- mov a, #0DFH
- mov r5, a
- mov a, #0BFH
- mov r6, a
- mov a, #07FH
- mov r7, a
-
- mov a, #000H
-
- mov a, r0
- jz fail
- jb0 fail
-
- mov a, r1
- jb1 fail
-
- mov a, r2
- jb2 fail
-
- mov a, r3
- jb3 fail
-
- mov a, r4
- jb4 fail
-
- mov a, r5
- jb5 fail
-
- mov a, r6
- jb6 fail
-
- mov a, r7
- jb7 fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/mov/mov_rr_a/data_num/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/mov/mov_rr_a/data_00/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/mov/mov_rr_a/data_00/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/mov/mov_rr_a/data_00/test.asm (nonexistent)
@@ -1,78 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test MOV Rr, A for RB0 with 0x00.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #00H
- mov r0, a
- mov a, #0FFH
- mov r1, a
- mov r2, a
- mov r3, a
- mov r4, a
- mov r5, a
- mov r6, a
- mov r7, a
-
- mov a, r0
- jnz fail
-
- mov a, #000H
- mov r1, a
- mov a, #0FFH
- mov r0, a
- mov a, r1
- jnz fail
-
- mov a, #000H
- mov r2, a
- mov a, #0FFH
- mov r1, a
- mov a, r2
- jnz fail
-
- mov a, #000H
- mov r3, a
- mov a, #0FFH
- mov r2, a
- mov a, r3
- jnz fail
-
- mov a, #000H
- mov r4, a
- mov a, #0FFH
- mov r3, a
- mov a, r4
- jnz fail
-
- mov a, #000H
- mov r5, a
- mov a, #0FFH
- mov r4, a
- mov a, r5
- jnz fail
-
- mov a, #000H
- mov r6, a
- mov a, #0FFH
- mov r5, a
- mov a, r6
- jnz fail
-
- mov a, #000H
- mov r7, a
- mov a, #0FFH
- mov r6, a
- mov a, r7
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/mov/mov_rr_a/data_00/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/mov/ind_rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/mov/ind_rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/mov/ind_rr/test.asm (nonexistent)
@@ -1,185 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test MOV @ Rr for RB0.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov r0, #0FFH
-fill_loop:
- mov a, r0
- mov @r0, a
- djnz r0, fill_loop
-
- ;; check memory
- mov a, r0
- jnz fail
- mov r0, #0FFH
-check_loop1:
- mov a, @r1
- add a, r0
- jnz fail
- dec r0
- inc r1
- mov a, r1
- jnz check_loop1
- jmp test_2
-
-fail: FAIL
-
- ;;
- ALIGN 256
- ;;
-
-test_2: ;; test MOV @ Rr, data
- mov r0, #0C0H
- mov r1, #0E0H
- mov @r0, #000H
- mov @r1, #020H
-
- inc r0
- inc r1
- mov @r0, #001H
- mov @r1, #021H
- inc r0
- inc r1
- mov @r0, #002H
- mov @r1, #022H
- inc r0
- inc r1
- mov @r0, #003H
- mov @r1, #023H
- inc r0
- inc r1
- mov @r0, #004H
- mov @r1, #024H
- inc r0
- inc r1
- mov @r0, #005H
- mov @r1, #025H
- inc r0
- inc r1
- mov @r0, #006H
- mov @r1, #026H
- inc r0
- inc r1
- mov @r0, #007H
- mov @r1, #027H
- inc r0
- inc r1
- mov @r0, #008H
- mov @r1, #028H
- inc r0
- inc r1
- mov @r0, #009H
- mov @r1, #029H
- inc r0
- inc r1
- mov @r0, #00AH
- mov @r1, #02AH
- inc r0
- inc r1
- mov @r0, #00BH
- mov @r1, #02BH
- inc r0
- inc r1
- mov @r0, #00CH
- mov @r1, #02CH
- inc r0
- inc r1
- mov @r0, #00DH
- mov @r1, #02DH
- inc r0
- inc r1
- mov @r0, #00EH
- mov @r1, #02EH
- inc r0
- inc r1
- mov @r0, #00FH
- mov @r1, #02FH
- ;;
- inc r0
- inc r1
- mov @r0, #010H
- mov @r1, #030H
- inc r0
- inc r1
- mov @r0, #011H
- mov @r1, #031H
- inc r0
- inc r1
- mov @r0, #012H
- mov @r1, #032H
- inc r0
- inc r1
- mov @r0, #013H
- mov @r1, #033H
- inc r0
- inc r1
- mov @r0, #014H
- mov @r1, #034H
- inc r0
- inc r1
- mov @r0, #015H
- mov @r1, #035H
- inc r0
- inc r1
- mov @r0, #016H
- mov @r1, #036H
- inc r0
- inc r1
- mov @r0, #017H
- mov @r1, #037H
- inc r0
- inc r1
- mov @r0, #018H
- mov @r1, #038H
- inc r0
- inc r1
- mov @r0, #019H
- mov @r1, #039H
- inc r0
- inc r1
- mov @r0, #01AH
- mov @r1, #03AH
- inc r0
- inc r1
- mov @r0, #01BH
- mov @r1, #03BH
- inc r0
- inc r1
- mov @r0, #01CH
- mov @r1, #03CH
- inc r0
- inc r1
- mov @r0, #01DH
- mov @r1, #03DH
- inc r0
- inc r1
- mov @r0, #01EH
- mov @r1, #03EH
- inc r0
- inc r1
- mov @r0, #01FH
- mov @r1, #03FH
-
- mov r0, #0FFH
- mov r1, #11000001B
-check_loop2:
- mov a, @r0
- add a, r1
- jnz fail2
- inc r1
- dec r0
- mov a, #01000000B
- add a, r0
- jnz check_loop2
-
-pass2: PASS
-
-fail2: FAIL
t48/rel_1_2/sw/verif/black_box/mov/ind_rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/mov/a_rr/data_num/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/mov/a_rr/data_num/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/mov/a_rr/data_num/test.asm (nonexistent)
@@ -1,50 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test MOV A, Rr for RB0 with 2*r.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #000H
- mov r0, #0FEH
- mov r1, #0FDH
- mov r2, #0FBH
- mov r3, #0F7H
- mov r4, #0EFH
- mov r5, #0DFH
- mov r6, #0BFH
- mov r7, #07FH
-
- mov a, r0
- jz fail
- jb0 fail
-
- mov a, r1
- jb1 fail
-
- mov a, r2
- jb2 fail
-
- mov a, r3
- jb3 fail
-
- mov a, r4
- jb4 fail
-
- mov a, r5
- jb5 fail
-
- mov a, r6
- jb6 fail
-
- mov a, r7
- jb7 fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/mov/a_rr/data_num/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/mov/a_rr/data_00/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/mov/a_rr/data_00/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/mov/a_rr/data_00/test.asm (nonexistent)
@@ -1,63 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test MOV A, Rr for RB0 with 0x00.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #055H
- mov r0, #000H
- mov r1, #0FFH
- mov r2, #0FFH
- mov r3, #0FFH
- mov r4, #0FFH
- mov r5, #0FFH
- mov r6, #0FFH
- mov r7, #0FFH
-
- mov a, r0
- jnz fail
-
- mov r1, #000H
- mov r0, #0FFH
- mov a, r1
- jnz fail
-
- mov r2, #000H
- mov r1, #0FFH
- mov a, r2
- jnz fail
-
- mov r3, #000H
- mov r2, #0FFH
- mov a, r3
- jnz fail
-
- mov r4, #000H
- mov r3, #0FFH
- mov a, r4
- jnz fail
-
- mov r5, #000H
- mov r4, #0FFH
- mov a, r5
- jnz fail
-
- mov r6, #000H
- mov r5, #0FFH
- mov a, r6
- jnz fail
-
- mov r7, #000H
- mov r6, #0FFH
- mov a, r7
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/mov/a_rr/data_00/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/rb/misc/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/rb/misc/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/rb/misc/test.asm (nonexistent)
@@ -1,142 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test several operations in conjunction with RB-switching.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; fill data memory with 0
- clr a
- mov r0, a
-fill_loop:
- mov @r0, a
- djnz r0, fill_loop
-
- ;; set up both register banks with indirect writes
- mov r0, #01FH
- mov r1, #008H
-fill_rb1_loop:
- mov a, r0
- mov @r0, a
- dec r0
- djnz r1, fill_rb1_loop
-
- mov r0, #007H
-fill_rb0_loop:
- mov a, r0
- mov @r0, a
- djnz r0, fill_rb0_loop
- mov a, r0
- mov @r0, a
-
- ;; check RB0
- call check_rb0
-
- ;; check RB1
- sel rb1
- call check_rb1
-
- ;; check RB0 again
- sel rb0
- call check_rb0
-
- ;; check memory between RB0 and RB1 for 0
- mov r0, #00EH ; check 14 bytes
- mov r1, #00AH ; starting from address A
-chk_loop1:
- mov a, @r1
- jnz fail
- inc r1
- djnz r0, chk_loop1
-
- ;; check memory above RB1 for 0
- mov r0, #0100H - 0020H ; check 256-32 bytes
- mov r1, #020H ; starting from address 20H
-chk_loop2:
- mov a, @r1
- jnz fail
- inc r1
- djnz r0, chk_loop2
-
- ;; now use RB1 to indirect address register 0-7
- mov r1, #001H ; restore r1
- mov r0, #000H ; restore r0, set trap
- sel rb1
- mov r0, #007H
-ind_chk_loop:
- mov a, @r0
- cpl a
- add a, r0
- cpl a
- jnz fail
- djnz r0, ind_chk_loop
-
-
-pass: PASS
-
-fail: FAIL
-
-
-
- ORG 0300H
-check_rb0:
- mov a, r0
- jnz fail_p3
- mov a,r1
- add a, #0FFH
- jnz fail_p3
- mov a,r2
- add a, #0FEH
- jnz fail_p3
- mov a,r3
- add a, #0FDH
- jnz fail_p3
- mov a,r4
- add a, #0FCH
- jnz fail_p3
- mov a,r5
- add a, #0FBH
- jnz fail_p3
- mov a,r6
- add a, #0FAH
- jnz fail_p3
- mov a,r7
- add a, #0F9H
- jnz fail_p3
- ret
-
-check_rb1:
- mov a, r0
- add a, #0E8H
- jnz fail_p3
- mov a,r1
- add a, #0E7H
- jnz fail_p3
- mov a,r2
- add a, #0E6H
- jnz fail_p3
- mov a,r3
- add a, #0E5H
- jnz fail_p3
- mov a,r4
- add a, #0E4H
- jnz fail_p3
- mov a,r5
- add a, #0E3H
- jnz fail_p3
- mov a,r6
- add a, #0E2H
- jnz fail_p3
- mov a,r7
- add a, #0E1H
- jnz fail_p3
- ret
-
-fail_p3:
- FAIL
t48/rel_1_2/sw/verif/black_box/rb/misc/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/rb/int/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/rb/int/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/rb/int/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-Modelling accuracy of interrupts is not sufficient for 1:1 dump compare.
Index: t48/rel_1_2/sw/verif/black_box/rb/int/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/rb/int/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/rb/int/test.asm (nonexistent)
@@ -1,228 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test interrupts in conjunction with RB-switching.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- jmp start
- nop
- jmp interrupt
- jmp fail
- jmp fail
- jmp fail
-
-
- ;; Start of test
-start:
- ;; fill RB0
- clr a
- call fill
-
- ;; fill RB1
- sel rb1
- mov a, #010H
- call fill
- sel rb0
-
- ;; set up interrupt
- clr f1
- ;; sync on next interrupt
- call sync_on_int
-
- mov r0, #000H
- en i
-loop1: jf1 goon1
- djnz r0, loop1
- jmp fail
-
-goon1:
- dis i
- clr f1
-
- ;; check BS implicitely
- ;; r0 must not be zero
- mov a, r0
- jz fail
-
- ;; check RB1
- sel rb1
- call check_0
-
- ;; check RB0
- sel rb0
- call check_rb0
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0200H
-interrupt:
- sel rb1
- mov r0, a
-
- call check_rb1
-
- clr a
- mov r1, a
- mov r2, a
- mov r3, a
- mov r4, a
- mov r5, a
- mov r6, a
- mov r7, a
- xch a, r0
-
- cpl f1
-
- retr
-
-
- ORG 0300H
-
-fill: add a, #0B0H
- mov r0, a
- inc a
- mov r1, a
- inc a
- mov r2, a
- inc a
- mov r3, a
- inc a
- mov r4, a
- inc a
- mov r5, a
- inc a
- mov r6, a
- inc a
- mov r7, a
- ret
-
-check_0:
- mov a, r0
- jnz fail_p3
- mov a, r1
- jnz fail_p3
- mov a, r2
- jnz fail_p3
- mov a, r3
- jnz fail_p3
- mov a, r4
- jnz fail_p3
- mov a, r5
- jnz fail_p3
- mov a, r6
- jnz fail_p3
- mov a, r7
- jnz fail_p3
- ret
-
- ;; synchronize on interrupt
- ;; use r7 for timeout detection
-sync_on_int:
- mov a, r7 ; save r7
- mov r7, #000H
-wait_int1:
- jni sync_on_int2
- djnz r7, wait_int1
- jmp fail_p3
-
-sync_on_int2:
- mov r7, #000H
-wait_int2:
- jni still_int
- mov r7, a ; restore r7
- call clr_int
- retr
-still_int:
- djnz r7, wait_int2
- jmp fail_p3
-
-clr_int:
- ;; clear latched interrupt request with RETR!
- retr
-
-check_rb1:
- mov a, #(~0C1H & 0FFH)
- add a, r1
- cpl a
- jnz fail_p3
-
- mov a, #(~0C2H & 0FFH)
- add a, r2
- cpl a
- jnz fail_p3
-
- mov a, #(~0C3H & 0FFH)
- add a, r3
- cpl a
- jnz fail_p3
-
- mov a, #(~0C4H & 0FFH)
- add a, r4
- cpl a
- jnz fail_p3
-
- mov a, #(~0C5H & 0FFH)
- add a, r5
- cpl a
- jnz fail_p3
-
- mov a, #(~0C6H & 0FFH)
- add a, r6
- cpl a
- jnz fail_p3
-
- mov a, #(~0C7H & 0FFH)
- add a, r7
- cpl a
- jnz fail_p3
-
- ret
-
-check_rb0:
- mov a, #(~0B1H & 0FFH)
- add a, r1
- cpl a
- jnz fail_p3
-
- mov a, #(~0B2H & 0FFH)
- add a, r2
- cpl a
- jnz fail_p3
-
- mov a, #(~0B3H & 0FFH)
- add a, r3
- cpl a
- jnz fail_p3
-
- mov a, #(~0B4H & 0FFH)
- add a, r4
- cpl a
- jnz fail_p3
-
- mov a, #(~0B5H & 0FFH)
- add a, r5
- cpl a
- jnz fail_p3
-
- mov a, #(~0B6H & 0FFH)
- add a, r6
- cpl a
- jnz fail_p3
-
- mov a, #(~0B7H & 0FFH)
- add a, r7
- cpl a
- jnz fail_p3
-
- ret
-
-fail_p3:
- FAIL
t48/rel_1_2/sw/verif/black_box/rb/int/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/rc/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/rc/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/rc/test.asm (nonexistent)
@@ -1,107 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test RR(C) A.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #080H
-
- rr a
- jb7 fail
- jb6 ok1_1
- jmp fail
-
-ok1_1: rr a
- jb6 fail
- jb5 ok1_2
- jmp fail
-
-ok1_2: rr a
- jb5 fail
- jb4 ok1_3
- jmp fail
-
-ok1_3: rr a
- jb4 fail
- jb3 ok1_4
- jmp fail
-
-ok1_4: rr a
- jb3 fail
- jb2 ok1_5
- jmp fail
-
-ok1_5: rr a
- jb2 fail
- jb1 ok1_6
- jmp fail
-
-ok1_6: rr a
- jb1 fail
- jb0 ok1_7
- jmp fail
-
-ok1_7: rr a
- jb0 fail
- jb7 ok2
- jmp fail
-
-
-ok2: mov a, #07FH
- cpl c
-
- rrc a
- jb7 ok2_1
- jmp fail
-ok2_1: jb6 fail
-
- rrc a
- jb6 ok2_2
- jmp fail
-ok2_2: jb5 fail
-
- rrc a
- jb5 ok2_3
- jmp fail
-ok2_3: jb4 fail
-
- rrc a
- jb4 ok2_4
- jmp fail
-ok2_4: jb3 fail
-
- rrc a
- jb3 ok2_5
- jmp fail
-ok2_5: jb2 fail
-
- rrc a
- jb2 ok2_6
- jmp fail
-ok2_6: jb1 fail
-
- rrc a
- jb1 ok2_7
- jmp fail
-ok2_7: jb0 fail
- jnc fail
-
- rrc a
- jb0 ok2_8
- jmp fail
-ok2_8: jc fail
-
- rrc a
- jc ok2_9
- jmp fail
-ok2_9: jb7 fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/rc/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/movd/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/movd/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/movd/test.asm (nonexistent)
@@ -1,117 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test MOVD.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;;
- ;; read initial values
- ;;
-
- ;; port 4
- cpl a
- movd a, p4
- xrl a, #00fh
- jnz fail
-
- ;; port 5
- cpl a
- movd a, p5
- xrl a, #00fh
- jnz fail
-
- ;; port 6
- cpl a
- movd a, p6
- xrl a, #00fh
- jnz fail
-
- ;; port 7
- cpl a
- movd a, p7
- xrl a, #00fh
- jnz fail
-
-
- ;;
- ;; test read/write via direct connection
- ;;
-
- ;; port 4 => port 6
- mov a, #005h
- movd p4, a
- cpl a
- movd a, p6
- xrl a, #005h
- jnz fail
-
- mov a, #00ah
- movd p4, a
- cpl a
- movd a, p6
- xrl a, #00ah
- jnz fail
- movd a, p4
-
- ;; port 6 => port 4
- mov a, #000h
- movd p6, a
- cpl a
- movd a, p4
- xrl a, #000h
- jnz fail
-
- mov a, #00fh
- movd p6, a
- cpl a
- movd a, p4
- xrl a, #00fh
- jnz fail
- movd p6, a
-
- ;; port 5 => port 7
- mov a, #005h
- movd p5, a
- cpl a
- movd a, p7
- xrl a, #005h
- jnz fail
-
- mov a, #00ah
- movd p5, a
- cpl a
- movd a, p7
- xrl a, #00ah
- jnz fail
- movd a, p7
-
- ;; port 7 => port 5
- mov a, #000h
- movd p7, a
- cpl a
- movd a, p5
- xrl a, #000h
- jnz fail
-
- mov a, #00fh
- movd p7, a
- cpl a
- movd a, p5
- xrl a, #00fh
- jnz fail
- movd p7, a
-
-
- jmp pass
-
- jmp fail
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/movd/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/expander/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/expander/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/expander/test.asm (nonexistent)
@@ -1,88 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test Expander port functionality.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #00AH
- movd p4, a
- mov a, #005H
- movd p5, a
- mov a, #00BH
- movd p6, a
- mov a, #000H
- movd p7, a
-
- ;; check P4
- movd a, p4
- orl a, #0F5H
- inc a
- ;jnz fail
- mov a, #0F5H
- orld p4, a
- movd a, p4
- inc a
- ;jnz fail
- mov a, #0FEH
- anld p4, a
- movd a, p4
- add a, #0F2H
- ;jnz fail
-
- ;; check P5
- movd a, p5
- orl a, #0FAH
- inc a
- ;jnz fail
- mov a, #0FAH
- orld p5, a
- movd a, p5
- inc a
- ;jnz fail
- mov a, #0FDH
- anld p5, a
- movd a, p5
- add a, #0F3H
- ;jnz fail
-
- ;; check P6
- movd a, p6
- orl a, #0F4H
- inc a
- ;jnz fail
- mov a, #0F4H
- orld p6, a
- movd a, p6
- inc a
- ;jnz fail
- mov a, #0F8H
- anld p6, a
- movd a, p6
- add a, #0F8H
- ;jnz fail
-
- ;; check P7
- movd a, p7
- orl a, #0FFH
- inc a
- ;jnz fail
- mov a, #0FFH
- orld p7, a
- movd a, p7
- inc a
- ;jnz fail
- mov a, #0F7H
- anld p7, a
- movd a, p7
- add a, #0F9H
- ;jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/expander/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/expander/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/expander/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/expander/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-External ports not modelled in detail for i8039 emulator.
Index: t48/rel_1_2/sw/verif/black_box/psw/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/psw/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/psw/test.asm (nonexistent)
@@ -1,61 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test several commands related to PSW.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, psw
- anl a, #0F7H
- jnz fail
-
- dec a
- mov psw, a
- mov a, psw
- inc a
- jnz fail
-
- mov psw, a
- mov a, psw
- anl a, #0F7H
- jnz fail
-
- cpl f0
- jf0 ok_1
- jmp fail
-ok_1: mov a, psw
- anl a, #~040H ; mask AC, tested separately with DA
- add a, #(~028H + 1) & 0FFH
- jnz fail
-
- clr f0
- jnc fail
- mov a, psw
- anl a, #~040H ; mask AC, tested separately with DA
- add a, #(~088H + 1) & 0FFH
- jnz fail
-
- clr c
- jc fail
- sel rb1
- mov a, psw
- anl a, #~040H ; mask AC, tested separately with DA
- add a, #(~018H + 1) & 0FFH
- jnz fail
-
- cpl c
- jc fail
- sel rb0
- mov a, psw
- anl a, #~040H ; mask AC, tested separately with DA
- add a, #(~08H + 1) & 0FFH
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/psw/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/inc/a/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/inc/a/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/inc/a/test.asm (nonexistent)
@@ -1,34 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test INC A.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #000H
- inc a
- add a, #0FFH
- jnz fail
-
- inc a
- jb0 ok_0
- jmp fail
-
-ok_0: mov a, #0FFH
- inc a
- jnz fail
-
- mov a, #010100101B
- inc a
- add a, #001011001B
- inc a
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/inc/a/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/inc/rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/inc/rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/inc/rr/test.asm (nonexistent)
@@ -1,243 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test INC Rr for RB0 and RB1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; fill RB0
- call fill
-
- ;; check RB0
- call check
-
- ;; fill RB1
- sel rb1
- call fill
- sel rb0
-
- ;; clear RB0
- call clr_rb0
-
- ;; check RB1
- sel rb1
- call check
-
- ;; check RB0 for all 0
- mov r0, #000H
- mov r1, #008H
-chk0_loop:
- mov a, @r0
- jnz fail
- inc r0
- djnz r1, chk0_loop
-
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0300H
-fill: mov a, #0FFH
- mov r0, a
- mov r1, a
- mov r2, a
- mov r3, a
- mov r4, a
- mov r5, a
- mov r6, a
- mov r7, a
- ret
-
-clr_rb0:
- mov r0, #007H
- clr a
-clr_loop:
- mov @r0, a
- djnz r0, clr_loop
- ret
-
-check: mov a, #000H
- inc r0
- jnz fail_p3
- mov a, r0
- jnz fail_p3
- ;;
- mov a, r1
- jz fail_p3
- mov a, r2
- jz fail_p3
- mov a, r3
- jz fail_p3
- mov a, r4
- jz fail_p3
- mov a, r5
- jz fail_p3
- mov a, r6
- jz fail_p3
- mov a, r7
- jz fail_p3
-
- mov a, #000H
- inc r1
- jnz fail_p3
- mov a, r1
- jnz fail_p3
- ;;
- mov a, r0
- jnz fail_p3
- ;;
- mov a, r2
- jz fail_p3
- mov a, r3
- jz fail_p3
- mov a, r4
- jz fail_p3
- mov a, r5
- jz fail_p3
- mov a, r6
- jz fail_p3
- mov a, r7
- jz fail_p3
-
- mov a, #000H
- inc r2
- jnz fail_p3
- mov a, r2
- jnz fail_p3
- ;;
- mov a, r0
- jnz fail_p3
- mov a, r1
- jnz fail_p3
- ;;
- mov a, r3
- jz fail_p3
- mov a, r4
- jz fail_p3
- mov a, r5
- jz fail_p3
- mov a, r6
- jz fail_p3
- mov a, r7
- jz fail_p3
-
- mov a, #000H
- inc r3
- jnz fail_p3
- mov a, r3
- jnz fail_p3
- ;;
- mov a, r0
- jnz fail_p3
- mov a, r1
- jnz fail_p3
- mov a, r2
- jnz fail_p3
- ;;
- mov a, r4
- jz fail_p3
- mov a, r5
- jz fail_p3
- mov a, r6
- jz fail_p3
- mov a, r7
- jz fail_p3
-
- mov a, #000H
- inc r4
- jnz fail_p3
- mov a, r4
- jnz fail_p3
- ;;
- mov a, r0
- jnz fail_p3
- mov a, r1
- jnz fail_p3
- mov a, r2
- jnz fail_p3
- mov a, r3
- jnz fail_p3
- ;;
- mov a, r5
- jz fail_p3
- mov a, r6
- jz fail_p3
- mov a, r7
- jz fail_p3
-
- mov a, #000H
- inc r5
- jnz fail_p3
- mov a, r5
- jnz fail_p3
- ;;
- mov a, r0
- jnz fail_p3
- mov a, r1
- jnz fail_p3
- mov a, r2
- jnz fail_p3
- mov a, r3
- jnz fail_p3
- mov a, r4
- jnz fail_p3
- ;;
- mov a, r6
- jz fail_p3
- mov a, r7
- jz fail_p3
-
- mov a, #000H
- inc r6
- jnz fail_p3
- mov a, r6
- jnz fail_p3
- ;;
- mov a, r0
- jnz fail_p3
- mov a, r1
- jnz fail_p3
- mov a, r2
- jnz fail_p3
- mov a, r3
- jnz fail_p3
- mov a, r4
- jnz fail_p3
- mov a, r5
- jnz fail_p3
- ;;
- mov a, r7
- jz fail_p3
-
- mov a, #000H
- inc r7
- jnz fail_p3
- mov a, r7
- jnz fail_p3
- ;;
- mov a, r0
- jnz fail_p3
- mov a, r1
- jnz fail_p3
- mov a, r2
- jnz fail_p3
- mov a, r3
- jnz fail_p3
- mov a, r4
- jnz fail_p3
- mov a, r5
- jnz fail_p3
- mov a, r6
- jnz fail_p3
- ret
-
-fail_p3:
- FAIL
t48/rel_1_2/sw/verif/black_box/inc/rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/inc/ind_rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/inc/ind_rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/inc/ind_rr/test.asm (nonexistent)
@@ -1,345 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test INC @ Rr for RB0.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0FFH
- mov r1, a
- mov r2, a
- mov r3, a
- mov r4, a
- mov r5, a
- mov r6, a
- mov r7, a
-
- mov r0, #001H
- mov a, #000H
- inc @r0
- jnz fail
- mov a, r1
- jnz fail
- ;;
- mov a, r2
- jz fail
- mov a, r3
- jz fail
- mov a, r4
- jz fail
- mov a, r5
- jz fail
- mov a, r6
- jz fail
- mov a, r7
- jz fail
-
- mov a, #000H
- inc r0
- jnz fail
- inc @r0
- jnz fail
- mov a, r2
- jnz fail
- ;;
- mov a, r1
- jnz fail
- ;;
- mov a, r3
- jz fail
- mov a, r4
- jz fail
- mov a, r5
- jz fail
- mov a, r6
- jz fail
- mov a, r7
- jz fail
-
- mov a, #000H
- inc r0
- jnz fail
- inc @r0
- jnz fail
- mov a, r3
- jnz fail
- ;;
- mov a, r1
- jnz fail
- mov a, r2
- jnz fail
- ;;
- mov a, r4
- jz fail
- mov a, r5
- jz fail
- mov a, r6
- jz fail
- mov a, r7
- jz fail
-
- mov a, #000H
- inc r0
- jnz fail
- inc @r0
- jnz fail
- mov a, r4
- jnz fail
- ;;
- mov a, r1
- jnz fail
- mov a, r2
- jnz fail
- mov a, r3
- jnz fail
- ;;
- mov a, r5
- jz fail
- mov a, r6
- jz fail
- mov a, r7
- jz fail
-
- mov a, #000H
- inc r0
- jnz fail
- inc @r0
- jnz fail
- mov a, r5
- jnz fail
- ;;
- mov a, r1
- jnz fail
- mov a, r2
- jnz fail
- mov a, r3
- jnz fail
- mov a, r4
- jnz fail
- ;;
- mov a, r6
- jz fail
- mov a, r7
- jz fail
-
- mov a, #000H
- inc r0
- jnz fail
- inc @r0
- jnz fail
- mov a, r6
- jnz fail
- ;;
- mov a, r1
- jnz fail
- mov a, r2
- jnz fail
- mov a, r3
- jnz fail
- mov a, r4
- jnz fail
- mov a, r5
- jnz fail
- ;;
- mov a, r7
- jz fail
-
- mov a, #000H
- inc r0
- jnz fail
- inc @r0
- jnz fail
- mov a, r7
- jnz fail
- ;;
- mov a, r1
- jnz fail
- mov a, r2
- jnz fail
- mov a, r3
- jnz fail
- mov a, r4
- jnz fail
- mov a, r5
- jnz fail
- mov a, r6
- jnz fail
-
- jmp test_r1
-
-fail: FAIL
-
- ;;
- ALIGN 256
- ;;
-
-test_r1:
- mov a, #0FFH
- mov r0, a
- mov r2, a
- mov r3, a
- mov r4, a
- mov r5, a
- mov r6, a
- mov r7, a
-
- mov r1, #000H
- mov a, #000H
- inc @r1
- jnz fail2
- mov a, r0
- jnz fail2
- ;;
- mov a, r2
- jz fail2
- mov a, r3
- jz fail2
- mov a, r4
- jz fail2
- mov a, r5
- jz fail2
- mov a, r6
- jz fail2
- mov a, r7
- jz fail2
-
- mov a, #000H
- inc r1
- inc r1
- jnz fail2
- inc @r1
- jnz fail2
- mov a, r2
- jnz fail2
- ;;
- mov a, r0
- jnz fail2
- ;;
- mov a, r3
- jz fail2
- mov a, r4
- jz fail2
- mov a, r5
- jz fail2
- mov a, r6
- jz fail2
- mov a, r7
- jz fail2
-
- mov a, #000H
- inc r1
- jnz fail2
- inc @r1
- jnz fail2
- mov a, r3
- jnz fail2
- ;;
- mov a, r0
- jnz fail2
- mov a, r2
- jnz fail2
- ;;
- mov a, r4
- jz fail2
- mov a, r5
- jz fail2
- mov a, r6
- jz fail2
- mov a, r7
- jz fail2
-
- mov a, #000H
- inc r1
- jnz fail2
- inc @r1
- jnz fail2
- mov a, r4
- jnz fail2
- ;;
- mov a, r0
- jnz fail2
- mov a, r2
- jnz fail2
- mov a, r3
- jnz fail2
- ;;
- mov a, r5
- jz fail2
- mov a, r6
- jz fail2
- mov a, r7
- jz fail2
-
- mov a, #000H
- inc r1
- jnz fail2
- inc @r1
- jnz fail2
- mov a, r5
- jnz fail2
- ;;
- mov a, r0
- jnz fail2
- mov a, r2
- jnz fail2
- mov a, r3
- jnz fail2
- mov a, r4
- jnz fail2
- ;;
- mov a, r6
- jz fail2
- mov a, r7
- jz fail2
-
- mov a, #000H
- inc r1
- jnz fail2
- inc @r1
- jnz fail2
- mov a, r6
- jnz fail2
- ;;
- mov a, r0
- jnz fail2
- mov a, r2
- jnz fail2
- mov a, r3
- jnz fail2
- mov a, r4
- jnz fail2
- mov a, r5
- jnz fail2
- ;;
- mov a, r7
- jz fail2
-
- mov a, #000H
- inc r1
- jnz fail2
- inc @r1
- jnz fail2
- mov a, r7
- jnz fail2
- ;;
- mov a, r0
- jnz fail2
- mov a, r2
- jnz fail2
- mov a, r3
- jnz fail2
- mov a, r4
- jnz fail2
- mov a, r5
- jnz fail2
- mov a, r6
- jnz fail2
-
-pass: PASS
-
-fail2: FAIL
t48/rel_1_2/sw/verif/black_box/inc/ind_rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/jnc/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/jnc/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/jnc/test.asm (nonexistent)
@@ -1,22 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test JNC instruction.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jnc ok_1
- jmp fail
-
-ok_1: mov a, #0FFH
- add a, #001H
- jnc fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/jnc/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/anl/rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/anl/rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/anl/rr/test.asm (nonexistent)
@@ -1,140 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ANL A, Rr for RB0 and RB1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; fill RB0
- call fill
-
- ;; check RB0
- call check
-
- ;; fill RB1
- sel rb1
- call fill
- sel rb0
-
- ;; clear RB0
- call clr_rb0
-
- ;; check RB1
- sel rb1
- call check
-
- ;; check RB0 for all 0
- mov r0, #000H
- mov r1, #008H
-chk0_loop:
- mov a, @r0
- jnz fail
- inc r0
- djnz r1, chk0_loop
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0300H
-
-fill: mov a, #0FEH
- mov r0, a
- mov a, #0FDH
- mov r1, a
- mov a, #0FBH
- mov r2, a
- mov a, #0F7H
- mov r3, a
- mov a, #0EFH
- mov r4, a
- mov a, #0DFH
- mov r5, a
- mov a, #0BFH
- mov r6, a
- mov a, #07FH
- mov r7, a
- ret
-
-clr_rb0:
- mov r0, #007H
- clr a
-clr_loop:
- mov @r0, a
- djnz r0, clr_loop
- ret
-
-check: mov a, #(1 << 0)
- anl a, r0
- jnz fail_p3
- mov a, #0FFH
- anl a, r0
- add a, #(~(0FFH - (1 << 0)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 1)
- anl a, r1
- jnz fail_p3
- mov a, #0FFH
- anl a, r1
- add a, #(~(0FFH - (1 << 1)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 2)
- anl a, r2
- jnz fail_p3
- mov a, #0FFH
- anl a, r2
- add a, #(~(0FFH - (1 << 2)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 3)
- anl a, r3
- jnz fail_p3
- mov a, #0FFH
- anl a, r3
- add a, #(~(0FFH - (1 << 3)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 4)
- anl a, r4
- jnz fail_p3
- mov a, #0FFH
- anl a, r4
- add a, #(~(0FFH - (1 << 4)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 5)
- anl a, r5
- jnz fail_p3
- mov a, #0FFH
- anl a, r5
- add a, #(~(0FFH - (1 << 5)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 6)
- anl a, r6
- jnz fail_p3
- mov a, #0FFH
- anl a, r6
- add a, #(~(0FFH - (1 << 6)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 7)
- anl a, r7
- jnz fail_p3
- mov a, #0FFH
- anl a, r7
- add a, #(~(0FFH - (1 << 7)) + 1) & 0FFH
- jnz fail_p3
- ret
-
-
-fail_p3: FAIL
t48/rel_1_2/sw/verif/black_box/anl/rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/anl/a_data/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/anl/a_data/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/anl/a_data/test.asm (nonexistent)
@@ -1,32 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ANL A, data.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0FFH
- anl a, #000H
- jnz fail
- anl a, #000H
- jnz fail
-
- mov a, #0FFH
- anl a, #055H
- add a, #0ABH
- jnz fail
-
- mov a, #0FFH
- anl a, #0B6H
- anl a, #023H
- add a, #0DEH
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/anl/a_data/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/anl/bus/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/anl/bus/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/anl/bus/test.asm (nonexistent)
@@ -1,30 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ANL BUS, data.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0FFH
- outl bus, a
-
- clr a
- ins a, bus
- inc a
- jnz fail
-
- anl bus, #0AAH
- jnz fail
-
- ins a, bus
- add a, #056H
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/anl/bus/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/anl/bus/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/anl/bus/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/anl/bus/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-External ports not modelled in detail in i8039 emulator.
Index: t48/rel_1_2/sw/verif/black_box/anl/ind_rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/anl/ind_rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/anl/ind_rr/test.asm (nonexistent)
@@ -1,90 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ANL A, @ Rr.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-testR0R1 MACRO pos
- inc r0
- inc r1
- mov a, #(1 << pos)
- anl a, @r0
- jnz fail
- mov a, #0FFH
- anl a, @r0
- add a, #(~(0FFH - (1 << pos)) + 1) & 0FFH
- jnz fail
- mov a, #(1 << pos)
- anl a, @r1
- jnz fail
- mov a, #0FFH
- anl a, @r1
- add a, #(~(0FFH - (1 << pos)) + 1) & 0FFH
- jnz fail
- ENDM
-
- ORG 0
-
- ;; Start of test
- mov r0, #010H
- mov r1, #020H
- mov a, #0FEH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FDH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FBH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0F7H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0EFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0DFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0BFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #07FH
- mov @r0, a
- mov @r1, a
-
- jmp goon
-
- ORG 256
- ;;
-goon: mov r0, #00FH
- mov r1, #01FH
- testR0R1 0
- testR0R1 1
- testR0R1 2
- testR0R1 3
- testR0R1 4
- testR0R1 5
- testR0R1 6
- testR0R1 7
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/anl/ind_rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/anl/pp/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/anl/pp/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/anl/pp/test.asm (nonexistent)
@@ -1,41 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ANL Pp, data.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0FFH
- outl p1, a
- outl p2, a
-
- clr a
- in a, p1
- inc a
- jnz fail
-
- in a, p2
- inc a
- jnz fail
-
- anl P1, #0AAH
- jnz fail
- anl P2, #055H
- jnz fail
-
- in a, p1
- add a, #056H
- jnz fail
-
- in a, p2
- add a, #0ABH
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/anl/pp/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/rl/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/rl/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/rl/test.asm (nonexistent)
@@ -1,108 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test RL(C) A.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #001H
-
- rl a
- jb0 fail
- jb1 ok1_1
- jmp fail
-
-ok1_1: rl a
- jb1 fail
- jb2 ok1_2
- jmp fail
-
-ok1_2: rl a
- jb2 fail
- jb3 ok1_3
- jmp fail
-
-ok1_3: rl a
- jb3 fail
- jb4 ok1_4
- jmp fail
-
-ok1_4: rl a
- jb4 fail
- jb5 ok1_5
- jmp fail
-
-ok1_5: rl a
- jb5 fail
- jb6 ok1_6
- jmp fail
-
-ok1_6: rl a
- jb6 fail
- jb7 ok1_7
- jmp fail
-
-ok1_7: rl a
- jb7 fail
- jb0 ok2
- jmp fail
-
-
-ok2: mov a, #0FEH
- cpl c
-
- rlc a
- jb0 ok2_1
- jmp fail
-ok2_1: jb1 fail
-
- rlc a
- jb1 ok2_2
- jmp fail
-ok2_2: jb2 fail
-
- rlc a
- jb2 ok2_3
- jmp fail
-ok2_3: jb3 fail
-
- rlc a
- jb3 ok2_4
- jmp fail
-ok2_4: jb4 fail
-
- rlc a
- jb4 ok2_5
- jmp fail
-ok2_5: jb5 fail
-
- rlc a
- jb5 ok2_6
- jmp fail
-ok2_6: jb6 fail
-
- rlc a
- jb6 ok2_7
- jmp fail
-ok2_7: jb7 fail
- jnc fail
-
- rlc a
- jb7 ok2_8
- jmp fail
-ok2_8: jc fail
-
- rlc a
- jc ok2_9
- jmp fail
-ok2_9: jb0 fail
-
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/rl/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/cpl/a/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/cpl/a/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/cpl/a/test.asm (nonexistent)
@@ -1,28 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test CPL A.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0FFH
- cpl a
- jnz fail
-
- cpl a
- inc a
- jnz fail
-
- mov a, #055H
- cpl a
- add a, #01010110B
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/cpl/a/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/cpl/c/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/cpl/c/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/cpl/c/test.asm (nonexistent)
@@ -1,31 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test CPL C.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jc fail
-
- cpl c
- jnc fail
-
- mov a, #0FEH
- add a, #001H
- jc fail
- cpl c
- jnc fail
-
- add a, #001H
- jnc fail
- cpl c
- jc fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/cpl/c/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/cpl/f0/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/cpl/f0/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/cpl/f0/test.asm (nonexistent)
@@ -1,23 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test CPL F0.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jf0 fail
- cpl f0
- jf0 ok_1
- jmp fail
-
-ok_1: cpl f0
- jf0 fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/cpl/f0/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/cpl/f1/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/cpl/f1/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/cpl/f1/test.asm (nonexistent)
@@ -1,23 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test CPL F1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jf1 fail
- cpl f1
- jf1 ok_1
- jmp fail
-
-ok_1: cpl f1
- jf1 fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/cpl/f1/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/clr/a/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/clr/a/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/clr/a/test.asm (nonexistent)
@@ -1,33 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test CLR A.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0FFH
- jz fail
- clr a
- jnz fail
-
- inc a
- jb0 ok_1
- jmp fail
-
-ok_1: add a, #0FFH
- jnz fail
-
- add a, #010H
- clr a
- dec a
- add a, #001H
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/clr/a/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/clr/c/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/clr/c/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/clr/c/test.asm (nonexistent)
@@ -1,29 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test CLR C.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jc fail
- cpl c
- jnc fail
- clr c
- jc fail
- clr c
- jc fail
-
- mov a, #0FFH
- add a, #001H
- jnc fail
- clr c
- jc fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/clr/c/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/clr/f0/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/clr/f0/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/clr/f0/test.asm (nonexistent)
@@ -1,23 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test CLR F0.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jf0 fail
- cpl f0
- jf0 ok_1
- jmp fail
-
-ok_1: clr f0
- jf0 fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/clr/f0/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/clr/f1/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/clr/f1/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/clr/f1/test.asm (nonexistent)
@@ -1,23 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test CLR F1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jf1 fail
- cpl f1
- jf1 ok_1
- jmp fail
-
-ok_1: clr f1
- jf1 fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/clr/f1/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/movp/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/movp/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/movp/test.asm (nonexistent)
@@ -1,67 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test MOVP A, @ A and MOVP3 A, @ A.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-table MACRO data
- DB data & 0FFH
- ENDM
-
- ORG 0
-
- ;; Start of test
- mov r1, #008H
-
-loop: mov a, r1
- dec a
- call fetch_table1
- mov r0, a
-
- mov a, r1
- dec a
- call fetch_table3
-
- add a, r0
- cpl a
- jnz fail
-
- djnz r1, loop
-
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0100H
-
- db 0AFH
- db 033H
- db 0C0H
- db 012H
- db 055H
- db 061H
- db 02BH
- db 0F4H
-fetch_table1:
- movp a, @a
- ret
-fetch_table3:
- movp3 a, @a
- ret
-
-
- ORG 0300H
-
- db 050H
- db 0CCH
- db 03FH
- db 0EDH
- db 0AAH
- db 09EH
- db 0D4H
- db 00BH
t48/rel_1_2/sw/verif/black_box/movp/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/outl/pp/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/outl/pp/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/outl/pp/test.asm (nonexistent)
@@ -1,20 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test OUTL Pp, A
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #055H
- outl p1, a
- mov a, #0AAH
- outl p2, a
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/outl/pp/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/outl/bus/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/outl/bus/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/outl/bus/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-External ports not modelled in detail in i8039 emulator.
Index: t48/rel_1_2/sw/verif/black_box/outl/bus/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/outl/bus/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/outl/bus/test.asm (nonexistent)
@@ -1,20 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test OUTL BUS, A
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #055H
- outl bus, a
- cpl a
- outl bus, a
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/outl/bus/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/jz/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/jz/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/jz/test.asm (nonexistent)
@@ -1,43 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test JZ instruction.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #000H
- jz ok_0
- jmp fail
-
-ok_0: mov a, #001H
- jz fail
-
- mov a, #002H
- jz fail
-
- mov a, #004H
- jz fail
-
- mov a, #008H
- jz fail
-
- mov a, #010H
- jz fail
-
- mov a, #020H
- jz fail
-
- mov a, #040H
- jz fail
-
- mov a, #080H
- jz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/jz/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/cnt/cnt/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/cnt/cnt/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/cnt/cnt/test.asm (nonexistent)
@@ -1,82 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test Counter.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #0FEH
- mov t, a
-
- strt cnt
- jtf fail
-
- ;; apply falling edge on T1
- anl P1, #0FDH
- jtf fail
- mov a, t
- cpl a
- add a, #0FFH
- cpl a
- jnz fail
-
- ;; apply rising edge on T1
- orl P1, #002H
- jtf fail
-
- ;; apply falling edge on T1
- anl P1, #0FDH
- jtf goon
- jmp fail
-goon: jtf fail
- mov a, t
- jnz fail
-
- ;; apply rising edge on T1
- orl P1, #002H
- jtf fail
-
- ;; apply falling edge on T1
- anl P1, #0FDH
- jtf fail
- mov a, t
- dec a
- jnz fail
-
- ;; check inactivity of counter
- stop tcnt
- mov a, #0FFH
- mov t, a
-
- ;; apply rising edge on T1
- orl P1, #002H
- jtf fail
- ;; apply falling edge on T1
- anl P1, #0FDH
- jtf fail
- ;; apply rising edge on T1
- orl P1, #002H
- jtf fail
- ;; apply falling edge on T1
- anl P1, #0FDH
- jtf fail
-
- strt cnt
- ;; apply rising edge on T1
- orl P1, #002H
- jtf fail
- ;; apply falling edge on T1
- anl P1, #0FDH
- jtf goon2
- jmp fail
-
-goon2:
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/cnt/cnt/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/cnt/int/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/cnt/int/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/cnt/int/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-Modelling accuracy of interrupts is not sufficient for 1:1 dump compare.
Index: t48/rel_1_2/sw/verif/black_box/cnt/int/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/cnt/int/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/cnt/int/test.asm (nonexistent)
@@ -1,113 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test Counter Interrupt.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
- jmp start
- nop
- jmp fail
- jmp fail
- jmp counter_int
- jmp fail
-
- ;; Start of test
-start: mov a, #0FEH
- mov t, a
-
- mov r0, #000H
-
- strt cnt
- en tcnti
-
- jtf fail
-
- ;; apply falling edge on T1 -> T = 0FFH
- anl P1, #0FDH
- call check_cnt_idle
- mov a, t
- inc a
- jnz fail
- ;; apply rising edge on T1
- orl P1, #002H
- call check_cnt_idle
- mov a, t
- inc a
- jnz fail
-
- ;; apply falling edge on T1 -> T = 000H
- anl P1, #0FDH
- jtf goon
- jmp fail
-goon: mov a, r0
- inc a
- jnz fail
- mov r0, a
- jtf fail
- ;; apply rising edge on T1
- orl P1, #002H
- call check_cnt_idle
-
- ;; apply falling edge on T1 -> T = 001H
- anl P1, #0FDH
- call check_cnt_idle
- mov a, t
- dec a
- jnz fail
- ;; apply rising edge on T1
- orl P1, #002H
- call check_cnt_idle
- mov a, t
- dec a
- jnz fail
-
- ;; apply falling edge on T1 -> T = 002H
- anl P1, #0FDH
- call check_cnt_idle
- mov a, t
- dec a
- dec a
- jnz fail
- ;; apply rising edge on T1
- orl P1, #002H
- call check_cnt_idle
- mov a, t
- dec a
- dec a
- jnz fail
-
- ;; disable interrupt and trigger overflow
- dis tcnti
- mov a, #0FFH
- mov t, a
- call check_cnt_idle
-
- ;; apply falling edge on T1 -> T = 000H
- anl P1, #0FDH
- jtf goon2
- jmp fail
-goon2: mov a, r0
- jnz fail
- mov a, t
- jnz fail
-
-
-pass: PASS
-
-fail: FAIL
-
-
-check_cnt_idle:
- jtf fail
- mov a, r0
- jnz fail
- ret
-
-
-counter_int:
- mov r0, #0FFH
- retr
t48/rel_1_2/sw/verif/black_box/cnt/int/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/xchd/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/xchd/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/xchd/test.asm (nonexistent)
@@ -1,121 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test XCHD A, @ Rr.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-testR0R1 MACRO pos
- inc r0
- inc r1
- mov a, @r0
- cpl a
- add a, #((~((pos+7) # 8) << 4) & 0F0H) | (pos & 00FH)
- cpl a
- jnz fail
- mov a, @r1
- cpl a
- add a, #((~((pos+7) # 8) << 4) & 0F0H) | (pos & 00FH)
- cpl a
- jnz fail
- ENDM
-
- ORG 0
-
- ;; Start of test
- mov r0, #010H
- mov r1, #020H
- mov a, #0F0H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0E1H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0D2H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0C3H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0B4H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0A5H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #096H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #087H
- mov @r0, a
- mov @r1, a
-
- dec r0
- xchd a, @r0
- dec r0
- xchd a, @r0
- dec r0
- xchd a, @r0
- dec r0
- xchd a, @r0
- dec r0
- xchd a, @r0
- dec r0
- xchd a, @r0
- dec r0
- xchd a, @r0
- mov r0, #017H
- xchd a, @r0
-
- mov a, @r1
- dec r1
- xchd a, @r1
- dec r1
- xchd a, @r1
- dec r1
- xchd a, @r1
- dec r1
- xchd a, @r1
- dec r1
- xchd a, @r1
- dec r1
- xchd a, @r1
- dec r1
- xchd a, @r1
- mov r1, #027H
- xchd a, @r1
-
- jmp goon
-
- ORG 256
- ;;
-goon: mov r0, #00FH
- mov r1, #01FH
- testR0R1 1
- testR0R1 2
- testR0R1 3
- testR0R1 4
- testR0R1 5
- testR0R1 6
- testR0R1 7
- testR0R1 0
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/xchd/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/movx/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/movx/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/movx/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-External RAM is not modelled in i8039 emulator.
Index: t48/rel_1_2/sw/verif/black_box/movx/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/movx/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/movx/test.asm (nonexistent)
@@ -1,60 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test MOVX A, @ Rr for RB0.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov r0, #0FEH
-fill_loop1:
- mov a, r0
- movx @r0, a
- djnz r0, fill_loop1
-
- ;; check memory
- mov a, r0
- jnz fail
- mov r0, #0FEH
- mov r1, #002H
-check_loop1:
- clr a
- movx a, @r1
- add a, r0
- jnz fail
- inc r1
- dec r0
- mov a, r0
- dec a
- jnz check_loop1
-
-
-
- mov r1, #0FEH
- mov a, #002H
-fill_loop2:
- movx @r1, a
- inc a
- djnz r1, fill_loop2
-
- ;; check memory
- mov a, r1
- jnz fail
- mov r0, #0FEH
-check_loop2:
- clr a
- movx a, @r0
- add a, r0
- jnz fail
- dec r0
- mov a, r0
- dec a
- jnz check_loop2
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/movx/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/ins/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/ins/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/ins/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-External ports not modelled in detail in i8039 emulator.
Index: t48/rel_1_2/sw/verif/black_box/ins/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/ins/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/ins/test.asm (nonexistent)
@@ -1,37 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test INS A, BUS.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; deselect external memory
- mov r0, #0FFH
- clr a
- movx @r0, a
-
- mov a, #055H
- outl bus, a
-
- clr a
- ins a, bus
- add a, #0ABH
- jnz fail
-
- mov a, #0AAH
- outl bus, a
-
- clr a
- ins a, bus
- add a, #056H
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/ins/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/int/simple_jump_to/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/int/simple_jump_to/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/int/simple_jump_to/test.asm (nonexistent)
@@ -1,28 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test a simple jump to interrupt.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jmp start_user
-
-
- ORG 3
- jmp pass
-
-
- ORG 010H
-start_user:
- en i
- mov r0, #080H
-loop: djnz r0, loop
-
-fail: FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/int/simple_jump_to/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/int/simple_int_retr/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/int/simple_int_retr/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/int/simple_int_retr/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-Modelling accuracy of interrupts is not sufficient for 1:1 dump compare.
Index: t48/rel_1_2/sw/verif/black_box/int/simple_int_retr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/int/simple_int_retr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/int/simple_int_retr/test.asm (nonexistent)
@@ -1,48 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test simple interrupt/RETR requences.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jmp start_user
-
-
- ORG 3
- cpl f1
- cpl f0
- mov r1, #060H
-int_loop:
- djnz r1, int_loop
- jf1 int_goon
- jmp fail
-int_goon:
- dis i
- retr
-
-
- ORG 020H
-start_user:
- mov r0, #080H
- en i
- nop
-loop1: djnz r0, loop1
- jf0 fail
- jf1 goon1
- jmp fail
-
-goon1: mov r0, #080H
- cpl f1
- en i
-loop2: djnz r0, loop2
- jf0 fail
- jf1 pass
-
-fail: FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/int/simple_int_retr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/int/jni/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/int/jni/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/int/jni/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-Modelling accuracy of interrupts is not sufficient for 1:1 dump compare.
Index: t48/rel_1_2/sw/verif/black_box/int/jni/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/int/jni/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/int/jni/test.asm (nonexistent)
@@ -1,21 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test JNI.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jni fail
-
- mov r0, #000H
-poll: jni pass
- djnz r0, poll
-
-fail: FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/int/jni/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/tx/t0/t0/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/tx/t0/t0/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/tx/t0/t0/test.asm (nonexistent)
@@ -1,21 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test J(N)T0 addr.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jnt0 fail
- anl P1, #0FEH
- jt0 fail
- orl P1, #001H
- jt0 pass
-
-fail: FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/tx/t0/t0/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/tx/t0/ent0_clk/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/tx/t0/ent0_clk/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/tx/t0/ent0_clk/test.asm (nonexistent)
@@ -1,15 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Execute ENT0 CLK.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- ent0 clk
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/tx/t0/ent0_clk/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/tx/t1/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/tx/t1/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/tx/t1/test.asm (nonexistent)
@@ -1,21 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test J(N)T1 addr.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jnt1 fail
- anl P1, #0FDH
- jt1 fail
- orl P1, #002H
- jt1 pass
-
-fail: FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/tx/t1/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/dec/a/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/dec/a/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/dec/a/test.asm (nonexistent)
@@ -1,32 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test DEC A.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #001H
- dec a
- jnz fail
-
- dec a
- jb0 ok_0
- jmp fail
-
-ok_0: inc a
- jnz fail
-
- mov a, #10100101B
- dec a
- add a, #01011101B
- dec a
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/dec/a/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/dec/rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/dec/rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/dec/rr/test.asm (nonexistent)
@@ -1,244 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test DECC Rr for RB0 and RB1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; fill RB0
- call fill
-
- ;; check RB0
- call check
-
- ;; fill RB1
- sel rb1
- call fill
- sel rb0
-
- ;; clear RB0
- call clr_rb0
-
- ;; check RB1
- sel rb1
- call check
-
- ;; check RB0 for all 0
- mov r0, #000H
- mov r1, #008H
-chk0_loop:
- mov a, @r0
- jnz fail
- inc r0
- djnz r1, chk0_loop
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0300H
-
-fill: mov a, #000H
- mov r0, a
- mov r1, a
- mov r2, a
- mov r3, a
- mov r4, a
- mov r5, a
- mov r6, a
- mov r7, a
- ret
-
-clr_rb0:
- mov r0, #007H
- clr a
-clr_loop:
- mov @r0, a
- djnz r0, clr_loop
- ret
-
-check: mov a, #0FFH
- dec r0
- jz fail_p3
- mov a, r0
- jz fail_p3
- ;;
- mov a, r1
- jnz fail_p3
- mov a, r2
- jnz fail_p3
- mov a, r3
- jnz fail_p3
- mov a, r4
- jnz fail_p3
- mov a, r5
- jnz fail_p3
- mov a, r6
- jnz fail_p3
- mov a, r7
- jnz fail_p3
-
- mov a, #0FFH
- dec r1
- jz fail_p3
- mov a, r1
- jz fail_p3
- ;;
- mov a, r0
- jz fail_p3
- ;;
- mov a, r2
- jnz fail_p3
- mov a, r3
- jnz fail_p3
- mov a, r4
- jnz fail_p3
- mov a, r5
- jnz fail_p3
- mov a, r6
- jnz fail_p3
- mov a, r7
- jnz fail_p3
-
- mov a, #0FFH
- dec r2
- jz fail_p3
- mov a, r2
- jz fail_p3
- ;;
- mov a, r0
- jz fail_p3
- mov a, r1
- jz fail_p3
- ;;
- mov a, r3
- jnz fail_p3
- mov a, r4
- jnz fail_p3
- mov a, r5
- jnz fail_p3
- mov a, r6
- jnz fail_p3
- mov a, r7
- jnz fail_p3
-
- mov a, #0FFH
- dec r3
- jz fail_p3
- mov a, r3
- jz fail_p3
- ;;
- mov a, r0
- jz fail_p3
- mov a, r1
- jz fail_p3
- mov a, r2
- jz fail_p3
- ;;
- mov a, r4
- jnz fail_p3
- mov a, r5
- jnz fail_p3
- mov a, r6
- jnz fail_p3
- mov a, r7
- jnz fail_p3
-
- mov a, #0FFH
- dec r4
- jz fail_p3
- mov a, r4
- jz fail_p3
- ;;
- mov a, r0
- jz fail_p3
- mov a, r1
- jz fail_p3
- mov a, r2
- jz fail_p3
- mov a, r3
- jz fail_p3
- ;;
- mov a, r5
- jnz fail_p3
- mov a, r6
- jnz fail_p3
- mov a, r7
- jnz fail_p3
-
- mov a, #0FFH
- dec r5
- jz fail_p3
- mov a, r5
- jz fail_p3
- ;;
- mov a, r0
- jz fail_p3
- mov a, r1
- jz fail_p3
- mov a, r2
- jz fail_p3
- mov a, r3
- jz fail_p3
- mov a, r4
- jz fail_p3
- ;;
- mov a, r6
- jnz fail_p3
- mov a, r7
- jnz fail_p3
-
- mov a, #0FFH
- dec r6
- jz fail_p3
- mov a, r6
- jz fail_p3
- ;;
- mov a, r0
- jz fail_p3
- mov a, r1
- jz fail_p3
- mov a, r2
- jz fail_p3
- mov a, r3
- jz fail_p3
- mov a, r4
- jz fail_p3
- mov a, r5
- jz fail_p3
- ;;
- mov a, r7
- jnz fail_p3
-
- mov a, #0FFH
- inc r7
- jz fail_p3
- mov a, r7
- jz fail_p3
- ;;
- mov a, r0
- jz fail_p3
- mov a, r1
- jz fail_p3
- mov a, r2
- jz fail_p3
- mov a, r3
- jz fail_p3
- mov a, r4
- jz fail_p3
- mov a, r5
- jz fail_p3
- mov a, r6
- jz fail_p3
- ret
-
-
-fail_p3:
- FAIL
t48/rel_1_2/sw/verif/black_box/dec/rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/addc/ind_rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/addc/ind_rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/addc/ind_rr/test.asm (nonexistent)
@@ -1,99 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ADDC A, @ Rr.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-testADDC MACRO val
- jmp goon
- ALIGN 040H
-goon: inc r0
- inc r1
- mov a, #val
- addc a, @r0
- jnz fail
- jnc fail
- mov a, #val
- addc a, @r0
- dec a
- jnz fail
- jnc fail
- clr c
- ;;
- mov a, #val
- addc a, @r1
- jnz fail
- jnc fail
- mov a, #val
- addc a, @r1
- dec a
- jnz fail
- jnc fail
- clr c
- jmp pass
- ;;
-fail: FAIL
-pass:
- ENDM
-
- ORG 0
-
- ;; Start of test
- mov r0, #010H
- mov r1, #020H
- mov a, #0FEH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FDH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FBH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0F7H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0EFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0DFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0BFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #07FH
- mov @r0, a
- mov @r1, a
-
- ;;
- mov r0, #00FH
- mov r1, #01FH
-
- testADDC 002H
- testADDC 003H
- testADDC 005H
- testADDC 009H
- testADDC 011H
- testADDC 021H
- testADDC 041H
- testADDC 081H
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/addc/ind_rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/addc/rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/addc/rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/addc/rr/test.asm (nonexistent)
@@ -1,98 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ADDC A, Rr with carry, RB0 and RB1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-testADDC MACRO val,reg
- mov a, #val
- addc a, reg
- jnz fail_p3
- jnc fail_p3
- mov a, #val
- addc a, reg
- jz fail_p3
- jnc fail_p3
- dec a
- jnz fail_p3
- clr c
- jc fail_p3
- ENDM
-
- ORG 0
-
- ;; Start of test
- ;; fill RB0
- call fill
-
- ;; check RB0
- call check
-
- ;; fill RB1
- sel rb1
- call fill
- sel rb0
-
- ;; clear RB0
- call clr
-
- ;; check RB1
- sel rb1
- call check
-
- ;; check RB0 for all 0
- mov r0, #000H
- mov r1, #008H
-chk0_loop:
- mov a, @r0
- jnz fail
- inc r0
- djnz r1, chk0_loop
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0300H
-
-fill: mov a, #0FEH
- mov r0, a
- mov a, #0FDH
- mov r1, a
- mov a, #0FBH
- mov r2, a
- mov a, #0F7H
- mov r3, a
- mov a, #0EFH
- mov r4, a
- mov a, #0DFH
- mov r5, a
- mov a, #0BFH
- mov r6, a
- mov a, #07FH
- mov r7, a
- ret
-
-check: testADDC 002H, r0
- testADDC 003H, r1
- testADDC 005H, r2
- testADDC 009H, r3
- testADDC 011H, r4
- testADDC 021H, r5
- testADDC 041H, r6
- testADDC 081H, r7
- ret
-
-clr: mov r0, #007H
- clr a
-clr_loop:
- mov @r0, a
- djnz r0, clr_loop
- ret
-
-fail_p3:
- FAIL
t48/rel_1_2/sw/verif/black_box/addc/rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/addc/a_data/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/addc/a_data/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/addc/a_data/test.asm (nonexistent)
@@ -1,30 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ADDC A, data.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jc fail
- mov a, #000H
-
- addc a, #055H
- jc fail
- addc a, #0ABH
- jnz fail
- jnc fail
-
- addc a, #000H
- jc fail
- addc a, #0FFH
- jnz fail
- jnc fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/addc/a_data/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/orl/a_data/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/orl/a_data/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/orl/a_data/test.asm (nonexistent)
@@ -1,32 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ORL A, data.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- clr a
- orl a, #0FFH
- jz fail
- orl a, #0FFH
- jz fail
-
- clr a
- orl a, #055H
- add a, #0ABH
- jnz fail
-
- clr a
- orl a, #023H
- orl a, #088H
- add a, #055H
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/orl/a_data/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/orl/bus/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/orl/bus/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/orl/bus/test.asm (nonexistent)
@@ -1,29 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ORL BUS, data.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #000H
- outl bus, a
-
- cpl a
- ins a, bus
- jnz fail
-
- orl bus, #0AAH
- jnz fail
-
- ins a, bus
- add a, #056H
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/orl/bus/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/orl/bus/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/black_box/orl/bus/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/orl/bus/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-External ports not modelled in detail in i8039 emulator.
Index: t48/rel_1_2/sw/verif/black_box/orl/ind_rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/orl/ind_rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/orl/ind_rr/test.asm (nonexistent)
@@ -1,92 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ORL A, @ Rr.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-testR0R1 MACRO pos
- inc r0
- inc r1
- mov a, #(1 << pos)
- orl a, @r0
- cpl a
- jnz fail
- clr a
- orl a, @r0
- add a, #(~(0FFH - (1 << pos)) + 1) & 0FFH
- jnz fail
- mov a, #(1 << pos)
- orl a, @r1
- cpl a
- jnz fail
- clr a
- orl a, @r1
- add a, #(~(0FFH - (1 << pos)) + 1) & 0FFH
- jnz fail
- ENDM
-
- ORG 0
-
- ;; Start of test
- mov r0, #010H
- mov r1, #020H
- mov a, #0FEH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FDH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FBH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0F7H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0EFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0DFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0BFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #07FH
- mov @r0, a
- mov @r1, a
-
- jmp goon
-
- ORG 256
- ;;
-goon: mov r0, #00FH
- mov r1, #01FH
- testR0R1 0
- testR0R1 1
- testR0R1 2
- testR0R1 3
- testR0R1 4
- testR0R1 5
- testR0R1 6
- testR0R1 7
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/orl/ind_rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/orl/pp/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/orl/pp/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/orl/pp/test.asm (nonexistent)
@@ -1,40 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ORL Pp, data.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #000H
- outl p1, a
- outl p2, a
-
- cpl a
- in a, p1
- jnz fail
-
- cpl a
- in a, p2
- jnz fail
-
- orl P1, #0AAH
- jnz fail
- orl P2, #055H
- jnz fail
-
- in a, p1
- add a, #056H
- jnz fail
-
- in a, p2
- add a, #0ABH
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/orl/pp/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/orl/rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/orl/rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/orl/rr/test.asm (nonexistent)
@@ -1,149 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ORL A, Rr with RB0 and RB1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; fill RB0
- call fill
-
- ;; check RB0
- call check
-
- ;; fill RB1
- sel rb1
- call fill
- sel rb0
-
- ;; clear RB0
- call clr_rb0
-
- ;; check RB1
- sel rb1
- call check
-
- ;; check RB0 for all 0
- mov r0, #000H
- mov r1, #008H
-chk0_loop:
- mov a, @r0
- jnz fail
- inc r0
- djnz r1, chk0_loop
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0300H
-
-fill: mov a, #0FEH
- mov r0, a
- mov a, #0FDH
- mov r1, a
- mov a, #0FBH
- mov r2, a
- mov a, #0F7H
- mov r3, a
- mov a, #0EFH
- mov r4, a
- mov a, #0DFH
- mov r5, a
- mov a, #0BFH
- mov r6, a
- mov a, #07FH
- mov r7, a
- ret
-
-clr_rb0:
- mov r0, #007H
- clr a
-clr_loop:
- mov @r0, a
- djnz r0, clr_loop
- ret
-
-check: mov a, #(1 << 0)
- orl a, r0
- cpl a
- jnz fail_p3
- clr a
- orl a, r0
- add a, #(~(0FFH - (1 << 0)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 1)
- orl a, r1
- cpl a
- jnz fail_p3
- clr a
- orl a, r1
- add a, #(~(0FFH - (1 << 1)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 2)
- orl a, r2
- cpl a
- jnz fail_p3
- clr a
- orl a, r2
- add a, #(~(0FFH - (1 << 2)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 3)
- orl a, r3
- cpl a
- jnz fail_p3
- clr a
- orl a, r3
- add a, #(~(0FFH - (1 << 3)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 4)
- orl a, r4
- cpl a
- jnz fail_p3
- clr a
- orl a, r4
- add a, #(~(0FFH - (1 << 4)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 5)
- orl a, r5
- cpl a
- jnz fail_p3
- clr a
- orl a, r5
- add a, #(~(0FFH - (1 << 5)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 6)
- orl a, r6
- cpl a
- jnz fail_p3
- clr a
- orl a, r6
- add a, #(~(0FFH - (1 << 6)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 7)
- orl a, r7
- cpl a
- jnz fail_p3
- clr a
- orl a, r7
- add a, #(~(0FFH - (1 << 7)) + 1) & 0FFH
- jnz fail_p3
-
- ret
-
-fail_p3:
- FAIL
t48/rel_1_2/sw/verif/black_box/orl/rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/mb/int/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/mb/int/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/mb/int/test.asm (nonexistent)
@@ -1,62 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test Program Memory bank selector with interrupts.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
- jmp start
- ORG 3
- jmp interrupt & 07FFH
-
- ORG 7
- jmp fail
-
- ;; Start of test
-start:
- sel mb1
- mov r0, #000H
- en i
-poll: jf1 goon1
- djnz r0, poll
- jmp fail
-goon1:
-
- call test_mb1 & 07FFH
-
-pass: PASS
-
-fail: FAIL
-
- ORG 0232H
- jmp fail
-interrupt:
- call trick_mb
- cpl f1
- retr
-
- ORG 0250H
-trick_mb:
- ret
-
- ORG 0260H
- jmp fail
-
-
- ORG 0A32H
- jmp fail_hi
- jmp fail_hi
- jmp fail_hi
-
- ORG 0A50H
- jmp fail_hi
-
- ORG 0A60H
-test_mb1:
- ret
-
-fail_hi:
- FAIL
t48/rel_1_2/sw/verif/black_box/mb/int/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/mb/call_jmp/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/mb/call_jmp/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/mb/call_jmp/test.asm (nonexistent)
@@ -1,125 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test Program Memory bank selector with CALL and JMP.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- sel mb1
- call call1 & 07FFH
- sel mb1
- jmp jmp1 & 07FFH
- ;; trap
- nop
- jmp fail
- nop
- jmp fail
- ;;
-jmp2: sel mb1
- call call3 & 07FFH
- sel mb1
- jmp jmp3 & 07FFH
- ;; trap
- nop
- jmp fail
- nop
- jmp fail
- ;;
-jmp4: sel mb1
- call call5 & 07FFH
- sel mb1
- jmp jmp5 & 07FFH
- ;; trap
- nop
- jmp fail
- nop
- jmp fail
-jmp6:
-
-pass: PASS
-
-fail: FAIL
-
- ORG 0100H
-
- ;; trap
- jmp fail
- ;;
-call2: sel mb1
- ret
- ;; trap
- jmp fail
- ;;
-call4: sel mb0
- ret
- ;; trap
- jmp fail
- ;;
-call6: sel mb1
- ret
-
-
-
- ORG 0800H
-
- ;; trap
- nop
- jmp fail_hi
- nop
- jmp fail_hi
- ;;
-jmp1: sel mb0
- call call2 | 0800H
- sel mb0
- jmp jmp2 | 0800H
- ;; trap
- nop
- jmp fail_hi
- nop
- jmp fail_hi
- ;;
-jmp3: sel mb0
- call call4 | 0800H
- sel mb0
- jmp jmp4 | 0800H
- ;; trap
- nop
- jmp fail_hi
- nop
- jmp fail_hi
- ;;
-jmp5: sel mb0
- call call6 | 0800H
- sel mb0
- jmp jmp6 | 0800H
- ;; trap
- nop
- jmp fail_hi
- nop
- jmp fail_hi
-
-
-fail_hi:
- FAIL
-
-
- ORG 0900H
-call1: sel mb0
- ret
- ;; trap
- jmp fail_hi
- ;;
-call3: sel mb1
- ret
- ;; trap
- jmp fail_hi
- ;;
-call5: sel mb0
- ret
- ;; trap
- jmp fail_hi
t48/rel_1_2/sw/verif/black_box/mb/call_jmp/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/jnz/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/jnz/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/jnz/test.asm (nonexistent)
@@ -1,49 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test JNZ instruction.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #000H
- jnz fail
-
- mov a, #001H
- jnz ok_01
- jmp fail
-
-ok_01: mov a, #002H
- jnz ok_02
- jmp fail
-
-ok_02: mov a, #004H
- jnz ok_04
- jmp fail
-
-ok_04: mov a, #008H
- jnz ok_08
- jmp fail
-
-ok_08: mov a, #010H
- jnz ok_10
- jmp fail
-
-ok_10: mov a, #020H
- jnz ok_20
- jmp fail
-
-ok_20: mov a, #040H
- jnz ok_40
- jmp fail
-
-ok_40: mov a, #080H
- jnz pass
-
-fail: FAIL
-
-pass: PASS
t48/rel_1_2/sw/verif/black_box/jnz/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/xrl/rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/xrl/rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/xrl/rr/test.asm (nonexistent)
@@ -1,157 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test XRL A, Rr for RB0 and RB1
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; fill RB0
- call fill
-
- ;; check RB0
- call check
-
- ;; fill RB1
- sel rb1
- call fill
- sel rb0
-
- ;; clear RB0
- call clr_rb0
-
- ;; check RB1
- sel rb1
- call check
-
- ;; check RB0 for all 0
- mov r0, #000H
- mov r1, #008H
-chk0_loop:
- mov a, @r0
- jnz fail
- inc r0
- djnz r1, chk0_loop
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0300H
-
-fill: mov a, #0FEH
- mov r0, a
- mov a, #0FDH
- mov r1, a
- mov a, #0FBH
- mov r2, a
- mov a, #0F7H
- mov r3, a
- mov a, #0EFH
- mov r4, a
- mov a, #0DFH
- mov r5, a
- mov a, #0BFH
- mov r6, a
- mov a, #07FH
- mov r7, a
- ret
-
-clr_rb0:
- mov r0, #007H
- clr a
-clr_loop:
- mov @r0, a
- djnz r0, clr_loop
- ret
-
-check: mov a, #(1 << 0)
- xrl a, r0
- cpl a
- jnz fail_p3
- dec a
- xrl a, r0
- cpl a
- add a, #(~(0FFH - (1 << 0)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 1)
- xrl a, r1
- cpl a
- jnz fail_p3
- dec a
- xrl a, r1
- cpl a
- add a, #(~(0FFH - (1 << 1)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 2)
- xrl a, r2
- cpl a
- jnz fail_p3
- dec a
- xrl a, r2
- cpl a
- add a, #(~(0FFH - (1 << 2)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 3)
- xrl a, r3
- cpl a
- jnz fail_p3
- dec a
- xrl a, r3
- cpl a
- add a, #(~(0FFH - (1 << 3)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 4)
- xrl a, r4
- cpl a
- jnz fail_p3
- dec a
- xrl a, r4
- cpl a
- add a, #(~(0FFH - (1 << 4)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 5)
- xrl a, r5
- cpl a
- jnz fail_p3
- dec a
- xrl a, r5
- cpl a
- add a, #(~(0FFH - (1 << 5)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 6)
- xrl a, r6
- cpl a
- jnz fail_p3
- dec a
- xrl a, r6
- cpl a
- add a, #(~(0FFH - (1 << 6)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, #(1 << 7)
- xrl a, r7
- cpl a
- jnz fail_p3
- dec a
- xrl a, r7
- cpl a
- add a, #(~(0FFH - (1 << 7)) + 1) & 0FFH
- jnz fail_p3
-
- ret
-
-fail_p3:
- FAIL
t48/rel_1_2/sw/verif/black_box/xrl/rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/xrl/a_data/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/xrl/a_data/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/xrl/a_data/test.asm (nonexistent)
@@ -1,32 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test XRL A, data.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- clr a
- xrl a, #0FFH
- jz fail
- xrl a, #0FFH
- jnz fail
-
- clr a
- xrl a, #055H
- add a, #0ABH
- jnz fail
-
- clr a
- xrl a, #023H
- xrl a, #0A9H
- add a, #076H
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/xrl/a_data/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/xrl/ind_rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/xrl/ind_rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/xrl/ind_rr/test.asm (nonexistent)
@@ -1,92 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test XRL A, @ Rr.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-testR0R1 MACRO pos
- inc r0
- inc r1
- mov a, #(1 << pos)
- cpl a
- xrl a, @r0
- jnz fail
- clr a
- xrl a, @r0
- add a, #(~(0FFH - (1 << pos)) + 1) & 0FFH
- jnz fail
- mov a, #(1 << pos)
- cpl a
- xrl a, @r1
- jnz fail
- clr a
- xrl a, @r1
- add a, #(~(0FFH - (1 << pos)) + 1) & 0FFH
- jnz fail
- ENDM
-
- ORG 0
-
- ;; Start of test
- mov r0, #010H
- mov r1, #020H
- mov a, #0FEH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FDH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FBH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0F7H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0EFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0DFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0BFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #07FH
- mov @r0, a
- mov @r1, a
-
- jmp goon
-
- ORG 256
- ;;
-goon: mov r0, #00FH
- mov r1, #01FH
- testR0R1 0
- testR0R1 1
- testR0R1 2
- testR0R1 3
- testR0R1 4
- testR0R1 5
- testR0R1 6
- testR0R1 7
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/xrl/ind_rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/djnz/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/djnz/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/djnz/test.asm (nonexistent)
@@ -1,54 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test DJNZ Rr, addr
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov r0, #003H
- mov a, #000H
- djnz r0, r0_2
- jmp fail
-
-r0_2: djnz r0, r0_1
- jmp fail
-r0_1: mov a, #0FFH
- djnz r0, fail
-
-
- mov r1, #000H
- mov r2, #000H
-r1_loop:
- mov a, r2
- add a, r1
- jnz fail
- inc r2
- djnz r1, r1_loop
-
- mov a, r1
- jnz fail
-
-
- mov a, #002H
- mov r3, a
- mov r4, a
- mov r5, a
- djnz r5, ok_r5
- jmp fail
-ok_r5: djnz r4, ok_r4
- jmp fail
-ok_r4: djnz r3, ok_r3
- jmp fail
-
-ok_r3: djnz r3, fail
- djnz r4, fail
- djnz r5, fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/djnz/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/jmpp/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/jmpp/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/jmpp/test.asm (nonexistent)
@@ -1,490 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test JMPP.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-table MACRO data
- DB data & 0FFH
- ENDM
-
- ORG 0
-
- ;; Start of test
- mov a, #000H
- jmp table1
-
-fail: FAIL
-
-pass: PASS
-
-
- ;; *******************************************************************
- ORG 0100H
- ;;
- table t1_e00
- table t1_e01
- table t1_e02
- table t1_e03
- table t1_e04
- table t1_e05
- table t1_e06
- table t1_e07
- table t1_e08
- table t1_e09
- table t1_e0a
- table t1_e0b
- table t1_e0c
- table t1_e0d
- table t1_e0e
- table t1_e0f
- table t1_e10
- table t1_e11
- table t1_e12
- table t1_e13
- table t1_e14
- table t1_e15
- table t1_e16
- table t1_e17
- table t1_e18
- table t1_e19
- table t1_e1a
- table t1_e1b
- table t1_e1c
- table t1_e1d
- table t1_e1e
- table t1_e1f
- ;;
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- ;;
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- ;;
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- ;;
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- ;;
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- ;;
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
- table t1_e01
-
- jmp fail
-table1: jmpp @a
- jmp fail
-
-t1_e00: mov a, #007H
- jmp table2
- ;;
-t1_e01: jmp fail
- jmp fail
- ;;
-t1_e02: mov a, #005H
- jmp table2
- ;;
-t1_e03: jmp fail
- jmp fail
- ;;
-t1_e04: mov a, #003H
- jmp table2
- ;;
-t1_e05: jmp fail
- jmp fail
- ;;
-t1_e06: mov a, #001H
- jmp table2
- ;;
-t1_e07: jmp fail
- jmp fail
- ;;
-t1_e08: jmp fail
- jmp fail
- ;;
-t1_e09: jmp fail
- jmp fail
- ;;
-t1_e0a: jmp fail
- jmp fail
- ;;
-t1_e0b: jmp fail
- jmp fail
- ;;
-t1_e0c: jmp fail
- jmp fail
- ;;
-t1_e0d: jmp fail
- jmp fail
- ;;
-t1_e0e: jmp fail
- jmp fail
- ;;
-t1_e0f: jmp fail
- jmp fail
- ;;
-t1_e10: mov a, #018H
- jmp table2
- ;;
-t1_e11: jmp fail
- jmp fail
- ;;
-t1_e12: jmp fail
- jmp fail
- ;;
-t1_e13: jmp fail
- jmp fail
- ;;
-t1_e14: jmp fail
- jmp fail
- ;;
-t1_e15: jmp fail
- jmp fail
- ;;
-t1_e16: jmp fail
- jmp fail
- ;;
-t1_e17: jmp fail
- jmp fail
- ;;
-t1_e18: jmp fail
- jmp fail
- ;;
-t1_e19: jmp fail
- jmp fail
- ;;
-t1_e1a: jmp fail
- jmp fail
- ;;
-t1_e1b: jmp fail
- jmp fail
- ;;
-t1_e1c: jmp fail
- jmp fail
- ;;
-t1_e1d: jmp fail
- jmp fail
- ;;
-t1_e1e: jmp fail
- jmp fail
- ;;
-t1_e1f: jmp pass
- jmp fail
-
-
- ;; *******************************************************************
- ORG 512
- ;;
- table t2_e00
- table t2_e01
- table t2_e02
- table t2_e03
- table t2_e04
- table t2_e05
- table t2_e06
- table t2_e07
- table t2_e08
- table t2_e09
- table t2_e0a
- table t2_e0b
- table t2_e0c
- table t2_e0d
- table t2_e0e
- table t2_e0f
- table t2_e10
- table t2_e11
- table t2_e12
- table t2_e13
- table t2_e14
- table t2_e15
- table t2_e16
- table t2_e17
- table t2_e18
- table t2_e19
- table t2_e1a
- table t2_e1b
- table t2_e1c
- table t2_e1d
- table t2_e1e
- table t2_e1f
- ;;
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- ;;
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- ;;
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- ;;
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- ;;
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- ;;
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
- table t2_e01
-
- jmp fail
-table2: jmpp @a
- jmp fail
-
-t2_e00: jmp fail
- jmp fail
- ;;
-t2_e01: mov a, #010H
- jmp table1
- ;;
-t2_e02: jmp fail
- jmp fail
- ;;
-t2_e03: mov a, #006H
- jmp table1
- ;;
-t2_e04: jmp fail
- jmp fail
- ;;
-t2_e05: mov a, #004H
- jmp table1
- ;;
-t2_e06: jmp fail
- jmp fail
- ;;
-t2_e07: mov a, #002H
- jmp table1
- ;;
-t2_e08: jmp fail
- jmp fail
- ;;
-t2_e09: jmp fail
- jmp fail
- ;;
-t2_e0a: jmp fail
- jmp fail
- ;;
-t2_e0b: jmp fail
- jmp fail
- ;;
-t2_e0c: jmp fail
- jmp fail
- ;;
-t2_e0d: jmp fail
- jmp fail
- ;;
-t2_e0e: jmp fail
- jmp fail
- ;;
-t2_e0f: jmp fail
- jmp fail
- ;;
-t2_e10: jmp fail
- jmp fail
- ;;
-t2_e11: jmp fail
- jmp fail
- ;;
-t2_e12: jmp fail
- jmp fail
- ;;
-t2_e13: jmp fail
- jmp fail
- ;;
-t2_e14: jmp fail
- jmp fail
- ;;
-t2_e15: jmp fail
- jmp fail
- ;;
-t2_e16: jmp fail
- jmp fail
- ;;
-t2_e17: jmp fail
- jmp fail
- ;;
-t2_e18: mov a, #01FH
- jmp table1
- ;;
-t2_e19: jmp fail
- jmp fail
- ;;
-t2_e1a: jmp fail
- jmp fail
- ;;
-t2_e1b: jmp fail
- jmp fail
- ;;
-t2_e1c: jmp fail
- jmp fail
- ;;
-t2_e1d: jmp fail
- jmp fail
- ;;
-t2_e1e: jmp fail
- jmp fail
- ;;
-t2_e1f: jmp fail
- jmp fail
t48/rel_1_2/sw/verif/black_box/jmpp/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/in/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/in/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/in/test.asm (nonexistent)
@@ -1,29 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test IN A, Pp.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #055H
- outl p1, a
- mov a, #0AAH
- outl p2, a
-
- clr a
- in a, p1
- add a, #0ABH
- jnz fail
-
- in a, p2
- add a, #056H
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/in/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/swap/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/swap/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/swap/test.asm (nonexistent)
@@ -1,25 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test SWAP A.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, #05AH
- swap a
- add a, #05BH
- jnz fail
-
- mov a, #0C8H
- swap a
- add a, #074H
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/swap/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/call/call_ret/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/call/call_ret/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/call/call_ret/test.asm (nonexistent)
@@ -1,104 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test CALL + RET(R) with simple program.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov r0, #008H
- call recursive
-
-call1: call sub1
- jc fail
- jf0 fail
- jf1 ok_1
- jmp fail
-ok_1:
- ;; check stack contents
- mov r0, #008H
- mov a, @r0
- add a, #(~(call1+2 & 0FFH) + 1) & 0FFH
- jnz fail
-
- inc r0
- mov a, @r0
- add a, #(~((call1+2) >> 8) + 1) & 0FFH
- jnz fail
-
- inc r0
- mov a, @r0
- add a, #(~(call2+2 & 0FFH) + 1) & 0FFH
- jnz fail
-
- inc r0
- mov a, @r0
- add a, #(~((call2+2) >> 8 | 0A0H) + 1) & 0FFH
- jnz fail
-
-
- clr c
- clr f0
- clr f1
- call sub3
- jc fail
- jf0 fail
-
-pass: PASS
-
-fail: FAIL
-
-
-
- ORG 0156H
-recursive:
- dec r0
- mov a, r0
- jz rec_end
- call recursive
-rec_end:
- ret
-
-
- ORG 0245H
-
-sub1: cpl f0
- cpl f1
- cpl c
-call2: call sub2
- jf0 sub1_1
- jmp fail2
-sub1_1: jnc fail2
- retr
-
-sub2: jf0 sub2_1
- jmp fail2
-sub2_1: clr f0
- jnc fail2
- clr c
- retr
-
-fail2: FAIL
-
-
- ORG 0311H
-
-sub3: cpl f0
- cpl c
- call sub4
- jf0 fail3
- jc fail3
- ret
-
-sub4: jf0 sub4_1
- jmp fail3
-sub4_1: clr f0
- jnc fail3
- clr c
- ret
-
-fail3: FAIL
t48/rel_1_2/sw/verif/black_box/call/call_ret/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/call/simple/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/call/simple/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/call/simple/test.asm (nonexistent)
@@ -1,62 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test CALL addr with simple program.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- mov a, psw
-
- clr c
-call1: call goon1
-
- jmp fail
-
- ORG 039FH
-
-goon1: mov a, psw
- anl a, #~040H ; mask AC, tested separately with DA
- add a, #~009H + 1
- jnz fail
-
-call2: call goon2
-
- jmp fail
-
-goon2: clr c
- mov a, psw
- anl a, #~040H ; mask AC, tested separately with DA
- add a, #~00AH + 1
- jnz fail
-
- ;; check stack contents
- mov r0, #008H
- mov a, @r0
- add a, #(~(call1+2 & 0FFH) + 1) & 0FFH
- jnz fail
-
- inc r0
- mov a, @r0
- anl a, #~040H ; mask AC, tested separately with DA
- add a, #(~((call1+2) >> 8) + 1) & 0FFH
- jnz fail
-
- inc r0
- mov a, @r0
- add a, #(~(call2+2 & 0FFH) + 1) & 0FFH
- jnz fail
-
- inc r0
- mov a, @r0
- anl a, #~040H ; mask AC, tested separately with DA
- add a, #(~((call2+2) >> 8 | 080H) + 1) & 0FFH
- jnz fail
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/call/simple/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/anld/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/anld/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/anld/test.asm (nonexistent)
@@ -1,106 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test ANLD.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; port 4
- mov a, #00fh
- movd p4, a
- mov a, #00ch
- anld p4, a
- cpl a
- movd a, p6
- xrl a, #00ch
- jnz fail
- movd a, p4
- xrl a, #00ch
- jnz fail
-
- mov a, #003h
- anld p4, a
- movd a, p6
- jnz fail
- movd a, p4
- jnz fail
-
- ;; port 5
- mov a, #00fh
- movd p5, a
- mov a, #003h
- anld p5, a
- cpl a
- movd a, p7
- xrl a, #003h
- jnz fail
- movd a, p5
- xrl a, #003h
- jnz fail
-
- mov a, #009h
- anld p5, a
- movd a, p7
- xrl a, #001h
- jnz fail
- movd a, p5
- xrl a, #001h
- jnz fail
-
- ;; port 6
- mov a, #00fh
- movd p6, a
- mov a, #005h
- anld p6, a
- cpl a
- movd a, p4
- xrl a, #005h
- jnz fail
- movd a, p6
- xrl a, #005h
- jnz fail
-
- mov a, #00eh
- anld p6, a
- movd a, p4
- xrl a, #004h
- jnz fail
- movd a, p6
- xrl a, #004h
- jnz fail
-
- ;; port 7
- mov a, #00fh
- movd p7, a
- mov a, #00ah
- anld p7, a
- cpl a
- movd a, p5
- xrl a, #00ah
- jnz fail
- movd a, p7
- xrl a, #00ah
- jnz fail
-
- mov a, #00dh
- anld p7, a
- movd a, p5
- xrl a, #008h
- jnz fail
- movd a, p7
- xrl a, #008h
- jnz fail
-
-
- jmp pass
-
- jmp fail
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/anld/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/xch/ind_rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/xch/ind_rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/xch/ind_rr/test.asm (nonexistent)
@@ -1,121 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test XCH A, @ Rr.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-testR0R1 MACRO pos
- inc r0
- inc r1
- mov a, @r0
- cpl a
- add a, #~(1 << pos) & 0FFH
- cpl a
- jnz fail
- mov a, @r1
- cpl a
- add a, #~(1 << pos) & 0FFH
- cpl a
- jnz fail
- ENDM
-
- ORG 0
-
- ;; Start of test
- mov r0, #010H
- mov r1, #020H
- mov a, #0FEH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FDH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0FBH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0F7H
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0EFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0DFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #0BFH
- mov @r0, a
- mov @r1, a
- inc r0
- inc r1
- mov a, #07FH
- mov @r0, a
- mov @r1, a
-
- dec r0
- xch a, @r0
- dec r0
- xch a, @r0
- dec r0
- xch a, @r0
- dec r0
- xch a, @r0
- dec r0
- xch a, @r0
- dec r0
- xch a, @r0
- dec r0
- xch a, @r0
- mov r0, #017H
- xch a, @r0
-
- mov a, @r1
- dec r1
- xch a, @r1
- dec r1
- xch a, @r1
- dec r1
- xch a, @r1
- dec r1
- xch a, @r1
- dec r1
- xch a, @r1
- dec r1
- xch a, @r1
- dec r1
- xch a, @r1
- mov r1, #027H
- xch a, @r1
-
- jmp goon
-
- ORG 256
- ;;
-goon: mov r0, #00FH
- mov r1, #01FH
- testR0R1 1
- testR0R1 2
- testR0R1 3
- testR0R1 4
- testR0R1 5
- testR0R1 6
- testR0R1 7
- testR0R1 0
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/black_box/xch/ind_rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/black_box/xch/rr/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/black_box/xch/rr/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/black_box/xch/rr/test.asm (nonexistent)
@@ -1,119 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test XCH A, Rr for RB0 and RB1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; fill RB0
- call fill
-
- ;; check RB0
- call check
-
- ;; fill RB1
- sel rb1
- call fill
- sel rb0
-
- ;; clear RB0
- call clr_rb0
-
- ;; check RB1
- sel rb1
- call check
-
- ;; check RB0 for all 0
- mov r0, #000H
- mov r1, #008H
-chk0_loop:
- mov a, @r0
- jnz fail
- inc r0
- djnz r1, chk0_loop
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0300H
-
-fill: mov a, #0FEH
- mov r0, a
- mov a, #0FDH
- mov r1, a
- mov a, #0FBH
- mov r2, a
- mov a, #0F7H
- mov r3, a
- mov a, #0EFH
- mov r4, a
- mov a, #0DFH
- mov r5, a
- mov a, #0BFH
- mov r6, a
- mov a, #07FH
- mov r7, a
- ret
-
-clr_rb0:
- mov r0, #007H
- clr a
-clr_loop:
- mov @r0, a
- djnz r0, clr_loop
- ret
-
-check: mov a, r7
- xch a, r6
- xch a, r5
- xch a, r4
- xch a, r3
- xch a, r2
- xch a, r1
- xch a, r0
- xch a, r7
-
- mov a, r0
- add a, #(~(0FFH - (1 << 1)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, r1
- add a, #(~(0FFH - (1 << 2)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, r2
- add a, #(~(0FFH - (1 << 3)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, r3
- add a, #(~(0FFH - (1 << 4)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, r4
- add a, #(~(0FFH - (1 << 5)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, r5
- add a, #(~(0FFH - (1 << 6)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, r6
- add a, #(~(0FFH - (1 << 7)) + 1) & 0FFH
- jnz fail_p3
-
- mov a, r7
- add a, #(~(0FFH - (1 << 0)) + 1) & 0FFH
- jnz fail_p3
-
- ret
-
-fail_p3:
- FAIL
t48/rel_1_2/sw/verif/black_box/xch/rr/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/white_box/int_on_jmp/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/white_box/int_on_jmp/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/white_box/int_on_jmp/test.asm (nonexistent)
@@ -1,91 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test interrupt on JMP in Program Memory Bank 1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-test_byte: equ 020h
-
- ORG 0
-
- ;; Start of test
- jmp start
-
- ORG 3
- ;; check that interrupt hit JMP instruction
- ;; stack must contain target of JMP instruction at
- ;; location jmp_instruction
- mov r0, #00ah
- mov a, @r0
- ;; check low byte of program counter on stack
- xrl a, #000h
- jnz fail
- inc r0
- mov a, @r0
- anl a, #00fh
- ;; check high byte of program counter on stack
- mov r0, a
- xrl a, #009h ; target of PASS case?
- jz int_goon
- mov a, r0
- xrl a, #001h ; target of FAIL case?
- jnz fail
-
-int_goon:
- ;; interrupt hit correct instruction
- mov r0, #test_byte
- mov a, #0ffh
- mov @r0, a
- retr
-
-start:
- ;; enable interrupt
- en i
-
- ;; clear test byte
- mov r1, #test_byte
- clr a
- mov @r1, a
-
- call program_memory_bank_1
- sel mb0
-
- ;; check if interrupt was successful
- mov a, @r1
- jz fail
-
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0100H
- ;; program flow continues in fail case at address 0100h
- ;; after interrupt
- ;; i.e. bit 11 of address is erroneously cleared.
-
- ;; make sure that jump to fail reaches memory bank 0
- sel mb0
- jmp fail
-
-
- ORG 0800H
-program_memory_bank_1:
- ;; spend some time and wait for interrupt
- mov r2, #013h
- djnz r2, $
-
-jmp_instruction:
- ;; interrupt must hit this JMP (checked by examining stack
- ;; in interrupt handler)
- jmp test_jmp
- ret
-
- ORG 0900H
-test_jmp:
- ;; program flow continues in pass case here after interrupt
- ret
t48/rel_1_2/sw/verif/white_box/int_on_jmp/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/white_box/int_on_call/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/white_box/int_on_call/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/white_box/int_on_call/test.asm (nonexistent)
@@ -1,91 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test interrupt on CALL in Program Memory Bank 1.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-test_byte: equ 020h
-
- ORG 0
-
- ;; Start of test
- jmp start
-
- ORG 3
- ;; check that interrupt hit CALL instruction
- ;; stack must contain target of CALL instruction at
- ;; location call_instruction
- mov r0, #00ch
- mov a, @r0
- ;; check low byte of program counter on stack
- xrl a, #000h
- jnz fail
- inc r0
- mov a, @r0
- anl a, #00fh
- ;; check high byte of program counter on stack
- mov r0, a
- xrl a, #009h ; target of PASS case?
- jz int_goon
- mov a, r0
- xrl a, #001h ; target of FAIL case?
- jnz fail
-
-int_goon:
- ;; interrupt hit correct instruction
- mov r0, #test_byte
- mov a, #0ffh
- mov @r0, a
- retr
-
-start:
- ;; enable interrupt
- en i
-
- ;; clear test byte
- mov r1, #test_byte
- clr a
- mov @r1, a
-
- call program_memory_bank_1
- sel mb0
-
- ;; check if interrupt was successful
- mov a, @r1
- jz fail
-
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0100H
- ;; program flow continues in fail case at address 0100h
- ;; after interrupt
- ;; i.e. bit 11 of address is erroneously cleared.
-
- ;; make sure that jump to fail reaches memory bank 0
- sel mb0
- jmp fail
-
-
- ORG 0800H
-program_memory_bank_1:
- ;; spend some time and wait for interrupt
- mov r2, #013h
- djnz r2, $
-
-call_instruction:
- ;; interrupt must hit this CALL (checked by examining stack
- ;; in interrupt handler)
- call test_call
- ret
-
- ORG 0900H
-test_call:
- ;; program flow continues in pass case here after interrupt
- ret
t48/rel_1_2/sw/verif/white_box/int_on_call/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/white_box/p1_port_reg_conflict/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/white_box/p1_port_reg_conflict/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/white_box/p1_port_reg_conflict/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-External ports not modelled in detail in i8039 emulator.
Index: t48/rel_1_2/sw/verif/white_box/p1_port_reg_conflict/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/white_box/p1_port_reg_conflict/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/white_box/p1_port_reg_conflict/test.asm (nonexistent)
@@ -1,119 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test P1 conflict for reading port or output register.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; access testbench peripherals
- mov r0, #0FFH
- mov a, #002H
- movx @r0, a
-
- ;; check functionality of P1 testbench peripheral
- in a, p1
- inc a
- jnz fail
-
- mov r0, #000H
- ;; extern write 00H to P1
- clr a
- movx @r0, a
- in a, p1
- jnz fail
- ;; extern write 0AAH to P1
- mov a, #0AAH
- movx @r0, a
- clr a
- in a, p1
- add a, #056H
- jnz fail
- ;; extern write 055H to P1
- mov a, #055H
- movx @r0, a
- clr a
- in a, p1
- add a, #0ABH
- jnz fail
-
- ;; reset extern P1 to 0FFH
- dec a
- movx @r0, a
-
- ;;
- ;; Start of real test
- ;;
-
- ;; Test ORL
-
- ;; set internal P1 to 0AAH
- mov a, #0AAH
- outl p1, a
- in a, p1
- add a, #056H
- jnz fail
-
- ;; extern write 055H to P1
- mov a, #055H
- movx @r0, a
-
- in a, p1
- jnz fail
-
- ;; set internal P1 to 0ABH, setting P1[0] to 1
- orl P1, #001H
- in a, p1
- dec a
- jnz fail
-
- ;; reset extern P1 to 0FFH
- dec a
- movx @r0, a
-
- ;; compare P1 vs. 0ABH
- in a, p1
- cpl a
- add a, #0ABH
- cpl a
- jnz fail
-
- ;; reset intern P1 to 0FFH
- dec a
- outl p1, a
-
- ;; set internal P1 to 055H
- mov a, #055H
- outl p1, a
- clr a
- in a, p1
- add a, #0ABH
- jnz fail
-
- ;; external write 0AAH to P1
- mov a, #0AAH
- movx @r0, a
-
- ;; set internal P1 to 054H
- anl P1, #0FEH
-
- ;; reset extern P1 to 0FFH
- mov a, #0FFH
- movx @r0, a
-
- ;; compare P1 vs. 054H
- in a, p1
- cpl a
- add a, #054H
- cpl a
- jnz fail
-
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/white_box/p1_port_reg_conflict/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/white_box/p2_port_reg_conflict/no_dump_compare
===================================================================
--- t48/rel_1_2/sw/verif/white_box/p2_port_reg_conflict/no_dump_compare (revision 296)
+++ t48/rel_1_2/sw/verif/white_box/p2_port_reg_conflict/no_dump_compare (nonexistent)
@@ -1,2 +0,0 @@
-Reason why this cell is exluded from dump compare:
-External ports not modelled in detail for i8039 emulator.
Index: t48/rel_1_2/sw/verif/white_box/p2_port_reg_conflict/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/white_box/p2_port_reg_conflict/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/white_box/p2_port_reg_conflict/test.asm (nonexistent)
@@ -1,119 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test P2 conflict for reading port or output register.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; access testbench peripherals
- mov r0, #0FFH
- mov a, #002H
- movx @r0, a
-
- ;; check functionality of P2 testbench peripheral
- in a, p2
- inc a
- jnz fail
-
- mov r0, #001H
- ;; extern write 00H to P2
- clr a
- movx @r0, a
- in a, p2
- jnz fail
- ;; extern write 0AAH to P2
- mov a, #0AAH
- movx @r0, a
- clr a
- in a, p2
- add a, #056H
- jnz fail
- ;; extern write 055H to P2
- mov a, #055H
- movx @r0, a
- clr a
- in a, p2
- add a, #0ABH
- jnz fail
-
- ;; reset extern P2 to 0FFH
- dec a
- movx @r0, a
-
- ;;
- ;; Start of real test
- ;;
-
- ;; Test ORL
-
- ;; set internal P2 to 0AAH
- mov a, #0AAH
- outl p2, a
- in a, p2
- add a, #056H
- jnz fail
-
- ;; extern write 055H to P2
- mov a, #055H
- movx @r0, a
-
- in a, p2
- jnz fail
-
- ;; set internal P2 to 0ABH, setting P2[0] to 1
- orl P2, #001H
- in a, p2
- dec a
- jnz fail
-
- ;; reset extern P2 to 0FFH
- dec a
- movx @r0, a
-
- ;; compare P2 vs. 0ABH
- in a, p2
- cpl a
- add a, #0ABH
- cpl a
- jnz fail
-
- ;; reset intern P2 to 0FFH
- dec a
- outl p2, a
-
- ;; set internal P2 to 055H
- mov a, #055H
- outl p2, a
- clr a
- in a, p2
- add a, #0ABH
- jnz fail
-
- ;; external write 0AAH to P2
- mov a, #0AAH
- movx @r0, a
-
- ;; set internal P2 to 054H
- anl P2, #0FEH
-
- ;; reset extern P2 to 0FFH
- mov a, #0FFH
- movx @r0, a
-
- ;; compare P2 vs. 054H
- in a, p2
- cpl a
- add a, #054H
- cpl a
- jnz fail
-
-
-pass: PASS
-
-fail: FAIL
t48/rel_1_2/sw/verif/white_box/p2_port_reg_conflict/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/white_box/p2_io_exp/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/white_box/p2_io_exp/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/white_box/p2_io_exp/test.asm (nonexistent)
@@ -1,43 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
- jmp start
-
-
-start:
- call test_code
- sel mb0
-
-
-pass: PASS
-
-fail: FAIL
-
-
-
- ORG 0400H
-test_code:
- ;; write to P2
- mov a, #089h
- outl p2, a
-
- ;; use expander
- mov a, #00ch
- movd p5, a
-
- ;; write to P2
- mov a, #098h
- outl p2, a
-
- ;; use expander
- movd a, p6
-
- ret
t48/rel_1_2/sw/verif/white_box/p2_io_exp/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/white_box/int_on_mb1/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/white_box/int_on_mb1/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/white_box/int_on_mb1/test.asm (nonexistent)
@@ -1,59 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test interrupt on code in Program Memory Bank 1.
- ;; => Bug report "Problem with INT and JMP"
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
-test_byte: equ 020h
-
- ORG 0
-
- ;; Start of test
- jmp start
-
- ;; interrupt hits djnz instruction with opcode 0EAh
- ;; bus conflict results on interrupt vector address 002h
- ;; -> retr instruction placed here, so test finds FAIL
- retr
-
- ORG 3
- ;; interrupt executed
- mov r0, #test_byte
- mov a, #0ffh
- mov @r0, a
- retr
-
-start:
- ;; enable interrupt
- en i
-
- ;; clear test byte
- mov r1, #test_byte
- clr a
- mov @r1, a
-
- call program_memory_bank_1
- sel mb0
-
- ;; check if interrupt was successful
- mov a, @r1
- jz fail
-
-
-pass: PASS
-
-fail: FAIL
-
-
-
- ORG 0800H
-program_memory_bank_1:
- ;; spend some time and wait for interrupt
- mov r2, #020h
- djnz r2, $
-
- ret
t48/rel_1_2/sw/verif/white_box/int_on_mb1/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/white_box/psen_rd_wr_timing/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/white_box/psen_rd_wr_timing/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/white_box/psen_rd_wr_timing/test.asm (nonexistent)
@@ -1,59 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test overlap of PSEN and RD/WR.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; access external memory
- mov r0, #0FFH
- mov a, #001H
- movx @r0, a
-
- ;; jump to external Program Memory
- jmp extern_rom
-
-pass: PASS
-
-fail: FAIL
-
-
- ORG 0800H
-extern_rom:
- ;; write to external memory
- mov r0, #010H
- mov a, #0A5H
- movx @r0, a
- cpl a
- mov r1, a
- inc r0
- movx @r0, a
-
- ;; read back data
- movx a, @r0
- cpl a
- add a, r1
- cpl a
- jz read_next
- jmp fail
-
-read_next:
- mov a, r1
- cpl a
- mov r1, a
- dec r0
- movx a, @r0
- cpl a
- add a, r1
- cpl a
- jz read_ok
- jmp fail
-
-read_ok:
- jmp pass
t48/rel_1_2/sw/verif/white_box/psen_rd_wr_timing/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/white_box/pc_wrap_bit11/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/white_box/pc_wrap_bit11/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/white_box/pc_wrap_bit11/test.asm (nonexistent)
@@ -1,45 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Test wrap-around of Program Counter on bits 10 - 0.
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- ;; Start of test
-
- ;; decide whether this is the first time that the test
- ;; executes from address 0
- in a, P1
- jnz first_time
-
- ;; came here for the second time
- ;; -> that's great!
- jmp pass
-
-first_time:
- clr a
- outl P1, a ; tag P1 -> lock this path
- ;; jump to external Program Memory
- jmp end_of_first_2k
-
-pass: PASS
-
-fail: FAIL
-
-
- ;; end of first 2k program memory
- ORG 07FEH
-end_of_first_2k:
- nop
- nop
- ;; no wrap-around to address 0
-
-
- ORG 0800H
-
- jmp fail
-
t48/rel_1_2/sw/verif/white_box/pc_wrap_bit11/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/gp_sw/toggle/test.asm
===================================================================
--- t48/rel_1_2/sw/verif/gp_sw/toggle/test.asm (revision 296)
+++ t48/rel_1_2/sw/verif/gp_sw/toggle/test.asm (nonexistent)
@@ -1,23 +0,0 @@
- ;; *******************************************************************
- ;; $Id$
- ;;
- ;; Toggle P1[0]
- ;; *******************************************************************
-
- INCLUDE "cpu.inc"
- INCLUDE "pass_fail.inc"
-
- ORG 0
-
- mov a, #0FFH
-
-loop: outl p1, a
- xrl a, #001H
-
- mov r1, #000H
-wait1:
- mov r0, #000H
-wait2: djnz r0, wait2
- djnz r1, wait1
-
- jmp loop
t48/rel_1_2/sw/verif/gp_sw/toggle/test.asm
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/verif/include/cpu.inc
===================================================================
--- t48/rel_1_2/sw/verif/include/cpu.inc (revision 296)
+++ t48/rel_1_2/sw/verif/include/cpu.inc (nonexistent)
@@ -1,2 +0,0 @@
-
- CPU 8048
Index: t48/rel_1_2/sw/verif/include/Makefile.core
===================================================================
--- t48/rel_1_2/sw/verif/include/Makefile.core (revision 296)
+++ t48/rel_1_2/sw/verif/include/Makefile.core (nonexistent)
@@ -1,36 +0,0 @@
-
-.PHONY: all
-all: t3x t48 t49
-
-.PHONY: t3x
-t3x: $(SIM_DIR)/rom_t3x.hex $(SIM_DIR)/rom_t3x_ext.hex
-
-.PHONY: t48
-t48: $(SIM_DIR)/rom_t48.hex $(SIM_DIR)/rom_t48_ext.hex
-
-.PHONY: t49
-t49: $(SIM_DIR)/rom_t49.hex $(SIM_DIR)/rom_t49_ext.hex
-
-
-$(MODULE).p: $(MODULE).asm
- asl -i $(VERIF_DIR)/include -L $<
-
-$(SIM_DIR)/rom_t3x.hex: $(MODULE).p
- p2hex -r 0-0 $< $@
-$(SIM_DIR)/rom_t3x_ext.hex: $(MODULE).p
- p2hex -r 0-4095 $< $@
-
-$(SIM_DIR)/rom_t48.hex: $(MODULE).p
- p2hex -r 0-1023 $< $@
-# lowest 1k of external ROM will not be used
-$(SIM_DIR)/rom_t48_ext.hex: $(MODULE).p
- p2hex -r 1024-4095 $< $@
-
-$(SIM_DIR)/rom_t49.hex: $(MODULE).p
- p2hex -r 0-2047 $< $@
-$(SIM_DIR)/rom_t49_ext.hex: $(MODULE).p
- p2hex -a -r 2048-4095 $< $@
-
-.PHONY: clean
-clean:
- rm -f *.p *~ *.hex *.lst
Index: t48/rel_1_2/sw/verif/include/pass_fail.inc
===================================================================
--- t48/rel_1_2/sw/verif/include/pass_fail.inc (revision 296)
+++ t48/rel_1_2/sw/verif/include/pass_fail.inc (nonexistent)
@@ -1,12 +0,0 @@
-
-FAIL MACRO
- mov a, #0AAH
- mov a, #055H
- mov a, #000H
- ENDM
-
-PASS MACRO
- mov a, #0AAH
- mov a, #055H
- mov a, #001H
- ENDM
Index: t48/rel_1_2/sw/verif/include/Makefile.cell
===================================================================
--- t48/rel_1_2/sw/verif/include/Makefile.cell (revision 296)
+++ t48/rel_1_2/sw/verif/include/Makefile.cell (nonexistent)
@@ -1,4 +0,0 @@
-
-MODULE=test
-
-include $(VERIF_DIR)/include/Makefile.core
Index: t48/rel_1_2/sw/init_project.template.sh
===================================================================
--- t48/rel_1_2/sw/init_project.template.sh (revision 296)
+++ t48/rel_1_2/sw/init_project.template.sh (nonexistent)
@@ -1,17 +0,0 @@
-##############################################################################
-#
-# Template script to set up all project-specific environemt variables.
-#
-# Copy this script to init_project.sh and fill in your local information.
-#
-# This script has to be sourced from the command line!
-# Do not run it as a 'usual' program, as this does not set the variables
-# in the current shell process.
-#
-##############################################################################
-
-export PROJECT_DIR=/t48
-export VERIF_DIR=$PROJECT_DIR/sw/verif
-export SIM_DIR=$PROJECT_DIR/sim/rtl_sim
-
-export PATH=$PATH:$PROJECT_DIR/sw
Index: t48/rel_1_2/sw/run_regression.pl
===================================================================
--- t48/rel_1_2/sw/run_regression.pl (revision 296)
+++ t48/rel_1_2/sw/run_regression.pl (nonexistent)
@@ -1,165 +0,0 @@
-#!/usr/bin/perl -w
-#
-# ############################################################################
-#
-# run_regression.pl
-#
-# $Id$
-#
-# Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
-#
-# All rights reserved
-#
-# ############################################################################
-#
-# Purpose:
-# ========
-#
-# Runs regression suite over all testcells found in $VERIF_DIR.
-#
-# run_regression.pl [-d]
-# -d : Perform a dump compare on each test with the i8039 simulator.
-#
-# The testcells are identified by searching for the .asm file(s).
-# Each testcell is built by calling the central Makefile.cell.
-# The resulting hex-file is then copied to $SIM_DIR where the VHDL simulator
-# is started.
-#
-# Exceptions for a testcell are defined by additional files.
-# no_gen : don't execute the generic/default testbench tb_behav_c0
-# no_t48 : don't execute the t8048 testbench tb_t8048_behav_c0
-# no_t39 : don't execute the t8039 testbench tb_t8039_behav_c0
-# no_dump_compare : don't include testcell when running dump compares
-# io_exp : use the testbenches containing the t8243 IO expander
-# tb_t8243_behav_c0
-# tb_t8048_t8243_behav_c0
-#
-
-
-use strict;
-
-use Getopt::Std;
-
-
-sub print_usage {
- print < './tb_behav_c0',
- 't48' => './tb_t8048_behav_c0',
- 't39' => './tb_t8039_behav_c0');
-my %ghdl_io_expanders = ('gen' => './tb_t8243_behav_c0',
- 't48' => './tb_t8048_t8243_behav_c0');
-my $ghdl_simulator_opt = '--assert-level=error --stop-time=20ms';
-my $ghdl_simulator_vcd = './tb_behav_c0 --assert-level=error --vcd=temp.vcd';
-#
-# Choose simulator:
-my %vhdl_simulators = %ghdl_simulators;
-my %vhdl_io_expanders = %ghdl_io_expanders;
-my $vhdl_simulator_opt = $ghdl_simulator_opt;
-my $vhdl_simulator_vcd = $ghdl_simulator_vcd;
-my ($vhdl_simulator_tag, $vhdl_simulator);
-#
-##############################################################################
-
-
-# process command line options
-if (!getopts('d', \%options)) {
- print_usage();
- exit(1);
-}
-
-if (exists($options{'d'})) {
- $dump_compare = 1;
-}
-
-$pwd = `pwd`;
-chomp($pwd);
-
-
-@asm_files = `find \$VERIF_DIR/black_box -name '*.asm'`;
-push(@asm_files, `find \$VERIF_DIR/white_box -name '*.asm'`);
-
-
-foreach $asm_file (@asm_files) {
- chomp($asm_file);
- # strip off assembler file names
- $asm_file =~ s/\/[^\/]+\.asm//;
- # strip off verification directory
- $asm_file =~ s/$ENV{'VERIF_DIR'}\///;
- $cells{$asm_file} = 1;
-}
-
-while (($cell, $tag) = each(%cells)) {
- $cell_dir = "$ENV{'VERIF_DIR'}/$cell";
-
- if (chdir($cell_dir)) {
- print("Processing $cell\n");
-
- $dump_compare_cell = -e 'no_dump_compare' ? 0 : $dump_compare;
- $io_exp_cell = -e 'io_exp' ? 1 : 0;
-
- system('rm -f $SIM_DIR/*.hex');
- system('make -f $VERIF_DIR/include/Makefile.cell clean');
- system('make -f $VERIF_DIR/include/Makefile.cell all clean');
- if ($? == 0) {
- chdir($ENV{'SIM_DIR'});
-
- if ($dump_compare_cell) {
- system($vhdl_simulator_vcd);
- system('rm -f dump sim.dump vhdl.dump');
- system('vcd2vec.pl -s ../../sw/dump_compare.signals < temp.vcd | vec2dump.pl > vhdl.dump');
- system('i8039 -f t48_rom.hex -x t48_ext_rom.hex -d > dump');
- system('egrep \':.+\|\' dump | sed -e \'s/[^|]*. *//\' > sim.dump');
- system('diff -b -q sim.dump vhdl.dump');
- print("Dump Compare: ");
- if ($? == 0) {
- print("PASS\n");
- } else {
- print("FAIL\n");
- }
- system('rm -f dump sim.dump vhdl.dump temp.vcd');
- } elsif ($dump_compare) {
- print("Dump Compare: Excluded\n");
- } else {
- # decide which simulator set is chosen for this cell
- my %cell_simulators = $io_exp_cell ? %vhdl_io_expanders :
- %vhdl_simulators;
-
- # run all enabled simulators
- while (($vhdl_simulator_tag, $vhdl_simulator) = each %cell_simulators) {
- if (! -e "$cell_dir/no_$vhdl_simulator_tag") {
- print("Executing simulator $vhdl_simulator_tag\n");
- system($vhdl_simulator." ".$vhdl_simulator_opt);
- }
- }
- }
-
- } else {
- print("Error: Cannot make cell $cell!\n");
- }
- } else {
- print("Error: Cannot change to directory $cell_dir!\n");
- }
-}
-
-chdir($pwd);
t48/rel_1_2/sw/run_regression.pl
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/vec2dump.pl
===================================================================
--- t48/rel_1_2/sw/vec2dump.pl (revision 296)
+++ t48/rel_1_2/sw/vec2dump.pl (nonexistent)
@@ -1,167 +0,0 @@
-#!/usr/bin/perl -w
-#
-# ############################################################################
-#
-# vec2dump.pl
-#
-# $Id$
-#
-# Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
-#
-# All rights reserved
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version. See also the file COPYING which
-# came with this application.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# ############################################################################
-#
-# Purpose:
-# ========
-#
-# Converts a vector file into the dump format for dump_compare.
-#
-# A vector stream is read from STDIN and the resulting dump is written
-# to STDOUT.
-#
-
-
-use strict;
-
-
-sub bin2hex {
- my $string = shift;
- my ($bit, $hex);
-
- $hex = 0;
- foreach $bit (split(//, $string)) {
- $hex <<= 1;
- $hex |= $bit;
- }
-
- return(sprintf("%02X", $hex));
-}
-
-sub hex8 {
- my $uint = shift;
-
- if ($uint =~ /^b(.+)$/) {
- return(bin2hex($1));
- } else {
- return('??');
- }
-}
-
-sub hex16 {
- my $uint = shift;
-
- if ($uint =~ /^b(.+)(........)$/) {
- return(bin2hex($1).bin2hex($2));
- } else {
- return('????');
- }
-}
-
-sub dump_ram {
- my $ram = shift;
- my $elem;
-
- foreach $elem (@{$ram}) {
- print($elem.' ');
- }
-}
-
-
-my (@signals, %index, @vector);
-my $i;
-my $value;
-my $line;
-my $istrobe;
-my @ram;
-
-
-# initialize RAM
-for ($i = 0; $i < 256; $i++) {
- $ram[$i] = '00';
-}
-
-
-# scan for signal names
-while () {
- if (/^(\S+):/) {
- chomp($_);
- @signals = split(/ +/);
-
- # remove time information
- shift(@signals);
- last;
- }
-}
-
-# build index
-for ($i = 0; $i < scalar(@signals); $i++) {
- # strip off hierarchical path
- $signals[$i] =~ s/.*\.//;
- $index{$signals[$i]} = $i;
-}
-
-$istrobe = 0;
-# read vectors
-while () {
- if (/^\d+> /) {
- chop($_);
- @vector = split(/ +/);
-
- # remove time information
- shift(@vector);
-
- # process write operation to RAM
- if ($vector[$index{'we_tmp'}] eq '1') {
- $ram[hex(hex8($vector[$index{'address_tmp[7:0]'}]))] = hex8($vector[$index{'data_tmp[7:0]'}]);
- }
-
- # find falling instruction strobe
- if ($istrobe == 0) {
- $istrobe = $vector[0];
- next;
- } else {
- $istrobe = $vector[0];
- if ($vector[0] == 0) {
- # falling edge detected
- } else {
- next;
- }
- }
-
- # process each signal
- for ($i = 1; $i < scalar(@vector); $i++) {
- $_ = $signals[$i];
- $line = '';
-
- SWITCH: {
- if (/^program_counter/) { print(hex16($vector[$i]).' '); last; }
- if (/^accumulator/) { print(hex8($vector[$i]).' '); last; }
- if (/^sp/) { print(hex8($vector[$i]).' '); last; }
- if (/^psw/) { print(hex8($vector[$i]).' '); last; }
- if (/^bus/) { print(hex8($vector[$i]).' '); last; }
- if (/^f1/) { print($vector[$i].' '); last; }
- if (/^p1/) { print(hex8($vector[$i]).' '); last; }
- if (/^p2/) { print(hex8($vector[$i]).' '); last; }
- if (/^mb/) { print($vector[$i].' '); last; }
- if (/^we_tmp/) { dump_ram(\@ram); last; }
- }
- }
- print("\n");
- }
-}
t48/rel_1_2/sw/vec2dump.pl
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/i8039emu/i8039.c
===================================================================
--- t48/rel_1_2/sw/i8039emu/i8039.c (revision 296)
+++ t48/rel_1_2/sw/i8039emu/i8039.c (nonexistent)
@@ -1,841 +0,0 @@
-/****************************************************************************
- * Intel 8039 Portable Emulator *
- * *
- * Copyright (C) 1997 by Mirko Buffoni *
- * Based on the original work (C) 1997 by Dan Boris, an 8048 emulator *
- * You are not allowed to distribute this software commercially *
- * Please, notify me, if you make any changes to this file *
- * *
- * Adapted for the T48 uController project, 2004 by Arnim Laeuger *
- * See http://www.opencores.org/projects.cgi/web/t48/overview *
- * *
- * $Id$
- * *
- * **** Change Log **** *
- * *
- * TLP (19-Jun-2001) *
- * - Changed Ports 1 and 2 to quasi bidirectional output latched ports *
- * - Added the Port 1 & 2 output latch data to the debugger window *
- * TLP (02-Jan-2002) *
- * - External IRQs no longer go pending (sampled as a level state) *
- * - Timer IRQs do not go pending if Timer interrupts are disabled *
- * - Timer IRQs made pending, were incorrectly being cleared if the *
- * external interrupt was being serviced *
- * - External interrupts now take precedence when simultaneous *
- * internal and external interrupt requests occur *
- * - 'DIS TCNTI' now removes pending timer IRQs *
- * - Nested IRQs of any sort are no longer allowed *
- * - T_flag was not being set in the right place of execution, which *
- * could have lead to it being incorrectly set after being cleared *
- * - Counter overflows now also set the T_flag *
- * - Added the Timer/Counter register to the debugger window *
- * TLP (09-Jan-2002) *
- * - Changed Interrupt system to instant servicing *
- * - The Timer and Counter can no longer be 'on' simultaneously *
- * - Added Save State *
- * TLP (15-Feb-2002) *
- * - Corrected Positive signal edge sensing (used on the T1 input) *
- ****************************************************************************/
-
-
-#include
-#include
-#include
-
-#include "i8039.h"
-
-
-/*** Cycle times for the jump on condition instructions, are unusual.
- Condition is tested during the first cycle, so if condition is not
- met, second address fetch cycle may not really be taken. For now we
- just use the cycle counts as listed in the i8048 user manual.
-***/
-
-#if 0
-#define ADJUST_CYCLES { inst_cycles -= 1; } /* Possible real cycles setting */
-#else
-#define ADJUST_CYCLES { } /* User Manual cycles setting */
-#endif
-
-
-
-/* HJB 01/05/99 changed to positive values to use pending_irq as a flag */
-#define I8039_NO_INT 0 /* No Interrupts pending or executing */
-#define I8039_EXTERNAL_INT 1 /* Execute a normal external interrupt */
-#define I8039_TIMCNT_INT 2 /* Execute a Timer/Counter interrupt */
-
-
-/* Layout of the registers in the debugger */
-static UINT8 i8039_reg_layout[] = {
- I8039_PC, I8039_SP, I8039_PSW, I8039_A, I8039_TC, I8039_P1, I8039_P2, -1,
- I8039_R0, I8039_R1, I8039_R2, I8039_R3, I8039_R4, I8039_R5, I8039_R6, I8039_R7, 0
-};
-
-/* Layout of the debugger windows x,y,w,h */
-static UINT8 i8039_win_layout[] = {
- 0, 0,80, 2, /* register window (top rows) */
- 0, 3,24,19, /* disassembler window (left colums) */
- 25, 3,55, 9, /* memory #1 window (right, upper middle) */
- 25,13,55, 9, /* memory #2 window (right, lower middle) */
- 0,23,80, 1, /* command line window (bottom rows) */
-};
-
-
-static int Ext_IRQ(void);
-static int Timer_IRQ(void);
-
-#define M_RDMEM(A) I8039_RDMEM(A)
-#define M_RDOP(A) I8039_RDOP(A)
-#define M_RDOP_ARG(A) I8039_RDOP_ARG(A)
-#define M_IN(A) I8039_In(A)
-#define M_OUT(A,V) I8039_Out(A,V)
-
-#define port_r(A) I8039_In(I8039_p0 + A)
-#define port_w(A,V) I8039_Out(I8039_p0 + A,V)
-#define test_r(A) I8039_In(I8039_t0 + A)
-#define test_w(A,V) I8039_Out(I8039_t0 + A,V)
-#define bus_r() I8039_In(I8039_bus)
-#define bus_w(V) I8039_Out(I8039_bus,V)
-
-#define C_FLAG 0x80
-#define A_FLAG 0x40
-#define F_FLAG 0x20
-#define B_FLAG 0x10
-
-typedef struct
-{
- PAIR PREVPC; /* previous program counter */
- PAIR PC; /* program counter */
- UINT8 A, SP, PSW;
- UINT8 RAM[256];
- UINT8 bus, f1; /* Bus data, and flag1 */
- UINT8 P1, P2; /* Internal Port 1 and 2 latched outputs */
-
- UINT8 pending_irq, irq_executing, masterClock, regPtr;
- UINT8 t_flag, timer, timerON, countON, xirq_en, tirq_en;
- UINT16 A11, A11ff;
- UINT8 irq_state, irq_extra_cycles;
- int (*irq_callback)(int irqline);
-} I8039_Regs;
-
-static I8039_Regs R;
-int i8039_ICount;
-int inst_cycles;
-static UINT8 Old_T1;
-
-/* The opcode table now is a combination of cycle counts and function pointers */
-typedef struct {
- unsigned cycles;
- void (*function) (void);
-} s_opcode;
-
-#define POSITIVE_EDGE_T1 (( (int)(T1-Old_T1) > 0) ? 1 : 0)
-#define NEGATIVE_EDGE_T1 (( (int)(Old_T1-T1) > 0) ? 1 : 0)
-
-#define M_Cy ((R.PSW & C_FLAG) >> 7)
-#define M_Cn (!M_Cy)
-#define M_Ay ((R.PSW & A_FLAG))
-#define M_An (!M_Ay)
-#define M_F0y ((R.PSW & F_FLAG))
-#define M_F0n (!M_F0y)
-#define M_By ((R.PSW & B_FLAG))
-#define M_Bn (!M_By)
-
-#define intRAM R.RAM
-#define regPTR R.regPtr
-
-#define R0 intRAM[regPTR ]
-#define R1 intRAM[regPTR+1]
-#define R2 intRAM[regPTR+2]
-#define R3 intRAM[regPTR+3]
-#define R4 intRAM[regPTR+4]
-#define R5 intRAM[regPTR+5]
-#define R6 intRAM[regPTR+6]
-#define R7 intRAM[regPTR+7]
-
-
-INLINE void CLR (UINT8 flag) { R.PSW &= ~flag; }
-INLINE void SET (UINT8 flag) { R.PSW |= flag; }
-
-
-/* Get next opcode argument and increment program counter */
-INLINE unsigned M_RDMEM_OPCODE (void)
-{
- unsigned retval;
- retval=M_RDOP_ARG(R.PC.w.l);
- R.PC.w.l++;
- return retval;
-}
-
-INLINE void push(UINT8 d)
-{
- intRAM[8+R.SP++] = d;
- R.SP = R.SP & 0x0f;
- R.PSW = R.PSW & 0xf8;
- R.PSW = R.PSW | (R.SP >> 1);
-}
-
-INLINE UINT8 pull(void) {
- R.SP = (R.SP + 15) & 0x0f; /* if (--R.SP < 0) R.SP = 15; */
- R.PSW = R.PSW & 0xf8;
- R.PSW = R.PSW | (R.SP >> 1);
- /* regPTR = ((M_By) ? 24 : 0); regPTR should not change */
- return intRAM[8+R.SP];
-}
-
-INLINE void daa_a(void)
-{
- if ((R.A & 0x0f) > 0x09 || (R.PSW & A_FLAG))
- R.A += 0x06;
- if ((R.A & 0xf0) > 0x90 || (R.PSW & C_FLAG))
- {
- R.A += 0x60;
- SET(C_FLAG);
- } else CLR(C_FLAG);
-}
-
-INLINE void M_ADD(UINT8 dat)
-{
- UINT16 temp;
-
- CLR(C_FLAG | A_FLAG);
- if ((R.A & 0xf) + (dat & 0xf) > 0xf) SET(A_FLAG);
- temp = R.A + dat;
- if (temp > 0xff) SET(C_FLAG);
- R.A = temp & 0xff;
-}
-
-INLINE void M_ADDC(UINT8 dat)
-{
- UINT16 temp;
-
- CLR(A_FLAG);
- if ((R.A & 0xf) + (dat & 0xf) + M_Cy > 0xf) SET(A_FLAG);
- temp = R.A + dat + M_Cy;
- CLR(C_FLAG);
- if (temp > 0xff) SET(C_FLAG);
- R.A = temp & 0xff;
-}
-
-INLINE void M_CALL(UINT16 addr)
-{
- push(R.PC.b.l);
- push((R.PC.b.h & 0x0f) | (R.PSW & 0xf0));
- R.PC.w.l = addr;
-
-}
-
-INLINE void M_XCHD(UINT8 addr)
-{
- UINT8 dat = R.A & 0x0f;
- R.A &= 0xf0;
- R.A |= intRAM[addr] & 0x0f;
- intRAM[addr] &= 0xf0;
- intRAM[addr] |= dat;
-}
-
-
-INLINE void M_ILLEGAL(void)
-{
- logerror("I8039: PC = %04x, Illegal opcode = %02x\n", R.PC.w.l-1, M_RDMEM(R.PC.w.l-1));
-}
-
-INLINE void M_UNDEFINED(void)
-{
- logerror("I8039: PC = %04x, Unimplemented opcode = %02x\n", R.PC.w.l-1, M_RDMEM(R.PC.w.l-1));
-}
-
-#define INT_RAM_MASK 0xff
-
-static void illegal(void) { M_ILLEGAL(); }
-
-static void add_a_n(void) { M_ADD(M_RDMEM_OPCODE()); }
-static void add_a_r0(void) { M_ADD(R0); }
-static void add_a_r1(void) { M_ADD(R1); }
-static void add_a_r2(void) { M_ADD(R2); }
-static void add_a_r3(void) { M_ADD(R3); }
-static void add_a_r4(void) { M_ADD(R4); }
-static void add_a_r5(void) { M_ADD(R5); }
-static void add_a_r6(void) { M_ADD(R6); }
-static void add_a_r7(void) { M_ADD(R7); }
-static void add_a_xr0(void) { M_ADD(intRAM[R0 & INT_RAM_MASK]); }
-static void add_a_xr1(void) { M_ADD(intRAM[R1 & INT_RAM_MASK]); }
-static void adc_a_n(void) { M_ADDC(M_RDMEM_OPCODE()); }
-static void adc_a_r0(void) { M_ADDC(R0); }
-static void adc_a_r1(void) { M_ADDC(R1); }
-static void adc_a_r2(void) { M_ADDC(R2); }
-static void adc_a_r3(void) { M_ADDC(R3); }
-static void adc_a_r4(void) { M_ADDC(R4); }
-static void adc_a_r5(void) { M_ADDC(R5); }
-static void adc_a_r6(void) { M_ADDC(R6); }
-static void adc_a_r7(void) { M_ADDC(R7); }
-static void adc_a_xr0(void) { M_ADDC(intRAM[R0 & INT_RAM_MASK]); }
-static void adc_a_xr1(void) { M_ADDC(intRAM[R1 & INT_RAM_MASK]); }
-static void anl_a_n(void) { R.A &= M_RDMEM_OPCODE(); }
-static void anl_a_r0(void) { R.A &= R0; }
-static void anl_a_r1(void) { R.A &= R1; }
-static void anl_a_r2(void) { R.A &= R2; }
-static void anl_a_r3(void) { R.A &= R3; }
-static void anl_a_r4(void) { R.A &= R4; }
-static void anl_a_r5(void) { R.A &= R5; }
-static void anl_a_r6(void) { R.A &= R6; }
-static void anl_a_r7(void) { R.A &= R7; }
-static void anl_a_xr0(void) { R.A &= intRAM[R0 & INT_RAM_MASK]; }
-static void anl_a_xr1(void) { R.A &= intRAM[R1 & INT_RAM_MASK]; }
-static void anl_bus_n(void) { bus_w( bus_r() & M_RDMEM_OPCODE() ); }
-static void anl_p1_n(void) { R.P1 &= M_RDMEM_OPCODE(); port_w( 1, R.P1 ); }
-static void anl_p2_n(void) { R.P2 &= M_RDMEM_OPCODE(); port_w( 2, R.P2 ); }
-static void anld_p4_a(void) { port_w( 4, port_r(4) & M_RDMEM_OPCODE() ); }
-static void anld_p5_a(void) { port_w( 5, port_r(5) & M_RDMEM_OPCODE() ); }
-static void anld_p6_a(void) { port_w( 6, port_r(6) & M_RDMEM_OPCODE() ); }
-static void anld_p7_a(void) { port_w( 7, port_r(7) & M_RDMEM_OPCODE() ); }
-static void call(void) { UINT8 i=M_RDMEM_OPCODE(); M_CALL(i | R.A11); }
-static void call_1(void) { UINT8 i=M_RDMEM_OPCODE(); M_CALL(i | 0x100 | R.A11); }
-static void call_2(void) { UINT8 i=M_RDMEM_OPCODE(); M_CALL(i | 0x200 | R.A11); }
-static void call_3(void) { UINT8 i=M_RDMEM_OPCODE(); M_CALL(i | 0x300 | R.A11); }
-static void call_4(void) { UINT8 i=M_RDMEM_OPCODE(); M_CALL(i | 0x400 | R.A11); }
-static void call_5(void) { UINT8 i=M_RDMEM_OPCODE(); M_CALL(i | 0x500 | R.A11); }
-static void call_6(void) { UINT8 i=M_RDMEM_OPCODE(); M_CALL(i | 0x600 | R.A11); }
-static void call_7(void) { UINT8 i=M_RDMEM_OPCODE(); M_CALL(i | 0x700 | R.A11); }
-static void clr_a(void) { R.A=0; }
-static void clr_c(void) { CLR(C_FLAG); }
-static void clr_f0(void) { CLR(F_FLAG); }
-static void clr_f1(void) { R.f1 = 0; }
-static void cpl_a(void) { R.A ^= 0xff; }
-static void cpl_c(void) { R.PSW ^= C_FLAG; }
-static void cpl_f0(void) { R.PSW ^= F_FLAG; }
-static void cpl_f1(void) { R.f1 ^= 1; }
-static void dec_a(void) { R.A--; }
-static void dec_r0(void) { R0--; }
-static void dec_r1(void) { R1--; }
-static void dec_r2(void) { R2--; }
-static void dec_r3(void) { R3--; }
-static void dec_r4(void) { R4--; }
-static void dec_r5(void) { R5--; }
-static void dec_r6(void) { R6--; }
-static void dec_r7(void) { R7--; }
-static void dis_i(void) { R.xirq_en = 0; }
-static void dis_tcnti(void) { R.tirq_en = 0; R.pending_irq &= ~I8039_TIMCNT_INT; }
-static void djnz_r0(void) { UINT8 i=M_RDMEM_OPCODE(); R0--; if (R0 != 0) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void djnz_r1(void) { UINT8 i=M_RDMEM_OPCODE(); R1--; if (R1 != 0) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void djnz_r2(void) { UINT8 i=M_RDMEM_OPCODE(); R2--; if (R2 != 0) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void djnz_r3(void) { UINT8 i=M_RDMEM_OPCODE(); R3--; if (R3 != 0) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void djnz_r4(void) { UINT8 i=M_RDMEM_OPCODE(); R4--; if (R4 != 0) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void djnz_r5(void) { UINT8 i=M_RDMEM_OPCODE(); R5--; if (R5 != 0) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void djnz_r6(void) { UINT8 i=M_RDMEM_OPCODE(); R6--; if (R6 != 0) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void djnz_r7(void) { UINT8 i=M_RDMEM_OPCODE(); R7--; if (R7 != 0) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void en_i(void) { R.xirq_en = 1; if (R.irq_state == I8039_EXTERNAL_INT) { R.irq_extra_cycles += Ext_IRQ(); } }
-static void en_tcnti(void) { R.tirq_en = 1; }
-static void ento_clk(void) { M_UNDEFINED(); }
-static void in_a_p1(void) { R.A = port_r(1) & R.P1; }
-static void in_a_p2(void) { R.A = port_r(2) & R.P2; }
-static void ins_a_bus(void) { R.A = bus_r(); }
-static void inc_a(void) { R.A++; }
-static void inc_r0(void) { R0++; }
-static void inc_r1(void) { R1++; }
-static void inc_r2(void) { R2++; }
-static void inc_r3(void) { R3++; }
-static void inc_r4(void) { R4++; }
-static void inc_r5(void) { R5++; }
-static void inc_r6(void) { R6++; }
-static void inc_r7(void) { R7++; }
-static void inc_xr0(void) { intRAM[R0 & INT_RAM_MASK]++; }
-static void inc_xr1(void) { intRAM[R1 & INT_RAM_MASK]++; }
-
-/* static void jmp(void) { UINT8 i=M_RDOP(R.PC.w.l); R.PC.w.l = i | R.A11; }
- */
-
-static void jmp(void)
-{
- UINT8 i=M_RDOP(R.PC.w.l);
- UINT16 oldpc,newpc;
-
- oldpc = R.PC.w.l-1;
- R.PC.w.l = i | R.A11;
- newpc = R.PC.w.l;
- if (newpc == oldpc) { if (i8039_ICount > 0) i8039_ICount = 0; } /* speed up busy loop */
- else if (newpc == oldpc-1 && M_RDOP(newpc) == 0x00) /* NOP - Gyruss */
- { if (i8039_ICount > 0) i8039_ICount = 0; }
-}
-
-static void jmp_1(void) { UINT8 i=M_RDOP(R.PC.w.l); R.PC.w.l = i | 0x100 | R.A11; }
-static void jmp_2(void) { UINT8 i=M_RDOP(R.PC.w.l); R.PC.w.l = i | 0x200 | R.A11; }
-static void jmp_3(void) { UINT8 i=M_RDOP(R.PC.w.l); R.PC.w.l = i | 0x300 | R.A11; }
-static void jmp_4(void) { UINT8 i=M_RDOP(R.PC.w.l); R.PC.w.l = i | 0x400 | R.A11; }
-static void jmp_5(void) { UINT8 i=M_RDOP(R.PC.w.l); R.PC.w.l = i | 0x500 | R.A11; }
-static void jmp_6(void) { UINT8 i=M_RDOP(R.PC.w.l); R.PC.w.l = i | 0x600 | R.A11; }
-static void jmp_7(void) { UINT8 i=M_RDOP(R.PC.w.l); R.PC.w.l = i | 0x700 | R.A11; }
-static void jmpp_xa(void) { UINT16 addr = (R.PC.w.l & 0xf00) | R.A; R.PC.w.l = (R.PC.w.l & 0xf00) | M_RDMEM(addr); }
-static void jb_0(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.A & 0x01) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jb_1(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.A & 0x02) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jb_2(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.A & 0x04) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jb_3(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.A & 0x08) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jb_4(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.A & 0x10) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jb_5(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.A & 0x20) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jb_6(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.A & 0x40) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jb_7(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.A & 0x80) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jf0(void) { UINT8 i=M_RDMEM_OPCODE(); if (M_F0y) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jf1(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.f1) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jnc(void) { UINT8 i=M_RDMEM_OPCODE(); if (M_Cn) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jc(void) { UINT8 i=M_RDMEM_OPCODE(); if (M_Cy) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jni(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.irq_state == I8039_EXTERNAL_INT) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jnt_0(void) { UINT8 i=M_RDMEM_OPCODE(); if (!test_r(0)) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jt_0(void) { UINT8 i=M_RDMEM_OPCODE(); if (test_r(0)) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jnt_1(void) { UINT8 i=M_RDMEM_OPCODE(); if (!test_r(1)) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jt_1(void) { UINT8 i=M_RDMEM_OPCODE(); if (test_r(1)) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jnz(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.A != 0) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jz(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.A == 0) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; } else ADJUST_CYCLES }
-static void jtf(void) { UINT8 i=M_RDMEM_OPCODE(); if (R.t_flag) { R.PC.w.l = ((R.PC.w.l-1) & 0xf00) | i; R.t_flag = 0; } else ADJUST_CYCLES }
-
-static void mov_a_n(void) { R.A = M_RDMEM_OPCODE(); }
-static void mov_a_r0(void) { R.A = R0; }
-static void mov_a_r1(void) { R.A = R1; }
-static void mov_a_r2(void) { R.A = R2; }
-static void mov_a_r3(void) { R.A = R3; }
-static void mov_a_r4(void) { R.A = R4; }
-static void mov_a_r5(void) { R.A = R5; }
-static void mov_a_r6(void) { R.A = R6; }
-static void mov_a_r7(void) { R.A = R7; }
-static void mov_a_psw(void) { R.A = R.PSW | 0x08; }
-static void mov_a_xr0(void) { R.A = intRAM[R0 & INT_RAM_MASK]; }
-static void mov_a_xr1(void) { R.A = intRAM[R1 & INT_RAM_MASK]; }
-static void mov_r0_a(void) { R0 = R.A; }
-static void mov_r1_a(void) { R1 = R.A; }
-static void mov_r2_a(void) { R2 = R.A; }
-static void mov_r3_a(void) { R3 = R.A; }
-static void mov_r4_a(void) { R4 = R.A; }
-static void mov_r5_a(void) { R5 = R.A; }
-static void mov_r6_a(void) { R6 = R.A; }
-static void mov_r7_a(void) { R7 = R.A; }
-static void mov_psw_a(void) { R.PSW = R.A | 0x08; regPTR = ((M_By) ? 24 : 0); R.SP = (R.PSW & 7) << 1; }
-static void mov_r0_n(void) { R0 = M_RDMEM_OPCODE(); }
-static void mov_r1_n(void) { R1 = M_RDMEM_OPCODE(); }
-static void mov_r2_n(void) { R2 = M_RDMEM_OPCODE(); }
-static void mov_r3_n(void) { R3 = M_RDMEM_OPCODE(); }
-static void mov_r4_n(void) { R4 = M_RDMEM_OPCODE(); }
-static void mov_r5_n(void) { R5 = M_RDMEM_OPCODE(); }
-static void mov_r6_n(void) { R6 = M_RDMEM_OPCODE(); }
-static void mov_r7_n(void) { R7 = M_RDMEM_OPCODE(); }
-static void mov_a_t(void) { R.A = R.timer; }
-static void mov_t_a(void) { R.timer = R.A; }
-static void mov_xr0_a(void) { intRAM[R0 & INT_RAM_MASK] = R.A; }
-static void mov_xr1_a(void) { intRAM[R1 & INT_RAM_MASK] = R.A; }
-static void mov_xr0_n(void) { intRAM[R0 & INT_RAM_MASK] = M_RDMEM_OPCODE(); }
-static void mov_xr1_n(void) { intRAM[R1 & INT_RAM_MASK] = M_RDMEM_OPCODE(); }
-static void movd_a_p4(void) { R.A = port_r(4); }
-static void movd_a_p5(void) { R.A = port_r(5); }
-static void movd_a_p6(void) { R.A = port_r(6); }
-static void movd_a_p7(void) { R.A = port_r(7); }
-static void movd_p4_a(void) { port_w(4, R.A); }
-static void movd_p5_a(void) { port_w(5, R.A); }
-static void movd_p6_a(void) { port_w(6, R.A); }
-static void movd_p7_a(void) { port_w(7, R.A); }
-static void movp_a_xa(void) { R.A = M_RDMEM((R.PC.w.l & 0x0f00) | R.A); }
-static void movp3_a_xa(void) { R.A = M_RDMEM(0x300 | R.A); }
-static void movx_a_xr0(void) { R.A = M_IN(R0); }
-static void movx_a_xr1(void) { R.A = M_IN(R1); }
-static void movx_xr0_a(void) { M_OUT(R0, R.A); }
-static void movx_xr1_a(void) { M_OUT(R1, R.A); }
-static void nop(void) { }
-static void orl_a_n(void) { R.A |= M_RDMEM_OPCODE(); }
-static void orl_a_r0(void) { R.A |= R0; }
-static void orl_a_r1(void) { R.A |= R1; }
-static void orl_a_r2(void) { R.A |= R2; }
-static void orl_a_r3(void) { R.A |= R3; }
-static void orl_a_r4(void) { R.A |= R4; }
-static void orl_a_r5(void) { R.A |= R5; }
-static void orl_a_r6(void) { R.A |= R6; }
-static void orl_a_r7(void) { R.A |= R7; }
-static void orl_a_xr0(void) { R.A |= intRAM[R0 & INT_RAM_MASK]; }
-static void orl_a_xr1(void) { R.A |= intRAM[R1 & INT_RAM_MASK]; }
-static void orl_bus_n(void) { bus_w( bus_r() | M_RDMEM_OPCODE() ); }
-static void orl_p1_n(void) { R.P1 |= M_RDMEM_OPCODE(); port_w(1, R.P1); }
-static void orl_p2_n(void) { R.P2 |= M_RDMEM_OPCODE(); port_w(2, R.P2); }
-static void orld_p4_a(void) { port_w(4, port_r(4) | R.A ); }
-static void orld_p5_a(void) { port_w(5, port_r(5) | R.A ); }
-static void orld_p6_a(void) { port_w(6, port_r(6) | R.A ); }
-static void orld_p7_a(void) { port_w(7, port_r(7) | R.A ); }
-static void outl_bus_a(void) { bus_w(R.A); }
-static void outl_p1_a(void) { port_w(1, R.A); R.P1 = R.A; }
-static void outl_p2_a(void) { port_w(2, R.A); R.P2 = R.A; }
-static void ret(void) { R.PC.w.l = ((pull() & 0x0f) << 8); R.PC.w.l |= pull(); }
-
-static void retr(void)
-{
- UINT8 i=pull();
- R.PC.w.l = ((i & 0x0f) << 8) | pull();
- R.PSW = (R.PSW & 0x0f) | (i & 0xf0); /* Stack is already changed by pull */
- regPTR = ((M_By) ? 24 : 0);
-
- R.irq_executing = I8039_NO_INT;
-
- R.A11 = R.A11ff;
-
- /* Take an interrupt if a request is still being made */
- if (R.irq_state == I8039_EXTERNAL_INT) {
- R.irq_extra_cycles += Ext_IRQ(); /* Service External IRQ */
- }
- else if (R.pending_irq == I8039_TIMCNT_INT) {
- R.irq_extra_cycles += Timer_IRQ(); /* Service pending Timer/Counter IRQ */
- }
-}
-static void rl_a(void) { UINT8 i=R.A & 0x80; R.A <<= 1; if (i) R.A |= 0x01; else R.A &= 0xfe; }
-/* NS990113 */
-static void rlc_a(void) { UINT8 i=M_Cy; if (R.A & 0x80) SET(C_FLAG); else CLR(C_FLAG); R.A <<= 1; if (i) R.A |= 0x01; else R.A &= 0xfe; }
-static void rr_a(void) { UINT8 i=R.A & 1; R.A >>= 1; if (i) R.A |= 0x80; else R.A &= 0x7f; }
-/* NS990113 */
-static void rrc_a(void) { UINT8 i=M_Cy; if (R.A & 1) SET(C_FLAG); else CLR(C_FLAG); R.A >>= 1; if (i) R.A |= 0x80; else R.A &= 0x7f; }
-static void sel_mb0(void) { R.A11 = 0; R.A11ff = 0; }
-static void sel_mb1(void) { R.A11ff = 0x800; R.A11 = 0x800; }
-static void sel_rb0(void) { CLR(B_FLAG); regPTR = 0; }
-static void sel_rb1(void) { SET(B_FLAG); regPTR = 24; }
-static void stop_tcnt(void) { R.timerON = R.countON = 0; }
-static void strt_cnt(void) { R.countON = 1; R.timerON = 0; Old_T1 = test_r(1); } /* NS990113 */
-static void strt_t(void) { R.timerON = 1; R.countON = 0; R.masterClock = 0; } /* NS990113 */
-static void swap_a(void) { UINT8 i=R.A >> 4; R.A <<= 4; R.A |= i; }
-static void xch_a_r0(void) { UINT8 i=R.A; R.A=R0; R0=i; }
-static void xch_a_r1(void) { UINT8 i=R.A; R.A=R1; R1=i; }
-static void xch_a_r2(void) { UINT8 i=R.A; R.A=R2; R2=i; }
-static void xch_a_r3(void) { UINT8 i=R.A; R.A=R3; R3=i; }
-static void xch_a_r4(void) { UINT8 i=R.A; R.A=R4; R4=i; }
-static void xch_a_r5(void) { UINT8 i=R.A; R.A=R5; R5=i; }
-static void xch_a_r6(void) { UINT8 i=R.A; R.A=R6; R6=i; }
-static void xch_a_r7(void) { UINT8 i=R.A; R.A=R7; R7=i; }
-static void xch_a_xr0(void) { UINT8 i=R.A; R.A=intRAM[R0 & INT_RAM_MASK]; intRAM[R0 & INT_RAM_MASK]=i; }
-static void xch_a_xr1(void) { UINT8 i=R.A; R.A=intRAM[R1 & INT_RAM_MASK]; intRAM[R1 & INT_RAM_MASK]=i; }
-static void xchd_a_xr0(void) { M_XCHD(R0 & INT_RAM_MASK); }
-static void xchd_a_xr1(void) { M_XCHD(R1 & INT_RAM_MASK); }
-static void xrl_a_n(void) { R.A ^= M_RDMEM_OPCODE(); }
-static void xrl_a_r0(void) { R.A ^= R0; }
-static void xrl_a_r1(void) { R.A ^= R1; }
-static void xrl_a_r2(void) { R.A ^= R2; }
-static void xrl_a_r3(void) { R.A ^= R3; }
-static void xrl_a_r4(void) { R.A ^= R4; }
-static void xrl_a_r5(void) { R.A ^= R5; }
-static void xrl_a_r6(void) { R.A ^= R6; }
-static void xrl_a_r7(void) { R.A ^= R7; }
-static void xrl_a_xr0(void) { R.A ^= intRAM[R0 & INT_RAM_MASK]; }
-static void xrl_a_xr1(void) { R.A ^= intRAM[R1 & INT_RAM_MASK]; }
-
-static s_opcode opcode_main[256]=
-{
- {1, nop },{0, illegal },{2, outl_bus_a },{2, add_a_n },{2, jmp },{1, en_i },{0, illegal },{1, dec_a },
- {2, ins_a_bus },{2, in_a_p1 },{2, in_a_p2 },{0, illegal },{2, movd_a_p4 },{2, movd_a_p5 },{2, movd_a_p6 },{2, movd_a_p7 },
- {1, inc_xr0 },{1, inc_xr1 },{2, jb_0 },{2, adc_a_n },{2, call },{1, dis_i },{2, jtf },{1, inc_a },
- {1, inc_r0 },{1, inc_r1 },{1, inc_r2 },{1, inc_r3 },{1, inc_r4 },{1, inc_r5 },{1, inc_r6 },{1, inc_r7 },
- {1, xch_a_xr0 },{1, xch_a_xr1 },{0, illegal },{2, mov_a_n },{2, jmp_1 },{1, en_tcnti },{2, jnt_0 },{1, clr_a },
- {1, xch_a_r0 },{1, xch_a_r1 },{1, xch_a_r2 },{1, xch_a_r3 },{1, xch_a_r4 },{1, xch_a_r5 },{1, xch_a_r6 },{1, xch_a_r7 },
- {1, xchd_a_xr0 },{1, xchd_a_xr1 },{2, jb_1 },{0, illegal },{2, call_1 },{1, dis_tcnti },{2, jt_0 },{1, cpl_a },
- {0, illegal },{2, outl_p1_a },{2, outl_p2_a },{0, illegal },{2, movd_p4_a },{2, movd_p5_a },{2, movd_p6_a },{2, movd_p7_a },
- {1, orl_a_xr0 },{1, orl_a_xr1 },{1, mov_a_t },{2, orl_a_n },{2, jmp_2 },{1, strt_cnt },{2, jnt_1 },{1, swap_a },
- {1, orl_a_r0 },{1, orl_a_r1 },{1, orl_a_r2 },{1, orl_a_r3 },{1, orl_a_r4 },{1, orl_a_r5 },{1, orl_a_r6 },{1, orl_a_r7 },
- {1, anl_a_xr0 },{1, anl_a_xr1 },{2, jb_2 },{2, anl_a_n },{2, call_2 },{1, strt_t },{2, jt_1 },{1, daa_a },
- {1, anl_a_r0 },{1, anl_a_r1 },{1, anl_a_r2 },{1, anl_a_r3 },{1, anl_a_r4 },{1, anl_a_r5 },{1, anl_a_r6 },{1, anl_a_r7 },
- {1, add_a_xr0 },{1, add_a_xr1 },{1, mov_t_a },{0, illegal },{2, jmp_3 },{1, stop_tcnt },{0, illegal },{1, rrc_a },
- {1, add_a_r0 },{1, add_a_r1 },{1, add_a_r2 },{1, add_a_r3 },{1, add_a_r4 },{1, add_a_r5 },{1, add_a_r6 },{1, add_a_r7 },
- {1, adc_a_xr0 },{1, adc_a_xr1 },{2, jb_3 },{0, illegal },{2, call_3 },{1, ento_clk },{2, jf1 },{1, rr_a },
- {1, adc_a_r0 },{1, adc_a_r1 },{1, adc_a_r2 },{1, adc_a_r3 },{1, adc_a_r4 },{1, adc_a_r5 },{1, adc_a_r6 },{1, adc_a_r7 },
- {2, movx_a_xr0 },{2, movx_a_xr1 },{0, illegal },{2, ret },{2, jmp_4 },{1, clr_f0 },{2, jni },{0, illegal },
- {2, orl_bus_n },{2, orl_p1_n },{2, orl_p2_n },{0, illegal },{2, orld_p4_a },{2, orld_p5_a },{2, orld_p6_a },{2, orld_p7_a },
- {2, movx_xr0_a },{2, movx_xr1_a },{2, jb_4 },{2, retr },{2, call_4 },{1, cpl_f0 },{2, jnz },{1, clr_c },
- {2, anl_bus_n },{2, anl_p1_n },{2, anl_p2_n },{0, illegal },{2, anld_p4_a },{2, anld_p5_a },{2, anld_p6_a },{2, anld_p7_a },
- {1, mov_xr0_a },{1, mov_xr1_a },{0, illegal },{2, movp_a_xa },{2, jmp_5 },{1, clr_f1 },{0, illegal },{1, cpl_c },
- {1, mov_r0_a },{1, mov_r1_a },{1, mov_r2_a },{1, mov_r3_a },{1, mov_r4_a },{1, mov_r5_a },{1, mov_r6_a },{1, mov_r7_a },
- {2, mov_xr0_n },{2, mov_xr1_n },{2, jb_5 },{2, jmpp_xa },{2, call_5 },{1, cpl_f1 },{2, jf0 },{0, illegal },
- {2, mov_r0_n },{2, mov_r1_n },{2, mov_r2_n },{2, mov_r3_n },{2, mov_r4_n },{2, mov_r5_n },{2, mov_r6_n },{2, mov_r7_n },
- {0, illegal },{0, illegal },{0, illegal },{0, illegal },{2, jmp_6 },{1, sel_rb0 },{2, jz },{1, mov_a_psw },
- {1, dec_r0 },{1, dec_r1 },{1, dec_r2 },{1, dec_r3 },{1, dec_r4 },{1, dec_r5 },{1, dec_r6 },{1, dec_r7 },
- {1, xrl_a_xr0 },{1, xrl_a_xr1 },{2, jb_6 },{2, xrl_a_n },{2, call_6 },{1, sel_rb1 },{0, illegal },{1, mov_psw_a },
- {1, xrl_a_r0 },{1, xrl_a_r1 },{1, xrl_a_r2 },{1, xrl_a_r3 },{1, xrl_a_r4 },{1, xrl_a_r5 },{1, xrl_a_r6 },{1, xrl_a_r7 },
- {0, illegal },{0, illegal },{0, illegal },{2, movp3_a_xa },{2, jmp_7 },{1, sel_mb0 },{2, jnc },{1, rl_a },
- {2, djnz_r0 },{2, djnz_r1 },{2, djnz_r2 },{2, djnz_r3 },{2, djnz_r4 },{2, djnz_r5 },{2, djnz_r6 },{2, djnz_r7 },
- {1, mov_a_xr0 },{1, mov_a_xr1 },{2, jb_7 },{0, illegal },{2, call_7 },{1, sel_mb1 },{2, jc },{1, rlc_a },
- {1, mov_a_r0 },{1, mov_a_r1 },{1, mov_a_r2 },{1, mov_a_r3 },{1, mov_a_r4 },{1, mov_a_r5 },{1, mov_a_r6 },{1, mov_a_r7 }
-};
-
-
-/****************************************************************************
- * Reset registers to their initial values
- ****************************************************************************/
-void i8039_reset (void *param)
-{
- R.PC.w.l = 0;
- R.SP = 0;
- R.A = 0;
- R.PSW = 0x08; /* Start with Carry SET, Bit 4 is always SET */
- memset(R.RAM, 0x0, 128);
- R.P1 = 0xff;
- R.P2 = 0xff;
- R.bus = 0;
- R.irq_executing = I8039_NO_INT;
- R.pending_irq = I8039_NO_INT;
-
- R.A11ff = R.A11 = 0;
- R.tirq_en = R.xirq_en = 0;
- R.timerON = R.countON = 0;
- R.timerON = 1; /* Mario Bros. doesn't work without this */
- R.irq_extra_cycles = 0;
- R.masterClock = 0;
-
- /* print dump header */
- printf(" Addr | Instruction | PC Accu SP PSW BUS F1 P1 P2 A11 RAM\n");
- printf(" ------+--------------------+---------------------------------------\n");
-}
-
-
-/****************************************************************************
- * Shut down CPU emulation
- ****************************************************************************/
-static void i8039_exit (void)
-{
- /* nothing to do ? */
-}
-
-/****************************************************************************
- * Issue an interrupt if necessary
- ****************************************************************************/
-static int Ext_IRQ(void)
-{
- int extra_cycles = 0;
-
- if (R.xirq_en) {
- if (R.irq_executing == I8039_NO_INT) {
-/* logerror("I8039: EXT INTERRUPT being serviced\n"); */
- R.irq_executing = I8039_EXTERNAL_INT;
- push(R.PC.b.l);
- push((R.PC.b.h & 0x0f) | (R.PSW & 0xf0));
- R.PC.w.l = 0x03;
- R.A11ff = R.A11;
- R.A11 = 0;
-
- extra_cycles = 2; /* 2 clock cycles used */
-
- if (R.timerON) /* NS990113 */
- R.masterClock += extra_cycles;
- if (R.irq_callback) (*R.irq_callback)(0);
- }
- }
-
- return extra_cycles;
-}
-
-static int Timer_IRQ(void)
-{
- int extra_cycles = 0;
-
- if (R.tirq_en) {
- if (R.irq_executing == I8039_NO_INT) {
-/* logerror("I8039: TIMER/COUNTER INTERRUPT\n"); */
- R.irq_executing = I8039_TIMCNT_INT;
- R.pending_irq &= ~I8039_TIMCNT_INT;
- push(R.PC.b.l);
- push((R.PC.b.h & 0x0f) | (R.PSW & 0xf0));
- R.PC.w.l = 0x07;
- R.A11ff = R.A11;
- R.A11 = 0;
-
- extra_cycles = 2; /* 2 clock cycles used */
-
- if (R.timerON) /* NS990113 */
- R.masterClock += extra_cycles;
- }
- else {
- if (R.irq_executing == I8039_EXTERNAL_INT) {
- R.pending_irq |= I8039_TIMCNT_INT;
- }
- }
- }
-
- R.t_flag = 1;
-
- return extra_cycles;
-}
-
-
-static void dump_machine_state(void)
-{
- int i;
-
- printf(" | %04X %02X %02X %02X", (UINT32)R.PC.w.l, (UINT32)R.A, (UINT32)(R.SP >> 1), (UINT32)R.PSW);
- printf(" %02X %X %02X %02X", (UINT32)R.bus, (UINT32)R.f1, (UINT32)R.P1, (UINT32)R.P2);
- printf(" %X ", (UINT32)(R.A11ff >> 11));
-
- for (i = 0; i < 256; i++)
- printf(" %02X", R.RAM[i]);
-
- printf("\n");
-}
-
-
-enum {ACCU_IDLE, ACCU_HAS_AA, ACCU_HAS_55, ACCU_PASS, ACCU_FAIL};
-
-/****************************************************************************
- * Execute cycles CPU cycles. Return number of cycles really executed
- ****************************************************************************/
-int i8039_execute(int cycles, int dump)
-{
- unsigned opcode, T1;
- int count, i;
- char buffer[64];
- char string[32];
-
- static int accu = 0;
- static int accu_state = ACCU_IDLE;
-
- i8039_ICount = (cycles - R.irq_extra_cycles);
- R.irq_extra_cycles = 0;
-
- if ((accu_state == ACCU_PASS) || (accu_state == ACCU_FAIL)) {
- printf("End of simulation detected\n");
-
- return(accu_state == ACCU_PASS ? 0 : -1);
- }
-
- do
- {
- R.PREVPC = R.PC;
-
-
- opcode=M_RDOP(R.PC.w.l);
-
- buffer[0] = '\0';
- Dasm8039(buffer, R.PC.w.l);
- sprintf(string, " %04X : %s", R.PC.w.l, buffer);
- for (i = strlen(string); i < 26; i++)
- string[i] = ' ';
- string[i <= 31 ? i : 31] = '\0';
- printf("%s", string);
-
-/* logerror("I8039: PC = %04x, opcode = %02x\n", R.PC.w.l, opcode); */
-
- R.PC.w.l++;
- inst_cycles = opcode_main[opcode].cycles;
- (*(opcode_main[opcode].function))();
- i8039_ICount -= inst_cycles; /*/ */
-
- if (dump == 1) {
- /* dump machine state information */
- dump_machine_state();
- } else
- printf("\n");
-
- /* end-of-simulation check */
- if (accu != R.A) {
- accu = R.A;
-
- switch (accu_state) {
- case ACCU_IDLE:
- accu_state = accu == 0xaa ? ACCU_HAS_AA : ACCU_IDLE;
- break;
-
- case ACCU_HAS_AA:
- accu_state = accu == 0x55 ? ACCU_HAS_55 : ACCU_IDLE;
- break;
-
- case ACCU_HAS_55:
- switch (accu) {
- case 0x01:
- accu_state = ACCU_PASS;
- break;
- case 0x00:
- accu_state = ACCU_FAIL;
- break;
- default:
- accu_state = ACCU_IDLE;
- break;
- }
- break;
-
- case ACCU_PASS:
- case ACCU_FAIL:
- break;
-
- default:
- accu_state = ACCU_IDLE;
- break;
- }
- }
-
-
-
-
- if (R.countON) /* NS990113 */
- {
- for ( ; inst_cycles > 0; inst_cycles-- )
- {
- T1 = test_r(1);
- if (NEGATIVE_EDGE_T1)
- {
- R.timer++;
- if (R.timer == 0) {
- count = Timer_IRQ(); /* Handle Counter IRQ */
- i8039_ICount -= count;
- }
- }
- Old_T1 = T1;
- }
- }
-
- if (R.timerON) {
- R.masterClock += opcode_main[opcode].cycles;
- if (R.masterClock >= 32) { /* NS990113 */
- R.masterClock -= 32;
- R.timer++;
- if (R.timer == 0) {
- count = Timer_IRQ(); /* Handle Timer IRQ */
- i8039_ICount -= count;
- }
- }
- }
- } while (i8039_ICount > 0 && accu_state != ACCU_PASS && accu_state != ACCU_FAIL);
-
- i8039_ICount -= R.irq_extra_cycles;
- R.irq_extra_cycles = 0;
-
- return cycles - i8039_ICount;
-}
-
-/****************************************************************************
- * Get all registers in given buffer
- ****************************************************************************/
-static void i8039_get_context (void *dst)
-{
- if( dst )
- *(I8039_Regs*)dst = R;
-}
-
-
-/****************************************************************************
- * Set all registers to given values
- ****************************************************************************/
-static void i8039_set_context (void *src)
-{
- if( src )
- {
- R = *(I8039_Regs*)src;
- regPTR = ((M_By) ? 24 : 0);
- R.SP = (R.PSW << 1) & 0x0f;
- }
- /* Handle forced Interrupts throught the Debugger */
- if (R.irq_state != I8039_NO_INT) {
- R.irq_extra_cycles += Ext_IRQ(); /* Handle External IRQ */
- }
- if (R.timer == 0) {
- R.irq_extra_cycles += Timer_IRQ(); /* Handle Timer IRQ */
- }
-}
-
-
-/****************************************************************************
- * Set IRQ line state
- ****************************************************************************/
-void set_irq_line(int irqline, int state)
-{
- if (state != CLEAR_LINE) {
- R.irq_state = I8039_EXTERNAL_INT;
- R.irq_extra_cycles += Ext_IRQ(); /* Handle External IRQ */
- }
- else {
- R.irq_state = I8039_NO_INT;
- }
-}
t48/rel_1_2/sw/i8039emu/i8039.c
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/i8039emu/Makefile
===================================================================
--- t48/rel_1_2/sw/i8039emu/Makefile (revision 296)
+++ t48/rel_1_2/sw/i8039emu/Makefile (nonexistent)
@@ -1,25 +0,0 @@
-
-CFLAGS = -Wall
-
-.PHONY: all
-all: i8039
-
-i8039: i8039.o memory.o main.o 8039dasm.o
- gcc -s -o i8039 main.o i8039.o memory.o 8039dasm.o
-
-i8039.o: i8039.h i8039.c types.h memory.h
- gcc $(CFLAGS) -O -c i8039.c
-
-8039dasm.o: 8039dasm.c
- gcc $(CFLAGS) -O -c 8039dasm.c
-
-memory.o: memory.c memory.h types.h
- gcc $(CFLAGS) -O -c memory.c
-
-main.o: main.c memory.h types.h i8039.h
- gcc $(CFLAGS) -O -c main.c
-
-
-.PHONY: clean
-clean:
- rm -f *.o *~ i8039 log
Index: t48/rel_1_2/sw/i8039emu/memory.h
===================================================================
--- t48/rel_1_2/sw/i8039emu/memory.h (revision 296)
+++ t48/rel_1_2/sw/i8039emu/memory.h (nonexistent)
@@ -1,26 +0,0 @@
-/*
- * $Id: memory.h,v 1.2 2004-07-03 14:35:52 arniml Exp $
- *
- */
-
-#ifndef _MEMORY_H_
-#define _MEMORY_H_
-
-#include "types.h"
-
-typedef UINT32 offs_t;
-
-
-UINT8 program_read_byte_8(UINT16);
-
-UINT8 cpu_readop(UINT16);
-
-UINT8 cpu_readop_arg(UINT16);
-
-UINT8 io_read_byte_8(UINT8);
-
-void io_write_byte_8(UINT8, UINT8);
-
-int read_hex_file(char *, UINT16);
-
-#endif
Index: t48/rel_1_2/sw/i8039emu/i8039.h
===================================================================
--- t48/rel_1_2/sw/i8039emu/i8039.h (revision 296)
+++ t48/rel_1_2/sw/i8039emu/i8039.h (nonexistent)
@@ -1,107 +0,0 @@
-/**************************************************************************
- * Intel 8039 Portable Emulator *
- * *
- * Copyright (C) 1997 by Mirko Buffoni *
- * Based on the original work (C) 1997 by Dan Boris, an 8048 emulator *
- * You are not allowed to distribute this software commercially *
- * Please, notify me, if you make any changes to this file *
- * *
- * Adapted for the T48 uController project, 2004 by Arnim Laeuger *
- * See http://www.opencores.org/projects.cgi/web/t48/overview *
- * *
- * $Id: i8039.h,v 1.2 2004-04-15 22:03:53 arniml Exp $
- **************************************************************************/
-
-#ifndef _I8039_H
-#define _I8039_H
-
-#ifndef INLINE
-#define INLINE static inline
-#endif
-
-#include "types.h"
-
-
-/**************************************************************************
- Internal Clock divisor
-
- External Clock is divided internally by 3 to produce the machine state
- generator. This is then divided by 5 for the instruction cycle times.
- (Each instruction cycle passes through 5 machine states).
-*/
-
-#define I8039_CLOCK_DIVIDER (3*5)
-
-
-
-enum { I8039_PC=1, I8039_SP, I8039_PSW, I8039_A, I8039_TC,
- I8039_P1, I8039_P2, I8039_R0, I8039_R1, I8039_R2,
- I8039_R3, I8039_R4, I8039_R5, I8039_R6, I8039_R7
-};
-
-/* This handling of special I/O ports should be better for actual MAME
- * architecture. (i.e., define access to ports { I8039_p1, I8039_p1, dkong_out_w })
- */
-
-#define I8039_p0 0x100 /* Not used */
-#define I8039_p1 0x101
-#define I8039_p2 0x102
-#define I8039_p4 0x104
-#define I8039_p5 0x105
-#define I8039_p6 0x106
-#define I8039_p7 0x107
-#define I8039_t0 0x110
-#define I8039_t1 0x111
-#define I8039_bus 0x120
-
-
-#include "memory.h"
-
-/*
- * Input a UINT8 from given I/O port
- */
-#define I8039_In(Port) ((UINT8)io_read_byte_8((UINT8)Port))
-
-
-/*
- * Output a UINT8 to given I/O port
- */
-#define I8039_Out(Port,Value) (io_write_byte_8((UINT8)Port,(UINT8)Value))
-
-
-/*
- * Read a UINT8 from given memory location
- */
-#define I8039_RDMEM(A) ((unsigned)program_read_byte_8(A))
-
-
-/*
- * Write a UINT8 to given memory location
- */
-#define I8039_WRMEM(A,V) (program_write_byte_8(A,V))
-
-
-/*
- * I8039_RDOP() is identical to I8039_RDMEM() except it is used for reading
- * opcodes. In case of system with memory mapped I/O, this function can be
- * used to greatly speed up emulation
- */
-#define I8039_RDOP(A) ((unsigned)cpu_readop(A))
-
-
-/*
- * I8039_RDOP_ARG() is identical to I8039_RDOP() except it is used for reading
- * opcode arguments. This difference can be used to support systems that
- * use different encoding mechanisms for opcodes and opcode arguments
- */
-#define I8039_RDOP_ARG(A) ((unsigned)cpu_readop_arg(A))
-
-int Dasm8039(char *dst, unsigned pc);
-
-void i8039_reset(void *);
-int i8039_execute(int, int);
-void set_irq_line(int, int);
-
-void logerror(char *, UINT16, UINT8);
-
-#endif /* _I8039_H */
Index: t48/rel_1_2/sw/i8039emu/main.c
===================================================================
--- t48/rel_1_2/sw/i8039emu/main.c (revision 296)
+++ t48/rel_1_2/sw/i8039emu/main.c (nonexistent)
@@ -1,128 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
- *
- * All rights reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version. See also the file COPYING which
- * came with this application.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include
-#include
-#include
-
-#include "types.h"
-#include "memory.h"
-#include "i8039.h"
-
-
-void logerror(char *msg, UINT16 address, UINT8 opcode)
-{
-}
-
-
-void print_usage(void) {
- printf("Usage:\n");
- printf(" i8039 -f [-x ] [-d] [-h]\n");
- printf(" -f : Name of hex file for internal ROM\n");
- printf(" -x : Name of hex file for external ROM (optional)\n");
- printf(" -d : Dump machine state\n");
- printf(" -h : Print this help\n");
-}
-
-
-int main(int argc, char *argv[])
-{
- int do_cycles, real_cycles, total_cycles;
- char *hex_file = "";
- char *ext_hex_file = "";
- int c;
- int dump = 0;
-
- /* process options */
- while ((c = getopt(argc, argv, "df:hx:")) != -1) {
- switch (c) {
- case 'd':
- dump = 1;
- break;
-
- case 'f':
- hex_file = optarg;
- break;
-
- case 'x':
- ext_hex_file = optarg;
- break;
-
- case 'h':
- /* fallthrough */
-
- default:
- print_usage();
- return(0);
- break;
- }
- }
-
- /* check options */
- if (strlen(hex_file) == 0) {
- print_usage();
- return(1);
- }
-
- /* read hex file for internal ROM */
- printf("Reading %s\n", hex_file);
- if (!read_hex_file(hex_file, 0)) {
- printf("Error reading file!\n");
- return(1);
- }
-
- /* read hex fiel for external ROM */
- if (strlen(ext_hex_file) > 0) {
- printf("Reading %s\n", ext_hex_file);
- if (!read_hex_file(ext_hex_file, 0x800)) {
- printf("Error reading file!\n");
- return(1);
- }
- }
-
- printf("Resetting 8039\n");
- i8039_reset(NULL);
-
- do_cycles = 52;
-
- total_cycles = 0;
-
- do {
- real_cycles = i8039_execute(do_cycles, dump);
-
- /* activate interrupt */
- set_irq_line(0, HOLD_LINE);
- /* hold interrupt for 3 machine cycles */
- real_cycles += i8039_execute(3, dump);
- set_irq_line(0, CLEAR_LINE);
-
- if (real_cycles > 0)
- total_cycles += real_cycles;
- } while (real_cycles > 0);
-
- printf("Emulated %i cycles\n", total_cycles);
- printf("Simulation Result: %s\n", real_cycles == 0 ? "PASS" : "FAIL");
-
- return(0);
-}
t48/rel_1_2/sw/i8039emu/main.c
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/i8039emu/memory.c
===================================================================
--- t48/rel_1_2/sw/i8039emu/memory.c (revision 296)
+++ t48/rel_1_2/sw/i8039emu/memory.c (nonexistent)
@@ -1,149 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
- *
- * All rights reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version. See also the file COPYING which
- * came with this application.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include
-#include
-
-#include "memory.h"
-#include "i8039.h"
-
-
-static UINT8 code_mem[4096];
-
-
-static UINT8 port1 = 0xff, port2 = 0xff;
-
-
-UINT8 program_read_byte_8(UINT16 address)
-{
- return(code_mem[address]);
-}
-
-UINT8 cpu_readop(UINT16 address)
-{
- return(code_mem[address]);
-}
-
-UINT8 cpu_readop_arg(UINT16 address)
-{
- return(code_mem[address]);
-}
-
-
-UINT8 io_read_byte_8(UINT8 address)
-{
- UINT8 data;
-
- switch (0x100 | address) {
- case I8039_p1:
- data = port1;
- break;
-
- case I8039_p2:
- data = port2;
- break;
-
- case I8039_t0:
- /* connect T0 to P1[0] */
- data = port1 & 0x01;
- break;
-
- case I8039_t1:
- /* connect T1 to P1[1] */
- data = (port1 & 0x02) >> 1;
- break;
-
- default:
- data = 0;
- break;
- }
-
-
- return(data);
-}
-
-
-void io_write_byte_8(UINT8 address, UINT8 data)
-{
- switch (0x100 | address) {
- case I8039_p1:
- port1 = data;
- break;
-
- case I8039_p2:
- port2 = data;
- break;
-
- default:
- break;
- }
-}
-
-
-int read_hex_file(char *filename, UINT16 file_offset)
-{
- FILE *hex_file;
- UINT16 record_len, offset, record_type;
- UINT16 byte;
- char line[540];
- char *payload, *idx;
- int result = 0;
-
- record_len = offset = record_type = 0;
- hex_file = fopen(filename, "r");
- if (hex_file != NULL) {
-
- while (fgets(line, 539, hex_file)) {
- if (sscanf(line, ":%2hx%4hx%2hx", &record_len, &offset, &record_type) == 3) {
- /* strip off newline */
- idx = (char *)strchr(line, '\n');
- if (idx != NULL)
- *idx = '\0';
- /* extract payload */
- payload = &(line[9]);
- /* strip of checksum */
- if (strlen(payload) > 2)
- payload[strlen(payload) - 2] = '\0';
-
- /* read payload to array */
- if (record_type == 0) {
- while (strlen(payload) >= 2) {
- if (sscanf(payload, "%2hx", &byte) == 1)
- code_mem[file_offset + offset++] = byte;
-
- payload++;
- payload++;
- }
- }
-
- }
- }
-
- result = 1;
-
- fclose(hex_file);
- }
-
- return(result);
-}
t48/rel_1_2/sw/i8039emu/memory.c
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/sw/i8039emu/8039dasm.c
===================================================================
--- t48/rel_1_2/sw/i8039emu/8039dasm.c (revision 296)
+++ t48/rel_1_2/sw/i8039emu/8039dasm.c (nonexistent)
@@ -1,289 +0,0 @@
-/****************************************************************************
- *
- * mcs48 disassembler
- *
- * This file is Copyright 1996 Michael Cuddy, Fen's Ende Sofware.
- * Redistribution is allowed in source and binary form as long as both
- * forms are distributed together with the file 'README'. This copyright
- * notice must also accompany the files.
- *
- * This software should be considered a small token to all of the
- * emulator authors for thier dilligence in preserving our Arcade and
- * Computer history.
- *
- * Michael Cuddy, Fen's Ende Software.
- * 11/25/1996
- *
- * Adapted by Andrea Mazzoleni for use with MAME
- *
- ***************************************************************************/
-
-#include
-#include
-#include
-#include
-
-#include "memory.h"
-
-typedef unsigned char byte;
-
-#define FMT(a,b) a, b
-#define PTRS_PER_FORMAT 2
-
-const char *Formats[] = {
- FMT("00000011dddddddd", "add a, #%X"),
- FMT("01101rrr", "add a, %R"),
- FMT("0110000r", "add a, @%R"),
- FMT("00010011dddddddd", "adc a, #%X"),
- FMT("01111rrr", "adc a, %R"),
- FMT("0111000r", "adc a, @%R"),
- FMT("01010011dddddddd", "anl a, #%X"),
- FMT("01011rrr", "anl a, %R"),
- FMT("0101000r", "anl a, @%R"),
- FMT("10011000dddddddd", "anl bus, #%X"),
- FMT("10011001dddddddd", "anl p1, #%X"),
- FMT("10011010dddddddd", "anl p2, #%X"),
- FMT("100111pp", "anld %P, a"),
- FMT("aaa10100aaaaaaaa", "call %A"),
- FMT("00100111", "clr a"),
- FMT("10010111", "clr c"),
- FMT("10100101", "clr f1"),
- FMT("10000101", "clr f0"),
- FMT("00110111", "cpl a"),
- FMT("10100111", "cpl c"),
- FMT("10010101", "cpl f0"),
- FMT("10110101", "cpl f1"),
- FMT("01010111", "da a"),
- FMT("00000111", "dec a"),
- FMT("11001rrr", "dec %R"),
- FMT("00010101", "dis i"),
- FMT("00110101", "dis tcnti"),
- FMT("11101rrraaaaaaaa", "djnz %R, %J"),
- FMT("00000101", "en i"),
- FMT("00100101", "en tcnti"),
- FMT("01110101", "ent0 clk"),
- FMT("00001001", "in a, p1"),
- FMT("00001010", "in a, p2"),
- FMT("00010111", "inc a"),
- FMT("00011rrr", "inc %R"),
- FMT("0001000r", "inc @%R"),
- FMT("00001000", "ins a,bus"),
- FMT("0001 0110aaaaaaaa", "jtf %J"),
- FMT("0010 0110aaaaaaaa", "jnt0 %J"),
- FMT("0011 0110aaaaaaaa", "jt0 %J"),
- FMT("0100 0110aaaaaaaa", "jnt1 %J"),
- FMT("0101 0110aaaaaaaa", "jt1 %J"),
- FMT("0111 0110aaaaaaaa", "jf1 %J"),
- FMT("1000 0110aaaaaaaa", "jni %J"),
- FMT("1001 0110aaaaaaaa", "jnz %J"),
- FMT("1011 0110aaaaaaaa", "jf0 %J"),
- FMT("1100 0110aaaaaaaa", "jz %J"),
- FMT("1110 0110aaaaaaaa", "jnc %J"),
- FMT("1111 0110aaaaaaaa", "jc %J"),
- FMT("bbb10010aaaaaaaa", "jb%B %J"),
- FMT("aaa00100aaaaaaaa", "jmp %A"),
- FMT("10110011", "jmpp @a"),
- FMT("00100011dddddddd", "mov a, #%X"),
- FMT("11111rrr", "mov a, %R"),
- FMT("1111000r", "mov a, @%R"),
- FMT("11000111", "mov a, psw"),
- FMT("10111rrrdddddddd", "mov %R, #%X"),
- FMT("10101rrr", "mov %R, a"),
- FMT("1010000r", "mov @%R, a"),
- FMT("1011000rdddddddd", "mov @%R, #%X"),
- FMT("11010111", "mov psw, a"),
- FMT("000011pp", "movd a, %P"),
- FMT("001111pp", "movd %P, a"),
- FMT("01000010", "mov a, t"),
- FMT("01100010", "mov t, a"),
- FMT("11100011", "movp3 a, @a"),
- FMT("10100011", "movp a, @a"),
- FMT("1000000r", "movx a, @%R"),
- FMT("1001000r", "movx @%R, a"),
- FMT("0100 1rrr", "orl a, %R"),
- FMT("0100 000r", "orl a, @%R"),
- FMT("0100 0011dddddddd", "orl a, #%X"),
- FMT("1000 1000dddddddd", "orl bus, #%X"),
- FMT("1000 1001dddddddd", "orl p1, #%X"),
- FMT("1000 1010dddddddd", "orl p2, #%X"),
- FMT("1000 11pp", "orld %P, a"),
- FMT("00000010", "outl bus, a"),
- FMT("001110pp", "outl %P, a"),
- FMT("10000011", "ret"),
- FMT("10010011", "retr"),
- FMT("11100111", "rl a"),
- FMT("11110111", "rlc a"),
- FMT("01110111", "rr a"),
- FMT("01100111", "rrc a"),
- FMT("11100101", "sel mb0"),
- FMT("11110101", "sel mb1"),
- FMT("11000101", "sel rb0"),
- FMT("11010101", "sel rb1"),
- FMT("01100101", "stop tcnt"),
- FMT("01000101", "strt cnt"),
- FMT("01010101", "strt t"),
- FMT("01000111", "swap a"),
- FMT("00101rrr", "xch a, %R"),
- FMT("0010000r", "xch a, @%R"),
- FMT("0011000r", "xchd a, @%R"),
- FMT("1101 0011dddddddd", "xrl a, #%X"),
- FMT("1101 1rrr", "xrl a, %R"),
- FMT("1101 000r", "xrl a, @%R"),
- FMT("00000000", "nop"),
- NULL
-};
-
-#define MAX_OPS (((sizeof(Formats) / sizeof(Formats[0])) - 1) / PTRS_PER_FORMAT)
-
-typedef struct opcode {
- byte mask; /* instruction mask */
- byte bits; /* constant bits */
- char extcode; /* value that gets extension code */
- const char *parse; /* how to parse bits */
- const char *fmt; /* instruction format */
-} M48Opcode;
-
-static M48Opcode Op[MAX_OPS+1];
-static int OpInizialized = 0;
-
-static void InitDasm8039(void)
-{
- const char *p, **ops;
- byte mask, bits;
- int bit;
- int i;
-
- ops = Formats; i = 0;
- while (*ops) {
- p = *ops;
- mask = 0; bits = 0; bit = 7;
- while (*p && bit >= 0) {
- switch (*p++) {
- case '1': mask |= 1<= 0)
- {
- /* printf("{%c/%d}",*cp,bit); */
- switch(*cp)
- {
- case 'a': a <<=1; a |= ((code & (1<
-#include
-#include
-#include
-
-using namespace std;
-
-#if !(defined(max)) && _MSC_VER
- // VC fix
- #define max __max
-#endif
-
-class MemBlock
-{
-public:
- unsigned long m_startAddress;
- vector m_bytes;
-};
-
-class File
-{
-public:
- explicit File(const char *fileName, const char *mode)
- {
- m_file = fopen(fileName, mode);
- if (m_file != NULL)
- {
- return;
- }
- string errorStr = "Error opening ";
- errorStr += fileName;
- errorStr += "\n";
- throw errorStr;
- }
-
- ~File()
- {
- fclose(m_file);
- }
-
- // Read binary file
- void ReadBin(unsigned long limit)
- {
- m_top = 0;
-
- m_chunks.push_back(MemBlock());
- m_chunks.back().m_startAddress = 0;
-
- cerr << "Reading binary file\n";
-
- int tmp = fgetc(m_file);
-
- while (!feof(m_file))
- {
- m_chunks.back().m_bytes.push_back(tmp);
-
- if (m_chunks.back().m_bytes.size() > limit + 1)
- {
- m_chunks.back().m_bytes.pop_back();
- m_top = m_chunks.back().m_bytes.size() - 1;
- cerr << "Ignoring data above address space!\n";
- cerr << " Limit: " << limit << "\n";
- return;
- }
-
- tmp = fgetc(m_file);
- }
-
- m_top = m_chunks.back().m_bytes.size() - 1;
-
- if (!m_chunks.back().m_bytes.size())
- {
- cerr << "No data!\n";
-
- m_chunks.pop_back();
- }
- }
-
- // Read hex file
- void ReadHex(unsigned long limit)
- {
- char szLine[1024];
- bool formatDetected = false;
- bool intel;
- bool endSeen = false;
- bool linear = true; // Only used for intel hex
- unsigned long addressBase = 0; // Only used for intel hex
- unsigned long dataRecords = 0; // Only used for s-record
- while (!feof(m_file))
- {
- if (fgets(szLine, 1024, m_file) == 0)
- {
- if (ferror(m_file))
- {
- throw "Error reading input!\n";
- }
- continue;
- }
-
- if (szLine[strlen(szLine) - 1] == 0xA || szLine[strlen(szLine) - 1] == 0xD)
- {
- szLine[strlen(szLine) - 1] = 0;
- }
-
- if (szLine[strlen(szLine) - 1] == 0xA || szLine[strlen(szLine) - 1] == 0xD)
- {
- szLine[strlen(szLine) - 1] = 0;
- }
-
- if (strlen(szLine) == 1023)
- {
- throw "Hex file lines to long!\n";
- }
- // Ignore blank lines
- if (szLine[0] == '\n')
- {
- continue;
- }
- // Detect format and warn if garbage lines are found
- if (!formatDetected)
- {
- if (szLine[0] != ':' && szLine[0] != 'S')
- {
- cerr << "Ignoring garbage line!\n";
- continue;
- }
- if (szLine[0] == 'S')
- {
- intel = false;
- cerr << "Detected S-Record\n";
- }
- else
- {
- intel = true;
- cerr << "Detected intel hex file\n";
- }
- formatDetected = true;
- }
- else if ((intel && szLine[0] != ':') ||
- (!intel && szLine[0] != 'S'))
- {
- cerr << "Ignoring garbage line!\n";
- continue;
- }
-
- if (endSeen)
- {
- throw "Hex line after end of file record!\n";
- }
-
- if (intel)
- {
- unsigned long dataBytes;
- unsigned long startAddress;
- unsigned long type;
- if (sscanf(&szLine[1], "%2lx%4lx%2lx", &dataBytes, &startAddress, &type) != 3)
- {
- throw "Hex line beginning corrupt!\n";
- }
- // Check line length
- if (szLine[11 + dataBytes * 2] != '\n' && szLine[11 + dataBytes * 2] != 0)
- {
- throw "Hex line length incorrect!\n";
- }
- // Check line checksum
- unsigned char checkSum = 0;
- unsigned long tmp;
- for (unsigned int i = 0; i <= dataBytes + 4; ++i)
- {
- if (sscanf(&szLine[1 + i * 2], "%2lx", &tmp) != 1)
- {
- throw "Hex line data corrupt!\n";
- }
- checkSum += tmp;
- }
- if (checkSum != 0)
- {
- throw "Hex line checksum error!\n";
- }
-
- switch (type)
- {
- case 0:
- // Data record
- if (!linear)
- {
- // Segmented
- unsigned long test = startAddress;
- test += dataBytes;
- if (test > 0xffff)
- {
- throw "Can't handle wrapped segments!\n";
- }
- }
- if (!m_chunks.size() ||
- m_chunks.back().m_startAddress + m_chunks.back().m_bytes.size() !=
- addressBase + startAddress)
- {
- m_chunks.push_back(MemBlock());
- m_chunks.back().m_startAddress = addressBase + startAddress;
- }
- {
- unsigned char i = 0;
- for (i = 0; i < dataBytes; ++i)
- {
- sscanf(&szLine[9 + i * 2], "%2lx", &tmp);
- if (addressBase + startAddress + i > limit)
- {
- cerr << "Ignoring data above address space!\n";
- cerr << "Data address: " << addressBase + startAddress + i;
- cerr << " Limit: " << limit << "\n";
- if (!m_chunks.back().m_bytes.size())
- {
- m_chunks.pop_back();
- }
- continue;
- }
- m_chunks.back().m_bytes.push_back(tmp);
- }
- }
- break;
-
- case 1:
- // End-of-file record
- if (dataBytes != 0)
- {
- cerr << "Warning: End of file record not zero length!\n";
- }
- if (startAddress != 0)
- {
- cerr << "Warning: End of file record address not zero!\n";
- }
- endSeen = true;
- break;
-
- case 2:
- // Extended segment address record
- if (dataBytes != 2)
- {
- throw "Length field must be 2 in extended segment address record!\n";
- }
- if (startAddress != 0)
- {
- throw "Address field must be zero in extended segment address record!\n";
- }
- sscanf(&szLine[9], "%4lx", &startAddress);
- addressBase = startAddress << 4;
- linear = false;
- break;
-
- case 3:
- // Start segment address record
- if (dataBytes != 4)
- {
- cerr << "Warning: Length field must be 4 in start segment address record!\n";
- }
- if (startAddress != 0)
- {
- cerr << "Warning: Address field must be zero in start segment address record!\n";
- }
- if (dataBytes == 4)
- {
- unsigned long ssa;
- char ssaStr[16];
- sscanf(&szLine[9], "%8lx", &ssa);
- sprintf(ssaStr, "%08X\n", ssa);
- cerr << "Segment start address (CS/IP): ";
- cerr << ssaStr;
- }
- break;
-
- case 4:
- // Extended linear address record
- if (dataBytes != 2)
- {
- throw "Length field must be 2 in extended linear address record!\n";
- }
- if (startAddress != 0)
- {
- throw "Address field must be zero in extended linear address record!\n";
- }
- sscanf(&szLine[9], "%4lx", &startAddress);
- addressBase = ((unsigned long)startAddress) << 16;
- linear = true;
- break;
-
- case 5:
- // Start linear address record
- if (dataBytes != 4)
- {
- cerr << "Warning: Length field must be 4 in start linear address record!\n";
- }
- if (startAddress != 0)
- {
- cerr << "Warning: Address field must be zero in start linear address record!\n";
- }
- if (dataBytes == 4)
- {
- unsigned long lsa;
- char lsaStr[16];
- sscanf(&szLine[9], "%8lx", &lsa);
- sprintf(lsaStr, "%08X\n", lsa);
- cerr << "Linear start address: ";
- cerr << lsaStr;
- }
- break;
-
- default:
- cerr << "Waring: Unknown record found!\n";
- }
- }
- else
- {
- // S-record
- unsigned long count;
- char type;
- if (sscanf(&szLine[1], "%c%2lx", &type, &count) != 2)
- {
- throw "Hex line beginning corrupt!\n";
- }
- // Check line length
- if (szLine[4 + count * 2] != '\n' && szLine[4 + count * 2] != 0)
- {
- throw "Hex line length incorrect!\n";
- }
- // Check line checksum
- unsigned char checkSum = 0;
- unsigned long tmp;
- for (unsigned int i = 0; i < count + 1; ++i)
- {
- if (sscanf(&szLine[2 + i * 2], "%2lx", &tmp) != 1)
- {
- throw "Hex line data corrupt!\n";
- }
- checkSum += tmp;
- }
- if (checkSum != 255)
- {
- throw "Hex line checksum error!\n";
- }
-
- switch (type)
- {
- case '0':
- // Header record
- {
- char header[256];
- unsigned char i = 0;
- for (i = 0; i + 3 < count; ++i)
- {
- sscanf(&szLine[8 + i * 2], "%2lx", &tmp);
- header[i] = tmp;
- }
- header[i] = 0;
- if (i > 0)
- {
- cerr << "Module name: " << header << "\n";
- }
- }
- break;
-
- case '1':
- case '2':
- case '3':
- // Data record
- {
- dataRecords++;
- unsigned long startAddress;
- if (type == '1')
- {
- sscanf(&szLine[4], "%4lx", &startAddress);
- }
- else if (type == '2')
- {
- sscanf(&szLine[4], "%6lx", &startAddress);
- }
- else
- {
- sscanf(&szLine[4], "%8lx", &startAddress);
- }
-
- if (!m_chunks.size() ||
- m_chunks.back().m_startAddress + m_chunks.back().m_bytes.size() !=
- startAddress)
- {
- m_chunks.push_back(MemBlock());
- m_chunks.back().m_startAddress = startAddress;
- }
- unsigned char i = 0;
- for (i = (type - '1'); i + 3 < count; ++i)
- {
- sscanf(&szLine[8 + i * 2], "%2lx", &tmp);
- if (startAddress + i > limit)
- {
- cerr << "Ignoring data above address space!\n";
- cerr << "Data address: " << startAddress + i;
- cerr << " Limit: " << limit << "\n";
- if (!m_chunks.back().m_bytes.size())
- {
- m_chunks.pop_back();
- }
- continue;
- }
- m_chunks.back().m_bytes.push_back(tmp);
- }
- }
- break;
-
- case '5':
- // Count record
- {
- unsigned long address;
- sscanf(&szLine[4], "%4lx", &address);
- if (address != dataRecords)
- {
- throw "Wrong number of data records!\n";
- }
- }
- break;
-
- case '7':
- case '8':
- case '9':
- // Start address record
- cerr << "Ignoring start address record!\n";
- break;
-
- default:
- cerr << "Unknown record found!\n";
- }
- }
- }
- if (intel && !endSeen)
- {
- cerr << "No end of file record!\n";
- }
- if (!m_chunks.size())
- {
- throw "No data in file!\n";
- }
- vector::iterator vi;
- m_top = 0;
- for (vi = m_chunks.begin(); vi < m_chunks.end(); vi++)
- {
- m_top = max(m_top, vi->m_startAddress + vi->m_bytes.size() - 1);
- }
- }
-
- // Rather inefficient this one, fix sometime
- bool GetByte(const unsigned long address, unsigned char &chr)
- {
- vector::iterator vi;
-
- for (vi = m_chunks.begin(); vi < m_chunks.end(); vi++)
- {
- if (vi->m_startAddress + vi->m_bytes.size() > address && vi->m_startAddress <= address)
- {
- break;
- }
- }
- if (vi == m_chunks.end())
- {
- return false;
- }
- chr = vi->m_bytes[address - vi->m_startAddress];
- return true;
- }
-
- bool BitString(const unsigned long address, const unsigned char bits, const bool lEndian, string &str)
- {
- bool ok = false;
- long i;
- unsigned char chr;
- unsigned long data = 0;
- unsigned long tmp;
-
- if (lEndian)
- {
- for (i = 0; i < (bits + 7) / 8; ++i)
- {
- ok |= GetByte(address + i, chr);
- tmp = chr;
- data |= tmp << (8 * i);
- }
- }
- else
- {
- for (i = 0; i < (bits + 7) / 8; ++i)
- {
- ok |= GetByte(address + i, chr);
- tmp = chr;
- data |= tmp << (8 * ((bits + 7) / 8 - i - 1));
- }
- }
-
- if (!ok)
- {
- return false;
- }
-
- unsigned long mask = 1;
-
- str = "";
- for (i = 0; i < bits; i++)
- {
- if (data & mask)
- {
- str.insert(0,"1");
- }
- else
- {
- str.insert(0,"0");
- }
- mask <<= 1;
- }
- return true;
- }
-
- FILE *Handle() { return m_file; };
- vector m_chunks;
- unsigned long m_top;
-private:
- FILE *m_file;
-};
-
-
-int main (int argc, char *argv[])
-{
- cerr << "Hex to VHDL ROM converter by Daniel Wallner. Version 0244\n";
-
- try
- {
- unsigned long aWidth;
- unsigned long dWidth;
- char endian;
- char O = 0;
-
- if (!(argc == 4 || argc == 5))
- {
- cerr << "\nUsage: hex2rom [-b] \n";
- cerr << "\nIf the -b option is specified the file is read as a binary file\n";
- cerr << "Hex input files must be intel hex or motorola s-record\n";
- cerr << "\nThe format string has the format AEDOS where:\n";
- cerr << " A = Address bits\n";
- cerr << " E = Endianness, l or b\n";
- cerr << " D = Data bits\n";
- cerr << " O = ROM type: (one optional character)\n";
- cerr << " z for tri-state output\n";
- cerr << " a for array ROM\n";
- cerr << " s for synchronous ROM\n";
- cerr << " u for XST ucf\n";
- cerr << " l for Leonardo ucf\n";
- cerr << " S = SelectRAM usage in 1/16 parts (only used when O = u)\n";
- cerr << "\nExample:\n";
- cerr << " hex2rom test.hex Test_ROM 18b16z\n\n";
- return -1;
- }
-
- string inFileName;
- string outFileName;
-
- unsigned long bytes;
- unsigned long select = 0;
-
- if (argc == 5)
- {
- if (strcmp(argv[1], "-b"))
- {
- throw "Error in arguments!\n";
- }
- }
-
- int result;
-
- result = sscanf(argv[argc - 1], "%lu%c%lu%c%lu", &aWidth, &endian, &dWidth, &O, &select);
- if (result < 3)
- {
- throw "Error in output format argument!\n";
- }
-
- if (aWidth > 32 || (endian != 'l' && endian != 'b') || dWidth > 32 || (result > 3 && O != 'z' && O != 'a' && O != 's' && O != 'u' && O != 'l'))
- {
- throw "Error in output format argument!\n";
- }
- inFileName = argv[argc - 3];
- outFileName = argv[argc - 2];
-
- bytes = (dWidth + 7) / 8;
-
- File inFile(inFileName.c_str(), "rb");
-
- if (argc == 4)
- {
- inFile.ReadHex((1UL << aWidth) * bytes - 1);
- }
- else
- {
- inFile.ReadBin((1UL << aWidth) * bytes - 1);
- }
-
- string line;
-
- unsigned long words = 1;
- unsigned long i = inFile.m_top;
- i /= bytes;
-
- while (i != 0)
- {
- i >>= 1;
- words <<= 1;
- }
-
- if (O != 'u' && O != 'l')
- {
- printf("-- This file was generated with hex2rom written by Daniel Wallner\n");
- printf("\nlibrary IEEE;");
- printf("\nuse IEEE.std_logic_1164.all;");
- printf("\nuse IEEE.numeric_std.all;");
- printf("\n\nentity %s is", outFileName.c_str());
- printf("\n\tport(");
- if (O == 'z')
- {
- printf("\n\t\tCE_n\t: in std_logic;", dWidth - 1);
- printf("\n\t\tOE_n\t: in std_logic;", dWidth - 1);
- }
- if (O == 's')
- {
- printf("\n\t\tClk\t: in std_logic;", dWidth - 1);
- }
- printf("\n\t\tA\t: in std_logic_vector(%d downto 0);", aWidth - 1);
- printf("\n\t\tD\t: out std_logic_vector(%d downto 0)", dWidth - 1);
- printf("\n\t);");
- printf("\nend %s;", outFileName.c_str());
- printf("\n\narchitecture rtl of %s is", outFileName.c_str());
- if (!O)
- {
- printf("\nbegin");
- printf("\n\tprocess (A)");
- printf("\n\tbegin");
- printf("\n\t\tcase to_integer(unsigned(A)) is");
- }
- else if (O == 's')
- {
- printf("\nbegin");
- printf("\n\tprocess (Clk)");
- printf("\n\tbegin");
- printf("\n\t\tif Clk'event and Clk = '1' then");
- printf("\n\t\tcase to_integer(unsigned(A)) is");
- }
- else
- {
- printf("\n\tsubtype ROM_WORD is std_logic_vector(%d downto 0);", dWidth - 1);
- printf("\n\ttype ROM_TABLE is array(0 to %d) of ROM_WORD;", words - 1);
- printf("\n\tconstant ROM: ROM_TABLE := ROM_TABLE'(");
- }
-
- string str;
- string strDC;
- for (i = 0; i < dWidth; i++)
- {
- strDC.insert(0, "-");
- }
- for (i = 0; i < words; i++)
- {
- if (!inFile.BitString(i * bytes, dWidth, endian == 'l', str))
- {
- str = strDC;
- }
- if (!O || O == 's')
- {
- if (inFile.m_top / bytes >= i)
- {
- printf("\n\t\twhen %06d => D <= \"%s\";",i, str.c_str());
- printf("\t-- 0x%04X", i * bytes);
- }
- }
- else
- {
- printf("\n\t\t\"%s", str.c_str());
- if (i != words - 1)
- {
- printf("\",");
- }
- else
- {
- printf("\");");
- }
- printf("\t-- 0x%04X", i * bytes);
- }
- }
-
- if (!O || O == 's')
- {
- printf("\n\t\twhen others => D <= \"%s\";", strDC.c_str());
- printf("\n\t\tend case;");
- if (O == 's')
- printf("\n\tend if;");
- printf("\n\tend process;");
- }
- else
- {
- printf("\nbegin");
- if (O == 'z')
- {
- printf("\n\tD <= ROM(to_integer(unsigned(A))) when CE_n = '0' and OE_n = '0' else (others => 'Z');");
- }
- else
- {
- printf("\n\tD <= ROM(to_integer(unsigned(A)));");
- }
- }
- printf("\nend;\n");
- }
- else
- {
- unsigned long selectIter = 0;
- unsigned long blockIter = 0;
-
- if (!select)
- {
- blockIter = ((1UL << aWidth) + 511) / 512;
- }
- else if (select == 16)
- {
- selectIter = ((1UL << aWidth) + 15) / 16;
- }
- else
- {
- blockIter = ((1UL << aWidth) * (16 - select) / 16 + 511) / 512;
- selectIter = ((1UL << aWidth) - blockIter * 512 + 15) / 16;
- }
-
- cerr << "Creating .ucf file with " << selectIter * bytes;
- cerr << " LUTs and " << blockIter * bytes << " block RAMs\n";
-
- unsigned long blockTotal = ((1UL << aWidth) + 511) / 512;
-
- printf("# This file was generated with hex2rom written by Daniel Wallner\n");
-
- for (i = 0; i < selectIter; i++)
- {
- unsigned long base = i * 16 * bytes;
- unsigned long j;
- unsigned char c;
- unsigned long pos;
-
- // Check that there is any actual data in segment
- bool init = false;
- for (pos = 0; pos < bytes * 16; pos++)
- {
- init = inFile.GetByte(base + pos, c);
- if (init)
- {
- break;
- }
- }
-
- if (init)
- {
- for (j = 0; j < dWidth; j++)
- {
- unsigned long bitMask = 1;
- unsigned long bits = 0;
-
- for (pos = 0; pos < 16; pos++)
- {
- unsigned long addr;
-
- if (endian = 'l')
- {
- addr = base + bytes * pos + j / 8;
- }
- else
- {
- addr = base + bytes * pos + bytes - j / 8 - 1;
- }
-
- c = 0;
- inFile.GetByte(addr, c);
- if (c & (1 << (j % 8)))
- {
- bits |= bitMask;
- }
- bitMask <<= 1;
- }
-
- if (O == 'u')
- {
- if (selectIter == 1)
- {
- printf("\nINST *s%s%d INIT = %04X;", outFileName.c_str(), j, bits);
- }
- else
- {
- printf("\nINST *s%s%d%d INIT = %04X;", outFileName.c_str(), i, j, bits);
- }
- }
- else
- {
- if (selectIter == 1)
- {
- printf("\nINST *sG1_%d_S%s INIT = %04X;", j, outFileName.c_str(), bits);
- }
- else
- {
- printf("\nINST *sG1_%d_sG2_%d_S%s INIT = %04X;", i, j, outFileName.c_str(), bits);
- }
- }
- }
- }
- }
-
- for (i = blockTotal - blockIter; i < blockTotal; i++)
- {
- unsigned long j;
- for (j = 0; j < bytes; j++)
- {
- unsigned long k;
- for (k = 0; k < 16; k++)
- {
- unsigned long base = i * 512 * bytes + k * 32 * bytes;
- unsigned char c;
- unsigned long pos;
-
- // Check that there is any actual data in segment
- bool init = false;
- for (pos = 0; pos < 32; pos++)
- {
- init = inFile.GetByte(base + bytes * pos + j, c);
- if (init)
- {
- break;
- }
- }
-
- if (init)
- {
- if (O == 'u')
- {
- if (blockIter == 1)
- {
- printf("\nINST *b%s%d INIT_%02X = ", outFileName.c_str(), j, k);
- }
- else
- {
- printf("\nINST *b%s%d%d INIT_%02X = ", outFileName.c_str(), i, j, k);
- }
- }
- else
- {
- if (blockIter == 1)
- {
- printf("\nINST *bG1_%d_B%s INIT_%02X = ", j, outFileName.c_str(), k);
- }
- else
- {
- printf("\nINST *bG1_%d_bG2_%d_B%s INIT_%02X = ", i, j, outFileName.c_str(), k);
- }
- }
- for (pos = 0; pos < 32; pos++)
- {
- unsigned long addr;
-
- if (endian = 'l')
- {
- addr = base + bytes * (31 - pos) + j;
- }
- else
- {
- addr = base + bytes * (31 - pos) + bytes - j - 1;
- }
-
- c = 0;
- inFile.GetByte(addr, c);
- printf("%02X", c);
- }
- printf(";");
- }
- }
- }
- }
- printf("\n");
- }
- return 0;
- }
- catch (string error)
- {
- cerr << "Fatal: " << error;
- }
- catch (const char *error)
- {
- cerr << "Fatal: " << error;
- }
- return -1;
-}
Index: t48/rel_1_2/sw/vcd2vec.pl
===================================================================
--- t48/rel_1_2/sw/vcd2vec.pl (revision 296)
+++ t48/rel_1_2/sw/vcd2vec.pl (nonexistent)
@@ -1,234 +0,0 @@
-#!/usr/bin/perl -w
-#
-# ############################################################################
-#
-# vcd2vec.pl
-#
-# $Id$
-#
-# Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
-#
-# All rights reserved
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version. See also the file COPYING which
-# came with this application.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# ############################################################################
-#
-# Purpose:
-# ========
-#
-# Converts a VCD-file to a vector file.
-#
-# Reads VCD from STDIN and writes the resulting vector stream to STDOUT.
-# vcd2vec.pl -s [-i] [-h]
-# -s : Name of the file containing the signals for vector output
-# -i : Read initial state from VCD (given with $dumpvars)
-# -h : Print this help
-#
-
-
-use strict;
-
-use Getopt::Std;
-
-
-my $time_unit = 'ns';
-
-sub print_usage {
- print < [-i] [-h]
- -s : Name of the file containing the signals for vector output
- -i : Read initial state from VCD (given with \$dumpvars)
- -h : Print this help
-EOU
-}
-
-sub print_index {
- my $index = shift;
- my ($tok, $desc);
-
- while (($tok, $desc) = each %{$index}) {
- print("Token $tok:\n");
- print(" $desc->{'name'}\n");
- print(" $desc->{'pos'}\n");
- }
-}
-
-sub dump_state {
- my ($state, $time, $dump_signals) = @_;
- my $signal;
-
- print("${time}>");
- foreach $signal (@{$dump_signals}) {
- if (exists($state->{$signal})) {
- print(" ".$state->{$signal});
- } else {
- print(STDERR "Error: Signal '$signal' not included in VCD!\n");
- }
- }
- print("\n");
-}
-
-sub read_scope {
- my $scope = shift;
- my $index = shift;
- my $pos = shift;
- my ($token, $base, $extension);
- my $ipt;
-
- print("Processing scope '$scope'\n");
-
- while () {
- last if (/^\$upscope/);
-
- last if (/^\$enddefinitions/);
-
- if (/^\$var +\S+ +\S+ +(\S+) +(\S+) +(([^\$]\S*)|\$end)/) {
- $token = $1;
- $base = $2;
-
- $extension = defined($4) ? $4 : '';
- $extension =~ s/[\[\]]//g;
-
- $index->{$token} = {};
- $ipt = $index->{$token};
- $ipt->{'name'} = "$scope.$base$extension";
- $ipt->{'pos'} = $$pos++;
-
- print("Appended ".$ipt->{'name'}."\n");
- }
-
- if (/^\$scope +\S+ +(\S+)/) {
- read_scope("$scope.$1", $index, $pos);
- }
-
- if (/^\$timescale/) {
- $_ = ;
- if (/^\s*1(\S+)/) {
- $time_unit = $1;
- }
- }
- }
-}
-
-my %options;
-my %index;
-my %state;
-my ($i, $time, $pos);
-my $index;
-my $token;
-my ($ipt, $val);
-my ($tok, $desc);
-my $signal;
-my $initial_states = 0;
-local *SIGNALS_FILE;
-
-my @dump_signals;
-
-# process command line options
-if (!getopts('s:ih', \%options)) {
- print_usage();
- exit(1);
-}
-
-if (exists($options{'h'})) {
- print_usage();
- exit(0);
-}
-
-if (exists($options{'i'})) {
- $initial_states = 1;
-}
-
-if (exists($options{'s'})) {
-} else {
- print(STDERR "File with signal names is required!\n");
- print_usage();
- exit(1);
-}
-
-
-##############################################################################
-# Read signals file
-#
-if (!open(SIGNALS_FILE, "<$options{'s'}")) {
- print(STDERR "Cannot read signals file '$options{'s'}'!\n");
- exit(1);
-}
-
-@dump_signals = ;
-close(SIGNALS_FILE);
-chomp(@dump_signals);
-
-
-# parse header
-$index = {};
-$pos = 0;
-read_scope("", $index, \$pos);
-
-
-if ($initial_states) {
- # read initial state
- while () { last if (/^\$dumpvars/) }
- while () {
- last if (/^\$end/);
- if (/^(.)(\S+)/) {
- $val = $1;
- $token = $2;
- $state{$index->{$token}->{'name'}} = $val;
- }
- }
-}
-
-$time = '0';
-
-print("time:");
-foreach $signal (@dump_signals) {
- print(" $signal");
-}
-print("\n");
-
-# now read all state changes
-while () {
- if (/^#(\d+)/) {
- if ($1 != 0) {
- # dump previous state
- dump_state(\%state, $time, \@dump_signals);
- }
- $time = $1;
- next;
- } else {
- if (/^(\S)(\S+)$/) {
- $val = $1;
- $token = $2;
- $state{$index->{$token}->{'name'}} = $val;
- }
-
- if (/^(\S+) (\S+)$/) {
- $val = $1;
- $token = $2;
- $state{$index->{$token}->{'name'}} = $val;
- }
- }
-
-}
-
-# final dump
-dump_state(\%state, $time, \@dump_signals);
-
-0;
t48/rel_1_2/sw/vcd2vec.pl
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/syn/t8048/b5x300/t48_rom.vhd
===================================================================
--- t48/rel_1_2/syn/t8048/b5x300/t48_rom.vhd (revision 296)
+++ t48/rel_1_2/syn/t8048/b5x300/t48_rom.vhd (nonexistent)
@@ -1,37 +0,0 @@
--- This file was generated with hex2rom written by Daniel Wallner
-
-library IEEE;
-use IEEE.std_logic_1164.all;
-use IEEE.numeric_std.all;
-
-entity rom_t48 is
- port(
- Clk : in std_logic;
- A : in std_logic_vector(9 downto 0);
- D : out std_logic_vector(7 downto 0)
- );
-end rom_t48;
-
-architecture rtl of rom_t48 is
- signal A_r : std_logic_vector(9 downto 0);
-begin
- process (Clk)
- begin
- if Clk'event and Clk = '1' then
- A_r <= A;
- end if;
- end process;
- process (A_r)
- begin
- case to_integer(unsigned(A_r)) is
- when 000000 => D <= "00100011"; -- 0x0000
- when 000001 => D <= "11111111"; -- 0x0001
- when 000002 => D <= "00111001"; -- 0x0002
- when 000003 => D <= "11010011"; -- 0x0003
- when 000004 => D <= "00000001"; -- 0x0004
- when 000005 => D <= "00000100"; -- 0x0005
- when 000006 => D <= "00000010"; -- 0x0006
- when others => D <= "--------";
- end case;
- end process;
-end;
Index: t48/rel_1_2/syn/t8048/b5x300/Makefile
===================================================================
--- t48/rel_1_2/syn/t8048/b5x300/Makefile (revision 296)
+++ t48/rel_1_2/syn/t8048/b5x300/Makefile (nonexistent)
@@ -1,42 +0,0 @@
-##############################################################################
-#
-# Generic Makefile for ISE projects
-#
-# $Id$
-#
-# Execute with 'make ', where target is one of
-# ise : build ISE project from
-# - files in compile_list
-# - project settings in timing.ucf and .ucf
-# - project settings applied in gen_ise_project.tcl
-# compile : compile ISE project by means of tcl script
-# compile_project.tcl
-# | all : run through all targets above
-#
-##############################################################################
-
-export MODULE := t8048
-
-export COMPILE_LIST := compile_list
-SOURCE_FILES := $(shell cat $(COMPILE_LIST))
-export BLD := bld
-
-.PHONY: all
-all: $(BLD)/$(MODULE).bit
-
-.PHONY: ise
-ise: $(BLD)/$(MODULE).ise
-
-.PHONY: compile
-compile: $(BLD)/$(MODULE).bit
-
-$(BLD)/$(MODULE).ise: $(COMPILE_LIST) *.ucf gen_ise_project.tcl
- xtclsh gen_ise_project.tcl
-
-$(BLD)/$(MODULE).bit: $(SOURCE_FILES) $(BLD)/$(MODULE).ise compile_project.tcl
- xtclsh compile_project.tcl
- touch $@
-
-.PHONY: clean
-clean:
- rm -rf *~ bld
t48/rel_1_2/syn/t8048/b5x300/Makefile
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/syn/t8048/b5x300/compile_project.tcl
===================================================================
--- t48/rel_1_2/syn/t8048/b5x300/compile_project.tcl (revision 296)
+++ t48/rel_1_2/syn/t8048/b5x300/compile_project.tcl (nonexistent)
@@ -1,46 +0,0 @@
-##############################################################################
-#
-# Generic project compile script
-#
-# $Id$
-#
-# Execute from within xtclsh.
-#
-# Environment variables:
-# $MODULE : Name of the toplevel project
-# -> mandatory <-
-# $BLD : Build directory where the project and all temporary files
-# are stored
-# -> optional, default is "bld" <-
-#
-##############################################################################
-
-# mandatory environment variable for project name: $MODULE
-if {[info exists env(MODULE)]} {
- set PROJECT $env(MODULE)
- puts "Info: Setting project name from \$MODULE: $PROJECT"
-} else {
- puts "Error: Environment variable MODULE not set."
- exit 1
-}
-
-# optional environment variable for build directory: $BLD
-# default is 'bld'
-puts -nonewline "Info: "
-if {[info exists env(BLD)]} {
- set bld $env(BLD)
- puts -nonewline "Setting build directory from \$BLD"
-} else {
- set bld bld
- puts -nonewline "Setting build directory to default"
-}
-puts ": $bld"
-
-cd $bld
-
-project open $PROJECT.ise
-
-puts "Starting design implementation..."
-process run "Generate Programming File"
-
-project close
t48/rel_1_2/syn/t8048/b5x300/compile_project.tcl
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/syn/t8048/b5x300/t48_rom.hex
===================================================================
--- t48/rel_1_2/syn/t8048/b5x300/t48_rom.hex (revision 296)
+++ t48/rel_1_2/syn/t8048/b5x300/t48_rom.hex (nonexistent)
@@ -1,2 +0,0 @@
-:0700000023FF39D3010402C4
-:00000001FF
Index: t48/rel_1_2/syn/t8048/b5x300/gen_ise_project.tcl
===================================================================
--- t48/rel_1_2/syn/t8048/b5x300/gen_ise_project.tcl (revision 296)
+++ t48/rel_1_2/syn/t8048/b5x300/gen_ise_project.tcl (nonexistent)
@@ -1,162 +0,0 @@
-###############################################################################
-#
-# $Id$
-#
-# Based on
-# Created by Phil Hays, Xilinx
-# Setup Xilinx environment, then run from Unix with "xtclsh dice.tcl"
-#
-# This Tcl script will implement a design and load it in the S3E FPGA on
-# the Spartan 3E Starter Kit Board
-#
-# There are two ucf files, one for pins and one for timing
-#
-###############################################################################
-# Contact : e-mail hotline@xilinx.com
-# phone + 1 800 255 7778
-#
-# Disclaimer: LIMITED WARRANTY AND DISCLAMER. These designs are
-# provided to you "as is". Xilinx and its licensors make and you
-# receive no warranties or conditions, express, implied,
-# statutory or otherwise, and Xilinx specifically disclaims any
-# implied warranties of merchantability, non-infringement, or
-# fitness for a particular purpose. Xilinx does not warrant that
-# the functions contained in these designs will meet your
-# requirements, or that the operation of these designs will be
-# uninterrupted or error free, or that defects in the Designs
-# will be corrected. Furthermore, Xilinx does not warrant or
-# make any representations regarding use or the results of the
-# use of the designs in terms of correctness, accuracy,
-# reliability, or otherwise.
-#
-# LIMITATION OF LIABILITY. In no event will Xilinx or its
-# licensors be liable for any loss of data, lost profits, cost
-# or procurement of substitute goods or services, or for any
-# special, incidental, consequential, or indirect damages
-# arising from the use or operation of the designs or
-# accompanying documentation, however caused and on any theory
-# of liability. This limitation will apply even if Xilinx
-# has been advised of the possibility of such damage. This
-# limitation shall apply not-withstanding the failure of the
-# essential purpose of any limited remedies herein.
-#
-# Copyright (c) 2006 Xilinx, Inc.
-# All rights reserved
-#
-###############################################################################
-# Version 1.0 - 19-Oct-2006
-# Initial version
-###############################################################################
-
-###############################################################################
-# MAIN
-###############################################################################
-# Modify the project settings for the specific design
-#
-# Make sure there are no files in the build directory that you may want to
-# keep, as this TCL script cleans that directory by default!
-###############################################################################
-
-# mandatory environment variable for project name: $MODULE
-if {[info exists env(MODULE)]} {
- set PROJECT $env(MODULE)
- puts "Info: Setting project name from \$MODULE: $PROJECT"
-} else {
- puts "Error: Environment variable MODULE not set."
- exit 1
-}
-
-# optional environment variable for build directory: $BLD
-# default is 'bld'
-puts -nonewline "Info: "
-if {[info exists env(BLD)]} {
- set bld $env(BLD)
- puts -nonewline "Setting build directory from \$BLD"
-} else {
- set bld bld
- puts -nonewline "Setting build directory to default"
-}
-puts ": $bld"
-
-# optional environment variable for source file compile list: $COMPILE_LIST
-# default is 'compile_list'
-puts -nonewline "Info: "
-if {[info exists env(COMPILE_LIST)]} {
- set compile_list $env(COMPILE_LIST)
- puts -nonewline "Setting source file compile list from \$COMPILE_LIST"
-} else {
- set compile_list compile_list
- puts -nonewline "Setting source file compile list to default"
-}
-puts ": $compile_list"
-
-if {[file exists $bld]} {
- puts "Deleting all existing project files in '$bld'"
- # Perhaps ask ok here??
- # Or perhaps skip project creation if project exists??
- file delete -force $bld
-}
-puts "Creating new project directory in '$bld'..."
-file mkdir $bld
-
-###############################################################################
-# Put two ucf file into one.
-# This could be made as complex as required, however for demonstration it is
-# just a simple copy.
-###############################################################################
-
-puts "Creating new UCF file..."
-
-set tempucf [file join $bld temp.ucf]
-set outfile [open $tempucf "w"]
-set infile [open "t8048.ucf" "r"]
-while {![eof $infile]} {
- puts $outfile [gets $infile]
-}
-close $infile
-close $outfile
-#
-puts "Creating new ISE project..."
-cd $bld
-project new $PROJECT.ise
-project set family spartan2e
-project set device xc2s300e
-project set package pq208
-project set speed -6
-
-
-###############################################################################
-# Modify the xfile add argument for the source files in the design
-###############################################################################
-
-puts "Adding source files..."
-set infile [open "../compile_list" "r"]
-while {![eof $infile]} {
- xfile add "../[gets $infile]"
-}
-xfile add temp.ucf
-
-
-###############################################################################
-# Set optional implementation options here. There is a problem with setting
-# project properties that at least one source must be added to the project
-# first. Therefore, the "project set" commands are after the "xfile add"
-# commands.
-###############################################################################
-
-puts "Setting project properties..."
-
-project set {Optimization Goal} Area -process {Synthesize - XST}
-project set {Optimization Effort} Normal -process {Synthesize - XST}
-project set {Use Synthesis Constraints File} 1 -process {Synthesize - XST}
-
-#project set "Map Effort Level" High
-#project set {Perform Timing-Driven Packing and Placement} 1
-project set {Place & Route Effort Level (Overall)} Standard
-#project set "Other Place & Route Command Line Options" "-intsyle xflow"
-project set {Generate Post-Place & Route Static Timing Report} true
-project set {Report Unconstrained Paths} 10 -process {Generate Post-Place & Route Static Timing}
-project set {Report Type} {Verbose Report} -process {Generate Post-Place & Route Static Timing}
-project set {Create Binary Configuration File} 1 -process {Generate Programming File}
-
-project close
t48/rel_1_2/syn/t8048/b5x300/gen_ise_project.tcl
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/syn/t8048/b5x300/t8048.ucf
===================================================================
--- t48/rel_1_2/syn/t8048/b5x300/t8048.ucf (revision 296)
+++ t48/rel_1_2/syn/t8048/b5x300/t8048.ucf (nonexistent)
@@ -1,54 +0,0 @@
-#NET "reset_n_i" LOC = "P187";
-#NET "xtal_i" LOC = "P185";
-NET "xtal_i" TNM_NET = "xtal_i";
-TIMESPEC "TS_xtal_i" = PERIOD "xtal_i" 90 ns HIGH 50 %;
-
-#PINLOCK_BEGIN
-
-#Fri Apr 30 18:23:21 2004
-
-#PINLOCK_END
-#PACE: Start of Constraints generated by PACE
-
-#PACE: Start of PACE I/O Pin Assignments
-NET "ale_o" LOC = "P205" ;
-NET "db_b<0>" LOC = "P133" ;
-NET "db_b<1>" LOC = "P134" ;
-NET "db_b<2>" LOC = "P135" ;
-NET "db_b<3>" LOC = "P136" ;
-NET "db_b<4>" LOC = "P138" ;
-NET "db_b<5>" LOC = "P139" ;
-NET "db_b<6>" LOC = "P140" ;
-NET "db_b<7>" LOC = "P141" ;
-NET "ea_i" LOC = "P206" ;
-NET "int_n_i" LOC = "P3" ;
-NET "p1_b<0>" LOC = "P82" ;
-NET "p1_b<1>" LOC = "P83" ;
-NET "p1_b<2>" LOC = "P84" ;
-NET "p1_b<3>" LOC = "P86" ;
-NET "p1_b<4>" LOC = "P87" ;
-NET "p1_b<5>" LOC = "P88" ;
-NET "p1_b<6>" LOC = "P89" ;
-NET "p1_b<7>" LOC = "P93" ;
-NET "p2_b<0>" LOC = "P94" ;
-NET "p2_b<1>" LOC = "P95" ;
-NET "p2_b<2>" LOC = "P96" ;
-NET "p2_b<3>" LOC = "P97" ;
-NET "p2_b<4>" LOC = "P98" ;
-NET "p2_b<5>" LOC = "P99" ;
-NET "p2_b<6>" LOC = "P100" ;
-NET "p2_b<7>" LOC = "P101" ;
-NET "prog_n_o" LOC = "P202" ;
-NET "psen_n_o" LOC = "P204" ;
-NET "rd_n_o" LOC = "P203" ;
-NET "reset_n_i" LOC = "P57" ;
-NET "t0_b" LOC = "P181" ;
-NET "t1_i" LOC = "P200" ;
-NET "wr_n_o" LOC = "P201" ;
-NET "xtal_i" LOC = "P77" ;
-
-#PACE: Start of PACE Area Constraints
-
-#PACE: Start of PACE Prohibit Constraints
-
-#PACE: End of Constraints generated by PACE
Index: t48/rel_1_2/syn/t8048/b5x300/compile_list
===================================================================
--- t48/rel_1_2/syn/t8048/b5x300/compile_list (revision 296)
+++ t48/rel_1_2/syn/t8048/b5x300/compile_list (nonexistent)
@@ -1,30 +0,0 @@
-../../../rtl/vhdl/t48_pack-p.vhd
-../../../rtl/vhdl/psw.vhd
-../../../rtl/vhdl/pmem_ctrl_pack-p.vhd
-../../../rtl/vhdl/pmem_ctrl.vhd
-../../../rtl/vhdl/p2.vhd
-../../../rtl/vhdl/p1.vhd
-../../../rtl/vhdl/timer.vhd
-../../../rtl/vhdl/dmem_ctrl_pack-p.vhd
-../../../rtl/vhdl/dmem_ctrl.vhd
-../../../rtl/vhdl/decoder_pack-p.vhd
-../../../rtl/vhdl/cond_branch_pack-p.vhd
-../../../rtl/vhdl/alu_pack-p.vhd
-../../../rtl/vhdl/t48_comp_pack-p.vhd
-../../../rtl/vhdl/int.vhd
-../../../rtl/vhdl/t48_tb_pack-p.vhd
-../../../rtl/vhdl/decoder.vhd
-../../../rtl/vhdl/db_bus.vhd
-../../../rtl/vhdl/cond_branch.vhd
-../../../rtl/vhdl/clock_ctrl.vhd
-../../../rtl/vhdl/bus_mux.vhd
-../../../rtl/vhdl/alu.vhd
-../../../rtl/vhdl/t48_core.vhd
-../../../rtl/vhdl/system/generic_ram_ena.vhd
-t48_rom.vhd
-../../../rtl/vhdl/system/t48_rom-e.vhd
-../../../rtl/vhdl/system/t48_rom-struct-a.vhd
-../../../rtl/vhdl/t48_core_comp_pack-p.vhd
-../../../rtl/vhdl/system/t8048_notri.vhd
-../../../rtl/vhdl/system/t48_system_comp_pack-p.vhd
-../../../rtl/vhdl/system/t8048.vhd
Index: t48/rel_1_2/syn/t8048/jopcyc/t8048.qpf
===================================================================
--- t48/rel_1_2/syn/t8048/jopcyc/t8048.qpf (revision 296)
+++ t48/rel_1_2/syn/t8048/jopcyc/t8048.qpf (nonexistent)
@@ -1,29 +0,0 @@
-# Copyright (C) 1991-2004 Altera Corporation
-# Any megafunction design, and related netlist (encrypted or decrypted),
-# support information, device programming or simulation file, and any other
-# associated documentation or information provided by Altera or a partner
-# under Altera's Megafunction Partnership Program may be used only
-# to program PLD devices (but not masked PLD devices) from Altera. Any
-# other use of such megafunction design, netlist, support information,
-# device programming or simulation file, or any other related documentation
-# or information is prohibited for any other purpose, including, but not
-# limited to modification, reverse engineering, de-compiling, or use with
-# any other silicon devices, unless such use is explicitly licensed under
-# a separate agreement with Altera or a megafunction partner. Title to the
-# intellectual property, including patents, copyrights, trademarks, trade
-# secrets, or maskworks, embodied in any such megafunction design, netlist,
-# support information, device programming or simulation file, or any other
-# related documentation or information provided by Altera or a megafunction
-# partner, remains with Altera, the megafunction partner, or their respective
-# licensors. No other licenses, including any licenses needed under any third
-# party's intellectual property, are provided herein.
-
-
-
-QUARTUS_VERSION = "4.1"
-DATE = "22:42:11 December 02, 2004"
-
-
-# Revisions
-
-PROJECT_REVISION = "t8048"
Index: t48/rel_1_2/syn/t8048/jopcyc/t48_rom.vhd
===================================================================
--- t48/rel_1_2/syn/t8048/jopcyc/t48_rom.vhd (revision 296)
+++ t48/rel_1_2/syn/t8048/jopcyc/t48_rom.vhd (nonexistent)
@@ -1,37 +0,0 @@
--- This file was generated with hex2rom written by Daniel Wallner
-
-library IEEE;
-use IEEE.std_logic_1164.all;
-use IEEE.numeric_std.all;
-
-entity rom_t48 is
- port(
- Clk : in std_logic;
- A : in std_logic_vector(9 downto 0);
- D : out std_logic_vector(7 downto 0)
- );
-end rom_t48;
-
-architecture rtl of rom_t48 is
- signal A_r : std_logic_vector(9 downto 0);
-begin
- process (Clk)
- begin
- if Clk'event and Clk = '1' then
- A_r <= A;
- end if;
- end process;
- process (A_r)
- begin
- case to_integer(unsigned(A_r)) is
- when 000000 => D <= "00100011"; -- 0x0000
- when 000001 => D <= "11111111"; -- 0x0001
- when 000002 => D <= "00111001"; -- 0x0002
- when 000003 => D <= "11010011"; -- 0x0003
- when 000004 => D <= "00000001"; -- 0x0004
- when 000005 => D <= "00000100"; -- 0x0005
- when 000006 => D <= "00000010"; -- 0x0006
- when others => D <= "--------";
- end case;
- end process;
-end;
Index: t48/rel_1_2/syn/t8048/jopcyc/t8048.qsf
===================================================================
--- t48/rel_1_2/syn/t8048/jopcyc/t8048.qsf (revision 296)
+++ t48/rel_1_2/syn/t8048/jopcyc/t8048.qsf (nonexistent)
@@ -1,71 +0,0 @@
-set_global_assignment -name TOP_LEVEL_ENTITY t8048
-# Copyright (C) 1991-2005 Altera Corporation
-# Your use of Altera Corporation's design tools, logic functions
-# and other software and tools, and its AMPP partner logic
-# functions, and any output files any of the foregoing
-# (including device programming or simulation files), and any
-# associated documentation or information are expressly subject
-# to the terms and conditions of the Altera Program License
-# Subscription Agreement, Altera MegaCore Function License
-# Agreement, or other applicable license agreement, including,
-# without limitation, that your use is for the sole purpose of
-# programming logic devices manufactured by Altera and sold by
-# Altera or its authorized distributors. Please refer to the
-# applicable agreement for further details.
-
-
-# The default values for assignments are stored in the file
-# t8048_assignment_defaults.qdf
-# If this file doesn't exist, and for assignments not listed, see file
-# assignment_defaults.qdf
-
-# Altera recommends that you do not modify this file. This
-# file is updated automatically by the Quartus II software
-# and any changes you make may be lost or overwritten.
-
-
-# Project-Wide Assignments
-# ========================
-set_global_assignment -name ORIGINAL_QUARTUS_VERSION "4.0 SP1"
-set_global_assignment -name PROJECT_CREATION_TIME_DATE "22:20:14 MAY 08, 2004"
-set_global_assignment -name LAST_QUARTUS_VERSION 7.0
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/t48_pack-p.vhd"
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/pmem_ctrl_pack-p.vhd"
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/cond_branch_pack-p.vhd"
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/decoder_pack-p.vhd"
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/dmem_ctrl_pack-p.vhd"
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/alu_pack-p.vhd"
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/alu.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/bus_mux.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/clock_ctrl.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/cond_branch.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/db_bus.vhd
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/t48_comp_pack-p.vhd"
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/decoder.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/dmem_ctrl.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/int.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/p1.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/p2.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/pmem_ctrl.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/psw.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/timer.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/t48_core.vhd
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/system/generic_ram_ena.vhd
-set_global_assignment -name VHDL_FILE t48_rom.vhd
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/system/t48_rom-e.vhd"
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/system/t48_rom-struct-a.vhd"
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/t48_core_comp_pack-p.vhd"
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/system/t8048_notri.vhd
-set_global_assignment -name VHDL_FILE "../../../rtl/vhdl/system/t48_system_comp_pack-p.vhd"
-set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/system/t8048.vhd
-
-# Analysis & Synthesis Assignments
-# ================================
-set_global_assignment -name VHDL_INPUT_VERSION VHDL87
-
-set_global_assignment -name FAMILY Cyclone
-set_global_assignment -name DEVICE EP1C12Q240C8
-set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH WEAK PULL-UP"
-set_global_assignment -name RESERVE_ASDO_AFTER_CONFIGURATION "AS INPUT TRI-STATED"
-set_global_assignment -name FMAX_REQUIREMENT "11 MHz" -section_id xtal
-set_instance_assignment -name CLOCK_SETTINGS xtal -to xtal_i
Index: t48/rel_1_2/syn/t8048/jopcyc/t48_rom.hex
===================================================================
--- t48/rel_1_2/syn/t8048/jopcyc/t48_rom.hex (revision 296)
+++ t48/rel_1_2/syn/t8048/jopcyc/t48_rom.hex (nonexistent)
@@ -1,2 +0,0 @@
-:0700000023FF39D3010402C4
-:00000001FF
Index: t48/rel_1_2/KNOWN_BUGS
===================================================================
--- t48/rel_1_2/KNOWN_BUGS (revision 296)
+++ t48/rel_1_2/KNOWN_BUGS (nonexistent)
@@ -1,332 +0,0 @@
-
-Known bugs of the T48 uController core
-======================================
-Version: $Id$
-
-
-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.
t48/rel_1_2/KNOWN_BUGS
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/README
===================================================================
--- t48/rel_1_2/README (revision 296)
+++ t48/rel_1_2/README (nonexistent)
@@ -1,295 +0,0 @@
-
-README for the T48 uController project
-======================================
-Version: $Id$
-
-
-Introduction
-------------
-
-The T48 µController core is an implementation of the MCS-48 microcontroller
-family architecture. While being a controller core for SoC, it also aims for
-code-compatability and cycle-accuracy so that it can be used as a drop-in
-replacement for any MCS-48 controller.
-It can be configured to better suit the requirements and characteristics of
-the integrating system. On the other hand, nearly the full functionality of a
-stock 8048/8049 is available.
-
-
-Download
---------
-
-Download the latest stable release from the project homepage at OpenCores.org:
-
- http://www.opencores.org/projects.cgi/web/t48/overview/
-
-You can get the latest version of the design files from CVS:
-
- http://www.opencores.org/pdownloads.cgi/list/t48
-
-Please keep in mind that this is work in progress and might contain smaller or
-bigger problems.
-You should also check the Tracker for known bugs and see if they affect your
-work.
-
-
-Installation
-------------
-
-Once the directory structure is generated either by check-out from CVS or by
-unpacking the tar-archive, the central project initialization file should be
-set up. A template called init_project.template.sh is located in the sw
-directory where a copy can be edited. Normally, only the definition for the
-variable PROJECT_DIR has to be adjusted to the path where the directory
-structure is located.
-The commands for setting the necessary variables assume a bash/sh-like
-shell. In case you run a different shell like csh or ksh, you should adjust
-these commands as well.
-
-The meaning of the variables is as follows:
-
- * PROJECT_DIR
- Points to the root of the project installation. All further references are
- derived from its setting.
-
- * VERIF_DIR
- Location of the verification suite.
-
- * SIM_DIR
- Directory for running simulations.
-
-These variables must be properly set whenever scripts or makefiles of the T48
-project are executed. Otherwise, you will most likely encounter error
-messages.
-
-NOTE: The concepts of the mentioned shells require that the init_project.sh is
- run in the context of the shell. I.e. you should 'source' the script
- instead of executing it like a command. This will make sure that the
- variable settings are really effective in the calling shell instance.
-
-
-Directory Structure
--------------------
-
-The project's directory structure follows the proposal of OpenCores.org.
-
-t48
- |
- \--+-- rtl
- | |
- | \-- vhdl : VHDL code containing the RTL description
- | | of the core.
- | +-- system : RTL VHDL code of sample systems.
- | |
- | \-- t8243 : RTL VHDL code of 8243 core.
- |
- +-- bench
- | |
- | \-- vhdl : VHDL testbench code.
- |
- +-- sim
- | |
- | \-- rtl_sim : Directory for running simulations.
- |
- +-- syn
- | |
- | \-- t8048 : T8048 toplevel example synthesis.
- | |
- | +-- b5x300 : for SpartanIIe 300.
- | |
- | \-- jopcyc : for Cyclone EP1C12.
- |
- \-- sw : General purpose scripts and files.
- |
- +-- i8039emu : An MCS-48 emulator written in C.
- |
- \-- verif : The verification suite.
- |
- +-- include : Global includes and makefiles.
- |
- +-- black_box : Black-box verification tests.
- |
- +-- white_box : White-box verification tests.
- |
- \-- gp_sw : General purpose software.
-
-
-Compiling the VHDL Code
------------------------
-
-VHDL compilation and simulation tasks take place inside in sim/rtl_sim
-directory. The project setup supports only the batch mode of certain
-simulators. However, there should be no problems to integrate the testbench
-and RTL code into arbitrary simulation environments.
-
-The main file for compilation is Makefile.hier which contains all information
-regarding the dependencies of the source files and their compilation
-order. There is a dedicated file for each supported simulator that maps the
-generic information of Makefile.hier to object files specific to the given
-simulator.
-
-Compilation is based on the make-utility, thus invocation looks like this:
-
-$ make -f Makefile.
-
-where denotes one of the supported simulators:
-
- * Makefile.ghdl
- Tristan Gingold's GHDL simulator/compiler, a VHDL front-end for gcc.
- http://ghdl.free.fr/
-
- * Makefile.simili
- DISCONTINUED
- VHDL Simili, a VHDL simulator by Symphony EDA
- http://www.symphonyeda.com/
-
-Make will analyze all VHDL files (RTL and testbench code) and elaborate all
-three testbench top-levels if appropriate for the chosen simulator:
-
- * tb_behav_c0
- The main testbench for regression testing.
- Instantiates the plain t48_core and provides internal RAM (256 bytes) and
- ROM (2k bytes) plus 2k bytes of external ROM.
-
- * tb_t8048_behav_c0
- The testbench for the t8048 sample system.
-
- * tb_t8039_behav_c0
- The testbench for the 8039 sample system.
-
- * tb_t8243_behav_c0
- Testbench containing the t48_core and the synchronous t8243 flavour.
-
- * tb_t8048_t8243_behav_c0
- Testbench containing the t8048 and the asynchronous t8243 toplevel.
-
-Each Makefile has a 'clean' target to delete all intermediate data:
-
-$ make -f Makefile. clean
-
-The basic simple sequence list can be found in COMPILE_LIST. This can be
-useful to quickly set up the analyze stage of any compiler or
-synthesizer. Especially when synthesizing the code, you want to skip the VHDL
-configurations in *-c.vhd and everything below the bench/ directory.
-
-Preparation of the ROM Files
-----------------------------
-
-All testbenches listed above need two files in hex-format. They contain the
-program for the T48 core and are loaded into internal and external ROM at
-simulation startup. Their existance is mandatory as they are referenced in the
-VHDL code of the ROM model lpm_rom.vhd. In case they are missing, the
-simulation will stop immediately after elaborating the design.
-
-These files are:
-
- * rom_t49.hex
- Internal ROM contents for 8x49 derivatives,
- address range 000H to 7FFH.
- Intel hex format, starting at address 000H.
-
- * rom_t49_ext.hex
- External ROM contents for t8x49 derivatives,
- address range 800H to FFFH.
- Intel hex format, starting at address 800H.
-
- * rom_t48.hex
- Internal ROM contents for t8x48 derivatives,
- address range 000H to 3FFH.
- Intel hex format, starting at address 000H.
-
- * rom_t48_ext.hex
- External ROM contents for t8x48 derivatives,
- address range 400H to FFFH.
- Intel hex format, starting at address 000H.
-
- * rom_t3x.hex
- Internal ROM contents for t803x derivatives,
- empty.
-
- * rom_t3x_ext.hex
- External ROM contents for t803x derivatives,
- address range 000H to FFFH.
- Intel hex format, starting at address 000H.
-
-The verification flow for the T48 project generates these files
-automatically from the assembler source files.
-
-All regression tests and the general purpose software is organized in a cell
-structure. Currently, this means that the software for a cell is contained in
-a dedicated directory where the assembler run takes place. In the future,
-there will be more aspects to a cell.
-
-Assembling, linking and putting the hex-files in place is under the control of
-the make-mechanism. E.g. to assemble the source code of a cell, issue the
-following command:
-
-$ make -f $VERIF_DIR/include/Makefile.cell
-
-This generates the linker file (test.p) and distributes its contents to the
-required ROM files for internal and external program ROM. The target 'simu'
-copies these files automatically to the simulation directory. So most likely,
-for running a test case or any other software, you will want to issue:
-
-$ make -f VERIF_DIR/include/Makefile.cell all clean
-
-The 'all' target generates hex files for all supported testbenches.
-
-The only supported assembler is Alfred Arnold's macroassembler AS. See
-
- http://john.ccac.rwth-aachen.de:8000/as/
-
-
-Verification Environment
-------------------------
-
-The verification environment consists of a number of test programs. They are
-all self-checking. I.e. after testing the targeted functionality, they emit a
-pass/fail information. This information is detected by the testbench which
-stops the simulation and prints out the simulation result. This is the default
-mechanism for stopping the VHDL simulation.
-
-Pass/fail is signalled by a certain sequence of the accumulator contents:
-
- 1) Accumulator contains AAH
- 2) Accumulator contains 55H
- 3) Accumulator contains 01H -> Pass
- Accumulator contains 00H -> Fail
-
-The detection is modelled like a state machine and in case the sequence is of
-bytes inside the accumulator does not match, the detection process restarts
-from the beginning. This mechanism is part of all verification tests.
-
-The complete regression suite can be executed with the run_regression.pl
-script. For each test cell, it steps through the sequence
-
- 1) Assemble the source code
- 2) Run the compiled VHDL design (currently only GHDL)
- 3) Optionally perform a dump compare against the C-model
-
-It is highly recommended to redirect the output of run_regression.pl into a
-file. Otherwise, analyzing the messages related to each test cell is almost
-impossible.
-
-
-FPGA Implementation
--------------------
-
-All of the design files contain pure RTL code. Also the RAM for the data
-memory is described by generic RTL code. It should be translated automatically
-by the tool chain to a technology specific RAM macro.
-
-There is a generic method for the program memory ROM as well, although this
-project uses a flow where hex-files are loaded by lpm_rom.vhd as the default
-method. Convert the ROM image to an RTL VHDL file with one of the two
-following commands (either from hex or bin format):
-
- $ hex2rom -b [rom image file] rom_t48 10l8s > rom_t48.vhd
- $ hex2rom -b [rom image file] rom_t49 11l8s > rom_t49.vhd
-
-The option -b specifies that [rom image file] contains binary data. Skip this
-option to process a file in hex format.
-
-These resulting RTL representations are instantiated by t48_rom-struct-a.vhd
-and t49_rom-struct-a.vhd. Altera and Xilinx design tools will detect and
-extract the ROM and turn it into a memory macro.
t48/rel_1_2/README
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/if_timing-c.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/if_timing-c.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/if_timing-c.vhd (nonexistent)
@@ -1,18 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Interface Timing Checker.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration if_timing_behav_c0 of if_timing is
-
- for behav
- end for;
-
-end if_timing_behav_c0;
t48/rel_1_2/bench/vhdl/if_timing-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/tb-c.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/tb-c.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/tb-c.vhd (nonexistent)
@@ -1,43 +0,0 @@
--------------------------------------------------------------------------------
---
--- The testbench for t48_core.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration tb_behav_c0 of tb is
-
- for behav
-
- for rom_internal_2k : lpm_rom
- use configuration work.lpm_rom_c0;
- end for;
-
- for rom_external_2k : lpm_rom
- use configuration work.lpm_rom_c0;
- end for;
-
- for ram_256 : generic_ram_ena
- use configuration work.generic_ram_ena_rtl_c0;
- end for;
-
- for ext_ram_b : generic_ram_ena
- use configuration work.generic_ram_ena_rtl_c0;
- end for;
-
- for t48_core_b : t48_core
- use configuration work.t48_core_struct_c0;
- end for;
-
- for if_timing_b : if_timing
- use configuration work.if_timing_behav_c0;
- end for;
-
- end for;
-
-end tb_behav_c0;
t48/rel_1_2/bench/vhdl/tb-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/tb_t8243-c.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/tb_t8243-c.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/tb_t8243-c.vhd (nonexistent)
@@ -1,47 +0,0 @@
--------------------------------------------------------------------------------
---
--- The testbench for t8243 core.
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration tb_t8243_behav_c0 of tb_t8243 is
-
- for behav
-
- for rom_internal_2k : lpm_rom
- use configuration work.lpm_rom_c0;
- end for;
-
- for rom_external_2k : lpm_rom
- use configuration work.lpm_rom_c0;
- end for;
-
- for ram_256 : generic_ram_ena
- use configuration work.generic_ram_ena_rtl_c0;
- end for;
-
- for ext_ram_b : generic_ram_ena
- use configuration work.generic_ram_ena_rtl_c0;
- end for;
-
- for t48_core_b : t48_core
- use configuration work.t48_core_struct_c0;
- end for;
-
- for t8243_sync_notri_b : t8243_sync_notri
- use configuration work.t8243_sync_notri_struct_c0;
- end for;
-
- for if_timing_b : if_timing
- use configuration work.if_timing_behav_c0;
- end for;
-
- end for;
-
-end tb_t8243_behav_c0;
t48/rel_1_2/bench/vhdl/tb_t8243-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/tb_t8048-c.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/tb_t8048-c.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/tb_t8048-c.vhd (nonexistent)
@@ -1,31 +0,0 @@
--------------------------------------------------------------------------------
---
--- The testbench for t8048.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration tb_t8048_behav_c0 of tb_t8048 is
-
- for behav
-
- for ext_ram_b : generic_ram_ena
- use configuration work.generic_ram_ena_rtl_c0;
- end for;
-
- for ext_rom_b : lpm_rom
- use configuration work.lpm_rom_c0;
- end for;
-
- for t8048_b : t8048
- use configuration work.t8048_struct_c0;
- end for;
-
- end for;
-
-end tb_t8048_behav_c0;
t48/rel_1_2/bench/vhdl/tb_t8048-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/tb_t8039-c.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/tb_t8039-c.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/tb_t8039-c.vhd (nonexistent)
@@ -1,31 +0,0 @@
--------------------------------------------------------------------------------
---
--- The testbench for t8039.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration tb_t8039_behav_c0 of tb_t8039 is
-
- for behav
-
- for ext_ram_b : generic_ram_ena
- use configuration work.generic_ram_ena_rtl_c0;
- end for;
-
- for ext_rom_b : lpm_rom
- use configuration work.lpm_rom_c0;
- end for;
-
- for t8039_b : t8039
- use configuration work.t8039_struct_c0;
- end for;
-
- end for;
-
-end tb_t8039_behav_c0;
t48/rel_1_2/bench/vhdl/tb_t8039-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/tb_t8048_t8243-c.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/tb_t8048_t8243-c.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/tb_t8048_t8243-c.vhd (nonexistent)
@@ -1,35 +0,0 @@
--------------------------------------------------------------------------------
---
--- The testbench for t8048 driving a t8243.
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration tb_t8048_t8243_behav_c0 of tb_t8048_t8243 is
-
- for behav
-
- for ext_ram_b : generic_ram_ena
- use configuration work.generic_ram_ena_rtl_c0;
- end for;
-
- for ext_rom_b : lpm_rom
- use configuration work.lpm_rom_c0;
- end for;
-
- for t8048_b : t8048
- use configuration work.t8048_struct_c0;
- end for;
-
- for t8243_b : t8243
- use configuration work.t8243_struct_c0;
- end for;
-
- end for;
-
-end tb_t8048_t8243_behav_c0;
t48/rel_1_2/bench/vhdl/tb_t8048_t8243-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/t48_rom-lpm-a.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/t48_rom-lpm-a.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/t48_rom-lpm-a.vhd (nonexistent)
@@ -1,94 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8x48 ROM
--- Wrapper for ROM model from the LPM library.
---
--- $Id$
---
--- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-architecture lpm of t48_rom is
-
- component lpm_rom
- generic (
- LPM_WIDTH : positive;
- LPM_TYPE : string := "LPM_ROM";
- LPM_WIDTHAD : positive;
- LPM_NUMWORDS : natural := 0;
- LPM_FILE : string;
- LPM_ADDRESS_CONTROL : string := "REGISTERED";
- LPM_OUTDATA : string := "REGISTERED";
- LPM_HINT : string := "UNUSED"
- );
- port (
- address : in std_logic_vector(LPM_WIDTHAD-1 downto 0);
- inclock : in std_logic;
- outclock : in std_logic;
- memenab : in std_logic;
- q : out std_logic_vector(LPM_WIDTH-1 downto 0)
- );
- end component;
-
- signal vdd_s : std_logic;
-
-begin
-
- vdd_s <= '1';
-
- rom_b : lpm_rom
- generic map (
- LPM_WIDTH => 8,
- LPM_TYPE => "LPM_ROM",
- LPM_WIDTHAD => 10,
- LPM_NUMWORDS => 2 ** 10,
- LPM_FILE => "rom_t48.hex",
- LPM_ADDRESS_CONTROL => "REGISTERED",
- LPM_OUTDATA => "UNREGISTERED",
- LPM_HINT => "UNUSED"
- )
- port map (
- address => rom_addr_i,
- inclock => clk_i,
- outclock => clk_i,
- memenab => vdd_s,
- q => rom_data_o
- );
-
-end lpm;
t48/rel_1_2/bench/vhdl/t48_rom-lpm-a.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/t49_rom-lpm-a.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/t49_rom-lpm-a.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/t49_rom-lpm-a.vhd (nonexistent)
@@ -1,94 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8x49 ROM
--- Wrapper for ROM model from the LPM library.
---
--- $Id$
---
--- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-architecture lpm of t49_rom is
-
- component lpm_rom
- generic (
- LPM_WIDTH : positive;
- LPM_TYPE : string := "LPM_ROM";
- LPM_WIDTHAD : positive;
- LPM_NUMWORDS : natural := 0;
- LPM_FILE : string;
- LPM_ADDRESS_CONTROL : string := "REGISTERED";
- LPM_OUTDATA : string := "REGISTERED";
- LPM_HINT : string := "UNUSED"
- );
- port (
- address : in std_logic_vector(LPM_WIDTHAD-1 downto 0);
- inclock : in std_logic;
- outclock : in std_logic;
- memenab : in std_logic;
- q : out std_logic_vector(LPM_WIDTH-1 downto 0)
- );
- end component;
-
- signal vdd_s : std_logic;
-
-begin
-
- vdd_s <= '1';
-
- rom_b : lpm_rom
- generic map (
- LPM_WIDTH => 8,
- LPM_TYPE => "LPM_ROM",
- LPM_WIDTHAD => 11,
- LPM_NUMWORDS => 2 ** 11,
- LPM_FILE => "rom_t49.hex",
- LPM_ADDRESS_CONTROL => "REGISTERED",
- LPM_OUTDATA => "UNREGISTERED",
- LPM_HINT => "UNUSED"
- )
- port map (
- address => rom_addr_i,
- inclock => clk_i,
- outclock => clk_i,
- memenab => vdd_s,
- q => rom_data_o
- );
-
-end lpm;
t48/rel_1_2/bench/vhdl/t49_rom-lpm-a.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/t48_rom-lpm-c.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/t48_rom-lpm-c.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/t48_rom-lpm-c.vhd (nonexistent)
@@ -1,24 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8x48 ROM
--- Wrapper for ROM model from the LPM library.
---
--- $Id$
---
--- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_rom_lpm_c0 of t48_rom is
-
- for lpm
-
- for rom_b: lpm_rom
- use configuration work.lpm_rom_c0;
- end for;
-
- end for;
-
-end t48_rom_lpm_c0;
t48/rel_1_2/bench/vhdl/t48_rom-lpm-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/t49_rom-lpm-c.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/t49_rom-lpm-c.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/t49_rom-lpm-c.vhd (nonexistent)
@@ -1,24 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8x49 ROM
--- Wrapper for ROM model from the LPM library.
---
--- $Id$
---
--- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t49_rom_lpm_c0 of t49_rom is
-
- for lpm
-
- for rom_b: lpm_rom
- use configuration work.lpm_rom_c0;
- end for;
-
- end for;
-
-end t49_rom_lpm_c0;
t48/rel_1_2/bench/vhdl/t49_rom-lpm-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/if_timing.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/if_timing.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/if_timing.vhd (nonexistent)
@@ -1,591 +0,0 @@
--------------------------------------------------------------------------------
---
--- Interface Timing Checker.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity if_timing is
-
- port (
- xtal_i : in std_logic;
- ale_i : in std_logic;
- psen_n_i : in std_logic;
- rd_n_i : in std_logic;
- wr_n_i : in std_logic;
- prog_n_i : in std_logic;
- db_bus_i : in std_logic_vector(7 downto 0);
- p2_i : in std_logic_vector(7 downto 0)
- );
-
-end if_timing;
-
-
-
-architecture behav of if_timing is
-
- signal last_xtal_rise_s : time;
- signal period_s : time;
-
- signal last_ale_rise_s,
- last_ale_fall_s : time;
-
- signal last_psen_n_rise_s,
- last_psen_n_fall_s : time;
-
- signal last_rd_n_rise_s,
- last_rd_n_fall_s : time;
-
- signal last_wr_n_rise_s,
- last_wr_n_fall_s : time;
-
- signal last_prog_n_rise_s,
- last_prog_n_fall_s : time;
-
- signal last_bus_change_s,
- bus_change_ale_s : time;
- signal last_p2_change_s : time;
-
- signal t_CY : time;
-
-begin
-
- t_CY <= 15 * period_s;
-
- -----------------------------------------------------------------------------
- -- Check RD
- --
- rd_check: process (rd_n_i)
- begin
- case rd_n_i is
- -- RD active
- when '0' =>
- -- tLAFC1: ALE to Control RD
- assert (now - last_ale_fall_s) > (t_CY / 5 - 75 ns)
- report "Timing violation of tLAFC1 on RD!"
- severity error;
-
- -- tAFC1: Addr Float to RD
- assert (now - last_bus_change_s) > (t_CY * 2/15 - 40 ns)
- report "Timing violation of tAFC1 on RD!"
- severity error;
-
- -- RD inactive
- when '1' =>
- -- tCC1: Control Pulse Width RD
- assert (now - last_rd_n_fall_s) > (t_CY / 2 - 200 ns)
- report "Timing violation of tCC1 on RD!"
- severity error;
-
- when others =>
- null;
- end case;
-
- end process rd_check;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Check WR
- --
- wr_check: process (wr_n_i)
- begin
- case wr_n_i is
- -- WR active
- when '0' =>
- -- tLAFC1: ALE to Control WR
- assert (now - last_ale_fall_s) > (t_CY / 5 - 75 ns)
- report "Timing violation of tLAFC1 on WR!"
- severity error;
-
- -- tAW: Addr Setup to WR
- assert (now - bus_change_ale_s) > (t_CY / 3 - 150 ns)
- report "Timing violation of tAW on WR!"
- severity error;
-
- -- WR inactive
- when '1' =>
- -- tCC1: Control Pulse Width WR
- assert (now - last_wr_n_fall_s) > (t_CY / 2 - 200 ns)
- report "Timing violation of tCC1 on WR!"
- severity error;
-
- -- tDW: Data Setup before WR
- assert (now - last_bus_change_s) > (t_CY * 13/30 - 200 ns)
- report "Timing violation of tDW on WR!"
- severity error;
-
- when others =>
- null;
- end case;
-
- end process wr_check;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Check BUS
- --
- bus_check: process (db_bus_i)
- begin
- -- RD access
- -- tAD1 and tRD1 are not checked as they are constraints for the
- -- external memory, not the t48!
-
- -- WR access
- if wr_n_i = '0' then
- -- tDW: Data Hold after WR
- assert (now - last_wr_n_rise_s) > (t_CY / 15 - 50 ns)
- report "Timing violation of tDW on BUS vs. WR!"
- severity error;
-
- end if;
-
- -- Address strobe
- if ale_i = '0' then
- -- tLA: Addr Hold from ALE
- assert (now - last_ale_fall_s) > (t_CY / 15 - 40 ns)
- report "Timing violation of tLA on BUS vs. ALE!"
- severity error;
- end if;
-
- -- PSEN
- if psen_n_i = '0' then
- -- tRD2: PSEN to Data In
- assert (now - last_psen_n_fall_s) < (t_CY * 4/15 - 170 ns)
- report "Timing violation of tRD2 on BUS vs. PSEN!"
- severity error;
- end if;
-
- end process bus_check;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Check ALE
- --
- ale_check: process (ale_i)
- variable t_CA1 : time;
- variable t_AL : time;
- begin
- case ale_i is
- when '0' =>
- t_AL := t_CY * 2/15 - 110 ns;
-
- -- tAL: Addr Setup to ALE
- assert (now - last_bus_change_s) > t_AL
- report "Timing violation of tAL on BUS vs. ALE!"
- severity error;
- assert (now - last_p2_change_s) > t_AL
- report "Timing violation of tAL on P2 vs. ALE!"
- severity error;
-
- when '1' =>
- -- tCA1: Control to ALE (RD, WR, PROG)
- t_CA1 := t_CY / 15 - 40 ns;
-
- assert (now - last_rd_n_rise_s) > t_CA1
- report "Timing violation of tCA1 on RD vs. ALE!"
- severity error;
- assert (now - last_wr_n_rise_s) > t_CA1
- report "Timing violation of tCA1 on WR vs. ALE!"
- severity error;
- assert (now - last_prog_n_rise_s) > t_CA1
- report "Timing violation of tCA1 on PROG vs. ALE!"
- severity error;
-
- -- tCA2: Control to ALE (PSEN)
- assert (now - last_psen_n_rise_s) > (t_CY * 4/15 - 40 ns)
- report "Timing violation of tCA2 on PSEN vs. ALE!"
- severity error;
-
- -- tPL: Port 2 I/O Setup to ALE
- assert (now - last_p2_change_s) > (t_CY * 4/15 - 200 ns)
- report "Timing violation of tPL on P2 vs. ALE!"
- severity error;
-
- when others =>
- null;
-
- end case;
-
- end process ale_check;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Check P2
- --
- p2_check: process (p2_i)
- begin
- case ale_i is
- when '0' =>
- -- tLA: Addr Hold from ALE
- assert ((now - last_ale_fall_s) > (t_CY / 15 - 40 ns)) or
- now = 0 ns
- report "Timing violation of tLA on P2 vs. ALE!"
- severity error;
-
- if last_ale_fall_s < last_ale_rise_s then
- -- tPV: Port Output from ALE
- assert (now - last_ale_fall_s) < (t_CY * 3/10 + 100 ns)
- report "Timing violation of tPV on P2 vs. ALE!"
- severity error;
- end if;
-
- if prog_n_i = '1' then
- -- tPD: Output Data Hold
- assert ((now - last_prog_n_rise_s) > (t_CY / 10 - 50 ns)) or
- now = 0 ns
- report "Timing violation of tPD on P2 vs. PROG!"
- severity error;
-
- end if;
-
- when '1' =>
- -- tLP: Port 2 I/O to ALE
- assert (now - last_ale_rise_s) > (t_CY / 30 - 30 ns)
- report "Timing violation of tLP on P2 vs. ALE!"
- severity error;
-
- when others =>
- null;
-
- end case;
-
- end process p2_check;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Check PROG
- --
- prog_check: process (prog_n_i)
- begin
- case prog_n_i is
- when '0' =>
- -- tCP: Port Control Setup to PROG'
- assert (now - last_p2_change_s) > (t_CY * 2/15 - 80 ns)
- report "Timing violation of tCP on P2 vs PROG'!"
- severity error;
-
- when '1' =>
- -- tPP: PROG Pulse Width
- assert (now - last_prog_n_fall_s) > (t_CY * 7/10 - 250 ns)
- report "Timing violation of tPP!"
- severity error;
-
- -- tDP: Output Data Setup
- assert (now - last_p2_change_s) > (t_CY * 2/5 - 150 ns)
- report "Timing violation of tDP on P2 vs. PROG!"
- severity error;
-
- when others =>
- null;
- end case;
-
- end process prog_check;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Check PSEN
- --
- psen_check: process (psen_n_i)
- begin
- case psen_n_i is
- when '1' =>
- -- tCC2: Control Pulse Width PSEN
- assert (now - last_psen_n_fall_s) > (t_CY * 2/5 - 200 ns)
- report "Timing violation of tCC2 on PSEN!"
- severity error;
-
- when '0' =>
- -- tLAFC2: ALE to Control PSEN
- assert (now - last_ale_fall_s) > (t_CY / 10 - 75 ns)
- report "Timing violation of tLAFC2 on PSEN vs. ALE!"
- severity error;
-
- when others =>
- null;
-
- end case;
-
- end process psen_check;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Check cycle overlap
- --
- cycle_overlap_check: process (psen_n_i,
- rd_n_i,
- wr_n_i)
- variable tmp_v : std_logic_vector(2 downto 0);
- begin
- tmp_v := psen_n_i & rd_n_i & wr_n_i;
- case tmp_v is
- when "001" |
- "010" |
- "100" |
- "000" =>
- assert false
- report "Cycle overlap deteced on PSEN, RD and WR!"
- severity error;
- when others =>
- null;
-
- end case;
-
- end process cycle_overlap_check;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Monitor XTAL
- --
- xtal_mon: process
- begin
- last_xtal_rise_s <= 0 ns;
- period_s <= 90 ns;
-
- while true loop
- wait on xtal_i;
-
- if xtal_i = '1' then
- period_s <= now - last_xtal_rise_s;
- last_xtal_rise_s <= now;
- end if;
-
- end loop;
-
- end process xtal_mon;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Monitor ALE
- --
- ale_mon: process
- begin
- last_ale_rise_s <= 0 ns;
- last_ale_fall_s <= 0 ns;
-
- while true loop
- wait on ale_i;
-
- case ale_i is
- when '0' =>
- last_ale_fall_s <= now;
- when '1' =>
- last_ale_rise_s <= now;
- when others =>
- null;
- end case;
-
- end loop;
-
- end process ale_mon;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Monitor PSEN
- --
- psen_mon: process
- begin
- last_psen_n_rise_s <= 0 ns;
- last_psen_n_fall_s <= 0 ns;
-
- while true loop
- wait on psen_n_i;
-
- case psen_n_i is
- when '0' =>
- last_psen_n_fall_s <= now;
- when '1' =>
- last_psen_n_rise_s <= now;
- when others =>
- null;
- end case;
-
- end loop;
-
- end process psen_mon;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Monitor RD
- --
- rd_mon: process
- begin
- last_rd_n_rise_s <= 0 ns;
- last_rd_n_fall_s <= 0 ns;
-
- while true loop
- wait on rd_n_i;
-
- case rd_n_i is
- when '0' =>
- last_rd_n_fall_s <= now;
- when '1' =>
- last_rd_n_rise_s <= now;
- when others =>
- null;
- end case;
-
- end loop;
-
- end process rd_mon;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Monitor WR
- --
- wr_mon: process
- begin
- last_wr_n_rise_s <= 0 ns;
- last_wr_n_fall_s <= 0 ns;
-
- while true loop
- wait on wr_n_i;
-
- case wr_n_i is
- when '0' =>
- last_wr_n_fall_s <= now;
- when '1' =>
- last_wr_n_rise_s <= now;
- when others =>
- null;
- end case;
-
- end loop;
-
- end process wr_mon;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Monitor PROG
- --
- prog_mon: process
- begin
- last_prog_n_rise_s <= 0 ns;
- last_prog_n_fall_s <= 0 ns;
-
- while true loop
- wait on prog_n_i;
-
- case prog_n_i is
- when '0' =>
- last_prog_n_fall_s <= now;
- when '1' =>
- last_prog_n_rise_s <= now;
- when others =>
- null;
- end case;
-
- end loop;
-
- end process prog_mon;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Monitor BUS
- --
- bus_mon: process
- begin
- last_bus_change_s <= 0 ns;
- bus_change_ale_s <= 0 ns;
-
- while true loop
- wait on db_bus_i;
-
- last_bus_change_s <= now;
-
- if ale_i = '1' then
- bus_change_ale_s <= now;
- end if;
- end loop;
-
- end process bus_mon;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Monitor P2
- --
- p2_mon: process
- begin
- last_p2_change_s <= 0 ns;
-
- while true loop
- wait on p2_i;
-
- last_p2_change_s <= now;
- end loop;
-
- end process p2_mon;
- --
- -----------------------------------------------------------------------------
-
-end behav;
t48/rel_1_2/bench/vhdl/if_timing.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/tb.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/tb.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/tb.vhd (nonexistent)
@@ -1,561 +0,0 @@
--------------------------------------------------------------------------------
---
--- The testbench for t48_core.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity tb is
-
-end tb;
-
-
-use work.t48_core_comp_pack.all;
-
-use work.t48_tb_pack.all;
-
-architecture behav of tb is
-
- -- clock period, 11 MHz
- constant period_c : time := 90 ns;
-
- component if_timing
- port(
- xtal_i : in std_logic;
- ale_i : in std_logic;
- psen_n_i : in std_logic;
- rd_n_i : in std_logic;
- wr_n_i : in std_logic;
- prog_n_i : in std_logic;
- db_bus_i : in std_logic_vector(7 downto 0);
- p2_i : in std_logic_vector(7 downto 0)
- );
- end component;
-
- component lpm_rom
- generic (
- LPM_WIDTH : positive;
- LPM_TYPE : string := "LPM_ROM";
- LPM_WIDTHAD : positive;
- LPM_NUMWORDS : natural := 0;
- LPM_FILE : string;
- LPM_ADDRESS_CONTROL : string := "REGISTERED";
- LPM_OUTDATA : string := "REGISTERED";
- LPM_HINT : string := "UNUSED"
- );
- port (
- address : in std_logic_vector(LPM_WIDTHAD-1 downto 0);
- inclock : in std_logic;
- outclock : in std_logic;
- memenab : in std_logic;
- q : out std_logic_vector(LPM_WIDTH-1 downto 0)
- );
- end component;
-
- signal xtal_s : std_logic;
- signal xtal_n_s : std_logic;
- signal res_n_s : std_logic;
- signal xtal3_s : std_logic;
- signal int_n_s : std_logic;
- signal ale_s : std_logic;
- signal rom_addr_s : std_logic_vector(11 downto 0);
- signal rom_data_s : std_logic_vector( 7 downto 0);
- signal ram_data_to_s : std_logic_vector( 7 downto 0);
- signal ram_data_from_s : std_logic_vector( 7 downto 0);
- signal ram_addr_s : std_logic_vector( 7 downto 0);
- signal ram_we_s : std_logic;
-
- signal p1_s : std_logic_vector( 7 downto 0);
- signal t48_p1_s : std_logic_vector( 7 downto 0);
- signal p1_low_imp_s : std_logic;
- signal p2_s : std_logic_vector( 7 downto 0);
- signal t48_p2_s : std_logic_vector( 7 downto 0);
- signal p2l_low_imp_s : std_logic;
- signal p2h_low_imp_s : std_logic;
- signal psen_n_s : std_logic;
- signal prog_n_s : std_logic;
-
- signal bus_s : std_logic_vector( 7 downto 0);
- signal t48_bus_s : std_logic_vector( 7 downto 0);
- signal bus_dir_s : std_logic;
-
- signal ext_mem_addr_q : std_logic_vector( 7 downto 0);
- signal ext_ram_data_from_s : std_logic_vector( 7 downto 0);
- signal ext_ram_we_q : std_logic;
- signal rd_n_s : std_logic;
- signal wr_n_s : std_logic;
-
- signal ext_rom_data_s : std_logic_vector( 7 downto 0);
- signal ext_rom_addr_s : std_logic_vector(11 downto 0);
-
- signal tb_p1_q : std_logic_vector( 7 downto 0);
- signal tb_p2_q : std_logic_vector( 7 downto 0);
-
- signal ext_mem_sel_we_q : boolean;
- signal ena_ext_ram_q : boolean;
- signal ena_tb_periph_q : boolean;
-
- signal zero_s : std_logic;
- signal one_s : std_logic;
- signal zero_byte_s : std_logic_vector( 7 downto 0);
-
-begin
-
- zero_s <= '0';
- one_s <= '1';
- zero_byte_s <= (others => '0');
-
- -----------------------------------------------------------------------------
- -- Internal ROM, 2k bytes
- -- Initialized by file rom_t49.hex.
- -----------------------------------------------------------------------------
- rom_internal_2k : lpm_rom
- generic map (
- LPM_WIDTH => 8,
- LPM_TYPE => "LPM_ROM",
- LPM_WIDTHAD => 11,
- LPM_NUMWORDS => 2 ** 11,
- LPM_FILE => "rom_t49.hex",
- LPM_ADDRESS_CONTROL => "REGISTERED",
- LPM_OUTDATA => "UNREGISTERED",
- LPM_HINT => "UNUSED"
- )
- port map (
- address => rom_addr_s(10 downto 0),
- inclock => xtal_s,
- outclock => zero_s, -- unused
- memenab => one_s,
- q => rom_data_s
- );
-
- -----------------------------------------------------------------------------
- -- External ROM, 2k bytes
- -- Initialized by file rom_t49_ext.hex.
- -----------------------------------------------------------------------------
- ext_rom_addr_s(11 downto 8) <= t48_p2_s(3 downto 0);
- ext_rom_addr_s( 7 downto 0) <= ext_mem_addr_q;
- rom_external_2k : lpm_rom
- generic map (
- LPM_WIDTH => 8,
- LPM_TYPE => "LPM_ROM",
- LPM_WIDTHAD => 11,
- LPM_NUMWORDS => 2 ** 11,
- LPM_FILE => "rom_t49_ext.hex",
- LPM_ADDRESS_CONTROL => "REGISTERED",
- LPM_OUTDATA => "UNREGISTERED",
- LPM_HINT => "UNUSED"
- )
- port map (
- address => ext_rom_addr_s(10 downto 0),
- inclock => xtal_s,
- outclock => zero_s, -- unused
- memenab => one_s,
- q => ext_rom_data_s
- );
-
- -----------------------------------------------------------------------------
- -- Internal RAM, 256 bytes
- -----------------------------------------------------------------------------
- ram_256 : generic_ram_ena
- generic map (
- addr_width_g => 8,
- data_width_g => 8
- )
- port map (
- clk_i => xtal_s,
- a_i => ram_addr_s,
- we_i => ram_we_s,
- ena_i => one_s,
- d_i => ram_data_to_s,
- d_o => ram_data_from_s
- );
-
- -----------------------------------------------------------------------------
- -- External RAM, 256 bytes
- -----------------------------------------------------------------------------
- ext_ram_b : generic_ram_ena
- generic map (
- addr_width_g => 8,
- data_width_g => 8
- )
- port map (
- clk_i => xtal_s,
- a_i => ext_mem_addr_q,
- we_i => ext_ram_we_q,
- ena_i => one_s,
- d_i => bus_s,
- d_o => ext_ram_data_from_s
- );
-
- t48_core_b : t48_core
- generic map (
- xtal_div_3_g => 1,
- register_mnemonic_g => 1,
- include_port1_g => 1,
- include_port2_g => 1,
- include_bus_g => 1,
- include_timer_g => 1,
- sample_t1_state_g => 4
- )
- port map (
- xtal_i => xtal_s,
- xtal_en_i => one_s,
- reset_i => res_n_s,
- t0_i => p1_s(0),
- t0_o => open,
- t0_dir_o => open,
- int_n_i => int_n_s,
- ea_i => rom_addr_s(11),
- rd_n_o => rd_n_s,
- psen_n_o => psen_n_s,
- wr_n_o => wr_n_s,
- ale_o => ale_s,
- db_i => bus_s,
- db_o => t48_bus_s,
- db_dir_o => bus_dir_s,
- t1_i => p1_s(1),
- p2_i => p2_s,
- p2_o => t48_p2_s,
- p2l_low_imp_o => p2l_low_imp_s,
- p2h_low_imp_o => p2h_low_imp_s,
- p1_i => p1_s,
- p1_o => t48_p1_s,
- p1_low_imp_o => p1_low_imp_s,
- prog_n_o => prog_n_s,
- clk_i => xtal_s,
- en_clk_i => xtal3_s,
- xtal3_o => xtal3_s,
- dmem_addr_o => ram_addr_s,
- dmem_we_o => ram_we_s,
- dmem_data_i => ram_data_from_s,
- dmem_data_o => ram_data_to_s,
- pmem_addr_o => rom_addr_s,
- pmem_data_i => rom_data_s
- );
-
- if_timing_b : if_timing
- port map (
- xtal_i => xtal_s,
- ale_i => ale_s,
- psen_n_i => psen_n_s,
- rd_n_i => rd_n_s,
- wr_n_i => wr_n_s,
- prog_n_i => prog_n_s,
- db_bus_i => bus_s,
- p2_i => t48_p2_s
- );
-
-
- -----------------------------------------------------------------------------
- -- Port logic
- --
- ports: process (t48_p1_s,
- p1_low_imp_s,
- t48_p2_s,
- p2l_low_imp_s,
- p2h_low_imp_s)
- function t48_port_f(t48_p : std_logic_vector;
- low_imp : std_logic) return std_logic_vector is
- variable p_v : std_logic_vector(t48_p'range);
- begin
- if low_imp = '1' then
- p_v := t48_p;
-
- else
- for i in p_v'range loop
- if t48_p(i) = '1' then
- p_v(i) := 'H';
- else
- p_v(i) := t48_p(i);
- end if;
- end loop;
-
- end if;
-
- return p_v;
- end;
-
- begin
-
- p1_s <= t48_port_f(t48_p => t48_p1_s,
- low_imp => p1_low_imp_s);
-
- p2_s(3 downto 0) <= t48_port_f(t48_p => t48_p2_s(3 downto 0),
- low_imp => p2l_low_imp_s);
- p2_s(7 downto 4) <= t48_port_f(t48_p => t48_p2_s(7 downto 4),
- low_imp => p2h_low_imp_s);
-
- end process ports;
- --
- -----------------------------------------------------------------------------
-
- bus_s <= t48_bus_s
- when bus_dir_s = '1' else
- (others => 'Z');
-
- bus_s <= ext_ram_data_from_s
- when rd_n_s = '0' and ena_ext_ram_q else
- (others => 'Z');
-
- bus_s <= ext_rom_data_s
- when psen_n_s = '0' else
- (others => 'Z');
-
-
- -----------------------------------------------------------------------------
- -- External memory access signals
- --
- ext_mem: process (wr_n_s,
- ext_mem_addr_q,
- ena_ext_ram_q,
- ale_s,
- bus_s,
- xtal_s)
- begin
- if ale_s'event and ale_s = '0' then
- if not is_X(bus_s) then
- ext_mem_addr_q <= bus_s;
- else
- ext_mem_addr_q <= (others => '0');
- end if;
- end if;
-
- if wr_n_s'event and wr_n_s = '1' then
- -- write enable for external RAM
- if ena_ext_ram_q then
- ext_ram_we_q <= '1';
- end if;
-
- -- process external memory selector
- if ext_mem_addr_q = "11111111" then
- ext_mem_sel_we_q <= true;
- end if;
-
- end if;
-
- if xtal_s'event and xtal_s = '1' then
- ext_ram_we_q <= '0';
- ext_mem_sel_we_q <= false;
- end if;
-
- end process ext_mem;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process ext_mem_sel
- --
- -- Purpose:
- -- Select external memory address space.
- -- This is either
- -- + external RAM
- -- + testbench peripherals
- --
- ext_mem_sel: process (res_n_s, xtal_s)
- begin
- if res_n_s = '0' then
- ena_ext_ram_q <= true;
- ena_tb_periph_q <= false;
-
- elsif xtal_s'event and xtal_s = '1' then
- if ext_mem_sel_we_q then
- if bus_s(0) = '1' then
- ena_ext_ram_q <= true;
- else
- ena_ext_ram_q <= false;
- end if;
-
- if bus_s(1) = '1' then
- ena_tb_periph_q <= true;
- else
- ena_tb_periph_q <= false;
- end if;
- end if;
-
- end if;
-
- end process ext_mem_sel;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process tb_periph
- --
- -- Purpose:
- -- Implements the testbenc peripherals driving P1 and P2.
- --
- tb_periph: process (res_n_s, wr_n_s)
-
- function oc_f (pX : std_logic_vector) return std_logic_vector is
- variable r_v : std_logic_vector(pX'range);
- begin
- for i in pX'range loop
- if pX(i) = '0' then
- r_v(i) := '0';
- else
- r_v(i) := 'H';
- end if;
- end loop;
-
- return r_v;
- end;
-
- begin
- if res_n_s = '0' then
- tb_p1_q <= (others => 'H');
- tb_p2_q <= (others => 'H');
-
- elsif wr_n_s'event and wr_n_s = '1' then
- if ena_tb_periph_q then
- case ext_mem_addr_q is
- -- P1
- when "00000000" =>
- tb_p1_q <= oc_f(t48_bus_s);
-
- -- P2
- when "00000001" =>
- tb_p2_q <= oc_f(t48_bus_s);
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- end if;
-
- end process tb_periph;
- --
- -----------------------------------------------------------------------------
-
- p1_s <= tb_p1_q;
- p2_s <= tb_p2_q;
-
-
- xtal_n_s <= not xtal_s;
-
- -----------------------------------------------------------------------------
- -- The clock generator
- --
- clk_gen: process
- begin
- xtal_s <= '0';
- wait for period_c/2;
- xtal_s <= '1';
- wait for period_c/2;
- end process clk_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- The reset generator
- --
- res_gen: process
- begin
- res_n_s <= '0';
- wait for 5 * period_c;
- res_n_s <= '1';
- wait;
- end process res_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- The interrupt generator
- --
- int_gen: process
- begin
- int_n_s <= '1';
- wait for 750 * period_c;
- int_n_s <= '0';
- wait for 45 * period_c;
- end process int_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- End of simulation detection
- --
- eos: process
- begin
-
- outer: loop
- wait on tb_accu_s;
- if tb_accu_s = "10101010" then
- wait on tb_accu_s;
- if tb_accu_s = "01010101" then
- wait on tb_accu_s;
- if tb_accu_s = "00000001" then
- -- wait for instruction strobe of this move
- wait until tb_istrobe_s'event and tb_istrobe_s = '1';
- -- wait for next strobe
- wait until tb_istrobe_s'event and tb_istrobe_s = '1';
- assert false
- report "Simulation Result: PASS."
- severity note;
- else
- assert false
- report "Simulation Result: FAIL."
- severity note;
- end if;
-
- assert false
- report "End of simulation reached."
- severity failure;
-
- end if;
- end if;
- end loop;
-
- end process eos;
- --
- -----------------------------------------------------------------------------
-
-end behav;
t48/rel_1_2/bench/vhdl/tb.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/tb_t8243.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/tb_t8243.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/tb_t8243.vhd (nonexistent)
@@ -1,624 +0,0 @@
--------------------------------------------------------------------------------
---
--- The testbench for t8243 core.
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity tb_t8243 is
-
-end tb_t8243;
-
-
-use work.t48_core_comp_pack.all;
-use work.t8243_comp_pack.t8243_sync_notri;
-
-use work.t48_tb_pack.all;
-
-architecture behav of tb_t8243 is
-
- -- clock period, 11 MHz
- constant period_c : time := 90 ns;
-
- component if_timing
- port(
- xtal_i : in std_logic;
- ale_i : in std_logic;
- psen_n_i : in std_logic;
- rd_n_i : in std_logic;
- wr_n_i : in std_logic;
- prog_n_i : in std_logic;
- db_bus_i : in std_logic_vector(7 downto 0);
- p2_i : in std_logic_vector(7 downto 0)
- );
- end component;
-
- component lpm_rom
- generic (
- LPM_WIDTH : positive;
- LPM_TYPE : string := "LPM_ROM";
- LPM_WIDTHAD : positive;
- LPM_NUMWORDS : natural := 0;
- LPM_FILE : string;
- LPM_ADDRESS_CONTROL : string := "REGISTERED";
- LPM_OUTDATA : string := "REGISTERED";
- LPM_HINT : string := "UNUSED"
- );
- port (
- address : in std_logic_vector(LPM_WIDTHAD-1 downto 0);
- inclock : in std_logic;
- outclock : in std_logic;
- memenab : in std_logic;
- q : out std_logic_vector(LPM_WIDTH-1 downto 0)
- );
- end component;
-
- signal xtal_s : std_logic;
- signal xtal_n_s : std_logic;
- signal res_n_s : std_logic;
- signal xtal3_s : std_logic;
- signal int_n_s : std_logic;
- signal ale_s : std_logic;
- signal rom_addr_s : std_logic_vector(11 downto 0);
- signal rom_data_s : std_logic_vector( 7 downto 0);
- signal ram_data_to_s : std_logic_vector( 7 downto 0);
- signal ram_data_from_s : std_logic_vector( 7 downto 0);
- signal ram_addr_s : std_logic_vector( 7 downto 0);
- signal ram_we_s : std_logic;
-
- signal p1_s : std_logic_vector( 7 downto 0);
- signal t48_p1_s : std_logic_vector( 7 downto 0);
- signal p1_low_imp_s : std_logic;
- signal p2_s : std_logic_vector( 7 downto 0);
- signal t48_p2_s : std_logic_vector( 7 downto 0);
- signal p2l_low_imp_s : std_logic;
- signal p2h_low_imp_s : std_logic;
- signal psen_n_s : std_logic;
- signal prog_n_s : std_logic;
-
- signal bus_s : std_logic_vector( 7 downto 0);
- signal t48_bus_s : std_logic_vector( 7 downto 0);
- signal bus_dir_s : std_logic;
-
- signal ext_mem_addr_q : std_logic_vector( 7 downto 0);
- signal ext_ram_data_from_s : std_logic_vector( 7 downto 0);
- signal ext_ram_we_q : std_logic;
- signal rd_n_s : std_logic;
- signal wr_n_s : std_logic;
-
- signal ext_rom_data_s : std_logic_vector( 7 downto 0);
- signal ext_rom_addr_s : std_logic_vector(11 downto 0);
-
- signal tb_p1_q : std_logic_vector( 7 downto 0);
- signal tb_p2_q : std_logic_vector( 7 downto 0);
-
- signal ext_mem_sel_we_q : boolean;
- signal ena_ext_ram_q : boolean;
- signal ena_tb_periph_q : boolean;
-
- signal t8243_p2_s : std_logic_vector(3 downto 0);
- signal t8243_p2_en_s : std_logic;
- signal p4_s,
- p5_s,
- p6_s,
- p7_s : std_logic_vector(3 downto 0);
- signal p4_p6_s,
- p5_p7_s : std_logic_vector(3 downto 0);
- signal p4_en_s,
- p5_en_s,
- p6_en_s,
- p7_en_s : std_logic;
-
- signal zero_s : std_logic;
- signal one_s : std_logic;
- signal zero_byte_s : std_logic_vector( 7 downto 0);
-
-begin
-
- zero_s <= '0';
- one_s <= '1';
- zero_byte_s <= (others => '0');
-
- -----------------------------------------------------------------------------
- -- Internal ROM, 2k bytes
- -- Initialized by file rom_t49.hex.
- -----------------------------------------------------------------------------
- rom_internal_2k : lpm_rom
- generic map (
- LPM_WIDTH => 8,
- LPM_TYPE => "LPM_ROM",
- LPM_WIDTHAD => 11,
- LPM_NUMWORDS => 2 ** 11,
- LPM_FILE => "rom_t49.hex",
- LPM_ADDRESS_CONTROL => "REGISTERED",
- LPM_OUTDATA => "UNREGISTERED",
- LPM_HINT => "UNUSED"
- )
- port map (
- address => rom_addr_s(10 downto 0),
- inclock => xtal_s,
- outclock => zero_s, -- unused
- memenab => one_s,
- q => rom_data_s
- );
-
- -----------------------------------------------------------------------------
- -- External ROM, 2k bytes
- -- Initialized by file rom_t49_ext.hex.
- -----------------------------------------------------------------------------
- ext_rom_addr_s(11 downto 8) <= t48_p2_s(3 downto 0);
- ext_rom_addr_s( 7 downto 0) <= ext_mem_addr_q;
- rom_external_2k : lpm_rom
- generic map (
- LPM_WIDTH => 8,
- LPM_TYPE => "LPM_ROM",
- LPM_WIDTHAD => 11,
- LPM_NUMWORDS => 2 ** 11,
- LPM_FILE => "rom_t49_ext.hex",
- LPM_ADDRESS_CONTROL => "REGISTERED",
- LPM_OUTDATA => "UNREGISTERED",
- LPM_HINT => "UNUSED"
- )
- port map (
- address => ext_rom_addr_s(10 downto 0),
- inclock => xtal_s,
- outclock => zero_s, -- unused
- memenab => one_s,
- q => ext_rom_data_s
- );
-
- -----------------------------------------------------------------------------
- -- Internal RAM, 256 bytes
- -----------------------------------------------------------------------------
- ram_256 : generic_ram_ena
- generic map (
- addr_width_g => 8,
- data_width_g => 8
- )
- port map (
- clk_i => xtal_s,
- a_i => ram_addr_s,
- we_i => ram_we_s,
- ena_i => one_s,
- d_i => ram_data_to_s,
- d_o => ram_data_from_s
- );
-
- -----------------------------------------------------------------------------
- -- External RAM, 256 bytes
- -----------------------------------------------------------------------------
- ext_ram_b : generic_ram_ena
- generic map (
- addr_width_g => 8,
- data_width_g => 8
- )
- port map (
- clk_i => xtal_s,
- a_i => ext_mem_addr_q,
- we_i => ext_ram_we_q,
- ena_i => one_s,
- d_i => bus_s,
- d_o => ext_ram_data_from_s
- );
-
- t48_core_b : t48_core
- generic map (
- xtal_div_3_g => 1,
- register_mnemonic_g => 1,
- include_port1_g => 1,
- include_port2_g => 1,
- include_bus_g => 1,
- include_timer_g => 1,
- sample_t1_state_g => 4
- )
- port map (
- xtal_i => xtal_s,
- xtal_en_i => one_s,
- reset_i => res_n_s,
- t0_i => p1_s(0),
- t0_o => open,
- t0_dir_o => open,
- int_n_i => int_n_s,
- ea_i => rom_addr_s(11),
- rd_n_o => rd_n_s,
- psen_n_o => psen_n_s,
- wr_n_o => wr_n_s,
- ale_o => ale_s,
- db_i => bus_s,
- db_o => t48_bus_s,
- db_dir_o => bus_dir_s,
- t1_i => p1_s(1),
- p2_i => p2_s,
- p2_o => t48_p2_s,
- p2l_low_imp_o => p2l_low_imp_s,
- p2h_low_imp_o => p2h_low_imp_s,
- p1_i => p1_s,
- p1_o => t48_p1_s,
- p1_low_imp_o => p1_low_imp_s,
- prog_n_o => prog_n_s,
- clk_i => xtal_s,
- en_clk_i => xtal3_s,
- xtal3_o => xtal3_s,
- dmem_addr_o => ram_addr_s,
- dmem_we_o => ram_we_s,
- dmem_data_i => ram_data_from_s,
- dmem_data_o => ram_data_to_s,
- pmem_addr_o => rom_addr_s,
- pmem_data_i => rom_data_s
- );
-
- if_timing_b : if_timing
- port map (
- xtal_i => xtal_s,
- ale_i => ale_s,
- psen_n_i => psen_n_s,
- rd_n_i => rd_n_s,
- wr_n_i => wr_n_s,
- prog_n_i => prog_n_s,
- db_bus_i => bus_s,
- p2_i => t48_p2_s
- );
-
-
- t8243_sync_notri_b : t8243_sync_notri
- port map (
- clk_i => xtal_s,
- clk_en_i => one_s,
- reset_n_i => one_s,
- cs_n_i => zero_s,
- prog_n_i => prog_n_s,
- p2_i => t48_p2_s(3 downto 0),
- p2_o => t8243_p2_s,
- p2_en_o => t8243_p2_en_s,
- p4_i => p4_p6_s,
- p4_o => p4_s,
- p4_en_o => p4_en_s,
- p5_i => p5_p7_s,
- p5_o => p5_s,
- p5_en_o => p5_en_s,
- p6_i => p4_p6_s,
- p6_o => p6_s,
- p6_en_o => p6_en_s,
- p7_i => p5_p7_s,
- p7_o => p7_s,
- p7_en_o => p7_en_s
- );
- p4_p6_s <= p4_s
- when p4_en_s = '1' else
- (others => 'Z');
- p5_p7_s <= p5_s
- when p5_en_s = '1' else
- (others => 'Z');
- p4_p6_s <= p6_s
- when p6_en_s = '1' else
- (others => 'Z');
- p5_p7_s <= p7_s
- when p7_en_s = '1' else
- (others => 'Z');
-
-
-
- -----------------------------------------------------------------------------
- -- Port logic
- --
- ports: process (t48_p1_s,
- p1_low_imp_s,
- t48_p2_s,
- p2l_low_imp_s,
- p2h_low_imp_s)
- function t48_port_f(t48_p : std_logic_vector;
- low_imp : std_logic) return std_logic_vector is
- variable p_v : std_logic_vector(t48_p'range);
- begin
- if low_imp = '1' then
- p_v := t48_p;
-
- else
- for i in p_v'range loop
- if t48_p(i) = '1' then
- p_v(i) := 'H';
- else
- p_v(i) := t48_p(i);
- end if;
- end loop;
-
- end if;
-
- return p_v;
- end;
-
- begin
-
- p1_s <= t48_port_f(t48_p => t48_p1_s,
- low_imp => p1_low_imp_s);
-
- p2_s(3 downto 0) <= t48_port_f(t48_p => t48_p2_s(3 downto 0),
- low_imp => p2l_low_imp_s);
- p2_s(7 downto 4) <= t48_port_f(t48_p => t48_p2_s(7 downto 4),
- low_imp => p2h_low_imp_s);
-
- end process ports;
- --
- -----------------------------------------------------------------------------
-
- t8243_p2: process (t8243_p2_s,
- t8243_p2_en_s)
- begin
- p2_s <= (others => 'Z');
-
- if t8243_p2_en_s = '1' then
- p2_s(3 downto 0) <= t8243_p2_s;
- end if;
- end process t8243_p2;
-
-
- bus_s <= t48_bus_s
- when bus_dir_s = '1' else
- (others => 'Z');
-
- bus_s <= ext_ram_data_from_s
- when rd_n_s = '0' and ena_ext_ram_q else
- (others => 'Z');
-
- bus_s <= ext_rom_data_s
- when psen_n_s = '0' else
- (others => 'Z');
-
-
- -----------------------------------------------------------------------------
- -- External memory access signals
- --
- ext_mem: process (wr_n_s,
- ext_mem_addr_q,
- ena_ext_ram_q,
- ale_s,
- bus_s,
- xtal_s)
- begin
- if ale_s'event and ale_s = '0' then
- if not is_X(bus_s) then
- ext_mem_addr_q <= bus_s;
- else
- ext_mem_addr_q <= (others => '0');
- end if;
- end if;
-
- if wr_n_s'event and wr_n_s = '1' then
- -- write enable for external RAM
- if ena_ext_ram_q then
- ext_ram_we_q <= '1';
- end if;
-
- -- process external memory selector
- if ext_mem_addr_q = "11111111" then
- ext_mem_sel_we_q <= true;
- end if;
-
- end if;
-
- if xtal_s'event and xtal_s = '1' then
- ext_ram_we_q <= '0';
- ext_mem_sel_we_q <= false;
- end if;
-
- end process ext_mem;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process ext_mem_sel
- --
- -- Purpose:
- -- Select external memory address space.
- -- This is either
- -- + external RAM
- -- + testbench peripherals
- --
- ext_mem_sel: process (res_n_s, xtal_s)
- begin
- if res_n_s = '0' then
- ena_ext_ram_q <= true;
- ena_tb_periph_q <= false;
-
- elsif xtal_s'event and xtal_s = '1' then
- if ext_mem_sel_we_q then
- if bus_s(0) = '1' then
- ena_ext_ram_q <= true;
- else
- ena_ext_ram_q <= false;
- end if;
-
- if bus_s(1) = '1' then
- ena_tb_periph_q <= true;
- else
- ena_tb_periph_q <= false;
- end if;
- end if;
-
- end if;
-
- end process ext_mem_sel;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process tb_periph
- --
- -- Purpose:
- -- Implements the testbenc peripherals driving P1 and P2.
- --
- tb_periph: process (res_n_s, wr_n_s)
-
- function oc_f (pX : std_logic_vector) return std_logic_vector is
- variable r_v : std_logic_vector(pX'range);
- begin
- for i in pX'range loop
- if pX(i) = '0' then
- r_v(i) := '0';
- else
- r_v(i) := 'H';
- end if;
- end loop;
-
- return r_v;
- end;
-
- begin
- if res_n_s = '0' then
- tb_p1_q <= (others => 'H');
- tb_p2_q <= (others => 'H');
-
- elsif wr_n_s'event and wr_n_s = '1' then
- if ena_tb_periph_q then
- case ext_mem_addr_q is
- -- P1
- when "00000000" =>
- tb_p1_q <= oc_f(t48_bus_s);
-
- -- P2
- when "00000001" =>
- tb_p2_q <= oc_f(t48_bus_s);
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- end if;
-
- end process tb_periph;
- --
- -----------------------------------------------------------------------------
-
- p1_s <= tb_p1_q;
- p2_s <= tb_p2_q;
-
-
- xtal_n_s <= not xtal_s;
-
- -----------------------------------------------------------------------------
- -- The clock generator
- --
- clk_gen: process
- begin
- xtal_s <= '0';
- wait for period_c/2;
- xtal_s <= '1';
- wait for period_c/2;
- end process clk_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- The reset generator
- --
- res_gen: process
- begin
- res_n_s <= '0';
- wait for 5 * period_c;
- res_n_s <= '1';
- wait;
- end process res_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- The interrupt generator
- --
- int_gen: process
- begin
- int_n_s <= '1';
- wait for 750 * period_c;
- int_n_s <= '0';
- wait for 45 * period_c;
- end process int_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- End of simulation detection
- --
- eos: process
- begin
-
- outer: loop
- wait on tb_accu_s;
- if tb_accu_s = "10101010" then
- wait on tb_accu_s;
- if tb_accu_s = "01010101" then
- wait on tb_accu_s;
- if tb_accu_s = "00000001" then
- -- wait for instruction strobe of this move
- wait until tb_istrobe_s'event and tb_istrobe_s = '1';
- -- wait for next strobe
- wait until tb_istrobe_s'event and tb_istrobe_s = '1';
- assert false
- report "Simulation Result: PASS."
- severity note;
- else
- assert false
- report "Simulation Result: FAIL."
- severity note;
- end if;
-
- assert false
- report "End of simulation reached."
- severity failure;
-
- end if;
- end if;
- end loop;
-
- end process eos;
- --
- -----------------------------------------------------------------------------
-
-end behav;
t48/rel_1_2/bench/vhdl/tb_t8243.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/tb_t8048.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/tb_t8048.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/tb_t8048.vhd (nonexistent)
@@ -1,296 +0,0 @@
--------------------------------------------------------------------------------
---
--- The testbench for t8048.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity tb_t8048 is
-
-end tb_t8048;
-
-
-use work.t48_core_comp_pack.generic_ram_ena;
-use work.t48_system_comp_pack.t8048;
-
-use work.t48_tb_pack.all;
-
-architecture behav of tb_t8048 is
-
- -- clock period, 11 MHz
- constant period_c : time := 90 ns;
-
- component lpm_rom
- generic (
- LPM_WIDTH : positive;
- LPM_TYPE : string := "LPM_ROM";
- LPM_WIDTHAD : positive;
- LPM_NUMWORDS : natural := 0;
- LPM_FILE : string;
- LPM_ADDRESS_CONTROL : string := "REGISTERED";
- LPM_OUTDATA : string := "REGISTERED";
- LPM_HINT : string := "UNUSED"
- );
- port (
- address : in std_logic_vector(LPM_WIDTHAD-1 downto 0);
- inclock : in std_logic;
- outclock : in std_logic;
- memenab : in std_logic;
- q : out std_logic_vector(LPM_WIDTH-1 downto 0)
- );
- end component;
-
- signal xtal_s : std_logic;
- signal res_n_s : std_logic;
- signal int_n_s : std_logic;
- signal ale_s : std_logic;
- signal psen_n_s : std_logic;
- signal prog_n_s : std_logic;
-
- signal t0_b : std_logic;
-
- signal p1_b : std_logic_vector( 7 downto 0);
- signal p2_b : std_logic_vector( 7 downto 0);
-
- signal db_b : std_logic_vector( 7 downto 0);
- signal ext_mem_addr_s : std_logic_vector(11 downto 0);
- signal ext_ram_data_from_s : std_logic_vector( 7 downto 0);
- signal ext_ram_we_s : std_logic;
- signal ext_rom_data_s : std_logic_vector( 7 downto 0);
- signal rd_n_s : std_logic;
- signal wr_n_s : std_logic;
-
- signal zero_s : std_logic;
- signal one_s : std_logic;
-
-begin
-
- zero_s <= '0';
- one_s <= '1';
-
- p2_b <= (others => 'H');
- p1_b <= (others => 'H');
-
- -----------------------------------------------------------------------------
- -- External ROM, 3k bytes
- -- Initialized by file t48_ext_rom.hex.
- -----------------------------------------------------------------------------
- ext_rom_b : lpm_rom
- generic map (
- LPM_WIDTH => 8,
- LPM_TYPE => "LPM_ROM",
- LPM_WIDTHAD => 12,
- LPM_NUMWORDS => 3 * (2 ** 10),
- LPM_FILE => "rom_t48_ext.hex",
- LPM_ADDRESS_CONTROL => "REGISTERED",
- LPM_OUTDATA => "UNREGISTERED",
- LPM_HINT => "UNUSED"
- )
- port map (
- address => ext_mem_addr_s,
- inclock => xtal_s,
- outclock => zero_s, -- unused
- memenab => one_s,
- q => ext_rom_data_s
- );
-
- ext_ram_b : generic_ram_ena
- generic map (
- addr_width_g => 8,
- data_width_g => 8
- )
- port map (
- clk_i => xtal_s,
- a_i => ext_mem_addr_s(7 downto 0),
- we_i => ext_ram_we_s,
- ena_i => one_s,
- d_i => db_b,
- d_o => ext_ram_data_from_s
- );
-
- t8048_b : t8048
- port map (
- xtal_i => xtal_s,
- reset_n_i => res_n_s,
- t0_b => t0_b,
- int_n_i => int_n_s,
- ea_i => zero_s,
- rd_n_o => rd_n_s,
- psen_n_o => psen_n_s,
- wr_n_o => wr_n_s,
- ale_o => ale_s,
- db_b => db_b,
- t1_i => p1_b(1),
- p2_b => p2_b,
- p1_b => p1_b,
- prog_n_o => prog_n_s
- );
-
-
- -----------------------------------------------------------------------------
- -- Read from external memory
- --
- db_b <= ext_rom_data_s
- when psen_n_s = '0' else
- (others => 'Z');
- db_b <= ext_ram_data_from_s
- when rd_n_s = '0' else
- (others => 'Z');
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- External RAM access signals
- --
- ext_ram: process (wr_n_s,
- ale_s,
- p2_b,
- db_b)
- begin
- -- lowest 1k of external ROM is not used
- ext_mem_addr_s(11 downto 8) <= To_X01Z(p2_b(3 downto 0));
-
- if ale_s'event and ale_s = '0' then
- if not is_X(db_b) then
- ext_mem_addr_s(7 downto 0) <= db_b;
- else
- ext_mem_addr_s(7 downto 0) <= (others => '0');
- end if;
- end if;
-
- if wr_n_s'event and wr_n_s = '1' then
- ext_ram_we_s <= '0';
- end if;
- if wr_n_s'event and wr_n_s = '0' then
- ext_ram_we_s <= '1';
- end if;
-
- end process ext_ram;
- --
- -----------------------------------------------------------------------------
-
- t0_b <= p1_b(0);
-
- -----------------------------------------------------------------------------
- -- The clock generator
- --
- clk_gen: process
- begin
- xtal_s <= '0';
- wait for period_c/2;
- xtal_s <= '1';
- wait for period_c/2;
- end process clk_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- The reset generator
- --
- res_gen: process
- begin
- res_n_s <= '0';
- wait for 5 * period_c;
- res_n_s <= '1';
- wait;
- end process res_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- The interrupt generator
- --
- int_gen: process
- begin
- int_n_s <= '1';
- wait for 750 * period_c;
- int_n_s <= '0';
- wait for 45 * period_c;
- end process int_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- End of simulation detection
- --
- eos: process
- begin
-
- outer: loop
- wait on tb_accu_s;
- if tb_accu_s = "10101010" then
- wait on tb_accu_s;
- if tb_accu_s = "01010101" then
- wait on tb_accu_s;
- if tb_accu_s = "00000001" then
- -- wait for instruction strobe of this move
- wait until tb_istrobe_s'event and tb_istrobe_s = '1';
- -- wait for next strobe
- wait until tb_istrobe_s'event and tb_istrobe_s = '1';
- assert false
- report "Simulation Result: PASS."
- severity note;
- else
- assert false
- report "Simulation Result: FAIL."
- severity note;
- end if;
-
- assert false
- report "End of simulation reached."
- severity failure;
-
- end if;
- end if;
- end loop;
-
- end process eos;
- --
- -----------------------------------------------------------------------------
-
-end behav;
t48/rel_1_2/bench/vhdl/tb_t8048.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/tb_t8039.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/tb_t8039.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/tb_t8039.vhd (nonexistent)
@@ -1,294 +0,0 @@
--------------------------------------------------------------------------------
---
--- The testbench for t8039.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity tb_t8039 is
-
-end tb_t8039;
-
-use work.t48_core_comp_pack.generic_ram_ena;
-use work.t48_system_comp_pack.t8039;
-
-use work.t48_tb_pack.all;
-
-architecture behav of tb_t8039 is
-
- -- clock period, 11 MHz
- constant period_c : time := 90 ns;
-
- component lpm_rom
- generic (
- LPM_WIDTH : positive;
- LPM_TYPE : string := "LPM_ROM";
- LPM_WIDTHAD : positive;
- LPM_NUMWORDS : natural := 0;
- LPM_FILE : string;
- LPM_ADDRESS_CONTROL : string := "REGISTERED";
- LPM_OUTDATA : string := "REGISTERED";
- LPM_HINT : string := "UNUSED"
- );
- port (
- address : in std_logic_vector(LPM_WIDTHAD-1 downto 0);
- inclock : in std_logic;
- outclock : in std_logic;
- memenab : in std_logic;
- q : out std_logic_vector(LPM_WIDTH-1 downto 0)
- );
- end component;
-
- signal xtal_s : std_logic;
- signal res_n_s : std_logic;
- signal int_n_s : std_logic;
- signal ale_s : std_logic;
- signal psen_n_s : std_logic;
- signal prog_n_s : std_logic;
-
- signal t0_b : std_logic;
-
- signal p1_b : std_logic_vector( 7 downto 0);
- signal p2_b : std_logic_vector( 7 downto 0);
-
- signal db_b : std_logic_vector( 7 downto 0);
- signal ext_mem_addr_s : std_logic_vector(11 downto 0);
- signal ext_ram_data_from_s : std_logic_vector( 7 downto 0);
- signal ext_ram_we_s : std_logic;
- signal ext_rom_data_s : std_logic_vector( 7 downto 0);
- signal rd_n_s : std_logic;
- signal wr_n_s : std_logic;
-
- signal zero_s : std_logic;
- signal one_s : std_logic;
-
-begin
-
- zero_s <= '0';
- one_s <= '1';
-
- p2_b <= (others => 'H');
- p1_b <= (others => 'H');
-
- -----------------------------------------------------------------------------
- -- External ROM, 4k bytes
- -- Initialized by file t3x_ext_rom.hex.
- -----------------------------------------------------------------------------
- ext_rom_b : lpm_rom
- generic map (
- LPM_WIDTH => 8,
- LPM_TYPE => "LPM_ROM",
- LPM_WIDTHAD => 12,
- LPM_NUMWORDS => 2 ** 12,
- LPM_FILE => "rom_t3x_ext.hex",
- LPM_ADDRESS_CONTROL => "REGISTERED",
- LPM_OUTDATA => "UNREGISTERED",
- LPM_HINT => "UNUSED"
- )
- port map (
- address => ext_mem_addr_s,
- inclock => xtal_s,
- outclock => zero_s, -- unused
- memenab => one_s,
- q => ext_rom_data_s
- );
-
- ext_ram_b : generic_ram_ena
- generic map (
- addr_width_g => 8,
- data_width_g => 8
- )
- port map (
- clk_i => xtal_s,
- a_i => ext_mem_addr_s(7 downto 0),
- we_i => ext_ram_we_s,
- ena_i => one_s,
- d_i => db_b,
- d_o => ext_ram_data_from_s
- );
-
- t8039_b : t8039
- port map (
- xtal_i => xtal_s,
- reset_n_i => res_n_s,
- t0_b => t0_b,
- int_n_i => int_n_s,
- ea_i => one_s,
- rd_n_o => rd_n_s,
- psen_n_o => psen_n_s,
- wr_n_o => wr_n_s,
- ale_o => ale_s,
- db_b => db_b,
- t1_i => p1_b(1),
- p2_b => p2_b,
- p1_b => p1_b,
- prog_n_o => prog_n_s
- );
-
-
- -----------------------------------------------------------------------------
- -- Read from external memory
- --
- db_b <= ext_rom_data_s
- when psen_n_s = '0' else
- (others => 'Z');
- db_b <= ext_ram_data_from_s
- when rd_n_s = '0' else
- (others => 'Z');
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- External memory access signals
- --
- ext_mem: process (wr_n_s,
- ale_s,
- p2_b,
- db_b)
- begin
- ext_mem_addr_s(11 downto 8) <= To_X01Z(p2_b(3 downto 0));
-
- if ale_s'event and ale_s = '0' then
- if not is_X(db_b) then
- ext_mem_addr_s(7 downto 0) <= db_b;
- else
- ext_mem_addr_s(7 downto 0) <= (others => '0');
- end if;
- end if;
-
- if wr_n_s'event and wr_n_s = '1' then
- ext_ram_we_s <= '0';
- end if;
- if wr_n_s'event and wr_n_s = '0' then
- ext_ram_we_s <= '1';
- end if;
-
- end process ext_mem;
- --
- -----------------------------------------------------------------------------
-
- t0_b <= p1_b(0);
-
- -----------------------------------------------------------------------------
- -- The clock generator
- --
- clk_gen: process
- begin
- xtal_s <= '0';
- wait for period_c/2;
- xtal_s <= '1';
- wait for period_c/2;
- end process clk_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- The reset generator
- --
- res_gen: process
- begin
- res_n_s <= '0';
- wait for 5 * period_c;
- res_n_s <= '1';
- wait;
- end process res_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- The interrupt generator
- --
- int_gen: process
- begin
- int_n_s <= '1';
- wait for 750 * period_c;
- int_n_s <= '0';
- wait for 45 * period_c;
- end process int_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- End of simulation detection
- --
- eos: process
- begin
-
- outer: loop
- wait on tb_accu_s;
- if tb_accu_s = "10101010" then
- wait on tb_accu_s;
- if tb_accu_s = "01010101" then
- wait on tb_accu_s;
- if tb_accu_s = "00000001" then
- -- wait for instruction strobe of this move
- wait until tb_istrobe_s'event and tb_istrobe_s = '1';
- -- wait for next strobe
- wait until tb_istrobe_s'event and tb_istrobe_s = '1';
- assert false
- report "Simulation Result: PASS."
- severity note;
- else
- assert false
- report "Simulation Result: FAIL."
- severity note;
- end if;
-
- assert false
- report "End of simulation reached."
- severity failure;
-
- end if;
- end if;
- end loop;
-
- end process eos;
- --
- -----------------------------------------------------------------------------
-
-end behav;
t48/rel_1_2/bench/vhdl/tb_t8039.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/bench/vhdl/tb_t8048_t8243.vhd
===================================================================
--- t48/rel_1_2/bench/vhdl/tb_t8048_t8243.vhd (revision 296)
+++ t48/rel_1_2/bench/vhdl/tb_t8048_t8243.vhd (nonexistent)
@@ -1,310 +0,0 @@
--------------------------------------------------------------------------------
---
--- The testbench for t8048 driving a t8243.
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity tb_t8048_t8243 is
-
-end tb_t8048_t8243;
-
-
-use work.t48_core_comp_pack.generic_ram_ena;
-use work.t48_system_comp_pack.t8048;
-use work.t8243_comp_pack.t8243;
-
-use work.t48_tb_pack.all;
-
-architecture behav of tb_t8048_t8243 is
-
- -- clock period, 11 MHz
- constant period_c : time := 90 ns;
-
- component lpm_rom
- generic (
- LPM_WIDTH : positive;
- LPM_TYPE : string := "LPM_ROM";
- LPM_WIDTHAD : positive;
- LPM_NUMWORDS : natural := 0;
- LPM_FILE : string;
- LPM_ADDRESS_CONTROL : string := "REGISTERED";
- LPM_OUTDATA : string := "REGISTERED";
- LPM_HINT : string := "UNUSED"
- );
- port (
- address : in std_logic_vector(LPM_WIDTHAD-1 downto 0);
- inclock : in std_logic;
- outclock : in std_logic;
- memenab : in std_logic;
- q : out std_logic_vector(LPM_WIDTH-1 downto 0)
- );
- end component;
-
- signal xtal_s : std_logic;
- signal res_n_s : std_logic;
- signal int_n_s : std_logic;
- signal ale_s : std_logic;
- signal psen_n_s : std_logic;
- signal prog_n_s : std_logic;
-
- signal p1_b : std_logic_vector( 7 downto 0);
- signal p2_b : std_logic_vector( 7 downto 0);
-
- signal p4_b : std_logic_vector( 3 downto 0);
- signal p5_b : std_logic_vector( 3 downto 0);
-
- signal db_b : std_logic_vector( 7 downto 0);
- signal ext_mem_addr_s : std_logic_vector(11 downto 0);
- signal ext_ram_data_from_s : std_logic_vector( 7 downto 0);
- signal ext_ram_we_s : std_logic;
- signal ext_rom_data_s : std_logic_vector( 7 downto 0);
- signal rd_n_s : std_logic;
- signal wr_n_s : std_logic;
-
- signal zero_s : std_logic;
- signal one_s : std_logic;
-
-begin
-
- zero_s <= '0';
- one_s <= '1';
-
- p2_b <= (others => 'H');
- p1_b <= (others => 'H');
-
- -----------------------------------------------------------------------------
- -- External ROM, 3k bytes
- -- Initialized by file t48_ext_rom.hex.
- -----------------------------------------------------------------------------
- ext_rom_b : lpm_rom
- generic map (
- LPM_WIDTH => 8,
- LPM_TYPE => "LPM_ROM",
- LPM_WIDTHAD => 12,
- LPM_NUMWORDS => 3 * (2 ** 10),
- LPM_FILE => "rom_t48_ext.hex",
- LPM_ADDRESS_CONTROL => "REGISTERED",
- LPM_OUTDATA => "UNREGISTERED",
- LPM_HINT => "UNUSED"
- )
- port map (
- address => ext_mem_addr_s,
- inclock => xtal_s,
- outclock => zero_s, -- unused
- memenab => one_s,
- q => ext_rom_data_s
- );
-
- ext_ram_b : generic_ram_ena
- generic map (
- addr_width_g => 8,
- data_width_g => 8
- )
- port map (
- clk_i => xtal_s,
- a_i => ext_mem_addr_s(7 downto 0),
- we_i => ext_ram_we_s,
- ena_i => one_s,
- d_i => db_b,
- d_o => ext_ram_data_from_s
- );
-
- t8048_b : t8048
- port map (
- xtal_i => xtal_s,
- reset_n_i => res_n_s,
- t0_b => p1_b(0),
- int_n_i => int_n_s,
- ea_i => zero_s,
- rd_n_o => rd_n_s,
- psen_n_o => psen_n_s,
- wr_n_o => wr_n_s,
- ale_o => ale_s,
- db_b => db_b,
- t1_i => p1_b(1),
- p2_b => p2_b,
- p1_b => p1_b,
- prog_n_o => prog_n_s
- );
-
- t8243_b : t8243
- port map (
- cs_n_i => zero_s,
- prog_n_i => prog_n_s,
- p2_b => p2_b(3 downto 0),
- p4_b => p4_b,
- p5_b => p5_b,
- p6_b => p4_b,
- p7_b => p5_b
- );
-
- p4_b <= (others => 'H');
- p5_b <= (others => 'H');
-
-
- -----------------------------------------------------------------------------
- -- Read from external memory
- --
- db_b <= ext_rom_data_s
- when psen_n_s = '0' else
- (others => 'Z');
- db_b <= ext_ram_data_from_s
- when rd_n_s = '0' else
- (others => 'Z');
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- External RAM access signals
- --
- ext_ram: process (wr_n_s,
- ale_s,
- p2_b,
- db_b)
- begin
- -- lowest 1k of external ROM is not used
- ext_mem_addr_s(11 downto 8) <= To_X01Z(p2_b(3 downto 0));
-
- if ale_s'event and ale_s = '0' then
- if not is_X(db_b) then
- ext_mem_addr_s(7 downto 0) <= db_b;
- else
- ext_mem_addr_s(7 downto 0) <= (others => '0');
- end if;
- end if;
-
- if wr_n_s'event and wr_n_s = '1' then
- ext_ram_we_s <= '0';
- end if;
- if wr_n_s'event and wr_n_s = '0' then
- ext_ram_we_s <= '1';
- end if;
-
- end process ext_ram;
- --
- -----------------------------------------------------------------------------
-
- -----------------------------------------------------------------------------
- -- The clock generator
- --
- clk_gen: process
- begin
- xtal_s <= '0';
- wait for period_c/2;
- xtal_s <= '1';
- wait for period_c/2;
- end process clk_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- The reset generator
- --
- res_gen: process
- begin
- res_n_s <= '0';
- wait for 5 * period_c;
- res_n_s <= '1';
- wait;
- end process res_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- The interrupt generator
- --
- int_gen: process
- begin
- int_n_s <= '1';
- wait for 750 * period_c;
- int_n_s <= '0';
- wait for 45 * period_c;
- end process int_gen;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- End of simulation detection
- --
- eos: process
- begin
-
- outer: loop
- wait on tb_accu_s;
- if tb_accu_s = "10101010" then
- wait on tb_accu_s;
- if tb_accu_s = "01010101" then
- wait on tb_accu_s;
- if tb_accu_s = "00000001" then
- -- wait for instruction strobe of this move
- wait until tb_istrobe_s'event and tb_istrobe_s = '1';
- -- wait for next strobe
- wait until tb_istrobe_s'event and tb_istrobe_s = '1';
- assert false
- report "Simulation Result: PASS."
- severity note;
- else
- assert false
- report "Simulation Result: FAIL."
- severity note;
- end if;
-
- assert false
- report "End of simulation reached."
- severity failure;
-
- end if;
- end if;
- end loop;
-
- end process eos;
- --
- -----------------------------------------------------------------------------
-
-end behav;
t48/rel_1_2/bench/vhdl/tb_t8048_t8243.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/cond_branch-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/cond_branch-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/cond_branch-c.vhd (nonexistent)
@@ -1,19 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Conditional Branch Logic unit.
--- Decisions whether to take a jump or not are made here.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_cond_branch_rtl_c0 of t48_cond_branch is
-
- for rtl
- end for;
-
-end t48_cond_branch_rtl_c0;
t48/rel_1_2/rtl/vhdl/cond_branch-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/p1.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/p1.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/p1.vhd (nonexistent)
@@ -1,151 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Port 1 unit.
--- Implements the Port 1 logic.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_t;
-
-entity t48_p1 is
-
- port (
- -- Global Interface -------------------------------------------------------
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- -- T48 Bus Interface ------------------------------------------------------
- data_i : in word_t;
- data_o : out word_t;
- write_p1_i : in boolean;
- read_p1_i : in boolean;
- read_reg_i : in boolean;
- -- Port 1 Interface -------------------------------------------------------
- p1_i : in word_t;
- p1_o : out word_t;
- p1_low_imp_o : out std_logic
- );
-
-end t48_p1;
-
-
-use work.t48_pack.clk_active_c;
-use work.t48_pack.res_active_c;
-use work.t48_pack.bus_idle_level_c;
-
-architecture rtl of t48_p1 is
-
- -- the port output register
- signal p1_q : word_t;
-
- -- the low impedance marker
- signal low_imp_q : std_logic;
-
-begin
-
- -----------------------------------------------------------------------------
- -- Process p1_reg
- --
- -- Purpose:
- -- Implements the port output register.
- --
- p1_reg: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- p1_q <= (others => '1');
- low_imp_q <= '0';
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- if write_p1_i then
- p1_q <= data_i;
- low_imp_q <= '1';
- else
- low_imp_q <= '0';
- end if;
-
- end if;
-
- end if;
-
- end process p1_reg;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process p1_data
- --
- -- Purpose:
- -- Generates the T48 bus data.
- --
- p1_data: process (read_p1_i,
- p1_i,
- read_reg_i,
- p1_q)
- begin
- data_o <= (others => bus_idle_level_c);
-
- if read_p1_i then
- if read_reg_i then
- data_o <= p1_q;
- else
- data_o <= p1_i;
- end if;
- end if;
-
- end process p1_data;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output Mapping.
- -----------------------------------------------------------------------------
- p1_o <= p1_q;
- p1_low_imp_o <= low_imp_q;
-
-end rtl;
t48/rel_1_2/rtl/vhdl/p1.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/p2.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/p2.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/p2.vhd (nonexistent)
@@ -1,238 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Port 2 unit.
--- Implements the Port 2 logic.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_t;
-use work.t48_pack.nibble_t;
-
-entity t48_p2 is
-
- port (
- -- Global Interface -------------------------------------------------------
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- xtal_i : in std_logic;
- xtal_en_i : in boolean;
- -- T48 Bus Interface ------------------------------------------------------
- data_i : in word_t;
- data_o : out word_t;
- write_p2_i : in boolean;
- write_exp_i : in boolean;
- read_p2_i : in boolean;
- read_reg_i : in boolean;
- read_exp_i : in boolean;
- -- Port 2 Interface -------------------------------------------------------
- output_pch_i : in boolean;
- pch_i : in nibble_t;
- p2_i : in word_t;
- p2_o : out word_t;
- p2l_low_imp_o : out std_logic;
- p2h_low_imp_o : out std_logic
- );
-
-end t48_p2;
-
-
-use work.t48_pack.clk_active_c;
-use work.t48_pack.res_active_c;
-use work.t48_pack.bus_idle_level_c;
-
-architecture rtl of t48_p2 is
-
- -- the port output register
- signal p2_q : word_t;
-
- -- the low impedance markers
- signal l_low_imp_q,
- h_low_imp_q : std_logic;
-
- signal en_clk_q : boolean;
- signal l_low_imp_del_q,
- h_low_imp_del_q : std_logic;
- signal output_pch_q : boolean;
-
-begin
-
- -----------------------------------------------------------------------------
- -- Process p2_regs
- --
- -- Purpose:
- -- Implements the port output and expander registers.
- --
- p2_regs: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- p2_q <= (others => '1');
- l_low_imp_q <= '0';
- h_low_imp_q <= '0';
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
- -- default: reset low impedance marker
- l_low_imp_q <= '0';
- h_low_imp_q <= '0';
-
- if write_p2_i then
- -- write whole P2
- p2_q <= data_i;
- l_low_imp_q <= '1';
- h_low_imp_q <= '1';
-
- elsif write_exp_i then
- -- write lower nibble of P2
- p2_q(nibble_t'range) <= data_i(nibble_t'range);
- l_low_imp_q <= '1';
-
- end if;
-
- end if;
-
- end if;
-
- end process p2_regs;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process p2_port
- --
- -- Purpose:
- -- Generates the output byte vector for Port 2.
- -- It is a synchronous process clocked with XTAL. This ensures that
- -- P2 data and low impedance markers are free of glitches and stabilize
- -- during the same clock/machine state.
- -- On the other hand, P2 is delayed by 1 XTAL cycle.
- --
- p2_port: process (res_i, xtal_i)
- begin
- if res_i = res_active_c then
- p2_o <= (others => '1');
- l_low_imp_del_q <= '0';
- h_low_imp_del_q <= '0';
- output_pch_q <= false;
- en_clk_q <= false;
-
- elsif xtal_i'event and xtal_i = clk_active_c then
- if xtal_en_i then
- -- delay clock enable by one XTAL period
- en_clk_q <= en_clk_i;
-
- p2_o <= p2_q;
- output_pch_q <= output_pch_i;
-
- if output_pch_i then
- p2_o(nibble_t'range) <= pch_i;
- end if;
-
- -- generate low impedance trigger for one XTAL clock period after
- -- global clock enable when
- -- a) switching to or from PCH
- -- b) l_low_imp_q is active
- if en_clk_q and
- ((output_pch_q xor output_pch_i) or
- l_low_imp_q = '1') then
- l_low_imp_del_q <= '1';
- else
- l_low_imp_del_q <= '0';
- end if;
-
- -- generate low impedance trigger for on XTAL clock period after
- -- global clock enable when
- -- h_low_imp_q is active
- if en_clk_q and
- h_low_imp_q = '1' then
- h_low_imp_del_q <= '1';
- else
- h_low_imp_del_q <= '0';
- end if;
-
- end if;
- end if;
- end process p2_port;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process p2_data
- --
- -- Purpose:
- -- Generates the T48 bus data.
- --
- p2_data: process (read_p2_i,
- p2_i,
- read_reg_i,
- p2_q,
- read_exp_i)
- begin
- data_o <= (others => bus_idle_level_c);
-
- if read_p2_i then
- if read_reg_i then
- data_o <= p2_q;
- elsif read_exp_i then
- data_o <= "0000" & p2_i(nibble_t'range);
- else
- data_o <= p2_i;
- end if;
- end if;
-
- end process p2_data;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output Mapping.
- -----------------------------------------------------------------------------
- p2l_low_imp_o <= l_low_imp_del_q;
- p2h_low_imp_o <= h_low_imp_del_q;
-
-end rtl;
t48/rel_1_2/rtl/vhdl/p2.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/alu.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/alu.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/alu.vhd (nonexistent)
@@ -1,415 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Arithmetic Logic Unit (ALU).
--- It contains the ALU core plus the Accumulator and the Temp Reg.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_t;
-use work.t48_alu_pack.alu_op_t;
-
-entity t48_alu is
-
- port (
- -- Global Interface -------------------------------------------------------
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- -- T48 Bus Interface ------------------------------------------------------
- data_i : in word_t;
- data_o : out word_t;
- write_accu_i : in boolean;
- write_shadow_i : in boolean;
- write_temp_reg_i : in boolean;
- read_alu_i : in boolean;
- -- Decoder Interface ------------------------------------------------------
- carry_i : in std_logic;
- carry_o : out std_logic;
- aux_carry_o : out std_logic;
- alu_op_i : in alu_op_t;
- use_carry_i : in boolean;
- da_high_i : in boolean;
- da_overflow_o : out boolean;
- accu_low_i : in boolean;
- p06_temp_reg_i : in boolean;
- p60_temp_reg_i : in boolean
- );
-
-end t48_alu;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-use work.t48_pack.clk_active_c;
-use work.t48_pack.res_active_c;
-use work.t48_pack.bus_idle_level_c;
-use work.t48_pack.nibble_t;
-use work.t48_alu_pack.all;
-
--- pragma translate_off
-use work.t48_tb_pack.tb_accu_s;
--- pragma translate_on
-
-architecture rtl of t48_alu is
-
- -- the Accumulator and Temp Reg
- signal accumulator_q,
- accu_shadow_q,
- temp_req_q : word_t;
- -- inputs to the ALU core
- signal in_a_s,
- in_b_s : word_t;
- -- output of the ALU core
- signal data_s : word_t;
-
- signal add_result_s : alu_operand_t;
-
-begin
-
- -----------------------------------------------------------------------------
- -- Process working_regs
- --
- -- Purpose:
- -- Implements the working registers:
- -- + Accumulator
- -- + Temp Reg
- --
- working_regs: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- accumulator_q <= (others => '0');
- accu_shadow_q <= (others => '0');
- temp_req_q <= (others => '0');
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- if write_accu_i then
- if accu_low_i then
- accumulator_q(nibble_t'range) <= data_i(nibble_t'range);
- else
- accumulator_q <= data_i;
- end if;
- end if;
-
- if write_shadow_i then
- -- write shadow directly from t48 data bus
- accu_shadow_q <= data_i;
- else
- -- default: update shadow Accumulator from real Accumulator
- accu_shadow_q <= accumulator_q;
- end if;
-
- if p06_temp_reg_i then
- -- low nibble of DA sequence
- temp_req_q <= "00000110";
- elsif p60_temp_reg_i then
- -- high nibble of DA sequence
- temp_req_q <= "01100000";
- elsif write_temp_reg_i then
- -- normal load from T48 bus
- temp_req_q <= data_i;
- end if;
-
- end if;
-
- end if;
-
- end process working_regs;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Build the inputs to the ALU core.
- -- Input A:
- -- Unary operators use only Input A.
- -- Is always fed from the shadow Accumulator.
- -- Assumption: It never happens that the Accumulator is written and then
- -- read for an ALU operation in the next cycle.
- -- Its contents can thus be staged through the shadow Accu.
- -- Input B:
- -- Is always fed from the Temp Reg.
- -----------------------------------------------------------------------------
- in_a_s <= accu_shadow_q;
- in_b_s <= temp_req_q;
-
-
- -----------------------------------------------------------------------------
- -- Process alu_core
- --
- -- Purpose:
- -- Implements the ALU core.
- -- All operations defined in alu_op_t are handled here.
- --
- alu_core: process (in_a_s,
- in_b_s,
- alu_op_i,
- carry_i,
- use_carry_i,
- add_result_s)
-
- begin
- -- default assigments
- data_s <= (others => '0');
- carry_o <= '0';
-
- case alu_op_i is
- -- Operation: AND -------------------------------------------------------
- when ALU_AND =>
- data_s <= in_a_s and in_b_s;
-
- -- Operation: OR --------------------------------------------------------
- when ALU_OR =>
- data_s <= in_a_s or in_b_s;
-
- -- Operation: XOR -------------------------------------------------------
- when ALU_XOR =>
- data_s <= in_a_s xor in_b_s;
-
- -- Operation: Add -------------------------------------------------------
- when ALU_ADD =>
- data_s <= add_result_s(data_s'range);
- carry_o <= add_result_s(add_result_s'high);
-
- -- Operation: CPL -------------------------------------------------------
- when ALU_CPL =>
- data_s <= not in_a_s;
-
- -- Operation: CLR -------------------------------------------------------
- when ALU_CLR =>
- data_s <= (others => '0');
-
- -- Operation: RL --------------------------------------------------------
- when ALU_RL =>
- data_s(7 downto 1) <= in_a_s(6 downto 0);
- carry_o <= in_a_s(7);
-
- if use_carry_i then
- data_s(0) <= carry_i;
- else
- data_s(0) <= in_a_s(7);
- end if;
-
- -- Operation: RR --------------------------------------------------------
- when ALU_RR =>
- data_s(6 downto 0) <= in_a_s(7 downto 1);
- carry_o <= in_a_s(0);
-
- if use_carry_i then
- data_s(7) <= carry_i;
- else
- data_s(7) <= in_a_s(0);
- end if;
-
- -- Operation: Swap ------------------------------------------------------
- when ALU_SWAP =>
- data_s(3 downto 0) <= in_a_s(7 downto 4);
- data_s(7 downto 4) <= in_a_s(3 downto 0);
-
- -- Operation: DEC -------------------------------------------------------
- when ALU_DEC =>
- data_s <= add_result_s(data_s'range);
-
- -- Operation: INC -------------------------------------------------------
- when ALU_INC =>
- data_s <= add_result_s(data_s'range);
-
- -- Operation CONCAT -----------------------------------------------------
- when ALU_CONCAT =>
- data_s <= in_b_s(7 downto 4) & in_a_s(3 downto 0);
-
- -- Operation: NOP -------------------------------------------------------
- when ALU_NOP =>
- data_s <= in_a_s;
-
- when others =>
- -- pragma translate_off
- assert false
- report "Unknown ALU operation selected!"
- severity error;
- -- pragma translate_on
-
- end case;
-
- end process alu_core;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process adder
- --
- -- Purpose:
- -- Implements the adder used by several instructions.
- -- This way of modelling the adder forces resource sharing of:
- -- * ADD
- -- * INC
- -- * DEC
- --
- adder: process (in_a_s,
- in_b_s,
- alu_op_i,
- carry_i,
- use_carry_i)
-
- variable add_a_v, add_b_v : alu_operand_t;
- variable c_v : alu_operand_t;
- variable result_v : UNSIGNED(alu_operand_t'range);
- variable aux_c_v : std_logic_vector(1 downto 0);
-
- begin
- -- Carry Selection --------------------------------------------------------
- c_v := (others => '0');
- if use_carry_i and carry_i = '1' then
- c_v(0) := '1';
- end if;
-
- -- Operand Selection ------------------------------------------------------
- -- defaults for ADD
- add_a_v := '0' & in_a_s;
- add_b_v := '0' & in_b_s;
-
- case alu_op_i is
- when ALU_INC =>
- add_b_v := (others => '0');
- add_b_v(0) := '1';
- when ALU_DEC =>
- add_b_v := (others => '1');
- when others =>
- null;
- end case;
-
- -- The Adder --------------------------------------------------------------
- result_v := UNSIGNED(add_a_v) +
- UNSIGNED(add_b_v) +
- UNSIGNED(c_v);
-
- add_result_s <= std_logic_vector(result_v);
-
- -- Auxiliary Carry --------------------------------------------------------
- aux_c_v := in_a_s(4) & in_b_s(4);
-
- aux_carry_o <= '0';
- case aux_c_v is
- when "00" | "11" =>
- if result_v(4) = '1' then
- aux_carry_o <= '1';
- end if;
-
- when "01" | "10" =>
- if result_v(4) = '0' then
- aux_carry_o <= '1';
- end if;
-
- when others =>
- null;
-
- end case;
-
- end process adder;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process da_overflow
- --
- -- Purpose:
- -- Detect overflow situation during DA sequence.
- --
- da_overflow: process (accu_shadow_q,
- da_high_i)
-
- variable da_nibble_v : nibble_t;
-
- function da_overflow_f(data : in nibble_t) return boolean is
- variable overflow_v : boolean;
- begin
- case data is
- when "1010" |
- "1011" |
- "1100" |
- "1101" |
- "1110" |
- "1111" =>
- overflow_v := true;
- when others =>
- overflow_v := false;
- end case;
-
- return(overflow_v);
- end;
-
- begin
- if da_high_i then
- da_nibble_v := accu_shadow_q(7 downto 4);
- else
- da_nibble_v := accu_shadow_q(3 downto 0);
- end if;
-
- da_overflow_o <= da_overflow_f(da_nibble_v);
-
- end process da_overflow;
- --
- -----------------------------------------------------------------------------
-
-
- -- pragma translate_off
- -----------------------------------------------------------------------------
- -- Testbench support.
- -----------------------------------------------------------------------------
- tb_accu_s <= accumulator_q;
- -- pragma translate_on
-
- -----------------------------------------------------------------------------
- -- Output Multiplexer.
- -----------------------------------------------------------------------------
- data_o <= data_s
- when read_alu_i else
- (others => bus_idle_level_c);
-
-end rtl;
t48/rel_1_2/rtl/vhdl/alu.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/dmem_ctrl-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/dmem_ctrl-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/dmem_ctrl-c.vhd (nonexistent)
@@ -1,19 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Data Memory control unit.
--- All accesses to the Data Memory are managed here.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_dmem_ctrl_rtl_c0 of t48_dmem_ctrl is
-
- for rtl
- end for;
-
-end t48_dmem_ctrl_rtl_c0;
t48/rel_1_2/rtl/vhdl/dmem_ctrl-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t48_comp_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t48_comp_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t48_comp_pack-p.vhd (nonexistent)
@@ -1,374 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2004, 2005, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_alu_pack.alu_op_t;
-use work.t48_cond_branch_pack.branch_conditions_t;
-use work.t48_cond_branch_pack.comp_value_t;
-use work.t48_decoder_pack.mnemonic_t;
-use work.t48_dmem_ctrl_pack.dmem_addr_ident_t;
-use work.t48_pmem_ctrl_pack.pmem_addr_ident_t;
-use work.t48_pack.dmem_addr_t;
-use work.t48_pack.pmem_addr_t;
-use work.t48_pack.mstate_t;
-use work.t48_pack.word_t;
-use work.t48_pack.nibble_t;
-
-package t48_comp_pack is
-
- component t48_alu
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- data_i : in word_t;
- data_o : out word_t;
- write_accu_i : in boolean;
- write_shadow_i : in boolean;
- write_temp_reg_i : in boolean;
- read_alu_i : in boolean;
- carry_i : in std_logic;
- carry_o : out std_logic;
- aux_carry_o : out std_logic;
- alu_op_i : in alu_op_t;
- use_carry_i : in boolean;
- da_high_i : in boolean;
- da_overflow_o : out boolean;
- accu_low_i : in boolean;
- p06_temp_reg_i : in boolean;
- p60_temp_reg_i : in boolean
- );
- end component;
-
- component t48_bus_mux
- port (
- alu_data_i : in word_t;
- bus_data_i : in word_t;
- dec_data_i : in word_t;
- dm_data_i : in word_t;
- pm_data_i : in word_t;
- p1_data_i : in word_t;
- p2_data_i : in word_t;
- psw_data_i : in word_t;
- tim_data_i : in word_t;
- data_o : out word_t
- );
- end component;
-
- component t48_clock_ctrl
- generic (
- xtal_div_3_g : integer := 1
- );
- port (
- clk_i : in std_logic;
- xtal_i : in std_logic;
- xtal_en_i : in boolean;
- res_i : in std_logic;
- en_clk_i : in boolean;
- xtal3_o : out boolean;
- t0_o : out std_logic;
- multi_cycle_i : in boolean;
- assert_psen_i : in boolean;
- assert_prog_i : in boolean;
- assert_rd_i : in boolean;
- assert_wr_i : in boolean;
- mstate_o : out mstate_t;
- second_cycle_o : out boolean;
- ale_o : out boolean;
- psen_o : out boolean;
- prog_o : out boolean;
- rd_o : out boolean;
- wr_o : out boolean
- );
- end component;
-
- component t48_cond_branch
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- compute_take_i : in boolean;
- branch_cond_i : in branch_conditions_t;
- take_branch_o : out boolean;
- accu_i : in word_t;
- t0_i : in std_logic;
- t1_i : in std_logic;
- int_n_i : in std_logic;
- f0_i : in std_logic;
- f1_i : in std_logic;
- tf_i : in std_logic;
- carry_i : in std_logic;
- comp_value_i : in comp_value_t
- );
- end component;
-
- component t48_db_bus
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- ea_i : in std_logic;
- data_i : in word_t;
- data_o : out word_t;
- write_bus_i : in boolean;
- read_bus_i : in boolean;
- output_pcl_i : in boolean;
- bidir_bus_i : in boolean;
- pcl_i : in word_t;
- db_i : in word_t;
- db_o : out word_t;
- db_dir_o : out std_logic
- );
- end component;
-
- component t48_decoder
- generic (
- register_mnemonic_g : integer := 1
- );
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- xtal_i : in std_logic;
- xtal_en_i : in boolean;
- ea_i : in std_logic;
- ale_i : in boolean;
- int_n_i : in std_logic;
- t0_dir_o : out std_logic;
- data_i : in word_t;
- data_o : out word_t;
- alu_write_accu_o : out boolean;
- alu_write_shadow_o : out boolean;
- alu_write_temp_reg_o : out boolean;
- alu_read_alu_o : out boolean;
- bus_write_bus_o : out boolean;
- bus_read_bus_o : out boolean;
- dm_write_dmem_addr_o : out boolean;
- dm_write_dmem_o : out boolean;
- dm_read_dmem_o : out boolean;
- p1_write_p1_o : out boolean;
- p1_read_p1_o : out boolean;
- p2_write_p2_o : out boolean;
- p2_write_exp_o : out boolean;
- p2_read_p2_o : out boolean;
- pm_write_pcl_o : out boolean;
- pm_read_pcl_o : out boolean;
- pm_write_pch_o : out boolean;
- pm_read_pch_o : out boolean;
- pm_read_pmem_o : out boolean;
- psw_read_psw_o : out boolean;
- psw_read_sp_o : out boolean;
- psw_write_psw_o : out boolean;
- psw_write_sp_o : out boolean;
- alu_carry_i : in std_logic;
- alu_op_o : out alu_op_t;
- alu_da_high_o : out boolean;
- alu_accu_low_o : out boolean;
- alu_da_overflow_i : in boolean;
- alu_p06_temp_reg_o : out boolean;
- alu_p60_temp_reg_o : out boolean;
- alu_use_carry_o : out boolean;
- bus_output_pcl_o : out boolean;
- bus_bidir_bus_o : out boolean;
- clk_multi_cycle_o : out boolean;
- clk_assert_psen_o : out boolean;
- clk_assert_prog_o : out boolean;
- clk_assert_rd_o : out boolean;
- clk_assert_wr_o : out boolean;
- clk_mstate_i : in mstate_t;
- clk_second_cycle_i : in boolean;
- cnd_compute_take_o : out boolean;
- cnd_branch_cond_o : out branch_conditions_t;
- cnd_take_branch_i : in boolean;
- cnd_comp_value_o : out comp_value_t;
- cnd_f1_o : out std_logic;
- cnd_tf_o : out std_logic;
- dm_addr_type_o : out dmem_addr_ident_t;
- tim_read_timer_o : out boolean;
- tim_write_timer_o : out boolean;
- tim_start_t_o : out boolean;
- tim_start_cnt_o : out boolean;
- tim_stop_tcnt_o : out boolean;
- p1_read_reg_o : out boolean;
- p2_read_reg_o : out boolean;
- p2_read_exp_o : out boolean;
- p2_output_pch_o : out boolean;
- pm_inc_pc_o : out boolean;
- pm_write_pmem_addr_o : out boolean;
- pm_addr_type_o : out pmem_addr_ident_t;
- psw_special_data_o : out std_logic;
- psw_carry_i : in std_logic;
- psw_aux_carry_i : in std_logic;
- psw_f0_i : in std_logic;
- psw_inc_stackp_o : out boolean;
- psw_dec_stackp_o : out boolean;
- psw_write_carry_o : out boolean;
- psw_write_aux_carry_o : out boolean;
- psw_write_f0_o : out boolean;
- psw_write_bs_o : out boolean;
- tim_overflow_i : in boolean
- );
- end component;
-
- component t48_dmem_ctrl
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- data_i : in word_t;
- write_dmem_addr_i : in boolean;
- write_dmem_i : in boolean;
- read_dmem_i : in boolean;
- addr_type_i : in dmem_addr_ident_t;
- bank_select_i : in std_logic;
- data_o : out word_t;
- dmem_data_i : in word_t;
- dmem_addr_o : out dmem_addr_t;
- dmem_we_o : out std_logic;
- dmem_data_o : out word_t
- );
- end component;
-
- component t48_int
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- xtal_i : in std_logic;
- xtal_en_i : in boolean;
- clk_mstate_i : in mstate_t;
- jtf_executed_i : in boolean;
- tim_overflow_i : in boolean;
- tf_o : out std_logic;
- en_tcnti_i : in boolean;
- dis_tcnti_i : in boolean;
- int_n_i : in std_logic;
- ale_i : in boolean;
- last_cycle_i : in boolean;
- en_i_i : in boolean;
- dis_i_i : in boolean;
- ext_int_o : out boolean;
- tim_int_o : out boolean;
- retr_executed_i : in boolean;
- int_executed_i : in boolean;
- int_pending_o : out boolean;
- int_in_progress_o : out boolean
- );
- end component;
-
- component t48_timer
- generic (
- sample_t1_state_g : integer := 4
- );
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- t1_i : in std_logic;
- clk_mstate_i : in mstate_t;
- data_i : in word_t;
- data_o : out word_t;
- read_timer_i : in boolean;
- write_timer_i : in boolean;
- start_t_i : in boolean;
- start_cnt_i : in boolean;
- stop_tcnt_i : in boolean;
- overflow_o : out std_logic
- );
- end component;
-
- component t48_p1
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- data_i : in word_t;
- data_o : out word_t;
- write_p1_i : in boolean;
- read_p1_i : in boolean;
- read_reg_i : in boolean;
- p1_i : in word_t;
- p1_o : out word_t;
- p1_low_imp_o : out std_logic
- );
- end component;
-
- component t48_p2
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- xtal_i : in std_logic;
- xtal_en_i : in boolean;
- data_i : in word_t;
- data_o : out word_t;
- write_p2_i : in boolean;
- write_exp_i : in boolean;
- read_p2_i : in boolean;
- read_reg_i : in boolean;
- read_exp_i : in boolean;
- output_pch_i : in boolean;
- pch_i : in nibble_t;
- p2_i : in word_t;
- p2_o : out word_t;
- p2l_low_imp_o : out std_logic;
- p2h_low_imp_o : out std_logic
- );
- end component;
-
- component t48_pmem_ctrl
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- data_i : in word_t;
- data_o : out word_t;
- write_pcl_i : in boolean;
- read_pcl_i : in boolean;
- write_pch_i : in boolean;
- read_pch_i : in boolean;
- inc_pc_i : in boolean;
- write_pmem_addr_i : in boolean;
- addr_type_i : in pmem_addr_ident_t;
- read_pmem_i : in boolean;
- pmem_addr_o : out pmem_addr_t;
- pmem_data_i : in word_t
- );
- end component;
-
- component t48_psw
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- data_i : in word_t;
- data_o : out word_t;
- read_psw_i : in boolean;
- read_sp_i : in boolean;
- write_psw_i : in boolean;
- write_sp_i : in boolean;
- special_data_i : in std_logic;
- inc_stackp_i : in boolean;
- dec_stackp_i : in boolean;
- write_carry_i : in boolean;
- write_aux_carry_i : in boolean;
- write_f0_i : in boolean;
- write_bs_i : in boolean;
- carry_o : out std_logic;
- aux_carry_i : in std_logic;
- aux_carry_o : out std_logic;
- f0_o : out std_logic;
- bs_o : out std_logic
- );
- end component;
-
-end t48_comp_pack;
t48/rel_1_2/rtl/vhdl/t48_comp_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/int.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/int.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/int.vhd (nonexistent)
@@ -1,253 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Interrupt Controller.
--- It collects the interrupt sources and notifies the decoder.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.mstate_t;
-
-entity t48_int is
-
- port (
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- xtal_i : in std_logic;
- xtal_en_i : in boolean;
- clk_mstate_i : in mstate_t;
- jtf_executed_i : in boolean;
- tim_overflow_i : in boolean;
- tf_o : out std_logic;
- en_tcnti_i : in boolean;
- dis_tcnti_i : in boolean;
- int_n_i : in std_logic;
- ale_i : in boolean;
- last_cycle_i : in boolean;
- en_i_i : in boolean;
- dis_i_i : in boolean;
- ext_int_o : out boolean;
- tim_int_o : out boolean;
- retr_executed_i : in boolean;
- int_executed_i : in boolean;
- int_pending_o : out boolean;
- int_in_progress_o : out boolean
- );
-
-end t48_int;
-
-
-use work.t48_pack.all;
-
-architecture rtl of t48_int is
-
- constant tim_int_c : std_logic := '0';
- constant ext_int_c : std_logic := '1';
-
- type int_state_t is (IDLE, PENDING, INT);
-
- signal int_state_s,
- int_state_q : int_state_t;
-
- signal timer_flag_q : boolean;
- signal timer_overflow_q : boolean;
- signal timer_int_enable_q : boolean;
- signal int_q : boolean;
- signal int_enable_q : boolean;
- signal ale_q : boolean;
- signal int_type_q : std_logic;
- signal int_in_progress_q : boolean;
-
-begin
-
- -----------------------------------------------------------------------------
- -- Process nstate
- --
- -- Purpose:
- -- Determines the next state of the Interrupt controller FSM.
- --
- nstate: process (int_state_q,
- int_type_q,
- int_in_progress_q,
- int_executed_i,
- retr_executed_i,
- clk_mstate_i,
- last_cycle_i)
- begin
- int_state_s <= int_state_q;
-
- case int_state_q is
- when IDLE =>
- if int_in_progress_q and
- last_cycle_i and clk_mstate_i = MSTATE5 then
- int_state_s <= PENDING;
- end if;
-
- when PENDING =>
- if int_executed_i then
- int_state_s <= INT;
- end if;
-
- when INT =>
- if retr_executed_i then
- int_state_s <= IDLE;
- end if;
-
- when others =>
- int_state_s <= IDLE;
-
- end case;
-
- end process nstate;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process regs
- --
- -- Purpose:
- -- Implement the various registers.
- -- They are designed according Figure "Interrupt Logic" of
- -- "The Single Component MCS-48 System".
- --
- regs: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- timer_flag_q <= false;
- timer_overflow_q <= false;
- timer_int_enable_q <= false;
- int_enable_q <= false;
- int_type_q <= '0';
- int_state_q <= IDLE;
- int_in_progress_q <= false;
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- int_state_q <= int_state_s;
-
- if jtf_executed_i then
- timer_flag_q <= false;
- elsif tim_overflow_i then
- timer_flag_q <= true;
- end if;
-
- if (int_type_q = tim_int_c and int_executed_i) or
- not timer_int_enable_q then
- timer_overflow_q <= false;
- elsif tim_overflow_i then
- timer_overflow_q <= true;
- end if;
-
- if dis_tcnti_i then
- timer_int_enable_q <= false;
- elsif en_tcnti_i then
- timer_int_enable_q <= true;
- end if;
-
- if dis_i_i then
- int_enable_q <= false;
- elsif en_i_i then
- int_enable_q <= true;
- end if;
-
- if retr_executed_i then
- int_in_progress_q <= false;
- elsif (int_q and int_enable_q) or
- timer_overflow_q then
- int_in_progress_q <= true;
- if not int_in_progress_q then
- int_type_q <= to_stdLogic(int_q and int_enable_q);
- end if;
- end if;
-
- end if;
-
- end if;
-
- end process regs;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process xtal_regs
- --
- -- Purpose:
- -- Implements the sequential registers clocked with XTAL.
- --
- xtal_regs: process (res_i, xtal_i)
- begin
- if res_i = res_active_c then
- int_q <= false;
- ale_q <= false;
-
- elsif xtal_i'event and xtal_i = clk_active_c then
- if xtal_en_i then
- ale_q <= ale_i;
-
- if last_cycle_i and
- ale_q and not ale_i then
- int_q <= not to_boolean(int_n_i);
- end if;
-
- end if;
- end if;
- end process xtal_regs;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output Mapping.
- -----------------------------------------------------------------------------
- tf_o <= to_stdLogic(timer_flag_q);
- ext_int_o <= int_type_q = ext_int_c;
- tim_int_o <= int_type_q = tim_int_c;
- int_pending_o <= int_state_q = PENDING;
- int_in_progress_o <= int_in_progress_q and int_state_q /= IDLE;
-
-end rtl;
t48/rel_1_2/rtl/vhdl/int.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/db_bus.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/db_bus.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/db_bus.vhd (nonexistent)
@@ -1,146 +0,0 @@
--------------------------------------------------------------------------------
---
--- The BUS unit.
--- Implements the BUS port logic.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_t;
-
-entity t48_db_bus is
-
- port (
- -- Global Interface -------------------------------------------------------
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- ea_i : in std_logic;
- -- T48 Bus Interface ------------------------------------------------------
- data_i : in word_t;
- data_o : out word_t;
- write_bus_i : in boolean;
- read_bus_i : in boolean;
- -- BUS Interface ----------------------------------------------------------
- output_pcl_i : in boolean;
- bidir_bus_i : in boolean;
- pcl_i : in word_t;
- db_i : in word_t;
- db_o : out word_t;
- db_dir_o : out std_logic
- );
-
-end t48_db_bus;
-
-
-use work.t48_pack.clk_active_c;
-use work.t48_pack.res_active_c;
-use work.t48_pack.bus_idle_level_c;
-use work.t48_pack.to_stdLogic;
-
-architecture rtl of t48_db_bus is
-
- -- the BUS output register
- signal bus_q : word_t;
-
- -- BUS direction marker
- signal db_dir_q,
- db_dir_qq : std_logic;
-
-begin
-
- -----------------------------------------------------------------------------
- -- Process bus_regs
- --
- -- Purpose:
- -- Implements the BUS output register.
- --
- bus_regs: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- bus_q <= (others => '0');
- db_dir_q <= '0';
- db_dir_qq <= '0';
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
- if write_bus_i then
- db_dir_qq <= '1';
- else
- -- extend bus direction by one machine cycle
- db_dir_qq <= db_dir_q;
- end if;
-
- if write_bus_i then
- bus_q <= data_i;
-
- db_dir_q <= '1';
-
- elsif ea_i = '1' or bidir_bus_i then
- db_dir_q <= '0';
-
- end if;
-
- end if;
-
- end if;
-
- end process bus_regs;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output Mapping.
- -----------------------------------------------------------------------------
- db_o <= pcl_i
- when output_pcl_i else
- bus_q;
- db_dir_o <= db_dir_qq or
- to_stdLogic(output_pcl_i);
- data_o <= (others => bus_idle_level_c)
- when not read_bus_i else
- db_i;
-
-end rtl;
t48/rel_1_2/rtl/vhdl/db_bus.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t48_tb_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t48_tb_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t48_tb_pack-p.vhd (nonexistent)
@@ -1,22 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-package t48_tb_pack is
-
- -- Instruction strobe visibility
- signal tb_istrobe_s : std_logic;
-
- -- Accumulator visibilty
- signal tb_accu_s : std_logic_vector(7 downto 0);
-
-end t48_tb_pack;
t48/rel_1_2/rtl/vhdl/t48_tb_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/timer-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/timer-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/timer-c.vhd (nonexistent)
@@ -1,16 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Timer/Counter unit.
---
--- $Id$
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_timer_rtl_c0 of t48_timer is
-
- for rtl
- end for;
-
-end t48_timer_rtl_c0;
t48/rel_1_2/rtl/vhdl/timer-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/cond_branch.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/cond_branch.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/cond_branch.vhd (nonexistent)
@@ -1,201 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Conditional Branch Logic unit.
--- Decisions whether to take a jump or not are made here.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_t;
-
-use work.t48_cond_branch_pack.all;
-
-entity t48_cond_branch is
-
- port (
- -- Global Interface -------------------------------------------------------
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- -- Decoder Interface ------------------------------------------------------
- compute_take_i : in boolean;
- branch_cond_i : in branch_conditions_t;
- take_branch_o : out boolean;
- accu_i : in word_t;
- t0_i : in std_logic;
- t1_i : in std_logic;
- int_n_i : in std_logic;
- f0_i : in std_logic;
- f1_i : in std_logic;
- tf_i : in std_logic;
- carry_i : in std_logic;
- comp_value_i : in comp_value_t
- );
-
-end t48_cond_branch;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-use work.t48_pack.res_active_c;
-use work.t48_pack.clk_active_c;
-
-architecture rtl of t48_cond_branch is
-
- -- marker for branch taken
- signal take_branch_s,
- take_branch_q : boolean;
-
-begin
-
- -----------------------------------------------------------------------------
- -- Process decide_take
- --
- -- Purpose:
- -- Decides whether a branch has to be taken or not.
- --
- decide_take: process (accu_i,
- branch_cond_i,
- t0_i, t1_i,
- int_n_i,
- f0_i, f1_i,
- tf_i,
- carry_i,
- comp_value_i)
- variable or_v : std_logic;
- begin
- -- default assignment
- take_branch_s <= false;
- or_v := '0';
-
- case branch_cond_i is
- -- Branch On: Accumulator Bit -------------------------------------------
- when COND_ON_BIT =>
- if accu_i(TO_INTEGER(UNSIGNED(comp_value_i))) = '1' then
- take_branch_s <= true;
- end if;
-
- -- Branch On: Accumulator Zero ------------------------------------------
- when COND_Z =>
- for i in accu_i'range loop
- or_v := or_v or accu_i(i);
- end loop;
- take_branch_s <= or_v = not comp_value_i(0);
-
- -- Branch On: Carry -----------------------------------------------------
- when COND_C =>
- take_branch_s <= carry_i = comp_value_i(0);
-
- -- Branch On: Flag 0 ----------------------------------------------------
- when COND_F0 =>
- take_branch_s <= f0_i = '1';
-
- -- Branch On: Flag 1 ----------------------------------------------------
- when COND_F1 =>
- take_branch_s <= f1_i = '1';
-
- -- Branch On: Interrupt -------------------------------------------------
- when COND_INT =>
- take_branch_s <= int_n_i = '0';
-
- -- Branch On: Test 0 ----------------------------------------------------
- when COND_T0 =>
- take_branch_s <= t0_i = comp_value_i(0);
-
- -- Branch On: Test 1 ----------------------------------------------------
- when COND_T1 =>
- take_branch_s <= t1_i = comp_value_i(0);
-
- -- Branch On: Timer Flag ------------------------------------------------
- when COND_TF =>
- take_branch_s <= tf_i = '1';
-
- when others =>
- -- pragma translate_off
- assert false
- report "Unknown branch condition specified!"
- severity error;
- -- pragma translate_on
-
- end case;
-
- end process decide_take;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process reg
- --
- -- Purpose:
- -- Implement the marker register.
- --
- reg: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- take_branch_q <= false;
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- if compute_take_i then
- take_branch_q <= take_branch_s;
- end if;
-
- end if;
-
- end if;
-
- end process reg;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output Mapping.
- -----------------------------------------------------------------------------
- take_branch_o <= take_branch_q;
-
-end rtl;
t48/rel_1_2/rtl/vhdl/cond_branch.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t48_core_comp_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t48_core_comp_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t48_core_comp_pack-p.vhd (nonexistent)
@@ -1,95 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-package t48_core_comp_pack is
-
- component t48_core
- generic (
- xtal_div_3_g : integer := 1;
- register_mnemonic_g : integer := 1;
- include_port1_g : integer := 1;
- include_port2_g : integer := 1;
- include_bus_g : integer := 1;
- include_timer_g : integer := 1;
- sample_t1_state_g : integer := 4
- );
-
- port (
- xtal_i : in std_logic;
- xtal_en_i : in std_logic;
- reset_i : in std_logic;
- t0_i : in std_logic;
- t0_o : out std_logic;
- t0_dir_o : out std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- db_i : in std_logic_vector( 7 downto 0);
- db_o : out std_logic_vector( 7 downto 0);
- db_dir_o : out std_logic;
- t1_i : in std_logic;
- p2_i : in std_logic_vector( 7 downto 0);
- p2_o : out std_logic_vector( 7 downto 0);
- p2l_low_imp_o : out std_logic;
- p2h_low_imp_o : out std_logic;
- p1_i : in std_logic_vector( 7 downto 0);
- p1_o : out std_logic_vector( 7 downto 0);
- p1_low_imp_o : out std_logic;
- prog_n_o : out std_logic;
- clk_i : in std_logic;
- en_clk_i : in std_logic;
- xtal3_o : out std_logic;
- dmem_addr_o : out std_logic_vector( 7 downto 0);
- dmem_we_o : out std_logic;
- dmem_data_i : in std_logic_vector( 7 downto 0);
- dmem_data_o : out std_logic_vector( 7 downto 0);
- pmem_addr_o : out std_logic_vector(11 downto 0);
- pmem_data_i : in std_logic_vector( 7 downto 0)
- );
- end component;
-
- component generic_ram_ena
- generic (
- addr_width_g : integer := 10;
- data_width_g : integer := 8
- );
- port (
- clk_i : in std_logic;
- a_i : in std_logic_vector(addr_width_g-1 downto 0);
- we_i : in std_logic;
- ena_i : in std_logic;
- d_i : in std_logic_vector(data_width_g-1 downto 0);
- d_o : out std_logic_vector(data_width_g-1 downto 0)
- );
- end component;
-
- component t48_rom
- port (
- clk_i : in std_logic;
- rom_addr_i : in std_logic_vector(9 downto 0);
- rom_data_o : out std_logic_vector(7 downto 0)
- );
- end component;
-
- component t49_rom
- port (
- clk_i : in std_logic;
- rom_addr_i : in std_logic_vector(10 downto 0);
- rom_data_o : out std_logic_vector( 7 downto 0)
- );
- end component;
-
-end t48_core_comp_pack;
t48/rel_1_2/rtl/vhdl/t48_core_comp_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/pmem_ctrl-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/pmem_ctrl-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/pmem_ctrl-c.vhd (nonexistent)
@@ -1,17 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Program Memory control unit.
--- All operations related to the Program Memory are managed here.
---
--- $Id$
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_pmem_ctrl_rtl_c0 of t48_pmem_ctrl is
-
- for rtl
- end for;
-
-end t48_pmem_ctrl_rtl_c0;
t48/rel_1_2/rtl/vhdl/pmem_ctrl-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/bus_mux-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/bus_mux-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/bus_mux-c.vhd (nonexistent)
@@ -1,19 +0,0 @@
--------------------------------------------------------------------------------
---
--- The T48 Bus Connector.
--- Multiplexes all drivers of the T48 bus.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_bus_mux_rtl_c0 of t48_bus_mux is
-
- for rtl
- end for;
-
-end t48_bus_mux_rtl_c0;
t48/rel_1_2/rtl/vhdl/bus_mux-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t8243/t8243-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t8243/t8243-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t8243/t8243-c.vhd (nonexistent)
@@ -1,19 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8243 Core
---
--- $Id$
---
--------------------------------------------------------------------------------
-
-configuration t8243_struct_c0 of t8243 is
-
- for struct
-
- for t8243_async_notri_b: t8243_async_notri
- use configuration work.t8243_async_notri_struct_c0;
- end for;
-
- end for;
-
-end t8243_struct_c0;
t48/rel_1_2/rtl/vhdl/t8243/t8243-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t8243/t8243.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t8243/t8243.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t8243/t8243.vhd (nonexistent)
@@ -1,137 +0,0 @@
--------------------------------------------------------------------------------
---
--- The T8243 asynchronous toplevel
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t8243 is
-
- port (
- -- Control Interface ------------------------------------------------------
- cs_n_i : in std_logic;
- prog_n_i : in std_logic;
- -- Port 2 Interface -------------------------------------------------------
- p2_b : inout std_logic_vector(3 downto 0);
- -- Port 4 Interface -------------------------------------------------------
- p4_b : inout std_logic_vector(3 downto 0);
- -- Port 5 Interface -------------------------------------------------------
- p5_b : inout std_logic_vector(3 downto 0);
- -- Port 6 Interface -------------------------------------------------------
- p6_b : inout std_logic_vector(3 downto 0);
- -- Port 7 Interface -------------------------------------------------------
- p7_b : inout std_logic_vector(3 downto 0)
- );
-
-end t8243;
-
-
-use work.t8243_comp_pack.t8243_async_notri;
-
-architecture struct of t8243 is
-
- signal p2_s,
- p4_s,
- p5_s,
- p6_s,
- p7_s : std_logic_vector(3 downto 0);
- signal p2_en_s,
- p4_en_s,
- p5_en_s,
- p6_en_s,
- p7_en_s : std_logic;
-
- signal vdd_s : std_logic;
-
-begin
-
- vdd_s <= '1';
-
-
- -----------------------------------------------------------------------------
- -- The asynchronous T8243
- -----------------------------------------------------------------------------
- t8243_async_notri_b : t8243_async_notri
- port map (
- reset_n_i => vdd_s, -- or generate power-on reset
- cs_n_i => cs_n_i,
- prog_n_i => prog_n_i,
- p2_i => p2_b,
- p2_o => p2_s,
- p2_en_o => p2_en_s,
- p4_i => p4_b,
- p4_o => p4_s,
- p4_en_o => p4_en_s,
- p5_i => p5_b,
- p5_o => p5_s,
- p5_en_o => p5_en_s,
- p6_i => p6_b,
- p6_o => p6_s,
- p6_en_o => p6_en_s,
- p7_i => p7_b,
- p7_o => p7_s,
- p7_en_o => p7_en_s
- );
-
-
- -----------------------------------------------------------------------------
- -- Bidirectional pad structures
- -----------------------------------------------------------------------------
- p2_b <= p2_s
- when p2_en_s = '1' else
- (others => 'Z');
- p4_b <= p4_s
- when p4_en_s = '1' else
- (others => 'Z');
- p5_b <= p5_s
- when p5_en_s = '1' else
- (others => 'Z');
- p6_b <= p6_s
- when p6_en_s = '1' else
- (others => 'Z');
- p7_b <= p7_s
- when p7_en_s = '1' else
- (others => 'Z');
-
-end struct;
t48/rel_1_2/rtl/vhdl/t8243/t8243.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t8243/t8243_sync_notri.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t8243/t8243_sync_notri.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t8243/t8243_sync_notri.vhd (nonexistent)
@@ -1,153 +0,0 @@
--------------------------------------------------------------------------------
---
--- The T8243 synchronous toplevel without tri-state signals
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t8243_sync_notri is
-
- port (
- -- System Interface -------------------------------------------------------
- clk_i : in std_logic;
- clk_en_i : in std_logic;
- reset_n_i : in std_logic;
- -- Control Interface ------------------------------------------------------
- cs_n_i : in std_logic;
- prog_n_i : in std_logic;
- -- Port 2 Interface -------------------------------------------------------
- p2_i : in std_logic_vector(3 downto 0);
- p2_o : out std_logic_vector(3 downto 0);
- p2_en_o : out std_logic;
- -- Port 4 Interface -------------------------------------------------------
- p4_i : in std_logic_vector(3 downto 0);
- p4_o : out std_logic_vector(3 downto 0);
- p4_en_o : out std_logic;
- -- Port 5 Interface -------------------------------------------------------
- p5_i : in std_logic_vector(3 downto 0);
- p5_o : out std_logic_vector(3 downto 0);
- p5_en_o : out std_logic;
- -- Port 6 Interface -------------------------------------------------------
- p6_i : in std_logic_vector(3 downto 0);
- p6_o : out std_logic_vector(3 downto 0);
- p6_en_o : out std_logic;
- -- Port 7 Interface -------------------------------------------------------
- p7_i : in std_logic_vector(3 downto 0);
- p7_o : out std_logic_vector(3 downto 0);
- p7_en_o : out std_logic
- );
-
-end t8243_sync_notri;
-
-
-use work.t8243_comp_pack.t8243_core;
-
-architecture struct of t8243_sync_notri is
-
- signal prog_n_q : std_logic;
- signal clk_rise_en_s,
- clk_fall_en_s : std_logic;
-
-begin
-
- -----------------------------------------------------------------------------
- -- Process edge_detect
- --
- -- Purpose:
- -- Implements the sequential element required for edge detection
- -- on the PROG input.
- --
- edge_detect: process (clk_i, reset_n_i)
- begin
- if reset_n_i = '0' then
- prog_n_q <= '1';
- elsif rising_edge(clk_i) then
- if clk_en_i = '1' then
- prog_n_q <= prog_n_i;
- end if;
- end if;
- end process edge_detect;
- --
- -----------------------------------------------------------------------------
-
-
- -- clock enables to detect rising and falling edges of PROG
- clk_rise_en_s <= clk_en_i and
- not prog_n_q and prog_n_i;
- clk_fall_en_s <= clk_en_i and
- prog_n_q and not prog_n_i;
-
-
- -----------------------------------------------------------------------------
- -- The T8243 Core
- -----------------------------------------------------------------------------
- t8243_core_b : t8243_core
- generic map (
- clk_fall_level_g => 1
- )
- port map (
- clk_i => clk_i,
- clk_rise_en_i => clk_rise_en_s,
- clk_fall_en_i => clk_fall_en_s,
- reset_n_i => reset_n_i,
- cs_n_i => cs_n_i,
- prog_n_i => prog_n_i,
- p2_i => p2_i,
- p2_o => p2_o,
- p2_en_o => p2_en_o,
- p4_i => p4_i,
- p4_o => p4_o,
- p4_en_o => p4_en_o,
- p5_i => p5_i,
- p5_o => p5_o,
- p5_en_o => p5_en_o,
- p6_i => p6_i,
- p6_o => p6_o,
- p6_en_o => p6_en_o,
- p7_i => p7_i,
- p7_o => p7_o,
- p7_en_o => p7_en_o
- );
-
-end struct;
t48/rel_1_2/rtl/vhdl/t8243/t8243_sync_notri.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t8243/t8243_sync_notri-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t8243/t8243_sync_notri-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t8243/t8243_sync_notri-c.vhd (nonexistent)
@@ -1,19 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8243 Core
---
--- $Id$
---
--------------------------------------------------------------------------------
-
-configuration t8243_sync_notri_struct_c0 of t8243_sync_notri is
-
- for struct
-
- for t8243_core_b: t8243_core
- use configuration work.t8243_core_rtl_c0;
- end for;
-
- end for;
-
-end t8243_sync_notri_struct_c0;
t48/rel_1_2/rtl/vhdl/t8243/t8243_sync_notri-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t8243/t8243_core.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t8243/t8243_core.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t8243/t8243_core.vhd (nonexistent)
@@ -1,291 +0,0 @@
--------------------------------------------------------------------------------
---
--- The T8243 Core
--- This is the core module implementing all functionality of the
--- original 8243 chip.
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee. std_logic_1164.all;
-
-entity t8243_core is
-
- generic (
- clk_fall_level_g : integer := 0
- );
- port (
- -- System Interface -------------------------------------------------------
- clk_i : in std_logic;
- clk_rise_en_i : in std_logic;
- clk_fall_en_i : in std_logic;
- reset_n_i : in std_logic;
- -- Control Interface ------------------------------------------------------
- cs_n_i : in std_logic;
- prog_n_i : in std_logic;
- -- Port 2 Interface -------------------------------------------------------
- p2_i : in std_logic_vector(3 downto 0);
- p2_o : out std_logic_vector(3 downto 0);
- p2_en_o : out std_logic;
- -- Port 4 Interface -------------------------------------------------------
- p4_i : in std_logic_vector(3 downto 0);
- p4_o : out std_logic_vector(3 downto 0);
- p4_en_o : out std_logic;
- -- Port 5 Interface -------------------------------------------------------
- p5_i : in std_logic_vector(3 downto 0);
- p5_o : out std_logic_vector(3 downto 0);
- p5_en_o : out std_logic;
- -- Port 6 Interface -------------------------------------------------------
- p6_i : in std_logic_vector(3 downto 0);
- p6_o : out std_logic_vector(3 downto 0);
- p6_en_o : out std_logic;
- -- Port 7 Interface -------------------------------------------------------
- p7_i : in std_logic_vector(3 downto 0);
- p7_o : out std_logic_vector(3 downto 0);
- p7_en_o : out std_logic
- );
-
-end t8243_core;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-architecture rtl of t8243_core is
-
- function int2stdlogic_f(level_i : in integer) return std_logic is
- begin
- if level_i = 0 then
- return '0';
- else
- return '1';
- end if;
- end;
-
- constant clk_fall_level_c : std_logic := int2stdlogic_f(clk_fall_level_g);
-
- type instr_t is (INSTR_READ, INSTR_WRITE, INSTR_ORLD, INSTR_ANLD);
- signal instr_q : instr_t;
-
- constant port_4_c : integer := 4;
- constant port_5_c : integer := 5;
- constant port_6_c : integer := 6;
- constant port_7_c : integer := 7;
-
- subtype port_range_t is natural range port_7_c downto port_4_c;
- signal px_sel_q : std_logic_vector(port_range_t);
-
- signal px_en_q : std_logic_vector(port_range_t);
- signal p2_en_q : std_logic;
-
- subtype port_vector_t is std_logic_vector(3 downto 0);
- type four_ports_t is array (port_range_t) of port_vector_t;
- signal px_latch_q : four_ports_t;
-
- signal data_s : port_vector_t;
-
- signal p2_s,
- p4_s,
- p5_s,
- p6_s,
- p7_s : port_vector_t;
-
-begin
-
- -- get rid of H and L
- p2_s <= to_X01(p2_i);
- p4_s <= to_X01(p4_i);
- p5_s <= to_X01(p5_i);
- p6_s <= to_X01(p6_i);
- p7_s <= to_X01(p7_i);
-
- -----------------------------------------------------------------------------
- -- Process ctrl_seq
- --
- -- Purpose:
- -- Implements the sequential elements that control the T8243 core.
- -- * latch port number
- -- * latch instruction
- --
- ctrl_seq: process (clk_i, cs_n_i)
- begin
- if cs_n_i = '1' then
- px_sel_q <= (others => '0');
- p2_en_q <= '0';
- instr_q <= INSTR_WRITE;
-
- elsif clk_i'event and clk_i = clk_fall_level_c then
- if cs_n_i = '0' and clk_fall_en_i = '1' then
- -- enable addressed port ----------------------------------------------
- px_sel_q <= (others => '0');
- px_sel_q(to_integer(unsigned(p2_s(1 downto 0))) +
- port_range_t'low) <= '1';
-
- p2_en_q <= '0';
-
- -- decode instruction -------------------------------------------------
- case p2_s(3 downto 2) is
- when "00" =>
- instr_q <= INSTR_READ;
- p2_en_q <= '1';
- when "01" =>
- instr_q <= INSTR_WRITE;
- when "10" =>
- instr_q <= INSTR_ORLD;
- when "11" =>
- instr_q <= INSTR_ANLD;
- when others =>
- null;
- end case;
-
- end if;
-
- end if;
- end process ctrl_seq;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process port_seq
- --
- -- Purpose:
- -- Implements the sequential elements of the four ports.
- --
- port_seq: process (clk_i, reset_n_i)
- begin
- if reset_n_i = '0' then
- px_en_q <= (others => '0');
- px_latch_q <= (others => (others => '0'));
-
- elsif rising_edge(clk_i) then
- if cs_n_i = '0' and clk_rise_en_i = '1' then
- for idx in port_range_t loop
- if px_sel_q(idx) = '1' then
- if instr_q = INSTR_READ then
- -- port is being read from, switch off output enable
- px_en_q(idx) <= '0';
-
- else
- -- port is being written to, enable output
- px_en_q(idx) <= '1';
- -- and latch value
- px_latch_q(idx) <= data_s;
- end if;
- end if;
- end loop;
- end if;
-
- end if;
- end process port_seq;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process data_gen
- --
- -- Purpose:
- -- Generates the data for the four port latches.
- -- * determines data inputs
- -- * calculates result of instruction
- --
- -- Multiplexes the read value for P2.
- --
- data_gen: process (px_sel_q,
- instr_q,
- p2_s,
- px_latch_q,
- p4_s, p5_s, p6_s, p7_s)
- variable port_v : port_vector_t;
- begin
- -- select addressed port
- case px_sel_q is
- when "0001" =>
- port_v := px_latch_q(port_4_c);
- p2_o <= p4_s;
- when "0010" =>
- port_v := px_latch_q(port_5_c);
- p2_o <= p5_s;
- when "0100" =>
- port_v := px_latch_q(port_6_c);
- p2_o <= p6_s;
- when "1000" =>
- port_v := px_latch_q(port_7_c);
- p2_o <= p7_s;
- when others =>
- port_v := (others => '-');
- p2_o <= (others => '-');
- end case;
-
- case instr_q is
- when INSTR_WRITE =>
- data_s <= p2_s;
- when INSTR_ORLD =>
- data_s <= p2_s or port_v;
- when INSTR_ANLD =>
- data_s <= p2_s and port_v;
- when others =>
- data_s <= (others => '-');
- end case;
-
- end process;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output mapping
- -----------------------------------------------------------------------------
- p2_en_o <= '1'
- when cs_n_i = '0' and prog_n_i = '0' and p2_en_q = '1' else
- '0';
- p4_o <= px_latch_q(port_4_c);
- p4_en_o <= px_en_q(port_4_c);
- p5_o <= px_latch_q(port_5_c);
- p5_en_o <= px_en_q(port_5_c);
- p6_o <= px_latch_q(port_6_c);
- p6_en_o <= px_en_q(port_6_c);
- p7_o <= px_latch_q(port_7_c);
- p7_en_o <= px_en_q(port_7_c);
-
-end rtl;
t48/rel_1_2/rtl/vhdl/t8243/t8243_core.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t8243/t8243_async_notri.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t8243/t8243_async_notri.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t8243/t8243_async_notri.vhd (nonexistent)
@@ -1,124 +0,0 @@
--------------------------------------------------------------------------------
---
--- The T8243 asynchronous toplevel without tri-state signals
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t8243_async_notri is
-
- port (
- -- System Interface -------------------------------------------------------
- reset_n_i : in std_logic;
- -- Control Interface ------------------------------------------------------
- cs_n_i : in std_logic;
- prog_n_i : in std_logic;
- -- Port 2 Interface -------------------------------------------------------
- p2_i : in std_logic_vector(3 downto 0);
- p2_o : out std_logic_vector(3 downto 0);
- p2_en_o : out std_logic;
- -- Port 4 Interface -------------------------------------------------------
- p4_i : in std_logic_vector(3 downto 0);
- p4_o : out std_logic_vector(3 downto 0);
- p4_en_o : out std_logic;
- -- Port 5 Interface -------------------------------------------------------
- p5_i : in std_logic_vector(3 downto 0);
- p5_o : out std_logic_vector(3 downto 0);
- p5_en_o : out std_logic;
- -- Port 6 Interface -------------------------------------------------------
- p6_i : in std_logic_vector(3 downto 0);
- p6_o : out std_logic_vector(3 downto 0);
- p6_en_o : out std_logic;
- -- Port 7 Interface -------------------------------------------------------
- p7_i : in std_logic_vector(3 downto 0);
- p7_o : out std_logic_vector(3 downto 0);
- p7_en_o : out std_logic
- );
-
-end t8243_async_notri;
-
-
-use work.t8243_comp_pack.t8243_core;
-
-architecture struct of t8243_async_notri is
-
- signal vdd_s : std_logic;
-
-begin
-
- vdd_s <= '1';
-
-
- -----------------------------------------------------------------------------
- -- The T8243 Core
- -----------------------------------------------------------------------------
- t8243_core_b : t8243_core
- generic map (
- clk_fall_level_g => 0
- )
- port map (
- clk_i => prog_n_i,
- clk_rise_en_i => vdd_s,
- clk_fall_en_i => vdd_s,
- reset_n_i => reset_n_i,
- cs_n_i => cs_n_i,
- prog_n_i => prog_n_i,
- p2_i => p2_i,
- p2_o => p2_o,
- p2_en_o => p2_en_o,
- p4_i => p4_i,
- p4_o => p4_o,
- p4_en_o => p4_en_o,
- p5_i => p5_i,
- p5_o => p5_o,
- p5_en_o => p5_en_o,
- p6_i => p6_i,
- p6_o => p6_o,
- p6_en_o => p6_en_o,
- p7_i => p7_i,
- p7_o => p7_o,
- p7_en_o => p7_en_o
- );
-
-end struct;
t48/rel_1_2/rtl/vhdl/t8243/t8243_async_notri.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t8243/t8243_core-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t8243/t8243_core-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t8243/t8243_core-c.vhd (nonexistent)
@@ -1,14 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8243 Core
---
--- $Id$
---
--------------------------------------------------------------------------------
-
-configuration t8243_core_rtl_c0 of t8243_core is
-
- for rtl
- end for;
-
-end t8243_core_rtl_c0;
t48/rel_1_2/rtl/vhdl/t8243/t8243_core-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t8243/t8243_async_notri-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t8243/t8243_async_notri-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t8243/t8243_async_notri-c.vhd (nonexistent)
@@ -1,19 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8243 Core
---
--- $Id$
---
--------------------------------------------------------------------------------
-
-configuration t8243_async_notri_struct_c0 of t8243_async_notri is
-
- for struct
-
- for t8243_core_b: t8243_core
- use configuration work.t8243_core_rtl_c0;
- end for;
-
- end for;
-
-end t8243_async_notri_struct_c0;
t48/rel_1_2/rtl/vhdl/t8243/t8243_async_notri-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t8243/t8243_comp_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t8243/t8243_comp_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t8243/t8243_comp_pack-p.vhd (nonexistent)
@@ -1,132 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-package t8243_comp_pack is
-
- component t8243_core
- generic (
- clk_fall_level_g : integer := 0
- );
- port (
- -- System Interface -----------------------------------------------------
- clk_i : in std_logic;
- clk_rise_en_i : in std_logic;
- clk_fall_en_i : in std_logic;
- reset_n_i : in std_logic;
- -- Control Interface ----------------------------------------------------
- cs_n_i : in std_logic;
- prog_n_i : in std_logic;
- -- Port 2 Interface -----------------------------------------------------
- p2_i : in std_logic_vector(3 downto 0);
- p2_o : out std_logic_vector(3 downto 0);
- p2_en_o : out std_logic;
- -- Port 4 Interface -----------------------------------------------------
- p4_i : in std_logic_vector(3 downto 0);
- p4_o : out std_logic_vector(3 downto 0);
- p4_en_o : out std_logic;
- -- Port 5 Interface -----------------------------------------------------
- p5_i : in std_logic_vector(3 downto 0);
- p5_o : out std_logic_vector(3 downto 0);
- p5_en_o : out std_logic;
- -- Port 6 Interface -----------------------------------------------------
- p6_i : in std_logic_vector(3 downto 0);
- p6_o : out std_logic_vector(3 downto 0);
- p6_en_o : out std_logic;
- -- Port 7 Interface -----------------------------------------------------
- p7_i : in std_logic_vector(3 downto 0);
- p7_o : out std_logic_vector(3 downto 0);
- p7_en_o : out std_logic
- );
- end component;
-
- component t8243_sync_notri
- port (
- -- System Interface -----------------------------------------------------
- clk_i : in std_logic;
- clk_en_i : in std_logic;
- reset_n_i : in std_logic;
- -- Control Interface ----------------------------------------------------
- cs_n_i : in std_logic;
- prog_n_i : in std_logic;
- -- Port 2 Interface -----------------------------------------------------
- p2_i : in std_logic_vector(3 downto 0);
- p2_o : out std_logic_vector(3 downto 0);
- p2_en_o : out std_logic;
- -- Port 4 Interface -----------------------------------------------------
- p4_i : in std_logic_vector(3 downto 0);
- p4_o : out std_logic_vector(3 downto 0);
- p4_en_o : out std_logic;
- -- Port 5 Interface -----------------------------------------------------
- p5_i : in std_logic_vector(3 downto 0);
- p5_o : out std_logic_vector(3 downto 0);
- p5_en_o : out std_logic;
- -- Port 6 Interface -----------------------------------------------------
- p6_i : in std_logic_vector(3 downto 0);
- p6_o : out std_logic_vector(3 downto 0);
- p6_en_o : out std_logic;
- -- Port 7 Interface -----------------------------------------------------
- p7_i : in std_logic_vector(3 downto 0);
- p7_o : out std_logic_vector(3 downto 0);
- p7_en_o : out std_logic
- );
- end component;
-
- component t8243_async_notri
- port (
- -- System Interface -----------------------------------------------------
- reset_n_i : in std_logic;
- -- Control Interface ----------------------------------------------------
- cs_n_i : in std_logic;
- prog_n_i : in std_logic;
- -- Port 2 Interface -----------------------------------------------------
- p2_i : in std_logic_vector(3 downto 0);
- p2_o : out std_logic_vector(3 downto 0);
- p2_en_o : out std_logic;
- -- Port 4 Interface -----------------------------------------------------
- p4_i : in std_logic_vector(3 downto 0);
- p4_o : out std_logic_vector(3 downto 0);
- p4_en_o : out std_logic;
- -- Port 5 Interface -----------------------------------------------------
- p5_i : in std_logic_vector(3 downto 0);
- p5_o : out std_logic_vector(3 downto 0);
- p5_en_o : out std_logic;
- -- Port 6 Interface -----------------------------------------------------
- p6_i : in std_logic_vector(3 downto 0);
- p6_o : out std_logic_vector(3 downto 0);
- p6_en_o : out std_logic;
- -- Port 7 Interface -----------------------------------------------------
- p7_i : in std_logic_vector(3 downto 0);
- p7_o : out std_logic_vector(3 downto 0);
- p7_en_o : out std_logic
- );
- end component;
-
- component t8243
- port (
- -- Control Interface ----------------------------------------------------
- cs_n_i : in std_logic;
- prog_n_i : in std_logic;
- -- Port 2 Interface -----------------------------------------------------
- p2_b : inout std_logic_vector(3 downto 0);
- -- Port 4 Interface -----------------------------------------------------
- p4_b : inout std_logic_vector(3 downto 0);
- -- Port 5 Interface -----------------------------------------------------
- p5_b : inout std_logic_vector(3 downto 0);
- -- Port 6 Interface -----------------------------------------------------
- p6_b : inout std_logic_vector(3 downto 0);
- -- Port 7 Interface -----------------------------------------------------
- p7_b : inout std_logic_vector(3 downto 0)
- );
- end component;
-
-end;
t48/rel_1_2/rtl/vhdl/t8243/t8243_comp_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/dmem_ctrl.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/dmem_ctrl.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/dmem_ctrl.vhd (nonexistent)
@@ -1,202 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Data Memory control unit.
--- All accesses to the Data Memory are managed here.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.dmem_addr_t;
-use work.t48_pack.word_t;
-use work.t48_dmem_ctrl_pack.dmem_addr_ident_t;
-
-entity t48_dmem_ctrl is
-
- port (
- -- Global Interface -------------------------------------------------------
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- -- Control Interface ------------------------------------------------------
- data_i : in word_t;
- write_dmem_addr_i : in boolean;
- write_dmem_i : in boolean;
- read_dmem_i : in boolean;
- addr_type_i : in dmem_addr_ident_t;
- bank_select_i : in std_logic;
- data_o : out word_t;
- -- Data Memory Interface --------------------------------------------------
- dmem_data_i : in word_t;
- dmem_addr_o : out dmem_addr_t;
- dmem_we_o : out std_logic;
- dmem_data_o : out word_t
- );
-
-end t48_dmem_ctrl;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-use work.t48_pack.clk_active_c;
-use work.t48_pack.res_active_c;
-use work.t48_pack.bus_idle_level_c;
-use work.t48_pack.to_stdLogic;
-
-use work.t48_dmem_ctrl_pack.all;
-
-architecture rtl of t48_dmem_ctrl is
-
- signal dmem_addr_s,
- dmem_addr_q : dmem_addr_t;
-begin
-
- -----------------------------------------------------------------------------
- -- Process addr_decode
- --
- -- Purpose:
- -- Decode/multiplex the address information for the Data Memory.
- --
- addr_decode: process (data_i,
- addr_type_i,
- bank_select_i,
- dmem_addr_q)
- variable stack_addr_v : unsigned(5 downto 0);
- begin
- -- default assignment
- dmem_addr_s <= dmem_addr_q;
- stack_addr_v := (others => '0');
-
- case addr_type_i is
- when DM_PLAIN =>
- dmem_addr_s <= data_i;
-
- when DM_REG =>
- dmem_addr_s <= (others => '0');
- dmem_addr_s(2 downto 0) <= data_i(2 downto 0);
- -- implement bank switching
- if bank_select_i = '1' then
- -- dmem address 24 - 31: access proper set
- dmem_addr_s(4 downto 3) <= "11";
- end if;
-
- when DM_STACK =>
- -- build address from stack pointer
- stack_addr_v(3 downto 1) := unsigned(data_i(2 downto 0));
- -- dmem address 8 - 23
- stack_addr_v := stack_addr_v + 8;
-
- dmem_addr_s <= (others => '0');
- dmem_addr_s(5 downto 0) <= std_logic_vector(stack_addr_v);
-
- when DM_STACK_HIGH =>
- dmem_addr_s(0) <= '1';
-
- when others =>
- -- do nothing
-
- -- pragma translate_off
- assert false
- report "Unknown address type identification for Data Memory controller!"
- severity error;
- -- pragma translate_on
-
- end case;
-
- end process addr_decode;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process dmem_addr_reg
- --
- -- Purpose:
- -- Implements the Data Memory Address Register.
- -- This register is required to hold the address during a write operation
- -- as we cannot hold the address in the input register of the
- -- synchronous RAM (no clock suppression/gating).
- --
- -- NOTE: May be obsoleted by clock enable feature of generic RTL RAM.
- --
- dmem_addr_reg: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- dmem_addr_q <= (others => '0');
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- if write_dmem_addr_i then
- dmem_addr_q <= dmem_addr_s;
- end if;
-
- end if;
-
- end if;
-
- end process dmem_addr_reg;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output mapping.
- -----------------------------------------------------------------------------
- dmem_addr_o <= dmem_addr_s
- when write_dmem_addr_i and en_clk_i else
- dmem_addr_q;
-
- -- data from bus is fed through
- dmem_data_o <= data_i;
-
- -- data to bus is enabled upon read request
- data_o <= dmem_data_i
- when read_dmem_i else
- (others => bus_idle_level_c);
-
- -- write enable to Data Memory is fed through
- dmem_we_o <= to_stdLogic(write_dmem_i);
-
-end rtl;
t48/rel_1_2/rtl/vhdl/dmem_ctrl.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t48_core-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t48_core-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t48_core-c.vhd (nonexistent)
@@ -1,71 +0,0 @@
--------------------------------------------------------------------------------
---
--- T48 Microcontroller Core
---
--- $Id$
---
--------------------------------------------------------------------------------
-
-configuration t48_core_struct_c0 of t48_core is
-
- for struct
-
- for alu_b : t48_alu
- use configuration work.t48_alu_rtl_c0;
- end for;
-
- for bus_mux_b : t48_bus_mux
- use configuration work.t48_bus_mux_rtl_c0;
- end for;
-
- for clock_ctrl_b : t48_clock_ctrl
- use configuration work.t48_clock_ctrl_rtl_c0;
- end for;
-
- for cond_branch_b : t48_cond_branch
- use configuration work.t48_cond_branch_rtl_c0;
- end for;
-
- for use_db_bus
- for db_bus_b : t48_db_bus
- use configuration work.t48_db_bus_rtl_c0;
- end for;
- end for;
-
- for decoder_b : t48_decoder
- use configuration work.t48_decoder_rtl_c0;
- end for;
-
- for dmem_ctrl_b : t48_dmem_ctrl
- use configuration work.t48_dmem_ctrl_rtl_c0;
- end for;
-
- for use_timer
- for timer_b : t48_timer
- use configuration work.t48_timer_rtl_c0;
- end for;
- end for;
-
- for use_p1
- for p1_b : t48_p1
- use configuration work.t48_p1_rtl_c0;
- end for;
- end for;
-
- for use_p2
- for p2_b : t48_p2
- use configuration work.t48_p2_rtl_c0;
- end for;
- end for;
-
- for pmem_ctrl_b : t48_pmem_ctrl
- use configuration work.t48_pmem_ctrl_rtl_c0;
- end for;
-
- for psw_b : t48_psw
- use configuration work.t48_psw_rtl_c0;
- end for;
-
- end for;
-
-end t48_core_struct_c0;
t48/rel_1_2/rtl/vhdl/t48_core-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t48_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t48_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t48_pack-p.vhd (nonexistent)
@@ -1,82 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-package t48_pack is
-
- -----------------------------------------------------------------------------
- -- Global constants
- -----------------------------------------------------------------------------
-
- -- clock active level
- constant clk_active_c : std_logic := '1';
- -- reset active level
- constant res_active_c : std_logic := '0';
- -- idle level on internal data bus
- constant bus_idle_level_c : std_logic := '1';
-
- -- global data word width
- constant word_width_c : natural := 8;
-
- -- data memory address width
- constant dmem_addr_width_c : natural := 8;
- -- program memory address width
- constant pmem_addr_width_c : natural := 12;
-
-
- -----------------------------------------------------------------------------
- -- Global data types
- -----------------------------------------------------------------------------
-
- -- the global data word width type
- subtype word_t is std_logic_vector(word_width_c-1 downto 0);
- subtype nibble_t is std_logic_vector(word_width_c/2-1 downto 0);
- -- the global data memory address type
- subtype dmem_addr_t is std_logic_vector(dmem_addr_width_c-1 downto 0);
- -- the global program memory address type
- subtype pmem_addr_t is std_logic_vector(pmem_addr_width_c-1 downto 0);
- subtype page_t is std_logic_vector(pmem_addr_width_c-1 downto word_width_c);
-
- -- the machine states
- type mstate_t is (MSTATE1, MSTATE2, MSTATE3, MSTATE4, MSTATE5);
-
-
- -----------------------------------------------------------------------------
- -- Global functions
- -----------------------------------------------------------------------------
-
- function to_stdLogic(input: boolean) return std_logic;
- function to_boolean(input: std_logic) return boolean;
-
-end t48_pack;
-
-package body t48_pack is
-
- function to_stdLogic(input: boolean) return std_logic is
- begin
- if input then
- return '1';
- else
- return '0';
- end if;
- end to_stdLogic;
-
- function to_boolean(input: std_logic) return boolean is
- begin
- if input = '1' then
- return true;
- else
- return false;
- end if;
- end to_boolean;
-
-end t48_pack;
t48/rel_1_2/rtl/vhdl/t48_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/timer.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/timer.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/timer.vhd (nonexistent)
@@ -1,252 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Timer/Counter unit.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_t;
-use work.t48_pack.mstate_t;
-
-entity t48_timer is
-
- generic (
- -- state in which T1 is sampled (3 or 4)
- sample_t1_state_g : integer := 4
- );
-
- port (
- -- Global Interface -------------------------------------------------------
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- t1_i : in std_logic;
- clk_mstate_i : in mstate_t;
- -- T48 Bus Interface ------------------------------------------------------
- data_i : in word_t;
- data_o : out word_t;
- read_timer_i : in boolean;
- write_timer_i : in boolean;
- -- Decoder Interface ------------------------------------------------------
- start_t_i : in boolean;
- start_cnt_i : in boolean;
- stop_tcnt_i : in boolean;
- overflow_o : out std_logic
- );
-
-end t48_timer;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-use work.t48_pack.all;
-
-architecture rtl of t48_timer is
-
- -- the 8 bit counter core
- signal counter_q : unsigned(word_t'range);
- signal overflow_q : boolean;
-
- -- increment signal for the counter core
- type inc_type_t is (NONE, TIMER, COUNTER);
- signal increment_s : boolean;
- signal inc_sel_q : inc_type_t;
-
- -- T1 edge detector
- signal t1_q : std_logic;
- signal t1_inc_s : boolean;
-
- -- timer prescaler
- signal prescaler_q : unsigned(4 downto 0);
- signal pre_inc_s : boolean;
-
-begin
-
- -----------------------------------------------------------------------------
- -- Verify the generics
- -----------------------------------------------------------------------------
-
- -- pragma translate_off
- assert (sample_t1_state_g = 3) or (sample_t1_state_g = 4)
- report "sample_t1_state_g must be either 3 or 4!"
- severity failure;
- -- pragma translate_on
-
-
- -----------------------------------------------------------------------------
- -- Process t1_edge
- --
- -- Purpose:
- -- Implements the edge detector for T1.
- --
- t1_edge: process (t1_i,
- t1_q,
- clk_mstate_i)
- begin
- t1_inc_s <= false;
-
- -- sample in state according to generic
- -- Old devices: sample at the beginning of state 3
- -- New devices: sample in state 4
- if (sample_t1_state_g = 3 and clk_mstate_i = MSTATE3) or
- (sample_t1_state_g = 4 and clk_mstate_i = MSTATE4) then
- -- detect falling edge
- if t1_q = '1' and t1_i = '0' then
- t1_inc_s <= true;
- end if;
- end if;
-
- end process t1_edge;
- --
- -----------------------------------------------------------------------------
-
-
- pre_inc_s <= clk_mstate_i = MSTATE4 and prescaler_q = 31;
-
-
- -----------------------------------------------------------------------------
- -- Process inc_sel
- --
- -- Purpose:
- -- Select increment source (timer, counter or none).
- --
- inc_sel: process (inc_sel_q,
- pre_inc_s,
- t1_inc_s)
- begin
- -- default assignment
- increment_s <= false;
-
- case inc_sel_q is
- when NONE =>
- increment_s <= false;
- when TIMER =>
- increment_s <= pre_inc_s;
- when COUNTER =>
- increment_s <= t1_inc_s;
- when others =>
- null;
- end case;
-
- end process inc_sel;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process regs
- --
- -- Purpose:
- -- Implements the counter, the prescaler and other registers.
- --
- regs: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- overflow_q <= false;
- t1_q <= '0';
- prescaler_q <= (others => '0');
- inc_sel_q <= NONE;
- counter_q <= (others => '0');
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- -- Counter Core and overflow ------------------------------------------
- overflow_q <= false;
-
- if write_timer_i then
- counter_q <= unsigned(data_i);
-
- elsif increment_s then
- counter_q <= counter_q + 1;
-
- if counter_q = 255 then
- overflow_q <= true;
- end if;
-
- end if;
-
- -- T1 edge detector ---------------------------------------------------
- if (sample_t1_state_g = 3 and clk_mstate_i = MSTATE3) or
- (sample_t1_state_g = 4 and clk_mstate_i = MSTATE4) then
- t1_q <= t1_i;
- end if;
-
- -- Prescaler ----------------------------------------------------------
- if start_t_i then
- prescaler_q <= (others => '0');
-
- elsif clk_mstate_i = MSTATE3 then
- prescaler_q <= prescaler_q + 1;
-
- end if;
-
- -- Increment Selector -------------------------------------------------
- if start_t_i then
- inc_sel_q <= TIMER;
- elsif start_cnt_i then
- inc_sel_q <= COUNTER;
- elsif stop_tcnt_i then
- inc_sel_q <= NONE;
- end if;
-
- end if;
-
- end if;
-
- end process regs;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output Mapping.
- -----------------------------------------------------------------------------
- data_o <= std_logic_vector(counter_q)
- when read_timer_i else
- (others => bus_idle_level_c);
- overflow_o <= to_stdLogic(overflow_q);
-
-end rtl;
t48/rel_1_2/rtl/vhdl/timer.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/pmem_ctrl.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/pmem_ctrl.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/pmem_ctrl.vhd (nonexistent)
@@ -1,222 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Program Memory control unit.
--- All operations related to the Program Memory are managed here.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.pmem_addr_t;
-use work.t48_pack.word_t;
-use work.t48_pmem_ctrl_pack.pmem_addr_ident_t;
-
-entity t48_pmem_ctrl is
-
- port (
- -- Global Interface -------------------------------------------------------
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- -- T48 Bus Interface ------------------------------------------------------
- data_i : in word_t;
- data_o : out word_t;
- write_pcl_i : in boolean;
- read_pcl_i : in boolean;
- write_pch_i : in boolean;
- read_pch_i : in boolean;
- inc_pc_i : in boolean;
- write_pmem_addr_i : in boolean;
- addr_type_i : in pmem_addr_ident_t;
- read_pmem_i : in boolean;
- -- Porgram Memroy Interface -----------------------------------------------
- pmem_addr_o : out pmem_addr_t;
- pmem_data_i : in word_t
- );
-
-end t48_pmem_ctrl;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-use work.t48_pmem_ctrl_pack.all;
-use work.t48_pack.res_active_c;
-use work.t48_pack.clk_active_c;
-use work.t48_pack.bus_idle_level_c;
-use work.t48_pack.pmem_addr_width_c;
-use work.t48_pack.dmem_addr_width_c;
-use work.t48_pack.page_t;
-
-architecture rtl of t48_pmem_ctrl is
-
- -- implemented counter width of Program Counter
- -- the upper bit is only altered by JMP, CALL and RET(R)
- subtype pc_count_range_t is natural range pmem_addr_width_c-2 downto 0;
-
- -- the Program Counter
- signal program_counter_q : unsigned(pmem_addr_t'range);
-
-
- -- the Program Memory address
- signal pmem_addr_s,
- pmem_addr_q : std_logic_vector(pmem_addr_t'range);
-
-begin
-
- -----------------------------------------------------------------------------
- -- Process program_counter
- --
- -- Purpose:
- -- Implements the Program Counter.
- --
- program_counter: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- program_counter_q <= (others => '0');
- pmem_addr_q <= (others => '0');
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- -- parallel load mode
- if write_pcl_i then
- program_counter_q(data_i'range) <= UNSIGNED(data_i);
- elsif write_pch_i then
- program_counter_q(pmem_addr_width_c-1 downto data_i'high+1) <=
- UNSIGNED(data_i(pmem_addr_width_c - dmem_addr_width_c - 1 downto 0));
- elsif inc_pc_i then
- -- increment mode
- -- the MSB is not modified by linear increments
- -- it can only be altered by JMP, CALL or RET(R)
- program_counter_q(pc_count_range_t) <=
- program_counter_q(pc_count_range_t) + 1;
- end if;
-
- -- set pmem address
- if write_pmem_addr_i then
- pmem_addr_q <= pmem_addr_s;
- end if;
-
- end if;
-
- end if;
-
- end process program_counter;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process pmem_addr
- --
- -- Purpose:
- -- Multiplex the Program Memory address.
- --
- pmem_addr: process (program_counter_q,
- addr_type_i,
- pmem_addr_q,
- data_i)
- begin
- -- default assignment
- pmem_addr_s <= STD_LOGIC_VECTOR(program_counter_q);
-
- case addr_type_i is
- when PM_PC =>
- -- default is ok
- null;
-
- when PM_PAGE =>
- pmem_addr_s(word_t'range) <= data_i;
- -- take page address from program counter
- -- => important for JMPP, MOVP!
- -- they must wrap to next page when at FF!
-
- when PM_PAGE3 =>
- pmem_addr_s(word_t'range) <= data_i;
- -- page address is explicitely specified
- pmem_addr_s(page_t'range) <= "0011";
-
- when others =>
- null;
-
- end case;
-
- end process pmem_addr;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process data_output
- --
- -- Purpose:
- -- Multiplex the data bus output.
- --
- data_output: process (read_pmem_i,
- read_pcl_i,
- read_pch_i,
- pmem_data_i,
- program_counter_q)
- begin
- data_o <= (others => bus_idle_level_c);
-
- if read_pmem_i then
- data_o <= pmem_data_i;
- elsif read_pcl_i then
- data_o <= STD_LOGIC_VECTOR(program_counter_q(data_o'range));
- elsif read_pch_i then
- data_o(3 downto 0) <= STD_LOGIC_VECTOR(program_counter_q(pmem_addr_width_c-1 downto data_o'high+1));
- end if;
-
- end process data_output;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output Mapping.
- -----------------------------------------------------------------------------
- pmem_addr_o <= pmem_addr_q;
-
-end rtl;
t48/rel_1_2/rtl/vhdl/pmem_ctrl.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/bus_mux.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/bus_mux.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/bus_mux.vhd (nonexistent)
@@ -1,100 +0,0 @@
--------------------------------------------------------------------------------
---
--- The T48 Bus Connector.
--- Multiplexes all drivers of the T48 bus.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_t;
-
-entity t48_bus_mux is
-
- port (
- alu_data_i : in word_t;
- bus_data_i : in word_t;
- dec_data_i : in word_t;
- dm_data_i : in word_t;
- pm_data_i : in word_t;
- p1_data_i : in word_t;
- p2_data_i : in word_t;
- psw_data_i : in word_t;
- tim_data_i : in word_t;
- data_o : out word_t
- );
-
-end t48_bus_mux;
-
-
-use work.t48_pack.bus_idle_level_c;
-
-architecture rtl of t48_bus_mux is
-
-begin
-
- or_tree: if bus_idle_level_c = '0' generate
- data_o <= alu_data_i or
- bus_data_i or
- dec_data_i or
- dm_data_i or
- pm_data_i or
- p1_data_i or
- p2_data_i or
- psw_data_i or
- tim_data_i;
- end generate;
-
- and_tree: if bus_idle_level_c = '1' generate
- data_o <= alu_data_i and
- bus_data_i and
- dec_data_i and
- dm_data_i and
- pm_data_i and
- p1_data_i and
- p2_data_i and
- psw_data_i and
- tim_data_i;
- end generate;
-
-end rtl;
t48/rel_1_2/rtl/vhdl/bus_mux.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/decoder-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/decoder-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/decoder-c.vhd (nonexistent)
@@ -1,24 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Decoder unit.
--- It decodes the instruction opcodes and executes them.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_decoder_rtl_c0 of t48_decoder is
-
- for rtl
-
- for int_b: t48_int
- use configuration work.t48_int_rtl_c0;
- end for;
-
- end for;
-
-end t48_decoder_rtl_c0;
t48/rel_1_2/rtl/vhdl/decoder-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/t48_core.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/t48_core.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/t48_core.vhd (nonexistent)
@@ -1,632 +0,0 @@
--------------------------------------------------------------------------------
---
--- T48 Microcontroller Core
---
--- $Id$
---
--- Copyright (c) 2004, 2005, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--- Limitations :
--- =============
---
--- Compared to the original MCS-48 architecture, the following limitations
--- apply:
---
--- * Single-step mode not implemented.
--- Not selected for future implementation.
---
--- * Reading of internal Program Memory not implemented.
--- Not selected for future implementation.
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t48_core is
-
- generic (
- -- divide XTAL1 by 3 to derive Clock States
- xtal_div_3_g : integer := 1;
- -- store mnemonic in flip-flops (registered-out)
- register_mnemonic_g : integer := 1;
- -- include the port 1 module
- include_port1_g : integer := 1;
- -- include the port 2 module
- include_port2_g : integer := 1;
- -- include the BUS module
- include_bus_g : integer := 1;
- -- include the timer module
- include_timer_g : integer := 1;
- -- state in which T1 is sampled (3 or 4)
- sample_t1_state_g : integer := 4
- );
-
- port (
- -- T48 Interface ----------------------------------------------------------
- xtal_i : in std_logic;
- xtal_en_i : in std_logic;
- reset_i : in std_logic;
- t0_i : in std_logic;
- t0_o : out std_logic;
- t0_dir_o : out std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- db_i : in std_logic_vector( 7 downto 0);
- db_o : out std_logic_vector( 7 downto 0);
- db_dir_o : out std_logic;
- t1_i : in std_logic;
- p2_i : in std_logic_vector( 7 downto 0);
- p2_o : out std_logic_vector( 7 downto 0);
- p2l_low_imp_o : out std_logic;
- p2h_low_imp_o : out std_logic;
- p1_i : in std_logic_vector( 7 downto 0);
- p1_o : out std_logic_vector( 7 downto 0);
- p1_low_imp_o : out std_logic;
- prog_n_o : out std_logic;
- -- Core Interface ---------------------------------------------------------
- clk_i : in std_logic;
- en_clk_i : in std_logic;
- xtal3_o : out std_logic;
- dmem_addr_o : out std_logic_vector( 7 downto 0);
- dmem_we_o : out std_logic;
- dmem_data_i : in std_logic_vector( 7 downto 0);
- dmem_data_o : out std_logic_vector( 7 downto 0);
- pmem_addr_o : out std_logic_vector(11 downto 0);
- pmem_data_i : in std_logic_vector( 7 downto 0)
- );
-
-end t48_core;
-
-
-use work.t48_alu_pack.alu_op_t;
-use work.t48_cond_branch_pack.branch_conditions_t;
-use work.t48_cond_branch_pack.comp_value_t;
-use work.t48_dmem_ctrl_pack.dmem_addr_ident_t;
-use work.t48_pmem_ctrl_pack.pmem_addr_ident_t;
-use work.t48_comp_pack.all;
-use work.t48_pack.bus_idle_level_c;
-use work.t48_pack.word_t;
-use work.t48_pack.pmem_addr_t;
-use work.t48_pack.mstate_t;
-use work.t48_pack.to_stdLogic;
-use work.t48_pack.to_boolean;
-
-architecture struct of t48_core is
-
- signal t48_data_s : word_t;
-
- signal xtal_en_s : boolean;
- signal en_clk_s : boolean;
-
- -- ALU signals
- signal alu_data_s : word_t;
- signal alu_write_accu_s : boolean;
- signal alu_write_shadow_s : boolean;
- signal alu_write_temp_reg_s : boolean;
- signal alu_read_alu_s : boolean;
- signal alu_carry_s : std_logic;
- signal alu_aux_carry_s : std_logic;
- signal alu_op_s : alu_op_t;
- signal alu_use_carry_s : boolean;
- signal alu_da_high_s : boolean;
- signal alu_da_overflow_s : boolean;
- signal alu_accu_low_s : boolean;
- signal alu_p06_temp_reg_s : boolean;
- signal alu_p60_temp_reg_s : boolean;
-
- -- BUS signals
- signal bus_write_bus_s : boolean;
- signal bus_read_bus_s : boolean;
- signal bus_output_pcl_s : boolean;
- signal bus_bidir_bus_s : boolean;
- signal bus_data_s : word_t;
-
- -- Clock Controller signals
- signal clk_multi_cycle_s : boolean;
- signal clk_assert_psen_s : boolean;
- signal clk_assert_prog_s : boolean;
- signal clk_assert_rd_s : boolean;
- signal clk_assert_wr_s : boolean;
- signal clk_mstate_s : mstate_t;
- signal clk_second_cycle_s : boolean;
- signal psen_s : boolean;
- signal prog_s : boolean;
- signal rd_s : boolean;
- signal wr_s : boolean;
- signal ale_s : boolean;
- signal xtal3_s : boolean;
-
- -- Conditional Branch Logic signals
- signal cnd_compute_take_s : boolean;
- signal cnd_branch_cond_s : branch_conditions_t;
- signal cnd_take_branch_s : boolean;
- signal cnd_comp_value_s : comp_value_t;
- signal cnd_f1_s : std_logic;
- signal cnd_tf_s : std_logic;
-
- -- Data Memory Controller signals
- signal dm_write_dmem_addr_s : boolean;
- signal dm_write_dmem_s : boolean;
- signal dm_read_dmem_s : boolean;
- signal dm_addr_type_s : dmem_addr_ident_t;
- signal dm_data_s : word_t;
-
- -- Decoder signals
- signal dec_data_s : word_t;
-
- -- Port 1 signals
- signal p1_write_p1_s : boolean;
- signal p1_read_p1_s : boolean;
- signal p1_read_reg_s : boolean;
- signal p1_data_s : word_t;
-
- -- Port 2 signals
- signal p2_write_p2_s : boolean;
- signal p2_write_exp_s : boolean;
- signal p2_read_p2_s : boolean;
- signal p2_read_reg_s : boolean;
- signal p2_read_exp_s : boolean;
- signal p2_output_pch_s : boolean;
- signal p2_data_s : word_t;
-
- -- Program Memory Controller signals
- signal pm_write_pcl_s : boolean;
- signal pm_read_pcl_s : boolean;
- signal pm_write_pch_s : boolean;
- signal pm_read_pch_s : boolean;
- signal pm_read_pmem_s : boolean;
- signal pm_inc_pc_s : boolean;
- signal pm_write_pmem_addr_s : boolean;
- signal pm_data_s : word_t;
- signal pm_addr_type_s : pmem_addr_ident_t;
- signal pmem_addr_s : pmem_addr_t;
-
- -- PSW signals
- signal psw_read_psw_s : boolean;
- signal psw_read_sp_s : boolean;
- signal psw_write_psw_s : boolean;
- signal psw_write_sp_s : boolean;
- signal psw_carry_s : std_logic;
- signal psw_aux_carry_s : std_logic;
- signal psw_f0_s : std_logic;
- signal psw_bs_s : std_logic;
- signal psw_special_data_s : std_logic;
- signal psw_inc_stackp_s : boolean;
- signal psw_dec_stackp_s : boolean;
- signal psw_write_carry_s : boolean;
- signal psw_write_aux_carry_s : boolean;
- signal psw_write_f0_s : boolean;
- signal psw_write_bs_s : boolean;
- signal psw_data_s : word_t;
-
- -- Timer signals
- signal tim_overflow_s : boolean;
- signal tim_of_s : std_logic;
- signal tim_read_timer_s : boolean;
- signal tim_write_timer_s : boolean;
- signal tim_start_t_s : boolean;
- signal tim_start_cnt_s : boolean;
- signal tim_stop_tcnt_s : boolean;
- signal tim_data_s : word_t;
-
-begin
-
- -----------------------------------------------------------------------------
- -- Check generics for valid values.
- -----------------------------------------------------------------------------
- -- pragma translate_off
- assert include_timer_g = 0 or include_timer_g = 1
- report "include_timer_g must be either 1 or 0!"
- severity failure;
-
- assert include_port1_g = 0 or include_port1_g = 1
- report "include_port1_g must be either 1 or 0!"
- severity failure;
-
- assert include_port2_g = 0 or include_port2_g = 1
- report "include_port2_g must be either 1 or 0!"
- severity failure;
-
- assert include_bus_g = 0 or include_bus_g = 1
- report "include_bus_g must be either 1 or 0!"
- severity failure;
- -- pragma translate_on
-
-
- xtal_en_s <= to_boolean(xtal_en_i);
- en_clk_s <= to_boolean(en_clk_i);
-
- alu_b : t48_alu
- port map (
- clk_i => clk_i,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- data_i => t48_data_s,
- data_o => alu_data_s,
- write_accu_i => alu_write_accu_s,
- write_shadow_i => alu_write_shadow_s,
- write_temp_reg_i => alu_write_temp_reg_s,
- read_alu_i => alu_read_alu_s,
- carry_i => psw_carry_s,
- carry_o => alu_carry_s,
- aux_carry_o => alu_aux_carry_s,
- alu_op_i => alu_op_s,
- use_carry_i => alu_use_carry_s,
- da_high_i => alu_da_high_s,
- da_overflow_o => alu_da_overflow_s,
- accu_low_i => alu_accu_low_s,
- p06_temp_reg_i => alu_p06_temp_reg_s,
- p60_temp_reg_i => alu_p60_temp_reg_s
- );
-
- bus_mux_b : t48_bus_mux
- port map (
- alu_data_i => alu_data_s,
- bus_data_i => bus_data_s,
- dec_data_i => dec_data_s,
- dm_data_i => dm_data_s,
- pm_data_i => pm_data_s,
- p1_data_i => p1_data_s,
- p2_data_i => p2_data_s,
- psw_data_i => psw_data_s,
- tim_data_i => tim_data_s,
- data_o => t48_data_s
- );
-
- clock_ctrl_b : t48_clock_ctrl
- generic map (
- xtal_div_3_g => xtal_div_3_g
- )
- port map (
- clk_i => clk_i,
- xtal_i => xtal_i,
- xtal_en_i => xtal_en_s,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- xtal3_o => xtal3_s,
- t0_o => t0_o,
- multi_cycle_i => clk_multi_cycle_s,
- assert_psen_i => clk_assert_psen_s,
- assert_prog_i => clk_assert_prog_s,
- assert_rd_i => clk_assert_rd_s,
- assert_wr_i => clk_assert_wr_s,
- mstate_o => clk_mstate_s,
- second_cycle_o => clk_second_cycle_s,
- ale_o => ale_s,
- psen_o => psen_s,
- prog_o => prog_s,
- rd_o => rd_s,
- wr_o => wr_s
- );
-
- cond_branch_b : t48_cond_branch
- port map (
- clk_i => clk_i,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- compute_take_i => cnd_compute_take_s,
- branch_cond_i => cnd_branch_cond_s,
- take_branch_o => cnd_take_branch_s,
- accu_i => alu_data_s,
- t0_i => To_X01Z(t0_i),
- t1_i => To_X01Z(t1_i),
- int_n_i => int_n_i,
- f0_i => psw_f0_s,
- f1_i => cnd_f1_s,
- tf_i => cnd_tf_s,
- carry_i => psw_carry_s,
- comp_value_i => cnd_comp_value_s
- );
-
- use_db_bus: if include_bus_g = 1 generate
- db_bus_b : t48_db_bus
- port map (
- clk_i => clk_i,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- ea_i => ea_i,
- data_i => t48_data_s,
- data_o => bus_data_s,
- write_bus_i => bus_write_bus_s,
- read_bus_i => bus_read_bus_s,
- output_pcl_i => bus_output_pcl_s,
- bidir_bus_i => bus_bidir_bus_s,
- pcl_i => pmem_addr_s(word_t'range),
- db_i => db_i,
- db_o => db_o,
- db_dir_o => db_dir_o
- );
- end generate;
-
- skip_db_bus: if include_bus_g = 0 generate
- bus_data_s <= (others => bus_idle_level_c);
- db_o <= (others => '0');
- db_dir_o <= '0';
- end generate;
-
- decoder_b : t48_decoder
- generic map (
- register_mnemonic_g => register_mnemonic_g
- )
- port map (
- clk_i => clk_i,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- xtal_i => xtal_i,
- xtal_en_i => xtal_en_s,
- ea_i => ea_i,
- ale_i => ale_s,
- int_n_i => int_n_i,
- t0_dir_o => t0_dir_o,
- data_i => t48_data_s,
- data_o => dec_data_s,
- alu_write_accu_o => alu_write_accu_s,
- alu_write_shadow_o => alu_write_shadow_s,
- alu_write_temp_reg_o => alu_write_temp_reg_s,
- alu_read_alu_o => alu_read_alu_s,
- bus_write_bus_o => bus_write_bus_s,
- bus_read_bus_o => bus_read_bus_s,
- dm_write_dmem_addr_o => dm_write_dmem_addr_s,
- dm_write_dmem_o => dm_write_dmem_s,
- dm_read_dmem_o => dm_read_dmem_s,
- p1_write_p1_o => p1_write_p1_s,
- p1_read_p1_o => p1_read_p1_s,
- pm_write_pcl_o => pm_write_pcl_s,
- p2_write_p2_o => p2_write_p2_s,
- p2_write_exp_o => p2_write_exp_s,
- p2_read_p2_o => p2_read_p2_s,
- pm_read_pcl_o => pm_read_pcl_s,
- pm_write_pch_o => pm_write_pch_s,
- pm_read_pch_o => pm_read_pch_s,
- pm_read_pmem_o => pm_read_pmem_s,
- psw_read_psw_o => psw_read_psw_s,
- psw_read_sp_o => psw_read_sp_s,
- psw_write_psw_o => psw_write_psw_s,
- psw_write_sp_o => psw_write_sp_s,
- alu_carry_i => alu_carry_s,
- alu_op_o => alu_op_s,
- alu_use_carry_o => alu_use_carry_s,
- alu_da_high_o => alu_da_high_s,
- alu_da_overflow_i => alu_da_overflow_s,
- alu_accu_low_o => alu_accu_low_s,
- alu_p06_temp_reg_o => alu_p06_temp_reg_s,
- alu_p60_temp_reg_o => alu_p60_temp_reg_s,
- bus_output_pcl_o => bus_output_pcl_s,
- bus_bidir_bus_o => bus_bidir_bus_s,
- clk_multi_cycle_o => clk_multi_cycle_s,
- clk_assert_psen_o => clk_assert_psen_s,
- clk_assert_prog_o => clk_assert_prog_s,
- clk_assert_rd_o => clk_assert_rd_s,
- clk_assert_wr_o => clk_assert_wr_s,
- clk_mstate_i => clk_mstate_s,
- clk_second_cycle_i => clk_second_cycle_s,
- cnd_compute_take_o => cnd_compute_take_s,
- cnd_branch_cond_o => cnd_branch_cond_s,
- cnd_take_branch_i => cnd_take_branch_s,
- cnd_comp_value_o => cnd_comp_value_s,
- cnd_f1_o => cnd_f1_s,
- cnd_tf_o => cnd_tf_s,
- dm_addr_type_o => dm_addr_type_s,
- tim_read_timer_o => tim_read_timer_s,
- tim_write_timer_o => tim_write_timer_s,
- tim_start_t_o => tim_start_t_s,
- tim_start_cnt_o => tim_start_cnt_s,
- tim_stop_tcnt_o => tim_stop_tcnt_s,
- p1_read_reg_o => p1_read_reg_s,
- p2_read_reg_o => p2_read_reg_s,
- p2_read_exp_o => p2_read_exp_s,
- p2_output_pch_o => p2_output_pch_s,
- pm_inc_pc_o => pm_inc_pc_s,
- pm_write_pmem_addr_o => pm_write_pmem_addr_s,
- pm_addr_type_o => pm_addr_type_s,
- psw_special_data_o => psw_special_data_s,
- psw_carry_i => psw_carry_s,
- psw_aux_carry_i => psw_aux_carry_s,
- psw_f0_i => psw_f0_s,
- psw_inc_stackp_o => psw_inc_stackp_s,
- psw_dec_stackp_o => psw_dec_stackp_s,
- psw_write_carry_o => psw_write_carry_s,
- psw_write_aux_carry_o => psw_write_aux_carry_s,
- psw_write_f0_o => psw_write_f0_s,
- psw_write_bs_o => psw_write_bs_s,
- tim_overflow_i => tim_overflow_s
- );
-
- dmem_ctrl_b : t48_dmem_ctrl
- port map (
- clk_i => clk_i,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- data_i => t48_data_s,
- write_dmem_addr_i => dm_write_dmem_addr_s,
- write_dmem_i => dm_write_dmem_s,
- read_dmem_i => dm_read_dmem_s,
- addr_type_i => dm_addr_type_s,
- bank_select_i => psw_bs_s,
- data_o => dm_data_s,
- dmem_data_i => dmem_data_i,
- dmem_addr_o => dmem_addr_o,
- dmem_we_o => dmem_we_o,
- dmem_data_o => dmem_data_o
- );
-
- use_timer: if include_timer_g = 1 generate
- timer_b : t48_timer
- generic map (
- sample_t1_state_g => sample_t1_state_g
- )
- port map (
- clk_i => clk_i,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- t1_i => To_X01Z(t1_i),
- clk_mstate_i => clk_mstate_s,
- data_i => t48_data_s,
- data_o => tim_data_s,
- read_timer_i => tim_read_timer_s,
- write_timer_i => tim_write_timer_s,
- start_t_i => tim_start_t_s,
- start_cnt_i => tim_start_cnt_s,
- stop_tcnt_i => tim_stop_tcnt_s,
- overflow_o => tim_of_s
- );
- end generate;
-
- skip_timer: if include_timer_g = 0 generate
- tim_data_s <= (others => bus_idle_level_c);
- tim_of_s <= '0';
- end generate;
-
- tim_overflow_s <= to_boolean(tim_of_s);
-
- use_p1: if include_port1_g = 1 generate
- p1_b : t48_p1
- port map (
- clk_i => clk_i,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- data_i => t48_data_s,
- data_o => p1_data_s,
- write_p1_i => p1_write_p1_s,
- read_p1_i => p1_read_p1_s,
- read_reg_i => p1_read_reg_s,
- p1_i => p1_i,
- p1_o => p1_o,
- p1_low_imp_o => p1_low_imp_o
- );
- end generate;
-
- skip_p1: if include_port1_g = 0 generate
- p1_data_s <= (others => bus_idle_level_c);
- p1_o <= (others => '0');
- p1_low_imp_o <= '0';
- end generate;
-
- use_p2: if include_port2_g = 1 generate
- p2_b : t48_p2
- port map (
- clk_i => clk_i,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- xtal_i => xtal_i,
- xtal_en_i => xtal_en_s,
- data_i => t48_data_s,
- data_o => p2_data_s,
- write_p2_i => p2_write_p2_s,
- write_exp_i => p2_write_exp_s,
- read_p2_i => p2_read_p2_s,
- read_reg_i => p2_read_reg_s,
- read_exp_i => p2_read_exp_s,
- output_pch_i => p2_output_pch_s,
- pch_i => pmem_addr_s(11 downto 8),
- p2_i => p2_i,
- p2_o => p2_o,
- p2l_low_imp_o => p2l_low_imp_o,
- p2h_low_imp_o => p2h_low_imp_o
- );
- end generate;
-
- skip_p2: if include_port2_g = 0 generate
- p2_data_s <= (others => bus_idle_level_c);
- p2_o <= (others => '0');
- p2l_low_imp_o <= '0';
- p2h_low_imp_o <= '0';
- end generate;
-
- pmem_ctrl_b : t48_pmem_ctrl
- port map (
- clk_i => clk_i,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- data_i => t48_data_s,
- data_o => pm_data_s,
- write_pcl_i => pm_write_pcl_s,
- read_pcl_i => pm_read_pcl_s,
- write_pch_i => pm_write_pch_s,
- read_pch_i => pm_read_pch_s,
- inc_pc_i => pm_inc_pc_s,
- write_pmem_addr_i => pm_write_pmem_addr_s,
- addr_type_i => pm_addr_type_s,
- read_pmem_i => pm_read_pmem_s,
- pmem_addr_o => pmem_addr_s,
- pmem_data_i => pmem_data_i
- );
-
- psw_b : t48_psw
- port map (
- clk_i => clk_i,
- res_i => reset_i,
- en_clk_i => en_clk_s,
- data_i => t48_data_s,
- data_o => psw_data_s,
- read_psw_i => psw_read_psw_s,
- read_sp_i => psw_read_sp_s,
- write_psw_i => psw_write_psw_s,
- write_sp_i => psw_write_sp_s,
- special_data_i => psw_special_data_s,
- inc_stackp_i => psw_inc_stackp_s,
- dec_stackp_i => psw_dec_stackp_s,
- write_carry_i => psw_write_carry_s,
- write_aux_carry_i => psw_write_aux_carry_s,
- write_f0_i => psw_write_f0_s,
- write_bs_i => psw_write_bs_s,
- carry_o => psw_carry_s,
- aux_carry_i => alu_aux_carry_s,
- aux_carry_o => psw_aux_carry_s,
- f0_o => psw_f0_s,
- bs_o => psw_bs_s
- );
-
-
- -----------------------------------------------------------------------------
- -- Output Mapping.
- -----------------------------------------------------------------------------
- ale_o <= to_stdLogic(ale_s);
- psen_n_o <= to_stdLogic(not psen_s);
- prog_n_o <= to_stdLogic(not prog_s);
- rd_n_o <= to_stdLogic(not rd_s);
- wr_n_o <= to_stdLogic(not wr_s);
- xtal3_o <= to_stdLogic(xtal3_s);
- pmem_addr_o <= pmem_addr_s;
-
-end struct;
t48/rel_1_2/rtl/vhdl/t48_core.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/psw-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/psw-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/psw-c.vhd (nonexistent)
@@ -1,17 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Program Status Word (PSW).
--- Implements the PSW with its special bits.
---
--- $Id$
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_psw_rtl_c0 of t48_psw is
-
- for rtl
- end for;
-
-end t48_psw_rtl_c0;
t48/rel_1_2/rtl/vhdl/psw-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/cond_branch_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/cond_branch_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/cond_branch_pack-p.vhd (nonexistent)
@@ -1,28 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-package t48_cond_branch_pack is
-
- -----------------------------------------------------------------------------
- -- The branch conditions.
- -----------------------------------------------------------------------------
- type branch_conditions_t is (COND_ON_BIT, COND_Z,
- COND_C,
- COND_F0, COND_F1,
- COND_INT,
- COND_T0, COND_T1,
- COND_TF);
-
- subtype comp_value_t is std_logic_vector(2 downto 0);
-
-end t48_cond_branch_pack;
t48/rel_1_2/rtl/vhdl/cond_branch_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/clock_ctrl-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/clock_ctrl-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/clock_ctrl-c.vhd (nonexistent)
@@ -1,14 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- The clock control unit.
---
--------------------------------------------------------------------------------
-
-configuration t48_clock_ctrl_rtl_c0 of t48_clock_ctrl is
-
- for rtl
- end for;
-
-end t48_clock_ctrl_rtl_c0;
t48/rel_1_2/rtl/vhdl/clock_ctrl-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/p1-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/p1-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/p1-c.vhd (nonexistent)
@@ -1,17 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Port 1 unit.
--- Implements the Port 1 logic.
---
--- $Id$
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_p1_rtl_c0 of t48_p1 is
-
- for rtl
- end for;
-
-end t48_p1_rtl_c0;
t48/rel_1_2/rtl/vhdl/p1-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/decoder_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/decoder_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/decoder_pack-p.vhd (nonexistent)
@@ -1,428 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_t;
-
-package t48_decoder_pack is
-
- -----------------------------------------------------------------------------
- -- The Mnemonics.
- -----------------------------------------------------------------------------
- type mnemonic_t is (MN_ADD,
- MN_ADD_A_DATA,
- MN_ANL,
- MN_ANL_A_DATA,
- MN_ANL_EXT,
- MN_CALL,
- MN_CLR_A,
- MN_CLR_C,
- MN_CLR_F,
- MN_CPL_A,
- MN_CPL_C,
- MN_CPL_F,
- MN_DA,
- MN_DEC,
- MN_DIS_EN_I,
- MN_DIS_EN_TCNTI,
- MN_DJNZ,
- MN_ENT0_CLK,
- MN_IN,
- MN_INC,
- MN_INS,
- MN_JBB,
- MN_JC,
- MN_JF,
- MN_JMP,
- MN_JMPP,
- MN_JNI,
- MN_JT,
- MN_JTF,
- MN_JZ,
- MN_MOV_A_DATA,
- MN_MOV_A_PSW,
- MN_MOV_A_RR,
- MN_MOV_PSW_A,
- MN_MOV_RR,
- MN_MOV_RR_DATA,
- MN_MOV_T,
- MN_MOVD_A_PP,
- MN_MOVP,
- MN_MOVX,
- MN_NOP,
- MN_ORL,
- MN_ORL_A_DATA,
- MN_ORL_EXT,
- MN_OUTD_PP_A,
- MN_OUTL_EXT,
- MN_RET,
- MN_RL,
- MN_RR,
- MN_SEL_MB,
- MN_SEL_RB,
- MN_STOP_TCNT,
- MN_STRT,
- MN_SWAP,
- MN_XCH,
- MN_XRL,
- MN_XRL_A_DATA);
-
- type mnemonic_rec_t is
- record
- mnemonic : mnemonic_t;
- multi_cycle : boolean;
- end record;
-
- function decode_opcode_f(opcode : in word_t) return
- mnemonic_rec_t;
-
-end t48_decoder_pack;
-
-
-package body t48_decoder_pack is
-
- function decode_opcode_f(opcode : in word_t) return
- mnemonic_rec_t is
- variable mnemonic_v : mnemonic_t;
- variable multi_cycle_v : boolean;
- variable result_v : mnemonic_rec_t;
- begin
- -- default assignment
- mnemonic_v := MN_NOP;
- multi_cycle_v := false;
-
- case opcode is
- -- Mnemonic ADD ---------------------------------------------------------
- when "01101000" | "01101001" | "01101010" | "01101011" | -- ADD A, Rr
- "01101100" | "01101101" | "01101110" | "01101111" | --
- "01100000" | "01100001" | -- ADD A, @ Rr
- "01111000" | "01111001" | "01111010" | "01111011" | -- ADDC A, Rr
- "01111100" | "01111101" | "01111110" | "01111111" | --
- "01110000" | "01110001" => -- ADDC A, @ Rr
- mnemonic_v := MN_ADD;
-
- -- Mnemonic ADD_A_DATA --------------------------------------------------
- when "00000011" | -- ADD A, data
- "00010011" => -- ADDC A, data
- mnemonic_v := MN_ADD_A_DATA;
- multi_cycle_v := true;
-
- -- Mnemonic ANL ---------------------------------------------------------
- when "01011000" | "01011001" | "01011010" | "01011011" | -- ANL A, Rr
- "01011100" | "01011101" | "01011110" | "01011111" | --
- "01010000" | "01010001" => -- ANL A, @ Rr
- mnemonic_v := MN_ANL;
-
- -- Mnemonic ANL_A_DATA --------------------------------------------------
- when "01010011" => -- ANL A, data
- mnemonic_v := MN_ANL_A_DATA;
- multi_cycle_v := true;
-
- -- Mnemonic ANL_EXT -----------------------------------------------------
- when "10011000" | -- ANL BUS, data
- "10011001" | "10011010" => -- ANL PP, data
- mnemonic_v := MN_ANL_EXT;
- multi_cycle_v := true;
-
- -- Mnemonic CALL --------------------------------------------------------
- when "00010100" | "00110100" | "01010100" | "01110100" | -- CALL addr
- "10010100" | "10110100" | "11010100" | "11110100" => --
- mnemonic_v := MN_CALL;
- multi_cycle_v := true;
-
- -- Mnemonic CLR_A -------------------------------------------------------
- when "00100111" => -- CLR A
- mnemonic_v := MN_CLR_A;
-
- -- Mnemonic CLR_C -------------------------------------------------------
- when "10010111" => -- CLR C
- mnemonic_v := MN_CLR_C;
-
- -- Mnemonic CLR_F -------------------------------------------------------
- when "10000101" | -- CLR F0
- "10100101" =>
- mnemonic_v := MN_CLR_F;
-
- -- Mnemonic CPL_A -------------------------------------------------------
- when "00110111" => -- CPL A
- mnemonic_v := MN_CPL_A;
-
- -- Mnemonic CPL_C -------------------------------------------------------
- when "10100111" => -- CPL C
- mnemonic_v := MN_CPL_C;
-
- -- Mnemonic CPL_F -------------------------------------------------------
- when "10010101" | -- CPL F0
- "10110101" => -- CPL F1
- mnemonic_v := MN_CPL_F;
-
- -- Mnemonic DA ----------------------------------------------------------
- when "01010111" => -- DA D
- mnemonic_v := MN_DA;
-
- -- Mnemonic DEC ---------------------------------------------------------
- when "11001000" | "11001001" | "11001010" | "11001011" | -- DEC Rr
- "11001100" | "11001101" | "11001110" | "11001111" | --
- "00000111" => -- DEC A
- mnemonic_v := MN_DEC;
-
- -- Mnemonic DIS_EN_I ----------------------------------------------------
- when "00010101" | -- DIS I
- "00000101" => -- EN I
- mnemonic_v := MN_DIS_EN_I;
-
- -- Mnemonic DIS_EN_TCNTI ------------------------------------------------
- when "00110101" | -- DIS TCNTI
- "00100101" => -- EN TCNTI
- mnemonic_v := MN_DIS_EN_TCNTI;
-
- -- Mnemonic DJNZ --------------------------------------------------------
- when "11101000" | "11101001" | "11101010" | "11101011" | -- DJNZ Rr, addr
- "11101100" | "11101101" | "11101110" | "11101111" => --
- mnemonic_v := MN_DJNZ;
- multi_cycle_v := true;
-
- -- Mnemonic ENT0_CLK ----------------------------------------------------
- when "01110101" => -- ENT0 CLK
- mnemonic_v := MN_ENT0_CLK;
-
- -- Mnemonic IN ----------------------------------------------------------
- when "00001001" | "00001010" => -- IN A, Pp
- mnemonic_v := MN_IN;
- multi_cycle_v := true;
-
- -- Mnemonic INC ---------------------------------------------------------
- when "00010111" | -- INC A
- "00011000" | "00011001" | "00011010" | "00011011" | -- INC Rr
- "00011100" | "00011101" | "00011110" | "00011111" | --
- "00010000" | "00010001" => -- INC @ Rr
- mnemonic_v := MN_INC;
-
- -- Mnemonic INS ---------------------------------------------------------
- when "00001000" => -- INS A, BUS
- mnemonic_v := MN_INS;
- multi_cycle_v := true;
-
- -- Mnemonic JBB ---------------------------------------------------------
- when "00010010" | "00110010" | "01010010" | "01110010" | -- JBb addr
- "10010010" | "10110010" | "11010010" | "11110010" => --
- mnemonic_v := MN_JBB;
- multi_cycle_v := true;
-
- -- Mnemonic JC ----------------------------------------------------------
- when "11110110" | -- JC addr
- "11100110" => -- JNC addr
- mnemonic_v := MN_JC;
- multi_cycle_v := true;
-
- -- Mnemonic JF ----------------------------------------------------------
- when "10110110" | -- JF0 addr
- "01110110" => -- JF1 addr
- mnemonic_v := MN_JF;
- multi_cycle_v := true;
-
- -- Mnemonic JMP ---------------------------------------------------------
- when "00000100" | "00100100" | "01000100" | "01100100" | -- JMP addr
- "10000100" | "10100100" | "11000100" | "11100100" => --
- mnemonic_v := MN_JMP;
- multi_cycle_v := true;
-
- -- Mnemonic JMPP --------------------------------------------------------
- when "10110011" => -- JMPP @ A
- mnemonic_v := MN_JMPP;
- multi_cycle_v := true;
-
- -- Mnemonic JNI ---------------------------------------------------------
- when "10000110" => -- JNI addr
- mnemonic_v := MN_JNI;
- multi_cycle_v := true;
-
- -- Mnemonic JT ----------------------------------------------------------
- when "00100110" | -- JNT0 addr
- "01000110" | -- JNT1 addr
- "00110110" | -- JT0 addr
- "01010110" => -- JT1 addr
- mnemonic_v := MN_JT;
- multi_cycle_v := true;
-
- -- Mnemonic JTF ---------------------------------------------------------
- when "00010110" => -- JTF addr
- mnemonic_v := MN_JTF;
- multi_cycle_v := true;
-
- -- Mnemonic JZ ----------------------------------------------------------
- when "10010110" | -- JNZ addr
- "11000110" => -- JZ addr
- mnemonic_v := MN_JZ;
- multi_cycle_v := true;
-
- -- Mnemonic MOV_A_DATA --------------------------------------------------
- when "00100011" => -- MOV A, data
- mnemonic_v := MN_MOV_A_DATA;
- multi_cycle_v := true;
-
- -- Mnemonic MOV_A_PSW ---------------------------------------------------
- when "11000111" => -- MOV A, PSW
- mnemonic_v := MN_MOV_A_PSW;
-
- -- Mnemonic MOV_A_RR ----------------------------------------------------
- when "11111000" | "11111001" | "11111010" | "11111011" | -- MOV A, Rr
- "11111100" | "11111101" | "11111110" | "11111111" | --
- "11110000" | "11110001" => -- MOV A, @ Rr
- mnemonic_v := MN_MOV_A_RR;
-
- -- Mnemonic MOV_PSW_A ---------------------------------------------------
- when "11010111" => -- MOV PSW, A
- mnemonic_v := MN_MOV_PSW_A;
-
- -- Mnemonic MOV_RR ------------------------------------------------------
- when "10101000" | "10101001" | "10101010" | "10101011" | -- MOV Rr, A
- "10101100" | "10101101" | "10101110" | "10101111" | --
- "10100000" | "10100001" => -- MOV @ Rr, A
- mnemonic_v := MN_MOV_RR;
-
- -- Mnemonic MOV_RR_DATA -------------------------------------------------
- when "10111000" | "10111001" | "10111010" | "10111011" | -- MOV Rr, data
- "10111100" | "10111101" | "10111110" | "10111111" | --
- "10110000" | "10110001" => -- MOV @ Rr, data
- mnemonic_v := MN_MOV_RR_DATA;
- multi_cycle_v := true;
-
- -- Mnemonic MOV_T -------------------------------------------------------
- when "01100010" | -- MOV T, A
- "01000010" => -- MOV A, T
- mnemonic_v := MN_MOV_T;
-
- -- Mnemonic MOVD_A_PP ---------------------------------------------------
- when "00001100" | "00001101" | "00001110" | "00001111" => -- MOVD A, Pp
- mnemonic_v := MN_MOVD_A_PP;
- multi_cycle_v := true;
-
- -- Mnemonic MOVP --------------------------------------------------------
- when "10100011" | -- MOVP A, @ A
- "11100011" => -- MOVP3 A, @ A
- mnemonic_v := MN_MOVP;
- multi_cycle_v := true;
-
- -- Mnemonic MOVX --------------------------------------------------------
- when "10000000" | "10000001" | -- MOVX A, @ Rr
- "10010000" | "10010001" => -- MOVX @ Rr, A
- mnemonic_v := MN_MOVX;
- multi_cycle_v := true;
-
- -- Mnemonic NOP ---------------------------------------------------------
- when "00000000" => -- NOP
- mnemonic_v := MN_NOP;
-
- -- Mnemonic ORL ---------------------------------------------------------
- when "01001000" | "01001001" | "01001010" | "01001011" | -- ORL A, Rr
- "01001100" | "01001101" | "01001110" | "01001111" | --
- "01000000" | "01000001" => -- ORL A, @ Rr
- mnemonic_v := MN_ORL;
-
- -- Mnemonic ORL_A_DATA --------------------------------------------------
- when "01000011" => -- ORL A, data
- mnemonic_v := MN_ORL_A_DATA;
- multi_cycle_v := true;
-
- -- Mnemonic ORL_EXT -----------------------------------------------------
- when "10001000" | -- ORL BUS, data
- "10001001" | "10001010" => -- ORL Pp, data
- mnemonic_v := MN_ORL_EXT;
- multi_cycle_v := true;
-
- -- Mnemonic OUTD_PP_A ---------------------------------------------------
- when "00111100" | "00111101" | "00111110" | "00111111" | -- MOVD Pp, A
- "10011100" | "10011101" | "10011110" | "10011111" | -- ANLD PP, A
- "10001100" | "10001101" | "10001110" | "10001111" => -- ORLD Pp, A
- mnemonic_v := MN_OUTD_PP_A;
- multi_cycle_v := true;
-
- -- Mnemonic OUTL_EXT ----------------------------------------------------
- when "00111001" | "00111010" | -- OUTL Pp, A
- "00000010" => -- OUTL BUS, A
- mnemonic_v := MN_OUTL_EXT;
- multi_cycle_v := true;
-
- -- Mnemonic RET ---------------------------------------------------------
- when "10000011" | -- RET
- "10010011" => -- RETR
- mnemonic_v := MN_RET;
- multi_cycle_v := true;
-
- -- Mnemonic RL ----------------------------------------------------------
- when "11100111" | -- RL A
- "11110111" => -- RLC A
- mnemonic_v := MN_RL;
-
- -- Mnemonic RR ----------------------------------------------------------
- when "01110111" | -- RR A
- "01100111" => -- RRC A
- mnemonic_v := MN_RR;
-
- -- Mnemonic SEL_MB ------------------------------------------------------
- when "11100101" | -- SEL MB0
- "11110101" => -- SEL MB1
- mnemonic_v := MN_SEL_MB;
-
- -- Mnemonic SEL_RB ------------------------------------------------------
- when "11000101" | -- SEL RB0
- "11010101" => -- SEL RB1
- mnemonic_v := MN_SEL_RB;
-
- -- Mnemonic STOP_TCNT ---------------------------------------------------
- when "01100101" => -- STOP TCNT
- mnemonic_v := MN_STOP_TCNT;
-
- -- Mnemonic START -------------------------------------------------------
- when "01000101" | -- STRT CNT
- "01010101" => -- STRT T
- mnemonic_v := MN_STRT;
-
- -- Mnemonic SWAP --------------------------------------------------------
- when "01000111" => -- SWAP A
- mnemonic_v := MN_SWAP;
-
- -- Mnemonic XCH ---------------------------------------------------------
- when "00101000" | "00101001" | "00101010" | "00101011" | -- XCH A, Rr
- "00101100" | "00101101" | "00101110" | "00101111" | --
- "00100000" | "00100001" | -- XCH A, @ Rr
- "00110000" | "00110001" => -- XCHD A, @ Rr
- mnemonic_v := MN_XCH;
-
- -- Mnemonic XRL ---------------------------------------------------------
- when "11011000" | "11011001" | "11011010" | "11011011" | -- XRL A, Rr
- "11011100" | "11011101" | "11011110" | "11011111" | --
- "11010000" | "11010001" => -- XRL A, @ Rr
- mnemonic_v := MN_XRL;
-
- -- Mnemonic XRL_A_DATA --------------------------------------------------
- when "11010011" => -- XRL A, data
- mnemonic_v := MN_XRL_A_DATA;
- multi_cycle_v := true;
-
- when others =>
- -- pragma translate_off
- assert now = 0 ns
- report "Unknown opcode."
- severity warning;
- -- pragma translate_on
-
- end case;
-
- result_v.mnemonic := mnemonic_v;
- result_v.multi_cycle := multi_cycle_v;
-
- return result_v;
- end;
-
-end t48_decoder_pack;
t48/rel_1_2/rtl/vhdl/decoder_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/dmem_ctrl_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/dmem_ctrl_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/dmem_ctrl_pack-p.vhd (nonexistent)
@@ -1,21 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-package t48_dmem_ctrl_pack is
-
- -----------------------------------------------------------------------------
- -- Address Type Identifier
- -----------------------------------------------------------------------------
- type dmem_addr_ident_t is (DM_PLAIN,
- DM_REG,
- DM_STACK,
- DM_STACK_HIGH);
-
-end t48_dmem_ctrl_pack;
t48/rel_1_2/rtl/vhdl/dmem_ctrl_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/p2-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/p2-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/p2-c.vhd (nonexistent)
@@ -1,17 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Port 2 unit.
--- Implements the Port 2 logic.
---
--- $Id$
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_p2_rtl_c0 of t48_p2 is
-
- for rtl
- end for;
-
-end t48_p2_rtl_c0;
t48/rel_1_2/rtl/vhdl/p2-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/alu-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/alu-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/alu-c.vhd (nonexistent)
@@ -1,19 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Arithmetic Logic Unit (ALU).
--- It contains the ALU core plus the Accumulator and the Temp Reg.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_alu_rtl_c0 of t48_alu is
-
- for rtl
- end for;
-
-end t48_alu_rtl_c0;
t48/rel_1_2/rtl/vhdl/alu-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t48_system_comp_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t48_system_comp_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t48_system_comp_pack-p.vhd (nonexistent)
@@ -1,177 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-package t48_system_comp_pack is
-
- component t48_wb_master
- port (
- xtal_i : in std_logic;
- res_i : in std_logic;
- en_clk_o : out std_logic;
- ale_i : in std_logic;
- rd_n_i : in std_logic;
- wr_n_i : in std_logic;
- adr_i : in std_logic;
- db_bus_i : in std_logic_vector( 7 downto 0);
- db_bus_o : out std_logic_vector( 7 downto 0);
- wb_cyc_o : out std_logic;
- wb_stb_o : out std_logic;
- wb_we_o : out std_logic;
- wb_adr_o : out std_logic_vector(23 downto 0);
- wb_ack_i : in std_logic;
- wb_dat_i : in std_logic_vector( 7 downto 0);
- wb_dat_o : out std_logic_vector( 7 downto 0)
- );
- end component;
-
- component t8048_notri
- generic (
- gate_port_input_g : integer := 1
- );
-
- port (
- xtal_i : in std_logic;
- xtal_en_i : in std_logic;
- reset_n_i : in std_logic;
- t0_i : in std_logic;
- t0_o : out std_logic;
- t0_dir_o : out std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- db_i : in std_logic_vector( 7 downto 0);
- db_o : out std_logic_vector( 7 downto 0);
- db_dir_o : out std_logic;
- t1_i : in std_logic;
- p2_i : in std_logic_vector( 7 downto 0);
- p2_o : out std_logic_vector( 7 downto 0);
- p2l_low_imp_o : out std_logic;
- p2h_low_imp_o : out std_logic;
- p1_i : in std_logic_vector( 7 downto 0);
- p1_o : out std_logic_vector( 7 downto 0);
- p1_low_imp_o : out std_logic;
- prog_n_o : out std_logic
- );
- end component;
-
- component t8039_notri
- generic (
- gate_port_input_g : integer := 1
- );
-
- port (
- xtal_i : in std_logic;
- xtal_en_i : in std_logic;
- reset_n_i : in std_logic;
- t0_i : in std_logic;
- t0_o : out std_logic;
- t0_dir_o : out std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- db_i : in std_logic_vector( 7 downto 0);
- db_o : out std_logic_vector( 7 downto 0);
- db_dir_o : out std_logic;
- t1_i : in std_logic;
- p2_i : in std_logic_vector( 7 downto 0);
- p2_o : out std_logic_vector( 7 downto 0);
- p2l_low_imp_o : out std_logic;
- p2h_low_imp_o : out std_logic;
- p1_i : in std_logic_vector( 7 downto 0);
- p1_o : out std_logic_vector( 7 downto 0);
- p1_low_imp_o : out std_logic;
- prog_n_o : out std_logic
- );
- end component;
-
- component t8050_wb
- generic (
- gate_port_input_g : integer := 1
- );
-
- port (
- xtal_i : in std_logic;
- reset_n_i : in std_logic;
- t0_i : in std_logic;
- t0_o : out std_logic;
- t0_dir_o : out std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- t1_i : in std_logic;
- p2_i : in std_logic_vector( 7 downto 0);
- p2_o : out std_logic_vector( 7 downto 0);
- p2l_low_imp_o : out std_logic;
- p2h_low_imp_o : out std_logic;
- p1_i : in std_logic_vector( 7 downto 0);
- p1_o : out std_logic_vector( 7 downto 0);
- p1_low_imp_o : out std_logic;
- prog_n_o : out std_logic;
- wb_cyc_o : out std_logic;
- wb_stb_o : out std_logic;
- wb_we_o : out std_logic;
- wb_adr_o : out std_logic_vector(23 downto 0);
- wb_ack_i : in std_logic;
- wb_dat_i : in std_logic_vector( 7 downto 0);
- wb_dat_o : out std_logic_vector( 7 downto 0)
- );
- end component;
-
- component t8048
- port (
- xtal_i : in std_logic;
- reset_n_i : in std_logic;
- t0_b : inout std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- db_b : inout std_logic_vector( 7 downto 0);
- t1_i : in std_logic;
- p2_b : inout std_logic_vector( 7 downto 0);
- p1_b : inout std_logic_vector( 7 downto 0);
- prog_n_o : out std_logic
- );
- end component;
-
- component t8039
- port (
- xtal_i : in std_logic;
- reset_n_i : in std_logic;
- t0_b : inout std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- db_b : inout std_logic_vector( 7 downto 0);
- t1_i : in std_logic;
- p2_b : inout std_logic_vector( 7 downto 0);
- p1_b : inout std_logic_vector( 7 downto 0);
- prog_n_o : out std_logic
- );
- end component;
-
-end t48_system_comp_pack;
t48/rel_1_2/rtl/vhdl/system/t48_system_comp_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t48_rom-struct-a.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t48_rom-struct-a.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t48_rom-struct-a.vhd (nonexistent)
@@ -1,65 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8x48 ROM
---
--- $Id$
---
--- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-architecture struct of t48_rom is
-
- component rom_t48
- port(
- Clk : in std_logic;
- A : in std_logic_vector(9 downto 0);
- D : out std_logic_vector(7 downto 0)
- );
- end component;
-
-begin
-
- rom_b : rom_t48
- port map (
- Clk => clk_i,
- A => rom_addr_i,
- D => rom_data_o
- );
-
-end struct;
t48/rel_1_2/rtl/vhdl/system/t48_rom-struct-a.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t49_rom-struct-a.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t49_rom-struct-a.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t49_rom-struct-a.vhd (nonexistent)
@@ -1,65 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8x49 ROM
---
--- $Id$
---
--- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-architecture struct of t49_rom is
-
- component rom_t49
- port(
- Clk : in std_logic;
- A : in std_logic_vector(10 downto 0);
- D : out std_logic_vector( 7 downto 0)
- );
- end component;
-
-begin
-
- rom_b : rom_t49
- port map (
- Clk => clk_i,
- A => rom_addr_i,
- D => rom_data_o
- );
-
-end struct;
t48/rel_1_2/rtl/vhdl/system/t49_rom-struct-a.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/generic_ram_ena.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/generic_ram_ena.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/generic_ram_ena.vhd (nonexistent)
@@ -1,100 +0,0 @@
--------------------------------------------------------------------------------
---
--- Parametrizable, generic RAM with enable.
---
--- $Id$
---
--- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity generic_ram_ena is
-
- generic (
- addr_width_g : integer := 10;
- data_width_g : integer := 8
- );
- port (
- clk_i : in std_logic;
- a_i : in std_logic_vector(addr_width_g-1 downto 0);
- we_i : in std_logic;
- ena_i : in std_logic;
- d_i : in std_logic_vector(data_width_g-1 downto 0);
- d_o : out std_logic_vector(data_width_g-1 downto 0)
- );
-
-end generic_ram_ena;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-architecture rtl of generic_ram_ena is
-
- type mem_t is array (natural range 0 to 2**addr_width_g-1) of
- std_logic_vector(d_i'range);
- signal mem_q : mem_t
- -- pragma translate_off
- := (others => (others => '0'))
- -- pragma translate_on
- ;
- signal a_q : std_logic_vector(a_i'range);
-
-begin
-
- mem: process (clk_i)
- begin
-
- if clk_i'event and clk_i = '1' then
- if ena_i = '1' then
- if we_i = '1' then
- mem_q(to_integer(unsigned(a_i))) <= d_i;
- end if;
-
- a_q <= a_i;
- end if;
-
- end if;
- end process mem;
-
- d_o <= mem_q(to_integer(unsigned(a_q)));
-
-end rtl;
t48/rel_1_2/rtl/vhdl/system/generic_ram_ena.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t48_rom-struct-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t48_rom-struct-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t48_rom-struct-c.vhd (nonexistent)
@@ -1,23 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8x48 ROM
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_rom_struct_c0 of t48_rom is
-
- for struct
-
- for rom_b: rom_t48
- use configuration work.rom_t48_rtl_c0;
- end for;
-
- end for;
-
-end t48_rom_struct_c0;
t48/rel_1_2/rtl/vhdl/system/t48_rom-struct-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t49_rom-struct-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t49_rom-struct-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t49_rom-struct-c.vhd (nonexistent)
@@ -1,23 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8x49 ROM
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t49_rom_struct_c0 of t49_rom is
-
- for struct
-
- for rom_b: rom_t49
- use configuration work.rom_t49_rtl_c0;
- end for;
-
- end for;
-
-end t49_rom_struct_c0;
t48/rel_1_2/rtl/vhdl/system/t49_rom-struct-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t8039_notri.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t8039_notri.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t8039_notri.vhd (nonexistent)
@@ -1,204 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8039 Microcontroller System
--- 8039 toplevel without tri-states
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t8039_notri is
-
- generic (
- gate_port_input_g : integer := 1
- );
-
- port (
- xtal_i : in std_logic;
- xtal_en_i : in std_logic;
- reset_n_i : in std_logic;
- t0_i : in std_logic;
- t0_o : out std_logic;
- t0_dir_o : out std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- db_i : in std_logic_vector( 7 downto 0);
- db_o : out std_logic_vector( 7 downto 0);
- db_dir_o : out std_logic;
- t1_i : in std_logic;
- p2_i : in std_logic_vector( 7 downto 0);
- p2_o : out std_logic_vector( 7 downto 0);
- p2l_low_imp_o : out std_logic;
- p2h_low_imp_o : out std_logic;
- p1_i : in std_logic_vector( 7 downto 0);
- p1_o : out std_logic_vector( 7 downto 0);
- p1_low_imp_o : out std_logic;
- prog_n_o : out std_logic
- );
-
-end t8039_notri;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-use work.t48_core_comp_pack.t48_core;
-use work.t48_core_comp_pack.generic_ram_ena;
-
-architecture struct of t8039_notri is
-
- signal xtal3_s : std_logic;
- signal dmem_addr_s : std_logic_vector( 7 downto 0);
- signal dmem_we_s : std_logic;
- signal dmem_data_from_s : std_logic_vector( 7 downto 0);
- signal dmem_data_to_s : std_logic_vector( 7 downto 0);
- signal pmem_data_s : std_logic_vector( 7 downto 0);
-
- signal p1_in_s,
- p1_out_s : std_logic_vector( 7 downto 0);
- signal p2_in_s,
- p2_out_s : std_logic_vector( 7 downto 0);
-
- signal vdd_s : std_logic;
-
-begin
-
- vdd_s <= '1';
-
- -----------------------------------------------------------------------------
- -- Check generics for valid values.
- -----------------------------------------------------------------------------
- -- pragma translate_off
- assert gate_port_input_g = 0 or gate_port_input_g = 1
- report "gate_port_input_g must be either 1 or 0!"
- severity failure;
- -- pragma translate_on
-
-
- -- no Program memory available
- pmem_data_s <= (others => '0');
-
-
- t48_core_b : t48_core
- generic map (
- xtal_div_3_g => 1,
- register_mnemonic_g => 1,
- include_port1_g => 1,
- include_port2_g => 1,
- include_bus_g => 1,
- include_timer_g => 1,
- sample_t1_state_g => 4
- )
- port map (
- xtal_i => xtal_i,
- xtal_en_i => xtal_en_i,
- reset_i => reset_n_i,
- t0_i => t0_i,
- t0_o => t0_o,
- t0_dir_o => t0_dir_o,
- int_n_i => int_n_i,
- ea_i => ea_i,
- rd_n_o => rd_n_o,
- psen_n_o => psen_n_o,
- wr_n_o => wr_n_o,
- ale_o => ale_o,
- db_i => db_i,
- db_o => db_o,
- db_dir_o => db_dir_o,
- t1_i => t1_i,
- p2_i => p2_in_s,
- p2_o => p2_out_s,
- p2l_low_imp_o => p2l_low_imp_o,
- p2h_low_imp_o => p2h_low_imp_o,
- p1_i => p1_in_s,
- p1_o => p1_out_s,
- p1_low_imp_o => p1_low_imp_o,
- prog_n_o => prog_n_o,
- clk_i => xtal_i,
- en_clk_i => xtal3_s,
- xtal3_o => xtal3_s,
- dmem_addr_o => dmem_addr_s,
- dmem_we_o => dmem_we_s,
- dmem_data_i => dmem_data_from_s,
- dmem_data_o => dmem_data_to_s,
- pmem_addr_o => open,
- pmem_data_i => pmem_data_s
- );
-
-
- -----------------------------------------------------------------------------
- -- Gate port 1 and 2 input bus with respetive output value
- -----------------------------------------------------------------------------
- gate_ports: if gate_port_input_g = 1 generate
- p1_in_s <= p1_i and p1_out_s;
- p2_in_s <= p2_i and p2_out_s;
- end generate;
-
- pass_ports: if gate_port_input_g = 0 generate
- p1_in_s <= p1_i;
- p2_in_s <= p2_i;
- end generate;
-
- p1_o <= p1_out_s;
- p2_o <= p2_out_s;
-
-
- ram_128_b : generic_ram_ena
- generic map (
- addr_width_g => 7,
- data_width_g => 8
- )
- port map (
- clk_i => xtal_i,
- a_i => dmem_addr_s(6 downto 0),
- we_i => dmem_we_s,
- ena_i => vdd_s,
- d_i => dmem_data_to_s,
- d_o => dmem_data_from_s
- );
-
-end struct;
t48/rel_1_2/rtl/vhdl/system/t8039_notri.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t8048_notri.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t8048_notri.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t8048_notri.vhd (nonexistent)
@@ -1,244 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8048 Microcontroller System
--- 8048 toplevel without tri-states
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t8048_notri is
-
- generic (
- gate_port_input_g : integer := 1
- );
-
- port (
- xtal_i : in std_logic;
- xtal_en_i : in std_logic;
- reset_n_i : in std_logic;
- t0_i : in std_logic;
- t0_o : out std_logic;
- t0_dir_o : out std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- db_i : in std_logic_vector( 7 downto 0);
- db_o : out std_logic_vector( 7 downto 0);
- db_dir_o : out std_logic;
- t1_i : in std_logic;
- p2_i : in std_logic_vector( 7 downto 0);
- p2_o : out std_logic_vector( 7 downto 0);
- p2l_low_imp_o : out std_logic;
- p2h_low_imp_o : out std_logic;
- p1_i : in std_logic_vector( 7 downto 0);
- p1_o : out std_logic_vector( 7 downto 0);
- p1_low_imp_o : out std_logic;
- prog_n_o : out std_logic
- );
-
-end t8048_notri;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-use work.t48_core_comp_pack.t48_core;
-use work.t48_core_comp_pack.t48_rom;
-use work.t48_core_comp_pack.generic_ram_ena;
-
-architecture struct of t8048_notri is
-
- -- Address width of internal ROM
- constant rom_addr_width_c : natural := 10;
-
- signal xtal3_s : std_logic;
- signal dmem_addr_s : std_logic_vector( 7 downto 0);
- signal dmem_we_s : std_logic;
- signal dmem_data_from_s : std_logic_vector( 7 downto 0);
- signal dmem_data_to_s : std_logic_vector( 7 downto 0);
- signal pmem_addr_s : std_logic_vector(11 downto 0);
- signal pmem_data_s : std_logic_vector( 7 downto 0);
-
- signal ea_s : std_logic;
-
- signal p1_in_s,
- p1_out_s : std_logic_vector( 7 downto 0);
- signal p2_in_s,
- p2_out_s : std_logic_vector( 7 downto 0);
-
- signal vdd_s : std_logic;
-
-begin
-
- vdd_s <= '1';
-
- -----------------------------------------------------------------------------
- -- Check generics for valid values.
- -----------------------------------------------------------------------------
- -- pragma translate_off
- assert gate_port_input_g = 0 or gate_port_input_g = 1
- report "gate_port_input_g must be either 1 or 0!"
- severity failure;
- -- pragma translate_on
-
-
- t48_core_b : t48_core
- generic map (
- xtal_div_3_g => 1,
- register_mnemonic_g => 1,
- include_port1_g => 1,
- include_port2_g => 1,
- include_bus_g => 1,
- include_timer_g => 1,
- sample_t1_state_g => 4
- )
- port map (
- xtal_i => xtal_i,
- xtal_en_i => xtal_en_i,
- reset_i => reset_n_i,
- t0_i => t0_i,
- t0_o => t0_o,
- t0_dir_o => t0_dir_o,
- int_n_i => int_n_i,
- ea_i => ea_s,
- rd_n_o => rd_n_o,
- psen_n_o => psen_n_o,
- wr_n_o => wr_n_o,
- ale_o => ale_o,
- db_i => db_i,
- db_o => db_o,
- db_dir_o => db_dir_o,
- t1_i => t1_i,
- p2_i => p2_in_s,
- p2_o => p2_out_s,
- p2l_low_imp_o => p2l_low_imp_o,
- p2h_low_imp_o => p2h_low_imp_o,
- p1_i => p1_in_s,
- p1_o => p1_out_s,
- p1_low_imp_o => p1_low_imp_o,
- prog_n_o => prog_n_o,
- clk_i => xtal_i,
- en_clk_i => xtal3_s,
- xtal3_o => xtal3_s,
- dmem_addr_o => dmem_addr_s,
- dmem_we_o => dmem_we_s,
- dmem_data_i => dmem_data_from_s,
- dmem_data_o => dmem_data_to_s,
- pmem_addr_o => pmem_addr_s,
- pmem_data_i => pmem_data_s
- );
-
-
- -----------------------------------------------------------------------------
- -- Gate port 1 and 2 input bus with respetive output value
- -----------------------------------------------------------------------------
- gate_ports: if gate_port_input_g = 1 generate
- p1_in_s <= p1_i and p1_out_s;
- p2_in_s <= p2_i and p2_out_s;
- end generate;
-
- pass_ports: if gate_port_input_g = 0 generate
- p1_in_s <= p1_i;
- p2_in_s <= p2_i;
- end generate;
-
- p1_o <= p1_out_s;
- p2_o <= p2_out_s;
-
-
- -----------------------------------------------------------------------------
- -- Process ea
- --
- -- Purpose:
- -- Detects access to external program memory.
- -- Either by ea_i = '1' or when program memory address leaves address
- -- range of internal ROM.
- --
- ea: process (ea_i,
- pmem_addr_s)
- begin
- if ea_i = '1' then
- -- Forced external access
- ea_s <= '1';
-
- elsif unsigned(pmem_addr_s(11 downto rom_addr_width_c)) = 0 then
- -- Internal access
- ea_s <= '0';
-
- else
- -- Access to program memory out of internal range
- ea_s <= '1';
-
- end if;
-
- end process ea;
- --
- -----------------------------------------------------------------------------
-
-
- rom_1k_b : t48_rom
- port map (
- clk_i => xtal_i,
- rom_addr_i => pmem_addr_s(rom_addr_width_c-1 downto 0),
- rom_data_o => pmem_data_s
- );
-
- ram_64_b : generic_ram_ena
- generic map (
- addr_width_g => 6,
- data_width_g => 8
- )
- port map (
- clk_i => xtal_i,
- a_i => dmem_addr_s(5 downto 0),
- we_i => dmem_we_s,
- ena_i => vdd_s,
- d_i => dmem_data_to_s,
- d_o => dmem_data_from_s
- );
-
-end struct;
t48/rel_1_2/rtl/vhdl/system/t8048_notri.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/wb_master-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/wb_master-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/wb_master-c.vhd (nonexistent)
@@ -1,18 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Wishbone master module.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_wb_master_rtl_c0 of t48_wb_master is
-
- for rtl
- end for;
-
-end t48_wb_master_rtl_c0;
t48/rel_1_2/rtl/vhdl/system/wb_master-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/lpm_rom.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/lpm_rom.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/lpm_rom.vhd (nonexistent)
@@ -1,437 +0,0 @@
---------------------------------------------------------------------------
--- This VHDL file was developed by Altera Corporation. It may be
--- freely copied and/or distributed at no cost. Any persons using this
--- file for any purpose do so at their own risk, and are responsible for
--- the results of such use. Altera Corporation does not guarantee that
--- this file is complete, correct, or fit for any particular purpose.
--- NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. This notice must
--- accompany any copy of this file.
---
---------------------------------------------------------------------------
--- LPM Synthesizable Models (Support string type generic)
---------------------------------------------------------------------------
--- Version 2.0 (lpm 220) Date 01/04/00
---
--- 1. Fixed LPM_RAM_DQ, LPM_RAM_DP, LPM_RAM_IO and LPM_ROM to correctly
--- read in values from LPM_FILE (*.hex) when the DATA width is greater
--- than 16 bits.
--- 2. Explicit sign conversions are added to standard logic vector
--- comparisons in LPM_RAM_DQ, LPM_RAM_DP, LPM_RAM_IO, LPM_ROM, and
--- LPM_COMPARE.
--- 3. LPM_FIFO_DC is rewritten to have correct outputs.
--- 4. LPM_FIFO outputs zeros when nothing has been read from it, and
--- outputs LPM_NUMWORDS mod exp(2, LPM_WIDTHU) when it is full.
--- 5. Fixed LPM_DIVIDE to divide correctly.
---------------------------------------------------------------------------
--- Version 1.9 (lpm 220) Date 11/30/99
---
--- 1. Fixed UNUSED file not found problem and initialization problem
--- with LPM_RAM_DP, LPM_RAM_DQ, and LPM_RAM_IO.
--- 2. Fixed LPM_MULT when SUM port is not used.
--- 3. Fixed LPM_FIFO_DC to enable read when rdclock and wrclock rise
--- at the same time.
--- 4. Fixed LPM_COUNTER comparison problem when signed library is loaded
--- and counter is incrementing.
--- 5. Got rid of "Illegal Character" error message at time = 0 ns when
--- simulating LPM_COUNTER.
---------------------------------------------------------------------------
--- Version 1.8 (lpm 220) Date 10/25/99
---
--- 1. Some LPM_PVALUE implementations were missing, and now implemented.
--- 2. Fixed LPM_COUNTER to count correctly without conversion overflow,
--- that is, when LPM_MODULUS = 2 ** LPM_WIDTH.
--- 3. Fixed LPM_RAM_DP sync process sensitivity list to detect wraddress
--- changes.
---------------------------------------------------------------------------
--- Version 1.7 (lpm 220) Date 07/13/99
---
--- Changed LPM_RAM_IO so that it can be used to simulate both MP2 and
--- Quartus behaviour and LPM220-compliant behaviour.
---------------------------------------------------------------------------
--- Version 1.6 (lpm 220) Date 06/15/99
---
--- 1. Fixed LPM_ADD_SUB sign extension problem and subtraction bug.
--- 2. Fixed LPM_COUNTER to use LPM_MODULUS value.
--- 3. Added CIN and COUT port, and discarded EQ port in LPM_COUNTER to
--- comply with the specfication.
--- 4. Included LPM_RAM_DP, LPM_RAM_DQ, LPM_RAM_IO, LPM_ROM, LPM_FIFO, and
--- LPM_FIFO_DC; they are all initialized to 0's.
---------------------------------------------------------------------------
--- Version 1.5 (lpm 220) Date 05/10/99
---
--- Changed LPM_MODULUS from string type to integer.
---------------------------------------------------------------------------
--- Version 1.4 (lpm 220) Date 02/05/99
---
--- 1. Added LPM_DIVIDE module.
--- 2. Added CLKEN port to LPM_MUX, LPM_DECODE, LPM_ADD_SUB, LPM_MULT
--- and LPM_COMPARE
--- 3. Replaced the constants holding string with the actual string.
---------------------------------------------------------------------------
--- Version 1.3 Date 07/30/96
---
--- Modification History
---
--- 1. Changed the DEFAULT value to "UNUSED" for LPM_SVALUE, LPM_AVALUE,
--- LPM_MODULUS, and LPM_NUMWORDS, LPM_HINT,LPM_STRENGTH, LPM_DIRECTION,
--- and LPM_PVALUE
---
--- 2. Added the two dimentional port components (AND, OR, XOR, and MUX).
---------------------------------------------------------------------------
--- Excluded Functions:
---
--- LPM_FSM and LPM_TTABLE
---
---------------------------------------------------------------------------
--- Assumptions:
---
--- 1. All ports and signal types are std_logic or std_logic_vector
--- from IEEE 1164 package.
--- 2. Synopsys std_logic_arith, std_logic_unsigned, and std_logic_signed
--- package are assumed to be accessible from IEEE library.
--- 3. lpm_component_package must be accessible from library work.
--- 4. The default value of LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, LPM_HINT,
--- LPM_NUMWORDS, LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE is
--- string "UNUSED".
---------------------------------------------------------------------------
-
-library IEEE;
-use IEEE.std_logic_1164.all;
-use IEEE.numeric_std.all;
---use work.LPM_COMPONENTS.all;
-use std.textio.all;
-
-entity LPM_ROM is
- generic (LPM_WIDTH : positive;
- LPM_WIDTHAD : positive;
- LPM_NUMWORDS : natural := 0;
- LPM_ADDRESS_CONTROL : string := "REGISTERED";
- LPM_OUTDATA : string := "REGISTERED";
- LPM_FILE : string;
- LPM_TYPE : string := "LPM_ROM";
- LPM_HINT : string := "UNUSED");
- port (ADDRESS : in STD_LOGIC_VECTOR(LPM_WIDTHAD-1 downto 0);
- INCLOCK : in STD_LOGIC := '0';
- OUTCLOCK : in STD_LOGIC := '0';
- MEMENAB : in STD_LOGIC := '1';
- Q : out STD_LOGIC_VECTOR(LPM_WIDTH-1 downto 0));
-
- function int_to_str( value : integer ) return string is
- variable ivalue,index : integer;
- variable digit : integer;
- variable line_no: string(8 downto 1) := " ";
- begin
- ivalue := value;
- index := 1;
- while (ivalue > 0 ) loop
- digit := ivalue MOD 10;
- ivalue := ivalue/10;
- case digit is
- when 0 =>
- line_no(index) := '0';
- when 1 =>
- line_no(index) := '1';
- when 2 =>
- line_no(index) := '2';
- when 3 =>
- line_no(index) := '3';
- when 4 =>
- line_no(index) := '4';
- when 5 =>
- line_no(index) := '5';
- when 6 =>
- line_no(index) := '6';
- when 7 =>
- line_no(index) := '7';
- when 8 =>
- line_no(index) := '8';
- when 9 =>
- line_no(index) := '9';
- when others =>
- ASSERT FALSE
- REPORT "Illegal number!"
- SEVERITY ERROR;
- end case;
- index := index + 1;
- end loop;
- return line_no;
- end;
-
- function hex_str_to_int( str : string ) return integer is
- variable len : integer := str'length;
- variable ivalue : integer := 0;
- variable digit : integer;
- begin
- for i in len downto 1 loop
- case str(i) is
- when '0' =>
- digit := 0;
- when '1' =>
- digit := 1;
- when '2' =>
- digit := 2;
- when '3' =>
- digit := 3;
- when '4' =>
- digit := 4;
- when '5' =>
- digit := 5;
- when '6' =>
- digit := 6;
- when '7' =>
- digit := 7;
- when '8' =>
- digit := 8;
- when '9' =>
- digit := 9;
- when 'A' =>
- digit := 10;
- when 'a' =>
- digit := 10;
- when 'B' =>
- digit := 11;
- when 'b' =>
- digit := 11;
- when 'C' =>
- digit := 12;
- when 'c' =>
- digit := 12;
- when 'D' =>
- digit := 13;
- when 'd' =>
- digit := 13;
- when 'E' =>
- digit := 14;
- when 'e' =>
- digit := 14;
- when 'F' =>
- digit := 15;
- when 'f' =>
- digit := 15;
- when others =>
- ASSERT FALSE
- REPORT "Illegal character "& str(i) & "in Intel Hex File! "
- SEVERITY ERROR;
- end case;
- ivalue := ivalue * 16 + digit;
- end loop;
- return ivalue;
- end;
-
- procedure Shrink_line(L : inout LINE; pos : in integer) is
- subtype nstring is string(1 to pos);
- variable stmp : nstring;
- begin
- if pos >= 1 then
- read(l, stmp);
- end if;
- end;
-
-end LPM_ROM;
-
-architecture LPM_SYN of lpm_rom is
-
---type lpm_memory is array(lpm_numwords-1 downto 0) of std_logic_vector(lpm_width-1 downto 0);
-type lpm_memory is array(integer range (2**lpm_widthad)-1 downto 0) of std_logic_vector(lpm_width-1 downto 0);
-
-signal q2, q_tmp, q_reg : std_logic_vector(lpm_width-1 downto 0);
-signal address_tmp, address_reg : std_logic_vector(lpm_widthad-1 downto 0);
-
-begin
-
- enable_mem: process(memenab, q2)
- begin
- if (memenab = '1') then
- q <= q2;
- else
- q <= (OTHERS => 'Z');
- end if;
- end process;
-
- sync: process(address, address_reg, q_tmp, q_reg)
- begin
- if (lpm_address_control = "REGISTERED") then
- address_tmp <= address_reg;
- else
- address_tmp <= address;
- end if;
- if (lpm_outdata = "REGISTERED") then
- q2 <= q_reg;
- else
- q2 <= q_tmp;
- end if;
- end process;
-
- input_reg: process (inclock)
- begin
- if inclock'event and inclock = '1' then
- address_reg <= address;
- end if;
- end process;
-
- output_reg: process (outclock)
- begin
- if outclock'event and outclock = '1' then
- q_reg <= q_tmp;
- end if;
- end process;
-
- memory: process(memenab, address_tmp)
- variable mem_data : lpm_memory;
- variable mem_data_tmp : integer := 0;
- variable mem_init: boolean := false;
- variable i, j, k, lineno : integer := 0;
- variable buf: line ;
- variable booval: boolean ;
- FILE mem_data_file: TEXT IS IN LPM_FILE;
- variable base, byte, rec_type, datain, addr, checksum: string(2 downto 1);
- variable startadd: string(4 downto 1);
- variable ibase: integer := 0;
- variable ibyte: integer := 0;
- variable istartadd: integer := 0;
- variable check_sum_vec, check_sum_vec_tmp: unsigned(7 downto 0);
- begin
- -- INITIALIZE --
- if NOT(mem_init) then
- -- INITIALIZE TO 0 --
- for i in mem_data'LOW to mem_data'HIGH loop
- mem_data(i) := (OTHERS => '0');
- end loop;
-
- if (LPM_FILE = "UNUSED") then
- ASSERT FALSE
- REPORT "Initialization file not found!"
- SEVERITY ERROR;
- else
- WHILE NOT ENDFILE(mem_data_file) loop
- booval := true;
- READLINE(mem_data_file, buf);
- lineno := lineno + 1;
- check_sum_vec := (OTHERS => '0');
- if (buf(buf'LOW) = ':') then
- i := 1;
- shrink_line(buf, i);
- READ(L=>buf, VALUE=>byte, good=>booval);
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format!"
- SEVERITY ERROR;
- end if;
- ibyte := hex_str_to_int(byte);
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(ibyte, 8);
- READ(L=>buf, VALUE=>startadd, good=>booval);
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format! "
- SEVERITY ERROR;
- end if;
- istartadd := hex_str_to_int(startadd);
- addr(2) := startadd(4);
- addr(1) := startadd(3);
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(hex_str_to_int(addr), check_sum_vec'length);
- addr(2) := startadd(2);
- addr(1) := startadd(1);
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(hex_str_to_int(addr), check_sum_vec'length);
- READ(L=>buf, VALUE=>rec_type, good=>booval);
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format! "
- SEVERITY ERROR;
- end if;
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(hex_str_to_int(rec_type), check_sum_vec'length);
- else
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format! "
- SEVERITY ERROR;
- end if;
- case rec_type is
- when "00"=> -- Data record
- i := 0;
- k := lpm_width / 8;
- if ((lpm_width MOD 8) /= 0) then
- k := k + 1;
- end if;
- -- k = no. of bytes per CAM entry.
- while (i < ibyte) loop
- mem_data_tmp := 0;
- for j in 1 to k loop
- READ(L=>buf, VALUE=>datain,good=>booval); -- read in data a byte (2 hex chars) at a time.
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format! "
- SEVERITY ERROR;
- end if;
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(hex_str_to_int(datain), check_sum_vec'length);
- mem_data_tmp := mem_data_tmp * 256 + hex_str_to_int(datain);
- end loop;
- i := i + k;
- mem_data(ibase + istartadd) := STD_LOGIC_VECTOR(to_unsigned(mem_data_tmp, lpm_width));
- istartadd := istartadd + 1;
- end loop;
- when "01"=>
- exit;
- when "02"=>
- ibase := 0;
- if (ibyte /= 2) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format for record type 02! "
- SEVERITY ERROR;
- end if;
- for i in 0 to (ibyte-1) loop
- READ(L=>buf, VALUE=>base,good=>booval);
- ibase := ibase * 256 + hex_str_to_int(base);
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format! "
- SEVERITY ERROR;
- end if;
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(hex_str_to_int(base), check_sum_vec'length);
- end loop;
- ibase := ibase * 16;
- when OTHERS =>
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal record type in Intel Hex File! "
- SEVERITY ERROR;
- end case;
- READ(L=>buf, VALUE=>checksum,good=>booval);
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Checksum is missing! "
- SEVERITY ERROR;
- end if;
-
- check_sum_vec := unsigned(not (check_sum_vec)) + 1 ;
- check_sum_vec_tmp := to_unsigned(hex_str_to_int(checksum),8);
-
- if (unsigned(check_sum_vec) /= unsigned(check_sum_vec_tmp)) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Incorrect checksum!"
- SEVERITY ERROR;
- end if;
- end loop;
- end if;
- mem_init := TRUE;
- end if;
-
- -- MEMORY FUNCTION --
- --if memenab = '1' then
- q_tmp <= mem_data(to_integer(UNSIGNED(address_tmp)));
- --else
- -- q_tmp <= (OTHERS => 'Z');
- --end if;
- end process;
-
-end LPM_SYN;
-
-
----------------------------------------------------------------------------
-
-
--- pragma translate_off
-configuration lpm_rom_c0 of lpm_rom is
-
- for lpm_syn
- end for;
-
-end lpm_rom_c0;
--- pragma translate_on
t48/rel_1_2/rtl/vhdl/system/lpm_rom.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t8039-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t8039-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t8039-c.vhd (nonexistent)
@@ -1,23 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8039 Microcontroller System
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t8039_struct_c0 of t8039 is
-
- for struct
-
- for t8039_notri_b : t8039_notri
- use configuration work.t8039_notri_struct_c0;
- end for;
-
- end for;
-
-end t8039_struct_c0;
t48/rel_1_2/rtl/vhdl/system/t8039-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t8048-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t8048-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t8048-c.vhd (nonexistent)
@@ -1,23 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8048 Microcontroller System
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t8048_struct_c0 of t8048 is
-
- for struct
-
- for t8048_notri_b : t8048_notri
- use configuration work.t8048_notri_struct_c0;
- end for;
-
- end for;
-
-end t8048_struct_c0;
t48/rel_1_2/rtl/vhdl/system/t8048-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t8050_wb.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t8050_wb.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t8050_wb.vhd (nonexistent)
@@ -1,290 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8048 Microcontroller System
--- 8050 toplevel with Wishbone interface
---
--- $Id$
---
--- Copyright (c) 2005, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t8050_wb is
-
- generic (
- gate_port_input_g : integer := 1
- );
-
- port (
- -- T48 Interface ----------------------------------------------------------
- xtal_i : in std_logic;
- reset_n_i : in std_logic;
- t0_i : in std_logic;
- t0_o : out std_logic;
- t0_dir_o : out std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- t1_i : in std_logic;
- p2_i : in std_logic_vector( 7 downto 0);
- p2_o : out std_logic_vector( 7 downto 0);
- p2l_low_imp_o : out std_logic;
- p2h_low_imp_o : out std_logic;
- p1_i : in std_logic_vector( 7 downto 0);
- p1_o : out std_logic_vector( 7 downto 0);
- p1_low_imp_o : out std_logic;
- prog_n_o : out std_logic;
- -- Wishbone Interface -----------------------------------------------------
- wb_cyc_o : out std_logic;
- wb_stb_o : out std_logic;
- wb_we_o : out std_logic;
- wb_adr_o : out std_logic_vector(23 downto 0);
- wb_ack_i : in std_logic;
- wb_dat_i : in std_logic_vector( 7 downto 0);
- wb_dat_o : out std_logic_vector( 7 downto 0)
-
- );
-
-end t8050_wb;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-use work.t48_core_comp_pack.t48_core;
-use work.t48_core_comp_pack.syn_rom;
-use work.t48_core_comp_pack.syn_ram;
-use work.t48_system_comp_pack.t48_wb_master;
-
-architecture struct of t8050_wb is
-
- -- Address width of internal ROM
- constant rom_addr_width_c : natural := 12;
-
- signal xtal3_s : std_logic;
- signal dmem_addr_s : std_logic_vector( 7 downto 0);
- signal dmem_we_s : std_logic;
- signal dmem_data_from_s : std_logic_vector( 7 downto 0);
- signal dmem_data_to_s : std_logic_vector( 7 downto 0);
- signal pmem_addr_s : std_logic_vector(11 downto 0);
- signal pmem_data_s : std_logic_vector( 7 downto 0);
-
- signal ea_s : std_logic;
-
- signal ale_s : std_logic;
- signal wr_n_s : std_logic;
- signal rd_n_s : std_logic;
- signal db_bus_to_t48,
- db_bus_from_t48 : std_logic_vector( 7 downto 0);
-
- signal wb_en_clk_s : std_logic;
- signal xtal_en_s : std_logic;
-
- signal p1_in_s,
- p1_out_s : std_logic_vector( 7 downto 0);
- signal p2_in_s,
- p2_out_s : std_logic_vector( 7 downto 0);
-
-begin
-
- -----------------------------------------------------------------------------
- -- Check generics for valid values.
- -----------------------------------------------------------------------------
- -- pragma translate_off
- assert gate_port_input_g = 0 or gate_port_input_g = 1
- report "gate_port_input_g must be either 1 or 0!"
- severity failure;
- -- pragma translate_on
-
-
- t48_core_b : t48_core
- generic map (
- xtal_div_3_g => 1,
- register_mnemonic_g => 1,
- include_port1_g => 1,
- include_port2_g => 1,
- include_bus_g => 1,
- include_timer_g => 1,
- sample_t1_state_g => 4
- )
- port map (
- xtal_i => xtal_i,
- xtal_en_i => xtal_en_s,
- reset_i => reset_n_i,
- t0_i => t0_i,
- t0_o => t0_o,
- t0_dir_o => t0_dir_o,
- int_n_i => int_n_i,
- ea_i => ea_s,
- rd_n_o => rd_n_s,
- psen_n_o => psen_n_o,
- wr_n_o => wr_n_s,
- ale_o => ale_s,
- db_i => db_bus_to_t48,
- db_o => db_bus_from_t48,
- db_dir_o => open,
- t1_i => t1_i,
- p2_i => p2_in_s,
- p2_o => p2_out_s,
- p2l_low_imp_o => p2l_low_imp_o,
- p2h_low_imp_o => p2h_low_imp_o,
- p1_i => p1_in_s,
- p1_o => p1_out_s,
- p1_low_imp_o => p1_low_imp_o,
- prog_n_o => prog_n_o,
- clk_i => xtal_i,
- en_clk_i => xtal3_s,
- xtal3_o => xtal3_s,
- dmem_addr_o => dmem_addr_s,
- dmem_we_o => dmem_we_s,
- dmem_data_i => dmem_data_from_s,
- dmem_data_o => dmem_data_to_s,
- pmem_addr_o => pmem_addr_s,
- pmem_data_i => pmem_data_s
- );
-
-
- -----------------------------------------------------------------------------
- -- Gate port 1 and 2 input bus with respetive output value
- -----------------------------------------------------------------------------
- gate_ports: if gate_port_input_g = 1 generate
- p1_in_s <= p1_i and p1_out_s;
- p2_in_s <= p2_i and p2_out_s;
- end generate;
-
- pass_ports: if gate_port_input_g = 0 generate
- p1_in_s <= p1_i;
- p2_in_s <= p2_i;
- end generate;
-
- p1_o <= p1_out_s;
- p2_o <= p2_out_s;
-
- ale_o <= ale_s;
- wr_n_o <= wr_n_s;
- rd_n_o <= rd_n_s;
-
-
- -----------------------------------------------------------------------------
- -- Generate clock enable
- -----------------------------------------------------------------------------
- xtal_en_s <= wb_en_clk_s;
-
-
- -----------------------------------------------------------------------------
- -- Process ea
- --
- -- Purpose:
- -- Detects access to external program memory.
- -- Either by ea_i = '1' or when program memory address leaves address
- -- range of internal ROM.
- --
- ea: process (ea_i,
- pmem_addr_s)
- begin
- if ea_i = '1' then
- -- Forced external access
- ea_s <= '1';
-
--- elsif unsigned(pmem_addr_s(11 downto rom_addr_width_c)) = 0 then
- else
- -- Internal access
- ea_s <= '0';
-
--- else
--- -- Access to program memory out of internal range
--- ea_s <= '1';
-
- end if;
-
- end process ea;
- --
- -----------------------------------------------------------------------------
-
-
- wb_master_b : t48_wb_master
- port map (
- xtal_i => xtal_i,
- res_i => reset_n_i,
- en_clk_o => wb_en_clk_s,
- ale_i => ale_s,
- rd_n_i => rd_n_s,
- wr_n_i => wr_n_s,
- adr_i => p2_out_s(4),
- db_bus_i => db_bus_from_t48,
- db_bus_o => db_bus_to_t48,
- wb_cyc_o => wb_cyc_o,
- wb_stb_o => wb_stb_o,
- wb_we_o => wb_we_o,
- wb_adr_o => wb_adr_o,
- wb_ack_i => wb_ack_i,
- wb_dat_i => wb_dat_i,
- wb_dat_o => wb_dat_o
- );
-
-
- rom_4k_b : syn_rom
- generic map (
- address_width_g => rom_addr_width_c
- )
- port map (
- clk_i => xtal_i,
- rom_addr_i => pmem_addr_s(rom_addr_width_c-1 downto 0),
- rom_data_o => pmem_data_s
- );
-
- ram_256_b : syn_ram
- generic map (
- address_width_g => 8
- )
- port map (
- clk_i => xtal_i,
- res_i => reset_n_i,
- ram_addr_i => dmem_addr_s(7 downto 0),
- ram_data_i => dmem_data_to_s,
- ram_we_i => dmem_we_s,
- ram_data_o => dmem_data_from_s
- );
-
-end struct;
t48/rel_1_2/rtl/vhdl/system/t8050_wb.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/lpm_ram_dq.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/lpm_ram_dq.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/lpm_ram_dq.vhd (nonexistent)
@@ -1,439 +0,0 @@
---------------------------------------------------------------------------
--- This VHDL file was developed by Altera Corporation. It may be
--- freely copied and/or distributed at no cost. Any persons using this
--- file for any purpose do so at their own risk, and are responsible for
--- the results of such use. Altera Corporation does not guarantee that
--- this file is complete, correct, or fit for any particular purpose.
--- NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. This notice must
--- accompany any copy of this file.
---
---------------------------------------------------------------------------
--- LPM Synthesizable Models (Support string type generic)
---------------------------------------------------------------------------
--- Version 2.0 (lpm 220) Date 01/04/00
---
--- 1. Fixed LPM_RAM_DQ, LPM_RAM_DP, LPM_RAM_IO and LPM_ROM to correctly
--- read in values from LPM_FILE (*.hex) when the DATA width is greater
--- than 16 bits.
--- 2. Explicit sign conversions are added to standard logic vector
--- comparisons in LPM_RAM_DQ, LPM_RAM_DP, LPM_RAM_IO, LPM_ROM, and
--- LPM_COMPARE.
--- 3. LPM_FIFO_DC is rewritten to have correct outputs.
--- 4. LPM_FIFO outputs zeros when nothing has been read from it, and
--- outputs LPM_NUMWORDS mod exp(2, LPM_WIDTHU) when it is full.
--- 5. Fixed LPM_DIVIDE to divide correctly.
---------------------------------------------------------------------------
--- Version 1.9 (lpm 220) Date 11/30/99
---
--- 1. Fixed UNUSED file not found problem and initialization problem
--- with LPM_RAM_DP, LPM_RAM_DQ, and LPM_RAM_IO.
--- 2. Fixed LPM_MULT when SUM port is not used.
--- 3. Fixed LPM_FIFO_DC to enable read when rdclock and wrclock rise
--- at the same time.
--- 4. Fixed LPM_COUNTER comparison problem when signed library is loaded
--- and counter is incrementing.
--- 5. Got rid of "Illegal Character" error message at time = 0 ns when
--- simulating LPM_COUNTER.
---------------------------------------------------------------------------
--- Version 1.8 (lpm 220) Date 10/25/99
---
--- 1. Some LPM_PVALUE implementations were missing, and now implemented.
--- 2. Fixed LPM_COUNTER to count correctly without conversion overflow,
--- that is, when LPM_MODULUS = 2 ** LPM_WIDTH.
--- 3. Fixed LPM_RAM_DP sync process sensitivity list to detect wraddress
--- changes.
---------------------------------------------------------------------------
--- Version 1.7 (lpm 220) Date 07/13/99
---
--- Changed LPM_RAM_IO so that it can be used to simulate both MP2 and
--- Quartus behaviour and LPM220-compliant behaviour.
---------------------------------------------------------------------------
--- Version 1.6 (lpm 220) Date 06/15/99
---
--- 1. Fixed LPM_ADD_SUB sign extension problem and subtraction bug.
--- 2. Fixed LPM_COUNTER to use LPM_MODULUS value.
--- 3. Added CIN and COUT port, and discarded EQ port in LPM_COUNTER to
--- comply with the specfication.
--- 4. Included LPM_RAM_DP, LPM_RAM_DQ, LPM_RAM_IO, LPM_ROM, LPM_FIFO, and
--- LPM_FIFO_DC; they are all initialized to 0's.
---------------------------------------------------------------------------
--- Version 1.5 (lpm 220) Date 05/10/99
---
--- Changed LPM_MODULUS from string type to integer.
---------------------------------------------------------------------------
--- Version 1.4 (lpm 220) Date 02/05/99
---
--- 1. Added LPM_DIVIDE module.
--- 2. Added CLKEN port to LPM_MUX, LPM_DECODE, LPM_ADD_SUB, LPM_MULT
--- and LPM_COMPARE
--- 3. Replaced the constants holding string with the actual string.
---------------------------------------------------------------------------
--- Version 1.3 Date 07/30/96
---
--- Modification History
---
--- 1. Changed the DEFAULT value to "UNUSED" for LPM_SVALUE, LPM_AVALUE,
--- LPM_MODULUS, and LPM_NUMWORDS, LPM_HINT,LPM_STRENGTH, LPM_DIRECTION,
--- and LPM_PVALUE
---
--- 2. Added the two dimentional port components (AND, OR, XOR, and MUX).
---------------------------------------------------------------------------
--- Excluded Functions:
---
--- LPM_FSM and LPM_TTABLE
---
---------------------------------------------------------------------------
--- Assumptions:
---
--- 1. All ports and signal types are std_logic or std_logic_vector
--- from IEEE 1164 package.
--- 2. Synopsys std_logic_arith, std_logic_unsigned, and std_logic_signed
--- package are assumed to be accessible from IEEE library.
--- 3. lpm_component_package must be accessible from library work.
--- 4. The default value of LPM_SVALUE, LPM_AVALUE, LPM_MODULUS, LPM_HINT,
--- LPM_NUMWORDS, LPM_STRENGTH, LPM_DIRECTION, and LPM_PVALUE is
--- string "UNUSED".
---------------------------------------------------------------------------
-
-library IEEE;
-use IEEE.std_logic_1164.all;
-use IEEE.numeric_std.all;
---use IEEE.std_logic_unsigned.all;
-use std.textio.all;
-
-entity LPM_RAM_DQ is
- generic (LPM_WIDTH : positive;
- LPM_WIDTHAD : positive;
- LPM_NUMWORDS : natural := 0;
- LPM_INDATA : string := "REGISTERED";
- LPM_ADDRESS_CONTROL: string := "REGISTERED";
- LPM_OUTDATA : string := "REGISTERED";
- LPM_FILE : string := "UNUSED";
- LPM_TYPE : string := "LPM_RAM_DQ";
- LPM_HINT : string := "UNUSED");
- port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);
- ADDRESS : in std_logic_vector(LPM_WIDTHAD-1 downto 0);
- INCLOCK : in std_logic := '0';
- OUTCLOCK : in std_logic := '0';
- WE : in std_logic;
- Q : out std_logic_vector(LPM_WIDTH-1 downto 0));
-
- function int_to_str( value : integer ) return string is
- variable ivalue,index : integer;
- variable digit : integer;
- variable line_no: string(8 downto 1) := " ";
- begin
- ivalue := value;
- index := 1;
- while (ivalue > 0) loop
- digit := ivalue MOD 10;
- ivalue := ivalue/10;
- case digit is
- when 0 =>
- line_no(index) := '0';
- when 1 =>
- line_no(index) := '1';
- when 2 =>
- line_no(index) := '2';
- when 3 =>
- line_no(index) := '3';
- when 4 =>
- line_no(index) := '4';
- when 5 =>
- line_no(index) := '5';
- when 6 =>
- line_no(index) := '6';
- when 7 =>
- line_no(index) := '7';
- when 8 =>
- line_no(index) := '8';
- when 9 =>
- line_no(index) := '9';
- when others =>
- ASSERT FALSE
- REPORT "Illegal number!"
- SEVERITY ERROR;
- end case;
- index := index + 1;
- end loop;
- return line_no;
- end;
-
- function hex_str_to_int( str : string ) return integer is
- variable len : integer := str'length;
- variable ivalue : integer := 0;
- variable digit : integer;
- begin
- for i in len downto 1 loop
- case str(i) is
- when '0' =>
- digit := 0;
- when '1' =>
- digit := 1;
- when '2' =>
- digit := 2;
- when '3' =>
- digit := 3;
- when '4' =>
- digit := 4;
- when '5' =>
- digit := 5;
- when '6' =>
- digit := 6;
- when '7' =>
- digit := 7;
- when '8' =>
- digit := 8;
- when '9' =>
- digit := 9;
- when 'A' =>
- digit := 10;
- when 'a' =>
- digit := 10;
- when 'B' =>
- digit := 11;
- when 'b' =>
- digit := 11;
- when 'C' =>
- digit := 12;
- when 'c' =>
- digit := 12;
- when 'D' =>
- digit := 13;
- when 'd' =>
- digit := 13;
- when 'E' =>
- digit := 14;
- when 'e' =>
- digit := 14;
- when 'F' =>
- digit := 15;
- when 'f' =>
- digit := 15;
- when others =>
- ASSERT FALSE
- REPORT "Illegal character "& str(i) & "in Intel Hex File! "
- SEVERITY ERROR;
- end case;
- ivalue := ivalue * 16 + digit;
- end loop;
- return ivalue;
- end;
-
- procedure Shrink_line(L : inout LINE; pos : in integer) is
- subtype nstring is string(1 to pos);
- variable stmp : nstring;
- begin
- if pos >= 1 then
- read(l, stmp);
- end if;
- end;
-
-end LPM_RAM_DQ;
-
-architecture LPM_SYN of lpm_ram_dq is
-
---type lpm_memory is array(lpm_numwords-1 downto 0) of std_logic_vector(lpm_width-1 downto 0);
-type lpm_memory is array(integer range (2**lpm_widthad)-1 downto 0) of std_logic_vector(lpm_width-1 downto 0);
-
-signal data_tmp, data_reg : std_logic_vector(lpm_width-1 downto 0);
-signal q_tmp, q_reg : std_logic_vector(lpm_width-1 downto 0) := (others => '0');
-signal address_tmp, address_reg : std_logic_vector(lpm_widthad-1 downto 0);
-signal we_tmp, we_reg : std_logic;
-
-begin
-
- sync: process(data, data_reg, address, address_reg,
- we, we_reg, q_tmp, q_reg)
- begin
- if (lpm_address_control = "REGISTERED") then
- address_tmp <= address_reg;
- we_tmp <= we_reg;
- else
- address_tmp <= address;
- we_tmp <= we;
- end if;
- if (lpm_indata = "REGISTERED") then
- data_tmp <= data_reg;
- else
- data_tmp <= data;
- end if;
- if (lpm_outdata = "REGISTERED") then
- q <= q_reg;
- else
- q <= q_tmp;
- end if;
- end process;
-
- input_reg: process (inclock)
- begin
- if inclock'event and inclock = '1' then
- data_reg <= data;
- address_reg <= address;
- we_reg <= we;
- end if;
- end process;
-
- output_reg: process (outclock)
- begin
- if outclock'event and outclock = '1' then
- q_reg <= q_tmp;
- end if;
- end process;
-
- memory: process(data_tmp, we_tmp, address_tmp)
- variable mem_data : lpm_memory;
- variable mem_data_tmp : integer := 0;
- variable mem_init: boolean := false;
- variable i,j,k,lineno: integer := 0;
- variable buf: line ;
- variable booval: boolean ;
- FILE unused_file: TEXT IS OUT "UNUSED";
- FILE mem_data_file: TEXT IS IN LPM_FILE;
- variable base, byte, rec_type, datain, addr, checksum: string(2 downto 1);
- variable startadd: string(4 downto 1);
- variable ibase: integer := 0;
- variable ibyte: integer := 0;
- variable istartadd: integer := 0;
- variable check_sum_vec, check_sum_vec_tmp: unsigned(7 downto 0);
- begin
- -- INITIALIZE --
- if NOT(mem_init) then
- -- INITIALIZE TO 0 --
- for i in mem_data'LOW to mem_data'HIGH loop
- mem_data(i) := (OTHERS => '0');
- end loop;
-
- if (LPM_FILE = "UNUSED") then
- ASSERT FALSE
- REPORT "Initialization file not found!"
- SEVERITY WARNING;
- else
- WHILE NOT ENDFILE(mem_data_file) loop
- booval := true;
- READLINE(mem_data_file, buf);
- lineno := lineno + 1;
- check_sum_vec := (OTHERS => '0');
- if (buf(buf'LOW) = ':') then
- i := 1;
- shrink_line(buf, i);
- READ(L=>buf, VALUE=>byte, good=>booval);
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format!"
- SEVERITY ERROR;
- end if;
- ibyte := hex_str_to_int(byte);
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(ibyte, check_sum_vec'length);
- READ(L=>buf, VALUE=>startadd, good=>booval);
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format! "
- SEVERITY ERROR;
- end if;
- istartadd := hex_str_to_int(startadd);
- addr(2) := startadd(4);
- addr(1) := startadd(3);
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(hex_str_to_int(addr), check_sum_vec'length);
- addr(2) := startadd(2);
- addr(1) := startadd(1);
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(hex_str_to_int(addr), check_sum_vec'length);
- READ(L=>buf, VALUE=>rec_type, good=>booval);
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format! "
- SEVERITY ERROR;
- end if;
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(hex_str_to_int(rec_type), check_sum_vec'length);
- else
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format! "
- SEVERITY ERROR;
- end if;
- case rec_type is
- when "00"=> -- Data record
- i := 0;
- k := lpm_width / 8;
- if ((lpm_width MOD 8) /= 0) then
- k := k + 1;
- end if;
- -- k = no. of bytes per CAM entry.
- while (i < ibyte) loop
- mem_data_tmp := 0;
- for j in 1 to k loop
- READ(L=>buf, VALUE=>datain,good=>booval); -- read in data a byte (2 hex chars) at a time.
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format! "
- SEVERITY ERROR;
- end if;
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(hex_str_to_int(datain), check_sum_vec'length);
- mem_data_tmp := mem_data_tmp * 256 + hex_str_to_int(datain);
- end loop;
- i := i + k;
- mem_data(ibase + istartadd) := STD_LOGIC_VECTOR(to_unsigned(mem_data_tmp, lpm_width));
- istartadd := istartadd + 1;
- end loop;
- when "01"=>
- exit;
- when "02"=>
- ibase := 0;
- if (ibyte /= 2) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format for record type 02! "
- SEVERITY ERROR;
- end if;
- for i in 0 to (ibyte-1) loop
- READ(L=>buf, VALUE=>base,good=>booval);
- ibase := ibase * 256 + hex_str_to_int(base);
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal Intel Hex Format! "
- SEVERITY ERROR;
- end if;
- check_sum_vec := unsigned(check_sum_vec) + to_unsigned(hex_str_to_int(base), check_sum_vec'length);
- end loop;
- ibase := ibase * 16;
- when OTHERS =>
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Illegal record type in Intel Hex File! "
- SEVERITY ERROR;
- end case;
- READ(L=>buf, VALUE=>checksum,good=>booval);
- if not (booval) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Checksum is missing! "
- SEVERITY ERROR;
- end if;
-
- check_sum_vec := unsigned(not (check_sum_vec)) + 1 ;
- check_sum_vec_tmp := to_unsigned(hex_str_to_int(checksum), check_sum_vec_tmp'length);
-
- if (unsigned(check_sum_vec) /= unsigned(check_sum_vec_tmp)) then
- ASSERT FALSE
- REPORT "[Line "& int_to_str(lineno) & "]:Incorrect checksum!"
- SEVERITY ERROR;
- end if;
- end loop;
- end if;
- mem_init := TRUE;
- end if;
-
- -- MEMORY FUNCTION --
- if we_tmp = '1' then
- mem_data (to_integer(unsigned(address_tmp))) := data_tmp;
- end if;
- q_tmp <= mem_data(to_integer(unsigned(address_tmp)));
- end process;
-
-end LPM_SYN;
-
-
--- pragma translate_off
-configuration lpm_ram_dq_c0 of lpm_ram_dq is
-
- for lpm_syn
- end for;
-
-end lpm_ram_dq_c0;
--- pragma translate_on
t48/rel_1_2/rtl/vhdl/system/lpm_ram_dq.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/generic_ram_ena-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/generic_ram_ena-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/generic_ram_ena-c.vhd (nonexistent)
@@ -1,18 +0,0 @@
--------------------------------------------------------------------------------
---
--- Parametrizable, generic RAM with enable.
---
--- $Id$
---
--- Copyright (c) 2006, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration generic_ram_ena_rtl_c0 of generic_ram_ena is
-
- for rtl
- end for;
-
-end generic_ram_ena_rtl_c0;
t48/rel_1_2/rtl/vhdl/system/generic_ram_ena-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t48_rom-e.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t48_rom-e.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t48_rom-e.vhd (nonexistent)
@@ -1,57 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8x48 ROM
---
--- $Id$
---
--- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t48_rom is
-
- port (
- clk_i : in std_logic;
- rom_addr_i : in std_logic_vector(9 downto 0);
- rom_data_o : out std_logic_vector(7 downto 0)
- );
-
-end t48_rom;
t48/rel_1_2/rtl/vhdl/system/t48_rom-e.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t49_rom-e.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t49_rom-e.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t49_rom-e.vhd (nonexistent)
@@ -1,57 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8x49 ROM
---
--- $Id$
---
--- Copyright (c) 2006 Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t49_rom is
-
- port (
- clk_i : in std_logic;
- rom_addr_i : in std_logic_vector(10 downto 0);
- rom_data_o : out std_logic_vector( 7 downto 0)
- );
-
-end t49_rom;
t48/rel_1_2/rtl/vhdl/system/t49_rom-e.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t8039_notri-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t8039_notri-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t8039_notri-c.vhd (nonexistent)
@@ -1,28 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8039 Microcontroller System
--- 8039 toplevel without tri-states
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t8039_notri_struct_c0 of t8039_notri is
-
- for struct
-
- for ram_128_b : generic_ram_ena
- use configuration work.generic_ram_ena_rtl_c0;
- end for;
-
- for t48_core_b : t48_core
- use configuration work.t48_core_struct_c0;
- end for;
-
- end for;
-
-end t8039_notri_struct_c0;
t48/rel_1_2/rtl/vhdl/system/t8039_notri-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t8048_notri-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t8048_notri-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t8048_notri-c.vhd (nonexistent)
@@ -1,31 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8048 Microcontroller System
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t8048_notri_struct_c0 of t8048_notri is
-
- for struct
-
- for rom_1k_b : t48_rom
- use configuration work.t48_rom_lpm_c0;
- end for;
-
- for ram_64_b : generic_ram_ena
- use configuration work.generic_ram_ena_rtl_c0;
- end for;
-
- for t48_core_b : t48_core
- use configuration work.t48_core_struct_c0;
- end for;
-
- end for;
-
-end t8048_notri_struct_c0;
t48/rel_1_2/rtl/vhdl/system/t8048_notri-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/wb_master.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/wb_master.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/wb_master.vhd (nonexistent)
@@ -1,249 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Wishbone master module.
---
--- $Id$
---
--- Copyright (c) 2005, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
---
--- Short description:
--- This design implements a simple Wishbone bus master. It connects to the
--- BUS interface of the T48 uController core.
---
--- The CPU clock is suppressed with en_clk_o to stall the CPU until the
--- acknowledge signal from the peripheral is detected.
---
--- The adr_i input selects between configuration and Wishbone address range:
--- 1 - configuration range
--- 0 - Wishbone range
---
--- When configuration range is selected, two address register are accessible.
--- 000h -> adr1
--- 001h -> adr2
--- These registers can be read and written with movx to their addresses.
---
--- When Wishbone range is selected, all movx generate Wishbone bus cycles
--- (either read or write) at following address:
--- Wishbone address = adr2 & adr1 & address of movx
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.all;
-
-entity t48_wb_master is
-
- port (
- xtal_i : in std_logic;
- res_i : in std_logic;
- en_clk_o : out std_logic;
- -- T48 Interface ----------------------------------------------------------
- ale_i : in std_logic;
- rd_n_i : in std_logic;
- wr_n_i : in std_logic;
- adr_i : in std_logic;
- db_bus_i : in std_logic_vector( 7 downto 0);
- db_bus_o : out std_logic_vector( 7 downto 0);
- -- Wishbone Interface -----------------------------------------------------
- wb_cyc_o : out std_logic;
- wb_stb_o : out std_logic;
- wb_we_o : out std_logic;
- wb_adr_o : out std_logic_vector(23 downto 0);
- wb_ack_i : in std_logic;
- wb_dat_i : in std_logic_vector( 7 downto 0);
- wb_dat_o : out std_logic_vector( 7 downto 0)
- );
-
-end t48_wb_master;
-
-
-architecture rtl of t48_wb_master is
-
- -----------------------------------------------------------------------------
- -- Controller FSM
- -----------------------------------------------------------------------------
- type state_t is (IDLE, CYC, WAIT_INACT);
- signal state_s,
- state_q : state_t;
-
- -----------------------------------------------------------------------------
- -- Select signals for each range
- -----------------------------------------------------------------------------
- signal sel_adr1_s,
- sel_adr2_s,
- sel_wb_s : boolean;
-
- signal wr_s,
- rd_s : boolean;
-
- signal adr_q : std_logic_vector(23 downto 0);
- signal wb_dat_q : std_logic_vector( 7 downto 0);
-
-begin
-
- -----------------------------------------------------------------------------
- -- Select signal generation
- -----------------------------------------------------------------------------
- sel_adr1_s <= adr_i = '1' and adr_q(word_t'range) = "00000000";
- sel_adr2_s <= adr_i = '1' and adr_q(word_t'range) = "00000001";
- sel_wb_s <= adr_i = '0';
-
- wr_s <= wr_n_i = '0';
- rd_s <= rd_n_i = '0';
-
-
- -----------------------------------------------------------------------------
- -- Process seq
- --
- -- Purpose:
- -- Implements the sequential elements.
- --
- seq: process (res_i, xtal_i)
- begin
- if res_i = res_active_c then
- adr_q <= (others => '0');
- wb_dat_q <= (others => '0');
- state_q <= IDLE;
-
- elsif xtal_i'event and xtal_i = clk_active_c then
- -- Address register -----------------------------------------------------
- -- update lowest address byte
- if ale_i = '1' then
- adr_q(word_t'range) <= db_bus_i;
- end if;
- -- set adr1 part
- if wr_s and sel_adr1_s then
- adr_q(word_t'length*2 - 1 downto word_t'length) <= db_bus_i;
- end if;
- -- set adr2 part
- if wr_s and sel_adr2_s then
- adr_q(word_t'length*3 - 1 downto word_t'length*2) <= db_bus_i;
- end if;
-
- -- Data from peripheral has to be saved ---------------------------------
- if wb_ack_i = '1' then
- wb_dat_q <= wb_dat_i;
- end if;
-
- -- FSM state ------------------------------------------------------------
- state_q <= state_s;
-
- end if;
- end process seq;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process fsm
- --
- -- Purpose:
- -- Implements the state transitions of the controller FSM.
- --
- fsm: process (state_q,
- wr_s,
- rd_s,
- sel_wb_s,
- wb_ack_i)
- begin
- -- default assignments
- wb_cyc_o <= '0';
- wb_stb_o <= '0';
- en_clk_o <= '1';
- state_s <= IDLE;
-
- case state_q is
- -- Idle State: Wait for read or write access ----------------------------
- when IDLE =>
- if sel_wb_s and (wr_s or rd_s) then
- state_s <= CYC;
- end if;
-
- -- WB Cycle State: Start Wishbone cycle and wait for ack ----------------
- when CYC =>
- wb_cyc_o <= '1';
- wb_stb_o <= '1';
- en_clk_o <= '0';
-
- if wb_ack_i = '1' then
- state_s <= WAIT_INACT;
- else
- state_s <= CYC;
- end if;
-
- -- Wait inact State: Wait for end of T48 access -------------------------
- when WAIT_INACT =>
- if not wr_s and not rd_s then
- state_s <= IDLE;
- else
- state_s <= WAIT_INACT;
- end if;
-
- when others =>
- null;
-
- end case;
-
- end process fsm;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output multiplexer
- -----------------------------------------------------------------------------
- db_bus_o <= adr_q(word_t'length*2 - 1 downto word_t'length)
- when sel_adr1_s else
- adr_q(word_t'length*3 - 1 downto word_t'length*2)
- when sel_adr2_s else
- wb_dat_q;
-
-
- -----------------------------------------------------------------------------
- -- Output mapping
- -----------------------------------------------------------------------------
- wb_adr_o <= adr_q;
- wb_dat_o <= db_bus_i;
- wb_we_o <= '1'
- when wr_s and sel_wb_s else
- '0';
-
-end rtl;
t48/rel_1_2/rtl/vhdl/system/wb_master.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t8039.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t8039.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t8039.vhd (nonexistent)
@@ -1,182 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8039 Microcontroller System
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t8039 is
-
- port (
- xtal_i : in std_logic;
- reset_n_i : in std_logic;
- t0_b : inout std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- db_b : inout std_logic_vector( 7 downto 0);
- t1_i : in std_logic;
- p2_b : inout std_logic_vector( 7 downto 0);
- p1_b : inout std_logic_vector( 7 downto 0);
- prog_n_o : out std_logic
- );
-
-end t8039;
-
-
-use work.t48_system_comp_pack.t8039_notri;
-
-architecture struct of t8039 is
-
- signal t0_s : std_logic;
- signal t0_dir_s : std_logic;
- signal db_s : std_logic_vector( 7 downto 0);
- signal db_dir_s : std_logic;
- signal p2_s : std_logic_vector( 7 downto 0);
- signal p2l_low_imp_s : std_logic;
- signal p2h_low_imp_s : std_logic;
- signal p1_s : std_logic_vector( 7 downto 0);
- signal p1_low_imp_s : std_logic;
-
- signal vdd_s : std_logic;
-
-begin
-
- vdd_s <= '1';
-
- t8039_notri_b : t8039_notri
- generic map (
- -- we don't need explicit gating of input ports
- -- this is done implicitely by the bidirectional pads
- gate_port_input_g => 0
- )
-
- port map (
- xtal_i => xtal_i,
- xtal_en_i => vdd_s,
- reset_n_i => reset_n_i,
- t0_i => t0_b,
- t0_o => t0_s,
- t0_dir_o => t0_dir_s,
- int_n_i => int_n_i,
- ea_i => ea_i,
- rd_n_o => rd_n_o,
- psen_n_o => psen_n_o,
- wr_n_o => wr_n_o,
- ale_o => ale_o,
- db_i => db_b,
- db_o => db_s,
- db_dir_o => db_dir_s,
- t1_i => t1_i,
- p2_i => p2_b,
- p2_o => p2_s,
- p2l_low_imp_o => p2l_low_imp_s,
- p2h_low_imp_o => p2h_low_imp_s,
- p1_i => p1_b,
- p1_o => p1_s,
- p1_low_imp_o => p1_low_imp_s,
- prog_n_o => prog_n_o
- );
-
- -----------------------------------------------------------------------------
- -- Process bidirs
- --
- -- Purpose:
- -- Assign bidirectional signals.
- --
- bidirs: process (t0_b, t0_s, t0_dir_s,
- db_b, db_s, db_dir_s,
- p1_b, p1_s, p1_low_imp_s,
- p2_b, p2_s, p2l_low_imp_s, p2h_low_imp_s)
-
- function port_bidir_f(port_value : in std_logic_vector;
- low_imp : in std_logic) return std_logic_vector is
- variable result_v : std_logic_vector(port_value'range);
- begin
- for idx in port_value'high downto port_value'low loop
- if low_imp = '1' then
- result_v(idx) := port_value(idx);
- elsif port_value(idx) = '0' then
- result_v(idx) := '0';
- else
- result_v(idx) := 'Z';
- end if;
- end loop;
-
- return result_v;
- end;
-
- begin
- -- Test 0 -----------------------------------------------------------------
- if t0_dir_s = '1' then
- t0_b <= t0_s;
- else
- t0_b <= 'Z';
- end if;
-
- -- Data Bus ---------------------------------------------------------------
- if db_dir_s = '1' then
- db_b <= db_s;
- else
- db_b <= (others => 'Z');
- end if;
-
- -- Port 1 -----------------------------------------------------------------
- p1_b <= port_bidir_f(port_value => p1_s,
- low_imp => p1_low_imp_s);
-
- -- Port 2 -----------------------------------------------------------------
- p2_b(3 downto 0) <= port_bidir_f(port_value => p2_s(3 downto 0),
- low_imp => p2l_low_imp_s);
- p2_b(7 downto 4) <= port_bidir_f(port_value => p2_s(7 downto 4),
- low_imp => p2h_low_imp_s);
-
- end process bidirs;
- --
- -----------------------------------------------------------------------------
-
-end struct;
t48/rel_1_2/rtl/vhdl/system/t8039.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t8048.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t8048.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t8048.vhd (nonexistent)
@@ -1,186 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8048 Microcontroller System
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-entity t8048 is
-
- port (
- xtal_i : in std_logic;
- reset_n_i : in std_logic;
- t0_b : inout std_logic;
- int_n_i : in std_logic;
- ea_i : in std_logic;
- rd_n_o : out std_logic;
- psen_n_o : out std_logic;
- wr_n_o : out std_logic;
- ale_o : out std_logic;
- db_b : inout std_logic_vector( 7 downto 0);
- t1_i : in std_logic;
- p2_b : inout std_logic_vector( 7 downto 0);
- p1_b : inout std_logic_vector( 7 downto 0);
- prog_n_o : out std_logic
- );
-
-end t8048;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-use work.t48_system_comp_pack.t8048_notri;
-
-architecture struct of t8048 is
-
- signal t0_s : std_logic;
- signal t0_dir_s : std_logic;
- signal db_s : std_logic_vector( 7 downto 0);
- signal db_dir_s : std_logic;
- signal p2_s : std_logic_vector( 7 downto 0);
- signal p2l_low_imp_s : std_logic;
- signal p2h_low_imp_s : std_logic;
- signal p1_s : std_logic_vector( 7 downto 0);
- signal p1_low_imp_s : std_logic;
-
- signal vdd_s : std_logic;
-
-begin
-
- vdd_s <= '1';
-
- t8048_notri_b : t8048_notri
- generic map (
- -- we don't need explicit gating of input ports
- -- this is done implicitely by the bidirectional pads
- gate_port_input_g => 0
- )
-
- port map (
- xtal_i => xtal_i,
- xtal_en_i => vdd_s,
- reset_n_i => reset_n_i,
- t0_i => t0_b,
- t0_o => t0_s,
- t0_dir_o => t0_dir_s,
- int_n_i => int_n_i,
- ea_i => ea_i,
- rd_n_o => rd_n_o,
- psen_n_o => psen_n_o,
- wr_n_o => wr_n_o,
- ale_o => ale_o,
- db_i => db_b,
- db_o => db_s,
- db_dir_o => db_dir_s,
- t1_i => t1_i,
- p2_i => p2_b,
- p2_o => p2_s,
- p2l_low_imp_o => p2l_low_imp_s,
- p2h_low_imp_o => p2h_low_imp_s,
- p1_i => p1_b,
- p1_o => p1_s,
- p1_low_imp_o => p1_low_imp_s,
- prog_n_o => prog_n_o
- );
-
- -----------------------------------------------------------------------------
- -- Process bidirs
- --
- -- Purpose:
- -- Assign bidirectional signals.
- --
- bidirs: process (t0_b, t0_s, t0_dir_s,
- db_b, db_s, db_dir_s,
- p1_b, p1_s, p1_low_imp_s,
- p2_b, p2_s, p2l_low_imp_s, p2h_low_imp_s)
-
- function port_bidir_f(port_value : in std_logic_vector;
- low_imp : in std_logic) return std_logic_vector is
- variable result_v : std_logic_vector(port_value'range);
- begin
- for idx in port_value'high downto port_value'low loop
- if low_imp = '1' then
- result_v(idx) := port_value(idx);
- elsif port_value(idx) = '0' then
- result_v(idx) := '0';
- else
- result_v(idx) := 'Z';
- end if;
- end loop;
-
- return result_v;
- end;
-
- begin
- -- Test 0 -----------------------------------------------------------------
- if t0_dir_s = '1' then
- t0_b <= t0_s;
- else
- t0_b <= 'Z';
- end if;
-
- -- Data Bus ---------------------------------------------------------------
- if db_dir_s = '1' then
- db_b <= db_s;
- else
- db_b <= (others => 'Z');
- end if;
-
- -- Port 1 -----------------------------------------------------------------
- p1_b <= port_bidir_f(port_value => p1_s,
- low_imp => p1_low_imp_s);
-
- -- Port 2 -----------------------------------------------------------------
- p2_b(3 downto 0) <= port_bidir_f(port_value => p2_s(3 downto 0),
- low_imp => p2l_low_imp_s);
- p2_b(7 downto 4) <= port_bidir_f(port_value => p2_s(7 downto 4),
- low_imp => p2h_low_imp_s);
-
- end process bidirs;
- --
- -----------------------------------------------------------------------------
-
-
-end struct;
t48/rel_1_2/rtl/vhdl/system/t8048.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/system/t8050_wb-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/system/t8050_wb-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/system/t8050_wb-c.vhd (nonexistent)
@@ -1,35 +0,0 @@
--------------------------------------------------------------------------------
---
--- T8048 Microcontroller System
---
--- $Id$
---
--- Copyright (c) 2005, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t8050_wb_struct_c0 of t8050_wb is
-
- for struct
-
- for rom_4k_b : syn_rom
- use configuration work.syn_rom_lpm_c0;
- end for;
-
- for ram_256_b : syn_ram
- use configuration work.syn_ram_lpm_c0;
- end for;
-
- for wb_master_b : t48_wb_master
- use configuration work.t48_wb_master_rtl_c0;
- end for;
-
- for t48_core_b : t48_core
- use configuration work.t48_core_struct_c0;
- end for;
-
- end for;
-
-end t8050_wb_struct_c0;
t48/rel_1_2/rtl/vhdl/system/t8050_wb-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/decoder.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/decoder.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/decoder.vhd (nonexistent)
@@ -1,2008 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Decoder unit.
--- It decodes the instruction opcodes and executes them.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_t;
-use work.t48_pack.mstate_t;
-use work.t48_alu_pack.alu_op_t;
-use work.t48_cond_branch_pack.all;
-use work.t48_dmem_ctrl_pack.all;
-use work.t48_pmem_ctrl_pack.all;
-
-entity t48_decoder is
-
- generic (
- -- store mnemonic in flip-flops (registered-out)
- register_mnemonic_g : integer := 1
- );
-
- port (
- -- Global Interface -------------------------------------------------------
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- xtal_i : in std_logic;
- xtal_en_i : in boolean;
- ea_i : in std_logic;
- ale_i : in boolean;
- int_n_i : in std_logic;
- t0_dir_o : out std_logic;
- -- T48 Bus Interface ------------------------------------------------------
- data_i : in word_t;
- data_o : out word_t;
- alu_write_accu_o : out boolean;
- alu_write_shadow_o : out boolean;
- alu_write_temp_reg_o : out boolean;
- alu_read_alu_o : out boolean;
- bus_write_bus_o : out boolean;
- bus_read_bus_o : out boolean;
- dm_write_dmem_addr_o : out boolean;
- dm_write_dmem_o : out boolean;
- dm_read_dmem_o : out boolean;
- p1_write_p1_o : out boolean;
- p1_read_p1_o : out boolean;
- p2_write_p2_o : out boolean;
- p2_write_exp_o : out boolean;
- p2_read_p2_o : out boolean;
- p2_read_exp_o : out boolean;
- pm_write_pcl_o : out boolean;
- pm_read_pcl_o : out boolean;
- pm_write_pch_o : out boolean;
- pm_read_pch_o : out boolean;
- pm_read_pmem_o : out boolean;
- psw_read_psw_o : out boolean;
- psw_read_sp_o : out boolean;
- psw_write_psw_o : out boolean;
- psw_write_sp_o : out boolean;
- -- ALU Interface ----------------------------------------------------------
- alu_carry_i : in std_logic;
- alu_op_o : out alu_op_t;
- alu_use_carry_o : out boolean;
- alu_da_high_o : out boolean;
- alu_accu_low_o : out boolean;
- alu_p06_temp_reg_o : out boolean;
- alu_p60_temp_reg_o : out boolean;
- alu_da_overflow_i : in boolean;
- -- BUS Interface ----------------------------------------------------------
- bus_output_pcl_o : out boolean;
- bus_bidir_bus_o : out boolean;
- -- Clock Controller Interface ---------------------------------------------
- clk_multi_cycle_o : out boolean;
- clk_assert_psen_o : out boolean;
- clk_assert_prog_o : out boolean;
- clk_assert_rd_o : out boolean;
- clk_assert_wr_o : out boolean;
- clk_mstate_i : in mstate_t;
- clk_second_cycle_i : in boolean;
- -- Conditional Branch Logic Interface -------------------------------------
- cnd_compute_take_o : out boolean;
- cnd_branch_cond_o : out branch_conditions_t;
- cnd_take_branch_i : in boolean;
- cnd_comp_value_o : out comp_value_t;
- cnd_f1_o : out std_logic;
- cnd_tf_o : out std_logic;
- -- Data Memory Controller Interface ---------------------------------------
- dm_addr_type_o : out dmem_addr_ident_t;
- -- Port 1 Interface -------------------------------------------------------
- p1_read_reg_o : out boolean;
- -- Port 2 Interface -------------------------------------------------------
- p2_read_reg_o : out boolean;
- p2_output_pch_o : out boolean;
- -- Program Memory Controller Interface ------------------------------------
- pm_inc_pc_o : out boolean;
- pm_write_pmem_addr_o : out boolean;
- pm_addr_type_o : out pmem_addr_ident_t;
- -- Program Status Word Interface ------------------------------------------
- psw_special_data_o : out std_logic;
- psw_carry_i : in std_logic;
- psw_aux_carry_i : in std_logic;
- psw_f0_i : in std_logic;
- psw_inc_stackp_o : out boolean;
- psw_dec_stackp_o : out boolean;
- psw_write_carry_o : out boolean;
- psw_write_aux_carry_o : out boolean;
- psw_write_f0_o : out boolean;
- psw_write_bs_o : out boolean;
- -- Timer Interface --------------------------------------------------------
- tim_read_timer_o : out boolean;
- tim_write_timer_o : out boolean;
- tim_start_t_o : out boolean;
- tim_start_cnt_o : out boolean;
- tim_stop_tcnt_o : out boolean;
- tim_overflow_i : in boolean
- );
-
-end t48_decoder;
-
-
-use work.t48_pack.all;
-use work.t48_alu_pack.all;
-use work.t48_decoder_pack.all;
-
-use work.t48_comp_pack.t48_int;
-
--- pragma translate_off
-use work.t48_tb_pack.tb_istrobe_s;
--- pragma translate_on
-
-architecture rtl of t48_decoder is
-
- -- Enable fixing a bug of Quartus II 4.0
- constant enable_quartus_bugfix_c : boolean := true;
-
- -- Opcode Decoder
- signal opc_multi_cycle_s : boolean;
- signal opc_read_bus_s : boolean;
- signal opc_inj_int_s : boolean;
- signal opc_opcode_q : word_t;
- signal opc_mnemonic_s : mnemonic_t;
- signal last_cycle_s : boolean;
-
- -- state translators
- signal assert_psen_s : boolean;
-
- -- branch taken handshake
- signal branch_taken_s,
- branch_taken_q : boolean;
- signal pm_inc_pc_s : boolean;
- signal pm_write_pmem_addr_s : boolean;
- -- additional signal to increment PC during CALL
- signal add_inc_pc_s : boolean;
- -- addtional signal to set PC during RET(R)
- signal add_write_pmem_addr_s : boolean;
-
- -- Flag 1
- signal clear_f1_s,
- cpl_f1_s : boolean;
- signal f1_q : std_logic;
- -- memory bank select
- signal clear_mb_s,
- set_mb_s : boolean;
- signal mb_q : std_logic;
-
- -- T0 direction selection
- signal ent0_clk_s : boolean;
- signal t0_dir_q : std_logic;
-
- signal data_s : word_t;
- signal read_dec_s : boolean;
-
- signal tf_s : std_logic;
-
- signal bus_read_bus_s : boolean;
- signal add_read_bus_s : boolean;
-
- signal dm_write_dmem_s : boolean;
-
- signal p2_output_exp_s : boolean;
-
- signal movx_first_cycle_s : boolean;
-
- -- interrupt handling
- signal jtf_executed_s : boolean;
- signal en_tcnti_s : boolean;
- signal dis_tcnti_s : boolean;
- signal en_i_s : boolean;
- signal dis_i_s : boolean;
- signal tim_int_s : boolean;
- signal retr_executed_s : boolean;
- signal int_executed_s : boolean;
- signal int_pending_s : boolean;
- signal int_in_progress_s : boolean;
-
- -- the mnemonic
- signal mnemonic_rec_s : mnemonic_rec_t;
- signal mnemonic_q : mnemonic_t;
-
- -- pragma translate_off
- signal istrobe_res_q : std_logic;
- signal istrobe_q : std_logic;
- signal injected_int_q : std_logic;
- -- pragma translate_on
-
-begin
-
- -- pragma translate_off
-
- -- Register Mnemonic --------------------------------------------------------
- assert (register_mnemonic_g = 1) or (register_mnemonic_g = 0)
- report "register_mnemonic_g must be either 1 or 0!"
- severity failure;
-
- -- pragma translate_on
-
-
- -----------------------------------------------------------------------------
- -- Opcode Decoder
- --
- mnemonic_rec_s <= decode_opcode_f(opcode => opc_opcode_q);
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process opc_regs
- --
- -- Purpose:
- -- Implements the opcode and mnemonic registers.
- --
- opc_regs: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- opc_opcode_q <= (others => '0'); -- NOP
- mnemonic_q <= MN_NOP;
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- if opc_read_bus_s then
- opc_opcode_q <= data_i;
- elsif opc_inj_int_s then
- opc_opcode_q <= "00010100";
- else
- mnemonic_q <= mnemonic_rec_s.mnemonic;
- end if;
-
- end if;
-
- end if;
-
- end process opc_regs;
- --
- opc_multi_cycle_s <= mnemonic_rec_s.multi_cycle;
- opc_mnemonic_s <= mnemonic_q
- when register_mnemonic_g = 1 else
- mnemonic_rec_s.mnemonic;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Interrupt Controller.
- -----------------------------------------------------------------------------
- int_b : t48_int
- port map (
- clk_i => clk_i,
- res_i => res_i,
- en_clk_i => en_clk_i,
- xtal_i => xtal_i,
- xtal_en_i => xtal_en_i,
- clk_mstate_i => clk_mstate_i,
- jtf_executed_i => jtf_executed_s,
- tim_overflow_i => tim_overflow_i,
- tf_o => tf_s,
- en_tcnti_i => en_tcnti_s,
- dis_tcnti_i => dis_tcnti_s,
- int_n_i => int_n_i,
- ale_i => ale_i,
- last_cycle_i => last_cycle_s,
- en_i_i => en_i_s,
- dis_i_i => dis_i_s,
- ext_int_o => open,
- tim_int_o => tim_int_s,
- retr_executed_i => retr_executed_s,
- int_executed_i => int_executed_s,
- int_pending_o => int_pending_s,
- int_in_progress_o => int_in_progress_s
- );
-
- last_cycle_s <= not opc_multi_cycle_s or
- (opc_multi_cycle_s and clk_second_cycle_i);
-
- -----------------------------------------------------------------------------
- -- Process machine_cycle
- --
- -- Purpose:
- -- Generates the control signals that are basically needed for the
- -- handling of a machine cycle.
- --
- machine_cycle: process (clk_mstate_i,
- clk_second_cycle_i,
- last_cycle_s,
- ea_i,
- assert_psen_s,
- branch_taken_q,
- int_pending_s,
- p2_output_exp_s,
- movx_first_cycle_s)
-
- variable need_address_v : boolean;
-
- begin
- -- default assignments
- clk_assert_psen_o <= false;
- pm_inc_pc_s <= false;
- pm_write_pmem_addr_s <= false;
- pm_read_pmem_o <= false;
- bus_output_pcl_o <= false;
- p2_output_pch_o <= false;
- opc_read_bus_s <= false;
- opc_inj_int_s <= false;
- bus_read_bus_s <= false;
-
- need_address_v := not clk_second_cycle_i or
- (clk_second_cycle_i and assert_psen_s);
-
- case clk_mstate_i is
- when MSTATE1 =>
- if need_address_v then
- if ea_i = '0' then
- if not int_pending_s then
- pm_read_pmem_o <= true;
- end if;
-
- else
- if not int_pending_s then
- bus_read_bus_s <= true;
- end if;
- p2_output_pch_o <= true;
- end if;
-
- end if;
-
- if not clk_second_cycle_i then
- if not int_pending_s then
- opc_read_bus_s <= true;
- else
- opc_inj_int_s <= true; -- inject interrupt call
- end if;
- end if;
-
- when MSTATE2 =>
- if need_address_v and not branch_taken_q and
- not int_pending_s then
- pm_inc_pc_s <= true;
- end if;
-
- when MSTATE3 =>
- if need_address_v then
- -- Theory of operation:
- -- Program Memory address is updated at end of State 3 (or end of
- -- State 2 in case of a RET). Address information is thus available
- -- latest with State 4.
- -- This is the time where we need information about access target
- -- (internal or external = EA). EA information needs to be stable
- -- until end of State 1.
- pm_write_pmem_addr_s <= true;
- end if;
-
- when MSTATE4 =>
- if ea_i = '1' and
- ((not clk_second_cycle_i and assert_psen_s)
- or last_cycle_s) then
- clk_assert_psen_o <= true;
- p2_output_pch_o <= true;
- bus_output_pcl_o <= true;
- end if;
-
- when MSTATE5 =>
- if ea_i = '1' and
- (need_address_v or last_cycle_s) and
- -- Suppress output of PCH when either
- -- a) expander port is driven on P2, has priority
- not p2_output_exp_s and
- -- b) first cycle of MOVX, don't disturb external access
- not movx_first_cycle_s then
- p2_output_pch_o <= true;
- end if;
-
- when others =>
- -- pragma translate_off
- assert false
- report "Unkown machine state!"
- severity error;
- -- pragma translate_on
-
- end case;
-
- end process machine_cycle;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process decode
- --
- -- Purpose:
- -- Indentifies each single instruction and steps through the related
- -- execution sequence.
- --
- decode: process (alu_carry_i,
- psw_aux_carry_i,
- alu_da_overflow_i,
- clk_mstate_i,
- clk_second_cycle_i,
- cnd_take_branch_i,
- opc_opcode_q,
- opc_mnemonic_s,
- psw_carry_i,
- psw_f0_i,
- f1_q,
- mb_q,
- tim_int_s,
- int_pending_s,
- int_in_progress_s)
-
- procedure address_indirect_3_f is
- begin
- -- apply dmem address from selected register for indirect mode
- if opc_opcode_q(3) = '0' or enable_quartus_bugfix_c then
- dm_read_dmem_o <= true;
- dm_write_dmem_addr_o <= true;
- dm_addr_type_o <= DM_PLAIN;
- end if;
- end;
-
- procedure and_or_xor_add_4_f is
- begin
- -- write dmem contents to Temp Reg
- dm_read_dmem_o <= true;
- alu_write_temp_reg_o <= true;
- end;
-
- procedure and_or_xor_add_5_f (alu_op : alu_op_t) is
- begin
- -- perform ALU operation and store in Accumulator
- alu_op_o <= alu_op;
- alu_read_alu_o <= true;
- alu_write_accu_o <= true;
- end;
-
- procedure cond_jump_c2_m1_f is
- begin
- -- store address in Program Counter low byte if branch has to
- -- be taken
--- if clk_mstate_i = MSTATE1 and cnd_take_branch_i then
- pm_write_pcl_o <= true;
- branch_taken_s <= true;
--- end if;
- end;
-
- -- intermediate value of the Program Memory Bank Flag
- variable mb_v : std_logic;
-
- begin
- -- default assignments
- data_s <= (others => '-');
- read_dec_s <= false;
- branch_taken_s <= false;
- clear_f1_s <= false;
- cpl_f1_s <= false;
- clear_mb_s <= false;
- set_mb_s <= false;
- add_inc_pc_s <= false;
- assert_psen_s <= false;
- alu_write_accu_o <= false;
- alu_write_shadow_o <= false;
- alu_write_temp_reg_o <= false;
- alu_p06_temp_reg_o <= false;
- alu_p60_temp_reg_o <= false;
- alu_read_alu_o <= false;
- bus_write_bus_o <= false;
- bus_bidir_bus_o <= false;
- dm_write_dmem_addr_o <= false;
- dm_write_dmem_s <= false;
- dm_read_dmem_o <= false;
- pm_write_pcl_o <= false;
- pm_read_pcl_o <= false;
- pm_write_pch_o <= false;
- pm_read_pch_o <= false;
- pm_addr_type_o <= PM_PC;
- psw_read_psw_o <= false;
- psw_read_sp_o <= false;
- psw_write_psw_o <= false;
- psw_write_sp_o <= false;
- alu_op_o <= ALU_NOP;
- alu_use_carry_o <= false;
- alu_da_high_o <= false;
- alu_accu_low_o <= false;
- clk_assert_prog_o <= false;
- clk_assert_rd_o <= false;
- clk_assert_wr_o <= false;
- cnd_branch_cond_o <= COND_ON_BIT;
- cnd_compute_take_o <= false;
- cnd_comp_value_o <= opc_opcode_q(7 downto 5);
- dm_addr_type_o <= DM_REG;
- tim_read_timer_o <= false;
- tim_write_timer_o <= false;
- tim_start_t_o <= false;
- tim_start_cnt_o <= false;
- tim_stop_tcnt_o <= false;
- p1_write_p1_o <= false;
- p1_read_p1_o <= false;
- p1_read_reg_o <= false;
- p2_write_p2_o <= false;
- p2_write_exp_o <= false;
- p2_read_p2_o <= false;
- p2_read_reg_o <= false;
- p2_read_exp_o <= false;
- p2_output_exp_s <= false;
- psw_special_data_o <= '0';
- psw_inc_stackp_o <= false;
- psw_dec_stackp_o <= false;
- psw_write_carry_o <= false;
- psw_write_aux_carry_o <= false;
- psw_write_f0_o <= false;
- psw_write_bs_o <= false;
- jtf_executed_s <= false;
- en_tcnti_s <= false;
- dis_tcnti_s <= false;
- en_i_s <= false;
- dis_i_s <= false;
- retr_executed_s <= false;
- int_executed_s <= false;
- add_write_pmem_addr_s <= false;
- ent0_clk_s <= false;
- add_read_bus_s <= false;
- movx_first_cycle_s <= false;
-
- -- the Program Memory Bank Flag is held low when interrupts are in progress
- -- according to the MCS-48 User's Manual
- if int_in_progress_s then
- mb_v := '0';
- else
- mb_v := mb_q;
- end if;
-
- -- prepare potential register indirect address mode
- if not clk_second_cycle_i and clk_mstate_i = MSTATE2 then
- data_s <= (others => '0');
- if opc_opcode_q(3) = '1' then
- data_s(2 downto 0) <= opc_opcode_q(2 downto 0);
- else
- data_s(2 downto 0) <= "00" & opc_opcode_q(0);
- end if;
-
- read_dec_s <= true;
- dm_write_dmem_addr_o <= true;
- dm_addr_type_o <= DM_REG;
- end if;
-
- case opc_mnemonic_s is
-
- -- Mnemonic ADD ---------------------------------------------------------
- when MN_ADD =>
- case clk_mstate_i is
- -- read RAM once for indirect address mode
- when MSTATE3 =>
- if not enable_quartus_bugfix_c or
- opc_opcode_q(3) = '0' then
- address_indirect_3_f;
- end if;
-
- -- store data from RAM to Temp Reg
- when MSTATE4 =>
- and_or_xor_add_4_f;
-
- -- perform ADD and store in Accumulator
- when MSTATE5 =>
- and_or_xor_add_5_f(alu_op => ALU_ADD);
-
- if opc_opcode_q(4) = '1' then
- alu_use_carry_o <= true;
- end if;
-
- psw_special_data_o <= alu_carry_i;
- psw_write_carry_o <= true;
- psw_write_aux_carry_o <= true;
-
- when others =>
- null;
-
- end case;
-
- -- Mnemonic ADD_A_DATA --------------------------------------------------
- when MN_ADD_A_DATA =>
- assert_psen_s <= true;
-
- if clk_second_cycle_i then
- case clk_mstate_i is
- -- write Temp Reg when contents of Program Memory is on bus
- when MSTATE1 =>
- alu_write_temp_reg_o <= true;
-
- -- perform ADD and store in Accumulator
- when MSTATE3 =>
- and_or_xor_add_5_f(alu_op => ALU_ADD);
-
- if opc_opcode_q(4) = '1' then
- alu_use_carry_o <= true;
- end if;
-
- psw_special_data_o <= alu_carry_i;
- psw_write_carry_o <= true;
- psw_write_aux_carry_o <= true;
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- -- Mnemonic ANL ---------------------------------------------------------
- when MN_ANL =>
- case clk_mstate_i is
- -- read RAM once for indirect address mode
- when MSTATE3 =>
- if not enable_quartus_bugfix_c or
- opc_opcode_q(3) = '0' then
- address_indirect_3_f;
- end if;
-
- -- store data from RAM to Temp Reg
- when MSTATE4 =>
- and_or_xor_add_4_f;
-
- -- perform AND and store in Accumulator
- when MSTATE5 =>
- and_or_xor_add_5_f(alu_op => ALU_AND);
-
- when others =>
- null;
-
- end case;
-
- -- Mnemonic ANL_A_DATA --------------------------------------------------
- when MN_ANL_A_DATA =>
- assert_psen_s <= true;
-
- if clk_second_cycle_i then
- case clk_mstate_i is
- -- write Temp Reg when contents of Program Memory is on bus
- when MSTATE1 =>
- alu_write_temp_reg_o <= true;
-
- -- perform AND and store in Accumulator
- when MSTATE3 =>
- and_or_xor_add_5_f(alu_op => ALU_AND);
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- -- Mnemonic ANL_EXT -----------------------------------------------------
- when MN_ANL_EXT =>
- assert_psen_s <= true;
-
- if not clk_second_cycle_i then
- -- read port to Temp Reg
- if clk_mstate_i = MSTATE5 then
- if opc_opcode_q(1 downto 0) = "00" then
- add_read_bus_s <= true;
- elsif opc_opcode_q(1) = '0' then
- p1_read_p1_o <= true;
- p1_read_reg_o <= true;
- else
- p2_read_p2_o <= true;
- p2_read_reg_o <= true;
- end if;
-
- alu_write_temp_reg_o <= true;
- end if;
-
- else
- case clk_mstate_i is
- -- write shadow Accumulator when contents of Program Memory is
- -- on bus
- when MSTATE1 =>
- alu_write_shadow_o <= true;
-
- -- loop shadow Accumulator through ALU to prevent update from
- -- real Accumulator
- when MSTATE2 =>
- alu_read_alu_o <= true;
- alu_write_shadow_o <= true;
-
- -- write result of AND operation back to port
- when MSTATE3 =>
- alu_op_o <= ALU_AND;
- alu_read_alu_o <= true;
-
- if opc_opcode_q(1 downto 0) = "00" then
- bus_write_bus_o <= true;
- elsif opc_opcode_q(1) = '0' then
- p1_write_p1_o <= true;
- else
- p2_write_p2_o <= true;
- end if;
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- -- Mnemonic CALL --------------------------------------------------------
- when MN_CALL =>
- assert_psen_s <= true;
-
- if not clk_second_cycle_i then
- case clk_mstate_i is
- -- read Stack Pointer and address Data Memory for low byte
- -- also increment Program Counter to point to next instruction
- when MSTATE3 =>
- psw_read_sp_o <= true;
- dm_write_dmem_addr_o <= true;
- dm_addr_type_o <= DM_STACK;
-
- -- only increment PC if this is not an injected CALL
- -- injected CALLS are not located in Program Memory,
- -- the PC points already to the instruction to be executed
- -- after the interrupt
- if not int_pending_s then
- add_inc_pc_s <= true;
- end if;
-
- -- store Program Counter low byte on stack
- when MSTATE4 =>
- pm_read_pcl_o <= true;
- dm_write_dmem_s <= true;
-
- -- store Program Counter high byte and PSW on stack
- -- increment Stack pointer
- when MSTATE5 =>
- psw_read_psw_o <= true;
- pm_read_pch_o <= true;
- dm_write_dmem_addr_o <= true;
- dm_addr_type_o <= DM_STACK_HIGH;
- dm_write_dmem_s <= true;
- psw_inc_stackp_o <= true;
-
- when others =>
- null;
-
- end case;
-
- else
- case clk_mstate_i is
- -- store address in Program Counter low byte
- when MSTATE1 =>
- pm_write_pcl_o <= true;
- branch_taken_s <= true;
- if int_pending_s then
- -- apply low part of vector address manually
- data_s <= (others => '0');
- data_s(1 downto 0) <= "11";
- if tim_int_s then
- data_s(2) <= '1';
- end if;
- read_dec_s <= true;
- end if;
-
- when MSTATE2 =>
- pm_write_pch_o <= true;
- read_dec_s <= true;
- if not int_pending_s then
- -- store high part of target address in Program Counter
- data_s <= "0000" & mb_v & opc_opcode_q(7 downto 5);
- else
- -- apply high part of vector address manually
- data_s <= (others => '0');
- int_executed_s <= true;
- end if;
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- -- Mnemonic CLR_A -------------------------------------------------------
- when MN_CLR_A =>
- -- write CLR output of ALU to Accumulator
- if clk_mstate_i = MSTATE3 then
- alu_op_o <= ALU_CLR;
- alu_read_alu_o <= true;
- alu_write_accu_o <= true;
- end if;
-
- -- Mnemonic CLR_C -------------------------------------------------------
- when MN_CLR_C =>
- -- store 0 to Carry
- if clk_mstate_i = MSTATE3 then
- psw_special_data_o <= '0';
- psw_write_carry_o <= true;
- end if;
-
- -- Mnemonic CLR_F -------------------------------------------------------
- when MN_CLR_F =>
- -- store 0 to selected flag
- if clk_mstate_i = MSTATE3 then
- if opc_opcode_q(5) = '0' then
- psw_special_data_o <= '0';
- psw_write_f0_o <= true;
- else
- clear_f1_s <= true;
- end if;
-
- end if;
-
- -- Mnemonic CPL_A -------------------------------------------------------
- when MN_CPL_A =>
- -- write CPL output of ALU to Accumulator
- if clk_mstate_i = MSTATE3 then
- alu_op_o <= ALU_CPL;
- alu_read_alu_o <= true;
- alu_write_accu_o <= true;
- end if;
-
- -- Mnemnonic CPL_C ------------------------------------------------------
- when MN_CPL_C =>
- -- write inverse of Carry to PSW
- if clk_mstate_i = MSTATE3 then
- psw_special_data_o <= not psw_carry_i;
- psw_write_carry_o <= true;
- end if;
-
- -- Mnemonic CPL_F -------------------------------------------------------
- when MN_CPL_f =>
- -- write inverse of selected flag back to flag
- if clk_mstate_i = MSTATE3 then
- if opc_opcode_q(5) = '0' then
- psw_special_data_o <= not psw_f0_i;
- psw_write_f0_o <= true;
- else
- cpl_f1_s <= true;
- end if;
-
- end if;
-
- -- Mnemonic DA ----------------------------------------------------------
- when MN_DA =>
- alu_op_o <= ALU_ADD;
-
- case clk_mstate_i is
- -- Step 1: Preload Temp Reg with 0x06
- when MSTATE3 =>
- alu_p06_temp_reg_o <= true;
-
- -- Step 2: Check Auxiliary Carry and overflow on low nibble
- -- Add 0x06 to shadow Accumulator if one is true
- when MSTATE4 =>
- if psw_aux_carry_i = '1' or alu_da_overflow_i then
- alu_read_alu_o <= true;
- alu_write_shadow_o <= true;
- end if;
-
- -- preload Temp Reg with 0x60
- alu_p60_temp_reg_o <= true;
-
- -- Step 3: Check overflow on high nibble
- -- Add 0x60 to shadow Accumulator if true and store result
- -- in Accumulator and PSW (only Carry)
- when MSTATE5 =>
- alu_da_high_o <= true;
-
- if alu_da_overflow_i then
- psw_special_data_o <= alu_carry_i;
- else
- alu_op_o <= ALU_NOP;
- psw_special_data_o <= '0';
- end if;
- alu_read_alu_o <= true;
- alu_write_accu_o <= true;
- psw_write_carry_o <= true;
-
- when others =>
- null;
-
- end case;
-
- -- Mnemonic DEC ---------------------------------------------------------
- when MN_DEC =>
- case clk_mstate_i is
- when MSTATE4 =>
- -- DEC Rr: store data from RAM to shadow Accumulator
- if opc_opcode_q(6) = '1' then
- dm_read_dmem_o <= true;
- alu_write_shadow_o <= true;
- end if;
-
- when MSTATE5 =>
- alu_op_o <= ALU_DEC;
- alu_read_alu_o <= true;
-
- if opc_opcode_q(6) = '0' then
- -- write DEC of Accumulator to Accumulator
- alu_write_accu_o <= true;
- else
- -- store DEC of shadow Accumulator back to dmem
- dm_write_dmem_s <= true;
- end if;
-
- when others =>
- null;
-
- end case;
-
- -- Mnemonic DIS_EN_I ----------------------------------------------------
- when MN_DIS_EN_I =>
- if clk_mstate_i = MSTATE3 then
- if opc_opcode_q(4) = '1' then
- dis_i_s <= true;
- else
- en_i_s <= true;
- end if;
- end if;
-
- -- Mnemonic DIS_EN_TCNTI ------------------------------------------------
- when MN_DIS_EN_TCNTI =>
- if clk_mstate_i = MSTATE3 then
- if opc_opcode_q(4) = '1' then
- dis_tcnti_s <= true;
- else
- en_tcnti_s <= true;
- end if;
- end if;
-
- -- Mnemonic DJNZ --------------------------------------------------------
- when MN_DJNZ =>
- assert_psen_s <= true;
-
- if not clk_second_cycle_i then
- case clk_mstate_i is
- -- store data from RAM to shadow Accumulator
- when MSTATE4 =>
- dm_read_dmem_o <= true;
- alu_write_shadow_o <= true;
-
- -- write DEC result of shadow Accumulator back to dmem and
- -- conditional branch logic
- when MSTATE5 =>
- alu_op_o <= ALU_DEC;
- alu_read_alu_o <= true;
- dm_write_dmem_s <= true;
-
- cnd_compute_take_o <= true;
- cnd_branch_cond_o <= COND_Z;
- cnd_comp_value_o(0) <= '0';
-
- when others =>
- null;
-
- end case;
-
- else
- -- store address in Program Counter low byte if branch has to
- -- be taken
- if clk_mstate_i = MSTATE1 and cnd_take_branch_i then
- cond_jump_c2_m1_f;
- end if;
-
- end if;
-
- -- Mnemonic ENT0_CLK ----------------------------------------------------
- when MN_ENT0_CLK =>
- if clk_mstate_i = MSTATE3 then
- ent0_clk_s <= true;
- end if;
-
- -- Mnemonic IN ----------------------------------------------------------
- when MN_IN =>
- -- read Port and store in Accumulator
- if clk_second_cycle_i and clk_mstate_i = MSTATE2 then
- alu_write_accu_o <= true;
-
- if opc_opcode_q(1) = '0' then
- p1_read_p1_o <= true;
- else
- p2_read_p2_o <= true;
- end if;
- end if;
-
- -- Mnemonic INS ---------------------------------------------------------
- when MN_INS =>
- clk_assert_rd_o <= true;
-
- -- read BUS and store in Accumulator
- if clk_second_cycle_i and clk_mstate_i = MSTATE2 then
- alu_write_accu_o <= true;
-
- add_read_bus_s <= true;
- end if;
-
- -- Mnemonic INC ---------------------------------------------------------
- when MN_INC =>
- case clk_mstate_i is
- -- read RAM once for indirect address mode
- when MSTATE3 =>
- if not enable_quartus_bugfix_c or
- opc_opcode_q(3) = '0' then
- address_indirect_3_f;
- end if;
-
- when MSTATE4 =>
- -- INC Rr; INC @ Rr: store data from RAM to shadow Accumulator
- if opc_opcode_q(3 downto 2) /= "01" then
- dm_read_dmem_o <= true;
- alu_write_shadow_o <= true;
- end if;
-
- when MSTATE5 =>
- alu_op_o <= ALU_INC;
- alu_read_alu_o <= true;
-
- if opc_opcode_q(3 downto 2) = "01" then
- -- write INC output of ALU to Accumulator
- alu_write_accu_o <= true;
- else
- -- store INC of shadow Accumulator back to dmem
- dm_write_dmem_s <= true;
- end if;
-
- when others =>
- null;
-
- end case;
-
- -- Mnemonic JBB ---------------------------------------------------------
- when MN_JBB =>
- assert_psen_s <= true;
- cnd_branch_cond_o <= COND_ON_BIT;
-
- if not clk_second_cycle_i then
- -- read Accumulator and start branch calculation
- if clk_mstate_i = MSTATE3 then
- alu_read_alu_o <= true;
- cnd_compute_take_o <= true;
- -- cnd_comp_value_o is ok by default assignment
- end if;
-
- else
- -- store address in Program Counter low byte if branch has to
- -- be taken
- if clk_mstate_i = MSTATE1 and cnd_take_branch_i then
- cond_jump_c2_m1_f;
- end if;
-
- end if;
-
- -- Mnemonic JC ----------------------------------------------------------
- when MN_JC =>
- assert_psen_s <= true;
- cnd_branch_cond_o <= COND_C;
-
- if not clk_second_cycle_i then
- -- start branch calculation
- if clk_mstate_i = MSTATE3 then
- cnd_compute_take_o <= true;
- cnd_comp_value_o(0) <= opc_opcode_q(4);
- end if;
-
- else
- -- store address in Program Counter low byte if branch has to
- -- be taken
- if clk_mstate_i = MSTATE1 and cnd_take_branch_i then
- cond_jump_c2_m1_f;
- end if;
-
- end if;
-
- -- Mnemonic JF ----------------------------------------------------------
- when MN_JF =>
- assert_psen_s <= true;
-
- if not clk_second_cycle_i then
- -- start branch calculation
- if clk_mstate_i = MSTATE3 then
- cnd_compute_take_o <= true;
- if opc_opcode_q(7) = '1' then
- -- JF0
- cnd_branch_cond_o <= COND_F0;
- else
- -- JF1
- cnd_branch_cond_o <= COND_F1;
- end if;
-
- end if;
-
- else
- -- store address in Program Counter low byte if branch has to
- -- be taken
- if clk_mstate_i = MSTATE1 and cnd_take_branch_i then
- cond_jump_c2_m1_f;
- end if;
-
- end if;
-
-
- -- Mnemonic JMP ---------------------------------------------------------
- when MN_JMP =>
- assert_psen_s <= true;
-
- if clk_second_cycle_i then
- case clk_mstate_i is
- -- store address in Program Counter low byte
- when MSTATE1 =>
- pm_write_pcl_o <= true;
- branch_taken_s <= true;
-
- -- store high part of target address in Program Counter
- when MSTATE2 =>
- data_s <= "0000" & mb_v & opc_opcode_q(7 downto 5);
- read_dec_s <= true;
- pm_write_pch_o <= true;
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- -- Mnemonic JMPP --------------------------------------------------------
- when MN_JMPP =>
- assert_psen_s <= true;
-
- if not clk_second_cycle_i then
- -- write Accumulator to Program Memory address
- -- (skip page offset update from Program Counter)
- if clk_mstate_i = MSTATE3 then
- alu_read_alu_o <= true;
- pm_addr_type_o <= PM_PAGE;
- end if;
-
- else
- if clk_mstate_i = MSTATE1 then
- -- store address in Program Counter low byte
- pm_write_pcl_o <= true;
- branch_taken_s <= true;
- end if;
-
- end if;
-
- -- Mnemonic JNI ---------------------------------------------------------
- when MN_JNI =>
- assert_psen_s <= true;
- cnd_branch_cond_o <= COND_INT;
-
- if not clk_second_cycle_i then
- -- start branch calculation
- if clk_mstate_i = MSTATE3 then
- cnd_compute_take_o <= true;
- end if;
-
- else
- -- store address in Program Counter low byte if branch has to
- -- be taken
- if clk_mstate_i = MSTATE1 and cnd_take_branch_i then
- cond_jump_c2_m1_f;
- end if;
-
- end if;
-
- -- Mnemonic JT ----------------------------------------------------------
- when MN_JT =>
- assert_psen_s <= true;
- if opc_opcode_q(6) = '0' then
- cnd_branch_cond_o <= COND_T0;
- else
- cnd_branch_cond_o <= COND_T1;
- end if;
-
- if not clk_second_cycle_i then
- -- start branch calculation
- if clk_mstate_i = MSTATE3 then
- cnd_compute_take_o <= true;
- cnd_comp_value_o(0) <= opc_opcode_q(4);
- end if;
-
- else
- -- store address in Program Counter low byte if branch has to
- -- be taken
- if clk_mstate_i = MSTATE1 and cnd_take_branch_i then
- cond_jump_c2_m1_f;
- end if;
-
- end if;
-
- -- Mnemonic JTF ---------------------------------------------------------
- when MN_JTF =>
- assert_psen_s <= true;
- cnd_branch_cond_o <= COND_TF;
-
- if not clk_second_cycle_i then
- -- start branch calculation
- if clk_mstate_i = MSTATE3 then
- cnd_compute_take_o <= true;
- jtf_executed_s <= true;
- end if;
-
- else
- -- store address in Program Counter low byte if branch has to
- -- be taken
- if clk_mstate_i = MSTATE1 and cnd_take_branch_i then
- cond_jump_c2_m1_f;
- end if;
-
- end if;
-
- -- Mnemonic JZ ----------------------------------------------------------
- when MN_JZ =>
- assert_psen_s <= true;
- cnd_branch_cond_o <= COND_Z;
-
- if not clk_second_cycle_i then
- -- read Accumulator and start branch calculation
- if clk_mstate_i = MSTATE3 then
- alu_read_alu_o <= true;
- cnd_compute_take_o <= true;
- cnd_comp_value_o(0) <= opc_opcode_q(6);
- end if;
-
- else
- -- store address in Program Counter low byte if branch has to
- -- be taken
- if clk_mstate_i = MSTATE1 and cnd_take_branch_i then
- cond_jump_c2_m1_f;
- end if;
-
- end if;
-
- -- Mnemonic MOV_A_DATA --------------------------------------------------
- when MN_MOV_A_DATA =>
- assert_psen_s <= true;
-
- -- Write Accumulator when contents of Program Memory is on bus
- -- during machine state 1 of second cycle.
- if clk_second_cycle_i and clk_mstate_i = MSTATE1 then
- alu_write_accu_o <= true;
- end if;
-
- -- Mnemonic MOV_A_RR ----------------------------------------------------
- when MN_MOV_A_RR =>
- case clk_mstate_i is
- -- read RAM once for indirect address mode
- when MSTATE3 =>
- if not enable_quartus_bugfix_c or
- opc_opcode_q(3) = '0' then
- address_indirect_3_f;
- end if;
-
- -- read data from RAM and store in Accumulator
- when MSTATE4 =>
- and_or_xor_add_4_f;
- alu_write_accu_o <= true;
-
- when others =>
- null;
-
- end case;
-
- -- Mnemonic MOV_A_PSW ---------------------------------------------------
- when MN_MOV_A_PSW =>
- if clk_mstate_i = MSTATE3 then
- psw_read_psw_o <= true;
- psw_read_sp_o <= true;
- alu_write_accu_o <= true;
- end if;
-
- -- Mnemoniv MOV_PSW_A ---------------------------------------------------
- when MN_MOV_PSW_A =>
- if clk_mstate_i = MSTATE3 then
- alu_read_alu_o <= true;
- psw_write_psw_o <= true;
- psw_write_sp_o <= true;
- end if;
-
- -- Mnemonic MOV_RR ------------------------------------------------------
- when MN_MOV_RR =>
- case clk_mstate_i is
- -- read RAM once for indirect address mode
- when MSTATE3 =>
- if not enable_quartus_bugfix_c or
- opc_opcode_q(3) = '0' then
- address_indirect_3_f;
- end if;
-
- -- write Accumulator to dmem
- when MSTATE5 =>
- alu_read_alu_o <= true;
- dm_write_dmem_s <= true;
-
- when others =>
- null;
-
- end case;
-
- -- Mnemonic MOV_RR_DATA -------------------------------------------------
- when MN_MOV_RR_DATA =>
- assert_psen_s <= true;
-
- -- read RAM once for indirect address mode
- if not clk_second_cycle_i and clk_mstate_i = MSTATE3 then
- if not enable_quartus_bugfix_c or
- opc_opcode_q(3) = '0' then
- address_indirect_3_f;
- end if;
- end if;
-
- -- Write Data Memory when contents of Program Memory is on bus
- -- during machine state 1 of second cycle.
- if clk_second_cycle_i and clk_mstate_i = MSTATE1 then
- dm_write_dmem_s <= true;
- end if;
-
- -- Mnemonic MOV_T -------------------------------------------------------
- when MN_MOV_T =>
- if clk_mstate_i = MSTATE3 then
- if opc_opcode_q(5) = '1' then
- alu_read_alu_o <= true; -- MOV T, A
- tim_write_timer_o <= true;
- else
- tim_read_timer_o <= true; -- MOV A, T
- alu_write_accu_o <= true;
- end if;
- end if;
-
- -- Mnemonic OUTD_PP_A ---------------------------------------------------
- when MN_OUTD_PP_A =>
- clk_assert_prog_o <= true;
-
- if not clk_second_cycle_i then
- case clk_mstate_i is
- -- propagate expander port number to Port 2
- when MSTATE3 =>
-
- data_s(7 downto 4) <= (others => '0');
- data_s(1 downto 0) <= opc_opcode_q(1 downto 0);
- -- decide which 8243 command to use
- case opc_opcode_q(7 downto 4) is
- when "1001" =>
- data_s(3 downto 2) <= "11"; -- ANLD command
- when "1000" =>
- data_s(3 downto 2) <= "10"; -- ORLD command
- when "0011" =>
- data_s(3 downto 2) <= "01"; -- MOVD command
- when others =>
- null;
- end case;
-
- read_dec_s <= true;
- p2_write_exp_o <= true;
-
- -- output expander port number on Port 2 while active edge of PROG
- -- write Accumulator to expander port
- when MSTATE4 =>
- p2_output_exp_s <= true;
-
- alu_read_alu_o <= true;
- p2_write_exp_o <= true;
-
- when MSTATE5 =>
- p2_output_exp_s <= true;
-
- when others =>
- null;
-
- end case;
-
- else
- -- hold expander port until inactive edge of PROG
- if clk_mstate_i = MSTATE1 or clk_mstate_i = MSTATE2 then
- p2_output_exp_s <= true;
- end if;
-
- end if;
-
- -- Mnemonic MOVD_A_PP ---------------------------------------------------
- when MN_MOVD_A_PP =>
- clk_assert_prog_o <= true;
-
- if not clk_second_cycle_i then
- case clk_mstate_i is
- -- propagate expander port number to Port 2
- when MSTATE3 =>
- data_s <= "0000" &
- "00" & -- 8243 command: read
- opc_opcode_q(1 downto 0);
- read_dec_s <= true;
- p2_write_exp_o <= true;
-
- -- output expander port number on Port 2 while active edge of PROG
- -- write 1's to expander port to set lower nibble of Port 2 to input
- when MSTATE4 =>
- p2_output_exp_s <= true;
-
- data_s(nibble_t'range) <= (others => '1');
- read_dec_s <= true;
- p2_write_exp_o <= true;
-
- when MSTATE5 =>
- p2_output_exp_s <= true;
-
- when others =>
- null;
-
- end case;
-
- else
- case clk_mstate_i is
- -- hold expander port until inactive edge of PROG
- when MSTATE1 =>
- p2_output_exp_s <= true;
-
- -- hold expander port until inactive edge of PROG
- -- write Accumulator with nibble of expander port
- when MSTATE2 =>
- p2_read_p2_o <= true;
- p2_output_exp_s <= true;
- p2_read_exp_o <= true;
- alu_write_accu_o <= true;
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- -- Mnemonic MOVP --------------------------------------------------------
- when MN_MOVP =>
- assert_psen_s <= true;
-
- if not clk_second_cycle_i then
- -- write Accumulator to Program Memory address
- -- (skip page offset update from Program Counter)
- if clk_mstate_i = MSTATE3 then
- alu_read_alu_o <= true;
- if opc_opcode_q(6) = '0' then
- pm_addr_type_o <= PM_PAGE;
- else
- pm_addr_type_o <= PM_PAGE3;
- end if;
- end if;
-
- else
- if clk_mstate_i = MSTATE1 then
- -- store data from Program Memory in Accumulator
- alu_write_accu_o <= true;
- -- trick & treat to prevent additional PC increment
- -- our branch target is the previously incremented PC!
- branch_taken_s <= true;
- end if;
-
- end if;
-
- -- Mnemonic MOVX --------------------------------------------------------
- when MN_MOVX =>
- bus_bidir_bus_o <= true;
-
- if opc_opcode_q(4) = '0' then
- clk_assert_rd_o <= true;
- else
- clk_assert_wr_o <= true;
- end if;
-
- if not clk_second_cycle_i then
- movx_first_cycle_s <= true;
- case clk_mstate_i is
- -- read dmem and put contents on BUS as external address
- when MSTATE3 =>
- dm_read_dmem_o <= true;
- bus_write_bus_o <= true;
-
- -- store contents of Accumulator to BUS
- when MSTATE5 =>
- if opc_opcode_q(4) = '1' then
- alu_read_alu_o <= true;
- bus_write_bus_o <= true;
- end if;
-
- when others =>
- null;
- end case;
-
- else
- if clk_mstate_i = MSTATE2 then
- if opc_opcode_q(4) = '0' then
- -- store contents of BUS in Accumulator
- add_read_bus_s <= true;
- alu_write_accu_o <= true;
- else
- -- store contents of Accumulator to BUS
- -- to this to keep bus in output direction
- alu_read_alu_o <= true;
- bus_write_bus_o <= true;
- end if;
- end if;
-
- end if;
-
- -- Mnemonic NOP ---------------------------------------------------------
- when MN_NOP =>
- -- nothing to do
-
- -- Mnemonic ORL ---------------------------------------------------------
- when MN_ORL =>
- case clk_mstate_i is
- -- read RAM once for indirect address mode
- when MSTATE3 =>
- if not enable_quartus_bugfix_c or
- opc_opcode_q(3) = '0' then
- address_indirect_3_f;
- end if;
-
- -- store data from RAM to Temp Reg
- when MSTATE4 =>
- and_or_xor_add_4_f;
-
- -- perform OR and store in Accumulator
- when MSTATE5 =>
- and_or_xor_add_5_f(alu_op => ALU_OR);
-
- when others =>
- null;
-
- end case;
-
- -- Mnemonic ORL_A_DATA --------------------------------------------------
- when MN_ORL_A_DATA =>
- assert_psen_s <= true;
-
- if clk_second_cycle_i then
- case clk_mstate_i is
- -- write Temp Reg when contents of Program Memory is on bus
- when MSTATE1 =>
- alu_write_temp_reg_o <= true;
-
- -- perform OR and store in Accumulator
- when MSTATE3 =>
- and_or_xor_add_5_f(alu_op => ALU_OR);
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- -- Mnemonic ORL_EXT -----------------------------------------------------
- when MN_ORL_EXT =>
- assert_psen_s <= true;
-
- if not clk_second_cycle_i then
- -- read port to Temp Reg
- if clk_mstate_i = MSTATE5 then
- if opc_opcode_q(1 downto 0) = "00" then
- add_read_bus_s <= true;
- elsif opc_opcode_q(1) = '0' then
- p1_read_p1_o <= true;
- p1_read_reg_o <= true;
- else
- p2_read_p2_o <= true;
- p2_read_reg_o <= true;
- end if;
-
- alu_write_temp_reg_o <= true;
- end if;
-
- else
- case clk_mstate_i is
- -- write shadow Accumulator when contents of Program Memory is
- -- on bus
- when MSTATE1 =>
- alu_write_shadow_o <= true;
-
- -- loop shadow Accumulator through ALU to prevent update from
- -- real Accumulator
- when MSTATE2 =>
- alu_read_alu_o <= true;
- alu_write_shadow_o <= true;
-
- -- write result of OR operation back to port
- when MSTATE3 =>
- alu_op_o <= ALU_OR;
- alu_read_alu_o <= true;
-
- if opc_opcode_q(1 downto 0) = "00" then
- bus_write_bus_o <= true;
- elsif opc_opcode_q(1) = '0' then
- p1_write_p1_o <= true;
- else
- p2_write_p2_o <= true;
- end if;
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- -- Mnemonic OUTL_EXT ----------------------------------------------------
- when MN_OUTL_EXT =>
- if opc_opcode_q(4) = '0' then
- clk_assert_wr_o <= true;
- end if;
-
- -- read Accumulator and store in Port/BUS output register
- if not clk_second_cycle_i and clk_mstate_i = MSTATE4 then
- alu_read_alu_o <= true;
-
- if opc_opcode_q(4) = '1' then
- if opc_opcode_q(1) = '0' then
- p1_write_p1_o <= true;
- else
- p2_write_p2_o <= true;
- end if;
-
- else
- bus_write_bus_o <= true;
-
- end if;
-
- end if;
-
- -- Mnemonic RET ---------------------------------------------------------
- when MN_RET =>
- if not clk_second_cycle_i then
- case clk_mstate_i is
- -- decrement Stack Pointer
- when MSTATE3 =>
- psw_dec_stackp_o <= true;
-
- -- read Stack Pointer and address Data Memory for low byte
- when MSTATE4 =>
- psw_read_sp_o <= true;
- dm_write_dmem_addr_o <= true;
- dm_addr_type_o <= DM_STACK;
-
- -- read Data Memory and store to Program Counter low
- -- prepare address to Data memory for high byte
- when MSTATE5 =>
- dm_read_dmem_o <= true;
- pm_write_pcl_o <= true;
- dm_write_dmem_addr_o <= true;
- dm_addr_type_o <= DM_STACK_HIGH;
-
- when others =>
- null;
-
- end case;
-
- else
- case clk_mstate_i is
- -- read Data Memory and store to Program Counter high and PSW
- when MSTATE1 =>
- dm_read_dmem_o <= true;
- pm_write_pch_o <= true;
- if opc_opcode_q(4) = '1' then
- psw_write_psw_o <= true;
- retr_executed_s <= true;
- end if;
-
- when MSTATE2 =>
- add_write_pmem_addr_s <= true;
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- -- Mnemonic RL ----------------------------------------------------------
- when MN_RL =>
- if clk_mstate_i = MSTATE3 then
- alu_op_o <= ALU_RL;
- alu_read_alu_o <= true;
- alu_write_accu_o <= true;
-
- if opc_opcode_q(4) = '1' then
- psw_special_data_o <= alu_carry_i;
- psw_write_carry_o <= true;
- alu_use_carry_o <= true;
- end if;
- end if;
-
- -- Mnemonic RR ----------------------------------------------------------
- when MN_RR =>
- if clk_mstate_i = MSTATE3 then
- alu_op_o <= ALU_RR;
- alu_read_alu_o <= true;
- alu_write_accu_o <= true;
-
- if opc_opcode_q(4) = '0' then
- psw_special_data_o <= alu_carry_i;
- psw_write_carry_o <= true;
- alu_use_carry_o <= true;
- end if;
- end if;
-
- -- Mnemonic SEL_MB ------------------------------------------------------
- when MN_SEL_MB =>
- if clk_mstate_i = MSTATE3 then
- if opc_opcode_q(4) = '1' then
- set_mb_s <= true;
- else
- clear_mb_s <= true;
- end if;
- end if;
-
- -- Mnemonic SEL_RB ------------------------------------------------------
- when MN_SEL_RB =>
- if clk_mstate_i = MSTATE3 then
- psw_special_data_o <= opc_opcode_q(4);
- psw_write_bs_o <= true;
- end if;
-
- -- Mnemonic STOP_TCNT ---------------------------------------------------
- when MN_STOP_TCNT =>
- if clk_mstate_i = MSTATE3 then
- tim_stop_tcnt_o <= true;
- end if;
-
- -- Mnemonic STRT --------------------------------------------------------
- when MN_STRT =>
- if clk_mstate_i = MSTATE3 then
- if opc_opcode_q(4) = '1' then
- tim_start_t_o <= true;
- else
- tim_start_cnt_o <= true;
- end if;
- end if;
-
- -- Mnemonic SWAP --------------------------------------------------------
- when MN_SWAP =>
- alu_op_o <= ALU_SWAP;
-
- if clk_mstate_i = MSTATE3 then
- alu_read_alu_o <= true;
- alu_write_accu_o <= true;
- end if;
-
- -- Mnemonic XCH ---------------------------------------------------------
- when MN_XCH =>
- case clk_mstate_i is
- -- read RAM once for indirect address mode
- when MSTATE3 =>
- if not enable_quartus_bugfix_c or
- opc_opcode_q(3) = '0' then
- address_indirect_3_f;
- end if;
-
- -- store data from RAM in Accumulator and Temp Reg
- -- Accumulator is already shadowed!
- when MSTATE4 =>
- dm_read_dmem_o <= true;
- alu_write_accu_o <= true;
- alu_write_temp_reg_o <= true;
- if opc_opcode_q(4) = '1' then
- -- XCHD
- -- only write lower nibble of Accumulator
- alu_accu_low_o <= true;
- end if;
-
- -- store data from shadow (previous) Accumulator to dmem
- when MSTATE5 =>
- dm_write_dmem_s <= true;
- alu_read_alu_o <= true;
- if opc_opcode_q(4) = '1' then
- -- XCHD
- -- concatenate shadow Accumulator and Temp Reg
- alu_op_o <= ALU_CONCAT;
- end if;
-
- when others =>
- null;
-
- end case;
-
- -- Mnemonic XRL ---------------------------------------------------------
- when MN_XRL =>
- case clk_mstate_i is
- -- read RAM once for indirect address mode
- when MSTATE3 =>
- if not enable_quartus_bugfix_c or
- opc_opcode_q(3) = '0' then
- address_indirect_3_f;
- end if;
-
- -- store data from RAM to Temp Reg
- when MSTATE4 =>
- and_or_xor_add_4_f;
-
- -- perform XOR and store in Accumulator
- when MSTATE5 =>
- and_or_xor_add_5_f(alu_op => ALU_XOR);
-
- when others =>
- null;
-
- end case;
-
- -- Mnemonic XRL_A_DATA --------------------------------------------------
- when MN_XRL_A_DATA =>
- assert_psen_s <= true;
-
- if clk_second_cycle_i then
- case clk_mstate_i is
- -- write Temp Reg when contents of Program Memory is on bus
- when MSTATE1 =>
- alu_write_temp_reg_o <= true;
-
- -- perform XOR and store in Accumulator
- when MSTATE3 =>
- and_or_xor_add_5_f(alu_op => ALU_XOR);
-
- when others =>
- null;
-
- end case;
-
- end if;
-
- -- Unimplemented mnemonic -----------------------------------------------
- when others =>
- -- this will behave like a NOP
-
- -- pragma translate_off
- assert false
- report "Mnemonic not yet implemented."
- severity warning;
- -- pragma translate_on
-
- end case;
-
- end process decode;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process regs
- --
- -- Purpose:
- -- Implements the various registes.
- --
- regs: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- branch_taken_q <= false;
- f1_q <= '0';
- mb_q <= '0';
- t0_dir_q <= '0';
- -- pragma translate_off
- istrobe_res_q <= '1';
- istrobe_q <= '0';
- injected_int_q <= '0';
- -- pragma translate_on
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- -- branch taken flag
- if branch_taken_s then
- branch_taken_q <= true;
- elsif clk_mstate_i = MSTATE5 then
- -- release flag when new instruction starts
- branch_taken_q <= false;
- end if;
-
- -- Flag 1
- if clear_f1_s then
- f1_q <= '0';
- elsif cpl_f1_s then
- f1_q <= not f1_q;
- end if;
-
- -- Memory Bank select
- if clear_mb_s then
- mb_q <= '0';
- elsif set_mb_s then
- mb_q <= '1';
- end if;
-
- -- T0 direction selection
- if ent0_clk_s then
- t0_dir_q <= '1';
- end if;
-
- -- pragma translate_off
- -- Marker for injected instruction ------------------------------------
- if opc_inj_int_s then
- injected_int_q <= '1';
- elsif clk_mstate_i = MSTATE5 and last_cycle_s then
- injected_int_q <= '0';
- end if;
-
- -- Remove istrobe after reset suppression -----------------------------
- if clk_mstate_i = MSTATE5 and last_cycle_s then
- istrobe_res_q <= '0';
- end if;
- -- pragma translate_on
-
- end if;
-
- -- pragma translate_off
- -- Instruction Strobe ---------------------------------------------------
- if clk_mstate_i = MSTATE5 and last_cycle_s and
- injected_int_q = '0' then
- if istrobe_res_q = '0' then
- istrobe_q <= '1';
- end if;
- else
- istrobe_q <= '0';
- end if;
- -- pragma translate_on
-
- end if;
-
- end process regs;
- --
- -----------------------------------------------------------------------------
-
- -- pragma translate_off
- -- assign to global signal for testbench
- tb_istrobe_s <= istrobe_q;
- -- pragma translate_on
-
-
- -----------------------------------------------------------------------------
- -- Output Mapping.
- -----------------------------------------------------------------------------
- clk_multi_cycle_o <= opc_multi_cycle_s;
- cnd_f1_o <= f1_q;
- cnd_tf_o <= tf_s;
- data_o <= data_s
- when read_dec_s else
- (others => bus_idle_level_c);
- dm_write_dmem_o <= dm_write_dmem_s and en_clk_i;
- pm_inc_pc_o <= pm_inc_pc_s or add_inc_pc_s;
- pm_write_pmem_addr_o <= pm_write_pmem_addr_s or add_write_pmem_addr_s;
- t0_dir_o <= t0_dir_q;
- bus_read_bus_o <= bus_read_bus_s or add_read_bus_s;
-
-end rtl;
t48/rel_1_2/rtl/vhdl/decoder.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/psw.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/psw.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/psw.vhd (nonexistent)
@@ -1,212 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Program Status Word (PSW).
--- Implements the PSW with its special bits.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_t;
-
-entity t48_psw is
-
- port (
- -- Global Interface -------------------------------------------------------
- clk_i : in std_logic;
- res_i : in std_logic;
- en_clk_i : in boolean;
- -- T48 Bus Interface ------------------------------------------------------
- data_i : in word_t;
- data_o : out word_t;
- read_psw_i : in boolean;
- read_sp_i : in boolean;
- write_psw_i : in boolean;
- write_sp_i : in boolean;
- -- Decoder Interface ------------------------------------------------------
- special_data_i : in std_logic;
- inc_stackp_i : in boolean;
- dec_stackp_i : in boolean;
- write_carry_i : in boolean;
- write_aux_carry_i : in boolean;
- write_f0_i : in boolean;
- write_bs_i : in boolean;
- carry_o : out std_logic;
- aux_carry_i : in std_logic;
- aux_carry_o : out std_logic;
- f0_o : out std_logic;
- bs_o : out std_logic
- );
-
-end t48_psw;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-use work.t48_pack.clk_active_c;
-use work.t48_pack.res_active_c;
-use work.t48_pack.bus_idle_level_c;
-use work.t48_pack.nibble_t;
-
-architecture rtl of t48_psw is
-
- -- special bit positions in PSW
- constant carry_c : natural := 3;
- constant aux_carry_c : natural := 2;
- constant f0_c : natural := 1;
- constant bs_c : natural := 0;
-
- -- the PSW register
- signal psw_q : nibble_t;
- -- the Stack Pointer
- signal sp_q : unsigned(2 downto 0);
-
- -- pragma translate_off
- signal psw_s : word_t;
- -- pragma translate_on
-
-begin
-
- -----------------------------------------------------------------------------
- -- Process psw_reg
- --
- -- Purpose:
- -- Implements the PSW register.
- --
- psw_reg: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- psw_q <= (others => '0');
- sp_q <= (others => '0');
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- -- T48 bus access
- if write_psw_i then
- psw_q <= data_i(7 downto 4);
- end if;
- if write_sp_i then
- sp_q <= unsigned(data_i(2 downto 0));
- end if;
-
- -- increment Stack Pointer
- if inc_stackp_i then
- sp_q <= sp_q + 1;
- end if;
- -- decrement Stack Pointer
- if dec_stackp_i then
- sp_q <= sp_q - 1;
- end if;
-
- -- access to special bits
- if write_carry_i then
- psw_q(carry_c) <= special_data_i;
- end if;
- --
- if write_aux_carry_i then
- psw_q(aux_carry_c) <= aux_carry_i;
- end if;
- --
- if write_f0_i then
- psw_q(f0_c) <= special_data_i;
- end if;
- --
- if write_bs_i then
- psw_q(bs_c) <= special_data_i;
- end if;
-
- end if;
-
- end if;
-
- end process psw_reg;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process data_out
- --
- -- Purpose:
- -- Output multiplexer for T48 Data Bus.
- --
- data_out: process (read_psw_i,
- read_sp_i,
- psw_q,
- sp_q)
- begin
- data_o <= (others => bus_idle_level_c);
-
- if read_psw_i then
- data_o(7 downto 4) <= psw_q;
- end if;
-
- if read_sp_i then
- data_o(3 downto 0) <= '1' & std_logic_vector(sp_q);
- end if;
-
- end process data_out;
- --
- -----------------------------------------------------------------------------
-
-
- -- pragma translate_off
- tb: process (psw_q, sp_q)
- begin
- psw_s(7 downto 4) <= psw_q;
- psw_s(3) <= '1';
- psw_s(2 downto 0) <= std_logic_vector(sp_q);
- end process tb;
- -- pragma translate_on
-
- -----------------------------------------------------------------------------
- -- Output mapping.
- -----------------------------------------------------------------------------
- carry_o <= psw_q(carry_c);
- aux_carry_o <= psw_q(aux_carry_c);
- f0_o <= psw_q(f0_c);
- bs_o <= psw_q(bs_c);
-
-end rtl;
t48/rel_1_2/rtl/vhdl/psw.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/int-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/int-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/int-c.vhd (nonexistent)
@@ -1,17 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Interrupt Controller.
--- It collects the interrupt sources and notifies the decoder.
---
--- $Id$
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_int_rtl_c0 of t48_int is
-
- for rtl
- end for;
-
-end t48_int_rtl_c0;
t48/rel_1_2/rtl/vhdl/int-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/alu_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/alu_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/alu_pack-p.vhd (nonexistent)
@@ -1,35 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.word_width_c;
-
-package t48_alu_pack is
-
- -----------------------------------------------------------------------------
- -- The ALU operations
- -----------------------------------------------------------------------------
- type alu_op_t is (ALU_AND, ALU_OR, ALU_XOR,
- ALU_CPL, ALU_CLR,
- ALU_RL, ALU_RR,
- ALU_SWAP,
- ALU_DEC, ALU_INC,
- ALU_ADD,
- ALU_CONCAT,
- ALU_NOP);
-
- -----------------------------------------------------------------------------
- -- The dedicated ALU arithmetic types.
- -----------------------------------------------------------------------------
- subtype alu_operand_t is std_logic_vector(word_width_c downto 0);
-
-end t48_alu_pack;
t48/rel_1_2/rtl/vhdl/alu_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/pmem_ctrl_pack-p.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/pmem_ctrl_pack-p.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/pmem_ctrl_pack-p.vhd (nonexistent)
@@ -1,20 +0,0 @@
--------------------------------------------------------------------------------
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-package t48_pmem_ctrl_pack is
-
- -----------------------------------------------------------------------------
- -- Address Type Identifier
- -----------------------------------------------------------------------------
- type pmem_addr_ident_t is (PM_PC,
- PM_PAGE,
- PM_PAGE3);
-
-end t48_pmem_ctrl_pack;
t48/rel_1_2/rtl/vhdl/pmem_ctrl_pack-p.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/db_bus-c.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/db_bus-c.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/db_bus-c.vhd (nonexistent)
@@ -1,19 +0,0 @@
--------------------------------------------------------------------------------
---
--- The BUS unit.
--- Implements the BUS port logic.
---
--- $Id$
---
--- Copyright (c) 2004, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--------------------------------------------------------------------------------
-
-configuration t48_db_bus_rtl_c0 of t48_db_bus is
-
- for rtl
- end for;
-
-end t48_db_bus_rtl_c0;
t48/rel_1_2/rtl/vhdl/db_bus-c.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/rtl/vhdl/clock_ctrl.vhd
===================================================================
--- t48/rel_1_2/rtl/vhdl/clock_ctrl.vhd (revision 296)
+++ t48/rel_1_2/rtl/vhdl/clock_ctrl.vhd (nonexistent)
@@ -1,397 +0,0 @@
--------------------------------------------------------------------------------
---
--- The Clock Control unit.
--- Clock States and Machine Cycles are generated here.
---
--- $Id$
---
--- Copyright (c) 2004, 2005, Arnim Laeuger (arniml@opencores.org)
---
--- All rights reserved
---
--- Redistribution and use in source and synthezised forms, with or without
--- modification, are permitted provided that the following conditions are met:
---
--- Redistributions of source code must retain the above copyright notice,
--- this list of conditions and the following disclaimer.
---
--- Redistributions in synthesized form must reproduce the above copyright
--- notice, this list of conditions and the following disclaimer in the
--- documentation and/or other materials provided with the distribution.
---
--- Neither the name of the author nor the names of other contributors may
--- be used to endorse or promote products derived from this software without
--- specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
--- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
--- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
--- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
--- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
--- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
--- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
--- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--- POSSIBILITY OF SUCH DAMAGE.
---
--- Please report bugs to the author, but before you do so, please
--- make sure that this is not a derivative work and that
--- you have the latest version of this file.
---
--- The latest version of this file can be found at:
--- http://www.opencores.org/cvsweb.shtml/t48/
---
--------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.t48_pack.all;
-
-entity t48_clock_ctrl is
-
- generic (
- -- divide XTAL1 by 3 to derive Clock States
- xtal_div_3_g : integer := 1
- );
-
- port (
- clk_i : in std_logic;
- xtal_i : in std_logic;
- xtal_en_i : in boolean;
- res_i : in std_logic;
- en_clk_i : in boolean;
- xtal3_o : out boolean;
- t0_o : out std_logic;
- multi_cycle_i : in boolean;
- assert_psen_i : in boolean;
- assert_prog_i : in boolean;
- assert_rd_i : in boolean;
- assert_wr_i : in boolean;
- mstate_o : out mstate_t;
- second_cycle_o : out boolean;
- ale_o : out boolean;
- psen_o : out boolean;
- prog_o : out boolean;
- rd_o : out boolean;
- wr_o : out boolean
- );
-
-end t48_clock_ctrl;
-
-
-library ieee;
-use ieee.numeric_std.all;
-
-architecture rtl of t48_clock_ctrl is
-
- -- The three XTAL1 cycles.
- signal xtal_q : unsigned(1 downto 0);
- signal xtal1_s,
- xtal2_s,
- xtal3_s : boolean;
- signal x1_s,
- x2_s,
- x3_s : std_logic;
-
- signal t0_q : std_logic;
-
-
- -- The five clock states.
- signal mstate_q : mstate_t;
-
- signal ale_q : boolean;
- signal psen_q : boolean;
- signal prog_q : boolean;
- signal rd_q : boolean;
- signal wr_q : boolean;
-
-
- -- The Machine Cycle marker.
- signal second_cycle_q : boolean;
- signal multi_cycle_q : boolean;
-
-begin
-
- -----------------------------------------------------------------------------
- -- Verify the generics
- -----------------------------------------------------------------------------
-
- -- pragma translate_off
-
- -- XTAL1 divide by 3 --------------------------------------------------------
- assert (xtal_div_3_g = 1) or (xtal_div_3_g = 0)
- report "xtal_div_3_g must be either 1 or 0!"
- severity failure;
-
- -- pragma translate_on
-
-
- -----------------------------------------------------------------------------
- -- Divide XTAL1 by 3 to derive Clock States.
- -----------------------------------------------------------------------------
- use_xtal_div: if xtal_div_3_g = 1 generate
- xtal: process (res_i, xtal_i)
- begin
- if res_i = res_active_c then
- xtal_q <= TO_UNSIGNED(0, 2);
- t0_q <= '0';
-
- elsif xtal_i'event and xtal_i = clk_active_c then
- if xtal_en_i then
- if xtal_q < 2 then
- xtal_q <= xtal_q + 1;
- else
- xtal_q <= TO_UNSIGNED(0, 2);
- end if;
-
- if xtal3_s then
- t0_q <= '1';
- else
- t0_q <= '0';
- end if;
-
- end if;
-
- end if;
- end process xtal;
-
- x1_s <= '1'
- when xtal_q = 0 and xtal_en_i else
- '0';
- x2_s <= '1'
- when xtal_q = 1 and xtal_en_i else
- '0';
- x3_s <= '1'
- when xtal_q = 2 and xtal_en_i else
- '0';
- t0_o <= t0_q;
-
- end generate;
-
- -----------------------------------------------------------------------------
- -- XTAL1 is used directly for Clock States.
- -----------------------------------------------------------------------------
- no_xtal_div: if xtal_div_3_g = 0 generate
- xtal_q <= TO_UNSIGNED(0, 2);
-
- x1_s <= '1'
- when xtal_en_i else
- '0';
- x2_s <= '1'
- when xtal_en_i else
- '0';
- x3_s <= '1'
- when xtal_en_i else
- '0';
- t0_o <= xtal_i;
-
- end generate;
-
- -- And finally the boolean flags --------------------------------------------
- xtal1_s <= to_boolean(x1_s);
- xtal2_s <= to_boolean(x2_s);
- xtal3_s <= to_boolean(x3_s);
-
-
- -----------------------------------------------------------------------------
- -- Process external_signal
- --
- -- Purpose:
- -- Control signals ALE, PSEN, PROG and RD/WR are generated here.
- --
- external_signals: process (res_i, xtal_i)
- begin
- if res_i = res_active_c then
- ale_q <= false;
- psen_q <= false;
- prog_q <= false;
- rd_q <= false;
- wr_q <= false;
-
- elsif xtal_i'event and xtal_i = clk_active_c then
-
- case mstate_q is
- when MSTATE5 =>
- -- RD, WR are set at the end of XTAL2 of first machine cycle
- if xtal2_s and not second_cycle_q then
- if assert_rd_i then
- rd_q <= true;
- end if;
- if assert_wr_i then
- wr_q <= true;
- end if;
- end if;
-
- when MSTATE1 =>
- if xtal3_s then
- psen_q <= false;
- end if;
-
- when MSTATE2 =>
- if xtal3_s then
- -- RD, WR are removed at the end of XTAL3 of second machine cycle
- rd_q <= false;
- wr_q <= false;
- -- so is PROG
- prog_q <= false;
- end if;
-
- when MSTATE3 =>
- -- ALE is set at the end of XTAL3 of every machine cycle
- if xtal3_s then
- ale_q <= true;
- end if;
-
- when MSTATE4 =>
- if xtal3_s then
- -- PSEN is set at the end of XTAL3
- if assert_psen_i then
- psen_q <= true;
- end if;
-
- end if;
-
- -- PROG is set at the end of XTAL3
- if xtal3_s and
- multi_cycle_q and not second_cycle_q and assert_prog_i then
- prog_q <= true;
- end if;
-
- -- ALE is removed at the end of XTAL2 of every machine cycle
- if xtal2_s then
- ale_q <= false;
- end if;
-
- when others =>
- -- recover when states are out of sync
- ale_q <= false;
- psen_q <= false;
- prog_q <= false;
- rd_q <= false;
- wr_q <= false;
-
- end case;
-
- end if;
-
- end process external_signals;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process states
- --
- -- Purpose:
- -- The Clock State controller.
- --
- states: process (res_i, clk_i)
- begin
- if res_i = res_active_c then
- -- Reset machine state to MSTATE3
- -- This allows a proper instruction fetch for the first real instruction
- -- after reset.
- -- The MSTATE3 is part of a virtual NOP that has no MSTATE1 and MSTATE2.
- mstate_q <= MSTATE3;
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- case mstate_q is
- when MSTATE5 =>
- mstate_q <= MSTATE1;
-
- when MSTATE1 =>
- mstate_q <= MSTATE2;
-
- when MSTATE2 =>
- mstate_q <= MSTATE3;
-
- when MSTATE3 =>
- mstate_q <= MSTATE4;
-
- when MSTATE4 =>
- mstate_q <= MSTATE5;
-
- when others =>
- -- recover when states are out of sync
- mstate_q <= MSTATE1;
-
- -- pragma translate_off
- assert false
- report "Encoding of Clock States failed!"
- severity error;
- -- pragma translate_on
-
- end case;
-
- end if;
-
- end if;
-
- end process states;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Process machine_cycle
- --
- -- Purpose:
- -- Keep track of machine cycles.
- -- Basically, this means to differ between first and second cycle.
- --
- machine_cycle: process (res_i, clk_i)
- variable state2_v, state5_v : boolean;
- begin
- if res_i = res_active_c then
- multi_cycle_q <= false;
- second_cycle_q <= false;
-
- elsif clk_i'event and clk_i = clk_active_c then
- if en_clk_i then
-
- state2_v := mstate_q = MSTATE2;
- state5_v := mstate_q = MSTATE5;
-
- -- multi cycle information is delivered in State 2 from the decoder
- if state2_v and multi_cycle_i then
- multi_cycle_q <= true;
- end if;
-
- -- mark second machine cycle
- if multi_cycle_q and state5_v then
- second_cycle_q <= true;
- end if;
-
- -- reset at end of second machine cycle
- if state5_v and
- (multi_cycle_q and second_cycle_q) then
- multi_cycle_q <= false;
- second_cycle_q <= false;
- end if;
-
- end if;
-
- end if;
-
- end process machine_cycle;
- --
- -----------------------------------------------------------------------------
-
-
- -----------------------------------------------------------------------------
- -- Output assignments
- -----------------------------------------------------------------------------
- xtal3_o <= xtal3_s;
- mstate_o <= mstate_q;
- second_cycle_o <= second_cycle_q;
- ale_o <= ale_q;
- psen_o <= psen_q;
- prog_o <= prog_q;
- rd_o <= rd_q;
- wr_o <= wr_q;
-
-end rtl;
t48/rel_1_2/rtl/vhdl/clock_ctrl.vhd
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/COMPILE_LIST
===================================================================
--- t48/rel_1_2/COMPILE_LIST (revision 296)
+++ t48/rel_1_2/COMPILE_LIST (nonexistent)
@@ -1,87 +0,0 @@
-
-Compile list for the T48 uController project
-============================================
-Version: $Id$
-
-bench/vhdl/if_timing.vhd
-bench/vhdl/if_timing-c.vhd
-rtl/vhdl/t48_pack-p.vhd
-rtl/vhdl/psw.vhd
-rtl/vhdl/psw-c.vhd
-rtl/vhdl/pmem_ctrl_pack-p.vhd
-rtl/vhdl/pmem_ctrl.vhd
-rtl/vhdl/pmem_ctrl-c.vhd
-rtl/vhdl/p2.vhd
-rtl/vhdl/p2-c.vhd
-rtl/vhdl/p1.vhd
-rtl/vhdl/p1-c.vhd
-rtl/vhdl/timer.vhd
-rtl/vhdl/timer-c.vhd
-rtl/vhdl/dmem_ctrl_pack-p.vhd
-rtl/vhdl/dmem_ctrl.vhd
-rtl/vhdl/dmem_ctrl-c.vhd
-rtl/vhdl/decoder_pack-p.vhd
-rtl/vhdl/cond_branch_pack-p.vhd
-rtl/vhdl/alu_pack-p.vhd
-rtl/vhdl/t48_comp_pack-p.vhd
-rtl/vhdl/int.vhd
-rtl/vhdl/int-c.vhd
-rtl/vhdl/t48_tb_pack-p.vhd
-rtl/vhdl/decoder.vhd
-rtl/vhdl/decoder-c.vhd
-rtl/vhdl/db_bus.vhd
-rtl/vhdl/db_bus-c.vhd
-rtl/vhdl/cond_branch.vhd
-rtl/vhdl/cond_branch-c.vhd
-rtl/vhdl/clock_ctrl.vhd
-rtl/vhdl/clock_ctrl-c.vhd
-rtl/vhdl/bus_mux.vhd
-rtl/vhdl/bus_mux-c.vhd
-rtl/vhdl/alu.vhd
-rtl/vhdl/alu-c.vhd
-rtl/vhdl/t48_core.vhd
-rtl/vhdl/t48_core-c.vhd
-rtl/vhdl/system/generic_ram_ena.vhd
-rtl/vhdl/system/generic_ram_ena-c.vhd
-rtl/vhdl/system/lpm_rom.vhd
-rtl/vhdl/t48_core_comp_pack-p.vhd
-bench/vhdl/tb.vhd
-bench/vhdl/tb-c.vhd
-Elaborate tb_behav_c0
-
-rtl/vhdl/system/t48_rom-e.vhd
-bench/vhdl/t48_rom-lpm-a.vhd
-bench/vhdl/t48_rom-lpm-c.vhd
-rtl/vhdl/system/t8048_notri.vhd
-rtl/vhdl/system/t8048_notri-c.vhd
-rtl/vhdl/system/t48_system_comp_pack-p.vhd
-rtl/vhdl/system/t8048.vhd
-rtl/vhdl/system/t8048-c.vhd
-bench/vhdl/tb_t8048.vhd
-bench/vhdl/tb_t8048-c.vhd
-Elaborate tb_t8048_behav_c0
-
-rtl/vhdl/system/t8039_notri.vhd
-rtl/vhdl/system/t8039_notri-c.vhd
-rtl/vhdl/system/t8039.vhd
-rtl/vhdl/system/t8039-c.vhd
-bench/vhdl/tb_t8039.vhd
-bench/vhdl/tb_t8039-c.vhd
-Elaborate tb_t8039_behav_c0
-
-rtl/vhdl/t8243/t8243_core.vhd
-rtl/vhdl/t8243/t8243_core-c.vhd
-rtl/vhdl/t8243/t8243_comp_pack-p.vhd
-rtl/vhdl/t8243/t8243_async_notri.vhd
-rtl/vhdl/t8243/t8243_async_notri-c.vhd
-rtl/vhdl/t8243/t8243.vhd
-rtl/vhdl/t8243/t8243-c.vhd
-bench/vhdl/tb_t8048_t8243.vhd
-bench/vhdl/tb_t8048_t8243-c.vhd
-Elaborate tb_t8048_t8243_behav_c0
-
-rtl/vhdl/t8243/t8243_sync_notri.vhd
-rtl/vhdl/t8243/t8243_sync_notri-c.vhd
-bench/vhdl/tb_t8243.vhd
-bench/vhdl/tb_t8243-c.vhd
-Elaborate tb_t8243_behav_c0
t48/rel_1_2/COMPILE_LIST
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2/doc/src/block_detail.fig
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: t48/rel_1_2/doc/src/block_detail.fig
===================================================================
--- t48/rel_1_2/doc/src/block_detail.fig (revision 296)
+++ t48/rel_1_2/doc/src/block_detail.fig (nonexistent)
t48/rel_1_2/doc/src/block_detail.fig
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: t48/rel_1_2/doc/src/T48 Integration Manual.sxw
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: t48/rel_1_2/doc/src/T48 Integration Manual.sxw
===================================================================
--- t48/rel_1_2/doc/src/T48 Integration Manual.sxw (revision 296)
+++ t48/rel_1_2/doc/src/T48 Integration Manual.sxw (nonexistent)
t48/rel_1_2/doc/src/T48 Integration Manual.sxw
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: t48/rel_1_2/doc/src/block_detail.eps
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: t48/rel_1_2/doc/src/block_detail.eps
===================================================================
--- t48/rel_1_2/doc/src/block_detail.eps (revision 296)
+++ t48/rel_1_2/doc/src/block_detail.eps (nonexistent)
t48/rel_1_2/doc/src/block_detail.eps
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: t48/rel_1_2/doc/T48 Integration Manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: t48/rel_1_2/doc/T48 Integration Manual.pdf
===================================================================
--- t48/rel_1_2/doc/T48 Integration Manual.pdf (revision 296)
+++ t48/rel_1_2/doc/T48 Integration Manual.pdf (nonexistent)
t48/rel_1_2/doc/T48 Integration Manual.pdf
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: t48/rel_1_2/CHANGELOG
===================================================================
--- t48/rel_1_2/CHANGELOG (revision 296)
+++ t48/rel_1_2/CHANGELOG (nonexistent)
@@ -1,127 +0,0 @@
-
-Change log for the T48 uController core
-=======================================
-Version: $Id$
-
-
-Release 1.1
------------
-
-* code optimizations in the decoder to reduce LUT usage with
- Xilinx ISE/XST.
-
-* fix tb_t8048 and tb_t8049 with respect to P1[0]->T0 signalling.
-
-* synthesis templates for QuartusII and ISE.
-
-* added dedicated version of hex2rom utility for RTL ROM generation
- (keeps compatibility with QuartusII 7.2).
-
-* better describe RTL ROM and RAM macros.
-
-
-Release 1.0
------------
-
-* T8243 I/O expander added to project
-
-* Bugfix for "Deassertion of PROG too early"
- PROG is deasserted at end of XTAL3 now.
- Applied in clock_ctrl.vhd 1.12
-
-* new input xtal_en_i gates xtal_i base clock
-
-* counter_q in timer module has asynchronous reset
-
-* replaced syn_rom and syn_ram with t48_rom and generic_ram_ena
-
-* verification environment updated for new testbenches
-
-
-Release 0.6.1 BETA
-------------------
-
-* Bugfix for "PROBLEM WHEN INT AND JMP"
- Suppress assertion of bus_read_bus_s when interrupt is pending.
- Applied in decoder.vhd 1.21
-
-* Bugfix for "P2 Port value restored after expander access"
- Applied in p2.vhd 1.8
-
-* change low impedance markers for P2
- separate marker for low and high part
-
-* shift assertion of ALE and PROG to xtal3
-
-* properly drive P1 and P2 with low impedance markers
-
-* suppress p2_output_pch_o when MOVX operation is accessing the
- external memory
-
-* suppress p2_output_pch_o when p2_output_exp is active
-
-* operate ale_q and int_q with xtal_i after shift of ALE assertion to XTAL3
-
-
-Release 0.6 BETA
-----------------
-
-* Bugfix for "Wrong clock applied to T0"
- Applied in clock_ctrl.vhd 1.7
- t48_core.vhd 1.8
-
-* Introduced "notri" hierarchy for t8048 and t8039 system.
- This allows the usage of such a system without tri-state signals.
-
-* Fixed lpm_memory type definition in lpm_rom.vhd and lpm_ram.vhd.
-
-* New Wishbone master module: wb_master.vhd
-
-* New system toplevel: t8050_wb.vhd
- Contains the Wishbone master.
-
-* Prefixed all design units with 't48_'.
-
-* Updates for running the core with full xtal clock. Should work now.
-
-* Move latching of BUS to MSTATE2 in decoder.vhd
- -> sample BUS at the end of RD'
-
-* Fix a glitch on PCH when an interrupt occurs during external
- program memory fetch in decoder.vhd
-
-* Bugfix for "Target address of JMP to Program Memory Bank 1 corrupted
- by interrupt"
- and "Return address of CALL to Program Memory Bank 1 corrupted
- by interrupt"
- Applied in int.vhd 1.5
-
-* Bugfix for "MSB of Program Counter changed upon PC increment"
- Applied in pmem_ctrl.vhd 1.4
-
-* Preliminary Integration Manual added.
-
-
-Release 0.5 BETA
-----------------
-
-* Bugfix for "P1 constantly in push-pull mode in t8048"
- Applied in t8048.vhd 1.3
-
-* Bugfix for "RD' and WR' not asserted for INS A, BUS and OUTL BUS, A"
- Applied in decoder.vhd 1.16
- db_bus.vhd 1.3
- Updated testcase black_box/ins.
-
-* P1, P2 and BUS are written during the first instruction cycle of the
- OUTL instruction. This matches the descirption in the User Manual.
- The previous implementation updated these ports at the end of the
- second instruction cycle.
- Applied in decoder.vhd 1.16
-
-* Shifted deassertion of RD and WR to end of XTAL3 of machine state 2.
- The previous deassertion at the end of XTAL2 was not according to the
- User Manual. Their rising edge can now be used as a read/write strobe.
- On the other hand, PROG is still deasserted at the end of XTAL3. This
- is needed to for the rising edge of PROG within valid P2 expander data.
- Applied in clock_ctrl.vhd 1.6
t48/rel_1_2/CHANGELOG
Property changes :
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: t48/rel_1_2
===================================================================
--- t48/rel_1_2 (revision 296)
+++ t48/rel_1_2 (nonexistent)
t48/rel_1_2
Property changes :
Deleted: svn:mergeinfo
## -0,0 +0,0 ##