DSPI_FIFO Serial Peripheral Interface Master/Slave with FIFO ver 1.07 OVERVIEW The DSPI_FIFO is a fully configurable SPI master/slave device, which allows user to configure polarity and phase of serial clock signal SCK. The DSPI_FIFO allows the microcontroller to communicate with serial peripheral devices. It is also capable of interprocessor communications in a multi-master system. A serial clock line (SCK) synchronizes shifting and sampling of the information on the two independent serial data lines. DSPI_FIFO data are simultaneously transmitted and received. The DSPI_FIFO is a technology independent design that can be implemented in a variety of process technologies. The DSPI_FIFO system is flexible enough to interface directly with numerous standard product peripherals from several manufacturers. The system can be configured as a master or a slave device. Data rates as high as CLK/8. Clock control logic allows a selection of clock polarity and a choice of two fundamentally different clocking protocols to accommodate most available synchronous serial peripheral devices. When the SPI is configured as a master, software selects one of eight different bit rates for the serial clock. The DSPI_FIFO automatically drive selected by SSCR (Slave Select Control Register) slave select outputs (SS7O – SS0O), and address SPI slave device to exchange serially shifted data. Error-detection logic is included All trademarks mentioned in this document are trademarks of their respective owners. to support interprocessor communications. A write-collision detector indicates when an attempt is made to write data to the serial shift register while a transfer is in progress. A multiple-master mode-fault detector automatically disables DSPI_FIFO output drivers if more than one SPI devices simultaneously attempts to become bus master. The DSPI_FIFO supports two DMA modes: single transfer and multi-transfer. These modes allow DSPI_FIFO to interface to higher performance DMA units, which can interleave their transfers between CPU cycles or execute multiple byte transfers. DSPI_FIFO is fully customizable, which means it is delivered in the exact configuration to meet users’ requirements. There is no need to pay extra for not used features and wasted silicon. It includes fully automated testbench with complete set of tests allowing easy package validation at each stage of SoC design flow. APPLICATIONS ● Embedded microprocessor boards ● Consumer and professional audio/video ● Home and automotive radio ● Digital multimeters http://www.DigitalCoreDesign.com http://www.dcd.pl Copyright 1999-2007 DCD – Digital Core Design. All Rights Reserved. KEY FEATURES ● SPI Master ○ Master and Multi-master operations ○ Two modes of operation: SPI mode and FIFO mode ○ 8 SPI slave select lines ○ System error detection CONFIGURATION The following parameters of the DSPI_FIFO core can be easy adjusted to requirements of dedicated application and technology. Configuration of the core can be prepared by effortless changing appropriate constants in package file. There is no need to change any parts of the code. ○ Mode fault error ○ Write collision error ○ Interrupt generation ○ Supports speeds up 1/8 of system clock ○ Bit rates generated 1/8 - 1/1024 of system clock. ○ Four transfer formats supported ○ Simple interface allows easy connection to microcontrollers ● Slave operation ○ Two modes of operation: SPI mode and FIFO mode ○ System error detection ○ Interrupt generation ○ Supports speeds up ¼ of system clock ○ Simple interface allows easy connection to microcontrollers ○ Four transfer formats supported ● Two DMA Modes allows single and multitransfer ● In the FIFO mode transmitter and receiver are each buffered with 16/64 byte FIFO's to reduce the number of interrupts presented to the CPU ● Optional FIFO size extension to 128, 256 or 512 Bytes ● Fully synthesizable, static synchronous design with no internal tri-states All trademarks mentioned in this document are trademarks of their respective owners. - enable disable • FIFO size - standard 16/64 large up to 512 - Number of CLK periods of SSO low before SPI starts transmission - Number of CLK periods of SSO High between two consecutive master transmissions. - Number of CLK periods of SSO low after end of SPI master transmission SLAVE SELECT • SETUP TIME SLAVE SELECT • HIGH TIME SPI Slave ○ • FIFO Control logic SLAVE SELECT • HOLD TIME DELIVERABLES ♦ Source code: VHDL Source Code or/and VERILOG Source Code or/and Encrypted, or plain text EDIF netlist VHDL & VERILOG test bench environment ◊ Active-HDL automatic simulation macros ◊ ModelSim automatic simulation macros ◊ Tests with reference responses Technical documentation ◊ Installation notes ◊ HDL core specification ◊ Datasheet Synthesis scripts Example application Technical support ◊ IP Core implementation support ◊ 3 months maintenance ● Delivery the IP Core updates, minor and major versions changes ● Delivery the documentation updates ● Phone & email support ◊ ◊ ◊ ♦ ♦ ♦ ♦ ♦ http://www.DigitalCoreDesign.com http://www.dcd.pl Copyright 1999-2007 DCD – Digital Core Design. All Rights Reserved. LICENSING SYMBOL Comprehensible and clearly defined licensing methods without royalty fees make using of IP Core easy and simply. clk rst datai(7:0) addr(7:0) cs rd we Single Design license allows use IP Core in single FPGA bitstream and ASIC implementation. Unlimited Designs, One Year licenses allow use IP Core in unlimited number of FPGA bitstreams and ASIC implementations. irq rxrdy txrdy scko scken mo so soen scki In all cases number of IP Core instantiations within a design, and number of manufactured chips are unlimited. There is no time restriction except One Year license where time of use is limited to 12 months. ● datao(7:0) mi si ss7o ss6o ss5o ss4o ss3o ss2o ss1o ss0o ss Single Design license for ○ VHDL, Verilog source code called HDL Source ○ Encrypted, or plain text EDIF called Netlist ● One Year license for ○ ● Encrypted Netlist only PINS DESCRIPTION Unlimited Designs license for ○ HDL Source ○ Netlist ● Upgrade from PIN TYPE DESCRIPTION clk input Global clock rst input Global reset datai(7:0) input Data bus input ○ HDL Source to Netlist addr(1:0) input Processor address lines ○ Single Design to Unlimited Designs cs input Chip select rd input Processor read strobe we input Processor write strobe scki input SPI clock input mi input Master serial data input si input Slave serial data input ss input Slave select All trademarks mentioned in this document are trademarks of their respective owners. datao(7:0) output Data bus output irq output Interrupt request txrdy output Transmitter ready output rxrdy output Receiver ready output scko output SPI clock output scken output SPI clock output enable mo output Master serial data output so output Slave serial data output soen output Slave output enable ss7o-ss0o output Slave select outputs http://www.DigitalCoreDesign.com http://www.dcd.pl Copyright 1999-2007 DCD – Digital Core Design. All Rights Reserved. BLOCK DIAGRAM Shift register and Read Data Buffer – it is a central element in the SPI system. The system is single buffered in the transmit direction and double buffered in the receive direction. This fact means new data for transmission cannot be written to the shifter until the previous transaction is complete; however, received data is transferred into a parallel read data buffer so the shifter is free to accept a second serial character. As long as the first character is read out of the read data buffer before the next serial character is ready to be transferred, no overrun condition will occur. When an SPI transfer occurs, an 8-bit character is shifted out on data pin while a different 8-bit character is simultaneously shifted in a second data pin. Another way to view this transfer is that an 8-bit shift register in the master and another 8-bit shift register in the slave are connected as a circular 16-bit shift register. When a transfer occurs, this distributed shift register is shifted eight bit positions; thus, the characters in the master and slave are effectively exchanged. mo so MSB 8-Bit Shift Register TX-FIFO 64 ÷ 512 clk addr(2:0) cs we rd SPI Status Reg. scko Slave Select Control Register configures which slave select output should be driven while SPI master transfer. Contents of SSCR register is automatically assigned on SS7OSS0O pins when DSPI_FIFO master transmission starts. scki scken soen datao(7:0) SPI Controller SS Ctrl. Reg. datai(7:0) Read buffer ss ss7o ss6o ss5o ss4o ss3o ss2o ss1o ss0o FIFO Ctrl. Reg. Receiver FIFO - The Rx FIFO can be 64 (128, 256, 512) levels deep, it receives data until the number of bytes in the FIFO equals the selected interrupt trigger level. At that time if interrupt is enabled, the DSPI_FIFO will All trademarks mentioned in this document are trademarks of their respective owners. Control Register may be read or written at any time, is used to configure the DSPI_FIFO System. This register controls the mode of transmission (Master, Slave), polarity and phase of SPI Clock and transmission speed. mi si CPHA CPOL SPI Ctrl. Reg. Transmitter FIFO - the Tx portion of the DSPI_FIFO transmits data through SO/MO as soon as the CPU loads a byte into the Tx FIFO in Master mode. In Slave mode the transmission is started after correct edge of the SCK signal. The DSPI_FIFO will prevent loads to the Tx FIFO if it currently holds 64 (128, 256, 512) characters (depending on SFCR(5) bit value and selected FIFO size). Loading to the Tx FIFO again will be enabled as soon as the next character is transferred to the Tx shift register. These capabilities account for the largely autonomous operation of the Tx Status Register (SPSR) is read only register contains flags indicating the completion of transfer or occurrence of system errors. All flags are set automatically when the corresponding event occur and cleared by software sequence. RX-FIFO 64÷ 512 SPI Clock Logic Divider ÷8 - ÷1024 SPR LSB issue an interrupt to the CPU. The Rx FIFO will continue to store bytes until it is full, and will not accept any next byte. Any more data entering the Rx shift register will set the Overrun Error flag. SPI Clock Logic - Software can select any of four combinations of serial clock (SCK) phase and polarity using two bits in the SPI control register (SPCR). The clock polarity is specified by the CPOL control bit, which selects an active high or active low clock and has no significant effect on the transfer format. The clock phase (CPHA) control bit selects one of two fundamentally different transfer formats. The clock phase and polarity should be identical for the master SPI device and the communicating slave device. In some cases, the phase and polarity are changed between transfers to allow a master device to communicate with peripheral slaves having different requirements. The flexibility of the SPI system on the http://www.DigitalCoreDesign.com http://www.dcd.pl Copyright 1999-2007 DCD – Digital Core Design. All Rights Reserved. DSPI_FIFO allows direct interface to almost any existing synchronous serial peripheral. SPI Controller manages the Master/Slave operation and controls the transmission. The SPI Controller manages the transmission speed and format (Phase and polarity). Controller is also responsible for generating of interrupt request and detection of transmission errors. PERFORMANCE The following table gives a survey about the Core performance in the ALTERA® devices after Place & Route (all key features have been included): Speed Logic Cells Fmax grade CYCLONE -6 324 171 MHz CYCLONE2 -6 314 197 MHz STRATIX -5 324 206 MHz STRATIX2 -3 273 313 MHz STRATIXGX -5 324 210 MHz APEX2A -7 370 178 MHz APEX20KC -7 369 152 MHz APEX20KE -1 369 115 MHz APEX20K -1 369 94 MHz ACEX1K -1 369 103 MHz FLEX10KE -1 369 103 MHz Core performance in ALTERA® devices Device Transfer Formats Software can select any of four combinations of serial clock (SCK) phase and polarity using two bits in the SPI control register (SPCR). The clock polarity is specified by the CPOL control bit, which selects an active high or active low clock and has no significant effect on the transfer format. The clock phase (CPHA) control bit selects one of two fundamentally different transfer formats. The clock phase and polarity should be identical for the master SPI device and the communicating slave device. In some cases, the phase and polarity are changed between transfers to allow a master device to communicate with peripheral slaves having different requirements. The flexibility of the SPI system on the DSPI_FIFO allows direct interface to almost any existing synchronous serial peripheral. SC K C Y C L E# 1 2 M SB 6 6 3 4 5 6 7 8 5 4 3 2 1 LSB 5 4 3 2 1 4 5 6 7 8 LSB SC K (C PO L=0) SC K (C PO L=1) M O SI M ISO M SB LSB SS SC K C Y C L E# 1 2 3 SC K (C PO L=0) SC K (C PO L=1) M O SI M ISO M SB M SB 6 5 4 3 2 1 6 5 4 3 2 1 LSB SS All trademarks mentioned in this document are trademarks of their respective owners. http://www.DigitalCoreDesign.com http://www.dcd.pl Copyright 1999-2007 DCD – Digital Core Design. All Rights Reserved. CONTACTS For any modification or special request please contact to Digital Core Design or local distributors. Headquarters: Wroclawska 94 41-902 Bytom, POLAND e-mail: iinnffoo@ @ddccdd..ppll tel. : +48 32 282 82 66 fax : +48 32 282 74 37 Distributors: Please check hhtttpp::///w ww ww w..ddccdd..ppll//aappaarrttnn..pphhpp All trademarks mentioned in this document are trademarks of their respective owners. http://www.DigitalCoreDesign.com http://www.dcd.pl Copyright 1999-2007 DCD – Digital Core Design. All Rights Reserved.