<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Embedded Components and Tools Blog Center &#187; Component Projects</title>
	<atom:link href="http://www.embeddedcomponents.com/blogs/category/component-projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.embeddedcomponents.com/blogs</link>
	<description>The Home For Smart Reusable Code &#38; Circuits</description>
	<lastBuildDate>Sat, 04 Feb 2012 05:09:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Dual-Channel Digital Volume Control Circuit Simulation</title>
		<link>http://www.embeddedcomponents.com/blogs/2012/01/volume-control/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2012/01/volume-control/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 04:22:30 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[LTspice/SwitcherCAD III]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/?p=657</guid>
		<description><![CDATA[Ron Fredericks writes: In today&#8217;s post, I will demonstrate the value in using LTspice to simulate a complete circuit. In several previous LTspice posts I described how to use the simulator as a test jig for single IC&#8217;s and gates. Each block in a circuit should be tested within LTspice before creating a multi-circuit simulation [...]]]></description>
			<content:encoded><![CDATA[<p>Ron Fredericks writes: In today&#8217;s post, I will demonstrate the value in using LTspice to simulate a complete circuit.</p>
<p>In several previous LTspice posts I described how to use the simulator as a test jig for single IC&#8217;s and gates. Each block in a circuit should be tested within LTspice before creating a multi-circuit simulation to verify performance against expected results. The test jig process included downloading a custom gate, IC, and spice code for the cd4066 bi-polar analogue switch from the yahoo LTspice user group, and the creation of my own 74LS193 pre-setable up/down counter from primitive logic gates.  Ltspice is very flexible. Most discrete components are readily available in the library, with a great support group from on yahoo. There are a wide variety of spice and pspice models to important from many Internet sources as well..</p>
<h3>The Circuit to Simulate</h3>
<p>I came across this digital volume control circuit during a web search.  The circuit seems to be fairly popular as it shows up in <a href="http://www.google.com/#q=%22dual-channel+digital+volume+control%22+circuit&#038;hl=en&#038;prmd=imvnsb&#038;ei=9IULT_f9DYSpiQLpz-j1Aw&#038;sqi=2&#038;start=90&#038;sa=N&#038;bav=on.2,or.r_gc.r_pw.,cf.osb&#038;fp=cb5f4aec6a892e36&#038;biw=1108&#038;bih=605">thousands of places on the web</a>.  I thought it would be a good place to start my investigation of digital volume control even though there are many industry specific chips out there to manage some of these functions as well as chips that offer much larger feature sets. With this circuit I hope to expand on the features to create new volume control and measurement circuits &#8211; perhaps while investigating the value in using an more advanced volume control chip.</p>
<blockquote><p>
This circuit could be used for replacing your manual volume control in a stereo amplifier. In this circuit, push-to-on switch S1 controls the forward (volume increase) operation of both channels while a similar switch S2 controls reverse (volume decrease) operation of both channels.<br />
Here IC1 timer 555 is configured as an astable flip-flop to provide low-frequency pulses to up/down clock input pins of pre-setable up/down counter 74LS193 (IC2) via push-to-on switches S1 and S2. To vary the pulse width of pulses from IC1, one may replace timing resistor R1 with a variable resistor.</p>
<p>Operation of switch S1 (up) causes the binary output to increment while operation of S2 (down) causes the binary output to decrement. The maximum count being 15 (all outputs logic 1) and minimum count being 0 (all outputs logic 0), it results in maximum and minimum volume respectively. </p>
<p>The active high outputs A, B, C and D of the counter are used for controlling two quad bi-polar analogue switches in each of the two CD4066 ICs (IC3 and IC4). Each of the output bits, when high, short a part of the resistor network comprising series resistors R6 through R9 for one channel and R10 through R13 for the other channel, and thereby control the output of the audio signals being fed to the inputs of stereo amplifier. Push-to-on switch S3 is used for resetting the output of counter to 0000, and thereby turning the volume of both channels to the minimum level. &#8212; Sheena K. for <a href="http://www.electronicsforu.com/electronicsforu/lab/freecircuitslist.asp?id=25&#038;title=Dual-Channel%20Digital%20Volume%20Control">electronicsforu magazine</a>
</p></blockquote>
<div id="attachment_675" class="wp-caption aligncenter" style="width: 1034px"><a href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2012/01/dual-channel-digital-volume_controller.png"><img src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2012/01/dual-channel-digital-volume_controller-1024x309.png" alt="" title="click to enlarge" width="420" height="126" class="size-large wp-image-675" /></a><p class="wp-caption-text">Dual-Channel Digital Volume Control Circuit (click to enlarge)</p></div>
<h3>The LTspice Simulation</h3>
<p><b>The Circuit</b></p>
<div id="attachment_717" class="wp-caption aligncenter" style="width: 430px"><a href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2012/01/LTspice_schematic_1280x287.jpg"><img src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2012/01/LTspice_schematic_420x94.jpg" alt="" title="click to enlarge" width="420" height="94" class="size-full wp-image-717" /></a><p class="wp-caption-text">Volume Controller Schematic in LTspice (click to enlarge)</p></div>
<p><b>The Simulation Results</b></p>
<div id="attachment_725" class="wp-caption aligncenter" style="width: 460px"><a href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2012/01/volume_control_simulation_results_1280x985.jpg"><img src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2012/01/volume_control_simulation_results_450x346.jpg" alt="" title="click to enlarge" width="420" height="323" class="size-full wp-image-725" /></a><p class="wp-caption-text">LTspice Simulation Results (click to enlarge)</p></div>

<!-- start wp-tags-to-technorati 1.02 -->

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2012/01/volume-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simulating the CD4066 Quad Bilateral Switch With LTspice</title>
		<link>http://www.embeddedcomponents.com/blogs/2011/12/cd4066-ltspice-simulation/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2011/12/cd4066-ltspice-simulation/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 14:00:23 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Technology]]></category>
		<category><![CDATA[Electronic Components]]></category>
		<category><![CDATA[LTspice/SwitcherCAD III]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bilateral switch]]></category>
		<category><![CDATA[cd4007]]></category>
		<category><![CDATA[CD4066]]></category>
		<category><![CDATA[Helmut Sennewald]]></category>
		<category><![CDATA[ltspice]]></category>
		<category><![CDATA[simulation]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/?p=179</guid>
		<description><![CDATA[Ron Fredericks writes: Today is Robert Norton Noyce&#8217;s birthday (born 12/12/1927) &#8211; co-inventor of the integrated circuit (IC). So I thought I would take a few minutes and document my work modeling the CD4066 quad bilateral switch with the LTspice simulator. In this post I describe how flexible LTspice can be as a general SPICE [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-4184215318352482";
/* 468_60_v1 */
google_ad_slot = "6370068834";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Ron Fredericks writes: Today is Robert Norton Noyce&#8217;s birthday (born 12/12/1927) &#8211; co-inventor of the integrated circuit (IC). So I thought I would take a few minutes and document my work modeling the CD4066 quad bilateral switch with the LTspice simulator.</p>
<p>In this post I describe how flexible LTspice can be as a general SPICE circuit simulator, and how accurate its behavior can be in comparing LTspice test results with the physical IC&#8217;s datasheet.  In this example I use the CD4066B as the IC to model. I test the model using its characteristic  &#8220;on&#8221; resistance curves under various voltage and current operating conditions. I conclude by using a standard CD4066 datasheet to verify the accuracy of the model. </p>
<p>Meanwhile this is the last IC I need to simulate the analog section of the digital volume control circuit using LTspice I mentioned in two of my previous blog entries:
<ul>
<li>Digital volume control&#8217;s heart beat: <a href="http://www.embeddedcomponents.com/blogs/2008/03/simulating-the-555-ic-with-ltspice/">Simulating the 555 IC with LTspice</a> and </li>
<li>Digital volume control&#8217;s logic: <a href="http://www.embeddedcomponents.com/blogs/2008/04/74hc193-for-ltspice-switchercadiii/">Introducing 74HC193 Simulation to LTspice</a>.</li>
</ul>
<h3>Define one of four bilateral switches on CD4066 for LTspice</h3>
<p>&nbsp;</p>
<p>To get the CD4066 IC into my circuit simulation, I first created a symbol for one of the four bilateral switches in this package, and defined a SPICE subcircuit definition for the switch using existing SPICE CD4007 gate models as the starting point.</p>
<p><strong>Symbol for one of four bilateral switches on the CD4066 IC</strong></p>
<p>&nbsp;</p>
<div id="attachment_587" class="wp-caption alignnone" style="width: 310px"><a href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2011/12/CD4066LRG.png"><img src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2011/12/CD4066LRG-300x280.png" alt="" title="CD4066LRG" width="300" height="280" class="size-medium wp-image-587" /></a><p class="wp-caption-text">LTspice symbol for one of four bilateral switches on cd4066 (click to enlarge)</p></div>
<p><strong>LTspice Subcircuit Definition for CD4066</strong><br />
Note the LTspice implementation of the SPICE language is highlighted (below) using my own <a href="http://qbnz.com/highlighter/" title="Jump to the official website for GeSHi">GeSHi</a> language highlighter library with key sections of the language (.model and .subcircuit)  hyper-linked into SPICE language definitions that I have created on the contributor pages of this website.  SPICE is a difficult language to highlight using GeSHi because many of the SPICE language constructs are so short that they overlap with longer language constructs.  I plan to add more language definitions in the future as my circuit models need them, and I continue to find unique look-up algorithms to match GeSHi language highlighter categories.</p>
<p>&nbsp;</p>
<div class="ch_code_container" style="font-family: monospace;height:300px;">
<div style="">Code (ltspice)</div>
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">* CD4066 Analog Switch</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">* SYM=CD4066</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">* Transistor models are from LTspice group member kcin_melnick</span></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">* See message number 16897, http://tech.groups.yahoo.com/group/LTspice/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">* Analog Switch Control In Out Vdd Vss</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.embeddedcomponents.com/blogs/scad3/dotcommands/SUBCKT/"><span style="color: #0000ff;">.SUBCKT</span></a> CD4066 <span style="color: #000000;">2</span> <span style="color: #000000;">11</span> <span style="color: #000000;">4</span> <span style="color: #000000;">10</span> <span style="color: #000000;">7</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #999900;">X1</span> <span style="color: #000000;">2</span> <span style="color: #000000;">6</span> <span style="color: #000000;">10</span> <span style="color: #000000;">7</span> INVERT</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #999900;">X2</span> <span style="color: #000000;">6</span> <span style="color: #000000;">1</span> <span style="color: #000000;">10</span> <span style="color: #000000;">7</span> INVERT</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #999900;">M1</span> <span style="color: #000000;">14</span> <span style="color: #000000;">6</span> <span style="color: #000000;">7</span> <span style="color: #000000;">7</span> CD4007N</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #999900;">M7</span> <span style="color: #000000;">11</span> <span style="color: #000000;">6</span> <span style="color: #000000;">14</span> <span style="color: #000000;">10</span> CD4007P</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #999900;">M3</span> <span style="color: #000000;">11</span> <span style="color: #000000;">1</span> <span style="color: #000000;">14</span> <span style="color: #000000;">14</span> CD4007N</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #999900;">M4</span> <span style="color: #000000;">11</span> <span style="color: #000000;">1</span> <span style="color: #000000;">4</span> <span style="color: #000000;">14</span> CD4007N</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #999900;">M8</span> <span style="color: #000000;">11</span> <span style="color: #000000;">6</span> <span style="color: #000000;">4</span> <span style="color: #000000;">10</span> CD4007P</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.embeddedcomponents.com/blogs/scad3/dotcommands/SUBCKT/"><span style="color: #0000ff;">.SUBCKT</span></a> INVERT <span style="color: #000000;">1</span> <span style="color: #000000;">2</span> <span style="color: #000000;">3</span> <span style="color: #000000;">4</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">* Inverter In Out Vcc Vss</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #999900;">M1</span> <span style="color: #000000;">2</span> <span style="color: #000000;">1</span> <span style="color: #000000;">3</span> <span style="color: #000000;">3</span> CD4007P</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #999900;">M2</span> <span style="color: #000000;">2</span> <span style="color: #000000;">1</span> <span style="color: #000000;">4</span> <span style="color: #000000;">4</span> CD4007N</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.embeddedcomponents.com/blogs/scad3/dotcommands/ENDS/"><span style="color: #0000ff;">.ENDS</span></a></div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.embeddedcomponents.com/blogs/scad3/dotcommands/MODEL/"><span style="color: #0000ff;">.MODEL</span></a> CD4007N NMOS <span style="color: #66cc66;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">+ <span style="color: #cc0000;">LEVEL</span>=<span style="color: #000000;">1</span> <span style="color: #cc0000;">VTO</span>=<span style="color: #000000;">1.44</span> <span style="color: #cc0000;">KP</span>=320u <span style="color: #cc0000;">L</span>=10u <span style="color: #cc0000;">W</span>=30u <span style="color: #cc0000;">GAMMA</span>=<span style="color: #000000;">0</span> <span style="color: #cc0000;">PHI</span>=.<span style="color: #000000;">6</span> <span style="color: #cc0000;">LAMBDA</span>=10m</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">+ <span style="color: #cc0000;">RD</span>=<span style="color: #000000;">23.2</span> <span style="color: #cc0000;">RS</span>=<span style="color: #000000;">90.1</span> <span style="color: #cc0000;">IS</span>=<span style="color: #000000;">16</span>.64p <span style="color: #cc0000;">CBD</span>=<span style="color: #000000;">2</span>.0p <span style="color: #cc0000;">CBS</span>=<span style="color: #000000;">2</span>.0p <span style="color: #cc0000;">CGSO</span>=<span style="color: #000000;">0</span>.1p <span style="color: #cc0000;">CGDO</span>=<span style="color: #000000;">0</span>.1p</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">+ <span style="color: #cc0000;">PB</span>=.<span style="color: #000000;">8</span> <span style="color: #cc0000;">TOX</span>=1200n<span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.embeddedcomponents.com/blogs/scad3/dotcommands/MODEL/"><span style="color: #0000ff;">.MODEL</span></a> CD4007P PMOS <span style="color: #66cc66;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">+ <span style="color: #cc0000;">LEVEL</span>=<span style="color: #000000;">1</span> <span style="color: #cc0000;">VTO</span>=<span style="color: #000000;">-1.2</span> <span style="color: #cc0000;">KP</span>=110u <span style="color: #cc0000;">L</span>=10U <span style="color: #cc0000;">W</span>=60U <span style="color: #cc0000;">GAMMA</span>=<span style="color: #000000;">0</span> <span style="color: #cc0000;">PHI</span>=.<span style="color: #000000;">6</span> <span style="color: #cc0000;">LAMBDA</span>=40m</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">+ <span style="color: #cc0000;">RD</span>=<span style="color: #000000;">21.2</span> <span style="color: #cc0000;">RS</span>=<span style="color: #000000;">62.2</span> <span style="color: #cc0000;">IS</span>=<span style="color: #000000;">16</span>.64P <span style="color: #cc0000;">CBD</span>=<span style="color: #000000;">4</span>.0P <span style="color: #cc0000;">CBS</span>=<span style="color: #000000;">4</span>.0P <span style="color: #cc0000;">CGSO</span>=<span style="color: #000000;">0</span>.2P <span style="color: #cc0000;">CGDO</span>=<span style="color: #000000;">0</span>.2P</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">+ <span style="color: #cc0000;">PB</span>=.<span style="color: #000000;">8</span> <span style="color: #cc0000;">TOX</span>=1200N<span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.embeddedcomponents.com/blogs/scad3/dotcommands/ENDS/"><span style="color: #0000ff;">.ENDS</span></a></div>
</li>
</ol>
</div>
<h3>Testing the CD4066 Circuit in LTspice</h3>
<p>Finally, I dragged the symbol with subcircuit models into my LTspice program and ran a series of tests to demonstrate the &#8220;on&#8221; resistance characteristics associated with the switch at various voltage and current values.  Note the multicolored graph showing the resistance curves at various VI levels.</p>
<p>&nbsp;</p>
<div id="attachment_591" class="wp-caption alignnone" style="width: 310px"><a href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2011/12/VIcurvesLRG.png"><img src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2011/12/VIcurvesLRG-300x240.png" alt="" title="VIcurvesLRG" width="300" height="240" class="size-medium wp-image-591" /></a><p class="wp-caption-text">VI curves and circuit schematic for cd4066 bilateral switch under test (click to enlarge)</p></div>
<h3>Get these files from LTspice Yahoo Group</h3>
<p>The 4 main files used to create this demo circuit can be obtained from LTspice Yahoo Group. Special thanks to Helmut Sennewald</p>
<p>See the figure below&#8230;<br />
<div id="attachment_649" class="wp-caption alignnone" style="width: 310px"><a href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2011/12/files_from_LTspice_yahoo_group.png"><img src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2011/12/files_from_LTspice_yahoo_group-300x196.png" alt="" title="files_from_LTspice_yahoo_group" width="300" height="196" class="size-medium wp-image-649" /></a><p class="wp-caption-text">LTspice Yahoo Group File List (click to enlarge)</p></div></p>
<h3>Comparison of LTspice circuit simulation with datasheet</h3>
<p>The TI datasheet compares favorably with my simulations.  The LTspice &#8220;on&#8221; resistance curves and values are nearly exactly the same as those shown in figures 2,3, and 4 of TI&#8217;s datasheet (page 6) for the range I tested. </p>
<p>At this stage of development in simulating the analog path for my automatic volume control circuit, I see that the &#8220;on&#8221; resistance curve may create an unstable signal path under normal audio conditions unless the operating voltage (Vcc ) is much higher than the original circuit&#8217;s proposed 5 VDC power supply. </p>
<h3>References</h3>
<p>Linear Technologies LTspice Landing Page</p>
<p><a href="http://www.ti.com/lit/ds/symlink/cd4066b.pdf" title="open the TI datasheet PDF file in a separate window" target="_blank">Texas Instruments datasheet for the CD4066B</a> </p>
<p>What&#8217;s All This CD4007 Stuff, Anyhow?<br />
Bob Pease  |   ED Online ID #6073  |   April 5, 1999<br />
<a href="http://electronicdesign.com/Articles/ArticleID/6073/6073.html">http://electronicdesign.com/Articles/ArticleID/6073/6073.html</a></p>
<p>Fault in CD4066 Model<br />
kcin_melnick | LTspice Yahoo Tech Group Message #16897 | June 24, 2007<br />
<a href="http://tech.groups.yahoo.com/group/LTspice/message/16897">http://tech.groups.yahoo.com/group/LTspice/message/16897</a></p>
<p>Technorati Claim Tag<br />
SH66YHJAPDBA</p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/bilateral+switch' rel='tag' target='_self'>bilateral switch</a>, <a class='technorati-link' href='http://technorati.com/tag/cd4007' rel='tag' target='_self'>cd4007</a>, <a class='technorati-link' href='http://technorati.com/tag/CD4066' rel='tag' target='_self'>CD4066</a>, <a class='technorati-link' href='http://technorati.com/tag/Helmut+Sennewald' rel='tag' target='_self'>Helmut Sennewald</a>, <a class='technorati-link' href='http://technorati.com/tag/ltspice' rel='tag' target='_self'>ltspice</a>, <a class='technorati-link' href='http://technorati.com/tag/simulation' rel='tag' target='_self'>simulation</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2011/12/cd4066-ltspice-simulation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Google Android</title>
		<link>http://www.embeddedcomponents.com/blogs/2010/02/introduction-to-google-android/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2010/02/introduction-to-google-android/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 01:53:23 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Marketing]]></category>
		<category><![CDATA[Component Projects]]></category>
		<category><![CDATA[Component Technology]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/?p=379</guid>
		<description><![CDATA[Ron Fredericks writes: Are you new to the google android smartphone platform and developer ecosystem? If so, then this online video produced from LectureMaker&#8216;s high-tech video studio can help you get up to speed very quickly. The video includes several navigation dots along the time line so you can jump to the content you want [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-4184215318352482";
/* 468_60_v1 */
google_ad_slot = "6370068834";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Ron Fredericks writes: Are you new to the google android smartphone platform and developer ecosystem?  If so, then this online video produced from LectureMaker&#8216;s high-tech video studio can help you get up to speed very quickly. The video includes several navigation dots along the time line so you can jump to the content you want to watch (once it has downloaded). Expect to get an overview, some sample code demos, and an understanding of the business case behind developing apps for Android from watching this great video presented by Marko Gargenta of Marakana.</p>
<p>Enjoy&#8230;</p>
<div><strong><a href="http://www.lecturemaker.com/2009/10/android-software-platform/#video_link" title="Click link to go to the video page">Android Introduction</a> by <em>Marko Gargenta</em>, marakana</strong><br />Presented by Peter Lam, Mobile SIG Co-chair, Software Developer Forum</div>
<p><a href="http://www.lecturemaker.com/2009/10/android-software-platform/#video_link"><img src="http://www.lecturemaker.com/lectures/SDForum090917/android_introduction_450w_386h.jpg" alt="Video Link" width="450" height="386" border="0" title="Click image to go to the video page" /></a></p>
<p>Technorati Tags: <a href="http://technorati.com/tagRon+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/taggoogle+android" rel="tag">google android</a>, <a href="http://technorati.com/tagdeveloper+ecosystem" rel="tag">developer ecosystem</a>, <a href="http://technorati.com/tagLectureMaker" rel="tag">LectureMaker</a>, <a href="http://technorati.com/tagMarko+Gargenta" rel="tag">Marko Gargenta</a>, <a href="http://technorati.com/tagmarakana" rel="tag">marakana</a>, <a href="http://technorati.com/tagSoftware+Developer+Forum" rel="tag">Software Developer Forum</a></p>
<!-- start wp-tags-to-technorati 1.02 -->

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2010/02/introduction-to-google-android/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introducing 74HC193 Simulation to LTspice</title>
		<link>http://www.embeddedcomponents.com/blogs/2008/04/74hc193-for-ltspice-switchercadiii/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2008/04/74hc193-for-ltspice-switchercadiii/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 20:52:45 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Projects]]></category>
		<category><![CDATA[Component Technology]]></category>
		<category><![CDATA[Electronic Components]]></category>
		<category><![CDATA[LTspice/SwitcherCAD III]]></category>
		<category><![CDATA[circuit]]></category>
		<category><![CDATA[ltspice]]></category>
		<category><![CDATA[schematic]]></category>
		<category><![CDATA[simulation]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2008/04/74hc193-for-ltspice-switchercadiii/</guid>
		<description><![CDATA[Ron Fredericks writes: I have completed the design and test of a new component for LTspice/SwitcherCAD III circuit simulation and schematic capture. In a previous post I discussed my interest in the 74193 presettable synchronous 4-bit binary up/down counter IC for a digital volume control circuit I am building. The circuit simulation described below focuses [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-4184215318352482";
/* 468_60_v1 */
google_ad_slot = "6370068834";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Ron Fredericks writes: I have completed the design and test of a new component for LTspice/SwitcherCAD III circuit simulation and schematic capture.  In a <a href="http://www.embeddedcomponents.com/blogs/2008/04/new-gate-design-using-ltspiceswitchercad-iii/" title="Simulating the 555 IC with LTspice">previous post</a> I discussed my interest in the 74193 presettable synchronous 4-bit binary up/down counter IC for a digital volume control circuit I am building.  The circuit simulation described below focuses on how to simulate the 74HC193 IC, but timing and voltage parameters built into this design allow a designer to easily simulate other variants of this IC from high speed Si-gate CMOS HC and HCT devices to low power Schottky TTL devices. </p>
<p>All circuits related to this 74HC193 simulation are available <a href="http://www.embeddedcomponents.com/blogs/2008/04/74hc193-for-ltspice-switchercadiii/#download">here&gt;</a></p>
<h3>The 74HC193 Component</h3>
<p>See figure 1 below for a screen shot of the completed design. The circuit was built from the digital gates in the component library supplied with the original Linear Technology&#8216;s free LTspice tool.  </p>
<table width="200" border="0" cellspacing="2" cellpadding="2">
<tr>
<td><img id="image167" height="360" alt="74HC193 Circuit and Related Components" border="2" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/74hc193.png" /></td>
</tr>
<tr>
<td><span style="color:#999999">Figure 1 &#8211; 74HC193 Circuit and Related Components</span></td>
</tr>
<tr>
<td>View <a href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/74hc193circuit.htm">larger image&gt;</a></td>
</tr>
</table>
<p>
To keep the design looking like the original data sheet logic diagram, as published by companies that include NXP Semiconductors and Texas Instruments, a custom &#8220;T notS-R FlipFlop&#8221; subcomponent and corresponding assembly file was first created. This subcomponent was reused 4 times in the main IC logic diagram. An assembly file called 74hc193.asy was also created. It includes all pins used on the commercial IC except ground and Vcc. The ICâ€™s internal power supply is not simulated by the Linear Technologies&#8217; gates, and so they are not used or required in this design either.  </p>
<p>
Each gate within the design has a few variables assigned to them so that the IC remains flexible and easy to reuse in new projects:</p>
<ul>
<li><strong>tdgate</strong> <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_17fb99174b442102b6a6847dc6665fb4.png" style="vertical-align:-5.5px; display: inline-block ;" alt="right" title="right"/> td (propagation time delay assigned to each gate)</li>
<li><strong>tdgate2</strong> <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_17fb99174b442102b6a6847dc6665fb4.png" style="vertical-align:-5.5px; display: inline-block ;" alt="right" title="right"/> td (propagation time delay assigned to the D FlipFlop)</li>
<li><strong>tripdtgate</strong> <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_17fb99174b442102b6a6847dc6665fb4.png" style="vertical-align:-5.5px; display: inline-block ;" alt="right" title="right"/> tripdt (td&#8217;s accuracy band assigned to each gate including the D FlipFlop)</li>
<li><strong>vhighgate</strong> <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_17fb99174b442102b6a6847dc6665fb4.png" style="vertical-align:-5.5px; display: inline-block ;" alt="right" title="right"/> logical high value for each gate and D FlipFlop</li>
<li><strong>vlowgate</strong> <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_17fb99174b442102b6a6847dc6665fb4.png" style="vertical-align:-5.5px; display: inline-block ;" alt="right" title="right"/> logical low value for each gate and D FlipFlop</li>
</ul>
<p>These variables can be assigned their corresponding time and voltage values using a .param statement placed in the main circuit. These values are then within scope for automatic reuse by the 74HC193 component and flipflop subcomponent simulations. Below is an example of how parameter assignment can be made (as used in the test circuit described next):</p>
<p><strong>.param tdgate=10n tdgate2=3*tdgate tripdtgate=1n vhighgate=5v vlowgate=0v</strong></p>
<p><span id="more-166"></span></p>
<h3>The Test Circuit</h3>
<p>See figure 2 below for a screen shot of the completed simulation test circuit. </p>
<table width="200" border="0" cellspacing="2" cellpadding="2">
<tr>
<td><img id="image170" height="360" alt="74HC193 Simulation Test Circuit and Truth Table Waveform Analysis" border="2" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/74hc193_test.png" /></td>
</tr>
<tr>
<td><span style="color:#999999">Figure 2 &#8211; 74HC193 Test Circuit and Truth Table Waveforms</span></td>
</tr>
<tr>
<td>View <a title="74HC193 Simulation Test Circuit and Annotated Waveform Analysis (larger view)" href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/74hc193test.htm">larger image&gt;</a></td>
</tr>
</table>
<p>The test circuit demonstrates the use of the 74HC193 component assembly.  </p>
<p>Individual pulse voltages are applied to the component&#8217;s input pins to validate the new device:</p>
<ul>
<li><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_6d82183393711c9b1ab6b0e3102185b9.png" style="vertical-align:-4.5px; display: inline-block ;" alt="MR" title="MR"/> (asynchronous master reset) <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_f91752b3b400fe4c1d1c2bdc0dceb0e1.png" style="vertical-align:-4.5px; display: inline-block ;" alt="right" title="right"/> pulsed high at the beginning and end of simulation. Unlike the waveform often shown in the 74xx193 IC&#8217;s datasheet <a href="http://www.nxp.com/acrobat_download/datasheets/74HC_HCT193_3.pdf">sequence diagram</a> (see page 7 of 29 in this version published by NXP), the second reset pulse was added to insure that Q0 to Q3 output values really do reset. </li>
<li><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_45326aefb78d2502a16491dc449562a7.png" style="vertical-align:-4.5px; display: inline-block ;" alt="overline{PL}" title="overline{PL}"/> (asynchronous parallel load) <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_f91752b3b400fe4c1d1c2bdc0dceb0e1.png" style="vertical-align:-4.5px; display: inline-block ;" alt="right" title="right"/> pulsed low near beginning of simulation to set flip-flop outputs (Q0 to Q3) to the data input values (D0 to D3).</li>
<li><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995_d9e52d1c6acb120f13bdf78a0b5d6ac3.png" style="vertical-align:-5px; display: inline-block ;" alt="CPU" title="CPU"/> (rising edge triggered count up clock) <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_f91752b3b400fe4c1d1c2bdc0dceb0e1.png" style="vertical-align:-4.5px; display: inline-block ;" alt="right" title="right"/> pulsed low several times to demonstrate both the count up behavior of the flip-flop outputs and the terminal count up, or carry, (<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995_af0e9973b5aa0259b7b56820755e15c2.png" style="vertical-align:-5px; display: inline-block ;" alt="overline{TCU}" title="overline{TCU}"/>) output.</li>
<li><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995_7499df48f6355f9e9c3882c5a1944355.png" style="vertical-align:-5px; display: inline-block ;" alt="CPD" title="CPD"/> (rising edge triggered count down clock) <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_f91752b3b400fe4c1d1c2bdc0dceb0e1.png" style="vertical-align:-4.5px; display: inline-block ;" alt="right" title="right"/> pulsed low several times to demonstrate both the count down behavior of the flip-flop outputs and the terminal count down, or borrow, (<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995_5475adbefa3d9f7708302e8b715ef6f4.png" style="vertical-align:-5px; display: inline-block ;" alt="overline{TCD}" title="overline{TCD}"/>) output.</li>
<li><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_0f9d76428568fcad70cb130b20f4638e.png" style="vertical-align:-4.5px; display: inline-block ;" alt="D0" title="D0"/> to <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_17df00d6eeb8028d6540e0edf03d02c4.png" style="vertical-align:-4.5px; display: inline-block ;" alt="D3" title="D3"/> (data input pins) <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_f91752b3b400fe4c1d1c2bdc0dceb0e1.png" style="vertical-align:-4.5px; display: inline-block ;" alt="right" title="right"/> tied to either logic-high or logic-low for this simulation. The logic-low is constructed from a zero voltage component instead of simply being tied to the LTspice global circuit common node (ground). This is because of the LTspice gate component&#8217;s special behavior in removing the simulation of individual gate pins tied to the common node ground.</li>
</ul>
<p>All voltage sources are referenced using the same high and low voltages described in the previous section: <strong>vhighgate</strong> and <strong>vlowgate</strong>. These values can be reassigned to all gates, all at once, using the .param statement discussed above. </p>
<p><a name="download"> </a></p>
<h3>Download the Circuits</h3>
<p>The 74HC193 component, subcomponent, assemblies, test circuits, and plot control files can all be downloaded without restriction in their use. The datasheet supplied does have some licensed use restrictions, as defined in its last page. The reference to the 74HC193 data sheet from NXP Semiconductors is in no way an endorsement of the company or its products, but it is the most recent and best documented behavior for this device that I have found.</p>
<ol>
<li>74hc193.74hct193.pdf 74HC193 data sheet published by NXP Semiconductors in Adobe Acrobat PDF format</li>
<li>74HC193_test.asc test circuit as shown in figure above</li>
<li>74HC193_test.plt plot control file used by the test circuit above</li>
<li>74HC103_test2.asc debug circuit used to debug errors in original design</li>
<li>74HC103_test2.plt plot control file used by the test2 circuit above</li>
<li>74HC193.asc circuit component</li>
<li>74HC193.asy circuit component assembly used in the test circuit above</li>
<li>TnotSRFlipFlopFromD.asc circuit subcomponent used by 74HC193.asc file above</li>
<li>TnotSRFlipFlopFromD.asy circuit subcomponent used by 74HC193.asc file above</li>
<li>The screenshots saved as png files &#8211; as shown in this blog post</li>
<li>readme.txt text file granting a license to use the 74HC193 simulation files listed above without restriction and without warranty</li>
</ol>
<p>Download the files listed above for your LTspice designs <a id=p173 href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/74hc193_5v.zip">all in one zipped directory.</a></p>
<p>Technorati Tags: <a href="http://technorati.com/tagRon+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tagcomponent" rel="tag">component</a>, <a href="http://technorati.com/tagLTspice" rel="tag">LTspice</a>, <a href="http://technorati.com/tagSwitcherCAD+III" rel="tag">SwitcherCAD III</a>, <a href="http://technorati.com/tagcircuit+simulation" rel="tag">circuit simulation</a>, <a href="http://technorati.com/tagschematic+capture" rel="tag">schematic capture</a>, <a href="http://technorati.com/tag74193" rel="tag">74193</a>, <a href="http://technorati.com/tagIC" rel="tag">IC</a>, <a href="http://technorati.com/tagcircuit" rel="tag">circuit</a>, <a href="http://technorati.com/tagsimulation" rel="tag">simulation</a>, <a href="http://technorati.com/tagtiming" rel="tag">timing</a>, <a href="http://technorati.com/tagvoltage" rel="tag">voltage</a>, <a href="http://technorati.com/tagCMOS" rel="tag">CMOS</a>, <a href="http://technorati.com/tagSchottky" rel="tag">Schottky</a>, <a href="http://technorati.com/tagTTL" rel="tag">TTL</a>, <a href="http://technorati.com/tagLinear+Technology" rel="tag">Linear Technology</a></p>
<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/circuit' rel='tag' target='_self'>circuit</a>, <a class='technorati-link' href='http://technorati.com/tag/ltspice' rel='tag' target='_self'>ltspice</a>, <a class='technorati-link' href='http://technorati.com/tag/schematic' rel='tag' target='_self'>schematic</a>, <a class='technorati-link' href='http://technorati.com/tag/simulation' rel='tag' target='_self'>simulation</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2008/04/74hc193-for-ltspice-switchercadiii/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>New Gate Design Using LTspice/SwitcherCAD III</title>
		<link>http://www.embeddedcomponents.com/blogs/2008/04/new-gate-design-using-ltspiceswitchercad-iii/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2008/04/new-gate-design-using-ltspiceswitchercad-iii/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 08:24:05 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Projects]]></category>
		<category><![CDATA[Component Technology]]></category>
		<category><![CDATA[Electronic Components]]></category>
		<category><![CDATA[LTspice/SwitcherCAD III]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2008/04/new-gate-design-using-ltspiceswitchercad-iii/</guid>
		<description><![CDATA[Ron Fredericks writes: recently I discovered that I was going to have to create my own IC component and symbol for my on-going digital volume control circuit simulation. My first step was to check in with the LTspice forum on yahoo groups. On the forum I requested any previous design for the IC I needed. [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-4184215318352482";
/* 468_60_v1 */
google_ad_slot = "6370068834";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Ron Fredericks writes: recently I discovered that I was going to have to create my own IC component and symbol for my on-going digital volume control circuit simulation.  My first step was to check in with the LTspice <a href="http://tech.groups.yahoo.com/group/LTspice/">forum on yahoo groups</a>. On the forum I requested any previous design for the IC I needed. I also asked the group&#8217;s readership if they thought it was correct to build a new IC from existing low level digital gates &#8211; gates that are already supplied with the LTspice distribution by Linear Technologies.</p>
<p>Well, I did not find a previous inventor for my IC simulation, but I did get confirmation that the gate build-up was a common strategy. And, this same forum engineer supplied me with a copy of an IC simulation of his own &#8211; one very similar to my IC requirement &#8211; he supplied a symbol and sample test bed to accelerate my learning curve.  Here is a <a href="http://tech.groups.yahoo.com/group/LTspice/message/21510">link</a> to my support dialog.</p>
<blockquote><p>I would like to thank Helmut Sennewald for his time and excellent service to the LTspice yahoo forum. It is his effort and many others who make this forum such a valuable community resource. This forum in turn, has made the LTspice/SwitcherCAD III circuit capture and spice tool a viable design tool for many embedded component users and EE designers.</p></blockquote>
<h3>Introducing the T S-R Flip-Flop</h3>
<p>To build my new IC, I had to build a new digital logic block. This component is a Toggle Flip-Flop with Set and Reset functions added. In this blog post I introduce my readers to this new component and share the simulation circuit for others to use and learn from.  </p>
<p>See the figure below for an initial design of the T S-R Flip-Flop, including a truth table in the form of a waveform diagram, the circuit, a pulse detector sub-circuit and their related assemblies.  This circuit is just an initial design because it uses an S-R Flip-Flop and a simple pulse detector sub-circuit for its clock.</p>
<p><img id="image154" height="360" alt="T S-R Flip-Flop and releated sub-circuits and assemblies" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/tsrflipflop_test.png" /></p>
<p>View <a href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/t-s-r_circuit.htm">larger image></a></p>
<h3>Final Design for the T S-R Flip-Flop</h3>
<p>This section of my post is an update, thanks to a review by Helmut Sennewald. See figure below for my final design of the Toggle S-R Flip-Flop. This design overcomes two problems in my initial design, both resolved by starting with the D Flip-Flop with its built-in clock. The reuse of this more full-featured LT supplied component in my design eliminated the home-brew pulse maker sub-circuit. And in so doing, the slower S-R Flip-Flop. Slower because I had to set the SpiceLine time delay to a minimum of 20 nanoseconds (or td >= 2x the gate time delay) to support the simulation of my simple pulse maker sub-circuit. The D Flip-Flop has an internal clock so I could eliminate the pulse maker sub-circuit. End result: one less sub-circuit and faster Flip-Flop simulation using a time delay set to a minimum of 10 nanoseconds (or td >= 1x the gate time delay). </p>
<p><img id="image163" height="360" alt="T S-R Flip-Flop (final design)" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/tsrflipflopfromd_test.png" /></p>
<p>View <a href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/t-s-r_circuitfromd.htm">larger image></a></p>
<h3>Download</h3>
<p>To test my knowledge of digital design using the LTspice tool, I created a number of similar flip-flop components which are included in the download:</p>
<ol>
<li>S-R Flip-Flop test circuit</li>
<li>S-R Flip-Flop with Enable gate and test circuit</li>
<li>S-R Flip-Flop with rising edge clock and test circuit</li>
<li>J-K Flip-Flop with rising edge clock and test circuit</li>
<li>D Flip-Flop with Enable gate and test circuit</li>
<li>T S-R Flip-Flop from S-R Flip-Flop and test circuit (initial design)</li>
<li>Rising Edge Pulse Detector (not high performance design)</li>
<li>T S-R Flip-Flop from D Flip-Flop and test circuit (final design)</li>
</ol>
<p>Download the components listed above for your LTspice designs all in <a id="p155" title="LTspice circuits and assemblies" href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/tflipflop.zip">one zipped directory.</a></p>
<p>Technorati Tags: <a href="http://technorati.com/tagRon+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tagcomponent" rel="tag">component</a>, <a href="http://technorati.com/tagcircuit" rel="tag">circuit</a>, <a href="http://technorati.com/tagsimulation" rel="tag">simulation</a>, <a href="http://technorati.com/tagLTspice" rel="tag">LTspice</a>, <a href="http://technorati.com/tagLinear+Technologies" rel="tag">Linear Technologies</a>, <a href="http://technorati.com/tagHelmut+Sennewald" rel="tag">Helmut Sennewald</a>, <a href="http://technorati.com/tagembedded" rel="tag">embedded</a></p>
<!-- start wp-tags-to-technorati 1.02 -->

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2008/04/new-gate-design-using-ltspiceswitchercad-iii/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Simulating the 555 IC with LTspice</title>
		<link>http://www.embeddedcomponents.com/blogs/2008/03/simulating-the-555-ic-with-ltspice/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2008/03/simulating-the-555-ic-with-ltspice/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 06:53:30 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Projects]]></category>
		<category><![CDATA[Component Technology]]></category>
		<category><![CDATA[Electronic Components]]></category>
		<category><![CDATA[LTspice/SwitcherCAD III]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2008/03/simulating-the-555-ic-with-ltspice/</guid>
		<description><![CDATA[Ron Fredericks writes: I was designing a simple CMOS timer circuit around a 555 chip this evening. It might be the heart beat for a new digital volume control I have been thinking about. Normally I look for my breadboard and parts box but this time I thought I would try out Linear Technologies LTspice/SwitcherCAD [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-4184215318352482";
/* 468_60_v1 */
google_ad_slot = "6370068834";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Ron Fredericks writes: I was designing a simple CMOS timer circuit around a 555 chip this evening. It might be the heart beat for a new digital volume control I have been thinking about. Normally I look for my breadboard and parts box but this time I thought I would try out Linear Technologies <a href="http://www.linear.com/designtools/software/index.jsp#Spice">LTspice/SwitcherCAD III </a>workbench instead.</p>
<h3>SwCAD III First Time Use</h3>
<p>The tool is free and comes with a lot of <a href="http://tech.groups.yahoo.com/group/LTspice/">support</a>. I downloaded the software and installed it very easily on my Windows XP PC. It includes a graphical schematic design tool with lots of ready made simulated components, including an NE555 for my initial project.  Designing the circuit with the built-in CAD tool works very intuitively.  While the LTspice simulation took a bit of head scratching before it worked for me.  </p>
<p>I was able to configure and run the simulation using the drop down tools menu and the little &#8220;running person&#8221; icon on the tool bar. But all I could get out of the simulation was a black screen with voltage and timing ticks along the left and bottom edges. So my first problem was in realizing that the visual display would remain black and traceless until I put the mouse cursor over a wire then click. When the little instrument probe showed up as my mouse icon, I realized what was going on here. With the mouse click, waveform tracings would appear in the black panel. </p>
<p>My second problem was that the circuit would not oscillate. Not good for an oscillator design.  First, I forgot to connect the 555&#8242;s threshold + trigger pins to the R2-C2 node using the wire tool. But still no oscillation, just flat line traces were observed. Now I already know that getting circuits to oscillate follows Murphy&#8217;s Laws: <em>Oscillators remain stable, Amplifies and Buffers oscillate, whenever possible</em>.  I found a note on the <a href="http://www.oldschoolhacker.com/" title="Simulating Oscillators">Old School Hacker</a> blog with a fine solution. You must simulate the circuit with a power supply starting from 0 volts rather than just have an instant on  Vcc power supply.  </p>
<blockquote><p>In hind sight dah, its the initial transient response from the circuit&#8217;s components that kicks the oscillator into oscillating.</p></blockquote>
<p>After a little practice I improved the schematic diagram with the use of named nodes and seperation of the temporary load resistors R3 and R load from the more permanent circuit components. The load resistors are just place holders for a real load to be added to the circuit schematic next.  Look for my next blog post on this subject.</p>
<p>Finally, I used the cursor measurement facility built into the LTspice window (trace window). With this feature, I was able to make &#8220;real&#8221; measurements on the waveform for frequency and duty cycle.</p>
<h3>Circuit</h3>
<p>Here is what I was able to generate using the LTspice/SwitcherCAD III tool:</p>
<p><img id="image144" height="360" border="2" alt="LTspice/SwitcherCAD III circuit diagram and waveforms" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/ltspice_555_astable-flipflo.png" /></p>
<p>View <a id="p147" href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/03/555_circuit.htm">larger image></a><br />
<a id="p148" href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2008/04/555astableflipflop.zip" title="Download file for reuse in your LTspice/switcherCAD III workbench">Download 555 Astable Flip-Flop Schematic Circuit Diagram></a></p>
<p>Referring to the figure above:<br />
&nbsp;&nbsp;&nbsp;<span style="color:green">Green Trace</span> -> Output (IC 555 pin 3)<br />
&nbsp;&nbsp;&nbsp;<span style="color:blue">Blue Trace</span> -> Trigger / Threshold (IC 555 pins 2 &#038; 6)<br />
&nbsp;&nbsp;&nbsp;<span style="color:red">Red Trace</span> -> Discharge (IC 555 pin 7)</p>
<h3>The Astable Multivibrator</h3>
<p>The circuit shown above will trigger itself and free run as a multivibrator. The capacitor C<sub>2</sub> charges through resistors R<sub>1</sub> and R<sub>2</sub> yet discharges through R<sub>2</sub> only. Thus, the duty cycle (D) may be precisely set by the ratio of these two resistors. The capacitor charges and discharges between 1/3 Vcc and 2/3 Vcc. But the initial pulse charges C<sub>2</sub> starting from 0 Vcc and so this first pulse duty cycle is unique. Since the charge rate and the threshold levels are directly proportional to the supply voltage Vcc, the frequency of oscillation (f) is independent of the supply voltage.</p>
<table width="450" border="0" cellspacing="7" cellpadding="1">
<tr>
<th scope="col">Frequency Calculation</th>
<th scope="col">Duty Cycle Calculation</th>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_937_0a4fc1759fafb7a7634b3fc77ceeb31b.png" style="vertical-align:-63px; display: inline-block ;" alt="f = 1.38/{(R_1 + 2R_2)C_2}" title="f = 1.38/{(R_1 + 2R_2)C_2}"/></td>
<td><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_975_ed669965d82f3bbcb24fbc9463a9a5ae.png" style="vertical-align:-25px; display: inline-block ;" alt="D = {tau}/T = {R_1 + R_2}/{R_1 + 2R_2}" title="D = {tau}/T = {R_1 + R_2}/{R_1 + 2R_2}"/></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_968_44b46a0eca31826e1f16b281718e56c1.png" style="vertical-align:-32px; display: inline-block ;" alt="1.7 hertz=1.38*10^3/{(150 + 2*332) ohm farads}" title="1.7 hertz=1.38*10^3/{(150 + 2*332) ohm farads}"/></td>
<td><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_986_8b408382389e657bb36d9d66ca8d11d1.png" style="vertical-align:-14px; display: inline-block ;" alt="0.59~={150 + 332}/{150 + 2*332}" title="0.59~={150 + 332}/{150 + 2*332}"/></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Measured = 1.8 hertz</td>
<td>Measured = 0.60</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Where:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_8039b4e0e6fe78bee7d3e5cfbfa343f0.png" style="vertical-align:-5.5px; display: inline-block ;" alt="f" title="f"/> is frequency in hertz<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_e7ad657626a39bcafcc8ce7c53d3901b.png" style="vertical-align:-5.5px; display: inline-block ;" alt="C" title="C"/> is capacitance in farads<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_1688316d15ac9218146e0f4ba5fc8d4f.png" style="vertical-align:-5.5px; display: inline-block ;" alt="R" title="R"/> is resistance in ohms</td>
<td>Where:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_75b573a2a80f7d1f54f711b89d1a80fa.png" style="vertical-align:-5.5px; display: inline-block ;" alt="D" title="D"/> is duty cycle<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_fd5d70b980ec9c9c74f509da54de7e95.png" style="vertical-align:-5.5px; display: inline-block ;" alt="tau" title="tau"/> is non-zero output duration<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_72963b0e4d3e9a1c0e511dfb1ec25aab.png" style="vertical-align:-5.5px; display: inline-block ;" alt="T" title="T"/> is the period of the output<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_994.5_1688316d15ac9218146e0f4ba5fc8d4f.png" style="vertical-align:-5.5px; display: inline-block ;" alt="R" title="R"/> is resistance</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<h3>Reference</h3>
<ul>
<li>555 Datasheet <a href="http://ics.nxp.com/products/interface/datasheet/icm7555.pdf" title="General purpose CMOS timer">icm7555.pdf</a></li>
<li>Linear Technology&#8217;s SwitcherCADâ„¢ III <a href="http://www.linear.com/designtools/software/index.jsp#Spice" title="a free Spice III simulator, schematic capture and waveform viewer">Landing Page</a></li>
</ul>
<p>Technorati Tags: <a href="http://technorati.com/tagRon+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tagschematic" rel="tag">schematic</a>, <a href="http://technorati.com/tagLTspice" rel="tag">LTspice</a>, <a href="http://technorati.com/tagSwitcherCAD+III" rel="tag">SwitcherCAD III</a>, <a href="http://technorati.com/tagsimulator" rel="tag">simulator</a>, <a href="http://technorati.com/tagSpice" rel="tag"> Spice</a>, <a href="http://technorati.com/tagCAD" rel="tag"> CAD</a></p>

<!-- start wp-tags-to-technorati 1.02 -->

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2008/03/simulating-the-555-ic-with-ltspice/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>ROI as an Effective Communications Tool for Engineers</title>
		<link>http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 11:15:24 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Projects]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/</guid>
		<description><![CDATA[Abstract Ron Fredericks writes: Engineers want to build compelling products that meet their project requirements. Corporate executives want to invest in innovative people that build products that, in turn, meet their market&#8217;s window; while, both want to stay within budget. Yet both groups may feel overwhelmed with the prospect of expressing the very heart of [...]]]></description>
			<content:encoded><![CDATA[<h2>Abstract</h2>
<p>Ron Fredericks writes: Engineers want to build compelling products that meet their project requirements. Corporate executives want to invest in innovative people that build products that, in turn, meet their market&#8217;s window; while, both want to stay within budget. Yet both groups may feel overwhelmed with the prospect of expressing the very heart of their inspiration at some critical times during the life of these projects. In today&#8217;s post, I try to address this issue from the engineer&#8217;s perspective reaching out to the financial decision makers that ultimately control the purse strings of every project.</p>
<h3>Table of Contents</h3>
<p><a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#INTRO">Introducing <em>Financial-Speak</em> to Engineers</a><br />
<a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#EL">ROI Example: Embedded Linux</a><br />
<a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#ICF">Evaluating Incremental Cash Flows</a><br />
<a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#NPV">ROI Example: <em>Simple Project Comparisons Using Net Present Value</em></a><br />
<a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#EIP">ROI Example: <em>Evaluating an Infrastructure Project</em></a><br />
<a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#ODM">ROI Example: <em>The Original Design Manufacturer</em></a><br />
<a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#REFE">References</a><br />
<a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#comment-9940">Errors and Changes Planned for this Blog Post</a></p>
<p><a name="INTRO"></a></p>
<h2>Introducing <em>Financial-Speak</em> to Engineers</h2>
<p>In a <a href="http://www.embeddedcomponents.com/blogs/2006/11/engineers-and-business-development/">previous post</a> I introduced the idea that ethics might be the common framework between this dichotomy in communication between engineers, marketers, and executives. In this post, I suggest that engineers might apply this ethical approach by taking some time out to learn the language of business development from a financial management perspective &#8211; a conversational framework suitable for an interdisciplinary team concerned with engineering risk and strategic business value,  but expressed using financial definitions.  </p>
<p>The term <em>Return On Investment</em> (ROI) can be used for all three disciplines: engineering, marketing, and finance. ROI is just vague enough to cover most any discussion an engineer may encounter through-out the life of a project: from the initial decision to fund your project, to evaluating change requests during the design, build, test, and deployment cycle of an ongoing project. Evaluating ROI from a financial perspective is an ethical approach to decision-making because the financial terms I promote for this ethical framework have very precise meanings.  So precise in fact, that I too have had to go back and rewrite several sections of this blog post thanks to <a href="http://one-nomads-blog.blogspot.com/" target="_blank">One Nomad&#8217;s Blog</a> comments received in this blog&#8217;s first posting. </p>
<p>It was the lack of financial precision embedded within my first draft for this blog post which my guest reader used to convince me of my own mistakes.  Yet to be clear, identifying my mistake is also my gain. Effective communication is a process of two or more people sharing ideas&#8230;</p>
<blockquote><p>Learning to converse and plan using financial terms for ROI decision-making can level the playing field between engineers, marketers, and business executives since ROI itself is not a common financial term. Engineers practicing <em>Financial-Speak</em> centered around ROI as the goal, can help reduce many of the common problems related to individuals trying their best to participate in team decision making. This leveling of the playing field &#8211; between team members &#8211; can also enhance the power of their conversation, leading the way for the much sought after innovations that are in popular demand today.</p></blockquote>
<p>Consider building a financial model around ROI before presenting your most important technical needs to executives, marketers, and other decision makers. Read on to learn how. Of course ROI from a financial perspective is not the only way to build effective interdisciplinary teams with engineers involved. In a future post I may suggest a corollary to this ethical approach for executives and marketers who would like to reach out to engineers â€“ using Six Sigma, CMMI, and emerging techniques developed by Dr. Thomas J. Buckholtz as useful processes seeped in ROI terminology.</p>
<h3>Figure 1: <em>Net Present Value Equation</em></h3>
<p><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_960_4bd90659e99f12b4cd2f39ce3f1b4cb7.png" style="vertical-align:-40px; display: inline-block ;" alt="NPV(CF_k, R, IV) := IV + sum{k=1}{N}{CF_k / (1+R)^k }" title="NPV(CF_k, R, IV) := IV + sum{k=1}{N}{CF_k / (1+R)^k }"/></p>
<p>Where:<br />
    <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_751922b8fbb496179e10e6bda0b94b02.png" style="vertical-align:-4.5px; display: inline-block ;" alt="NPV" title="NPV"/> is the Net Present Value function, in dollars<br />
    <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995_9012fb47705e171ad224d168ea215983.png" style="vertical-align:-5px; display: inline-block ;" alt="CF" title="CF"/> is a project&#8217;s Cash Flow, in dollars<br />
    <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_33df7d5541bc0941336b1513815da7a5.png" style="vertical-align:-4.5px; display: inline-block ;" alt="R" title="R"/> is the hurdle Rate, in percent per period<br />
    <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_18721d278471e4ecee4905551d365c45.png" style="vertical-align:-4.5px; display: inline-block ;" alt="IV" title="IV"/> is the Initial Investment (a negative number), in dollars<br />
And:<br />
    <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_e2586f3a475714f9959f74986e64ee13.png" style="vertical-align:-4.5px; display: inline-block ;" alt="k" title="k"/> is the cash flow&#8217;s time increment, or period<br />
    <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_12f557cb8e77c5d99048795b2eb57e27.png" style="vertical-align:-4.5px; display: inline-block ;" alt="N" title="N"/> is the total number of cash flow periods for <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_e2586f3a475714f9959f74986e64ee13.png" style="vertical-align:-4.5px; display: inline-block ;" alt="k" title="k"/><br />
    Time increment for <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995_9012fb47705e171ad224d168ea215983.png" style="vertical-align:-5px; display: inline-block ;" alt="CF" title="CF"/> and <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_33df7d5541bc0941336b1513815da7a5.png" style="vertical-align:-4.5px; display: inline-block ;" alt="R" title="R"/> might be in years, quarters, or months, for example</p>
<p><a name="EL"></a></p>
<h2>ROI Example: <em>NPV&#8217;s Effect on Embedded Linux</em></h2>
<p>The equation in Figure 1 forms the heart of my &#8220;ethics in engineering&#8221; proposal. Namely, the sooner a new device gets to market, the sooner a firm can realize new income. New income realized sooner, is much better than income realized later. A finance discussion around NPV would call this <em>time&#8217;s negative impact on the value of money</em>.  I&#8217;m talking about the exponential effect that the prevailing interest rate, R, has in the NPV equation shown in figure 1.</p>
<p>A few years ago several of the leading embedded operating system suppliers used this equation to show that embedded Linux was a poor choice for new embedded device development projects. One such paper published by Dr. Jerry Krasner in 2003, <a href="http://www.embeddedforecast.com/EMFTCD2003v3.pdf" target="_blank">Total Cost of Development</a>, presents the typical argument pretty well. At that time Dr. Krasner and many others may have been right. Now in 2007, times have changed significantly. A recent blog entry on CNET shows the missing element from Dr. Krasner&#8217;s report and is a <em>Harold</em> for the embedded industry going forward: <a href="http://www.news.com/8301-10784_3-6172060-7.html">Oracle touts Linux deals</a>. </p>
<p>How times have changed&#8230;</p>
<blockquote><p>Because of the significant adoption of Linux in enterprise projects, the total project cost of using embedded Linux has gone down too. Indeed, the migration and reuse of enterprise Windows operating system application programming interfaces (API&#8217;s), kernel components, and development tools into embedded device projects was a key part of Dr. Krasner&#8217;s report, see link above.  Dr. Krasner concluded at the time that embedded Windows CE made the best choice for new projects from a total cost of ownership perspective &#8211; just another way of looking at NPV!</p></blockquote>
<p>Now the ROI benefits behind projects that select embedded Linux follows Dr. Krasner&#8217;s logic perfectly. Embedded Linux is now experiencing the same reduced total cost of ownership that only embedded Windows CE enjoyed just a few years ago. The reduced total cost of ownership comes from new and improved tools, components, and API&#8217;s that cross over from enterprise projects to the embedded marketplace. There is a significant overlap in Linux kernel updates, components, and tools driven by enterprise projects that are also suitable for use in embedded projects.  </p>
<p>The available pool of engineers that know how to work with Linux can now support embedded development projects that use embedded Linux too. The marketing movement around the value and excitement of using Linux may also reduce the cost of taking an embedded device to market. In short: lower upfront costs, more options, more solutions, and faster time to market.  Even Dr. Krasner has decided to post an update to his old white paper showing total cost of development to be favorable for embedded Linux projects. <a href="http://www.embeddedforecast.com/WhitePapers.htm">Download his updated paper</a>.</p>
<p>None of these enterprise driven benefits exist with respect to the traditional embedded real-time operating system (RTOS).  To be clear, there are other benefits to using an RTOS. I discuss one significant benefit to using an RTOS in another post: <a href="http://www.embeddedcomponents.com/blogs/2007/11/how-to-leverage-the-valule-of-a-board-support-package/">How to Leverage the Value of a Board Support Package</a>.</p>
<p><a name="ICF"></a></p>
<h2>Evaluating a Project&#8217;s Incremental Cash Flow</h2>
<p>NPV is just one example of applying the principle of ROI to making project decisions. NPV falls into the general category of capital budgeting, a process of evaluating proposed investments into new projects. The capital budgeting process is concerned only with incremental cash flows. So the vague concept of <em>ethics</em> can be transformed into a specific financial discussion. </p>
<p><strong>Two financial functions can measure time&#8217;s effect on money:</strong></p>
<p>(1) Net Present Value (NPV) expressed as a monetary value,<br />
      and </p>
<p>(2) Internal Rate of Return (IRR) expressed as a percentage. </p>
<p>Where:</p>
<p><strong>Net Present Value (NPV)</strong> of a capital budgeting project is the <em>dollar amount of change in the value of the firm as a result of undertaking the project</em> [Ref: <a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#FiMan">Financial Management: Principles and Practice</a> P.234]. The mathmatic definition for NPV is:</p>
<p><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_960_4bd90659e99f12b4cd2f39ce3f1b4cb7.png" style="vertical-align:-40px; display: inline-block ;" alt="NPV(CF_k, R, IV) := IV + sum{k=1}{N}{CF_k / (1+R)^k }" title="NPV(CF_k, R, IV) := IV + sum{k=1}{N}{CF_k / (1+R)^k }"/></p>
<p>Where:</p>
<p><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_18721d278471e4ecee4905551d365c45.png" style="vertical-align:-4.5px; display: inline-block ;" alt="IV" title="IV"/> = Initial Investment (a negative number)<br />
<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_989_8c7bb3f431d8911707c4dd064dba1eca.png" style="vertical-align:-11px; display: inline-block ;" alt="CF_k" title="CF_k"/> = cash flow value (project outputs &#8211; project inputs) for period <img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_e2586f3a475714f9959f74986e64ee13.png" style="vertical-align:-4.5px; display: inline-block ;" alt="k" title="k"/><br />
<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_33df7d5541bc0941336b1513815da7a5.png" style="vertical-align:-4.5px; display: inline-block ;" alt="R" title="R"/> = hurdle rate per period, where period is a unit of time, typically year, quarter, or month<br />
<img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_995.5_12f557cb8e77c5d99048795b2eb57e27.png" style="vertical-align:-4.5px; display: inline-block ;" alt="N" title="N"/> =  total number of periods for the project</p>
<p><strong>Present Value (PV)</strong> is the value today of a future, or expected, cash flow. The mathematic definition for PV is: </p>
<p><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_960_e551650487d64382cc597de523261aad.png" style="vertical-align:-40px; display: inline-block ;" alt="PV(CF_k, R)  := sum{k=1}{N}{CF_k / (1+R)^k }" title="PV(CF_k, R)  := sum{k=1}{N}{CF_k / (1+R)^k }"/></p>
<p>NPV can be expressed in terms of its present value (PV):</p>
<p><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_993_94989ee065bafe4bcef497c67f7a54b2.png" style="vertical-align:-7px; display: inline-block ;" alt="NPV = IV + PV" title="NPV = IV + PV"/></p>
<p><strong>Hurdle Rate</strong> is the required rate of return before launching a new project.  The hurdle rate must be carefully chosen.  It can be expressed as a percent per period. The period is commonly defined as one year, but other convenient time period could be selected such as one quarter, or one month.  The same unit of time will need to be associated with cash flow.  Other rate terms can be used in addition to, or instead of, hurdle rate: discount rate, cost of capital, or interest rate.</p>
<p><strong>Internal Rate of Return (IRR)</strong> is the <em>discount rate at which the<br />
NPV of the project is zero</em>. [Ref: <a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#FiMan">Financial Management: Principles and Practice</a> P.240]. The mathematics definition for IRR is related to NPV:</p>
<p><img src="http://www.embeddedcomponents.com/blogs/wp-content/plugins/wpmathpub/phpmathpublisher/img/math_960_58d4026b6e4a4dc5340b880bdba4d033.png" style="vertical-align:-40px; display: inline-block ;" alt="0 := IV + sum{k=1}{N}{CF_k / (1+IRR)^k }" title="0 := IV + sum{k=1}{N}{CF_k / (1+IRR)^k }"/></p>
<p><strong>NPV and IRR are related to each other:</strong><br />
What follows is a list of relationships between NPV and IRR. Use these relationships after calculating the NPV and IRR for each of the proposed project alternatives.</p>
<p>(1) If NPV(CF, R, IV) = 0,<br />
      then the hurdle rate, R = IRR</p>
<p>(2) For any set of cash flows estimated for a prospective project,<br />
      there is only one value for NPV.<br />
      But, the same project model can result in several IRR values,<br />
      where NPV = 0.</p>
<p>(3) If IRR > Hurdle Rate,<br />
      then a prospective project may make an acceptable<br />
      investment.</p>
<p>(4) If IRR >> Hurdle Rate (i.e. significantly greater than),<br />
      then a prospective project may carry too much risk.</p>
<p>(5) The hurdle rate includes both a minimum desired rate<br />
      of return for a project, and a threshold representing risk.<br />
      (5-a) A typical hurdle rate for an E-Business project<br />
              might be 15%.<br />
      (5-b) A typical hurdle rate for an embedded systems project<br />
              might be 18%.<br />
      (5-c) Embedded Components, Inc. is focused on lowering risk<br />
              for its members by promoting the re-use of pre-existing<br />
              components through its <a href="http://www.embeddedcomponents.com/marketplace/">online marketplace</a><br />
              for embedded device manufacturers and their<br />
              communities.</p>
<p>(6) In general seek to maximize NPV, not IRR.</p>
<p>(7) Yet, if two projects have NPV curves that cross over each<br />
      other,<br />
      then the interest R where the curves cross is called<br />
      the Crossover Point.<br />
      (7-a) If the Crossover Point &gt; IRR,<br />
              then accept the project with higher NPV.<br />
      (7-b) If the Crossover Point &lt;IRR,<br />
              then accept the project with higher IRR.</p>
<p>(8) An NPV value of zero also means the investment into that<br />
      project would neither gain nor loose value for the company.</p>
<p><span id="more-24"></span></p>
<p><strong>Define a project&#8217;s return on investment (ROI):</strong></p>
<p>1a) Profitability Index (PI), measured in % percent</p>
<p>1b) Open Source Profitability Index (PI<sub>FOSS</sub>)</p>
<p>2a) Payback Period (PP), measured in time such as years, quarters or months</p>
<p>2b) Open Source Payback Period (PP<sub>FOSS</sub>)</p>
<p>3) Sensitivity Analysis, a plot of NPV verses Interest Rate</p>
<p><strong>Return on Investment (ROI)</strong> is a business case analysis concerned with the net financial impact associated with a set of costs and benefits. Most research around capital budgeting does not define a specific calculation associated with ROI. Unlike NPV and IRR, which use formulas generally agreed to by industry, ROI calculations can be industry specific. I found an excellent overview of ROI in a paper by Dr. Jeffery [Ref: <a href="http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/#ROIebus">Return on Investment Analysis for E-Business Projects</a> equation 6, page 6].  In his paper Dr. Jeffery presents a definition for ROI as:</p>
<p>ROI = 100% x (Project Outputs &#8211; Project Inputs) / (Project Inputs)</p>
<p>Where:</p>
<p>Project Outputs represent the value created by a project such as new income generated, efficiency gains, cost savings from improved internal processes, new intellectual property created, and strategic benefits (such as increased marketshare, brand name recognition, incremental gains in product mix, and improved vendor relationships).</p>
<p>Project Inputs represent expenses related to a project such as the initial investment in software and tools, development costs (such as professional employee salaries), facilities expenses (including building depreciation, grounds maintenance, service level agreements, and equipment depreciation,) deployment costs (such as sales commissions, marketing, shipping, and 3&#8242;rd party software run-time fees), goernment fees (such as sales taxes, patent filings, and corporate governance), and legal fees.</p>
<p><font color="red">The sections below are under re-construction as of 3/3/08</font></p>
<p><strong>Profitability Index (PI):</strong></p>
<p><strong>PI adjusted for Free and Open Source Software (PI<sub>FOSS</sub>):</strong></p>
<p>So one of several projects under consideration to fund, may be the most acceptable if its NPV is a large enough positive number. In other words, a project is acceptable if the IRR is greater than or equal to the <em>hurdle rate</em>. Where the hurdle rate is defined as the expected rate of return on a potential investment that a manager demands before investing his or her money into a project. I have seen hurdle rates in the range of 8% to 18%, for example.</p>
<p>Measuring the risk of a capital budgeting project can be done by calculating the coefficient of variation (CV) on the expected returns from a firmâ€™s asset portfolio with and without the new project being undertaken. Since the CV is defined as the ratio of the standard deviation to the mean, it can be used to determine how much volatility (risk) will be assumed in comparison to the amount of return expected from the proposed project.</p>
<p>There are several wrinkles in the capital budgeting decision process to consider:<br />
(1) Non-simple projects,<br />
(2) Projects that have multiple IRRs,<br />
(3) Comparison of projects with unequal project lives, and<br />
(4) Strategic benefits.</p>
<p>Read on to learn how to manage the financial data behind project proposals with all 4 of these complicating factors taken into account.</p>
<p><a name="NPV"></a><br />
<h2>ROI Example: <em>Project Comparisons Using Financial Terms</em></h2>
<p>I developed a MathCad program to compare and plot two projects based on several financial terms.  The MathCad equations can be used if you already have this math package. Download the MathCad template [tbd]</p>
<p>If you prefer to use Microsoft&#8217;s Excel, an open source office package, or google&#8217;s hosted office suite, then you can use the equations I develop here to handle the calculations. </p>
<p>In this Mathcad example, two projects with the same basic financial data are compared. Project A is a typical project with estimated sales (as a result of project completion) that builds up over time. Project B is not typical, but is a good test case. Project B uses equal payback amounts over time &#8211; similar to an annuity.  </p>
<h3>Define Initial Data for Two Projects</h3>
<p>Time, N (in years)<br />
<img id="image122" height=45 alt="Time, N, In Years" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/18_initializen_45x450.gif" /></p>
<p>Initial Investment, IV, in $ dollars<br />
<img id="image123" height=45 alt="Initial Investment, IV, in $ dollars" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/17_initializeinitialexpense_45x450.gif" /></p>
<p>Interest Rate, Rate, in % percent<br />
<img id="image124" height=45 alt="Interest Rate, Rate, in % percent" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/16_initializerate_45x450.gif" /></p>
<p>Cash Flow, CF, in $ dollars<br />
<img id="image117" height=48 alt="Project A Cash Flow, CF, in $ dollars" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/15_initializecfproja_48x450.gif" /><br />
<img id="image118" height=48 alt="Project B Cash Flow, CF, in $ dollars" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/14_initializecfprojb_48x450.gif" /></p>
<h3>Define Equations</h3>
<p>Net Present Value, NPV, in $ dollars<br />
<img id="image116" height=110 alt="Net Present Value, NPV, in $ dollars" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/13_definenpv_110x450.gif" /></p>
<p>Present Value, PV, in $ dollars<br />
<img id="image119" height=45 alt="Net Present Value, NPV, in $ dollars" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/12_definepv_45x450.gif" /></p>
<p>Coefficient of Variation, CV<br />
<img id="image120" height=72 alt="Coefficient of Variation, CV" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/11_definecv_72x450.gif" /></p>
<p>Return On Investment, ROI<br />
<img id="image121" height=72 alt="Return On Investment, ROI" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/10_defineroi_72x450.gif" /></p>
<h3>Compare Results for the Two Projects</h3>
<p>Results for project A<br />
<img id="image125" height=45 alt="Results for project A, NPV" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/09_projanpv_45x450.gif" /><br />
<img id="image133" height=45 alt="Results for project A, PV" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/08_projapv_45x450.gif" /><br />
<img id="image127" height=45 alt="Results for project A, CV" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/07_projacv_45x450.gif" /><br />
<img id="image128" height=45 alt="Results for project A, ROI" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/06_projaroi_45x450.gif" /></p>
<p>Results for project B<br />
<img id="image129" height=45 alt="Results for project B, NPV" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/05_projbnpv_45x450.gif" /><br />
<img id="image130" height=45 alt="Results for project B, PV" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/04_projbpv_45x450.gif" /><br />
<img id="image131" height=45 alt="Results for project B, CV" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/03_projbcv_45x450.gif" /><br />
<img id="image132" height=45 alt="Results for project B, ROI" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/02_projbroi_45x450.gif" /></p>
<h3>Plot of Projects Over a Span of Rates</h3>
<p><img id="image115" height=275 alt="NPV verses Rate" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/12/01_plot_257x450.gif" /></p>
<h3>Discussion</h3>
<p>The plot of NPV vs. Rate shows that if the Rate is zero, the NPV for both projects are the same. The plot also shows that the hurdle rate must be set much lower for Project A to be approved by a firm&#8217;s finance team in comparison to project B (looking at NPV equal to zero in the graph).  Yet project B is not a likely outcome either because the sales forecasts aren&#8217;t realistic. Therefore the features and benefits of project A could be re-evaluated such that estimated sales over time increases enough to outweigh the initial lag in projected sales &#8211; to make up for the time-cost of money burden.</p>
<p><a name="EIP"></a><br />
<h2>ROI Example: <em>Evaluating an Infrastructure Project</em></h2>
<p>I like this example even though it is far from embedded device projects. It provides a solution to the comparison between project choices that go beyond just simple cash flow. It points out that the process of getting to an ROI number can be more important to the success of some projects than the number itself.<br />
<a href="http://www.dmreview.com/article_sub.cfm?articleId=7921" target="_blank">Beyond ROI &#8230; Justifying a Business Intelligence Initiative</a>, Digital Review Magazine, January 2004, Thomas Groh</p>
<p><a name="ODM"></a><br />
<h2>ROI Example: <em>The Original Design Manufacturer</em></h2>
<p>An ODM is a good reference point for engineers and executives alike in the embedded systems industry. An ODM is a design to manufacture house, often located in Taiwan, People&#8217;s Republic of China (PRC), or Singapore. These companies work with their local silicon vendors and other regional suppliers to keep themselves informed of what tools, application frameworks, middleware, and silicon that may work together for various projects they are considering. To be clear, these local component vendors are integral partners for the ODM &#8211; right where the parts are often made. The ODM then has many advantages with respect to cash flow and its associate time-cost of money: lowest possible cost for parts, improved supply chain advantage without the need to pre-purchase in bulk, lower cost of knowledge, and cheaper labor costs. The ODM also focuses on the engineering effort rather than the marketing, brand recognition, and product sales efforts that their OEM (original equipment manufacturer) clients face. The goal of the ODM is to design cool stuff and manufacture all or part of the final product for its OEM client.</p>
<h3>Figure 2: <em>Sample Financial Spreadsheet</em></h3>
<p><img id="image85" height=651 alt="An ODM's Cash Flow Analysis Spreadsheet" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/cashflowodm.gif" /></p>
<p>In Figure 2 above, I show a sample spreadsheet that would be a typical tool used by an ODM and its OEM client. How much should an ODM project cost?  Take a look at the bottom line. For this project, the ODM figures on a shared IRR of 43% over an 8 year time line (only 5 of the 8 years are shown in Figure 2) using this set of numbers. A rate of return higher than most any hurdle rate.  As a result, the OEM client may find funding this project to be attractive (remember that the OEM will have to factor in brand, marketing, and sales costs).  The 8-year time line in this example may be too long for some projects. You can download a working copy of this cash-flow spreadsheet or their task-based budget spreadsheet from <a href="http://www.birdf.com/Index.asp?ArticleID=57&#038;CategoryID=77&#038;Page=1" target="_blank">Bird Foundation&#8217;s web site</a> and use any time-line you like for your next project.</p>
<blockquote><p>Take a look at lines D, for development expenses, and C, for capital expenses. These two lines are where the operating system, development tool, and component vendors live.  The cost of engineering and project management charged by the ODM lives here too.</p></blockquote>
<p><strong>The Bird Foundation</strong><br />
It is interesting to take note of the software tools and operating system choices available to the ODM. These are some of the only components that are not designed and built in or near the ODM&#8217;s location. Does Microsoft Windows CE make a better choice, or Wind River&#8217;s VxWorks, or should an embedded Linux version be the bases for development tools on this project? Well it all depends. Flexing the financial estimates for these two lines D and C are often a point of significant debate for a sales team or a roll-your-own internal engineering team. In this case, startup and recurring costs are important. Time to market is another point of consideration &#8211; here again the time-cost of your firm&#8217;s monetary assets will come into play. I invite sales and engineering teams to study the other numbers on this sample spreadsheet and envision how their product or service value might affect the final calculation of IRR. There can be further discussion on the effect of each financial component with respect to your position &#8211; there is likely no single right or wrong answer. One ROI strategy for embedded components and tools software vendors is to consider building more relationships with an ODM&#8217;s trusted local hardware component suppliers. </p>
<p>So where can you get more information on this spreadsheet? The answer can be found with the Bird Foundation. A grant giving organization that focuses on building engineering relationships between Israeli companies and OEM companies in United States &#8211; who in-turn may include an ODM partner.  The spreadsheet example in Figure 2 comes right out of their guidelines for financial and project management (<a href="http://www.birdf.com/_Uploads/145_ProposalPreparation.pdf" target="_blank">see Proposal Preparation Guidelines page 28</a>). I invite you to learn more about this foundation, how it may work in developing technical partnerships with international companies you can leverage; and their great <a href="http://www.birdf.com/Index.asp?CategoryID=77" target="_blank">guidelines offered on the Bird foundation web site</a>. Indeed this is a great example of using ROI as an ethical framework between partner companies from a global perspective.</p>
<p><a name="REFE"></a><br />
<h2>References</h2>
<p><font color="red">This section under construction as of 12/8/07</font></p>
<h3>Internal Rate of Return</h3>
<p>Perils of the Internal Rate of Return</p>
<p>http://hspm.sph.sc.edu/COURSES/ECON/invest/invest.html</p>
<h3>Text Books</h3>
<p><a name="FiMan"></a>Financial Management: Principles and Practice<br />
by Timothy J. Gallagher and Joseph D. Andrew, Jr.<br />
Copyright 1997 by prentice-Hall, Inc.</p>
<h3>Research Papers</h3>
<p><a name="ROIebus"></a><a href="http://www.kellogg.northwestern.edu/faculty/jeffery/htm/publication/ROIforITProjects.pdf">Return on Investment Analysis for E-business Projects</a><br />
by Dr. Mark Jeffery, Northwestern University</p>
<p><font color="red">The old reference section below</font></p>
<p>An overview of ROI from a sales and marketing perspective &#8211; a rich alternative perspective from the financial content on this blog post:<br />
<a href="http://www.embeddedcomponents.com/marketing/roi/" target="_blank">Customer Centric Thinking and ROI (turn your speakers on)</a></p>
<p>The Bird Foundation project guidelines, and project spreadsheets, can be reviewed and downloaded from here:<br />
<a href="http://www.birdf.com/Index.asp?ArticleID=57&#038;CategoryID=77&#038;Page=1">www.birdf.com/Index.asp?ArticleID=57&#038;CategoryID=77&#038;Page=1</a></p>
<p>A great Windows calculator (see Figure 3 below) for most of your engineering and financial needs can be downloaded from here:<br />
<a href="http://www.hp41.org/LibView.cfm?Command=View&#038;ItemID=458" target="_blank">www.hp41.org/LibView.cfm?Command=View&#038;ItemID=458</a></p>
<p>The original HP financial support software module works within this simulated HP41 programmable calculator and can also be downloaded from the same site, here:<br />
<a href="http://www.hp41.org/LibView.cfm?Command=View&#038;ItemID=3" target="_blank">www.hp41.org/LibView.cfm?Command=View&#038;ItemID=3</a></p>
<p>The original HP <em>How To</em> manual for financial decision making can be downloaded or read from this the site as well, from here:<br />
<a href="http://www.hp41.org/LibView.cfm?Command=View&#038;ItemID=445" target="_blank">www.hp41.org/LibView.cfm?Command=View&#038;ItemID=445</a></p>
<h3>Figure 3: <em>The HP41 Calculator Emulated on a Windows Desktop</em></h3>
<p><img id="image86" height=649 alt="The HP-41CX scientific calculator with Financial Pac added - 1 of many software solutions for this great computing device" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hp41withfinancepack.jpg" /> </p>
<h2>Next steps&#8230;</h2>
<p>I invite you to use this blog post&#8217;s comment facility to share your experience as an engineer, innovator, sales manager, marketer, or executive.  Do you think a financial vocabulary can be used to build an effective (and ethical) balance for your team between consensus and innovation?</p>
<p>Technorati Tags: <a href="http://technorati.com/tagRon+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tagEngineer" rel="tag">Engineer</a>, <a href="http://technorati.com/tagproject" rel="tag">project</a>, <a href="http://technorati.com/tagrequirements" rel="tag">requirements</a>, <a href="http://technorati.com/tagexecutive" rel="tag">executive</a>, <a href="http://technorati.com/taginvest" rel="tag">invest</a>, <a href="http://technorati.com/tagbudget" rel="tag">budget</a>, <a href="http://technorati.com/tagfinancial+management" rel="tag">financial management</a>, <a href="http://technorati.com/tagReturn+On+Investment" rel="tag">Return On Investment</a>, <a href="http://technorati.com/tagSix+Sigma" rel="tag">Six Sigma</a>, <a href="http://technorati.com/tagCMMI" rel="tag">CMMI</a>, <a href="http://technorati.com/tagDr.+Thomas+J.+Buckholtz" rel="tag">Dr. Thomas J. Buckholtz</a>, <a href="http://technorati.com/tagcash+flow" rel="tag">cash flow</a>, <a href="http://technorati.com/tagNet+Present+Value" rel="tag">Net Present Value</a>, <a href="http://technorati.com/tagInternal+Rate+of+Return" rel="tag">Internal Rate of Return</a>, <a href="http://technorati.com/tagHurdle+Rate" rel="tag">Hurdle Rate</a>, <a href="http://technorati.com/tagNPV" rel="tag">NPV</a>, <a href="http://technorati.com/tagcoefficient+of+variation" rel="tag">coefficient of variation</a>, <a href="http://technorati.com/tagstandard+deviation" rel="tag">standard deviation</a>, <a href="http://technorati.com/tagmean" rel="tag">mean</a>, <a href="http://technorati.com/tagembedded+device" rel="tag">embedded device</a>, <a href="http://technorati.com/tagThomas+Groh" rel="tag">Thomas Groh</a>, <a href="http://technorati.com/tagOriginal+Design+Manufacturer" rel="tag">Original Design Manufacturer</a>, <a href="http://technorati.com/tagODM" rel="tag">ODM</a>, <a href="http://technorati.com/tagembedded+systems" rel="tag">embedded systems</a>, <a href="http://technorati.com/tagtools" rel="tag">tools</a>, <a href="http://technorati.com/tagapplication+framework" rel="tag">application framework</a>, <a href="http://technorati.com/tagmiddleware" rel="tag">middleware</a>, <a href="http://technorati.com/tagsilicon" rel="tag">silicon</a>, <a href="http://technorati.com/tagOEM" rel="tag">OEM</a>, <a href="http://technorati.com/tagoriginal+equipment+manufacturer" rel="tag">original equipment manufacturer</a>, <a href="http://technorati.com/tagIRR" rel="tag">IRR</a>, <a href="http://technorati.com/taghurdle+rate" rel="tag">hurdle rate</a>, <a href="http://technorati.com/tagWindows+CE" rel="tag">Windows CE</a>, <a href="http://technorati.com/tagVxWorks" rel="tag">VxWorks</a>, <a href="http://technorati.com/tagembedded+Linux" rel="tag">embedded Linux</a>, <a href="http://technorati.com/tagdevelopment+tools" rel="tag">development tools</a>, <a href="http://technorati.com/tagBird+Foundation" rel="tag">Bird Foundation</a>, <a href="http://technorati.com/tagproject+management" rel="tag">project management</a>, <a href="http://technorati.com/tagROI" rel="tag">ROI</a>, <a href="http://technorati.com/tagmarketing" rel="tag">marketing</a>, <a href="http://technorati.com/tagteam" rel="tag">team</a>, <a href="http://technorati.com/tagconsensus" rel="tag">consensus</a>, <a href="http://technorati.com/taginnovation" rel="tag">innovation</a>, <a href="http://technorati.com/tagEthics" rel="tag">Ethics</a>, <a href="http://technorati.com/tagBusiness" rel="tag"> Business</a>, <a href="http://technorati.com/tagUnited+States" rel="tag"> United States</a>, <a href="http://technorati.com/tagIsrael" rel="tag"> Israel</a>, <a href="http://technorati.com/tagChina" rel="tag"> China</a>, <a href="http://technorati.com/tagSingapore" rel="tag"> Singapore</a></p>

<!-- start wp-tags-to-technorati 1.02 -->

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2007/09/roi-as-an-effective-communications-tool-for-engineers/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>An Introduction to the HHP-16K EPROM Emulator</title>
		<link>http://www.embeddedcomponents.com/blogs/2007/09/introduction-to-hhp-16k-eprom-emulator/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2007/09/introduction-to-hhp-16k-eprom-emulator/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 07:23:58 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Projects]]></category>
		<category><![CDATA[HP-41 Personal Portable Computing]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2007/09/introduction-to-hhp-16k-eprom-emulator/</guid>
		<description><![CDATA[Ron Fredericks writes: The HHP-16K EPROM Emulator allows application code to be read by Hewlett-Packard&#8217;s (HP&#8217;s) HP-41 calculator. Instead of inserting a small pre-built module into one of the four module bays of the calculator, such as the PPC ROM module discussed in one of my previous blog posts, this unit allows a person to [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-4184215318352482";
/* 468_60_v1 */
google_ad_slot = "6370068834";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Ron Fredericks writes: The HHP-16K EPROM Emulator allows application code to be read by Hewlett-Packard&#8217;s (HP&#8217;s) <a href="http://www.hpcc.org/calculators/hp41.html" target="_blank">HP-41 calculator</a>. Instead of inserting a small pre-built module into one of the four module bays of the calculator, such as the <a href="http://www.embeddedcomponents.com/blogs/2007/04/community-software-development-for-embedded-devices/">PPC ROM module</a> discussed in one of my previous blog posts, this unit allows a person to use custom built programs previously stored into EPROMs (Erasable Programmable Read Only Memory devices) using software development tools and an EPROM burner. </p>
<h3>Figure 1: <em>HPP-16K Emulator Connected to HP-41 Calculator</em></h3>
<p><img id="image73" height="257" alt="HPP-16K EPROM Emulator connected to HP-41 Calculator" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hhp41emulatorsystemwp3.jpg" /><br />
<span style="color:#cccccc">Photo by Ron Fredericks using Canon EOS-10D 34mm fluorite lens, UV Filter, 1.5s &#038; f/22 @ ISO 100, on tripod, from Embedded Components&#8217; HP lab collection.</span></p>
<h2>Business Development using EPROM</h2>
<p>The HHP-16K represents, a stepping-stone from source code to mass marketing through the use of HP&#8217;s commercial software development tools and it&#8217;s professional services team.  Advertisement and promotion of HP&#8217;s professional services to productize HP ROM modules from EPROMs could be found within HP&#8217;s own software development tools, and in newsletters &#8212; newsletters published by HP and by independent self-assembling developer communities such as national and international versions of the HP Computing Club or <a href="http://www.hpcc.org" target="_blank">HPCC.org</a>.  HPâ€™s fee for this service was not trivial, often HP computer clubs would collect donations from 100&#8242;s or 1000&#8242;s of their members to raise the $20,000 to $60,000 (in 1980&#8242;s dollars) to produce these ROM modules for their members &#8211; all before the Internet.  </p>
<blockquote><p>This emulator is an example of an important design pattern for modern day software developers forming into ecosystems around mass marketed smart consumer devices! </p></blockquote>
<p>A typical consumer device in today&#8217;s market often has gigabytes of flash memory or other extensions via cellular networks, enterprise networks, or WI-FI Internet access, that behave just like this old 16 kilobyte emulator. With this design pattern &#8211; developers can improve the consumer&#8217;s experience on popular devices by adding new software applications, middleware, content, and development tools. While at the same time, developers gain significant new business development opportunities for themselves, content providers, software tools vendors, professional services teams, and device manufacturers alike.</p>
<p><span id="more-61"></span></p>
<p>Although this emulator is an old technology, circa 1981, the EPROM chips, development tools, and HP-41 calculator itself are still in use by many collectors and developers alike. I decided to write about this particular unit because documentation is not readily available &#8211; making this project an interesting reverse engineering challenge for me. But I am also writing this post to unravel the mystery behind the business case for the HHP-16K. Only by resurrecting the engineering steps to use this device can we be certain that we have understood its business impact on software tool vendors, consumer device manufactures, and third-party software developers. Read on to learn, with me, how to use this device, and uncover the historical documents related to this device. Then perhaps we can extend this example from a reusable embedded engineering method to fresh reusable ideas for building business relationships with today&#8217;s software, tools, and mass marketed smart consumer devices.</p>
<p><font COLOR="ORANGE">I will continue to update this post until I am satisfied others can use it to build their own programs for their HP-41 using this unit. Only then can I be satisfied that I have fully documented how to use this unit and appreciate its impact in the marketplace &#8211; historically and as a future design pattern for others. This paragraph will be erased at that time.</font></p>
<p>&#8220;Kelly McClellan, Jim De Arras and other users reverse-engineered the [HP-41] Nut processor bus and instruction set [PPCV6N6P4][PPCV7N3P20], and built EPROM boxes and MLDL (RAM) devices in order to run their own microcode.&#8221;<br />
<a href="http://nonpareil.brouhaha.com/microcode_simulation.pdf" target="_blank">Link to this article&#8230;</a></p>
<p>This unit appears to be the work of Mr. De Arras, since the printed circuit board has the following title:</p>
<p><code>41C EPROM Interface Copyright 1981 by J DE ARRAS    REV C</code></p>
<p>The unit was manufactured by:</p>
<p>F.M. Weaver Associates<br />
Hand Held Products Div.<br />
6201 Fair Valley Drive<br />
Charlotte, NC 28211<br />
USA</p>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-4184215318352482";
/* 468_60_v1 */
google_ad_slot = "6370068834";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h2>Overview of EPROM Emulation</h2>
<p>There are over 100 HP software solutions and community software built onto ROM modules <a href="http://www.hp-collection.org/Modulliste.pdf">listed on popular HP-41 web sites </a>that can be stored on EPROM. HP authorized their reuse in emulators several years ago.  In addition user code and assembly language code can be compiled and linked for deployment on EPROMs as well using freely available <a href="http://hp41.claughan.com/files/SDK41%20Manual.pdf">open-source tools</a>.</p>
<p>The idea is to burn EPROMs following the M-Code 10-bit word format used by the HP-41 series calculators.  I have not found the original documents for the HHP-16K unit but there are a few online resources to help guide a current-day embedded engineer tracing the footsteps of the past and current HP 41 developers. </p>
<h3>Figure 2: <em>HPP-16K Main Circuit Board</em></h3>
<p><img id="image63" height="735" alt="HHP-16K Circuit Board (top view, small size)" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hhp41emulatorcircuittvwp.jpg" /><br />
The figure above shows the top view of the circuit board: note the two DIP switches (I still need info on these) and three EPROM sockets.</p>
<p>Click <a class="imagelink" title="HHP-16K Circuit Board (bottom view, inverted, small size)"  href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hhp41rombotinvertviewwp2.jpg" target="_blank">here</a> to see the bottom view (inverted so it can be overlaid with the top view).</p>
<h2> ROM Memory Requirements </h2>
<p>There are a few articles on burning EPROMs for the HP41. The table below was extracted from one such article titled: &#8220;Creation of EPROMs for EPROM readers&#8221;. <a href="http://www.emmanuel.hp41.eu/eproms/eproms.html" target="_blank">Link to this article (in French)&#8230;</a></p>
<p>The lower 8 bits would use the two larger EPROM sockets and the upper 2 bits would use the smaller EPROM socket.</p>
<table width="200" border="2" cellspacing="1" cellpadding="2">
<caption>
  EPROM Chip Selection<br />
  </caption>
<tr>
<th rowspan="2" scope="col"> </th>
<th colspan="2" scope="col">
<div align="center">HHP-16k</div>
</th>
</tr>
<tr>
<td>
<div align="center">U2</div>
</td>
<td>
<div align="center">L8</div>
</td>
</tr>
<tr>
<th scope="row">
<div align="right">4K</div>
</th>
<td>
<div align="center">1x 2716 </div>
</td>
<td>
<div align="center">1x 2732</div>
</td>
</tr>
<tr>
<th scope="row">
<div align="right">8K</div>
</th>
<td>
<div align="center">1x 2716 </div>
</td>
<td>
<p align="center">2x 2732<br />
      or<br />
      1x 2764 
    </p>
</td>
</tr>
<tr>
<th scope="row">
<div align="right">12K</div>
</th>
<td>
<div align="center">1x 2732 </div>
</td>
<td>
<p align="center">1x 2732<br />
      and<br />
      1x 2764 
    </p>
</td>
</tr>
<tr>
<th scope="row">
<div align="right">16K</div>
</th>
<td>
<div align="center">1x 2732</div>
</td>
<td>
<div align="center">2x 2764</div>
</td>
</tr>
</table>
<p>In the table above, U2 and L8 refer to the EPROM sockets on the circuit board &#8211; see the figure above. </p>
<table width="219" border="2" cellpadding="2" cellspacing="1">
<caption>
  ROM Address<br />
Selection<br />
  </caption>
<tr>
<th width="94" scope="row">
<div align="center">4K Page</div>
</th>
<th width="106">
<div align="center">Port Number</div>
</th>
</tr>
<tr>
<th scope="row">
<div align="center">F<br />
        E </div>
</th>
<td>
<div align="center">4<br />
        (card reader) </div>
</td>
</tr>
<tr>
<th scope="row">
<div align="center">D<br />
        C</div>
</th>
<td>
<div align="center">3</div>
</td>
</tr>
<tr>
<th scope="row">
<div align="center">B<br />
        A </div>
</th>
<td>
<div align="center">2</div>
</td>
</tr>
<tr>
<th scope="row">
<div align="center">9<br />
        8 </div>
</th>
<td>
<div align="center">1</div>
</td>
</tr>
</table>
<p>Use the table above to define the HP41 I/O Ports required to access programs stored in ROM. See figure below for location of I/O ports on the back of the HP41 device. Typical HP-41 ROM modules are shown to the right of the calculator, while the electrical contacts can be seen within the other empty port bays.</p>
<h3>Figure 3: <em>HP-41 I/O Ports (back view)</em></h3>
<p><img id="image84" height="135" alt="HP-41 Calculator back view, with some I/O modules, and I/O ports labeled from 1 to 4" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hp-41-back-view-with-some-i.jpg" /></p>
<h2>HHP-16K Emulator Hardware Discussion</h2>
<table>
<tr>
<th>Data lines to emulator circuit board</th>
</tr>
<tr>
<td>
Blue <font color="blue">wire</font> = Vcc<br />
Yellow <font color="yellow">wire</font> = ISA (out) line from calculator to emulator<br />
Green <font color="green">wire</font> = ISA (in) line to calculator from emulator<br />
Shield wire = Ground<br />
Red <font color="red">wire</font> = Ã˜2 line<br />
Orange <font color="orange">wire</font> = SYNC line<br />
Brown <font color="brown">wire</font> = Ã˜1 line
    </td>
</tr>
<tr>
<td>
See the <strong>Input / Output Ports</strong> table below for signal line definitions.
    </td>
</tr>
</table>
<h3>Figure 4: <em>HPP-16K Interface Circuit Board</em></h3>
<p><img id="image69" height="475" alt="HHP-16K Interface to Calculator" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hhp41interface.jpg" /><br />
The figure above shows the interface from the HHP-16K device to the HP41 calculator ROM bay.</p>
<p>In this section I discuss the HP-41 calculator I/O ROM port in detail. Much of this information comes from HP&#8217;s internal documentation &#8211; specifically the &#8220;HP-41C/CV/CX Alphanumeric Programmable Scientific Calculator Service Manual&#8221; record number 00041-90472, printed 1983. You can read this and other HP internal documents on the HP-41 from Warren Furlow&#8217;s site <a href="http://www.hp41.org/LibView.cfm?Command=List&#038;CategoryID=20" target="_blank">here</a>.</p>
<table width="200" border="2" cellspacing="1" cellpadding="2">
<caption>
  </caption>
<tr>
<th colspan="2" scope="col">
<div align="center">Input / Output Ports </div>
</th>
</tr>
<tr>
<td colspan="2" scope="row">The four I/O ports on the HP-41 allow the user to expand the calculator&#8217;s capacity and to have it interact with external components (like the HHP-16K Emulator). Electrical contact is provided by a flexible printed-circuit strip mounted on the contact frame. The system lines which are accessible at the I/O ports are defined below.</td>
</tr>
<tr>
<th colspan="2" scope="row">
<div align="center"><img id="image81" height="226" alt="I/O Port View" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hp41_ioportview.gif" />
<div>
<th>
  </th>
</div>
</div>
</th>
</tr>
<tr>
<th width="52" scope="row">
<div align="center">VBAT</div>
</th>
<td width="391">Battery voltage: Four 1.5 volt N size batteries.</td>
</tr>
<tr>
<th scope="row">
<div align="center">VCC</div>
</th>
<td>System voltage:  While the display is active (RUN and STANDBY power modes), the system voltage is regulated at 6V (at VCC). When the display is inactive (SLEEP power mode), the voltage output is unregulated and set to 1V less than the battery voltage. </td>
</tr>
<tr>
<th scope="row">
<div align="center">GND</div>
</th>
<td>
<div align="left">Ground
      </div>
</td>
</tr>
<tr>
<th scope="row">
<div align="center">DATA</div>
</th>
<td>
<div align="left">Data timing line: 56 bits of data make up one data word, with data represented as BCD (Binary Coded Decimal) numbers. Instructions and addresses are represented as binary numbers. The timing of the system is referenced to the Ã˜2 signal from the CPU. A bit time (the period during which a single bit of data is transferred) is the time interval between the trailing edges of two successive Ã˜2 pulses. A word time consists of 56 bit times (0 to 55) and is the basic interval for information transfer.
      </div>
</td>
</tr>
<tr>
<th scope="row">
<div align="center">ISA</div>
</th>
<td>Instruction/Address line </td>
</tr>
<tr>
<th scope="row">
<div align="center">Ã˜1</div>
</th>
<td rowspan="2">Timing lines with a system operating frequency between 343 and 378 kHz. Ã˜1 pulses lead the Ã˜2 pulses by approx. 3/8&#8242;th period. </td>
</tr>
<tr>
<th scope="row">
<div align="center">Ã˜2</div>
</th>
</tr>
<tr>
<th scope="row">
<div align="center">SYNC</div>
</th>
<td>Timing/Information line: The SYNC signal, consisting of a 10 bit pulse during bit times 44 through 53, has two main functions. The first SYNC pulse generated during power-up is used to initialize the timing circuit of the system IC&#8217;s. Subsequently, the presence or absence of the SYNC pulse indicates whether information on the ISA line is an instruction or and address. The SYNC pulse is suppressed when the system is controlled by a plug-in accessory. Additionally, when the CPU timing circuit is disabled (STANDBY and SLEEP modes), the CPU sets the SYNC line equal to the DPWO signal from the display driver for access at the input/output ports.
    </td>
</tr>
<tr>
<th scope="row">
<div align="center">F1</div>
</th>
<td>Input flag line </td>
</tr>
<tr>
<th scope="row">
<div align="center">PWO</div>
</th>
<td>Power on/off line </td>
</tr>
<tr>
<th height="94" scope="row">
<div align="center">B3</div>
</th>
<td rowspan="2">
<p align="left">ROM port identification lines: The B3 and B4 lines from each of the four ports are wired differently at each port so that each plug-in accessory will have a unique identification code.</p>
<table width="100%" border="2" cellspacing="1" cellpadding="2">
<tr>
<th>
<div align="center">I/O Port<br />Location</div>
</th>
<th>
<div align="center">I/O Port<br />Number</div>
</th>
<th>
<div align="center">B3<br />Contact</div>
</th>
<th>
<div align="center">B4<br />Contact</div>
</th>
</tr>
<tr>
<td>
<div align="center">Upper Left</div>
</td>
<td>
<div align="center">1</div>
</td>
<td>
<div align="center">Open</div>
</td>
<td>
<div align="center">Open</div>
</td>
</tr>
<tr>
<td>
<div align="center">Upper Right</div>
</td>
<td>
<div align="center">2</div>
</td>
<td>
<div align="center">Vcc</div>
</td>
<td>
<div align="center">Open</div>
</td>
</tr>
<td>
<div align="center">Upper Left</div>
</td>
<td>
<div align="center">3</div>
</td>
<td>
<div align="center">Open</div>
</td>
<td>
<div align="center">Vcc</div>
</td>
</table>
</td>
</tr>
<td>
<div align="center">Lower Right</div>
</td>
<td>
<div align="center">4</div>
</td>
<td>
<div align="center">Vcc</div>
</td>
<td>
<div align="center">Vcc</div>
</td>
</table>
<tr>
<th height="129" scope="row">
<div align="center">B4</div>
</th>
</tr>
<tr>
<td colspan="2">
<div align="center"><strong>Timing Waveform Diagram</strong></div>
<p><img id="image70" height=193 alt="Timing Diagram" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hp41_iotimingdiagram.jpg" />  </td>
</tr>
<p>The CPU checks status of the system and the I/O ports by setting the PWO line high at bit time 54to enable the ROM. The CPU carries out specified operations by executing a series of instructions contained in ROM. The CPU obtains each instruction from ROM by transmitting the 16-bit address of the instructions over the ISA line during bit times 14 through 29. The ROM containing the address transmits the contents of that location over the ISA line during bit times 44 through 53.</p>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-4184215318352482";
/* 468_60_v1 */
google_ad_slot = "6370068834";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h2>HHP-16K Hardware Bring-up</h2>
<p>Upon initial inspection, the HHP-16K device and ROM interface have likely been opened many times. So before risking potential damage to a HP-41 calculator and to insure best chance of success in my first use of this device I use a Digital Multimeter (DMM) to trace continuity and measure DC voltage levels at the Vss (ground) and Vdd (DC supply) pins of the various logic chips.</p>
<h3>Figure 5: <em> Reverse Engineer the HHP-16K Interface Circuit </em></h3>
<p><img id="image77" height=264 alt="Trace Interface with DMM" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hhp41-iface-and-hpdvm-small.jpg" /><br />
<a id="p80" title=hhhp41withlargeimage.htm href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hhhp41withlargeimage.htm" target="_blank">Larger view in separate window</a></p>
<p>Start with the ROM interface that plugs into one of the four HP-41 I/O ports. In this way we can insure that the small circuit board inside the interface is oriented correctly with respect to Vdd and Ground when we plug it in and turn on the calculator.   </p>
<p>Note the DMM reading is in megohms (less accurate readings) and not in just ohms (more accurate readings). The reason for choosing the high ohm scale is that the voltage across the probes is much less: 1 volt across probe tips on megohm scale vs. 6 volts on the ohm scale. The lower voltage insures no risk of damage to parts during resistance/continuity measurements.</p>
<h3>Figure 6: <em>Check DC Voltage on HHP-16K Main Circuit Board </em></h3>
<p><img id="image76" height=280 alt="Check DC Voltage Levels" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hhp41-16k-and-hpdvm-and-hp4.jpg" /></p>
<p>Second, proceed with DC voltage test of power rails by putting the HPP41-16K Emulator into a calculator ROM bay.  Apply power to the unit by turning on the calculator. Measure the 6 volts from Vdd to ground on the logic chips located on the main board. The various chips on-board are all CMOS logic packages manufactured by Motorola.  Pin-outs and logic details are easily found from online datasheets by searching on easy to read part numbers.</p>
<p>Third, confirm our findings and test the dynamic behavior of the interface using a logic analyzer. I have a <a href="http://www.tucker.com/images/images_spec/00004871.pdf">HP 1631D </a>that will do the job very nicely.  Note how similar my captured waveforms are to the HP service manual&#8217;s waveform diagram for the calculator&#8217;s I/O port (see above):</p>
<ul>
<li>The SYNC line is inverted since the interface buffers it with only one hex inverter/buffer from the MC14049 CMOS chip.</li>
<li>The x-to-o cursor measurement was done at 4X magnification. The period as seen on the display is 2.8 microseconds, or 357 kHz &#8211; well within the reported frequency range discussed above for Ã˜1 (PHI 1 label) and Ã˜2 (PHI 2 label) timing lines.</li>
<li>The HHP-16K interface includes logic to multiplex ISA signals to and from the main circuit board. The ISA I (or ISA Input) line shows the address and instruction data while executing a &#8220;Catalog 3&#8243; operation &#8211; so the signals shown were captured while the calculator was accessing onboard ROM. ISA O (or ISA Output) is held low since the EPROM chips have not been programmed yet and therefore offer no function headers to support the Catalog operation. </li>
</ul>
<h3>Figure 7: <em>Capture an HHP-16K Waveform Diagram</em></h3>
<p><img id="image82" height=520 alt="Timing Traces from HP 1631D Logic Analyzer (upper); along with test bench setup (lower)" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/live-trace-using-hp1631d-sm.jpg" /><br />
<a id=p92 href="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/testbenchlargeimage.htm">Larger view of test bench setup in a seperate window</a></p>
<h2>EPROM Configuration Logic</h2>
<p>The HP-41 ROM space uses a 10-bit word size. To store the ROM words in standard EPROMs (8-bit bytes), the HHP-16K uses separate EPROMs for the lower eight bits (L8) and upper two bits (U2). To conserve space the onboard logic translates the upper two bits of four consecutive 10-bit ROM words into one 8-bit byte on the U2 EPROM. </p>
<h2>Burn EPROMs</h2>
<p>There are three different starting points to this step depending on where the source code resides. We could start with user code (high level source code), microcode (assembly code), or a previously built ROM module already in use on HP-41 calculators (binary code).  I will focus on the use of previously built ROMs as there are so many license-free and available for use on an HP-41 calculator emulator.  The HP-41 calculator emulator is available for Windows, Linux, Palm, and Pocket-PC platforms. Itâ€™s a great way to gain access to all the software stored in emulated ROM modules. </p>
<p>Also, the emulated ROM module, saved as a binary file, is the end point for the other two forms of code since source or assembler code will ultimately need to be located to a ROM address and built into a binary footprint suitable for placement onto ROM modules or EPROMs as is the case here.</p>
<p>Two types of ROM module are of interest to me:
<ul>
<li>The first use case is a ROM module I already have. In this case I can compare function access with test cases on the real device and on the emulated ROM using the HHP-16K EPROM Emulator.</li>
<li>The second use case would be to use ROM images that cannot be simulated on a virtual HP-41 Emulator. These ROMs would include the HP Service Diagnostic ROM, an HP-IL network diagnostic ROM, or a support ROM for communication services like the ZENROM that are rare finds (and expensive) to buy for a HP-41 calculator.</li>
</ul>
<p><strong>MOD File Format</strong><br />
Go to Warren Furlow&#8217;s web site and download a selected ROM module: <a href="http://www.hp41.org/LibView.cfm?Command=List&#038;CategoryID=74">Stat Pac</a></p>
<p>Extracting the zip file&#8217;s contents leaves one file named STAT.MOD. The .mod file format is a custom binary image file format created by Warren Furlow as a way to extract the contents of physical HP ROM modules for reuse in his great HP-41 emulator.</p>
<p><strong>ROM File Format</strong><br />
Convert the STAT.MODfile into a binary image consisting of two 8-bit bytes for each 10-bit HP-calculator word using Warren Furlow&#8217;s MODFile.exe program. Get this MS-DOS or Windows program as a <a href="http://www.hp41.org/LibView.cfm?Command=View&#038;ItemID=608">free download</a>. </p>
<p>The result is a new file STAT.ROMand a text file STAT.TXT. The .ROM image is now in a binary form that EPROM burners can use. But the format is still not suitable for our HHP-16K as the upper 2 bits of the 10-bit word are stored in an 8-bit byte (the upper 6 bits wasted) format.  The .TXT file is useful as a way to insure that the ROM module will work in our HHP-16K unit. </p>
<h3>Listing 1: <em>STAT-I HP ROM Module Structure</em></h3>
<p></p>
<div class="ch_code_container" style="font-family: monospace;height:300px;">
<div style="">Code (text)</div>
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">FILE NAME: C:\msdosenv\hp41\MODFile\STAT.MOD</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">FILE FORMAT: MOD1</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">TITLE: Stat Pac</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">VERSION: B</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">PART NUMBER: 00041-15002</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">AUTHOR: Hewlett-Packard</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">COPYRIGHT (c) Hewlett-Packard</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">LICENSE: Hewlett-Packard Company makes no warranty as to the accuracy or completeness of the foregoing information and hereby disclaims any responsibility therefore.</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">COMMENTS: </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">CATEGORY: HP Application PAC</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">HARDWARE: None</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">MEMORY MODULES: 0</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">EXENDED MEMORY MODULES: 0</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">ORIGINAL: Yes &#8211; unaltered</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">APPLICATION AUTO UPDATE: No &#8211; do not update this file</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">NUMBER OF PAGES: 1</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">ROM NAME: Stat-1B</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">ROM ID: ST1B</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">PAGE: May be in more than one location</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">POSITION: Any page 8-F</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">PAGE GROUP: 0 &#8211; not grouped</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">BANK: 1</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">BANK GROUP: 0 &#8211; not grouped</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">RAM: No</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Write Protected: No or Not Applicable</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">FAT: Yes</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">XROM: 2</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">FCNS: 30</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">XROM&nbsp; Addr Function&nbsp; &nbsp; Type</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,00 0FD4 STAT 1B&nbsp; &nbsp; &nbsp;4K MCODE Programmable</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,01 0042&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,02 0076&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,03 00D4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,04 01A1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,05 01D4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,06 01FB&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,07 0273&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,08 02C9&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,09 0395&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,10 047B&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,11 0620&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,12 0630&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,13 0640&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,14 0650&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,15 0710&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,16 072D&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,17 0748&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,18 0763&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,19 0B58&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,20 0B71&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,21 0C25&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,22 0C6D&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,23 0CB8&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,24 0CCF&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,25 0D9C&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,26 0DF7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,27 0F3E&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,28 029E&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02,29 02AD&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;USER CODE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">INTERRPUT VECTORS:</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Pause loop:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 000</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Main running loop:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;000</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Deep sleep wake up, no key down: 000</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Off:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;000</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">I/O service:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;000</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Deep sleep wake up:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 000</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Cold start:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 000</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">CHECKSUM: 2F1 (CORRECT)</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
<p>Note that the flag for RAM is set to No (line 26 in listing 1 above).  Some HP-41 ROM modules include RAM for special operations. If RAM is being used, our simple HHP-16K EPROM Emulator will fail unless we modify either the source code or the EPROM Emulator.  Also note that the ROM page and position fields show that our EPROM Emulator can support this module interfaced to any HP-41 ROM bay.</p>
<p><strong>STAT.41L and STAT.41U File Formats</strong><br />
Now we can use our STAT.ROM file as an input to a utility bundled with HP&#8217;s own Software Development System (SDS-II, released in 1986) for MS-DOS computers called IGHLOW.EXE.  The HIGHLOW.EXE program expects the .ROM image to have a file name ending with .41R. So I make a copy of STAT.ROM and save it with the new name STAT.41R. This is the only bridge needed between Warren Furlow&#8217;s after-market software emulator tools and HP&#8217;s original SDS-II software tools. Neat. The HIGHLOW.EXE program converts the two 8-bit bytes of the HP-41 executable code into 8-bit bytes for lower 8-bits of the HP41 word and 4 packed 2-bit chunks for the upper 2 bits of the HP41 10-bit word. The SDS-II document points out that this is the format we need for Hand-Held Products EPROM Emulators.</p>
<p>Now we have two files suitable for our EPROM Burner:
<ul>
<li>STAT.41L for 1/2 of one of our two 2764K EPROMs</li>
<li>STAT.41U for 1/4 of the 2732K EPROM</li>
</ul>
<p>(Remember I am using these chips because I have them on hand, so I will leave the remainder of EPROM memory filled with 0xFF values just as the UV erase lamp left them.)</p>
<h3>Listing 2: <em>STAT-I HP ROM Module Software Files</em></h3>
<p></p>
<div class="ch_code_container" style="font-family: monospace;height:300px;">
<div style="">Code (text)</div>
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">C:\msdosenv\hp41\MODFile&gt;dir</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;Volume in drive C is Ron</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;Volume Serial Number is 08DE-9633</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;Directory of C:\msdosenv\hp41\MODFile</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">09/22/2007&nbsp; 05:54 PM&nbsp; &nbsp; &lt;dir&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">09/22/2007&nbsp; 05:54 PM&nbsp; &nbsp; &lt;/dir&gt;&lt;dir&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ..</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">04/07/1988&nbsp; 06:33 PM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 16,489 HIGHLOW.EXE</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">09/20/2007&nbsp; 12:19 PM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 61,440 MODFile.exe</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">09/20/2007&nbsp; 12:19 PM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 61,440 MODFileWin.exe</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">09/20/2007&nbsp; 12:19 PM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;282 Readme.txt</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">09/20/2007&nbsp; 12:26 PM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8,192 Stat-1B.ROM</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">09/22/2007&nbsp; 05:54 PM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4,096 STAT.41L</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">09/20/2007&nbsp; 12:26 PM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8,192 stat.41R</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">09/22/2007&nbsp; 05:54 PM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1,024 STAT.41U</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">02/24/2004&nbsp; 06:09 PM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;5,917 STAT.MOD</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">09/20/2007&nbsp; 12:24 PM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2,166 STAT.txt</div>
</li>
<li style="font-weight: bold;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 10 File(s)&nbsp; &nbsp; &nbsp; &nbsp; 169,238 bytes</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2 Dir(s)&nbsp; 118,975,586,304 bytes free</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/dir&gt;</div>
</li>
</ol>
</div>
<p>I use a Needhan Electronic&#8217;s EPROM burner and MS-DOS tools to massage ROM coded files and burn EPROMs. Because the interface requires a Centronics printer port, I use an Ampro Pentium II board with CIFS/SMB Ethernet connected to my main computer to drive the burner. I use a Walling Co. UV lamp assembly for erasing code previously stored in EPROM chips.  Needham has a chip selector search engine online for their burners <a href="http://www.needhams.com/support-device-search.html" target="_blank">here.</a></p>
<h3>Figure 8: <em>EPROM Needham Burner and Walling UV Lamp</em></h3>
<p><img id="image83" height=218 alt="EMP10 EPROM Burner and UV Eraser" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/emp10anduveraser.jpg" /></p>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-4184215318352482";
/* 468_60_v1 */
google_ad_slot = "6370068834";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h2>Using Programs Loaded in HHP-16K</h2>
<p>tbd&#8230;</p>
<h2>HHP-16K in the Marketplace</h2>
<p>The Canadian Infantry used the HP-41CV and HHP-16K as part of their mortar firing training course.  </p>
<h3>Figure 9: <em>Canadian Infantry HHP-16K Mortar Firing Training Application</em></h3>
<p><img id="image64" height=463 alt="Canadian Infantry HHP-16K Mortar Firing Training Application" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/09/hhp41forarmymortarpractice.jpg" /><br />
In the figure above, the HHP-16K is located in the lower left.</p>
<p>The entire document titled &#8220;LAND FORCE INFANTRY INSTRUMENTS FOR CALCULATING MORTAR FIRING DATA&#8221; is online <a href="http://www.nvbmb.nl/downloads/b-gl-385-015pt-001.pdf" target="_blank">here</a>. </p>
<p>The document discusses a few user tricks with the HHP-16K, such as how to determine key assignments associated with functions loaded on the HHP&#8217;s 3 EPROMs &#8211; page 16 (page 28 of 259 in the PDF).</p>
<h2>Next steps&#8230;</h2>
<p><font COLOR="ORANGE">I invite others to post their comments, online links, or other suggestions, so we can ALL continue to learn more about this device, the software it supported, and the business development model it represents today!</font></p>
<p>Technorati Tags: <a href="http://technorati.com/tagRon+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tagCommunity" rel="tag"> Community</a>, <a href="http://technorati.com/tagSoftware" rel="tag"> Software</a>, <a href="http://technorati.com/tagEngineering" rel="tag"> Engineering</a>, <a href="http://technorati.com/tagProjects" rel="tag"> Projects</a>, <a href="http://technorati.com/tagEmbedded+Device" rel="tag"> Embedded Device</a>, <a href="http://technorati.com/tagPersonal+Programmable+Calculator" rel="tag"> Personal Programmable Calculator</a>, <a href="http://technorati.com/tagThe+Museum+of+HP+Calculators" rel="tag"> The Museum of HP Calculators</a>, <a href="http://technorati.com/tagJim+De+Arras" rel="tag"> Jim De Arras</a>, <a href="http://technorati.com/tagEPROM" rel="tag"> EPROM</a>, <a href="http://technorati.com/tagHHP-16K" rel="tag"> HHP-16K</a>, <a href="http://technorati.com/tagHand+Held+Products" rel="tag"> Hand Held Products</a>, <a href="http://technorati.com/tagEmulator" rel="tag"> Emulator</a>, <a href="http://technorati.com/tagCompiler" rel="tag"> Compiler</a>, <a href="http://technorati.com/tagDecompiler" rel="tag"> Decompiler</a>, <a href="http://technorati.com/tagHP-41" rel="tag"> HP-41</a>, <a href="http://technorati.com/tagLogic+Analyzer" rel="tag"> Logic Analyzer</a>, <a href="http://technorati.com/tagDMM" rel="tag"> DMM</a></p>

<!-- start wp-tags-to-technorati 1.02 -->

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2007/09/introduction-to-hhp-16k-eprom-emulator/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to build Dean Lee&#8217;s Syntax Highlighter from latest components</title>
		<link>http://www.embeddedcomponents.com/blogs/2007/05/how-to-build-dean-lees-syntax-highlighter-from-latest-components/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2007/05/how-to-build-dean-lees-syntax-highlighter-from-latest-components/#comments</comments>
		<pubDate>Tue, 29 May 2007 09:06:49 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Projects]]></category>
		<category><![CDATA[Component Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Components]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2007/05/how-to-build-dean-lees-syntax-highlighter-from-latest-components/</guid>
		<description><![CDATA[Ron Fredericks writes: In my last two posts: I discovered Dean Lee&#8216;s Code Highlighter plugin for WordPress as the blogging solution for my source code display needs. I fixed a word wrap problem in Dean&#8217;s plugin. During my research to solve the word wrap problem, I discovered a few more issues leading me to update [...]]]></description>
			<content:encoded><![CDATA[<p>Ron Fredericks writes: In my last two posts:</p>
<ul>
<li>I discovered <a href="http://www.embeddedcomponents.com/blogs/2007/05/test-display-of-source-code-using/">Dean Lee&#8216;s Code Highlighter</a> plugin for WordPress as the blogging solution for my source code display needs.</li>
<li>I fixed a <a href="http://www.embeddedcomponents.com/blogs/2007/05/how-to-fix-dean-lees-source-code-highlight-plugin/">word wrap problem in Dean&#8217;s plugin</a>.</li>
</ul>
<p>During my research to solve the word wrap problem, I discovered a few more issues leading me to update Dean&#8217;s plugin with the latest version of GeSHI (<em>an open-source project: Generic Syntax Highlighter for php. Highlight many languages, including PHP, CSS, HTML, SQL, Java, Assembler, and C for XHTML compliant output</em>) and removal of unused files. I thought other WordPress bloggers might like to take advantage of the latest code too, so I document the steps needed to build a clean plugin with the latest components.</p>
<p><strong>Flow Chart / Swim Lanes Widget</strong><br />
Below is a Flash widget I built to document the steps needed so you can roll your own up-to-date plugin. Follow these steps and you won&#8217;t have to be a programmer to get the benefits from the latest versions of these program components. The widget actively links to the latest PHP files and CSS classes:</p>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="450" HEIGHT="583" id="how2installplugin" ALIGN=""><param NAME=movie VALUE="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/05/how2installplugin.swf"></param><param NAME=quality VALUE=high></param><param NAME=bgcolor VALUE=#333399><embed src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/05/how2installplugin.swf" quality=high bgcolor=#333399 WIDTH="450" HEIGHT="583" NAME="how2installplugin" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></embed></param></object> </p>
<p><span id="more-54"></span><br />
<strong>Why Roll Your Own Plugin?</strong><br />
I have been working with components and tools on various projects long enough to  realize a common problem. Whenever components are used from different projects, such as Dean&#8217;s plugin integrated with the GeSHi language components, each file and/or component continues to receive bug fixes and enhancements in real-time without regard to the other components and files. This is natural because each componentâ€™s project is managed by a different group.</p>
<p>So now I have an idea on how to fix this evolving problem of diverging code bases: create a flow-chart showing how to assemble the individual components into a final product. Use swim-lanes to highlight the different component resources being used. Document the whole work-flow into a Flash document so links to other web pages and/or live video&#8217;s can be included as hot-links to demonstrate the process.</p>
<p><strong>Detailed Notes on the Problems Solved Here</strong><br />
Here are the issues I solve in this blog post:</p>
<ul>
<li>The version of GeSHi included with Dean&#8217;s code-base is now obsolete. The latest version of GeSHi includes a few bug fixes and a few new supported languages for syntax highlighting. By the time you read this blog post, perhaps GeSHi will have yet an even more improved and stable code base.</li>
<li>One of the optional modules supplied by GeSHi, PHP samples found in the &#8220;contrib&#8221; directory; include a recently-identified security risk if included on a web server &#8211; such as your WordPress blog installation.  Dean&#8217;s plugin includes this GeSHi directory by default.</li>
<li>Dean&#8217;s plugin also includes a Mac temporary file called .DS_Store that is not used by WordPress either.</li>
</ul>
<p><strong>The Components and Their Versions</strong><br />
Deanâ€™s original code has the following versions:</p>
<ul>
<li>WordPress should be version 1.5 or later</li>
<li>Deanâ€™s Code Highlighter v1.1</li>
<li>Download link:<br />
<a href="http://www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/">www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/</a></li>
<li>Deanâ€™s code includes the following GeSHi components:<br />
geshi.php, contrib and geshi directories<br />
GESHI_VERSION, 1.0.7.14</li>
<li>CSS classes for WordPress template style.css file<br />
<a href="http://www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/#ch_css_class">www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/#ch_css_class</a></li>
</ul>
<p>My rebuilt version of Deanâ€™s plugin has the following components and version detail:</p>
<ul>
<li>I&#8217;m using Worpress version 2.0.4</li>
<li>Deans_code_highlighter.php<br />
Version 1.1<br />
Download link:<br />
<a href="http://www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/">www.deanlee.cn/wordpress/code_highlighter_plugin_for_wordpress/</a></li>
<li>geshi.php, and geshi directory<br />
GESHI_VERSION, 1.0.7.19<br />
Download link:<br />
<a href="http://sourceforge.net/projects/geshi">sourceforge.net/projects/geshi/</a></li>
<li>New CSS classes for WordPress template style.css file<br />
Version 1.0 from Embedded Components<br />
<a href="http://www.embeddedcomponents.com/blogs/2007/05/how-to-fix-dean-lees-source-code-highlight-plugin/#ch_css_class">www.embeddedcomponents.com/blogs/2007/05/how-to-fix-dean-lees-source-code-highlight-plugin/#ch_css_class</a></li>
</ul>
<p><strong>A Final Note</strong><br />
The GeSHi code base continues to go through updates. At some point the logic behind my approach &#8211; mix and match the latest code from all resources required for Deanâ€™s WordPress plugin â€“ might break down. Perhaps GeSHi will adopt a new interface thatâ€™s not suitable to Deanâ€™s WordPress plugin code, for example. In any case, if you are having trouble getting Deanâ€™s plugin to work, I suggest the following:</p>
<p>Revert back to Deanâ€™s complete code base. Install it as he suggests and try it. If Deanâ€™s original code base does not work, then maybe you are not following the install instructions correctly or perhaps WordPress itself is at an incompatible version. If the plugin works, then try replacing code one step at a time. With each new file change, try your updated WordPress plugin to see if it still can be deactivated, reactivated, and highlights code correctly in a blog post. When the offending component has been identified, let me know so we can work out a new swim-lane diagram for others to follow. </p>
<p>Technorati Tags: <a href="http://technorati.com/tagRon+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tagDean+Lee" rel="tag">Dean Lee</a>, <a href="http://technorati.com/tagCode+Highlighter" rel="tag">Code Highlighter</a>, <a href="http://technorati.com/tagWordpress" rel="tag">WordPress</a>, <a href="http://technorati.com/tagplugin" rel="tag">plugin</a>, <a href="http://technorati.com/tagcomponent" rel="tag">component</a>, <a href="http://technorati.com/tagFlow+Chart" rel="tag">Flow Chart</a>, <a href="http://technorati.com/tagSwim+Lanes" rel="tag">Swim Lanes</a>, <a href="http://technorati.com/tagFlash" rel="tag">Flash</a>, <a href="http://technorati.com/tagwidget" rel="tag">widget</a>, <a href="http://technorati.com/tagPHP" rel="tag">PHP</a>, <a href="http://technorati.com/tagCSS" rel="tag">CSS</a>, <a href="http://technorati.com/tagGeSHi" rel="tag">GeSHi</a></p>
<!-- start wp-tags-to-technorati 1.02 -->

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2007/05/how-to-build-dean-lees-syntax-highlighter-from-latest-components/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Community Software Development for Embedded Devices</title>
		<link>http://www.embeddedcomponents.com/blogs/2007/04/community-software-development-for-embedded-devices/</link>
		<comments>http://www.embeddedcomponents.com/blogs/2007/04/community-software-development-for-embedded-devices/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 17:57:17 +0000</pubDate>
		<dc:creator>Ron Fredericks</dc:creator>
				<category><![CDATA[Component Projects]]></category>
		<category><![CDATA[HP-41 Personal Portable Computing]]></category>

		<guid isPermaLink="false">http://www.embeddedcomponents.com/blogs/2007/04/community-software-development-for-embedded-devices/</guid>
		<description><![CDATA[Photo by Ron Fredericks using Canon EOS-10D 34mm fluorite lens, circular polarizer, 1.5s &#038; f/22 @ ISO 100, on tripod, from Embedded Components&#8217; HP lab collection. Ron Fredericks writes: I envision the day when community software engineering projects are commonplace for embedded devices. Like the PPC ROM demonstrated back in 1981. What follows is a [...]]]></description>
			<content:encoded><![CDATA[<p><!-- ckey="5DDF66C9" --><br />
<img id="image41" height=304 alt="HP-41CX mobile computer/calculator with community developed PPC ROM software applications and synthetic code library" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/04/hp41_ppcrom.jpg" /><br />
<FONT COLOR="#cccccc">Photo by Ron Fredericks using Canon EOS-10D 34mm fluorite lens, circular polarizer, 1.5s &#038; f/22 @ ISO 100, on tripod, from Embedded Components&#8217; HP lab collection.</font></p>
<p>Ron Fredericks writes: I envision the day when community software engineering projects are commonplace for embedded devices. Like the PPC ROM demonstrated back in 1981.</p>
<p><FONT COLOR="#cc6600">What follows is a review of the PPC ROM community development project &#8211; a first for smart mobile devices, then an offer to help others in moving this great body of open source professional tools to modern devices: comment on this post if you are interested in this project or in community development of software for embedded devices in general.</font></p>
<p>Wouldn&#8217;t it be nice to have powerful new applications built on top of our routers, <a href="http://www.nerdgirl.com/2006/09/22/taking-it-too-far/">digital recorders</a>, HDTV&#8216;s; or even industrial process monitor and control systems, or lab instruments; hey how about our cars and public transport vehicles? No I don&#8217;t mean that you buy a new device or car with new applications pre-loaded by the device manufacturer and shipped with the soon to be obsolete device &#8211; I mean groups of experts organizing into communities with other experts to design, develop, test, document, package, and deliver new software solutions onto devices for their own members&#8217; sales channels. Does this sound far fetched?</p>
<p>Community development around open-source software such as Java, the Linux operating system, or Mozilla&#8216;s Firefox web browser have emerged as reusable project management solutions to complex software engineering issues &#8211; <a href="http://www.fastcompany.com/magazine/113/next-job-one.html">See Asa Dotzler&#8217;s Job Morph: Herding Cats</a> to see how Mozilla motivates workers who aren&#8217;t actually on the payroll.. So I know the engineering community is ready for a new challenge &#8211; one that has already been solved back in 1981 &#8211; one that affects the speed of technology reuse around the globe today.</p>
<p><img id="image48" height=305 alt="Development for today's embedded/mobile devices has many similarities to the HP-41 personal programmable calculator" src="http://www.embeddedcomponents.com/blogs/wp-content/uploads/2007/05/img_2759c.jpg" /><br />
<FONT COLOR="#cccccc">Photo by Ron Fredericks using the same settings as the previous photo, of his favorite mobile smart device.</font></p>
<p><FONT COLOR="#cc6600">So let me share with you a project I recently discovered. Itâ€™s embodied in a userâ€™s manual published in 1981 by a community of engineers â€“ no, not your typical product manual ticked out on a company payroll. The forward describes a first-of-its-kind effort behind this user manual, and the embedded software it documents. The author expresses his excitement in being part of the â€œfirst community developerâ€ project for a smart mobile computing device and it is so similar to the smart devices we use today! Did I mention that Linux, or even community networks like web and email didn&#8217;t exist back then?  How did they do it? Can we learn from their effort and apply this community project, or its method, for today&#8217;s embedded devices?  I think the answer is yes &#8211; with a little help from the embedded operating system suppliers&#8217; communities and some innovative hardware device manufacturers. The embedded operating system, software community project management, and smart device platforms have come to a wonderful cross-road that truly supports community software development as a ripe low-hanging opportunity for us today.</FONT></p>
<p>The forward to this 500 page user manual describes the struggle and accomplishment of 100 developers who formed their own community project to develop a â€œROMâ€ or <em>read-only memory</em> module they called a <a href="http://www.hp41.org/LibView.cfm?Command=Image&#038;FileID=23037">â€œPPC ROMâ€</a> that plugs into an HP personal computer that is now 25 years obsolete called an <a href="http://www.hpmuseum.org/">HP-41</a>.  The â€œPPCâ€ reference is to the names &#8211; <em>Personal Programmable Calculator</em>, or <em>Personal Programmer&#8217;s Club</em>, or <em>Prolific and Productive Computing</em> &#8211; as well as the <a href="http://www.hp41.org/LibView.cfm?Command=Image&#038;FileID=2024"><em>PPC Calculator Journal</em></a> that was the herald for the HP calculator&#8217;s developer community back in the day. Similar to the commonplace e&#8217;zines we read, or get spammed with today. But different because the taxonomy created by todayâ€™s almost endless stream of eBlasts, tagged content, blogs, forums, and RSS feeds by themselves don&#8217;t create an engineers&#8217; sense of community. The spontaneous motivation to organize into a sense of community requires a mood that has only been created by a real person &#8211; a person that shifts a group of developers&#8217; <a href="http://tim.oreilly.com/articles/paradigmshift_0504.html">paradigm</a> . <span id="more-40"></span></p>
<p>Perhaps many of you remember <a href="http://en.wikipedia.org/wiki/Philippe_Kahn">Philippe Kahn</a>, who created a cozy engineering mood with his Turbo Pascal and Turbo C compilers &#8211; these cheap little things that were killer apps that grew the base of available programmers for several years. Prior compilers for the early PC&#8217;s cost 10 times more.  Within the HP-41 community there was William Wickes â€“ a community engineering leader that helped to grow the base of programmable calculator developers that in-turn grew the base of engineering, scientific, financial, and many other professionals and students so commonly outsourced by the global community today. Mr. Wickes lead the discovery of a new programming technique for the HP-41 called synthetic programming. Like Philippe&#8217;s community contribution to the PC developer community, Bill was able to drive significant developer excitement into an otherwise limited calculator programming community.</p>
<p>The PPC ROM&#8217;s core management team wrote in the forward to PPC ROM user&#8217;s manual&#8230;</p>
<p><em>â€œThis project is unique in the history of software projects. IBM and other large corporations have assigned multi-tens of programmers to a software project, but never before have over 100 programmers worked so long and so hard on a project â€” without compensation of any kind. The PPC ROM PROJECT is a community project in the true sense of the word&#8230;.It took two years and two months to complete&#8230;</em>â€</p>
<p>The forward then goes on to discuss the challenges of working with a personal computer that had so little memory and other constrained hardware issues  &#8211;  very similar to developing the content and applications in demand on mobile smart devices today!  Their solution, why they did it,  how they managed to stay together to finish it, and how they partnered with HP to build, and package the ROM Module itself is also described.</p>
<p>To be clear, the PPC ROM wasn&#8217;t a one-off, there were other community projects that replicated this first success with the creation of the <a href="http://www.limov.com/other-work.lml?p=zen-1">ZENROM</a>, <a href="http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/archv001.cgi?read=1944">HEPAX</a>, and other plug-in modules for the HP-41 too. I get the impression that todayâ€™s embedded community could succeed in the creation and deployment of software onto aftermarket embedded devices by following the same process pioneered by the developers of the PPC ROM: </p>
<ul>
<li>
Select a product mix with applications, tools, middleware, entertainment, and educational content that is attractive to end users but also encourages component reuse by more developers who in turn then create even more attractive reusable solutions.</li>
<li>
Select a project management model similar to other recent and very successful <a href="http://herdingcats.typepad.com/">â€œcat herdingâ€</a> open-source web community efforts. The new social network communities frequented by developers make the PPC ROM story much easier to duplicate. </li>
<li>
Select a hardware platform vendor willing to facilitate software packaging, delivery, execution, and reuse methods such as over-the-air, network download, or even a group-published flash chip.</li>
<li>
Harness the power of a community manager. The likes of PPC ROM&#8217;s synthetic programming allure created by William Wickes, Linux&#8217;s Linus Torvald, and Mozilla&#8217;s <a href="http://weblogs.mozillazine.org/asa/">Asa Dotzler</a> are some of the more famous examples of community managers for engineering development.</li>
</ul>
<p><FONT COLOR="#cc6600">Now that is just what I am proposing. Let&#8217;s revisit this community development effort by moving the freely available HP-41 applications to an emulator that can run on common mobile devices easily available in today&#8217;s community.  First step might be to see how the existing HP-41 emulators works on your favorite device with the hope that all the engineering, scientific, financial and other professional applications can be downloaded and used too. More on this effort and community software development will follow&#8230;</FONT></p>
<p>References to the excellent HP-41 emulator work and open-source site by Warren Furlow and others&#8230; </p>
<p>You can download a Windows PC/Linux/Windows Mobile/PalmOS emulator of the HP-41 personal computer, add your own programs to it,  and load the actual PPC-ROM moduleâ€™s binary image [as well as 50 or more other professional solution packs and ROMs] and use this great little personal computer along with these PPC ROM applications as a perfect replacement for that dumb little Windows calculator:<br />
<a href="http://www.hp41.org/Emulation.cfm">www.hp41.org/Emulation.cfm</a></p>
<p>Oops, where&#8217;s the Java version?</p>
<p>You can get your own copy of the historically significant <em>PPC ROM user&#8217;s manual</em> from here:<br />
<a href="http://www.hp41.org/LibView.cfm?Command=Image&#038;FileID=23037">www.hp41.org/LibView.cfm?Command=Image&#038;FileID=23037</a></p>
<p>Add the PPC ROM code to your new HP emulated calculator from here:<br />
<a href="http://www.hp41.org/LibView.cfm?Command=View&#038;ItemID=20">www.hp41.org/LibView.cfm?Command=View&#038;ItemID=20</a></p>
<p>Here are some other <a href="http://www.hp41.org/LibView.cfm?Command=List&#038;CategoryID=74">ROM code modules </a>that work with your new emulator!</p>
<ul>
<li>Aviation </li>
<li>Circuit Analysis</li>
<li>Clinical Lab and Nuclear Medicine</li>
<li>Financial Decisions  </li>
<li>Games</li>
<li>Home Management</li>
<li>Machine Design  </li>
<li>Math</li>
<li>Navigation </li>
<li>Petroleum Fluids</li>
<li>Real Estate</li>
<li>Securities </li>
<li>Standard Applications</li>
<li>Statistics</li>
<li>Stress Analysis</li>
<li>Structural Analysis</li>
<li>Surveying </li>
<li>Thermal &#038; Transport Science</li>
</ul>
<p>Technorati Tags: <a href="http://technorati.com/tagRon+Fredericks" rel="tag">Ron Fredericks</a>, <a href="http://technorati.com/tagcommunity" rel="tag">community</a>, <a href="http://technorati.com/tagsoftware" rel="tag">software</a>, <a href="http://technorati.com/tagengineering" rel="tag">engineering</a>, <a href="http://technorati.com/tagprojects" rel="tag">projects</a>, <a href="http://technorati.com/tagembedded+device" rel="tag">embedded device</a>, <a href="http://technorati.com/tagrouter" rel="tag">router</a>, <a href="http://technorati.com/tagdigital+recorder" rel="tag">digital recorder</a>, <a href="http://technorati.com/tagHDTV" rel="tag">HDTV</a>, <a href="http://technorati.com/tagindustrial" rel="tag">industrial</a>, <a href="http://technorati.com/taginstrument" rel="tag">instrument</a>, <a href="http://technorati.com/tagcar" rel="tag">car</a>, <a href="http://technorati.com/tagvehicle" rel="tag">vehicle</a>, <a href="http://technorati.com/tagopen-source" rel="tag">open-source</a>, <a href="http://technorati.com/tagJava" rel="tag">Java</a>, <a href="http://technorati.com/tagLinux" rel="tag">Linux</a>, <a href="http://technorati.com/tagMozilla" rel="tag">Mozilla</a>, <a href="http://technorati.com/tagFirefox" rel="tag">Firefox</a>, <a href="http://technorati.com/tagproject+management" rel="tag">project management</a>, <a href="http://technorati.com/tagcommunity+developer" rel="tag">community developer</a>, <a href="http://technorati.com/tagPPC+ROM" rel="tag">PPC ROM</a>, <a href="http://technorati.com/tagPersonal+Programmable+Calculator" rel="tag">Personal Programmable Calculator</a>, <a href="http://technorati.com/tagPersonal+Programmer%26%238217%3Bs+Club" rel="tag">Personal Programmer&#8217;s Club</a>, <a href="http://technorati.com/tagProlific+and+Productive+Computing" rel="tag">Prolific and Productive Computing</a>, <a href="http://technorati.com/tagPPC+Calculator+Journal" rel="tag">PPC Calculator Journal</a>, <a href="http://technorati.com/tagPhilippe+Kahn" rel="tag">Philippe Kahn</a>, <a href="http://technorati.com/tagconstrained+hardware" rel="tag">constrained hardware</a>, <a href="http://technorati.com/tagZENROM" rel="tag">ZENROM</a>, <a href="http://technorati.com/tagHEPAX" rel="tag">HEPAX</a>, <a href="http://technorati.com/tagcomponent" rel="tag">component</a>, <a href="http://technorati.com/tagcommunity+manager" rel="tag">community manager</a>, <a href="http://technorati.com/tagWilliam+Wickes" rel="tag">William Wickes</a>, <a href="http://technorati.com/tagLinus+Torvald" rel="tag">Linus Torvald</a>, <a href="http://technorati.com/tagAsa+Dotzler" rel="tag">Asa Dotzler</a>, <a href="http://technorati.com/tagWarren+Furlow" rel="tag">Warren Furlow</a></p>
<!-- start wp-tags-to-technorati 1.02 -->

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.embeddedcomponents.com/blogs/2007/04/community-software-development-for-embedded-devices/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

