RAM module testing and troubleshooting
ฝัง
- เผยแพร่เมื่อ 24 พ.ย. 2024
- Testing and troubleshooting the RAM module. In this video we check out the RAM module, fix an issue, and make a small modification so RAM writes are triggered on the rising edge of the clock.
Support me on Patreon: / beneater
You can get all the components used in this video from any online electronic components distributor (Jameco, Digikey, Mouser, etc). See eater.net/bbcp... for more.
Complete parts list (everything in the RAM module):
2x 74LS189 (64-bit random access memory)
2x 74LS04 (Hex inverter)
1x 74LS173 (4-bit D-type register)
4x 74LS157 (Quad 2-to-1 line data selector)
1x 74LS245 (Octal bus transceiver)
1x 74LS00 (Quad NAND gate)
14x LEDs (9 red, 4 yellow, 1 green)
3x 1KΩ resistors
1x 0.01µF capacitor
22 gauge wire
5 volt power source (e.g., a USB phone charger)
Warning: Do not add the 0.01microfarad capacitor directly to the clock output as indicated. This creates an exponential decay curve on the clock's falling edge, making other clock-connected modules to be unreliable (mainly the control signals that use the falling edge later) . I confirmed this with my scope, removing the cap immediately solved the problem.
The solution is to create a signal, isolated from the clock, using something like a buffer. Since there are 2 unused NAND gates right next to it (74LS00) , you can create a buffered clock signal by making 2 of the NAND gates into inverters, thus inverting twice. Input the clock into the first NAND input, and tie both those inputs together, then send that output to the next NAND input, tie those 2 inputs together, and then your output of that will be the buffered clock that you can send into that cap as before.
I ran into the same problem where the negative edge trigger later was problematic (when building the control logic it would double trigger when setting test control signals low from the 3to8/138) and I traced it to this capacitor (looked like reflections were happening). It seems that you can also install a 10x smaller capacitor (10nF rather than 100nF) and negate the clock problem you're describing (at least on my setup that worked). The buffered setup you describe is superior though :).
Thanks!
Won't that add propagation delay that will desync the local clock from the main clock? Unless you do the same thing everywhere you use the clock...
Though it might not matter at the low speeds this computer runs at...
It has been April since I bought this kit and it has taken me this long to get this far doing it in my free time. I have made a TON of mistakes and have learned so much through the process of building and troubleshooting. I normally don't leave comments however I just wanted Ben to know how much I have enjoyed this series so far. I wish I had found this channel a long time ago. Can't wait till you start your coding for dummies series. Hint Hint.
Same here!
Please continue your series, its the best thing on TH-cam.
Please check out my new comments. Sort by newest first.
Yes
I agree, it's literally the best thing on TH-cam
If you have your clock input connected to your registers during this stage, you may be having double counting after putting in the RC circuit shown at 13:15 .
Put the clock into the inverter (74LS04N), then put the inverted output through the inverter again, then connect THAT output to the RC circuit.
I was pulling my hair out before finding this solution.
Thank you so much!
I always find it funny that there would be dislikes on a video like this. What would the scenario be? You've watched 8 videos in this series, but something about ram modules, or the way he handled it, makes you dislike this one?
or maybe you hate computers in general?
baffles me. this is one of the most informative, interesting and educational series I've ever watched. I was luckiy enough to watch it as it was nearing completion - and I'm watching it again.
Yay covid!
But I love it.
Thank you Ben! Thank you !
It's from babies on their parents iPad tapping the screen at random
^ yeah. That's right haha..
Dear Mr. Eater, I have been in electronics sense I was 12 years old, I have studyed computers and how they work, But your kit is the best for learning and troubleshoot I have ever saw. I am going to purchase the complete kit and give this a try. The first thing I am going to do is watch ALL the videos to get a handle on what I will be doing, looks like it will be a fun project... Nice job sir...):
The troubleshooting is probably where you learn the most. Both from watching and from experiencing yourself
The capacitor charge time is actually about 50µs. R*C is the time constant τ, and it takes 5τ to charge a capacitor over 99%. 1τ will charge it to about 63%. How long this takes to trigger anything in the circuit depends on the VIL/VIH of the part.
Troubleshooting a circuit at work, I needed to extend the time a reset line was held low. (The bench power supply I was using had a slower rise-time than the supply in the system and I was getting garbage initialized to the registers.) I had to adjust my initial component values because the Voltage Input High was about 1.2V and the supply was 5V. I had calculated with 5*RC, but this was too fast because the components triggered high after less than 1τ. I solved E = Vin * (1 - e^(-t/RC)) for R where C = the cap I was using, E = 1.2V, and t = whatever delay I needed. Worked great after that.
Dear Ben, What a nice video series. This is what I was looking for. I do not have any engineering background. I have a medical background. Your explanations are so simple to understand everything effortless. You are a great teacher. Thank you very much. Please upload more videos in this topic.
Just outstanding material, great use of the breadboard, spec sheets for the components, and clear drawings, with excellent explanations. Will be watching all of it. Thank you very much for doing that!
Really anticipating a video on how the instruction decoding works
Here is a video of my Instruction Decoder. Feel free to ask any questions.
drive.google.com/open?id=0B6LIgQzDkH8fZ2VBbXAySmZ3TDg
Nice work, how long it took to build ? Also where can I buy the components online?
You can usually get everything from eBay.
Jeff Nay thanks Jeff
So I’ve been watching this whole series. All weekend and last night I kept having dreams that I was solving people’s problems with 1s and 0s. 😂
A new CPU is slowly coming together. Please keep up this good project.
G Yogaraja so you know that ben is making new videos?
Please check out my new comments. Sort by newest first.
14:17
I found a bug on your system :O
Or next to your computer. On the up-right corner.
Very funny.....
XD my Dell dimension 4100 had computer bugs too but thankfully they were long dead
The bugs in it are probably older than me
Awesome series Ben. Thank you very much for your work on this. Please keep them coming!
this looks like a great project to build with my father in law. I can't wait until the full instructions are out, or I receive the 20 breadboards and various parts I ordered so I can start building along
We're all waiting Ben. We all love this
I feel bad... I'm watching these videos waiting for the magic smoke lol
Ben this is fantastic! Love watching you build this and feeling the bug to start one of my own. Thanks!
Discovering you have a bug after connecting lots of wires can get frustrating fast.
Also, each time I see a misconnected power wire, I expect to release the magic smoke that makes everything work. That would just add to the frustration. Glad there wasn't any magic smoke in the video.
Ben Eater, I love you
12:10 ... followup question to my previous post on this Resistor/Capacitor that Ben uses on the RAM IN signal. I've worked around the issue I was having, but the more I've looked into this issue, the more I wonder why this Resistor/Capacitor is even being used in the first place? From what I've read, putting a Resistor/Capacitor on a clock signal is a no no. Apparently the right way to accomplish this (one way at least) would be to use a 555 to get the 10us pulse we are looking for without violating any clock signal rules.
But ... do we even need the Resistor/Capacitor at all? In looking at the datasheet, I don't see anything that says the write pulse is limited to 10us, so do we really need this? If we do, is the idea of using a 555 the right way to do it?
I'm really curious about this point because when I put that Resistor/Capacitor inline with my clock signal, it completely messes up my timings on my other modules. I'm not sure why it isn't affecting Ben's system.
FWIW: I had the same issue, the RC on the clock line messes up my program counter (it counts on clock rising edges and falling edges). The fix I used was to basically build a poor man's diode (2 NAND gates in series where one input of each is +5V) to serve as a logical equality (in = out) so the clock signal can go into the RC, but, any discharge can't flow back to mess up other modules. But I, like you, am surprised that Ben doesn't seem to have this issue.
david Is it possible to build an interface between this small 8-bit computer and a monitor with a VGA or HDMI connector ??
I am having the same issue. With the RC connected to the clock, the (forthcoming) program counter module counts twice for every clock cycle: on the rising (correct) and falling edge (incorrect). I suspect this is due to capacitor altering with the voltage in the line and corrupting the carefully crafted clock signal. Unfortunately I do not have an oscilloscope to confirm this. Thanks to David for his suggestions for fixing this bug. I think the 555 solution sounds most sensible.
Having question relating to this too.
Does anyone know why the output goes all 0s when the ram in is on for some period of time?
These videos are great. Thanks for taking the time to make them :)
anybody else see the bug crawl from under his paper at 14:16
Yes to labels! And I finally got why the clk edge has to be so narrow. Holding the clk button did it.
ben please bring this series back!
Have you quite doing videos? pls im really looking forward for another
I was so happy when Ben's first 4 bits were all high hahaha - that's what mine did as well :p - now I get help to debug
Hi Ben, when can we have next video? waiting for it.
Same here. Keep 'em coming PLZZZ :D
Can you maybe give us some sort of parts list or a rough estimation of how many of every chip used?
If you ever had the problem of some of your 74ls logic gate series burning well thats probably beacause the inputs are floating and thus powering both transistors at the same time driving tons of current converted to heat
I had to debug for ages to find it and i also found that some chips are protected against floating like the CD4011 nand gate
We have been waiting for new video for last couple of weeks! please update us BEN!
I actually had some problems with this build. In program mode, I would see data being written into RAM even when I wasn't pressing the button, and the values written weren't always matched up with what was on the switches. The problem turned out to be the assumption that the '157 inputs were internally pulled high. Even in program mode, the open input from the write enable was coupling to the clock signal from the bus write enable. And the open inputs on the '157's hooked up to the switches weren't stable. Adding 1k pullup resistors to all the inputs fixed everything.
Got exactly same problem here. I stumbled on this awesome channel when trying to build a Scott CPU and I am actually following lots of Ben's design and strategy since then. Last time I worked on RAM module, I've got the same problem as you described. I thought about debuging by changing my NAND gate from an HC series to a LS and, if it doesn't work, I would put pull-up resistors. Seems I'll try the later option first. Thanks for the advice.
There is also a problem that the 157 has some time that the output is low when it's select pin changes and thus sometimes writing to the ram but for some reason it's fixed when i place a 220R pull up resistor.
@@stevenribus123 Where did you put that 220 Ohm resistor?
Had the same issue of inadvertant writes to the ram and found a LOW-Spike on the output (4Y, Pin 12) on the 157 when switching from A to B or vice versa on the select Pin ((A/B, Pin 1) of the LS157. The spike was on the output only, the inputs (4A, 4B, Pins 13,14) were clean. I solved it with a 100nF Capacitor on the Pin to HIGH - it works but somehow doesn't feel correct.
Please do either the Program Counter or the Ring Counter next. The Output register is straight forward. My class finished it last week.
The Program Counter is very easy. It is only 2 JK FlipFlops (74LS107) and 1 4 bit buffer (74LS126)
all it does is increment from 0000 to 1111
drive.google.com/open?id=0B6LIgQzDkH8fYnZlZk00bENITzg
Now I drew this one up myself. I found that you do not need to hookup the J or K as they are both pulled high automatically. If you follow this diagram, please let me know if it worked for you.
drive.google.com/open?id=0B6LIgQzDkH8fU3F3VEJfLWJ1VFE
I have a trouble that when i store data at address 0 in program mode and then switch to run mode,all the data will be reset to zero.
only address 0 have this problem,I dont know how to fix it.
12:20
If anyone knows, explanation is very much appreciated.
Why is the input of ram become all 0s when the edge detection is not applied?
Shouldn't it be writing through the bus just fine?
14:20 that bug that crawled across the screen on the top right scared the living sht out of me
I realize you are probably busy and all, but I'd really enjoy a video or two about a GPU (architecture and possibly some of the logic) Great videos so far though! Thanks so much!
i love the gpu
Thanks from Texas.
Ben, these videos are great and very helpful. I have one question: You mention in the video that the inputs on the 74ls series ICs have pull up resistors. What about the outputs? Don't you need some resistors here? Could you say something general about this with the resistors?
you need pullup resistors only when the IC has open collector outputs
All all these ICs do not have open collector outputs or inputs?
same doubt
Most of the logic IC's i've seen have two state outputs
technically all ls series chips have a resistor between the pin and the chip itself ... this is both a design and need of the chip ... to keep it using low power (L as in low power) they chip still needs to use a 5v setting so the resistor pulls the 3.3v supplied upto 5v for the chip to work properly ... being a schotky (S the person who found that paired transistors did a better job of doing what they do if they are matched) so you do have a pull up resistor on every pin because it must be there to improve power usage and decrease false positives from noise (the pull up resistor drowns out any background rf noise signal impeding the line and to better balance the transistors on the ic)
WHOH DUDE! That is incredible!
Wow that is super intresting
Very Nice project ben!!
@14:56 Is this a limitation (one of the limitations) on the speed of this computer?
Will it cause problems if the clock ticks more than once every 10 microseconds?
tip : thé answer is in the question...
really great videos, subscribed, im trying to recall a combination lock circuit that i forgot, it used flip flops with for its sequencer series and a timed reset when a certain time is passed, i just forgot about it, it was used for dtmf pass code to enable a an output, the dtmf must be in the right sequence to enable an output.
search you videos
If you are watching this video and trying to get to the finish line, pin 3 on the S00n goes to pin 12 on the 157. Otherwise, you ram will get written over randomly.
helped me immensely
just make sure it connects to the button
1:48 a rare off-by-one error :)
when I press write button the LED's turn on, in your video they stay off, why?
Thanks for another great video. could you please provide a block diagram of what you have built already?
There is a a very good block diagram in this PDF.
drive.google.com/open?id=0B6LIgQzDkH8fRmpSYm9ROTMzSGM
Oh thanks for the information. In addition, as Ben said at the beginning, he is building a modification of the SAP-1 computer, not the original one, and in this document we can see those modifications.
Awesome, Thank very much for sharing the schematic.
I only used this schematic for the Instruction Decoder and the Control Matrix.
Which worked out perfectly. I used the original 1977 schematic for everything else.
This is the original one. (Instruction Decoder and Control Matrix is not good on this one.)
drive.google.com/open?id=0B6LIgQzDkH8faEJuaExJemxoUUk
What document are you referring to?
Thank you
I'm surprised the RAM you're using doesn't have a clock in that latches on the rising edge. Are there chips that do?
I have been following your 8 bit adder video and just wondering if you can also include and show us how to do multiply / divide in this computer too. I am very curious. I bought the book also. thanks a lot.
there is not going to be multiply / divide section of the alu, you will have to make a program for that
Is there any simple approach for the Multiply/divide function?does not matter if it is slower but having that functionality will be great. in Malvinos Book for SAP he did mentioned some examples of multiplications and existing SAP but he did it with counting and shifting bits. I hope that approach can be used even if it is slower. I hope Ben can show us something on this subject.
For fast hardware multiplication you might want to look up "Wallace tree" or "Dadda tree". Such could be added to the ALU (as an additional "product register", just like the existing "sum register"). They do exist as 74 series chips, eg the Wallace tree: 74xx275.
For division I'm afraid there is no such (relatively) simple thing.
Note: it's hard to find this chip, but you can build your own from (quite) a bunch of full- and half-adders, basically.
Data sheet for the mentioned 275: pdf1.alldatasheet.com/datasheet-pdf/view/152946/TI/SN74LS275.html
The voltage across the resistor only reaches 0 at about t = 5 * RC, rather than just t = RC. Wouldn't that mean that the length of the pulse is 50 microseconds rather than 10?
It doesn't have to go all the way to zero, for TTL the high level goes down to 2 V and the low level up 0.8 V. It takes
ln(5/2)*RC = 0.92*RC to go from 5 V to 2 V, and
ln(5/0.8)*RC = 1.83*RC to go from 5 V to 0.8 V,
so it seems that the pulse width should be counted as something between 0.9*RC to 1.8*RC in this case. But I think that Ben was mostly interested to get a ball park estimate of the pulse width, and just RC itself is good enough for that.
PLEEEEASSSSSE NEW VIDEO BEN
at 14:15 ben rudely wakes up the spider that was taking a nap under his scratch paper
Holy crap!
Very observant. I guess it’s still a bit buggy.
if we will use the ram with clock why the chip doesnt have clock input built in?
Please do another one 😀
Why would yo not simply attach the data programming dips directly to the bus, giving the RAM a single read path? This would also let you put custom values on the bus at runtime.
because he wants to get away from manual programming and go for automated programming ... and putting the dips on the bus then stops that and will force what they are set at on the bus instead of what he wants to pass around the bus
I think it's for safety. It you switch tu run mode with one of the switches connecting to ground and any register writes a 1 on that bit you willhave a short circuit
Then you would need a way to force all the chips that might be trying to drive a value onto the bus not to, which seems like a lot of AND gates.
Also, the bus is not wide enough for both address and data, so at least one of them needs to take an alternate override path.
I had the same problem as others with the RC circuit added to the NAND gate messing up the clock in other modules. I routed the clock through the NAND gate twice with one input set to high to prevent the feedback and then to the RC. However, when I do that the write enable is always set on the RAM chip regardless of how the RI jumper is set. Anyone else have this problem and have a solution?
I had the problem with the RC circuit too. Rather than running the clock signal through the NAND gate as you did, I ran the clock signal through a Schottky diode (of the BAT-43 variety) before connecting to the capacitor as design by Ben Eater. This fixed the "back signal" the RC circuit created in the clock line. Also, I found in general that Ben Eater's assertions about certain chips having internal pull up resistors is not always true, or the internal resistor is "too large" and thus doesn't create strong enough pull up across multiple connections. An so, I've sprinkle a number of 10K or 1K pull up resistors. Pertaining to this RAM module, the critical pull on resistor was on the selector pin of the 74ls157s (which select whether you are in run mode or program mode). Leaving those pins floating while in run mode yielded inconsistent results. The good news is since all these pins are connected to each other, you only need one 10K pull up resistor somewhere in the line.
BEN! where have you gone? i sure hope you haven't given up on us!
Please check out my new comments. Sort by newest first.
Adding this capacitor for 10 microseconds means that the clock speed can't be fastar than that, right? Isn't that a "bad" thing? How fast can the clock go?
it is only like 133hz at max so not even close to 10 microseconds per pulse
@@FBI_Master it’s actually about 300hz. Check the Turing videos
@@xiar5546 oh i messed up my math
I've been following you since the beginning of the series and built along. This time though, I'm ahead of you and built a output register already... last night I built the EEPROM programmer (manual, no ardunio or similar). th-cam.com/video/ah2FkdFJlmI/w-d-xo.html . Very good series that got me back into electronics! Thanks a million!
You are life saver 💚
What gauge wire are you using in this project? I bought 22 gauge solid core, but the insulation seems quite thick compared to what you have here. I'm wondering if this is standard?
I was wondering the same thing; on my build the wiring gets very tight, particularly around the bus driver chips. On the ALU I ended up using an extra breadboard to space things out. I think I'm going to have to do the same here
I am in the same position
So. If we want to increase the ammount of RAM in this computer, we would need to have more address bits.
This would allow us to run much larger programs on this computer!
A DS1609S has 256 bytes of memory and would be a good match.
Thinking that rewriting the fetch cycle might be able to have the instruction and memory adress in different memory addresses.
like this:
Memory:
0000 0000 - LDA
0000 0001 - Memory address
The fetch cycle could be like this:
CO | AI
RO | II
PC | CO | AI
RO | RAI Storing the address in register A to put into the memory register later. Or is i possible to do without storing it?
AI | RAO
Or am I compleletely off the mark?
Please do another one!
come back man, we miss you a lot.. Show us how to build rom and other stuffs please :(
I ensured that the power and ground where connected properly to the 74LS157 but I still am having the same issue where the 4 least significant bits are going high when I push the push button. Any advice on where to look?
Why do we need the edge detection? I understand the explanation of the timings just not the reason for needing it in the first place, why do we only want to write for 10us?
It helps to prevent potential errors caused by the data changing before the end of the clock cycle.
I had multiple tabs opened... nevermind what Melkior said is right, I think what could be added is that you take a look when he holds the button of the clock keeping the write signal on, the output goes off, that does not have anything to do with the rising edge, it is part of the logic of the chip, whenever the WE:0 (enabling write) - It will get inverted two times and fed into the output, setting all the outputs to 0.
Lookin good sir.
Off by one error in hardware? Does that happen often?
Looking at how many wires Ben has placed, I'm amazed that he hasn't wired more of them to the wrong places. It seems like an easy thing to happen unless you have good tools to avoid it.
Can you please how large data is fetched sequentially ?
This might be a stupid question but, why use a RAM if you want to write on the edge? Wouldnt it be simpler if you used a register from the begining?
The important thing about the RAM is that it contains multiple addresses. A normal register only contains one data value.
if i increase the addresses for example 8 bit pc how do i do jump instructions is it possible?
the value on the bus goes 'round and 'round...
Hi, i just powered up 2 74LS189's and 2 inverters. What i see it pulls 140 mA in total. is that normal for just 4 IC's? I checked and double check the connections
Please i can't find the progress of this proyect in order
I have my 8-Bit SAP-1 working, although it is not complete. But before I go on too far... A BIG THANK YOU Ben !!!
drive.google.com/open?id=0B6LIgQzDkH8fc0tuTTQ2TDhCZ1E
Here is what I do not have working yet.
I do not have the HLT or JMP working yet, although I do have them coming out of the Instruction Decoder, I just need to wire them up. I also do not have an Output Register setup, so I am happy when it Outputs the answer to the BUS.
I do have a CLR system setup (I am using a push button and an inverter), I am fuzzy on how to keep the Ring Counter timer off, until I am ready for it to start. My push button clears the Program Counter, Ring Counter, MAR and all the Registers.
I like the Step by Step Mode, as you can see the MAR, Memory and Instruction Register interact with each other, to
move the correct data to the BUS and to the correct registers and the Instruction Decoder and Control Matrix, Loading and or Enabling the correct registers to move things to the correct places. IT IS AMAZING !!!
Anyhow, this is the program that I have entered.
Address Mnemonic Opcode Operand
0000 LDA 0000 1010
0001 ADD 0001 1011
0010 SUB 0010 1100
0011 ADD 0001 1101
0100 ADD 0001 1110
0101 ADD 0001 1111
DATA OUTPUT
1010 DATA 0100 0001 65 1000001 65
1011 DATA 0010 1111 47 1110000 112
1100 DATA 0001 1000 24 1011000 88
1101 DATA 0000 0011 3 1011011 91
1110 DATA 0001 0000 16 1101011 107
1111 DATA 0000 0111 7 1110010 114
65 + 47 - 24 + 3 + 16 + 7 = 114 or 0111 0010
What did one core on the mobile dual core cpu say to the other? Let's do a bus transfer...
There's a bug at 14:16
And those kinds of bugs can definitely affect hardware. :)
In my Ram module, when I switch my board from program to run mode, some of the bits in my addresses deactivate, I have checked my wiring multiple times, does anyone else have this problem?
Is the capacitor for the edge detector discharging through the clock signal?
That;s what I am assuming, and it messed up my program counter module (which gets the same clock signal). I'm curious how he avoided this. I ended up fixing by using 2 NAND gates in series to make a diode from the clock signal before flowing into the RC.
just pass the clock through a diode on the way to the edge detector then it wont flow back into your clock sync circuitry .. or a buffer as it will also bring the signal back to it's freshest high and low as it progresses ... and inverter also can work as a buffer ... but you have to ensure which signal you are using ... before you buffer it in an inverter.
Wow this is exactly what I've been stuck with for quite some hours now!
@@eXecu7e Me too. I went over and over everything trying to figure out why clock speed doubled. I finally just removed the clock connection to isolate it to the edge detector. Glad to finally get confirmation it wasn't just something I did wrong. Wondering if I can just get by with leaving the capacitor and resistor out of the mix.
@@smithw7003 You likely won't. I later got problems with writing to RAM, and finally fixed them by routing the clock twice through the Nand gate before going into the RC (to prevent any discharging of the capacitor from mixing with the original clock signal). Essentially followed this video: th-cam.com/video/QPX3Yrqs6yY/w-d-xo.html
Can somebody explain me if the 16 addresses as used in the example are the upper limit of an 8 bit computer? (as you only have 4 bits in the Instruction Register that can address them).
In other words: how could you increase the memory? Do you need to got to a 16bit cpu or are there ways to this?
The most memory you could address with 8-bit addresses (and 8-bit words and no bank-switching) is 256 bytes. I think Ben is using 4 bit memory addresses for convenience/simplicity here so he can fit both the instruction and the address of any operand into a single memory location.
That gives a limit of 16 (4-bit) possible opcodes that can address 16 (4-bit) memory locations. It would make the instruction decoder more complex, but he could change the scheme to two-byte instructions where the first byte is the op-code and the second is the address byte. Then, he could have 256 opcodes that could address 256 memory locations.
To do any better than that, you'd need to employ something like bank-switching or increase the number of address lines.
when is the decode vid is coming Ben?
Here is the Instruction Decoder and Control Matrix. The instruction Decoder is pretty easy.
I added LEDs to represent the 6 different commands.
LDA / ADD / SUB / OUT / JMP /HLT
drive.google.com/open?id=0B6LIgQzDkH8fbEQ1X3NwUUJFNWs
Again, I will ask the question here. I have not seen anywhere, in any of the diagrams or schematics, where a mux is needed on the memory. There is no Load Memory. command.
There is an Enable Memory to the BUS, and you can program the memory contents with the 8 bit dip switch, but there is no load memory from the bus.
Does anyone here have any insight to this memory multiplexer?
Thank you
Isn't that just in the memory chip itself, the LS189? I mean you just tell it 4 bits of address and it, internally, translates that to which of the row and column LOAD lines (64 in total, be it 16x4 or 4x16) it should assert and which not.
Well, that's actually *de*multiplexing.
But maybe I'm getting you wrong. Do you mean eg. storing the contents of the accumulator *into* memory? Like, "STA"?
He did put a signal to load the memory from the bus. It's being used towards the end of this video (I think he calls it RI when he labels the control signals). That is how the memory will be updated when the computer runs, the 8 bit dip switch is just for programming before you start the computer.
There is a fly at 14:15.
Good 🎊 😮
The time it takes to charge a Capacitor is 5 x Tau (RC) . Sorry 😘
I'm watching this series to get to the control unit part.. and eventually, it's not there !!
I have the control unit completed.
This is my current working SAP-1
drive.google.com/open?id=0B6LIgQzDkH8fUTlCYWpJV3B2dDA
i wonder why at the start you have just random garbage in RAM can you please mak a vid about that mabye?
It's because when it's powered on, every bit wants to be on, but one goes on before the other and causes the output to be random.
it's known in digital electronics as a race condition ... it happens on powering up a circuit ... as no power is perfect on at 5v but bounces from 7v down to about 2v .. and settles out at it's 5v in the first few micro seconds ... all the different parts of the ic's have high power and low power available .. so the ic actually races to a result while the circuit bounces up and down from adding power ...
.
this is why most ic's and all the earliest ones had a clear or reset line to set them to a known state so it didnt matter what anything had it was all reset to a known state usually 1 to signify its not active atm .... yes 1 means OFF not on ... 0 as in a complete circuit means ON or powered or running or working ... dam yanks cant get that right either ... 1 means not working or off as in just a piece of wire ... no connections no data ....
.
and people complain programming in C is too much work
Completely off topic, did anybody else see that 🐜 crawl across at 14:20 in the top right? 😅😂
Thanks, Ben! I'd like to know if you have an engineering degree?
knowing all that he knows I bet he has a degree from a top university.
That's obvious, he is from Khan academy too
No , he doesn't . There is a interview on him on Khan academy. You can watch it.
doesnt matter if he does or does not ... he does a great job of covering the material just one major problem ... 0 is active on or high or running ... because it is a completed circuit it has no gaps ... 1 is active low or off as in just a piece of wire not connected to anything ... NOT the other way around ... this is why he has to pull signals LOW to get them to be active because the chips were built to a proper standard that the americans didint bother to follow like the metric system instead of imperial measurement ... yes (3.67liters is equal to 1 IMP gallon) so we actually get .33 more milk than americans do when we get 4l of milk instead of a gallon jug ;)
.
Other than american pride on conventions being backwards he is covering everything better than most basic electronics teachers do already.
and provides relevant versions to see what it can do as part of a whole system .... essentially he is taking a bunch of switches and making a computer ... as he writes the program and stores it then runs that program he has to input the data for it ... after that it will run as along as he chooses to let it run
.
all he needs to do at the end of it is make a solid state hard drive to store his programs and poof he has a workable system that is a ton better than what took apollo to the moon
In all previous videos we have been using the correct terms, such as LOAD and or ENABLE. It looks like for simplicity's sake, we have changed the control signal inputs to IN and or OUT.
This will change the Control Word acronyms of the Control Matrix and force those of us, who actually read the source documents, to translate standard acronyms to the new different simplistic acronyms.
So Lm (LOAD MAR) gets translated to Mi (MAR IN) and something like La (Load Accumulator) translates to Ai (Accumulator IN).
This really throws off the meaning of the LDA macroinstruction command or mnemonic. (Load Accumulator)
As you can see this new simplistic set of acronyms can really throw things off a little. I have to say, I am not a fan of this.
Although I never could understand why Cp was used for (Increment Program Counter) The rest of acronyms are very intuitive.
I do not think, that anyone who has followed these videos, this far, needs a simplified understanding of the control signal acronyms. This is just my opinion. Please give me a Thumbs up or a Thumbs down, if you agree or disagree.
Thank you
you could fall back on the standard ... action device value ..... as in load register somevalue .... or write address register1 .... this is how it was handled back when it was new stuff .... you used what you wanted to do ... what you were doing it on and what you were doing it with ... this is how the machine code nemonics came about ... lda ... for load data from address ... would be...... load addressvalue somevalue or you want to load the value at the address specified .... ... still comes down to WHAT your doing on what your DOING IT WITH what your USING .... action device value
14:16 a bug lurking around
ts not intx or unintersx or fun or not funx or everx
WOW.. You made 16byte ram?
.
First
Did you ever find some ram to build the ram module?
i have order all my komponents from utsource, and they gonna arrive in 2-4 weeks.
thanks for asking!
+Xrayer who cares? :P
Jeff Nay
You really have to learn to use scientific notation... It’ll make your life easier as you won’t have to put so many zeroes and risk skipping one or putting one more. For example: 10 nF = 10^-8 F and 1 kOhm = 10^3 Ohm, so 10^-8 • 10^3 = 10^-5 s = 10 us.
Can you please how large data is fetched sequentially ?