Initial commit
This commit is contained in:
BIN
KCPSM3.EXE
Executable file
BIN
KCPSM3.EXE
Executable file
Binary file not shown.
45
Makefile
Executable file
45
Makefile
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
XILINX=C:/Xilinx92i
|
||||||
|
XILPATH=$(XILINX)/bin/nt
|
||||||
|
INFILES=toplevel.vhd memory.vhd coregen/charrom.vhd coregen/monitorrom.vhd coregen/basic_rom.vhd coregen/ram2kx8.vhd coregen/dcm_in50.vhd T80_Pack.vhd T80_ALU.vhd T80_MCode.vhd T80_RegX.vhd T80.vhd T80a.vhd T80se.vhd video.vhd videogen.vhd syncgen.vhd keyboard.vhd uart.vhd kcpsm3.vhd uartprog.vhd fifo16x8.vhd spi.vhd
|
||||||
|
NGCFILE=nascom2.ngc
|
||||||
|
XSTFILE=nascom2.xst
|
||||||
|
UCF=nascom2.ucf
|
||||||
|
PCFFILE=nascom2.pcf
|
||||||
|
NGDFILE=nascom2.ngd
|
||||||
|
NCDFILE=nascom2.ncd
|
||||||
|
NCDFILE_R=nascom2_routed.ncd
|
||||||
|
BITFILE=nascom2.bit
|
||||||
|
TWRFILE=nascom2.twr
|
||||||
|
|
||||||
|
PART=xc3s700an-fgg484-4
|
||||||
|
NGDOPTS=-p $(PART) -aul -uc $(UCF) -sd coregen/
|
||||||
|
MAPOPTS=-p $(PART) -cm area
|
||||||
|
PAROPTS=-rl high -pl high
|
||||||
|
BITGENOPTS=
|
||||||
|
TRACEOPTS=-v -u 100
|
||||||
|
|
||||||
|
all: $(BITFILE)
|
||||||
|
|
||||||
|
%.vhd: %.psm
|
||||||
|
KCPSM3.exe $<
|
||||||
|
|
||||||
|
$(NGCFILE): $(INFILES)
|
||||||
|
$(XILPATH)/xst -ifn $(XSTFILE)
|
||||||
|
|
||||||
|
$(NGDFILE): $(NGCFILE) $(UCF)
|
||||||
|
$(XILPATH)/ngdbuild $(NGDOPTS) $(NGCFILE) $(NGDFILE)
|
||||||
|
|
||||||
|
$(PCFFILE) $(NCDFILE) : $(NGDFILE)
|
||||||
|
$(XILPATH)/map $(MAPOPTS) -o $(NCDFILE) $(NGDFILE) $(PCFFILE)
|
||||||
|
|
||||||
|
$(NCDFILE_R): $(PCFFILE) $(NCDFILE)
|
||||||
|
$(XILPATH)/par -w $(PAROPTS) $(NCDFILE) $(NCDFILE_R) $(PCFFILE)
|
||||||
|
|
||||||
|
$(BITFILE): $(NCDFILE_R) $(PCFFILE)
|
||||||
|
$(XILPATH)/bitgen -w $(BITGENOPTS) $(NCDFILE_R) $(BITFILE) $(PCFFILE)
|
||||||
|
|
||||||
|
$(TWRFILE): $(NCDFILE_R) $(PCFFILE)
|
||||||
|
$(XILPATH)/trce $(TRACEOPTS) -o $(TWRFILE) $(NCDFILE_R) $(PCFFILE)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(NGCFILE) $(PCFFILE) $(NGDFILE) $(NCDFILE) $(NCDFILE_R) $(BITFILE)
|
||||||
258
NASSYSI.coe
Executable file
258
NASSYSI.coe
Executable file
@@ -0,0 +1,258 @@
|
|||||||
|
memory_initialization_radix=16;
|
||||||
|
memory_initialization_vector=
|
||||||
|
31, 00, 10, D7, 08, C3, B2, 03,
|
||||||
|
DF, 62, D8, 18, FB, C3, 9A, 03,
|
||||||
|
E5, F5, 37, 21, 08, 00, 18, 05,
|
||||||
|
E5, F5, A7, 18, F6, C3, 70, 05,
|
||||||
|
E3, 2B, E3, C3, 1A, 04, 00, 00,
|
||||||
|
E3, 7E, 23, B7, 20, 06, E3, C9,
|
||||||
|
E5, C3, 5A, 07, F7, 18, F2, 00,
|
||||||
|
3D, C8, F5, F1, 18, FA, AF, 47,
|
||||||
|
FF, FF, 10, FC, C9, E5, 21, 00,
|
||||||
|
0C, AE, D3, 00, 7E, D3, 00, E1,
|
||||||
|
C9, 3E, 10, E5, 21, 00, 0C, AE,
|
||||||
|
77, 18, F2, F5, D3, 01, DB, 02,
|
||||||
|
CB, 77, 28, FA, F1, C9, C3, 7D,
|
||||||
|
0C, 1E, C0, DF, 62, D8, 1D, 20,
|
||||||
|
FA, C9, 2A, 29, 0C, 56, 36, 5F,
|
||||||
|
D7, EF, 72, D8, D7, EB, 30, F2,
|
||||||
|
C9, DB, 02, 17, D0, DB, 01, C9,
|
||||||
|
3E, 02, CD, 45, 00, 21, 01, 0C,
|
||||||
|
DB, 00, 2F, 77, 06, 08, 3E, 01,
|
||||||
|
CD, 45, 00, 23, DB, 00, 2F, 57,
|
||||||
|
AE, 20, 04, 10, F1, B7, C9, AF,
|
||||||
|
FF, DB, 00, 2F, 5F, 7A, AE, 0E,
|
||||||
|
FF, 16, 00, 37, CB, 12, 0C, 1F,
|
||||||
|
30, FA, 7A, A3, 5F, 7E, A2, BB,
|
||||||
|
28, E1, 7E, AA, 77, 7B, B7, 28,
|
||||||
|
DA, 3A, 01, 0C, E6, 10, B0, 87,
|
||||||
|
87, 87, B1, D7, 5B, 28, 06, E6,
|
||||||
|
7F, D7, 55, 20, C8, 37, ED, 52,
|
||||||
|
7D, FE, 41, 38, 1E, FE, 5B, 30,
|
||||||
|
1A, 21, 01, 0C, CB, 66, 21, 27,
|
||||||
|
0C, 20, 08, CB, 46, 28, 0C, C6,
|
||||||
|
20, 18, 08, C6, 20, CB, 46, 28,
|
||||||
|
02, D6, 20, 21, 01, 0C, FE, 40,
|
||||||
|
20, 06, CB, 66, 28, 97, 18, 06,
|
||||||
|
CB, 6E, 28, 02, EE, 40, CB, 5E,
|
||||||
|
28, 02, EE, 40, 21, 06, 0C, CB,
|
||||||
|
76, 28, 02, EE, 80, 21, 27, 0C,
|
||||||
|
CB, 56, 28, 02, EE, 80, 37, C9,
|
||||||
|
2A, 6F, 0C, 54, 5D, ED, 4B, 6D,
|
||||||
|
0C, ED, B1, C9, 00, 10, 60, 00,
|
||||||
|
9E, 05, 06, 07, 7F, 07, 82, 07,
|
||||||
|
C3, 2F, 00, C3, 2F, 00, C3, B7,
|
||||||
|
C8, F5, FE, 0A, 28, 24, FE, 0C,
|
||||||
|
20, 22, 21, 0A, 08, E5, 06, 30,
|
||||||
|
36, 20, 23, 10, FB, 06, 10, 36,
|
||||||
|
00, 23, 10, FB, EB, E1, E5, 01,
|
||||||
|
B0, 03, ED, B0, E1, DF, 7C, 22,
|
||||||
|
29, 0C, F1, C9, 2A, 29, 0C, FE,
|
||||||
|
08, 20, 11, F5, 2B, 7E, B7, 28,
|
||||||
|
FB, F1, FE, 11, 28, 02, 36, 20,
|
||||||
|
D7, 63, 18, E6, FE, 11, 28, EB,
|
||||||
|
FE, 17, 28, D9, FE, 1B, 20, 0B,
|
||||||
|
DF, 7C, 06, 30, 36, 20, 23, 10,
|
||||||
|
FB, 18, CA, FE, 0D, 28, 66, FE,
|
||||||
|
18, 20, 0C, E5, DF, 7C, D1, B7,
|
||||||
|
ED, 52, 19, 28, BA, 18, 56, FE,
|
||||||
|
13, 20, 08, 11, C0, FF, 19, D7,
|
||||||
|
2C, 18, AF, FE, 14, 20, 05, 11,
|
||||||
|
40, 00, 18, F2, FE, 15, 20, 0E,
|
||||||
|
23, 7E, 2B, B7, 20, 04, 36, 20,
|
||||||
|
18, 98, 77, 23, 18, F2, FE, 16,
|
||||||
|
20, 1F, 06, 20, 7E, B7, 28, 8A,
|
||||||
|
70, 47, 23, 18, F7, 11, 0A, 08,
|
||||||
|
B7, ED, 52, 19, D8, 11, BA, 0B,
|
||||||
|
B7, ED, 52, 19, D0, F1, C3, 77,
|
||||||
|
01, FE, 12, 28, 01, 77, 23, 7E,
|
||||||
|
B7, 28, FB, D7, E0, DF, 7C, 11,
|
||||||
|
40, 00, 19, D7, D8, 11, 0A, 08,
|
||||||
|
21, 4A, 08, 01, 70, 03, ED, B0,
|
||||||
|
06, 30, 2B, 36, 20, 10, FB, 21,
|
||||||
|
8A, 0B, 18, D2, 7D, D6, 40, 30,
|
||||||
|
FC, C6, 36, 5F, 7D, 93, 6F, C9,
|
||||||
|
DF, 60, 22, 0C, 0C, DF, 66, 7E,
|
||||||
|
DF, 68, EF, 20, 11, 11, 11, 00,
|
||||||
|
D7, 54, DF, 64, 38, 4C, 7E, B7,
|
||||||
|
28, 48, 23, D5, 5E, 23, 56, EB,
|
||||||
|
D1, 06, 00, E5, DF, 64, 7E, B7,
|
||||||
|
28, 07, 23, 7E, E1, 77, 04, 23,
|
||||||
|
E5, E1, 1A, FE, 2E, C8, FE, 2C,
|
||||||
|
20, 05, 13, 1A, 13, 18, EE, 78,
|
||||||
|
B7, 20, 01, 23, 1A, FE, 3A, 20,
|
||||||
|
04, 2B, 2B, 18, B5, FE, 2F, 20,
|
||||||
|
0A, 13, DF, 64, 38, 0C, 2A, 21,
|
||||||
|
0C, 18, A7, B7, 28, A4, FE, 20,
|
||||||
|
28, C1, DF, 6B, 18, 9A, E5, CD,
|
||||||
|
8A, 03, AF, 32, 26, 0C, 21, 1A,
|
||||||
|
04, 22, 7E, 0C, E1, E5, DF, 7B,
|
||||||
|
F7, FE, 0D, 20, F9, 2A, 29, 0C,
|
||||||
|
11, C0, FF, 19, EB, E1, C9, C5,
|
||||||
|
18, 17, B7, ED, 52, 19, 38, 06,
|
||||||
|
C1, EF, 2E, 0D, 00, C9, 78, B1,
|
||||||
|
20, 07, CF, FE, 1B, 28, F1, C1,
|
||||||
|
C5, 0B, C5, 0E, 00, EF, 20, 20,
|
||||||
|
00, DF, 66, 06, 08, 7E, DF, 67,
|
||||||
|
23, DF, 69, 10, F8, 79, DF, 68,
|
||||||
|
EF, 08, 08, 0D, 00, C1, 18, CA,
|
||||||
|
7C, DF, 67, 7D, DF, 67, 3E, 20,
|
||||||
|
F7, C9, EF, 45, 72, 72, 6F, 72,
|
||||||
|
00, 3E, 0D, F7, C9, F5, 81, 4F,
|
||||||
|
F1, F5, 1F, 1F, 1F, 1F, D7, 01,
|
||||||
|
F1, E6, 0F, C6, 30, FE, 3A, 38,
|
||||||
|
02, C6, 07, F7, C9, D7, 00, DF,
|
||||||
|
66, EB, C9, 1A, FE, 20, 13, 28,
|
||||||
|
FA, 1B, 21, 00, 00, 22, 21, 0C,
|
||||||
|
AF, 21, 20, 0C, 77, 1A, B7, C8,
|
||||||
|
FE, 20, C8, D6, 30, D8, FE, 0A,
|
||||||
|
38, 0B, D6, 07, FE, 0A, D8, FE,
|
||||||
|
10, 38, 02, 37, C9, 13, 34, 23,
|
||||||
|
ED, 6F, 23, ED, 6F, 2B, 2B, 28,
|
||||||
|
DC, 1B, 37, C9, 01, 0B, 0C, AF,
|
||||||
|
02, DF, 64, D8, 7E, B7, C8, 23,
|
||||||
|
03, 7E, 02, 23, 03, 7E, 02, 21,
|
||||||
|
0B, 0C, 34, 7E, FE, 0B, 38, E9,
|
||||||
|
37, C9, 2A, 23, 0C, 7E, 32, 25,
|
||||||
|
0C, C9, 2A, 23, 0C, 3A, 25, 0C,
|
||||||
|
77, C9, D7, F6, 11, 00, 0C, 06,
|
||||||
|
6B, AF, 12, 13, 10, FC, 21, 3C,
|
||||||
|
01, 01, 15, 00, ED, B0, EF, 0C,
|
||||||
|
00, C9, 31, 61, 0C, 2A, 3C, 01,
|
||||||
|
22, 6B, 0C, EF, 4E, 41, 53, 2D,
|
||||||
|
53, 59, 53, 20, 69, 0D, 00, D7,
|
||||||
|
C9, CD, A6, 02, 01, 2B, 0C, 1A,
|
||||||
|
FE, 20, 20, 05, 0A, FE, 53, 20,
|
||||||
|
F0, FE, 41, 38, 0D, FE, 5B, 30,
|
||||||
|
09, 02, 32, 0A, 0C, 13, DF, 79,
|
||||||
|
30, 04, DF, 6B, 18, DB, DF, 60,
|
||||||
|
DF, 5C, 18, D5, 3E, FF, 32, 26,
|
||||||
|
0C, F1, 3A, 0B, 0C, B7, 28, 03,
|
||||||
|
22, 69, 0C, C1, D1, F1, F1, 2A,
|
||||||
|
6B, 0C, F9, 2A, 69, 0C, E5, 2A,
|
||||||
|
65, 0C, F5, 3E, 08, D3, 00, F1,
|
||||||
|
ED, 45, F5, E5, 3A, 00, 0C, D3,
|
||||||
|
00, 3A, 26, 0C, B7, 28, 0D, CD,
|
||||||
|
8A, 03, 36, E7, AF, 32, 26, 0C,
|
||||||
|
E1, F1, ED, 45, D5, C5, 21, 00,
|
||||||
|
00, 39, 31, 61, 0C, 11, 61, 0C,
|
||||||
|
01, 08, 00, ED, B0, 5E, 23, 56,
|
||||||
|
23, ED, 53, 69, 0C, 22, 6B, 0C,
|
||||||
|
EF, 18, 00, 21, 6D, 0C, 06, 06,
|
||||||
|
2B, 7E, DF, 68, 2B, 7E, DF, 68,
|
||||||
|
DF, 69, 10, F4, ED, 57, DF, 68,
|
||||||
|
DF, 69, DD, E5, E1, DF, 66, FD,
|
||||||
|
E5, E1, DF, 66, 3A, 67, 0C, 11,
|
||||||
|
8B, 04, 06, 08, 13, 17, F5, 1A,
|
||||||
|
30, 01, F7, F1, 10, F6, EF, 18,
|
||||||
|
00, C3, C7, 03, 53, 5A, 00, 48,
|
||||||
|
00, 50, 4E, 43, DF, 5F, DF, 77,
|
||||||
|
E5, DF, 78, E5, CF, E6, 7F, FE,
|
||||||
|
2E, 28, 3A, FE, 0D, 28, 07, FE,
|
||||||
|
20, 38, F1, F7, 18, EE, 2A, 29,
|
||||||
|
0C, DF, 7C, EB, DF, 79, 38, 21,
|
||||||
|
21, 0C, 0C, AF, 06, 12, 86, 23,
|
||||||
|
10, FC, BE, 20, 14, 2A, 0C, 0C,
|
||||||
|
11, 0E, 0C, 06, 08, 1A, 77, 23,
|
||||||
|
13, 13, 10, F9, EF, 1B, 00, 18,
|
||||||
|
C3, DF, 6A, 18, BF, CF, E6, 7F,
|
||||||
|
FE, 0D, 20, B9, F7, C3, 86, 06,
|
||||||
|
DF, 5F, DF, 5D, DF, 77, E5, AF,
|
||||||
|
47, DF, 6F, 10, FC, DF, 60, ED,
|
||||||
|
5B, 0E, 0C, EB, 37, ED, 52, DA,
|
||||||
|
8A, 06, EB, AF, FF, 06, 05, DF,
|
||||||
|
6F, 3E, FF, 10, FA, AF, BA, 20,
|
||||||
|
02, 43, 04, 58, 7D, DF, 6F, 7C,
|
||||||
|
DF, 6F, 7B, DF, 6F, 7A, DF, 6F,
|
||||||
|
0E, 00, DF, 6C, 79, DF, 6F, DF,
|
||||||
|
6D, 06, 0B, 79, DF, 6F, AF, 10,
|
||||||
|
FB, DF, 6A, 18, C2, B7, ED, 52,
|
||||||
|
19, 30, 09, 0B, EB, 09, EB, 09,
|
||||||
|
03, ED, B8, C9, ED, B0, C9, EB,
|
||||||
|
E5, 19, DF, 66, E1, B7, ED, 52,
|
||||||
|
DF, 66, 2B, 2B, 7C, FE, FF, 20,
|
||||||
|
0A, CB, 7D, 20, 0D, EF, 3F, 3F,
|
||||||
|
0D, 00, C9, B7, 20, F7, CB, 7D,
|
||||||
|
20, F3, 7D, DF, 68, C3, 11, 03,
|
||||||
|
D5, F5, 39, 5E, 23, 56, 13, 72,
|
||||||
|
2B, 73, 1B, EB, F1, 30, 11, 5E,
|
||||||
|
7B, 17, 9F, 57, 23, 19, D1, F1,
|
||||||
|
E3, C9, E5, F5, D5, 21, 0A, 0C,
|
||||||
|
5E, 16, 00, 2A, 71, 0C, 19, 19,
|
||||||
|
5E, 23, 56, EB, 18, E8, FF, FF,
|
||||||
|
FF, FF, FF, FF, FF, FF, 08, FF,
|
||||||
|
8E, FF, 88, 09, FF, FF, FF, 3E,
|
||||||
|
2E, 46, 36, BE, AE, 0E, FF, FF,
|
||||||
|
FF, 89, FF, FF, FF, FF, 14, 9C,
|
||||||
|
9B, A3, 92, C2, BA, B2, AA, A2,
|
||||||
|
98, A0, 29, 0A, 21, 19, 1A, 1C,
|
||||||
|
1B, 23, 12, 42, 3A, 32, 2A, 22,
|
||||||
|
18, 20, A9, 8A, A1, 99, 0D, 2C,
|
||||||
|
41, 13, 3B, 33, 43, 10, 40, 2D,
|
||||||
|
38, 30, 28, 31, 39, 25, 1D, 24,
|
||||||
|
15, 34, 45, 35, 11, 2B, 44, 3D,
|
||||||
|
3C, 1E, 9E, 16, 9A, 96, 7D, 32,
|
||||||
|
27, 0C, C9, 22, 23, 0C, C9, 44,
|
||||||
|
4D, ED, 59, C9, 44, 4D, ED, 78,
|
||||||
|
DF, 68, C3, 11, 03, ED, 4B, 10,
|
||||||
|
0C, ED, 5B, 0E, 0C, 2A, 0C, 0C,
|
||||||
|
C9, 21, 7A, 07, DF, 71, E5, 21,
|
||||||
|
4C, 06, 06, 06, 7E, F7, 0E, 14,
|
||||||
|
AF, FF, 0D, 20, FC, 23, 10, F4,
|
||||||
|
DF, 57, AF, FF, 3E, 45, F7, 2A,
|
||||||
|
10, 0C, DF, 66, 3E, 0D, F7, E1,
|
||||||
|
22, 73, 0C, C9, 0D, 45, 30, 0D,
|
||||||
|
52, 0D, 0E, 00, 7E, 81, 4F, 7E,
|
||||||
|
DF, 6F, 23, 10, F7, C9, DF, 5F,
|
||||||
|
DF, 77, E5, DF, 78, E5, CF, FE,
|
||||||
|
FF, 20, 0B, 06, 03, CF, FE, FF,
|
||||||
|
20, 04, 10, F9, 18, 1B, FE, 1B,
|
||||||
|
20, EC, 06, 03, CF, FE, 1B, 20,
|
||||||
|
E6, 10, F9, EF, 18, 00, E1, 22,
|
||||||
|
75, 0C, E1, 22, 73, 0C, C3, 51,
|
||||||
|
00, CF, 6F, CF, 67, CF, 5F, CF,
|
||||||
|
57, 0E, 00, DF, 6C, CF, B9, 20,
|
||||||
|
1E, 43, 0E, 00, 3A, 2B, 0C, FE,
|
||||||
|
52, 28, 03, CF, 18, 02, CF, 77,
|
||||||
|
E5, 2A, 29, 0C, 77, E1, 81, 4F,
|
||||||
|
23, 10, E9, CF, B9, 28, 06, EF,
|
||||||
|
3F, 20, 00, 18, A1, EF, 2E, 20,
|
||||||
|
00, AF, BA, 20, 99, 18, B4, 21,
|
||||||
|
81, 07, DF, 72, 21, 7E, 07, DF,
|
||||||
|
71, C9, 7D, 32, 28, 0C, 21, 85,
|
||||||
|
07, DF, 72, 21, 7D, 07, DF, 71,
|
||||||
|
C9, DF, 70, D0, E6, 7F, F5, 21,
|
||||||
|
28, 0C, CB, 6E, CC, 21, 07, D7,
|
||||||
|
20, F1, FE, 7F, 20, 01, AF, FE,
|
||||||
|
1B, 28, 05, B7, 28, 02, CB, FE,
|
||||||
|
37, C9, F5, 21, 28, 0C, CB, 7E,
|
||||||
|
CC, 17, 07, CB, BE, F1, C9, D7,
|
||||||
|
08, FE, 0D, C0, CB, 66, C0, 3E,
|
||||||
|
0A, B7, C8, F5, EA, 29, 07, EE,
|
||||||
|
80, CB, 46, 28, 02, EE, 80, DF,
|
||||||
|
6F, F1, C9, DF, 7B, F7, 18, FB,
|
||||||
|
DF, 78, 21, 7F, 07, E5, 2A, 73,
|
||||||
|
0C, E3, 22, 73, 0C, E1, C9, 21,
|
||||||
|
82, 07, E5, 2A, 75, 0C, E3, 22,
|
||||||
|
75, 0C, E1, C9, E5, 21, 75, 0C,
|
||||||
|
18, 03, 21, 73, 0C, D5, C5, 5E,
|
||||||
|
23, 56, F5, 1A, 13, B7, 28, 0D,
|
||||||
|
32, 0A, 0C, F1, D5, B7, CD, 8A,
|
||||||
|
05, D1, 30, EE, F5, F1, C1, D1,
|
||||||
|
E1, C9, 65, 6F, 00, 6E, 75, 65,
|
||||||
|
00, 76, 61, 70, 00, 74, 61, 00,
|
||||||
|
47, 05, 03, 06, 44, 05, 0A, 03,
|
||||||
|
F4, 03, 0A, 03, 21, 06, 33, 07,
|
||||||
|
35, 05, FA, FF, FE, 05, 94, 04,
|
||||||
|
40, 02, 38, 07, 07, 06, 0A, 03,
|
||||||
|
0C, 06, 5E, 06, F9, 03, C7, 02,
|
||||||
|
CF, 06, 5E, 06, E8, 04, DA, 06,
|
||||||
|
0A, 03, FD, FF, B2, 03, 8A, 05,
|
||||||
|
3E, 00, 45, 00, 51, 00, 15, 06,
|
||||||
|
88, 00, 54, 07, B5, 02, 33, 03,
|
||||||
|
4F, 01, 00, 03, 15, 03, 19, 03,
|
||||||
|
06, 03, 11, 03, 0A, 03, 2D, 03,
|
||||||
|
52, 06, 0A, 07, 5B, 00, 81, 00,
|
||||||
|
3D, 07, 4A, 07, 5D, 07, E9, 06,
|
||||||
|
77, 0C, 7A, 0C, 3A, 07, 47, 07,
|
||||||
|
6C, 03, 21, 03, 72, 00, 34, 02;
|
||||||
130
Nasbugt2.coe
Executable file
130
Nasbugt2.coe
Executable file
@@ -0,0 +1,130 @@
|
|||||||
|
memory_initialization_radix = 16;
|
||||||
|
memory_initialization_vector =
|
||||||
|
31, 33, 0C, 21, 00, 0C, 06, 15,
|
||||||
|
36, 00, 23, 10, FB, 21, 28, 01,
|
||||||
|
11, 3D, 0C, 01, 13, 00, ED, B0,
|
||||||
|
3E, 1E, CD, 3B, 01, C3, 59, 03,
|
||||||
|
F5, E5, D5, C3, 26, 03, 00, 00,
|
||||||
|
E3, 7E, 23, B7, 28, 05, CD, 4A,
|
||||||
|
0C, 18, F6, E3, C9, AF, F5, F1,
|
||||||
|
F5, F1, 3D, 20, F9, C9, CD, 4D,
|
||||||
|
0C, D8, DB, 02, 17, 30, F7, DB,
|
||||||
|
01, C9, F5, CD, 53, 00, F1, 18,
|
||||||
|
02, 3E, 10, E5, 21, 00, 0C, AE,
|
||||||
|
D3, 00, 77, E1, C9, D3, 01, DB,
|
||||||
|
02, 87, F8, 18, FA, 00, C3, 47,
|
||||||
|
0C, C5, D5, E5, 3E, 02, CD, 4A,
|
||||||
|
00, 21, 01, 0C, DB, 00, 2F, 77,
|
||||||
|
06, 08, 3E, 01, CD, 4A, 00, 23,
|
||||||
|
DB, 00, 2F, 57, AE, 20, 07, 10,
|
||||||
|
F1, B7, E1, D1, C1, C9, CD, 35,
|
||||||
|
00, DB, 00, 2F, 5F, 7A, AE, 0E,
|
||||||
|
FF, 16, 00, 37, CB, 12, 0C, 1F,
|
||||||
|
30, FA, 7A, A3, 5F, 7E, A2, BB,
|
||||||
|
28, DD, 7E, AA, 77, 7B, B7, 28,
|
||||||
|
D6, 3A, 01, 0C, E6, 10, B0, 87,
|
||||||
|
87, 87, B1, ED, 4B, 3F, 0C, 2A,
|
||||||
|
43, 0C, ED, B1, 28, 0B, 2A, 43,
|
||||||
|
0C, ED, 4B, 3F, 0C, E6, 7F, ED,
|
||||||
|
B1, 20, B6, ED, 4B, 43, 0C, 37,
|
||||||
|
ED, 42, ED, 4B, 41, 0C, 09, 7D,
|
||||||
|
37, 18, A7, 2A, 0C, 0C, 22, 15,
|
||||||
|
0C, C9, 08, 88, 09, 14, 9C, 9B,
|
||||||
|
A3, 92, C2, BA, B2, AA, A2, 98,
|
||||||
|
A0, 29, 0A, 21, 19, 1A, 1C, 1B,
|
||||||
|
23, 12, 42, 3A, 32, 2A, 22, 18,
|
||||||
|
20, B1, 8A, B9, 99, 0D, 2C, 41,
|
||||||
|
13, 3B, 33, 43, 10, 40, 2D, 38,
|
||||||
|
30, 28, 31, 39, 25, 1D, 24, 15,
|
||||||
|
34, 45, 35, 11, 2B, 44, 3D, 3C,
|
||||||
|
00, 10, 3E, 00, 1D, 00, EA, 00,
|
||||||
|
63, 03, C3, 05, 03, C3, 3B, 01,
|
||||||
|
C3, 69, 00, B7, C8, F5, C5, D5,
|
||||||
|
E5, FE, 1E, 20, 2F, 21, 09, 08,
|
||||||
|
36, FF, 23, 06, 30, 36, 20, 23,
|
||||||
|
10, FB, 06, 10, 36, 00, 23, 10,
|
||||||
|
FB, EB, 21, 0A, 08, 01, B0, 03,
|
||||||
|
ED, B0, 3E, FF, 32, BA, 0B, 21,
|
||||||
|
8A, 0B, 36, 5F, 22, 18, 0C, E1,
|
||||||
|
D1, C1, F1, C9, 2A, 18, 0C, 36,
|
||||||
|
20, FE, 1D, 20, 0B, 2B, 7E, B7,
|
||||||
|
28, FB, 3C, 20, E5, 23, 18, E2,
|
||||||
|
FE, 1F, 28, 09, 77, 23, 7E, B7,
|
||||||
|
28, FB, 3C, 20, D5, 11, 0A, 08,
|
||||||
|
21, 4A, 08, 01, 70, 03, ED, B0,
|
||||||
|
21, 10, 00, 19, 06, 30, 36, 20,
|
||||||
|
23, 10, FB, 18, BA, 2A, 0C, 0C,
|
||||||
|
CD, 32, 02, 7E, CD, 44, 02, CD,
|
||||||
|
DB, 01, 11, 52, 0B, 06, 00, E5,
|
||||||
|
CD, 5A, 02, 7E, B7, 28, 08, 23,
|
||||||
|
7E, E1, 77, 04, 23, 18, F0, E1,
|
||||||
|
1A, FE, 2E, C8, 78, B7, 20, 01,
|
||||||
|
23, 18, D5, EF, 3E, 00, CD, 3E,
|
||||||
|
00, FE, 1D, 28, 09, FE, 1F, 28,
|
||||||
|
57, CD, 4A, 0C, 18, F0, ED, 5B,
|
||||||
|
18, 0C, 1B, 1A, FE, 3E, 28, E6,
|
||||||
|
3E, 1D, 18, ED, 2A, 0C, 0C, ED,
|
||||||
|
5B, 0E, 0C, E5, B7, ED, 52, E1,
|
||||||
|
38, 05, EF, 2E, 1F, 00, C9, 0E,
|
||||||
|
00, CD, 32, 02, 06, 08, 7E, CD,
|
||||||
|
2B, 02, 23, CD, 3C, 02, 10, F6,
|
||||||
|
79, CD, 44, 02, EF, 1D, 1D, 1F,
|
||||||
|
00, 18, D4, 57, 81, 4F, 7A, C3,
|
||||||
|
44, 02, 7C, CD, 2B, 02, 7D, CD,
|
||||||
|
2B, 02, 18, 00, 3E, 20, 18, 17,
|
||||||
|
3E, 1F, 18, 13, F5, 1F, 1F, 1F,
|
||||||
|
1F, CD, 4D, 02, F1, E6, 0F, C6,
|
||||||
|
30, FE, 3A, 38, 02, C6, 07, C3,
|
||||||
|
4A, 0C, 1A, FE, 20, 13, 28, FA,
|
||||||
|
1B, AF, 21, 12, 0C, 77, 23, 77,
|
||||||
|
23, 77, 1A, 2B, 2B, D6, 30, F8,
|
||||||
|
FE, 0A, 38, 08, D6, 07, FE, 0A,
|
||||||
|
F8, FE, 10, F0, 13, 34, 23, ED,
|
||||||
|
6F, 23, ED, 6F, 18, E4, CD, DB,
|
||||||
|
01, 11, 4B, 0B, 01, 0A, 0C, 1A,
|
||||||
|
FE, 20, 20, 05, 0A, FE, 53, 20,
|
||||||
|
ED, 02, 03, 13, AF, 02, 03, CD,
|
||||||
|
5A, 02, 7E, B7, 28, 0D, 23, 7E,
|
||||||
|
02, 23, 03, 7E, 02, 21, 0B, 0C,
|
||||||
|
34, 18, EB, ED, 4B, 0A, 0C, 2A,
|
||||||
|
45, 0C, 7E, B7, 28, C8, 23, B9,
|
||||||
|
28, 05, 00, 23, 23, 18, F3, 5E,
|
||||||
|
23, 56, 21, 86, 02, E5, EB, E9,
|
||||||
|
3E, FF, 32, 1A, 0C, 21, 05, 03,
|
||||||
|
22, 48, 0C, E1, 3A, 0B, 0C, B7,
|
||||||
|
28, 06, 2A, 0C, 0C, 22, 3B, 0C,
|
||||||
|
C1, D1, F1, F1, 2A, 3D, 0C, F9,
|
||||||
|
2A, 3B, 0C, E5, 2A, 37, 0C, F5,
|
||||||
|
3E, 08, D3, 00, F1, ED, 45, AF,
|
||||||
|
32, 1A, 0C, 18, D0, E3, 23, E3,
|
||||||
|
F5, E5, 3A, 00, 0C, D3, 00, 3A,
|
||||||
|
1A, 0C, B7, 28, 10, 2A, 15, 0C,
|
||||||
|
7E, 32, 17, 0C, 36, E7, E1, F1,
|
||||||
|
E3, 2B, E3, ED, 45, D5, C5, 21,
|
||||||
|
00, 00, 39, 11, 33, 0C, 31, 33,
|
||||||
|
0C, 01, 08, 00, ED, B0, 5E, 23,
|
||||||
|
56, 23, 1B, ED, 53, 3B, 0C, 22,
|
||||||
|
3D, 0C, 21, 3F, 0C, 06, 06, 2B,
|
||||||
|
7E, CD, 44, 02, 2B, 7E, CD, 44,
|
||||||
|
02, CD, 3C, 02, 10, F1, CD, 40,
|
||||||
|
02, 2A, 15, 0C, 3A, 17, 0C, 77,
|
||||||
|
C3, 86, 02, 4D, AD, 01, 43, EF,
|
||||||
|
03, 45, D0, 02, 53, FF, 02, 54,
|
||||||
|
FC, 01, 42, E3, 00, 4C, 7C, 03,
|
||||||
|
44, D1, 03, 00, CD, 51, 00, 21,
|
||||||
|
8A, 0B, 22, 18, 0C, CD, 3E, 00,
|
||||||
|
FE, 1D, 28, F9, FE, 1F, 28, 05,
|
||||||
|
CD, 4A, 0C, 20, F0, 11, 8A, 0B,
|
||||||
|
06, 08, 1A, FE, 2E, CA, 51, 00,
|
||||||
|
CD, 5A, 02, 2A, 13, 0C, 7D, 84,
|
||||||
|
4F, E5, 21, 00, 08, E5, E5, CD,
|
||||||
|
5A, 02, 23, 7E, E1, 77, 23, 81,
|
||||||
|
4F, 10, F3, CD, 5A, 02, 23, 7E,
|
||||||
|
B9, E1, D1, 20, 07, 01, 08, 00,
|
||||||
|
ED, B0, 18, B3, CD, 40, 02, 18,
|
||||||
|
AE, CD, 51, 00, 06, 00, CD, 35,
|
||||||
|
00, 10, FB, 2A, 4B, 0C, E5, 21,
|
||||||
|
5D, 00, 22, 4B, 0C, CD, FC, 01,
|
||||||
|
E1, 22, 4B, 0C, C3, 51, 00, 2A,
|
||||||
|
0C, 0C, ED, 5B, 0E, 0C, ED, 4B,
|
||||||
|
10, 0C, ED, B0, C9, 00, 00, 00;
|
||||||
258
Nasbugt4.coe
Executable file
258
Nasbugt4.coe
Executable file
@@ -0,0 +1,258 @@
|
|||||||
|
memory_initialization_radix = 16;
|
||||||
|
memory_initialization_vector =
|
||||||
|
31, 33, 0C, C3, 57, 05, 00, 00,
|
||||||
|
31, 33, 0C, C3, 6D, 03, 00, 00,
|
||||||
|
E5, E1, E1, 23, E5, C3, B5, 05,
|
||||||
|
E5, E1, E1, 23, E5, C3, C2, 05,
|
||||||
|
E3, 2B, E3, C3, 05, 03, 00, 00,
|
||||||
|
E3, 7E, 23, B7, 20, 16, E3, C9,
|
||||||
|
C3, 4A, 0C, 00, 00, AF, F5, F1,
|
||||||
|
F5, F1, 3D, 20, F9, C9, CD, 4D,
|
||||||
|
0C, D8, 18, FA, F7, 18, E2, 00,
|
||||||
|
00, 00, F5, CD, 53, 00, F1, 18,
|
||||||
|
02, 3E, 10, E5, 21, 00, 0C, AE,
|
||||||
|
D3, 00, 77, E1, C9, F7, D3, 01,
|
||||||
|
DB, 02, 87, F8, 18, FA, C3, 47,
|
||||||
|
0C, C5, D5, E5, 3E, 02, CD, 4A,
|
||||||
|
00, 21, 01, 0C, DB, 00, 2F, 77,
|
||||||
|
06, 08, 3E, 01, CD, 4A, 00, 23,
|
||||||
|
DB, 00, 2F, 57, AE, 20, 07, 10,
|
||||||
|
F1, B7, C3, 70, 01, 00, CD, 35,
|
||||||
|
00, DB, 00, 2F, 5F, 7A, AE, 0E,
|
||||||
|
FF, 16, 00, 37, CB, 12, 0C, 1F,
|
||||||
|
30, FA, 7A, A3, 5F, 7E, A2, BB,
|
||||||
|
28, DD, 7E, AA, 77, 7B, B7, 28,
|
||||||
|
D6, 3A, 01, 0C, E6, 10, B0, 87,
|
||||||
|
87, 87, B1, ED, 4B, 3F, 0C, 2A,
|
||||||
|
43, 0C, ED, B1, 28, 0B, 2A, 43,
|
||||||
|
0C, ED, 4B, 3F, 0C, E6, 7F, ED,
|
||||||
|
B1, 20, B6, ED, 4B, 43, 0C, 37,
|
||||||
|
ED, 42, 7D, FE, 41, 38, 1E, FE,
|
||||||
|
5B, 30, 1A, 21, 01, 0C, CB, 66,
|
||||||
|
21, 41, 0C, 20, 08, CB, 46, 28,
|
||||||
|
0C, C6, 20, 18, 08, C6, 20, CB,
|
||||||
|
46, 28, 02, D6, 20, CD, DD, 04,
|
||||||
|
21, 41, 0C, CB, 56, 28, 02, EE,
|
||||||
|
80, 37, CB, 4E, CA, 8A, 00, FE,
|
||||||
|
20, 37, 28, F8, 21, 08, 0C, CB,
|
||||||
|
66, 28, F1, E1, D1, C1, CD, C6,
|
||||||
|
07, CD, 44, 02, B7, C3, 3C, 02,
|
||||||
|
00, 10, 60, 00, 00, 00, D4, 05,
|
||||||
|
55, 07, C3, 05, 03, C3, 3B, 01,
|
||||||
|
C3, F2, 04, B7, C8, C5, D5, E5,
|
||||||
|
F5, FE, 1E, 20, 2F, 21, 09, 08,
|
||||||
|
36, FF, 23, 06, 30, 36, 20, 23,
|
||||||
|
10, FB, 06, 10, 36, 00, 23, 10,
|
||||||
|
FB, EB, 21, 0A, 08, 01, B0, 03,
|
||||||
|
ED, B0, 3E, FF, 32, BA, 0B, 21,
|
||||||
|
8A, 0B, 36, 5F, 22, 18, 0C, F1,
|
||||||
|
E1, D1, C1, C9, 2A, 18, 0C, 36,
|
||||||
|
20, FE, 1D, 20, 0B, 2B, 7E, B7,
|
||||||
|
28, FB, 3C, 20, E5, 23, 18, E2,
|
||||||
|
FE, 1C, 28, DB, FE, 1F, 28, 09,
|
||||||
|
77, 23, 7E, B7, 28, FB, 3C, 20,
|
||||||
|
D1, 11, 0A, 08, 21, 4A, 08, 01,
|
||||||
|
70, 03, ED, B0, 06, 30, 2B, 36,
|
||||||
|
20, 10, FB, 18, BA, 2A, 0C, 0C,
|
||||||
|
CD, 32, 02, 7E, CD, 44, 02, CD,
|
||||||
|
81, 05, 11, 52, 0B, 06, 00, E5,
|
||||||
|
CD, 5A, 02, 7E, B7, 28, 08, 23,
|
||||||
|
7E, E1, 77, 04, 23, 18, F0, E1,
|
||||||
|
1A, FE, 2E, C8, 78, B7, C3, 8D,
|
||||||
|
05, 00, 00, EF, 3E, 00, CD, 3E,
|
||||||
|
00, FE, 1F, 28, 5B, F5, FE, 1D,
|
||||||
|
20, 06, ED, 5B, 18, 0C, 1B, 1A,
|
||||||
|
FE, 3E, 28, 04, F1, F7, 18, E6,
|
||||||
|
F1, AF, 18, F9, CD, 9B, 06, B7,
|
||||||
|
ED, 52, 19, 38, 05, EF, 2E, 1F,
|
||||||
|
00, C9, 0E, 00, EF, 20, 20, 00,
|
||||||
|
CD, 32, 02, 06, 08, 7E, CD, 2B,
|
||||||
|
02, 23, CD, 3C, 02, 10, F6, 79,
|
||||||
|
CD, 44, 02, EF, 1D, 1D, 1F, 00,
|
||||||
|
18, D5, 00, F5, 81, 4F, F1, C3,
|
||||||
|
44, 02, 7C, CD, 2B, 02, 7D, CD,
|
||||||
|
2B, 02, 00, 00, 3E, 20, 18, 17,
|
||||||
|
3E, 1F, 18, 13, F5, 1F, 1F, 1F,
|
||||||
|
1F, CD, 4D, 02, F1, E6, 0F, C6,
|
||||||
|
30, FE, 3A, 38, 02, C6, 07, C3,
|
||||||
|
4A, 0C, 1A, FE, 20, 13, 28, FA,
|
||||||
|
1B, AF, 21, 12, 0C, 77, 23, 77,
|
||||||
|
23, 77, 1A, 2B, 2B, D6, 30, F8,
|
||||||
|
FE, 0A, 38, 08, D6, 07, FE, 0A,
|
||||||
|
F8, FE, 10, F0, 13, 34, 23, ED,
|
||||||
|
6F, 23, ED, 6F, 18, E4, CD, 81,
|
||||||
|
05, 11, 4B, 0B, 01, 0A, 0C, 1A,
|
||||||
|
FE, 20, 20, 05, 0A, FE, 53, 20,
|
||||||
|
ED, 02, 03, 13, AF, 02, 03, CD,
|
||||||
|
5A, 02, 7E, B7, 28, 1C, 23, 7E,
|
||||||
|
02, 23, 03, 7E, 02, 21, 0B, 0C,
|
||||||
|
34, 7E, FE, 04, 38, E8, F5, F1,
|
||||||
|
EF, 45, 72, 72, 6F, 72, 1F, 00,
|
||||||
|
18, C4, 3A, 0A, 0C, 2A, 45, 0C,
|
||||||
|
CD, 66, 04, 11, 86, 02, D5, E9,
|
||||||
|
3E, FF, 32, 1A, 0C, 21, 05, 03,
|
||||||
|
22, 48, 0C, E1, 3A, 0B, 0C, B7,
|
||||||
|
28, 06, 2A, 0C, 0C, 22, 3B, 0C,
|
||||||
|
C1, D1, F1, F1, 2A, 3D, 0C, F9,
|
||||||
|
2A, 3B, 0C, E5, 2A, 37, 0C, F5,
|
||||||
|
3E, 08, D3, 00, F1, ED, 45, AF,
|
||||||
|
32, 1A, 0C, 18, D0, F5, E5, 3A,
|
||||||
|
00, 0C, D3, 00, 3A, 1A, 0C, B7,
|
||||||
|
28, 13, 2A, 15, 0C, 7E, 32, 17,
|
||||||
|
0C, 36, E7, AF, 32, 1A, 0C, 00,
|
||||||
|
00, E1, F1, ED, 45, D5, C5, 21,
|
||||||
|
00, 00, 39, 11, 33, 0C, 31, 33,
|
||||||
|
0C, 01, 08, 00, ED, B0, 5E, 23,
|
||||||
|
56, 23, 00, ED, 53, 3B, 0C, 22,
|
||||||
|
3D, 0C, CD, A5, 05, 06, 06, 2B,
|
||||||
|
7E, CD, 44, 02, 2B, 7E, CD, 44,
|
||||||
|
02, CD, 3C, 02, 10, F1, CD, D9,
|
||||||
|
06, 00, 00, 00, 2A, 15, 0C, 3A,
|
||||||
|
17, 0C, 77, AF, 32, 1A, 0C, CD,
|
||||||
|
A5, 05, C3, 86, 02, 2A, 28, 01,
|
||||||
|
22, 3D, 0C, 18, E7, CD, 3B, 01,
|
||||||
|
C3, 5E, 00, 00, CD, 51, 00, EF,
|
||||||
|
1C, 00, 00, CD, 3E, 00, FE, 2E,
|
||||||
|
28, 09, FE, 1F, 28, 0C, F4, 4A,
|
||||||
|
0C, 18, F0, EF, 1C, 2E, 1F, 00,
|
||||||
|
18, 63, 11, 8A, 0B, CD, 5A, 02,
|
||||||
|
7E, B7, 28, 28, 2A, 13, 0C, 7D,
|
||||||
|
84, 4F, E5, 21, 00, 08, 44, E5,
|
||||||
|
E5, CD, 5A, 02, 23, 7E, E1, 77,
|
||||||
|
23, 81, 4F, 10, F3, CD, 5A, 02,
|
||||||
|
23, 7E, B9, E1, D1, 20, 05, 4C,
|
||||||
|
ED, B0, 18, B3, CD, 40, 02, 18,
|
||||||
|
AE, CD, 51, 00, AF, 47, FF, 10,
|
||||||
|
FD, 2A, 4B, 0C, E5, 21, 75, 03,
|
||||||
|
22, 4B, 0C, CD, 40, 02, CD, FC,
|
||||||
|
01, E1, 22, 4B, 0C, 18, 0E, 2A,
|
||||||
|
0C, 0C, ED, 5B, 0E, 0C, ED, 4B,
|
||||||
|
10, 0C, ED, B0, C9, C3, 51, 00,
|
||||||
|
CD, 51, 00, AF, 47, FF, 10, FD,
|
||||||
|
2A, 0C, 0C, ED, 5B, 0E, 0C, EB,
|
||||||
|
37, ED, 52, DA, 51, 00, EB, AF,
|
||||||
|
FF, 00, 06, 05, AF, CD, 5E, 00,
|
||||||
|
3E, FF, 10, F9, AF, BA, 20, 02,
|
||||||
|
43, 04, 58, 7D, CD, 5E, 00, 7C,
|
||||||
|
CD, 5E, 00, 7B, CD, 5E, 00, 7A,
|
||||||
|
CD, 5E, 00, 0E, 00, CD, 5B, 04,
|
||||||
|
79, CD, 5E, 00, CD, CC, 06, 06,
|
||||||
|
0B, 79, CD, 5E, 00, AF, 10, FA,
|
||||||
|
CD, 40, 02, 18, B6, 1F, 45, 30,
|
||||||
|
1F, 52, 1F, CD, C6, 07, CD, 61,
|
||||||
|
04, CD, 32, 02, EB, C9, D5, 5F,
|
||||||
|
7E, 23, B7, 28, 07, BB, 28, 04,
|
||||||
|
23, 23, 18, F4, 5E, 23, 56, EB,
|
||||||
|
D1, C9, 21, CF, 07, 22, 4E, 0C,
|
||||||
|
21, BA, 04, 22, 4B, 0C, 3A, 0C,
|
||||||
|
0C, 32, 42, 0C, C9, 28, 05, B7,
|
||||||
|
28, 02, CB, FE, E1, 37, C9, 00,
|
||||||
|
2A, 45, 0C, 7E, B7, CA, 40, 02,
|
||||||
|
F7, CD, 3C, 02, 23, 23, 23, 18,
|
||||||
|
F2, 1F, 0D, 1F, 1E, 1B, 1E, 1D,
|
||||||
|
08, 1D, 1C, 0A, 00, 7F, 7F, 00,
|
||||||
|
00, 00, CD, 3B, 01, F5, CD, 02,
|
||||||
|
05, E5, 21, 42, 0C, CB, 7E, CC,
|
||||||
|
CF, 04, CB, BE, E1, F1, C9, CD,
|
||||||
|
ED, 07, FE, 0D, C0, CB, 66, C0,
|
||||||
|
3E, 0A, C3, ED, 07, 21, 01, 0C,
|
||||||
|
FE, 40, 20, 07, CB, 66, C0, F1,
|
||||||
|
C3, 89, 00, CB, 6E, 28, 02, EE,
|
||||||
|
40, C9, CD, 69, 00, D8, DB, 02,
|
||||||
|
17, D0, DB, 01, 37, C9, CD, F2,
|
||||||
|
04, D0, E5, 21, A9, 04, C3, 9A,
|
||||||
|
07, 00, 2A, 0C, 0C, 22, 45, 0C,
|
||||||
|
C9, 00, 3D, 00, CD, 97, 06, B7,
|
||||||
|
ED, 52, 19, D2, FA, 03, 0B, EB,
|
||||||
|
09, EB, 09, 03, ED, B8, C9, CD,
|
||||||
|
9B, 06, EB, E5, 19, CD, 32, 02,
|
||||||
|
E1, B7, ED, 52, CD, 32, 02, 2B,
|
||||||
|
2B, 7C, FE, FF, 20, 0A, CB, 7D,
|
||||||
|
20, 0D, EF, 3F, 3F, 1F, 00, C9,
|
||||||
|
B7, 20, F7, CB, 7D, 20, F3, 7D,
|
||||||
|
CD, 44, 02, C3, 40, 02, 00, 2A,
|
||||||
|
15, 0C, 3A, 17, 0C, 77, 21, 00,
|
||||||
|
0C, 06, 18, 36, 00, 23, 10, FB,
|
||||||
|
21, 28, 01, 11, 3D, 0C, 01, 13,
|
||||||
|
00, ED, B0, EF, 1E, 4E, 41, 53,
|
||||||
|
42, 55, 47, 20, 34, 00, C3, 63,
|
||||||
|
03, E5, 2A, 15, 0C, 7E, 32, 17,
|
||||||
|
0C, E1, C3, DB, 01, 20, 01, 23,
|
||||||
|
1A, FE, 3A, 20, 02, 2B, 2B, FE,
|
||||||
|
2F, 20, 07, 13, CD, 5A, 02, 2A,
|
||||||
|
13, 0C, C3, B0, 01, 2A, 18, 0C,
|
||||||
|
11, 8A, 0B, B7, ED, 52, 21, 3F,
|
||||||
|
0C, C2, 40, 02, C9, 2B, 3B, 3B,
|
||||||
|
F5, D5, 5E, 7B, 17, 9F, 57, 23,
|
||||||
|
18, 0D, 2B, 3B, 3B, F5, D5, 5E,
|
||||||
|
16, 00, 21, 00, 0E, 19, 19, 19,
|
||||||
|
D1, F1, E3, C9, FF, FF, FF, FF,
|
||||||
|
FF, FF, FF, FF, FF, FF, FF, FF,
|
||||||
|
FF, FF, FF, FF, FF, FF, FF, FF,
|
||||||
|
FF, FF, FF, FF, FF, FF, FF, FF,
|
||||||
|
89, 08, 88, 09, 14, 9C, 9B, A3,
|
||||||
|
92, C2, BA, B2, AA, A2, 98, A0,
|
||||||
|
29, 0A, 21, 19, 1A, 1C, 1B, 23,
|
||||||
|
12, 42, 3A, 32, 2A, 22, 18, 20,
|
||||||
|
A9, 8A, A1, 99, 0D, 2C, 41, 13,
|
||||||
|
3B, 33, 43, 10, 40, 2D, 38, 30,
|
||||||
|
28, 31, 39, 25, 1D, 24, 15, 34,
|
||||||
|
45, 35, 11, 2B, 44, 3D, 3C, FF,
|
||||||
|
FF, FF, 9A, FF, 3A, 0C, 0C, 32,
|
||||||
|
41, 0C, C9, 2A, 0C, 0C, 22, 15,
|
||||||
|
0C, C9, CD, 32, 02, CD, C6, 07,
|
||||||
|
3E, 1F, C3, 5D, 00, 00, 00, 00,
|
||||||
|
00, 0E, 00, CD, 3E, 00, 77, 81,
|
||||||
|
4F, 23, 10, F7, CD, 3E, 00, B9,
|
||||||
|
28, 0A, EF, 45, 72, 72, 6F, 72,
|
||||||
|
1F, 00, 18, 08, CD, 40, 02, AF,
|
||||||
|
BA, CA, 51, 00, C3, 0F, 07, ED,
|
||||||
|
4B, 0C, 0C, 3A, 0E, 0C, ED, 79,
|
||||||
|
18, 06, ED, 4B, 0C, 0C, ED, 78,
|
||||||
|
F5, 79, CD, 44, 02, CD, 3C, 02,
|
||||||
|
F1, CD, 44, 02, C3, 40, 02, ED,
|
||||||
|
4B, 10, 0C, ED, 5B, 0E, 0C, 2A,
|
||||||
|
0C, 0C, C9, 21, 55, 04, 06, 06,
|
||||||
|
CD, C6, 07, 7E, CD, 5D, 00, AF,
|
||||||
|
FF, FF, FF, 23, 10, F5, CD, 00,
|
||||||
|
04, AF, FF, 3E, 45, CD, 5D, 00,
|
||||||
|
21, 75, 03, 22, 4B, 0C, 2A, 10,
|
||||||
|
0C, C3, 42, 06, 0E, 00, 7E, 81,
|
||||||
|
4F, 7E, CD, 5E, 00, 23, 10, F6,
|
||||||
|
C9, ED, 57, CD, 44, 02, CD, 3C,
|
||||||
|
02, DD, E5, E1, CD, 32, 02, FD,
|
||||||
|
E5, E1, CD, 32, 02, 3A, 39, 0C,
|
||||||
|
11, FF, 06, 06, 08, 13, 17, F5,
|
||||||
|
1A, DC, 4A, 0C, F1, 10, F6, C9,
|
||||||
|
53, 5A, 00, 48, 00, 50, 4E, 43,
|
||||||
|
00, 00, 00, 00, CD, 51, 00, CD,
|
||||||
|
3E, 00, FE, FF, 20, 0D, 06, 03,
|
||||||
|
CD, 3E, 00, FE, FF, 20, 04, 10,
|
||||||
|
F7, 18, 12, FE, 1E, 20, E8, 06,
|
||||||
|
03, CD, 3E, 00, FE, 1E, 20, E2,
|
||||||
|
10, F7, C3, 51, 00, CD, 3E, 00,
|
||||||
|
6F, CD, 3E, 00, 67, CD, 3E, 00,
|
||||||
|
5F, CD, 3E, 00, 57, 0E, 00, CD,
|
||||||
|
5B, 04, CD, 3E, 00, B9, C2, 62,
|
||||||
|
06, 43, C3, 51, 06, 41, 27, 05,
|
||||||
|
42, 3B, 06, 43, EF, 03, 44, D1,
|
||||||
|
03, 45, D0, 02, 47, A3, 06, 49,
|
||||||
|
14, 05, 4B, 34, 06, 4C, 7C, 03,
|
||||||
|
4D, AD, 01, 4E, C0, 07, 4F, 77,
|
||||||
|
06, 51, 82, 06, 52, 0C, 07, 53,
|
||||||
|
FF, 02, 54, FC, 01, 57, 00, 04,
|
||||||
|
58, 7A, 04, 5A, 0A, 05, 3F, 98,
|
||||||
|
04, 00, B7, 02, CD, 3E, 00, F7,
|
||||||
|
18, FA, F5, CD, 66, 04, B7, 28,
|
||||||
|
04, F1, 7D, E1, C9, F1, E1, C9,
|
||||||
|
CD, AE, 07, C3, 3B, 01, E5, 21,
|
||||||
|
AA, 04, 18, E6, 21, FE, 04, 22,
|
||||||
|
4E, 0C, 21, A8, 07, E5, 18, 0A,
|
||||||
|
2A, 39, 01, 22, 4E, 0C, E5, 2A,
|
||||||
|
36, 01, 22, 4B, 0C, E1, C9, CD,
|
||||||
|
69, 00, D8, CD, F6, 04, D0, E6,
|
||||||
|
7F, E5, F5, 21, 42, 0C, CB, 6E,
|
||||||
|
CC, CF, 04, F1, CD, AE, 07, FE,
|
||||||
|
1E, C3, 8D, 04, 00, B7, C8, F5,
|
||||||
|
EA, F5, 07, EE, 80, CB, 46, 28,
|
||||||
|
02, EE, 80, CD, 5E, 00, F1, C9;
|
||||||
258
Naschr-1.coe
Executable file
258
Naschr-1.coe
Executable file
@@ -0,0 +1,258 @@
|
|||||||
|
memory_initialization_radix = 16;
|
||||||
|
memory_initialization_vector =
|
||||||
|
7F, 41, 41, 41, 41, 41, 41, 41,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 40, 40, 40, 40, 40, 40, 40,
|
||||||
|
40, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
08, 08, 08, 08, 08, 08, 08, 08,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
01, 01, 01, 01, 01, 01, 01, 01,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
20, 10, 08, 04, 3E, 10, 08, 04,
|
||||||
|
02, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 41, 63, 55, 49, 55, 63, 41,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 01, 02, 04, 48, 50, 60, 40,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 22, 41, 41, 41, 7F, 14, 14,
|
||||||
|
77, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
10, 20, 7C, 22, 11, 01, 01, 01,
|
||||||
|
01, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 08, 04, 02, 7F, 02, 04, 08,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 00, 00, 00, 7F, 00, 00, 00,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 08, 08, 08, 49, 2A, 1C, 08,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
08, 08, 2A, 1C, 08, 49, 2A, 1C,
|
||||||
|
08, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 08, 10, 20, 7F, 20, 10, 08,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 22, 63, 55, 49, 55, 63, 22,
|
||||||
|
1C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 22, 41, 41, 49, 41, 41, 22,
|
||||||
|
1C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 41, 41, 41, 7F, 41, 41, 41,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 2A, 49, 49, 4F, 41, 41, 22,
|
||||||
|
1C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 22, 41, 41, 4F, 49, 49, 2A,
|
||||||
|
1C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 22, 41, 41, 79, 49, 49, 2A,
|
||||||
|
1C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 2A, 49, 49, 79, 41, 41, 22,
|
||||||
|
1C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 11, 0A, 04, 4A, 51, 60, 40,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3E, 22, 22, 22, 22, 22, 22, 22,
|
||||||
|
63, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
01, 01, 01, 01, 7F, 01, 01, 01,
|
||||||
|
01, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 41, 22, 14, 08, 14, 22, 41,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
08, 08, 08, 1C, 1C, 08, 08, 08,
|
||||||
|
08, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3C, 42, 42, 40, 30, 08, 08, 00,
|
||||||
|
08, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 22, 41, 41, 7F, 41, 41, 22,
|
||||||
|
1C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 49, 49, 49, 79, 41, 41, 41,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 41, 41, 41, 79, 49, 49, 49,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 41, 41, 41, 4F, 49, 49, 49,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 49, 49, 49, 4F, 41, 41, 41,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
08, 08, 08, 08, 08, 00, 00, 08,
|
||||||
|
08, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
24, 24, 24, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 22, 20, 20, 70, 20, 20, 21,
|
||||||
|
7E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
08, 3F, 48, 48, 3E, 09, 09, 7E,
|
||||||
|
08, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
20, 51, 22, 04, 08, 10, 22, 45,
|
||||||
|
02, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
38, 44, 44, 28, 10, 29, 46, 46,
|
||||||
|
39, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
0C, 0C, 08, 10, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
04, 08, 10, 10, 10, 10, 10, 08,
|
||||||
|
04, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
10, 08, 04, 04, 04, 04, 04, 08,
|
||||||
|
10, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 08, 49, 2A, 1C, 2A, 49, 08,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 08, 08, 08, 7F, 08, 08, 08,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 18,
|
||||||
|
18, 10, 20, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 7F, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 18,
|
||||||
|
18, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 01, 02, 04, 08, 10, 20, 40,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3E, 41, 43, 45, 49, 51, 61, 41,
|
||||||
|
3E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
08, 18, 28, 08, 08, 08, 08, 08,
|
||||||
|
3E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3E, 41, 01, 02, 1C, 20, 40, 40,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3E, 41, 01, 01, 1E, 01, 01, 41,
|
||||||
|
3E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
02, 06, 0A, 12, 22, 42, 7F, 02,
|
||||||
|
02, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 40, 40, 7C, 02, 01, 01, 42,
|
||||||
|
3C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1E, 20, 40, 40, 7E, 41, 41, 41,
|
||||||
|
3E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 41, 02, 04, 08, 10, 10, 10,
|
||||||
|
10, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3E, 41, 41, 41, 3E, 41, 41, 41,
|
||||||
|
3E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3E, 41, 41, 41, 3F, 01, 01, 02,
|
||||||
|
3C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 18, 18, 00, 00, 18,
|
||||||
|
18, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 18, 18, 00, 00, 18,
|
||||||
|
18, 10, 20, 00, 00, 00, 00, 00,
|
||||||
|
04, 08, 10, 20, 40, 20, 10, 08,
|
||||||
|
04, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 3E, 00, 3E, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
10, 08, 04, 02, 01, 02, 04, 08,
|
||||||
|
10, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1E, 21, 21, 01, 06, 08, 08, 00,
|
||||||
|
08, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1E, 21, 4D, 55, 55, 5E, 40, 20,
|
||||||
|
1E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 22, 41, 41, 7F, 41, 41, 41,
|
||||||
|
41, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7E, 21, 21, 21, 3E, 21, 21, 21,
|
||||||
|
7E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1E, 21, 40, 40, 40, 40, 40, 21,
|
||||||
|
1E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7C, 22, 21, 21, 21, 21, 21, 22,
|
||||||
|
7C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 40, 40, 40, 78, 40, 40, 40,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 40, 40, 40, 78, 40, 40, 40,
|
||||||
|
40, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1E, 21, 40, 40, 40, 4F, 41, 21,
|
||||||
|
1E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
41, 41, 41, 41, 7F, 41, 41, 41,
|
||||||
|
41, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3E, 08, 08, 08, 08, 08, 08, 08,
|
||||||
|
3E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1F, 04, 04, 04, 04, 04, 04, 44,
|
||||||
|
38, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
41, 42, 44, 48, 50, 68, 44, 42,
|
||||||
|
41, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
40, 40, 40, 40, 40, 40, 40, 40,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
41, 63, 55, 49, 49, 41, 41, 41,
|
||||||
|
41, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
41, 61, 51, 49, 45, 43, 41, 41,
|
||||||
|
41, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 22, 41, 41, 41, 41, 41, 22,
|
||||||
|
1C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7E, 41, 41, 41, 7E, 40, 40, 40,
|
||||||
|
40, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
1C, 22, 41, 41, 41, 49, 45, 22,
|
||||||
|
1D, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7E, 41, 41, 41, 7E, 48, 44, 42,
|
||||||
|
41, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3E, 41, 40, 40, 3E, 01, 01, 41,
|
||||||
|
3E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 08, 08, 08, 08, 08, 08, 08,
|
||||||
|
08, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
41, 41, 41, 41, 41, 41, 41, 41,
|
||||||
|
3E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
41, 41, 41, 22, 22, 14, 14, 08,
|
||||||
|
08, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
41, 41, 41, 41, 49, 49, 55, 63,
|
||||||
|
41, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
41, 41, 22, 14, 08, 14, 22, 41,
|
||||||
|
41, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
41, 41, 22, 14, 08, 08, 08, 08,
|
||||||
|
08, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 01, 02, 04, 08, 10, 20, 40,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3C, 20, 20, 20, 20, 20, 20, 20,
|
||||||
|
3C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 40, 20, 10, 08, 04, 02, 01,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
3C, 04, 04, 04, 04, 04, 04, 04,
|
||||||
|
3C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 08, 1C, 2A, 49, 08, 08, 08,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
18, 18, 08, 04, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 3C, 02, 3E, 42, 42,
|
||||||
|
3D, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
40, 40, 40, 5C, 62, 42, 42, 62,
|
||||||
|
5C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 3C, 42, 40, 40, 42,
|
||||||
|
3C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
02, 02, 02, 3A, 46, 42, 42, 46,
|
||||||
|
3A, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 3C, 42, 7E, 40, 40,
|
||||||
|
3C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
0C, 12, 10, 10, 7C, 10, 10, 10,
|
||||||
|
10, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 3A, 46, 42, 42, 46,
|
||||||
|
3A, 02, 42, 3C, 00, 00, 00, 00,
|
||||||
|
40, 40, 40, 5C, 62, 42, 42, 42,
|
||||||
|
42, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 08, 00, 18, 08, 08, 08, 08,
|
||||||
|
1C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 02, 00, 06, 02, 02, 02, 02,
|
||||||
|
02, 02, 22, 1C, 00, 00, 00, 00,
|
||||||
|
40, 40, 40, 44, 48, 50, 68, 44,
|
||||||
|
42, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
18, 08, 08, 08, 08, 08, 08, 08,
|
||||||
|
1C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 76, 49, 49, 49, 49,
|
||||||
|
49, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 5C, 62, 42, 42, 42,
|
||||||
|
42, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 3C, 42, 42, 42, 42,
|
||||||
|
3C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 5C, 62, 42, 42, 62,
|
||||||
|
5C, 40, 40, 40, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 3A, 46, 42, 42, 46,
|
||||||
|
3A, 02, 02, 02, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 5C, 62, 40, 40, 40,
|
||||||
|
40, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 3C, 42, 30, 0C, 42,
|
||||||
|
3C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 10, 10, 7C, 10, 10, 10, 12,
|
||||||
|
0C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 42, 42, 42, 42, 46,
|
||||||
|
3A, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 41, 41, 41, 22, 14,
|
||||||
|
08, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 41, 49, 49, 49, 49,
|
||||||
|
36, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 42, 24, 18, 18, 24,
|
||||||
|
42, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 42, 42, 42, 42, 46,
|
||||||
|
3A, 02, 42, 3C, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 7E, 04, 08, 10, 20,
|
||||||
|
7E, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
0C, 10, 10, 10, 20, 10, 10, 10,
|
||||||
|
0C, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
08, 08, 08, 00, 00, 08, 08, 08,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
18, 04, 04, 04, 02, 04, 04, 04,
|
||||||
|
18, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
7F, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
00, 00, 00, 00, 00, 00, 00, 00,
|
||||||
|
24, 49, 12, 24, 49, 12, 24, 49,
|
||||||
|
12, 00, 00, 00, 00, 00, 00, 00;
|
||||||
29
ROM_form.coe
Executable file
29
ROM_form.coe
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
component_name={name};
|
||||||
|
width_a=18;
|
||||||
|
depth_a=1024;
|
||||||
|
configuration_port_a=read_only;
|
||||||
|
port_a_enable_pin=false;
|
||||||
|
port_a_handshaking_pins=false;
|
||||||
|
port_a_register_inputs=false;
|
||||||
|
port_a_init_pin=false;
|
||||||
|
port_a_init_value=00000;
|
||||||
|
port_a_additional_output_pipe_stages = 0;
|
||||||
|
port_a_register_inputs = false;
|
||||||
|
port_a_active_clock_edge = Rising_Edge_Triggered;
|
||||||
|
width_b=18;
|
||||||
|
depth_b=1024;
|
||||||
|
configuration_port_b=read_and_write;
|
||||||
|
write_mode_port_b=read_after_write;
|
||||||
|
port_b_enable_pin=false;
|
||||||
|
port_b_handshaking_pins=false;
|
||||||
|
port_b_register_inputs=false;
|
||||||
|
port_b_init_pin=false;
|
||||||
|
port_b_init_value=00000;
|
||||||
|
port_b_additional_output_pipe_stages = 0;
|
||||||
|
port_b_register_inputs = false;
|
||||||
|
port_b_active_clock_edge = Rising_Edge_Triggered;
|
||||||
|
port_b_write_enable_polarity = Active_High;
|
||||||
|
memory_initialization_radix=16;
|
||||||
|
global_init_value=00000;
|
||||||
|
memory_initialization_vector=
|
||||||
|
|
||||||
350
ROM_form.v
Executable file
350
ROM_form.v
Executable file
@@ -0,0 +1,350 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (c) 2004 Xilinx, Inc.
|
||||||
|
// All Rights Reserved
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// ____ ____
|
||||||
|
// / /\/ /
|
||||||
|
// /___/ \ / Vendor: Xilinx
|
||||||
|
// \ \ \/ Version: 1.02
|
||||||
|
// \ \ Filename: ROM_form.v
|
||||||
|
// / / Date Last Modified: September 7 2004
|
||||||
|
// /___/ /\ Date Created: July 2003
|
||||||
|
// \ \ / \
|
||||||
|
// \___\/\___\
|
||||||
|
//
|
||||||
|
//Device: Xilinx
|
||||||
|
//Purpose:
|
||||||
|
// This is the Verilog template file for the KCPSM3 assembler.
|
||||||
|
// It is used to configure a Spartan-3, Virtex-II or Virtex-IIPRO block
|
||||||
|
// RAM to act as a single port program ROM.
|
||||||
|
//
|
||||||
|
// This Verilog file is not valid as input directly into a synthesis or
|
||||||
|
// simulation tool. The assembler will read this template and insert the
|
||||||
|
// data required to complete the definition of program ROM and write it out
|
||||||
|
// to a new '.v' file associated with the name of the original '.psm' file
|
||||||
|
// being assembled.
|
||||||
|
//
|
||||||
|
// This template can be modified to define alternative memory definitions
|
||||||
|
// such as dual port. However, you are responsible for ensuring the template
|
||||||
|
// is correct as the assembler does not perform any checking of the Verilog.
|
||||||
|
//
|
||||||
|
// The assembler identifies all text enclosed by {} characters, and replaces
|
||||||
|
// these character strings. All templates should include these {} character
|
||||||
|
// strings for the assembler to work correctly.
|
||||||
|
//
|
||||||
|
// This template defines a block RAM configured in 1024 x 18-bit single port
|
||||||
|
// mode and conneceted to act as a single port ROM.
|
||||||
|
//
|
||||||
|
//Reference:
|
||||||
|
// None
|
||||||
|
//Revision History:
|
||||||
|
// Rev 1.00 - jc - Converted to verilog, July 2003.
|
||||||
|
// Rev 1.01 - sus - Added text to confirm to Xilinx HDL std, August 4 2004.
|
||||||
|
// Rev 1.02 - njs - Added attributes for Synplicity August 5 2004.
|
||||||
|
// Rev 1.03 - sus - Added text to conform to Xilinx generated
|
||||||
|
// HDL spec, September 7 2004
|
||||||
|
//
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Contact: e-mail picoblaze@xilinx.com
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Disclaimer:
|
||||||
|
// LIMITED WARRANTY AND DISCLAIMER. 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.
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
The next line is used to determine where the template actually starts and must exist.
|
||||||
|
{begin template}
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (c) 2004 Xilinx, Inc.
|
||||||
|
// All Rights Reserved
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// ____ ____
|
||||||
|
// / /\/ /
|
||||||
|
// /___/ \ / Vendor: Xilinx
|
||||||
|
// \ \ \/ Version: v1.30
|
||||||
|
// \ \ Application : KCPSM3
|
||||||
|
// / / Filename: {name}.v
|
||||||
|
// /___/ /\
|
||||||
|
// \ \ / \
|
||||||
|
// \___\/\___\
|
||||||
|
//
|
||||||
|
//Command: kcpsm3 {name}.psm
|
||||||
|
//Device: Spartan-3, Spartan-3E, Virtex-II, and Virtex-II Pro FPGAs
|
||||||
|
//Design Name: {name}
|
||||||
|
//Generated {timestamp}.
|
||||||
|
//Purpose:
|
||||||
|
// {name} verilog program definition.
|
||||||
|
//
|
||||||
|
//Reference:
|
||||||
|
// PicoBlaze 8-bit Embedded Microcontroller User Guide
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
`timescale 1 ps / 1ps
|
||||||
|
|
||||||
|
module {name} (address, instruction, clk);
|
||||||
|
|
||||||
|
input [9:0] address;
|
||||||
|
input clk;
|
||||||
|
|
||||||
|
output [17:0] instruction;
|
||||||
|
|
||||||
|
RAMB16_S18 ram_1024_x_18(
|
||||||
|
.DI (16'h0000),
|
||||||
|
.DIP (2'b00),
|
||||||
|
.EN (1'b1),
|
||||||
|
.WE (1'b0),
|
||||||
|
.SSR (1'b0),
|
||||||
|
.CLK (clk),
|
||||||
|
.ADDR (address),
|
||||||
|
.DO (instruction[15:0]),
|
||||||
|
.DOP (instruction[17:16]))
|
||||||
|
/*synthesis
|
||||||
|
init_00 = "{INIT_00}"
|
||||||
|
init_01 = "{INIT_01}"
|
||||||
|
init_02 = "{INIT_02}"
|
||||||
|
init_03 = "{INIT_03}"
|
||||||
|
init_04 = "{INIT_04}"
|
||||||
|
init_05 = "{INIT_05}"
|
||||||
|
init_06 = "{INIT_06}"
|
||||||
|
init_07 = "{INIT_07}"
|
||||||
|
init_08 = "{INIT_08}"
|
||||||
|
init_09 = "{INIT_09}"
|
||||||
|
init_0A = "{INIT_0A}"
|
||||||
|
init_0B = "{INIT_0B}"
|
||||||
|
init_0C = "{INIT_0C}"
|
||||||
|
init_0D = "{INIT_0D}"
|
||||||
|
init_0E = "{INIT_0E}"
|
||||||
|
init_0F = "{INIT_0F}"
|
||||||
|
init_10 = "{INIT_10}"
|
||||||
|
init_11 = "{INIT_11}"
|
||||||
|
init_12 = "{INIT_12}"
|
||||||
|
init_13 = "{INIT_13}"
|
||||||
|
init_14 = "{INIT_14}"
|
||||||
|
init_15 = "{INIT_15}"
|
||||||
|
init_16 = "{INIT_16}"
|
||||||
|
init_17 = "{INIT_17}"
|
||||||
|
init_18 = "{INIT_18}"
|
||||||
|
init_19 = "{INIT_19}"
|
||||||
|
init_1A = "{INIT_1A}"
|
||||||
|
init_1B = "{INIT_1B}"
|
||||||
|
init_1C = "{INIT_1C}"
|
||||||
|
init_1D = "{INIT_1D}"
|
||||||
|
init_1E = "{INIT_1E}"
|
||||||
|
init_1F = "{INIT_1F}"
|
||||||
|
init_20 = "{INIT_20}"
|
||||||
|
init_21 = "{INIT_21}"
|
||||||
|
init_22 = "{INIT_22}"
|
||||||
|
init_23 = "{INIT_23}"
|
||||||
|
init_24 = "{INIT_24}"
|
||||||
|
init_25 = "{INIT_25}"
|
||||||
|
init_26 = "{INIT_26}"
|
||||||
|
init_27 = "{INIT_27}"
|
||||||
|
init_28 = "{INIT_28}"
|
||||||
|
init_29 = "{INIT_29}"
|
||||||
|
init_2A = "{INIT_2A}"
|
||||||
|
init_2B = "{INIT_2B}"
|
||||||
|
init_2C = "{INIT_2C}"
|
||||||
|
init_2D = "{INIT_2D}"
|
||||||
|
init_2E = "{INIT_2E}"
|
||||||
|
init_2F = "{INIT_2F}"
|
||||||
|
init_30 = "{INIT_30}"
|
||||||
|
init_31 = "{INIT_31}"
|
||||||
|
init_32 = "{INIT_32}"
|
||||||
|
init_33 = "{INIT_33}"
|
||||||
|
init_34 = "{INIT_34}"
|
||||||
|
init_35 = "{INIT_35}"
|
||||||
|
init_36 = "{INIT_36}"
|
||||||
|
init_37 = "{INIT_37}"
|
||||||
|
init_38 = "{INIT_38}"
|
||||||
|
init_39 = "{INIT_39}"
|
||||||
|
init_3A = "{INIT_3A}"
|
||||||
|
init_3B = "{INIT_3B}"
|
||||||
|
init_3C = "{INIT_3C}"
|
||||||
|
init_3D = "{INIT_3D}"
|
||||||
|
init_3E = "{INIT_3E}"
|
||||||
|
init_3F = "{INIT_3F}"
|
||||||
|
initp_00 = "{INITP_00}"
|
||||||
|
initp_01 = "{INITP_01}"
|
||||||
|
initp_02 = "{INITP_02}"
|
||||||
|
initp_03 = "{INITP_03}"
|
||||||
|
initp_04 = "{INITP_04}"
|
||||||
|
initp_05 = "{INITP_05}"
|
||||||
|
initp_06 = "{INITP_06}"
|
||||||
|
initp_07 = "{INITP_07}" */;
|
||||||
|
|
||||||
|
// synthesis translate_off
|
||||||
|
// Attributes for Simulation
|
||||||
|
defparam ram_1024_x_18.INIT_00 = 256'h{INIT_00};
|
||||||
|
defparam ram_1024_x_18.INIT_01 = 256'h{INIT_01};
|
||||||
|
defparam ram_1024_x_18.INIT_02 = 256'h{INIT_02};
|
||||||
|
defparam ram_1024_x_18.INIT_03 = 256'h{INIT_03};
|
||||||
|
defparam ram_1024_x_18.INIT_04 = 256'h{INIT_04};
|
||||||
|
defparam ram_1024_x_18.INIT_05 = 256'h{INIT_05};
|
||||||
|
defparam ram_1024_x_18.INIT_06 = 256'h{INIT_06};
|
||||||
|
defparam ram_1024_x_18.INIT_07 = 256'h{INIT_07};
|
||||||
|
defparam ram_1024_x_18.INIT_08 = 256'h{INIT_08};
|
||||||
|
defparam ram_1024_x_18.INIT_09 = 256'h{INIT_09};
|
||||||
|
defparam ram_1024_x_18.INIT_0A = 256'h{INIT_0A};
|
||||||
|
defparam ram_1024_x_18.INIT_0B = 256'h{INIT_0B};
|
||||||
|
defparam ram_1024_x_18.INIT_0C = 256'h{INIT_0C};
|
||||||
|
defparam ram_1024_x_18.INIT_0D = 256'h{INIT_0D};
|
||||||
|
defparam ram_1024_x_18.INIT_0E = 256'h{INIT_0E};
|
||||||
|
defparam ram_1024_x_18.INIT_0F = 256'h{INIT_0F};
|
||||||
|
defparam ram_1024_x_18.INIT_10 = 256'h{INIT_10};
|
||||||
|
defparam ram_1024_x_18.INIT_11 = 256'h{INIT_11};
|
||||||
|
defparam ram_1024_x_18.INIT_12 = 256'h{INIT_12};
|
||||||
|
defparam ram_1024_x_18.INIT_13 = 256'h{INIT_13};
|
||||||
|
defparam ram_1024_x_18.INIT_14 = 256'h{INIT_14};
|
||||||
|
defparam ram_1024_x_18.INIT_15 = 256'h{INIT_15};
|
||||||
|
defparam ram_1024_x_18.INIT_16 = 256'h{INIT_16};
|
||||||
|
defparam ram_1024_x_18.INIT_17 = 256'h{INIT_17};
|
||||||
|
defparam ram_1024_x_18.INIT_18 = 256'h{INIT_18};
|
||||||
|
defparam ram_1024_x_18.INIT_19 = 256'h{INIT_19};
|
||||||
|
defparam ram_1024_x_18.INIT_1A = 256'h{INIT_1A};
|
||||||
|
defparam ram_1024_x_18.INIT_1B = 256'h{INIT_1B};
|
||||||
|
defparam ram_1024_x_18.INIT_1C = 256'h{INIT_1C};
|
||||||
|
defparam ram_1024_x_18.INIT_1D = 256'h{INIT_1D};
|
||||||
|
defparam ram_1024_x_18.INIT_1E = 256'h{INIT_1E};
|
||||||
|
defparam ram_1024_x_18.INIT_1F = 256'h{INIT_1F};
|
||||||
|
defparam ram_1024_x_18.INIT_20 = 256'h{INIT_20};
|
||||||
|
defparam ram_1024_x_18.INIT_21 = 256'h{INIT_21};
|
||||||
|
defparam ram_1024_x_18.INIT_22 = 256'h{INIT_22};
|
||||||
|
defparam ram_1024_x_18.INIT_23 = 256'h{INIT_23};
|
||||||
|
defparam ram_1024_x_18.INIT_24 = 256'h{INIT_24};
|
||||||
|
defparam ram_1024_x_18.INIT_25 = 256'h{INIT_25};
|
||||||
|
defparam ram_1024_x_18.INIT_26 = 256'h{INIT_26};
|
||||||
|
defparam ram_1024_x_18.INIT_27 = 256'h{INIT_27};
|
||||||
|
defparam ram_1024_x_18.INIT_28 = 256'h{INIT_28};
|
||||||
|
defparam ram_1024_x_18.INIT_29 = 256'h{INIT_29};
|
||||||
|
defparam ram_1024_x_18.INIT_2A = 256'h{INIT_2A};
|
||||||
|
defparam ram_1024_x_18.INIT_2B = 256'h{INIT_2B};
|
||||||
|
defparam ram_1024_x_18.INIT_2C = 256'h{INIT_2C};
|
||||||
|
defparam ram_1024_x_18.INIT_2D = 256'h{INIT_2D};
|
||||||
|
defparam ram_1024_x_18.INIT_2E = 256'h{INIT_2E};
|
||||||
|
defparam ram_1024_x_18.INIT_2F = 256'h{INIT_2F};
|
||||||
|
defparam ram_1024_x_18.INIT_30 = 256'h{INIT_30};
|
||||||
|
defparam ram_1024_x_18.INIT_31 = 256'h{INIT_31};
|
||||||
|
defparam ram_1024_x_18.INIT_32 = 256'h{INIT_32};
|
||||||
|
defparam ram_1024_x_18.INIT_33 = 256'h{INIT_33};
|
||||||
|
defparam ram_1024_x_18.INIT_34 = 256'h{INIT_34};
|
||||||
|
defparam ram_1024_x_18.INIT_35 = 256'h{INIT_35};
|
||||||
|
defparam ram_1024_x_18.INIT_36 = 256'h{INIT_36};
|
||||||
|
defparam ram_1024_x_18.INIT_37 = 256'h{INIT_37};
|
||||||
|
defparam ram_1024_x_18.INIT_38 = 256'h{INIT_38};
|
||||||
|
defparam ram_1024_x_18.INIT_39 = 256'h{INIT_39};
|
||||||
|
defparam ram_1024_x_18.INIT_3A = 256'h{INIT_3A};
|
||||||
|
defparam ram_1024_x_18.INIT_3B = 256'h{INIT_3B};
|
||||||
|
defparam ram_1024_x_18.INIT_3C = 256'h{INIT_3C};
|
||||||
|
defparam ram_1024_x_18.INIT_3D = 256'h{INIT_3D};
|
||||||
|
defparam ram_1024_x_18.INIT_3E = 256'h{INIT_3E};
|
||||||
|
defparam ram_1024_x_18.INIT_3F = 256'h{INIT_3F};
|
||||||
|
defparam ram_1024_x_18.INITP_00 = 256'h{INITP_00};
|
||||||
|
defparam ram_1024_x_18.INITP_01 = 256'h{INITP_01};
|
||||||
|
defparam ram_1024_x_18.INITP_02 = 256'h{INITP_02};
|
||||||
|
defparam ram_1024_x_18.INITP_03 = 256'h{INITP_03};
|
||||||
|
defparam ram_1024_x_18.INITP_04 = 256'h{INITP_04};
|
||||||
|
defparam ram_1024_x_18.INITP_05 = 256'h{INITP_05};
|
||||||
|
defparam ram_1024_x_18.INITP_06 = 256'h{INITP_06};
|
||||||
|
defparam ram_1024_x_18.INITP_07 = 256'h{INITP_07};
|
||||||
|
|
||||||
|
// synthesis translate_on
|
||||||
|
// Attributes for XST (Synplicity attributes are in-line)
|
||||||
|
// synthesis attribute INIT_00 of ram_1024_x_18 is "{INIT_00}"
|
||||||
|
// synthesis attribute INIT_01 of ram_1024_x_18 is "{INIT_01}"
|
||||||
|
// synthesis attribute INIT_02 of ram_1024_x_18 is "{INIT_02}"
|
||||||
|
// synthesis attribute INIT_03 of ram_1024_x_18 is "{INIT_03}"
|
||||||
|
// synthesis attribute INIT_04 of ram_1024_x_18 is "{INIT_04}"
|
||||||
|
// synthesis attribute INIT_05 of ram_1024_x_18 is "{INIT_05}"
|
||||||
|
// synthesis attribute INIT_06 of ram_1024_x_18 is "{INIT_06}"
|
||||||
|
// synthesis attribute INIT_07 of ram_1024_x_18 is "{INIT_07}"
|
||||||
|
// synthesis attribute INIT_08 of ram_1024_x_18 is "{INIT_08}"
|
||||||
|
// synthesis attribute INIT_09 of ram_1024_x_18 is "{INIT_09}"
|
||||||
|
// synthesis attribute INIT_0A of ram_1024_x_18 is "{INIT_0A}"
|
||||||
|
// synthesis attribute INIT_0B of ram_1024_x_18 is "{INIT_0B}"
|
||||||
|
// synthesis attribute INIT_0C of ram_1024_x_18 is "{INIT_0C}"
|
||||||
|
// synthesis attribute INIT_0D of ram_1024_x_18 is "{INIT_0D}"
|
||||||
|
// synthesis attribute INIT_0E of ram_1024_x_18 is "{INIT_0E}"
|
||||||
|
// synthesis attribute INIT_0F of ram_1024_x_18 is "{INIT_0F}"
|
||||||
|
// synthesis attribute INIT_10 of ram_1024_x_18 is "{INIT_10}"
|
||||||
|
// synthesis attribute INIT_11 of ram_1024_x_18 is "{INIT_11}"
|
||||||
|
// synthesis attribute INIT_12 of ram_1024_x_18 is "{INIT_12}"
|
||||||
|
// synthesis attribute INIT_13 of ram_1024_x_18 is "{INIT_13}"
|
||||||
|
// synthesis attribute INIT_14 of ram_1024_x_18 is "{INIT_14}"
|
||||||
|
// synthesis attribute INIT_15 of ram_1024_x_18 is "{INIT_15}"
|
||||||
|
// synthesis attribute INIT_16 of ram_1024_x_18 is "{INIT_16}"
|
||||||
|
// synthesis attribute INIT_17 of ram_1024_x_18 is "{INIT_17}"
|
||||||
|
// synthesis attribute INIT_18 of ram_1024_x_18 is "{INIT_18}"
|
||||||
|
// synthesis attribute INIT_19 of ram_1024_x_18 is "{INIT_19}"
|
||||||
|
// synthesis attribute INIT_1A of ram_1024_x_18 is "{INIT_1A}"
|
||||||
|
// synthesis attribute INIT_1B of ram_1024_x_18 is "{INIT_1B}"
|
||||||
|
// synthesis attribute INIT_1C of ram_1024_x_18 is "{INIT_1C}"
|
||||||
|
// synthesis attribute INIT_1D of ram_1024_x_18 is "{INIT_1D}"
|
||||||
|
// synthesis attribute INIT_1E of ram_1024_x_18 is "{INIT_1E}"
|
||||||
|
// synthesis attribute INIT_1F of ram_1024_x_18 is "{INIT_1F}"
|
||||||
|
// synthesis attribute INIT_20 of ram_1024_x_18 is "{INIT_20}"
|
||||||
|
// synthesis attribute INIT_21 of ram_1024_x_18 is "{INIT_21}"
|
||||||
|
// synthesis attribute INIT_22 of ram_1024_x_18 is "{INIT_22}"
|
||||||
|
// synthesis attribute INIT_23 of ram_1024_x_18 is "{INIT_23}"
|
||||||
|
// synthesis attribute INIT_24 of ram_1024_x_18 is "{INIT_24}"
|
||||||
|
// synthesis attribute INIT_25 of ram_1024_x_18 is "{INIT_25}"
|
||||||
|
// synthesis attribute INIT_26 of ram_1024_x_18 is "{INIT_26}"
|
||||||
|
// synthesis attribute INIT_27 of ram_1024_x_18 is "{INIT_27}"
|
||||||
|
// synthesis attribute INIT_28 of ram_1024_x_18 is "{INIT_28}"
|
||||||
|
// synthesis attribute INIT_29 of ram_1024_x_18 is "{INIT_29}"
|
||||||
|
// synthesis attribute INIT_2A of ram_1024_x_18 is "{INIT_2A}"
|
||||||
|
// synthesis attribute INIT_2B of ram_1024_x_18 is "{INIT_2B}"
|
||||||
|
// synthesis attribute INIT_2C of ram_1024_x_18 is "{INIT_2C}"
|
||||||
|
// synthesis attribute INIT_2D of ram_1024_x_18 is "{INIT_2D}"
|
||||||
|
// synthesis attribute INIT_2E of ram_1024_x_18 is "{INIT_2E}"
|
||||||
|
// synthesis attribute INIT_2F of ram_1024_x_18 is "{INIT_2F}"
|
||||||
|
// synthesis attribute INIT_30 of ram_1024_x_18 is "{INIT_30}"
|
||||||
|
// synthesis attribute INIT_31 of ram_1024_x_18 is "{INIT_31}"
|
||||||
|
// synthesis attribute INIT_32 of ram_1024_x_18 is "{INIT_32}"
|
||||||
|
// synthesis attribute INIT_33 of ram_1024_x_18 is "{INIT_33}"
|
||||||
|
// synthesis attribute INIT_34 of ram_1024_x_18 is "{INIT_34}"
|
||||||
|
// synthesis attribute INIT_35 of ram_1024_x_18 is "{INIT_35}"
|
||||||
|
// synthesis attribute INIT_36 of ram_1024_x_18 is "{INIT_36}"
|
||||||
|
// synthesis attribute INIT_37 of ram_1024_x_18 is "{INIT_37}"
|
||||||
|
// synthesis attribute INIT_38 of ram_1024_x_18 is "{INIT_38}"
|
||||||
|
// synthesis attribute INIT_39 of ram_1024_x_18 is "{INIT_39}"
|
||||||
|
// synthesis attribute INIT_3A of ram_1024_x_18 is "{INIT_3A}"
|
||||||
|
// synthesis attribute INIT_3B of ram_1024_x_18 is "{INIT_3B}"
|
||||||
|
// synthesis attribute INIT_3C of ram_1024_x_18 is "{INIT_3C}"
|
||||||
|
// synthesis attribute INIT_3D of ram_1024_x_18 is "{INIT_3D}"
|
||||||
|
// synthesis attribute INIT_3E of ram_1024_x_18 is "{INIT_3E}"
|
||||||
|
// synthesis attribute INIT_3F of ram_1024_x_18 is "{INIT_3F}"
|
||||||
|
// synthesis attribute INITP_00 of ram_1024_x_18 is "{INITP_00}"
|
||||||
|
// synthesis attribute INITP_01 of ram_1024_x_18 is "{INITP_01}"
|
||||||
|
// synthesis attribute INITP_02 of ram_1024_x_18 is "{INITP_02}"
|
||||||
|
// synthesis attribute INITP_03 of ram_1024_x_18 is "{INITP_03}"
|
||||||
|
// synthesis attribute INITP_04 of ram_1024_x_18 is "{INITP_04}"
|
||||||
|
// synthesis attribute INITP_05 of ram_1024_x_18 is "{INITP_05}"
|
||||||
|
// synthesis attribute INITP_06 of ram_1024_x_18 is "{INITP_06}"
|
||||||
|
// synthesis attribute INITP_07 of ram_1024_x_18 is "{INITP_07}"
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
||||||
|
// END OF FILE {name}.v
|
||||||
305
ROM_form.vhd
Executable file
305
ROM_form.vhd
Executable file
@@ -0,0 +1,305 @@
|
|||||||
|
ROM_form.vhd
|
||||||
|
|
||||||
|
Ken Chapman (Xilinx Ltd) July 2003
|
||||||
|
|
||||||
|
This is the VHDL template file for the KCPSM3 assembler.
|
||||||
|
It is used to configure a Spartan-3, Virtex-II or Virtex-IIPRO block RAM to act as
|
||||||
|
a single port program ROM.
|
||||||
|
|
||||||
|
This VHDL file is not valid as input directly into a synthesis or simulation tool.
|
||||||
|
The assembler will read this template and insert the data required to complete the
|
||||||
|
definition of program ROM and write it out to a new '.vhd' file associated with the
|
||||||
|
name of the original '.psm' file being assembled.
|
||||||
|
|
||||||
|
This template can be modified to define alternative memory definitions such as dual port.
|
||||||
|
However, you are responsible for ensuring the template is correct as the assembler does
|
||||||
|
not perform any checking of the VHDL.
|
||||||
|
|
||||||
|
The assembler identifies all text enclosed by {} characters, and replaces these
|
||||||
|
character strings. All templates should include these {} character strings for
|
||||||
|
the assembler to work correctly.
|
||||||
|
|
||||||
|
****************************************************************************************
|
||||||
|
|
||||||
|
This template defines a block RAM configured in 1024 x 18-bit single port mode and
|
||||||
|
conneceted to act as a single port ROM.
|
||||||
|
|
||||||
|
****************************************************************************************
|
||||||
|
|
||||||
|
The next line is used to determine where the template actually starts and must exist.
|
||||||
|
{begin template}
|
||||||
|
--
|
||||||
|
-- Definition of a single port ROM for KCPSM3 program defined by {name}.psm
|
||||||
|
--
|
||||||
|
-- Generated by KCPSM3 Assembler {timestamp}.
|
||||||
|
--
|
||||||
|
-- Standard IEEE libraries
|
||||||
|
--
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.STD_LOGIC_1164.ALL;
|
||||||
|
use IEEE.STD_LOGIC_ARITH.ALL;
|
||||||
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
||||||
|
--
|
||||||
|
-- The Unisim Library is used to define Xilinx primitives. It is also used during
|
||||||
|
-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd
|
||||||
|
--
|
||||||
|
library unisim;
|
||||||
|
use unisim.vcomponents.all;
|
||||||
|
--
|
||||||
|
--
|
||||||
|
entity {name} is
|
||||||
|
Port ( address : in std_logic_vector(9 downto 0);
|
||||||
|
instruction : out std_logic_vector(17 downto 0);
|
||||||
|
clk : in std_logic);
|
||||||
|
end {name};
|
||||||
|
--
|
||||||
|
architecture low_level_definition of {name} is
|
||||||
|
--
|
||||||
|
-- Attributes to define ROM contents during implementation synthesis.
|
||||||
|
-- The information is repeated in the generic map for functional simulation
|
||||||
|
--
|
||||||
|
attribute INIT_00 : string;
|
||||||
|
attribute INIT_01 : string;
|
||||||
|
attribute INIT_02 : string;
|
||||||
|
attribute INIT_03 : string;
|
||||||
|
attribute INIT_04 : string;
|
||||||
|
attribute INIT_05 : string;
|
||||||
|
attribute INIT_06 : string;
|
||||||
|
attribute INIT_07 : string;
|
||||||
|
attribute INIT_08 : string;
|
||||||
|
attribute INIT_09 : string;
|
||||||
|
attribute INIT_0A : string;
|
||||||
|
attribute INIT_0B : string;
|
||||||
|
attribute INIT_0C : string;
|
||||||
|
attribute INIT_0D : string;
|
||||||
|
attribute INIT_0E : string;
|
||||||
|
attribute INIT_0F : string;
|
||||||
|
attribute INIT_10 : string;
|
||||||
|
attribute INIT_11 : string;
|
||||||
|
attribute INIT_12 : string;
|
||||||
|
attribute INIT_13 : string;
|
||||||
|
attribute INIT_14 : string;
|
||||||
|
attribute INIT_15 : string;
|
||||||
|
attribute INIT_16 : string;
|
||||||
|
attribute INIT_17 : string;
|
||||||
|
attribute INIT_18 : string;
|
||||||
|
attribute INIT_19 : string;
|
||||||
|
attribute INIT_1A : string;
|
||||||
|
attribute INIT_1B : string;
|
||||||
|
attribute INIT_1C : string;
|
||||||
|
attribute INIT_1D : string;
|
||||||
|
attribute INIT_1E : string;
|
||||||
|
attribute INIT_1F : string;
|
||||||
|
attribute INIT_20 : string;
|
||||||
|
attribute INIT_21 : string;
|
||||||
|
attribute INIT_22 : string;
|
||||||
|
attribute INIT_23 : string;
|
||||||
|
attribute INIT_24 : string;
|
||||||
|
attribute INIT_25 : string;
|
||||||
|
attribute INIT_26 : string;
|
||||||
|
attribute INIT_27 : string;
|
||||||
|
attribute INIT_28 : string;
|
||||||
|
attribute INIT_29 : string;
|
||||||
|
attribute INIT_2A : string;
|
||||||
|
attribute INIT_2B : string;
|
||||||
|
attribute INIT_2C : string;
|
||||||
|
attribute INIT_2D : string;
|
||||||
|
attribute INIT_2E : string;
|
||||||
|
attribute INIT_2F : string;
|
||||||
|
attribute INIT_30 : string;
|
||||||
|
attribute INIT_31 : string;
|
||||||
|
attribute INIT_32 : string;
|
||||||
|
attribute INIT_33 : string;
|
||||||
|
attribute INIT_34 : string;
|
||||||
|
attribute INIT_35 : string;
|
||||||
|
attribute INIT_36 : string;
|
||||||
|
attribute INIT_37 : string;
|
||||||
|
attribute INIT_38 : string;
|
||||||
|
attribute INIT_39 : string;
|
||||||
|
attribute INIT_3A : string;
|
||||||
|
attribute INIT_3B : string;
|
||||||
|
attribute INIT_3C : string;
|
||||||
|
attribute INIT_3D : string;
|
||||||
|
attribute INIT_3E : string;
|
||||||
|
attribute INIT_3F : string;
|
||||||
|
attribute INITP_00 : string;
|
||||||
|
attribute INITP_01 : string;
|
||||||
|
attribute INITP_02 : string;
|
||||||
|
attribute INITP_03 : string;
|
||||||
|
attribute INITP_04 : string;
|
||||||
|
attribute INITP_05 : string;
|
||||||
|
attribute INITP_06 : string;
|
||||||
|
attribute INITP_07 : string;
|
||||||
|
--
|
||||||
|
-- Attributes to define ROM contents during implementation synthesis.
|
||||||
|
--
|
||||||
|
attribute INIT_00 of ram_1024_x_18 : label is "{INIT_00}";
|
||||||
|
attribute INIT_01 of ram_1024_x_18 : label is "{INIT_01}";
|
||||||
|
attribute INIT_02 of ram_1024_x_18 : label is "{INIT_02}";
|
||||||
|
attribute INIT_03 of ram_1024_x_18 : label is "{INIT_03}";
|
||||||
|
attribute INIT_04 of ram_1024_x_18 : label is "{INIT_04}";
|
||||||
|
attribute INIT_05 of ram_1024_x_18 : label is "{INIT_05}";
|
||||||
|
attribute INIT_06 of ram_1024_x_18 : label is "{INIT_06}";
|
||||||
|
attribute INIT_07 of ram_1024_x_18 : label is "{INIT_07}";
|
||||||
|
attribute INIT_08 of ram_1024_x_18 : label is "{INIT_08}";
|
||||||
|
attribute INIT_09 of ram_1024_x_18 : label is "{INIT_09}";
|
||||||
|
attribute INIT_0A of ram_1024_x_18 : label is "{INIT_0A}";
|
||||||
|
attribute INIT_0B of ram_1024_x_18 : label is "{INIT_0B}";
|
||||||
|
attribute INIT_0C of ram_1024_x_18 : label is "{INIT_0C}";
|
||||||
|
attribute INIT_0D of ram_1024_x_18 : label is "{INIT_0D}";
|
||||||
|
attribute INIT_0E of ram_1024_x_18 : label is "{INIT_0E}";
|
||||||
|
attribute INIT_0F of ram_1024_x_18 : label is "{INIT_0F}";
|
||||||
|
attribute INIT_10 of ram_1024_x_18 : label is "{INIT_10}";
|
||||||
|
attribute INIT_11 of ram_1024_x_18 : label is "{INIT_11}";
|
||||||
|
attribute INIT_12 of ram_1024_x_18 : label is "{INIT_12}";
|
||||||
|
attribute INIT_13 of ram_1024_x_18 : label is "{INIT_13}";
|
||||||
|
attribute INIT_14 of ram_1024_x_18 : label is "{INIT_14}";
|
||||||
|
attribute INIT_15 of ram_1024_x_18 : label is "{INIT_15}";
|
||||||
|
attribute INIT_16 of ram_1024_x_18 : label is "{INIT_16}";
|
||||||
|
attribute INIT_17 of ram_1024_x_18 : label is "{INIT_17}";
|
||||||
|
attribute INIT_18 of ram_1024_x_18 : label is "{INIT_18}";
|
||||||
|
attribute INIT_19 of ram_1024_x_18 : label is "{INIT_19}";
|
||||||
|
attribute INIT_1A of ram_1024_x_18 : label is "{INIT_1A}";
|
||||||
|
attribute INIT_1B of ram_1024_x_18 : label is "{INIT_1B}";
|
||||||
|
attribute INIT_1C of ram_1024_x_18 : label is "{INIT_1C}";
|
||||||
|
attribute INIT_1D of ram_1024_x_18 : label is "{INIT_1D}";
|
||||||
|
attribute INIT_1E of ram_1024_x_18 : label is "{INIT_1E}";
|
||||||
|
attribute INIT_1F of ram_1024_x_18 : label is "{INIT_1F}";
|
||||||
|
attribute INIT_20 of ram_1024_x_18 : label is "{INIT_20}";
|
||||||
|
attribute INIT_21 of ram_1024_x_18 : label is "{INIT_21}";
|
||||||
|
attribute INIT_22 of ram_1024_x_18 : label is "{INIT_22}";
|
||||||
|
attribute INIT_23 of ram_1024_x_18 : label is "{INIT_23}";
|
||||||
|
attribute INIT_24 of ram_1024_x_18 : label is "{INIT_24}";
|
||||||
|
attribute INIT_25 of ram_1024_x_18 : label is "{INIT_25}";
|
||||||
|
attribute INIT_26 of ram_1024_x_18 : label is "{INIT_26}";
|
||||||
|
attribute INIT_27 of ram_1024_x_18 : label is "{INIT_27}";
|
||||||
|
attribute INIT_28 of ram_1024_x_18 : label is "{INIT_28}";
|
||||||
|
attribute INIT_29 of ram_1024_x_18 : label is "{INIT_29}";
|
||||||
|
attribute INIT_2A of ram_1024_x_18 : label is "{INIT_2A}";
|
||||||
|
attribute INIT_2B of ram_1024_x_18 : label is "{INIT_2B}";
|
||||||
|
attribute INIT_2C of ram_1024_x_18 : label is "{INIT_2C}";
|
||||||
|
attribute INIT_2D of ram_1024_x_18 : label is "{INIT_2D}";
|
||||||
|
attribute INIT_2E of ram_1024_x_18 : label is "{INIT_2E}";
|
||||||
|
attribute INIT_2F of ram_1024_x_18 : label is "{INIT_2F}";
|
||||||
|
attribute INIT_30 of ram_1024_x_18 : label is "{INIT_30}";
|
||||||
|
attribute INIT_31 of ram_1024_x_18 : label is "{INIT_31}";
|
||||||
|
attribute INIT_32 of ram_1024_x_18 : label is "{INIT_32}";
|
||||||
|
attribute INIT_33 of ram_1024_x_18 : label is "{INIT_33}";
|
||||||
|
attribute INIT_34 of ram_1024_x_18 : label is "{INIT_34}";
|
||||||
|
attribute INIT_35 of ram_1024_x_18 : label is "{INIT_35}";
|
||||||
|
attribute INIT_36 of ram_1024_x_18 : label is "{INIT_36}";
|
||||||
|
attribute INIT_37 of ram_1024_x_18 : label is "{INIT_37}";
|
||||||
|
attribute INIT_38 of ram_1024_x_18 : label is "{INIT_38}";
|
||||||
|
attribute INIT_39 of ram_1024_x_18 : label is "{INIT_39}";
|
||||||
|
attribute INIT_3A of ram_1024_x_18 : label is "{INIT_3A}";
|
||||||
|
attribute INIT_3B of ram_1024_x_18 : label is "{INIT_3B}";
|
||||||
|
attribute INIT_3C of ram_1024_x_18 : label is "{INIT_3C}";
|
||||||
|
attribute INIT_3D of ram_1024_x_18 : label is "{INIT_3D}";
|
||||||
|
attribute INIT_3E of ram_1024_x_18 : label is "{INIT_3E}";
|
||||||
|
attribute INIT_3F of ram_1024_x_18 : label is "{INIT_3F}";
|
||||||
|
attribute INITP_00 of ram_1024_x_18 : label is "{INITP_00}";
|
||||||
|
attribute INITP_01 of ram_1024_x_18 : label is "{INITP_01}";
|
||||||
|
attribute INITP_02 of ram_1024_x_18 : label is "{INITP_02}";
|
||||||
|
attribute INITP_03 of ram_1024_x_18 : label is "{INITP_03}";
|
||||||
|
attribute INITP_04 of ram_1024_x_18 : label is "{INITP_04}";
|
||||||
|
attribute INITP_05 of ram_1024_x_18 : label is "{INITP_05}";
|
||||||
|
attribute INITP_06 of ram_1024_x_18 : label is "{INITP_06}";
|
||||||
|
attribute INITP_07 of ram_1024_x_18 : label is "{INITP_07}";
|
||||||
|
--
|
||||||
|
begin
|
||||||
|
--
|
||||||
|
--Instantiate the Xilinx primitive for a block RAM
|
||||||
|
ram_1024_x_18: RAMB16_S18
|
||||||
|
--synthesis translate_off
|
||||||
|
--INIT values repeated to define contents for functional simulation
|
||||||
|
generic map ( INIT_00 => X"{INIT_00}",
|
||||||
|
INIT_01 => X"{INIT_01}",
|
||||||
|
INIT_02 => X"{INIT_02}",
|
||||||
|
INIT_03 => X"{INIT_03}",
|
||||||
|
INIT_04 => X"{INIT_04}",
|
||||||
|
INIT_05 => X"{INIT_05}",
|
||||||
|
INIT_06 => X"{INIT_06}",
|
||||||
|
INIT_07 => X"{INIT_07}",
|
||||||
|
INIT_08 => X"{INIT_08}",
|
||||||
|
INIT_09 => X"{INIT_09}",
|
||||||
|
INIT_0A => X"{INIT_0A}",
|
||||||
|
INIT_0B => X"{INIT_0B}",
|
||||||
|
INIT_0C => X"{INIT_0C}",
|
||||||
|
INIT_0D => X"{INIT_0D}",
|
||||||
|
INIT_0E => X"{INIT_0E}",
|
||||||
|
INIT_0F => X"{INIT_0F}",
|
||||||
|
INIT_10 => X"{INIT_10}",
|
||||||
|
INIT_11 => X"{INIT_11}",
|
||||||
|
INIT_12 => X"{INIT_12}",
|
||||||
|
INIT_13 => X"{INIT_13}",
|
||||||
|
INIT_14 => X"{INIT_14}",
|
||||||
|
INIT_15 => X"{INIT_15}",
|
||||||
|
INIT_16 => X"{INIT_16}",
|
||||||
|
INIT_17 => X"{INIT_17}",
|
||||||
|
INIT_18 => X"{INIT_18}",
|
||||||
|
INIT_19 => X"{INIT_19}",
|
||||||
|
INIT_1A => X"{INIT_1A}",
|
||||||
|
INIT_1B => X"{INIT_1B}",
|
||||||
|
INIT_1C => X"{INIT_1C}",
|
||||||
|
INIT_1D => X"{INIT_1D}",
|
||||||
|
INIT_1E => X"{INIT_1E}",
|
||||||
|
INIT_1F => X"{INIT_1F}",
|
||||||
|
INIT_20 => X"{INIT_20}",
|
||||||
|
INIT_21 => X"{INIT_21}",
|
||||||
|
INIT_22 => X"{INIT_22}",
|
||||||
|
INIT_23 => X"{INIT_23}",
|
||||||
|
INIT_24 => X"{INIT_24}",
|
||||||
|
INIT_25 => X"{INIT_25}",
|
||||||
|
INIT_26 => X"{INIT_26}",
|
||||||
|
INIT_27 => X"{INIT_27}",
|
||||||
|
INIT_28 => X"{INIT_28}",
|
||||||
|
INIT_29 => X"{INIT_29}",
|
||||||
|
INIT_2A => X"{INIT_2A}",
|
||||||
|
INIT_2B => X"{INIT_2B}",
|
||||||
|
INIT_2C => X"{INIT_2C}",
|
||||||
|
INIT_2D => X"{INIT_2D}",
|
||||||
|
INIT_2E => X"{INIT_2E}",
|
||||||
|
INIT_2F => X"{INIT_2F}",
|
||||||
|
INIT_30 => X"{INIT_30}",
|
||||||
|
INIT_31 => X"{INIT_31}",
|
||||||
|
INIT_32 => X"{INIT_32}",
|
||||||
|
INIT_33 => X"{INIT_33}",
|
||||||
|
INIT_34 => X"{INIT_34}",
|
||||||
|
INIT_35 => X"{INIT_35}",
|
||||||
|
INIT_36 => X"{INIT_36}",
|
||||||
|
INIT_37 => X"{INIT_37}",
|
||||||
|
INIT_38 => X"{INIT_38}",
|
||||||
|
INIT_39 => X"{INIT_39}",
|
||||||
|
INIT_3A => X"{INIT_3A}",
|
||||||
|
INIT_3B => X"{INIT_3B}",
|
||||||
|
INIT_3C => X"{INIT_3C}",
|
||||||
|
INIT_3D => X"{INIT_3D}",
|
||||||
|
INIT_3E => X"{INIT_3E}",
|
||||||
|
INIT_3F => X"{INIT_3F}",
|
||||||
|
INITP_00 => X"{INITP_00}",
|
||||||
|
INITP_01 => X"{INITP_01}",
|
||||||
|
INITP_02 => X"{INITP_02}",
|
||||||
|
INITP_03 => X"{INITP_03}",
|
||||||
|
INITP_04 => X"{INITP_04}",
|
||||||
|
INITP_05 => X"{INITP_05}",
|
||||||
|
INITP_06 => X"{INITP_06}",
|
||||||
|
INITP_07 => X"{INITP_07}")
|
||||||
|
--synthesis translate_on
|
||||||
|
port map( DI => "0000000000000000",
|
||||||
|
DIP => "00",
|
||||||
|
EN => '1',
|
||||||
|
WE => '0',
|
||||||
|
SSR => '0',
|
||||||
|
CLK => clk,
|
||||||
|
ADDR => address,
|
||||||
|
DO => instruction(15 downto 0),
|
||||||
|
DOP => instruction(17 downto 16));
|
||||||
|
--
|
||||||
|
end low_level_definition;
|
||||||
|
--
|
||||||
|
------------------------------------------------------------------------------------
|
||||||
|
--
|
||||||
|
-- END OF FILE {name}.vhd
|
||||||
|
--
|
||||||
|
------------------------------------------------------------------------------------
|
||||||
|
|
||||||
351
T80_ALU.vhd
Executable file
351
T80_ALU.vhd
Executable file
@@ -0,0 +1,351 @@
|
|||||||
|
--
|
||||||
|
-- Z80 compatible microprocessor core
|
||||||
|
--
|
||||||
|
-- Version : 0247
|
||||||
|
--
|
||||||
|
-- Copyright (c) 2001-2002 Daniel Wallner (jesus@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/t80/
|
||||||
|
--
|
||||||
|
-- Limitations :
|
||||||
|
--
|
||||||
|
-- File history :
|
||||||
|
--
|
||||||
|
-- 0214 : Fixed mostly flags, only the block instructions now fail the zex regression test
|
||||||
|
--
|
||||||
|
-- 0238 : Fixed zero flag for 16 bit SBC and ADC
|
||||||
|
--
|
||||||
|
-- 0240 : Added GB operations
|
||||||
|
--
|
||||||
|
-- 0242 : Cleanup
|
||||||
|
--
|
||||||
|
-- 0247 : Cleanup
|
||||||
|
--
|
||||||
|
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.std_logic_1164.all;
|
||||||
|
use IEEE.numeric_std.all;
|
||||||
|
|
||||||
|
entity T80_ALU is
|
||||||
|
generic(
|
||||||
|
Mode : integer := 0;
|
||||||
|
Flag_C : integer := 0;
|
||||||
|
Flag_N : integer := 1;
|
||||||
|
Flag_P : integer := 2;
|
||||||
|
Flag_X : integer := 3;
|
||||||
|
Flag_H : integer := 4;
|
||||||
|
Flag_Y : integer := 5;
|
||||||
|
Flag_Z : integer := 6;
|
||||||
|
Flag_S : integer := 7
|
||||||
|
);
|
||||||
|
port(
|
||||||
|
Arith16 : in std_logic;
|
||||||
|
Z16 : in std_logic;
|
||||||
|
ALU_Op : in std_logic_vector(3 downto 0);
|
||||||
|
IR : in std_logic_vector(5 downto 0);
|
||||||
|
ISet : in std_logic_vector(1 downto 0);
|
||||||
|
BusA : in std_logic_vector(7 downto 0);
|
||||||
|
BusB : in std_logic_vector(7 downto 0);
|
||||||
|
F_In : in std_logic_vector(7 downto 0);
|
||||||
|
Q : out std_logic_vector(7 downto 0);
|
||||||
|
F_Out : out std_logic_vector(7 downto 0)
|
||||||
|
);
|
||||||
|
end T80_ALU;
|
||||||
|
|
||||||
|
architecture rtl of T80_ALU is
|
||||||
|
|
||||||
|
procedure AddSub(A : std_logic_vector;
|
||||||
|
B : std_logic_vector;
|
||||||
|
Sub : std_logic;
|
||||||
|
Carry_In : std_logic;
|
||||||
|
signal Res : out std_logic_vector;
|
||||||
|
signal Carry : out std_logic) is
|
||||||
|
variable B_i : unsigned(A'length - 1 downto 0);
|
||||||
|
variable Res_i : unsigned(A'length + 1 downto 0);
|
||||||
|
begin
|
||||||
|
if Sub = '1' then
|
||||||
|
B_i := not unsigned(B);
|
||||||
|
else
|
||||||
|
B_i := unsigned(B);
|
||||||
|
end if;
|
||||||
|
Res_i := unsigned("0" & A & Carry_In) + unsigned("0" & B_i & "1");
|
||||||
|
Carry <= Res_i(A'length + 1);
|
||||||
|
Res <= std_logic_vector(Res_i(A'length downto 1));
|
||||||
|
end;
|
||||||
|
|
||||||
|
-- AddSub variables (temporary signals)
|
||||||
|
signal UseCarry : std_logic;
|
||||||
|
signal Carry7_v : std_logic;
|
||||||
|
signal Overflow_v : std_logic;
|
||||||
|
signal HalfCarry_v : std_logic;
|
||||||
|
signal Carry_v : std_logic;
|
||||||
|
signal Q_v : std_logic_vector(7 downto 0);
|
||||||
|
|
||||||
|
signal BitMask : std_logic_vector(7 downto 0);
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
with IR(5 downto 3) select BitMask <= "00000001" when "000",
|
||||||
|
"00000010" when "001",
|
||||||
|
"00000100" when "010",
|
||||||
|
"00001000" when "011",
|
||||||
|
"00010000" when "100",
|
||||||
|
"00100000" when "101",
|
||||||
|
"01000000" when "110",
|
||||||
|
"10000000" when others;
|
||||||
|
|
||||||
|
UseCarry <= not ALU_Op(2) and ALU_Op(0);
|
||||||
|
AddSub(BusA(3 downto 0), BusB(3 downto 0), ALU_Op(1), ALU_Op(1) xor (UseCarry and F_In(Flag_C)), Q_v(3 downto 0), HalfCarry_v);
|
||||||
|
AddSub(BusA(6 downto 4), BusB(6 downto 4), ALU_Op(1), HalfCarry_v, Q_v(6 downto 4), Carry7_v);
|
||||||
|
AddSub(BusA(7 downto 7), BusB(7 downto 7), ALU_Op(1), Carry7_v, Q_v(7 downto 7), Carry_v);
|
||||||
|
OverFlow_v <= Carry_v xor Carry7_v;
|
||||||
|
|
||||||
|
process (Arith16, ALU_OP, F_In, BusA, BusB, IR, Q_v, Carry_v, HalfCarry_v, OverFlow_v, BitMask, ISet, Z16)
|
||||||
|
variable Q_t : std_logic_vector(7 downto 0);
|
||||||
|
variable DAA_Q : unsigned(8 downto 0);
|
||||||
|
begin
|
||||||
|
Q_t := "--------";
|
||||||
|
F_Out <= F_In;
|
||||||
|
DAA_Q := "---------";
|
||||||
|
case ALU_Op is
|
||||||
|
when "0000" | "0001" | "0010" | "0011" | "0100" | "0101" | "0110" | "0111" =>
|
||||||
|
F_Out(Flag_N) <= '0';
|
||||||
|
F_Out(Flag_C) <= '0';
|
||||||
|
case ALU_OP(2 downto 0) is
|
||||||
|
when "000" | "001" => -- ADD, ADC
|
||||||
|
Q_t := Q_v;
|
||||||
|
F_Out(Flag_C) <= Carry_v;
|
||||||
|
F_Out(Flag_H) <= HalfCarry_v;
|
||||||
|
F_Out(Flag_P) <= OverFlow_v;
|
||||||
|
when "010" | "011" | "111" => -- SUB, SBC, CP
|
||||||
|
Q_t := Q_v;
|
||||||
|
F_Out(Flag_N) <= '1';
|
||||||
|
F_Out(Flag_C) <= not Carry_v;
|
||||||
|
F_Out(Flag_H) <= not HalfCarry_v;
|
||||||
|
F_Out(Flag_P) <= OverFlow_v;
|
||||||
|
when "100" => -- AND
|
||||||
|
Q_t(7 downto 0) := BusA and BusB;
|
||||||
|
F_Out(Flag_H) <= '1';
|
||||||
|
when "101" => -- XOR
|
||||||
|
Q_t(7 downto 0) := BusA xor BusB;
|
||||||
|
F_Out(Flag_H) <= '0';
|
||||||
|
when others => -- OR "110"
|
||||||
|
Q_t(7 downto 0) := BusA or BusB;
|
||||||
|
F_Out(Flag_H) <= '0';
|
||||||
|
end case;
|
||||||
|
if ALU_Op(2 downto 0) = "111" then -- CP
|
||||||
|
F_Out(Flag_X) <= BusB(3);
|
||||||
|
F_Out(Flag_Y) <= BusB(5);
|
||||||
|
else
|
||||||
|
F_Out(Flag_X) <= Q_t(3);
|
||||||
|
F_Out(Flag_Y) <= Q_t(5);
|
||||||
|
end if;
|
||||||
|
if Q_t(7 downto 0) = "00000000" then
|
||||||
|
F_Out(Flag_Z) <= '1';
|
||||||
|
if Z16 = '1' then
|
||||||
|
F_Out(Flag_Z) <= F_In(Flag_Z); -- 16 bit ADC,SBC
|
||||||
|
end if;
|
||||||
|
else
|
||||||
|
F_Out(Flag_Z) <= '0';
|
||||||
|
end if;
|
||||||
|
F_Out(Flag_S) <= Q_t(7);
|
||||||
|
case ALU_Op(2 downto 0) is
|
||||||
|
when "000" | "001" | "010" | "011" | "111" => -- ADD, ADC, SUB, SBC, CP
|
||||||
|
when others =>
|
||||||
|
F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor
|
||||||
|
Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7));
|
||||||
|
end case;
|
||||||
|
if Arith16 = '1' then
|
||||||
|
F_Out(Flag_S) <= F_In(Flag_S);
|
||||||
|
F_Out(Flag_Z) <= F_In(Flag_Z);
|
||||||
|
F_Out(Flag_P) <= F_In(Flag_P);
|
||||||
|
end if;
|
||||||
|
when "1100" =>
|
||||||
|
-- DAA
|
||||||
|
F_Out(Flag_H) <= F_In(Flag_H);
|
||||||
|
F_Out(Flag_C) <= F_In(Flag_C);
|
||||||
|
DAA_Q(7 downto 0) := unsigned(BusA);
|
||||||
|
DAA_Q(8) := '0';
|
||||||
|
if F_In(Flag_N) = '0' then
|
||||||
|
-- After addition
|
||||||
|
-- Alow > 9 or H = 1
|
||||||
|
if DAA_Q(3 downto 0) > 9 or F_In(Flag_H) = '1' then
|
||||||
|
if (DAA_Q(3 downto 0) > 9) then
|
||||||
|
F_Out(Flag_H) <= '1';
|
||||||
|
else
|
||||||
|
F_Out(Flag_H) <= '0';
|
||||||
|
end if;
|
||||||
|
DAA_Q := DAA_Q + 6;
|
||||||
|
end if;
|
||||||
|
-- new Ahigh > 9 or C = 1
|
||||||
|
if DAA_Q(8 downto 4) > 9 or F_In(Flag_C) = '1' then
|
||||||
|
DAA_Q := DAA_Q + 96; -- 0x60
|
||||||
|
end if;
|
||||||
|
else
|
||||||
|
-- After subtraction
|
||||||
|
if DAA_Q(3 downto 0) > 9 or F_In(Flag_H) = '1' then
|
||||||
|
if DAA_Q(3 downto 0) > 5 then
|
||||||
|
F_Out(Flag_H) <= '0';
|
||||||
|
end if;
|
||||||
|
DAA_Q(7 downto 0) := DAA_Q(7 downto 0) - 6;
|
||||||
|
end if;
|
||||||
|
if unsigned(BusA) > 153 or F_In(Flag_C) = '1' then
|
||||||
|
DAA_Q := DAA_Q - 352; -- 0x160
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
F_Out(Flag_X) <= DAA_Q(3);
|
||||||
|
F_Out(Flag_Y) <= DAA_Q(5);
|
||||||
|
F_Out(Flag_C) <= F_In(Flag_C) or DAA_Q(8);
|
||||||
|
Q_t := std_logic_vector(DAA_Q(7 downto 0));
|
||||||
|
if DAA_Q(7 downto 0) = "00000000" then
|
||||||
|
F_Out(Flag_Z) <= '1';
|
||||||
|
else
|
||||||
|
F_Out(Flag_Z) <= '0';
|
||||||
|
end if;
|
||||||
|
F_Out(Flag_S) <= DAA_Q(7);
|
||||||
|
F_Out(Flag_P) <= not (DAA_Q(0) xor DAA_Q(1) xor DAA_Q(2) xor DAA_Q(3) xor
|
||||||
|
DAA_Q(4) xor DAA_Q(5) xor DAA_Q(6) xor DAA_Q(7));
|
||||||
|
when "1101" | "1110" =>
|
||||||
|
-- RLD, RRD
|
||||||
|
Q_t(7 downto 4) := BusA(7 downto 4);
|
||||||
|
if ALU_Op(0) = '1' then
|
||||||
|
Q_t(3 downto 0) := BusB(7 downto 4);
|
||||||
|
else
|
||||||
|
Q_t(3 downto 0) := BusB(3 downto 0);
|
||||||
|
end if;
|
||||||
|
F_Out(Flag_H) <= '0';
|
||||||
|
F_Out(Flag_N) <= '0';
|
||||||
|
F_Out(Flag_X) <= Q_t(3);
|
||||||
|
F_Out(Flag_Y) <= Q_t(5);
|
||||||
|
if Q_t(7 downto 0) = "00000000" then
|
||||||
|
F_Out(Flag_Z) <= '1';
|
||||||
|
else
|
||||||
|
F_Out(Flag_Z) <= '0';
|
||||||
|
end if;
|
||||||
|
F_Out(Flag_S) <= Q_t(7);
|
||||||
|
F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor
|
||||||
|
Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7));
|
||||||
|
when "1001" =>
|
||||||
|
-- BIT
|
||||||
|
Q_t(7 downto 0) := BusB and BitMask;
|
||||||
|
F_Out(Flag_S) <= Q_t(7);
|
||||||
|
if Q_t(7 downto 0) = "00000000" then
|
||||||
|
F_Out(Flag_Z) <= '1';
|
||||||
|
F_Out(Flag_P) <= '1';
|
||||||
|
else
|
||||||
|
F_Out(Flag_Z) <= '0';
|
||||||
|
F_Out(Flag_P) <= '0';
|
||||||
|
end if;
|
||||||
|
F_Out(Flag_H) <= '1';
|
||||||
|
F_Out(Flag_N) <= '0';
|
||||||
|
F_Out(Flag_X) <= '0';
|
||||||
|
F_Out(Flag_Y) <= '0';
|
||||||
|
if IR(2 downto 0) /= "110" then
|
||||||
|
F_Out(Flag_X) <= BusB(3);
|
||||||
|
F_Out(Flag_Y) <= BusB(5);
|
||||||
|
end if;
|
||||||
|
when "1010" =>
|
||||||
|
-- SET
|
||||||
|
Q_t(7 downto 0) := BusB or BitMask;
|
||||||
|
when "1011" =>
|
||||||
|
-- RES
|
||||||
|
Q_t(7 downto 0) := BusB and not BitMask;
|
||||||
|
when "1000" =>
|
||||||
|
-- ROT
|
||||||
|
case IR(5 downto 3) is
|
||||||
|
when "000" => -- RLC
|
||||||
|
Q_t(7 downto 1) := BusA(6 downto 0);
|
||||||
|
Q_t(0) := BusA(7);
|
||||||
|
F_Out(Flag_C) <= BusA(7);
|
||||||
|
when "010" => -- RL
|
||||||
|
Q_t(7 downto 1) := BusA(6 downto 0);
|
||||||
|
Q_t(0) := F_In(Flag_C);
|
||||||
|
F_Out(Flag_C) <= BusA(7);
|
||||||
|
when "001" => -- RRC
|
||||||
|
Q_t(6 downto 0) := BusA(7 downto 1);
|
||||||
|
Q_t(7) := BusA(0);
|
||||||
|
F_Out(Flag_C) <= BusA(0);
|
||||||
|
when "011" => -- RR
|
||||||
|
Q_t(6 downto 0) := BusA(7 downto 1);
|
||||||
|
Q_t(7) := F_In(Flag_C);
|
||||||
|
F_Out(Flag_C) <= BusA(0);
|
||||||
|
when "100" => -- SLA
|
||||||
|
Q_t(7 downto 1) := BusA(6 downto 0);
|
||||||
|
Q_t(0) := '0';
|
||||||
|
F_Out(Flag_C) <= BusA(7);
|
||||||
|
when "110" => -- SLL (Undocumented) / SWAP
|
||||||
|
if Mode = 3 then
|
||||||
|
Q_t(7 downto 4) := BusA(3 downto 0);
|
||||||
|
Q_t(3 downto 0) := BusA(7 downto 4);
|
||||||
|
F_Out(Flag_C) <= '0';
|
||||||
|
else
|
||||||
|
Q_t(7 downto 1) := BusA(6 downto 0);
|
||||||
|
Q_t(0) := '1';
|
||||||
|
F_Out(Flag_C) <= BusA(7);
|
||||||
|
end if;
|
||||||
|
when "101" => -- SRA
|
||||||
|
Q_t(6 downto 0) := BusA(7 downto 1);
|
||||||
|
Q_t(7) := BusA(7);
|
||||||
|
F_Out(Flag_C) <= BusA(0);
|
||||||
|
when others => -- SRL
|
||||||
|
Q_t(6 downto 0) := BusA(7 downto 1);
|
||||||
|
Q_t(7) := '0';
|
||||||
|
F_Out(Flag_C) <= BusA(0);
|
||||||
|
end case;
|
||||||
|
F_Out(Flag_H) <= '0';
|
||||||
|
F_Out(Flag_N) <= '0';
|
||||||
|
F_Out(Flag_X) <= Q_t(3);
|
||||||
|
F_Out(Flag_Y) <= Q_t(5);
|
||||||
|
F_Out(Flag_S) <= Q_t(7);
|
||||||
|
if Q_t(7 downto 0) = "00000000" then
|
||||||
|
F_Out(Flag_Z) <= '1';
|
||||||
|
else
|
||||||
|
F_Out(Flag_Z) <= '0';
|
||||||
|
end if;
|
||||||
|
F_Out(Flag_P) <= not (Q_t(0) xor Q_t(1) xor Q_t(2) xor Q_t(3) xor
|
||||||
|
Q_t(4) xor Q_t(5) xor Q_t(6) xor Q_t(7));
|
||||||
|
if ISet = "00" then
|
||||||
|
F_Out(Flag_P) <= F_In(Flag_P);
|
||||||
|
F_Out(Flag_S) <= F_In(Flag_S);
|
||||||
|
F_Out(Flag_Z) <= F_In(Flag_Z);
|
||||||
|
end if;
|
||||||
|
when others =>
|
||||||
|
null;
|
||||||
|
end case;
|
||||||
|
Q <= Q_t;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
end;
|
||||||
1934
T80_MCode.vhd
Executable file
1934
T80_MCode.vhd
Executable file
File diff suppressed because it is too large
Load Diff
208
T80_Pack.vhd
Executable file
208
T80_Pack.vhd
Executable file
@@ -0,0 +1,208 @@
|
|||||||
|
--
|
||||||
|
-- Z80 compatible microprocessor core
|
||||||
|
--
|
||||||
|
-- Version : 0242
|
||||||
|
--
|
||||||
|
-- Copyright (c) 2001-2002 Daniel Wallner (jesus@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/t80/
|
||||||
|
--
|
||||||
|
-- Limitations :
|
||||||
|
--
|
||||||
|
-- File history :
|
||||||
|
--
|
||||||
|
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.std_logic_1164.all;
|
||||||
|
|
||||||
|
package T80_Pack is
|
||||||
|
|
||||||
|
component T80
|
||||||
|
generic(
|
||||||
|
Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB
|
||||||
|
IOWait : integer := 0; -- 1 => Single cycle I/O, 1 => Std I/O cycle
|
||||||
|
Flag_C : integer := 0;
|
||||||
|
Flag_N : integer := 1;
|
||||||
|
Flag_P : integer := 2;
|
||||||
|
Flag_X : integer := 3;
|
||||||
|
Flag_H : integer := 4;
|
||||||
|
Flag_Y : integer := 5;
|
||||||
|
Flag_Z : integer := 6;
|
||||||
|
Flag_S : integer := 7
|
||||||
|
);
|
||||||
|
port(
|
||||||
|
RESET_n : in std_logic;
|
||||||
|
CLK_n : in std_logic;
|
||||||
|
CEN : in std_logic;
|
||||||
|
WAIT_n : in std_logic;
|
||||||
|
INT_n : in std_logic;
|
||||||
|
NMI_n : in std_logic;
|
||||||
|
BUSRQ_n : in std_logic;
|
||||||
|
M1_n : out std_logic;
|
||||||
|
IORQ : out std_logic;
|
||||||
|
NoRead : out std_logic;
|
||||||
|
Write : out std_logic;
|
||||||
|
RFSH_n : out std_logic;
|
||||||
|
HALT_n : out std_logic;
|
||||||
|
BUSAK_n : out std_logic;
|
||||||
|
A : out std_logic_vector(15 downto 0);
|
||||||
|
DInst : in std_logic_vector(7 downto 0);
|
||||||
|
DI : in std_logic_vector(7 downto 0);
|
||||||
|
DO : out std_logic_vector(7 downto 0);
|
||||||
|
MC : out std_logic_vector(2 downto 0);
|
||||||
|
TS : out std_logic_vector(2 downto 0);
|
||||||
|
IntCycle_n : out std_logic;
|
||||||
|
IntE : out std_logic;
|
||||||
|
Stop : out std_logic
|
||||||
|
);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component T80_Reg
|
||||||
|
port(
|
||||||
|
Clk : in std_logic;
|
||||||
|
CEN : in std_logic;
|
||||||
|
WEH : in std_logic;
|
||||||
|
WEL : in std_logic;
|
||||||
|
AddrA : in std_logic_vector(2 downto 0);
|
||||||
|
AddrB : in std_logic_vector(2 downto 0);
|
||||||
|
AddrC : in std_logic_vector(2 downto 0);
|
||||||
|
DIH : in std_logic_vector(7 downto 0);
|
||||||
|
DIL : in std_logic_vector(7 downto 0);
|
||||||
|
DOAH : out std_logic_vector(7 downto 0);
|
||||||
|
DOAL : out std_logic_vector(7 downto 0);
|
||||||
|
DOBH : out std_logic_vector(7 downto 0);
|
||||||
|
DOBL : out std_logic_vector(7 downto 0);
|
||||||
|
DOCH : out std_logic_vector(7 downto 0);
|
||||||
|
DOCL : out std_logic_vector(7 downto 0)
|
||||||
|
);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component T80_MCode
|
||||||
|
generic(
|
||||||
|
Mode : integer := 0;
|
||||||
|
Flag_C : integer := 0;
|
||||||
|
Flag_N : integer := 1;
|
||||||
|
Flag_P : integer := 2;
|
||||||
|
Flag_X : integer := 3;
|
||||||
|
Flag_H : integer := 4;
|
||||||
|
Flag_Y : integer := 5;
|
||||||
|
Flag_Z : integer := 6;
|
||||||
|
Flag_S : integer := 7
|
||||||
|
);
|
||||||
|
port(
|
||||||
|
IR : in std_logic_vector(7 downto 0);
|
||||||
|
ISet : in std_logic_vector(1 downto 0);
|
||||||
|
MCycle : in std_logic_vector(2 downto 0);
|
||||||
|
F : in std_logic_vector(7 downto 0);
|
||||||
|
NMICycle : in std_logic;
|
||||||
|
IntCycle : in std_logic;
|
||||||
|
MCycles : out std_logic_vector(2 downto 0);
|
||||||
|
TStates : out std_logic_vector(2 downto 0);
|
||||||
|
Prefix : out std_logic_vector(1 downto 0); -- None,BC,ED,DD/FD
|
||||||
|
Inc_PC : out std_logic;
|
||||||
|
Inc_WZ : out std_logic;
|
||||||
|
IncDec_16 : out std_logic_vector(3 downto 0); -- BC,DE,HL,SP 0 is inc
|
||||||
|
Read_To_Reg : out std_logic;
|
||||||
|
Read_To_Acc : out std_logic;
|
||||||
|
Set_BusA_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI/DB,A,SP(L),SP(M),0,F
|
||||||
|
Set_BusB_To : out std_logic_vector(3 downto 0); -- B,C,D,E,H,L,DI,A,SP(L),SP(M),1,F,PC(L),PC(M),0
|
||||||
|
ALU_Op : out std_logic_vector(3 downto 0);
|
||||||
|
-- ADD, ADC, SUB, SBC, AND, XOR, OR, CP, ROT, BIT, SET, RES, DAA, RLD, RRD, None
|
||||||
|
Save_ALU : out std_logic;
|
||||||
|
PreserveC : out std_logic;
|
||||||
|
Arith16 : out std_logic;
|
||||||
|
Set_Addr_To : out std_logic_vector(2 downto 0); -- aNone,aXY,aIOA,aSP,aBC,aDE,aZI
|
||||||
|
IORQ : out std_logic;
|
||||||
|
Jump : out std_logic;
|
||||||
|
JumpE : out std_logic;
|
||||||
|
JumpXY : out std_logic;
|
||||||
|
Call : out std_logic;
|
||||||
|
RstP : out std_logic;
|
||||||
|
LDZ : out std_logic;
|
||||||
|
LDW : out std_logic;
|
||||||
|
LDSPHL : out std_logic;
|
||||||
|
Special_LD : out std_logic_vector(2 downto 0); -- A,I;A,R;I,A;R,A;None
|
||||||
|
ExchangeDH : out std_logic;
|
||||||
|
ExchangeRp : out std_logic;
|
||||||
|
ExchangeAF : out std_logic;
|
||||||
|
ExchangeRS : out std_logic;
|
||||||
|
I_DJNZ : out std_logic;
|
||||||
|
I_CPL : out std_logic;
|
||||||
|
I_CCF : out std_logic;
|
||||||
|
I_SCF : out std_logic;
|
||||||
|
I_RETN : out std_logic;
|
||||||
|
I_BT : out std_logic;
|
||||||
|
I_BC : out std_logic;
|
||||||
|
I_BTR : out std_logic;
|
||||||
|
I_RLD : out std_logic;
|
||||||
|
I_RRD : out std_logic;
|
||||||
|
I_INRC : out std_logic;
|
||||||
|
SetDI : out std_logic;
|
||||||
|
SetEI : out std_logic;
|
||||||
|
IMode : out std_logic_vector(1 downto 0);
|
||||||
|
Halt : out std_logic;
|
||||||
|
NoRead : out std_logic;
|
||||||
|
Write : out std_logic
|
||||||
|
);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component T80_ALU
|
||||||
|
generic(
|
||||||
|
Mode : integer := 0;
|
||||||
|
Flag_C : integer := 0;
|
||||||
|
Flag_N : integer := 1;
|
||||||
|
Flag_P : integer := 2;
|
||||||
|
Flag_X : integer := 3;
|
||||||
|
Flag_H : integer := 4;
|
||||||
|
Flag_Y : integer := 5;
|
||||||
|
Flag_Z : integer := 6;
|
||||||
|
Flag_S : integer := 7
|
||||||
|
);
|
||||||
|
port(
|
||||||
|
Arith16 : in std_logic;
|
||||||
|
Z16 : in std_logic;
|
||||||
|
ALU_Op : in std_logic_vector(3 downto 0);
|
||||||
|
IR : in std_logic_vector(5 downto 0);
|
||||||
|
ISet : in std_logic_vector(1 downto 0);
|
||||||
|
BusA : in std_logic_vector(7 downto 0);
|
||||||
|
BusB : in std_logic_vector(7 downto 0);
|
||||||
|
F_In : in std_logic_vector(7 downto 0);
|
||||||
|
Q : out std_logic_vector(7 downto 0);
|
||||||
|
F_Out : out std_logic_vector(7 downto 0)
|
||||||
|
);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
end;
|
||||||
105
T80_Reg.vhd
Executable file
105
T80_Reg.vhd
Executable file
@@ -0,0 +1,105 @@
|
|||||||
|
--
|
||||||
|
-- T80 Registers, technology independent
|
||||||
|
--
|
||||||
|
-- Version : 0244
|
||||||
|
--
|
||||||
|
-- Copyright (c) 2002 Daniel Wallner (jesus@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/t51/
|
||||||
|
--
|
||||||
|
-- Limitations :
|
||||||
|
--
|
||||||
|
-- File history :
|
||||||
|
--
|
||||||
|
-- 0242 : Initial release
|
||||||
|
--
|
||||||
|
-- 0244 : Changed to single register file
|
||||||
|
--
|
||||||
|
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.std_logic_1164.all;
|
||||||
|
use IEEE.numeric_std.all;
|
||||||
|
|
||||||
|
entity T80_Reg is
|
||||||
|
port(
|
||||||
|
Clk : in std_logic;
|
||||||
|
CEN : in std_logic;
|
||||||
|
WEH : in std_logic;
|
||||||
|
WEL : in std_logic;
|
||||||
|
AddrA : in std_logic_vector(2 downto 0);
|
||||||
|
AddrB : in std_logic_vector(2 downto 0);
|
||||||
|
AddrC : in std_logic_vector(2 downto 0);
|
||||||
|
DIH : in std_logic_vector(7 downto 0);
|
||||||
|
DIL : in std_logic_vector(7 downto 0);
|
||||||
|
DOAH : out std_logic_vector(7 downto 0);
|
||||||
|
DOAL : out std_logic_vector(7 downto 0);
|
||||||
|
DOBH : out std_logic_vector(7 downto 0);
|
||||||
|
DOBL : out std_logic_vector(7 downto 0);
|
||||||
|
DOCH : out std_logic_vector(7 downto 0);
|
||||||
|
DOCL : out std_logic_vector(7 downto 0)
|
||||||
|
);
|
||||||
|
end T80_Reg;
|
||||||
|
|
||||||
|
architecture rtl of T80_Reg is
|
||||||
|
|
||||||
|
type Register_Image is array (natural range <>) of std_logic_vector(7 downto 0);
|
||||||
|
signal RegsH : Register_Image(0 to 7);
|
||||||
|
signal RegsL : Register_Image(0 to 7);
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
process (Clk)
|
||||||
|
begin
|
||||||
|
if Clk'event and Clk = '1' then
|
||||||
|
if CEN = '1' then
|
||||||
|
if WEH = '1' then
|
||||||
|
RegsH(to_integer(unsigned(AddrA))) <= DIH;
|
||||||
|
end if;
|
||||||
|
if WEL = '1' then
|
||||||
|
RegsL(to_integer(unsigned(AddrA))) <= DIL;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
DOAH <= RegsH(to_integer(unsigned(AddrA)));
|
||||||
|
DOAL <= RegsL(to_integer(unsigned(AddrA)));
|
||||||
|
DOBH <= RegsH(to_integer(unsigned(AddrB)));
|
||||||
|
DOBL <= RegsL(to_integer(unsigned(AddrB)));
|
||||||
|
DOCH <= RegsH(to_integer(unsigned(AddrC)));
|
||||||
|
DOCL <= RegsL(to_integer(unsigned(AddrC)));
|
||||||
|
|
||||||
|
end;
|
||||||
170
T80_RegX.vhd
Executable file
170
T80_RegX.vhd
Executable file
@@ -0,0 +1,170 @@
|
|||||||
|
--
|
||||||
|
-- T80 Registers for Xilinx Select RAM
|
||||||
|
--
|
||||||
|
-- Version : 0244
|
||||||
|
--
|
||||||
|
-- Copyright (c) 2002 Daniel Wallner (jesus@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/t51/
|
||||||
|
--
|
||||||
|
-- Limitations :
|
||||||
|
--
|
||||||
|
-- File history :
|
||||||
|
--
|
||||||
|
-- 0242 : Initial release
|
||||||
|
--
|
||||||
|
-- 0244 : Removed UNISIM library and added componet declaration
|
||||||
|
--
|
||||||
|
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.std_logic_1164.all;
|
||||||
|
use IEEE.numeric_std.all;
|
||||||
|
|
||||||
|
library UNISIM;
|
||||||
|
use UNISIM.VComponents.all;
|
||||||
|
|
||||||
|
entity T80_Reg is
|
||||||
|
port(
|
||||||
|
Clk : in std_logic;
|
||||||
|
CEN : in std_logic;
|
||||||
|
WEH : in std_logic;
|
||||||
|
WEL : in std_logic;
|
||||||
|
AddrA : in std_logic_vector(2 downto 0);
|
||||||
|
AddrB : in std_logic_vector(2 downto 0);
|
||||||
|
AddrC : in std_logic_vector(2 downto 0);
|
||||||
|
DIH : in std_logic_vector(7 downto 0);
|
||||||
|
DIL : in std_logic_vector(7 downto 0);
|
||||||
|
DOAH : out std_logic_vector(7 downto 0);
|
||||||
|
DOAL : out std_logic_vector(7 downto 0);
|
||||||
|
DOBH : out std_logic_vector(7 downto 0);
|
||||||
|
DOBL : out std_logic_vector(7 downto 0);
|
||||||
|
DOCH : out std_logic_vector(7 downto 0);
|
||||||
|
DOCL : out std_logic_vector(7 downto 0)
|
||||||
|
);
|
||||||
|
end T80_Reg;
|
||||||
|
|
||||||
|
architecture rtl of T80_Reg is
|
||||||
|
|
||||||
|
-- component RAM16X1D
|
||||||
|
-- port(
|
||||||
|
-- DPO : out std_ulogic;
|
||||||
|
-- SPO : out std_ulogic;
|
||||||
|
-- A0 : in std_ulogic;
|
||||||
|
-- A1 : in std_ulogic;
|
||||||
|
-- A2 : in std_ulogic;
|
||||||
|
-- A3 : in std_ulogic;
|
||||||
|
-- D : in std_ulogic;
|
||||||
|
-- DPRA0 : in std_ulogic;
|
||||||
|
-- DPRA1 : in std_ulogic;
|
||||||
|
-- DPRA2 : in std_ulogic;
|
||||||
|
-- DPRA3 : in std_ulogic;
|
||||||
|
-- WCLK : in std_ulogic;
|
||||||
|
-- WE : in std_ulogic);
|
||||||
|
-- end component;
|
||||||
|
|
||||||
|
signal ENH : std_logic;
|
||||||
|
signal ENL : std_logic;
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
ENH <= CEN and WEH;
|
||||||
|
ENL <= CEN and WEL;
|
||||||
|
|
||||||
|
bG1: for I in 0 to 7 generate
|
||||||
|
begin
|
||||||
|
Reg1H : RAM16X1D
|
||||||
|
port map(
|
||||||
|
DPO => DOBH(i),
|
||||||
|
SPO => DOAH(i),
|
||||||
|
A0 => AddrA(0),
|
||||||
|
A1 => AddrA(1),
|
||||||
|
A2 => AddrA(2),
|
||||||
|
A3 => '0',
|
||||||
|
D => DIH(i),
|
||||||
|
DPRA0 => AddrB(0),
|
||||||
|
DPRA1 => AddrB(1),
|
||||||
|
DPRA2 => AddrB(2),
|
||||||
|
DPRA3 => '0',
|
||||||
|
WCLK => Clk,
|
||||||
|
WE => ENH);
|
||||||
|
Reg1L : RAM16X1D
|
||||||
|
port map(
|
||||||
|
DPO => DOBL(i),
|
||||||
|
SPO => DOAL(i),
|
||||||
|
A0 => AddrA(0),
|
||||||
|
A1 => AddrA(1),
|
||||||
|
A2 => AddrA(2),
|
||||||
|
A3 => '0',
|
||||||
|
D => DIL(i),
|
||||||
|
DPRA0 => AddrB(0),
|
||||||
|
DPRA1 => AddrB(1),
|
||||||
|
DPRA2 => AddrB(2),
|
||||||
|
DPRA3 => '0',
|
||||||
|
WCLK => Clk,
|
||||||
|
WE => ENL);
|
||||||
|
Reg2H : RAM16X1D
|
||||||
|
port map(
|
||||||
|
DPO => DOCH(i),
|
||||||
|
SPO => open,
|
||||||
|
A0 => AddrA(0),
|
||||||
|
A1 => AddrA(1),
|
||||||
|
A2 => AddrA(2),
|
||||||
|
A3 => '0',
|
||||||
|
D => DIH(i),
|
||||||
|
DPRA0 => AddrC(0),
|
||||||
|
DPRA1 => AddrC(1),
|
||||||
|
DPRA2 => AddrC(2),
|
||||||
|
DPRA3 => '0',
|
||||||
|
WCLK => Clk,
|
||||||
|
WE => ENH);
|
||||||
|
Reg2L : RAM16X1D
|
||||||
|
port map(
|
||||||
|
DPO => DOCL(i),
|
||||||
|
SPO => open,
|
||||||
|
A0 => AddrA(0),
|
||||||
|
A1 => AddrA(1),
|
||||||
|
A2 => AddrA(2),
|
||||||
|
A3 => '0',
|
||||||
|
D => DIL(i),
|
||||||
|
DPRA0 => AddrC(0),
|
||||||
|
DPRA1 => AddrC(1),
|
||||||
|
DPRA2 => AddrC(2),
|
||||||
|
DPRA3 => '0',
|
||||||
|
WCLK => Clk,
|
||||||
|
WE => ENL);
|
||||||
|
end generate;
|
||||||
|
|
||||||
|
end;
|
||||||
255
T80a.vhd
Executable file
255
T80a.vhd
Executable file
@@ -0,0 +1,255 @@
|
|||||||
|
--
|
||||||
|
-- Z80 compatible microprocessor core, asynchronous top level
|
||||||
|
--
|
||||||
|
-- Version : 0247
|
||||||
|
--
|
||||||
|
-- Copyright (c) 2001-2002 Daniel Wallner (jesus@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/t80/
|
||||||
|
--
|
||||||
|
-- Limitations :
|
||||||
|
--
|
||||||
|
-- File history :
|
||||||
|
--
|
||||||
|
-- 0208 : First complete release
|
||||||
|
--
|
||||||
|
-- 0211 : Fixed interrupt cycle
|
||||||
|
--
|
||||||
|
-- 0235 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
-- 0238 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
-- 0240 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
-- 0242 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
-- 0247 : Fixed bus req/ack cycle
|
||||||
|
--
|
||||||
|
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.std_logic_1164.all;
|
||||||
|
use IEEE.numeric_std.all;
|
||||||
|
use work.T80_Pack.all;
|
||||||
|
|
||||||
|
entity T80a is
|
||||||
|
generic(
|
||||||
|
Mode : integer := 0 -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB
|
||||||
|
);
|
||||||
|
port(
|
||||||
|
RESET_n : in std_logic;
|
||||||
|
CLK_n : in std_logic;
|
||||||
|
WAIT_n : in std_logic;
|
||||||
|
INT_n : in std_logic;
|
||||||
|
NMI_n : in std_logic;
|
||||||
|
BUSRQ_n : in std_logic;
|
||||||
|
M1_n : out std_logic;
|
||||||
|
MREQ_n : out std_logic;
|
||||||
|
IORQ_n : out std_logic;
|
||||||
|
RD_n : out std_logic;
|
||||||
|
WR_n : out std_logic;
|
||||||
|
RFSH_n : out std_logic;
|
||||||
|
HALT_n : out std_logic;
|
||||||
|
BUSAK_n : out std_logic;
|
||||||
|
A : out std_logic_vector(15 downto 0);
|
||||||
|
DIN : in std_logic_vector(7 downto 0);
|
||||||
|
DOUT : out std_logic_vector(7 downto 0)
|
||||||
|
);
|
||||||
|
end T80a;
|
||||||
|
|
||||||
|
architecture rtl of T80a is
|
||||||
|
|
||||||
|
signal CEN : std_logic;
|
||||||
|
signal Reset_s : std_logic;
|
||||||
|
signal IntCycle_n : std_logic;
|
||||||
|
signal IORQ : std_logic;
|
||||||
|
signal NoRead : std_logic;
|
||||||
|
signal Write : std_logic;
|
||||||
|
signal MREQ : std_logic;
|
||||||
|
signal MReq_Inhibit : std_logic;
|
||||||
|
signal Req_Inhibit : std_logic;
|
||||||
|
signal RD : std_logic;
|
||||||
|
signal MREQ_n_i : std_logic;
|
||||||
|
signal IORQ_n_i : std_logic;
|
||||||
|
signal RD_n_i : std_logic;
|
||||||
|
signal WR_n_i : std_logic;
|
||||||
|
signal RFSH_n_i : std_logic;
|
||||||
|
signal BUSAK_n_i : std_logic;
|
||||||
|
signal A_i : std_logic_vector(15 downto 0);
|
||||||
|
signal DO : std_logic_vector(7 downto 0);
|
||||||
|
signal DI_Reg : std_logic_vector (7 downto 0); -- Input synchroniser
|
||||||
|
signal Wait_s : std_logic;
|
||||||
|
signal MCycle : std_logic_vector(2 downto 0);
|
||||||
|
signal TState : std_logic_vector(2 downto 0);
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
CEN <= '1';
|
||||||
|
|
||||||
|
BUSAK_n <= BUSAK_n_i;
|
||||||
|
MREQ_n_i <= not MREQ or (Req_Inhibit and MReq_Inhibit);
|
||||||
|
RD_n_i <= not RD or Req_Inhibit;
|
||||||
|
|
||||||
|
MREQ_n <= MREQ_n_i when BUSAK_n_i = '1' else 'Z';
|
||||||
|
IORQ_n <= IORQ_n_i when BUSAK_n_i = '1' else 'Z';
|
||||||
|
RD_n <= RD_n_i when BUSAK_n_i = '1' else 'Z';
|
||||||
|
WR_n <= WR_n_i when BUSAK_n_i = '1' else 'Z';
|
||||||
|
RFSH_n <= RFSH_n_i when BUSAK_n_i = '1' else 'Z';
|
||||||
|
A <= A_i when BUSAK_n_i = '1' else (others => 'Z');
|
||||||
|
-- D <= DO when Write = '1' and BUSAK_n_i = '1' else (others => 'Z');
|
||||||
|
DOUT <= DO;
|
||||||
|
|
||||||
|
process (RESET_n, CLK_n)
|
||||||
|
begin
|
||||||
|
if RESET_n = '0' then
|
||||||
|
Reset_s <= '0';
|
||||||
|
elsif CLK_n'event and CLK_n = '1' then
|
||||||
|
Reset_s <= '1';
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
u0 : T80
|
||||||
|
generic map(
|
||||||
|
Mode => Mode,
|
||||||
|
IOWait => 1)
|
||||||
|
port map(
|
||||||
|
CEN => CEN,
|
||||||
|
M1_n => M1_n,
|
||||||
|
IORQ => IORQ,
|
||||||
|
NoRead => NoRead,
|
||||||
|
Write => Write,
|
||||||
|
RFSH_n => RFSH_n_i,
|
||||||
|
HALT_n => HALT_n,
|
||||||
|
WAIT_n => Wait_s,
|
||||||
|
INT_n => INT_n,
|
||||||
|
NMI_n => NMI_n,
|
||||||
|
RESET_n => Reset_s,
|
||||||
|
BUSRQ_n => BUSRQ_n,
|
||||||
|
BUSAK_n => BUSAK_n_i,
|
||||||
|
CLK_n => CLK_n,
|
||||||
|
A => A_i,
|
||||||
|
DInst => DIN,
|
||||||
|
DI => DI_Reg,
|
||||||
|
DO => DO,
|
||||||
|
MC => MCycle,
|
||||||
|
TS => TState,
|
||||||
|
IntCycle_n => IntCycle_n);
|
||||||
|
|
||||||
|
process (CLK_n)
|
||||||
|
begin
|
||||||
|
if CLK_n'event and CLK_n = '0' then
|
||||||
|
Wait_s <= WAIT_n;
|
||||||
|
if TState = "011" and BUSAK_n_i = '1' then
|
||||||
|
DI_Reg <= DIN;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
process (Reset_s,CLK_n)
|
||||||
|
begin
|
||||||
|
if Reset_s = '0' then
|
||||||
|
WR_n_i <= '1';
|
||||||
|
elsif CLK_n'event and CLK_n = '1' then
|
||||||
|
WR_n_i <= '1';
|
||||||
|
if TState = "001" then -- To short for IO writes !!!!!!!!!!!!!!!!!!!
|
||||||
|
WR_n_i <= not Write;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
process (Reset_s,CLK_n)
|
||||||
|
begin
|
||||||
|
if Reset_s = '0' then
|
||||||
|
Req_Inhibit <= '0';
|
||||||
|
elsif CLK_n'event and CLK_n = '1' then
|
||||||
|
if MCycle = "001" and TState = "010" then
|
||||||
|
Req_Inhibit <= '1';
|
||||||
|
else
|
||||||
|
Req_Inhibit <= '0';
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
process (Reset_s,CLK_n)
|
||||||
|
begin
|
||||||
|
if Reset_s = '0' then
|
||||||
|
MReq_Inhibit <= '0';
|
||||||
|
elsif CLK_n'event and CLK_n = '0' then
|
||||||
|
if MCycle = "001" and TState = "010" then
|
||||||
|
MReq_Inhibit <= '1';
|
||||||
|
else
|
||||||
|
MReq_Inhibit <= '0';
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
process(Reset_s,CLK_n)
|
||||||
|
begin
|
||||||
|
if Reset_s = '0' then
|
||||||
|
RD <= '0';
|
||||||
|
IORQ_n_i <= '1';
|
||||||
|
MREQ <= '0';
|
||||||
|
elsif CLK_n'event and CLK_n = '0' then
|
||||||
|
|
||||||
|
if MCycle = "001" then
|
||||||
|
if TState = "001" then
|
||||||
|
RD <= IntCycle_n;
|
||||||
|
MREQ <= IntCycle_n;
|
||||||
|
IORQ_n_i <= IntCycle_n;
|
||||||
|
end if;
|
||||||
|
if TState = "011" then
|
||||||
|
RD <= '0';
|
||||||
|
IORQ_n_i <= '1';
|
||||||
|
MREQ <= '1';
|
||||||
|
end if;
|
||||||
|
if TState = "100" then
|
||||||
|
MREQ <= '0';
|
||||||
|
end if;
|
||||||
|
else
|
||||||
|
if TState = "001" and NoRead = '0' then
|
||||||
|
RD <= not Write;
|
||||||
|
IORQ_n_i <= not IORQ;
|
||||||
|
MREQ <= not IORQ;
|
||||||
|
end if;
|
||||||
|
if TState = "011" then
|
||||||
|
RD <= '0';
|
||||||
|
IORQ_n_i <= '1';
|
||||||
|
MREQ <= '0';
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
end;
|
||||||
190
T80s.vhd
Executable file
190
T80s.vhd
Executable file
@@ -0,0 +1,190 @@
|
|||||||
|
--
|
||||||
|
-- Z80 compatible microprocessor core, synchronous top level
|
||||||
|
-- Different timing than the original z80
|
||||||
|
-- Inputs needs to be synchronous and outputs may glitch
|
||||||
|
--
|
||||||
|
-- Version : 0242
|
||||||
|
--
|
||||||
|
-- Copyright (c) 2001-2002 Daniel Wallner (jesus@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/t80/
|
||||||
|
--
|
||||||
|
-- Limitations :
|
||||||
|
--
|
||||||
|
-- File history :
|
||||||
|
--
|
||||||
|
-- 0208 : First complete release
|
||||||
|
--
|
||||||
|
-- 0210 : Fixed read with wait
|
||||||
|
--
|
||||||
|
-- 0211 : Fixed interrupt cycle
|
||||||
|
--
|
||||||
|
-- 0235 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
-- 0236 : Added T2Write generic
|
||||||
|
--
|
||||||
|
-- 0237 : Fixed T2Write with wait state
|
||||||
|
--
|
||||||
|
-- 0238 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
-- 0240 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
-- 0242 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.std_logic_1164.all;
|
||||||
|
use IEEE.numeric_std.all;
|
||||||
|
use work.T80_Pack.all;
|
||||||
|
|
||||||
|
entity T80s is
|
||||||
|
generic(
|
||||||
|
Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB
|
||||||
|
T2Write : integer := 0; -- 0 => WR_n active in T3, /=0 => WR_n active in T2
|
||||||
|
IOWait : integer := 1 -- 0 => Single cycle I/O, 1 => Std I/O cycle
|
||||||
|
);
|
||||||
|
port(
|
||||||
|
RESET_n : in std_logic;
|
||||||
|
CLK_n : in std_logic;
|
||||||
|
WAIT_n : in std_logic;
|
||||||
|
INT_n : in std_logic;
|
||||||
|
NMI_n : in std_logic;
|
||||||
|
BUSRQ_n : in std_logic;
|
||||||
|
M1_n : out std_logic;
|
||||||
|
MREQ_n : out std_logic;
|
||||||
|
IORQ_n : out std_logic;
|
||||||
|
RD_n : out std_logic;
|
||||||
|
WR_n : out std_logic;
|
||||||
|
RFSH_n : out std_logic;
|
||||||
|
HALT_n : out std_logic;
|
||||||
|
BUSAK_n : out std_logic;
|
||||||
|
A : out std_logic_vector(15 downto 0);
|
||||||
|
DI : in std_logic_vector(7 downto 0);
|
||||||
|
DO : out std_logic_vector(7 downto 0)
|
||||||
|
);
|
||||||
|
end T80s;
|
||||||
|
|
||||||
|
architecture rtl of T80s is
|
||||||
|
|
||||||
|
signal CEN : std_logic;
|
||||||
|
signal IntCycle_n : std_logic;
|
||||||
|
signal NoRead : std_logic;
|
||||||
|
signal Write : std_logic;
|
||||||
|
signal IORQ : std_logic;
|
||||||
|
signal DI_Reg : std_logic_vector(7 downto 0);
|
||||||
|
signal MCycle : std_logic_vector(2 downto 0);
|
||||||
|
signal TState : std_logic_vector(2 downto 0);
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
CEN <= '1';
|
||||||
|
|
||||||
|
u0 : T80
|
||||||
|
generic map(
|
||||||
|
Mode => Mode,
|
||||||
|
IOWait => IOWait)
|
||||||
|
port map(
|
||||||
|
CEN => CEN,
|
||||||
|
M1_n => M1_n,
|
||||||
|
IORQ => IORQ,
|
||||||
|
NoRead => NoRead,
|
||||||
|
Write => Write,
|
||||||
|
RFSH_n => RFSH_n,
|
||||||
|
HALT_n => HALT_n,
|
||||||
|
WAIT_n => Wait_n,
|
||||||
|
INT_n => INT_n,
|
||||||
|
NMI_n => NMI_n,
|
||||||
|
RESET_n => RESET_n,
|
||||||
|
BUSRQ_n => BUSRQ_n,
|
||||||
|
BUSAK_n => BUSAK_n,
|
||||||
|
CLK_n => CLK_n,
|
||||||
|
A => A,
|
||||||
|
DInst => DI,
|
||||||
|
DI => DI_Reg,
|
||||||
|
DO => DO,
|
||||||
|
MC => MCycle,
|
||||||
|
TS => TState,
|
||||||
|
IntCycle_n => IntCycle_n);
|
||||||
|
|
||||||
|
process (RESET_n, CLK_n)
|
||||||
|
begin
|
||||||
|
if RESET_n = '0' then
|
||||||
|
RD_n <= '1';
|
||||||
|
WR_n <= '1';
|
||||||
|
IORQ_n <= '1';
|
||||||
|
MREQ_n <= '1';
|
||||||
|
DI_Reg <= "00000000";
|
||||||
|
elsif CLK_n'event and CLK_n = '1' then
|
||||||
|
RD_n <= '1';
|
||||||
|
WR_n <= '1';
|
||||||
|
IORQ_n <= '1';
|
||||||
|
MREQ_n <= '1';
|
||||||
|
if MCycle = "001" then
|
||||||
|
if TState = "001" or (TState = "010" and Wait_n = '0') then
|
||||||
|
RD_n <= not IntCycle_n;
|
||||||
|
MREQ_n <= not IntCycle_n;
|
||||||
|
IORQ_n <= IntCycle_n;
|
||||||
|
end if;
|
||||||
|
if TState = "011" then
|
||||||
|
MREQ_n <= '0';
|
||||||
|
end if;
|
||||||
|
else
|
||||||
|
if (TState = "001" or (TState = "010" and Wait_n = '0')) and NoRead = '0' and Write = '0' then
|
||||||
|
RD_n <= '0';
|
||||||
|
IORQ_n <= not IORQ;
|
||||||
|
MREQ_n <= IORQ;
|
||||||
|
end if;
|
||||||
|
if T2Write = 0 then
|
||||||
|
if TState = "010" and Write = '1' then
|
||||||
|
WR_n <= '0';
|
||||||
|
IORQ_n <= not IORQ;
|
||||||
|
MREQ_n <= IORQ;
|
||||||
|
end if;
|
||||||
|
else
|
||||||
|
if (TState = "001" or (TState = "010" and Wait_n = '0')) and Write = '1' then
|
||||||
|
WR_n <= '0';
|
||||||
|
IORQ_n <= not IORQ;
|
||||||
|
MREQ_n <= IORQ;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
if TState = "010" and Wait_n = '1' then
|
||||||
|
DI_Reg <= DI;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
end;
|
||||||
184
T80se.vhd
Executable file
184
T80se.vhd
Executable file
@@ -0,0 +1,184 @@
|
|||||||
|
--
|
||||||
|
-- Z80 compatible microprocessor core, synchronous top level with clock enable
|
||||||
|
-- Different timing than the original z80
|
||||||
|
-- Inputs needs to be synchronous and outputs may glitch
|
||||||
|
--
|
||||||
|
-- Version : 0242
|
||||||
|
--
|
||||||
|
-- Copyright (c) 2001-2002 Daniel Wallner (jesus@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/t80/
|
||||||
|
--
|
||||||
|
-- Limitations :
|
||||||
|
--
|
||||||
|
-- File history :
|
||||||
|
--
|
||||||
|
-- 0235 : First release
|
||||||
|
--
|
||||||
|
-- 0236 : Added T2Write generic
|
||||||
|
--
|
||||||
|
-- 0237 : Fixed T2Write with wait state
|
||||||
|
--
|
||||||
|
-- 0238 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
-- 0240 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
-- 0242 : Updated for T80 interface change
|
||||||
|
--
|
||||||
|
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.std_logic_1164.all;
|
||||||
|
use IEEE.numeric_std.all;
|
||||||
|
use work.T80_Pack.all;
|
||||||
|
|
||||||
|
entity T80se is
|
||||||
|
generic(
|
||||||
|
Mode : integer := 0; -- 0 => Z80, 1 => Fast Z80, 2 => 8080, 3 => GB
|
||||||
|
T2Write : integer := 0; -- 0 => WR_n active in T3, /=0 => WR_n active in T2
|
||||||
|
IOWait : integer := 1 -- 0 => Single cycle I/O, 1 => Std I/O cycle
|
||||||
|
);
|
||||||
|
port(
|
||||||
|
RESET_n : in std_logic;
|
||||||
|
CLK_n : in std_logic;
|
||||||
|
CLKEN : in std_logic;
|
||||||
|
WAIT_n : in std_logic;
|
||||||
|
INT_n : in std_logic;
|
||||||
|
NMI_n : in std_logic;
|
||||||
|
BUSRQ_n : in std_logic;
|
||||||
|
M1_n : out std_logic;
|
||||||
|
MREQ_n : out std_logic;
|
||||||
|
IORQ_n : out std_logic;
|
||||||
|
RD_n : out std_logic;
|
||||||
|
WR_n : out std_logic;
|
||||||
|
RFSH_n : out std_logic;
|
||||||
|
HALT_n : out std_logic;
|
||||||
|
BUSAK_n : out std_logic;
|
||||||
|
A : out std_logic_vector(15 downto 0);
|
||||||
|
DI : in std_logic_vector(7 downto 0);
|
||||||
|
DO : out std_logic_vector(7 downto 0)
|
||||||
|
);
|
||||||
|
end T80se;
|
||||||
|
|
||||||
|
architecture rtl of T80se is
|
||||||
|
|
||||||
|
signal IntCycle_n : std_logic;
|
||||||
|
signal NoRead : std_logic;
|
||||||
|
signal Write : std_logic;
|
||||||
|
signal IORQ : std_logic;
|
||||||
|
signal DI_Reg : std_logic_vector(7 downto 0);
|
||||||
|
signal MCycle : std_logic_vector(2 downto 0);
|
||||||
|
signal TState : std_logic_vector(2 downto 0);
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
u0 : T80
|
||||||
|
generic map(
|
||||||
|
Mode => Mode,
|
||||||
|
IOWait => IOWait)
|
||||||
|
port map(
|
||||||
|
CEN => CLKEN,
|
||||||
|
M1_n => M1_n,
|
||||||
|
IORQ => IORQ,
|
||||||
|
NoRead => NoRead,
|
||||||
|
Write => Write,
|
||||||
|
RFSH_n => RFSH_n,
|
||||||
|
HALT_n => HALT_n,
|
||||||
|
WAIT_n => Wait_n,
|
||||||
|
INT_n => INT_n,
|
||||||
|
NMI_n => NMI_n,
|
||||||
|
RESET_n => RESET_n,
|
||||||
|
BUSRQ_n => BUSRQ_n,
|
||||||
|
BUSAK_n => BUSAK_n,
|
||||||
|
CLK_n => CLK_n,
|
||||||
|
A => A,
|
||||||
|
DInst => DI,
|
||||||
|
DI => DI_Reg,
|
||||||
|
DO => DO,
|
||||||
|
MC => MCycle,
|
||||||
|
TS => TState,
|
||||||
|
IntCycle_n => IntCycle_n);
|
||||||
|
|
||||||
|
process (RESET_n, CLK_n)
|
||||||
|
begin
|
||||||
|
if RESET_n = '0' then
|
||||||
|
RD_n <= '1';
|
||||||
|
WR_n <= '1';
|
||||||
|
IORQ_n <= '1';
|
||||||
|
MREQ_n <= '1';
|
||||||
|
DI_Reg <= "00000000";
|
||||||
|
elsif CLK_n'event and CLK_n = '1' then
|
||||||
|
if CLKEN = '1' then
|
||||||
|
RD_n <= '1';
|
||||||
|
WR_n <= '1';
|
||||||
|
IORQ_n <= '1';
|
||||||
|
MREQ_n <= '1';
|
||||||
|
if MCycle = "001" then
|
||||||
|
if TState = "001" or (TState = "010" and Wait_n = '0') then
|
||||||
|
RD_n <= not IntCycle_n;
|
||||||
|
MREQ_n <= not IntCycle_n;
|
||||||
|
IORQ_n <= IntCycle_n;
|
||||||
|
end if;
|
||||||
|
if TState = "011" then
|
||||||
|
MREQ_n <= '0';
|
||||||
|
end if;
|
||||||
|
else
|
||||||
|
if (TState = "001" or (TState = "010" and Wait_n = '0')) and NoRead = '0' and Write = '0' then
|
||||||
|
RD_n <= '0';
|
||||||
|
IORQ_n <= not IORQ;
|
||||||
|
MREQ_n <= IORQ;
|
||||||
|
end if;
|
||||||
|
if T2Write = 0 then
|
||||||
|
if TState = "010" and Write = '1' then
|
||||||
|
WR_n <= '0';
|
||||||
|
IORQ_n <= not IORQ;
|
||||||
|
MREQ_n <= IORQ;
|
||||||
|
end if;
|
||||||
|
else
|
||||||
|
if (TState = "001" or (TState = "010" and Wait_n = '0')) and Write = '1' then
|
||||||
|
WR_n <= '0';
|
||||||
|
IORQ_n <= not IORQ;
|
||||||
|
MREQ_n <= IORQ;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
if TState = "010" and Wait_n = '1' then
|
||||||
|
DI_Reg <= DI;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
end;
|
||||||
8192
coregen/basic_rom.mif
Executable file
8192
coregen/basic_rom.mif
Executable file
File diff suppressed because it is too large
Load Diff
3
coregen/basic_rom.ngc
Executable file
3
coregen/basic_rom.ngc
Executable file
File diff suppressed because one or more lines are too long
121
coregen/basic_rom.vhd
Executable file
121
coregen/basic_rom.vhd
Executable file
@@ -0,0 +1,121 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- You must compile the wrapper file basic_rom.vhd when simulating
|
||||||
|
-- the core, basic_rom. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
|
-- The synthesis directives "translate_off/translate_on" specified
|
||||||
|
-- below are supported by Xilinx, Mentor Graphics and Synplicity
|
||||||
|
-- synthesis tools. Ensure they are correct for your synthesis tool(s).
|
||||||
|
|
||||||
|
LIBRARY ieee;
|
||||||
|
USE ieee.std_logic_1164.ALL;
|
||||||
|
-- synthesis translate_off
|
||||||
|
Library XilinxCoreLib;
|
||||||
|
-- synthesis translate_on
|
||||||
|
ENTITY basic_rom IS
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(12 downto 0);
|
||||||
|
ena: IN std_logic;
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
END basic_rom;
|
||||||
|
|
||||||
|
ARCHITECTURE basic_rom_a OF basic_rom IS
|
||||||
|
-- synthesis translate_off
|
||||||
|
component wrapped_basic_rom
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(12 downto 0);
|
||||||
|
ena: IN std_logic;
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- Configuration specification
|
||||||
|
for all : wrapped_basic_rom use entity XilinxCoreLib.blk_mem_gen_v2_6(behavioral)
|
||||||
|
generic map(
|
||||||
|
c_has_regceb => 0,
|
||||||
|
c_has_regcea => 0,
|
||||||
|
c_mem_type => 3,
|
||||||
|
c_prim_type => 1,
|
||||||
|
c_sinita_val => "0",
|
||||||
|
c_read_width_b => 8,
|
||||||
|
c_family => "spartan3",
|
||||||
|
c_read_width_a => 8,
|
||||||
|
c_disable_warn_bhv_coll => 0,
|
||||||
|
c_write_mode_b => "WRITE_FIRST",
|
||||||
|
c_init_file_name => "basic_rom.mif",
|
||||||
|
c_write_mode_a => "WRITE_FIRST",
|
||||||
|
c_mux_pipeline_stages => 0,
|
||||||
|
c_has_mem_output_regs_b => 0,
|
||||||
|
c_load_init_file => 1,
|
||||||
|
c_xdevicefamily => "spartan3a",
|
||||||
|
c_has_mem_output_regs_a => 0,
|
||||||
|
c_write_depth_b => 8192,
|
||||||
|
c_write_depth_a => 8192,
|
||||||
|
c_has_ssrb => 0,
|
||||||
|
c_has_mux_output_regs_b => 0,
|
||||||
|
c_has_ssra => 0,
|
||||||
|
c_has_mux_output_regs_a => 0,
|
||||||
|
c_addra_width => 13,
|
||||||
|
c_addrb_width => 13,
|
||||||
|
c_default_data => "0",
|
||||||
|
c_use_ecc => 0,
|
||||||
|
c_algorithm => 1,
|
||||||
|
c_disable_warn_bhv_range => 0,
|
||||||
|
c_write_width_b => 8,
|
||||||
|
c_write_width_a => 8,
|
||||||
|
c_read_depth_b => 8192,
|
||||||
|
c_read_depth_a => 8192,
|
||||||
|
c_byte_size => 9,
|
||||||
|
c_sim_collision_check => "ALL",
|
||||||
|
c_use_ramb16bwer_rst_bhv => 0,
|
||||||
|
c_common_clk => 0,
|
||||||
|
c_wea_width => 1,
|
||||||
|
c_has_enb => 0,
|
||||||
|
c_web_width => 1,
|
||||||
|
c_has_ena => 1,
|
||||||
|
c_sinitb_val => "0",
|
||||||
|
c_use_byte_web => 0,
|
||||||
|
c_use_byte_wea => 0,
|
||||||
|
c_use_default_data => 0);
|
||||||
|
-- synthesis translate_on
|
||||||
|
BEGIN
|
||||||
|
-- synthesis translate_off
|
||||||
|
U0 : wrapped_basic_rom
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
addra => addra,
|
||||||
|
ena => ena,
|
||||||
|
douta => douta);
|
||||||
|
-- synthesis translate_on
|
||||||
|
|
||||||
|
END basic_rom_a;
|
||||||
|
|
||||||
58
coregen/basic_rom.vho
Executable file
58
coregen/basic_rom.vho
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- The following code must appear in the VHDL architecture header:
|
||||||
|
|
||||||
|
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
|
||||||
|
component basic_rom
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(12 downto 0);
|
||||||
|
ena: IN std_logic;
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
|
||||||
|
|
||||||
|
-- The following code must appear in the VHDL architecture
|
||||||
|
-- body. Substitute your own instance name and net names.
|
||||||
|
|
||||||
|
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
|
||||||
|
your_instance_name : basic_rom
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
addra => addra,
|
||||||
|
ena => ena,
|
||||||
|
douta => douta);
|
||||||
|
-- INST_TAG_END ------ End INSTANTIATION Template ------------
|
||||||
|
|
||||||
|
-- You must compile the wrapper file basic_rom.vhd when simulating
|
||||||
|
-- the core, basic_rom. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
78
coregen/basic_rom.xco
Executable file
78
coregen/basic_rom.xco
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# Xilinx Core Generator version J.40
|
||||||
|
# Date: Fri Jan 09 14:26:54 2009
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# This file contains the customisation parameters for a
|
||||||
|
# Xilinx CORE Generator IP GUI. It is strongly recommended
|
||||||
|
# that you do not manually alter this file as it may cause
|
||||||
|
# unexpected and unsupported behavior.
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# BEGIN Project Options
|
||||||
|
SET addpads = False
|
||||||
|
SET asysymbol = False
|
||||||
|
SET busformat = BusFormatAngleBracketNotRipped
|
||||||
|
SET createndf = False
|
||||||
|
SET designentry = VHDL
|
||||||
|
SET device = xc3s700an
|
||||||
|
SET devicefamily = spartan3a
|
||||||
|
SET flowvendor = Other
|
||||||
|
SET formalverification = False
|
||||||
|
SET foundationsym = False
|
||||||
|
SET implementationfiletype = Ngc
|
||||||
|
SET package = fgg484
|
||||||
|
SET removerpms = False
|
||||||
|
SET simulationfiles = Behavioral
|
||||||
|
SET speedgrade = -4
|
||||||
|
SET verilogsim = False
|
||||||
|
SET vhdlsim = True
|
||||||
|
# END Project Options
|
||||||
|
# BEGIN Select
|
||||||
|
SELECT Block_Memory_Generator family Xilinx,_Inc. 2.6
|
||||||
|
# END Select
|
||||||
|
# BEGIN Parameters
|
||||||
|
CSET algorithm=Minimum_Area
|
||||||
|
CSET assume_synchronous_clk=false
|
||||||
|
CSET byte_size=9
|
||||||
|
CSET coe_file=C:/vhdl/Basic.coe
|
||||||
|
CSET collision_warnings=ALL
|
||||||
|
CSET component_name=basic_rom
|
||||||
|
CSET disable_collision_warnings=false
|
||||||
|
CSET disable_out_of_range_warnings=false
|
||||||
|
CSET ecc=false
|
||||||
|
CSET enable_a=Use_ENA_Pin
|
||||||
|
CSET enable_b=Always_Enabled
|
||||||
|
CSET fill_remaining_memory_locations=false
|
||||||
|
CSET load_init_file=true
|
||||||
|
CSET memory_type=Single_Port_ROM
|
||||||
|
CSET operating_mode_a=WRITE_FIRST
|
||||||
|
CSET operating_mode_b=WRITE_FIRST
|
||||||
|
CSET output_reset_value_a=0
|
||||||
|
CSET output_reset_value_b=0
|
||||||
|
CSET pipeline_stages=0
|
||||||
|
CSET primitive=8kx2
|
||||||
|
CSET read_width_a=8
|
||||||
|
CSET read_width_b=8
|
||||||
|
CSET register_porta_output_of_memory_core=false
|
||||||
|
CSET register_porta_output_of_memory_primitives=false
|
||||||
|
CSET register_portb_output_of_memory_core=false
|
||||||
|
CSET register_portb_output_of_memory_primitives=false
|
||||||
|
CSET remaining_memory_locations=0
|
||||||
|
CSET single_bit_ecc=false
|
||||||
|
CSET use_byte_write_enable=false
|
||||||
|
CSET use_ramb16bwer_reset_behavior=false
|
||||||
|
CSET use_regcea_pin=false
|
||||||
|
CSET use_regceb_pin=false
|
||||||
|
CSET use_ssra_pin=false
|
||||||
|
CSET use_ssrb_pin=false
|
||||||
|
CSET write_depth_a=8192
|
||||||
|
CSET write_width_a=8
|
||||||
|
CSET write_width_b=8
|
||||||
|
# END Parameters
|
||||||
|
GENERATE
|
||||||
|
# CRC: 1cd67ff3
|
||||||
|
|
||||||
24
coregen/basic_rom_blk_mem_gen_v2_6_xst_1_vhdl.prj
Executable file
24
coregen/basic_rom_blk_mem_gen_v2_6_xst_1_vhdl.prj
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_xst_comp.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_defaults.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_getinit_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_min_area_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_bindec.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_mux.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3adsp.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3adsp_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3a.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3a_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v5.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v5_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v4.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v4_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v2.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v2_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_width.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_generic_cstr.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_input_block.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_output_block.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_top.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_xst.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\basic_rom_blk_mem_gen_v2_6_xst_1.vhd"
|
||||||
9
coregen/basic_rom_flist.txt
Executable file
9
coregen/basic_rom_flist.txt
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
# Output products list for <basic_rom>
|
||||||
|
basic_rom.mif
|
||||||
|
basic_rom.ngc
|
||||||
|
basic_rom.vhd
|
||||||
|
basic_rom.vho
|
||||||
|
basic_rom.xco
|
||||||
|
basic_rom_blk_mem_gen_v2_6_xst_1_vhdl.prj
|
||||||
|
basic_rom_flist.txt
|
||||||
|
basic_rom_xmdf.tcl
|
||||||
45
coregen/basic_rom_readme.txt
Executable file
45
coregen/basic_rom_readme.txt
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
The following files were generated for 'basic_rom' in directory
|
||||||
|
C:\vhdl\nascom2_t80\coregen\:
|
||||||
|
|
||||||
|
basic_rom.mif:
|
||||||
|
Memory Initialization File which is automatically generated by the
|
||||||
|
CORE Generator System for some modules when a simulation flow is
|
||||||
|
specified. A MIF data file is used to support HDL functional
|
||||||
|
simulation of modules which use arrays of values.
|
||||||
|
|
||||||
|
basic_rom.ngc:
|
||||||
|
Binary Xilinx implementation netlist file containing the information
|
||||||
|
required to implement the module in a Xilinx (R) FPGA.
|
||||||
|
|
||||||
|
basic_rom.vhd:
|
||||||
|
VHDL wrapper file provided to support functional simulation. This
|
||||||
|
file contains simulation model customization data that is passed to
|
||||||
|
a parameterized simulation model for the core.
|
||||||
|
|
||||||
|
basic_rom.vho:
|
||||||
|
VHO template file containing code that can be used as a model for
|
||||||
|
instantiating a CORE Generator module in a VHDL design.
|
||||||
|
|
||||||
|
basic_rom.xco:
|
||||||
|
CORE Generator input file containing the parameters used to
|
||||||
|
regenerate a core.
|
||||||
|
|
||||||
|
basic_rom_blk_mem_gen_v2_6_xst_1_vhdl.prj:
|
||||||
|
Please see the core data sheet.
|
||||||
|
|
||||||
|
basic_rom_flist.txt:
|
||||||
|
Text file listing all of the output files produced when a customized
|
||||||
|
core was generated in the CORE Generator.
|
||||||
|
|
||||||
|
basic_rom_readme.txt:
|
||||||
|
Text file indicating the files generated and how they are used.
|
||||||
|
|
||||||
|
basic_rom_xmdf.tcl:
|
||||||
|
ISE Project Navigator interface file. ISE uses this file to determine
|
||||||
|
how the files output by CORE Generator for the core can be integrated
|
||||||
|
into your ISE project.
|
||||||
|
|
||||||
|
|
||||||
|
Please see the Xilinx CORE Generator online help for further details on
|
||||||
|
generated files and how to use them.
|
||||||
|
|
||||||
72
coregen/basic_rom_xmdf.tcl
Executable file
72
coregen/basic_rom_xmdf.tcl
Executable file
@@ -0,0 +1,72 @@
|
|||||||
|
# The package naming convention is <core_name>_xmdf
|
||||||
|
package provide basic_rom_xmdf 1.0
|
||||||
|
|
||||||
|
# This includes some utilities that support common XMDF operations
|
||||||
|
package require utilities_xmdf
|
||||||
|
|
||||||
|
# Define a namespace for this package. The name of the name space
|
||||||
|
# is <core_name>_xmdf
|
||||||
|
namespace eval ::basic_rom_xmdf {
|
||||||
|
# Use this to define any statics
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function called by client to rebuild the params and port arrays
|
||||||
|
# Optional when the use context does not require the param or ports
|
||||||
|
# arrays to be available.
|
||||||
|
proc ::basic_rom_xmdf::xmdfInit { instance } {
|
||||||
|
# Variable containg name of library into which module is compiled
|
||||||
|
# Recommendation: <module_name>
|
||||||
|
# Required
|
||||||
|
utilities_xmdf::xmdfSetData $instance Module Attributes Name basic_rom
|
||||||
|
}
|
||||||
|
# ::basic_rom_xmdf::xmdfInit
|
||||||
|
|
||||||
|
# Function called by client to fill in all the xmdf* data variables
|
||||||
|
# based on the current settings of the parameters
|
||||||
|
proc ::basic_rom_xmdf::xmdfApplyParams { instance } {
|
||||||
|
|
||||||
|
set fcount 0
|
||||||
|
# Array containing libraries that are assumed to exist
|
||||||
|
# Examples include unisim and xilinxcorelib
|
||||||
|
# Optional
|
||||||
|
# In this example, we assume that the unisim library will
|
||||||
|
# be magically
|
||||||
|
# available to the simulation and synthesis tool
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path basic_rom.mif
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path basic_rom.ngc
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path basic_rom.vhd
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path basic_rom.vho
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path basic_rom.xco
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path basic_rom_blk_mem_gen_v2_6_xst_1_vhdl.prj
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path basic_rom_xmdf.tcl
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module basic_rom
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# ::gen_comp_name_xmdf::xmdfApplyParams
|
||||||
BIN
coregen/blk_mem_gen_ds512.pdf
Executable file
BIN
coregen/blk_mem_gen_ds512.pdf
Executable file
Binary file not shown.
2048
coregen/blk_mem_gen_v2_6.mif
Executable file
2048
coregen/blk_mem_gen_v2_6.mif
Executable file
File diff suppressed because it is too large
Load Diff
3
coregen/blk_mem_gen_v2_6.ngc
Executable file
3
coregen/blk_mem_gen_v2_6.ngc
Executable file
File diff suppressed because one or more lines are too long
118
coregen/blk_mem_gen_v2_6.vhd
Executable file
118
coregen/blk_mem_gen_v2_6.vhd
Executable file
@@ -0,0 +1,118 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- You must compile the wrapper file blk_mem_gen_v2_6.vhd when simulating
|
||||||
|
-- the core, blk_mem_gen_v2_6. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
|
-- The synthesis directives "translate_off/translate_on" specified
|
||||||
|
-- below are supported by Xilinx, Mentor Graphics and Synplicity
|
||||||
|
-- synthesis tools. Ensure they are correct for your synthesis tool(s).
|
||||||
|
|
||||||
|
LIBRARY ieee;
|
||||||
|
USE ieee.std_logic_1164.ALL;
|
||||||
|
-- synthesis translate_off
|
||||||
|
Library XilinxCoreLib;
|
||||||
|
-- synthesis translate_on
|
||||||
|
ENTITY blk_mem_gen_v2_6 IS
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
END blk_mem_gen_v2_6;
|
||||||
|
|
||||||
|
ARCHITECTURE blk_mem_gen_v2_6_a OF blk_mem_gen_v2_6 IS
|
||||||
|
-- synthesis translate_off
|
||||||
|
component wrapped_blk_mem_gen_v2_6
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- Configuration specification
|
||||||
|
for all : wrapped_blk_mem_gen_v2_6 use entity XilinxCoreLib.blk_mem_gen_v2_6(behavioral)
|
||||||
|
generic map(
|
||||||
|
c_has_regceb => 0,
|
||||||
|
c_has_regcea => 0,
|
||||||
|
c_mem_type => 3,
|
||||||
|
c_prim_type => 1,
|
||||||
|
c_sinita_val => "0",
|
||||||
|
c_read_width_b => 8,
|
||||||
|
c_family => "spartan3",
|
||||||
|
c_read_width_a => 8,
|
||||||
|
c_disable_warn_bhv_coll => 0,
|
||||||
|
c_write_mode_b => "WRITE_FIRST",
|
||||||
|
c_init_file_name => "blk_mem_gen_v2_6.mif",
|
||||||
|
c_write_mode_a => "WRITE_FIRST",
|
||||||
|
c_mux_pipeline_stages => 0,
|
||||||
|
c_has_mem_output_regs_b => 0,
|
||||||
|
c_load_init_file => 1,
|
||||||
|
c_xdevicefamily => "spartan3a",
|
||||||
|
c_has_mem_output_regs_a => 0,
|
||||||
|
c_write_depth_b => 2048,
|
||||||
|
c_write_depth_a => 2048,
|
||||||
|
c_has_ssrb => 0,
|
||||||
|
c_has_mux_output_regs_b => 0,
|
||||||
|
c_has_ssra => 0,
|
||||||
|
c_has_mux_output_regs_a => 0,
|
||||||
|
c_addra_width => 11,
|
||||||
|
c_addrb_width => 11,
|
||||||
|
c_default_data => "0",
|
||||||
|
c_use_ecc => 0,
|
||||||
|
c_algorithm => 1,
|
||||||
|
c_disable_warn_bhv_range => 0,
|
||||||
|
c_write_width_b => 8,
|
||||||
|
c_write_width_a => 8,
|
||||||
|
c_read_depth_b => 2048,
|
||||||
|
c_read_depth_a => 2048,
|
||||||
|
c_byte_size => 9,
|
||||||
|
c_sim_collision_check => "ALL",
|
||||||
|
c_use_ramb16bwer_rst_bhv => 0,
|
||||||
|
c_common_clk => 0,
|
||||||
|
c_wea_width => 1,
|
||||||
|
c_has_enb => 0,
|
||||||
|
c_web_width => 1,
|
||||||
|
c_has_ena => 0,
|
||||||
|
c_sinitb_val => "0",
|
||||||
|
c_use_byte_web => 0,
|
||||||
|
c_use_byte_wea => 0,
|
||||||
|
c_use_default_data => 0);
|
||||||
|
-- synthesis translate_on
|
||||||
|
BEGIN
|
||||||
|
-- synthesis translate_off
|
||||||
|
U0 : wrapped_blk_mem_gen_v2_6
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
addra => addra,
|
||||||
|
douta => douta);
|
||||||
|
-- synthesis translate_on
|
||||||
|
|
||||||
|
END blk_mem_gen_v2_6_a;
|
||||||
|
|
||||||
56
coregen/blk_mem_gen_v2_6.vho
Executable file
56
coregen/blk_mem_gen_v2_6.vho
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- The following code must appear in the VHDL architecture header:
|
||||||
|
|
||||||
|
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
|
||||||
|
component blk_mem_gen_v2_6
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
|
||||||
|
|
||||||
|
-- The following code must appear in the VHDL architecture
|
||||||
|
-- body. Substitute your own instance name and net names.
|
||||||
|
|
||||||
|
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
|
||||||
|
your_instance_name : blk_mem_gen_v2_6
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
addra => addra,
|
||||||
|
douta => douta);
|
||||||
|
-- INST_TAG_END ------ End INSTANTIATION Template ------------
|
||||||
|
|
||||||
|
-- You must compile the wrapper file blk_mem_gen_v2_6.vhd when simulating
|
||||||
|
-- the core, blk_mem_gen_v2_6. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
78
coregen/blk_mem_gen_v2_6.xco
Executable file
78
coregen/blk_mem_gen_v2_6.xco
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# Xilinx Core Generator version J.40
|
||||||
|
# Date: Sat Jan 03 11:55:39 2009
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# This file contains the customisation parameters for a
|
||||||
|
# Xilinx CORE Generator IP GUI. It is strongly recommended
|
||||||
|
# that you do not manually alter this file as it may cause
|
||||||
|
# unexpected and unsupported behavior.
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# BEGIN Project Options
|
||||||
|
SET addpads = False
|
||||||
|
SET asysymbol = False
|
||||||
|
SET busformat = BusFormatAngleBracketNotRipped
|
||||||
|
SET createndf = False
|
||||||
|
SET designentry = VHDL
|
||||||
|
SET device = xc3s700an
|
||||||
|
SET devicefamily = spartan3a
|
||||||
|
SET flowvendor = Other
|
||||||
|
SET formalverification = False
|
||||||
|
SET foundationsym = False
|
||||||
|
SET implementationfiletype = Ngc
|
||||||
|
SET package = fgg484
|
||||||
|
SET removerpms = False
|
||||||
|
SET simulationfiles = Behavioral
|
||||||
|
SET speedgrade = -4
|
||||||
|
SET verilogsim = False
|
||||||
|
SET vhdlsim = True
|
||||||
|
# END Project Options
|
||||||
|
# BEGIN Select
|
||||||
|
SELECT Block_Memory_Generator family Xilinx,_Inc. 2.6
|
||||||
|
# END Select
|
||||||
|
# BEGIN Parameters
|
||||||
|
CSET algorithm=Minimum_Area
|
||||||
|
CSET assume_synchronous_clk=false
|
||||||
|
CSET byte_size=9
|
||||||
|
CSET coe_file=C:/vhdl/nascom2_t80/Naschr-1.coe
|
||||||
|
CSET collision_warnings=ALL
|
||||||
|
CSET component_name=blk_mem_gen_v2_6
|
||||||
|
CSET disable_collision_warnings=false
|
||||||
|
CSET disable_out_of_range_warnings=false
|
||||||
|
CSET ecc=false
|
||||||
|
CSET enable_a=Always_Enabled
|
||||||
|
CSET enable_b=Always_Enabled
|
||||||
|
CSET fill_remaining_memory_locations=false
|
||||||
|
CSET load_init_file=true
|
||||||
|
CSET memory_type=Single_Port_ROM
|
||||||
|
CSET operating_mode_a=WRITE_FIRST
|
||||||
|
CSET operating_mode_b=WRITE_FIRST
|
||||||
|
CSET output_reset_value_a=0
|
||||||
|
CSET output_reset_value_b=0
|
||||||
|
CSET pipeline_stages=0
|
||||||
|
CSET primitive=8kx2
|
||||||
|
CSET read_width_a=8
|
||||||
|
CSET read_width_b=8
|
||||||
|
CSET register_porta_output_of_memory_core=false
|
||||||
|
CSET register_porta_output_of_memory_primitives=false
|
||||||
|
CSET register_portb_output_of_memory_core=false
|
||||||
|
CSET register_portb_output_of_memory_primitives=false
|
||||||
|
CSET remaining_memory_locations=0
|
||||||
|
CSET single_bit_ecc=false
|
||||||
|
CSET use_byte_write_enable=false
|
||||||
|
CSET use_ramb16bwer_reset_behavior=false
|
||||||
|
CSET use_regcea_pin=false
|
||||||
|
CSET use_regceb_pin=false
|
||||||
|
CSET use_ssra_pin=false
|
||||||
|
CSET use_ssrb_pin=false
|
||||||
|
CSET write_depth_a=2048
|
||||||
|
CSET write_width_a=8
|
||||||
|
CSET write_width_b=8
|
||||||
|
# END Parameters
|
||||||
|
GENERATE
|
||||||
|
# CRC: 686b742a
|
||||||
|
|
||||||
24
coregen/blk_mem_gen_v2_6_blk_mem_gen_v2_6_xst_1_vhdl.prj
Executable file
24
coregen/blk_mem_gen_v2_6_blk_mem_gen_v2_6_xst_1_vhdl.prj
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_xst_comp.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_defaults.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_getinit_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_min_area_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_bindec.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_mux.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3adsp.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3adsp_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3a.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3a_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v5.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v5_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v4.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v4_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v2.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v2_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_width.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_generic_cstr.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_input_block.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_output_block.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_top.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_xst.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6_blk_mem_gen_v2_6_xst_1.vhd"
|
||||||
9
coregen/blk_mem_gen_v2_6_flist.txt
Executable file
9
coregen/blk_mem_gen_v2_6_flist.txt
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
# Output products list for <blk_mem_gen_v2_6>
|
||||||
|
blk_mem_gen_v2_6.mif
|
||||||
|
blk_mem_gen_v2_6.ngc
|
||||||
|
blk_mem_gen_v2_6.vhd
|
||||||
|
blk_mem_gen_v2_6.vho
|
||||||
|
blk_mem_gen_v2_6.xco
|
||||||
|
blk_mem_gen_v2_6_blk_mem_gen_v2_6_xst_1_vhdl.prj
|
||||||
|
blk_mem_gen_v2_6_flist.txt
|
||||||
|
blk_mem_gen_v2_6_xmdf.tcl
|
||||||
45
coregen/blk_mem_gen_v2_6_readme.txt
Executable file
45
coregen/blk_mem_gen_v2_6_readme.txt
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
The following files were generated for 'blk_mem_gen_v2_6' in directory
|
||||||
|
C:\vhdl\nascom2_t80\coregen\:
|
||||||
|
|
||||||
|
blk_mem_gen_v2_6.mif:
|
||||||
|
Memory Initialization File which is automatically generated by the
|
||||||
|
CORE Generator System for some modules when a simulation flow is
|
||||||
|
specified. A MIF data file is used to support HDL functional
|
||||||
|
simulation of modules which use arrays of values.
|
||||||
|
|
||||||
|
blk_mem_gen_v2_6.ngc:
|
||||||
|
Binary Xilinx implementation netlist file containing the information
|
||||||
|
required to implement the module in a Xilinx (R) FPGA.
|
||||||
|
|
||||||
|
blk_mem_gen_v2_6.vhd:
|
||||||
|
VHDL wrapper file provided to support functional simulation. This
|
||||||
|
file contains simulation model customization data that is passed to
|
||||||
|
a parameterized simulation model for the core.
|
||||||
|
|
||||||
|
blk_mem_gen_v2_6.vho:
|
||||||
|
VHO template file containing code that can be used as a model for
|
||||||
|
instantiating a CORE Generator module in a VHDL design.
|
||||||
|
|
||||||
|
blk_mem_gen_v2_6.xco:
|
||||||
|
CORE Generator input file containing the parameters used to
|
||||||
|
regenerate a core.
|
||||||
|
|
||||||
|
blk_mem_gen_v2_6_blk_mem_gen_v2_6_xst_1_vhdl.prj:
|
||||||
|
Please see the core data sheet.
|
||||||
|
|
||||||
|
blk_mem_gen_v2_6_flist.txt:
|
||||||
|
Text file listing all of the output files produced when a customized
|
||||||
|
core was generated in the CORE Generator.
|
||||||
|
|
||||||
|
blk_mem_gen_v2_6_readme.txt:
|
||||||
|
Text file indicating the files generated and how they are used.
|
||||||
|
|
||||||
|
blk_mem_gen_v2_6_xmdf.tcl:
|
||||||
|
ISE Project Navigator interface file. ISE uses this file to determine
|
||||||
|
how the files output by CORE Generator for the core can be integrated
|
||||||
|
into your ISE project.
|
||||||
|
|
||||||
|
|
||||||
|
Please see the Xilinx CORE Generator online help for further details on
|
||||||
|
generated files and how to use them.
|
||||||
|
|
||||||
72
coregen/blk_mem_gen_v2_6_xmdf.tcl
Executable file
72
coregen/blk_mem_gen_v2_6_xmdf.tcl
Executable file
@@ -0,0 +1,72 @@
|
|||||||
|
# The package naming convention is <core_name>_xmdf
|
||||||
|
package provide blk_mem_gen_v2_6_xmdf 1.0
|
||||||
|
|
||||||
|
# This includes some utilities that support common XMDF operations
|
||||||
|
package require utilities_xmdf
|
||||||
|
|
||||||
|
# Define a namespace for this package. The name of the name space
|
||||||
|
# is <core_name>_xmdf
|
||||||
|
namespace eval ::blk_mem_gen_v2_6_xmdf {
|
||||||
|
# Use this to define any statics
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function called by client to rebuild the params and port arrays
|
||||||
|
# Optional when the use context does not require the param or ports
|
||||||
|
# arrays to be available.
|
||||||
|
proc ::blk_mem_gen_v2_6_xmdf::xmdfInit { instance } {
|
||||||
|
# Variable containg name of library into which module is compiled
|
||||||
|
# Recommendation: <module_name>
|
||||||
|
# Required
|
||||||
|
utilities_xmdf::xmdfSetData $instance Module Attributes Name blk_mem_gen_v2_6
|
||||||
|
}
|
||||||
|
# ::blk_mem_gen_v2_6_xmdf::xmdfInit
|
||||||
|
|
||||||
|
# Function called by client to fill in all the xmdf* data variables
|
||||||
|
# based on the current settings of the parameters
|
||||||
|
proc ::blk_mem_gen_v2_6_xmdf::xmdfApplyParams { instance } {
|
||||||
|
|
||||||
|
set fcount 0
|
||||||
|
# Array containing libraries that are assumed to exist
|
||||||
|
# Examples include unisim and xilinxcorelib
|
||||||
|
# Optional
|
||||||
|
# In this example, we assume that the unisim library will
|
||||||
|
# be magically
|
||||||
|
# available to the simulation and synthesis tool
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_v2_6.mif
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_v2_6.ngc
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_v2_6.vhd
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_v2_6.vho
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_v2_6.xco
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_v2_6_blk_mem_gen_v2_6_xst_1_vhdl.prj
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_v2_6_xmdf.tcl
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module blk_mem_gen_v2_6
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# ::gen_comp_name_xmdf::xmdfApplyParams
|
||||||
2048
coregen/charrom.mif
Executable file
2048
coregen/charrom.mif
Executable file
File diff suppressed because it is too large
Load Diff
3
coregen/charrom.ngc
Executable file
3
coregen/charrom.ngc
Executable file
File diff suppressed because one or more lines are too long
118
coregen/charrom.vhd
Executable file
118
coregen/charrom.vhd
Executable file
@@ -0,0 +1,118 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- You must compile the wrapper file charrom.vhd when simulating
|
||||||
|
-- the core, charrom. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
|
-- The synthesis directives "translate_off/translate_on" specified
|
||||||
|
-- below are supported by Xilinx, Mentor Graphics and Synplicity
|
||||||
|
-- synthesis tools. Ensure they are correct for your synthesis tool(s).
|
||||||
|
|
||||||
|
LIBRARY ieee;
|
||||||
|
USE ieee.std_logic_1164.ALL;
|
||||||
|
-- synthesis translate_off
|
||||||
|
Library XilinxCoreLib;
|
||||||
|
-- synthesis translate_on
|
||||||
|
ENTITY charrom IS
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
END charrom;
|
||||||
|
|
||||||
|
ARCHITECTURE charrom_a OF charrom IS
|
||||||
|
-- synthesis translate_off
|
||||||
|
component wrapped_charrom
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- Configuration specification
|
||||||
|
for all : wrapped_charrom use entity XilinxCoreLib.blk_mem_gen_v2_6(behavioral)
|
||||||
|
generic map(
|
||||||
|
c_has_regceb => 0,
|
||||||
|
c_has_regcea => 0,
|
||||||
|
c_mem_type => 3,
|
||||||
|
c_prim_type => 1,
|
||||||
|
c_sinita_val => "0",
|
||||||
|
c_read_width_b => 8,
|
||||||
|
c_family => "spartan3",
|
||||||
|
c_read_width_a => 8,
|
||||||
|
c_disable_warn_bhv_coll => 0,
|
||||||
|
c_write_mode_b => "WRITE_FIRST",
|
||||||
|
c_init_file_name => "charrom.mif",
|
||||||
|
c_write_mode_a => "WRITE_FIRST",
|
||||||
|
c_mux_pipeline_stages => 0,
|
||||||
|
c_has_mem_output_regs_b => 0,
|
||||||
|
c_load_init_file => 1,
|
||||||
|
c_xdevicefamily => "spartan3a",
|
||||||
|
c_has_mem_output_regs_a => 0,
|
||||||
|
c_write_depth_b => 2048,
|
||||||
|
c_write_depth_a => 2048,
|
||||||
|
c_has_ssrb => 0,
|
||||||
|
c_has_mux_output_regs_b => 0,
|
||||||
|
c_has_ssra => 0,
|
||||||
|
c_has_mux_output_regs_a => 0,
|
||||||
|
c_addra_width => 11,
|
||||||
|
c_addrb_width => 11,
|
||||||
|
c_default_data => "0",
|
||||||
|
c_use_ecc => 0,
|
||||||
|
c_algorithm => 1,
|
||||||
|
c_disable_warn_bhv_range => 0,
|
||||||
|
c_write_width_b => 8,
|
||||||
|
c_write_width_a => 8,
|
||||||
|
c_read_depth_b => 2048,
|
||||||
|
c_read_depth_a => 2048,
|
||||||
|
c_byte_size => 9,
|
||||||
|
c_sim_collision_check => "ALL",
|
||||||
|
c_use_ramb16bwer_rst_bhv => 0,
|
||||||
|
c_common_clk => 0,
|
||||||
|
c_wea_width => 1,
|
||||||
|
c_has_enb => 0,
|
||||||
|
c_web_width => 1,
|
||||||
|
c_has_ena => 0,
|
||||||
|
c_sinitb_val => "0",
|
||||||
|
c_use_byte_web => 0,
|
||||||
|
c_use_byte_wea => 0,
|
||||||
|
c_use_default_data => 0);
|
||||||
|
-- synthesis translate_on
|
||||||
|
BEGIN
|
||||||
|
-- synthesis translate_off
|
||||||
|
U0 : wrapped_charrom
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
addra => addra,
|
||||||
|
douta => douta);
|
||||||
|
-- synthesis translate_on
|
||||||
|
|
||||||
|
END charrom_a;
|
||||||
|
|
||||||
56
coregen/charrom.vho
Executable file
56
coregen/charrom.vho
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- The following code must appear in the VHDL architecture header:
|
||||||
|
|
||||||
|
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
|
||||||
|
component charrom
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
|
||||||
|
|
||||||
|
-- The following code must appear in the VHDL architecture
|
||||||
|
-- body. Substitute your own instance name and net names.
|
||||||
|
|
||||||
|
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
|
||||||
|
your_instance_name : charrom
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
addra => addra,
|
||||||
|
douta => douta);
|
||||||
|
-- INST_TAG_END ------ End INSTANTIATION Template ------------
|
||||||
|
|
||||||
|
-- You must compile the wrapper file charrom.vhd when simulating
|
||||||
|
-- the core, charrom. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
78
coregen/charrom.xco
Executable file
78
coregen/charrom.xco
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# Xilinx Core Generator version J.40
|
||||||
|
# Date: Sat Jan 03 11:56:55 2009
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# This file contains the customisation parameters for a
|
||||||
|
# Xilinx CORE Generator IP GUI. It is strongly recommended
|
||||||
|
# that you do not manually alter this file as it may cause
|
||||||
|
# unexpected and unsupported behavior.
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# BEGIN Project Options
|
||||||
|
SET addpads = False
|
||||||
|
SET asysymbol = False
|
||||||
|
SET busformat = BusFormatAngleBracketNotRipped
|
||||||
|
SET createndf = False
|
||||||
|
SET designentry = VHDL
|
||||||
|
SET device = xc3s700an
|
||||||
|
SET devicefamily = spartan3a
|
||||||
|
SET flowvendor = Other
|
||||||
|
SET formalverification = False
|
||||||
|
SET foundationsym = False
|
||||||
|
SET implementationfiletype = Ngc
|
||||||
|
SET package = fgg484
|
||||||
|
SET removerpms = False
|
||||||
|
SET simulationfiles = Behavioral
|
||||||
|
SET speedgrade = -4
|
||||||
|
SET verilogsim = False
|
||||||
|
SET vhdlsim = True
|
||||||
|
# END Project Options
|
||||||
|
# BEGIN Select
|
||||||
|
SELECT Block_Memory_Generator family Xilinx,_Inc. 2.6
|
||||||
|
# END Select
|
||||||
|
# BEGIN Parameters
|
||||||
|
CSET algorithm=Minimum_Area
|
||||||
|
CSET assume_synchronous_clk=false
|
||||||
|
CSET byte_size=9
|
||||||
|
CSET coe_file=C:/vhdl/nascom2_t80/Naschr-1.coe
|
||||||
|
CSET collision_warnings=ALL
|
||||||
|
CSET component_name=charrom
|
||||||
|
CSET disable_collision_warnings=false
|
||||||
|
CSET disable_out_of_range_warnings=false
|
||||||
|
CSET ecc=false
|
||||||
|
CSET enable_a=Always_Enabled
|
||||||
|
CSET enable_b=Always_Enabled
|
||||||
|
CSET fill_remaining_memory_locations=false
|
||||||
|
CSET load_init_file=true
|
||||||
|
CSET memory_type=Single_Port_ROM
|
||||||
|
CSET operating_mode_a=WRITE_FIRST
|
||||||
|
CSET operating_mode_b=WRITE_FIRST
|
||||||
|
CSET output_reset_value_a=0
|
||||||
|
CSET output_reset_value_b=0
|
||||||
|
CSET pipeline_stages=0
|
||||||
|
CSET primitive=8kx2
|
||||||
|
CSET read_width_a=8
|
||||||
|
CSET read_width_b=8
|
||||||
|
CSET register_porta_output_of_memory_core=false
|
||||||
|
CSET register_porta_output_of_memory_primitives=false
|
||||||
|
CSET register_portb_output_of_memory_core=false
|
||||||
|
CSET register_portb_output_of_memory_primitives=false
|
||||||
|
CSET remaining_memory_locations=0
|
||||||
|
CSET single_bit_ecc=false
|
||||||
|
CSET use_byte_write_enable=false
|
||||||
|
CSET use_ramb16bwer_reset_behavior=false
|
||||||
|
CSET use_regcea_pin=false
|
||||||
|
CSET use_regceb_pin=false
|
||||||
|
CSET use_ssra_pin=false
|
||||||
|
CSET use_ssrb_pin=false
|
||||||
|
CSET write_depth_a=2048
|
||||||
|
CSET write_width_a=8
|
||||||
|
CSET write_width_b=8
|
||||||
|
# END Parameters
|
||||||
|
GENERATE
|
||||||
|
# CRC: 55453eb
|
||||||
|
|
||||||
24
coregen/charrom_blk_mem_gen_v2_6_xst_1_vhdl.prj
Executable file
24
coregen/charrom_blk_mem_gen_v2_6_xst_1_vhdl.prj
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_xst_comp.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_defaults.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_getinit_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_min_area_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_bindec.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_mux.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3adsp.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3adsp_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3a.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3a_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v5.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v5_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v4.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v4_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v2.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v2_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_width.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_generic_cstr.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_input_block.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_output_block.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_top.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_xst.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\charrom_blk_mem_gen_v2_6_xst_1.vhd"
|
||||||
10
coregen/charrom_flist.txt
Executable file
10
coregen/charrom_flist.txt
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
# Output products list for <charrom>
|
||||||
|
blk_mem_gen_v2_6.mif
|
||||||
|
charrom.mif
|
||||||
|
charrom.ngc
|
||||||
|
charrom.vhd
|
||||||
|
charrom.vho
|
||||||
|
charrom.xco
|
||||||
|
charrom_blk_mem_gen_v2_6_xst_1_vhdl.prj
|
||||||
|
charrom_flist.txt
|
||||||
|
charrom_xmdf.tcl
|
||||||
51
coregen/charrom_readme.txt
Executable file
51
coregen/charrom_readme.txt
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
The following files were generated for 'charrom' in directory
|
||||||
|
C:\vhdl\nascom2_t80\coregen\:
|
||||||
|
|
||||||
|
blk_mem_gen_v2_6.mif:
|
||||||
|
Memory Initialization File which is automatically generated by the
|
||||||
|
CORE Generator System for some modules when a simulation flow is
|
||||||
|
specified. A MIF data file is used to support HDL functional
|
||||||
|
simulation of modules which use arrays of values.
|
||||||
|
|
||||||
|
charrom.mif:
|
||||||
|
Memory Initialization File which is automatically generated by the
|
||||||
|
CORE Generator System for some modules when a simulation flow is
|
||||||
|
specified. A MIF data file is used to support HDL functional
|
||||||
|
simulation of modules which use arrays of values.
|
||||||
|
|
||||||
|
charrom.ngc:
|
||||||
|
Binary Xilinx implementation netlist file containing the information
|
||||||
|
required to implement the module in a Xilinx (R) FPGA.
|
||||||
|
|
||||||
|
charrom.vhd:
|
||||||
|
VHDL wrapper file provided to support functional simulation. This
|
||||||
|
file contains simulation model customization data that is passed to
|
||||||
|
a parameterized simulation model for the core.
|
||||||
|
|
||||||
|
charrom.vho:
|
||||||
|
VHO template file containing code that can be used as a model for
|
||||||
|
instantiating a CORE Generator module in a VHDL design.
|
||||||
|
|
||||||
|
charrom.xco:
|
||||||
|
CORE Generator input file containing the parameters used to
|
||||||
|
regenerate a core.
|
||||||
|
|
||||||
|
charrom_blk_mem_gen_v2_6_xst_1_vhdl.prj:
|
||||||
|
Please see the core data sheet.
|
||||||
|
|
||||||
|
charrom_flist.txt:
|
||||||
|
Text file listing all of the output files produced when a customized
|
||||||
|
core was generated in the CORE Generator.
|
||||||
|
|
||||||
|
charrom_readme.txt:
|
||||||
|
Text file indicating the files generated and how they are used.
|
||||||
|
|
||||||
|
charrom_xmdf.tcl:
|
||||||
|
ISE Project Navigator interface file. ISE uses this file to determine
|
||||||
|
how the files output by CORE Generator for the core can be integrated
|
||||||
|
into your ISE project.
|
||||||
|
|
||||||
|
|
||||||
|
Please see the Xilinx CORE Generator online help for further details on
|
||||||
|
generated files and how to use them.
|
||||||
|
|
||||||
76
coregen/charrom_xmdf.tcl
Executable file
76
coregen/charrom_xmdf.tcl
Executable file
@@ -0,0 +1,76 @@
|
|||||||
|
# The package naming convention is <core_name>_xmdf
|
||||||
|
package provide charrom_xmdf 1.0
|
||||||
|
|
||||||
|
# This includes some utilities that support common XMDF operations
|
||||||
|
package require utilities_xmdf
|
||||||
|
|
||||||
|
# Define a namespace for this package. The name of the name space
|
||||||
|
# is <core_name>_xmdf
|
||||||
|
namespace eval ::charrom_xmdf {
|
||||||
|
# Use this to define any statics
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function called by client to rebuild the params and port arrays
|
||||||
|
# Optional when the use context does not require the param or ports
|
||||||
|
# arrays to be available.
|
||||||
|
proc ::charrom_xmdf::xmdfInit { instance } {
|
||||||
|
# Variable containg name of library into which module is compiled
|
||||||
|
# Recommendation: <module_name>
|
||||||
|
# Required
|
||||||
|
utilities_xmdf::xmdfSetData $instance Module Attributes Name charrom
|
||||||
|
}
|
||||||
|
# ::charrom_xmdf::xmdfInit
|
||||||
|
|
||||||
|
# Function called by client to fill in all the xmdf* data variables
|
||||||
|
# based on the current settings of the parameters
|
||||||
|
proc ::charrom_xmdf::xmdfApplyParams { instance } {
|
||||||
|
|
||||||
|
set fcount 0
|
||||||
|
# Array containing libraries that are assumed to exist
|
||||||
|
# Examples include unisim and xilinxcorelib
|
||||||
|
# Optional
|
||||||
|
# In this example, we assume that the unisim library will
|
||||||
|
# be magically
|
||||||
|
# available to the simulation and synthesis tool
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_v2_6.mif
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path charrom.mif
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path charrom.ngc
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path charrom.vhd
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path charrom.vho
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path charrom.xco
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path charrom_blk_mem_gen_v2_6_xst_1_vhdl.prj
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path charrom_xmdf.tcl
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module charrom
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# ::gen_comp_name_xmdf::xmdfApplyParams
|
||||||
20
coregen/coregen.cgp
Executable file
20
coregen/coregen.cgp
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
# Date: Wed Dec 31 13:09:41 2008
|
||||||
|
SET addpads = False
|
||||||
|
SET asysymbol = False
|
||||||
|
SET busformat = BusFormatAngleBracketNotRipped
|
||||||
|
SET createndf = False
|
||||||
|
SET designentry = VHDL
|
||||||
|
SET device = xc3s700an
|
||||||
|
SET devicefamily = spartan3a
|
||||||
|
SET flowvendor = Other
|
||||||
|
SET formalverification = False
|
||||||
|
SET foundationsym = False
|
||||||
|
SET implementationfiletype = Ngc
|
||||||
|
SET package = fgg484
|
||||||
|
SET removerpms = False
|
||||||
|
SET simulationfiles = Behavioral
|
||||||
|
SET speedgrade = -4
|
||||||
|
SET verilogsim = False
|
||||||
|
SET vhdlsim = True
|
||||||
|
SET workingdirectory = c:\vhdl\nascom2\coregen\tmp
|
||||||
|
|
||||||
98
coregen/dcm_in50.vhd
Executable file
98
coregen/dcm_in50.vhd
Executable file
@@ -0,0 +1,98 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Copyright (c) 1995-2007 Xilinx, Inc. All rights reserved.
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- ____ ____
|
||||||
|
-- / /\/ /
|
||||||
|
-- /___/ \ / Vendor: Xilinx
|
||||||
|
-- \ \ \/ Version : 9.2.04i
|
||||||
|
-- \ \ Application : xaw2vhdl
|
||||||
|
-- / / Filename : dcm_in50.vhd
|
||||||
|
-- /___/ /\ Timestamp : 01/03/2009 16:40:00
|
||||||
|
-- \ \ / \
|
||||||
|
-- \___\/\___\
|
||||||
|
--
|
||||||
|
--Command: xaw2vhdl-st C:\vhdl\nascom2_t80\coregen\\dcm_in50.xaw C:\vhdl\nascom2_t80\coregen\\dcm_in50
|
||||||
|
--Design Name: dcm_in50
|
||||||
|
--Device: xc3s700an-4fgg484
|
||||||
|
--
|
||||||
|
-- Module dcm_in50
|
||||||
|
-- Generated by Xilinx Architecture Wizard
|
||||||
|
-- Written for synthesis tool: XST
|
||||||
|
-- Period Jitter (unit interval) for block DCM_SP_INST = 0.05 UI
|
||||||
|
-- Period Jitter (Peak-to-Peak) for block DCM_SP_INST = 2.88 ns
|
||||||
|
|
||||||
|
library ieee;
|
||||||
|
use ieee.std_logic_1164.ALL;
|
||||||
|
use ieee.numeric_std.ALL;
|
||||||
|
library UNISIM;
|
||||||
|
use UNISIM.Vcomponents.ALL;
|
||||||
|
|
||||||
|
entity dcm_in50 is
|
||||||
|
port ( CLKIN_IN : in std_logic;
|
||||||
|
RST_IN : in std_logic;
|
||||||
|
CLKFX_OUT : out std_logic;
|
||||||
|
CLKIN_IBUFG_OUT : out std_logic;
|
||||||
|
CLK0_OUT : out std_logic;
|
||||||
|
LOCKED_OUT : out std_logic);
|
||||||
|
end dcm_in50;
|
||||||
|
|
||||||
|
architecture BEHAVIORAL of dcm_in50 is
|
||||||
|
signal CLKFB_IN : std_logic;
|
||||||
|
signal CLKFX_BUF : std_logic;
|
||||||
|
signal CLKIN_IBUFG : std_logic;
|
||||||
|
signal CLK0_BUF : std_logic;
|
||||||
|
signal GND_BIT : std_logic;
|
||||||
|
begin
|
||||||
|
GND_BIT <= '0';
|
||||||
|
CLKIN_IBUFG_OUT <= CLKIN_IBUFG;
|
||||||
|
CLK0_OUT <= CLKFB_IN;
|
||||||
|
CLKFX_BUFG_INST : BUFG
|
||||||
|
port map (I=>CLKFX_BUF,
|
||||||
|
O=>CLKFX_OUT);
|
||||||
|
|
||||||
|
CLKIN_IBUFG_INST : IBUFG
|
||||||
|
port map (I=>CLKIN_IN,
|
||||||
|
O=>CLKIN_IBUFG);
|
||||||
|
|
||||||
|
CLK0_BUFG_INST : BUFG
|
||||||
|
port map (I=>CLK0_BUF,
|
||||||
|
O=>CLKFB_IN);
|
||||||
|
|
||||||
|
DCM_SP_INST : DCM_SP
|
||||||
|
generic map( CLK_FEEDBACK => "1X",
|
||||||
|
CLKDV_DIVIDE => 2.0,
|
||||||
|
CLKFX_DIVIDE => 25,
|
||||||
|
CLKFX_MULTIPLY => 16,
|
||||||
|
CLKIN_DIVIDE_BY_2 => TRUE,
|
||||||
|
CLKIN_PERIOD => 40.000,
|
||||||
|
CLKOUT_PHASE_SHIFT => "NONE",
|
||||||
|
DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS",
|
||||||
|
DFS_FREQUENCY_MODE => "LOW",
|
||||||
|
DLL_FREQUENCY_MODE => "LOW",
|
||||||
|
DUTY_CYCLE_CORRECTION => TRUE,
|
||||||
|
FACTORY_JF => x"C080",
|
||||||
|
PHASE_SHIFT => 0,
|
||||||
|
STARTUP_WAIT => TRUE)
|
||||||
|
port map (CLKFB=>CLKFB_IN,
|
||||||
|
CLKIN=>CLKIN_IBUFG,
|
||||||
|
DSSEN=>GND_BIT,
|
||||||
|
PSCLK=>GND_BIT,
|
||||||
|
PSEN=>GND_BIT,
|
||||||
|
PSINCDEC=>GND_BIT,
|
||||||
|
RST=>RST_IN,
|
||||||
|
CLKDV=>open,
|
||||||
|
CLKFX=>CLKFX_BUF,
|
||||||
|
CLKFX180=>open,
|
||||||
|
CLK0=>CLK0_BUF,
|
||||||
|
CLK2X=>open,
|
||||||
|
CLK2X180=>open,
|
||||||
|
CLK90=>open,
|
||||||
|
CLK180=>open,
|
||||||
|
CLK270=>open,
|
||||||
|
LOCKED=>LOCKED_OUT,
|
||||||
|
PSDONE=>open,
|
||||||
|
STATUS=>open);
|
||||||
|
|
||||||
|
end BEHAVIORAL;
|
||||||
|
|
||||||
|
|
||||||
3
coregen/dcm_in50.xaw
Executable file
3
coregen/dcm_in50.xaw
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
XILINX-XDB 0.1 STUB 0.1 ASCII
|
||||||
|
XILINX-XDM V1.4e
|
||||||
|
$9cx5>6339$;9<5>2:35<>71/aI;4=<41Y3861=5&1297?;>;54805(789809=949/0-41o03HXHDZGU169BVR\XGGFRSNO\C@FJJBYDDB;37L\XZ^MMH\YDDBCESHV[ESLBH43<I[]QSB@CY^AOOLHX^HF^I<l4ASUY[JHKQVNHAR]XIUAKMKAXKEA:<6O]W[]LJI_XLMXTO=??;@PT^ZIIDPUOH_QL1038EWQ]WFDGURJKR^AOO40<I[]QSB@CY^FGVZ@KAYLGC]?:;@PT^ZIIDPUMNRKWTDPMEI753HX\VRAALX]JJVRXF\Gn7L\XZ^MMH\YWEJN:96O]W[]LJI_XZLYNXRB@GHA2<>GU_SUDBAWPV@NJ@ZBA[VGDHHo4ARQLGZQN\Al0MZTPCMIAQCR^XL;::6OXZ^AOOGSA\PZN=R@@EEKW56=F_SUH@FQ@UURVPZR^XLi0MZTPFMMTP\VB02K\VR^NRUf8ER\X[PD_DYA@L59AKQN33K_MK?64C;^ulaj[fhyhc`<Pt92_gjtboldWhncPio73*}gp<2IGG=64CMI3[GSAm2IGG=QMUGE\MKUS02IGG=Q@UU48GIM609<0OAE=7178GIM5P11H@F<W1926?FJL19?0OAEKVb9@HNBQWMC]EIK:;BNHBG><KEAMNRGA5:AOOC^?3JF@JU?7089@HN@_WK_Mj6MCKGZ\FP@@W@DXXn5LLJD[[AOQAMOn7NBDFY]NQIRNXES27NBDFY]LQQ3<KEABB<?4CMIJJZBN^@NNSOWP2c9@HNOIW@H^JJ??;BNHMKYNJ\LLSD@\Tg9@HNOIW@H^JJQ@UU:8GIMNFVCEo6MCKHL\T@TNGMo0OAEFN^QQGZR^XL;97NBDOTV\TMGTMVYCEKZl;BNH[CCBLKKHG45LOLOJPQCC?2IYILZJD79GGHYTXk1OO@Q\P^KMWQb<LLY@IZQNDKWPP44<LOYTJ_K^UDL@]ZKHLLk0HABPAOF\B]753MFGSK\JQTGMG\YJGMO>7I]\EO36?ASSQVIROAKPCNPQAFRNGG=0HRXNLTG;?@^SM[DJ@l5IABVLV\YMN<1MMA]J9:DA[VIRZJOh7KKJDCC@OZDRN01MECQZNHVP<>@H]]UXX_o4FNWW[PHN\Zk0JB[[_WCOQ@7<A<1BNXHH8:KMP@TIIE;:7GG[TDP\MKVR\V^R\Hm4JHVWAWYWC;Z@o6DFTUGQ[SGK]L<0@BOKEE48HJELMMk0@BMDEE]LQQ5<DF]87@FU7:O\RDJRM>1EIYY@RJ68JJHB92E37BHKDSASAg=W@HYNS^FFFU;8TLHOIZH^_l5_IOKPCKBBL11[ECYFDUJ;?UTNE]S[I<>4PSMS[UOIAZKHXDXJ5:RPGIM13YYOCCK;;QQFJ==W[@DHHHM<;SQW2>TT\VCEn6]FGDZWAWHFD?1XECICEb9PPDTS]YU\MDZ9;RVBPPU6:2YR_YKB_R[MGMTHFF_X?6Z@P59WVPC?3\YNSO[IG89VW@YE]OMX96XFEV3a?]GPW_OY_DAA1e9[MIOIP$RON->!1!QWQG&7&8*J_NGF3:ZPP3=_lkUBh<>4Xeo\Idlhz_oydaa119[`hYJageyZh||inl6?^6=8T?0W=48]59bvr|43mifn6xjrrklj%7)8=1}dib>1:z`7v178hd&8kih496~DEv4j2JKt?:5F;695~U3<32>6595120;gc1=:=l8<v`71;38j=4=<2.3<79j;|Q77?>221=1=><7cg59607682Y>h76::959564?ko=1>87:6:Q77?>221=1=><7cg5960?1?2n397>51;3xW12=0<03;7?<29ae3?43n::0zY9l:182>4<fsZ>?65;5868277>dn>098k=?;c5;>5<72=0jw)j5879'5c<?02.9<766;%02>2`<,>n1o6l;6;2956<729q/:o4;5:&f>7c<,o0<86*>1;06?!752;?0(<=5289'51<5=2.:9789;%35>22<,8=1>6*>8;47?!7>2<:0(<o5239'07<23-8m6;5+378;?!502:1/?l489:&0b?g<,=:18h5+40850>"3?3=<7):k:39'0=<182.?m78?;%6`>2?<,=l186*:1;7:?!342?;0(8;5609'13<43-?j68:4$709=>"1?3:0(:;5789'3d<0j2.:<7l4$0g90<=#=j0:7);m:69j7<<72-<j65=4$7a93<=<a::1<7*9a;:0?!0d2>307d9>:18'2d<?;2.=o796;:k5b?6=,?k14>5+6884=>=n?90;6)8n:918 3?=?010e;j50;&5e?>43-<26:74;h6a>5<#>h03?6*99;5:?>i5=3:1(;o5829'2f<012.:o7<<;%3g>04<3f8o6=4+6`8;7>=h:00;6)8n:918?j4f290/:l473:9l6`<72-<j65=4$0a966=<g;h1<7*9a;:0?>i5k3:1(;o58298k64=83.=m76<;%4`>2?<,8i1>>54o2194?"1i32876a86;29 3g=0=1/:5489:9l1`<72-<j65=4$7a93<=<g?o1<7*9a;:0?>{e;j0;6?4?:1y'2g<202c>;7>5$7c9<6=#>j0<565`6483>!0f2190(;m57898yg4029096=4?{%4a>75<a<=1<7*9a;:0?!0d2>307b8::18'2d<?;2.=o796;:a70<72;0;6=u+6c817>o2?3:1(;o5829'2f<0121d:84?:%4b>=5<,?i1;454}r1a>5<5s4>=6>74=2a920=#9k08h6s|3083>7}:<?08<63=7;46?!7e2;20q~9=:1828212>;0(:=5569~w70=838p1985249>62<2?2wx?94?:3y>03<4:27897;8;|q6b?6=9r7?:7;j;%50>33<uz9n6=4>{<1`>01<,>919:5rs2:94?7|5:?1:85+72851>{t;m0;6=u+72851>{t:10;6=u+72851>{zf;=1<7?t}o0;>5<6std957>51zm6d<728qvb?l50;3xyk4d290:wp`=d;295~{i:l0;6<urn3d94?7|ug9;6=4>{|~yEFDs:h1>;<k0926yEFEs9wKL]ur@A
|
||||||
17
coregen/dcm_in50_arwz.ucf
Executable file
17
coregen/dcm_in50_arwz.ucf
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
# Generated by Xilinx Architecture Wizard
|
||||||
|
# --- UCF Template Only ---
|
||||||
|
# Cut and paste these attributes into the project's UCF file, if desired
|
||||||
|
INST DCM_SP_INST CLK_FEEDBACK = 1X;
|
||||||
|
INST DCM_SP_INST CLKDV_DIVIDE = 2.0;
|
||||||
|
INST DCM_SP_INST CLKFX_DIVIDE = 25;
|
||||||
|
INST DCM_SP_INST CLKFX_MULTIPLY = 16;
|
||||||
|
INST DCM_SP_INST CLKIN_DIVIDE_BY_2 = TRUE;
|
||||||
|
INST DCM_SP_INST CLKIN_PERIOD = 40.000;
|
||||||
|
INST DCM_SP_INST CLKOUT_PHASE_SHIFT = NONE;
|
||||||
|
INST DCM_SP_INST DESKEW_ADJUST = SYSTEM_SYNCHRONOUS;
|
||||||
|
INST DCM_SP_INST DFS_FREQUENCY_MODE = LOW;
|
||||||
|
INST DCM_SP_INST DLL_FREQUENCY_MODE = LOW;
|
||||||
|
INST DCM_SP_INST DUTY_CYCLE_CORRECTION = TRUE;
|
||||||
|
INST DCM_SP_INST FACTORY_JF = C080;
|
||||||
|
INST DCM_SP_INST PHASE_SHIFT = 0;
|
||||||
|
INST DCM_SP_INST STARTUP_WAIT = TRUE;
|
||||||
BIN
coregen/dist_mem_gen_ds322.pdf
Executable file
BIN
coregen/dist_mem_gen_ds322.pdf
Executable file
Binary file not shown.
99
coregen/dist_mem_gen_release_notes.txt
Executable file
99
coregen/dist_mem_gen_release_notes.txt
Executable file
@@ -0,0 +1,99 @@
|
|||||||
|
COPYRIGHT (c) 2007 XILINX, INC.
|
||||||
|
ALL RIGHTS RESERVED
|
||||||
|
|
||||||
|
Core name : Distributed Memory Generator
|
||||||
|
Version : v3.3
|
||||||
|
Release Date : April 2, 2007
|
||||||
|
File : distributed_memory_generator_release_notes.txt
|
||||||
|
|
||||||
|
Revision History
|
||||||
|
Date By Version Change Description
|
||||||
|
========================================================================
|
||||||
|
4/2007 Xilinx, Inc. 3.3 Initial creation.
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
INTRODUCTION
|
||||||
|
RELEASE NOTES
|
||||||
|
1. General Core Design
|
||||||
|
1.1 Enhancements
|
||||||
|
1.2 Resolved Issues
|
||||||
|
1.3 Outstanding Issues
|
||||||
|
2. General Simulation
|
||||||
|
2.1 Enhancements
|
||||||
|
2.2 Resolved Issues
|
||||||
|
2.3 Outstanding Issues
|
||||||
|
3. Documentation
|
||||||
|
3.1 Enhancements
|
||||||
|
3.2 Resolved Issues
|
||||||
|
3.3 Outstanding Issues
|
||||||
|
OTHER GENERAL INFORMATION
|
||||||
|
TECHNICAL SUPPORT
|
||||||
|
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
INTRODUCTION
|
||||||
|
============
|
||||||
|
Thank you using the Distributed Memory Generator core from Xilinx!
|
||||||
|
In order to obtain the latest core updates and documentation,
|
||||||
|
please visit the Intellectual Property page located at:
|
||||||
|
http://www.xilinx.com/ipcenter/index.htm
|
||||||
|
This document contains the release notes for Distributed Memory Generator v3.3
|
||||||
|
which includes enhancements, resolved issues and outstanding known
|
||||||
|
issues. For release notes and known issues for CORE Generator 9.1i
|
||||||
|
IP Update and Distributed Memory Generator v3.3 please see Answer Record 24307.
|
||||||
|
|
||||||
|
RELEASE NOTES
|
||||||
|
=============
|
||||||
|
This section lists any enhancements, resolved issues and outstanding
|
||||||
|
known issues.
|
||||||
|
|
||||||
|
|
||||||
|
1. General Core Design
|
||||||
|
1.1 Enhancements
|
||||||
|
1.1.1 Support for Spartan(TM) - 3A DSP
|
||||||
|
time.
|
||||||
|
|
||||||
|
1.2 Resolved Issues
|
||||||
|
1.2.1 Solved excessive register duplication in distributed memory synthesis.
|
||||||
|
Change request: 326740
|
||||||
|
|
||||||
|
1.3 Outstanding Issues
|
||||||
|
1.3.1 When a large Distributed Memory Generator IP is generated, CORE ,
|
||||||
|
Generator runs out of memory and fails to generate.
|
||||||
|
Change request: 431917
|
||||||
|
|
||||||
|
2. General Simulation
|
||||||
|
2.1 Enhancements
|
||||||
|
None at this time.
|
||||||
|
|
||||||
|
2.2 Resolved Issues
|
||||||
|
None at this time.
|
||||||
|
|
||||||
|
2.3 Outstanding Issues
|
||||||
|
None at this time.
|
||||||
|
|
||||||
|
3. Documentation
|
||||||
|
3.1 Enhancements
|
||||||
|
None at this time.
|
||||||
|
|
||||||
|
3.2 Resolved Issues
|
||||||
|
None at this time.
|
||||||
|
|
||||||
|
3.3 Outstanding Issues
|
||||||
|
None at this time.
|
||||||
|
|
||||||
|
|
||||||
|
TECHNICAL SUPPORT
|
||||||
|
=================
|
||||||
|
The fastest method for obtaining specific technical support for the
|
||||||
|
Distributed Memory Generator core is through the http://support.xilinx.com/
|
||||||
|
website. Questions are routed to a team of engineers with specific
|
||||||
|
expertise in using the Distributed Memory Generator core. Xilinx will provide
|
||||||
|
technical support for use of this product as described in the Distributed
|
||||||
|
Memory Generator Datasheet. Xilinx cannot guarantee timing,
|
||||||
|
functionality, or support of this product for designs that do not
|
||||||
|
follow these guidelines.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
3
coregen/distram16x8.ngc
Executable file
3
coregen/distram16x8.ngc
Executable file
File diff suppressed because one or more lines are too long
115
coregen/distram16x8.vhd
Executable file
115
coregen/distram16x8.vhd
Executable file
@@ -0,0 +1,115 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- You must compile the wrapper file distram16x8.vhd when simulating
|
||||||
|
-- the core, distram16x8. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
|
-- The synthesis directives "translate_off/translate_on" specified
|
||||||
|
-- below are supported by Xilinx, Mentor Graphics and Synplicity
|
||||||
|
-- synthesis tools. Ensure they are correct for your synthesis tool(s).
|
||||||
|
|
||||||
|
LIBRARY ieee;
|
||||||
|
USE ieee.std_logic_1164.ALL;
|
||||||
|
-- synthesis translate_off
|
||||||
|
Library XilinxCoreLib;
|
||||||
|
-- synthesis translate_on
|
||||||
|
ENTITY distram16x8 IS
|
||||||
|
port (
|
||||||
|
a: IN std_logic_VECTOR(3 downto 0);
|
||||||
|
d: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
dpra: IN std_logic_VECTOR(3 downto 0);
|
||||||
|
clk: IN std_logic;
|
||||||
|
we: IN std_logic;
|
||||||
|
spo: OUT std_logic_VECTOR(7 downto 0);
|
||||||
|
dpo: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
END distram16x8;
|
||||||
|
|
||||||
|
ARCHITECTURE distram16x8_a OF distram16x8 IS
|
||||||
|
-- synthesis translate_off
|
||||||
|
component wrapped_distram16x8
|
||||||
|
port (
|
||||||
|
a: IN std_logic_VECTOR(3 downto 0);
|
||||||
|
d: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
dpra: IN std_logic_VECTOR(3 downto 0);
|
||||||
|
clk: IN std_logic;
|
||||||
|
we: IN std_logic;
|
||||||
|
spo: OUT std_logic_VECTOR(7 downto 0);
|
||||||
|
dpo: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- Configuration specification
|
||||||
|
for all : wrapped_distram16x8 use entity XilinxCoreLib.dist_mem_gen_v3_3(behavioral)
|
||||||
|
generic map(
|
||||||
|
c_has_clk => 1,
|
||||||
|
c_has_qdpo_clk => 0,
|
||||||
|
c_has_qdpo_ce => 0,
|
||||||
|
c_has_d => 1,
|
||||||
|
c_has_spo => 1,
|
||||||
|
c_read_mif => 0,
|
||||||
|
c_has_qspo => 0,
|
||||||
|
c_width => 8,
|
||||||
|
c_reg_a_d_inputs => 0,
|
||||||
|
c_has_we => 1,
|
||||||
|
c_pipeline_stages => 0,
|
||||||
|
c_has_qdpo_rst => 0,
|
||||||
|
c_reg_dpra_input => 0,
|
||||||
|
c_qualify_we => 0,
|
||||||
|
c_sync_enable => 1,
|
||||||
|
c_depth => 16,
|
||||||
|
c_has_qspo_srst => 0,
|
||||||
|
c_has_qdpo_srst => 0,
|
||||||
|
c_has_dpra => 1,
|
||||||
|
c_qce_joined => 0,
|
||||||
|
c_mem_type => 2,
|
||||||
|
c_has_i_ce => 0,
|
||||||
|
c_has_dpo => 1,
|
||||||
|
c_mem_init_file => "no_coe_file_loaded",
|
||||||
|
c_default_data => "0",
|
||||||
|
c_has_spra => 0,
|
||||||
|
c_has_qspo_ce => 0,
|
||||||
|
c_addr_width => 4,
|
||||||
|
c_has_qdpo => 0,
|
||||||
|
c_has_qspo_rst => 0);
|
||||||
|
-- synthesis translate_on
|
||||||
|
BEGIN
|
||||||
|
-- synthesis translate_off
|
||||||
|
U0 : wrapped_distram16x8
|
||||||
|
port map (
|
||||||
|
a => a,
|
||||||
|
d => d,
|
||||||
|
dpra => dpra,
|
||||||
|
clk => clk,
|
||||||
|
we => we,
|
||||||
|
spo => spo,
|
||||||
|
dpo => dpo);
|
||||||
|
-- synthesis translate_on
|
||||||
|
|
||||||
|
END distram16x8_a;
|
||||||
|
|
||||||
64
coregen/distram16x8.vho
Executable file
64
coregen/distram16x8.vho
Executable file
@@ -0,0 +1,64 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- The following code must appear in the VHDL architecture header:
|
||||||
|
|
||||||
|
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
|
||||||
|
component distram16x8
|
||||||
|
port (
|
||||||
|
a: IN std_logic_VECTOR(3 downto 0);
|
||||||
|
d: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
dpra: IN std_logic_VECTOR(3 downto 0);
|
||||||
|
clk: IN std_logic;
|
||||||
|
we: IN std_logic;
|
||||||
|
spo: OUT std_logic_VECTOR(7 downto 0);
|
||||||
|
dpo: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
|
||||||
|
|
||||||
|
-- The following code must appear in the VHDL architecture
|
||||||
|
-- body. Substitute your own instance name and net names.
|
||||||
|
|
||||||
|
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
|
||||||
|
your_instance_name : distram16x8
|
||||||
|
port map (
|
||||||
|
a => a,
|
||||||
|
d => d,
|
||||||
|
dpra => dpra,
|
||||||
|
clk => clk,
|
||||||
|
we => we,
|
||||||
|
spo => spo,
|
||||||
|
dpo => dpo);
|
||||||
|
-- INST_TAG_END ------ End INSTANTIATION Template ------------
|
||||||
|
|
||||||
|
-- You must compile the wrapper file distram16x8.vhd when simulating
|
||||||
|
-- the core, distram16x8. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
63
coregen/distram16x8.xco
Executable file
63
coregen/distram16x8.xco
Executable file
@@ -0,0 +1,63 @@
|
|||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# Xilinx Core Generator version J.40
|
||||||
|
# Date: Wed Dec 31 13:10:21 2008
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# This file contains the customisation parameters for a
|
||||||
|
# Xilinx CORE Generator IP GUI. It is strongly recommended
|
||||||
|
# that you do not manually alter this file as it may cause
|
||||||
|
# unexpected and unsupported behavior.
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# BEGIN Project Options
|
||||||
|
SET addpads = False
|
||||||
|
SET asysymbol = False
|
||||||
|
SET busformat = BusFormatAngleBracketNotRipped
|
||||||
|
SET createndf = False
|
||||||
|
SET designentry = VHDL
|
||||||
|
SET device = xc3s700an
|
||||||
|
SET devicefamily = spartan3a
|
||||||
|
SET flowvendor = Other
|
||||||
|
SET formalverification = False
|
||||||
|
SET foundationsym = False
|
||||||
|
SET implementationfiletype = Ngc
|
||||||
|
SET package = fgg484
|
||||||
|
SET removerpms = False
|
||||||
|
SET simulationfiles = Behavioral
|
||||||
|
SET speedgrade = -4
|
||||||
|
SET verilogsim = False
|
||||||
|
SET vhdlsim = True
|
||||||
|
# END Project Options
|
||||||
|
# BEGIN Select
|
||||||
|
SELECT Distributed_Memory_Generator family Xilinx,_Inc. 3.3
|
||||||
|
# END Select
|
||||||
|
# BEGIN Parameters
|
||||||
|
CSET ce_overrides=ce_overrides_sync_controls
|
||||||
|
CSET coefficient_file=no_coe_file_loaded
|
||||||
|
CSET common_output_ce=false
|
||||||
|
CSET common_output_clk=false
|
||||||
|
CSET component_name=distram16x8
|
||||||
|
CSET data_width=8
|
||||||
|
CSET default_data=0
|
||||||
|
CSET default_data_radix=16
|
||||||
|
CSET depth=16
|
||||||
|
CSET dual_port_address=non_registered
|
||||||
|
CSET dual_port_output_clock_enable=false
|
||||||
|
CSET input_clock_enable=false
|
||||||
|
CSET input_options=non_registered
|
||||||
|
CSET memory_type=dual_port_ram
|
||||||
|
CSET output_options=non_registered
|
||||||
|
CSET pipeline_stages=0
|
||||||
|
CSET qualify_we_with_i_ce=false
|
||||||
|
CSET reset_qdpo=false
|
||||||
|
CSET reset_qspo=false
|
||||||
|
CSET single_port_output_clock_enable=false
|
||||||
|
CSET sync_reset_qdpo=false
|
||||||
|
CSET sync_reset_qspo=false
|
||||||
|
# END Parameters
|
||||||
|
GENERATE
|
||||||
|
# CRC: 79e446fd
|
||||||
|
|
||||||
7
coregen/distram16x8_flist.txt
Executable file
7
coregen/distram16x8_flist.txt
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
# Output products list for <distram16x8>
|
||||||
|
distram16x8.ngc
|
||||||
|
distram16x8.vhd
|
||||||
|
distram16x8.vho
|
||||||
|
distram16x8.xco
|
||||||
|
distram16x8_flist.txt
|
||||||
|
distram16x8_xmdf.tcl
|
||||||
36
coregen/distram16x8_readme.txt
Executable file
36
coregen/distram16x8_readme.txt
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
The following files were generated for 'distram16x8' in directory
|
||||||
|
c:\vhdl\nascom2\coregen\:
|
||||||
|
|
||||||
|
distram16x8.ngc:
|
||||||
|
Binary Xilinx implementation netlist file containing the information
|
||||||
|
required to implement the module in a Xilinx (R) FPGA.
|
||||||
|
|
||||||
|
distram16x8.vhd:
|
||||||
|
VHDL wrapper file provided to support functional simulation. This
|
||||||
|
file contains simulation model customization data that is passed to
|
||||||
|
a parameterized simulation model for the core.
|
||||||
|
|
||||||
|
distram16x8.vho:
|
||||||
|
VHO template file containing code that can be used as a model for
|
||||||
|
instantiating a CORE Generator module in a VHDL design.
|
||||||
|
|
||||||
|
distram16x8.xco:
|
||||||
|
CORE Generator input file containing the parameters used to
|
||||||
|
regenerate a core.
|
||||||
|
|
||||||
|
distram16x8_flist.txt:
|
||||||
|
Text file listing all of the output files produced when a customized
|
||||||
|
core was generated in the CORE Generator.
|
||||||
|
|
||||||
|
distram16x8_readme.txt:
|
||||||
|
Text file indicating the files generated and how they are used.
|
||||||
|
|
||||||
|
distram16x8_xmdf.tcl:
|
||||||
|
ISE Project Navigator interface file. ISE uses this file to determine
|
||||||
|
how the files output by CORE Generator for the core can be integrated
|
||||||
|
into your ISE project.
|
||||||
|
|
||||||
|
|
||||||
|
Please see the Xilinx CORE Generator online help for further details on
|
||||||
|
generated files and how to use them.
|
||||||
|
|
||||||
64
coregen/distram16x8_xmdf.tcl
Executable file
64
coregen/distram16x8_xmdf.tcl
Executable file
@@ -0,0 +1,64 @@
|
|||||||
|
# The package naming convention is <core_name>_xmdf
|
||||||
|
package provide distram16x8_xmdf 1.0
|
||||||
|
|
||||||
|
# This includes some utilities that support common XMDF operations
|
||||||
|
package require utilities_xmdf
|
||||||
|
|
||||||
|
# Define a namespace for this package. The name of the name space
|
||||||
|
# is <core_name>_xmdf
|
||||||
|
namespace eval ::distram16x8_xmdf {
|
||||||
|
# Use this to define any statics
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function called by client to rebuild the params and port arrays
|
||||||
|
# Optional when the use context does not require the param or ports
|
||||||
|
# arrays to be available.
|
||||||
|
proc ::distram16x8_xmdf::xmdfInit { instance } {
|
||||||
|
# Variable containg name of library into which module is compiled
|
||||||
|
# Recommendation: <module_name>
|
||||||
|
# Required
|
||||||
|
utilities_xmdf::xmdfSetData $instance Module Attributes Name distram16x8
|
||||||
|
}
|
||||||
|
# ::distram16x8_xmdf::xmdfInit
|
||||||
|
|
||||||
|
# Function called by client to fill in all the xmdf* data variables
|
||||||
|
# based on the current settings of the parameters
|
||||||
|
proc ::distram16x8_xmdf::xmdfApplyParams { instance } {
|
||||||
|
|
||||||
|
set fcount 0
|
||||||
|
# Array containing libraries that are assumed to exist
|
||||||
|
# Examples include unisim and xilinxcorelib
|
||||||
|
# Optional
|
||||||
|
# In this example, we assume that the unisim library will
|
||||||
|
# be magically
|
||||||
|
# available to the simulation and synthesis tool
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path distram16x8.ngc
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path distram16x8.vhd
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path distram16x8.vho
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path distram16x8.xco
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path distram16x8_xmdf.tcl
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module distram16x8
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# ::gen_comp_name_xmdf::xmdfApplyParams
|
||||||
17
coregen/monitorrom.asy
Executable file
17
coregen/monitorrom.asy
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
Version 4
|
||||||
|
SymbolType BLOCK
|
||||||
|
TEXT 32 32 LEFT 4 monitorrom
|
||||||
|
RECTANGLE Normal 32 32 544 576
|
||||||
|
LINE Wide 0 80 32 80
|
||||||
|
PIN 0 80 LEFT 36
|
||||||
|
PINATTR PinName addra[10:0]
|
||||||
|
PINATTR Polarity IN
|
||||||
|
LINE Normal 0 272 32 272
|
||||||
|
PIN 0 272 LEFT 36
|
||||||
|
PINATTR PinName clka
|
||||||
|
PINATTR Polarity IN
|
||||||
|
LINE Wide 576 80 544 80
|
||||||
|
PIN 576 80 RIGHT 36
|
||||||
|
PINATTR PinName douta[7:0]
|
||||||
|
PINATTR Polarity OUT
|
||||||
|
|
||||||
2048
coregen/monitorrom.mif
Executable file
2048
coregen/monitorrom.mif
Executable file
File diff suppressed because it is too large
Load Diff
3
coregen/monitorrom.ngc
Executable file
3
coregen/monitorrom.ngc
Executable file
File diff suppressed because one or more lines are too long
27
coregen/monitorrom.sym
Executable file
27
coregen/monitorrom.sym
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
VERSION 5
|
||||||
|
BEGIN SYMBOL monitorrom
|
||||||
|
SYMBOLTYPE BLOCK
|
||||||
|
TIMESTAMP 2008 12 31 13 31 1
|
||||||
|
SYMPIN 0 80 Input addra[10:0]
|
||||||
|
SYMPIN 0 272 Input clka
|
||||||
|
SYMPIN 576 80 Output douta[7:0]
|
||||||
|
BEGIN DISPLAY 32 32 TEXT monitorrom
|
||||||
|
FONT 40 "Arial"
|
||||||
|
END DISPLAY
|
||||||
|
RECTANGLE N 32 32 544 576
|
||||||
|
BEGIN LINE W 0 80 32 80
|
||||||
|
END LINE
|
||||||
|
BEGIN DISPLAY 36 80 PIN addra[10:0] ATTR PinName
|
||||||
|
FONT 24 "Arial"
|
||||||
|
END DISPLAY
|
||||||
|
LINE N 0 272 32 272
|
||||||
|
BEGIN DISPLAY 36 272 PIN clka ATTR PinName
|
||||||
|
FONT 24 "Arial"
|
||||||
|
END DISPLAY
|
||||||
|
BEGIN LINE W 576 80 544 80
|
||||||
|
END LINE
|
||||||
|
BEGIN DISPLAY 540 80 PIN douta[7:0] ATTR PinName
|
||||||
|
ALIGNMENT RIGHT
|
||||||
|
FONT 24 "Arial"
|
||||||
|
END DISPLAY
|
||||||
|
END SYMBOL
|
||||||
126
coregen/monitorrom.v
Executable file
126
coregen/monitorrom.v
Executable file
@@ -0,0 +1,126 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* This file is owned and controlled by Xilinx and must be used *
|
||||||
|
* solely for design, simulation, implementation and creation of *
|
||||||
|
* design files limited to Xilinx devices or technologies. Use *
|
||||||
|
* with non-Xilinx devices or technologies is expressly prohibited *
|
||||||
|
* and immediately terminates your license. *
|
||||||
|
* *
|
||||||
|
* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" *
|
||||||
|
* SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR *
|
||||||
|
* XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION *
|
||||||
|
* AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION *
|
||||||
|
* OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS *
|
||||||
|
* IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, *
|
||||||
|
* AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE *
|
||||||
|
* FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY *
|
||||||
|
* WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE *
|
||||||
|
* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR *
|
||||||
|
* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF *
|
||||||
|
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS *
|
||||||
|
* FOR A PARTICULAR PURPOSE. *
|
||||||
|
* *
|
||||||
|
* Xilinx products are not intended for use in life support *
|
||||||
|
* appliances, devices, or systems. Use in such applications are *
|
||||||
|
* expressly prohibited. *
|
||||||
|
* *
|
||||||
|
* (c) Copyright 1995-2007 Xilinx, Inc. *
|
||||||
|
* All rights reserved. *
|
||||||
|
*******************************************************************************/
|
||||||
|
// The synthesis directives "translate_off/translate_on" specified below are
|
||||||
|
// supported by Xilinx, Mentor Graphics and Synplicity synthesis
|
||||||
|
// tools. Ensure they are correct for your synthesis tool(s).
|
||||||
|
|
||||||
|
// You must compile the wrapper file monitorrom.v when simulating
|
||||||
|
// the core, monitorrom. When compiling the wrapper file, be sure to
|
||||||
|
// reference the XilinxCoreLib Verilog simulation library. For detailed
|
||||||
|
// instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
|
`timescale 1ns/1ps
|
||||||
|
|
||||||
|
module monitorrom(
|
||||||
|
clka,
|
||||||
|
addra,
|
||||||
|
douta);
|
||||||
|
|
||||||
|
|
||||||
|
input clka;
|
||||||
|
input [10 : 0] addra;
|
||||||
|
output [7 : 0] douta;
|
||||||
|
|
||||||
|
// synthesis translate_off
|
||||||
|
|
||||||
|
BLK_MEM_GEN_V2_6 #(
|
||||||
|
.C_ADDRA_WIDTH(11),
|
||||||
|
.C_ADDRB_WIDTH(11),
|
||||||
|
.C_ALGORITHM(1),
|
||||||
|
.C_BYTE_SIZE(9),
|
||||||
|
.C_COMMON_CLK(0),
|
||||||
|
.C_DEFAULT_DATA("0"),
|
||||||
|
.C_DISABLE_WARN_BHV_COLL(0),
|
||||||
|
.C_DISABLE_WARN_BHV_RANGE(0),
|
||||||
|
.C_FAMILY("spartan3"),
|
||||||
|
.C_HAS_ENA(0),
|
||||||
|
.C_HAS_ENB(0),
|
||||||
|
.C_HAS_MEM_OUTPUT_REGS_A(0),
|
||||||
|
.C_HAS_MEM_OUTPUT_REGS_B(0),
|
||||||
|
.C_HAS_MUX_OUTPUT_REGS_A(0),
|
||||||
|
.C_HAS_MUX_OUTPUT_REGS_B(0),
|
||||||
|
.C_HAS_REGCEA(0),
|
||||||
|
.C_HAS_REGCEB(0),
|
||||||
|
.C_HAS_SSRA(0),
|
||||||
|
.C_HAS_SSRB(0),
|
||||||
|
.C_INIT_FILE_NAME("monitorrom.mif"),
|
||||||
|
.C_LOAD_INIT_FILE(1),
|
||||||
|
.C_MEM_TYPE(3),
|
||||||
|
.C_MUX_PIPELINE_STAGES(0),
|
||||||
|
.C_PRIM_TYPE(1),
|
||||||
|
.C_READ_DEPTH_A(2048),
|
||||||
|
.C_READ_DEPTH_B(2048),
|
||||||
|
.C_READ_WIDTH_A(8),
|
||||||
|
.C_READ_WIDTH_B(8),
|
||||||
|
.C_SIM_COLLISION_CHECK("ALL"),
|
||||||
|
.C_SINITA_VAL("0"),
|
||||||
|
.C_SINITB_VAL("0"),
|
||||||
|
.C_USE_BYTE_WEA(0),
|
||||||
|
.C_USE_BYTE_WEB(0),
|
||||||
|
.C_USE_DEFAULT_DATA(1),
|
||||||
|
.C_USE_ECC(0),
|
||||||
|
.C_USE_RAMB16BWER_RST_BHV(0),
|
||||||
|
.C_WEA_WIDTH(1),
|
||||||
|
.C_WEB_WIDTH(1),
|
||||||
|
.C_WRITE_DEPTH_A(2048),
|
||||||
|
.C_WRITE_DEPTH_B(2048),
|
||||||
|
.C_WRITE_MODE_A("WRITE_FIRST"),
|
||||||
|
.C_WRITE_MODE_B("WRITE_FIRST"),
|
||||||
|
.C_WRITE_WIDTH_A(8),
|
||||||
|
.C_WRITE_WIDTH_B(8),
|
||||||
|
.C_XDEVICEFAMILY("spartan3a"))
|
||||||
|
inst (
|
||||||
|
.CLKA(clka),
|
||||||
|
.ADDRA(addra),
|
||||||
|
.DOUTA(douta),
|
||||||
|
.DINA(),
|
||||||
|
.ENA(),
|
||||||
|
.REGCEA(),
|
||||||
|
.WEA(),
|
||||||
|
.SSRA(),
|
||||||
|
.CLKB(),
|
||||||
|
.DINB(),
|
||||||
|
.ADDRB(),
|
||||||
|
.ENB(),
|
||||||
|
.REGCEB(),
|
||||||
|
.WEB(),
|
||||||
|
.SSRB(),
|
||||||
|
.DOUTB(),
|
||||||
|
.DBITERR(),
|
||||||
|
.SBITERR());
|
||||||
|
|
||||||
|
|
||||||
|
// synthesis translate_on
|
||||||
|
|
||||||
|
// XST black box declaration
|
||||||
|
// box_type "black_box"
|
||||||
|
// synthesis attribute box_type of monitorrom is "black_box"
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
||||||
45
coregen/monitorrom.veo
Executable file
45
coregen/monitorrom.veo
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* This file is owned and controlled by Xilinx and must be used *
|
||||||
|
* solely for design, simulation, implementation and creation of *
|
||||||
|
* design files limited to Xilinx devices or technologies. Use *
|
||||||
|
* with non-Xilinx devices or technologies is expressly prohibited *
|
||||||
|
* and immediately terminates your license. *
|
||||||
|
* *
|
||||||
|
* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" *
|
||||||
|
* SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR *
|
||||||
|
* XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION *
|
||||||
|
* AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION *
|
||||||
|
* OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS *
|
||||||
|
* IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, *
|
||||||
|
* AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE *
|
||||||
|
* FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY *
|
||||||
|
* WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE *
|
||||||
|
* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR *
|
||||||
|
* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF *
|
||||||
|
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS *
|
||||||
|
* FOR A PARTICULAR PURPOSE. *
|
||||||
|
* *
|
||||||
|
* Xilinx products are not intended for use in life support *
|
||||||
|
* appliances, devices, or systems. Use in such applications are *
|
||||||
|
* expressly prohibited. *
|
||||||
|
* *
|
||||||
|
* (c) Copyright 1995-2007 Xilinx, Inc. *
|
||||||
|
* All rights reserved. *
|
||||||
|
*******************************************************************************/
|
||||||
|
// The following must be inserted into your Verilog file for this
|
||||||
|
// core to be instantiated. Change the instance name and port connections
|
||||||
|
// (in parentheses) to your own signal names.
|
||||||
|
|
||||||
|
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
|
||||||
|
monitorrom YourInstanceName (
|
||||||
|
.clka(clka),
|
||||||
|
.addra(addra), // Bus [10 : 0]
|
||||||
|
.douta(douta)); // Bus [7 : 0]
|
||||||
|
|
||||||
|
// INST_TAG_END ------ End INSTANTIATION Template ---------
|
||||||
|
|
||||||
|
// You must compile the wrapper file monitorrom.v when simulating
|
||||||
|
// the core, monitorrom. When compiling the wrapper file, be sure to
|
||||||
|
// reference the XilinxCoreLib Verilog simulation library. For detailed
|
||||||
|
// instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
121
coregen/monitorrom.vhd
Executable file
121
coregen/monitorrom.vhd
Executable file
@@ -0,0 +1,121 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- You must compile the wrapper file monitorrom.vhd when simulating
|
||||||
|
-- the core, monitorrom. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
|
-- The synthesis directives "translate_off/translate_on" specified
|
||||||
|
-- below are supported by Xilinx, Mentor Graphics and Synplicity
|
||||||
|
-- synthesis tools. Ensure they are correct for your synthesis tool(s).
|
||||||
|
|
||||||
|
LIBRARY ieee;
|
||||||
|
USE ieee.std_logic_1164.ALL;
|
||||||
|
-- synthesis translate_off
|
||||||
|
Library XilinxCoreLib;
|
||||||
|
-- synthesis translate_on
|
||||||
|
ENTITY monitorrom IS
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
ena: IN std_logic;
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
END monitorrom;
|
||||||
|
|
||||||
|
ARCHITECTURE monitorrom_a OF monitorrom IS
|
||||||
|
-- synthesis translate_off
|
||||||
|
component wrapped_monitorrom
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
ena: IN std_logic;
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- Configuration specification
|
||||||
|
for all : wrapped_monitorrom use entity XilinxCoreLib.blk_mem_gen_v2_6(behavioral)
|
||||||
|
generic map(
|
||||||
|
c_has_regceb => 0,
|
||||||
|
c_has_regcea => 0,
|
||||||
|
c_mem_type => 3,
|
||||||
|
c_prim_type => 1,
|
||||||
|
c_sinita_val => "0",
|
||||||
|
c_read_width_b => 8,
|
||||||
|
c_family => "spartan3",
|
||||||
|
c_read_width_a => 8,
|
||||||
|
c_disable_warn_bhv_coll => 0,
|
||||||
|
c_write_mode_b => "WRITE_FIRST",
|
||||||
|
c_init_file_name => "monitorrom.mif",
|
||||||
|
c_write_mode_a => "WRITE_FIRST",
|
||||||
|
c_mux_pipeline_stages => 0,
|
||||||
|
c_has_mem_output_regs_b => 0,
|
||||||
|
c_load_init_file => 1,
|
||||||
|
c_xdevicefamily => "spartan3a",
|
||||||
|
c_has_mem_output_regs_a => 0,
|
||||||
|
c_write_depth_b => 2048,
|
||||||
|
c_write_depth_a => 2048,
|
||||||
|
c_has_ssrb => 0,
|
||||||
|
c_has_mux_output_regs_b => 0,
|
||||||
|
c_has_ssra => 0,
|
||||||
|
c_has_mux_output_regs_a => 0,
|
||||||
|
c_addra_width => 11,
|
||||||
|
c_addrb_width => 11,
|
||||||
|
c_default_data => "0",
|
||||||
|
c_use_ecc => 0,
|
||||||
|
c_algorithm => 1,
|
||||||
|
c_disable_warn_bhv_range => 0,
|
||||||
|
c_write_width_b => 8,
|
||||||
|
c_write_width_a => 8,
|
||||||
|
c_read_depth_b => 2048,
|
||||||
|
c_read_depth_a => 2048,
|
||||||
|
c_byte_size => 9,
|
||||||
|
c_sim_collision_check => "ALL",
|
||||||
|
c_use_ramb16bwer_rst_bhv => 0,
|
||||||
|
c_common_clk => 0,
|
||||||
|
c_wea_width => 1,
|
||||||
|
c_has_enb => 0,
|
||||||
|
c_web_width => 1,
|
||||||
|
c_has_ena => 1,
|
||||||
|
c_sinitb_val => "0",
|
||||||
|
c_use_byte_web => 0,
|
||||||
|
c_use_byte_wea => 0,
|
||||||
|
c_use_default_data => 1);
|
||||||
|
-- synthesis translate_on
|
||||||
|
BEGIN
|
||||||
|
-- synthesis translate_off
|
||||||
|
U0 : wrapped_monitorrom
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
addra => addra,
|
||||||
|
ena => ena,
|
||||||
|
douta => douta);
|
||||||
|
-- synthesis translate_on
|
||||||
|
|
||||||
|
END monitorrom_a;
|
||||||
|
|
||||||
118
coregen/monitorrom.vhd.bak
Executable file
118
coregen/monitorrom.vhd.bak
Executable file
@@ -0,0 +1,118 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- You must compile the wrapper file monitorrom.vhd when simulating
|
||||||
|
-- the core, monitorrom. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
|
-- The synthesis directives "translate_off/translate_on" specified
|
||||||
|
-- below are supported by Xilinx, Mentor Graphics and Synplicity
|
||||||
|
-- synthesis tools. Ensure they are correct for your synthesis tool(s).
|
||||||
|
|
||||||
|
LIBRARY ieee;
|
||||||
|
USE ieee.std_logic_1164.ALL;
|
||||||
|
-- synthesis translate_off
|
||||||
|
Library XilinxCoreLib;
|
||||||
|
-- synthesis translate_on
|
||||||
|
ENTITY monitorrom IS
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
END monitorrom;
|
||||||
|
|
||||||
|
ARCHITECTURE monitorrom_a OF monitorrom IS
|
||||||
|
-- synthesis translate_off
|
||||||
|
component wrapped_monitorrom
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- Configuration specification
|
||||||
|
for all : wrapped_monitorrom use entity XilinxCoreLib.blk_mem_gen_v2_6(behavioral)
|
||||||
|
generic map(
|
||||||
|
c_has_regceb => 0,
|
||||||
|
c_has_regcea => 0,
|
||||||
|
c_mem_type => 3,
|
||||||
|
c_prim_type => 1,
|
||||||
|
c_sinita_val => "0",
|
||||||
|
c_read_width_b => 8,
|
||||||
|
c_family => "spartan3",
|
||||||
|
c_read_width_a => 8,
|
||||||
|
c_disable_warn_bhv_coll => 0,
|
||||||
|
c_write_mode_b => "WRITE_FIRST",
|
||||||
|
c_init_file_name => "monitorrom.mif",
|
||||||
|
c_write_mode_a => "WRITE_FIRST",
|
||||||
|
c_mux_pipeline_stages => 0,
|
||||||
|
c_has_mem_output_regs_b => 0,
|
||||||
|
c_load_init_file => 1,
|
||||||
|
c_xdevicefamily => "spartan3a",
|
||||||
|
c_has_mem_output_regs_a => 0,
|
||||||
|
c_write_depth_b => 2048,
|
||||||
|
c_write_depth_a => 2048,
|
||||||
|
c_has_ssrb => 0,
|
||||||
|
c_has_mux_output_regs_b => 0,
|
||||||
|
c_has_ssra => 0,
|
||||||
|
c_has_mux_output_regs_a => 0,
|
||||||
|
c_addra_width => 11,
|
||||||
|
c_addrb_width => 11,
|
||||||
|
c_default_data => "0",
|
||||||
|
c_use_ecc => 0,
|
||||||
|
c_algorithm => 1,
|
||||||
|
c_disable_warn_bhv_range => 0,
|
||||||
|
c_write_width_b => 8,
|
||||||
|
c_write_width_a => 8,
|
||||||
|
c_read_depth_b => 2048,
|
||||||
|
c_read_depth_a => 2048,
|
||||||
|
c_byte_size => 9,
|
||||||
|
c_sim_collision_check => "ALL",
|
||||||
|
c_use_ramb16bwer_rst_bhv => 0,
|
||||||
|
c_common_clk => 0,
|
||||||
|
c_wea_width => 1,
|
||||||
|
c_has_enb => 0,
|
||||||
|
c_web_width => 1,
|
||||||
|
c_has_ena => 0,
|
||||||
|
c_sinitb_val => "0",
|
||||||
|
c_use_byte_web => 0,
|
||||||
|
c_use_byte_wea => 0,
|
||||||
|
c_use_default_data => 1);
|
||||||
|
-- synthesis translate_on
|
||||||
|
BEGIN
|
||||||
|
-- synthesis translate_off
|
||||||
|
U0 : wrapped_monitorrom
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
addra => addra,
|
||||||
|
douta => douta);
|
||||||
|
-- synthesis translate_on
|
||||||
|
|
||||||
|
END monitorrom_a;
|
||||||
|
|
||||||
58
coregen/monitorrom.vho
Executable file
58
coregen/monitorrom.vho
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- The following code must appear in the VHDL architecture header:
|
||||||
|
|
||||||
|
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
|
||||||
|
component monitorrom
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
ena: IN std_logic;
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
|
||||||
|
|
||||||
|
-- The following code must appear in the VHDL architecture
|
||||||
|
-- body. Substitute your own instance name and net names.
|
||||||
|
|
||||||
|
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
|
||||||
|
your_instance_name : monitorrom
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
addra => addra,
|
||||||
|
ena => ena,
|
||||||
|
douta => douta);
|
||||||
|
-- INST_TAG_END ------ End INSTANTIATION Template ------------
|
||||||
|
|
||||||
|
-- You must compile the wrapper file monitorrom.vhd when simulating
|
||||||
|
-- the core, monitorrom. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
78
coregen/monitorrom.xco
Executable file
78
coregen/monitorrom.xco
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# Xilinx Core Generator version J.40
|
||||||
|
# Date: Thu Jan 08 11:30:25 2009
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# This file contains the customisation parameters for a
|
||||||
|
# Xilinx CORE Generator IP GUI. It is strongly recommended
|
||||||
|
# that you do not manually alter this file as it may cause
|
||||||
|
# unexpected and unsupported behavior.
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# BEGIN Project Options
|
||||||
|
SET addpads = False
|
||||||
|
SET asysymbol = False
|
||||||
|
SET busformat = BusFormatAngleBracketNotRipped
|
||||||
|
SET createndf = False
|
||||||
|
SET designentry = VHDL
|
||||||
|
SET device = xc3s700an
|
||||||
|
SET devicefamily = spartan3a
|
||||||
|
SET flowvendor = Other
|
||||||
|
SET formalverification = False
|
||||||
|
SET foundationsym = False
|
||||||
|
SET implementationfiletype = Ngc
|
||||||
|
SET package = fgg484
|
||||||
|
SET removerpms = False
|
||||||
|
SET simulationfiles = Behavioral
|
||||||
|
SET speedgrade = -4
|
||||||
|
SET verilogsim = False
|
||||||
|
SET vhdlsim = True
|
||||||
|
# END Project Options
|
||||||
|
# BEGIN Select
|
||||||
|
SELECT Block_Memory_Generator family Xilinx,_Inc. 2.6
|
||||||
|
# END Select
|
||||||
|
# BEGIN Parameters
|
||||||
|
CSET algorithm=Minimum_Area
|
||||||
|
CSET assume_synchronous_clk=false
|
||||||
|
CSET byte_size=9
|
||||||
|
CSET coe_file=C:/vhdl/nascom2_t80/NASSYSI.coe
|
||||||
|
CSET collision_warnings=ALL
|
||||||
|
CSET component_name=monitorrom
|
||||||
|
CSET disable_collision_warnings=false
|
||||||
|
CSET disable_out_of_range_warnings=false
|
||||||
|
CSET ecc=false
|
||||||
|
CSET enable_a=Use_ENA_Pin
|
||||||
|
CSET enable_b=Always_Enabled
|
||||||
|
CSET fill_remaining_memory_locations=true
|
||||||
|
CSET load_init_file=true
|
||||||
|
CSET memory_type=Single_Port_ROM
|
||||||
|
CSET operating_mode_a=WRITE_FIRST
|
||||||
|
CSET operating_mode_b=WRITE_FIRST
|
||||||
|
CSET output_reset_value_a=0
|
||||||
|
CSET output_reset_value_b=0
|
||||||
|
CSET pipeline_stages=0
|
||||||
|
CSET primitive=8kx2
|
||||||
|
CSET read_width_a=8
|
||||||
|
CSET read_width_b=8
|
||||||
|
CSET register_porta_output_of_memory_core=false
|
||||||
|
CSET register_porta_output_of_memory_primitives=false
|
||||||
|
CSET register_portb_output_of_memory_core=false
|
||||||
|
CSET register_portb_output_of_memory_primitives=false
|
||||||
|
CSET remaining_memory_locations=0
|
||||||
|
CSET single_bit_ecc=false
|
||||||
|
CSET use_byte_write_enable=false
|
||||||
|
CSET use_ramb16bwer_reset_behavior=false
|
||||||
|
CSET use_regcea_pin=false
|
||||||
|
CSET use_regceb_pin=false
|
||||||
|
CSET use_ssra_pin=false
|
||||||
|
CSET use_ssrb_pin=false
|
||||||
|
CSET write_depth_a=2048
|
||||||
|
CSET write_width_a=8
|
||||||
|
CSET write_width_b=8
|
||||||
|
# END Parameters
|
||||||
|
GENERATE
|
||||||
|
# CRC: b5ba28bc
|
||||||
|
|
||||||
24
coregen/monitorrom_blk_mem_gen_v2_6_xst_1_vhdl.prj
Executable file
24
coregen/monitorrom_blk_mem_gen_v2_6_xst_1_vhdl.prj
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_xst_comp.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_defaults.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_getinit_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_min_area_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_bindec.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_mux.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3adsp.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3adsp_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3a.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3a_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v5.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v5_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v4.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v4_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v2.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v2_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_width.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_generic_cstr.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_input_block.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_output_block.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_top.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_xst.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\monitorrom_blk_mem_gen_v2_6_xst_1.vhd"
|
||||||
9
coregen/monitorrom_flist.txt
Executable file
9
coregen/monitorrom_flist.txt
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
# Output products list for <monitorrom>
|
||||||
|
monitorrom.mif
|
||||||
|
monitorrom.ngc
|
||||||
|
monitorrom.vhd
|
||||||
|
monitorrom.vho
|
||||||
|
monitorrom.xco
|
||||||
|
monitorrom_blk_mem_gen_v2_6_xst_1_vhdl.prj
|
||||||
|
monitorrom_flist.txt
|
||||||
|
monitorrom_xmdf.tcl
|
||||||
45
coregen/monitorrom_readme.txt
Executable file
45
coregen/monitorrom_readme.txt
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
The following files were generated for 'monitorrom' in directory
|
||||||
|
C:\vhdl\nascom2_t80\coregen\:
|
||||||
|
|
||||||
|
monitorrom.mif:
|
||||||
|
Memory Initialization File which is automatically generated by the
|
||||||
|
CORE Generator System for some modules when a simulation flow is
|
||||||
|
specified. A MIF data file is used to support HDL functional
|
||||||
|
simulation of modules which use arrays of values.
|
||||||
|
|
||||||
|
monitorrom.ngc:
|
||||||
|
Binary Xilinx implementation netlist file containing the information
|
||||||
|
required to implement the module in a Xilinx (R) FPGA.
|
||||||
|
|
||||||
|
monitorrom.vhd:
|
||||||
|
VHDL wrapper file provided to support functional simulation. This
|
||||||
|
file contains simulation model customization data that is passed to
|
||||||
|
a parameterized simulation model for the core.
|
||||||
|
|
||||||
|
monitorrom.vho:
|
||||||
|
VHO template file containing code that can be used as a model for
|
||||||
|
instantiating a CORE Generator module in a VHDL design.
|
||||||
|
|
||||||
|
monitorrom.xco:
|
||||||
|
CORE Generator input file containing the parameters used to
|
||||||
|
regenerate a core.
|
||||||
|
|
||||||
|
monitorrom_blk_mem_gen_v2_6_xst_1_vhdl.prj:
|
||||||
|
Please see the core data sheet.
|
||||||
|
|
||||||
|
monitorrom_flist.txt:
|
||||||
|
Text file listing all of the output files produced when a customized
|
||||||
|
core was generated in the CORE Generator.
|
||||||
|
|
||||||
|
monitorrom_readme.txt:
|
||||||
|
Text file indicating the files generated and how they are used.
|
||||||
|
|
||||||
|
monitorrom_xmdf.tcl:
|
||||||
|
ISE Project Navigator interface file. ISE uses this file to determine
|
||||||
|
how the files output by CORE Generator for the core can be integrated
|
||||||
|
into your ISE project.
|
||||||
|
|
||||||
|
|
||||||
|
Please see the Xilinx CORE Generator online help for further details on
|
||||||
|
generated files and how to use them.
|
||||||
|
|
||||||
72
coregen/monitorrom_xmdf.tcl
Executable file
72
coregen/monitorrom_xmdf.tcl
Executable file
@@ -0,0 +1,72 @@
|
|||||||
|
# The package naming convention is <core_name>_xmdf
|
||||||
|
package provide monitorrom_xmdf 1.0
|
||||||
|
|
||||||
|
# This includes some utilities that support common XMDF operations
|
||||||
|
package require utilities_xmdf
|
||||||
|
|
||||||
|
# Define a namespace for this package. The name of the name space
|
||||||
|
# is <core_name>_xmdf
|
||||||
|
namespace eval ::monitorrom_xmdf {
|
||||||
|
# Use this to define any statics
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function called by client to rebuild the params and port arrays
|
||||||
|
# Optional when the use context does not require the param or ports
|
||||||
|
# arrays to be available.
|
||||||
|
proc ::monitorrom_xmdf::xmdfInit { instance } {
|
||||||
|
# Variable containg name of library into which module is compiled
|
||||||
|
# Recommendation: <module_name>
|
||||||
|
# Required
|
||||||
|
utilities_xmdf::xmdfSetData $instance Module Attributes Name monitorrom
|
||||||
|
}
|
||||||
|
# ::monitorrom_xmdf::xmdfInit
|
||||||
|
|
||||||
|
# Function called by client to fill in all the xmdf* data variables
|
||||||
|
# based on the current settings of the parameters
|
||||||
|
proc ::monitorrom_xmdf::xmdfApplyParams { instance } {
|
||||||
|
|
||||||
|
set fcount 0
|
||||||
|
# Array containing libraries that are assumed to exist
|
||||||
|
# Examples include unisim and xilinxcorelib
|
||||||
|
# Optional
|
||||||
|
# In this example, we assume that the unisim library will
|
||||||
|
# be magically
|
||||||
|
# available to the simulation and synthesis tool
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path monitorrom.mif
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path monitorrom.ngc
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path monitorrom.vhd
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path monitorrom.vho
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path monitorrom.xco
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path monitorrom_blk_mem_gen_v2_6_xst_1_vhdl.prj
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path monitorrom_xmdf.tcl
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module monitorrom
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# ::gen_comp_name_xmdf::xmdfApplyParams
|
||||||
3
coregen/ram2kx8.ngc
Executable file
3
coregen/ram2kx8.ngc
Executable file
File diff suppressed because one or more lines are too long
142
coregen/ram2kx8.vhd
Executable file
142
coregen/ram2kx8.vhd
Executable file
@@ -0,0 +1,142 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- You must compile the wrapper file ram2kx8.vhd when simulating
|
||||||
|
-- the core, ram2kx8. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
|
-- The synthesis directives "translate_off/translate_on" specified
|
||||||
|
-- below are supported by Xilinx, Mentor Graphics and Synplicity
|
||||||
|
-- synthesis tools. Ensure they are correct for your synthesis tool(s).
|
||||||
|
|
||||||
|
LIBRARY ieee;
|
||||||
|
USE ieee.std_logic_1164.ALL;
|
||||||
|
-- synthesis translate_off
|
||||||
|
Library XilinxCoreLib;
|
||||||
|
-- synthesis translate_on
|
||||||
|
ENTITY ram2kx8 IS
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
dina: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
ena: IN std_logic;
|
||||||
|
wea: IN std_logic_VECTOR(0 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0);
|
||||||
|
clkb: IN std_logic;
|
||||||
|
dinb: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
addrb: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
web: IN std_logic_VECTOR(0 downto 0);
|
||||||
|
doutb: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
END ram2kx8;
|
||||||
|
|
||||||
|
ARCHITECTURE ram2kx8_a OF ram2kx8 IS
|
||||||
|
-- synthesis translate_off
|
||||||
|
component wrapped_ram2kx8
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
dina: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
ena: IN std_logic;
|
||||||
|
wea: IN std_logic_VECTOR(0 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0);
|
||||||
|
clkb: IN std_logic;
|
||||||
|
dinb: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
addrb: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
web: IN std_logic_VECTOR(0 downto 0);
|
||||||
|
doutb: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- Configuration specification
|
||||||
|
for all : wrapped_ram2kx8 use entity XilinxCoreLib.blk_mem_gen_v2_6(behavioral)
|
||||||
|
generic map(
|
||||||
|
c_has_regceb => 0,
|
||||||
|
c_has_regcea => 0,
|
||||||
|
c_mem_type => 2,
|
||||||
|
c_prim_type => 1,
|
||||||
|
c_sinita_val => "0",
|
||||||
|
c_read_width_b => 8,
|
||||||
|
c_family => "spartan3",
|
||||||
|
c_read_width_a => 8,
|
||||||
|
c_disable_warn_bhv_coll => 0,
|
||||||
|
c_write_mode_b => "READ_FIRST",
|
||||||
|
c_init_file_name => "no_coe_file_loaded",
|
||||||
|
c_write_mode_a => "READ_FIRST",
|
||||||
|
c_mux_pipeline_stages => 0,
|
||||||
|
c_has_mem_output_regs_b => 0,
|
||||||
|
c_load_init_file => 0,
|
||||||
|
c_xdevicefamily => "spartan3a",
|
||||||
|
c_has_mem_output_regs_a => 0,
|
||||||
|
c_write_depth_b => 2048,
|
||||||
|
c_write_depth_a => 2048,
|
||||||
|
c_has_ssrb => 0,
|
||||||
|
c_has_mux_output_regs_b => 0,
|
||||||
|
c_has_ssra => 0,
|
||||||
|
c_has_mux_output_regs_a => 0,
|
||||||
|
c_addra_width => 11,
|
||||||
|
c_addrb_width => 11,
|
||||||
|
c_default_data => "0",
|
||||||
|
c_use_ecc => 0,
|
||||||
|
c_algorithm => 1,
|
||||||
|
c_disable_warn_bhv_range => 0,
|
||||||
|
c_write_width_b => 8,
|
||||||
|
c_write_width_a => 8,
|
||||||
|
c_read_depth_b => 2048,
|
||||||
|
c_read_depth_a => 2048,
|
||||||
|
c_byte_size => 9,
|
||||||
|
c_sim_collision_check => "ALL",
|
||||||
|
c_use_ramb16bwer_rst_bhv => 0,
|
||||||
|
c_common_clk => 0,
|
||||||
|
c_wea_width => 1,
|
||||||
|
c_has_enb => 0,
|
||||||
|
c_web_width => 1,
|
||||||
|
c_has_ena => 1,
|
||||||
|
c_sinitb_val => "0",
|
||||||
|
c_use_byte_web => 0,
|
||||||
|
c_use_byte_wea => 0,
|
||||||
|
c_use_default_data => 1);
|
||||||
|
-- synthesis translate_on
|
||||||
|
BEGIN
|
||||||
|
-- synthesis translate_off
|
||||||
|
U0 : wrapped_ram2kx8
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
dina => dina,
|
||||||
|
addra => addra,
|
||||||
|
ena => ena,
|
||||||
|
wea => wea,
|
||||||
|
douta => douta,
|
||||||
|
clkb => clkb,
|
||||||
|
dinb => dinb,
|
||||||
|
addrb => addrb,
|
||||||
|
web => web,
|
||||||
|
doutb => doutb);
|
||||||
|
-- synthesis translate_on
|
||||||
|
|
||||||
|
END ram2kx8_a;
|
||||||
|
|
||||||
72
coregen/ram2kx8.vho
Executable file
72
coregen/ram2kx8.vho
Executable file
@@ -0,0 +1,72 @@
|
|||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- This file is owned and controlled by Xilinx and must be used --
|
||||||
|
-- solely for design, simulation, implementation and creation of --
|
||||||
|
-- design files limited to Xilinx devices or technologies. Use --
|
||||||
|
-- with non-Xilinx devices or technologies is expressly prohibited --
|
||||||
|
-- and immediately terminates your license. --
|
||||||
|
-- --
|
||||||
|
-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" --
|
||||||
|
-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR --
|
||||||
|
-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION --
|
||||||
|
-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION --
|
||||||
|
-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS --
|
||||||
|
-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, --
|
||||||
|
-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE --
|
||||||
|
-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY --
|
||||||
|
-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE --
|
||||||
|
-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR --
|
||||||
|
-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF --
|
||||||
|
-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS --
|
||||||
|
-- FOR A PARTICULAR PURPOSE. --
|
||||||
|
-- --
|
||||||
|
-- Xilinx products are not intended for use in life support --
|
||||||
|
-- appliances, devices, or systems. Use in such applications are --
|
||||||
|
-- expressly prohibited. --
|
||||||
|
-- --
|
||||||
|
-- (c) Copyright 1995-2007 Xilinx, Inc. --
|
||||||
|
-- All rights reserved. --
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- The following code must appear in the VHDL architecture header:
|
||||||
|
|
||||||
|
------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG
|
||||||
|
component ram2kx8
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
dina: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
ena: IN std_logic;
|
||||||
|
wea: IN std_logic_VECTOR(0 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0);
|
||||||
|
clkb: IN std_logic;
|
||||||
|
dinb: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
addrb: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
web: IN std_logic_VECTOR(0 downto 0);
|
||||||
|
doutb: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- COMP_TAG_END ------ End COMPONENT Declaration ------------
|
||||||
|
|
||||||
|
-- The following code must appear in the VHDL architecture
|
||||||
|
-- body. Substitute your own instance name and net names.
|
||||||
|
|
||||||
|
------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG
|
||||||
|
your_instance_name : ram2kx8
|
||||||
|
port map (
|
||||||
|
clka => clka,
|
||||||
|
dina => dina,
|
||||||
|
addra => addra,
|
||||||
|
ena => ena,
|
||||||
|
wea => wea,
|
||||||
|
douta => douta,
|
||||||
|
clkb => clkb,
|
||||||
|
dinb => dinb,
|
||||||
|
addrb => addrb,
|
||||||
|
web => web,
|
||||||
|
doutb => doutb);
|
||||||
|
-- INST_TAG_END ------ End INSTANTIATION Template ------------
|
||||||
|
|
||||||
|
-- You must compile the wrapper file ram2kx8.vhd when simulating
|
||||||
|
-- the core, ram2kx8. When compiling the wrapper file, be sure to
|
||||||
|
-- reference the XilinxCoreLib VHDL simulation library. For detailed
|
||||||
|
-- instructions, please refer to the "CORE Generator Help".
|
||||||
|
|
||||||
78
coregen/ram2kx8.xco
Executable file
78
coregen/ram2kx8.xco
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# Xilinx Core Generator version J.40
|
||||||
|
# Date: Sat Jan 03 15:42:53 2009
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# This file contains the customisation parameters for a
|
||||||
|
# Xilinx CORE Generator IP GUI. It is strongly recommended
|
||||||
|
# that you do not manually alter this file as it may cause
|
||||||
|
# unexpected and unsupported behavior.
|
||||||
|
#
|
||||||
|
##############################################################
|
||||||
|
#
|
||||||
|
# BEGIN Project Options
|
||||||
|
SET addpads = False
|
||||||
|
SET asysymbol = False
|
||||||
|
SET busformat = BusFormatAngleBracketNotRipped
|
||||||
|
SET createndf = False
|
||||||
|
SET designentry = VHDL
|
||||||
|
SET device = xc3s700an
|
||||||
|
SET devicefamily = spartan3a
|
||||||
|
SET flowvendor = Other
|
||||||
|
SET formalverification = False
|
||||||
|
SET foundationsym = False
|
||||||
|
SET implementationfiletype = Ngc
|
||||||
|
SET package = fgg484
|
||||||
|
SET removerpms = False
|
||||||
|
SET simulationfiles = Behavioral
|
||||||
|
SET speedgrade = -4
|
||||||
|
SET verilogsim = False
|
||||||
|
SET vhdlsim = True
|
||||||
|
# END Project Options
|
||||||
|
# BEGIN Select
|
||||||
|
SELECT Block_Memory_Generator family Xilinx,_Inc. 2.6
|
||||||
|
# END Select
|
||||||
|
# BEGIN Parameters
|
||||||
|
CSET algorithm=Minimum_Area
|
||||||
|
CSET assume_synchronous_clk=false
|
||||||
|
CSET byte_size=9
|
||||||
|
CSET coe_file=no_coe_file_loaded
|
||||||
|
CSET collision_warnings=ALL
|
||||||
|
CSET component_name=ram2kx8
|
||||||
|
CSET disable_collision_warnings=false
|
||||||
|
CSET disable_out_of_range_warnings=false
|
||||||
|
CSET ecc=false
|
||||||
|
CSET enable_a=Use_ENA_Pin
|
||||||
|
CSET enable_b=Always_Enabled
|
||||||
|
CSET fill_remaining_memory_locations=true
|
||||||
|
CSET load_init_file=false
|
||||||
|
CSET memory_type=True_Dual_Port_RAM
|
||||||
|
CSET operating_mode_a=READ_FIRST
|
||||||
|
CSET operating_mode_b=READ_FIRST
|
||||||
|
CSET output_reset_value_a=0
|
||||||
|
CSET output_reset_value_b=0
|
||||||
|
CSET pipeline_stages=0
|
||||||
|
CSET primitive=8kx2
|
||||||
|
CSET read_width_a=8
|
||||||
|
CSET read_width_b=8
|
||||||
|
CSET register_porta_output_of_memory_core=false
|
||||||
|
CSET register_porta_output_of_memory_primitives=false
|
||||||
|
CSET register_portb_output_of_memory_core=false
|
||||||
|
CSET register_portb_output_of_memory_primitives=false
|
||||||
|
CSET remaining_memory_locations=0
|
||||||
|
CSET single_bit_ecc=false
|
||||||
|
CSET use_byte_write_enable=false
|
||||||
|
CSET use_ramb16bwer_reset_behavior=false
|
||||||
|
CSET use_regcea_pin=false
|
||||||
|
CSET use_regceb_pin=false
|
||||||
|
CSET use_ssra_pin=false
|
||||||
|
CSET use_ssrb_pin=false
|
||||||
|
CSET write_depth_a=2048
|
||||||
|
CSET write_width_a=8
|
||||||
|
CSET write_width_b=8
|
||||||
|
# END Parameters
|
||||||
|
GENERATE
|
||||||
|
# CRC: bde5567c
|
||||||
|
|
||||||
24
coregen/ram2kx8_blk_mem_gen_v2_6_xst_1_vhdl.prj
Executable file
24
coregen/ram2kx8_blk_mem_gen_v2_6_xst_1_vhdl.prj
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_xst_comp.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_defaults.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_getinit_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_min_area_pkg.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_bindec.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_mux.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3adsp.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3adsp_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3a.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_s3a_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v5.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v5_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v4.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v4_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v2.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_wrapper_v2_init.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_prim_width.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_generic_cstr.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_input_block.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_output_block.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_top.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\blk_mem_gen_v2_6\blk_mem_gen_v2_6_xst.vhd"
|
||||||
|
vhdl blk_mem_gen_v2_6 "c:\vhdl\nascom2\coregen\tmp\_cg\_bbx\ram2kx8_blk_mem_gen_v2_6_xst_1.vhd"
|
||||||
8
coregen/ram2kx8_flist.txt
Executable file
8
coregen/ram2kx8_flist.txt
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
# Output products list for <ram2kx8>
|
||||||
|
ram2kx8.ngc
|
||||||
|
ram2kx8.vhd
|
||||||
|
ram2kx8.vho
|
||||||
|
ram2kx8.xco
|
||||||
|
ram2kx8_blk_mem_gen_v2_6_xst_1_vhdl.prj
|
||||||
|
ram2kx8_flist.txt
|
||||||
|
ram2kx8_xmdf.tcl
|
||||||
39
coregen/ram2kx8_readme.txt
Executable file
39
coregen/ram2kx8_readme.txt
Executable file
@@ -0,0 +1,39 @@
|
|||||||
|
The following files were generated for 'ram2kx8' in directory
|
||||||
|
C:\vhdl\nascom2_t80\coregen\:
|
||||||
|
|
||||||
|
ram2kx8.ngc:
|
||||||
|
Binary Xilinx implementation netlist file containing the information
|
||||||
|
required to implement the module in a Xilinx (R) FPGA.
|
||||||
|
|
||||||
|
ram2kx8.vhd:
|
||||||
|
VHDL wrapper file provided to support functional simulation. This
|
||||||
|
file contains simulation model customization data that is passed to
|
||||||
|
a parameterized simulation model for the core.
|
||||||
|
|
||||||
|
ram2kx8.vho:
|
||||||
|
VHO template file containing code that can be used as a model for
|
||||||
|
instantiating a CORE Generator module in a VHDL design.
|
||||||
|
|
||||||
|
ram2kx8.xco:
|
||||||
|
CORE Generator input file containing the parameters used to
|
||||||
|
regenerate a core.
|
||||||
|
|
||||||
|
ram2kx8_blk_mem_gen_v2_6_xst_1_vhdl.prj:
|
||||||
|
Please see the core data sheet.
|
||||||
|
|
||||||
|
ram2kx8_flist.txt:
|
||||||
|
Text file listing all of the output files produced when a customized
|
||||||
|
core was generated in the CORE Generator.
|
||||||
|
|
||||||
|
ram2kx8_readme.txt:
|
||||||
|
Text file indicating the files generated and how they are used.
|
||||||
|
|
||||||
|
ram2kx8_xmdf.tcl:
|
||||||
|
ISE Project Navigator interface file. ISE uses this file to determine
|
||||||
|
how the files output by CORE Generator for the core can be integrated
|
||||||
|
into your ISE project.
|
||||||
|
|
||||||
|
|
||||||
|
Please see the Xilinx CORE Generator online help for further details on
|
||||||
|
generated files and how to use them.
|
||||||
|
|
||||||
68
coregen/ram2kx8_xmdf.tcl
Executable file
68
coregen/ram2kx8_xmdf.tcl
Executable file
@@ -0,0 +1,68 @@
|
|||||||
|
# The package naming convention is <core_name>_xmdf
|
||||||
|
package provide ram2kx8_xmdf 1.0
|
||||||
|
|
||||||
|
# This includes some utilities that support common XMDF operations
|
||||||
|
package require utilities_xmdf
|
||||||
|
|
||||||
|
# Define a namespace for this package. The name of the name space
|
||||||
|
# is <core_name>_xmdf
|
||||||
|
namespace eval ::ram2kx8_xmdf {
|
||||||
|
# Use this to define any statics
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function called by client to rebuild the params and port arrays
|
||||||
|
# Optional when the use context does not require the param or ports
|
||||||
|
# arrays to be available.
|
||||||
|
proc ::ram2kx8_xmdf::xmdfInit { instance } {
|
||||||
|
# Variable containg name of library into which module is compiled
|
||||||
|
# Recommendation: <module_name>
|
||||||
|
# Required
|
||||||
|
utilities_xmdf::xmdfSetData $instance Module Attributes Name ram2kx8
|
||||||
|
}
|
||||||
|
# ::ram2kx8_xmdf::xmdfInit
|
||||||
|
|
||||||
|
# Function called by client to fill in all the xmdf* data variables
|
||||||
|
# based on the current settings of the parameters
|
||||||
|
proc ::ram2kx8_xmdf::xmdfApplyParams { instance } {
|
||||||
|
|
||||||
|
set fcount 0
|
||||||
|
# Array containing libraries that are assumed to exist
|
||||||
|
# Examples include unisim and xilinxcorelib
|
||||||
|
# Optional
|
||||||
|
# In this example, we assume that the unisim library will
|
||||||
|
# be magically
|
||||||
|
# available to the simulation and synthesis tool
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path ram2kx8.ngc
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path ram2kx8.vhd
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path ram2kx8.vho
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path ram2kx8.xco
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path ram2kx8_blk_mem_gen_v2_6_xst_1_vhdl.prj
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path ram2kx8_xmdf.tcl
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module ram2kx8
|
||||||
|
incr fcount
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# ::gen_comp_name_xmdf::xmdfApplyParams
|
||||||
49
dcm_in50_sim.vhd
Executable file
49
dcm_in50_sim.vhd
Executable file
@@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
library ieee;
|
||||||
|
use ieee.std_logic_1164.all;
|
||||||
|
use ieee.std_logic_arith.all;
|
||||||
|
use ieee.std_logic_unsigned.all;
|
||||||
|
|
||||||
|
|
||||||
|
entity dcm_in50 is
|
||||||
|
|
||||||
|
port (
|
||||||
|
CLKIN_IN : in std_logic;
|
||||||
|
RST_IN : in std_logic;
|
||||||
|
CLKFX_OUT : out std_logic;
|
||||||
|
CLKIN_IBUFG_OUT : out std_logic;
|
||||||
|
CLK0_OUT : out std_logic;
|
||||||
|
LOCKED_OUT : out std_logic);
|
||||||
|
|
||||||
|
end dcm_in50;
|
||||||
|
|
||||||
|
architecture Behavioral of dcm_in50 is
|
||||||
|
|
||||||
|
begin -- Behavioral
|
||||||
|
|
||||||
|
LOCKED_OUT <= '1';
|
||||||
|
CLKIN_IBUFG_OUT <= CLKIN_IN;
|
||||||
|
|
||||||
|
process
|
||||||
|
begin
|
||||||
|
wait until CLKIN_IN = '1';
|
||||||
|
while true loop
|
||||||
|
CLK0_OUT <= '1';
|
||||||
|
wait for 20 ns;
|
||||||
|
CLK0_OUT <= '0';
|
||||||
|
wait for 20 ns;
|
||||||
|
end loop;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
process
|
||||||
|
begin
|
||||||
|
wait until CLKIN_IN = '1';
|
||||||
|
while true loop
|
||||||
|
CLKFX_OUT <= '1';
|
||||||
|
wait for 31.25 ns;
|
||||||
|
CLKFX_OUT <= '0';
|
||||||
|
wait for 31.25 ns;
|
||||||
|
end loop;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
end Behavioral;
|
||||||
72
fifo16x8.vhd
Executable file
72
fifo16x8.vhd
Executable file
@@ -0,0 +1,72 @@
|
|||||||
|
----------------------------------------------------------------------------------
|
||||||
|
-- Company:
|
||||||
|
-- Engineer:
|
||||||
|
--
|
||||||
|
-- Create Date: 14:10:50 12/28/2008
|
||||||
|
-- Design Name:
|
||||||
|
-- Module Name: fifo16x8 - Behavioral
|
||||||
|
-- Project Name:
|
||||||
|
-- Target Devices:
|
||||||
|
-- Tool versions:
|
||||||
|
-- Description:
|
||||||
|
--
|
||||||
|
-- Dependencies:
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- Revision 0.01 - File Created
|
||||||
|
-- Additional Comments:
|
||||||
|
--
|
||||||
|
----------------------------------------------------------------------------------
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.STD_LOGIC_1164.ALL;
|
||||||
|
use IEEE.STD_LOGIC_ARITH.ALL;
|
||||||
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
||||||
|
|
||||||
|
---- Uncomment the following library declaration if instantiating
|
||||||
|
---- any Xilinx primitives in this code.
|
||||||
|
library UNISIM;
|
||||||
|
use UNISIM.VComponents.all;
|
||||||
|
|
||||||
|
entity fifo16x8 is
|
||||||
|
Port ( DATAIN : in STD_LOGIC_VECTOR (7 downto 0);
|
||||||
|
WRITESTB : in STD_LOGIC;
|
||||||
|
DATAOUT : out STD_LOGIC_VECTOR (7 downto 0);
|
||||||
|
READSTB : in STD_LOGIC;
|
||||||
|
CLK : in STD_LOGIC;
|
||||||
|
FULL : out STD_LOGIC;
|
||||||
|
EMPTY : out STD_LOGIC);
|
||||||
|
end fifo16x8;
|
||||||
|
|
||||||
|
architecture Behavioral of fifo16x8 is
|
||||||
|
signal counter: std_logic_vector(3 downto 0) := "1111";
|
||||||
|
begin
|
||||||
|
|
||||||
|
shift: for i in 0 to 7 generate
|
||||||
|
srl16e_inst: SRL16E port map(
|
||||||
|
Q => DATAOUT(i),
|
||||||
|
A0 => counter(0),
|
||||||
|
A1 => counter(1),
|
||||||
|
A2 => counter(2),
|
||||||
|
A3 => counter(3),
|
||||||
|
CE => WRITESTB,
|
||||||
|
CLK => CLK,
|
||||||
|
D => DATAIN(i));
|
||||||
|
end generate;
|
||||||
|
|
||||||
|
fifo: process(CLK)
|
||||||
|
begin
|
||||||
|
if rising_edge(CLK) then
|
||||||
|
if (WRITESTB = '0') and (READSTB = '1') then
|
||||||
|
counter <= counter - 1;
|
||||||
|
elsif (WRITESTB = '1') and (READSTB = '0') then
|
||||||
|
counter <= counter + 1;
|
||||||
|
else
|
||||||
|
counter <= counter;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
FULL <= '1' when counter = "1110" else '0';
|
||||||
|
EMPTY <= '1' when counter = "1111" else '0';
|
||||||
|
end Behavioral;
|
||||||
|
|
||||||
1901
kcpsm3.vhd
Executable file
1901
kcpsm3.vhd
Executable file
File diff suppressed because it is too large
Load Diff
206
keyboard.vhd
Executable file
206
keyboard.vhd
Executable file
@@ -0,0 +1,206 @@
|
|||||||
|
----------------------------------------------------------------------------------
|
||||||
|
-- Company:
|
||||||
|
-- Engineer:
|
||||||
|
--
|
||||||
|
-- Create Date: 15:52:22 12/30/2008
|
||||||
|
-- Design Name:
|
||||||
|
-- Module Name: toplevel - Behavioral
|
||||||
|
-- Project Name:
|
||||||
|
-- Target Devices:
|
||||||
|
-- Tool versions:
|
||||||
|
-- Description:
|
||||||
|
--
|
||||||
|
-- Dependencies:
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- Revision 0.01 - File Created
|
||||||
|
-- Additional Comments:
|
||||||
|
--
|
||||||
|
----------------------------------------------------------------------------------
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.STD_LOGIC_1164.ALL;
|
||||||
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
||||||
|
use IEEE.NUMERIC_STD.ALL;
|
||||||
|
|
||||||
|
---- Uncomment the following library declaration if instantiating
|
||||||
|
---- any Xilinx primitives in this code.
|
||||||
|
library UNISIM;
|
||||||
|
use UNISIM.VComponents.all;
|
||||||
|
|
||||||
|
entity keyboard is
|
||||||
|
|
||||||
|
port (
|
||||||
|
-- PS/2 Interface
|
||||||
|
PS2_CLK : inout std_logic;
|
||||||
|
PS2_DATA : inout std_logic;
|
||||||
|
-- Z80 interface
|
||||||
|
CLK_16M : in std_logic;
|
||||||
|
IORQ_n : in std_logic;
|
||||||
|
RD_n, WR_n : in std_logic;
|
||||||
|
DATA_I : in std_logic_vector(7 downto 0);
|
||||||
|
DATA_O : out std_logic_vector(7 downto 0);
|
||||||
|
-- DEBUG
|
||||||
|
DEBUG : out std_logic_vector(7 downto 0)
|
||||||
|
-- DEBUGLED : out std_logic_vector(7 downto 0)
|
||||||
|
);
|
||||||
|
|
||||||
|
end keyboard;
|
||||||
|
|
||||||
|
architecture Behavioral of keyboard is
|
||||||
|
type states is (ST_RESET, ST_IDLE, ST_READ, ST_PARITY, ST_ERROR, ST_STOP);
|
||||||
|
signal state : states := ST_RESET;
|
||||||
|
signal parity_r, up_r, ext_r : std_logic := '0';
|
||||||
|
signal key_in_r : std_logic_vector(7 downto 0);
|
||||||
|
signal count : unsigned(2 downto 0);
|
||||||
|
type line_lut_t is array (0 to 255) of integer range 0 to 9;
|
||||||
|
type bit_lut_t is array (0 to 255) of integer range 0 to 7;
|
||||||
|
signal line_lut : line_lut_t;
|
||||||
|
signal bit_lut : bit_lut_t;
|
||||||
|
|
||||||
|
signal ps2clk_s, ps2data_s : std_logic_vector(2 downto 0) := "111";
|
||||||
|
signal debug_evt_counter : std_logic_vector(7 downto 0) := X"00";
|
||||||
|
|
||||||
|
type key_buffer_t is array (0 to 9) of std_logic_vector(7 downto 0);
|
||||||
|
signal key_buffer : key_buffer_t;
|
||||||
|
signal keyb_row_r : unsigned(3 downto 0) := to_unsigned(0, 4);
|
||||||
|
signal lastin_r : std_logic_vector(1 downto 0) := "00";
|
||||||
|
begin -- Behavioral
|
||||||
|
-- 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
||||||
|
line_lut <= (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, -- 0_
|
||||||
|
0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 2, 3, 4, 4, 6, 0, -- 1_
|
||||||
|
0, 7, 1, 2, 3, 7, 5, 0, 0, 7, 7, 1, 1, 7, 1, 0, -- 2_
|
||||||
|
0, 2, 1, 1, 7, 2, 2, 0, 0, 0, 3, 2, 3, 3, 4, 0, -- 3_
|
||||||
|
|
||||||
|
0, 4, 3, 4, 5, 6, 5, 0, 0, 5, 6, 4, 5, 6, 8, 0, -- 4_
|
||||||
|
0, 0, 6, 0, 6, 0, 0, 0, 0, 0, 8, 7, 0, 5, 0, 0, -- 5_
|
||||||
|
0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- 6_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- 7_
|
||||||
|
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 0_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 1_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 2_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 3_
|
||||||
|
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 4_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 5_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, -- e0 6_
|
||||||
|
0, 0, 3, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); -- e0 7_
|
||||||
|
|
||||||
|
-- 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
||||||
|
bit_lut <= (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, -- 0_
|
||||||
|
0, 0, 4, 0, 0, 4, 4, 0, 0, 0, 5, 4, 4, 3, 3, 0, -- 1_
|
||||||
|
0, 3, 4, 3, 3, 2, 3, 0, 0, 4, 1, 3, 5, 5, 2, 0, -- 2_
|
||||||
|
0, 1, 1, 0, 0, 4, 2, 0, 0, 0, 1, 0, 5, 2, 2, 0, -- 3_
|
||||||
|
|
||||||
|
0, 1, 0, 5, 5, 2, 2, 0, 0, 1, 1, 0, 0, 5, 2, 0, -- 4_
|
||||||
|
0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 1, 6, 0, 6, 0, 0, -- 5_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- 6_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- 7_
|
||||||
|
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 0_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 1_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 2_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 3_
|
||||||
|
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 4_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- e0 5_
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, -- e0 6_
|
||||||
|
0, 0, 6, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); -- e0 7_
|
||||||
|
|
||||||
|
z80bus: process(CLK_16M)
|
||||||
|
begin
|
||||||
|
if rising_edge(CLK_16M) then
|
||||||
|
if (IORQ_n = '0') and (WR_n = '0') then
|
||||||
|
if (DATA_I(0) = '0') and (lastin_r(0) = '1') then
|
||||||
|
if keyb_row_r < 9 then
|
||||||
|
keyb_row_r <= keyb_row_r + 1;
|
||||||
|
end if;
|
||||||
|
elsif (DATA_I(1) = '0') and (lastin_r(1) = '1') then
|
||||||
|
keyb_row_r <= to_unsigned(0, keyb_row_r'length);
|
||||||
|
end if;
|
||||||
|
lastin_r <= DATA_I(1 downto 0);
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
DATA_O <= key_buffer(to_integer(keyb_row_r));
|
||||||
|
|
||||||
|
process (CLK_16M)
|
||||||
|
begin
|
||||||
|
if rising_edge(CLK_16M) then
|
||||||
|
ps2clk_s <= ps2clk_s(1 downto 0) & PS2_CLK;
|
||||||
|
ps2data_s <= ps2data_s(1 downto 0) & PS2_DATA;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
fsm: process (CLK_16M)
|
||||||
|
variable next_state : states;
|
||||||
|
variable line_v : integer range 0 to 8;
|
||||||
|
variable bit_v : integer range 0 to 7;
|
||||||
|
begin
|
||||||
|
if rising_edge(CLK_16M) then
|
||||||
|
next_state := state;
|
||||||
|
case state is
|
||||||
|
when ST_RESET =>
|
||||||
|
key_buffer <= (X"FF", X"FF", X"FF", X"FF",
|
||||||
|
X"FF", X"FF", X"FF", X"FF",
|
||||||
|
X"FF", X"FF");
|
||||||
|
next_state := ST_IDLE;
|
||||||
|
when ST_IDLE =>
|
||||||
|
if (ps2clk_s(2) = '1') and (ps2clk_s(1) = '0') then -- falling edge
|
||||||
|
if ps2data_s(2) = '0' then
|
||||||
|
count <= to_unsigned(0, count'length);
|
||||||
|
parity_r <= '0';
|
||||||
|
next_state := ST_READ;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
when ST_READ =>
|
||||||
|
if (ps2clk_s(2) = '1') and (ps2clk_s(1) = '0') then -- falling edge
|
||||||
|
key_in_r(to_integer(count)) <= ps2data_s(2);
|
||||||
|
parity_r <= parity_r xor ps2data_s(2);
|
||||||
|
if count = 7 then
|
||||||
|
next_state := ST_PARITY;
|
||||||
|
else
|
||||||
|
count <= count + 1;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
when ST_PARITY =>
|
||||||
|
if (ps2clk_s(2) = '1') and (ps2clk_s(1) = '0') then -- falling edge
|
||||||
|
if parity_r = ps2data_s(2) then
|
||||||
|
-- ext_r <= '0';
|
||||||
|
-- up_r <= '0';
|
||||||
|
next_state := ST_ERROR;
|
||||||
|
else
|
||||||
|
if key_in_r = X"E0" then
|
||||||
|
ext_r <= '1';
|
||||||
|
elsif key_in_r = X"F0" then
|
||||||
|
up_r <= '1';
|
||||||
|
else
|
||||||
|
-- process key code
|
||||||
|
line_v := line_lut(conv_integer(ext_r & key_in_r(6 downto 0)));
|
||||||
|
bit_v := bit_lut(conv_integer(ext_r & key_in_r(6 downto 0)));
|
||||||
|
if not ((line_v = 0) and (bit_v = 0)) then
|
||||||
|
key_buffer(line_v)(bit_v) <= up_r;
|
||||||
|
end if;
|
||||||
|
ext_r <= '0';
|
||||||
|
up_r <= '0';
|
||||||
|
end if;
|
||||||
|
next_state := ST_STOP;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
when ST_ERROR =>
|
||||||
|
debug_evt_counter <= debug_evt_counter + 1;
|
||||||
|
next_state := ST_IDLE;
|
||||||
|
when ST_STOP =>
|
||||||
|
next_state := ST_IDLE;
|
||||||
|
when others => null;
|
||||||
|
end case;
|
||||||
|
state <= next_state;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
-- DEBUGLED <= debug_evt_counter;
|
||||||
|
|
||||||
|
PS2_CLK <= 'Z';
|
||||||
|
PS2_DATA <= 'Z';
|
||||||
|
end Behavioral;
|
||||||
128
memory.vhd
Executable file
128
memory.vhd
Executable file
@@ -0,0 +1,128 @@
|
|||||||
|
----------------------------------------------------------------------------------
|
||||||
|
-- Company:
|
||||||
|
-- Engineer:
|
||||||
|
--
|
||||||
|
-- Create Date: 15:22:46 12/30/2008
|
||||||
|
-- Design Name:
|
||||||
|
-- Module Name: memory - Behavioral
|
||||||
|
-- Project Name:
|
||||||
|
-- Target Devices:
|
||||||
|
-- Tool versions:
|
||||||
|
-- Description:
|
||||||
|
--
|
||||||
|
-- Dependencies:
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- Revision 0.01 - File Created
|
||||||
|
-- Additional Comments:
|
||||||
|
--
|
||||||
|
----------------------------------------------------------------------------------
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.STD_LOGIC_1164.ALL;
|
||||||
|
use IEEE.STD_LOGIC_ARITH.ALL;
|
||||||
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
||||||
|
|
||||||
|
---- Uncomment the following library declaration if instantiating
|
||||||
|
---- any Xilinx primitives in this code.
|
||||||
|
--library UNISIM;
|
||||||
|
--use UNISIM.VComponents.all;
|
||||||
|
|
||||||
|
entity memory is
|
||||||
|
Port (
|
||||||
|
-- interface to Z80 bus
|
||||||
|
DATA_I : in STD_LOGIC_VECTOR (7 downto 0);
|
||||||
|
DATA_O : out STD_LOGIC_VECTOR (7 downto 0);
|
||||||
|
ADDR_I : in STD_LOGIC_VECTOR (15 downto 0);
|
||||||
|
RD_N : in STD_LOGIC;
|
||||||
|
WR_N : in STD_LOGIC;
|
||||||
|
MREQ_N : in STD_LOGIC;
|
||||||
|
CLK : in STD_LOGIC;
|
||||||
|
CLKEN : in STD_LOGIC;
|
||||||
|
-- interface to video generator
|
||||||
|
VID_DATA_O : out STD_LOGIC_VECTOR(7 downto 0);
|
||||||
|
VID_ADDR_I : in STD_LOGIC_VECTOR(9 downto 0);
|
||||||
|
VID_CLK : in STD_LOGIC);
|
||||||
|
end memory;
|
||||||
|
|
||||||
|
architecture Behavioral of memory is
|
||||||
|
component monitorrom IS
|
||||||
|
port ( clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0);
|
||||||
|
ena: in std_logic);
|
||||||
|
END component;
|
||||||
|
|
||||||
|
component basic_rom
|
||||||
|
port (
|
||||||
|
clka : IN std_logic;
|
||||||
|
addra : IN std_logic_VECTOR(12 downto 0);
|
||||||
|
douta : OUT std_logic_VECTOR(7 downto 0);
|
||||||
|
ena : in std_logic);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component ram2kx8 IS
|
||||||
|
port ( clka: IN std_logic;
|
||||||
|
dina: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
addra: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
wea: IN std_logic_VECTOR(0 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0);
|
||||||
|
ena: in std_logic;
|
||||||
|
clkb: IN std_logic;
|
||||||
|
dinb: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
addrb: IN std_logic_VECTOR(10 downto 0);
|
||||||
|
web: IN std_logic_VECTOR(0 downto 0);
|
||||||
|
doutb: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
END component;
|
||||||
|
|
||||||
|
signal monitorrom_data, basicrom_data, ram2kx8_1_dout, ram2kx8_2_dout, ram2kx8_1_doutb: std_logic_vector(7 downto 0);
|
||||||
|
signal ram2kx8_1_addrb : std_logic_vector(10 downto 0);
|
||||||
|
signal ram2kx8_1_we, ram2kx8_2_we: std_logic_vector(0 downto 0);
|
||||||
|
begin
|
||||||
|
monitorrom_inst: monitorrom port map( clka => CLK,
|
||||||
|
addra => ADDR_I(10 downto 0),
|
||||||
|
douta => monitorrom_data,
|
||||||
|
ena => CLKEN);
|
||||||
|
|
||||||
|
basicrom_inst : basic_rom port map (
|
||||||
|
clka => CLK,
|
||||||
|
addra => ADDR_I(12 downto 0),
|
||||||
|
douta => basicrom_data,
|
||||||
|
ena => CLKEN);
|
||||||
|
|
||||||
|
ram2kx8_1_we(0) <= '1' when (WR_N = '0') and (ADDR_I(15 downto 11) = "00001") and (MREQ_N = '0') else '0';
|
||||||
|
ram2kx8_2_we(0) <= '1' when (WR_N = '0') and (ADDR_I(15 downto 11) = "00010") and (MREQ_N = '0') else '0';
|
||||||
|
ram2kx8_1_addrb <= '0' & VID_ADDR_I;
|
||||||
|
|
||||||
|
ram2kx8_inst_1: ram2kx8 port map( clka => CLK,
|
||||||
|
dina => DATA_I,
|
||||||
|
addra => ADDR_I(10 downto 0),
|
||||||
|
wea => ram2kx8_1_we,
|
||||||
|
douta => ram2kx8_1_dout,
|
||||||
|
ena => CLKEN,
|
||||||
|
clkb => VID_CLK,
|
||||||
|
dinb => "00000000",
|
||||||
|
addrb => ram2kx8_1_addrb,
|
||||||
|
web => "0",
|
||||||
|
doutb => ram2kx8_1_doutb);
|
||||||
|
|
||||||
|
ram2kx8_inst_2: ram2kx8 port map( clka => CLK,
|
||||||
|
dina => DATA_I,
|
||||||
|
addra => ADDR_I(10 downto 0),
|
||||||
|
wea => ram2kx8_2_we,
|
||||||
|
douta => ram2kx8_2_dout,
|
||||||
|
ena => CLKEN,
|
||||||
|
clkb => VID_CLK,
|
||||||
|
dinb => "00000000",
|
||||||
|
addrb => "00000000000",
|
||||||
|
web => "0",
|
||||||
|
doutb => open);
|
||||||
|
|
||||||
|
DATA_O <= monitorrom_data when ADDR_I(15 downto 11) = "00000" else
|
||||||
|
ram2kx8_1_dout when ADDR_I(15 downto 11) = "00001" else
|
||||||
|
ram2kx8_2_dout when ADDR_I(15 downto 11) = "00010" else
|
||||||
|
basicrom_data when ADDR_I(15 downto 13) = "111" else
|
||||||
|
"XXXXXXXX";
|
||||||
|
|
||||||
|
VID_DATA_O <= ram2kx8_1_doutb;
|
||||||
|
end Behavioral;
|
||||||
|
|
||||||
23
nascom2.prj
Executable file
23
nascom2.prj
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
vhdl work memory.vhd
|
||||||
|
vhdl work coregen/charrom.vhd
|
||||||
|
vhdl work coregen/monitorrom.vhd
|
||||||
|
vhdl work coregen/basic_rom.vhd
|
||||||
|
vhdl work coregen/ram2kx8.vhd
|
||||||
|
vhdl work coregen/dcm_in50.vhd
|
||||||
|
vhdl work toplevel.vhd
|
||||||
|
vhdl work T80a.vhd
|
||||||
|
vhdl work T80.vhd
|
||||||
|
vhdl work T80_ALU.vhd
|
||||||
|
vhdl work T80_MCode.vhd
|
||||||
|
vhdl work T80_RegX.vhd
|
||||||
|
vhdl work T80_Pack.vhd
|
||||||
|
vhdl work T80se.vhd
|
||||||
|
vhdl work video.vhd
|
||||||
|
vhdl work videogen.vhd
|
||||||
|
vhdl work syncgen.vhd
|
||||||
|
vhdl work keyboard.vhd
|
||||||
|
vhdl work uart.vhd
|
||||||
|
vhdl work kcpsm3.vhd
|
||||||
|
vhdl work uartprog.vhd
|
||||||
|
vhdl work fifo16x8.vhd
|
||||||
|
vhdl work spi.vhd
|
||||||
159
nascom2.ucf
Executable file
159
nascom2.ucf
Executable file
@@ -0,0 +1,159 @@
|
|||||||
|
###################################################
|
||||||
|
# TIMING CONSTRAINTS
|
||||||
|
###################################################
|
||||||
|
# System Clock
|
||||||
|
NET "CLKIN_50M" LOC = "E12"| IOSTANDARD = LVCMOS33;
|
||||||
|
NET "CLKIN_50M" PERIOD = 20 ns HIGH 40 %;
|
||||||
|
#NET "CLKIN_50M" TNM_NET = "CLKIN_50M";
|
||||||
|
# VGA
|
||||||
|
INST "BLUE<0>" TNM = "VGA";
|
||||||
|
INST "BLUE<1>" TNM = "VGA";
|
||||||
|
INST "BLUE<2>" TNM = "VGA";
|
||||||
|
INST "BLUE<3>" TNM = "VGA";
|
||||||
|
INST "GREEN<0>" TNM = "VGA";
|
||||||
|
INST "GREEN<1>" TNM = "VGA";
|
||||||
|
INST "GREEN<2>" TNM = "VGA";
|
||||||
|
INST "GREEN<3>" TNM = "VGA";
|
||||||
|
INST "HSYNC" TNM = "VGA";
|
||||||
|
INST "RED<0>" TNM = "VGA";
|
||||||
|
INST "RED<1>" TNM = "VGA";
|
||||||
|
INST "RED<2>" TNM = "VGA";
|
||||||
|
INST "RED<3>" TNM = "VGA";
|
||||||
|
INST "VSYNC" TNM = "VGA";
|
||||||
|
TIMEGRP "VGA" OFFSET = OUT 5.2 ns AFTER "CLKIN_50M" ;
|
||||||
|
# Z80 BUS
|
||||||
|
#INST "ADDR<0>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<1>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<10>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<11>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<12>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<13>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<14>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<15>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<2>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<3>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<4>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<5>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<6>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<7>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<8>" TNM = "Z80BUS";
|
||||||
|
#INST "ADDR<9>" TNM = "Z80BUS";
|
||||||
|
#INST "BUSAK_n" TNM = "Z80BUS";
|
||||||
|
#INST "BUSRQ_n" TNM = "Z80BUS";
|
||||||
|
#INST "DATA<0>" TNM = "Z80BUS";
|
||||||
|
#INST "DATA<1>" TNM = "Z80BUS";
|
||||||
|
#INST "DATA<2>" TNM = "Z80BUS";
|
||||||
|
#INST "DATA<3>" TNM = "Z80BUS";
|
||||||
|
#INST "DATA<4>" TNM = "Z80BUS";
|
||||||
|
#INST "DATA<5>" TNM = "Z80BUS";
|
||||||
|
#INST "DATA<6>" TNM = "Z80BUS";
|
||||||
|
#INST "DATA<7>" TNM = "Z80BUS";
|
||||||
|
#INST "HALT_n" TNM = "Z80BUS";
|
||||||
|
#INST "INT_n" TNM = "Z80BUS";
|
||||||
|
#INST "IORQ_n" TNM = "Z80BUS";
|
||||||
|
#INST "M1_n" TNM = "Z80BUS";
|
||||||
|
#INST "NMI_n" TNM = "Z80BUS";
|
||||||
|
#INST "RD_n" TNM = "Z80BUS";
|
||||||
|
#INST "RFSH_n" TNM = "Z80BUS";
|
||||||
|
#INST "WAIT_n" TNM = "Z80BUS";
|
||||||
|
#INST "WR_n" TNM = "Z80BUS";
|
||||||
|
#TIMEGRP "Z80BUS" OFFSET = IN 10 ns BEFORE "CLKIN_50M" ;
|
||||||
|
#TIMEGRP "Z80BUS" OFFSET = OUT 10 ns AFTER "CLKIN_50M" ;
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
# LOCATION CONSTRAINTS
|
||||||
|
###################################################
|
||||||
|
# For S3AN-Board
|
||||||
|
# VGA
|
||||||
|
NET "RED<3>" LOC = "C8" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "RED<2>" LOC = "B8" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "RED<1>" LOC = "B3" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "RED<0>" LOC = "A3" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "GREEN<3>" LOC = "D6" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "GREEN<2>" LOC = "C6" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "GREEN<1>" LOC = "D5" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "GREEN<0>" LOC = "C5" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "BLUE<3>" LOC = "C9" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "BLUE<2>" LOC = "B9" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "BLUE<1>" LOC = "D7" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "BLUE<0>" LOC = "C7" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "HSYNC" LOC = "C11" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
NET "VSYNC" LOC = "B11" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST ;
|
||||||
|
# Z80BUS -> FX2 connector
|
||||||
|
#NET "ADDR<0>" LOC = "A13" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<1>" LOC = "B13" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<2>" LOC = "A14" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<3>" LOC = "B15" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<4>" LOC = "A15" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<5>" LOC = "A16" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<6>" LOC = "A17" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<7>" LOC = "B17" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<8>" LOC = "A18" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<9>" LOC = "C18" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<10>" LOC = "A19" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<11>" LOC = "B19" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<12>" LOC = "A20" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<13>" LOC = "B20" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<14>" LOC = "C19" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "ADDR<15>" LOC = "D19" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "DATA<0>" LOC = "D18" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "DATA<1>" LOC = "E17" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "DATA<2>" LOC = "D20" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "DATA<3>" LOC = "D21" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "DATA<4>" LOC = "D22" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "DATA<5>" LOC = "E22" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "DATA<6>" LOC = "F18" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "DATA<7>" LOC = "F19" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "BUSAK_n" LOC = "F20" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "BUSRQ_n" LOC = "E20" | IOSTANDARD = LVTTL;
|
||||||
|
#NET "HALT_n" LOC = "G20" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "INT_n" LOC = "G19" | IOSTANDARD = LVTTL;
|
||||||
|
#NET "IORQ_n" LOC = "H19" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "M1_n" LOC = "J18" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "NMI_n" LOC = "K18" | IOSTANDARD = LVTTL;
|
||||||
|
#NET "RD_n" LOC = "K17" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "WR_n" LOC = "K19" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "RFSH_n" LOC = "K20" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
#NET "WAIT_n" LOC = "L19" | IOSTANDARD = LVTTL;
|
||||||
|
# PS/2 Keyboard
|
||||||
|
NET "PS2_CLK1" LOC = "W12" | IOSTANDARD = LVCMOS33 | PULLUP | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "PS2_DATA1" LOC = "V11" | IOSTANDARD = LVCMOS33 | PULLUP | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
# LEDs
|
||||||
|
NET "LED<7>" LOC = "W21" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
NET "LED<6>" LOC = "Y22" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
NET "LED<5>" LOC = "V20" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
NET "LED<4>" LOC = "V19" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
NET "LED<3>" LOC = "U19" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
NET "LED<2>" LOC = "U20" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
NET "LED<1>" LOC = "T19" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
NET "LED<0>" LOC = "R20" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
# Buttons
|
||||||
|
NET "BTN_NORTH" LOC = "T14" | IOSTANDARD = LVCMOS33 | PULLDOWN;
|
||||||
|
NET "BTN_SOUTH" LOC = "T15" | IOSTANDARD = LVCMOS33 | PULLDOWN;
|
||||||
|
NET "BTN_EAST" LOC = "T16" | IOSTANDARD = LVCMOS33 | PULLDOWN;
|
||||||
|
NET "BTN_WEST" LOC = "U15" | IOSTANDARD = LVCMOS33 | PULLDOWN;
|
||||||
|
NET "ROT_CENTER" LOC = "R13" | IOSTANDARD = LVCMOS33 | PULLDOWN;
|
||||||
|
# Switches
|
||||||
|
NET "SW<3>" LOC = "T9" | IOSTANDARD = LVCMOS33;
|
||||||
|
NET "SW<2>" LOC = "U8" | IOSTANDARD = LVCMOS33;
|
||||||
|
NET "SW<1>" LOC = "U10" | IOSTANDARD = LVCMOS33;
|
||||||
|
NET "SW<0>" LOC = "V8" | IOSTANDARD = LVCMOS33;
|
||||||
|
# SPI
|
||||||
|
NET "SPI_MISO" LOC = "AB20" | IOSTANDARD = LVCMOS33;
|
||||||
|
NET "SPI_MOSI" LOC = "AB14" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
NET "SPI_SCK" LOC = "AA20" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8;
|
||||||
|
NET "SPI_SS_B" LOC = "Y4" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
NET "DATAFLASH_WP" LOC = "C14" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
NET "DATAFLASH_RST" LOC = "C15" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8;
|
||||||
|
# LCD interface
|
||||||
|
NET "LCD_E" LOC = "AB4" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "LCD_RS" LOC = "Y14" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "LCD_RW" LOC = "W13" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "LCD_DB<7>" LOC = "Y15" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "LCD_DB<6>" LOC = "AB16" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "LCD_DB<5>" LOC = "Y16" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "LCD_DB<4>" LOC = "AA12" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "LCD_DB<3>" LOC = "AB12" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "LCD_DB<2>" LOC = "AB17" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "LCD_DB<1>" LOC = "AB18" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
|
NET "LCD_DB<0>" LOC = "Y13" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW;
|
||||||
15
nascom2.xst
Executable file
15
nascom2.xst
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
run
|
||||||
|
-ifn nascom2.prj
|
||||||
|
-ifmt mixed
|
||||||
|
-top toplevel
|
||||||
|
-ofn nascom2.ngc
|
||||||
|
-ofmt NGC
|
||||||
|
-p xc3s700an-fgg484-4
|
||||||
|
-opt_mode Speed
|
||||||
|
-opt_level 1
|
||||||
|
-fsm_encoding auto
|
||||||
|
-slice_utilization_ratio 1500#
|
||||||
|
-bram_utilization_ratio 3#
|
||||||
|
-sd coregen/
|
||||||
|
-rtlview no
|
||||||
|
-iob auto
|
||||||
288
nascom2_t80.mpf
Executable file
288
nascom2_t80.mpf
Executable file
@@ -0,0 +1,288 @@
|
|||||||
|
;
|
||||||
|
; Copyright Model Technology, a Mentor Graphics
|
||||||
|
; Corporation company 2006, - All rights reserved.
|
||||||
|
;
|
||||||
|
; THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF
|
||||||
|
; MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
|
||||||
|
;
|
||||||
|
[Library]
|
||||||
|
std = $MODEL_TECH/../std
|
||||||
|
ieee = $MODEL_TECH/../ieee
|
||||||
|
verilog = $MODEL_TECH/../verilog
|
||||||
|
vital2000 = $MODEL_TECH/../vital2000
|
||||||
|
std_developerskit = $MODEL_TECH/../std_developerskit
|
||||||
|
synopsys = $MODEL_TECH/../synopsys
|
||||||
|
modelsim_lib = $MODEL_TECH/../modelsim_lib
|
||||||
|
|
||||||
|
|
||||||
|
; VHDL Section
|
||||||
|
unisim = $MODEL_TECH/../xilinx/vhdl/unisim
|
||||||
|
simprim = $MODEL_TECH/../xilinx/vhdl/simprim
|
||||||
|
xilinxcorelib = $MODEL_TECH/../xilinx/vhdl/xilinxcorelib
|
||||||
|
aim = $MODEL_TECH/../xilinx/vhdl/aim
|
||||||
|
pls = $MODEL_TECH/../xilinx/vhdl/pls
|
||||||
|
cpld = $MODEL_TECH/../xilinx/vhdl/cpld
|
||||||
|
|
||||||
|
; Verilog Section
|
||||||
|
unisims_ver = $MODEL_TECH/../xilinx/verilog/unisims_ver
|
||||||
|
uni9000_ver = $MODEL_TECH/../xilinx/verilog/uni9000_ver
|
||||||
|
simprims_ver = $MODEL_TECH/../xilinx/verilog/simprims_ver
|
||||||
|
xilinxcorelib_ver = $MODEL_TECH/../xilinx/verilog/xilinxcorelib_ver
|
||||||
|
aim_ver = $MODEL_TECH/../xilinx/verilog/aim_ver
|
||||||
|
cpld_ver = $MODEL_TECH/../xilinx/verilog/cpld_ver
|
||||||
|
|
||||||
|
work = work
|
||||||
|
[vcom]
|
||||||
|
; Turn on VHDL-1993 as the default. Normally is off.
|
||||||
|
VHDL93 = 1
|
||||||
|
|
||||||
|
; Show source line containing error. Default is off.
|
||||||
|
; Show_source = 1
|
||||||
|
|
||||||
|
; Turn off unbound-component warnings. Default is on.
|
||||||
|
; Show_Warning1 = 0
|
||||||
|
|
||||||
|
; Turn off process-without-a-wait-statement warnings. Default is on.
|
||||||
|
; Show_Warning2 = 0
|
||||||
|
|
||||||
|
; Turn off null-range warnings. Default is on.
|
||||||
|
; Show_Warning3 = 0
|
||||||
|
|
||||||
|
; Turn off no-space-in-time-literal warnings. Default is on.
|
||||||
|
; Show_Warning4 = 0
|
||||||
|
|
||||||
|
; Turn off multiple-drivers-on-unresolved-signal warnings. Default is on.
|
||||||
|
; Show_Warning5 = 0
|
||||||
|
|
||||||
|
; Turn off optimization for IEEE std_logic_1164 package. Default is on.
|
||||||
|
; Optimize_1164 = 0
|
||||||
|
|
||||||
|
; Turn on resolving of ambiguous function overloading in favor of the
|
||||||
|
; "explicit" function declaration (not the one automatically created by
|
||||||
|
; the compiler for each type declaration). Default is off.
|
||||||
|
Explicit = 1
|
||||||
|
|
||||||
|
; Turn off VITAL compliance checking. Default is checking on.
|
||||||
|
; NoVitalCheck = 1
|
||||||
|
|
||||||
|
; Ignore VITAL compliance checking errors. Default is to not ignore.
|
||||||
|
; IgnoreVitalErrors = 1
|
||||||
|
|
||||||
|
; Turn off VITAL compliance checking warnings. Default is to show warnings.
|
||||||
|
; Show_VitalChecksWarnings = false
|
||||||
|
|
||||||
|
; Turn off "loading..." messages. Default is messages on.
|
||||||
|
; Quiet = 1
|
||||||
|
|
||||||
|
; Turn on some limited synthesis rule compliance checking. Checks only:
|
||||||
|
; -- signals used (read) by a process must be in the sensitivity list
|
||||||
|
; CheckSynthesis = 1
|
||||||
|
|
||||||
|
[vlog]
|
||||||
|
|
||||||
|
; Turn off "loading..." messages. Default is messages on.
|
||||||
|
; Quiet = 1
|
||||||
|
|
||||||
|
; Turn on Verilog hazard checking (order-dependent accessing of global vars).
|
||||||
|
; Default is off.
|
||||||
|
; Hazard = 1
|
||||||
|
|
||||||
|
; Turn on converting regular Verilog identifiers to uppercase. Allows case
|
||||||
|
; insensitivity for module names. Default is no conversion.
|
||||||
|
; UpCase = 1
|
||||||
|
|
||||||
|
; Turns on incremental compilation of modules
|
||||||
|
; Incremental = 1
|
||||||
|
|
||||||
|
[vsim]
|
||||||
|
; Simulator resolution
|
||||||
|
; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100.
|
||||||
|
resolution = 1ps
|
||||||
|
|
||||||
|
; User time unit for run commands
|
||||||
|
; Set to default, fs, ps, ns, us, ms, or sec. The default is to use the
|
||||||
|
; unit specified for Resolution. For example, if Resolution is 100ps,
|
||||||
|
; then UserTimeUnit defaults to ps.
|
||||||
|
UserTimeUnit = default
|
||||||
|
|
||||||
|
; Default run length
|
||||||
|
RunLength = 20 ns
|
||||||
|
|
||||||
|
; Maximum iterations that can be run without advancing simulation time
|
||||||
|
IterationLimit = 5000
|
||||||
|
|
||||||
|
; Directive to license manager:
|
||||||
|
; vhdl Immediately reserve a VHDL license
|
||||||
|
; vlog Immediately reserve a Verilog license
|
||||||
|
; plus Immediately reserve a VHDL and Verilog license
|
||||||
|
; nomgc Do not look for Mentor Graphics Licenses
|
||||||
|
; nomti Do not look for Model Technology Licenses
|
||||||
|
; noqueue Do not wait in the license queue when a license isn't available
|
||||||
|
; License = plus
|
||||||
|
|
||||||
|
; Stop the simulator after an assertion message
|
||||||
|
; 0 = Note 1 = Warning 2 = Error 3 = Failure 4 = Fatal
|
||||||
|
BreakOnAssertion = 3
|
||||||
|
|
||||||
|
; Assertion Message Format
|
||||||
|
; %S - Severity Level
|
||||||
|
; %R - Report Message
|
||||||
|
; %T - Time of assertion
|
||||||
|
; %D - Delta
|
||||||
|
; %I - Instance or Region pathname (if available)
|
||||||
|
; %% - print '%' character
|
||||||
|
; AssertionFormat = "** %S: %R\n Timf: %T Iteration: %D%I\n"
|
||||||
|
|
||||||
|
; Assertion File - alternate file for storing assertion messages
|
||||||
|
; AssertFile = assert.log
|
||||||
|
|
||||||
|
; Default radix for all windows and commands...
|
||||||
|
; Set to symbolic, ascii, binary, octal, decimal, hex, unsigned
|
||||||
|
DefaultRadix = symbolic
|
||||||
|
|
||||||
|
; VSIM Startup command
|
||||||
|
; Startup = do startup.do
|
||||||
|
|
||||||
|
; File for saving command transcript
|
||||||
|
TranscriptFile = transcript
|
||||||
|
|
||||||
|
; File for saving command history
|
||||||
|
;CommandHistory = cmdhist.log
|
||||||
|
|
||||||
|
; Specify whether paths in simulator commands should be described
|
||||||
|
; in VHDL or Verilog format. For VHDL, PathSeparator = /
|
||||||
|
; for Verilog, PathSeparator = .
|
||||||
|
PathSeparator = /
|
||||||
|
|
||||||
|
; Specify the dataset separator for fully rooted contexts.
|
||||||
|
; The default is ':'. For example, sim:/top
|
||||||
|
; Must not be the same character as PathSeparator.
|
||||||
|
DatasetSeparator = :
|
||||||
|
|
||||||
|
; Disable assertion messages
|
||||||
|
; IgnoreNote = 1
|
||||||
|
; IgnoreWarning = 1
|
||||||
|
; IgnoreError = 1
|
||||||
|
; IgnoreFailure = 1
|
||||||
|
|
||||||
|
; Default force kind. May be freeze, drive, or deposit
|
||||||
|
; or in other terms, fixed, wired or charged.
|
||||||
|
; DefaultForceKind = freeze
|
||||||
|
|
||||||
|
; If zero, open files when elaborated
|
||||||
|
; else open files on first read or write
|
||||||
|
; DelayFileOpen = 0
|
||||||
|
|
||||||
|
; Control VHDL files opened for write
|
||||||
|
; 0 = Buffered, 1 = Unbuffered
|
||||||
|
UnbufferedOutput = 0
|
||||||
|
|
||||||
|
; Control number of VHDL files open concurrently
|
||||||
|
; This number should always be less then the
|
||||||
|
; current ulimit setting for max file descriptors
|
||||||
|
; 0 = unlimited
|
||||||
|
ConcurrentFileLimit = 40
|
||||||
|
|
||||||
|
; This controls the number of hierarchical regions displayed as
|
||||||
|
; part of a signal name shown in the waveform window. The default
|
||||||
|
; value or a value of zero tells VSIM to display the full name.
|
||||||
|
; WaveSignalNameWidth = 0
|
||||||
|
|
||||||
|
; Turn off warnings from the std_logic_arith, std_logic_unsigned
|
||||||
|
; and std_logic_signed packages.
|
||||||
|
; StdArithNoWarnings = 1
|
||||||
|
|
||||||
|
; Turn off warnings from the IEEE numeric_std and numeric_bit
|
||||||
|
; packages.
|
||||||
|
; NumericStdNoWarnings = 1
|
||||||
|
|
||||||
|
; Control the format of a generate statement label. Don't quote it.
|
||||||
|
; GenerateFormat = %s__%d
|
||||||
|
|
||||||
|
; Specify whether checkpoint files should be compressed.
|
||||||
|
; The default is to be compressed.
|
||||||
|
; CheckpointCompressMode = 0
|
||||||
|
|
||||||
|
; List of dynamically loaded objects for Verilog PLI applications
|
||||||
|
; Veriuser = veriuser.sl
|
||||||
|
|
||||||
|
[lmc]
|
||||||
|
[Project]
|
||||||
|
Project_Version = 6
|
||||||
|
Project_DefaultLib = work
|
||||||
|
Project_SortMethod = unused
|
||||||
|
Project_Files_Count = 21
|
||||||
|
Project_File_0 = C:/vhdl/nascom2_t80/toplevel.vhd
|
||||||
|
Project_File_P_0 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1231501485 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 10 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_1 = C:/vhdl/nascom2_t80/T80se.vhd
|
||||||
|
Project_File_P_1 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230996942 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 13 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_2 = C:/vhdl/nascom2_t80/T80.vhd
|
||||||
|
Project_File_P_2 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230941814 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 2 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_3 = C:/vhdl/nascom2_t80/T80a.vhd
|
||||||
|
Project_File_P_3 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230943266 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 8 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_4 = C:/vhdl/nascom2_t80/dcm_in50_sim.vhd
|
||||||
|
Project_File_P_4 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1231002309 vhdl_disableopt 0 vhdl_vital 0 vhdl_vopt 0 vhdl_warn1 1 vhdl_explicit 1 vhdl_warn2 1 vhdl_showsource 0 vhdl_warn3 1 vhdl_0InOptions {} vhdl_warn4 1 vhdl_options {} vhdl_warn5 1 ood 0 compile_to work compile_order 18 cover_nosub 0 dont_compile 0 vhdl_use93 93
|
||||||
|
Project_File_5 = C:/vhdl/nascom2_t80/syncgen.vhd
|
||||||
|
Project_File_P_5 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230988654 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 16 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_6 = C:/vhdl/nascom2_t80/T80s.vhd
|
||||||
|
Project_File_P_6 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230943564 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 9 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_7 = C:/vhdl/nascom2_t80/videogen.vhd
|
||||||
|
Project_File_P_7 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1231006634 vhdl_disableopt 0 vhdl_vital 0 vhdl_vopt 0 vhdl_warn1 1 vhdl_explicit 1 vhdl_warn2 1 vhdl_showsource 0 vhdl_warn3 1 vhdl_0InOptions {} vhdl_warn4 1 vhdl_options {} vhdl_warn5 1 ood 0 compile_to work compile_order 15 cover_nosub 0 dont_compile 0 vhdl_use93 93
|
||||||
|
Project_File_8 = C:/vhdl/nascom2_t80/T80_Pack.vhd
|
||||||
|
Project_File_P_8 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230941826 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 5 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_9 = C:/vhdl/nascom2_t80/T80_MCode.vhd
|
||||||
|
Project_File_P_9 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230941915 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 4 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_10 = C:/vhdl/nascom2_t80/T80_ALU.vhd
|
||||||
|
Project_File_P_10 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230941923 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 3 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_11 = C:/vhdl/bmp_bench/sim_bmppack.vhd
|
||||||
|
Project_File_P_11 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1231008643 vhdl_disableopt 0 vhdl_vital 0 vhdl_vopt 0 vhdl_warn1 1 vhdl_explicit 1 vhdl_warn2 1 vhdl_showsource 0 vhdl_warn3 1 vhdl_0InOptions {} vhdl_warn4 1 vhdl_options {} vhdl_warn5 1 ood 0 compile_to work compile_order 19 cover_nosub 0 dont_compile 0 vhdl_use93 93
|
||||||
|
Project_File_12 = C:/vhdl/nascom2_t80/coregen/charrom.vhd
|
||||||
|
Project_File_P_12 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230983803 vhdl_disableopt 0 vhdl_vital 0 vhdl_vopt 0 vhdl_warn1 1 vhdl_explicit 1 vhdl_warn2 1 vhdl_showsource 0 vhdl_warn3 1 vhdl_0InOptions {} vhdl_warn4 1 vhdl_options {} vhdl_warn5 1 ood 0 compile_to work compile_order 17 cover_nosub 0 dont_compile 0 vhdl_use93 93
|
||||||
|
Project_File_13 = C:/vhdl/nascom2_t80/coregen/ram2kx8.vhd
|
||||||
|
Project_File_P_13 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230997369 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 11 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_14 = C:/vhdl/nascom2_t80/video.vhd
|
||||||
|
Project_File_P_14 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230995258 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 14 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_15 = C:/vhdl/nascom2_t80/toplevel_tb.vhd
|
||||||
|
Project_File_P_15 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1231010153 vhdl_disableopt 0 vhdl_vital 0 vhdl_vopt 0 vhdl_warn1 1 vhdl_explicit 1 vhdl_warn2 1 vhdl_showsource 0 vhdl_warn3 1 vhdl_0InOptions {} vhdl_warn4 1 vhdl_options {} vhdl_warn5 1 ood 0 compile_to work compile_order 0 cover_nosub 0 dont_compile 0 vhdl_use93 93
|
||||||
|
Project_File_16 = C:/vhdl/nascom2_t80/coregen/monitorrom.vhd
|
||||||
|
Project_File_P_16 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1231414214 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 12 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_17 = C:/vhdl/nascom2_t80/T80_Reg.vhd
|
||||||
|
Project_File_P_17 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230941873 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 6 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_18 = C:/vhdl/nascom2_t80/memory.vhd
|
||||||
|
Project_File_P_18 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1231511876 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 1 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_File_19 = C:/vhdl/nascom2_t80/T80_RegX.vhd
|
||||||
|
Project_File_P_19 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1230977546 vhdl_disableopt 0 vhdl_vital 0 vhdl_vopt 0 vhdl_warn1 1 vhdl_explicit 1 vhdl_warn2 1 vhdl_showsource 0 vhdl_warn3 1 vhdl_0InOptions {} vhdl_warn4 1 vhdl_options {} vhdl_warn5 1 ood 0 compile_to work compile_order 7 cover_nosub 0 dont_compile 0 vhdl_use93 93
|
||||||
|
Project_File_20 = C:/vhdl/nascom2_t80/keyboard.vhd
|
||||||
|
Project_File_P_20 = vhdl_novitalcheck 0 file_type vhdl group_id 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1231514379 vhdl_disableopt 0 vhdl_vital 0 vhdl_warn1 1 vhdl_vopt 0 vhdl_showsource 0 vhdl_warn2 1 vhdl_explicit 1 vhdl_0InOptions {} vhdl_warn3 1 vhdl_options {} vhdl_warn4 1 ood 0 vhdl_warn5 1 compile_to work compile_order 20 dont_compile 0 cover_nosub 0 vhdl_use93 93
|
||||||
|
Project_Sim_Count = 0
|
||||||
|
Project_Folder_Count = 0
|
||||||
|
Echo_Compile_Output = 0
|
||||||
|
Save_Compile_Report = 1
|
||||||
|
Project_Opt_Count = 0
|
||||||
|
ForceSoftPaths = 0
|
||||||
|
ReOpenSourceFiles = 1
|
||||||
|
VERILOG_DoubleClick = Edit
|
||||||
|
VERILOG_CustomDoubleClick =
|
||||||
|
VHDL_DoubleClick = Edit
|
||||||
|
VHDL_CustomDoubleClick =
|
||||||
|
PSL_DoubleClick = Edit
|
||||||
|
PSL_CustomDoubleClick =
|
||||||
|
TEXT_DoubleClick = Edit
|
||||||
|
TEXT_CustomDoubleClick =
|
||||||
|
SYSTEMC_DoubleClick = Edit
|
||||||
|
SYSTEMC_CustomDoubleClick =
|
||||||
|
TCL_DoubleClick = Edit
|
||||||
|
TCL_CustomDoubleClick =
|
||||||
|
MACRO_DoubleClick = Edit
|
||||||
|
MACRO_CustomDoubleClick =
|
||||||
|
VCD_DoubleClick = Edit
|
||||||
|
VCD_CustomDoubleClick =
|
||||||
|
SDF_DoubleClick = Edit
|
||||||
|
SDF_CustomDoubleClick =
|
||||||
|
XML_DoubleClick = Edit
|
||||||
|
XML_CustomDoubleClick =
|
||||||
|
LOGFILE_DoubleClick = Edit
|
||||||
|
LOGFILE_CustomDoubleClick =
|
||||||
|
EditorState = {tabbed horizontal 1}
|
||||||
|
Project_Major_Version = 6
|
||||||
|
Project_Minor_Version = 2
|
||||||
23
nascom2_vhdl.prj
Executable file
23
nascom2_vhdl.prj
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
vhdl work "C:\vhdl\nascom2_t80\memory.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\coregen\charrom.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\coregen\monitorrom.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\coregen\basic_rom.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\coregen\ram2kx8.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\coregen\dcm_in50.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\toplevel.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\T80a.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\T80.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\T80_ALU.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\T80_MCode.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\T80_RegX.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\T80_Pack.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\T80se.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\video.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\videogen.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\syncgen.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\keyboard.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\uart.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\kcpsm3.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\uartprog.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\fifo16x8.vhd"
|
||||||
|
vhdl work "C:\vhdl\nascom2_t80\spi.vhd"
|
||||||
99
spi.vhd
Executable file
99
spi.vhd
Executable file
@@ -0,0 +1,99 @@
|
|||||||
|
----------------------------------------------------------------------------------
|
||||||
|
-- Company:
|
||||||
|
-- Engineer:
|
||||||
|
--
|
||||||
|
-- Create Date: 15:52:22 12/30/2008
|
||||||
|
-- Design Name:
|
||||||
|
-- Module Name: toplevel - Behavioral
|
||||||
|
-- Project Name:
|
||||||
|
-- Target Devices:
|
||||||
|
-- Tool versions:
|
||||||
|
-- Description:
|
||||||
|
--
|
||||||
|
-- Dependencies:
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- Revision 0.01 - File Created
|
||||||
|
-- Additional Comments:
|
||||||
|
--
|
||||||
|
----------------------------------------------------------------------------------
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.STD_LOGIC_1164.ALL;
|
||||||
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
||||||
|
use IEEE.NUMERIC_STD.ALL;
|
||||||
|
|
||||||
|
---- Uncomment the following library declaration if instantiating
|
||||||
|
---- any Xilinx primitives in this code.
|
||||||
|
library UNISIM;
|
||||||
|
use UNISIM.VComponents.all;
|
||||||
|
|
||||||
|
entity spi is
|
||||||
|
|
||||||
|
port (
|
||||||
|
-- SPI
|
||||||
|
MISO : in std_logic;
|
||||||
|
MOSI, SCK : out std_logic;
|
||||||
|
-- System bus
|
||||||
|
DATA_I : in std_logic_vector(7 downto 0);
|
||||||
|
DATA_O : out std_logic_vector(7 downto 0);
|
||||||
|
START : in std_logic;
|
||||||
|
BUSY : out std_logic;
|
||||||
|
CLK : in std_logic);
|
||||||
|
|
||||||
|
end spi;
|
||||||
|
|
||||||
|
architecture Behavioral of spi is
|
||||||
|
type states is (ST_IDLE, ST_TRANSMIT);
|
||||||
|
signal state : states := ST_IDLE;
|
||||||
|
|
||||||
|
signal dout_r, din_r : std_logic_vector(7 downto 0) := X"00";
|
||||||
|
signal count : unsigned(2 downto 0) := to_unsigned(0, 3);
|
||||||
|
signal spicycle : unsigned(1 downto 0) := to_unsigned(0, 2);
|
||||||
|
|
||||||
|
attribute iob : string;
|
||||||
|
attribute iob of MOSI, SCK : signal is "true";
|
||||||
|
begin -- Behavioral
|
||||||
|
|
||||||
|
fsm: process (CLK)
|
||||||
|
variable next_state : states;
|
||||||
|
begin
|
||||||
|
if rising_edge(CLK) then
|
||||||
|
next_state := state;
|
||||||
|
case state is
|
||||||
|
when ST_IDLE =>
|
||||||
|
BUSY <= '0';
|
||||||
|
SCK <= '0';
|
||||||
|
if START = '1' then
|
||||||
|
dout_r <= DATA_I;
|
||||||
|
spicycle <= to_unsigned(0, spicycle'length);
|
||||||
|
count <= to_unsigned(0, count'length);
|
||||||
|
next_state := ST_TRANSMIT;
|
||||||
|
end if;
|
||||||
|
when ST_TRANSMIT =>
|
||||||
|
BUSY <= '1';
|
||||||
|
if spicycle = 0 then -- data out
|
||||||
|
MOSI <= dout_r(7);
|
||||||
|
dout_r <= dout_r(6 downto 0) & '0';
|
||||||
|
elsif spicycle = 1 then -- clock up
|
||||||
|
SCK <= '1';
|
||||||
|
elsif spicycle = 2 then -- nop
|
||||||
|
elsif spicycle = 3 then -- clock down, sample data
|
||||||
|
SCK <= '0';
|
||||||
|
din_r(0) <= MISO;
|
||||||
|
din_r(7 downto 1) <= din_r(6 downto 0);
|
||||||
|
if count = 7 then
|
||||||
|
next_state := ST_IDLE;
|
||||||
|
else
|
||||||
|
count <= count + 1;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
spicycle <= spicycle + 1;
|
||||||
|
when others => null;
|
||||||
|
end case;
|
||||||
|
state <= next_state;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
DATA_O <= din_r;
|
||||||
|
|
||||||
|
end Behavioral;
|
||||||
87
syncgen.vhd
Executable file
87
syncgen.vhd
Executable file
@@ -0,0 +1,87 @@
|
|||||||
|
----------------------------------------------------------------------------------
|
||||||
|
-- Company:
|
||||||
|
-- Engineer:
|
||||||
|
--
|
||||||
|
-- Create Date: 10:37:34 12/08/2008
|
||||||
|
-- Design Name:
|
||||||
|
-- Module Name: syncgen - Behavioral
|
||||||
|
-- Project Name:
|
||||||
|
-- Target Devices:
|
||||||
|
-- Tool versions:
|
||||||
|
-- Description:
|
||||||
|
--
|
||||||
|
-- Dependencies:
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- Revision 0.01 - File Created
|
||||||
|
-- Additional Comments:
|
||||||
|
--
|
||||||
|
----------------------------------------------------------------------------------
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.STD_LOGIC_1164.ALL;
|
||||||
|
use IEEE.STD_LOGIC_ARITH.ALL;
|
||||||
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
||||||
|
|
||||||
|
---- Uncomment the following library declaration if instantiating
|
||||||
|
---- any Xilinx primitives in this code.
|
||||||
|
--library UNISIM;
|
||||||
|
--use UNISIM.VComponents.all;
|
||||||
|
|
||||||
|
entity syncgen is
|
||||||
|
Port ( CLKPIXEL : in STD_LOGIC;
|
||||||
|
VSYNC : out STD_LOGIC;
|
||||||
|
HSYNC : out STD_LOGIC;
|
||||||
|
COLUMN : out STD_LOGIC_VECTOR (9 downto 0);
|
||||||
|
ROW : out STD_LOGIC_VECTOR (9 downto 0));
|
||||||
|
end syncgen;
|
||||||
|
|
||||||
|
architecture Behavioral of syncgen is
|
||||||
|
signal hsync_i, hsync_i_old: std_logic := '1';
|
||||||
|
signal vsync_i: std_logic := '1';
|
||||||
|
signal row_i: std_logic_vector(9 downto 0) := "0000000000";
|
||||||
|
signal column_i: std_logic_vector(9 downto 0) := "0000000000";
|
||||||
|
begin
|
||||||
|
hsync_p: process(CLKPIXEL)
|
||||||
|
begin
|
||||||
|
if rising_edge(CLKPIXEL) then
|
||||||
|
if column_i = 799 then
|
||||||
|
column_i <= "0000000000";
|
||||||
|
else
|
||||||
|
column_i <= column_i + 1;
|
||||||
|
end if;
|
||||||
|
|
||||||
|
if column_i >= 658 and column_i <= 753 then -- generate hsync pulse (one clock early, it is delayed later)
|
||||||
|
hsync_i <= '0'; -- hsync is low active
|
||||||
|
else
|
||||||
|
hsync_i <= '1';
|
||||||
|
end if;
|
||||||
|
|
||||||
|
HSYNC <= hsync_i; -- delay hsync 1 clock
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
vsync_p: process(CLKPIXEL)
|
||||||
|
begin
|
||||||
|
if rising_edge(CLKPIXEL) then
|
||||||
|
if (hsync_i = '0') and (hsync_i_old = '1') then
|
||||||
|
if row_i = 524 then
|
||||||
|
row_i <= "0000000000";
|
||||||
|
else
|
||||||
|
row_i <= row_i + 1;
|
||||||
|
end if;
|
||||||
|
|
||||||
|
if row_i = 493 then -- generate vsync pulse
|
||||||
|
vsync_i <= '0'; -- vsync is low active
|
||||||
|
else
|
||||||
|
vsync_i <= '1';
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
hsync_i_old <= hsync_i;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
COLUMN <= column_i;
|
||||||
|
ROW <= row_i;
|
||||||
|
VSYNC <= vsync_i;
|
||||||
|
end Behavioral;
|
||||||
|
|
||||||
9
test.coe
Executable file
9
test.coe
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
memory_initialization_radix = 16;
|
||||||
|
memory_initialization_vector =
|
||||||
|
31, 00, 10,
|
||||||
|
dd, 21, ad, de,
|
||||||
|
fd, 21, ef, be,
|
||||||
|
dd, e5,
|
||||||
|
fd, e3,
|
||||||
|
dd, e1,
|
||||||
|
76;
|
||||||
104
textgen.vhd
Executable file
104
textgen.vhd
Executable file
@@ -0,0 +1,104 @@
|
|||||||
|
----------------------------------------------------------------------------------
|
||||||
|
-- Company:
|
||||||
|
-- Engineer:
|
||||||
|
--
|
||||||
|
-- Create Date: 16:50:00 12/08/2008
|
||||||
|
-- Design Name:
|
||||||
|
-- Module Name: textgen - Behavioral
|
||||||
|
-- Project Name:
|
||||||
|
-- Target Devices:
|
||||||
|
-- Tool versions:
|
||||||
|
-- Description:
|
||||||
|
--
|
||||||
|
-- Dependencies:
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- Revision 0.01 - File Created
|
||||||
|
-- Additional Comments:
|
||||||
|
--
|
||||||
|
----------------------------------------------------------------------------------
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.STD_LOGIC_1164.ALL;
|
||||||
|
use IEEE.STD_LOGIC_ARITH.ALL;
|
||||||
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
||||||
|
|
||||||
|
---- Uncomment the following library declaration if instantiating
|
||||||
|
---- any Xilinx primitives in this code.
|
||||||
|
--library UNISIM;
|
||||||
|
--use UNISIM.VComponents.all;
|
||||||
|
|
||||||
|
entity textgen is
|
||||||
|
Port ( OE : in STD_LOGIC;
|
||||||
|
CHRX : in STD_LOGIC_VECTOR (2 downto 0);
|
||||||
|
CHRY : in STD_LOGIC_VECTOR (3 downto 0);
|
||||||
|
SCRADR : in STD_LOGIC_VECTOR (11 downto 0);
|
||||||
|
RED : out STD_LOGIC_VECTOR (3 downto 0);
|
||||||
|
GREEN : out STD_LOGIC_VECTOR (3 downto 0);
|
||||||
|
BLUE : out STD_LOGIC_VECTOR (3 downto 0);
|
||||||
|
CLK : in STD_LOGIC);
|
||||||
|
end textgen;
|
||||||
|
|
||||||
|
architecture Behavioral of textgen is
|
||||||
|
|
||||||
|
component charrom IS
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
addra: IN std_logic_VECTOR(11 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
END component;
|
||||||
|
|
||||||
|
component textram IS
|
||||||
|
port (
|
||||||
|
clka: IN std_logic;
|
||||||
|
dina: IN std_logic_VECTOR(7 downto 0);
|
||||||
|
addra: IN std_logic_VECTOR(11 downto 0);
|
||||||
|
wea: IN std_logic_VECTOR(0 downto 0);
|
||||||
|
douta: OUT std_logic_VECTOR(7 downto 0));
|
||||||
|
END component;
|
||||||
|
signal out_i, oe_i: std_logic := '0';
|
||||||
|
signal charrom_adr, textram_adr: std_logic_vector(11 downto 0);
|
||||||
|
signal charrom_data, textram_data: std_logic_vector(7 downto 0);
|
||||||
|
signal oe_d1, oe_d2, oe_d3: std_logic := '0';
|
||||||
|
begin
|
||||||
|
textram_adr <= SCRADR;
|
||||||
|
|
||||||
|
textram_inst: textram port map( clka => CLK,
|
||||||
|
dina => "00000000",
|
||||||
|
addra => textram_adr,
|
||||||
|
wea => "0",
|
||||||
|
douta => textram_data);
|
||||||
|
|
||||||
|
charrom_adr(11 downto 4) <= textram_data;
|
||||||
|
charrom_adr(3 downto 0) <= CHRY;
|
||||||
|
|
||||||
|
charrom_inst: charrom port map( clka => CLK,
|
||||||
|
addra => charrom_adr,
|
||||||
|
douta => charrom_data);
|
||||||
|
|
||||||
|
|
||||||
|
process (CLK)
|
||||||
|
variable bitmap: std_logic_vector(7 downto 0) := "00000000";
|
||||||
|
begin
|
||||||
|
if rising_edge(CLK) then
|
||||||
|
if CHRX = 3 then
|
||||||
|
bitmap := charrom_data;
|
||||||
|
end if;
|
||||||
|
out_i <= bitmap((conv_integer(2 - CHRX)));
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
oe_delay: process (CLK)
|
||||||
|
begin
|
||||||
|
if rising_edge(CLK) then
|
||||||
|
oe_d1 <= OE;
|
||||||
|
oe_d2 <= oe_d1;
|
||||||
|
oe_d3 <= oe_d2;
|
||||||
|
oe_i <= oe_d3;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
RED <= (others => out_i) when oe_i = '1' else "0000";
|
||||||
|
GREEN <= (others => out_i) when oe_i = '1' else "0000";
|
||||||
|
BLUE <= (others => out_i) when oe_i = '1' else "0000";
|
||||||
|
end Behavioral;
|
||||||
|
|
||||||
318
toplevel.vhd
Executable file
318
toplevel.vhd
Executable file
@@ -0,0 +1,318 @@
|
|||||||
|
----------------------------------------------------------------------------------
|
||||||
|
-- Company:
|
||||||
|
-- Engineer:
|
||||||
|
--
|
||||||
|
-- Create Date: 15:52:22 12/30/2008
|
||||||
|
-- Design Name:
|
||||||
|
-- Module Name: toplevel - Behavioral
|
||||||
|
-- Project Name:
|
||||||
|
-- Target Devices:
|
||||||
|
-- Tool versions:
|
||||||
|
-- Description:
|
||||||
|
--
|
||||||
|
-- Dependencies:
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- Revision 0.01 - File Created
|
||||||
|
-- Additional Comments:
|
||||||
|
--
|
||||||
|
----------------------------------------------------------------------------------
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.STD_LOGIC_1164.ALL;
|
||||||
|
use IEEE.STD_LOGIC_ARITH.ALL;
|
||||||
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
||||||
|
|
||||||
|
---- Uncomment the following library declaration if instantiating
|
||||||
|
---- any Xilinx primitives in this code.
|
||||||
|
--library UNISIM;
|
||||||
|
--use UNISIM.VComponents.all;
|
||||||
|
|
||||||
|
use work.T80_Pack.all;
|
||||||
|
|
||||||
|
entity toplevel is
|
||||||
|
Port (
|
||||||
|
-- Clock (50 MHz)
|
||||||
|
CLKIN_50M : in STD_LOGIC;
|
||||||
|
-- VGA out
|
||||||
|
RED, GREEN, BLUE : out STD_LOGIC_VECTOR(3 downto 0);
|
||||||
|
HSYNC, VSYNC : out STD_LOGIC;
|
||||||
|
-- PS2 Keyboard
|
||||||
|
PS2_CLK1, PS2_DATA1 : inout STD_LOGIC;
|
||||||
|
-- LEDs
|
||||||
|
LED : out STD_LOGIC_VECTOR(7 downto 0);
|
||||||
|
-- Buttons
|
||||||
|
BTN_NORTH : in STD_LOGIC;
|
||||||
|
BTN_SOUTH : in STD_LOGIC;
|
||||||
|
BTN_EAST : in STD_LOGIC;
|
||||||
|
BTN_WEST : in STD_LOGIC;
|
||||||
|
ROT_CENTER : in STD_LOGIC;
|
||||||
|
-- Switches - 3=Enable IORQ breakpoint, 2,1,0=N/A
|
||||||
|
SW : in STD_LOGIC_VECTOR(3 downto 0);
|
||||||
|
-- SPI for Atmel Dataflash
|
||||||
|
SPI_MISO : in std_logic;
|
||||||
|
SPI_MOSI : out std_logic;
|
||||||
|
SPI_SCK : out std_logic;
|
||||||
|
SPI_SS_B : out std_logic := '1';
|
||||||
|
DATAFLASH_WP : out std_logic;
|
||||||
|
DATAFLASH_RST : out std_logic;
|
||||||
|
-- LCD interface
|
||||||
|
LCD_DB : inout std_logic_vector(7 downto 0);
|
||||||
|
LCD_E, LCD_RS, LCD_RW : out std_logic
|
||||||
|
);
|
||||||
|
end toplevel;
|
||||||
|
|
||||||
|
architecture Behavioral of toplevel is
|
||||||
|
component dcm_in50
|
||||||
|
port (
|
||||||
|
CLKIN_IN : in std_logic;
|
||||||
|
RST_IN : in std_logic;
|
||||||
|
CLKFX_OUT : out std_logic;
|
||||||
|
CLKIN_IBUFG_OUT : out std_logic;
|
||||||
|
CLK0_OUT : out std_logic;
|
||||||
|
LOCKED_OUT : out std_logic);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component memory
|
||||||
|
port (
|
||||||
|
DATA_I : in STD_LOGIC_VECTOR (7 downto 0);
|
||||||
|
DATA_O : out STD_LOGIC_VECTOR (7 downto 0);
|
||||||
|
ADDR_I : in STD_LOGIC_VECTOR (15 downto 0);
|
||||||
|
RD_N : in STD_LOGIC;
|
||||||
|
WR_N : in STD_LOGIC;
|
||||||
|
MREQ_N : in STD_LOGIC;
|
||||||
|
CLK : in STD_LOGIC;
|
||||||
|
CLKEN : in STD_LOGIC;
|
||||||
|
VID_DATA_O : out STD_LOGIC_VECTOR(7 downto 0);
|
||||||
|
VID_ADDR_I : in STD_LOGIC_VECTOR(9 downto 0);
|
||||||
|
VID_CLK : in STD_LOGIC);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component T80se
|
||||||
|
generic (
|
||||||
|
Mode : integer := 0;
|
||||||
|
T2Write : integer := 0;
|
||||||
|
IOWait : integer := 0);
|
||||||
|
port (
|
||||||
|
RESET_n : in std_logic;
|
||||||
|
CLK_n : in std_logic;
|
||||||
|
CLKEN : in std_logic;
|
||||||
|
WAIT_n : in std_logic;
|
||||||
|
INT_n : in std_logic;
|
||||||
|
NMI_n : in std_logic;
|
||||||
|
BUSRQ_n : in std_logic;
|
||||||
|
M1_n : out std_logic;
|
||||||
|
MREQ_n : out std_logic;
|
||||||
|
IORQ_n : out std_logic;
|
||||||
|
RD_n : out std_logic;
|
||||||
|
WR_n : out std_logic;
|
||||||
|
RFSH_n : out std_logic;
|
||||||
|
HALT_n : out std_logic;
|
||||||
|
BUSAK_n : out std_logic;
|
||||||
|
A : out std_logic_vector(15 downto 0);
|
||||||
|
DI : in std_logic_vector(7 downto 0);
|
||||||
|
DO : out std_logic_vector(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component video
|
||||||
|
port (
|
||||||
|
CLK : in std_logic;
|
||||||
|
DATA_I : in std_logic_vector(7 downto 0);
|
||||||
|
ADDR_O : out std_logic_vector(9 downto 0);
|
||||||
|
RED, GREEN, BLUE : out std_logic_vector(3 downto 0);
|
||||||
|
VSYNC, HSYNC : out std_logic);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component keyboard
|
||||||
|
port (
|
||||||
|
PS2_CLK : inout std_logic;
|
||||||
|
PS2_DATA : inout std_logic;
|
||||||
|
CLK_16M : in std_logic;
|
||||||
|
IORQ_n : in std_logic;
|
||||||
|
RD_n, WR_n : in std_logic;
|
||||||
|
DATA_I : in std_logic_vector(7 downto 0);
|
||||||
|
DATA_O : out std_logic_vector(7 downto 0);
|
||||||
|
DEBUG : out std_logic_vector(7 downto 0));
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component uart
|
||||||
|
port (
|
||||||
|
CLK_16M : in std_logic;
|
||||||
|
DATA_I : in std_logic_vector(7 downto 0);
|
||||||
|
ADDR_I : in std_logic_vector(1 downto 0);
|
||||||
|
IORQ_n, RD_n, WR_n : in std_logic;
|
||||||
|
DATA_O : out std_logic_vector(7 downto 0);
|
||||||
|
-- SPI for Atmel Dataflash
|
||||||
|
SPI_MISO : in std_logic;
|
||||||
|
SPI_MOSI : out std_logic;
|
||||||
|
SPI_SCK : out std_logic;
|
||||||
|
SPI_SS_B : out std_logic := '1';
|
||||||
|
DATAFLASH_WP : out std_logic;
|
||||||
|
DATAFLASH_RST : out std_logic;
|
||||||
|
-- LCD interface
|
||||||
|
LCD_DB : inout std_logic_vector(7 downto 0);
|
||||||
|
LCD_E, LCD_RS, LCD_RW : out std_logic;
|
||||||
|
-- Buttons
|
||||||
|
BTN_NORTH : in STD_LOGIC;
|
||||||
|
BTN_SOUTH : in STD_LOGIC;
|
||||||
|
BTN_EAST : in STD_LOGIC;
|
||||||
|
BTN_WEST : in STD_LOGIC;
|
||||||
|
ROT_CENTER : in STD_LOGIC);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
signal CLK_16M, CLK_25M : std_logic;
|
||||||
|
|
||||||
|
signal z80cpu_addr: std_logic_vector(15 downto 0);
|
||||||
|
signal z80cpu_datao, z80cpu_datai, memory_datao: std_logic_vector(7 downto 0);
|
||||||
|
signal z80cpu_mreq_n, z80cpu_iorq_n, z80cpu_wr_n, z80cpu_rd_n,
|
||||||
|
z80cpu_clken, z80cpu_halt_n, z80cpu_busak_n, z80cpu_m1_n,
|
||||||
|
z80cpu_rfsh_n, z80cpu_reset_n: std_logic;
|
||||||
|
|
||||||
|
signal video_datai : std_logic_vector(7 downto 0);
|
||||||
|
signal video_addro : std_logic_vector(9 downto 0);
|
||||||
|
|
||||||
|
signal red_out, blue_out, green_out : std_logic_vector(3 downto 0);
|
||||||
|
signal hsync_out, vsync_out : std_logic;
|
||||||
|
|
||||||
|
signal keyb_datao : std_logic_vector(7 downto 0);
|
||||||
|
signal keyb_iorq_n : std_logic;
|
||||||
|
|
||||||
|
signal uart_datao : std_logic_vector(7 downto 0);
|
||||||
|
signal uart_iorq_n : std_logic;
|
||||||
|
|
||||||
|
-- shift register for z80 CLKEN
|
||||||
|
-- signal z80cpu_clken_gen : std_logic_vector(1 downto 0) := "01"; -- = 8 MHz
|
||||||
|
-- signal z80cpu_clken_gen : std_logic_vector(3 downto 0) := "0001"; -- = 4 MHz
|
||||||
|
signal z80cpu_clken_gen : std_logic_vector(7 downto 0) := "00000001"; -- = 2 MHz
|
||||||
|
-- signal z80cpu_clken_gen : std_logic_vector(255 downto 0) := X"0000000000000000000000000000000000000000000000000000000000000001"; -- = 62.5 KHz
|
||||||
|
signal stop : std_logic := '0';
|
||||||
|
begin
|
||||||
|
dcm_in50_inst: dcm_in50
|
||||||
|
port map (
|
||||||
|
CLKIN_IN => CLKIN_50M,
|
||||||
|
RST_IN => '0',
|
||||||
|
CLKFX_OUT => CLK_16M,
|
||||||
|
CLKIN_IBUFG_OUT => open,
|
||||||
|
CLK0_OUT => CLK_25M,
|
||||||
|
LOCKED_OUT => open);
|
||||||
|
|
||||||
|
clken: process(CLK_16M)
|
||||||
|
begin
|
||||||
|
if rising_edge(CLK_16M) then
|
||||||
|
z80cpu_clken_gen <= z80cpu_clken_gen((z80cpu_clken_gen'left-1) downto 0)
|
||||||
|
& z80cpu_clken_gen(z80cpu_clken_gen'left);
|
||||||
|
if BTN_NORTH = '1' then
|
||||||
|
stop <= '0';
|
||||||
|
elsif (z80cpu_iorq_n = '0') and (SW(3) = '1') then
|
||||||
|
stop <= '1';
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
z80cpu_clken <= '1' when (stop = '0') and (z80cpu_clken_gen(z80cpu_clken_gen'left) = '1') else
|
||||||
|
'0';
|
||||||
|
|
||||||
|
z80cpu_reset_n <= '0' when (BTN_SOUTH = '1') else
|
||||||
|
'1';
|
||||||
|
|
||||||
|
z80cpu_datai <= memory_datao when z80cpu_mreq_n = '0' else
|
||||||
|
keyb_datao when (z80cpu_iorq_n = '0') and (z80cpu_addr(2 downto 0) = "000") else
|
||||||
|
uart_datao when (z80cpu_iorq_n = '0') and (z80cpu_addr(2 downto 0) = "001") else
|
||||||
|
uart_datao when (z80cpu_iorq_n = '0') and (z80cpu_addr(2 downto 0) = "010") else
|
||||||
|
"XXXXXXXX";
|
||||||
|
|
||||||
|
z80cpu_inst : T80se port map (
|
||||||
|
RESET_n => z80cpu_reset_n,
|
||||||
|
CLK_n => CLK_16M,
|
||||||
|
CLKEN => z80cpu_clken,
|
||||||
|
WAIT_n => '1',
|
||||||
|
INT_n => '1',
|
||||||
|
NMI_n => '1',
|
||||||
|
BUSRQ_n => '1',
|
||||||
|
M1_n => z80cpu_m1_n,
|
||||||
|
MREQ_n => z80cpu_mreq_n,
|
||||||
|
IORQ_n => z80cpu_iorq_n,
|
||||||
|
RD_n => z80cpu_rd_n,
|
||||||
|
WR_n => z80cpu_wr_n,
|
||||||
|
RFSH_n => z80cpu_rfsh_n,
|
||||||
|
HALT_n => z80cpu_halt_n,
|
||||||
|
BUSAK_n => z80cpu_busak_n,
|
||||||
|
A => z80cpu_addr,
|
||||||
|
DI => z80cpu_datai,
|
||||||
|
DO => z80cpu_datao);
|
||||||
|
|
||||||
|
|
||||||
|
--LED <= z80cpu_iorq_n & z80cpu_rd_n & z80cpu_wr_n & z80cpu_addr(1) & "0000";
|
||||||
|
|
||||||
|
memory_inst: memory port map( DATA_I => z80cpu_datao,
|
||||||
|
DATA_O => memory_datao,
|
||||||
|
ADDR_I => z80cpu_addr,
|
||||||
|
RD_N => z80cpu_rd_n,
|
||||||
|
WR_N => z80cpu_wr_n,
|
||||||
|
MREQ_N => z80cpu_mreq_n,
|
||||||
|
CLK => CLK_16M,
|
||||||
|
CLKEN => z80cpu_clken,
|
||||||
|
VID_DATA_O => video_datai,
|
||||||
|
VID_ADDR_I => video_addro,
|
||||||
|
VID_CLK => CLK_25M);
|
||||||
|
|
||||||
|
|
||||||
|
keyb_iorq_n <= '0' when (z80cpu_iorq_n = '0') and (z80cpu_addr(2 downto 0) = "000") else
|
||||||
|
'1';
|
||||||
|
|
||||||
|
keyboard_inst : keyboard port map (
|
||||||
|
PS2_CLK => PS2_CLK1,
|
||||||
|
PS2_DATA => PS2_DATA1,
|
||||||
|
CLK_16M => CLK_16M,
|
||||||
|
IORQ_n => keyb_iorq_n,
|
||||||
|
RD_n => z80cpu_rd_n,
|
||||||
|
WR_n => z80cpu_wr_n,
|
||||||
|
DATA_I => z80cpu_datao,
|
||||||
|
DATA_O => keyb_datao,
|
||||||
|
DEBUG => LED);
|
||||||
|
|
||||||
|
uart_iorq_n <= '0' when (z80cpu_iorq_n = '0') and ((z80cpu_addr(2 downto 0) = "001") or
|
||||||
|
(z80cpu_addr(2 downto 0) = "010")) else
|
||||||
|
'1';
|
||||||
|
|
||||||
|
uart_inst : uart port map (
|
||||||
|
CLK_16M => CLK_16M,
|
||||||
|
DATA_I => z80cpu_datao,
|
||||||
|
ADDR_I => z80cpu_addr(1 downto 0),
|
||||||
|
RD_n => z80cpu_rd_n,
|
||||||
|
WR_n => z80cpu_wr_n,
|
||||||
|
IORQ_n => uart_iorq_n,
|
||||||
|
DATA_O => uart_datao,
|
||||||
|
SPI_MISO => SPI_MISO,
|
||||||
|
SPI_MOSI => SPI_MOSI,
|
||||||
|
SPI_SCK => SPI_SCK,
|
||||||
|
SPI_SS_B => SPI_SS_B,
|
||||||
|
DATAFLASH_WP => DATAFLASH_WP,
|
||||||
|
DATAFLASH_RST => DATAFLASH_RST,
|
||||||
|
LCD_DB => LCD_DB,
|
||||||
|
LCD_E => LCD_E,
|
||||||
|
LCD_RS => LCD_RS,
|
||||||
|
LCD_RW => LCD_RW,
|
||||||
|
BTN_NORTH => BTN_NORTH,
|
||||||
|
BTN_EAST => BTN_EAST,
|
||||||
|
BTN_SOUTH => BTN_SOUTH,
|
||||||
|
BTN_WEST => BTN_WEST,
|
||||||
|
ROT_CENTER => ROT_CENTER
|
||||||
|
);
|
||||||
|
|
||||||
|
video_inst : video port map (
|
||||||
|
CLK => CLK_25M,
|
||||||
|
DATA_I => video_datai,
|
||||||
|
ADDR_O => video_addro,
|
||||||
|
RED => red_out,
|
||||||
|
GREEN => green_out,
|
||||||
|
BLUE => blue_out,
|
||||||
|
VSYNC => vsync_out,
|
||||||
|
HSYNC => hsync_out);
|
||||||
|
|
||||||
|
RED <= red_out;
|
||||||
|
GREEN <= green_out;
|
||||||
|
BLUE <= blue_out;
|
||||||
|
HSYNC <= hsync_out;
|
||||||
|
VSYNC <= vsync_out;
|
||||||
|
end Behavioral;
|
||||||
|
|
||||||
155
toplevel_tb.vhd
Executable file
155
toplevel_tb.vhd
Executable file
@@ -0,0 +1,155 @@
|
|||||||
|
-------------------------------------------------------------------------------
|
||||||
|
-- Title : Testbench for design "toplevel"
|
||||||
|
-- Project :
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
-- File : toplevel_tb.vhd
|
||||||
|
-- Author : U-MATTHIAS-THINKP\Matthias <Matthias@matthias-thinkp>
|
||||||
|
-- Company :
|
||||||
|
-- Created : 2009-01-03
|
||||||
|
-- Last update: 2009-01-03
|
||||||
|
-- Platform :
|
||||||
|
-- Standard : VHDL'87
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
-- Description:
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
-- Copyright (c) 2009
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
-- Revisions :
|
||||||
|
-- Date Version Author Description
|
||||||
|
-- 2009-01-03 1.0 Matthias Created
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
library ieee;
|
||||||
|
use ieee.std_logic_1164.all;
|
||||||
|
|
||||||
|
use work.sim_bmppack.all;
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
entity toplevel_tb is
|
||||||
|
|
||||||
|
end toplevel_tb;
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
architecture tb of toplevel_tb is
|
||||||
|
|
||||||
|
component toplevel
|
||||||
|
port (
|
||||||
|
-- Clock (50 MHz)
|
||||||
|
CLKIN_50M : in STD_LOGIC;
|
||||||
|
-- NASBUS
|
||||||
|
ADDR : out STD_LOGIC_VECTOR (15 downto 0);
|
||||||
|
DATA : inout STD_LOGIC_VECTOR (7 downto 0);
|
||||||
|
M1_n : out STD_LOGIC;
|
||||||
|
MREQ_n : out STD_LOGIC;
|
||||||
|
IORQ_n : out STD_LOGIC;
|
||||||
|
WR_n : out STD_LOGIC;
|
||||||
|
RD_n : out STD_LOGIC;
|
||||||
|
RFSH_n : out STD_LOGIC;
|
||||||
|
HALT_n : out STD_LOGIC;
|
||||||
|
BUSAK_n : out STD_LOGIC;
|
||||||
|
RESET_n : in STD_LOGIC;
|
||||||
|
WAIT_n : in STD_LOGIC;
|
||||||
|
INT_n : in STD_LOGIC;
|
||||||
|
NMI_n : in STD_LOGIC;
|
||||||
|
BUSRQ_n : in STD_LOGIC;
|
||||||
|
-- VGA out
|
||||||
|
RED, GREEN, BLUE : out STD_LOGIC_VECTOR(3 downto 0);
|
||||||
|
HSYNC, VSYNC : out STD_LOGIC
|
||||||
|
);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
-- component ports
|
||||||
|
signal CLKIN_50M : STD_LOGIC := '0';
|
||||||
|
signal ADDR : STD_LOGIC_VECTOR (15 downto 0);
|
||||||
|
signal DATA : STD_LOGIC_VECTOR (7 downto 0);
|
||||||
|
signal M1_n : STD_LOGIC;
|
||||||
|
signal MREQ_n : STD_LOGIC;
|
||||||
|
signal IORQ_n : STD_LOGIC;
|
||||||
|
signal WR_n : STD_LOGIC;
|
||||||
|
signal RD_n : STD_LOGIC;
|
||||||
|
signal RFSH_n : STD_LOGIC;
|
||||||
|
signal HALT_n : STD_LOGIC;
|
||||||
|
signal BUSAK_n : STD_LOGIC;
|
||||||
|
signal RESET_n : STD_LOGIC := '0';
|
||||||
|
signal WAIT_n : STD_LOGIC := '1';
|
||||||
|
signal INT_n : STD_LOGIC := '1';
|
||||||
|
signal NMI_n : STD_LOGIC := '1';
|
||||||
|
signal BUSRQ_n : STD_LOGIC := '1';
|
||||||
|
signal RED, GREEN, BLUE : std_logic_vector(3 downto 0);
|
||||||
|
signal VSYNC, HSYNC : std_logic;
|
||||||
|
|
||||||
|
begin -- tb
|
||||||
|
|
||||||
|
-- component instantiation
|
||||||
|
DUT: toplevel
|
||||||
|
port map (
|
||||||
|
CLKIN_50M => CLKIN_50M,
|
||||||
|
ADDR => ADDR,
|
||||||
|
DATA => DATA,
|
||||||
|
M1_n => M1_n,
|
||||||
|
MREQ_n => MREQ_n,
|
||||||
|
IORQ_n => IORQ_n,
|
||||||
|
WR_n => WR_n,
|
||||||
|
RD_n => RD_n,
|
||||||
|
RFSH_n => RFSH_n,
|
||||||
|
HALT_n => HALT_n,
|
||||||
|
BUSAK_n => BUSAK_n,
|
||||||
|
RESET_n => RESET_n,
|
||||||
|
WAIT_n => WAIT_n,
|
||||||
|
INT_n => INT_n,
|
||||||
|
NMI_n => NMI_n,
|
||||||
|
BUSRQ_n => BUSRQ_n,
|
||||||
|
RED => RED,
|
||||||
|
GREEN => GREEN,
|
||||||
|
BLUE => BLUE,
|
||||||
|
VSYNC => VSYNC,
|
||||||
|
HSYNC => HSYNC
|
||||||
|
);
|
||||||
|
|
||||||
|
-- clock generation
|
||||||
|
CLKIN_50M <= not CLKIN_50M after 10 ns;
|
||||||
|
|
||||||
|
-- waveform generation
|
||||||
|
WaveGen_Proc: process
|
||||||
|
begin
|
||||||
|
-- insert signal assignments here
|
||||||
|
wait for 100 ns;
|
||||||
|
RESET_n <= '1';
|
||||||
|
wait;
|
||||||
|
end process WaveGen_Proc;
|
||||||
|
|
||||||
|
VGARead: process
|
||||||
|
variable i: integer := 0;
|
||||||
|
variable pixeldata : std_logic_vector(23 downto 0);
|
||||||
|
begin
|
||||||
|
ReadFile("vga.bmp");
|
||||||
|
wait until CLKIN_50M = '1'; -- wait for uut to stat
|
||||||
|
wait for 260 ns; -- wait for vga frame to start (depends
|
||||||
|
-- on latency of UUT)
|
||||||
|
while true loop
|
||||||
|
for y in 479 downto 0 loop
|
||||||
|
for x in 0 to 639 loop
|
||||||
|
pixeldata := RED & "0000" & GREEN & "0000" & BLUE & "0000";
|
||||||
|
SetPixel(x, y, pixeldata);
|
||||||
|
wait for 40 ns;
|
||||||
|
end loop; -- x
|
||||||
|
wait for 6400 ns;
|
||||||
|
end loop; -- x
|
||||||
|
wait for 1440 us;
|
||||||
|
WriteFile("vga" & integer'image(i) & ".bmp");
|
||||||
|
i := i + 1;
|
||||||
|
end loop;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
end tb;
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
configuration toplevel_tb_tb_cfg of toplevel_tb is
|
||||||
|
for tb
|
||||||
|
end for;
|
||||||
|
end toplevel_tb_tb_cfg;
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
259
uart.vhd
Executable file
259
uart.vhd
Executable file
@@ -0,0 +1,259 @@
|
|||||||
|
----------------------------------------------------------------------------------
|
||||||
|
-- Company:
|
||||||
|
-- Engineer:
|
||||||
|
--
|
||||||
|
-- Create Date: 15:52:22 12/30/2008
|
||||||
|
-- Design Name:
|
||||||
|
-- Module Name: toplevel - Behavioral
|
||||||
|
-- Project Name:
|
||||||
|
-- Target Devices:
|
||||||
|
-- Tool versions:
|
||||||
|
-- Description:
|
||||||
|
--
|
||||||
|
-- Dependencies:
|
||||||
|
--
|
||||||
|
-- Revision:
|
||||||
|
-- Revision 0.01 - File Created
|
||||||
|
-- Additional Comments:
|
||||||
|
--
|
||||||
|
----------------------------------------------------------------------------------
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.STD_LOGIC_1164.ALL;
|
||||||
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
||||||
|
use IEEE.NUMERIC_STD.ALL;
|
||||||
|
|
||||||
|
---- Uncomment the following library declaration if instantiating
|
||||||
|
---- any Xilinx primitives in this code.
|
||||||
|
library UNISIM;
|
||||||
|
use UNISIM.VComponents.all;
|
||||||
|
|
||||||
|
entity uart is
|
||||||
|
|
||||||
|
port (
|
||||||
|
CLK_16M : in std_logic;
|
||||||
|
DATA_I : in std_logic_vector(7 downto 0);
|
||||||
|
ADDR_I : in std_logic_vector(1 downto 0);
|
||||||
|
IORQ_n, RD_n, WR_n : in std_logic;
|
||||||
|
DATA_O : out std_logic_vector(7 downto 0);
|
||||||
|
-- SPI for Atmel Dataflash
|
||||||
|
SPI_MISO : in std_logic;
|
||||||
|
SPI_MOSI : out std_logic;
|
||||||
|
SPI_SCK : out std_logic;
|
||||||
|
SPI_SS_B : out std_logic := '1';
|
||||||
|
DATAFLASH_WP : out std_logic;
|
||||||
|
DATAFLASH_RST : out std_logic;
|
||||||
|
-- LCD interface
|
||||||
|
LCD_DB : inout std_logic_vector(7 downto 0);
|
||||||
|
LCD_E, LCD_RS, LCD_RW : out std_logic;
|
||||||
|
-- Buttons
|
||||||
|
BTN_NORTH : in STD_LOGIC;
|
||||||
|
BTN_SOUTH : in STD_LOGIC;
|
||||||
|
BTN_EAST : in STD_LOGIC;
|
||||||
|
BTN_WEST : in STD_LOGIC;
|
||||||
|
ROT_CENTER : in STD_LOGIC);
|
||||||
|
|
||||||
|
end uart;
|
||||||
|
|
||||||
|
architecture Behavioral of uart is
|
||||||
|
|
||||||
|
component kcpsm3
|
||||||
|
port (
|
||||||
|
address : out std_logic_vector(9 downto 0);
|
||||||
|
instruction : in std_logic_vector(17 downto 0);
|
||||||
|
port_id : out std_logic_vector(7 downto 0);
|
||||||
|
write_strobe : out std_logic;
|
||||||
|
out_port : out std_logic_vector(7 downto 0);
|
||||||
|
read_strobe : out std_logic;
|
||||||
|
in_port : in std_logic_vector(7 downto 0);
|
||||||
|
interrupt : in std_logic;
|
||||||
|
interrupt_ack : out std_logic;
|
||||||
|
reset : in std_logic;
|
||||||
|
clk : in std_logic);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component uartprog
|
||||||
|
port (
|
||||||
|
address : in std_logic_vector(9 downto 0);
|
||||||
|
instruction : out std_logic_vector(17 downto 0);
|
||||||
|
clk : in std_logic);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component fifo16x8
|
||||||
|
port (
|
||||||
|
DATAIN : in STD_LOGIC_VECTOR (7 downto 0);
|
||||||
|
WRITESTB : in STD_LOGIC;
|
||||||
|
DATAOUT : out STD_LOGIC_VECTOR (7 downto 0);
|
||||||
|
READSTB : in STD_LOGIC;
|
||||||
|
CLK : in STD_LOGIC;
|
||||||
|
FULL : out STD_LOGIC;
|
||||||
|
EMPTY : out STD_LOGIC);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
component spi
|
||||||
|
port (
|
||||||
|
MISO : in std_logic;
|
||||||
|
MOSI, SCK : out std_logic;
|
||||||
|
DATA_I : in std_logic_vector(7 downto 0);
|
||||||
|
DATA_O : out std_logic_vector(7 downto 0);
|
||||||
|
START : in std_logic;
|
||||||
|
BUSY : out std_logic;
|
||||||
|
CLK : in std_logic);
|
||||||
|
end component;
|
||||||
|
|
||||||
|
signal receive_r, transmit_r : std_logic_vector(7 downto 0);
|
||||||
|
signal drt_r, drr_r : std_logic := '0';
|
||||||
|
|
||||||
|
signal kcpsm3_addr : std_logic_vector(9 downto 0);
|
||||||
|
signal kcpsm3_instr : std_logic_vector(17 downto 0);
|
||||||
|
signal kcpsm3_portid, kcpsm3_outport, kcpsm3_inport : std_logic_vector(7 downto 0);
|
||||||
|
signal kcpsm3_wrstb, kcpsm3_rdstb : std_logic;
|
||||||
|
|
||||||
|
attribute iob : string;
|
||||||
|
signal lcdctrl_r : std_logic_vector(2 downto 0) := "000";
|
||||||
|
signal lcdout_r : std_logic_vector(7 downto 0) := X"00";
|
||||||
|
attribute iob of lcdout_r : signal is "true";
|
||||||
|
attribute iob of lcdctrl_r : signal is "true";
|
||||||
|
|
||||||
|
signal spi_datao : std_logic_vector(7 downto 0);
|
||||||
|
signal spi_start, spi_busy : std_logic;
|
||||||
|
|
||||||
|
signal iorq_old : std_logic := '0';
|
||||||
|
|
||||||
|
signal fifo_t_wrstb, fifo_t_rdstb, fifo_t_full, fifo_t_empty, fifo_r_wrstb, fifo_r_rdstb, fifo_r_full, fifo_r_empty : std_logic;
|
||||||
|
signal fifo_r_din, fifo_r_dout, fifo_t_din, fifo_t_dout : std_logic_vector(7 downto 0);
|
||||||
|
begin -- Behavioral
|
||||||
|
|
||||||
|
kcpsm3_inst : kcpsm3 port map (
|
||||||
|
address => kcpsm3_addr,
|
||||||
|
instruction => kcpsm3_instr,
|
||||||
|
port_id => kcpsm3_portid,
|
||||||
|
write_strobe => kcpsm3_wrstb,
|
||||||
|
out_port => kcpsm3_outport,
|
||||||
|
read_strobe => kcpsm3_rdstb,
|
||||||
|
in_port => kcpsm3_inport,
|
||||||
|
interrupt => '0',
|
||||||
|
interrupt_ack => open,
|
||||||
|
reset => '0',
|
||||||
|
clk => CLK_16M);
|
||||||
|
|
||||||
|
prog_inst : uartprog port map (
|
||||||
|
address => kcpsm3_addr,
|
||||||
|
instruction => kcpsm3_instr,
|
||||||
|
clk => CLK_16M);
|
||||||
|
|
||||||
|
spi_inst : spi port map (
|
||||||
|
MISO => SPI_MISO,
|
||||||
|
MOSI => SPI_MOSI,
|
||||||
|
SCK => SPI_SCK,
|
||||||
|
DATA_I => kcpsm3_outport,
|
||||||
|
DATA_O => spi_datao,
|
||||||
|
START => spi_start,
|
||||||
|
BUSY => spi_busy,
|
||||||
|
CLK => CLK_16M);
|
||||||
|
|
||||||
|
spi_start <= '1' when (kcpsm3_wrstb = '1') and (kcpsm3_portid = X"02") else
|
||||||
|
'0';
|
||||||
|
|
||||||
|
spi_iface: process (CLK_16M)
|
||||||
|
begin -- process spi_iface
|
||||||
|
if rising_edge(CLK_16M) then
|
||||||
|
if (kcpsm3_wrstb = '1') then
|
||||||
|
if (kcpsm3_portid = X"03") then
|
||||||
|
SPI_SS_B <= kcpsm3_outport(0);
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
lcd_iface: process (CLK_16M)
|
||||||
|
begin -- process lcd_iface
|
||||||
|
if rising_edge(CLK_16M) then
|
||||||
|
if (kcpsm3_wrstb = '1') then
|
||||||
|
if (kcpsm3_portid = X"04") then
|
||||||
|
lcdctrl_r <= kcpsm3_outport(2 downto 0);
|
||||||
|
elsif kcpsm3_portid = X"05" then
|
||||||
|
lcdout_r <= kcpsm3_outport;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process lcd_iface;
|
||||||
|
|
||||||
|
kcpsm3_inport <= fifo_t_dout when kcpsm3_portid = X"00" else
|
||||||
|
"000000" & fifo_t_empty & fifo_r_full when kcpsm3_portid = X"01" else
|
||||||
|
spi_datao when kcpsm3_portid = X"02" else
|
||||||
|
"0000000" & spi_busy when kcpsm3_portid = X"03" else
|
||||||
|
LCD_DB when kcpsm3_portid = X"05" else
|
||||||
|
"00000" & lcdctrl_r when kcpsm3_portid = X"04" else
|
||||||
|
"000" & ROT_CENTER & BTN_NORTH & BTN_EAST & BTN_SOUTH & BTN_WEST when kcpsm3_portid = X"06" else
|
||||||
|
"XXXXXXXX";
|
||||||
|
|
||||||
|
process (CLK_16M)
|
||||||
|
begin
|
||||||
|
if rising_edge(CLK_16M) then
|
||||||
|
fifo_r_wrstb <= '0';
|
||||||
|
fifo_t_rdstb <= '0';
|
||||||
|
if (kcpsm3_wrstb = '1') then
|
||||||
|
if (kcpsm3_portid = X"00") then
|
||||||
|
fifo_r_din <= kcpsm3_outport;
|
||||||
|
fifo_r_wrstb <= '1';
|
||||||
|
end if;
|
||||||
|
elsif (kcpsm3_rdstb = '1') then
|
||||||
|
if (kcpsm3_portid = X"00") then
|
||||||
|
fifo_t_rdstb <= '1';
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
fifo16x8_inst_transmit : fifo16x8 port map (
|
||||||
|
DATAIN => fifo_t_din,
|
||||||
|
WRITESTB => fifo_t_wrstb,
|
||||||
|
DATAOUT => fifo_t_dout,
|
||||||
|
READSTB => fifo_t_rdstb,
|
||||||
|
CLK => CLK_16M,
|
||||||
|
FULL => fifo_t_full,
|
||||||
|
EMPTY => fifo_t_empty);
|
||||||
|
|
||||||
|
fifo16x8_inst_receive : fifo16x8 port map (
|
||||||
|
DATAIN => fifo_r_din,
|
||||||
|
WRITESTB => fifo_r_wrstb,
|
||||||
|
DATAOUT => fifo_r_dout,
|
||||||
|
READSTB => fifo_r_rdstb,
|
||||||
|
CLK => CLK_16M,
|
||||||
|
FULL => fifo_r_full,
|
||||||
|
EMPTY => fifo_r_empty);
|
||||||
|
|
||||||
|
z80bus: process (CLK_16M)
|
||||||
|
begin
|
||||||
|
if rising_edge(CLK_16M) then
|
||||||
|
fifo_r_rdstb <= '0';
|
||||||
|
fifo_t_wrstb <= '0';
|
||||||
|
if (iorq_old = '1') and (IORQ_n = '0') then
|
||||||
|
if ADDR_I = "01" then
|
||||||
|
if RD_n = '0' then -- read receiver register
|
||||||
|
DATA_O <= fifo_r_dout;
|
||||||
|
fifo_r_rdstb <= '1';
|
||||||
|
elsif WR_n = '0' then -- transmitter buffer load
|
||||||
|
fifo_t_din <= DATA_I;
|
||||||
|
fifo_t_wrstb <= '1';
|
||||||
|
end if;
|
||||||
|
elsif ADDR_I = "10" then
|
||||||
|
if RD_n = '0' then -- read status flags
|
||||||
|
DATA_O <= not fifo_r_empty & not fifo_t_full & "XX000X"; -- DR, TBRE, x, x, FE, PE, OE, x
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
iorq_old <= IORQ_n;
|
||||||
|
end if;
|
||||||
|
end process;
|
||||||
|
|
||||||
|
LCD_DB <= lcdout_r when lcdctrl_r(2) = '0' else
|
||||||
|
"ZZZZZZZZ";
|
||||||
|
LCD_E <= lcdctrl_r(0);
|
||||||
|
LCD_RS <= lcdctrl_r(1);
|
||||||
|
LCD_RW <= lcdctrl_r(2);
|
||||||
|
|
||||||
|
DATAFLASH_RST <= '1';
|
||||||
|
DATAFLASH_WP <= '1';
|
||||||
|
|
||||||
|
end Behavioral;
|
||||||
2
uart_prog.psm
Executable file
2
uart_prog.psm
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
done:
|
||||||
|
JUMP done
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user