CDA 4253 FPGA System Design PicoBlaze Interface Hao Zheng Comp Sci - - PowerPoint PPT Presentation

cda 4253 fpga system design picoblaze interface
SMART_READER_LITE
LIVE PREVIEW

CDA 4253 FPGA System Design PicoBlaze Interface Hao Zheng Comp Sci - - PowerPoint PPT Presentation

CDA 4253 FPGA System Design PicoBlaze Interface Hao Zheng Comp Sci & Eng U of South Florida Required Reading P. Chu, FPGA Prototyping by VHDL Examples Chapter 16, PicoBlaze I/O Interface Chapter 17, PicoBlaze Interrupt Interface


slide-1
SLIDE 1

CDA 4253 FPGA System Design PicoBlaze Interface

Hao Zheng Comp Sci & Eng U of South Florida

slide-2
SLIDE 2

2

Required Reading

  • P. Chu, FPGA Prototyping by VHDL Examples

Chapter 16, PicoBlaze I/O Interface Chapter 17, PicoBlaze Interrupt Interface Xilinx PicoBlaze User Guide (UG 129) Chapter 4 & 6

slide-3
SLIDE 3

Input InstrucCons

INPUT sX, KK PORT_ID <= KK direct sX <= IN_PORT kk is the address of a peripheral. INPUT sX, (sY) PORT_ID <= sY indirect sX <= IN_PORT sY stores address of a peripheral.

3

slide-4
SLIDE 4

Input OperaCon and FPGA Interface

4 n READ_STROBE PORT_ID[7:0] 8 Register sY or Literal kk Register sX IN_PORT[7:0] 8

FPGA Logic

D Q

m

PicoBlaze Microcontroller

UG129_c6_01_052004

slide-5
SLIDE 5

5

Input InstrucCons: Timing Diagram

INPUT s0,(s7) Contents of register s7

CLK PORT_ID[7:0] IN_PORT[7:0] READ_STROBE INSTRUCTION[17:0] Register s0

Captured Value from IN_PORT[7:0]

UG129_c6_02_060404

1 2 3 4

slide-6
SLIDE 6

6

Four ConCnuous-Access Ports

slide-7
SLIDE 7

7

slide-8
SLIDE 8

Output InstrucCons

OUTPUT sX, KK PORT_ID <= KK direct OUT_PORT <= sX OUTPUT sX, (sY) PORT_ID <= sY indirect OUTPUT <= sX

8

  • write_strobe is asserted in the 2nd cycle of an output instrucOon.
  • Used to noOfy target the validaty of the data on out_port
slide-9
SLIDE 9

Output Interfacing

9

m EN D Q

FPGA Logic

n WRITE_STROBE OUT_PORT[7:0] PORT_ID[7:0]

PicoBlaze Microcontroller

8 8 Register sY or Literal kk Register sX

UG129_c6_05_052004

Decode Logic

slide-10
SLIDE 10

Output OperaCon and FPGA Interface

10

Use WRITE_STROBE as the clock enable to capture output values in FPGA logic. OUTPUT s0, 65

CLK PORT_ID[7:0] OUT_PORT[7:0] WRITE_STROBE INSTRUCTION[17:0] FPGA Register

Captured Value from OUT_PORT[7:0] 65 Contents of Register s0

UG129_c6_06_060404

1 2 3 4

slide-11
SLIDE 11

11

Output Decoding

  • f Four Output

Registers

slide-12
SLIDE 12

12

Decoder Logic

OUTPUT PORT

369 Figure 16.2 Output decoding of four output registers.

Truth table of a decoding circuit

Table 16.1

input

  • utput

write-strobe port

  • id (1) port-id( 0)

en-d

  • 0000

000

1

1

0010

1

0100

1

1

1000

16.2.2 Output interface

The output interface between PicoBlaze and an output peripheral usually consists of a decoding circuit and necessary output buffers, which are normally an array of registers. The decoding circuit decodes the port id and generates an enable tick accordingly. After the output instruction, the data will be stored in the designated buffer. To illustrate the construction, let us consider a PicoBlaze interface with four output

  • buffers. We assign 0016, OIl6, 0216, and 0316 as their port ids. Note that the six MSBs of

the port addresses are identical and only two LSBs are needed to distinguish a port. The block diagram is shown in Figure 16.2. The key is the decoding circuit, whose function table is shown in Table 16.1. It is a 2-t0-2~

  • decoder. In the second clock cycle of an
  • utput instruction, write-strobe is asserted and 1

bit of the 4-bit en-d signal is asserted

  • accordingly. The one-clock-cycle enable tick activates the corresponding output register to

retrieve data from the out-port signal. The decoding timing diagram of the instruction

  • utput s o , 02

The decoder logic can be saved by using one-hot codes for port_id if the output ports are smaller than 8.

slide-13
SLIDE 13

13

Timing Diagram of an Output InstrucCon

  • utput s0, 02
slide-14
SLIDE 14

14 IN_PORT[7:0] OUT_PORT[7:0] PORT_ID[7:0] READ_STROBE WRITE_STROBE

PicoBlaze Microcontroller

[0] EN D Q PORT_A [1] EN D Q PORT_B [2] EN D Q PORT_C

UG129_c6_07_052004

Simple Address Decoding for Designs with <8 Output Components

slide-15
SLIDE 15

15

Interrupt Flow

  • 1. Enabled interrupts
  • 2. An interrupt occurs
  • 3. Execute call 3FF
  • 4. Execute jump isr
  • 5. Execute interrupt service

rouOne (ISR) at isr

  • 6. execute returni enable at

the end of ISR, and resume the normal

  • peraOon

INTERRUPT input asserted.

ADDRESS 000

main: ENABLE INTERRUPT INPUT s0, 00 INPUT s1, 01 ADD s0, s1 OUTPUT s0, 00 CALL critical_timing JUMP main critical_timing: DISABLE INTERRUPT ENABLE INTERRUPT RETURN isr: TEST s7, 02 RETURNI ENABLE ADDRESS 3FF JUMP isr

2 1 6 3 4 5

slide-16
SLIDE 16

16

1 2 3 4 5 6 7 8

slide-17
SLIDE 17

Interrupt Related InstrucCons

RETURNI ENABLE PC <= STACK[TOS] ; TOS <= TOS – 1; I <= 1; C<= PRESERVED C; Z<= PRESERVED Z RETURNI DISABLE PC <= STACK[TOS] ; TOS <= TOS – 1; I <= 0; C<= PRESERVED C; Z<= PRESERVED Z ENABLE INTERRUPT I <=1; DISABLE INTERRUPT I <=0;

17

slide-18
SLIDE 18

18

Interrupt Interface with a Single Event

interrupt should hold high unOl interrupt_ack is asserted.

slide-19
SLIDE 19

19

Interrupt Interface with Two Requests

ISR reads in_port[1:0], decides which request should be served, and generate correct signal to clear the corresponding interrupt request FF.

slide-20
SLIDE 20

20

Time-MulCplexed Seven Segment Display

Data inputs

slide-21
SLIDE 21

21

Time-MulCplexing Circuit

slide-22
SLIDE 22

22

MulCplexing Circuit Based on PicoBlaze

  • mod-500 generates an interrupt every 5us.
  • ISR loads sseg[6:0] from memory and generates

corresponding port ID for an[3:0].