Regfile for DE1

download Regfile for DE1

of 7

Transcript of Regfile for DE1

  • 8/20/2019 Regfile for DE1

    1/16

    Lab #5 Design of a Register File and Datapath

    Objectives:

    " #$ %&'( '()'%*# '(#$ #*+ '(#+,(&- -$%'. /$, 0& 1$2+1+(# 3+#4++( ,+%')#+,) '( & .$156#+,

    " #$ '(#,$06.+ #*+ .$(.+5# $/ & .$(#,$- 4$,0 /$, '15-+1+(#'(% &( +-+1+(#&,7 )+# $/ 1'.,$"$5+,'$()8

    " #$ %&'( +95+,'+(.+ 4'#* #*+ 6)+ $/ :;

  • 8/20/2019 Regfile for DE1

    2/16

     

    M ,+%')#+, /'-+ .$15,')+) & 0+.$0+, 4*'.* .*$$)+) & 0+)#'('$( ,+%')#+, &(0 & 16-#'5-+9+, #$

    0',+.# #*+ $6#56#) $/ &(7 ,+%')#+, #*,$6%* #$ #*+ 0& $6#56# -'(+)8 ?*+ 0+.$0+, )+-+.# -'(+) 1&7

    #*+( 3+ 2'+4+0 &) #*+ 0+)#'('$( K&00,+))K &(0 #*+ 16-#'5-+9+, )+-+.# -'(+) &) #*+ )$6,.+K&00,+))K8

  • 8/20/2019 Regfile for DE1

    3/16

    ,-./012/(34

    ?*') 0&5* .',.6'# #$ 3+ 36'-# ,+G6',+) )+2+,&- .$15$(+(#) #* 4+ 4'-- 0+)'%( &(0 '15-+1+(#

    &(0 #+)# '(0'2'06&--78 ?$ /&.'-'#+ )6..+))/6- '15-+1+(#'$(> 2+,'/'.'$( &(0 0$.61+(#'$( $/

    .$15-+9 0+)'%()> $(+ )*$6-0 5,$.++0 '( &( !"#$%&%"'()* &,-.)($ /&)*'$( 4*+,+37 +&.*

    .$15$(+(# $/ & .',.6'# ') 36'-# &(0 2+,'/'+0 '(0+5+(0+(#-78 ?*+ .$15$(+(#) &,+ #*+( 56#

    #$%+#*+, &(0 1&7 /$,1 &($#*+,> -&,%+, .$15$(+(# #*+ (+9# -+2+- $/ #*+ 0+)'%( *'+,&,.*78?*+)+ .$13'(+0 .$15$(+(#) 1&7 #*+( 3+ .$13'(+0 #$ /,$1 +2+( -&,%+, .$15$(+(#) &(0 )$ $(8

    ?*') .$(#'(6+) #$ #*+ #$5 -+2+- $/ #*+ 0+)'%(8 ?*') 5,&.#'.+ &55-'+) #$ #*+ 0+)'%( $/ *&,04&,+>

    )$/#4&,+ $, &(7 $#*+, )7)#+1 /$, #* 1#+,P Q6, /'(&- %$&- *+,+ ') #$ 0+)'%( &(0 '15-+1+(# #*+

    -$%'. /$, & *&,04&,+ 0&5* #* .$(#&'() & )'15-+ &,'#*1+#'. &(0 -$%'. 6('# DM=NE #* .&(5+,/$,1 -$4 -+2+- 5,$.+))'(%8

    R,$.++0 1+#*$0'.&--7 &(0 )-$4-7 &(0 3+ 1'(0/6- $/ 3'# $,0+,'(% /$, #*+ J"3'# 36) .$((+.#'$()8

    N)+ (+-7 &,,&(%+0> .$-$6,".$0+0 4','(% #$ &'0 '( 0+36%%'(% &(0 1&)H'(% #&5+ #$ &//'9

    #+15$,&,7 -&3+-) /$, #*+ #$%%-+ )4'#.*+) $( #*+ 3,+&03$&,0)8 L+ )#&,# 37 0+)'%('(% #*+ ,+%')#+,/'-+8

    Step Decoder  

    ?*+ ,+%')#+, /'-+ ,+G6',+) & C"-'(+ #$ J"-'(+ 0+.$0+, 4'#* ;I"#,6+ $6#56#) &(0 $(+ ;I"#,6+ +(&3-+

    '(56# &) )*$4( '( #*+ .',.6'# $/ Step 4 8 ?*') ') )'1'-&, #$ #*+ 0+.$0+, 7$6 0+)'%(+0 '( &5,+2'$6) -&38 I15-+1+(# #*') .$15$(+(# 6)'(% #*+ %,&5*'. 0+)'%( +0'#$, &(0 #+)# '# '( #*+

    FMSTUUU 0+2'.+8 V+(+,+ & )713$- /$, #*') 0+.$0+, 4*'.* 7$6 4'-- 6)+ -+,8 W++ &55+(0'9 X8Y>

    5&%+ ZY[8

    Step 2 Quad 4: MUX  

    ?*+ ,+%')#+, /'-+ &-)$ ,+G6',+) & \6&0 JO[ 16-#'5-+9+,8 M \6&0 JO[ FNS *&) /$6, J"3'# 0&

  • 8/20/2019 Regfile for DE1

    4/16

    '(56#)> & J"3'# 0& $6#56# &(0 #4$ )+-+.# -'(+) &) )*$4( 3+-$48 W#607 #*+ :;

  • 8/20/2019 Regfile for DE1

    5/16

    Step 3 Registers  

    ?*+ /$6, ,+%')#+,) !"# !%# !& '() !*  '( #*+ 0'&%,&1 3+-$4 &,+ #$ 3+ '15-+1+(#+0 6)'(% #*+:; 58 JC` $/ #*+ #+9#3$$HE8 a&.* ,+%')#+,.$15,')+) J 5$)'#'2+ +0%+"#,'%%+,+0 < /-'5/-$5)8 a&.* ,+%')#+, *&) & J"3'# '(56# 0& &(0 & J"3'#

    $6#56# 0&8 ?*+ .-$.H '(56# #$ &-- /-'5/-$5) '( #*+ ,+%')#+, ') 0+/'(+0 &) 567 8 ]$15'-+ #*') .$0+

    &(0 1&H+ & )713$- /$, #*+ ,+%')#+,8

    Step 4 Register File  

  • 8/20/2019 Regfile for DE1

    6/16

    b$4 4+ 4'-- 0+)'%( #*+ ,+%')#+, /'-+ 6)'(% #*+  !"#$%&' )*+&!, *)&-."   37 .$((+.#'(% #*+

    16-#'5-+9+,> 0+.$0+, &(0 /$6, ,+%')#+,) &) )*$4( 3+-$48 ]$15'-+ &(0 #+)# #*+ ,+%')#+, /'-+ .',.6'#

    '( #*+ FMSTUUU .*'5 #$ +()6,+ #* &-- /$6, ,+%')#+,) .&( 3+ -$&0+0 6)'(% #$%%-+ )4'#.*+) $( #*+

    Data In  -'(+)> &(0 ,+&0 6)'(% =a

  • 8/20/2019 Regfile for DE1

    7/16

    ?*+ ,+%')#+, /'-+ /$,1) #*+ 3&)') $/ & K0&5*K 4*'.* ') & /6(0&1+(#&- 36'-0'(% 3-$.H $/ &

    .$156#+,8 W++ #*+ 0'&%,&1 3+-$48 WUE &(0 0+)#'('$( D

    +9+.6#'$( ') &.*'+2+0 37 &55-7'(% & -$&0 +(&3-+ D=aE '(56# #$ #*+ ,+%')#+, /'-+8 ?*') =a '(56# 1&7

    3+ .$()'0+,+0 &) #*+ .-$.H #$ #*+ +(#',+ )7)#+18 g$6 .&( 2'+4 #*+ ,+)6-#) $/ +&.* $5+,'$( 6)'(%

    /$6, =a

  • 8/20/2019 Regfile for DE1

    8/16

    8922'0: ;< 0/=1+3/0 30'(+% >"

    )'3' 1(.93

    !/=1+3/0

    @0'(+

  • 8/20/2019 Regfile for DE1

    9/16

     s 2  s 1  s 0   F0 0 0 0 0 0 0 clear0 0 1 B - A subtract

    0 1 0 A - B subtract

    0 1 1 A + B add1 0 0 A XOR B exclusive OR1 0 1 A OR B logical OR1 1 0 A AND B logical AND1 1 1 1 1 1 1 preset

    Step 7 Modify the Register File

    ?$ 3+ &3-+ #$ '(.-60+ &( M=N '( $6, 0&5*> 4+ 16)# /',)# 1$0'/7 $6, ,+%')#+, /'-+ 0+)'%( )$ #*

    '# *&) #*+ .&5&3'-'#7 #$ )+-+.# -/. ,+%')#+,) &) $6#56#) DW$6,.+ h+%')#+, M &(0 W$6,.+ h+%')#+, XE8?*') 4'-- &--$4 #*+ .$(#+(#) $/ &(7 #4$ ,+%')#+,) #$ 3+ &55-'+0 #$ #*+ A &(0 B '(56#) $/ #*+ M=N8?*') ') +&)'-7 &.*'+2+0 37 &00'(% & )+.$(0 \6&0 JO[ FNS #$ #*+ 0+)'%( $/ #*+ ,+%')#+, /'-+ &)

    )*$4( 3+-$4O

  • 8/20/2019 Regfile for DE1

    10/16

     

    ?*+ '(56#) #$ #*') ,+%')#+, /'-+ &,+ ($4O

    destination register select   DC 3'#)E> source register A select   DC 3'#)E> source register Bselect  DC 3'#)E &(0 load enable D[ 3'#E8

    ?*+ $6#56#) &,+ Data Out A &(0 Data Out B  D+&.* J 3'#)E &) )*$4(8

    ]$15'-+ #*') 0+)'%( &(0 .,++ & )713$- /$, #*') ,+%')#+, /'-+8

  • 8/20/2019 Regfile for DE1

    11/16

    Step 8 Datapath with ALU

    b$4> #*+ 0&5* 0+)'%( .&( 3+ +9#+(0+0 37 '(.-60'(% #*+ M=N /,$1

    Step 6

     &(0 #*+ ,+%')#+,

    /'-+ /,$1 Step 7  &) )*$4( '( #*+ (+9# /'%6,+O

    N)'(% #*+ %,&5*'. 0+)'%( +0'#$,> 36'-0 #*') .',.6'# 6)'(% #*+ 5,+2'$6) .$15$(+(#) &(0 .$15'-+>

    '15-+1+(# &(0 #+)#8 ?*') 0&5* *&) 01'% 1$,+ .&5&3'-'#7 #*&( $6, /',)# 0+)'%( '( Step 5 O

    D&E &) 3+/$,+> &(7 ,+%')#+, .&( 3+ -$&0+0 4'#* +9#+,(&- 0& /,$1 )4'#.*+)O

    !)  )'3' DJ 3'#)E D4*+,+ 0 c U> [>C $, BE

    D3E &(7 ,+%')#+, .&( 3+ -$&0+0 4'#* #*+ ,+)6-# $/ &(7 $/ #*+ +'%*# /6(.#'$() )655$,#+0 37 $6,

    M=N 4*$)+ '(56# ') #*+ 0& .$(#&'(+0 '( &(7 #4$ $/ #*+ ,+%')#+,)8 A$, +9&15-+O

  • 8/20/2019 Regfile for DE1

    12/16

     

    !)  ! B  C  !D  D4*+,+ 0> M> X c U> [> C $, BE

    4$6-0 &--$4 6) #$ -$&0 &(7 ,+%')#+, 4'#* #*+ )61 $/ &(7 #4$ ,+%')#+,)8

  • 8/20/2019 Regfile for DE1

    13/16

    ?*+ '(56#) d D1, D0, SA1, SA0, SB1, SB0, s2, s1, s0, DS  e .$15,')+ & [U"3'# .$(#,$- 4$,04*'.* )5+.'/'+) & 0+)#'('$( ,+%')#+, DD1, D0E > #*+ #4$ )$6,.+ ,+%')#+,) DSA1, SA0E &(0 DSB1,SB0E> &(0 #*+ M=N /6(.#'$( Ds2, s1, s0E #* $5+,+) $( #*+ )$6,.+ ,+%')#+,)8 ?*+ DS  '(56#

    &--$4) -$&0'(% $/ #*+ ,+%')#+,) 4'#* +9#+,(&- 0& 2'& #*+ \6&0 CO[ FNS8 A$, DScU> +9#+,(&-0& /,$1 )4'#.*+) ') -$&0+0 '(#$ #*+ 0+)#'('$( ,+%')#+,f /$, DSc[> 0& ') #,&()/+,,+0 /,$1 #*+

    M=N $6#56# #$ #*+ 0+)#'('$( ,+%')#+,8 M) '(Step 5

    > $(.+ #*+ .$(#,$- 4$,0 &(0 0& '(56# D'/

    &55,$5,'+E &,+ )+# $( #*+ -+2+- )4'#.*+)> +9+.6#'$( ') &.*'+2+0 37 &55-7'(% & -$&0 +(&3-+ DLEE'(56# D56-)+ -$"*'"-$E #$ #*+ ,+%')#+, /'-+8 ?*') =a '(56# 1&7 3+ .$()'0+,+0 &) #*+ .-$.H #$ #*+

    +(#',+ )7)#+18 g$6 .&( 2'+4 #*+ ,+)6-#) $/ +&.* $5+,'$( 6)'(% /$6, =a

  • 8/20/2019 Regfile for DE1

    14/16

    If you want to experiment further, try changing the ALU functions. For example, replace the "preset"function with an "increment" (A+1) operation. Add status bits for Zero (Z) and Sign (S) as outputs

    from the ALU. Changes can be done very quickly in our modular design ! 

  • 8/20/2019 Regfile for DE1

    15/16

     

    The VHDL source code for Quad 4:1 MUX

    LIBRARY ieee ;

    USE ieee.std_logic_1164.all ;

    ENTITY quad4to1mux IS

    PORT ( a, b, c, d : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;

    s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;

    f : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );

    END quad4to1mux ;

    ARCHITECTURE Behavior OF quad4to1mux IS

    BEGIN

    WITH s SELECT

    f

  • 8/20/2019 Regfile for DE1

    16/16

    The VHDL source code for Quad 2:1 MUX

    LIBRARY ieee ;

    USE ieee.std_logic_1164.all ;

    ENTITY quad2to1mux IS

    PORT ( a, b : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;s : IN STD_LOGIC ;

    f : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );

    END quad2to1mux ;

    ARCHITECTURE Behavior OF quad2to1mux IS

    BEGIN

    f

    F

    F

    F

    F

    F

    F

    F

    F