designing fpgas & asics

50
DESIGNING FPGAS & ASICS DESIGNING FPGAS & ASICS P f D B ldi Ph D SCHEMATIC HDL architecture behavior of control is if left_paddle then n_state <= hit_state elsif n_state <= miss_state end if; SYNTHESIS Simulation and Testing Simulation and Testing Prof. Don Bouldin, Ph.D. SCHEMATIC AND OR AND PHYSICAL LAYOUT PLACE & ROUTE Electrical & Computer Engineering University of Tennessee TEL: (865)-974-5444 FAX: (865)-974-5483 [email protected] © 2007 -- Don Bouldin

Upload: others

Post on 18-Mar-2022

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DESIGNING FPGAS & ASICS

DESIGNING FPGAS & ASICSDESIGNING FPGAS & ASICS

P f D B ldi Ph DSCHEMATIC

HDLarchitecture behavior of control is if left_paddle then n_state <= hit_state elsif n_state <= miss_state end if;

SYNTHESIS

Simulation and TestingSimulation and Testing

Prof. Don Bouldin, Ph.D.SCHEMATIC

ANDORAND

PHYSICAL LAYOUTPLACE & ROUTE

Electrical & Computer EngineeringUniversity of Tennessee

TEL: (865)-974-5444( )FAX: (865)-974-5483

[email protected]

©2007 -- Don Bouldin

Page 2: DESIGNING FPGAS & ASICS

COURSE OUTLINE

• Overview of FPGAs and ASICs

• Using Synthesis

• HDL Examples

• Simulation and Testing

• Physical Place and Route

• Testing ASICs• Testing ASICs

• Component Reuse

©2007 -- Don Bouldin

Page 3: DESIGNING FPGAS & ASICS

SEMI-CUSTOM DESIGN FLOW OF SEMI CUSTOM DESIGN FLOW OF DIGITAL FPGAS/ASICS

1—HDL 1—HDL 2--PRE-SYNTHESIS SIMULATION2--PRE-SYNTHESIS SIMULATIONCASE w IS

WHEN "00" => y <= "1000" ;

WHEN "01" => y <= "0100" ;

CASE w IS

WHEN "00" => y <= "1000" ;

WHEN "01" => y <= "0100" ;

3 SYNTHESIS/AUTO LAYOUT3 SYNTHESIS/AUTO LAYOUT

WHEN "10" => y <= "0010" ;

WHEN OTHERS => y <= "0001";

END CASE ;

WHEN "10" => y <= "0010" ;

WHEN OTHERS => y <= "0001";

END CASE ;

3—SYNTHESIS/AUTO LAYOUT3—SYNTHESIS/AUTO LAYOUT

4--POST-LAYOUT SIMULATION4--POST-LAYOUT SIMULATION

©2007 -- Don Bouldin

Page 4: DESIGNING FPGAS & ASICS

PRE-SYNTHESIS SIMULATION IS TECHNOLOGY-INDEPENDENT

Note the "zero" delay at 2450 ns:

©2007 -- Don Bouldin

Page 5: DESIGNING FPGAS & ASICS

POST-LAYOUT SIMULATION INCLUDES POST LAYOUT SIMULATION INCLUDES COMPONENT AND WIRING DELAYS

Note the “14ns" delay at 2464 ns:

©2007 -- Don Bouldin

Page 6: DESIGNING FPGAS & ASICS

Simulation of fulladd vhdSimulation of fulladd.vhd

• Pre-synthesis: outputsoutputs change instantly at 200 ns.200 ns.

• Post-layout: outputs change at

©2007 -- Don Bouldin

206-207 ns.

Page 7: DESIGNING FPGAS & ASICS

RECOMMENDED METHOD FOR LEARNING VHDL

• Copy a known working file to use as a template with

reserved words and syntax. Simulate it.

• Modify the VHDL source code to perform your intended

operations and then simulate the revised code.

• Be wary of examples in textbooks and on the internet • Be wary of examples in textbooks and on the internet

since not all VHDL code is synthesizable with a

particular synthesis tool and software environment.

• Avoid use of the “FOR” statement which is confusing.

• Avoid using technology-dependent statements like

©2007 -- Don Bouldin

g gy p

“WAIT until 14 ns”. Instead, use “WAIT_CLOCK(16)”.

Page 8: DESIGNING FPGAS & ASICS

SIMULATION SHOWS THE RESPONSES OF THE VHDL TO STIMULI

STIMULI RESPONSES

• Functional stimuli are developed by the designer

WAVEFORM

the designer to mimic the system

VHDLSOURCE

CODE

©2007 -- Don Bouldin

environment. CODE

Page 9: DESIGNING FPGAS & ASICS

THE TESTBENCH CONTAINS THE STIMULI, RESPONSES AND UUT

• The testbench is written in VHDL but is not synthesized into the FPGA/ASIC.

VHDLVHDLSOURCE

CODESTIMULI RESPONSES

SynthesizableUnit-Under-TestSynthesizable

Unit-Under-Test

TestBench—Simulation onlyTestBench—Simulation only

©2007 -- Don Bouldin

Page 10: DESIGNING FPGAS & ASICS

EXPECTED RESPONSES ARE COMPARED TO ACTUAL ONES

“Failure” stops simulation while “warning” does not.

“Note” is used to document a correct response.

wait_clock(16); IF (left_seg = X"6") -- check second state of 7-segment display

wait_clock(16); IF (left_seg = X"6") -- check second state of 7-segment display THENASSERT false REPORT "Output signals set correctly (7-segment second state)" SEVERITY note;

THENASSERT false REPORT "Output signals set correctly (7-segment second state)" SEVERITY note;ELSE ASSERT false REPORT "Output not set correctly (7-segment second state)" SEVERITY warning;

ELSE ASSERT false REPORT "Output not set correctly (7-segment second state)" SEVERITY warning;

©2007 -- Don Bouldin

END IF;END IF;

Page 11: DESIGNING FPGAS & ASICS

ALL VHDL SOURCE LINES SHOULD ALL VHDL SOURCE LINES SHOULD BE TESTED

The simulator can produce coverage reports.

©2007 -- Don Bouldin

Page 12: DESIGNING FPGAS & ASICS

FINAL VERIFICATION IS PERFORMED USING A PROTYPING BOARD

• .

PLD (2K)FPGA (70K)

©2007 -- Don Bouldin

Page 13: DESIGNING FPGAS & ASICS

XILINX TOOLS ARE FREE BUT TARGET ONLY XILINX PARTS

• Anyone can download Xilinx WebPACK tools for free from www.xilinx.com

• WebPACK includes a free version• WebPACK includes a free version

of ModelSim that works only for

Xilinx parts but you must register

©2007 -- Don Bouldin

at www.mentor.com

Page 14: DESIGNING FPGAS & ASICS

IMPLEMENTING A PROJECTIMPLEMENTING A PROJECT

• Determine I/O Requirements

• Partition into 5-9 submodules and test • Partition into 5-9 submodules and test individually before combining.

• Use/Enhance Built-In Self-Test

• Debounce Pushbutton Switches

• Filter an Input to Produce a Single Pulse

• Use hierarchy with Submodule Components

• Synchronize Externally Clocked Inputs

©2007 -- Don Bouldin

Page 15: DESIGNING FPGAS & ASICS

DETERMINE SYSTEM I/O DETERMINE SYSTEM I/O REQUIREMENTS

©2007 -- Don Bouldin

Page 16: DESIGNING FPGAS & ASICS

DECOMPOSE EACH LEVEL INTO 7+/-2 SUBMODULES

©2007 -- Don Bouldin

Page 17: DESIGNING FPGAS & ASICS

SIMULATE EACH SUBMODULE AND SIMULATE EACH SUBMODULE AND THEN INTEGRATE THEM

Submodule#1Submodule#1 Submodule#2Submodule#2

Composite of #1 and #2Composite of #1 and #2

©2007 -- Don Bouldin

Page 18: DESIGNING FPGAS & ASICS

BUILT IN SELF TESTBUILT-IN SELF-TEST

• Downloading hw3a (BIST) ensures the integrity of the connection between the CPU and the Spartan3 prototyping board AND then checks the input switches and the 7 segment displaysswitches and the 7-segment displays.

• More thorough checks could be added to ensure the integrity of the board I/O for a specific projectproject.

©2007 -- Don Bouldin

Page 19: DESIGNING FPGAS & ASICS

INTERNAL FREQUENCIES CAN BE DERIVED FROM THE EXTERNAL CLOCK

• A crystal oscillator on the Spartan3 prototyping board produces a 50 MHz clock.

• Counters can be used to divide down a frequency into a Counters can be used to divide down a frequency into a slower synchronized one:

Divide By Frequency Duration1 clock_50MHz 20 nsDivide By Frequency Duration1 clock_50MHz 20 ns2 clock_25 MHz 40 ns25 clock_1MHz 1000 ns = 1us10 clock_100KHz 10 us10 clock 10KHz 100 us

2 clock_25 MHz 40 ns25 clock_1MHz 1000 ns = 1us10 clock_100KHz 10 us10 clock 10KHz 100 us10 clock_10KHz 100 us10 clock_1KHz 1000 us = 1 ms10 clock_100Hz 10 ms10 clock_10Hz 100 ms10 clock 1Hz 1000 ms = 1 s

10 clock_10KHz 100 us10 clock_1KHz 1000 us = 1 ms10 clock_100Hz 10 ms10 clock_10Hz 100 ms10 clock 1Hz 1000 ms = 1 s

©2007 -- Don Bouldin

10 clock_1Hz 1000 ms = 1 s10 clock_tenthHz 10 s10 clock_1Hz 1000 ms = 1 s10 clock_tenthHz 10 s

Page 20: DESIGNING FPGAS & ASICS

Simulation of clk div vhd (part 1)Simulation of clk_div.vhd (part 1)

• 50 MHz divided by 2 25 MHz:

• 25 MHz divided by 25 1 MHz:

©2007 -- Don Bouldin

Page 21: DESIGNING FPGAS & ASICS

Simulation of clk div vhd (part 2)Simulation of clk_div.vhd (part 2)

• 10 KHz divided by 10 1 KHz:

©2007 -- Don Bouldin

Page 22: DESIGNING FPGAS & ASICS

clk div vhd (part 1)clk_div.vhd (part 1)

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.all;USE IEEE.STD_LOGIC_ARITH.all;USE IEEE.STD_LOGIC_UNSIGNED.all;

ENTITY clk_div IS

PORT((

clock_25Mhz : IN STD_LOGIC;clock_1MHz : OUT STD_LOGIC;clock_100KHz : OUT STD_LOGIC;clock_10KHz : OUT STD_LOGIC;clock_1KHz : OUT STD_LOGIC;clock_100Hz : OUT STD_LOGIC;clock_10Hz : OUT STD_LOGIC;clock_1Hz : OUT STD_LOGIC);

©2007 -- Don Bouldin

END clk_div;

Page 23: DESIGNING FPGAS & ASICS

clk div vhd (part 2)clk_div.vhd (part 2)

ARCHITECTURE a OF clk_div IS

SIGNAL count_1Mhz: STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL count_100Khz, count_10Khz, count_1Khz : STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL count_100hz, count_10hz, count_1hz : STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL clock_1Mhz_int, clock_100Khz_int, clock_10Khz_int, clock_1Khz_int:STD_LOGIC; _ _ , _ _ , _ _ , _ _ _ ;SIGNAL clock_100hz_int, clock_10Hz_int, clock_1Hz_int : STD_LOGIC;

BEGINPROCESS BEGIN

-- Divide by 25WAIT UNTIL clock_25Mhz'EVENT and clock_25Mhz = '1';

IF count 1Mhz < 24 THENIF count_1Mhz < 24 THENcount_1Mhz <= count_1Mhz + 1;

ELSEcount_1Mhz <= "00000";

END IF;IF count_1Mhz < 12 THEN

clock_1Mhz_int <= '0';ELSE

clock_1Mhz_int <= '1';END IF;

©2007 -- Don Bouldin

Page 24: DESIGNING FPGAS & ASICS

clk div vhd (part 3)clk_div.vhd (part 3)

-- Divide by 10PROCESS BEGINBEGIN

WAIT UNTIL clock_1Mhz_int'EVENT and clock_1Mhz_int = '1';IF count_100Khz /= 4 THEN

count_100Khz <= count_100Khz + 1;ELSE

count_100khz <= "000";clock_100Khz_int <= NOT clock_100Khz_int;

END IF;END PROCESS;-- Divide by 10PROCESSBEGIN

WAIT UNTIL clock_100Khz_int'EVENT and clock_100Khz_int = '1';IF count_10Khz /= 4 THEN

count_10Khz <= count_10Khz + 1;ELSE

count_10khz <= "000";clock_10Khz_int <= NOT clock_10Khz_int;

END IF;END PROCESS;

©2007 -- Don Bouldin

Page 25: DESIGNING FPGAS & ASICS

clk div vhd (part 4)clk_div.vhd (part 4)

…………………… etc …………………

-- Divide by 10PROCESSPROCESSBEGINWAIT UNTIL clock_10hz_int'EVENT and clock_10hz_int = '1';

IF count_1hz /= 4 THENcount_1hz <= count_1hz + 1;

ELSEcount_1hz <= "000";clock_1hz_int <= NOT clock_1hz_int;

END IF;END PROCESS;

END a;

©2007 -- Don Bouldin

Page 26: DESIGNING FPGAS & ASICS

clk div vhd (part 5)clk_div.vhd (part 5)

…………………… etc …………………

-- Divide by 10PROCESSPROCESSBEGINWAIT UNTIL clock_10hz_int'EVENT and clock_10hz_int = '1';

IF count_1hz /= 4 THENcount_1hz <= count_1hz + 1;

ELSEcount_1hz <= "000";clock_1hz_int <= NOT clock_1hz_int;

END IF;END PROCESS;

END a;

©2007 -- Don Bouldin

Page 27: DESIGNING FPGAS & ASICS

clk div vhd (part 6)clk_div.vhd (part 6)

…………………… etc …………………

-- Divide by 10PROCESSPROCESSBEGINWAIT UNTIL clock_10hz_int'EVENT and clock_10hz_int = '1';

IF count_1hz /= 4 THENcount_1hz <= count_1hz + 1;

ELSEcount_1hz <= "000";clock_1hz_int <= NOT clock_1hz_int;

END IF;END PROCESS;

END a;

©2007 -- Don Bouldin

Page 28: DESIGNING FPGAS & ASICS

AN INPUT PUSHBUTTON SWITCH AN INPUT PUSHBUTTON SWITCH MAY BOUNCE

VddVdd

To FPGATo FPGA

GNDGND

Input With BouncingInput With Bouncing

D i d O t tD i d O t tDesired OutputDesired Output

Fig. 6.11, Page 243ASICs by M. Smith© 1997 A-W-L, Inc.

Fig. 6.11, Page 243ASICs by M. Smith© 1997 A-W-L, Inc.

©2007 -- Don Bouldin

© 1997 A W L, Inc.Used by permission.© 1997 A W L, Inc.Used by permission.

Page 29: DESIGNING FPGAS & ASICS

debounce vhddebounce.vhd

debounce.vhd

©2007 -- Don Bouldin

Page 30: DESIGNING FPGAS & ASICS

Simulation of debounce vhd (part 1)Simulation of debounce.vhd (part 1)

• PB has been 0 (inactive), then is 1 (active) but only for 10 ms (too short to be valid) so PB debounced stays 1 (inactive):PB_debounced stays 1 (inactive):

©2007 -- Don Bouldin

Page 31: DESIGNING FPGAS & ASICS

Simulation of debounce vhd (part 2)Simulation of debounce.vhd (part 2)

• This time PB is 1 (active) for 60 ms (which is valid since it is at least 40ms) so PB_debounced becomes 0 (active):

©2007 -- Don Bouldin

Page 32: DESIGNING FPGAS & ASICS

FILTER AN INPUT TO PRODUCE A SINGLE PULSE

An External Pushbutton Switch An External Pushbutton Switch May Be Pressed For Multiple

Clock TicksMay Be Pressed For Multiple

Clock Ticks

A Circuit Can Be Implemented to Produce

A Circuit Can Be Implemented to Produce Implemented to Produce

Only a Single PulseImplemented to Produce

Only a Single Pulse

©2007 -- Don Bouldin

Page 33: DESIGNING FPGAS & ASICS

Simulation of onepulse vhdSimulation of onepulse.vhd

• PB_debounced has been 0 (active) for 100 ms but only a single 1 ms pulse is produced:

©2007 -- Don Bouldin

Page 34: DESIGNING FPGAS & ASICS

onepulse vhd (part 1)onepulse.vhd (part 1)

LIBRARY IEEE;

USE IEEE.STD LOGIC 1164.all;USE IEEE.STD_LOGIC_1164.all;

USE IEEE.STD_LOGIC_ARITH.all;

USE IEEE.STD_LOGIC_UNSIGNED.all;

-- Single Pulse circuit

-- the output will go high for only one clock cycle

ENTITY onepulse IS

PORT(PB_debounced, clock : IN STD_LOGIC;

PB_single_pulse : OUT STD_LOGIC);

END onepulse;

©2007 -- Don Bouldin

Page 35: DESIGNING FPGAS & ASICS

onepulse vhd (part 2)onepulse.vhd (part 2)

ARCHITECTURE a OF onepulse IS

SIGNAL PB_debounced_delay, Power_on : STD_LOGIC;

BEGIN

PROCESS (Clock)

BEGIN

WAIT UNTIL (CLOCK'event) AND (CLOCK='1');WAIT UNTIL (CLOCK event) AND (CLOCK= 1 );

-- Power_on will be initialized to '0' at power up

IF Power_on='0' THEN

-- This code resets the critical signals once at power up

PB_single_pulse <= '0';

PB_debounced_delay <= '1';

Power_on <= '1';

ELSE

©2007 -- Don Bouldin

Page 36: DESIGNING FPGAS & ASICS

onepulse.vhd (part 1)p (p )(modified)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.all;

USE IEEE.STD_LOGIC_ARITH.all;

USE IEEE.STD_LOGIC_UNSIGNED.all;

-- Single Pulse circuit

-- the output will go high for only one clock cycle

OriginalOriginalt e output go g o o y o e c oc cyc e

ENTITY onepulse IS

PORT(PB_debounced, clock : IN STD_LOGIC;

PB_single_pulse : OUTSTD_LOGIC);

END onepulse;

Modified:Modified:

©2007 -- Don Bouldin

Page 37: DESIGNING FPGAS & ASICS

onepulse.vhd (part 2)p (p )(modified)

ARCHITECTURE a OF onepulse IS

SIGNAL PB_debounced_delay, Power_on : STD_LOGIC;

BEGIN

PROCESS (Clock)

BEGIN

WAIT UNTIL (CLOCK'event) AND (CLOCK='1');WAIT UNTIL (CLOCK event) AND (CLOCK= 1 );

-- Power_on will be initialized to '0' at power up

IF Power_on='0' THEN

-- This code resets the critical signals once at power up

PB_single_pulse <= '0';

PB_debounced_delay <= '1';

Power_on <= '1';

ELSE

©2007 -- Don Bouldin

Page 38: DESIGNING FPGAS & ASICS

Simulation of onepulse.vhd(modified)

• PB_debounced has been 0 (active) for 100 ms but only a single 1 ms pulse is produced and

b fl i t Aft b i d b fl i tpb_flag is set. After being read, pb_flag is reset.

©2007 -- Don Bouldin

Page 39: DESIGNING FPGAS & ASICS

HIERARCHY WITH SUBMODULE HIERARCHY WITH SUBMODULE COMPONENTS

single_pulsesingle_pulsedebounce1debounce1reset_pb_flagreset_pb_flag

btn0btn0 btn0_debouncedbtn0_debounced

pb_flagpb_flagdebounce onepulse

(modified)

clock_50Mhzclock_50Mhz

clk_div

clock_100Hzclock_100Hz

clock_1MHzclock_1MHz

prescalarprescalar

clock_10Hzclock_10Hz

©2007 -- Don Bouldin

Page 40: DESIGNING FPGAS & ASICS

Simulation of hierarch vhdSimulation of hierarch.vhd

• A proper pressing of btn0 sets pb_flag to HIGH.• Once pb_flag is read, it is reset to LOW.

©2007 -- Don Bouldin

Page 41: DESIGNING FPGAS & ASICS

hierarch vhd (part 1)hierarch.vhd (part 1)

BEGIN-- Use Port Map to connect signals between components in the hierarchyUse Port Map to connect signals between components in the hierarchy

debounce1 : debounce PORT MAP (pb => pb1, clock_100Hz => clock_100Hz, pb_debounced => pb1_debounced);

prescalar : clk_div PORT MAP (clock_25Mhz => clock_25Mhz, clock_1MHz => clock_1Mhz, clock_100hz => clock_100hz);

single_pulse : onepulse PORT MAP (pb_debounced => pb1_debounced, clock => clock_1MHz,

pb_single_pulse => pb1_single_pulse);

END a;

©2007 -- Don Bouldin

Page 42: DESIGNING FPGAS & ASICS

hierarch vhd (part 2)hierarch.vhd (part 2)

COMPONENT onepulsePORT(pb_debounced, clock : IN STD_LOGIC;

pb_single_pulse : OUTSTD_LOGIC);

END COMPONENT;

COMPONENT clk_divPORT(clock_25Mhz : IN STD_LOGIC;clock_1MHz : OUT STD_LOGIC;clock_100KHz : OUT STD_LOGIC;clock_10KHz : OUT STD_LOGIC;clock_1KHz : OUT STD_LOGIC;clock_100Hz : OUT STD_LOGIC;clock_10Hz : OUT STD_LOGIC;clock_1Hz : OUT STD_LOGIC);

END COMPONENT;

©2007 -- Don Bouldin

Page 43: DESIGNING FPGAS & ASICS

Simulation of hw3a vhdSimulation of hw3a.vhd

• After btn0 is pressed (properly), the pb_flag is set. Then while dig “0111” is displayed , swt<7:0> are read and pb_flag is reset:

©2007 -- Don Bouldin

Page 44: DESIGNING FPGAS & ASICS

hw3a vhd (part 1)hw3a.vhd (part 1)

LIBRARY IEEE;

USE IEEE STD LOGIC 1164 all;USE IEEE.STD_LOGIC_1164.all;

USE IEEE.STD_LOGIC_ARITH.all;

USE IEEE.STD_LOGIC_UNSIGNED.all;

-- Single Pulse circuit

-- the output will go high for only one clock cycle

ENTITY onepulse IS

PORT(PB_debounced, clock : IN STD_LOGIC;

PB_single_pulse : OUTSTD_LOGIC);

END onepulse;

©2007 -- Don Bouldin

Page 45: DESIGNING FPGAS & ASICS

hw3a vhd (part 2)hw3a.vhd (part 2)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.all;

USE IEEE.STD_LOGIC_ARITH.all;

USE IEEE.STD_LOGIC_UNSIGNED.all;

-- Single Pulse circuit

-- the output will go high for only one clock cycle

ENTITY onepulse ISENTITY onepulse IS

PORT(PB_debounced, clock : IN STD_LOGIC;

PB_single_pulse : OUT STD_LOGIC);

END onepulse;

©2007 -- Don Bouldin

Page 46: DESIGNING FPGAS & ASICS

hw3a vhd (part 3)hw3a.vhd (part 3)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.all;

USE IEEE.STD_LOGIC_ARITH.all;

USE IEEE.STD_LOGIC_UNSIGNED.all;

-- Single Pulse circuit

-- the output will go high for only one clock cycle

ENTITY onepulse IS

PORT(PB_debounced, clock : IN STD_LOGIC;

PB_single_pulse : OUTSTD_LOGIC);

END onepulse;

©2007 -- Don Bouldin

Page 47: DESIGNING FPGAS & ASICS

hw3a vhd (part 4)hw3a.vhd (part 4)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.all;

USE IEEE.STD_LOGIC_ARITH.all;

USE IEEE.STD_LOGIC_UNSIGNED.all;

-- Single Pulse circuit

-- the output will go high for only one clock cycle

ENTITY onepulse IS

PORT(PB_debounced, clock : IN STD_LOGIC;

PB_single_pulse : OUTSTD_LOGIC);

END onepulse;

©2007 -- Don Bouldin

Page 48: DESIGNING FPGAS & ASICS

FPGA Resources for hw3aFPGA Resources for hw3a

• Logic slices used: 58 out of 1920 = 3%• The constraint file, hw3a.ucf, assigned the pins.

©2007 -- Don Bouldin

Page 49: DESIGNING FPGAS & ASICS

Detailed Layout of hw3aDetailed Layout of hw3a

• Pin M13 is connected to btn0:

©2007 -- Don Bouldin

Page 50: DESIGNING FPGAS & ASICS

SYNCHRONIZER REDUCES RISK OF METASTABILITY PROBLEMS

Signals from external circuits whose clock is independent must b h i d be synchronized with our internal clock.If not, the external i t input may occur during the decision window of our flip-flop and cause it to go into a metastable go into a metastable state.To reduce the likelihood of this occurring, the input

Fig. 6.16, Page 249ASICs by M. Smith© 1997 A-W-L, Inc.

Fig. 6.16, Page 249ASICs by M. Smith© 1997 A-W-L, Inc.

©2007 -- Don Bouldin

g, pcan be double-buffered.

© 1997 A W L, Inc.Used by permission.© 1997 A W L, Inc.Used by permission.