Author Topic: Enable FFT function on TDS210/TDS220/TDS224  (Read 1628 times)

0 Members and 2 Guests are viewing this topic.

Offline sd_tonyTopic starter

  • Contributor
  • Posts: 19
  • Country: us
Enable FFT function on TDS210/TDS220/TDS224
« on: October 03, 2023, 02:32:21 am »
Tektronix TDS210/220/224 are entry level digital oscilloscope, it needs a TDS2MM measurement extension module to support some additional measurements functions such as FFT, pulse rising/falling time, and pulse positive and negative width etc. TDS2MM module is not easy to find, it can be reworked from TDS2CM which is still expensive these days. I managed to reverse engineered a TDS2MM module and created an equivalent module which can enable these additional  measurement functions, however, it doesn’t come with any communication function (GPIB/UART/Parallel).

Schematic is attached, this module consists of a Flash, a SRAM, a PLD, two 8-bit bus transceiver, and a 50-pin connector. The PLD is the key of this module, it has three functions: address decoder, bus transceiver direction control, and GPIB/UART emulator. The original TDS2MM module has a GPIB controller and a UART transceiver, the scope will check the status of these two transceivers during boot, if any of them was not detected correctly, the module will be considered as not installed.

the picture of this module is as below, it can be inserted into a blank module cover, a TDS2CM module cover, or you can insert it into the scope extension slot directly if you don't have the cover, it just works fine.

The parts list are as below, if you want to use different part, be careful about the timing, especially the PLD, the image is for that specific part, it may not work for other PLDs. For RLASH and SRAM, the latency should be < 70ns:

FLASH: SST39SF040-55-4C-NHE-T
SRAM: IS62C1024AL-35QLI
PLD: ATF16V8BQL-15JU
Bus Transceiver: SN74AHCT245DW
50-pin connector: A3-50DA-2DS(71)

If you have a TDS210/220/224 scope and don’t have TDS2MM module yet, you can create one with all the files I have shared, it’s going to be a fun project, enjoy!
« Last Edit: October 03, 2023, 02:53:25 am by sd_tony »
 
The following users thanked this post: tv84, YU7C, TERRA Operative, derree, Zoli, Jams_engineer

Offline sd_tonyTopic starter

  • Contributor
  • Posts: 19
  • Country: us
Re: Enable FFT function on TDS210/TDS220/TDS224
« Reply #1 on: October 03, 2023, 02:40:49 am »
The TDS2MM module firmware and PLD image are attached, you can program FLASH and PLD with any compatible programmer. To make the DIY process easier, two PLCC sockets are installed on the module, so you can insert the FLASH and PLD into socket after programing.
« Last Edit: October 03, 2023, 02:50:27 am by sd_tony »
 
The following users thanked this post: YU7C, TERRA Operative, Jams_engineer

Offline virtuallyjeffers

  • Newbie
  • Posts: 1
  • Country: us
Re: Enable FFT function on TDS210/TDS220/TDS224
« Reply #2 on: December 18, 2023, 03:02:47 am »
Hi Tony - Thank you for sharing this!

Can you please specify the size of the interface board?  I'm embarassed to say that I earned a couple of degrees in EE 30 yrs ago, but have only recently began getting back into it as a hobby, I couldn't afford any of the equipment then.  I recently purchased a TDS220 from Ebay and fixed the SMPS board to get my feet wet again, which brought the scope back to life.  I've been looking at different scopes for FFT when I ran across your post and realized I have 1/2 of my problem solved.  I've looked at PCB ordering sites, and KiCad, but I'm still trying to figure all of these things out.

If you could offer any help, I would really appreciate it sir.
 

Offline zrq

  • Frequent Contributor
  • **
  • Posts: 278
  • Country: 00
Re: Enable FFT function on TDS210/TDS220/TDS224
« Reply #3 on: December 18, 2023, 04:22:38 pm »
Beautiful job.
However to me it seems a firmware patch would do the job easier.
 

Offline Jams_engineer

  • Newbie
  • Posts: 1
  • Country: es
Re: Enable FFT function on TDS210/TDS220/TDS224
« Reply #4 on: December 26, 2023, 11:23:45 am »
Dear Tony,

Just a quick note to say a massive thanks for your Tektronix TDS2MM project. Your reverse engineering work is fantastic, and it's a game-changer for folks like me with a TDS210 for more than 20 years. The files you shared and your dedication are a treasure trove!

Quick question: Any chance we can add USB-UART functionality easily? Would love to use it with the TDSCS2 OpenChoice software. Let me know your thoughts!

Thanks a bunch,
Jams
 

Offline j_221

  • Newbie
  • Posts: 1
  • Country: us
Re: Enable FFT function on TDS210/TDS220/TDS224
« Reply #5 on: February 22, 2024, 02:56:41 am »
Mild necroposting, but... WOW :)
Thank you, Tony!
 

Offline sd_tonyTopic starter

  • Contributor
  • Posts: 19
  • Country: us
Re: Enable FFT function on TDS210/TDS220/TDS224
« Reply #6 on: March 12, 2024, 05:03:11 am »
Thank you guys for your warmed feedback, I'm attaching the gerber file for the PCB, you should be able to send it to any PCB house for fabrication, if you want it to fit to your existing cover, the PCB thickness should be about 1.6mm.
 
The following users thanked this post: rh100605, TERRA Operative

Offline thomasx

  • Contributor
  • Posts: 30
  • Country: se
Re: Enable FFT function on TDS210/TDS220/TDS224
« Reply #7 on: April 05, 2024, 12:01:55 am »
Tektronix TDS210/220/224 are entry level digital oscilloscope, it needs a TDS2MM measurement extension module to support some additional measurements functions such as FFT, pulse rising/falling time, and pulse positive and negative width etc. TDS2MM module is not easy to find, it can be reworked from TDS2CM which is still expensive these days. I managed to reverse engineered a TDS2MM module and created an equivalent module which can enable these additional  measurement functions, however, it doesn’t come with any communication function (GPIB/UART/Parallel).

This is really amazing work you have done!  :-+

I already have a TDS2CM module in my scope, do you know if it would be possible to upgrade this to a TDS2MM module with the help of your work?
 

Offline thomasx

  • Contributor
  • Posts: 30
  • Country: se
Re: Enable FFT function on TDS210/TDS220/TDS224
« Reply #8 on: April 05, 2024, 12:06:09 am »
Dear Tony,

Just a quick note to say a massive thanks for your Tektronix TDS2MM project. Your reverse engineering work is fantastic, and it's a game-changer for folks like me with a TDS210 for more than 20 years. The files you shared and your dedication are a treasure trove!

Quick question: Any chance we can add USB-UART functionality easily? Would love to use it with the TDSCS2 OpenChoice software. Let me know your thoughts!

Thanks a bunch,
Jams

I tried the OpenChoice software the other day, but it was impossible to get it to work with my TDS210. It gets a connection to the scope sporadically, but I never managed to get anything but the ID and at one occasion it managed to read out the settings from the scope, but never a screen capture or waveform download.

Hardcopy to printer or terminal program works fine though, but not OpenChoice.

Do you have any tricks to get it working, or are you running it on an old version of windows? I tried it on Win11.
 

Offline rh100605

  • Regular Contributor
  • *
  • Posts: 56
  • Country: gb
Re: Enable FFT function on TDS210/TDS220/TDS224
« Reply #9 on: April 23, 2024, 09:18:52 am »
Having seen the schematic for this board I was interested in how a small PLD decoded the UART and IEE488 chip selects to fool the scope into thinking they were present.

So I downloaded the OPAL suite of programs that includes a 16bit DOS program (JED2EQN) to reverse the .JED files to the original .PLD file that is compiled by WINCUPL (from the Atmel/Microchip site). I used a 16bit pc emulator (DOSBOX) to run the programs under Windows 10 and shortened file names to the old DOS 8.3 format.

JED2EQN outputs in ABEL format not CUPL. You must insert all the semicolons and latched statements. The Atmel site has a document describing the conversion.
 
The PLD file below has the same checksum as the one supplied by SD_tony when compiled by WINCUPL. The comments refer to the schematic .

/* JED2EQN -- JEDEC file to Boolean Equations disassembler (Version V002)
; Copyright (R) National Semiconductor Corporation 1990,1991
; Disassembled from TDSMM.JED. Date: 3-10-124
*/
Name     Name ;
PartNo   00 ;
Date     11/03/2024 ;
Revision 01 ;
Designer Engineer ;
Company  m ;
Assembly None ;
Location  ;
Device   g16v8 ; /*Library DLIB-h-40-11 ;*/

/* *************** INPUT PINS *********************/
/*PIN   1  =   CLK       ;*/ /* externally connected to IO5 */
PIN   2  =   i2          ; /*     D3                       */
PIN   3  =   i3          ; /*     A17                      */
PIN   4  =   i4          ; /*     Rd/not Write         */
PIN   5  =   i5          ; /*     A18                      */
PIN   6  =   i6          ; /*     A19                      */
PIN   7  =   i7          ; /*     A20                      */
PIN   8  =   i8          ; /*     not LDS                  */
PIN   9  =   i9          ; /*     not MS                   */

/* *************** OUTPUT PINS *********************/
/* PIN   20 =   VCC          ; */    /*    */
PIN   19 =   o19         ; /*     Not RAM                     */
PIN   18 =   o18         ; /*     Not ROM                     */
PIN   17 =   o17         ; /*     IO3                         */
PIN   16 =   o16         ; /*     IO4                         */
PIN   15 =   o15         ; /*     IO5                         */
PIN   14 =   o14         ; /*     IO6                         */
PIN   13 =   rf13        ; /*     Not connected               */
PIN   12 =   o12         ; /*     IO8                         */
PIN   11 =   !OE         ; /*     GND                         */

/*CLK i2 i3 i4 i5 i6 i7 i8 i9 GND
/OE o12 rf13 o14 o15 o16 o17 o18 o19 VCC
*/
/*
@ues 3030200000000000
*/
  /*equations */

! o19 = !i3 & !i5 & !i6 & i7 & !i8 & !i9 ;
o19.oe = 'b' 1 ;

! o18 = !i7 & !i8  & !i9 ;
o18.oe = 'b' 1 ;

o17 = i3 & i4 & i5 & !i6 & i7 & !i8 & rf13 & !i9 ;
o17.oe = 'b' 1 ;

! o16 = i4 & i5 & !i6 & i7 & !i8 & !i9
    # i3 & i4 & !i5 & i6 & i7 & !i8 & !i9 ;
o16.oe = 'b' 1;

o15 = i3 & !i4 & i5 & !i6 & i7 & !i8 & !i9;
o15.oe = 'b' 1 ;

o14 = i3 & i4 & i5 & !i6 & i7 & !i8 & !rf13 & !i9
    # !i3 & i4 & i5 & !i6 & i7 & !i8 & !i9 ;
o14.oe = 'b' 1 ;

rf13.d = i2 ;   /* !registered output */
/* rf13.oe = 'b' 1 ; */
o12 = i4 & i9 ;
o12.oe = 'b' 1 ;
/* *   checksum of original C4AA3     */

« Last Edit: Yesterday at 06:23:36 pm by rh100605 »
 
The following users thanked this post: oPossum


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf