• No results found

12. A B C A B C A B C 1 A B C A B C A B C JK-FF NETr

N/A
N/A
Protected

Academic year: 2021

Share "12. A B C A B C A B C 1 A B C A B C A B C JK-FF NETr"

Copied!
12
0
0

Loading.... (view fulltext now)

Full text

(1)

12.

1.

,

.

,

1

.

.

Flip-Flops

:

,

Flip-Flops

,

Flip – Flop

.

(

MOD).

.

-8

8

,

0

7 (

000

111

).

1.

n

Flip-Flops

.

n

Flip-Flops

: 2

n

.

2

n

,

Modulo

.

-5)

0-4 (

000-100),

(

-11)

0-10

0000-1010)

.

A B C

A B C

A B C

0

0 0 0

0 0 0

0 0 0

1

0 0 1

0 0 1

0 0 1

2

0 1 0

0 1 0

0 1 0

3

0 1 1

0 1 1

0 1 1

4

1 0 0

1 0 0

1 0 0

5

MOD-5

1 0 1

1 0 1

6

MOD-6

1 1 0

7

MOD-7

8

9

A B C

A B C

A B C

0

0 0 0

0 0 0 0

0 0 0 0

1

0 0 1

0 0 0 1

0 0 0 1

2

0 1 0

0 0 1 0

0 0 1 0

3

0 1 1

0 0 1 1

0 0 1 1

4

1 0 0

0 1 0 0

0 1 0 0

5

1 0 1

0 1 0 1

0 1 0 1

6

1 1 0

0 1 1 0

0 1 1 0

7

1 1 1

0 1 1 1

0 1 1 1

8

MOD-8

1 0 0 0

1 0 0 0

9

MOD-9

1 0 0 1

MOD-10

1.

.

:

1.

(

- )

.

2.

n (

2

n

)

FF .

. JK SR

PETr / NETr (

) (

).

3.

(

)

FF (

).

4.

FF,

,

,

. (

,

FF).

5.

(

)

FF.

2.

-8

JK-FF

NETr

-8 JK-FF

NETr

,

(2)

FF

1 0

).

.

:

1.

-8 (

0-7).

2.

2

n

= 8

n = 3 FF ( JK-FF

NETr).

3.

FF.

/

(

.)

(

.)

FF

A B C A

+

B

+

C

+

J

A

K

A

J

B

K

B

J

C

K

C

0

0 0 0 0 0 1 0

0

1

1

0 0 1 0 1 0 0

1

1

2

0 1 0 0 1 1 0

0 1

3

0 1 1 1 0 0 1

1

1

4

1 0 0 1 0 1

0 0

1

5

1 0 1 1 1 0

0 1

1

6

1 1 0 1 1 1

0

0 1

7

1 1 1 0 0 0

1

1

1

2.

-8.

FF

FF

000

001).

(CLK)

FF

:

J

A

=0, K

A

=X

A-FF

J

B

=0, K

B

=X

B-FF

J

C

=1, K

C

=X

C-FF

‘0’

‘1’.

.

4.

FF.

,

,

. (

,

).

.

FF

.

:

.

AB

00 01 11 10 AB

00 01 11 10

C

0

X X

C

0

X X

1

1 X X

1

X X 1

J

A

= B.C

K

A

= B.C

AB

00 01 11 10 AB

00 01 11 10

C

0

X X

C

0

X

X

1

1 X X 1

1

X 1 1 X

J

B

= C

K

B

= C

AB

00 01 11 10 AB

00 01 11 10

C

0

1 1 1 1

0

C

X X X X

1

X X X X

1

1 1 1 1

J

C

= 1

K

C

= 1

5.

(

.)

FF. (

1).

J K Q Q P A J K Q Q P B J K Q Q P C H 1 CP H 1 4 2 1 and

(3)

1.

-8 JK-FF.

3.

0,7,4,2,5,3 (

) JK-FF

NETr

0,7,4,2,5,3

) JK-FF

NETr.

.

/

.

.

FF

A B C A

+

B

+

C

+

J

A

K

A

J

B

K

B

J

C

K

C

0

0 0 0 1 1 1 1 1 1

7

1 1 1 1 0 0

0

1

1

4

1 0 0 0 1 0

1 1 0

2

0 1 0 1 0 1 1

1 1

5

1 0 1 0 1 1

1 1

0

3

0 1 1 0 0 0 0 X

1 X 1

1

0 0 1

D D D D D D

6

1 1 0

D D D D D D

3.

0,7,4,2,5,3.

1.

,

0,7,4,2,5,3.

2.

2

n

7 ( 2

n

)

n = 3 FF (

JK-FF

NETr).

3.

FF.

4.

FF.

,

.

1,6

. (

).

.

FF

.

FF

.

AB

00 01 11 10 AB

00 01 11 10

C

0

1 1 D X

0

C

X X D 1

1

D X D

1

D X

1

J

A

= C’

K

A

= B’

AB

00 01 11 10 AB

00 01 11 10

C

0

1 X D 1

0

C

X 1 D X

1

D X X 1

1

D 1 1 1

J

B

= 1

K

B

= 1

AB

00 01 11 10 AB

00 01 11 10

C

0

1 1 D

C

0

X X D X

1

D X X X

1

D

1

1

J

C

= A’

K

C

= B

5.

(

.)

FF. (

).

4.

1.

0,7,4,2,5,3 JK –

FLIP-FLOP

2.

mod-11 JK Flip-Flops.

3.

0, 6, 3, 7, 1, 2, 5 JK

Flip-Flops.

4.

MOD-8

-,

State

Editor

.

.

(4)

Finite State Machine (FSM) Editor

.

1

FSM.

1.

File New

,

2

.

CLK

reset

.

q

3bits

.

2.

3.

FSM

Editor,

(S1,…,S8)

,

3.

FSM Editor,

VHDL,

1.

vhd

,

File

Export

(VHDL code).

-- Generated : 11/16/2013 5:51:49 PM library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity SAMPLE is port ( reset: in std_logic; CLK: in std_logic;

q: out std_logic_vector ( 2 downto 0 ));

end;

architecture SAMPLE_arch of SAMPLE is

-- SYMBOLIC ENCODED state machine: SMachine0 type SMachine0_type is (S1,S2,S3,S4,S5,S6,S7,S8); signal SMachine0: SMachine0_type := S1;

begin

-- concurrent signals assignments

--- Machine: SMachine0 ---SMachine0_machine: process (CLK) begin if reset='1' then SMachine0 <= S1;

elsif CLK'event and CLK = '1' then

-- Set default values for registered outputs/signals and for variables

case SMachine0 is when S1 => q<="000";

if reset='0' then SMachine0 <= S2; end if;

when S2 => q<="001";

if reset='1' then SMachine0 <= S1; elsif reset='0'then

SMachine0 <= S3; end if;

when S3 => q<="010";

if reset='1' then SMachine0 <= S1; elsif reset='0'then

SMachine0 <= S4; end if;

when S4 => q<="011";

if reset='1' then SMachine0 <= S1; elsif reset='0'then

SMachine0 <= S5; end if;

when S5 => q<="100";

if reset='1' then SMachine0 <= S1; elsif reset='0'then

SMachine0 <= S6; end if;

when S6 => q<="101";

if reset='1' then SMachine0 <= S1; elsif reset='0'then

(5)

SMachine0 <= S7; end if;

when S7 => q<="110";

if reset='1' then SMachine0 <= S1; elsif reset='0'then

SMachine0 <= S8; end if;

when S8 => q<="111";

if reset='1' then SMachine0 <= S1; elsif reset='0'then SMachine0 <= S1; end if; when others => null; end case; end if; end process; end SAMPLE_arch;

1.

Tools

New Macro Wizard.

4.

Macro Name

,

Counter 1.

From File

counter1.vhd,

VHDL

.

4.

5.

Next,

5

TSM

.

Save.

6

.

Insert

,

7.

6.

7.

8.

Pin

Bus Pin

Meters

Voltage Pin,

q

3bits.

Counter1 clk reset q U1 Counter1

(6)

8.

VHDL

.

bit

.

FSM Editor

Counter1

File

Edit Ports.

9,

bits

q2, q1, q0.

1.

9.

S1

S2

S3

S4

q2<='0'

;

q1<='0'

;

q0<='0'

;

q2<='0'

;

q1<='0'

;

q0<='1'

;

q2<='0'

;

q1<='1'

;

q0<='0'

;

q2<='0'

;

q1<='1'

;

q0<='1'

;

S5

S6

S7

S8

q2<='1'

;

q1<='0'

;

q0<='0'

;

q2<='1'

;

q1<='0'

;

q0<='1'

;

q2<='1'

;

q1<='1'

;

q0<='0'

;

q2<='1'

;

q1<='1'

;

q0<='1'

;

1.

VHDL

Counter1b.vhd

,

Tools

New Macro

VHDL.

10

Analysis

Digital VHDL Simulation,

11.

10.

11.

VHDL

.

IF

1-

(0-->9-->0).

bit

(clk)

4-bit

(digit).

IF.

temp

4 Flip-Flops

4-bit

.

LIBRARY ieee; USE ieee.std_logic_1164.all; Counter1 clk reset q U1 Counter1 H L Reset clk 1k q H L Reset clk 1k Counter1b reset clk q0 q2 q1 U2 Counter1b q2 q1 q0 q2 q1 q0 T Time (s) 0.00 2.00m 4.00m 6.00m 8.00m q2 L H q1 L H q0 L H

(7)

ENTITY counter IS

PORT (clk : IN STD_LOGIC;

digit : OUT INTEGER RANGE 0 TO 9);

END counter;

ARCHITECTURE counter OF counter IS BEGIN

count: PROCESS(clk)

VARIABLE temp :

INTEGER RANGE 0 TO 10; BEGIN

IF (clk'EVENT AND clk='1') THEN temp := temp + 1;

IF (temp=10) THEN temp := 0; END IF;

END IF;

digit <= temp; END PROCESS count; END counter;

reset

temp

toy digit).

temp

4-bit

.

.

WAIT UNTIL

LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY counter IS PORT (clk : IN STD_LOGIC;

digit : OUT INTEGER RANGE 0 TO 9); END counter;

ARCHITECTURE counter OF counter IS BEGIN

PROCESS -- no sensitivity list

VARIABLE temp : INTEGER RANGE 0 TO 10;

BEGIN

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

temp := temp + 1;

IF (temp=10) THEN temp := 0; END IF; digit <= temp; END PROCESS; END counter;

,

7 segment display (SSD)

LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY counter IS PORT (clk, reset : IN STD_LOGIC;

digit1, digit2 : OUT

STD_LOGIC_VECTOR (6 DOWNTO 0)); END counter;

ARCHITECTURE counter OF counter IS BEGIN PROCESS(clk, reset) VARIABLE temp1: INTEGER RANGE 0 TO 10; VARIABLE temp2: INTEGER RANGE 0 TO 10; BEGIN IF (reset='1') THEN temp1 := 0; temp2 := 0;

ELSIF (clk'EVENT AND clk='1') THEN temp1 := temp1 + 1; IF (temp1=10) THEN temp1 := 0; temp2 := temp2 + 1; IF (temp2=10) THEN temp2 := 0; END IF; END IF; END IF; ---- BCD to SSD conversion:

(8)

---CASE temp1 IS

WHEN 0 => digit1 <= "1111110"; --7E WHEN 1 => digit1 <= "0110000"; --30 WHEN 2 => digit1 <= "1101101"; --6D WHEN 3 => digit1 <= "1111001"; --79 WHEN 4 => digit1 <= "0110011"; --33 WHEN 5 => digit1 <= "1011011"; --5B WHEN 6 => digit1 <= "1011111"; --5F WHEN 7 => digit1 <= "1110000"; --70 WHEN 8 => digit1 <= "1111111"; --7F WHEN 9 => digit1 <= "1111011"; --7B WHEN OTHERS => NULL;

END CASE;

CASE temp2 IS

WHEN 0 => digit2 <= "1111110"; --7E WHEN 1 => digit2 <= "0110000"; --30 WHEN 2 => digit2 <= "1101101"; --6D WHEN 3 => digit2 <= "1111001"; --79 WHEN 4 => digit2 <= "0110011"; --33 WHEN 5 => digit2 <= "1011011"; --5B WHEN 6 => digit2 <= "1011111"; --5F WHEN 7 => digit2 <= "1110000"; --70 WHEN 8 => digit2 <= "1111111"; --7F WHEN 9 => digit2 <= "1111011"; --7B WHEN OTHERS => NULL;

END CASE; END PROCESS; END counter;

FOR/LOOP:

FOR i IN 0 TO 5 LOOP

x(i) <= enable AND w(i+2); y(0, i) <= w(i); END LOOP;

FOR/LOOP (

GENERATE),

.

.

FOR I IN 0 TO CHOICE

LOOP,

CHOICE

(

),

.

WHILE/LOOP:

WHILE (i < 10) LOOP

WAIT UNTIL clk'EVENT AND clk='1'; (other statements) END LOOP;

EXIT:

, EXIT

,

(

,

LOOP

).

«0»

:

FOR i IN data'RANGE LOOP CASE data(i) IS

WHEN '0' => count:=count+1; WHEN OTHERS => EXIT;

END CASE; END LOOP;

NEXT:

NEXT

LOOP

i=skip:

FOR i IN 0 TO 15 LOOP NEXT WHEN i=skip;

-- jumps to next iteration (...)

END LOOP;

Carry Ripple Adder

generic,

bits.

8bit

.

FOR/LOOP,

IF.

--Solution 1: Generic, with VECTORS

LIBRARY ieee;

USE ieee.std_logic_1164.all; ENTITY adder IS

GENERIC (length : INTEGER := 8);

PORT ( a, b: IN

STD_LOGIC_VECTOR (length-1 DOWNTO 0);

cin: IN STD_LOGIC; s: OUT

STD_LOGIC_VECTOR (length-1 DOWNTO 0);

cout: OUT STD_LOGIC); END adder;

ARCHITECTURE adder OF adder IS BEGIN

(9)

VARIABLE carry :

STD_LOGIC_VECTOR (length DOWNTO 0); BEGIN

carry(0) := cin;

FOR i IN 0 TO length-1 LOOP

s(i) <= a(i) XOR b(i) XOR carry(i); carry(i+1) := (a(i) AND b(i)) OR (a(i) AND

carry(i)) OR (b(i) AND carry(i)); END LOOP; cout <= carry(length); END PROCESS; END adder; --Solution 2: non-generic, --with INTEGERS LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY adder IS PORT ( a, b: IN INTEGER RANGE 0 TO 255; c0: IN STD_LOGIC;

s: OUT INTEGER RANGE 0 TO 255; c8: OUT STD_LOGIC);

END adder;

ARCHITECTURE adder OF adder IS BEGIN PROCESS (a, b, c0) VARIABLE temp : INTEGER RANGE 0 TO 511; BEGIN IF (c0='1') THEN temp:=1; ELSE temp:=0; END IF; temp := a + b + temp; IF (temp > 255) THEN c8 <= '1'; temp := temp---256; ELSE c8 <= '0'; END IF; s <= temp; END PROCESS; END adder;

(Bad clocking)

(

) (

).

. CPLDs)

flip-flop

.

«signal

does not hold value after clock edge»

.

(

).

:

PROCESS (clk) BEGIN

IF(clk'EVENT AND clk='1') THEN counter <= counter + 1;

ELSIF(clk'EVENT AND clk='0') THEN counter <= counter + 1; END IF; ... END PROCESS;

,

,

counter

.

,

.

EVENT

.

IF(clk'EVENT AND clk='1')

,

IF(clk'EVENT),

(

.

AND clk='1)

: clock not locally stable.

,

.

:

PROCESS (clk) BEGIN IF(clk'EVENT) THEN counter := counter + 1; END IF; ... END PROCESS;

PROCESS

clk

,

.

,

,

.

,

,

.

,

.

,

PROCESS,

.

.

:

PROCESS (clk) BEGIN counter := counter + 1; ... END PROCESS;

(10)

counter

clk (

),

«ignored unnecessary

pin clk».

,

,

.

,

.

PROCESS (clk) BEGIN

IF(clk'EVENT AND clk='1') THEN

x <= d; END IF; END PROCESS; ---PROCESS (clk) BEGIN

IF(clk'EVENT AND clk='0') THEN

y <= d; END IF; END PROCESS;

VARIABLE

SIGNAL

0-7

.

VARIABLE

.

SIGNAL

.

:

--Solution 1: With a VARIABLE

ENTITY counter IS

PORT ( clk, rst: IN BIT;

count: OUT INTEGER RANGE 0 TO 7); END counter;

ARCHITECTURE counter OF counter IS BEGIN

PROCESS (clk, rst)

VARIABLE temp: INTEGER RANGE 0 TO 7;

BEGIN

IF (rst='1') THEN temp:=0;

ELSIF (clk'EVENT AND clk='1') THEN

temp := temp+1; END IF; count <= temp; END PROCESS; END counter;

1

VARIABLE

.

(clk)

.

:

-- Solution 2: With SIGNALS only

ENTITY counter IS

PORT ( clk, rst: IN BIT;

count: BUFFER INTEGER RANGE 0 TO 7);

END counter;

ARCHITECTURE counter OF counter IS BEGIN

PROCESS (clk, rst) BEGIN

IF (rst='1') THEN

count <= 0;

ELSIF (clk'EVENT AND clk='1') THEN

count <= count + 1; END IF; END PROCESS; END counter;

2,

SIGNALS.

,

, count

BUFFER,

(

).

SIGNAL

VARIABLE

.

std_logic_1164

STD_LOGIC

.

flip-flops

(

3bit

count).

4bit

4bit

.

.

(11)

Clear Count

1

0

0

0

1

VHDL

.

USE

IEEE.STD_LOGIC_UNSIGNED.ALL

STD_LOGIC_VECTOR.

value

.

clear

1,

value

0000

OTHERS =>

‘0’.

,

count

1, value

1

.

count

Q

Q<=value,

PROCESS.

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; -- need this to -- add STD_LOGIC_VECTORs ENTITY counter IS PORT ( Clock: IN STD_LOGIC; Clear: IN STD_LOGIC; Count: IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END counter;

ARCHITECTURE Behavioral OF counter IS

SIGNAL value:

STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS (Clock, Clear)

BEGIN

IF Clear = '1' THEN

value <= (OTHERS => '0');

-- 4-bit vector of 0, same as "0000" ELSIF (Clock'EVENT AND Clock='1') THEN IF Count = '1' THEN value <= value + 1; END IF; END IF; END PROCESS; Q <= value; END Behavioral;

-.

.

Clear Count Down

1

0

0

0

1

0

0

1

1

VHDL

.

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY udcounter IS PORT ( Clock: IN STD_LOGIC;

(12)

Clear: IN STD_LOGIC; Count: IN STD_LOGIC; Down: IN STD_LOGIC;

Q: OUT INTEGER RANGE 0 TO 15);

END udcounter;

ARCHITECTURE Behavioral OF udcounter IS

BEGIN

PROCESS (Clock, Clear)

VARIABLE value:

INTEGER RANGE 0 TO 15;

BEGIN

IF (Clear = '1') THEN

value := 0;

ELSIF (Clock'EVENT AND Clock='1') THEN IF (Count = '1') THEN IF (Down = '0') THEN value := value + 1; ELSE value := value - 1; END IF; END IF; END IF; Q <= value; END PROCESS; END Behavioral;

.

.

.

Clear Load Count Down

1

0

0

0

0

0

1

0

0

0

1

1

0

1

VHDL

.

References

Related documents

For additional information about particular law schools, a student should contact the school itself and request a copy of its catalogue or bulletin.. After reviewing the

keessa tarjottava interventio pohjautuu kuitenkin suomalaiseen DPS-tutkimuk- seen, jossa osoitettiin että diabeteksen ilmaantuvuutta korkean riskin henkilöillä voidaan

Part A, referred to as the Base Bid, is intended to be completed on or before June 30, 2010.  Part B, 

[r]

el Gobierno, por tratarse de una pseudo-consulta o pseudo-referéndum y que también fue suspendido por el Alto Tribunal. Dichos instrumentos desarrollan normativamente lo indicado

• (2) aluminum 2 speed Lewmar Evo 65 electric self-tailing alloy 24V winches or equivalent with toe controls for main halyard and all lines in &#34;fwd pit&#34;. • (2) aluminum 2

Como alternativa al capitalismo, el Vivir Bien valora la diversidad cultural para “crecer en hu- manidad”, da valor a las propuestas que defienden subordinar la economía a

The purpose of the redesign is to provide microchannels with strong heaters, high insulation performance and with test sections easy to dismantle and reassemble,