4

I am creating a program in which circuits using (only) Digital ICs can be made. I have shortlisted around 25 ICs from the 74xx family. Some of them are

  • 7400 (Quad 2 input NAND)
  • 7402
  • 7404
  • 7408
  • 74161 etc.

I have used most of these.

Now my queries are:

  1. How many ICs do you want to see supported in such a program?
  2. Name some specific, essential/recommended ICs to be included.
  3. Are digital ICs alone able to model a large number of circuits, or are analog elements also required?
  4. Is it correct to name an IC with the same function (like XOR) but a different packages (like W, N, D etc.), different types (like LS, S), or different manufacturers as a single name, such as 7486?
  5. IC 7400 & IC 7401 do the same job, so is it ok if I skip 7401?

Suggestions & criticism welcome. This will greatly influence my software design, like extensibility.

By the way, the project is free and open source, hosted here on Sourceforge if you're interested.

Kevin Vermeer
  • 19,989
  • 8
  • 57
  • 102
Vinayak Garg
  • 319
  • 1
  • 4
  • 11
  • 2
    TTL 74xx gates have very largely been replaced in practice by CMOS equivalents. Logically the functions are much the same but loading and signal levels and more may have changed. Building any simulator around CMOS ICs would make more sense. | Have you looked at what software is available already that does what you are attempting? – Russell McMahon Dec 27 '11 at 09:46
  • Well in my lab we used this family. So from learning point of view, it should be fine. This software i am targeting towards mainly students, including me. In the process i want to make something usable. Thanks for pointing the technology backwardness. Please tell if a person (pro/student) would refuse to use, (or would consider software useless) TTL 74xx. – Vinayak Garg Dec 27 '11 at 09:56
  • TTL is not useless, just far far less used. Probably nobody would use original TTL in a new design if the modern alternatives were available. The change to 74HCxxx etc is not a major one but the newer ICs are generally higher speed, lower power per speed and generally lower power in absolute terms and switching levels may be different than TTL. There are TTL compatible versions eg 74HCTxxx which have the same external appearance electrically. – Russell McMahon Dec 27 '11 at 11:37
  • if the pin config, & functionality is same, a user may not repel from 74. The problem is i don't know the CMOS alternatives. Is it ok if in the IC pick list i give names like **7400/{CMOS equivalent name}**. But VCC must be different then. – Vinayak Garg Dec 27 '11 at 11:47
  • I have given you two sample names and the internet has a vast amount of material on this if you try keying in the part number prefixes that I gave PLUS the old ones into the same search with g 00 on the end in each case you will probably get some sort of comparison table. – Russell McMahon Dec 27 '11 at 13:08
  • 3
    This is a problem that may not need yet another "halfway" implementation. If you insist on making your own, at the very least have a simple way that the library can be extended with new devices, for example a text file specifying behavior and pointing to an image file to use for a graphic symbol. – Chris Stratton Dec 27 '11 at 13:17

4 Answers4

3

Personally I would find it more useful to work with gates rather than specific chips. Unless you are going to model the exact electrical characteristics of the chips (and that means working as analogue) then it is pointless specifying specific chips.

Just emulate the gates and main combined gate logic blocks without worrying about specific chip names and numbers.

Majenko
  • 55,955
  • 9
  • 105
  • 187
  • ha, this is exactly what i had in mind "Digital design using Gates" initially. Then i saw softwares like TinyCAD doing same thing, & doing quite good. So i decided IC design for 2 reasons, 1-do something different, 2- i liked the lab equipment layout a lot. It is simple, with a breadboard, 10 channels for input, 10 for output, 2 7 segment, one clock etc. I would love to replicate something like that, concerning only design, not factors like power dissipation, PCB design etc. But then it should be natural enough to model close behavior. – Vinayak Garg Dec 27 '11 at 10:15
  • 1
    TinyCAD doesn't do the same thing as what you're proposing. TinyCAD performs the useful function of capturing a schematic for use in a PCB layout program. You seem to be proposing a very limited-scope simulator. If you want to do digital design and simulation, then ICs are unnecessary as Majenko has pointed out. If you want to do schematic capture like TinyCAD, then do that. – Kevin Vermeer Dec 27 '11 at 20:07
  • @KevinVermeer: I think I didn't explain my point very well. Apologies. I want to do something **simple** & **different** from TinyCAD. Students don't want to bother with PCB. And yes it is _limited scope simulator_. – Vinayak Garg Dec 28 '11 at 05:50
3

Sounds like a cool project.

Many circuits can be designed entirely out of pure digital logic (things that can be implemented out of ideal NAND gates), such as most of the components of a CPU design.

Some of my favorite digital chips are the 4:1 mux 74AC153 and the 2:1 mux 74HC157 (multiplexers are the tactical Nuke of Logic Design), and the 74HC595 shift register.

If you want people to be able to simulate complete CPUs with your software, there are only a few remaining parts of a CPU that cannot be built out of ideal NAND gates:

  • three-state logic for interfacing to the bidirectional "data" lines of a typical RAM chip. Perhaps one tri-state buffer and one tri-state latch out of 74HCT244, 74HCT245, 74AC253, 74HCT374, 74HC541, 74HC573 (an improved 74HCT373), and 74HC574.
  • open-collector logic for interfacing to the bidirectional "data" lines of I2C Flash EEPROM chips
  • an oscillator
  • some sort of input (pushbuttons and switches; perhaps something that can simulate a hexadecimal keypad)
  • some sort of output (LEDs, perhaps pre-arranged in 7-segment displays; perhaps a simulated HD44780 LCD controller; perhaps a simulated bitmap display as used in N&S Building a Modern Computer from First Principles).

"Hierarchical design" is nice. It would be nice if your users could place a box labeled "32-bit adder" on one schematic as if it were a single chip, then open up that adder to build its implementation as several "74181" ALU chips, then open up that ALU to build its implementation as several simpler chips.

Perhaps you could take the extreme N&S approach and build everything out of ideal NAND gates (except for the above-mentioned things that cannot be built out of ideal NAND gates). If your users want some other 74xxx digital chip, they could build it themselves out of NAND gates and three-state buffers and open-collector buffers.

It would be nice if your simulator could warn people about circuits that might produce glitches or unexpected state transitions. In other words, instead of simply assuming one particular input-to-output delay, I wish the simulator checks to make sure the design is robust enough to handle the full range of possible input-to-output gate delays and output-to-input transmission line delays (zero delay to max delay) -- even if today we use a fast chip here and a slow chip there, and tomorrow we use a slow chip here and a fast chip there. That seems far more useful to me than precisely simulating the exact delays of one particular chip at one particular temperature.

I think sticking with ideal digital logic, with the above exceptions -- temporarily ignoring power dissipation, PCB design, etc. -- will already be plenty useful -- enough to do high-level design of entire CPUs.

davidcary
  • 17,426
  • 11
  • 66
  • 115
  • Wow! your each and every line has entered my TODO list! I will be offering as many basic ICs I can. Rest the user would be able to prepare using a simple (preferably graphical) interface. I especially liked your **Hierarchical design**, **LCD**, **Three state logic** suggestions. Simulating delays correctly seems like a challenge, but I will try my best. And yes, when the electronics hardware is so cool, the software has to be cool. Thanks a lot! – Vinayak Garg Dec 29 '11 at 10:16
2

It's not clear from the question just what behavior your program will simulate: simple combinatorial logic equations? Combinatorial and registered logic? Timing? Power requirements? Noise margins? Clock tree management?

What is a rough estimate of total no. of ICs supported in a software (free and open source Sourcforge Project Home), expected by you?

For professional design work, I expect to have a selection of 1000's of parts, and the option to extend the library with new parts as needed. Remember that every part sold by every IC vendor has some market -- some design space where it was designed to be the best IC for that purpose -- so whoever's doing the design that needs that IC is a potential user for your simulator tool, but not if the tool won't support that IC.

Obviously students might be better served by a much narrower selection, corresponding to what they've learned about in class (but also, different courses will cover different material).

Name some specific, IC (essential/recommended)

For simple logic designs, I'd include all of the basic gates (and, or, nand, nor, xor, xnor), basic flip-flops (D, T, JK), plus common higher functions (mux, demux, shift register, counter, ram, ALU, ...)

Going beyond discrete gates, you would extend your audience a great deal if you would include the equivalent functions as they're implemented in various CPLDs and FPGAs.

Also, remember for most circuits using flip-flops you'll need to have some kind of clock source available. Many systems will need multiple clocks, and designers of those

Are digital IC alone able to model a large no. of circuit, or analog elements are required along?

Your users will certainly need some kind of clock source circuit. PLL clock management circuits are also very important in many digital systems.

To simulate circuits using open-drain wired-AND logic you will need to include pull-up resistors of arbitrary values, and (to simulate timing) different capacitive loads.

To simulate circuit timing, it would be very helpful to have components representing transmission line delays between chips, as well as the effects of (parasitic or intentional) capacitive loads.

Is is correct to name IC with same function (like XOR) but different packages (like W, N, D etc.), different types (like LS, S), different manufacturers as a single name (like IC 7486)

IC 7400 & IC 7401 do same job, so is it ok if i skip 7401

To answer 4 & 5 together, it really depends on your goals. To just simulate logical functionality, you could either skip some ICs or packages, or just make one model be usable with multiple names.

If you want the pin numbers in the drawing in your program to match what the user will lay out on a breadboard or PCB, you will need to have different drawing symbols for different packages and maybe for different manufacturers (I seem to recall that back in the day Motorola had a 74xx logic series that was totally functionally compatible but used totally different pin assignments, for example).

If you include timing behavior, you will want each chip to have its distinct propagation delay, rise and fall time, setup and hold times, etc.

The Photon
  • 126,425
  • 3
  • 159
  • 304
  • Just what i wanted to know! Thanks. I'll dig deeper into different manufacturers datasheet. Currently i have some of TI's & some of Motorola. But yeah more suggestions are welcome from all. – Vinayak Garg Dec 28 '11 at 05:57
1

I have to admit that I can not quite catch your question. However, I wonder why you have to use ICs such as 74XX. Since you say your program is only digital, I think a small scale CPLD/FPGA is more suitable.