beautypg.com

Figure 2-6, Rotary shaft encoder – Xilinx MIcroblaze Development Spartan-3E 1600E User Manual

Page 18

background image

16

MicroBlaze Development Kit Spartan-3E 1600 Edition User Guide

www.xilinx.com

UG257 (v1.1) December 5, 2007

Chapter 2:

Switches, Buttons, and Knob

R

Rotary Shaft Encoder

In principal, the rotary shaft encoder behaves much like a cam, connected to central shaft.

Rotating the shaft then operates two push-button switches, as shown in

Figure 2-7

.

Depending on which way the shaft is rotated, one of the switches opens before the other.

Likewise, as the rotation continues, one switch closes before the other. However, when the

shaft is stationary, also called the detent position, both switches are closed.

Closing a switch connects it to ground, generating a logic Low. When the switch is open, a

pull-up resistor within the FPGA pin pulls the signal to a logic High. The UCF constraints

in

Figure 2-9

describe how to define the pull-up resistor.

The FPGA circuitry to decode the ‘A’ and ‘B’ inputs is simple, but must consider the

mechanical switching noise on the inputs, also called chatter. As shown in

Figure 2-8

, the

chatter can falsely indicate extra rotation events or even indicate rotations in the opposite

direction! See the Rotary Encoder Interface reference design in

“Related Resources”

for an

example.

Figure 2-6:

Push-Button Switches Require Internal Pull-up Resistor in FPGA Input

Pin

UG257_02_06_060906

Rotary / Push Button

ROT_CENTER Signal

3.3V

FPGA I/O Pin

Figure 2-7:

Basic example of rotary shaft encoder circuitry

GND

Vcco

Vcco

A=‘0’

B=‘1’

A pull-up resistor in each input pin
generates a ‘1’ for an open switch.
See the UCF file for details on
specifying the pull-up resistor.

FPGA

UG257_02_07_060206

Rotary Shaft

Encoder