OpenCores
URL https://opencores.org/ocsvn/6809_6309_compatible_core/6809_6309_compatible_core/trunk

Subversion Repositories 6809_6309_compatible_core

[/] [6809_6309_compatible_core/] [trunk/] [syn/] [lattice/] [CC3_top.v] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ale500
/*
2
 * Synthesis top Module for the MC6809/HD6309 compatible core.
3
 * This top module has been tested in the MachXO2-7000HE breakout board
4
 * (c) 2013 R.A. Paz Schmidt rapazschmidt@gmail.com
5
 * Distributed under the terms of the Lesser GPL
6
 *
7
 * Implemented using diamond 2.1
8
 */
9
 
10
module CC3_top(
11
        input wire clk40_i,
12
        /* CPU Bus */
13
        output wire cpuclk_o,
14
        output wire reset_o,
15
        output wire [15:0] addr_o,
16
        output wire oen_o,
17
        output wire wen_o,
18
        output wire cen_o,
19
        output wire [7:0] data_io,
20
        output wire [5:0] state_o,
21
        /* Debug */
22
        output wire [7:0] leds_o,
23
        /* VGA output */
24
        output wire hsync_o,
25
        output wire vsync_o,
26
        output wire red_o,
27
        output wire green_o,
28
        output wire blue_o
29
 
30
        );
31
 
32
reg cpu_clk, clk_div2;
33
reg [3:0] reset_cnt;
34
reg [7:0] leds_r;
35
 
36
/* CPU IO */
37
wire [15:0] cpu0_addr_o, cpu1_addr_o;
38
wire [7:0] cpu0_data_in, cpu0_data_out, cpu1_data_in, cpu1_data_out;
39
wire cpu0_we, cpu0_oe, cpu1_we, cpu1_oe, cpu_reset;
40
wire [5:0] cpu0_state;
41
/* Module io */
42
 
43
assign addr_o = cpu0_addr_o;
44
assign data_io = cpu0_we ? cpu0_data_out:cpu0_data_in;
45
 
46
assign hsync_o = 0;
47
assign vsync_o = 0;
48
assign red_o = 0;
49
assign green_o = 0;
50
assign blue_o = 0;
51
assign leds_o = leds_r;
52
 
53
assign oen_o = !cpu0_oe;
54
assign wen_o = !cpu0_we;
55
assign cen_o = !(cpu0_oe | cpu0_we);
56
assign cpuclk_o = cpu_clk;
57
assign reset_o = cpu_reset;
58
assign state_o = cpu0_state;
59
 
60
always @(posedge clk40_i)
61
        cpu_clk <= !cpu_clk;
62
 
63
assign cpu_reset = reset_cnt != 4'd14;
64
 
65
always @(posedge cpu_clk)
66
        begin
67
                if (reset_cnt != 4'd14)
68
                        reset_cnt <= reset_cnt + 4'h1;
69
                if (cpu0_we)
70
                        leds_r <= cpu0_data_out;
71
        end
72
 
73
 
74
MC6809_cpu cpu0(
75
        .cpu_clk(cpu_clk),
76
        .cpu_reset(cpu_reset),
77
        .cpu_nmi_n(1'b0),
78
        .cpu_irq_n(1'b0),
79
        .cpu_firq_n(1'b0),
80
        .cpu_state_o(cpu0_state),
81
        .cpu_we_o(cpu0_we),
82
        .cpu_oe_o(cpu0_oe),
83
        .cpu_addr_o(cpu0_addr_o),
84
        .cpu_data_i(cpu0_data_in),
85
        .cpu_data_o(cpu0_data_out)
86
        );
87
 
88
/* Memory */
89
 
90
bios2k bios(
91
        .DataInA(cpu0_data_out[7:0]),
92
        .DataInB(cpu1_data_out[7:0]),
93
        .AddressA(cpu0_addr_o[10:0]),
94
        .AddressB(cpu1_addr_o[10:0]),
95
        .ClockA(clk40_i),
96
        .ClockB(clk40_i),
97
    .ClockEnA((cpu0_we | cpu0_oe)),
98
        .ClockEnB(1'b0),
99
        .WrA(cpu0_we),
100
        .WrB(1'b0),//cpu1_we), 
101
        .ResetA(1'b0),
102
        .ResetB(1'b0),
103
        .QA(cpu0_data_in),
104
        .QB()
105
        );
106
 
107
 
108
 
109
 
110
 
111
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.