Full-Speed USB 1.1 Function Controller

Similar documents
OPB Universal Serial Bus 2.0 Device (v1.00a)

32 Channel HDLC Core V1.2. Applications. LogiCORE Facts. Features. General Description. X.25 Frame Relay B-channel and D-channel

Single Channel HDLC Core V1.3. LogiCORE Facts. Features. General Description. Applications

Universal Serial Bus - USB 2.0

CARDBUS INTERFACE USER MANUAL

Controller IP for a Low Cost FPGA Based USB Device Core

USB Framework, IP Core and related software Tropea S.E., Melo R.A.

Configurable UART with FIFO ver 2.20

Universal Serial Bus Host Interface on an FPGA

STUDY, DESIGN AND SIMULATION OF FPGA BASED USB 2.0 DEVICE CONTROLLER

Configurable UART ver 2.10

EECE494: Computer Bus and SoC Interfacing. USB (Universal Series Bus) Dr. Charles Kim Electrical and Computer Engineering Howard University

VHDL: Modeling RAM and Register Files. Textbook Chapters: 6.6.1, 8.7, 8.8, 9.5.2, 11.2

FPGA design with National Instuments

ENGG3380: Computer Organization and Design Lab4: Buses and Peripheral Devices

Problem Set 10 Solutions

SL811HS Embedded USB Host/Slave Controller

The D igital Digital Logic Level Chapter 3 1

Summary of FPGA & VHDL

Prototyping NGC. First Light. PICNIC Array Image of ESO Messenger Front Page

SL811HS Embedded USB Host/Slave Controller

Embedded USB Host/Slave Controller

V8-uRISC 8-bit RISC Microprocessor AllianceCORE Facts Core Specifics VAutomation, Inc. Supported Devices/Resources Remaining I/O CLBs

EITF35 - Introduction to the Structured VLSI Design (Fall 2016) Interfacing Keyboard with FPGA Board. (FPGA Interfacing) Teacher: Dr.

Outline of Presentation

Laboratory Exercise 8

Serial Communications

Inferring Storage Elements

DYNAMIC ENGINEERING. 435 Park Dr., Ben Lomond, Calif Fax Est.

USB Compliance Checklist

Virtex-II Architecture. Virtex II technical, Design Solutions. Active Interconnect Technology (continued)

Microprocessors LCD Parallel Port USB Port

Field Programmable Gate Array

cpci-dart Base-Board & Daughter-Board

ECE 545 Lecture 12. Datapath vs. Controller. Structure of a Typical Digital System Data Inputs. Required reading. Design of Controllers

The Xilinx XC6200 chip, the software tools and the board development tools

FSM Components. FSM Description. HDL Coding Methods. Chapter 7: HDL Coding Techniques

Today. Comments about assignment Max 1/T (skew = 0) Max clock skew? Comments about assignment 3 ASICs and Programmable logic Others courses

Universal Asynchronous Receiver/Transmitter Core

ISP General description. Hi-Speed Universal Serial Bus interface device

Benefits of Embedded RAM in FLEX 10K Devices

DIGITAL LOGIC WITH VHDL (Fall 2013) Unit 1

High Speed USB Controllers for serial and FIFO applications. Debug Information for FT8U232/245 devices

FPGA briefing Part II FPGA development DMW: FPGA development DMW:

XAPP170 May 19, 1999 (Version 1.0) Application Note

VHDL. VHDL History. Why VHDL? Introduction to Structured VLSI Design. Very High Speed Integrated Circuit (VHSIC) Hardware Description Language

10/100M Ethernet-FIFO convertor

Introduction to Partial Reconfiguration Methodology

2. List the five interrupt pins available in INTR, TRAP, RST 7.5, RST 6.5, RST 5.5.

CprE 583 Reconfigurable Computing

UltraScale Architecture Integrated IP Core for Interlaken v1.3

Each I2C master has 8-deep transmit and receive FIFOs for efficient data handling. SPI to Dual I2C Masters. Registers

13. Configuring Stratix & Stratix GX Devices

FPGA for Complex System Implementation. National Chiao Tung University Chun-Jen Tsai 04/14/2011

Design & Implementation of AHB Interface for SOC Application

COM-8004SOFT SIGNAL DIVERSITY SPLITTER VHDL SOURCE CODE OVERVIEW

ECEU530. Project Presentations. ECE U530 Digital Hardware Synthesis. Rest of Semester. Memory Structures

Chapter 8 VHDL Code Examples

The goal of this project is to design an FPGA-based cipher unit for the Xilinx Spartan II XC2S100 FPGA running on the XESS board.

VME64M VME64 MASTER CONTROLLER. Version 1.1

Two HDLs used today VHDL. Why VHDL? Introduction to Structured VLSI Design

Designing a Low-Cost USB Interface for an Uninterruptable Power Supply with the Cypress Semiconductor CY7C63001 USB Controller

ECE 545 Lecture 12. FPGA Resources. George Mason University

Lecture 4: Modeling in VHDL (Continued ) EE 3610 Digital Systems

4 Multiplexer. Y Fig Keyboard Scan Matrix

Field Programmable Gate Array (FPGA)

EECS150 - Digital Design Lecture 10 Logic Synthesis

More on IO: The Universal Serial Bus (USB)

USB 3.0 A Cost Effective High Bandwidth Solution for FPGA Host Interface Introduction

Introduction to Field Programmable Gate Arrays

XiNES Design Document. XiNES is a Nintendo Entertainment System simulator coded in pure VHDL

C8051 Legacy-Speed 8-Bit Processor Core

Asynchronous FIFO Design

CHAPTER 6 FPGA IMPLEMENTATION OF ARBITERS ALGORITHM FOR NETWORK-ON-CHIP

VHDL And Synthesis Review

Interfacing an Intel386 TM EX Microprocessor to an CAN Controller

Chapter 11: Input/Output Organisation. Lesson 17: Standard I/O buses USB (Universal Serial Bus) and IEEE1394 FireWire Buses

Test Benches - Module 8

SHA3 Core Specification. Author: Homer Hsing

ISP General description. 2. Features. Full-speed Universal Serial Bus interface device

Topics. Midterm Finish Chapter 7

VHDL for Logic Synthesis

PCI LVDS 8T 8 Channel LVDS Serial Interface Dynamic Engineering 435 Park Drive, Ben Lomond, CA

D16750 IP Core. Configurable UART with FIFO v. 2.25

Avalon Streaming Interface Specification

FIFO Generator v13.0

M Tech credit seminar report, Electronic Systems group, EE Dept, IIT Bombay, submitted Nov 2002 UNIVERSAL SERIAL BUS

CS211 Digital Systems/Lab. Introduction to VHDL. Hyotaek Shim, Computer Architecture Laboratory

Preliminary. PACKAGE - 28-pin MLP (5mm X 5mm) Example Circuit Diagram CP V. 48MHz Oscillator. USB Function Controller 512B EEPROM

Fibre Channel Arbitrated Loop v2.3

Hello, and welcome to this presentation of the STM32 I²C interface. It covers the main features of this communication interface, which is widely used

A Hardware Filesystem Implementation for High-Speed Secondary Storage

Lecture 12 VHDL Synthesis

THANG LUONG CAO. Serial bus adapter design for FPGA. Master of Science Thesis

EECS150 - Digital Design Lecture 10 Logic Synthesis

Z8 Pod Adapter. for the. Fluke 9000-Series Troubleshooter

SMCSlite and DS-Link Macrocell Development

Hello, World: A Simple Application for the Field Programmable Port Extender (FPX)

FPGA Interfacing of HD44780 Based LCD Using Delayed Finite State Machine (FSM)

ZBT SRAM Controller Reference Design

Transcription:

2000-September-7 Introduction Dünner Kirchweg 77 32257 Bünde Germany www.trenz-electronic.de The lack of flexibility in reconfiguring the PC has been acknowledged as the Achilles heel to its further deployment. The combination of userfriendly graphical interfaces and the hardware and software mechanisms associated with newgeneration bus architectures have made computers less confrontational and easier to reconfigure. However, from the end user s point of view, the PC s I/O interfaces, such as serial/parallel ports, keyboard/mouse/joystick interfaces, etc., do not have the attributes of plug-and-play. The USB is the answer to connectivity for the PC architecture. It is a fast, bi-directional, isochronous, low-cost, dynamically attachable serial interface that is in line with the requirements of the PC platform of today and tomorrow. While several microcontrollers provide USB functionality, many applications require additional flexibility, reduced component count or maximum performance. These requirements are fully addressed by the Full-Speed USB Function controller while preserving development cycles as short as possible. Full-Speed USB 1.1 Function Controller Features Fully compliant to USB 1.1 specification - Full-Speed (12Mbps) operation - Support for 4 Endpoints, including up to 3 user-configurable Endpoints - Supports Bulk, Interrupt or Isochronous data transfers Hardwired USB protocol layer - No firmware intervention required - Up to 10Mbps bandwidth Very compact design - On-chip digital PLL - On-chip Endpoint FIFOs - Minimum gate count - Optimized for FPGA implementation Lowest possible design risk - Free behavioral model - Comprehensive reference application - USB Packet-oriented testbench - Synthesizable VHDL model Very low cost USB Upstream Transceiver Bus Clock Bus USB Transceiver 48MHz Serial Interface Engine (entity usbsie) USB Function Controller Endpoint Zero FIFO (entity usbep0fifo) Additional Endpoints Microcontroller Endpoint Zero Controller (entity usbep0ctrl) Functional Block e.g. HID device Figure 1: System architecture. SIE Control Bus Endpoint Bus EP0 Bus 1

General Overview Figure 1 shows the system architecture of a device based on the USB Function Controller. It consists of the following components: USB Transceiver. To meet the electrical requirements of the USB specification, an external Transceiver is required. The reference application utilizes Philips Semiconductor s PDIUSBP11A, but other devices can also be interfaced easily. Microcontroller. To implement the USB device framework a microcontroller is used. Glue logic to interface with a standard 8051 derivative is provided with the reference application, other microcontrollers can easily be interfaced. Additional Endpoints. In case the device requires additional endpoints, the associated endpoint controllers need to be implemented. A simple example is provided with the reference application. The USB function Controller consists of the following internal building blocks: Serial Interface Engine. This entity implements the full USB protocol layer. It is completely hardwired for speed and needs no firmware intervention. The functions of this entity include: frame recognition/generation, parallel/serial conversion, bit-stuffing/destuffing, CRC checking/generation, PID verification/generation, address recognition and handshake evaluation/generation. Endpoint Zero Controller. This entity implements the dedicated Endpoint Zero functionality, mainly FIFO control and arbitration. Endpoint Zero FIFO. This entity implements the 8byte FIFO associated with Endpoint Zero. Architectural Description The USB Function Controller is based on several bus systems, which interface the building blocks with each other: Clock Bus. This bus carries all clock and reset signals. Transceiver Bus. This is a bidirectional serial bus connecting the Serial Interface Engine with the external USB Transceiver. Endpoint Bus. This is a bidirectional bus connecting the Serial Interface Engine with up to 4 Endpoint Controllers. SIE Control Bus. This is a unidirectional bus connecting the Serial Interface Engine with the external microcontroller to set the device address. EP0 Bus. This is a bidirectional bus connecting the Endpoint Zero Controller with the external microcontroller. Table 1: Clock Bus: Signals. clk48 in 48MHz clock input in 12MHz clock input rst in asynchronous reset o out 12MHz clock output Clock Bus The Clock Bus carries all clock and reset signals. The USB Function Controller contains two clock domains, one clocked with 48MHz and another clocked with 12MHz. Table 1 summarizes the Clock Bus signals. The clk48 clock domain contains the digital PLL which outputs the reconstructed USB clock at o. All other building blocks are clocked by. This signal is usually directly driven by o. The rst signal is used for power-on reset. No USB reset condition is generated on rst. Table 2: Transceiver Bus: Signals. urxd in receive data urx0 in receive SE0 utxd out transmit data utx0 out transmit SE0 utxoe out transmit enable Transceiver Bus The Transceiver Bus connects the Serial Interface Engine with the external USB Transceiver. Table 2 lists the signals building the Transceiver Bus. 2 2000-September-7

Table 3 shows the relationship between the USB States and the Transceiver Bus signals. Table 3: Transceiver Bus: Mapping. Bus State urxd urx0 utxd utx0 utxoe receiving 1 (J) 1 0 X X 0 receiving 0 (K) 0 0 X X 0 receiving SE0 X 1 X X 0 rxd(7:0) rxen out_trac setup_trac nak stall < 1 >= 8 driving 1 (J) X X 1 0 1 driving 0 (K) X X 0 0 1 driving SE0 X X X 1 1 Endpoint Bus The Endpoint Bus connects the Serial Interface Engine with up to 4 Endpoint Controllers. Table 4 lists the signals building up the Endpoint Bus. Figure 2: Endpoint Bus: Receive Timing. Figure 2 illustrates the timing of SETUP and transactions. nak and setup must become valid within 1 clock cycle after the rising edge of out_trac or setup_trac. Data bytes are delivered approximately every 8 clock cycles. Data bytes will be delivered, even if the USB packet is ignored due to or STALL handshake. Table 4: Endpoint Bus: Signals. rxd(7:0) out receive data rxen out rxd enable txd(7:0) in transmit data txen in txd enable in_trac(3:0) out transaction out_trac(3:0) out transaction setup_trac(3:0) out SETUP transaction nak(3:0) in handshake stall(3:0) in STALL handshake togglein(3:0) in DATA toggle datain(3:0) in data pending sof_trac out SOF transaction rxfrm(10:0) out frame number All signals except for the data buses, data bus enables and SOF signals are available as groups of 4 signals, one associated with each endpoint. Endpoints interfacing to txd should use three-state buffers enabled with in_trac. txd(7:0) txen in_trac nak stall togglein datain < 1 >= 8 last data byte Figure 3: Endpoint Bus: Transmit Timing. Figure 3 illustrates the timing of transactions. nak, setup, togglein and datain should become valid within 1 clock cycle after the rising edge of in_trac. Data bytes are requested approximately every 8 clock cycles. datain should be released with the last data byte s txen pulse. To send a zero-length data packet, datain should be pulled to zero within 1 clock cycle after the rising edge of in_trac. Figure 4 illustrates SOF token timing. sof_token should be used to validate rxfrm, if glitch-free frame numbering is required. 3 2000-September-7

sof_token uc_dadx(6:0) rxfrm(11:0) uc_wradx Figure 4: Endpoint Bus: SOF Token. SIE Control Bus The SIE Control Bus connects the Serial Interface Engine with the external microcontroller to set the device address. Table 5 summarizes the signals. Table 5: SIE Control Bus: Signals. uc_dadx(6:0) in USB device address uc_wradx in write enable Figure 5 illustrates device address write timing. The actual address change is delayed until 1 clock cycle after the next rising edge on setup_trac. EP0 Bus The EP0 Bus connects the external microcontroller with the Endpoint Zero Controller. Table 6 summarizes its signals. Table 6: EP0 Bus: Signals. uc_adx(2:0) in FIFO address uc_drd(7:0) out FIFO read data uc_dwr(7:0) in FIFO write data setup_trac device address Figure 5: SIE Control Bus: Write timing. Figure 6: EP0 Controller: FIFO Read/ Write. To control operation of the EP0 Controller, a command register is used. Table 7 illustrates the command register layout. Table 7: EP0 Controller: Command Register. bit uc_adx(2:0) uc_drd(7:0) uc_dwr(7:0) uc_wren purpose 7 enable Control-Read 6 enable Control-Write/ No-Data Control 5 acknowledge Status stage 4 stall Endpoint 3:0 number of valid bytes in FIFO The command register is write-only, Figure 7 illustrates the command register write cycle. uc_wren in FIFO write enable uc_ctrl(7:0) in control uc_status(7:0) out status uc_wrctrl in control write enable The EP0 Controller provides access to the 8 byte Endpoint FIFO. Figure 6 illustrates FIFO read and write cycles. uc_ctrl(7:0) uc_wrctrl control register Figure 7: EP0 Bus: Command Register Write. 4 2000-September-7

The EP0 Controller provides status information through a status register. Table 8 illustrates the status register layout. Table 8: EP0 Bus: Status Register Layout. bit purpose 7 setup stage 6 data stage 5 status stage 4 reserved 3:0 number of valid bytes in FIFO The Endpoint Zero Controller interacts closely with the firmware to implement USB protocol layer sequences. Figure 8 illustrates, how to implement Control-Read Sequences. The basic scheme is as follows: Setup Stage - Wait until status(7:4) is 1000 - Evaluate Device Request Data Stage - Copy data into FIFO - Validate FIFO, set control(7:4) to1000 - Wait for non-zero status - Go to Status Stage, if status(7:4) is 0100 - Continue Data Stage Status Stage - Acknowledge, set control(7:4) to 0010 Figure 9 illustrates, how to implement Control- Write Sequences. The basic scheme is as follows: Setup Stage. - Wait until status(7:4) is 1000 - Evaluate Device Request Data Stage. - Empty FIFO, set control(7:4) to 0100 - Wait for non-zero status - Go to Status Stage, if status(7:4) is 0100 - Copy data from FIFO - Continue Data Stage Status Stage - Acknowledge, set control(7:4) to 0010 No-Data Control Sequences are implemented as Control-Write Sequences without Data Stage. Generics Endpoint setup is controlled by a set of generics, which are listed in Table 9. Table 9: Generics. generic epin_mask(3:0) epout_mask(3:0) epsetup_mask(3:0) episo_mask(3:0) purpose transaction mask transaction mask SETUP transaction mask isochronous endpoint mask Token SETUP Control(7:4) 1000 1000 0010 Status(7:4) 0000 1000 0000 0100 0000 0100 0010 0000 Figure 8: EP0 Controller: Control-Read. Token SETUP Control(7:4) 0100 0100 0010 Status(7:4) 0000 1000 0000 0100 0000 0100 0010 0000 Figure 9: EP0 Controller: Control-Write. 5 2000-September-7

Simulation Simulation is a vital part of design verification. To ease the task of test vector creation, a powerful VHDL package has been created. The main features of this package are: USB Packet-oriented Stimuli creation Response verification With USB packets being the atomic items of the package, complex testbenches can easily be created, which are isolated from USB protocol and timing details. Devices may be stimulated from USB and their responses to USB may be verified. This allows for simulation of complete systems including microcontroller and firmware. clk48, rst use work.usbtstpak.all;... sim<= '1', '0' after 15us;... process constant get_dscr: packetbuf:= ( x"80", x"06", x"00", x"01", x"00", x"00", x"40", x"00"); begin stim<= '1'; packetsetup(tb_clk, tb_xd, tb_x0, "0000000", "0000"); packet(tb_clk, tb_xd, tb_x0, get_dscr); stim<= '0'; packet(tb_clk, tb_xd, tb_x0); wait; end process; Test Controller (entity usbtstctrl) uut_rxd, uut_rx0 uut_txd, uut_tx0 UUT (black box) Figure 11: Simulation: Testbench Process. stim, sim tb_clk tb_xd, tb_x0 Testbench Process additional ports additional processes Table 10 summarizes the Test Controller ports. It is important to understand, that the Test Controller interfaces the Testbench Process with the UUT, instead of the Testbench Process interacting with the UUT directly. Figure 10: Simulation: Testbench Setup. Figure 10 illustrates the basic testbench setup. It consists of the following main components: UUT. This is the Unit Under Test. It is treated as a black box and exposes its behavior via its outside ports only. Test Controller. The Test Controller stimulates the UUT and verifies the UUT s responses. In case of a mismatch, a report is asserted. Testbench process. The Testbench Process controls the Test Controller s operation based on USB Packets. Figure 11 illustrates the Testbench process. The testbench package is implemented in usbtst- PAK. The signal sim is used to limit the total simulation time by disabling the clock oscillators inside usbtstctrl. The signal stim is used to distinguish stimuli from responses. The example transmits the Setup Stage of a GetDescriptor Device Request and verifies that the Device answers with an handshake. Table 10: Test Controller Ports. sim in 1 during simulation stim in 1 to stimulate UUT clk48 out 48MHz clock output rst out asynchronous reset uut_rxd out connected to UUT s urxd uut_rx0 out connected to UUT s urx0 uut_txd in connected to UUT s utxd uut_tx0 in connected to UUT s utx0 tb_xd in testbench xd signal tb_x0 in testbench x0 signal tb_clk out testbench 12MHz clock The following paragraphs summarize the procedures contained in usbtstpak. 6 2000-September-7

packet, packet, packetsetup signal x0: out STD_LOGIC; addr: in STD_LOGIC_VECTOR (6 downto 0); ep: in STD_LOGIC_VECTOR (3 downto 0)); packet, packet and packetsetup initiate an, or SETUP transaction to the address/endpoint specified by addr and ep. packetsof signal x0: out STD_LOGIC; frame: in STD_LOGIC_VECTOR (10 downto 0)); packetsof sends a Start-Of-Frame token with the frame number specified by frame. packet, packet signal x0: out STD_LOGIC; data: in packetbuf); packet and packet send/receive a DATA package with the contents specified by data. In case data is omitted, a zero-length packet is sent/received. packet, packet, packetstall signal x0: out STD_LOGIC); packet, packet and packetstall sends/receives an, or STALL handshake. packetidle signal x0: out STD_LOGIC; cycles: in TEGER); packetidle keeps the bus in idle (J) state for the number of USB bit cycles specified by cycles. packetreset signal x0: out STD_LOGIC); packetreset keeps the bus in SE0 state for more than 2.5us to generate a USB reset condition. Synthesis Synthesis of the USB Function Controller is straightforward, only very few constraints need to be considered for a successful implementation. Table 11 summarizes the timing groups and their constraints. The design uses the two clock domains clk48 and. is usually driven by the output of the internal DPLL on port o. Table 11: Synthesis: Timing Groups. From To Required Delay All Input Ports RC(clk48) 20ns All Input Ports FC(clk48) 10ns All Input Ports RC() 20ns RC(clk48) All Output Ports 20ns RC(clk48) RC(clk48) 20ns RC(clk48) RC() 20ns FC(clk48) RC(clk48) 10ns RC() All Output Ports 62ns RC() RC() 62ns The USB Function Controller contains a FIFO, which should be implemented with a technology dependent macro to achieve minimum resource usage. While some synthesizers support automatic RAM inference others require a manual black-box implementation. To do so, create the FIFO macro with the vendor-provided tools and remove the entity from the synthesis project. Instead the FIFO is added to the design during place & route. As FIFO depth is only 8 bytes, this optimization is not required by most applications. 7 2000-September-7

Implementation Assuming a technology-independent FIFO implementation was chosen, implementation issues are reduced to the resource usage of the final design. Resource usage depends on the number of endpoints used and additional features implemented with the core. Table 12 summarizes the synthesis results achieved with the reference application described in a separate application note. Evaluation Package To achieve a risk-free evaluation of the USB Function Controller, an Evaluation Package is available. The Evaluation Package is created from a post-synthesis VHDL simulation model with the generics being set up according to Table 13. In conjunction with the testbench package, complete system simulation is possible prior to product purchase. Table 13: Evaluation Package: Generics. Table 12: Synthesis: Xilinx XCS10 Results. generic value Resource Usage epin_mask(3:0) 0001 CLBs 190 CLB Flip Flops 203 4 input LUTs 337 3 input LUTs 52 16x1 RAMs 8 bonded IOBs 42 IOP Flops 12 IOB Latches 0 clock IOB pads 3 primary CLKs 3 secondary CLKs 1 TBUFs 24 total equivalent gate count 4106 The reference application uses a single endpoint and adds 8051 interface glue logic to the core. The following resources are clearly identified to belong to the application: 1 primary CLK is used to buffer the 8051 s ALE signal. 1 secondary CLK is used to buffer the 8051 s WR signal. 8 TBUFs are used to isolate the 8051 s P0 port. 16 TBUFs are used to isolate the glue logic s internal data bus. 4 CLBs are required to de-multiplex the 8051 s P0 bus. 4 CLBs are required to implement the 7-segment LED register epout_mask(3:0) 0001 epsetup_mask(3:0) 0001 episo_mask(3:0) 0000 References Universal Serial Bus Specification USB Implementers Forum http://www.usb.org Xilinx Inc. 2100 Logic Drive San Jose, CA 95124 Phone: +1 408-559-7778 Fax: +1 408-559-7114 http://www.xilinx.com Revisions History Table 14: Revisions History. Version Date Who Description 1.0 00aug26 FB Initial version 8 2000-September-7