Terletak di atas pesawat ruang angkasa Apollo,
komputer kendali (Apollo Guidance Computer, AGC) membantu kapal mencapai bulan dan mendarat di permukaannya. Perangkat lunak AGC secara fisik dijalin menjadi memori
inti memori read-only [core rope memory]. Ken Shirrif dan orang-orang yang berpikiran sama sedang membangun kembali AGC (gambar di bawah), yang tidak memiliki cukup memori pada inti, bukannya kotak simulator dari memori semacam itu yang dipasang. Kotak-kotak ini digunakan selama pengembangan program dan pengujian di lapangan, sehingga para insinyur tidak harus selalu mem-flash memori. Simulator tidak memiliki dokumentasi, jadi saya [penulis entri blog / kira-kira. transl.] melakukan analisis rekayasa, memasang antarmuka, dan menggunakan simulator kami meluncurkan program di AGC kami. Namun, dalam prosesnya kami menemui beberapa kesulitan.
Komputer AGC dengan penutup dilepas. Anda dapat melihat motherboard dengan banyak kabel. Di tempat untuk memori, kotak simulasi terlihat. Kartu antarmuka di latar depan modern.Memori pada beberapa inti yang dijahit
AGC memiliki enam modul memori pada beberapa inti yang dijahit, yang masing-masing hanya menyimpan 6 kiloslovol informasi (sekitar 12 Kb). Modul memori agak mirip dengan kartrid ROM untuk gim video, dan mereka menyimpan perangkat lunak dalam bentuk yang konstan namun dapat dihapus. Program direkam dengan menenun kabel melalui inti magnetik. Kawat yang melewati inti dilambangkan bit 1, dan yang melintas dilambangkan bit 0. Dengan menenun 192 kabel melalui atau di sekitar inti, dimungkinkan untuk menyimpan 192 bit, yang memberikan kepadatan jauh lebih tinggi daripada memori yang dapat ditulis ulang pada inti magnetik, yang menyimpan satu bit per inti.
Memori pada beberapa inti yang dijahit (Blok I) dengan AGCMembuat memori seperti itu adalah proses yang melelahkan yang memakan waktu 8 minggu dan biaya $ 15.000 per modul. Wanita yang berpengalaman melewati kabel secara manual, berkedip inti satu demi satu dengan jarum berlubang di mana kawat dijalin (gambar di bawah). Mereka dibantu oleh sistem otomatis yang membaca program dari selotip dan menempatkan lubang di atas susunan inti. Penenun melewati jarum melalui lubang, memimpin kawat jika perlu. Setelah itu, memori dipasang pada modul bersama dengan ratusan resistor dan dioda, dan diisi dengan epoksi untuk keandalan dalam penerbangan.
Seorang wanita menampilkan memori permanen, memperkenalkan sebuah program ke dalamnyaSimulator memori pada inti yang berulang kali dijahit
Proses mem-flash memori membutuhkan banyak waktu dan uang, jadi diperlukan alternatif selama pengujian dan pengembangan. Alih-alih inti dijahit, NASA menggunakan simulator mereka, memungkinkan AGC untuk mengunduh data dari sistem eksternal. AGC kami digunakan untuk pengujian di tanah, jadi core tidak dijahit, tetapi memiliki simulator mereka. Terdiri dari dua kotak yang terhubung ke konektor untuk inti yang dijahit, dan masing-masing kotak menempati tiga slot memori. Mereka dapat dilihat di sisi kiri AGC pada foto di bawah, dan mereka memiliki konektor militer bulat untuk menghubungkan ke komputer eksternal.
Kotak simulator dipasang di sisi kiri AGC bukan modul memori nyata.Meskipun kami memiliki dokumentasi terperinci untuk AGC, saya tidak dapat menemukan dokumentasi untuk simulator. Saya harus menerapkan analisis teknik, mengikuti semua skema dan menyadari apa yang dilakukan kotak. Studi eksternal mereka memberi sedikit. Di satu sisi setiap kotak ada konektor MIL-Spec untuk menghubungkan ke sistem eksternal. Di sisi lain, ada tiga kelompok 96 pin yang terhubung ke AGC. Setiap grup kontak menggantikan satu modul memori pada core.

Membuka kotak menunjukkan teknik perakitan non-standar. Sebagian dalam kontur, metode yang digunakan secara struktural mirip dengan
kayu cord - komponen
dipasang secara vertikal dengan lubang di blok logam. Di kedua sisi unit, kontak disolder ke kabel. Sirkuit lain dalam kotak menggunakan sirkuit terintegrasi standar (TTL 7400). Tetapi tidak seperti papan sirkuit cetak modern, chip dipasang di dalam modul plastik yang disebut "dipstik" [
Dipstik, ind. - probe ] dan terluka bersama dengan kabel.

Tata letak Cordwood
Tata letak "cordwood" secara aktif digunakan dalam AGC untuk membuat sirkuit analog, dan juga ada dalam simulator memori (lihat foto di bawah). Lingkaran putih di tengah adalah ujung resistor dan dioda yang dipasang secara vertikal dalam modul dan dengan kontak yang disolder di kedua sisi. Komponen-komponennya dikemas dengan ketat, seperti log, itulah sebabnya tata letak ini disebut cordwood. Transformer pulsa terletak di bawah lingkaran abu-abu besar. Ada yang sama di sisi lain modul, dan kabel oranye, kuning, merah dan coklat mereka keluar dari lubang. Kabel hitam menghubungkan sirkuit cordwood ke logika digital. Di bagian atas foto Anda dapat melihat pasak di mana dioda dan resistor dipasang, bersama dengan koneksi dengan kontak yang terhubung ke AGC.

Tujuan utama dari tata letak kabel adalah untuk menyediakan isolasi listrik antara sirkuit AGC dan kotak simulator memori. Di sirkuit modern, optoisolator melakukan fungsi ini, tetapi simulator menggunakan transformator pulsa kecil sebagai gantinya. Karena setiap kotak menerima sinyal yang dirancang untuk tiga modul memori yang berbeda, banyak dioda menggabungkan tiga sinyal menjadi satu. Resistor mengontrol arus yang melewati trafo pulsa.
Memahami struktur sirkuit analog cordwood itu sulit. Pertama, komponen tidak terlihat, karena mereka terintegrasi ke dalam modul. Saya harus menggunakan multimeter untuk memahami di mana mereka berada. Kedua, karena kontak muncul di kedua sisi dalam tata letak hutan, saya menghabiskan banyak waktu membalik kotak untuk mencari kontak yang tepat. Akhirnya, saya tidak dapat menemukan cara yang mudah untuk menggambar diagram tata letak dari sebuah cordwood yang tidak menghasilkan labirin garis.
Logika digital dan dipstick
Dipstik adalah plug-in yang diperkenalkan pada tahun 1968 untuk memfasilitasi prototyping dari sirkuit terintegrasi. Dia mengganti papan sirkuit cetak dengan sistem pengemasan kepadatan ganda.
Idenya ada di blok plastik konektor dengan koneksi kontak bungkus dari bawah untuk menghubungkan rangkaian. Sirkuit terintegrasi dipasang pada penahan yang dimasukkan ke dalam blok konektor. Dudukan di atas memiliki telinga mematri untuk memasang komponen tambahan, seperti kapasitor decoupling. Foto di bawah ini menunjukkan modul dipstick dengan satu dudukan ditarik keluar. Setiap pemegang memiliki 5 IP. Kontak IC ditempatkan antara kontak pemegang dan kontak dari blok konektor. Gagasan ini tampak bagus, tetapi pada akhirnya itu tidak dapat diandalkan. Deepstick adalah proyek gagal.

Foto di bawah ini menunjukkan kontak yang terhubung dengan bantuan pembungkus kawat dari bagian bawah dipsticks. Sangat sulit bagi saya untuk melacak mereka, tidak mungkin untuk pergi melalui setiap posting di lautan kabel biru yang identik. Saya harus menelepon semuanya dengan multimeter. Kemudian saya bisa menggambar diagram skematik dan memikirkan apa fungsinya. Secara total, sekitar 50 IC digunakan dalam simulator.

Dilihat oleh pelabelan komponen, kotak simulator dirakit pada tahun 1971. Dan meskipun hanya beberapa tahun berlalu sejak desain AGC, teknologi dalam simulator sudah terlihat lebih maju, yang menggambarkan kemajuan pesat IP dari pertengahan 1960-an hingga awal 1970-an. AGC dirakit berdasarkan sirkuit terpadu sederhana, yang masing-masing berisi dua gerbang NOR dan primitif resistor-transistor logic (RTL) terintegrasi. Dalam kotak simulator sudah ada lebih dari 7400 seri chip yang mengandung lebih dari sepuluh elemen pada transistor-transistor logic (TTL). Tidak seperti IC datar usang di AGC, kotak simulator menggunakan chip dalam paket DIP (paket dual-line), dan kasing semacam itu masih digunakan.
Hasil Analisis Teknik
Setelah melacak semua kontur, saya menyadari cara kerja simulator, dan menggambar
diagram . Bahkan, satu kotak menerjemahkan alamat dari mana akses diakses, dan yang kedua mengirimkan data yang diperlukan ke AGC (saya akan menyebutnya "kotak alamat" dan "kotak data").
Kotak alamat menerima sinyal dan mengubahnya menjadi biner. Tugas ini tidak sederhana, karena sinyal datang dalam bentuk pulsa arus tinggi dan tegangan 14 V, yang dirancang untuk beralih core. Juga, pulsa-pulsa ini dipisahkan dalam waktu, karena beberapa beralih inti dalam satu arah, sementara yang lain beralih kembali. Akhirnya, pulsa yang dikirim ke inti tidak hanya berisi alamat, tetapi juga sinyal untuk memilih salah satu dari 6 modul, dan untuk memilih salah satu dari 12 utas dalam modul.
Kotak alamat menggunakan pengonversi pulsa, mengubah pulsa 14 V menjadi sinyal TTL. Ini berisi banyak logika AND-OR untuk mengkonversi sinyal ke alamat biner (dan ini bukan sepele, karena setiap modul berisi 6 kiloslovol, ini bukan kekuatan dua, sehingga diperlukan banyak manipulasi bitwise). Sandal jepit memblokir alamat saat ada yang tersedia. Akhirnya, rangkaian RC dari multivibrator mengontrol waktu, menentukan, berdasarkan berbagai sinyal, ketersediaan alamat, dan kapan mengirim hasil ke AGC.
Kotak data lebih sederhana. Ini menerima 16 bit data dari sistem eksternal dan mengirimkan sinyal ke AGC amplifier, mensimulasikan sinyal millivolt dari inti. Sinyal-sinyal ini dihasilkan oleh konverter pulsa. Kotak alamat dan kotak data berkomunikasi melalui kabel AGC backplane.
Kotak berkomunikasi dengan sistem eksternal menggunakan sinyal diferensial untuk menghilangkan kebisingan dari kabel panjang. Kotak-kotak berisi 5 V regulator LM109 yang memasok TTL. Satu kotak menerima DC yang tidak diatur melalui konektor eksternal dan mengirimkan DC yang tidak diatur ke yang lain melalui AGC backplane (yang, bagi saya, agak aneh).

BeagleBone sebagai antarmuka
Setelah berurusan dengan pekerjaan simulator, maka perlu untuk membuat antarmuka yang mampu mengirimkan data dari program ke simulator. Saya menggunakan
BeagleBone , komputer papan tunggal kecil berbasis Linux. Keuntungan BeagleBone adalah memiliki mikrokontroler cepat yang dapat merespons secara real time permintaan memori dari AGC.
Antarmuka adalah papan terjebak di BeagleBone. Masing-masing dari dua kabel menuju ke kotak simulator.Saya merancang papan antarmuka untuk menghubungkan ke BeagleBone. Ini cukup sederhana: penerima linear diferensial
AM26C32 yang mengubah sinyal diferensial simulator menjadi sinyal logika 3,3 V untuk BeagleBone, dan driver linear diferensial
AM26C31 untuk mengirim sinyal ke simulator. Saya mendesain papan di KiCad dan memesan produksi dari
PCBWay , sponsor pemulihan AGC.
Saya menulis sebuah program yang berjalan pada mikrokontroler BeagleBone, PRU. Ini, pada dasarnya, mesin negara, menunggu alamat dari kotak simulator, menunggu sinyal waktu, membaca kata dari BeagleBone RAM, dan mengirim kata ke simulator. Saya memposting program di
Github .
Masalah simulator
Simulator memori pada inti yang dijahit berulang kali tidak dipasang sesuai dengan standar komputer kendali Apollo, dan sebagai hasilnya, saya harus mengambil waktu lama untuk men-debug mereka. Banyak koneksi terputus, mereka harus disolder ulang lagi (saya tidak tahu apakah mereka putus dari waktu ke waktu, atau ketika saya memahami skema kerja). Kami juga menemukan hubungan pendek dalam satu dipstick dan IC yang rusak.

Sebagian besar dari semua masalah adalah dengan dipsticks, karena banyak kontak diselingi antara dipsticks dan IP. Masalahnya adalah bahwa kontak IC terletak dalam cara sandwich antara kontak pada pemegang dipstick dan blok tempat mereka dimasukkan. Plastik dipsticks membungkuk ke luar, itulah sebabnya kontak secara berkala tidak berfungsi. Setelah menekuk kaki IP dalam bentuk huruf S, Mark berhasil memberi mereka kontak dari kedua sisi, setidaknya untuk sementara waktu. Tetapi setelah beberapa jam, kaki lunak IC membungkuk ke belakang, kontak mulai bekerja dengan buruk lagi, jadi kami tidak memiliki solusi jangka panjang untuk masalah ini.
Masalah yang paling menarik adalah
perlombaan dua sinyal dari AGC, yang seharusnya berhenti secara bersamaan. Mereka mengumpankan kedua ujung lilitan konverter pulsa, yang seharusnya tidak memberikan sinyal. Namun, satu sinyal tertinggal di belakang yang lain, yang menyebabkan munculnya dorongan palsu. Sayangnya, logika digital dalam kotak simulator tidak sinkron, dorongan ini memblokir sedikit alamat yang salah di sandal jepit, dan sebagai hasilnya, akses ke tempat yang salah dalam memori terjadi. Akibatnya, kami melacak masalah ini dan memasang kapasitor tambahan yang memfilter pulsa. Sayangnya, kami mengambil kapasitor terlalu besar dan sinyal dalam kasus lain terlalu banyak tertunda, yang menyebabkan munculnya kesalahan lainnya. Kemudian kami menempatkan kapasitor yang lebih kecil, dan akhirnya berhasil menjalankan program pada AGC menggunakan simulator memori inti vintage.
Kesimpulan
Komputer kontrol on-board Apollo menggunakan memori pada beberapa inti yang dijahit. Karena tidak praktis untuk terus-menerus membuat kembali memori seperti itu selama pengembangan, simulator digunakan sebagai gantinya. Saya melakukan analisis rekayasa simulator dan membuat antarmuka untuk operasinya menggunakan BeagleBone. Kami telah berhasil meluncurkan program AGC melalui antarmuka ini. Namun, simulator memori ternyata bermasalah dan tidak dapat diandalkan.
@CuriousMarc membuat video yang merinci pekerjaan kami dengan simulator memori: