Category Archives: Uncategorized

Tektronix 7A18 versus Soviet Я4C-90

In a previous article, I described briefly the Tektronix 7000 series of oscilloscopes and some that looked awfully similar from the Soviet Union. Having the technical documentation from both, I decided to do a comparison and see what, if anything, the designs owed to each other, bearing in mind that the soviet version appeared at least 7 years after the US one.

I chose the vertical amplifier plugin for comparison. The soviet one is called the Я4C-90, and looking at its specifications (2 channel, about 100MHz bandwidth) it seems very similar to the Tektronix 7A18. Here are the two side by side: my own 7A18 on the left, and a picture of an Я4C-90 from the internet on the right.

7a18-r4c90

They have a lot in common. Where Tek have used rotary switches for the trigger source and display mode, and a slide switch for the channel 2 polarity, the USSR used pushbuttons for those functions. In addition, the Я4C-90 has a 20MHz bandwidth limiting switch, like the (200MHz bandwidth) Tektronix 7A26.

I’ve cut-and-pasted sections from each of their technical documentation in order to be able to compare the designs. Let’s start at the front end: the attenuator.

Attenuator

tek7a18-attenuator

First, Tektronix. They have used x100, x10, x4 and x2 attenuators with switches arranged to bring them in to circuit for the various deflection settings, from 5mV/div to 5V/div.

r4c90-attenuator

Now the USSR. They have used x100, x10, x4 and x2 attenuators with switches arranged…oh, hang on, it’s exactly the same. Even the switch combinations are the same. And whoever drew the diagram had exactly the same idea as the Tektronix drawing office when it came to representing the switching.

Well, let’s move on to the main amplifier.

Amplifier

tek7a18amplifier

Tektronix have used a FET input stage followed by a couple of bipolar differential gain stages, with an emitter follower on the output. And the USSR? Well, the input stage is visible on the right hand side of the attenuator diagram, and it’s practically identical to the Tek one even down to some of the resistor values. They didn’t have Tek’s matched dual FETs so had to make do with two individual ones matched on test. Let’s look at the rest of the stages.

r4c90-amplifier

Oh look! Two differential bipolar gain stages, just like Tek. I can only see two noteworthy differences: the gain control acts after the second stage rather than after the first, and the USSR version doesn’t have the emitter follower on the output.

Next comes the channel switch, which selects between channel 1 and channel 2 to feed to the mainframe.

Channel switch

tek7a18-channelswitch

To get high performance here, Tektronix actually designed and made their own ICs. The channel switch, U270 in the diagram, uses a 155-0022, which appears in all sorts of places in Tek equipment where switching or addition of differential signals is needed. That’s followed by a transistor stage, Q280/Q380, which drives the mainframe. Here’s the soviet equivalent.

r4c90-channelswitch

Fancy that. There’s a special module, MC1, which does the switching. An internal circuit diagram  is also present, which looks suspiciously similar to the rather ambiguous diagram of the Tek 155-0022 chip. The soviet module is actually a 04КН009, which has been extensively reverse engineered by Erik Baigar, see his site here. Interestingly it’s a hybrid module rather than an integrated circuit, though it clearly does the same job.

Interesting here is the frequency compensation network. The Tek design has, between pins 1 and 16 of U270, a couple of RC networks, with one adjustment to get the high-frequency response of the stage right. Conventional enough.

The USSR design has a whole load more stuff in the same position, between pins 1 and 14 of MC1. In addition to three RC time constants with three adjustments (!) there’s a curious arrangement involving a thermistor R4 and a pair of varicap diodes D1 and D2, which seems to do some temperature-sensitive frequency response adjustment. It could be very creative design, but it smacks of desperation to me: the 04КН009 module is probably more sensitive to temperature variations than the Tek chip.

Bandwidth limiting

The final transistor stage before the output isn’t shown on the USSR diagram. It has a separate page to itself. It’s a little more complex than the Tektronix 7A18 because it has the 20MHz bandwidth limiting function. Now, there’s a Tek plugin, the 7A26, which has a 20MHz bandwidth limiting function. Just for fun, let’s look at the circuit diagram of its output stage.

tek7a26-bandwidthswitch

It has an extra pair of transistors and some filter components (C860/L860/L880) connected by a diode switching arrangement. What did the USSR do?

r4c90-bandwidthswitch

Well I never! An extra pair of transistors and some filter components (C34/L1/L2) connected by a diode switching arrangement. Great minds think alike.

There are differences, of course. The ones I’ve noticed are:

  • The Я4C-90 doesn’t have the probe identification ring and ‘Identify’ button that the 7A18 has.
  • The readout is implemented differently in the Я4C-90. It uses a 6-bit digital interface to the mainframe rather than Tektronix’s delightfully eccentric 2-dimensional analogue readout interface.
  • The Я4C-90 appears to use TTL logic to do the channel switching for CHOP and ALT modes, whereas the 7A18 uses a mechanical switch.

The architecture of the Я4C-90 is, barring minor details, identical to the 7A18. It’s close enough for me to say that it’s a straight copy which has been adjusted to suit the soviet semiconductor technology available at that time. If imitation is the sincerest form of flattery, the engineers in the USSR must have been big fans of Tektronix.

Soviet Tektronix 7000-series oscilloscope copies

Back in 1970, Tektronix introduced their ‘7000’ series of oscilloscopes. Their clever plug-in architecture offered unmatched performance and flexibility, and they quickly became an industry standard. They were ubiquitous in well-heeled electronics labs in the 1970s, 1980s and into the 1990s, at least in the US and UK. I’ve still got three examples in regular use because they do things that modern scopes struggle with. You want 10 microvolts/division sensitivity? Grab a 7A22 plugin. Want to see the same signal in the time and frequency domains together? No need to go and buy a shiny new ‘Mixed Signal Oscilloscope’. Just plug in a 7L12 spectrum analyzer. Need a 100MHz differential amplifier that can deal with 500V common-mode? No problem: Use the 7A13 plugin. All this stuff is more than 40 years old but still does a state-of-the-art job.

Behind the iron curtain, things developed at their own pace. In 1977, the Lithuanian ‘555’ factory produced the C1-91, and then the C1-115 and C1-122 ‘universal oscilloscopes’. On the right, here’s a picture I found on the web of a C1-115, together with, on the left, a picture of my own Tektronix 7603 taken a few minutes ago.

7603-c1-115Notice any resemblance? Same panel layout, same arrangement of plugins – even most of the knobs are in the same places. Let’s just say the soviet design seems to have been heavily inspired by the Tektronix one.

The soviet scopes don’t appear to have been as common in the east as the Tektronix ones were in the west, but there are some survivors in private hands. There’s a page describing the range on the TekWiki here, which includes links to some owners’ pages. However, there has been very little technical documentation available, and I’m fascinated by the technology: how much of it was copied, and how much was original?

Whilst looking for something else on allegro.pl recently, I came across a set of manuals for the C1-112 mainframe with Я4C-90 Y amplifiers, Я4C-91 timebase and 2K11 calibration plugin. They include circuit diagrams and other technical information. Bidding wasn’t exactly fierce and I got the lot for 5zł. The nice thing about them is that they’re in German, which is easier for a western audience to understand than Russian or even Lithuanian. Sadly they’re not quite the works of art that the Tektronix manuals are, but these even include the calibration certificates!

I’m very curious about what’s inside. In a future blog post, I hope to compare the Tektronix and soviet designs side-by-side and see what they have in common.

PCI USB 2.0 Adapter Lessons

You get what you pay for. Buy cheap, buy twice. I’ve heard them all before. But a couple of my old-but-useful Linux PCs needed an upgrade to high speed USB recently, and I didn’t want to spend much. A quick search on allegro.pl (the Polish equivalent of eBay) turned up just what I was looking for. USB 2.0 adapter cards to fit the now-retro PCI bus, for just 20 złoty, or a bit less than four quid in old money. “Five USB 2.0 ports”, exclaimed the advert, in Polish. “Four external and one internal”. Perfect – I wanted to connect an internal card reader so the internal port was just the ticket.

The cards arrived this afternoon and I examined them. What do you get for four quid? A generic Chinese box and the card in an anti-static bag. No instructions or other such luxuries.

There’s just one chip on the card: a Via VT6212L. Wanting to know what I’d got, I looked it up. It’s still listed on the legacy section of Via’s website. The specification there, though, shows that it’s a 4-port USB controller. So how had my card got 5 ports?

A close look at the PCB tracks on the card reveals all. The internal USB port is wired in parallel with the topmost external port, so you can’t use both at once. Looking more closely, there’s a footprint for a 10-pin Molex header which would be ideal for my internal card reader, but it’s not fitted. Examining the tracks round the header, it turns out that the two USB ports it provides are connected in parallel with the top two external sockets. If you want to use the header, those two external sockets are no use!

Oh well. I can live with 4 ports, and remove or ignore the ones that won’t work. But there’s another design “feature” that came to light while I was examining how the sockets were wired up.

One of the functions of a USB port is to supply power to the device that’s connected. That’s very useful. Last time I designed anything with USB host ports on it for public use, it was important to make sure that power was monitored and limited so that a misbehaving device or damaged cable can’t affect other devices or, worse, cause overheating. All this is written into the USB specification and there are handy chips available to make it easy to implement. But they cost money.

Examining this board, it became clear that the designers took no such precautions. The 5 volt power comes straight from the PCI bus to the USB connectors without so much as a fuse, or even a decoupling capacitor. Any mishap on a USB connector can therefore receive the full force of the PC’s power supply, which can be tens of amps. Yay! A short circuit will at least crash the PC, or even result in melted cables and scorched PCB tracks.

Time for some modifications.

  • Remove the top two external USB sockets, which are wired in parallel with the internal connector
  • Remove the internal USB connector
  • Fit the Molex connector for easy hookup of my card reader
  • Cut the track carrying 5V power from the PCI bus to the USB sockets and insert a sacrificial zero-ohm resistor to act as a last-ditch fuse
  • Splash out on a few microfarads of decoupling capacitor fitted to the place marked out on the PCB but kindly left free.

Here’s a picture of the results. The board is now in service and working nicely.

Incidentally, I have just retired an old USB1.1 board which shows how it used to be done ‘properly’, in the days when anyone cared about these things.

Note the little 8-pin chip on the left hand side. That’s the one responsible for switching and protecting the power output to the USB sockets. The one fitted is a Micrel M2526, but there’s also space for a Texas TPS2052 which does the same job. Belt and braces!

Super Breakout to JAMMA, Part 1: Power Supply

In a previous post I resurrected an Atari ‘Super Breakout’ PCB from 1978. One of the rules of my collection of arcade game boards is that they should all be playable, if they’re working. To that end I try to construct adapters to make the games all compatible with the JAMMA wiring standard, so I can just plug them in to my gaming setup and enjoy them. Usually it’s just a matter of wiring: most game PCBs after about 1980 use similar power and control signals to the later JAMMA standard, but differently wired, so no electronics are needed. Plug time: the Deluxe Arcade JAMMA fingerboard is really handy for making adapters, and I sell them. They’re great value. Buy lots and give them to all your friends.

Super Breakout isn’t such an easy case, though. About the only things which can be wired directly to a modern arcade setup are the coin contacts and start button. Everything else is unusual, starting with the power supplies.

JAMMA wiring provides +5V for powering the main logic, +12V which is usually used by the audio power amplifier, and -5V which is also used on some boards by the sound generation circuitry. Super Breakout’s power input circuitry looks like this.

super-breakout-power-supply

The circuit appears to expect +10V DC, and a pair of centre-tapped AC supplies, one of 16.5V AC and one of 25V AC. The end result of it all is supplies annoyingly similar to the JAMMA standard: +5V, +12V and -5V, with an extra +20V for the audio power amplifier. I could, of course, just modify the board so that those supplies come straight from the JAMMA wiring, but that would violate another of my rules: no modifications to the original PCBs. Any conversions or adaptations must be done so that the original board, unmodified, can plug into my adapter and thence into a JAMMA connector.

Looking more closely at the circuit diagram, the situation isn’t as bad as it looks. The +10VDC just feeds the input to a regulator which generates the +5V, so it just needs to be a DC voltage large enough to allow the LM323 regulator to do its job. With a regulator this old, this ‘dropout voltage’ is about 3V, so anything from 8V DC upwards should be fine. The lower we can keep this voltage, the less power the regulator will have to dissipate as heat, so the game will run cooler. That’s got to be a good thing.

The 16.5V AC turns out to be used just to power the -5V regulator, so any negative DC voltage greater than about -8V (again allowing for the dropout voltage) will be OK. It doesn’t need to be AC at all. The 25V AC input is simply used to generate the +20V and +12V supplies, so it also doesn’t need to be AC. +20V DC will do fine.

Having figured this lot out, the power supply problem is much less daunting. Converting the +5V and +12V from JAMMA to +8V, +20V and -8V is perfectly manageable.

Various power supply modules are available at low cost from far-eastern suppliers on eBay, including the very popular 150W boost converter module. One of those is just right for converting +5V up to +8V, and a smaller off-the-shelf module can convert +12V up to +20V. Incidentally, though it would seem easier to convert +12V down to +8V, I chose not to do this: the +8V supply to Super Breakout needs to be able to deliver several amps to power all the logic, and the +12V JAMMA supply isn’t rated to handle that sort of load. JAMMA power supplies assume that the lion’s share of the load is on the +5V rail, so that’s where I’ve put it.

Deriving -8V is a bit more tricky. The commonly-available boost converter modules only handle positive voltages, and I can’t play any funny tricks with ground because the +8V and +20V supplies need to share ground with -8V. The answer is a Ćuk converter. A few components hooked on to the switch output of the +20V boost converter can deliver a negative voltage. It’s not regulated, and will depend somewhat on how hard the +20V boost converter is working, but it’s good enough to feed the -5V regulator on the Super Breakout board. Below is a picture of the arrangement. The components inside the dotted pencil outline are on the off-the-shelf boost converter (of the ‘LM2577‘ type commonly available on eBay).

img_20160917_105713

The overall arrangement looks like this, in diagram form:img_20160917_204933

and in real life, it all fits together quite neatly.

img_20160917_205012

The 5V-to-8V boost converter is the large red board at the top. The 12V-to-20V boost converter is the blue board at bottom right, and the components for the Ćuk converter are on the matrix board at bottom left. Note the red wire taking the signal from pin 4 of the LM2577 chip to feed the converter. Game on!

 

 

 

Making BeagleBone Black serial number available to user applications

The BeagleBone Black is a handy little board. It has a 1GHz ARM processor and 4GB of on-board Flash storage, and runs Linux very easily. In particular, the Debian distribution is available ready-made to just copy on to the board from an SD card. I’ve been using them in various embedded applications recently.

IMG_20160812_162532

One of the applications I’m working on at the moment will be deploying BeagleBone Black boards in hundreds of locations, and we have to manage them sensibly. When managing all these boards, it will make our lives much easier to know their identities. Happily, the BeagleBone Black is fitted with an EEPROM which contains various useful information about it, including its serial number and a copy of the barcode stuck to the board.

The EEPROM is accessible via the I2C bus. The bus itself is accessible via /dev/i2c-0 at address 0x50. As standard, Debian Linux is set up so that the group i2c has access to this device. However, the kernel device tree is one step ahead of us. A special at24 driver takes over access to the EEPROM, so any attempt to access it directly via /dev/i2c-0 just gets denied with ‘Device or resource busy’. The contents of the EEPROM are available, however, in sysfs under /sys/bus/i2c/0-0050/eeprom.

There is also a bone-capemgr driver which presents some of the EEPROM contents in a more convenient way, as a series of files elsewhere in sysfs, under /sys/devices/bone_capemgr.9/baseboard/

This is all very handy, but all the files in sysfs are only readable by root. That’s not helpful for my applications. I don’t want to be running things as root if I can possibly help it. I wanted to find a reasonably legitimate way to make the relevant sysfs files available to a group of users. We can’t just change the permissions on those files because sysfs is created dynamically, so any changes would be lost after a reboot.

The obvious way to do this would be via a udev rule so that the permissions are set up when the relevant devices are found. However, udev rules don’t seem to have a direct way to change the permissions and ownership of files in sysfs. After some experimentation I came up with a couple of rules which did what I wanted. They match on the narrowest set of keys I could work out, and run chmod and chown to set the permissions the way I’d like them:

DRIVER=="bone-capemgr", RUN+="/bin/chown root:i2c /sys$env{DEVPATH}/baseboard/serial-number"
SUBSYSTEM=="i2c", DEVPATH=="*0-0050", RUN+="/bin/chown root:i2c /sys$env{DEVPATH}/eeprom", RUN+="/bin/chmod 0640 /sys$env{DEVPATH}/eeprom"

Put those lines in a suitable rules file. I used /etc/udev/rules.d/30-bone-capemgr.rules. Then, running

udevadm trigger

Should trigger the rules and set the permissions. Because sysfs is recreated at boot time when the various devices are found and added, the rules will trigger each time and leave the permissions the way we want them.

The board serial number is to be found in bytes 16-28 of the EEPROM, and the barcode is in bytes 80-103. The hexdump utility is handy for extracting the data. For example,

hexdump -e '8/1 "%c"' /sys/bus/i2c/devices/0-0050/eeprom -s 80 -n 23

should show the barcode. Wrap that up in a script and we have a programmatic way of finding the board’s identity.

Super Breakout Saga

In the beginning, or at least in 1972, there was Pong. It was one of the first video games to become widely popular, and made Atari’s name in the games industry. It wouldn’t be overstating the case to call it seminal, even though the game itself involved only bouncing a ball between two bats. Four years later, Pong begat Breakout, which extended the bat-and-ball mechanics of Pong to knocking bricks out of a wall. Then came Super Breakout, a similar game, but more complex, with three different modes of play and even multiple bats and balls. Adding the new features needed a new, powerful ingredient: Super Breakout was one of the earliest arcade games to feature a microprocessor. This was in 1977, before Space Invaders, before Pac-Man, before Donkey Kong.

super-breakout-cabinet

I picked up this PCB several years ago on eBay. The price was keen because, of course, it was ‘untested’. We all know what that means. Broken. That’s the way I like them. It’s hard to get to know a game board that’s in perfect working order.

IMG_20160807_180709

IMG_20160807_180717

Getting this one running was more than the usual challenge. From about 1980 onwards, a few conventions about how arcade games were built and wired got established. This game pre-dates those, so the usual rules don’t apply. Power? Instead of 5V and 12V DC supplies, it wants 10V and 22V AC, centre-tapped. Video? Instead of the usual colour RGB with separate sync, it delivers black-and-white composite video, and expects a screen with strips of coloured film stuck to it. Controls? No joystick here. Not even a trackball. Just an analogue potentiometer to control the paddle, and various flashing lights and switches.

My aim with every arcade game I acquire is to adapt it to the JAMMA standard, so it’s easy to plug it in and play it. This one was going need more than just a bit of wiring.

The first job was to get the board running. I rigged up temporary power supplies and a black-and-white monitor which could handle its video output.

The most serious fault was faulty RAM chips. Super Breakout has eight RAM chips of a whole one kilobit each, totalling a spectacular 1 Kbyte of RAM. Six of them were faulty. Fortunately a kind member of the most excellent UKVAC forum had some available. Identifying the faults was made easier by the board’s test mode, which makes beep-boop-boop noises to indicate which chips it thinks are faulty.

IMG_20160807_180733

The sockets holding the program ROMs and the processor were all rubbish and had to be replaced with modern ones. Cleaning them never worked reliably. This particular version of the game uses 12 ROM chips, each holding 4 kilobits. That’s a generous 6 Kbyte of program code, but it’s also 216 pins in sockets to go wrong.

IMG_20160807_180742

There was one faulty logic gate ( a 7420) associated with the ‘game select’ and ‘serve’ switches, and the DIP switches for choosing the game options needed a squirt of DeoxIT switch cleaner. Success!

IMG_20160807_220827

With those problems attended to the board passed all its self tests and seemed to run quite happily. Now to design that JAMMA adapter.

Tektronix 549 Storage Oscilloscope, Restored

A couple of years ago, I restored this exquisite brute of an oscilloscope to working order. You can read the story starting with part 1. I never posted any pictures of the finished article, so here they are.

You can read more about the machinery at the TekWiki.

549_34a

549_front_off

549_34c

549_34b

549_rear

1a4

manuals

Switched on and working, with all four traces showing.

549_front_light

549_front_dark

I made a short movie of the storage functions working.