This is the content that can be expanded or collapsed.
On end of !RESET everything should be reset to its initial state (no RAM23 mapped/owned etc.) While !HALT is CPU supressed and Arduino1 (master of RAM2) owns CPU busses and (temporaly) RAM2. (CPLD should keep open gate for address and commands from Arduino1 to CPU and data gate dependind on CPU's Rw) Usually computer should start (boot) to !RESET and !HALT will be issued ASAP, then Arduino1 will prefill "ROM" area of RAM01 (usually C090-FFFF, and especially vectors on FFF0-FFFF) and release the HALT after RESET is released. Also on reboot there should be !RESET with !HALT. On the other hand I do not forsee !HALT without !RESET to have much use other then DMA or debug (wow, sounds interesting now). .. raw:: htmlThis is the content that can be expanded or collapsed.
**Designing a robust reset and boot logic circuit with the HD6309 CPU, a CPLD, and an Arduino requires careful consideration of the interaction between these components. Here’s a detailed plan to achieve the desired functionality**: **Components Involved**: * HD6309 CPU * CPLD (Complex Programmable Logic Device) * Arduino * Reset Circuit (capacitor and resistor) * Manual Reset Button **Requirements**: * **Power-Up Sequence**: Ensure the CPU, Arduino, and other components start correctly and in sequence. * **Manual Reset**: Allow manual reset via a button with a capacitor delay. * **Arduino HALT Control**: Arduino should control the HALT line of the CPU after it finishes its setup. * **Bus Control**: When HALT is asserted, Arduino should control the CPU buses. **Proposed Design**: **Power-Up and Reset Circuit**: **Reset Pin (RESET)**: Connect a capacitor (e.g., 10µF) to ground and a 10kΩ resistor to the power supply (Vcc) to create a delay circuit. **Manual Reset Button**: Connect a normally open push button between the RESET pin and ground. **CPLD Logic**: **HALT Control**: Use the CPLD to handle the HALT line control logic. **Bus Control**: Use the CPLD to manage the CPU bus direction based on the state of the HALT line and A_HALT signal from the Arduino. **Arduino Control**: **A_HALT Pin**: An input pin on the Arduino with an internal pulldown resistor. When A_HALT is HIGH, the HALT line should be released (3-state); when LOW, the HALT line should be asserted. **Signal to Release HALT**: Arduino should send a signal to release the HALT line after completing its setup. **Circuit Diagram**: .. code:: +5V ----+----- 10kΩ ------+-------+-------- RESET (HD6309) | | | | | | | | | 10µF RESET | | BUTTON | | | | GND GND | | A_HALT (Arduino) ------+----------|--------> HALT (HD6309) | | | | CPLD CPLD Logic Logic for HALT for Bus Control **CPLD Logic Design**: **HALT Control Logic**: If A_HALT from Arduino is LOW, assert HALT (pull to ground). If A_HALT is HIGH, release HALT (3-state, let the pull-up resistor pull it high). **Bus Control Logic**: If HALT is asserted, Arduino takes control of CPU buses. Ensure appropriate bus direction settings based on the state of HALT. **Steps to Implement**: **Power-Up Initialization**: On power-up, the capacitor and resistor create a delay on the RESET pin, ensuring a proper reset sequence. The CPLD holds HALT low until the Arduino sets A_HALT high. **Manual Reset**: Pressing the reset button grounds the RESET pin, initiating a reset sequence. The capacitor ensures a delayed release of the reset pin, similar to the power-up sequence. **Arduino Initialization**: On reset, the Arduino starts its setup process. After setup, Arduino sets A_HALT high to release the HALT line via CPLD logic. **Bus Control**: When HALT is low, the CPLD ensures the Arduino controls the CPU buses. When HALT is released, normal CPU operation resumes, and the buses are controlled by the CPU. **Additional Considerations**: **CPLD Programming**: Ensure the CPLD is programmed to manage the HALT and bus control logic correctly. **Timing**: Verify timing requirements for the reset and setup sequences to avoid conflicts. **Future Expansion**: Design the HALT control logic in the CPLD to accommodate future requirements, such as additional components asserting HALT. By implementing this design, the HD6309, Arduino, and CPLD will interact correctly during power-up, reset, and normal operation, with the Arduino being able to control the HALT line and CPU buses as needed. **End of HALUCINATIONS** .. raw:: html