Here are my suggested corrections to your paper (minus Kerm's proposed corrections):

1. "The most important thing in a CPU is the transistors, but transistors are worthless unless they are organized in logical arrangements known as GATES." not true (also, the phrase you're looking for is logic gates)
2. "Gates control what happens to two ( or more ) signals." Could use a better definition
3. "They are exclusive." spell out Exclusive OR and Exclusive NOR
4. "A bubble after a symbol means to make it a reverse." ...? A bubble on an input or output of a logic gate inverts the signal
5. "But if you put a bubble on the semi-circle on the wire coming out," it's not on the wire
6. "The gates will deal with the code by moving the current to the place referenced by the code." Not sure if "moving current to the place referenced by the code" is the best way to explain this...
7. You never defined what an ISA was
8. An ISA basically defines the instructions used in a CPU; the implementation of that would be the microarchitecture
9. "This must be handled by the program run into the CPU." run by the CPU
10. No apostrophe on "CPUs"
11. In regards to Kerm's #9, read up on propagation delays and critical paths, then re-write that block of text
12. Conclusion?

adept wrote:
"OK. Check these for stupid errors:
-A 8 number opcode is comparable with 8 pushbuttons.
-There are typically an equal number of inputs as outputs.
-A good register size for a simple CPU (or half-adder if you must), is 8 bits with 4 registers (for opcode, number 1, number 2, and answer.
-A dual core CPU is kind of like the "pushbuttons" being multiplied by 2 within the same CPU unit, along with the # of transistors.
-The "pushbuttons" are processed with gates to determine the number, which is connected to a pin with the same number, that triggers a circuit, to complete the command. (If I must, I'll make a flow-chart of the structure I'm suggesting. I'm probably will do it for the Science Fair anyway.)
-Flip-flops can be used to drive a simple LED display alone. One for each "pixel" that the CPU points to in order to make a letter, or phrase."


I'm a bit confused as to your usage of these statements. Can we see them in context (as in, is there another draft of your paper we haven't seen)? Anyways, here are my thoughts so far:

1. ...? Not sure what you're trying to explain here.
2. Way too much of a generalization (not to mention inaccurate)
3. A "good register size" is one large enough to hold the values you're manipulating
4. See #2
5. See #1
6. You can drive an LED display without FFs (also, driving each individual pixel with its own dedicated FF would be insane.)
#6 and then #6 a few more times. Laughing You would have to be insane to attempt that instead of using a pair of nice little bitcounters and some SRAM, at the very least.
Kerm!!! I was talking to my dad (electrical engineer of 30 years), about this project. He says the 2n2222 transistors, that when their current need is multiplied, the current I need could be in excess of 100 amps!! He said that one time, he worked on a computer that used discrete components, a lot like what I want to build. The story is that the power supply had to be 5V, but at 300 amps! How is the world am I supposed to get a 100 amp supply? He said that a transformer would be too big and complex for me to build, but suggested I look at a switching supply. I've built transformers before, but what is a switching supply, and how do I make one?

edit: just saw ultdev's comments, I'll fix it up straight away!
The hell are you on about? Run 300 amps through a 2N2222 and you have an explosion. Run 1amp through a 2N2222 and you have a fire. Razz Try more like 100mA - 200mA each; you'd need something like 1500 transistors in parallel to even be able to handle 200mA.

Edit: Also, Ultimate Dev'r spent a lot of time and energy looking over your work; please heed his comments and edits.
Are you saying I should disregard what my dad said? I do respect his opinion, and would be foolish to shrug it off. The discrete component CPU he was working on was used in a radar system for the US government. He couldn't remember the type of transistors, but said that the base current wouldn't be sufficient, after just a few (50-100 transistors), to cause the current to trip. He said to make sure I considered exactly how much current I needed.

edit: And Kerm, I didn't mean to sound angry. I'm going to talk to him when he gets back from McPherson....
double-edit: I sent the revisions. and included the rest of the proposal.
I don't want to get involved in strange drama. I'll let him advise you on this project, as he is far my superior in experience and knowledge, I'm sure. I'll stick with helping you with calculator stuff and editing your written work. Razz
Kerm, I didn't mean he knew better or anything... I wasn't mad or anything, just getting conflicting answers from two people who know better than me. He works with big analog circuits with high voltage and stuff, and usually he ignores my questions and tells me to look it up. So then I come to you. You seem like more of the digital guy. So I get two opinions from the two different points of view in the electronic world.
Still, the base current MUST be large enough. For example, when a battery gets low, strange things happen to electronics. Why? Because the transistors aren't all tripping like they should be. But the amperage is staggering. You're right about transistors catching fire or exploding with abuse like that. I need to know if it is current or voltage that trip the transistor. I know you can answer that for sure. The datasheet shows that 6 VOLTS are needed to trip the 2n2222, but doesn't give the amps needed. (Or I'm too blind to see...) I'm beginning to think that maybe the transistors he was using were bigger ones...
adept wrote:
Kerm!!! I was talking to my dad (electrical engineer of 30 years), about this project. He says the 2n2222 transistors, that when their current need is multiplied, the current I need could be in excess of 100 amps!!


@adept: I'm guessing there's a breakdown in communication between you, your Dad, and the datasheet. Looking at the data sheet I can see where you got the 100A figure from, as the max collector current for the 2N2222 is 1A and the largest min. current gain is 100, so somebody (either you or your Dad) deduced that a 2N2222 transistor could consume 100A of current. Only problem is (as Kerm explained), physics won't let you do that Razz (Look at the graphs in the 2N2222 datasheet to see what the current gain is for a given Vce and base current so you can calculate actual current consumption by the transistor; ask your Dad to help with this.)

adept wrote:
For example, when a battery gets low, strange things happen to electronics. Why? Because the transistors aren't all tripping like they should be. But the amperage is staggering.


...?

adept wrote:
The datasheet shows that 6 VOLTS are needed to trip the 2n2222, but doesn't give the amps needed.


The datasheet shows that a maximum of +6V difference between emitter and base is allowed at all. As a simplification, if you want to use a 2N2222 transistor as a digital switch, you need to supply roughly the same amount of voltage to the base as to the collector (which is usually tied to the positive rail of your power supply.)

For more information on transistors and how to use them I have a few pages for you to read:
http://www.kpsec.freeuk.com/components/tran.htm
http://www.kpsec.freeuk.com/trancirc.htm
I had a long conversation with my dad as we were at my relatives house. We talked of Boolean logic. We talked of transistors. And I have lots of things cleared up.
@ Ult Dev
To answer the statement, the amount is consumed by the large number of pull-up resistors. Each of these gates needs to have a pull-up resistor to stay stable. Each resistor consumes a lot of my limited power. But he thought that it was bigger than I plan it to be. He was looking at what I had drawn out, and then looked at all the resistors. So he was concerned it the RESISTORS, not the transistors, would drain out all my power. And I asked questions like:
Can I use 1 pull-up for several gates? No not really.
or
Can I change the value of the pull-up resistors to make their effect less severe? No not really.
And lots more. (I wrote down a lot of them...)

Also, I learned lots of Boolean algebra. He suggests the first thing I do with the 8 push-button input is the split the buttons used for the opcode into twice as many. Make one an A, another a Not(A), one a B, another a Not(B), etc. Thats because I want to demultiplex the opcode, and have the code go to another internal circuit, that executes what the opcode is supposed to. This is supposed to optimize the process a little. I won't need so many inverters. I learned that if I have 3 bits, all of them 0, in order to make sure it is stimulated ONLY when it is zero, I need to have (A Nor(B))AND(Not(C)=1 (or something like that(I have it written down, for all of the 4 bit opcode combinations.)) I still don't have everything all down solid.

Also, I remember talking about transistors. They have a certain amount of voltage that is dropped by each one. My dad estimated for a 2n2222, that this drop could be 0.7v. This means I lose voltage. We didn't finish talking about this, and I still really don't get it. But there's supposed to be some power lost in each transistor link.

And BTW: I've expended his talk time for at least a week! It was the longest conversation I've had with him for a really long time. (about 3 hours!) And I still don't quite get everything.
About the whole "Gates" thing Razz

One needs not use gates to make, say, an Adder. Especially if you're not using saturation for memory.

Just my two bits.

Oh, and by the way, the simplest (And 100 percent accurate) way to regard logic gates is this: Or takes the higher input, And takes the lower, Not inverts the input.

Note that when you NOT, AND or OR large numbers, it does each digit individually, so not 1001 is 0110, and OR 1001, 1100 is 1101, not 1100
adept wrote:
Each resistor consumes a lot of my limited power.


How limited is your power source?

adept wrote:
Can I change the value of the pull-up resistors to make their effect less severe? No not really.

Depending on how many pull-up resistors you use, you can decrease their overall power consumption appreciably by using higher value resistors, but this will decrease the speed of your transistors slightly (you can read up on calculating pull-up resistor values here (though it may be a bit over your head for now): http://www.interfacebus.com/IC_Output_Input_Pullup_Resistor_Values.html)

adept wrote:
Also, I learned lots of Boolean algebra. He suggests the first thing I do with the 8 push-button input is the split the buttons used for the opcode into twice as many. Make one an A, another a Not(A), one a B, another a Not(B), etc. Thats because I want to demultiplex the opcode, and have the code go to another internal circuit, that executes what the opcode is supposed to. This is supposed to optimize the process a little. I won't need so many inverters. I learned that if I have 3 bits, all of them 0, in order to make sure it is stimulated ONLY when it is zero, I need to have (A Nor(B))AND(Not(C)=1 (or something like that(I have it written down, for all of the 4 bit opcode combinations.)) I still don't have everything all down solid.


Are we still talking about the schematic in the first post of this topic?

adept wrote:
Also, I remember talking about transistors. They have a certain amount of voltage that is dropped by each one. My dad estimated for a 2n2222, that this drop could be 0.7v. This means I lose voltage. We didn't finish talking about this, and I still really don't get it. But there's supposed to be some power lost in each transistor link.


Hopefully this will shed some light: http://www.bcae1.com/transres.htm

adept wrote:
And BTW: I've expended his talk time for at least a week! It was the longest conversation I've had with him for a really long time. (about 3 hours!) And I still don't quite get everything.


It's a good thing you got to spend so much quality time with your Dad Smile

willrandship wrote:
One needs not use gates to make, say, an Adder. Especially if you're not using saturation for memory.


What would you suggest then?
willrandship wrote:
About the whole "Gates" thing Razz

One needs not use gates to make, say, an Adder. Especially if you're not using saturation for memory.
I suppose you could do analog addition, but why..?
UltDev:
First thing. The schematic I posted at first was an EXAMPLE of a microarchitecture. I am building my OWN CPU. I have started demultiplexing the codes. I could post my progress, but the image file the schematic program exports is 4860x3060. I think I'll post my final schematic, but not the intermediary stages.
On the topic of pull-up resistors, the problem that arose is that the number needed depends on how many gates are being affected. If a small number of gates is used, I can get by with less pull-up resistors, but in the case that all of the gates are on, (which isn't possible, but a heck of a lot can be...), then I need LOTS of pull-up resistors. Its all cuz you can't use the same resistor twice! Very Happy
Oh, and I need help picking 16 commands. I have 8 registers, 4 4-bit, and 4 extended 8-bit. I have the basic ones, but can't think of other important commands. The ones I have are:
-load
-add
-sub
-call
-label
-put
-get
-clrled
-beep
-push
-pop
These are the commands I deemed necessary. For the prototype build, the form of input is a simple 1 button keyboard. Future plan is a 8-bit extended-register-using keyboard. The form of output is an LED flip-flop matrix display. Current size is 3x5, future plan is 6x5. The other output is a simple buzzer.

The transistor page you referred me to kinda helped. I didn't find out what happens with several transistors together. However, the voltage drop wasn't as big as I thought. I could see what you were saying before.

@willrandship
I get what you're saying, but the way I understand it, I couldn't have all the commands I want. I want 16 possible commands, that can be programmed. Gates are the only way to go for me to be able to demultiplex and for other commands. I really wish I DIDN'T have to deal with gates though! Very Happy

edit: just saw something else that needs answering! The power source needs to be small enough to run on a single 110 volt 60 hertz 15 amp breaker. (Or whatever a house uses these days!)

double edit:http://img87.imageshack.us/i/cputransistorschematicr.png/
This is my progress up to now. I have all the logic done up to the second level. All of these will be AND gates. Then the next level is the circuit to DO the command, and then the next level is the processed output.

And Kerm, I didn't mean to upset you last night, or say that my dad knew better. I've talked with him (a few posts ago.) and cleared it all up. You and him were confusing me. I'm sorry I am always the noob, and I promise I will get better. (and disregard this is you weren't mad...)
adept wrote:
First thing. The schematic I posted at first was an EXAMPLE of a microarchitecture.


No matter how bad you want it to be, it's *not* a microarchitecture (did you read the link I posted describing what microarchitectures actually are?)

adept wrote:
On the topic of pull-up resistors, the problem that arose is that the number needed depends on how many gates are being affected. If a small number of gates is used, I can get by with less pull-up resistors, but in the case that all of the gates are on, (which isn't possible, but a heck of a lot can be...), then I need LOTS of pull-up resistors. Its all cuz you can't use the same resistor twice! Very Happy


Which is why using higher-valued resistors would be helpful.

adept wrote:
The form of output is an LED flip-flop matrix display.


Why would you want to control an LED matrix using FFs?

adept wrote:
The power source needs to be small enough to run on a single 110 volt 60 hertz 15 amp breaker. (Or whatever a house uses these days!)


You intending to power your "CPU" directly from a wall socket?

adept wrote:
double edit:http://img87.imageshack.us/i/cputransistorschematicr.png/
This is my progress up to now. I have all the logic done up to the second level. All of these will be AND gates. Then the next level is the circuit to DO the command, and then the next level is the processed output.


It seems to me that what you want to build is a CPU, however what you're actually designing isn't even close to one. Looking at your schematic, it looks more like you're implementing a product of sums expression with discrete components, with the inputs being your "commands" and the outputs being an LED matrix.
adept wrote:
edit: just saw something else that needs answering! The power source needs to be small enough to run on a single 110 volt 60 hertz 15 amp breaker. (Or whatever a house uses these days!)
A whole bank of a handful of servers uses fewer than 15amps. I think you're a little vague on the scale of power usage of circuits. Smile
UltDev:
OK. I guess a better way to put what the schematic I originally posted is a logic handling schematic. Indeed, I looked up what a microarchitecture was again, and its pretty much a fancy flow-chart. Thanks for clearing that up. But it still is an example of what I'm trying to make.
Could you explain better how higher value pull-ups can help in my design? Your links have done a great job of explaining what they are or how they work, but I am too dumb to make a connection to my design. My current design, as of writing this, is here: http://img153.imageshack.us/i/cputransistorschematicr.png/
I want to control my LED matrix with FF's because that is the only way I know how to do it with discreet components. I can't think of a way to control it otherwise. Besides, isn't that what is inside the display drivers anyway?
As for the power it is going to take, I am resolving (right this moment), to shut up about how much it is going to take. I don't really know until I have the design finished, and can run computations on the energy consumption.
I AM building a CPU. All that the schematic at the moment is a decode logic. The way that it is supposed to work is like this: User input -> decode logic -> command processing -> output controllers -> user output. (Does THAT qualify as a microarchitecture?) Today, I have started on the command processing. So yes, what you saw was a "product of sums expression with discrete components".

@Kerm
Yeah, I'll just shut up about the power until I can run computations. Heck, I don't even have the transistor count yet! I'll ask you to help with the math. But that's at least all the way to next week.

Am I right to believe a T flip-flop is a JK flip flop with the J and K being shorted together?--nevermind. I found the answer. (The answer is yes.)
adept wrote:
Could you explain better how higher value pull-ups can help in my design? Your links have done a great job of explaining what they are or how they work, but I am too dumb to make a connection to my design. My current design, as of writing this, is here: http://img153.imageshack.us/i/cputransistorschematicr.png/


Remember Ohm's Law? Resistance is inversely proportional to current, so as resistance increases, current flow decreases and vice versa. For example, let's use this illustration as our test circuit, and let's make the postive terminal +5V and the negative terminal 0V:

First, let's make our resistor 10Kohm and calculate the current across the resistor:
I=V/R
I=(5)/(10000) = .0005A = .5mA

Now, let's increase our resistor's resistance to 47K and see what happens:
I=V/R
I=(5)/(47000) ~ 0.0001A = .1mA

By nearly quintupling the resistance, I decreased current flow by roughly a factor of 5.

adept wrote:
I want to control my LED matrix with FF's because that is the only way I know how to do it with discreet components. I can't think of a way to control it otherwise. Besides, isn't that what is inside the display drivers anyway?


Basically LCD controllers are just giant decoders, receiving data on just a few wires and turning on the necessary pixels through large row & column drivers. To implement an LED matrix of the size that you want to use would probably best be done with either decoders and/or shift registers if you want to use FFs. For example, if I wanted to control a 64 LED matrix, I would arrange them in an 8x8 grid, and have 8 row signals and 8 column signals, then use a decoder to decode a 3-input control to 8 row lines (log2(8) = 3, so we need 3 control lines), then do a similar approach with a shift register to control the columns. Here's a page with an example of this implementation with a 4x8 LED matrix: http://www.acm.uiuc.edu/sigarch/tutorials/ledarray/

adept wrote:
I AM building a CPU. All that the schematic at the moment is a decode logic. The way that it is supposed to work is like this: User input -> decode logic -> command processing -> output controllers -> user output. (Does THAT qualify as a microarchitecture?) Today, I have started on the command processing. So yes, what you saw was a "product of sums expression with discrete components".


You're getting close; what you're loosely describing is called an instruction cycle, which is implemented as part of the datapath of a processor.

You might want to take a look at the von Neumann design model for tips, along with these other links:
http://en.wikibooks.org/wiki/Microprocessor_Design
http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=datapath+control
http://iiusatech.com/~murdocca/POCA/slides/Ch06POCA.pdf

If you have some $, this would be an excellent book for you to pick up: Introduction to Computing Systems: From bits & gates to C & beyond
The answer is indeed 'yes' to your final question; I'm glad you researched it yourself.
On a somewhat related note, I found a really cool "paper processor" that helps to visualize the operation of a simple 3-instruction processor: https://sites.google.com/site/kotukotuzimiti/
Ultimate Dev'r wrote:
On a somewhat related note, I found a really cool "paper processor" that helps to visualize the operation of a simple 3-instruction processor: https://sites.google.com/site/kotukotuzimiti/
Oh yeah, that was making the rounds of the gadget sites a few months ago. Nice one,.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 2 of 6
» All times are GMT - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement