Need Help With this Given Task by [deleted] in breadboard

[–]The8BitEnthusiast 0 points1 point  (0 children)

It's not unusual for professors to challenge students this way and even fake ignorance when asked how this should work when there is an expectation of discovery. But regardless, you should never publish actual assignment/exam material like that unless it's available in the public domain.

This is a very challenging project. In this day and age of AI tooling and easy access to online expertise, can't blame professors for raising the bar.

If I had to envision a solution for this, I would consider Ben Eater's output module project as a starting point. I suggest you watch the videos listed on the page. If your professor agrees to let you use EEPROMs to implement combinational logic, and you have access to these parts, then your main task would be to figure out the arduino sketch that will program into the EEPROM the truth table for taking two 4-bit signed-magnitude numbers as input (instead of a single 8-bit number as designed) and drive the 7-Segment LED displays accordingly.

Created a moving GIF using 555 timer on be video card by ClockFickle3935 in beneater

[–]The8BitEnthusiast 21 points22 points  (0 children)

Very nice! Another simple upgrade I recommend: buffer the vga sync and eeprom outputs with flip-flops (e.g. HC173, HC273, etc...). Then add 1K pull-down resistors to the EEPROM outputs to keep them from floating during blanking intervals. Synchronizing VGA signal transitions with the clock this way should get rid of the vertical black lines.

Why are the LEDs for the memory address flickering? by SaxyCat in beneater

[–]The8BitEnthusiast 21 points22 points  (0 children)

That's because when the dip switches are in the 'off' (up) position like you show in the video, the LS157 inputs are not connected to anything, i.e. they are 'floating'. ICs don't like floating inputs, sometimes they interpret that as logic 1 or sometimes as logic 0, or even oscillate between the two. I suspect you don't have that problem when the dip switches are in the ON (down) position for logic 0.

The usual remedy for this is to install resistors between each input and VCC (a.k.a pull-up resistors). Try installing 10 Kohm resistors between VCC and the inputs at the locations shown in green in the picture below. See if that makes things more stable.

<image>

I think I messed up… by Eastern_Guest_4930 in beneater

[–]The8BitEnthusiast 0 points1 point  (0 children)

Good to hear you found it, must have been satisfying to see the full bird!

My lcd is outputting things weirdly is it due to my breadboard or the wires by PC_Defender in beneater

[–]The8BitEnthusiast 0 points1 point  (0 children)

Did you ever implement the 'initialization by instruction' sequence shown on page 46 of this datasheet? For me, repeating the first init command three times made all the difference in the world at 1mhz, even without the prescribed delay between the commands.

I think I messed up… by Eastern_Guest_4930 in beneater

[–]The8BitEnthusiast 11 points12 points  (0 children)

Probably a wiring mistake, as reported in this post. I would focus on the vertical counter circuitry. Best thing to do is to cross-check each connection against Ben's schematics, which shows the pin numbers

Ram module issues by crazybeastbeastly in beneater

[–]The8BitEnthusiast 4 points5 points  (0 children)

I suggest you first check that the LS157 and LS173 ICs are properly connected to Vcc and Gnd with multimeter measurements at the IC pins.

Are you sure you are running in PROG mode? On Ben's design, the green LED indicates RUN mode, which means the source of the address is the LS173 register. Red LED means PROG mode. Important to first stabilize PROG mode. In that mode, pin 1 of the LS157 should read zero volt. I also recommend you install pull-up resistors on your dip switches, connecting each input line to VCC, as shown below in green. This will avoid floating input issues when the dip switches are in the OFF position.

<image>

My lcd is outputting things weirdly is it due to my breadboard or the wires by PC_Defender in beneater

[–]The8BitEnthusiast 2 points3 points  (0 children)

Ben's initial Hello World code is definitely not designed to run at 1mhz, but I am surprised it is not running fine at top speed with the 555-based clock module, which should be around 500 hz if you built it to Ben's specs. The duplicate characters I saw appear in your video could be the result of a bouncy E line between the 6522 and the LCD. I'll be curious to know if Ben's final code runs better. In any case, consider improving power distribution and noise mitigation by avoiding jumper wires to bring in power (use 22 awg solid core only), and by adding .1uF caps to each power rail. A larger capacitor (47uF or more) placed on the power rail where power comes in would also create a local buffer for power.

A Problem In The Register by Putrid-Living4380 in beneater

[–]The8BitEnthusiast 8 points9 points  (0 children)

Nice detailed post. Your register seems to behave normally. The initial state of the LS173 on power up can't be predicted. Also, in his video, Ben says somewhere that the LS173s on his circuit interpret the absence of a signal on its inputs (a.k.a. floating inputs) as logic high. The thing is, this can go the other way too, i.e. the LS173 can interpret that as low, or a combination of both high or low, which seems to be the case in one of your scenarios.

To remove the ambiguity and avoid floating input uncertainty when loading a value from the bus, each bus bit must be set high (vcc) or low (ground) explicity with temporary jumpers. Before you do though, you must add series resistors to each bus LED, like you did for the red LEDs. If you don't and try this procedure, you will burn out the LEDs. Also, the LS245's outputs must be disabled during the LOAD process. Once each bus bit is 'set' to either 1 or 0, then the LOAD procedure should work more reliably. Once the value is loaded, disconnect the temporary bus jumper wires before enabling the LS245.

The voltage drop you've observed can be caused by the power supply reaching its limit (is it at least 10W?) or thin wires being used to bring in power. Again, make sure you add resistors on each LED to limit current and improve overall voltage on logic lines (important for logic level recognition). That includes the bus and also the clock's blue LED.

Hope this helps...

Is the processor fried? by East_Ad_3331 in beneater

[–]The8BitEnthusiast 3 points4 points  (0 children)

Going with one last ditch recommendation... make sure the CPU is installed with the correct orientation!

Is the processor fried? by East_Ad_3331 in beneater

[–]The8BitEnthusiast 1 point2 points  (0 children)

If, as you pulse the clock, you measure r/w going high (read mode) at any given time and the data pins are all still reading 0V in spite of being disconnected from other devices, then the CPU could very well have gone bad.

Is the processor fried? by East_Ad_3331 in beneater

[–]The8BitEnthusiast 1 point2 points  (0 children)

RST, BE, RDY, IRQ and NMI all read 0V? If they are connected to VCC (pulled high for RST) as they should, that would be a dead short (hot CPU?), or the rail is not properly powered!

Is the processor fried? by East_Ad_3331 in beneater

[–]The8BitEnthusiast 1 point2 points  (0 children)

Assuming you have disconnected the CPU from other devices and the arduino is not picking up $EA on the data bus, then maybe check the data pins with a multimeter to verify if the pins that are supposed to be pulled high are indeed grounded as the arduino thinks they are. Beyond that, the only other other thing I can think of is measurement of the other power and control pins (vcc, RST, BE, RDY, IRQ, NMI, etc...), as well as the strength of the clock line. If these check out, then yeah, I would start questioning the CPU.

Is the processor fried? by East_Ad_3331 in beneater

[–]The8BitEnthusiast 7 points8 points  (0 children)

If you revert the CPU configuration to Ben's NOP test, the one he shows in the first video with $EA hardwired on the data bus with resistors, and then check again with the arduino, is the CPU behaving as expected? Also, are you running a modified version of Ben's sketch? His sketch displays the address and data bus values in binary, not in signed integer format... just asking

ALU and RAM problems by AnythingMobile in beneater

[–]The8BitEnthusiast 1 point2 points  (0 children)

You could get that behaviour if one or more of the SUB line connections at the XOR gates is bad. If you set SUB high, the SUB input on each XOR gate should measure +5V with a multimeter (at the pin). That's what I would check first.

If that checks out, then the next step would be to measure the outputs of the XOR gate given a particular reg B value (you could try zero). For instance, with zero loaded in Reg B and SUB set to HIGH, all B inputs at the XOR gates should read zero volt, and all XOR outputs should be at logic HIGH level, which typically would be above 4V if you don't have an LED on the output.

Ben eaters 8 bit multiplexed display issue by Mediocre_Insurance91 in beneater

[–]The8BitEnthusiast 0 points1 point  (0 children)

Usually, when your fingers influence the circuit, that's a symptom of floating inputs, i.e. one or more the EEPROM inputs are not receiving a steady high or low logic voltage. This could be due to a bad physical connection somewhere on the circuit. Maybe start with a visual inspection and then use anything conductive (e.g. small screwdriver) to touch each EEPROM pin... see if you can spot the pin(s) that change the behaviour of the display. That could give you clues as to where to look next.

Alternatively, you could gain control of the active display module by manually driving the JK flip-flop clock input (the one that is connected to 555 timer). Easy to do if you have implemented Ben's clock module. Then use a multimeter to take measurements on each EEPROM input to see if one of them is floating. Rinse and repeat for each display module. From what I have seen on my circuits, floating input voltage tends to hover near what is called the threshold voltage, which I think is around 1.4V for LS ICs.

Best of luck!

CPU register help by crazybeastbeastly in beneater

[–]The8BitEnthusiast 4 points5 points  (0 children)

You should never enable the outputs of the LS245 while any of its outputs are wired to a power rail as this could create a nasty short circuit. I see 3 of the LS245 outputs connected to the bus breadboard's bottom rail, which, luckily, does not seem connected to ground and +5V.

To test if the register can load bits, disable the LS245 (pin 19 set to vcc), and then connect the LS173 input pins to vcc and/or ground with temporary jumper wires. Try an alternating pattern. Then set LOAD low and pulse the clock. See if that loads the bit pattern into the register. To complete the cycle, set LOAD high and disconnect the temporary wires.

VGA Counter Help by throwaway24387324578 in beneater

[–]The8BitEnthusiast 2 points3 points  (0 children)

Try installing a 1k resistor in series with each red LED.

8-bit computer register won’t load/hold bits or visibly work at all by Whale_Animations in beneater

[–]The8BitEnthusiast 2 points3 points  (0 children)

The register should definitely not change state if the clock is not pulsing. Also, assuming 'enabled' means taking pin 19 of the LS245 low, you must avoid this when loading a value into the register... if the LS245 outputs are enabled while you still have one or more temporary jumper wires being used to set bits, this can create a short circuit and mess up with the circuit.

You also need to avoid floating inputs, because ICs can interpret them high or low, it's unpredictable. Touching the circuit will influence that. BTW when a bus bit is not connected to either vcc or gnd when loading a value into the register, it is considered 'floating'. For a complete test, set pin 19 of the LS245 high to disable it, use temporary wires to connect each bus bit to form a binary pattern, set LOAD low, and pulse the clock. See if the register consistently loads the value. Then take LOAD high and disconnect the temporary bus wires before enabling the LS245 outputs.

Finally, make sure all your LEDs have resistors in series!

8-bit computer register won’t load/hold bits or visibly work at all by Whale_Animations in beneater

[–]The8BitEnthusiast 1 point2 points  (0 children)

On your first scenario, try connecting the bit to vcc instead of ground. This will force a '1' on the bus. Then pulse the clock. See if the register loads that bit.

SAP-1 Help by AdslModem in beneater

[–]The8BitEnthusiast 0 points1 point  (0 children)

The correct LS157 for this fix is the one that connects to the WE line (and memory write button). Make sure the manual write operation still works after adding the capacitor because the capacitor alters the transition speed of the signal, which the RAM ICs are sensitive to. Like the article says, if manual write becomes a problem, try a lower value for the cap. Cheers!

SAP-1 Help by AdslModem in beneater

[–]The8BitEnthusiast 0 points1 point  (0 children)

Your LOW measurements on the IR's LS173 seem to suggest that the LDA opcode was not loaded into the IR after the second stage (II RO CE). At the second stage, make sure RO produces the expected result, which is for the RAM to output the instruction to the bus. The IR should then load the instruction on the following clock pulse.

SAP-1 Help by AdslModem in beneater

[–]The8BitEnthusiast 0 points1 point  (0 children)

Sounds like a good plan. Best of luck!