Home

"user manual"

image

Contents

1. r rtl Core Generator By using a FIFO in each jai nit almost _empty component that needs access to the SDRAM data dint 0 almost_full can be buffered if RAM access is blocked by ird_clk doul 7 0 another component Also if SDRAM access rd_ en mpty locations are bunched together the memory will wr elk fulli respond faster then for accesses at addresses across lt _en wr_count 3 0 bank boundaries asyn_fifo_di strib The write count output from the FIFO tells roughly how full it is The count is used for signaling a need to dump or receive more data The FIFO is asynchronous so it has a clock for putting data in and a clock for taking data out The enable signals allow writing or reading only when needed They are highly preferred over gating the clock signals e Wr_count vs rd_count e Distributed vs block ram SDRAM CONTROLLER arch unfold 1346 XRTL elk cke hdd 22 0 cs nt hDinf 45 0 rd dgmint rst dgmi sCratal 15 0 hia 15 0 wr man sAddr 1 1 o sdramCnd statel3 a wen sdramCntl_50000 16 23 12 Xess has provided an SDRAM controller that makes the external 16Mx16 SDRAM look like simple SRAM It handles refresh and bank interleaving and was available in a VHDL version In its current state the SDRAM controller does not support burst mode To provide pseudo dual port functionality with the SDRAM read and write FIFO s were added to the modules that read and write to the me
2. ik_ MME tke write operations d KA JI SD eani dump_data_reg KAL damh T O ports for the memory controller divided in four end addr upadi 220 damli groups pp mo mesed dala p data mut 15 0 e SDRAM rst po_ffo_wr_en e Image Sensor latal me ni l s e Parallel Port jat add plaa 0 rd en KAC e Control stan new iama ro_aut start_upload siiddr 11 0 we ni The memory controller instantiates the SDRAM ram_contro controller so all SDRAM side ports from the SDRAM controller go through the memory controller In hindsight a better approach would have been to instantiate the SDRAM at the top level and connect it to the memory controller there This would have given the memory controller a more flexible interface to memory so a different type of RAM could be used without requiring any changes to the memory controller The image sensor group of ports controls dataflow from the KAC_data component to memory Equally the parallel port group of ports controls dataflow from memory to the pp_upload module These two groups include a request for access signal a corresponding response signal Additional control for the parallel port comes from the master control signal generator FIFO CONTROL Access is controlled by a semaphore in the sem_control process The semaphore can be held by the SDRAM parallel port or nobody When a request for access is asserted on either pp_fifo_need_data or dump_data_req_KAC the process ch
3. 1ms de asserted before the sensor can begin Also the SDRAM requires 200us of startup time The init_cycle_complete signal indicates that startup routines have completed PARALLEL PORT INTERFACE An important component for sending the image debugging and system control is the parallel port The p upload arch pp_upload component buffers data from the SDRAM clk_oOhihz in a FIFO to send through the parallel port to the Ppa s 0 Ck P image capture program on the host PC Commands rsi cemdf s 0 are also received and passed onto the MCSG start_upload need cata The port operates in nibble mode with four bits quptoad data 15 0 pps 6 3 for upload and eight for download On the XSA 100 iT _En prototype board the high download bit is physically l pp upload tied to the Spartan program pin This bit is pulled low to reconfigure the FPGA otherwise it must be held high The lowest download bit always driven by the host PC is used to clock data through the port This limits the download data width to six bits To increase upstream bandwidth through the port nibbles are uploaded on both edges of the parallel port clock This design decision doubled bandwidth through the port but added some complexity The 16 bit FIFO output is broken into four pieces which are selected by the current edge of the parallel port clock and a toggle bit Interaction with the memory controller to feed the FIFO is similar to what s implemented in KAC da
4. dumped or duplicated to compensate for different transfer rates IMAGE SENSOR DATA READER The image sensor data reader handles the timing generation and data transfer from the image sensor A 64 deep by 16 bit wide asynchronous FIFO is used to buffer incoming data Using the init_cycle_complete signal incoming data is ignored until startup operations have completed Until this KAC data arch unfold 2487 XRT signalis asserted by the master control signal clk_12_5Mhz generator no SDRAM writes are requested clk_SOMhz In this component the master clock is sent to lhek KAC the sensor and video sync and pixel data are sak tata complete dout 15 0 received Internal connections go to the memory pix KACTS 0 dume_data_req controller to handle handshaking and data transfer d_en start_new_frame eee i A design decision was made to reduce the iy ate color depth 8 bits per image sensor pixel Two pel successive pixels are placed together in the 16 bit iwelk PAC wide SDRAM to reduce bandwidth requirements KAC data The image sensor outputs a 8 bit color values at a rate of approximately 12 MHz for a bandwidth of 7 5Mbytes s Two state machines are used in this component A simple state machine detects the rising edge of the hclk signal to pack two 8 bit pixels together and stuff them into the FIFO This state machine controls the FIFO s data in and write enable signals Another short state machine controls the d
5. e Input to SDRAM e Input to image sensor FIFO Use of Dallas temperature sensor to test I2C Problems and Workarounds Indeed there were many problems that put sections of the project on hold Most often the solution was simple yet novel False triggering on the parallel port clock caused by noise through the parallel port cable and signal bounce was one simple problem This was found by reading the value of a counter incrementing off the parallel port Correct clocking would cause an incrementing sequence to be written to the binary data file When the clock would false trigger the sequence in the file would skip several numbers at a time This was solved with a debounce circuit The solution was easy finding the problem of the errors was more difficult Some problems were not related to hardware but the synthesis or place and route tools I found that global input buffers must be placed on the top level of the design or Leonardo Spectrum will place an illegal input buffer in front of the IBUFG Also fanout grew too large on the parallel port clock signal and Thad to manually place a buffer on the signal Usually the tool will insert a buffer automatically Finally there is the problem that stumped me for four weeks to be solved in 5 minutes with a pog According to the datasheet and email responses from Robert McKeever and Grace Pigott at Kodak the image sensor begins to output video and sync signals on power up However when I would p
6. to verify the design using ModelSim The testbench exercises the design at the top level simulating the parallel port and image sensor interactions The advantage of simulation is all intermediate signals in the design can be viewed For verifying the memory arbitrator and FIFO interactions this became imperative The disadvantage of simulating this design was ensuring simulated input matched the actual inputs to the design when it was placed in hardware An inaccurate simulation may insist a bad design is actually functioning correctly Timescale issues and missing models made simulation difficult The design was clocked at 50Mhz and to receive an entire picture through the parallel port required 10s The computational time to get 10s of simulation became unwieldy In response the parallel port was simulated as 100x faster which effected the memory access timings Also I didn t have a model for the SDRAM for simulation so once it was verified in hardware correct functionality was assumed in simulation SDRAM accesses were observed at the SDRAM controller interface rather then the SDRAM to hardware interface To simulate the Xilinx Coregen FIFOs and block RAMs some libraries had to be added in modelsim The Xilinx Libraries Aid TCL script Xilinx_lib_4 tcl was used to add the unisim and XilinxCoreLib libraries IN HARDWARE Testing in hardware gives definitive decision if this design works or not When the design is placed in hardware pins ca
7. unique in that it provides a simulated dual port interface to SDRAM The image sensor can write to memory while the host PC is reading from it Images are stored in pages to preserve image integrity All pixels in a received image are from a single image capture by the sensor The use of a Xilinx FPGA makes this project unique among other OIT projects References comp arch fpga comp lang vhdl XSBoard User Group xsboard users yahoogroups com Peter J Ashenden The designers guide to VHDL Morgan Kaufmann Publishers 1995 Qualis Design Corporation VHDL QUICK REFERENCE CARD http www qualis com Photobit PB MV13 Product Specification www photobit com Photobit PB 0300 Mini EPPI Camera Development System User Manual www photobit com Agilent Image Processing Chip HDCP 2010 YUV JPEG Output Product Brief www semiconductor agilent com Agilent HDCS 1020 HDCS 2020 CMOS Image Sensors Data Sheet www semiconductor agilent com Agilent HDCP 2000 Image Processor Data Sheet www semiconductor agilent com Agilent An Image Processing Chip for the HDCS Family of CMOS Image Sensors www semiconductor agilent com D Vanden Bout Xess Corp XSA SDRAM Controller an 09260 sdramcntl pdf www xess com D Vanden Bout Xess Corp XSA Parallel Port Interface an 111601 xsapport pdf www xess com D Vanden Bout Xess Corp XSA Flash Programming and SpartanII Configuration an 111701 xsaflash pdf www xess com A
8. ENERATION Board level deskew of the system clock was the clock generation arch unfold 3532 goal of the clock generation component This is described at http www xilinx com products J bufeikin cl spartan2 recipes rec004 htm The principle is to sync bulsclkip the internal logic to the same clock that is seen by the external SDRAM accounting for PCB and buffer ret_ni delays The clock signal is routed out of the Spartan II clock _generalion then back in through a dedicated clock pin This delay is sampled by a pair of delay lock loops which output an internal clock which is phase shifted to decrease clock skew If the clock is not deskewed the SDRAM will not function correctly at SOMhz DLLs are also used as clock dividers The 12 5Mhz clock for the KAC 1310 image sensor is divided from the deskewed internal clock The image sensor clock does not have a feedback and is slightly skewed but at lower frequencies clock skew is less of a problem Alternatively a simple counter could have been used as a clock divider However using the DLLs to generate the slower frequency reduced the 50Mhz to 12 5Mhz clock edge delay by 50 Because it takes time for the DLLs to get lock the board needs to be reset using the pushbutton after power up The entire design could be modified however to use the locked signals and an internal reset ASYNCRONOUS DISTRIBUTED MEMORY FIFO The FIFOs were produced using the Xilinx
9. KAC_i2c KAC_data the memory controller and pp_upload Interaction with the I2C controller is accomplished with an 8 bit address a pair of 8 bit data busses and three handshaking signals Connections to the memory controller include a start address bus end address bus start and abort upload signals Two more outputs reset the image sensor and signal completion of startup routines Simplification of I2C to a simple SRAM like interface makes controlling register values in the image sensor completely transparent at this level As implemented control of the image sensor is limited but fully functional More functionality could easily be added to take advantage of the features in the sensor A several step state machine reads commands from the parallel port Commands are 6 bits wide and three are implemented More details can be found in the diagram Parallel Port Command Protocol e NOP 000000 e STARTUPLOAD 000001 e ABORTUPLOAD 000010 The NOP command is a safe idle state so no signals are affected STARTUPLOAD begins an eight step sequence to read in two 24 bit start and end addresses the beginning and ending addresses of where to read in memory The addresses are registered and passed to the memory controller The start_upload signal is asserted when both addresses have been received ABORTUPLOAD asserts the abort upload signal also passed to the memory controller The image sensor s reset or init signal requires 1ms asserted then
10. Ks 3 out of 4 75 Total equivalent gate count for design 46 685 SDRAM Useage 3 Frames 1280 Pixels 1024 Lines 8 bits 3 840 Mbytes SPEED FPGA Minimum period 15 088ns Maximum frequency 66 278MHz SDRAM Operating frequency 50Mhz Average write time 50ns Average read time 100ns Parallel Port Upload bandwidth 100 150k bytes sec Image Sensor Operating frequency 5Mhz POWER FPGA Total current 130mA Total power 320mW SDRAM Operating current 120mA Total power 400mW Image Sensor Total current 120mA Power at 13 5Mhz 400mW Summary For a senior project requirement at Oregon Institute of Technology I created a digital camera The camera was built using the KAC 1310 CMOS image sensor from Kodak and the XSA 100 FPGA development board from Xess Control of the camera was written in VHDL synthesized with Leonardo Spectrum and translated to a bitgen with Xilinx ISE The design was verified in hardware and with ModelSim The image is captured from the camera to the host PC with a small windows application The VHDL design placed in the Spartan 2 FPGA on the development board has several functions The design controls the camera IC by I2C and transfers and image stream from the camera through buffers to SDRAM Commands are received from the host PC through the parallel port to read an image The image is then transferred from the SDRAM through more buffers and out the parallel port The design is
11. Mentor Graphics 2001 2002 Student Design Contest CMOS Digital Camera Controller and Frame Capture Device By Ryan Henderson Oregon Institute of Technology May 26 2002 Project Abstract Applications of digital imaging range from amateur photography to machine vision This project shows how a CMOS Camera On a Chip image sensor can be used to build a high resolution web camera An I2C bus controls the image sensor and the pixel data is buffered in SDRAM to be uploaded through the parallel port to be displayed on a PC The external hardware FPGA design and software application for the camera will be described in this paper Introduce myself System Overview Motivation for the design For my senior project at Oregon Institute of Technology I wanted something creative and flashy that would challenge me as an engineer The design needed to demonstrate my skills to prospective employers in a job market that is centered on experience The original idea behind the project was to place a camera on a RC car Then the car could be controlled much like a racing game from a computer Appropriate technology and implementation style After much research on image sensors the choice to use CMOS over CCD became clear CCD sensors typically offer superior image performance CMOS sensors consume less power and are easier to interface and control http www dalsa com markets ccd_vs_cmos asp The Kodak KAC 1310 CMOS sensor I chose in
12. atures e www motorola com Motorola Optics Sensor Lens Selection AN1929 pdf e www motorola com Motorola White Balance and Color Correction in Digital Cameras AN1904 e www motorola com Motorola The Roadrunner Modular digital still camera reference design AN1928 ppdf e www motorola com National Semiconductor LM9627 Color CMOS Image Sensor VGA 30 FPS www national com Plastronics LCC Socket 48 Lead 0 040 Square P2048S Mechanical Drawing www locknest com Xilinx XC9572XL High Performance CPLDPreliminary Product Specification DSOS7 www xilinx com Xilinx CoolRunner XPLA3 I2C Bus Controller Implementation XAPP333 www xilinx com Xilinx Synthesizable High Performance SDRAM Controller XAPP134 www xilinx com Robert McKeever robert mckeever kodak com Eastman Kodak Company Email correspondence Nicolas Matringe nicolas matringe ipricot com comp arch fpga Email correspondence Charles Petzold Programming Windows Microsoft Press 1999
13. ecks if it can take the semaphore If it can t it is blocked until the semaphore is released If it can take the semaphore it signals the FIFO and memory to start a transfer When the FIFO approaches its limit the request for access goes away the transfer is stopped and the semaphore is released It is important to note that each FIFO s is set with enough extra room so they can continue while it is blocked The time required for a complete FIFO and memory transfer matches the time allotted by the extra room in the opposite FIFO Also the parallel port FIFO may be empty but the host PC might not be uploading data This is the purpose of the uploading signal ADDRESS GENERATION The memory controller also manages the memory addresses for both data in and data out The image is kept in a simple linear array in memory so the current address for a read or write is generated off a binary up counter with some added set and reset logic A separate address pointer is kept for the parallel port and image sensor The signal addr_ptr_KAC is incremented for every write to the SDRAM It is reset on the start_new_frame signal from the KAC_data component Additionally the address pointer is prevented from exceeding the maximum size of a picture and writing into the next frame Memory paging is described in the next section Handling of the parallel port address pointer pp_addr_pointer is a little more complex It is also implemented with a counter but i
14. ichard Herveille also wrote a sample state machine for reading data from a Dallas 1621 a I2C temperature sensor This sample was starting point for building the KAC_i2c controller The KAC_i2c module simplifies these sequences by providing a SRAM like interface that completely hides the I2C implementation The controlling entity needs only to setup the address data direction and assert the start signal to initiate a data transfer The cycle is completed when the done handshaking signal is asserted In addition to how to use this component it s important to know how it works An internal state machine handles two sequences and an idle state The machine stays in the idle state and asserts safe idle conditions until an access is requested Once a sequence starts commands are issued in sequence to the instantiated I2C controller Because these states may take multiple clocks the machine waits for an acknowledge of the previous state a ee pen before continuing The machine must n wait for the ack from the last state eo oe i faa i before returning to the idle state This f was a source of some dysfunctionality L amm ik A while creating the state machine j i m During the course of these states the cae e T input address and data values are i transferred The address and input data Ta EE Cae E pia pol bus are not latched so they must remain i ang e i a constant value during the access al Si ii CLOCK G
15. ign inputs For quick and dirty simulations Altera s Max plus proved useful The editable waveform simulation tool made verifying a simple module easier and saved the time of writing a testbench Microsoft s Visual C was used to create a camera controller application to run on the host pc The target platform for the application was Windows 2000 however access to the parallel port is restricted and requires a driver While considering how to write my own device driver I found the Xess tools provided a better option The Xess Tools are a small collection of accessories to the Spartan 2 development board The tools are useful for loading the RAM clock divider FPGA and CPLD on the board as well as for testing The tools use the Unified I O driver to access the parallel port under Windows NT http www bbdsoft com interface html The C source of these tools was used as a starting point for my camera capture application FPGA Design VHDL Design Top Level Sa companenia ard iair irie Figure Top Level TOP LEVEL DESCRIPTION digital camers_arch The FPGA is the main controller of the camera handling wo data movement from the image sensor to the parallel port At the top level of the camera design ports are arranged in the following groups ca e Image Sensor eami e SDRAM e Parallel Port and XSA 100 Misc I O Image sensor ports connect to the development board with the KAC 1310 sensor to provide timing con
16. mory The FIFOs allow interleaved read and write operations to operate efficiently and independent of each other For instance if the parallel port needs to read from RAM at a rate of 100 kHz it can pull data from a FIFO When the FIFO approaches almost empty it can be filled with a burst read from SDRAM at 50 MHz For testing this component was replaced by onboard block SelectRAM in the Spartan Only 40k Bytes was available in the XC2S100 The block RAM worked for testing but wasn t big enough to hold even a small picture The SDRAM controller provides an interface similar to the I2C controller There are busses for data in data out and address When the read or write signal is asserted the done signal goes low until the end of the access Valid data is read on the rising edge of the done signal The controller can address 16Mbytes and has a 16 bit wide data bus The controller was modified slightly from the original Xess version All IBUFGs and DLLs were moved to the top level and the clock generation component Also a bug preventing correct setting of the SDRAM s mode register was fixed For more information on this controller please refer to Xess documentation MEMORY CONTROLLER ram_control_arch_unfold_3233_XRTL The most complex component of the design was the aie memory controller It handles arbitration between different afart_upload tae fil g components that access the memory interleaving read and
17. n be probed and real delays can be measured A logic analyzer and oscilloscope was used as well as DIP switches and LEDs Also the parallel port connect and image capture software was used for debugging Testing results could be stored to memory transferred and then written to a file for examination on the host PC The design has similarities to a logic analyzer and this was taken advantage of The goal of the project was not merely the design but a working camera To meet this goal a small prototype board was built to house the image sensor Voltage regulators capacitors header pins and a socket for the sensor were placed on the board following the sample circuit in KAC 1310 datasheet The header pins on this board were then connected with wire wrap to the XSA 100 development board Signal connections are listed in the FPGA pin out description The most important in hardware testing was the testing the FIFOs and memory controller Transfer of data from the image sensor to the host PC is a four step process Working backwards through each of these steps input data was simulated using a simple binary up counter For instance to verify the parallel port link between the hardware and the host PC a counter was placed to simulate the output of the parallel port FIFO Problems with byte order FIFO overflow or FIFO underflow could be found here This testing was performed at the following four areas e Output of parallel port FIFO e Output of SDRAM
18. o create the image capture program Hardware Software amp Etc e Leonardo Spectrum e 6Visual C 6 0 e ModelSim e Xess Tools 4 0 e Xilinx ISE e Altera Max plus II The primary tool used for creating the hardware design was Leonardo Spectrum The integrated place and route feature allowed me to go from VHDL to bitgen with one push of a button The RTL view visualized my design and made finding problems easier Leonardo s buggy user interface was an annoying obstacle to productivity I also found that the Spartan 2 symbol IBUFG must not be buried in the design hierarchy or the tool will place another incompatible buffer in front of it and the Xilinx place and route tool will fail Xilinx ISE was primary used through Leonardo spectrum to translate the design from electronic design interchange format EDIF to a bitgen to program the FPGA Some incompatibilities with bussed net names in the EDIF file created problems Some tools use lt gt and others use A simple find replace solved the problem The Xilinx core generator tool was used for creating RAMs FIFOs and other blocks Learning how to integrate these blocks into the simulation and synthesizable design took some searching Verifying the design using ModelSim proved invaluable When the input patterns became more complex and the time to go from VHDL to bitgen increased the testbench was saved time The difficult part is making sure the testbench inputs match the actual des
19. ower it up nothing would happen in fact the device would not even draw any current I tested the pins at the socket contacts and found that all power ground and necessary signals were correct I could not test the pins on the CLCC image sensor package because they were buried in the socket This led me to the problem I found out the CLCC socket I had was made to place the IC in upside down not real beneficial for camera applications The contacts in the socket were not touching all the recessed contacts on the image sensor because the glass lid hung over too far as seen by the picture on the left The picture on the right shows where pins were making contact The contacts in the socket were shaped so that raising the sensor about 1mm allowed all connects to make contact Design statistics A good design functions correctly A better design functions correctly with fewer resources The Xilinx Spartan 2 was an excellent target device for the project Its size speed and more then outweigh the extra complexity over an Altera 10K70 Following is a summary of post place and route design statistics optimized for area AREA FPGA Utilization Number of External GCLKIOBs 3 out of 4 75 Number of External IOBs 77 out of 92 83 Number of LOCed External IOBs 77 out of 77 100 Number of BLOCKRAMs 1 out of 10 10 Number of SLICEs 478 out of 1200 39 Number of DLLs 2 out of 4 50 Number of GCL
20. s set and reset on values passed from the master control signal generator The pointer is set with the start address when start_upload is asserted and it is clear when it reaches end address or abort upload is asserted FRAME PAGING Finally the memory controller handles frame paging as well Paging ensures that the picture being uploaded does not update before it is completely read out Otherwise the bottom of the picture would be more current then the top and moving objects would cause tearing in the image atat mew frame amp start_upload start_new_frame Start_upload ram_page_KAC pp_ram_prge atart_new rame siari new iame A start_upload The current page is determined by the high three address bits and there are three page registers When a page is swapped the page registers exchange values The SDRAM address for a read or write is made up of the current ram page concatenated with the ram address pointer When a complete image has been read in as indicated by the signal start_new_frame ram_page_KAC is swapped with ram_page_full When a new parallel port upload is started as indicated by the signal start_upload ram_page_full is swapped with pp_ram_page In the event both start new frame and start upload occur in the same clock ram_page_KAC is swapped directly with pp_ram_page An engineering goal of the project is demonstrated here The image read in and read out rates are independent Frames will be
21. ta When the FIFO approaches empty it signals a request for data to the memory controller The memory controller will respond with the wr_en signal and will fill the FIFO until need_data is de asserted The parallel port upload component de asserts need_data when the FIFO approaches full Because there is more then one clock delay between the de asserting of need_data and wr_en the FIFO s almost full signal is not used ACCESSORY COMPENTS Several self explanatory accessory components are also used These are sprinkled throughout the design where needed LED Decoder converts 4 bit binary for display on a 7 segment Oneshot uses a state machine to output a one clock period long pulse on the positive edge of the input signal The component ms delay asserts a done signal lms after start is asserted Signal debounce stops false triggering on a signal with dirty edges The number of clocks to wait for the bounces to stop is generic Clock divider is a replacement for the clock generation component without the DLLs e LED Decoder e Oneshot e ms Delay e Signal Debounce e Clock Divider Verification and Simulation A challenge equal to creating a design itself is proving that the design works as expected For my digital camera project verification was done by simulation and in hardware testing Both methods require extra design considerations and overhead but in turn can simplify the design process SIMULATION Test benches were written
22. tegrates the analog to digital converters in the sensor so all I O ports to the sensor are digital An FPGA was appropriate to control the sensor and buffer the data while minimizing component count I chose a XESS XSA 100 Spartan II development board to interface between the parallel port and the image sensor With 100k gates and 16Mb of storage I had enough room and speed to implement everything I needed Design methodology and why it methodology was chosen After short consideration VHDL was chosen over Verilog to implement the design I prefer the strong type checking of the language and it also eased the integration of two third party cores into my design The general design mythology was to take large already built components and assemble them together Then I implemented the glue code and controllers myself The task was still daunting Implementing someone else s code can be more difficult then writing it from scratch Satisfying the system requirements My project specification calls for capture of high resolution images through the parallel port In the now completed design the host PC can repeatedly capture an image from the camera and write it out to a bitmap The limited bandwidth of the parallel port restricts the video frame rate but this was certainly expected Uniqueness Unique to other hardware senior projects at OIT for several years I chose to use the Xilinx Spartan II over an Altera 10k70 At about four times
23. the speed and area the XC2S100 on the Xess XSA 100 development board met the system requirements This different choice of hardware also gave me the opportunity to learn to use some new design tools The core of my project is a unique method to handle simultaneous asynchronous accesses to the SDRAM New pixel data is coming from the image sensor at a max rate of 12 5MHz At the same time the host PC could be reading the pixel data at a rate of approximately 150kHz To make the SDRAM appear dual port a specialized memory controller was design with a read and write asynchronous FIFOs and access to the memory is controlled by a semaphore With this solution the SDRAM can be clocked independent of the image sensor and parallel port To prevent an image from being updated before it is completely read out the design keeps three pictures in memory and pages through them The newest image being read in is kept on one page The last complete image is kept on another page The third page keeps the image the parallel port is reading out When new frames can be read in faster then they can be read out this keeps each image intact Finally because of the hardware limitation on the XSA 100 board the parallel port is limited to nibble mode To improve bandwidth through the port and reduce noise four bits are transferred on every clock edge Making the parallel port DDR doubled my data rate and reduced noise in the data stream Design Reuse and Testabilit
24. tmel megabit 128K x 8 5 volt Only Flash Memory AT49F 001 www atmel com Xess Corp Introduction to WebPACK 4 1 for FPGAs www xess com Xess Corp XSA Board V1 0 User Manual www xess com Analog Devices CMOS 80 MHz Triple 8 Bit Video DAC ADV7120 pdf www analog com Charles Poynton Frequently Asked Questions about Color www inforamp net poynton Tom Hill Exemplar Logic Inferring Virtex Block RAM with Leonardo Spectrum Leonardo Spectrum www exemplar com Xilinx Datasheets Hynix Semiconductor HV7 31E CMOS IMAGE SENSOR System IC SBU With 8 bit ADC www hynix com Hynix Semiconductor HY57V281620A 4 Banks x 2M x 16bits Synchronous DRAM Datasheet www hynix com Hynix Semiconductor SDRAM Device Operation www hynix com Hynix Semiconductor SDRAM Timing Diagrams www hynix com Elpida Memory How to use SDRAM User s Manual E0123N101 http www elpida com Richard Herveille Opencores org 12C Master Core Specification www opencores org Zoran ZR36060 INTEGRATED JPEG CODEC www zoran com Eastman Kodak Company KAC 1310 1280 x 1024 SXGA CMOS Image Sensor http www kodak com US en digital ccd sensorsMain shtml Eastman Kodak Company Kodak KAC ES001 A Evaluation System http www kodak com US en digital ccd sensorsMain shtml Motorola Color SXGA Digital Image Sensor 1280 x 1024 pixel progressive scan solid state image sensor with integrated CDS PGA ADC digital programming control timing and pixel correction fe
25. trol and to read the saddir 11 1 image data SDRAM ports connect the address bidirectional s C data and control signals on the XSA 100 board Other signals such as the clock and the parallel port connections are grouped in digilai camera XSA 100 misc Some ports were added purely for testing and could be removed for a final design The top level design file primarily instantiates and connects sub components in the design There are also global buffers placed on clock input pins to help with fan out and so they can be connected to delay lock loops Some of the component instantiations have generic mappings as well to define parameters for the modules Instantiated components at this level are e clock_generation e KAC data e LEDDecoder e pp_upload e Master_control_signal_genereator e ram control e KAC i2c TC CONTROLLER The image sensor is controlled by the master control signal generator component by I2C a two wire KAC i2c_ arch unfold 2169 XRTL Addr KAC 0 Data_KAC_in 7 0 bi directional interface A control module was created to simplify this interface and constrain it to the specific Dala_KAC_oul 7 0 application Forty 8 bit control registers in the image sensor can be read and written to using a sequence of I2C events as described in section 8 of the KAC 1310 done_KAC datasheet KAC_i2c_0710011 The KAC_i2c component is implemented with the simple i2c controller from Open Cores The author of the core R
26. ump data request and start new frame signals When the FIFO approaches full or empty dump data request is toggled appropriately Also if a start of frame signal comes from the image sensor the FIFO contents must be emptied and then the start new frame signal must be asserted If the FIFO is not flushed on the start of a new frame each frame will have part of the previous frame s data and the end of the current frame will be cut off Flushing the FIFO must occur in under 550ns the time between the image sensor asserting start of frame and the first pixel of the new frame The SDRAM requires 50ns write which allows for only 11 writes The timing here is very tight thus the FIFO is set to request to dump when it reaches 8 entries A more elegant solution would be to count pixels and generate an end of frame signal There is more time available to use between the EOF and the SOF MASTER CONTROL SIGNAL GENERATOR master ee Se ee eee 4056_XATL The MCSG provides status and control a i pa l for top level components in the design For ala KA i aai ugin instance commands from the parallel port are ARPE dai aal oil decoded here and then the control signals initiate actions in the memory controller Startup procedures are also handled in the LEL MCSG The image sensor and the SDRAM Jis require a reset and a time delay before Kar operation can begin Thaster_control_signal_genarator This component has connections to the
27. y Design reuse was an important aspect of this project Because of the flexibility of the Opencores I2C controller it was easily integrated into my design Also the use of this design isn t limited to a camera It has the capability to capture data to memory at varying clock rates and then upload the data for inspection Another application of this design would be a logic analyzer Large steps were taken to ensure testability Sub components were built and tested independently Internal block ram was used to test the dataflow through the design before the SDRAM was added HW SW partitioning choices While this was not a SOC design there was still one HW SW partitioning choice between the FPGA design and the PC software To capture color image sensors use a Bayer RGB pattern where each pixel only captures a single color To fill in the missing color values for each pixel one must use the adjacent pixels both horizontally and vertically To implement this in hardware would require considerably more design time and would actually inflate the size of the resulting image The host PC software could easily decode the color data with much less code List software used with software analysis to include feedback on problems obstacles encountered and workarounds A wide variety of software tools were used for this project For the hardware design tools were needed for synthesis simulation and place and route Software design tools were needed t

Download Pdf Manuals

image

Related Search

Related Contents

ー ~ 立水栓ユニッ ト フォギータイプ日  Bedienungsanleitung - LTT  epmvp3c2 - Arx Valdex Systems  Soyo Slot A SY-K7AIA Motherboard  

Copyright © All rights reserved.
Failed to retrieve file