mirror of
https://github.com/hoglet67/AtomBusMon.git
synced 2024-12-21 09:29:52 +00:00
Refactor: 1st stage
Change-Id: I8889ff76ce802099fae67c147e110356adbd23ac
This commit is contained in:
parent
8a857ae45e
commit
b563a030ee
1
.gitignore
vendored
1
.gitignore
vendored
@ -22,6 +22,7 @@ ipcore_dir/WatchEvents.vho
|
||||
ipcore_dir/WatchEvents/
|
||||
ipcore_dir/WatchEvents_flist.txt
|
||||
ipcore_dir/WatchEvents_xmdf.tcl
|
||||
ipcore_dir/gen_WatchEvents.tcl
|
||||
ipcore_dir/_xmsgs/
|
||||
ipcore_dir/coregen.cgp
|
||||
ipcore_dir/coregen.log
|
||||
|
@ -21,11 +21,11 @@
|
||||
</file>
|
||||
<file xil_pn:name="src/DCM/DCM0.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="33"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="51"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="53"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/uC/AVR8.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="34"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="52"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="51"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/Core/avr_core.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="35"/>
|
||||
@ -119,10 +119,6 @@
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="59"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="12"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/Memory/XDM4Kx8.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="60"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="43"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/Memory/XMemCompPack.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="63"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="42"/>
|
||||
@ -215,10 +211,6 @@
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="97"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="33"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/Memory/XPM8Kx16.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="134"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="41"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AtomBusMon.bmm" xil_pn:type="FILE_BMM">
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
|
||||
</file>
|
||||
@ -230,10 +222,6 @@
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="107"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="28"/>
|
||||
</file>
|
||||
<file xil_pn:name="ipcore_dir/WatchEvents.xco" xil_pn:type="FILE_COREGEN">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="108"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="53"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/BusMonCore.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="116"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="54"/>
|
||||
@ -241,6 +229,18 @@
|
||||
<file xil_pn:name="src/AtomBusMon.ucf" xil_pn:type="FILE_UCF">
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/Memory/XDM2Kx8.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="117"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="43"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/Memory/XPM9Kx16.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="118"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="41"/>
|
||||
</file>
|
||||
<file xil_pn:name="ipcore_dir/WatchEvents.xco" xil_pn:type="FILE_COREGEN">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="122"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="52"/>
|
||||
</file>
|
||||
<file xil_pn:name="ipcore_dir/WatchEvents.xise" xil_pn:type="FILE_COREGENISE">
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
|
||||
</file>
|
||||
|
@ -36,7 +36,7 @@
|
||||
</file>
|
||||
<file xil_pn:name="src/T6502/T65.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="6"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="57"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="56"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/oho_dy1/Oho_Dy1.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="7"/>
|
||||
@ -216,7 +216,7 @@
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/uC/AVR8.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="117"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="55"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="54"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/uC/external_mux.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="119"/>
|
||||
@ -236,11 +236,11 @@
|
||||
</file>
|
||||
<file xil_pn:name="src/DCM/DCM0.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="124"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="54"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="57"/>
|
||||
</file>
|
||||
<file xil_pn:name="ipcore_dir/WatchEvents.xco" xil_pn:type="FILE_COREGEN">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="125"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="56"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="55"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AtomCpuMon.bmm" xil_pn:type="FILE_BMM">
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
|
||||
@ -365,6 +365,7 @@
|
||||
<property xil_pn:name="Global Optimization Goal" xil_pn:value="AllClockNets" xil_pn:valueState="default"/>
|
||||
<property xil_pn:name="Global Set/Reset Port Name" xil_pn:value="GSR_PORT" xil_pn:valueState="default"/>
|
||||
<property xil_pn:name="Global Tristate Port Name" xil_pn:value="GTS_PORT" xil_pn:valueState="default"/>
|
||||
<property xil_pn:name="HDL Instantiation Template Target Language" xil_pn:value="VHDL" xil_pn:valueState="default"/>
|
||||
<property xil_pn:name="Hierarchy Separator" xil_pn:value="/" xil_pn:valueState="default"/>
|
||||
<property xil_pn:name="ISim UUT Instance Name" xil_pn:value="UUT" xil_pn:valueState="default"/>
|
||||
<property xil_pn:name="Ignore User Timing Constraints Map" xil_pn:value="false" xil_pn:valueState="default"/>
|
||||
|
@ -28,7 +28,7 @@
|
||||
</file>
|
||||
<file xil_pn:name="src/DCM/DCM0.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="61"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="48"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="52"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/oho_dy1/Oho_Dy1.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="62"/>
|
||||
@ -36,7 +36,7 @@
|
||||
</file>
|
||||
<file xil_pn:name="ipcore_dir/WatchEvents.xco" xil_pn:type="FILE_COREGEN">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="63"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="50"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="49"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/CommonPacks/avr_adr_pack.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="70"/>
|
||||
@ -200,7 +200,7 @@
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/uC/AVR8.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="120"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="49"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="48"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/uC/external_mux.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="122"/>
|
||||
@ -220,14 +220,14 @@
|
||||
</file>
|
||||
<file xil_pn:name="src/SYS09/cpu09l.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="70"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="51"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="50"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/MC6809ECpuMon.bmm" xil_pn:type="FILE_BMM">
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/DCM/DCM1.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="115"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="52"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="51"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/Memory/XDM2Kx8.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="116"/>
|
||||
|
@ -24,7 +24,7 @@
|
||||
</file>
|
||||
<file xil_pn:name="src/T80/T80a.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="3"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="56"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="55"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/T80/T80.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="4"/>
|
||||
@ -52,7 +52,7 @@
|
||||
</file>
|
||||
<file xil_pn:name="src/DCM/DCM0.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="61"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="53"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="56"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/oho_dy1/Oho_Dy1.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="62"/>
|
||||
@ -60,7 +60,7 @@
|
||||
</file>
|
||||
<file xil_pn:name="ipcore_dir/WatchEvents.xco" xil_pn:type="FILE_COREGEN">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="63"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="55"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="54"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/CommonPacks/avr_adr_pack.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="70"/>
|
||||
@ -236,7 +236,7 @@
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/uC/AVR8.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="120"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="54"/>
|
||||
<association xil_pn:name="Implementation" xil_pn:seqID="53"/>
|
||||
</file>
|
||||
<file xil_pn:name="src/AVR8/uC/external_mux.vhd" xil_pn:type="FILE_VHDL">
|
||||
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="122"/>
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,7 +1,7 @@
|
||||
##############################################################
|
||||
#
|
||||
# Xilinx Core Generator version 14.7
|
||||
# Date: Sat Jun 20 06:28:53 2015
|
||||
# Date: Sat Oct 31 12:34:33 2015
|
||||
#
|
||||
##############################################################
|
||||
#
|
||||
|
@ -52,8 +52,8 @@
|
||||
<!-- -->
|
||||
<property xil_pn:name="PROP_DesignName" xil_pn:value="WatchEvents" xil_pn:valueState="non-default"/>
|
||||
<property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan3e" xil_pn:valueState="default"/>
|
||||
<property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2015-06-20T07:31:35" xil_pn:valueState="non-default"/>
|
||||
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="D9477A1DD499DA00CBCF8BE78B7D99A6" xil_pn:valueState="non-default"/>
|
||||
<property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2015-10-31T12:36:59" xil_pn:valueState="non-default"/>
|
||||
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="DA4EA14AB11DA8A53617EE9B6673579E" xil_pn:valueState="non-default"/>
|
||||
<property xil_pn:name="PROP_intWorkingDirLocWRTProjDir" xil_pn:value="Same" xil_pn:valueState="non-default"/>
|
||||
<property xil_pn:name="PROP_intWorkingDirUsed" xil_pn:value="No" xil_pn:valueState="non-default"/>
|
||||
</properties>
|
||||
|
@ -63,46 +63,64 @@ end AtomBusMon;
|
||||
|
||||
architecture behavioral of AtomBusMon is
|
||||
|
||||
signal clock_avr : std_logic;
|
||||
|
||||
signal Rdy_int : std_logic;
|
||||
|
||||
begin
|
||||
|
||||
inst_dcm0 : entity work.DCM0 port map(
|
||||
CLKIN_IN => clock49,
|
||||
CLK0_OUT => clock_avr,
|
||||
CLK0_OUT1 => open,
|
||||
CLK2X_OUT => open
|
||||
);
|
||||
|
||||
mon : entity work.BusMonCore port map (
|
||||
clock49 => clock49,
|
||||
Addr => Addr,
|
||||
Data => (others => '0'),
|
||||
Phi2 => Phi2,
|
||||
Rd_n => not RNW,
|
||||
Wr_n => RNW,
|
||||
Sync => Sync,
|
||||
Rdy => Rdy,
|
||||
nRSTin => nRST,
|
||||
nRSTout => nRST,
|
||||
CountCycle => Rdy,
|
||||
Regs => (others => '0'),
|
||||
RdMemOut=> open,
|
||||
WrMemOut=> open,
|
||||
RdIOOut => open,
|
||||
WrIOOut => open,
|
||||
AddrOut => open,
|
||||
DataOut => open,
|
||||
DataIn => (others => '0'),
|
||||
trig => trig,
|
||||
lcd_rs => open,
|
||||
lcd_rw => open,
|
||||
lcd_e => open,
|
||||
lcd_db => open,
|
||||
avr_RxD => avr_RxD,
|
||||
avr_TxD => avr_TxD,
|
||||
sw1 => sw1,
|
||||
nsw2 => nsw2,
|
||||
led3 => led3,
|
||||
led6 => led6,
|
||||
led8 => led8,
|
||||
tmosi => tmosi,
|
||||
tdin => tdin,
|
||||
tcclk => tcclk,
|
||||
SS_Step => open,
|
||||
SS_Single => open
|
||||
clock_avr => clock_avr,
|
||||
busmon_clk => Phi2,
|
||||
busmon_clken => '1',
|
||||
cpu_clk => not Phi2,
|
||||
cpu_clken => '1',
|
||||
Addr => Addr,
|
||||
Data => (others => '0'),
|
||||
Rd_n => not RNW,
|
||||
Wr_n => RNW,
|
||||
RdIO_n => '1',
|
||||
WrIO_n => '1',
|
||||
Sync => Sync,
|
||||
Rdy => Rdy_int,
|
||||
nRSTin => nRST,
|
||||
nRSTout => nRST,
|
||||
CountCycle => Rdy_int,
|
||||
Regs => (others => '0'),
|
||||
RdMemOut => open,
|
||||
WrMemOut => open,
|
||||
RdIOOut => open,
|
||||
WrIOOut => open,
|
||||
AddrOut => open,
|
||||
DataOut => open,
|
||||
DataIn => (others => '0'),
|
||||
Done => '1',
|
||||
trig => trig,
|
||||
lcd_rs => open,
|
||||
lcd_rw => open,
|
||||
lcd_e => open,
|
||||
lcd_db => open,
|
||||
avr_RxD => avr_RxD,
|
||||
avr_TxD => avr_TxD,
|
||||
sw1 => sw1,
|
||||
nsw2 => nsw2,
|
||||
led3 => led3,
|
||||
led6 => led6,
|
||||
led8 => led8,
|
||||
tmosi => tmosi,
|
||||
tdin => tdin,
|
||||
tcclk => tcclk,
|
||||
SS_Step => open,
|
||||
SS_Single => open
|
||||
);
|
||||
Rdy <= Rdy_int;
|
||||
|
||||
end behavioral;
|
||||
|
||||
|
@ -71,6 +71,8 @@ entity AtomCpuMon is
|
||||
end AtomCpuMon;
|
||||
|
||||
architecture behavioral of AtomCpuMon is
|
||||
|
||||
signal clock_avr : std_logic;
|
||||
|
||||
signal Din : std_logic_vector(7 downto 0);
|
||||
signal Dout : std_logic_vector(7 downto 0);
|
||||
@ -110,49 +112,59 @@ architecture behavioral of AtomCpuMon is
|
||||
|
||||
begin
|
||||
|
||||
mon : entity work.BusMonCore port map (
|
||||
clock49 => clock49,
|
||||
Addr => Addr_int,
|
||||
Data => Data,
|
||||
Phi2 => busmon_clk,
|
||||
Rd_n => not R_W_n_int,
|
||||
Wr_n => R_W_n_int,
|
||||
RdIO_n => '1',
|
||||
WrIO_n => '1',
|
||||
Sync => Sync_int,
|
||||
Rdy => open,
|
||||
nRSTin => Res_n,
|
||||
nRSTout => Res_n,
|
||||
CountCycle => CountCycle,
|
||||
trig => trig,
|
||||
lcd_rs => open,
|
||||
lcd_rw => open,
|
||||
lcd_e => open,
|
||||
lcd_db => open,
|
||||
avr_RxD => avr_RxD,
|
||||
avr_TxD => avr_TxD,
|
||||
sw1 => sw1,
|
||||
nsw2 => nsw2,
|
||||
led3 => led3,
|
||||
led6 => led6,
|
||||
led8 => led8,
|
||||
tmosi => tmosi,
|
||||
tdin => tdin,
|
||||
tcclk => tcclk,
|
||||
Regs => Regs1,
|
||||
RdMemOut=> memory_rd,
|
||||
WrMemOut=> memory_wr,
|
||||
RdIOOut => open,
|
||||
WrIOOut => open,
|
||||
AddrOut => memory_addr,
|
||||
DataOut => memory_dout,
|
||||
DataIn => memory_din,
|
||||
Done => memory_done,
|
||||
SS_Step => SS_Step,
|
||||
SS_Single => SS_Single
|
||||
inst_dcm0 : entity work.DCM0 port map(
|
||||
CLKIN_IN => clock49,
|
||||
CLK0_OUT => clock_avr,
|
||||
CLK0_OUT1 => open,
|
||||
CLK2X_OUT => open
|
||||
);
|
||||
|
||||
mon : entity work.BusMonCore port map (
|
||||
clock_avr => clock_avr,
|
||||
busmon_clk => busmon_clk,
|
||||
busmon_clken => '1',
|
||||
cpu_clk => cpu_clk,
|
||||
cpu_clken => '1',
|
||||
Addr => Addr_int,
|
||||
Data => Data,
|
||||
Rd_n => not R_W_n_int,
|
||||
Wr_n => R_W_n_int,
|
||||
RdIO_n => '1',
|
||||
WrIO_n => '1',
|
||||
Sync => Sync_int,
|
||||
Rdy => open,
|
||||
nRSTin => Res_n,
|
||||
nRSTout => Res_n,
|
||||
CountCycle => CountCycle,
|
||||
trig => trig,
|
||||
lcd_rs => open,
|
||||
lcd_rw => open,
|
||||
lcd_e => open,
|
||||
lcd_db => open,
|
||||
avr_RxD => avr_RxD,
|
||||
avr_TxD => avr_TxD,
|
||||
sw1 => sw1,
|
||||
nsw2 => nsw2,
|
||||
led3 => led3,
|
||||
led6 => led6,
|
||||
led8 => led8,
|
||||
tmosi => tmosi,
|
||||
tdin => tdin,
|
||||
tcclk => tcclk,
|
||||
Regs => Regs1,
|
||||
RdMemOut => memory_rd,
|
||||
WrMemOut => memory_wr,
|
||||
RdIOOut => open,
|
||||
WrIOOut => open,
|
||||
AddrOut => memory_addr,
|
||||
DataOut => memory_dout,
|
||||
DataIn => memory_din,
|
||||
Done => memory_done,
|
||||
SS_Step => SS_Step,
|
||||
SS_Single => SS_Single
|
||||
);
|
||||
|
||||
-- The CPU09 is slightly pipelined and the register update of the last
|
||||
-- The CPU is slightly pipelined and the register update of the last
|
||||
-- instruction overlaps with the opcode fetch of the next instruction.
|
||||
--
|
||||
-- If the single stepping stopped on the opcode fetch cycle, then the registers
|
||||
@ -226,8 +238,7 @@ begin
|
||||
end process;
|
||||
|
||||
-- This block generates a hold signal that acts as the inverse of a clock enable
|
||||
-- for the 6809. See comments above for why this is a cycle later than the way
|
||||
-- we would do if for the 6502.
|
||||
-- for the CPU. See comments above for why this is a cycle delayed a cycle.
|
||||
hold_gen : process(cpu_clk)
|
||||
begin
|
||||
if rising_edge(cpu_clk) then
|
||||
|
@ -29,12 +29,16 @@ entity BusMonCore is
|
||||
fifo_width : integer := 72
|
||||
);
|
||||
port (
|
||||
clock49 : in std_logic;
|
||||
clock_avr : in std_logic;
|
||||
|
||||
busmon_clk : in std_logic;
|
||||
busmon_clken : in std_logic;
|
||||
cpu_clk : in std_logic;
|
||||
cpu_clken : in std_logic;
|
||||
|
||||
-- CPU Signals
|
||||
Addr : in std_logic_vector(15 downto 0);
|
||||
Data : in std_logic_vector(7 downto 0);
|
||||
Phi2 : in std_logic;
|
||||
Rd_n : in std_logic;
|
||||
Wr_n : in std_logic;
|
||||
RdIO_n : in std_logic;
|
||||
@ -96,8 +100,8 @@ end BusMonCore;
|
||||
|
||||
architecture behavioral of BusMonCore is
|
||||
|
||||
signal clock_avr : std_logic;
|
||||
signal nrst_avr : std_logic;
|
||||
|
||||
signal lcd_rw_int : std_logic;
|
||||
signal lcd_db_in : std_logic_vector(7 downto 4);
|
||||
signal lcd_db_out : std_logic_vector(7 downto 4);
|
||||
@ -138,7 +142,9 @@ architecture behavioral of BusMonCore is
|
||||
signal fifo_dout : std_logic_vector(fifo_width - 1 downto 0);
|
||||
signal fifo_empty : std_logic;
|
||||
signal fifo_rd : std_logic;
|
||||
signal fifo_rd_en : std_logic;
|
||||
signal fifo_wr : std_logic;
|
||||
signal fifo_wr_en : std_logic;
|
||||
signal fifo_rst : std_logic;
|
||||
|
||||
signal memory_rd : std_logic;
|
||||
@ -152,15 +158,8 @@ architecture behavioral of BusMonCore is
|
||||
|
||||
begin
|
||||
|
||||
inst_dcm0 : entity work.DCM0 port map(
|
||||
CLKIN_IN => clock49,
|
||||
CLK0_OUT => clock_avr,
|
||||
CLK0_OUT1 => open,
|
||||
CLK2X_OUT => open
|
||||
);
|
||||
|
||||
inst_oho_dy1 : entity work.Oho_Dy1 port map (
|
||||
dy_clock => clock49,
|
||||
dy_clock => clock_avr,
|
||||
dy_rst_n => '1',
|
||||
dy_data => dy_data,
|
||||
dy_update => '1',
|
||||
@ -247,15 +246,17 @@ begin
|
||||
);
|
||||
|
||||
WatchEvents_inst : entity work.WatchEvents port map(
|
||||
clk => Phi2,
|
||||
clk => busmon_clk,
|
||||
srst => fifo_rst,
|
||||
din => fifo_din,
|
||||
wr_en => fifo_wr,
|
||||
rd_en => fifo_rd,
|
||||
wr_en => fifo_wr_en,
|
||||
rd_en => fifo_rd_en,
|
||||
dout => fifo_dout,
|
||||
full => open,
|
||||
empty => fifo_empty
|
||||
);
|
||||
fifo_wr_en <= fifo_wr and busmon_clken;
|
||||
fifo_rd_en <= fifo_rd and busmon_clken;
|
||||
|
||||
-- The fifo is writen the cycle after the break point
|
||||
-- Addr1 is the address bus delayed by 1 cycle
|
||||
@ -410,128 +411,130 @@ begin
|
||||
-- 1x1xx Unused
|
||||
-- 11xxx Unused
|
||||
|
||||
risingProcess: process (Phi2)
|
||||
cpuProcess: process (busmon_clk)
|
||||
begin
|
||||
if rising_edge(Phi2) then
|
||||
|
||||
-- Cycle counter, wraps every 16s at 1MHz
|
||||
if (nRSTin = '0') then
|
||||
cycleCount <= (others => '0');
|
||||
elsif (CountCycle = '1') then
|
||||
cycleCount <= cycleCount + 1;
|
||||
end if;
|
||||
|
||||
-- Command processing
|
||||
cmd_edge1 <= cmd_edge;
|
||||
cmd_edge2 <= cmd_edge1;
|
||||
fifo_rd <= '0';
|
||||
fifo_wr <= '0';
|
||||
fifo_rst <= '0';
|
||||
memory_rd <= '0';
|
||||
memory_wr <= '0';
|
||||
io_rd <= '0';
|
||||
io_wr <= '0';
|
||||
SS_Step <= '0';
|
||||
if (cmd_edge2 = '0' and cmd_edge1 = '1') then
|
||||
if (cmd(4 downto 1) = "0000") then
|
||||
single <= cmd(0);
|
||||
if rising_edge(busmon_clk) then
|
||||
if busmon_clken = '1' then
|
||||
-- Cycle counter, wraps every 16s at 1MHz
|
||||
if (nRSTin = '0') then
|
||||
cycleCount <= (others => '0');
|
||||
elsif (CountCycle = '1') then
|
||||
cycleCount <= cycleCount + 1;
|
||||
end if;
|
||||
|
||||
-- Command processing
|
||||
cmd_edge1 <= cmd_edge;
|
||||
cmd_edge2 <= cmd_edge1;
|
||||
fifo_rd <= '0';
|
||||
fifo_wr <= '0';
|
||||
fifo_rst <= '0';
|
||||
memory_rd <= '0';
|
||||
memory_wr <= '0';
|
||||
io_rd <= '0';
|
||||
io_wr <= '0';
|
||||
SS_Step <= '0';
|
||||
if (cmd_edge2 = '0' and cmd_edge1 = '1') then
|
||||
if (cmd(4 downto 1) = "0000") then
|
||||
single <= cmd(0);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "0001") then
|
||||
brkpt_enable <= cmd(0);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "0010") then
|
||||
brkpt_reg <= cmd(0) & brkpt_reg(brkpt_reg'length - 1 downto 1);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "0110") then
|
||||
addr_dout_reg <= cmd(0) & addr_dout_reg(addr_dout_reg'length - 1 downto 1);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "0011") then
|
||||
reset <= cmd(0);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 0) = "01001") then
|
||||
fifo_rd <= '1';
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 0) = "01010") then
|
||||
fifo_rst <= '1';
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "1000") then
|
||||
memory_rd <= '1';
|
||||
auto_inc <= cmd(0);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "1001") then
|
||||
memory_wr <= '1';
|
||||
auto_inc <= cmd(0);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "1010") then
|
||||
io_rd <= '1';
|
||||
auto_inc <= cmd(0);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "1011") then
|
||||
io_wr <= '1';
|
||||
auto_inc <= cmd(0);
|
||||
end if;
|
||||
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "0001") then
|
||||
brkpt_enable <= cmd(0);
|
||||
-- Auto increment the memory address reg the cycle after a rd/wr
|
||||
if (auto_inc = '1' and Done = '1') then
|
||||
addr_dout_reg(23 downto 8) <= addr_dout_reg(23 downto 8) + 1;
|
||||
end if;
|
||||
|
||||
-- Single Stepping
|
||||
if (brkpt_active = '1') then
|
||||
single <= '1';
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "0010") then
|
||||
brkpt_reg <= cmd(0) & brkpt_reg(brkpt_reg'length - 1 downto 1);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "0110") then
|
||||
addr_dout_reg <= cmd(0) & addr_dout_reg(addr_dout_reg'length - 1 downto 1);
|
||||
if ((single = '0') or (cmd_edge2 = '0' and cmd_edge1 = '1' and cmd = "01000")) then
|
||||
Rdy_int <= (not brkpt_active);
|
||||
SS_Step <= (not brkpt_active);
|
||||
else
|
||||
Rdy_int <= (not Sync);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "0011") then
|
||||
reset <= cmd(0);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 0) = "01001") then
|
||||
fifo_rd <= '1';
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 0) = "01010") then
|
||||
fifo_rst <= '1';
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "1000") then
|
||||
memory_rd <= '1';
|
||||
auto_inc <= cmd(0);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "1001") then
|
||||
memory_wr <= '1';
|
||||
auto_inc <= cmd(0);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "1010") then
|
||||
io_rd <= '1';
|
||||
auto_inc <= cmd(0);
|
||||
end if;
|
||||
|
||||
if (cmd(4 downto 1) = "1011") then
|
||||
io_wr <= '1';
|
||||
auto_inc <= cmd(0);
|
||||
-- CPU Reset needs to be open collector
|
||||
if (reset = '1') then
|
||||
nRSTout <= '0';
|
||||
else
|
||||
nRSTout <= 'Z';
|
||||
end if;
|
||||
|
||||
-- Latch instruction address for the whole cycle
|
||||
if (Sync = '1') then
|
||||
addr_inst <= Addr;
|
||||
cycleCount_inst <= cycleCount;
|
||||
end if;
|
||||
|
||||
-- Breakpoints and Watches written to the FIFO
|
||||
brkpt_active1 <= brkpt_active;
|
||||
bw_status1 <= bw_status;
|
||||
if watch_active = '1' or (brkpt_active = '1' and brkpt_active1 = '0') then
|
||||
fifo_wr <= '1';
|
||||
Addr1 <= Addr;
|
||||
end if;
|
||||
end if;
|
||||
|
||||
-- Auto increment the memory address reg the cycle after a rd/wr
|
||||
if (auto_inc = '1' and Done = '1') then
|
||||
addr_dout_reg(23 downto 8) <= addr_dout_reg(23 downto 8) + 1;
|
||||
end if;
|
||||
|
||||
-- Single Stepping
|
||||
if (brkpt_active = '1') then
|
||||
single <= '1';
|
||||
end if;
|
||||
|
||||
if ((single = '0') or (cmd_edge2 = '0' and cmd_edge1 = '1' and cmd = "01000")) then
|
||||
Rdy_int <= (not brkpt_active);
|
||||
SS_Step <= (not brkpt_active);
|
||||
else
|
||||
Rdy_int <= (not Sync);
|
||||
end if;
|
||||
|
||||
-- CPU Reset needs to be open collector
|
||||
if (reset = '1') then
|
||||
nRSTout <= '0';
|
||||
else
|
||||
nRSTout <= 'Z';
|
||||
end if;
|
||||
|
||||
-- Latch instruction address for the whole cycle
|
||||
if (Sync = '1') then
|
||||
addr_inst <= Addr;
|
||||
cycleCount_inst <= cycleCount;
|
||||
end if;
|
||||
|
||||
-- Breakpoints and Watches written to the FIFO
|
||||
brkpt_active1 <= brkpt_active;
|
||||
bw_status1 <= bw_status;
|
||||
if watch_active = '1' or (brkpt_active = '1' and brkpt_active1 = '0') then
|
||||
fifo_wr <= '1';
|
||||
Addr1 <= Addr;
|
||||
end if;
|
||||
|
||||
end if;
|
||||
end process;
|
||||
|
||||
fallingProcess: process (Phi2)
|
||||
dataProcess: process (cpu_clk)
|
||||
begin
|
||||
if falling_edge(Phi2) then
|
||||
-- Latch the data bus for use in watches
|
||||
Data1 <= Data;
|
||||
-- Latch memory read in response to a read command
|
||||
if (Done = '1') then
|
||||
din_reg <= DataIn;
|
||||
if rising_edge(cpu_clk) then
|
||||
if cpu_clken = '1' then
|
||||
-- Latch the data bus for use in watches
|
||||
Data1 <= Data;
|
||||
-- Latch memory read in response to a read command
|
||||
if (Done = '1') then
|
||||
din_reg <= DataIn;
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
@ -90,6 +90,8 @@ end MC6809ECpuMon;
|
||||
|
||||
architecture behavioral of MC6809ECpuMon is
|
||||
|
||||
signal clock_avr : std_logic;
|
||||
|
||||
signal cpu_clk : std_logic;
|
||||
signal busmon_clk : std_logic;
|
||||
signal R_W_n_int : std_logic;
|
||||
@ -148,55 +150,66 @@ signal E_e : std_logic; -- E delayed by 80..100ns
|
||||
signal data_wr : std_logic;
|
||||
signal nRSTout : std_logic;
|
||||
|
||||
|
||||
begin
|
||||
|
||||
inst_dcm0 : entity work.DCM0 port map(
|
||||
CLKIN_IN => clock49,
|
||||
CLK0_OUT => clock_avr,
|
||||
CLK0_OUT1 => open,
|
||||
CLK2X_OUT => open
|
||||
);
|
||||
|
||||
mon : entity work.BusMonCore
|
||||
generic map (
|
||||
num_comparators => 8
|
||||
)
|
||||
port map (
|
||||
clock49 => clock49,
|
||||
Addr => Addr_int,
|
||||
Data => Data,
|
||||
Phi2 => busmon_clk,
|
||||
Rd_n => not R_W_n_int,
|
||||
Wr_n => R_W_n_int,
|
||||
RdIO_n => '1',
|
||||
WrIO_n => '1',
|
||||
Sync => Sync_int,
|
||||
Rdy => Rdy_int,
|
||||
nRSTin => nRST_sync,
|
||||
nRSTout => nRSTout,
|
||||
CountCycle => CountCycle,
|
||||
trig => trig,
|
||||
lcd_rs => open,
|
||||
lcd_rw => open,
|
||||
lcd_e => open,
|
||||
lcd_db => open,
|
||||
avr_RxD => avr_RxD,
|
||||
avr_TxD => avr_TxD,
|
||||
sw1 => sw1,
|
||||
nsw2 => nsw2,
|
||||
led3 => led3,
|
||||
led6 => led6,
|
||||
led8 => led8,
|
||||
tmosi => tmosi,
|
||||
tdin => tdin,
|
||||
tcclk => tcclk,
|
||||
Regs => Regs1,
|
||||
RdMemOut=> memory_rd,
|
||||
WrMemOut=> memory_wr,
|
||||
RdIOOut => open,
|
||||
WrIOOut => open,
|
||||
AddrOut => memory_addr,
|
||||
DataOut => memory_dout,
|
||||
DataIn => memory_din,
|
||||
Done => memory_done,
|
||||
SS_Step => SS_Step,
|
||||
SS_Single => SS_Single
|
||||
clock_avr => clock_avr,
|
||||
busmon_clk => busmon_clk,
|
||||
busmon_clken => '1',
|
||||
cpu_clk => cpu_clk,
|
||||
cpu_clken => '1',
|
||||
Addr => Addr_int,
|
||||
Data => Data,
|
||||
Rd_n => not R_W_n_int,
|
||||
Wr_n => R_W_n_int,
|
||||
RdIO_n => '1',
|
||||
WrIO_n => '1',
|
||||
Sync => Sync_int,
|
||||
Rdy => Rdy_int,
|
||||
nRSTin => nRST_sync,
|
||||
nRSTout => nRSTout,
|
||||
CountCycle => CountCycle,
|
||||
trig => trig,
|
||||
lcd_rs => open,
|
||||
lcd_rw => open,
|
||||
lcd_e => open,
|
||||
lcd_db => open,
|
||||
avr_RxD => avr_RxD,
|
||||
avr_TxD => avr_TxD,
|
||||
sw1 => sw1,
|
||||
nsw2 => nsw2,
|
||||
led3 => led3,
|
||||
led6 => led6,
|
||||
led8 => led8,
|
||||
tmosi => tmosi,
|
||||
tdin => tdin,
|
||||
tcclk => tcclk,
|
||||
Regs => Regs1,
|
||||
RdMemOut => memory_rd,
|
||||
WrMemOut => memory_wr,
|
||||
RdIOOut => open,
|
||||
WrIOOut => open,
|
||||
AddrOut => memory_addr,
|
||||
DataOut => memory_dout,
|
||||
DataIn => memory_din,
|
||||
Done => memory_done,
|
||||
SS_Step => SS_Step,
|
||||
SS_Single => SS_Single
|
||||
);
|
||||
|
||||
-- The CPU09 is slightly pipelined and the register update of the last
|
||||
-- The CPU is slightly pipelined and the register update of the last
|
||||
-- instruction overlaps with the opcode fetch of the next instruction.
|
||||
--
|
||||
-- If the single stepping stopped on the opcode fetch cycle, then the registers
|
||||
|
@ -82,6 +82,8 @@ type state_type is (idle, rd_init, rd_setup, rd, rd_hold, wr_init, wr_setup, wr,
|
||||
|
||||
signal state : state_type;
|
||||
|
||||
signal clock_avr : std_logic;
|
||||
|
||||
signal RESET_n_int : std_logic;
|
||||
signal cpu_clk : std_logic;
|
||||
signal busmon_clk : std_logic;
|
||||
@ -141,50 +143,60 @@ signal mon_data : std_logic_vector(7 downto 0);
|
||||
|
||||
begin
|
||||
|
||||
mon : entity work.BusMonCore
|
||||
inst_dcm0 : entity work.DCM0 port map(
|
||||
CLKIN_IN => clock49,
|
||||
CLK0_OUT => clock_avr,
|
||||
CLK0_OUT1 => open,
|
||||
CLK2X_OUT => open
|
||||
);
|
||||
|
||||
mon : entity work.BusMonCore
|
||||
generic map (
|
||||
num_comparators => 4
|
||||
)
|
||||
port map (
|
||||
clock49 => clock49,
|
||||
Addr => Addr_int,
|
||||
Data => mon_data,
|
||||
Phi2 => busmon_clk,
|
||||
Rd_n => Read_n,
|
||||
Wr_n => Write_n,
|
||||
RdIO_n => ReadIO_n,
|
||||
WrIO_n => WriteIO_n,
|
||||
Sync => Sync,
|
||||
Rdy => Rdy,
|
||||
nRSTin => RESET_n_int,
|
||||
nRSTout => nRST,
|
||||
CountCycle => CountCycle,
|
||||
trig => trig,
|
||||
lcd_rs => open,
|
||||
lcd_rw => open,
|
||||
lcd_e => open,
|
||||
lcd_db => open,
|
||||
avr_RxD => avr_RxD,
|
||||
avr_TxD => avr_TxD,
|
||||
sw1 => '0',
|
||||
nsw2 => nsw2,
|
||||
led3 => led3,
|
||||
led6 => led6,
|
||||
led8 => led8,
|
||||
tmosi => tmosi,
|
||||
tdin => tdin,
|
||||
tcclk => tcclk,
|
||||
Regs => Regs,
|
||||
RdMemOut => memory_rd,
|
||||
WrMemOut => memory_wr,
|
||||
RdIOOut => io_rd,
|
||||
WrIOOut => io_wr,
|
||||
AddrOut => memory_addr,
|
||||
DataOut => memory_dout,
|
||||
DataIn => memory_din,
|
||||
Done => memory_done,
|
||||
SS_Single => SS_Single,
|
||||
SS_Step => SS_Step
|
||||
clock_avr => clock_avr,
|
||||
busmon_clk => busmon_clk,
|
||||
busmon_clken => '1',
|
||||
cpu_clk => cpu_clk,
|
||||
cpu_clken => '1',
|
||||
Addr => Addr_int,
|
||||
Data => mon_data,
|
||||
Rd_n => Read_n,
|
||||
Wr_n => Write_n,
|
||||
RdIO_n => ReadIO_n,
|
||||
WrIO_n => WriteIO_n,
|
||||
Sync => Sync,
|
||||
Rdy => Rdy,
|
||||
nRSTin => RESET_n_int,
|
||||
nRSTout => nRST,
|
||||
CountCycle => CountCycle,
|
||||
trig => trig,
|
||||
lcd_rs => open,
|
||||
lcd_rw => open,
|
||||
lcd_e => open,
|
||||
lcd_db => open,
|
||||
avr_RxD => avr_RxD,
|
||||
avr_TxD => avr_TxD,
|
||||
sw1 => '0',
|
||||
nsw2 => nsw2,
|
||||
led3 => led3,
|
||||
led6 => led6,
|
||||
led8 => led8,
|
||||
tmosi => tmosi,
|
||||
tdin => tdin,
|
||||
tcclk => tcclk,
|
||||
Regs => Regs,
|
||||
RdMemOut => memory_rd,
|
||||
WrMemOut => memory_wr,
|
||||
RdIOOut => io_rd,
|
||||
WrIOOut => io_wr,
|
||||
AddrOut => memory_addr,
|
||||
DataOut => memory_dout,
|
||||
DataIn => memory_din,
|
||||
Done => memory_done,
|
||||
SS_Single => SS_Single,
|
||||
SS_Step => SS_Step
|
||||
);
|
||||
|
||||
GenT80Core: if UseT80Core generate
|
||||
|
Loading…
Reference in New Issue
Block a user