@@ -22,12 +22,51 @@ module tb ();
22
22
wire [3 :0 ] controls_in;
23
23
wire [7 :0 ] controls_out = io_out[7 :0 ];
24
24
wire [15 :0 ] addr = io_out[23 :8 ];
25
- wire [7 :0 ] data_in;
26
- wire [7 :0 ] data_out = io_out[31 :24 ];
27
- wire [7 :0 ] data_oe =~ io_oeb[31 :24 ];
25
+
28
26
assign io_in [35 :32 ] = controls_in;
29
- assign io_in [31 :24 ] = data_in;
30
-
27
+
28
+ // Z80 has a peculiar order of the pins for the data bus
29
+ // <-> D4 | io[24]
30
+ // <-> D3 | io[25]
31
+ // <-> D5 | io[26]
32
+ // <-> D6 | io[27]
33
+ // VCC_5V0 |
34
+ // <-> D2 | io[28]
35
+ // <-> D7 | io[29]
36
+ // <-> D0 | io[30]
37
+ // <-> D1 | io[31]
38
+
39
+ wire [7 :0 ] data_in;
40
+ wire [7 :0 ] data_out;
41
+ wire [7 :0 ] data_oe;
42
+
43
+ assign io_in [24 ] = data_in[4 ];
44
+ assign io_in [25 ] = data_in[3 ];
45
+ assign io_in [26 ] = data_in[5 ];
46
+ assign io_in [27 ] = data_in[6 ];
47
+ assign io_in [28 ] = data_in[2 ];
48
+ assign io_in [29 ] = data_in[7 ];
49
+ assign io_in [30 ] = data_in[0 ];
50
+ assign io_in [31 ] = data_in[1 ];
51
+
52
+ assign data_out[4 ] = io_out[24 ];
53
+ assign data_out[3 ] = io_out[25 ];
54
+ assign data_out[5 ] = io_out[26 ];
55
+ assign data_out[6 ] = io_out[27 ];
56
+ assign data_out[2 ] = io_out[28 ];
57
+ assign data_out[7 ] = io_out[29 ];
58
+ assign data_out[0 ] = io_out[30 ];
59
+ assign data_out[1 ] = io_out[31 ];
60
+
61
+ assign data_oe [4 ] = ~ io_oeb[24 ];
62
+ assign data_oe [3 ] = ~ io_oeb[25 ];
63
+ assign data_oe [5 ] = ~ io_oeb[26 ];
64
+ assign data_oe [6 ] = ~ io_oeb[27 ];
65
+ assign data_oe [2 ] = ~ io_oeb[28 ];
66
+ assign data_oe [7 ] = ~ io_oeb[29 ];
67
+ assign data_oe [0 ] = ~ io_oeb[30 ];
68
+ assign data_oe [1 ] = ~ io_oeb[31 ];
69
+
31
70
// Replace tt_um_example with your module name:
32
71
ci2406_z80 user_project (
33
72
// Include power ports for the Gate Level test:
0 commit comments