The Evolution of CCD Clock Sequencers at MIT: Looking to the Future through History



Similar documents
Chapter 2 Logic Gates and Introduction to Computer Architecture

Design of a High Speed Communications Link Using Field Programmable Gate Arrays

Test Driven Development of Embedded Systems Using Existing Software Test Infrastructure

Solutions for Increasing the Number of PC Parallel Port Control and Selecting Lines

Open Flow Controller and Switch Datasheet

Best Practises for LabVIEW FPGA Design Flow. uk.ni.com ireland.ni.com

Agenda. Michele Taliercio, Il circuito Integrato, Novembre 2001

Lecture N -1- PHYS Microcontrollers

MICROPROCESSOR AND MICROCOMPUTER BASICS

EE 42/100 Lecture 24: Latches and Flip Flops. Rev B 4/21/2010 (2:04 PM) Prof. Ali M. Niknejad

COMPUTER HARDWARE. Input- Output and Communication Memory Systems

MICROPROCESSOR. Exclusive for IACE Students iacehyd.blogspot.in Ph: /422 Page 1

Flip-Flops, Registers, Counters, and a Simple Processor

Technical Note. Micron NAND Flash Controller via Xilinx Spartan -3 FPGA. Overview. TN-29-06: NAND Flash Controller on Spartan-3 Overview

================================================================

DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING Question Bank Subject Name: EC Microprocessor & Microcontroller Year/Sem : II/IV

Digital Systems Based on Principles and Applications of Electrical Engineering/Rizzoni (McGraw Hill

Experiment # 9. Clock generator circuits & Counters. Eng. Waleed Y. Mousa

AC : A PROCESSOR DESIGN PROJECT FOR A FIRST COURSE IN COMPUTER ORGANIZATION

Introduction to Programmable Logic Devices. John Coughlan RAL Technology Department Detector & Electronics Division

Attaining EDF Task Scheduling with O(1) Time Complexity

Controlling a Dot Matrix LED Display with a Microcontroller

NIOS II Based Embedded Web Server Development for Networking Applications

International Journal of Advancements in Research & Technology, Volume 2, Issue3, March ISSN

Computer Organization & Architecture Lecture #19

Counters and Decoders

Learning Outcomes. Simple CPU Operation and Buses. Composition of a CPU. A simple CPU design

Hardware and Software

Fondamenti su strumenti di sviluppo per microcontrollori PIC

Gray Code Generator and Decoder by Carsten Kristiansen Napier University. November 2004

Using Altera MAX Series as Microcontroller I/O Expanders

PowerPC Microprocessor Clock Modes

Developing an Application on Core8051s IP-Based Embedded Processor System Using Firmware Catalog Drivers. User s Guide

SECTION C [short essay] [Not to exceed 120 words, Answer any SIX questions. Each question carries FOUR marks] 6 x 4=24 marks

ETEC 2301 Programmable Logic Devices. Chapter 10 Counters. Shawnee State University Department of Industrial and Engineering Technologies

INTRODUCTION TO DIGITAL SYSTEMS. IMPLEMENTATION: MODULES (ICs) AND NETWORKS IMPLEMENTATION OF ALGORITHMS IN HARDWARE

Memory Systems. Static Random Access Memory (SRAM) Cell

Lecture 8: Synchronous Digital Systems

University of St. Thomas ENGR Digital Design 4 Credit Course Monday, Wednesday, Friday from 1:35 p.m. to 2:40 p.m. Lecture: Room OWS LL54

The components. E3: Digital electronics. Goals:

8051 MICROCONTROLLER COURSE

AC : PRACTICAL DESIGN PROJECTS UTILIZING COMPLEX PROGRAMMABLE LOGIC DEVICES (CPLD)

Microtronics technologies Mobile:

Systolic Computing. Fundamentals

FPGA. AT6000 FPGAs. Application Note AT6000 FPGAs. 3x3 Convolver with Run-Time Reconfigurable Vector Multiplier in Atmel AT6000 FPGAs.

路 論 Chapter 15 System-Level Physical Design

Accurate Measurement of the Mains Electricity Frequency

Chapter 2: OS Overview

Block 3 Size 0 KB 0 KB 16KB 32KB. Start Address N/A N/A F4000H F0000H. Start Address FA000H F8000H F8000H F8000H. Block 2 Size 8KB 16KB 16KB 16KB

Architectures and Platforms

Chapter 1 Computer System Overview

what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored?

Design Example: Counters. Design Example: Counters. 3-Bit Binary Counter. 3-Bit Binary Counter. Other useful counters:

Sequential Logic. (Materials taken from: Principles of Computer Hardware by Alan Clements )

Microprocessor & Assembly Language

ENGI E1112 Departmental Project Report: Computer Science/Computer Engineering

THREE YEAR DEGREE (HONS.) COURSE BACHELOR OF COMPUTER APPLICATION (BCA) First Year Paper I Computer Fundamentals

RAPID PROTOTYPING OF DIGITAL SYSTEMS Second Edition

Computer System: User s View. Computer System Components: High Level View. Input. Output. Computer. Computer System: Motherboard Level

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Lesson 7: SYSTEM-ON. SoC) AND USE OF VLSI CIRCUIT DESIGN TECHNOLOGY. Chapter-1L07: "Embedded Systems - ", Raj Kamal, Publs.: McGraw-Hill Education

To design digital counter circuits using JK-Flip-Flop. To implement counter using 74LS193 IC.

Chapter 11 I/O Management and Disk Scheduling

EMBEDDED SYSTEM BASICS AND APPLICATION

Computer Performance. Topic 3. Contents. Prerequisite knowledge Before studying this topic you should be able to:

ASSEMBLY PROGRAMMING ON A VIRTUAL COMPUTER

Operating Systems 4 th Class

Technical Aspects of Creating and Assessing a Learning Environment in Digital Electronics for High School Students

CS311 Lecture: Sequential Circuits

DMD 101 Introduction to DMD technology

Lizy Kurian John Electrical and Computer Engineering Department, The University of Texas as Austin

Management Challenge. Managing Hardware Assets. Central Processing Unit. What is a Computer System?

Application Note: AN00141 xcore-xa - Application Development

Embedded System Hardware - Processing (Part II)

Sequential Logic Design Principles.Latches and Flip-Flops

The Bus (PCI and PCI-Express)

Chapter 2 Features of Embedded System

Digitale Signalverarbeitung mit FPGA (DSF) Soft Core Prozessor NIOS II Stand Mai Jens Onno Krah

Q & A From Hitachi Data Systems WebTech Presentation:

A New Paradigm for Synchronous State Machine Design in Verilog

C8051F020 Utilization in an Embedded Digital Design Project Course. Daren R. Wilcox Southern Polytechnic State University Marietta, Georgia

İSTANBUL AYDIN UNIVERSITY

(Refer Slide Time: 00:01:16 min)

Computer Organization and Components

CHAPTER 11: Flip Flops

Lesson 10:DESIGN PROCESS EXAMPLES Automatic Chocolate vending machine, smart card and digital camera

Chapter 11 I/O Management and Disk Scheduling

Dynamic Digital Depth (DDD) and Real-time 2D to 3D conversion on the ARM processor

FLIX: Fast Relief for Performance-Hungry Embedded Applications

COMPUTER SCIENCE AND ENGINEERING - Microprocessor Systems - Mitchell Aaron Thornton

Introduction to Digital System Design

Digital Electronics Detailed Outline

Levels of Programming Languages. Gerald Penn CSC 324

The 104 Duke_ACC Machine

Module 3: Floyd, Digital Fundamental

University of Toronto Faculty of Applied Science and Engineering

Atmel s Self-Programming Flash Microcontrollers

Chapter 13. PIC Family Microcontroller

8-Bit Flash Microcontroller for Smart Cards. AT89SCXXXXA Summary. Features. Description. Complete datasheet available under NDA

Transcription:

The Evolution of CCD Clock Sequencers at MIT: Looking to the Future through History John P. Doty, Noqsi Aerospace, Ltd. This work is Copyright 2007 Noqsi Aerospace, Ltd. This work is licensed under the Creative Commons Attribution-Share Alike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/ 3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. Introduction OK, you have a CCD imager, and you want to make it go. To do this, you must apply drive signals to the CCD electrodes ("clocks") in a complex organized sequence with well controlled timing. In addition, your video signal processing chain will need to be synchronized with the CCD, generally requiring more clocks. The "sequencer" is the circuit that controls all of this elaborate timing. All of the designs I'll describe fit the definition of a "finite state machine", sometimes without inputs, and sometimes with inputs from a controlling processor (itself a finite state machine). However, in the descriptions below I'll reserve the term "state machine" for the portion of the sequencer where the designer actually has to deal directly with gates and registers: higher level components containing state machines will be called by their higher level names (e.g. "microcontroller"). Many of the designs below consist of a lower level "pixel" sequencer, and a higher control level. Sometimes the "pixel" level actually generates sequences for two or more pixels for each higher level operation, but I have omitted those details to concentrate on the critical architectural details.

Ad hoc State Machine The first CCD project at the CCD Laboratory (at that time it was the Balloon Laboratory) was a prototype star tracker for a stratospheric balloon gondola (Jeffrey Bokor, S.B. thesis, 1974). Jeff and I designed a state machine from 4000 series CMOS that reproduced the timing diagrams in the data sheet. We didn't do this in any particularly organized way. Subsequent students built several generations of similar clock state machines, with CCD format and clocking strategy hardwired. Shadowed Microcontroller In 1982, Charlie Hulcher and I came up with a more flexible approach, using an 8X300 microcontroller (Charles Hulcher, unfinished SB thesis). The 8X300 had an unusual architecture for the time: it had separate instruction and data memory busses, and required a fixed time (two clock cycles) for every instruction.

The only "data memory" we had was an 8 bit control register: program variables (loop counters) were kept in registers. This worked by "shadowing" the program memory with 16 bits of sequence memory. For example, every time the processor executed location 17 in program memory, the contents of location 17 in sequence memory would appear on the output. So, we programmed it by arranging nested loops with the correct timing, while accompanying each each program instruction with the 16 bit output it was to generate. To make this easier, I wrote a "complier" in a local Forth dialect, LSE. Using this compiler, a piece of code like: 450 FOR

S1 HIGH 3 DELAY S1 LOW 3 DELAY NEXT would command the sequencer to set S1 high for three instruction cycles, then low for three instruction cycles, repeating 450 times. The host computer would configure the control register to give it access to the memory, compile the code into the memory, and then configure the control register to give the 8X300 access to its program memory and start it. The compiler had to keep track of two programs: the 8X300 instructions for the loops and delays, and the sequence of 16 bit output states. These needed to be kept synchronized so that the correct state was associated with each instruction. Despite this complexity, the compiler was only 260 lines of LSE code! The 8x300's seven 8 bit registers sufficed for seven levels of loop nesting for loops of up to 256 iterations: the compiler supported up to 65536 iterations by automatically using two levels if necessary. An "infinite" outer loop didn't need a register. We never encountered a set of requirements too complex for this. This sequencer proved a great advance: we could easily experiment with different clocking modes for subframes, pixel summation, continuous clocking, etc. Regular State Machine Plus Processor When we began development of the Silicon Imaging Spectrometer for the ASCA satellite, we needed a new approach. While we would have liked to use the 8X300 design for the ASCA SIS, the 8X300 was very intolerant of radiation, unsuitable for space flight (and also obsolete). So, we adopted a mixed approach, with sequencing within a pixel interval handled by a hardwired state machine with a regular structure, but with higher level sequencing handled by a DSP within the digital electronics.

The decimal decoder decoded the state number into 18 lines, ten for the lower decimal digit, 8 for the upper, only two of which were asserted at any time. This allowed a two-input AND gate to decode any specific cycle number. Each J/K flip flop was associated with two and gates, one to determine which cycle it needed to be set to one, and the other for zero. Transitions that were dependent on pixel type (like parallel clocks) were associated with three-input AND gates: the extra input controlled which pixel type the transition was to be used for. The DSP controlled the pixel type, potentially changing it as often as every 20 µs, but in practice much more rarely. This had most of the useful flexibility of the shadowed microcontroller approach. While within a pixel, the possible clock sequences were fixed, different clocking strategies were still possible by changing the sequence of pixel cycles commanded by the DSP. Also, in the wire-wrapped prototype it was relatively easy to adjust the sequence within a pixel: the regular state machine structure meant that it was generally easy to identify a small change of wiring that would accomplish the desired change. The MIT ground support setup for the ASCA SIS lacked the control DSP, but it proved easy to emulate its sequencer controlling function with one of the old shadowed microcontroller sequencers, programmed as described above. But for the flight system, there was no special programming support: the assembly language code issued pixel types as part of its pixel processing loop. Sequential Memory Plus Processor When we were working on the ASCA SIS, Keith Gendreau commented to me that he visualized these sequencers as large sequential memories. Given that memory chips were continuing to advance, this seemed to me a good way to actually structure the sequencer for our next CCD project: the UV camera for the HETE-1 satellite. The first version of this was similar to the SIS version, but with memory substituted for the decoder and flip flop stages.

The memory just holds bit vectors that correspond to the state at each step. The DSP loads these in before starting the sequencer. The DSP then starts the sequencer and provides a new pixel type every 24 µs. This sequencer was our first to use FPGA technology: Tye Brady integrated everything except the memory into an Actel FPGA. For programming, a student named Cotton Seed wrote a graphical editor for the arrays of pixel-level bit vectors, so one could simply edit a timing diagram. I improved this and maintained it for a few years, but it has unfortunately fallen into disuse. For the higher level, I wrote a threaded code interpreter for a tiny subset of Forth in C (just two pages of code!). A simple program in this language issued a pixel types into a queue. An interrupt handler synchronized to the pixel rate transferred these from the queue to the sequencer. The threaded code performed the counting and looping. Steve Kissel and Tye Brady found the requirement for active supervision by a DSP burdensome in testing, so they offloaded that function into a programmable device, the "Pseq". This was like a computer CPU, but with no data manipulation capability, only loops and output. It generated the bits to select the pixel type according to a program in a memory chip. This approach required an extra memory chip, but the rest of the logic was in the FPGA. Here, the DSP loaded both chips before starting the sequencer, but then it could just let it run.

This design was used for both HETE-1 and HETE-2, and variants by Dorothy Gordon and Frank LaRosa also flew in space on Chandra, ASTRO-E1, and Suzaku. Sequential Memory Sequencer with Simple Loops and FIFO After the Suzaku development, we wanted a versatile sequencer for laboratory development. I wanted to avoid the specialized Pseq microcode, but also to reduce traffic and synchronization requirements between the control processor and the sequencer. We were working with more complex CCD's and with faster systems, so a 32 bit sequencer (up from 16) with a 30 MHz clock (up from 4 MHz) seemed desirable.

Frank LaRosa did the FPGA design for this, while a student, Mike Trakimas, designed the circuit board. The control interface is a PC parallel port. The computer loads memory and configuration registers and then starts to issue commands to the sequencer. Each 16 bit command contains the address MSB's that identify the pixel type, and a repeat count. This greatly reduces the load on the control computer, as it can issue clocks for a whole serial row with a single command. The first-in first-out (FIFO) memory relieves the requirement that the computer issue its commands in synchrony with sequencer operation. These features greatly reduce the computational load on the computer without requiring a complex "Pseq" loop machine and its microcode. I rewrote LSE in C to program this (available from http://noqsi.com/software.html). Future Possibilities With block memory now available in FPGA's, we may want to consider eliminating the external memory and making a sequencer in just one chip. However, the sequential memory approach tends to require relatively large memories. Each control signal requires a bit in memory for each time step and pixel type. The shadowed

microcontroller approach requires less memory and is more flexible, but requires the most complex programming system. The structured state machine approach from the ASCA SIS looks like a simple and attractive possibility with a reprogrammable FPGA. For the pixel level it needs only few flip flops, and perhaps a second (CCD row level) layer could relieve the burden on the processor (athough a dedicated microcontroller within the FPGA could easily handle the higher levels). A reprogrammable FPGA would eliminate its inflexibility. For programming, I note that all designs since the shadowed microprocessor work with a set of pixel-level sequences that are all the same length, while the higher levels are relatively simple counted loops. Even programs for the more flexible shadowed microprocessor design tended to follow these rules. It seems that a graphical editor for the pixel timing blocks would be very handy, while the higher levels could be represented by a trivial programming language. This suggests that a universal programming system for future sequencers should be relatively simple. Back ends could emit bit vectors, HDL, or microcontroller code as appropriate to the specific design.