Bachelor Thesis. Augmented Reality using a Virtual Reality. R.J.A. Blokker & L.M. Noordam. Implementation on an FPGA device

Size: px
Start display at page:

Download "Bachelor Thesis. Augmented Reality using a Virtual Reality. R.J.A. Blokker & L.M. Noordam. Implementation on an FPGA device"

Transcription

1 Bachelor Thesis Augmented Reality using a Virtual Reality setup R.J.A. Blokker & L.M. Noordam Implementation on an FPGA device

2

3 Augmented Reality using a Virtual Reality setup Implementation on an FPGA device by R.J.A. Blokker & L.M. Noordam Date: June 15, 2016 Student numbers: L.M. Noordam: R.J.A. Blokker: Project duration: April 18, 2016 July 1, 2016 Thesis committee: Prof. Dr. Koen Bertels TU Delft, chair Prof. Dr. Elmar Eisemann, TU Delft, supervisor Dr. Jelena Popovic, TU Delft, jury member

4 Abstract Augmented reality is a very new market and at moment only available for early adopters. The available products are expensive and still under development. Furthermore, the current products can only augment a small percentage of the user s field of view. The product described in this thesis uses equipment available on the consumers market to implement augmented reality. By connecting two cameras to an Oculus Rift and some additional hardware, an environment is created in which the users can experience augmented reality with virtual reality equipment. The additional hardware consists of an FPGA and a personal computer taking care of adding content to the virtual image of the real world. Directly connecting the cameras to the FPGA results in a short low latency path. This should allow the user to perceive the world with the least possible amount of introduced lag. The prototype is not finished yet, so whether it s possible to achieve the low-latency throughput is still not known. However, the modules that are responsible for reading from an HDMI input, writing to an HDMI output, controlling the memory and conversion between color spaces have already been implemented. The details of these implementations are discussed in this document. We hope you enjoy reading our thesis, R.J.A. Blokker & L.M. Noordam Delft, June 2016 ii

5 Contents Abstract 1 Introduction 1 2 Program of Requirements Introduction Functional Requirements System Requirements Preliminary Design Process Design Process Draft Concepts FPGA System Overview Introduction HDMI Camera Multiplexer Buffer USB Connection Implementation HDMI Camera decoder Memory Interface AXI-lite Reader System Interconnects Validation Sync Generator Camera Decoder AXI-lite Reader Discussion of Results 18 8 Conclusion and Recommendations Conclusion Recommendations Appendix 20 A VHDL Source Code 20 A.1 Sync Generator A.2 Camera Decoder A.3 AXI-lite Reader Bibliography 31 ii iii

6

7 1 Introduction The virtual reality market is upcoming. More and more consumer versions of virtual reality (VR) glasses become available. Augmented reality (AR) is somewhat like VR. With AR not the whole image is virtual, but only certain parts. The main part of what a user sees is the real world. The user can see in front of him just like without the glasses. Extra attributes are added to the image to make it augmented reality, just like on the cover image [1]. One of the goals of this project is to make AR glasses from a VR glasses. Such an approach has been attempted before by others, usually involving a computer sending camera images to a VR glasses [2]. Using a computer introduces too much delay for a good working system. When there is too much delay, collisions with objects in the room or a wall are possible. This is because the place you think you are is not the place you really are. Grabbing objects is also harder because of the delay. The user experiences a delay in the movement of his arm. Therefore reaching to an object has to be done really slow to prevent the user to push the object over. There are AR glasses available to deal with the problem of delay. These devices have seethrough lenses. One of them is the Microsoft HoloLens [3]. These devices are still very expensive and in development. They also exhibit a small field of view. This project responds to this problem. With this system affordable AR glasses become possible. By using a consumer version of VR glasses in addition with our system the total cost will be much lower than buying already existing AR glasses. By adding a fish-eye lens to the cameras, the field of view will be higher than with a HoloLens. In the next chapter (Chapter 2) the requirements are discussed, what has to be accomplished to reach the goal of the project. In Chapter 3 the preliminary design process is discussed, what choices were made. In Chapter 4 an overview of all components in the design are discussed. Chapter 5 describes how all the components are implemented. In Chapter 6 the components that were designed are validated, to show how they work. After the validation the results will be discussed in chapter 7. Finally in Chapter 8 the conclusion and recommendations for future projects. 1

8 2 Program of Requirements 2.1. Introduction The proposal [4] requested to build an environment in which augmented reality is realized using the cheaper virtual reality equipment available on the consumer market. While solutions for creating AR already exist, the market for VR equipment is a few years more mature. And because the two markets have a similar end product, it makes sense to do research that might result in more integration between those markets. The final product will be used by developers building applications for AR systems. Therefore it should be easy to integrate the new product with existing electronic devices Functional Requirements The following statements describe the purpose of the product to be developed: [2.1] The system must be able to read the video output stream of another device using a commonly known standard for transferring video streams. [2.2] The system requires an interface with at least two cameras to capture reality in stereo vision. [2.3] The system should be able to merge and synchronize the incoming video streams into one output stream. Decision making is based on an predefined video input stream. [2.4] The system should be able to output a video stream in a format that can be used as input for an existing VR device. [2.5] The system must be able to output the camera video streams using a technology that enables high bandwidth video transfers over a single cable connection. [2.6] The lag introduced by the AR system should be as low as possible. The path from the cameras to the video output has the highest priority in this aspect. 2

9 2.3. System Requirements System Requirements Elaborating on the functional requirements from the previous section results in: [3.1] The camera interface will be determined by the purchased type of camera. The output signal type must consist of raw data as this allows for easy further processing. However, this will increase the need for a high internal system bandwidth. [3.2] A usable generic video transport protocol, supported by a lot of consumer devices, is the HDMI specification [5]. This interface allows for a high resolution video stream and can be decoded into readable data quite easily. [3.3] Decision making about which input stream to use as output steam is based on the generic video input stream on per pixel basis. When a pixel of the generic input video stream has a color value equal to RGB value (0,255,0), the corresponding camera pixel should be written to the video output instead. [3.4] An FPGA as interconnect between all components generating or consuming video streams. The FPGA requires an HDMI in/out connection to process the generic video stream input and generate the video output to the VR device. Also at least 64 GPIO pins are required for communication with the cameras and exporting this video stream. [3.5] As VR device the Oculus Rift DK1 is used. It has an HDMI input port and displays the video stream with a refresh rate of 60 fps. The FPGA should be capable enough to output the required frame rate. [3.6] The latency from the camera video out to the Oculus Rift HDMI port should not be larger than 50 milliseconds. The reason is that the user of the product should be able to wear the Oculus Rift without interruption for at least half an hour without getting motion sickness. [3.7] For exporting the video stream of the cameras the USB 2.0 protocol is used. This is not ideal, since the effective throughput of around 280 Mbps [6] is limited. However, it should be sufficient for the purpose of transferring video data consisting of several frames per second.

10 3 Preliminary Design Process 3.1. Design Process In the first few weeks of the project, most of the time was spent on having brainstorm sessions with the team. A few different options were considered for implementation and this chapter is meant to explain the process we went through before purchasing the required hardware. Having the team agree about one of the solutions to work with took longer than expected. Augmented reality is based upon creating additional layer of information on top of how we perceive the world around us. This is different from virtual reality, because that is meant to immerse the user into a non-existing world. In order to implement augmented reality into a virtual environment, the real world has to be recreated into the virtual one. This can be done by adding two cameras to the system to replace the user s eyes. By connecting the virtual reality equipment and the cameras to a powerful rendering computer, an AR experience can be created using VR equipment. However, the solution using a computer to connect all the components has already been done before and therefore cannot be categorized as state-of-the-art technology [2]. One of the disadvantages involving a computer as main calculator is that the system adds a lot of latency to the virtual environment. When the user wants to move around, the recreated world the user perceives will lag behind. The solution to this problem is to create a low-latency path between the camera video streams and the virtual reality equipment. This can be done by using an FPGA, because the device is able to process video streams (requiring a relatively high bandwidth) in real time while keeping the added latency low Draft Concepts To make the project more interesting, the initial idea was to use four cameras recording two different spectra. Two cameras are used for the stereoscopic view and the other two are used as cheap alternatives for an infrared camera. Modifying a normal camera into an infrared camera is possible, because the embedded sensor is capable of perceiving frequencies in the near infrared spectrum [7]. However, because the human eye cannot perceive infrared, these relatively low frequencies are normally suppressed by a filter placed in front of the lens. By removing this filter, the camera can be used for recording near-infrared data. After deciding on which hardware components to use, three options for implementing the design were discussed. At this moments the team was already divided in three subgroups: Computer, Camera and FPGA. The first design proposal can be found in Figure

11 3.2. Draft Concepts 5 Figure 3.1: First discussed implementation design In Figure 3.1, the four cameras are connected to the FPGA through their video interfaces and the FPGA is connected to the computer using USB 2.0 and HDMI. For each pixel in the output stream can be chosen whether to use the IR camera or normal camera video stream. This decision would be made based on a hard-coded threshold value. Because the decision making is done on the FPGA, the added latency will be relatively low. However, more code needs to be written to program the FPGA, which is more difficult than writing code for a personal computer. Also, when the user would want to process the IR camera video streams on the computer, this data has to be send though the USB 2.0 interface, which has a limited throughput. Figure 3.2: Second discussed implementation design Compared to Figure 3.1, the second implementation depicted in Figure 3.2 adds a serial control component from the computer to the FPGA. By using this concept the computer is able to decide which pixels should be selecting from the available video streams. The FPGA can use these decisions as a mask for selected the different video input streams. This adds flexibility to the system. However, the problem of the limited USB 2.0 connection is still not solved. Complexity of the FPGA design is also increased by moving more logic into the device. The schedule depicted in Figure 3.3 has the advantage of being modular. Any device which

12 6 3. Preliminary Design Process Figure 3.3: Third implementation sketch can be connected to a computer is able to interface with the augmented reality setup. Also the latency of the camera video streams is low, because the required amount of processing time on the FPGA is at most a few frames. The downside of this approach is the extra lag introduced in the augmented reality layer. However, because creating objects in a virtual environment based on the real world requires complex computations, this is not something that should be done on the FPGA FPGA After discussing the top level overview of the preliminary design the team had to decide on which FPGA would be used for the project. The top level design implies the following requirements for the FPGA: An HDMI input port for transporting video from the computer to the FPGA An HDMI output port for transporting the video stream to the Oculus Rift At least 64 general-purpose input/output (GPIO) pins for connecting the four cameras An USB or serial interface fast enough for sending video streams to the computer After consulting with the University of Delft the team found out they did not have an FGPA available suiting the requirements. So the search was continued on the internet. This was a lot harder than expected, because the FPGAs that were found almost always had a price higher than the available budget. After intensive research two suitable FPGAs were found: The Terasic Cyclone V GX Starter Kit, 200, found at Mouser Electronics [8] The Nexys Video Artix-7 FPGA, $490 found at the Digilent webstore [9] The Nexys board seems to be twice the price of the Terasic. However, Digilent offers an academic discount, which results into the Nexys board having a price around 300 (shipping included). This still is quite a difference, although it can be explained by noticing the Nexys board is one of the cheapest available devices having an HDMI sink. The Terasic board is shown in Figure 3.4 and the Nexys board can be found in Figure 3.5. Both images were copied from the websites cited in the previous bullet points.

13 3.3. FPGA 7 Figure 3.4: The Terasic Cyclone V GX Starter Kit Figure 3.5: The Nexys Video Artix-7 FPGA The problem here is that both boards don t have enough GPIO pins available to interface with the cameras. Luckily enough there are expansion boards available to increase the amount of GPIO pins. The advantage of the Terasic board is the lower price and the cheaper expansion board of only 55 [10]. The cheapest available FMC expansion board suited for the Nexys Video has a ridiculous price tag of 180 [11]. The expansion boards are shown in Figure 3.6 and Figure 3.7. Images were copied from the previously mentioned citations. Figure 3.6: Expansion Board for the Terasic FPGA Figure 3.7: Expansion Board for the Nexys Video FPGA The disadvantage of the Terasic board is that it doesn t have an HDMI sink and therefore another interface is required to connect one of the computer s video outputs to the FPGA. After consulting with our supervisor about the price of the boards and their capabilities, the decision was made to buy the Nexys Video board and corresponding expansion board. Although these two components together are twice the price of the Terasic and its expansion board, the Nexys Video is a better option. The main reason for choosing the Nexys Video is because the prototype will have an HDMI input port. This results into the product being reusable for other projects developing solutions using augmented reality. Also a lot of documentation about the Nexys Video is available on the website of Digilent, which will ease the development [12].

14 4 System Overview 4.1. Introduction To be able to send the camera feed as fast as possible to the VR glasses a Field-Programmable Gate Array (FPGA) is used. That way, the camera feed doesn t have to go to a computer where software is used to decode the image and encode it to send the image to the VR glasses, because that is the cause of the biggest delay. In the FPGA this is done without software, only with hardware. This way the delay will be at most a few frames. The FPGA connects all parts of this project. The FPGA gets the camera feed, sends it to the computer, gets video input from the computer for the AR part, mixes the camera feed with the AR video stream from the computer and sends it to the VR glasses. To program the FPGA Vivado [13] used. Vivado can deal with Verilog and VHDL. In this project the language used is VHDL. In Vivado a design can be made by converting VHDL code to a block with in and output ports and connecting them with wires. Vivado also works with Intellectual property (IP) blocks, these are blocks with a certain function that can be placed inside the design and adjusted to a certain level. The real VHDL or Verilog code can not be adjusted. These blocks helped to achieve certain goals, that will be specified below HDMI The FPGA has two HDMI ports, one input port and one output port. To send video signals over the HDMI channels the protocol had to be investigated [14]. HDMI works with Transition Minimized Differential Signaling (TMDS). TMDS [15] uses four lines to transfer video data. Three lines for each one color, Red, Green and Blue and one line with a pixel clock signal. An IP block was found that could decode TMDS to RGB values, a pixel clock, Horizontal Sync (HSync), Vertical Sync (VSync) and a video enable signal [16] and one that could decode those signals to TMDS. The pixel clock has a rising edge during every pixel. HSync is high after a horizontal line is finished. VSync becomes high after a whole frame. Video enable is high during the part that pixels are send. To make a valid HDMI video signal, the right pixel clock, HSync, VSync and video enable signal had to be produced. To get these signals a modeline calculator was used. A modeline calculator calculates at what time the HSync and VSync signal have to be high. HDMI has a front and back porch after each horizontal line of pixels. That is the reason that there is a video enable signal. This makes sure that non-valid data in the front or back porch is not seen as a pixel, because the signal will be low there. After the front porch the HSync will be 8

15 4.3. Camera 9 high for a certain time. After that is the back porch. After the back porch a new horizontal line of pixels is send. Until the frame is full. At that time the VSync will be high after his front porch and the screen will then know that this was the end of the frame Camera The camera outputs its pixels in YUV format. Y stands for the amount of lux, how much light there is in a pixel. U and V are the chrominance (color) components. Because the TMDS block outputs RGB values, YUV is converted in the FPGA to RGB values. The camera also sends a VSync signal and a HREF signal, that looks a lot like a video enable signal that HDMI uses. For further details about the implementation of the camera, see Augmented Reality in a Virtual Reality Setup: The Camera [17] Multiplexer To be able to make the glasses AR there must be a way to mix the camera feed with the video images from the computer. To this extent, a solution similar to green screening is chosen (Chroma Keying [18]). The HDMI output of the computer will have pixels with an RGB color value of (0,255,0). In the FPGA these pixels will be replaced by the corresponding pixels from the video camera. The biggest advantage of this implementation is the short path between the camera and the Oculus Rift Buffer In order to synchronize the camera feed with the video stream of the computer a buffer is needed. This is because both feeds will not be at the same pixel at the same time. Both feeds have to be buffered in the DDR3 RAM available on the FPGA. This will unfortunately cause extra delay, but it is necessary for the system to work properly USB Connection To be able to send the camera feed to the computer there is chosen to use the USB connection on the FPGA. This part is done by another group that was looking into the computer part of the project [19]. The camera feed is needed in the computer to be able to make the system AR. Objects can be placed upon the camera feed, after which they send only their overlay via HDMI. This is later on mixed with the camera feed in the Mux part of the design.

16 5 Implementation In this chapter the implementation of all subsystems are discussed HDMI HDMI needs HSync and VSync singals at certain times. To determine at what time they had to be high the code from appendix A.1 is used. In a block design, this code will look like Figure 5.1. Here, you can see the input ports on the left and the output ports on the right. The clk (clock) input needs to be the pixel clock, which is generated somewhere else. It has a reset port to reset all signals. The sw port are 7 switches that can be connected to this version of the block. These 7 switches are converted to a color, this is for debugging only. The RGB input consist of 24 bits, which is equal to 3 bytes. One byte per color, red, green and blue. The last input, btn, is a button that is used for debugging. Pressing the button switches the output between the color made by the switches or the RGB value inputted. sync_generator_0 clk resetn sw[7:0] RGB[23:0] btn vsync hsync venable displayout[23:0] sync_generator_v1_0 Figure 5.1: Sync Generator At the output there are four ports. vsync becomes 1 after a whole frame is send. hsync becomes 1 after one horizontal line of pixels is sent. venable becomes 1 when the block is sending pixels. displayout is the RGB value of the current pixel. Inside the block are two counters, counterx and countery. counterx increases every rising edge of the clock by one. When counterx has been reset, and thus is equal to zero, venable becomes 1. When the counter is equal to the width of the frame, for example 1280 pixels, venable becomes 0. After another few clock cycles, the front porch, hsync becomes 1. The amount of clock cycles needed are calculated with a modeline calculator. After another few clock cycles hsync becomes 0 again. Then there is a back porch for a few clock cycles, 10

17 5.2. Camera decoder 11 after which counterx returns to 0, and countery is increased by one. This way the HDMI controller in a screen knows a line is done and the next line will start. After countery reaches the height of the image, for example 1024 pixels, venable will not become 1 anymore, but there will still be HSyncs. After the front porch of the VSync, vsync becomes 1. After a certain amount of horizontal lines vsync becomes 0 and there will be a VSync back porch. After the back porch the whole frame is done and the counters will be reset to zero again Camera decoder To read out the pixels from the camera fast, YUV422 is used. YUV422 means that two bytes with Y values of two adjoining pixels are sent and one byte U and one byte V that are the average for both pixels. This way two pixels can be recovered from four bytes. Consequently, the pixel clock of the camera can be higher. Because other parts of the project use the RGB format YUV has to be converted to RGB, which is done with three formulas [20]. The next formulas are used: R = Y (V 128) (5.1) G = Y (U 128) ( (V 128)) (5.2) B = Y (U 128) (5.3) The block design can be found in Figure 5.2. The inputs are HREF, VSync, PixelClk, resetn and data. All of these inputs, except resetn, come directly from the camera. HREF is like the venable signal for HDMI. It is always high when there is valid data, when pixels are send. VSync is high after each frame. PixelClk is the camera s pixel clock, it has one rising edge during every pixel. resetn is the reset of this block. The data input consist of the data the camera sends out. While valid data is being send, the data during one clock cycles is the Y, U or V value of a pixel. The output video is equal to the RGB value of one pixel. The code of this block can be found in appendix A.2. Camera_decoder_0 HREF VSync PixelClk video[23:0] resetn data[7:0] Camera_decoder_v1_0 Figure 5.2: Camera Decoder A Finite State Machine (FSM) is used to determine what sort of data is coming in. When VSync is low and HREF is high valid data bits are coming in, so the state will change to the state where Y is read. The first byte is always the first Y value of the YUV422 format. After Y is read the state will change to the state where U is read. After that it reads the second Y value. The last state will read the V component. When this byte is read in, the FSM will go back to the state to read the first Y value. At this time, the previous read YUV values are converted to two RGB pixel values. This will go on until HREF becomes low or VSync becomes high. Then all will be reset to their initial values.

18 12 5. Implementation 5.3. Memory Interface The amount of block storage available on the FPGA isn t sufficient to buffer even one frame of data from the video input sources. Therefore an interface is generated to the DDR3 memory found on the FPGA board. The Vivado suite has a tool called the Memory Interface Generator (MIG), which was used to create a memory controller block. This block is shown in Figure 5.3. mig_7series_0 reset sys_clock S_AXI sys_rst clk_ref_i sys_clk_i aresetn DDR3 ui_clk_sync_rst ui_clk ui_addn_clk_0 mmcm_locked init_calib_complete ddr3_sdram Memory Interface Generator (MIG 7 Series) Figure 5.3: Memory Interface Generator The ports shown in Figure 5.3 can be explained as followed. The sys_rst signal resets the memory controller when the reset signal is low. The sys_clk_i signal is the system clock speed on which the controller should be running. This is not the same speed at which the memory is running, however. The MIG block internally generates a few different clocks using a Mixed- Mode Clock Manager (MMCM), on which the actual DDR3 memory is running. The protocol to efficiently use the DDR3 memory is complicated, so making use of the MIG interface allows for easily integrating of the memory with the rest of the system. The S_AXI port is the main data bus of the MIG. Using the AXI4-full protocol, data transfers are initiated by the bus master. The MIG is always configured as slave device, because is serves as a data endpoint. The AXI4-full protocol supports data bursts, which can be used to send blocks of data instead of single packets. This increases the throughput on the bus, because the DDR3 also supports burst transactions. The DDR3 port is a vector of different signals that interface with the actual DDR3 memory peripheral. The signal ui_clk is the output clock for the user interface components. These components could be connected using sys_clk_i, however the clock s origin is an external oscillator, which should be buffered before usage. The last important signal is init_calib_complete. After receiving a reset signal, the MIG executes certain sequences to reset and calibrate the DDR3 memory. The pin init_calib_complete will be asserted when the calibration process is complete, so it functions as a trigger for other components to start performing operations invoking the memory. More details on the Memory Interface Generator can be found in the documentation provided by Xilinx [21].

19 5.4. AXI-lite Reader AXI-lite Reader Connecting the developed components to the main memory can be done by adding an AXI interface port. As discussed in the previous section, most of the components need memory access and thus require a block that perform read operations. In Figure 5.4 shows the block design of the AXI-lite Reader component. AXI-lite was chosen in favor of AXI-full, because it is easier to understand and implement. Although the bandwidth of the AXI-lite interface is more limited than AXI-full, this won t be a problem as the bus frequency can be increased when more throughput is required. ram_reader_0 LK TN clk ble M_AXI_ACLK M_AXI_ARESETN ENABLE UI_ADDR[31:0] ram_reader_v1_0 M_AXI UI_RDATA[31:0] UI_RVALID DONE Figure 5.4: Block design of the AXI reader component etn In Figure 5.4 the following ports can be found: AXI, M_AXI_ACLK and M_AXI_ARESETN are part of the AXI-lite interface. UI_ADDR, UI_ADDR, UI_RDATA and UI_RVALID are signals meant to transfer data between the AXI reader and the component requesting data from the memory. The reader will start performing transactions when an address is written to UI_ADDR and the ENABLE pin is asserted. Output pin DONE is asserted when all transactions are executed. pixe rese clk_ hsy ven pixe read pixe The amount of transactions performed by the AXI Reader can be configured before synthesizing the design in Xilinx Vivado. The component will start reading data from the given address and wait until it receives a response from the AXI slave it is connected to. Next, the internal address offset counter is increased by the amount of bytes in the data bus (which is four in the case of Figure 5.4) and the next transaction is initiated. When the predefined number of transactions is reached, the reader stops requesting data and asserts output pin DONE. The user component connected to the AXI readers has to implement a system for sampling data from output pin UI_RDATA at the moment UI_RVALID is asserted. In a future version of this component an additional input pin will be created to notify the reader that the data on pin UI_RDATA has been received. This is useful for transferring data between two different clock domains: the clock domain of the AXI bus and the domain of the user component connected to the AXI reader. At the moment the reader only supports synchronous transfers.

20 14 5. Implementation 5.5. System Interconnects After explaining the implementation of the blocks themselves, the system overview is presented. Figure 5.5 shows the general overview of how the different blocks will be connected. The Sync Generator is part of the Video out Controller. Additional logic is included for buffering a row of pixel data. This is necessary because the data read from the memory returns in small packets of one pixel. It is not a continuous stream of bytes. Figure 5.5: Block design overview for the FPGA The FPGA input and output ports in Figure 5.5 are connected as followed: The HDMI input and the USB 2.0 output port are connected to the computer, the HDMI output is connected to the Oculus Rift and each camera is connected to its own camera input port. The center of the design consists of the AXI interconnect. Is has three slave ports and one master port for communication with the main memory. The interconnect is made using an IP block from Xilinx, which can automatically adapt between different clock domains and AXI implementations. There exist three types of AXI implementations: AXI-full, AXI-lite and AXI-stream. AXI-lite is a simple implementation of AXI-full, focused on a small amount of single packet transfers. AXI-stream is designed as a burst-only protocol for transferring huge amounts of data without using addresses. AXI-full is the preferred implementation, however it is the most difficult to create such a controller. At the moment the AXI-full type bus is only implemented in the connection between the interconnect and the memory controller. For more information about the AXI protocols, see the documentation provided by ARM [22].

21 6 Validation 6.1. Sync Generator The Sync Generator module can be tested by generating a clock signal and applying it to the module. The resulting image should show reasonable venable and hsync signals. This means that those two signals are not allowed to overlap. Also, when the reset and clk_enabled are held low, the synchronization counters should be reset to zero and the signals venable and hsync should not be asserted. Figure 6.1: Testing the horizontal synchronization signal In Figure 6.1 all expected values for the previously mentioned signals can be seen. Only when reset (number 1) and clk_enabled (2) both are asserted, output is seen at the venable (3) and hsync (4). As for the vertical synchronization, it is expected to occur after an predefined set of horizontal synchronization signals and have a duration of at least four hsync pulses. Figure 6.2 shows the expected result for the vsync (3) signal. Also, note the duration of the hsync (2) pulses in comparison to the previous figure. Figure 6.2: Testing the vertical synchronization signal 15

22 16 6. Validation 6.2. Camera Decoder The camera decoder is tested by generating a clock signal, a HREF signal, a VSync signal and data equal to known YUV sequences to check the computed RGB value. Figure 6.3: Testing the camera decoder In the simulation (Figure 6.3 it it shown that the decoder works. When VSYnc = 0 and HREF becomes 1, the incoming data is saved on every rising edge of the pixel clock. The data in red are the first four valid data bytes, Y1, U, Y2 and V. When this sequence has been received the conversion starts and while the next sequence is coming in the converted pixels are send out. The first two pixel are both white, because the sequence ff,80,ff,80 has been chosen (all these values are hexadecimal). This thus translates to ffffff in RGB format. The next four bytes are 01 for Y1, 04 for U, 63 for Y2 and ff for V. This is dark red. The converter converts these values to b30000, which means 179 Red (on the scale 0 to 255), 0 green and 0 blue. Thus also dark red. Because in this pattern Y1 and Y2 are different, a new RGB value is calculated after two clock cycles, instead of four in the first part, where Y1 and Y2 were the same.

23 6.2. Camera Decoder AXI-lite Reader One of the created blocks implements an AXI-lite reader to fetch blocks of data from the main memory using an AXI bus. The testbench was constructed as followed: first an IP package provided by Xilinx would write a series of known values into the block memory at a predefined address. When the writer block is done, it asserts an output flag. This flag is then used as enable flag for the reader block. Figure 6.4 was extracted from one of the simulation results. The yellow number 1 found in Figure 6.4 shows the point where the enable flag is being asserted, marking the point where the data was written to the block memory. At point 2, the AXI reader writes the requested address to output signal M_AXI_ARADDR and asserts M_AXI_ARVALID. Next, at number 3, the response from the AXI slave is received. In this case, M_AXI_ARVALID is set to a value of 1, which means the requested address is valid and the data will be retrieved from the memory soon. A few clock cycles later, the memory controller has performed a lookup on the requested address and returns the data stored there. At number 4 in Figure 6.4 can be seen that the signal M_AXI_RVALID is asserted. The response tells the AXI master that the lookup has succeeded and the data can be read from the data channel. After the AXI master has sampled the data vector, it sets pin M_AXI_RREADY to 1 to indicate the data has been read and the slave can continue processing other requests, as can be seen in the figure at number 5. In this case master directly issues another command, at number 6, but it might be possible that the slave will not allow starting a new request before other requests are completed. In case an error occurs during the request, instead of asserting pin M_AXI_RVALID, input signal M_AXI_RRESP will be set to a value different from 00. Because the signal consists of two bits and one combination is used to indicate there was no error, three types of error messages can be communicated. 01 is set when an operation having exclusive access has succeeded, 10 means an error flag was set at the slave device and 11 means the requested address does not point to a valid slave device. In the AXI reader design these errors are ignored. Figure 6.4: Results of testing the AXI-lite reader

24 7 Discussion of Results The subsystems discussed in the previous sections all work properly as independent modules as is demonstrated in Chapter 6, the validation. However, all the components still need to be connected with each other. This will not be very difficult, but can only been done when everything is working properly (when we can send the camera feed to the HDMI). The HDMI video signal can be received and an HDMI video signal can be generated. The interface with the camera also succeeds in translating the YUV color space into RGB values required by the modules programmed into FPGA. The biggest problem in getting the system to work are currently the cameras. The interface used to communicate with the camera is working pretty well, however the correct setting for the camera to get it to output 60 frames per second at a resolution of 720p with interpolated RGB values just does not seems to work. The camera has a lot of configuration options and the set of parameters that meet the requirements have not been found yet. 18

25 8 Conclusion and Recommendations 8.1. Conclusion At the time of writing there is still no working prototype. Therefore cannot be concluded that the concept is going to work. A working prototype is expected soon, but with a lower frame-rate than preferred. However, to show that the concept works, the highest possible frame-rate is not required. We expect that the concept will work, so further development on this project is recommended Recommendations Recommended for future projects is to find better cameras that are easier to implement in the total design. The FPGA chosen for this project met the requirements. The additional GPIO pins required for connecting the cameras were provided by the expansion board. The HDMI protocol is also recommended for use in future projects concerning the transportation of video streams, because of the good video quality and high reliability of the protocol. 19

26 A VHDL Source Code A.1. Sync Generator 1 library IEEE; 2 use IEEE.STD_LOGIC_1164.ALL; 3 use IEEE.NUMERIC_STD.ALL; 4 5 entity sync_generator is 6 Port ( clk : in std_logic; 7 resetn : in std_logic; 8 sw : in std_logic_vector(7 downto 0); 9 RGB : in std_logic_vector(23 downto 0); 10 btn : in std_logic; 11 vsync : out std_logic; 12 hsync : out std_logic; 13 venable : out std_logic; 14 displayout : out std_logic_vector(23 downto 0) ); 15 end sync_generator; architecture Behavioral of sync_generator is signal counterx, countery : UNSIGNED (10 downto 0); 21 --counterx is used for HSync, countery for VSync 22 signal H_1,H_2,H_3,H_4,V_1,V_2,V_3,V_4 : UNSIGNED (11 downto 0) := (others => 0 ); 23 --Resolution and frequency specific values for the HDMI modeline begin process (clk, resetn, counterx, countery) 28 begin Reset is active low! 31 if (resetn = 0 ) then 32 vsync <= 0 ; 33 hsync <= 0 ; 34 venable <= 0 ; 20

27 A.1. Sync Generator counterx <= (others => 0 ); 36 countery <= (others => 0 ); elsif (rising_edge(clk)) then 40 if (counterx >= H_2) and (counterx < H_3) then 41 hsync <= 1 ; 42 else 43 hsync <= 0 ; 44 end if; if (countery >= V_2) and (countery < V_3) then 47 vsync <= 1 ; 48 else 49 vsync <= 0 ; 50 end if; if ((counterx < H_1) and (countery < V_1)) then 53 venable <= 1 ; 54 else 55 venable <= 0 ; 56 end if; if (counterx = (H_4-1)) then 59 counterx <= (others => 0 ); 60 if (countery = (V_4-1)) then 61 countery <= (others => 0 ); 62 else 63 countery <= countery + 1; 64 end if; 65 else 66 counterx <= counterx + 1; 67 end if; end if; end process; process(btn) 74 begin 75 if (btn = 0 ) then 76 displayout <= ; 78 else 79 displayout <= 80 sw & sw & sw; 81 end if; 82 end process; INPUT MODELINE VALUES: 84 H_1 <= to_unsigned(1280,0); 85 H_2 <= to_unsigned(1360,0); 86 H_3 <= to_unsigned(1496,0); 87 H_4 <= to_unsigned(1712,0); 88 V_1 <= to_unsigned(1024,0); 89 V_2 <= to_unsigned(1028,0); 90 V_3 <= to_unsigned(1032,0);

28 22 A. VHDL Source Code 91 V_4 <= to_unsigned(1063,0); 92 end Behavioral; A.2. Camera Decoder 1 library IEEE; 2 use IEEE.STD_LOGIC_1164.ALL; 3 use IEEE.NUMERIC_STD.ALL; 4 5 entity Camera_decoder is 6 Port ( HREF : in STD_LOGIC; 7 VSync : in STD_LOGIC; 8 PixelClk : in STD_LOGIC; 9 resetn : in STD_LOGIC; 10 data : in STD_LOGIC_VECTOR (7 downto 0); 11 video : out STD_LOGIC_VECTOR (23 downto 0)); 12 end Camera_decoder; architecture Behavioral of Camera_decoder is signal y1, u1, y2, v1, y3, u2, y4, v2: std_logic_vector(7 downto 0); 17 signal y1_en, y2_en, u_en, v_en, leo, rw, pix, res: std_logic; 18 type state_type IS (Idle, write_y1, write_y2, write_u, write_v); 19 signal state, n_state : state_type; begin process(pixelclk, resetn) 24 begin 25 if (resetn = 0 ) then 26 state <= Idle; 27 res <= 1 ; 28 elsif rising_edge(pixelclk) then 29 if (res = 1 ) then 30 res <= 0 ; 31 state <= Idle; 32 else 33 state <= n_state; 34 end if; 35 end if; 36 end process; process(state, HREF, VSync, resetn, PixelClk) 39 begin 40 case state is 41 when Idle => 42 if (VSync = 0 ) and (HREF = 1 ) then 43 n_state <= write_y1; 44 else 45 n_state <= Idle; 46 end if; 47 y1_en <= 0 ; 48 u_en <= 0 ; 49 y2_en <= 0 ; 50 v_en <= 0 ;

29 A.2. Camera Decoder rw <= 0 ; 52 when write_y1 => 53 y1_en <= 1 ; 54 u_en <= 0 ; 55 y2_en <= 0 ; 56 v_en <= 0 ; 57 rw <= 1 ; 58 n_state <= write_u; 59 when write_u => 60 y1_en <= 0 ; 61 u_en <= 1 ; 62 y2_en <= 0 ; 63 v_en <= 0 ; 64 rw <= 0 ; 65 n_state <= write_y2; 66 when write_y2 => 67 y1_en <= 0 ; 68 u_en <= 0 ; 69 y2_en <= 1 ; 70 v_en <= 0 ; 71 rw <= 1 ; 72 n_state <= write_v; 73 when write_v => 74 y1_en <= 0 ; 75 u_en <= 0 ; 76 y2_en <= 0 ; 77 v_en <= 1 ; 78 rw <= 0 ; 79 n_state <= write_y1; 80 when others => 81 y1_en <= 0 ; 82 u_en <= 0 ; 83 y2_en <= 0 ; 84 v_en <= 0 ; 85 rw <= 0 ; 86 n_state <= Idle; 87 end case; 88 end process; process(pixelclk, resetn) 91 variable r_t, g_t, b_t, c_v1, c_v2, d_v, e_v, c_v3, c_v4, d_v1, e_v1 : integer := 0; 92 begin 93 if (resetn = 0 ) then 94 y1 <= (others => 0 ); 95 u1 <= (others => 0 ); 96 y2 <= (others => 0 ); 97 v1 <= (others => 0 ); 98 y3 <= (others => 0 ); 99 u2 <= (others => 0 ); 100 y4 <= (others => 0 ); 101 v2 <= (others => 0 ); 102 leo <= 0 ; 103 pix <= 0 ; 104 elsif rising_edge(pixelclk) then 105 if (y1_en = 1 ) then

30 24 A. VHDL Source Code 106 if (leo = 0 ) then 107 y1 <= data; 108 else 109 y3 <= data; 110 end if; 111 elsif (u_en = 1 ) then 112 if (leo = 0 ) then 113 u1 <= data; 114 else 115 u2 <= data; 116 end if; 117 elsif (y2_en = 1 ) then 118 if (leo = 0 ) then 119 y2 <= data; 120 else 121 y4 <= data; 122 end if; 123 elsif (v_en = 1 ) then 124 if (leo = 0 ) then 125 v1 <= data; 126 leo <= 1 ; 127 else 128 v2 <= data; 129 leo <= 0 ; 130 end if; 131 end if; 132 if (rw = 1 ) then 133 if (leo = 1 ) then 134 c_v1 := to_integer(unsigned(y1)); 135 c_v2 := to_integer(unsigned(y2)); 136 d_v := to_integer(unsigned(u1))-128; 137 e_v := to_integer(unsigned(v1))-128; 138 if (pix = 0 ) then 139 pix <= 1 ; 140 r_t := ((10000 * c_v1)+14075*(e_v))/10000; 141 g_t := ((10000 * c_v1)-(3455*d_v)-(7169*e_v))/10000; 142 b_t := ((10000 * c_v1)+17790*(d_v))/10000; 143 if (r_t < 0) then 144 r_t := 0; 145 elsif (r_t > 255) then 146 r_t := 255; 147 end if; 148 if (g_t < 0) then 149 g_t := 0; 150 elsif (g_t > 255) then 151 g_t := 255; 152 end if; 153 if (b_t < 0) then 154 b_t := 0; 155 elsif (b_t > 255) then 156 b_t := 255; 157 end if; 158 video <= std_logic_vector(to_unsigned(r_t,8)) & std_logic_vector(to_unsigned(b_t,8)) & std_logic_vector(to_unsigned(g_t,8)); 159 else

31 A.2. Camera Decoder pix <= 0 ; 161 r_t := ((10000 * c_v2)+14075*(e_v))/10000; 162 g_t := ((10000 * c_v2)-3455*d_v-(7169*e_v))/10000; 163 b_t := ((10000 * c_v2)+17790*(d_v))/10000; 164 if (r_t < 0) then 165 r_t := 0; 166 elsif (r_t > 255) then 167 r_t := 255; 168 end if; 169 if (g_t < 0) then 170 g_t := 0; 171 elsif (g_t > 255) then 172 g_t := 255; 173 end if; 174 if (b_t < 0) then 175 b_t := 0; 176 elsif (b_t > 255) then 177 b_t := 255; 178 end if; 179 video <= std_logic_vector(to_unsigned(r_t,8)) & 180 end if; 181 else std_logic_vector(to_unsigned(b_t,8)) & std_logic_vector(to_unsigned(g_t,8)); 182 c_v3 := to_integer(unsigned(y3)); 183 c_v4 := to_integer(unsigned(y4)); 184 d_v1 := to_integer(unsigned(u2))-128; 185 e_v1 := to_integer(unsigned(v2))-128; 186 if (pix = 0 ) then 187 pix <= 1 ; 188 r_t := ((10000 * c_v3)+14075*(e_v1))/10000; 189 g_t := ((10000 * c_v3)-3455*d_v1-(7169*e_v1))/10000; 190 b_t := ((10000 * c_v3)+17790*(d_v1))/10000; 191 if (r_t < 0) then 192 r_t := 0; 193 elsif (r_t > 255) then 194 r_t := 255; 195 end if; 196 if (g_t < 0) then 197 g_t := 0; 198 elsif (g_t > 255) then 199 g_t := 255; 200 end if; 201 if (b_t < 0) then 202 b_t := 0; 203 elsif (b_t > 255) then 204 b_t := 255; 205 end if; 206 video <= std_logic_vector(to_unsigned(r_t,8)) & 207 else 208 pix <= 0 ; std_logic_vector(to_unsigned(b_t,8)) & std_logic_vector(to_unsigned(g_t,8)); 209 r_t := ((10000 * c_v4)+14075*(e_v1))/10000; 210 g_t := ((10000 * c_v4)-3455*d_v1-(7169*e_v1))/10000; 211 b_t := ((10000 * c_v4)+17790*(d_v1))/10000;

32 26 A. VHDL Source Code 212 if (r_t < 0) then 213 r_t := 0; 214 elsif (r_t > 255) then 215 r_t := 255; 216 end if; 217 if (g_t < 0) then 218 g_t := 0; 219 elsif (g_t > 255) then 220 g_t := 255; 221 end if; 222 if (b_t < 0) then 223 b_t := 0; 224 elsif (b_t > 255) then 225 b_t := 255; 226 end if; 227 video <= std_logic_vector(to_unsigned(r_t,8)) & 228 end if; 229 end if; 230 end if; 231 end if; end process; end Behavioral; std_logic_vector(to_unsigned(b_t,8)) & std_logic_vector(to_unsigned(g_t,8)); A.3. AXI-lite Reader 1 library ieee; 2 use ieee.std_logic_1164.all; 3 use ieee.numeric_std.all; 4 use ieee.std_logic_misc.all; 5 6 entity ram_reader is 7 generic( 8 C_M_AXI_ADDR_WIDTH : integer := 32; 9 C_M_AXI_DATA_WIDTH : integer := 32; 10 C_NUM_READS : integer := ); 12 port( System Signals 14 M_AXI_ACLK : in std_logic; 15 M_AXI_ARESETN : in std_logic; Master Interface Write Address 18 M_AXI_AWADDR : out std_logic_vector(c_m_axi_addr_width-1 downto 0); 19 M_AXI_AWPROT : out std_logic_vector(3-1 downto 0); 20 M_AXI_AWVALID : out std_logic; 21 M_AXI_AWREADY : in std_logic; Master Interface Write Data 24 M_AXI_WDATA : out std_logic_vector(c_m_axi_data_width-1 downto 0); 25 M_AXI_WSTRB : out std_logic_vector(c_m_axi_data_width/8-1 downto 0); 26 M_AXI_WVALID : out std_logic;

33 A.3. AXI-lite Reader M_AXI_WREADY : in std_logic; Master Interface Write Response 30 M_AXI_BRESP : in std_logic_vector(2-1 downto 0); 31 M_AXI_BVALID : in std_logic; 32 M_AXI_BREADY : out std_logic; Master Interface Read Address 35 M_AXI_ARADDR : out std_logic_vector(c_m_axi_addr_width-1 downto 0); 36 M_AXI_ARPROT : out std_logic_vector(3-1 downto 0); 37 M_AXI_ARVALID : out std_logic; 38 M_AXI_ARREADY : in std_logic; Master Interface Read Data 41 M_AXI_RDATA : in std_logic_vector(c_m_axi_data_width-1 downto 0); 42 M_AXI_RRESP : in std_logic_vector(2-1 downto 0); 43 M_AXI_RVALID : in std_logic; 44 M_AXI_RREADY : out std_logic; User interface 47 ENABLE : in std_logic; 48 UI_ADDR : in std_logic_vector(c_m_axi_addr_width-1 downto 0); 49 UI_RDATA : out std_logic_vector (C_M_AXI_DATA_WIDTH-1 downto 0); 50 UI_RVALID : out std_logic; 51 DONE : out std_logic ); end ram_reader; Architecture architecture implementation of ram_reader is type state_type is (S_IDLE, S_ADDR, S_WAIT, S_READ, S_DONE); 63 signal current_state, next_state : state_type; signal offset : unsigned(31 downto 0); 66 signal axi_rready : std_logic; begin Master Interface Write Address 71 M_AXI_AWADDR <= X ; 72 M_AXI_AWPROT <= 000 ; 73 M_AXI_AWVALID <= 0 ; Master Interface Write Data 76 M_AXI_WDATA <= X ; 77 M_AXI_WSTRB <= 1111 ; 78 M_AXI_WVALID <= 0 ; Master Interface Write Response 81 M_AXI_BREADY <= 0 ; 82

34 28 A. VHDL Source Code Master Interface Read Address 84 M_AXI_ARPROT <= 001 ; Master Interface Read Data 87 M_AXI_RREADY <= axi_rready; State machine control 90 process(m_axi_aclk, M_AXI_ARESETN) 91 begin if (M_AXI_ARESETN = 0 ) then 94 current_state <= S_IDLE; 95 elsif (rising_edge(m_axi_aclk)) then 96 current_state <= next_state; 97 end if; end process; State machine process 102 process (current_state, offset, ENABLE, UI_ADDR, M_AXI_ARREADY, M_AXI_RVALID, M_AXI_RDATA) 103 begin 104 case current_state is when S_IDLE => M_AXI_ARADDR <= X ; 109 M_AXI_ARVALID <= 0 ; 110 axi_rready <= 0 ; 111 DONE <= 0 ; if (ENABLE = 1 ) then 114 next_state <= S_ADDR; 115 else 116 next_state <= S_IDLE; 117 end if; when S_ADDR => Set addr we want to read from 122 M_AXI_ARADDR <= std_logic_vector(unsigned(ui_addr) + offset); Set address valid bit 124 M_AXI_ARVALID <= 1 ; Default output values 127 axi_rready <= 0 ; 128 DONE <= 0 ; if AXI slave has accepted our address 131 if (M_AXI_ARREADY = 1 ) then 132 next_state <= S_WAIT; 133 else 134 next_state <= S_ADDR; 135 end if; when S_WAIT =>

Design and Implementation of an AHB VGA Peripheral

Design and Implementation of an AHB VGA Peripheral Design and Implementation of an AHB VGA Peripheral 1 Module Overview Learn about VGA interface; Design and implement an AHB VGA peripheral; Program the peripheral using assembly; Lab Demonstration. System

More information

ECE532 Digital System Design Title: Stereoscopic Depth Detection Using Two Cameras. Final Design Report

ECE532 Digital System Design Title: Stereoscopic Depth Detection Using Two Cameras. Final Design Report ECE532 Digital System Design Title: Stereoscopic Depth Detection Using Two Cameras Group #4 Prof: Chow, Paul Student 1: Robert An Student 2: Kai Chun Chou Student 3: Mark Sikora April 10 th, 2015 Final

More information

Block Diagram. dw*3 pixin (RGB) pixin_vsync pixin_hsync pixin_val pixin_rdy. clk_a. clk_b. h_s, h_bp, h_fp, h_disp, h_line

Block Diagram. dw*3 pixin (RGB) pixin_vsync pixin_hsync pixin_val pixin_rdy. clk_a. clk_b. h_s, h_bp, h_fp, h_disp, h_line Key Design Features Block Diagram Synthesizable, technology independent IP Core for FPGA, ASIC and SoC reset underflow Supplied as human readable VHDL (or Verilog) source code Simple FIFO input interface

More information

Ryerson University Department of Electrical and Computer Engineering EES508 Digital Systems

Ryerson University Department of Electrical and Computer Engineering EES508 Digital Systems 1 P a g e Ryerson University Department of Electrical and Computer Engineering EES508 Digital Systems Lab 5 - VHDL for Sequential Circuits: Implementing a customized State Machine 15 Marks ( 2 weeks) Due

More information

Lab 3: VGA Bouncing Ball I

Lab 3: VGA Bouncing Ball I CpE 487 Digital Design Lab Lab 3: VGA Bouncing Ball I 1. Introduction In this lab, we will program the FPGA on the Nexys2 board to display a bouncing ball on a 640 x 480 VGA monitor connected to the VGA

More information

HDL & High Level Synthesize (EEET 2035) Laboratory II Sequential Circuits with VHDL: DFF, Counter, TFF and Timer

HDL & High Level Synthesize (EEET 2035) Laboratory II Sequential Circuits with VHDL: DFF, Counter, TFF and Timer 1 P a g e HDL & High Level Synthesize (EEET 2035) Laboratory II Sequential Circuits with VHDL: DFF, Counter, TFF and Timer Objectives: Develop the behavioural style VHDL code for D-Flip Flop using gated,

More information

UNIVERSITY OF TORONTO JOÃO MARCUS RAMOS BACALHAU GUSTAVO MAIA FERREIRA HEYANG WANG ECE532 FINAL DESIGN REPORT HOLE IN THE WALL

UNIVERSITY OF TORONTO JOÃO MARCUS RAMOS BACALHAU GUSTAVO MAIA FERREIRA HEYANG WANG ECE532 FINAL DESIGN REPORT HOLE IN THE WALL UNIVERSITY OF TORONTO JOÃO MARCUS RAMOS BACALHAU GUSTAVO MAIA FERREIRA HEYANG WANG ECE532 FINAL DESIGN REPORT HOLE IN THE WALL Toronto 2015 Summary 1 Overview... 5 1.1 Motivation... 5 1.2 Goals... 5 1.3

More information

Traffic Light Controller

Traffic Light Controller Traffic Light Controller Four Way Intersection Traffic Light System Fall-2017 James Todd, Thierno Barry, Andrew Tamer, Gurashish Grewal Electrical and Computer Engineering Department School of Engineering

More information

Design and implementation (in VHDL) of a VGA Display and Light Sensor to run on the Nexys4DDR board Report and Signoff due Week 6 (October 4)

Design and implementation (in VHDL) of a VGA Display and Light Sensor to run on the Nexys4DDR board Report and Signoff due Week 6 (October 4) ECE 574: Modeling and synthesis of digital systems using Verilog and VHDL Fall Semester 2017 Design and implementation (in VHDL) of a VGA Display and Light Sensor to run on the Nexys4DDR board Report and

More information

VHDL test bench for digital image processing systems using a new image format

VHDL test bench for digital image processing systems using a new image format VHDL test bench for digital image processing systems using a new image format A. Zuloaga, J. L. Martín, U. Bidarte, J. A. Ezquerra Department of Electronics and Telecommunications, University of the Basque

More information

Block Diagram. 16/24/32 etc. pixin pixin_sof pixin_val. Supports 300 MHz+ operation on basic FPGA devices 2 Memory Read/Write Arbiter SYSTEM SIGNALS

Block Diagram. 16/24/32 etc. pixin pixin_sof pixin_val. Supports 300 MHz+ operation on basic FPGA devices 2 Memory Read/Write Arbiter SYSTEM SIGNALS Key Design Features Block Diagram Synthesizable, technology independent IP Core for FPGA, ASIC or SoC Supplied as human readable VHDL (or Verilog) source code Output supports full flow control permitting

More information

Digilent Nexys-3 Cellular RAM Controller Reference Design Overview

Digilent Nexys-3 Cellular RAM Controller Reference Design Overview Digilent Nexys-3 Cellular RAM Controller Reference Design Overview General Overview This document describes a reference design of the Cellular RAM (or PSRAM Pseudo Static RAM) controller for the Digilent

More information

Laboratory Exercise 7

Laboratory Exercise 7 Laboratory Exercise 7 Finite State Machines This is an exercise in using finite state machines. Part I We wish to implement a finite state machine (FSM) that recognizes two specific sequences of applied

More information

Flip-flop and Registers

Flip-flop and Registers ECE 322 Digital Design with VHDL Flip-flop and Registers Lecture Textbook References n Sequential Logic Review Stephen Brown and Zvonko Vranesic, Fundamentals of Digital Logic with VHDL Design, 2 nd or

More information

Lab 4: Hex Calculator

Lab 4: Hex Calculator CpE 487 Digital Design Lab Lab 4: Hex Calculator 1. Introduction In this lab, we will program the FPGA on the Nexys2 board to function as a simple hexadecimal calculator capable of adding and subtracting

More information

FPGA Laboratory Assignment 4. Due Date: 06/11/2012

FPGA Laboratory Assignment 4. Due Date: 06/11/2012 FPGA Laboratory Assignment 4 Due Date: 06/11/2012 Aim The purpose of this lab is to help you understanding the fundamentals of designing and testing memory-based processing systems. In this lab, you will

More information

Design and Implementation of Timer, GPIO, and 7-segment Peripherals

Design and Implementation of Timer, GPIO, and 7-segment Peripherals Design and Implementation of Timer, GPIO, and 7-segment Peripherals 1 Module Overview Learn about timers, GPIO and 7-segment display; Design and implement an AHB timer, a GPIO peripheral, and a 7-segment

More information

California State University, Bakersfield Computer & Electrical Engineering & Computer Science ECE 3220: Digital Design with VHDL Laboratory 7

California State University, Bakersfield Computer & Electrical Engineering & Computer Science ECE 3220: Digital Design with VHDL Laboratory 7 California State University, Bakersfield Computer & Electrical Engineering & Computer Science ECE 322: Digital Design with VHDL Laboratory 7 Rational: The purpose of this lab is to become familiar in using

More information

Lab 6: Video Game PONG

Lab 6: Video Game PONG CpE 487 Digital Design Lab Lab 6: Video Game PONG 1. Introduction In this lab, we will extend the FPGA code we developed in Labs 3 and 4 (Bouncing Ball) to build a simple version of the 1970 s arcade game

More information

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Introductory Digital Systems Laboratory

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Introductory Digital Systems Laboratory Problem Set Issued: March 2, 2007 Problem Set Due: March 14, 2007 Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.111 Introductory Digital Systems Laboratory

More information

Smart Night Light. Figure 1: The state diagram for the FSM of the ALS.

Smart Night Light. Figure 1: The state diagram for the FSM of the ALS. Smart Night Light Matt Ball, Aidan Faraji-Tajrishi, Thomas Goold, James Wallace Electrical and Computer Engineering Department School of Engineering and Computer Science Oakland University, Rochester,

More information

Laboratory Exercise 7

Laboratory Exercise 7 Laboratory Exercise 7 Finite State Machines This is an exercise in using finite state machines. Part I We wish to implement a finite state machine (FSM) that recognizes two specific sequences of applied

More information

FPGA Development for Radar, Radio-Astronomy and Communications

FPGA Development for Radar, Radio-Astronomy and Communications John-Philip Taylor Room 7.03, Department of Electrical Engineering, Menzies Building, University of Cape Town Cape Town, South Africa 7701 Tel: +27 82 354 6741 email: tyljoh010@myuct.ac.za Internet: http://www.uct.ac.za

More information

Design and analysis of microcontroller system using AMBA- Lite bus

Design and analysis of microcontroller system using AMBA- Lite bus Design and analysis of microcontroller system using AMBA- Lite bus Wang Hang Suan 1,*, and Asral Bahari Jambek 1 1 School of Microelectronic Engineering, Universiti Malaysia Perlis, Perlis, Malaysia Abstract.

More information

Pivoting Object Tracking System

Pivoting Object Tracking System Pivoting Object Tracking System [CSEE 4840 Project Design - March 2009] Damian Ancukiewicz Applied Physics and Applied Mathematics Department da2260@columbia.edu Jinglin Shen Electrical Engineering Department

More information

1 Terasic Inc. D8M-GPIO User Manual

1  Terasic Inc. D8M-GPIO User Manual 1 Chapter 1 D8M Development Kit... 4 1.1 Package Contents... 4 1.2 D8M System CD... 5 1.3 Assemble the Camera... 5 1.4 Getting Help... 6 Chapter 2 Introduction of the D8M Board... 7 2.1 Features... 7 2.2

More information

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Introductory Digital Systems Laboratory

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Introductory Digital Systems Laboratory Problem Set Issued: March 3, 2006 Problem Set Due: March 15, 2006 Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.111 Introductory Digital Systems Laboratory

More information

ECE 448 Lecture 10. VGA Display Part 1 VGA Synchronization

ECE 448 Lecture 10. VGA Display Part 1 VGA Synchronization ECE 448 Lecture 10 VGA Display Part 1 VGA Synchronization George Mason University Required Reading Old Edition of the Textbook 2008 (see Piazza) P. Chu, FPGA Prototyping by VHDL Examples Chapter 12, VGA

More information

Lab # 9 VGA Controller

Lab # 9 VGA Controller Lab # 9 VGA Controller Introduction VGA Controller is used to control a monitor (PC monitor) and has a simple protocol as we will see in this lab. Kit parts for this lab 1 A closer look VGA Basics The

More information

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Department of Electrical Engineering and Computer Sciences

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Department of Electrical Engineering and Computer Sciences MASSACHUSETTS INSTITUTE OF TECHNOLOGY Department of Electrical Engineering and Computer Sciences Introductory Digital Systems Lab (6.111) Quiz #2 - Spring 2003 Prof. Anantha Chandrakasan and Prof. Don

More information

Spartan-II Development System

Spartan-II Development System 2002-May-4 Introduction Dünner Kirchweg 77 32257 Bünde Germany www.trenz-electronic.de The Spartan-II Development System is designed to provide a simple yet powerful platform for FPGA development, which

More information

Eng. Mohammed Samara. Fall The Islamic University of Gaza. Faculty of Engineering. Computer Engineering Department

Eng. Mohammed Samara. Fall The Islamic University of Gaza. Faculty of Engineering. Computer Engineering Department Fall 2011 The Islamic University of Gaza Faculty of Engineering Computer Engineering Department ECOM 4111 - Digital Systems Design Lab Lab 7: Prepared By: Eng. Mohammed Samara Introduction: A counter is

More information

Certus TM Silicon Debug: Don t Prototype Without It by Doug Amos, Mentor Graphics

Certus TM Silicon Debug: Don t Prototype Without It by Doug Amos, Mentor Graphics Certus TM Silicon Debug: Don t Prototype Without It by Doug Amos, Mentor Graphics FPGA PROTOTYPE RUNNING NOW WHAT? Well done team; we ve managed to get 100 s of millions of gates of FPGA-hostile RTL running

More information

Block Diagram. deint_mode. line_width. log2_line_width. field_polarity. mem_start_addr0. mem_start_addr1. mem_burst_size.

Block Diagram. deint_mode. line_width. log2_line_width. field_polarity. mem_start_addr0. mem_start_addr1. mem_burst_size. Key Design Features Block Diagram Synthesizable, technology independent IP Core for FPGA, ASIC and SoC Supplied as human readable VHDL (or Verilog) source code pixin_ pixin_val pixin_vsync pixin_ pixin

More information

Viterbi Decoder User Guide

Viterbi Decoder User Guide V 1.0.0, Jan. 16, 2012 Convolutional codes are widely adopted in wireless communication systems for forward error correction. Creonic offers you an open source Viterbi decoder with AXI4-Stream interface,

More information

TSIU03: Lab 3 - VGA. Petter Källström, Mario Garrido. September 10, 2018

TSIU03: Lab 3 - VGA. Petter Källström, Mario Garrido. September 10, 2018 Petter Källström, Mario Garrido September 10, 2018 Abstract In the initialization of the DE2-115 (after you restart it), an image is copied into the SRAM memory. What you have to do in this lab is to read

More information

LogiCORE IP Video Timing Controller v3.0

LogiCORE IP Video Timing Controller v3.0 LogiCORE IP Video Timing Controller v3.0 Product Guide Table of Contents Chapter 1: Overview Standards Compliance....................................................... 6 Feature Summary............................................................

More information

VID_OVERLAY. Digital Video Overlay Module Rev Key Design Features. Block Diagram. Applications. Pin-out Description

VID_OVERLAY. Digital Video Overlay Module Rev Key Design Features. Block Diagram. Applications. Pin-out Description Key Design Features Block Diagram Synthesizable, technology independent VHDL IP Core Video overlays on 24-bit RGB or YCbCr 4:4:4 video Supports all video resolutions up to 2 16 x 2 16 pixels Supports any

More information

LogiCORE IP AXI Video Direct Memory Access v5.01.a

LogiCORE IP AXI Video Direct Memory Access v5.01.a LogiCORE IP AXI Video Direct Memory Access v5.01.a Product Guide Table of Contents Chapter 1: Overview Feature Summary.................................................................. 9 Applications.....................................................................

More information

Spartan-II Development System

Spartan-II Development System 2002-May-4 Introduction Dünner Kirchweg 77 32257 Bünde Germany www.trenz-electronic.de The Spartan-II Development System is designed to provide a simple yet powerful platform for FPGA development, which

More information

Video Graphics Array (VGA)

Video Graphics Array (VGA) Video Graphics Array (VGA) Chris Knebel Ian Kaneshiro Josh Knebel Nathan Riopelle Image Source: Google Images 1 Contents History Design goals Evolution The protocol Signals Timing Voltages Our implementation

More information

EEM Digital Systems II

EEM Digital Systems II ANADOLU UNIVERSITY DEPARTMENT OF ELECTRICAL AND ELECTRONICS ENGINEERING EEM 334 - Digital Systems II LAB 3 FPGA HARDWARE IMPLEMENTATION Purpose In the first experiment, four bit adder design was prepared

More information

Programmable Logic Design I

Programmable Logic Design I Programmable Logic Design I Introduction In labs 11 and 12 you built simple logic circuits on breadboards using TTL logic circuits on 7400 series chips. This process is simple and easy for small circuits.

More information

MIPI D-PHY Bandwidth Matrix Table User Guide. UG110 Version 1.0, June 2015

MIPI D-PHY Bandwidth Matrix Table User Guide. UG110 Version 1.0, June 2015 UG110 Version 1.0, June 2015 Introduction MIPI D-PHY Bandwidth Matrix Table User Guide As we move from the world of standard-definition to the high-definition and ultra-high-definition, the common parallel

More information

Group 1. C.J. Silver Geoff Jean Will Petty Cody Baxley

Group 1. C.J. Silver Geoff Jean Will Petty Cody Baxley Group 1 C.J. Silver Geoff Jean Will Petty Cody Baxley Vision Enhancement System 3 cameras Visible, IR, UV Image change functions Shift, Drunken Vision, Photo-negative, Spectrum Shift Function control via

More information

Section 14 Parallel Peripheral Interface (PPI)

Section 14 Parallel Peripheral Interface (PPI) Section 14 Parallel Peripheral Interface (PPI) 14-1 a ADSP-BF533 Block Diagram Core Timer 64 L1 Instruction Memory Performance Monitor JTAG/ Debug Core Processor LD 32 LD1 32 L1 Data Memory SD32 DMA Mastered

More information

Zebra2 (PandA) Functionality and Development. Isa Uzun and Tom Cobb

Zebra2 (PandA) Functionality and Development. Isa Uzun and Tom Cobb Zebra2 (PandA) Functionality and Development Isa Uzun and Tom Cobb Control Systems Group 27 April 2016 Outline Part - I ZEBRA and Motivation Hardware Architecture Functional Capabilities Part - II Software

More information

SingMai Electronics SM06. Advanced Composite Video Interface: HD-SDI to acvi converter module. User Manual. Revision 0.

SingMai Electronics SM06. Advanced Composite Video Interface: HD-SDI to acvi converter module. User Manual. Revision 0. SM06 Advanced Composite Video Interface: HD-SDI to acvi converter module User Manual Revision 0.4 1 st May 2017 Page 1 of 26 Revision History Date Revisions Version 17-07-2016 First Draft. 0.1 28-08-2016

More information

EE178 Spring 2018 Lecture Module 5. Eric Crabill

EE178 Spring 2018 Lecture Module 5. Eric Crabill EE178 Spring 2018 Lecture Module 5 Eric Crabill Goals Considerations for synchronizing signals Clocks Resets Considerations for asynchronous inputs Methods for crossing clock domains Clocks The academic

More information

VGA Controller. Leif Andersen, Daniel Blakemore, Jon Parker University of Utah December 19, VGA Controller Components

VGA Controller. Leif Andersen, Daniel Blakemore, Jon Parker University of Utah December 19, VGA Controller Components VGA Controller Leif Andersen, Daniel Blakemore, Jon Parker University of Utah December 19, 2012 Fig. 1. VGA Controller Components 1 VGA Controller Leif Andersen, Daniel Blakemore, Jon Parker University

More information

Fixed-Point Calculator

Fixed-Point Calculator Fixed-Point Calculator Robert Kozubiak, Muris Zecevic, Cameron Renny Electrical and Computer Engineering Department School of Engineering and Computer Science Oakland University, Rochester, MI rjkozubiak@oakland.edu,

More information

Lab Assignment 2 Simulation and Image Processing

Lab Assignment 2 Simulation and Image Processing INF5410 Spring 2011 Lab Assignment 2 Simulation and Image Processing Lab goals Implementation of bus functional model to test bus peripherals. Implementation of a simple video overlay module Implementation

More information

LFSRs as Functional Blocks in Wireless Applications Author: Stephen Lim and Andy Miller

LFSRs as Functional Blocks in Wireless Applications Author: Stephen Lim and Andy Miller XAPP22 (v.) January, 2 R Application Note: Virtex Series, Virtex-II Series and Spartan-II family LFSRs as Functional Blocks in Wireless Applications Author: Stephen Lim and Andy Miller Summary Linear Feedback

More information

Radar Signal Processing Final Report Spring Semester 2017

Radar Signal Processing Final Report Spring Semester 2017 Radar Signal Processing Final Report Spring Semester 2017 Full report report by Brian Larson Other team members, Grad Students: Mohit Kumar, Shashank Joshil Department of Electrical and Computer Engineering

More information

VGA Pixel Buffer Stephen Just

VGA Pixel Buffer Stephen Just VGA Pixel Buffer Stephen Just 2016-02-20 1 Introduction Video output is often a useful addition to interactive projects but typically there have been many performance limitations with respect to video

More information

Lattice Embedded Vision Development Kit User Guide

Lattice Embedded Vision Development Kit User Guide FPGA-UG-02015 Version 1.1 January 2018 Contents Acronyms in This Document... 3 1. Introduction... 4 2. Functional Description... 5 CrossLink... 5 ECP5... 6 SiI1136... 6 3. Demo Requirements... 7 CrossLink

More information

The World Leader in High Performance Signal Processing Solutions. Section 15. Parallel Peripheral Interface (PPI)

The World Leader in High Performance Signal Processing Solutions. Section 15. Parallel Peripheral Interface (PPI) The World Leader in High Performance Signal Processing Solutions Section 5 Parallel Peripheral Interface (PPI) L Core Timer 64 Performance Core Monitor Processor ADSP-BF533 Block Diagram Instruction Memory

More information

BUSES IN COMPUTER ARCHITECTURE

BUSES IN COMPUTER ARCHITECTURE BUSES IN COMPUTER ARCHITECTURE The processor, main memory, and I/O devices can be interconnected by means of a common bus whose primary function is to provide a communication path for the transfer of data.

More information

Design and Implementation of SOC VGA Controller Using Spartan-3E FPGA

Design and Implementation of SOC VGA Controller Using Spartan-3E FPGA Design and Implementation of SOC VGA Controller Using Spartan-3E FPGA 1 ARJUNA RAO UDATHA, 2 B.SUDHAKARA RAO, 3 SUDHAKAR.B. 1 Dept of ECE, PG Scholar, 2 Dept of ECE, Associate Professor, 3 Electronics,

More information

COE758 Xilinx ISE 9.2 Tutorial 2. Integrating ChipScope Pro into a project

COE758 Xilinx ISE 9.2 Tutorial 2. Integrating ChipScope Pro into a project COE758 Xilinx ISE 9.2 Tutorial 2 ChipScope Overview Integrating ChipScope Pro into a project Conventional Signal Sampling Xilinx Spartan 3E FPGA JTAG 2 ChipScope Pro Signal Sampling Xilinx Spartan 3E FPGA

More information

Block Diagram. pixin. pixin_field. pixin_vsync. pixin_hsync. pixin_val. pixin_rdy. pixels_per_line. lines_per_field. pixels_per_line [11:0]

Block Diagram. pixin. pixin_field. pixin_vsync. pixin_hsync. pixin_val. pixin_rdy. pixels_per_line. lines_per_field. pixels_per_line [11:0] Rev 13 Key Design Features Block Diagram Synthesizable, technology independent IP Core for FPGA and ASIC Supplied as human readable VHDL (or Verilog) source code reset deint_mode 24-bit RGB video support

More information

Fingerprint Verification System

Fingerprint Verification System Fingerprint Verification System Cheryl Texin Bashira Chowdhury 6.111 Final Project Spring 2006 Abstract This report details the design and implementation of a fingerprint verification system. The system

More information

DEPARTMENT OF ELECTRICAL &ELECTRONICS ENGINEERING DIGITAL DESIGN

DEPARTMENT OF ELECTRICAL &ELECTRONICS ENGINEERING DIGITAL DESIGN DEPARTMENT OF ELECTRICAL &ELECTRONICS ENGINEERING DIGITAL DESIGN Assoc. Prof. Dr. Burak Kelleci Spring 2018 OUTLINE Synchronous Logic Circuits Latch Flip-Flop Timing Counters Shift Register Synchronous

More information

IMS B007 A transputer based graphics board

IMS B007 A transputer based graphics board IMS B007 A transputer based graphics board INMOS Technical Note 12 Ray McConnell April 1987 72-TCH-012-01 You may not: 1. Modify the Materials or use them for any commercial purpose, or any public display,

More information

Design of VGA and Implementing On FPGA

Design of VGA and Implementing On FPGA Design of VGA and Implementing On FPGA Mr. Rachit Chandrakant Gujarathi Department of Electronics and Electrical Engineering California State University, Sacramento Sacramento, California, United States

More information

Clarke and Inverse ClarkeTransformations Hardware Implementation. User Guide

Clarke and Inverse ClarkeTransformations Hardware Implementation. User Guide Clarke and Inverse ClarkeTransformations Hardware Implementation User Guide Clarke and Inverse Clarke Transformations Hardware Implementation User Guide Table of Contents Clarke and Inverse Clarke Transformations

More information

STATIC RANDOM-ACCESS MEMORY

STATIC RANDOM-ACCESS MEMORY STATIC RANDOM-ACCESS MEMORY by VITO KLAUDIO OCTOBER 10, 2015 CSC343 FALL 2015 PROF. IZIDOR GERTNER Table of contents 1. Objective... pg. 2 2. Functionality and Simulations... pg. 4 2.1 SR-LATCH... pg.

More information

Checkpoint 2 Video Encoder

Checkpoint 2 Video Encoder UNIVERSITY OF CALIFORNIA AT BERKELEY COLLEGE OF ENGINEERING DEPARTMENT OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE ASSIGNED: Week of 3/7 DUE: Week of 3/14, 10 minutes after start (xx:20) of your assigned

More information

IE1204 Digital Design. F11: Programmable Logic, VHDL for Sequential Circuits. Masoumeh (Azin) Ebrahimi

IE1204 Digital Design. F11: Programmable Logic, VHDL for Sequential Circuits. Masoumeh (Azin) Ebrahimi IE1204 Digital Design F11: Programmable Logic, VHDL for Sequential Circuits Masoumeh (Azin) Ebrahimi (masebr@kth.se) Elena Dubrova (dubrova@kth.se) KTH / ICT / ES This lecture BV pp. 98-118, 418-426, 507-519

More information

ACS College of Engineering. Department of Biomedical Engineering. HDL pre lab questions ( ) Cycle-1

ACS College of Engineering. Department of Biomedical Engineering. HDL pre lab questions ( ) Cycle-1 ACS College of Engineering Department of Biomedical Engineering HDL pre lab questions (2015-2016) Cycle-1 1. What is truth table? 2. Which gates are called universal gates? 3. Define HDL? 4. What is the

More information

Lancelot. VGA video controller for the Altera Nios II processor. V4.0. December 16th, 2005

Lancelot. VGA video controller for the Altera Nios II processor. V4.0. December 16th, 2005 Lancelot VGA video controller for the Altera Nios II processor. V4.0 December 16th, 2005 http://www.microtronix.com 1. Description Lancelot is a VGA video controller for the Altera Nios (II) processor.

More information

Solutions to Embedded System Design Challenges Part II

Solutions to Embedded System Design Challenges Part II Solutions to Embedded System Design Challenges Part II Time-Saving Tips to Improve Productivity In Embedded System Design, Validation and Debug Hi, my name is Mike Juliana. Welcome to today s elearning.

More information

Lab #5: Design Example: Keypad Scanner and Encoder - Part 1 (120 pts)

Lab #5: Design Example: Keypad Scanner and Encoder - Part 1 (120 pts) Nate Pihlstrom, npihlstr@uccs.edu Lab #5: Design Example: Keypad Scanner and Encoder - Part 1 (120 pts) Objective The objective of lab assignments 5 through 9 are to systematically design and implement

More information

EE178 Lecture Module 4. Eric Crabill SJSU / Xilinx Fall 2005

EE178 Lecture Module 4. Eric Crabill SJSU / Xilinx Fall 2005 EE178 Lecture Module 4 Eric Crabill SJSU / Xilinx Fall 2005 Lecture #9 Agenda Considerations for synchronizing signals. Clocks. Resets. Considerations for asynchronous inputs. Methods for crossing clock

More information

Parallel Peripheral Interface (PPI)

Parallel Peripheral Interface (PPI) The World Leader in High Performance Signal Processing Solutions Parallel Peripheral Interface (PPI) Support Email: china.dsp@analog.com ADSP-BF533 Block Diagram Core Timer 64 L1 Instruction Memory Performance

More information

Digital Blocks Semiconductor IP

Digital Blocks Semiconductor IP Digital Blocks Semiconductor IP DB1825 Color Space Converter & Chroma Resampler General Description The Digital Blocks DB1825 Color Space Converter & Chroma Resampler Verilog IP Core transforms 4:4:4 sampled

More information

An FPGA Platform for Demonstrating Embedded Vision Systems. Ariana Eisenstein

An FPGA Platform for Demonstrating Embedded Vision Systems. Ariana Eisenstein An FPGA Platform for Demonstrating Embedded Vision Systems by Ariana Eisenstein B.S., Massachusetts Institute of Technology (2015) Submitted to the Department of Electrical Engineering and Computer Science

More information

DT3162. Ideal Applications Machine Vision Medical Imaging/Diagnostics Scientific Imaging

DT3162. Ideal Applications Machine Vision Medical Imaging/Diagnostics Scientific Imaging Compatible Windows Software GLOBAL LAB Image/2 DT Vision Foundry DT3162 Variable-Scan Monochrome Frame Grabber for the PCI Bus Key Features High-speed acquisition up to 40 MHz pixel acquire rate allows

More information

Experiment: FPGA Design with Verilog (Part 4)

Experiment: FPGA Design with Verilog (Part 4) Department of Electrical & Electronic Engineering 2 nd Year Laboratory Experiment: FPGA Design with Verilog (Part 4) 1.0 Putting everything together PART 4 Real-time Audio Signal Processing In this part

More information

LogiCORE IP AXI Video Direct Memory Access v5.03a

LogiCORE IP AXI Video Direct Memory Access v5.03a LogiCORE IP AXI Video Direct Memory Access v5.03a Product Guide Table of Contents SECTION I: SUMMARY Chapter 1: Overview Feature Summary..................................................................

More information

Design Problem 4 Solutions

Design Problem 4 Solutions CSE 260 Digital Computers: Organization and Logical Design Jon Turner Design Problem 4 Solutions In this problem, you are to design, simulate and implement a maze game on the S3 board, using VHDL. This

More information

EXOSTIV TM. Frédéric Leens, CEO

EXOSTIV TM. Frédéric Leens, CEO EXOSTIV TM Frédéric Leens, CEO A simple case: a video processing platform Headers & controls per frame : 1.024 bits 2.048 pixels 1.024 lines Pixels per frame: 2 21 Pixel encoding : 36 bit Frame rate: 24

More information

IE1204 Digital Design F11: Programmable Logic, VHDL for Sequential Circuits

IE1204 Digital Design F11: Programmable Logic, VHDL for Sequential Circuits IE1204 Digital Design F11: Programmable Logic, VHDL for Sequential Circuits Elena Dubrova KTH/ICT/ES dubrova@kth.se This lecture BV pp. 98-118, 418-426, 507-519 IE1204 Digital Design, HT14 2 Programmable

More information

Lecture 6: Simple and Complex Programmable Logic Devices. EE 3610 Digital Systems

Lecture 6: Simple and Complex Programmable Logic Devices. EE 3610 Digital Systems EE 3610: Digital Systems 1 Lecture 6: Simple and Complex Programmable Logic Devices MEMORY 2 Volatile: need electrical power Nonvolatile: magnetic disk, retains its stored information after the removal

More information

Digital Blocks Semiconductor IP

Digital Blocks Semiconductor IP Digital Blocks Semiconductor IP General Description The Digital Blocks IP Core decodes an ITU-R BT.656 digital video uncompressed NTSC 720x486 (525/60 Video System) and PAL 720x576 (625/50 Video System)

More information

Sundance Multiprocessor Technology Limited. Capture Demo For Intech Unit / Module Number: C Hong. EVP6472 Intech Demo. Abstract

Sundance Multiprocessor Technology Limited. Capture Demo For Intech Unit / Module Number: C Hong. EVP6472 Intech Demo. Abstract Sundance Multiprocessor Technology Limited EVP6472 Intech Demo Unit / Module Description: Capture Demo For Intech Unit / Module Number: EVP6472-SMT949 Document Issue Number 1.1 Issue Data: 27th April 2012

More information

Figure 1: segment of an unprogrammed and programmed PAL.

Figure 1: segment of an unprogrammed and programmed PAL. PROGRAMMABLE ARRAY LOGIC The PAL device is a special case of PLA which has a programmable AND array and a fixed OR array. The basic structure of Rom is same as PLA. It is cheap compared to PLA as only

More information

FPGA 设计实例 基于 FPGA 的图形液晶显示面板应用. Graphic LCD panel. FPGAs make great video controllers and can easily control graphic LCD panels.

FPGA 设计实例 基于 FPGA 的图形液晶显示面板应用. Graphic LCD panel. FPGAs make great video controllers and can easily control graphic LCD panels. FPGA 设计实例 基于 FPGA 的图形液晶显示面板应用 Graphic LCD panel FPGAs make great video controllers and can easily control graphic LCD panels. This project is split in 4 parts: 1. Introduction 2. Video generator 3. Graphics

More information

TV Character Generator

TV Character Generator TV Character Generator TV CHARACTER GENERATOR There are many ways to show the results of a microcontroller process in a visual manner, ranging from very simple and cheap, such as lighting an LED, to much

More information

MTL Software. Overview

MTL Software. Overview MTL Software Overview MTL Windows Control software requires a 2350 controller and together - offer a highly integrated solution to the needs of mechanical tensile, compression and fatigue testing. MTL

More information

Modeling Latches and Flip-flops

Modeling Latches and Flip-flops Lab Workbook Introduction Sequential circuits are the digital circuits in which the output depends not only on the present input (like combinatorial circuits), but also on the past sequence of inputs.

More information

Lab #10 Hexadecimal-to-Seven-Segment Decoder, 4-bit Adder-Subtractor and Shift Register. Fall 2017

Lab #10 Hexadecimal-to-Seven-Segment Decoder, 4-bit Adder-Subtractor and Shift Register. Fall 2017 University of Texas at El Paso Electrical and Computer Engineering Department EE 2169 Laboratory for Digital Systems Design I Lab #10 Hexadecimal-to-Seven-Segment Decoder, 4-bit Adder-Subtractor and Shift

More information

EECS150 - Digital Design Lecture 12 Project Description, Part 2

EECS150 - Digital Design Lecture 12 Project Description, Part 2 EECS150 - Digital Design Lecture 12 Project Description, Part 2 February 27, 2003 John Wawrzynek/Sandro Pintz Spring 2003 EECS150 lec12-proj2 Page 1 Linux Command Server network VidFX Video Effects Processor

More information

SingMai Electronics SM06. Advanced Composite Video Interface: DVI/HD-SDI to acvi converter module. User Manual. Revision th December 2016

SingMai Electronics SM06. Advanced Composite Video Interface: DVI/HD-SDI to acvi converter module. User Manual. Revision th December 2016 SM06 Advanced Composite Video Interface: DVI/HD-SDI to acvi converter module User Manual Revision 0.3 30 th December 2016 Page 1 of 23 Revision History Date Revisions Version 17-07-2016 First Draft. 0.1

More information

Rensselaer Polytechnic Institute Computer Hardware Design ECSE Report. Lab Three Xilinx Richards Controller and Logic Analyzer Laboratory

Rensselaer Polytechnic Institute Computer Hardware Design ECSE Report. Lab Three Xilinx Richards Controller and Logic Analyzer Laboratory RPI Rensselaer Polytechnic Institute Computer Hardware Design ECSE 4770 Report Lab Three Xilinx Richards Controller and Logic Analyzer Laboratory Name: Walter Dearing Group: Brad Stephenson David Bang

More information

Chapter 1 HDMI-FMC Development Kit Chapter 2 Introduction of the HDMI-FMC Card Chapter 3 Using the HDMI-FMC Board...

Chapter 1 HDMI-FMC Development Kit Chapter 2 Introduction of the HDMI-FMC Card Chapter 3 Using the HDMI-FMC Board... Chapter 1 HDMI-FMC Development Kit... 2 1-1 Package Contents... 3 1-2 HDMI-FMC System CD... 3 1-3 Getting Help... 3 Chapter 2 Introduction of the HDMI-FMC Card... 4 2-1 Features... 5 2-2 Block Diagram

More information

CHECKPOINT 2.5 FOUR PORT ARBITER AND USER INTERFACE

CHECKPOINT 2.5 FOUR PORT ARBITER AND USER INTERFACE 1.0 MOTIVATION UNIVERSITY OF CALIFORNIA AT BERKELEY COLLEGE OF ENGINEERING DEPARTMENT OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE CHECKPOINT 2.5 FOUR PORT ARBITER AND USER INTERFACE Please note that

More information

Vending Machine. Keywords FSM, Vending Machine, FPGA, VHDL

Vending Machine. Keywords FSM, Vending Machine, FPGA, VHDL Vending Machine Khodur Dbouk, Basil Jajou, Kouder Abbas, Stevan Nissan Electrical and Computer Engineering Department School of Engineering and Computer Science Oakland University, Rochester, MI kdbouk@oakland.edu,

More information

Static Timing Analysis for Nanometer Designs

Static Timing Analysis for Nanometer Designs J. Bhasker Rakesh Chadha Static Timing Analysis for Nanometer Designs A Practical Approach 4y Spri ringer Contents Preface xv CHAPTER 1: Introduction / 1.1 Nanometer Designs 1 1.2 What is Static Timing

More information

DT9834 Series High-Performance Multifunction USB Data Acquisition Modules

DT9834 Series High-Performance Multifunction USB Data Acquisition Modules DT9834 Series High-Performance Multifunction USB Data Acquisition Modules DT9834 Series High Performance, Multifunction USB DAQ Key Features: Simultaneous subsystem operation on up to 32 analog input channels,

More information