Computer Logic Design with KTechLab
A couple of weeks ago, I wrote an article about a digital and analog circuit simulator called ksimus. One of my readers asked what the difference was between ksimus and ktechlab so I thought I'd take a look at ktechlab. Let me just say that both of these programs are a lot of fun to play with.
My first impression of ktechlab was that it has a much richer assortment of components from which to build circuits. Unlike ksimus, ktechlab includes an addressable memory as well as DAC's, ADC's and even a PIC micro-controller! As I'll discuss later, I had to use Google to find out what some of the components were. Ktechlab's documentation seems to be reasonably complete though the program's website has a lot of broken links. The website does include a plea for help from the user community, so if you find the program useful, perhaps you can help the program's developers by helping with the website.
The components in ktechlab are roughly broken down into categories: sources, discrete components, switches, outputs, logic circuits, connections, and integrated circuits.
Amazingly, ktechlab comes with ten voltage sources, including a few I'd never heard of! I'm not an Electrical Engineer, but I did find it a bit redundant to have both a battery, and a fixed voltage source. Both components had a configurable voltage output. The voltage signal source provides a sine wave with a configurable amplitude and frequency. The square wave clock generator has a configurable frequency and duty cycle, although it's somewhat counter-intuitively categorized as a logic component and not a source.
Ktechlab also provides discrete components that let you build simple analog circuits. Here we find resistors, capacitors, inductors, diodes and transistors. We also find a wide variety of switches. We have momentary contact and momentary break switches as well as SPST, DPST, SPDT, DPDT, and a rotary switch.
The outputs that ktechlab provides are just as varied. We have simple LED's and lamps. We also have bidirectional LED's, seven segment LED's, and a dot matrix display. The dot matrix display can be made almost any size you can imagine. We also find volt meters and ammeters. Finally, we can use the logic, voltage, or current probes to get a plot at the bottom of the application screen. Figure 1 shows a trivial circuit I built to demonstrate a couple different switches, a battery, a light bulb, a volt meter, and a potentiometer.
Ktechlab has a connections section that had some unexpected goodies. Here we find serial and parallel ports with all of the pins labeled! Ktechlab also has a bus connection that allows us to combine many conductors so that they can be routed and connected as a whole. For example, all of the address lines to a memory chip could be combined into one bus. We can use external connections to build modules that can then be used in larger projects.
When we get into the digital components things begin to get really interesting. Generally speaking, you'll find all of the gates and logic levels you expect and the gates can be any size you want. Creating an OR gate with 50 inputs is just crazy, but ktechlab will let you do it. We also find JK, SR, and D flip-flops. Then we move on to more complicated integrated circuits like DAC's, ADC's, Op Amps, 2-bit Adders, Multiplexers, Demultiplexers, and Counters. At this point, you could call the parts list fairly complete, but there's still more. Ktechlab has a BCD to 7 segment display encoder as well as a matrix display driver. We can even use a 555 timer chip! Remember those?
Figure 2 shows another simple circuit that I created. This time we have a clock source that drives an 8-bit counter. The output of the counter is used as data for a dot matrix display driver, which drives a single character of a dot matrix display. As you can see, I've got an enable, up/down, and a reset button. So, when the enable button is closed, the clock starts and the display cycles through all of the possible characters. If you press the reset button, it starts over again. If you toggle the up/down button, the display cycles in the other direction. This is a simple circuit, but it's a nice demonstration of some of the nicer features of ktechlab.
Next we come across the two chips I never expected to find in a simulator. One of the circuits is a RAM chip with up to a 32 bit address bus! I stopped increasing the data word size when I got to 90 bit!
The other chip I didn't expect to find in such a general circuit simulation package is a PIC micro-controller! Ktechlab allows you to use a P16F84 PIC in your design. Not only will Ktechlab simulate the PIC, it will allow you configure and program it! On a real PIC, each pin can be configured as either an input or an output. This configuration is done by writing a particular bit pattern into a configuration register. Ktechlab makes initial PIC configuration trivial; you can set the initial logic level by clicking on each pin to toggle between high and low. You configure each pin as input or output by clicking on the pin and dragging the mouse in the direction you want data to flow on that pin. Each pin has an arrow next to it indicating whether the pin is an output or input.
Figure 3 shows a fictional circuit featuring a PIC micro-controller and a parallel port. It's easy to see that with just a little bit of research, building a parallel interface circuit using a PIC could be trivial. Ktechlab allows you to design and model such a circuit.
Once you've got the PIC configured, which ktechlab will help you do, you can load a program onto it in either .asm, .c, or .microbe format. If your program is in .asm format, ktechlab will simulate the program while it's in the circuit.
PIC assembly language can be a bit daunting, but ktechlab helps make PIC programming easier. With ktechlab, you can actually create simple programs by combining flowchart elements. It's actually easier to show than to describe, so take a look at figure 4. In the left-hand corner, you see the PIC, with it's pins labeled. Each pin has an arrow next to it that indicates whether the pin is an output or an input. You also see the skeleton of a simple program and a subroutine. So, ktechlab gives you a unified environment where you can program, simulate and interface with PIC micro-controllers.
Once thing that I find conspicuously missing from ktechlab, as well as ksimus, is the ability to output signal levels to a file or read them in as circuit inputs. This would open the door to being able to simulate a circuit using real-world inputs. You'd also be able to compare the output of a simulation to known-correct results. Sadly, neither ktechlab nor ksimus offer this feature.
I came across ksimus and installed it out of curiosity. Ktechlab was pointed out to me by a reader. Both programs are fun to use and quite functional. Ksimus is probably better at modeling analog circuits using it's superior floating point functions. Ktechlab is vastly superior for doing computer logic design because it offers a wider range of components.
Mike Diehl is a freelance Computer Nerd specializing in Linux administration, programing, and VoIP. Mike lives in Albuquerque, NM. with his wife and 3 sons. He can be reached at email@example.com
Practical Task Scheduling Deployment
One of the best things about the UNIX environment (aside from being stable and efficient) is the vast array of software tools available to help you do your job. Traditionally, a UNIX tool does only one thing, but does that one thing very well. For example, grep is very easy to use and can search vast amounts of data quickly. The find tool can find a particular file or files based on all kinds of criteria. It's pretty easy to string these tools together to build even more powerful tools, such as a tool that finds all of the .log files in the /home directory and searches each one for a particular entry. This erector-set mentality allows UNIX system administrators to seem to always have the right tool for the job.
Cron traditionally has been considered another such a tool for job scheduling, but is it enough? This webinar considers that very question. The first part builds on a previous Geek Guide, Beyond Cron, and briefly describes how to know when it might be time to consider upgrading your job scheduling infrastructure. The second part presents an actual planning and implementation framework.
Join Linux Journal's Mike Diehl and Pat Cameron of Help Systems.
Free to Linux Journal readers.View Now!
|The Firebird Project's Firebird Relational Database||Jul 29, 2016|
|Stunnel Security for Oracle||Jul 28, 2016|
|SUSE LLC's SUSE Manager||Jul 21, 2016|
|My +1 Sword of Productivity||Jul 20, 2016|
|Non-Linux FOSS: Caffeine!||Jul 19, 2016|
|Murat Yener and Onur Dundar's Expert Android Studio (Wrox)||Jul 18, 2016|
- Stunnel Security for Oracle
- The Firebird Project's Firebird Relational Database
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- SUSE LLC's SUSE Manager
- Managing Linux Using Puppet
- My +1 Sword of Productivity
- Non-Linux FOSS: Caffeine!
- Google's SwiftShader Released
- Doing for User Space What We Did for Kernel Space
- SuperTuxKart 0.9.2 Released
With all the industry talk about the benefits of Linux on Power and all the performance advantages offered by its open architecture, you may be considering a move in that direction. If you are thinking about analytics, big data and cloud computing, you would be right to evaluate Power. The idea of using commodity x86 hardware and replacing it every three years is an outdated cost model. It doesn’t consider the total cost of ownership, and it doesn’t consider the advantage of real processing power, high-availability and multithreading like a demon.
This ebook takes a look at some of the practical applications of the Linux on Power platform and ways you might bring all the performance power of this open architecture to bear for your organization. There are no smoke and mirrors here—just hard, cold, empirical evidence provided by independent sources. I also consider some innovative ways Linux on Power will be used in the future.Get the Guide