Project: Converting two boards into Arduino

First time poster, and an absolute beginner with Arduino.

I know just enough about software and hardware design that I think I can do this (I also work as an electronics tech).

What I have is a remote load management unit, that when fitted with two add-on boards, becomes a testing unit. The schematic attached is of the two add-on boards together, along with the keypad unit. The RAM ICs on the main unit's logic board are replaced by a pair of sockets to access the address bus (A7-A0), data bus (D7-D0), and three control signals (1MHz clock, RAM select, and R/W).

When I posted this on another forum, someone recommended that I look at the Mega 2560 as a replacement, hence my posting here.

If you look at the schematic, you will see the bus connection and buffer ICs on the top left, the relocated RAM ICs in the top middle, the 8279 and keyboard / display in the top right, the connector going off to the UUT in the bottom left, and glue logic everywhere in between.

I attached the memory IC data sheet, as no matter what I've got going on the add-on boards, it needs to look like a pair of RAM chips to the main unit.

Questions I have:

Are there any best practices for allocating connections to the Arduino - which would be best suited for the address / data / control lines, keyboard, display (I'm going with a 4x20 LCD)...?

On the software side, has anyone already drawn up a software library to replace the functionality of the 8279 keyboard / display interface chip?

I'm also looking to see where I can safely draw a line between that portion of the original design beyond the four connectors (RAMx2, external, and keyboard) that needs to stay in the finished design and what can be simulated in the Arduino.

Is 6V a hard lower limit for powering the Arduino? If so, then I need to look at a pick-off point on the unit to access one of the two 12V supplies as opposed to using the existing 5V supply rails.

FCT board.pdf (536 KB)

HM-6561.pdf (134 KB)

The only question I can answer is the last one. The low limit voltage for Arduino boards is 5 volts or 3.3 volts, depending on which board you use.

Paul

Your project is not very clear to me. Do you want an Arduino to take the role of the old controller, or do you want to make the Arduino a peripheral of the microprocessor?

An Arduino can not be used as a microprocessor peripheral or memory replacement, if this is what you want to do.

Hi,
Welcome to the forum.

Please read the post at the start of any forum , entitled "How to use this Forum".
OR
http://forum.arduino.cc/index.php/topic,148850.0.html.

Can you post your images as jpg rather than pdf, there are some platforms used my members that have problems with displaying pdf files easily.

Thanks.. Tom... :slight_smile:

I suspect it would be easier for people to help you if you describe what you want the Arduino Mega to do. That way people don't have to try and figure out schematics.

...R

I can be clear as mud sometimes, sorry.

I started out wanting to have a board made like the one in the schematic, updated with newer parts as needed. Instead, I was given a suggestion that an Arduino should be able to replace the majority of the circuitry (particularly the RAM, 8279 display/keyboard controller, and the glue logic).

In a nutshell, what this board does, and I want the replacement Arduino to do, is accept signals from an unit being tested as well as keyboard input, place it in RAM (128 bytes), which then gets passed back to the logic board for processing.

As for the attachments, I wasn't aware that JPG (as lossy as it is) was a requirement versus PDF. It will have to wait until tonight when I can make the document conversion, and will wait until then to post what I have so far as the redesign.

So I imagine your board could be reduced to something like this, with a couple more switches for whatever type SW1, SW2, and SW3A/3B are.
I used an $11 Mega2560Pro as the heart to replace the most of the chips and memory, and a couple MAX7219s to drive the 10 displays. These are little 7-segment displays that are 0.2" wide (vs 0.3" wide) that I am using 45 of in another project.


Layout can mimic whatever you have, this just groups things functionally. The MAX7219 with 2 displays can also drive the 16 LEDs, connect them up as if they were 2 more displays.

metermannd:
As for the attachments, I wasn't aware that JPG (as lossy as it is) was a requirement versus PDF.

A JPG (or PNG) will be visible in your Post so we don't have to download it.

place it in RAM (128 bytes),

I presume that just means temporarily store the test data in memory and it does NOT mean "pretend to be RAM chip"

The Mega has a lot more than 128 bytes of SRAM.

...R

Please see my tutorial how to make a schematic you can post
If you attach an image file (jpg, png, gif) it will show in your post so we can see your problem.

johnerrington:
Please see my tutorial how to make a schematic you can post
If you attach an image file (jpg, png, gif) it will show in your post so we can see your problem.

Good little tutorial.
Tom.... :slight_smile: :slight_smile: :slight_smile:
PS Karma added.

Hope these meet the format and specifications for posting.

The first is the starting point - hopefully from my prior posts it is understood I want to replace the bulk of the glue logic etc. with the Arduino module, and while we're at it, I also want to change over all the seven-segment displays and LEDs to a single 4x20 LCD (there's just enough space to fit all the displayed info in an intuitive format).

The second represents my line of thinking.
Top part has the current Arduino layout - please advise if I have any pins in the wrong place.
Bottom left is a section I still need to determine how much can be absorbed into the Arduino - this section buffers the incoming address / data / control lines.
Bottom center is that portion that will be the output from the Arduino to the real world.
Right side is just a group of glue logic fragments that I will need to translate into Arduino code soon.

Here's how I think I'd like to lay out the LCD to replace the 7-segment displays / LED bank.
Is this too complicated to implement in Arduino?

TEST: XX replaces the left 2 7-segment displays [4514: Q9, Q8]
XXXXXXXX is the keypad input line (7 digits + checksum) [4514: Q7-Q0]
STAT replaces the Go / No-Go LED pair [4514: Q15]
INSTALL only displays (flashes) when called for / replaces the INSTALLING LED [4514: Q14]
LD A through LD D replace the corresponding LED pair [4514: Q10-Q13]

Cathodes driven by 7-segment driver and from B port / blanking line on 8279
Anodes driven by 4514 driven by SL port on 8279

Each instance of ____ is blank when the LED pair is off, PASS for green, NOGO for red
Existing LED segment A driver also supplies anodes for PASS (green) LEDs
Existing LED segment G driver also supplies anodes for NOGO LEDs and INSTALLING LED

lcd.png

lcd.png

If the address and data lines connect to another microprocessor then this processor must be stopped in read and write cycles. If not then explain the use of the address and data lines.

Speaking generally, I'm sure you have seen the practice where an adapter is mounted between an IC and and the board to which it is normally mounted, in order to access certain signals needed to run an accessory board, right?

That's what was done here, to access the address / data / control bus lines to add the boards I'm working with.

The RAM was taken out of the main unit's logic board and replaced with sockets for a pair of ribbon cables.

The ribbon cables go to the board that contains the glue logic that I wish to mostly replace with the Arduino.

The RAM that was originally on the main unit's logic board resides on this glue logic board.

Another ribbon cable goes from the glue logic board to the display board that I wish to partly replace with the Arduino and an LCD.

You still miss to understand the data flow and protocol between the computer and Arduino :frowning:

Hm. I see. I think you have a point.

I was under the impression the RAM was used to pass data back and forth to the main unit.

Starting to have second thoughts on this project.

DrDiettrich:
If the address and data lines connect to another microprocessor then this processor must be stopped in read and write cycles. If not then explain the use of the address and data lines.

The lines explained from the add-on board perspective:
Address bus: Read-only, used merely to establish the needed NVRAM address needed OR in selecting the required function on the add-on board
Clock: 1MHz sync for entire unit
R/W: Read-only, used for control of various functions on add-on board
CS: Read-only, used for control of RAM and other functions on add-on board
It would appear that it would not be needed to 'freeze' the main unit processor, if the add-on board is merely reading the status of these lines, correct?
The data bus passes through a 74LS245 transceiver, and which is controlled by the read/write line to determine whether the data is moving from the main logic to the add-on board, or from the add-on board to the main logic.
Surely that would suffice instead of having to stop the microprocessor outright?
(I misspoke regarding the total amount of RAM in the unit; there is an additional SRAM IC on the main logic board that is outside the scope of this project)

metermannd:
It would appear that it would not be needed to 'freeze' the main unit processor, if the add-on board is merely reading the status of these lines, correct?

That's correct for discrete logic only. As soon as the values have to be provided by an Arduino it's required to decode the address and provide the data, as soon as a read cycle is detected. Then a very fast controller is required that can handle all that in an ISR during one cycle (1µs). Write cycles are less critical provided that the address and data lines are buffered before further handling by the Arduino. Such buffers can increase the circuit more than what can be replaced by an Arduino.

So 8 nanoseconds (per 74LS245 data sheet) would be too slow for the Arduino?

metermannd:
So 8 nanoseconds (per 74LS245 data sheet) would be too slow for the Arduino?

That must be the propagation delay spec. It has nothing to do with the real issue, which is that the Arduino is not fast enough to emulate a bus slave in a legacy 1 MHz system. I am just rephrasing reply #17.

If the peripheral clocks are fully static, your best option would be to remove the legacy processor and address the board through the processor socket. This makes the Arduino a bus master. With the Arduino controlling the clocks and chip selects, it would work but not at 1MHz, much more slowly. If there are any peripherals (or memory IC's) that require a full 1MHz, you are out of luck.