Digital ASIC Design Guide by Don Bouldin, ECE 551, UT, Fall 2001 - Prof. Donald Bouldin, Exams of Digital Systems Design

A comprehensive guide for designing digital asics, covering topics such as schematic and hdl architecture, physical layout, synthesis, design flow, prototyping tips, and more. It includes examples of vhdl code for clock division and debouncing input switches.

Typology: Exams

Pre 2010

Uploaded on 08/30/2009

koofers-user-g15-1
koofers-user-g15-1 🇺🇸

10 documents

1 / 6

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
©2001 --Don Bouldin
DESIGNING DIGITAL ASICS
ECE 551
FALL 2001
Don Bouldin, Ph.D., P.E.
Prof. of Electrical & Computer Engineering
University of Tennessee
TEL: (865)-974-5444
FAX: (865)-974-5483
dbouldin@utk.edu
SCHEMATIC
AND OR
AND
HDL
architecture behavior of control is
if left_paddle then
n_state <= hit_state
elsif n_state <= miss_state
end if;
PHYSICAL LAYOUT
PLACE & ROUTE
SYNTHESIS
©2001 --Don Bouldin
DESIGN IMPLEMENTATION
Design Flow
Prototyping Tips
Basic Built-In Self-Test
Debouncing External Switches
Filtering an Input to Produce a Single Pulse
Hierarchy with Submodule Components
Synchronizing External Inputs
©2001 --Don Bouldin
DESIGN FLOW
©2001 --Don Bouldin
DETERMINE SYSTEM I/O REQUIREMENTS
©2001 --Don Bouldin
DECOMPOSE EACH LEVEL
INTO 7+/-2 SUBMODULES
©2001 --Don Bouldin
SYNTHESIZE AND SIMULATE EACH
SUBMODULE AND THEN INTEGRATE THEM
pf3
pf4
pf5

Partial preview of the text

Download Digital ASIC Design Guide by Don Bouldin, ECE 551, UT, Fall 2001 - Prof. Donald Bouldin and more Exams Digital Systems Design in PDF only on Docsity!

© 2001 -- Don Bouldin

DESIGNING DIGITAL ASICS

ECE 551

FALL 2001

Don Bouldin, Ph.D., P.E.

Prof. of Electrical & Computer Engineering

University of Tennessee

TEL: (865)-974-

FAX: (865) -974-

[email protected]

SCHEMATIC AND OR

AND

architecture behavior of control isHDL if left_paddle thenn_state <= hit_state elsif n_state <= miss_stateend if;

PLACE & ROUTE PHYSICAL LAYOUT

SYNTHESIS

© 2001 -- Don Bouldin

DESIGN IMPLEMENTATION

• Design Flow

• Prototyping Tips

• Basic Built-In Self-Test

• Debouncing External Switches

• Filtering an Input to Produce a Single Pulse

• Hierarchy with Submodule Components

• Synchronizing External Inputs

© 2001 -- Don Bouldin

DESIGN FLOW

© 2001 -- Don Bouldin

DETERMINE SYSTEM I/O REQUIREMENTS

DECOMPOSE EACH LEVEL

INTO 7+/-2 SUBMODULES

SYNTHESIZE AND SIMULATE EACH

SUBMODULE AND THEN INTEGRATE THEM

© 2001 -- Don Bouldin

GENERATE THE PHYSICAL LAYOUT

© 2001 -- Don Bouldin

DESIGN STEPS (part 1)

1. Analyze the requirements of the application.

2. Develop the initial architectural specifications.

3. Decompose the design into 7+/ -2 manageable blocks

at each level of the hierarchy from top to bottom.

4. Develop structural VHDL for each level to show the

interconnections of submodules.

5. Develop the VHDL code for each submodule.

© 2001 -- Don Bouldin

DESIGN STEPS (part 2)

6. Compile and test each VHDL submodule individually

(You may find it easier to enter the design bottom-up).

7. Integrate previously tested submodules and test all of

them together at each level.

8. Generate the physical layout of the entire design.

9. Perform a post-layout simulation of the entire design.

10. Download the configuration file to the prototype

board to demonstrate the working design.

© 2001 -- Don Bouldin

DESIGN FLOW

ALTERA PROTOTYPING BOARD

BASIC BUILT-IN SELF-TEST

• Downloading bist_alt ensures the integrity of the

connection between the CPU and the Altera

prototyping board AND then checks one input switch

and both 7 -segment displays.

• More thorough checks could be added to ensure the

integrity of the board I/O for a specific project.

© 2001 -- Don Bouldin

debounce.vhd (part 1)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.all;

USE IEEE.STD_LOGIC_ARITH.all;

USE IEEE.STD_LOGIC_UNSIGNED.all;

-- Debounce Pushbutton: Filters out mechanical switch bounce for around 40Ms.

ENTITY debounce IS

PORT(pb, clock_100Hz : IN STD_LOGIC;

pb_debounced : OUT STD_LOGIC);

END debounce;

© 2001 -- Don Bouldin

debounce.vhd (part 2)

ARCHITECTURE a OF debounce IS

SIGNAL SHIFT_PB : STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

-- Debounce clock should be approximately 10ms or 100Hz

PROCESS

BEGIN

WAIT UNTIL (clock_100Hz'EVENT) AND (clock_100Hz = '1');

-- Use a shift register to filter switch contact bounce

SHIFT_PB(2 DOWNTO 0) <= SHIFT_PB(3 DOWNTO 1);

SHIFT_PB(3) <= NOT PB;

IF SHIFT_PB(3 DOWNTO 0)="0000" THEN

PB_DEBOUNCED <= '0';

ELSE

PB_DEBOUNCED <= '1';

END IF;

END PROCESS;

END a;

© 2001 -- Don Bouldin

BEHAVIOR OF debounce.vhd

CLOCK PB SHIFT_PB PB_DEBOUNCED

© 2001 -- Don Bouldin

FILTERING AN INPUT TO

PRODUCE A SINGLE PULSE

A Circuit Can Be Implemented

to Produce Only a Single Pulse

An External Pushbutton Switch May

Be Held Down For Multiple Clock Ticks

onepulse.vhd (part 1)

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 : OUT STD_LOGIC);

END onepulse;

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');

-- 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

© 2001 -- Don Bouldin

onepulse.vhd (part 3)

-- A single clock cycle pulse is produced when the switch is hit

-- No matter how long the switch is held down

-- The switch input must already be debounced

IF PB_debounced = '1' AND PB_debounced_delay = '0' THEN

PB_single_pulse <= '1';

ELSE

PB_single_pulse <= '0';

END IF;

PB_debounced_delay <= PB_debounced;

END IF;

END PROCESS;

END a;

© 2001 -- Don Bouldin

HIERARCHY WITH SUBMODULE

COMPONENTS

clock_25Mhz

clk_div

pb

clock_100Hz

clock_1Mhz

prescalar

debounce1 single_pulse

pb_debounced pb1_single_pulse

debounce onepulse

© 2001 -- Don Bouldin

hierarch.vhd (part 1)

LIBRARY IEEE;

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

ENTITY hierarch IS PORT (clock_25Mhz, pb1 : IN STD_LOGIC; pb1_single_pulse : OUT STD_LOGIC); END hierarch; ARCHITECTURE a OF hierarch IS -- Declare internal signals needed to connect submodules SIGNAL clock_1MHz, clock_100Hz, pb1_debounced : STD_LOGIC; -- Use Components to Define Submodules and Parameters COMPONENT debounce PORT(pb, clock_100Hz : IN STD_LOGIC; pb_debounced : OUT STD_LOGIC); END COMPONENT;

© 2001 -- Don Bouldin

hierarch.vhd (part 2)

COMPONENT onepulse PORT(pb_debounced, clock : IN STD_LOGIC; pb_single_pulse : OUT STD_LOGIC); END COMPONENT;

COMPONENT clk_div 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); END COMPONENT;

hierarch.vhd (part 3)

BEGIN

-- Use 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;

HIERARCHY WITH SUBMODULE

COMPONENTS

clock_25Mhz

clk_div

pb

clock_100Hz

clock_1Mhz

prescalar

debounce1 single_pulse

pb_debounced pb1_single_pulse

debounce onepulse