Hello
and
welcome
to
Mik's
page
at
DSP
lab.
There's nothing much here except the presentation on making GUI
interface with Matlab. Other than that, here's a brief info on what
I used to do. Click here for chrnological order.
VHDL AND ABEL (CPLD, FPGA, ASIC)
-
Logic design with Abel for CPLD (1995) - Used Abel to design and implement
4 bit RISC microprocessor using several CPLD. Register, control, and ALU
were implemented with CPLD and several discrete logic gates and RAM/ROM
were used. Simple instruction set was implemented with branches, conditionals,
etc.
-
VHDL with FPGA (1997) - As a part of a larger design, high speed serial
port was designed in VHDL. The VHDL code was to be downloaded to FPGA from
host PC.
-
VHDL for CPLD (1997) - After ordering VHDL book from Cypress semiconductor,
learned VHDL on my own time for CPLD. Their compiler has few bugs (found
one, maybe two), and their simulator is terrible (logic sim, not VHDL sim),
but they have lowest price for VHDL synthesis tool.
-
VHDL for FPGA (1998) - Wrote VHDL code for generating OQPSK signal. This
was modification of existing design and only involved code for programmable
frequency synthesis.
-
VHDL for ASIC (1998) - Wrote VHDL test bench for testing the serial port
of ASIC. The code had provisions for generating variable bit rate data
from time stamped text files and recording serial data to time stamped
text file. Model Sim was used as simulator.
DIGITAL AND ANALOG HARDWARE
-
OpAmp circuits design (1990) - Class project to design feedback audio amplifier
circuit. Designed and implemented simple audio amplifier with multipole
low pass filter to cut high frequency noise.
-
Apple II interface (1994) - Built interface controller for VCR control
by Apple II. Wrote 6502 assembly programs for real time control. See 6502
assembly.
-
Computer interface to AC (1994) - Designed and built several AC switches
to connect to the computer. The signal from the computer was passed through
inexpensive mechanical relay (diode is very important!!!) for isolation
and TRIAC for power switch. Subsequent implementation used Optoisolators
in place of relay.
-
DTMF circuit (1997) - Designed DTMF circuits to interface to computer and
phone line. The equipment would then call my pager if there is any failure
or if it ran through the sequence without problems. Different codes were
used to communicate type of failure or success. Wrote software interface
for use with other applications.
-
Switching modulator for CDMA PA (1998) - This project didn't get very far.
The goal was 80 MHz switching frequency with over 90 % efficiency rating.
Another was to have 5 MHz bandwidth with 90 dBc rejection with 1 dB ripple
in passband. One can design very good elliptic filters with LC, but the
goal is impossible with commercially available components. A prototype
1 MHz switcher with 85% efficiency is built.
SIMPLE HARDWARE (Soldering, etc)
-
Through-hole soldering (1982) - Electronics class, built simple FM band
Colpitts oscialltor, multivibrator, linear power supply.
-
Patchwork on SMD devices, as needed (not very good with microscope).
ASSEMBLY, EMBEDDED CONTROLLER (low and mid range PIC, 80C196KD)
-
Intel Microcontroller (1996) - Worked with Intel 80C196KD microcontroller
in implementing real time neural network controller. The theory behind
the controller, written by another engineer, was stable, but the real system
showed instability. Matlab simulations were so slow they were useless for
more than 10,000 iterations; C was used for simulating above 100,000 iterations
and indeed the instability was shown.
-
PIC microcontroller assembly (1998) - Wrote programs in assembly for PIC
micro controller. RS232 to LCD, RS232 to serial, digital data logger (aka,
PMLA -- poor man's logic ananlyzer), see below for real product.
-
PIC and C++ builder (1998) - Wrote program for RF modem control with OOK
and land line modem control. Hardware was implemented by another engineer,
but I implemented software for both PIC and GUI database with C++ builder.
ASSEMBLY, DSP (TI DSP, fixed and floating point)
-
TMS320C50 assembly (1996) - Designed and implemented digital filters using
TI assembly. Simple FIR and IIR filters were designed and implemented,
taking advantage of parallel execution.
-
TMS320C40 C programming (1997) - Designed simple DMA based IO for TI DSP
using Spectrum DSP card for PC. This was a part of the larger one-man design
involving VHDL/FPGA and Labview, but the project was cancelled.
ASSEMBLY, MICROPROCESSOR (8088, Z-80, 6502)
-
Z-80 Assembly (1983) - Writing video games using Z-80 assembly using Timex
Sinclair 1000. Also found ways of implementing computer graphics using
integer arithmetic with assembly and concept of quantizing.
-
IBM PC, 8088 assembly (1985) - Trying to learn assembly on 45 minutes a
day with no guidance is tough, especially when the teachers don't know.
Figured out what "mnemics" sort of mean and that the registers sort of
act as integer variables. I was on independent study since I finished the
Pascal course ahead of schedule.
-
6502 assembly (1994) - Wrote 6502 assembly programs for real time control
of VCR and built the interface controller. See Apple II interface.
ENGINEERING SOFTWARE : HARDWARE ORIENTED (C++/builder, Matlab, Labview,
VisualBASIC, HPVEE)
-
Labview (1995) - Instrumentation lab, wrote Labview VI module to collect
real time samples for plotting iron core Hysteresis. Worked with "slow"
A/D box from National Instruments and built OpAmp and Hall effect sensor
signal conditioning circuit.
-
Matlab (1995) - Brief introduction to Matlab. Due to its slow performance,
wrote only rudimentary programs. See below for more Matlab work.
-
RF circuits control with Visual BASIC (1997) - Wrote instrument and control
program for RF system. This involved figuring out synthesizer words, reverse
engineering existing script formats, and general pain in the xxxx.
-
Instrumentation control with IEEE488/GPIB/HPIB (1997) - Using IEEE488 bus,
wrote programs to control several instruments. Wrote programs to understand
text file scripts so the user would only have to edit simple text files
rather than modifying the program for new control sequences.
-
Instrumentation control with Visual BASIC (1997) - Using ingenious (!)
scheme, wrote script based program to control a $1,000,000 proprietary
equipment that wasn't designed for external control. Automated the equipment
operation to run 24 hours.
-
Instrumentation control with HP VEE (1998) - Implemented GUI based and
automated RF power measurement system with HP VEE. The result was written
out to excel readable format.
ENGINEERING SOFTWARE : CONCEPT ORIENTED (C++/builder, Matlab, Labview,
VisualBASIC, HPVEE)
-
Neural network (1995) - Indepent study on concept of Neural Network. Read
about basic concepts of feed forward and back propagation from various
books and literature. See below for hardware implementation.
-
Engineeing shareware (1995) - To avoid having to buy HP48 calculator, root
locus calculator program is written in Hypercard. The program was released
as shareware, but I have yet to receive the trillion dollar shareware fee.
There was one job offer, but it was too far away in Illinois. Pspiceshell,
a program to ease the use of SPICE for Mac, is written and released as
shareware. Many e-mails of thanks, but as yet to receive my shareware fee
of trillon dollars.
-
C++ builder (1997) - Ansi C++ was learned in school, but that wasn't too
useful for making "modern" GUI programs. C++ builder is used to write GUI
programs, some of them are serial port display in timing diagram, sending
events to other applications, screen savers. See below for database program
with modem.
-
Matlab GUI programming (1998) - As a research assistant, GUI front end
is provided for spectrogram project involving user interaction of the sound
file, generation and display of spectrogram, modifications of the spectrogram
and reconstruction of sound file from modified spectrogram. This project
does what it claims to do with platform independent Matlab code. That also
means it's rather slow. GUI with Matlab tutorial is available and the result
of the tutorial is useful general purpose graph program.
OTHER LANGUAGES : PASCAL, HYPERCARD, BASIC
-
BASIC with Apple II, TRS-80, Timex Sinclair 1000 (1983) - Learned BASIC
to write video games. Very quickly found out that BASIC is way too slow
for doing anything. Found some workarounds, such as using pointers and
using BASIC compiler, but eventually had to learn assembly. Also implemented
rudimentary computer graphics.
-
IBM PC BASIC (1984) - Some school computers were IBM PC and PC jr. Programmed
more graphics. A Korean word processor was designed using vector graphics.
(I could've been a millionaire had I marketed this, but I was too young
to be earning money at the time.)
-
Microsoft BASIC for Mac (1985) - Worked on writing simple programs for
Mac using "structured" basic from Microsoft. It's got good graphics, but
very slow.
-
IBM PC, Turbo Pascal (1985) - Moving to structured programming, designed
games such as TRON light cycle game with computer opponent and multiple
window text editor. Due to lack of speed, had to learn more assembly.
-
Macintosh programming with Hypercard (1994) - Wrote programs with Hypercard
to do simple file modifications and control of video disk player.
-
Macintosh programming with Future BASIC (1995) - Using Pascal-like structure
and BASIC syntax, Future BASIC allowed easier GUI programming than C or
C++ at the time. Simple programs for launching programs, and file modifications
are written and released as shareware.
TROUBLESHOOTING SKILL
-
Copier and Fax repair technician (1990) - Repair and maintenance of Toshiba/Sharp
Copiers and Fax machine. Received factory training on high end Toshiba
Copier and Laser/memory Fax machines.
-
Laboratory Technician, Physics and Engineering (1991) - Wrote lab instructions,
repair broken equipment, design new experiements and equipment, set up
computer networks, consulting to other department on computers. Designed
"multimedia video" system with Apple II. Wrote Hypercard programs for data
logging and multimedia control. Designed the web page for the department.
The list goes on and on.
WEB AND OTHER COMPUTER SKILLS
-
Word Processor, spreadsheet, database (1986) - What seemed like a backward
move, computer science department decide to get us using premade programs
rather than writing our own. Word Perfect, Lotus 123, dBase3.
-
More word processor on Mac platform (1987) - More reports are due and Word
with WYSIWYG is tremendously helpful.
-
Web design and HTML (1993) - A computer science friend in UT Austin has
a web page; I can't let myself get behind a computer science person so
I learn HTML and made web page. Since GUI for HTML wasn't available or
expensive, all code was written with text editor.
-
Computer Graphics (1993) - Used Photoshop, Illustrator, some Page Maker
to aid in web page design.
-
Web page design (1999) - Worked on modifying web page for digital signal
processing lab. All text was already available, but provided toolbar for
nonframes web page. Subsequently, the pages were changed to frames format.
-
Network setup, PC assembly and installation, Linux installation, Mac/PC
cross platform operation, VAX DCL, PERL and CGI, probably few more here
that I can't think of right now.
OTHER SKILLS AND EXPERIENCE
-
Speak enough English (1983) to be conversant.
-
Sole employee of drive through market (1987) - Part time job to pay for
school. I did almost everything other than going to the bank. I suppose
I could be an owner of such store, but I have bigger goals for myself.
-
ICBM (1988) - Courier service on motorcycle covering most of Southern California,
especially Orange County. On average, covered 300 miles per day on motorcycle.
Became very familiar with Orange County roads and also known as the fastest
biker (!) in town. Learned to ride while eating and looking at the map
with no hand on handlebar.
ALMOST CHRONOLOGICAL ORDER
Through-hole soldering (1982) - Electronics class, built simple FM band
Colpitts oscialltor, multivibrator, linear power supply.
BASIC with Apple II, TRS-80, Timex Sinclair 1000 (1983) - Learned BASIC
to write video games. Very quickly found out that BASIC is way too slow
for doing anything. Found some workarounds, such as using pointers and
using BASIC compiler, but eventually had to learn assembly. Also implemented
rudimentary computer graphics.
Z-80 Assembly (1983) - Writing video games using Z-80 assembly using
Timex Sinclair 1000. Also found ways of implementing computer graphics
using integer arithmetic with assembly and concept of quantizing.
Speak enough English (1983) to be conversant.
IBM PC BASIC (1984) - Some school computers were IBM PC and PC jr. Programmed
more graphics. A Korean word processor was designed using vector graphics.
(I could've been a millionaire had I marketed this, but I was too young
to be earning money at the time.)
IBM PC, Turbo Pascal (1985) - Moving to structured programming, designed
games such as TRON light cycle game with computer opponent and multiple
window text editor. Due to lack of speed, had to learn more assembly.
Microsoft BASIC for Mac (1985) - Worked on writing simple programs for
Mac using "structured" basic from Microsoft. It's got good graphics, but
very slow.
IBM PC, 8088 assembly (1985) - Trying to learn assembly on 45 minutes
a day with no guidance is tough, especially when the teachers don't know.
Figured out what "mnemics" sort of mean and that the registers sort of
act as integer variables. I was on independent study since I finished the
Pascal course ahead of schedule.
Word Processor, spreadsheet, database (1986) - What seemed like a backward
move, computer science department decide to get us using premade programs
rather than writing our own. Word Perfect, Lotus 123, dBase3.
More word processor on Mac platform (1987) - More reports are due and
Word with WYSIWYG is tremendously helpful.
Sole employee of drive through market (1987) - Part time job to pay
for school. I did almost everything other than going to the bank. I suppose
I could be an owner of such store, but I have bigger goals for myself.
ICBM (1988) - Courier service on motorcycle covering most of Southern
California, especially Orange County. On average, covered 300 miles per
day on motorcycle. Became very familiar with Orange County roads and also
known as the fastest biker (!) in town. Learned to ride while eating and
looking at the map with no hand on handlebar.
OpAmp circuits design (1990) - Class project to design feedback audio
amplifier circuit. Designed and implemented simple audio amplifier with
multipole low pass filter to cut high frequency noise.
Copier and Fax repair technician (1990) - Repair and maintenance of
Toshiba/Sharp Copiers and Fax machine. Received factory training on high
end Toshiba Copier and Laser/memory Fax machines.
Laboratory Technician, Physics and Engineering (1991) - Wrote lab instructions,
repair broken equipment, design new experiements and equipment, set up
computer networks, consulting to other department on computers. Designed
"multimedia video" system with Apple II. Wrote Hypercard programs for data
logging and multimedia control. Designed the web page for the department.
The list goes on and on.
Web design and HTML (1993) - A computer science friend in UT Austin
has a web page; I can't let myself get behind a computer science person
so I learn HTML and made web page. Since GUI for HTML wasn't available
or expensive, all code was written with text editor.
Computer Graphics (1993) - Used Photoshop, Illustrator, some Page Maker
to aid in web page design.
6502 assembly (1994) - Wrote 6502 assembly programs for real time control
of VCR and built the interface controller.
Computer interface to AC (1994) - Designed and built several AC switches
to connect to the computer. The signal from the computer was passed through
inexpensive mechanical relay (diode is very important!!!) for isolation
and TRIAC for power switch. Subsequent implementation used Optoisolators
in place of relay.
Macintosh programming with Hypercard (1994) - Wrote programs with Hypercard
to do simple file modifications and control of video disk player.
Macintosh programming with Future BASIC (1995) - Using Pascal-like structure
and BASIC syntax, Future BASIC allowed easier GUI programming than C or
C++ at the time. Simple programs for launching programs, and file modifications
are written and released as shareware.
Logic design with Abel for CPLD (1995) - Used Abel to design and implement
4 bit RISC microprocessor using several CPLD. Register, control, and ALU
were implemented with CPLD and several discrete logic gates and RAM/ROM
were used. Simple instruction set was implemented with branches, conditionals,
etc.
Engineeing shareware (1995) - To avoid having to buy HP48 calculator,
root locus calculator program is written in Hypercard. The program was
released as shareware, but I have yet to receive the trillion dollar shareware
fee. There was one job offer, but it was too far away in Illinois. Pspiceshell,
a program to ease the use of SPICE for Mac, is written and released as
shareware. Many e-mails of thanks, but as yet to receive my shareware fee
of trillon dollars.
Labview (1995) - Instrumentation lab, wrote Labview VI module to collect
real time samples for plotting iron core Hysteresis. Worked with "slow"
A/D box from National Instruments and built OpAmp and Hall effect sensor
signal conditioning circuit.
Matlab (1995) - Brief introduction to Matlab. Due to its slow performance,
wrote only rudimentary programs. See below for more Matlab work.
Neural network (1995) - Indepent study on concept of Neural Network.
Read about basic concepts of feed forward and back propagation from various
books and literature. See below for hardware implementation.
Intel Microcontroller (1996) - Worked with Intel 80C196KD microcontroller
in implementing real time neural network controller. The theory behind
the controller, written by another engineer, was stable, but the real system
showed instability. Matlab simulations were so slow they were useless for
more than 10,000 iterations; C was used for simulating above 100,000 iterations
and indeed the instability was shown.
TMS320C50 assembly (1996) - Designed and implemented digital filters
using TI assembly. Simple FIR and IIR filters were designed and implemented,
taking advantage of parallel execution.
VHDL with FPGA (1997) - As a part of a larger design, high speed serial
port was designed in VHDL. The VHDL code was to be downloaded to FPGA from
host PC.
TMS320C40 C programming (1997) - Designed simple DMA based IO for TI
DSP using Spectrum DSP card for PC. This was a part of the larger one-man
design involving VHDL/FPGA and Labview, but the project was cancelled.
RF circuits control with Visual BASIC (1997) - Wrote instrument and
control program for RF system. This involved figuring out synthesizer words,
reverse engineering existing script formats, and general pain in the xxxx.
Instrumentation control with IEEE488/GPIB/HPIB (1997) - Using IEEE488
bus, wrote programs to control several instruments. Wrote programs to understand
text file scripts so the user would only have to edit simple text files
rather than modifying the program for new control sequences.
DTMF circuit (1997) - Designed DTMF circuits to interface to computer
and phone line. The equipment would then call my pager if there is any
failure or if it ran through the sequence without problems. Different codes
were used to communicate type of failure or success. Wrote software interface
for use with other applications.
Instrumentation control with Visual BASIC (1997) - Using ingenious (!)
scheme, wrote script based program to control a $1,000,000 proprietary
equipment that wasn't designed for external control. Automated the equipment
operation to run 24 hours.
C++ builder (1997) - Ansi C++ was learned in school, but that wasn't
too useful for making "modern" GUI programs. C++ builder is used to write
GUI programs, some of them are serial port display in timing diagram, sending
events to other applications, screen savers. See below for database program
with modem.
PIC microcontroller assembly (1998) - Wrote programs in assembly for
PIC micro controller. RS232 to LCD, RS232 to serial, digital data logger
(aka, PMLA -- poor man's logic ananlyzer), see below for real product.
PIC and C++ builder (1998) - Wrote program for RF modem control with
OOK and land line modem control. Hardware was implemented by another engineer,
but I implemented software for both PIC and GUI database with C++ builder.
VHDL for CPLD (1997) - After ordering VHDL book from Cypress semiconductor,
learned VHDL on my own time for CPLD. Their compiler has few bugs (found
one, maybe two), and their simulator is terrible (logic sim, not VHDL sim),
but they have lowest price for VHDL synthesis tool.
VHDL for FPGA (1998) - Wrote VHDL code for generating OQPSK signal.
This was modification of existing design and only involved code for programmable
frequency synthesis.
VHDL for ASIC (1998) - Wrote VHDL test bench for testing the serial
port of ASIC. The code had provisions for generating variable bit rate
data from time stamped text files and recording serial data to time stamped
text file. Model Sim was used as simulator.
Instrumentation control with HP VEE (1998) - Implemented GUI based and
automated RF power measurement system with HP VEE. The result was written
out to excel readable format
Switching modulator for CDMA PA (1998) - This project didn't get very
far. The goal was 80 MHz switching frequency with over 90 % efficiency
rating. Another was to have 5 MHz bandwidth with 90 dBc rejection with
1 dB ripple in passband. One can design very good elliptic filters with
LC, but the goal is impossible with commercially available components.
A prototype 1 MHz switcher with 85% efficiency is built.
Matlab GUI programming (1998) - As a research assistant, GUI front end
is provided for spectrogram project involving user interaction of the sound
file, generation and display of spectrogram, modifications of the spectrogram
and reconstruction of sound file from modified spectrogram. This project
does what it claims to do with platform independent Matlab code. That also
means it's rather slow. GUI with Matlab tutorial is available and the result
of the tutorial is useful general purpose graph program.
Web page design (1999) - Worked on modifying web page for digital signal
processing lab. All text was already available, but provided toolbar for
nonframes web page. Subsequently, the pages were changed to frames format.