Stracture vhdl +
-
Upload
morteza-moti -
Category
Documents
-
view
244 -
download
0
Transcript of Stracture vhdl +
-
7/31/2019 Stracture vhdl +
1/23
1
!" # ! $ %
&
Morteza Shabanzadeh [email protected]
! " #$%& ' ( ) '*" +,- . " #/012345
/6 -%728/'*"23( *+93& " ' : '*" 3( * +;
< =;>$
? " '@1( A @ " %4 7 A 341 */" ( A 2?" B C 0 " '* ' A+
DE
www.IranMedar.com
-
7/31/2019 Stracture vhdl +
2/23
2
'( ) *+, - ) .- / * 0 1). 2 ' % 0VHDL3)4- 5 ) %*VHDL%*+ )6
! "# #$$$% &" &" ' (&) * !+, ,&" " ,+ -+ &( ( . " %/ ' 0) %" 1 &" ( %( ) 2#1 &3 4+ %
5 6 " 7 8 % &9 &: . &" # ; 2 < =+ # ) > %" ? @A" 0+& B C #
0DEF &3 G E ";D H C %- ! # 5 H+ E ! &" & 9 & # + 2 1 " =+ & &I JK,L&M+ 8( %" + # (&) %" (&) H+ D 4 C N3 5 / &" , ODE #P%"D! (&) %, ,5 -+ -" 5 Q) ! &R% 4 , #
) %S& " %" 1. 7 ) + ! #K-+ % 4 1 DEL-+ 1. -" % 4 #5T%" F ,+ # % &9 & 1 &" ( 7 U % 4 ,+ #& %" ! 1 1. %( . "0+ 5 V&E %( 4
1. W 2 C FNC& 9$
F * & 4 ) ' A G H0'& 0 '* IJK*L
Context Clauses
Library Clause
Use Clause
Library Units
Package Declaration (optional)
Package Body (optional)
Entity Declaration
Architecture Body
! %4" ! &M N O 'P Q RS ) ' *. ".
! !!!
" " " " # $ # $ # $ # $%%%%&&&&
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
3/23
3
Y_chartL
%
% TS
'!"
#
'@'S % H " %& 4 G 'J U BJ * 'P * & 4 ! %* A 7 T 34 ' 1" '* 1L0 V3 7 A 1 ) '@ "'S % H " N 0T 4 W) " # A 7 ) A O B& 'J U N X&*%&+OY
7 ' *) ?" R* 3( 4 A 0 .( '* 7 3 8 B 8 % " 7 ) " '%&) BP883( 40 - *Z I " * A " '* 7 - 0 '4(+[ 4'J U(((())))" '*% ' = \]4 O ) 'J U ^ % * _ ]4 " 7% % % % \]4'M]0*+++ ) ^ ` B 8 34+
A % ^ ` NYJ * "****A a " 1 7 " @ = 3Y R` '* # A) 4 P7 34+
" A" @ - 0b 3 .* " A) 4 P7 '4 . 'J U _ ]4 4 " '* 734 -'*' )'@ . A) 4 ?" # A 7 ) BM%&* " H+
'* " @ = '4 ) c#A %( 4 ^ ` G _ U7 ' ` A J ) B@1%*0 *
" + " + " + " +B Pd+A) 4 P7 G T "_ U 7 -X ]* '*A %( 4- A J 4" '* H '%4 " ? S" ! = ? 7 e %+" 7 " H ! d.O ) ' %* ! O " '* . A %( 4 ^ ` 0 '* B@+
^ ` - ` G " B @ M '*'@ . ^ 3 " 0 # 34"! C 1*3( 4d f %4 )+
. 3 4 ^ ` ) G BJ * - '* A. * A .! ,"! ,"! ,"! ,"@%1# ` J Y * ' " 434 g# @* " )+
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
4/23
4
% G A @ ' ( ? RL
LIBRARY library_name ;
N h*L
- ---- ---. $. $. $. $- ---
- ---
/ /// / ///. $. $. $. $/ /// - ---
G A @ ' ( ? R$ $ $ $ % B( " )WLUSE library_name . package_name .ALL; N h*L++++ 0000 ) ))) ) )))11231123112311230000 ----++++ 0000 ) ))) ) ))) 0000 ----++++ 0000 ) ))) ) ))) 0 000 ----++++ 0000 ) ))) ) ))) 0 000 ----++++ 0 000 4444 5 5550000 ----
++++ 0 000 4444 5 5550000 44445555 //// 0000 )))) ) )))11231123112311230000 ----
' i 6 6 6 6 L
ENTITY entity_name ISGENERIC( parameter_name : string := default_value ;
parameter_name : integer := default_value );PORT(
input_name , input_name : IN STD_LOGIC;input_vector_name : IN STD_LOGIC_VECTOR( high downto low);bidir_name , bidir_name : INOUT STD_LOGIC;output_name , output_name : OUT STD_LOGIC);
END entity_name ;
%4"'O ( A" A # j Q RS ) _ U ]8 A k B@7 ' * I0*' ( " !l C?" %4" 7 '*+
m * ! P=6 * ) 0 @ 3& '* .Sn 1 'J U N J "c *" 7 %7 '*+) A S h*0 PL
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
5/23
5
N h*L) Aentityj oK p GD+6666 ))))
7777 8888 ) ))) ) )))* * * * 77779 99 9 .... : :::;;;;----$$$$ 8888 ) ))) - ---
6666 8888 ) ))) - ---" " " " 8 ) -8 ) -8 ) -8 ) -" " " " 8 )8 )8 )8 ) - ---
-
7/31/2019 Stracture vhdl +
6/23
6
' i " " " " L
ARCHITECTURE arch_name OF entity_name ISSIGNAL signal_name : STD_LOGIC;SIGNAL signal_name : STD_LOGIC;
BEGIN-- Process Statement
-- Concurrent Procedure Call
-- Concurrent Signal Assignment
-- Conditional Signal Assignment O *. ] " O ! ` " ! P= - '*7 '*
-- Selected Signal Assignment
-- Component Instantiation Statement
-- Generate Statement
END arch_name ;
N h*L " " " " ) ))) ) ))) 4444
BR*' ( " !l C ^1 111 8888 ) ))) ----# # # #
* " @ = " " _ 71111 ????==== - ---????==== 1111 $$$$ ----
- ---
-%7 A O "34 A %(+
37 ) B@7 '* * -L " " " " ) ))) ) ))) 4 4 4 4
BR*' ( " !l C ^1 111 8888 ) ))) - ---# # # #
* " @ = " " _ 7 ????==== 1111 $$$$ ----1111 ????==== - ---
- ---" * m ]( -%7 H O " * " - " " " "343r = 0 ' '8 s H % Y *
34 - " " " "B@70 * * T " qK( '0 0 '* B = ' *. " " " "+++'* # * t( t( " CR0* ' u - A "B( " " 34
" " " "0 B R ' " M* H@ *. ] ! %4" ! P= '* '* " (G 3 8 " %PS(ZGb &(Z ' A " B = " . 'M]0* A % )07 '*+
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
7/23
7
%4" ' i L CASE expression IS
WHEN constant_value =>statement;statement;
WHEN constant_value =>statement;statement;
. ! P= - '*'P ! Ct( t(7 '* O
.
.
WHEN OTHERS =>statement;statement;
END CASE;
%4"%4" G b3& '* v%J gS 7 '* O t( t( F ' ( " ! P= '0 34B( " " 7 %7+
N h*L
@@@@::::AAAA ====BBBB ????==== ----@@@@1111AAAA ====BBBB ????==== ----
6666 - ---
.... ! P= -@ * A %S J '* 3& '* ! C0 " " 1 %7H0 "" 7 w+ N h*L
: ::: ====BBBB ????====CCCC----T ='0 *7 '*+1 111DDDD5555 ====BBBB ????====5555----
= ===BBBB ????====::::----6666 - ---
N h*L
: ::: ====BBBB ????====> >> >----1 111 19 19 19 19 ====BBBB ????====9 99 9----5C5C5C5C .... 1E1E1E1E ====BBBB ????====5555----
= ===BBBB ????====::::----6666 - ---
-@ * A %S J ?" R*4444 07 %7 " ' 7 x P+
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
8/23
-
7/31/2019 Stracture vhdl +
9/23
9
^ ' L* %( 4 O vl *'*)" ) '@" ?" %4 )L
I+ &J 3& S3Y 4 **** Lprocess_label :PROCESS ( signal_name , signal_name , signal_name )
VARIABLE variable_name : STD_LOGIC;VARIABLE variable_name : STD_LOGIC;BEGIN
-- Signal Assignment Statement
-- Variable Assignment Statement
-- Procedure Call Statement
-- If Statement
-- Case Statement
-- Loop Statement
END PROCESS process_label ;
---------------------------------------------------------------
II 3Y 4 &J 3& S! P= G.... ,.... ,.... ,.... Lprocess_label :PROCESS
VARIABLE variable_name : STD_LOGIC;VARIABLE variable_name : STD_LOGIC;
BEGIN
WAIT UNTIL clk_signal = '1' ; .%04 B 8 z
-- Signal Assignment Statement
-- Variable Assignment Statement
-- Procedure Call Statement
-- If Statement
-- Case Statement
-- Loop Statement
END PROCESS process_label ;
3 !{ O '*D|'& ` " N % H " A . 3 4 ! * A%4" t4 7 '* %7" @0 '0 - ! %4" - % * - " } # ) '@ 7 '*+
%4" " ( 34 B( " '0" 7 '* %7
c@= W B( " Y * ! C0 '*+
(Z ~J %PS" "
%4" " ( 34 B( " '0" 7 '* %7
c@= W B( " Y * ! C0 '*+
(Z ~J %PS" "
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
10/23
10
N h*L%4"process'P A * A '*Combinational 3& S B( " " A " ! ` - " Oy - %@b " " 8 3 4 &J3 aprocess0 S I " * 'O ( ?" cJ y -+
7 777 " " " " //// # # # # //// ;;;;
????= 7= 7= 7= 7 " # " # " # " # ; ;;; - ----
---
N h*L%4"process'P A * A '*Sequential" ! ` - 37A clock 8 * '( "A "
enableresetpreset3 4 &J 3& S B( " "process" " 8P@ ) '@ 3 a y R*process O ( " 'P ! P= - # l )S I " * 'O ( 0 +
7 777 $$$$ / /// ; ;;;
====AAAA1111AAAA????= 7= 7= 7= 7 = ===BBBBAAAA::::AAAA;;;;----7777 $A * $$A * $$A * $$A * $= ===AAAA1111AAAA;;;;
????==== JJJJ1111---- - ---
- --- ! P=====BBBBAAAA::::AAAA34 '0 * -A % '*' " 4 A - `? 7 ?" %4 -%7 - ) '*' l U v%P& ) A H????====GGGG::::::::::::::::::::::::::::::::G GGG----" ?" %4 .+
! P=$A * $$A * $$A * $$A * $= ===AAAA1111AAAA'0 *" ? lPScS #$$$$7 '*+O 8 "$A *$A *$A *$A *
cS # PS " y *$$$$O 7 '*$$$$====AAAA1111AAAA? l *PS "7 '* 3= 4 cS #+ %4" ' d IJK* F ]* - * " " '*+
'%4"KKKK KKKK L
IF expression THENstatement ;statement ;
ELSIF expression THEN
statement ;statement ;
ELSEstatement ;statement ;
END IF;
'0 ?" 4! ` " ' ) ! P= G tM 7) 0 '* O " * " * " 7 '* f ( *'S ' KKKK%7 "70 '* e % '@ ! P= " -+
! P= 'P ! Ct( t(7 '* O
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
11/23
11
N h*L====AAAA1111AAAA????==== ----
????==== ---- - ---
%4" %4"" Y * " @ = 3 P7 " O 47 %7 " I * 34 % " '4 4L $+! P=1* B@7 m 7 H % 'S 34 'U 7 e 1 A C A A 4 7 '* # # # #7 '*'0 " * " @ S J "'* m 7 H % O ) ' % * A
))))* * * * ) ))) ) )))* * * * +++7+,+' 8 *" @ S J " 0%& A &* 3 S A " 1 '* " 7 '* ?" @ 3& ]0+5+"%4" " 'S " 7 '* e % 1 ) '@ vM%&* "" '* 3& m 7 1 0bF 34 e
7 '* 3& 4 31# 3 S+
e &% 'S 0T 4 "Lsignal_name
-
7/31/2019 Stracture vhdl +
12/23
12
N h*L" %4" -sequential" 7 '* %7+
. $. $. $. $= ===AAAA1111AAAA---- .... 7 777 $A * $$A * $$A * $$A * $= ===AAAA1111AAAA ;;;;---- . $. $. $. $= ===AAAA1111AAAA----
-4I%0* M 07 '* '0 * - 0%& N" *0 * '*A ? l PS G$$$$+
####
$$$$= ===AAAA1111AAAA----????==== - ---6666 - ---
'%4"K K K K Llabel :WITH expression SELECT
signal
-
7/31/2019 Stracture vhdl +
13/23
-
7/31/2019 Stracture vhdl +
14/23
-
7/31/2019 Stracture vhdl +
15/23
15
^ ' LSUBTYPE subtype_name IS type_name RANGE low_value TO high_value ;SUBTYPE array_subtype_name IS array_ type_name ( high_index DOWNTO low_index );
") A = H* ) 8 % ` 0= " A " ? 7 " R* j '0 34 7 '*+
N h*L) ))) : ::: >11>11>11>11 ----
#### ) )))* * * * 7777 9 99 9 .... : ::: ;;;;----8 ) -8 ) -8 ) -8 ) -8 # -8 # -8 # -8 # -
7 %7 " OY ! K= 3 &8 "BP8 '0)7 '* ^+
'A @ ^ L COMPONENT component_name
GENERIC( parameter_name : string := default _value ; " " c * e % 'T%& parameter_name : integer := default _value ); A %(
PORT(input_name , input_name : IN STD_LOGIC;bidir_name , bidir_name : INOUT STD_LOGIC;output_name , output_name : OUT STD_LOGIC);
END COMPONENT;
'O ( A" A *'O ( A" A * 1* M 8"7 I " * ]8+]8 ^ - a "! K= 3 &8 "`" T !+
N h*L))))
7 / / 8 ) -7 / / 8 ) -7 / / 8 ) -7 / / 8 ) -/ 8 ) ;-/ 8 ) ;-/ 8 ) ;-/ 8 ) ;-
----
N h*L
O% O% O% O%5 5557777 1111 //// 5555 8888 ) ))) - ---
OOOO 1111 8888 ) ))) ; ;;; ----6 -6 -6 -6 -
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
16/23
16
]8 G ) A ' Linstance_name : component_name
PORT MAP ( component_port => connect _ port ,component_port => connect _ port );
instance_name : component_name PORT MAP ( connect _ port , connect _ port );
]8 G ) 34 )l 8 * '! %* ]8 - 0b_ U " T "%4" 8 * - " gS 0 ?" %4 " (0 ' * " ( ' ` * ! ]8 - % * ( * G%4" G 3 "
0 ?" %4 ! ]8 - )+j$" 0@ ?" %4 ? 7 % ]8 A # '( ) '* G ) 34 A Bj " @ S J,
4 N C W @0 " OS 0T 4- " Y * 34 % 4 ? 7 % ]8 A #?" %4 # ) W" 7" " O ^ F Q RS ) # -%7 H O @*+
a "-"" 7 '* %7+ N h*L
+ ++ +1111 8888 )))) 7 777 " "" "7777::::;=;=;=;=BBBB //// # ## #7777::::;=;=;=;=BBBB ////
=B /=B /=B /=B /+'+'+'+'7 777::::;=;=;=;=BBBB / ///"%%("%%("%%("%%(7777::::;;;;=B ;-=B ;-=B ;-=B ;-
+ ++ +5555 8888 ) ) ) ) 7 777 " "" "77771111;=;=;=;=BBBB //// # ## #77771111;=;=;=;=BBBB ////
"%%("%%("%%("%%(7777::::;;;;=B /=B /=B /=B /+'7+'7+'7+'71111;=B /;=B /;=B /;=B /"%%("%%("%%("%%(77771111;;;;=B ;-=B ;-=B ;-=B ;-
+ ++ +CCCC 8888 ) ) ) ) 7 777 " "" "77775555;=;=;=;=BBBB //// # ## #77775555;=;=;=;=BBBB ////
"%%("%%("%%("%%(77771111;;;;=B=B=B=B ////+'7+'7+'7+'75555;=B /;=B /;=B /;=B /"%%("%%("%%("%%(77775555;;;;=B ;-=B ;-=B ;-=B ;-
+ ++ +3333 8888 ) ) ) ) 7 777 " "" "7777CCCC;=;=;=;=BBBB //// # ## #7777CCCC;=;=;=;=BBBB ////
"%%("%%("%%("%%(77775555;;;;=B /=B /=B /=B /+'7+'7+'7+'7CCCC;=B /;=B /;=B /;=B /"%%("%%("%%("%%(7777CCCC;;;;====B ;-B ;-B ;-B ;-
0N h*) A " A+ ++ +CCCCj ),%4" " B = B@7 - 0 ?" %4L
+ ++ +CCCC 8888 ) ) ) ) 7 777 " "" "77775555;;;; //// # ## #77775555;;;; //// "%%("%%("%%("%%(77771111;;;; //// +'+'+'+'7 7775555;;;; //// "%%("%%("%%("%%(77775555; ;; ;; ;; ;----
j$
j,
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
17/23
17
'A @ ^$ $ $ $ LPACKAGE pack_name IS
.Pack_declarations.
END pack_name ;
------------------------------------------------------PACKAGE BODY pack_name IS.
Pack_declarations.
END PACKAGE BODY pack_name ;
N h*L $ )$ )$ )$ )
) ))) : ::: 1> 1> 1> 1> ----$ -$ -$ -$ -
- ) ( '* N J B( " " $ $ $ $4 A) )))34- $ $ $ $B( " " G * ]% . $. $. $. $%. $. $. $. $7 '* A * '* G * A 8 A V # % G" % 8
4 A T " * ) ))) & '* ]0 c# 0 ?" %4L+ . $+ . $+ . $+ . $0 ) 0 -0 ) 0 -0 ) 0 -0 ) 0 -
)))) 7 / 8 ) - 7 / 8 ) - 7 / 8 ) - 7 / 8 ) -
8888 ) ;-) ;-) ;-) ;-----
N h*L'M]0* " " C8 H0 "NANDXORG B( " " A" "packagelogical_pack" 8L
----++++ 0000 ) ))) ) )))11231123112311230000 ----$ ) $$ ) $$ ) $$ ) $
&"&&"&&"&&"& 5 5557777 1111 //// 5555 8888 ) ))) ----
1111 8888 ) ))) ; ;;;--------
PO% PO% PO% PO%5 5557777 1111 //// 5555 8888 ) ))) - ---
1111 8888 ) ))) ; ;;;--------$ -$ -$ -$ -
----------------------------------------------------------
++++ 0000 ) ))) ) )))11231123112311230000 ----$$$$ ) $ ) $) $) $
6 &"&6 &"&6 &"&6 &"&5 5557777 1111 //// 5555 8888 ) ))) - ---
" $ $ $ $tM %7 "-%7 A) T " $ $ $ $3&+
'*^ B* 7 7 '*
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
18/23
18
1111 8888 ) ))) ; ;;;----&"&&"&&"&&"& 5 555 ----
" " " " 5 555 &"&&"&&"&&"& 5555
1111 ????==== 1111 5 555 ----5 555 - ---
6 PO% 6 PO% 6 PO% 6 PO%55557777 1111 //// 5555 8888 ) ))) - ---1111 8888 ) ))) ; ;;;----
PO% PO% PO% PO%5555----" 4 " 4 " 4 " 4 5 555 PO% PO% PO% PO%5555
1111 ????==== 1111 4 4 4 4 5555 ----4 4 4 4 5 555 - ---
$ -$ -$ -$ -
' ( ^ '! ! ! ! L
FUNCTION func_name ( func_inputs : in inputs_type ) RETURN output_var_type IS VARIABLE var_name : var_type ;...
BEGIN.
.
.Output_var := statement ;RETURN output ;
END func_name ;
N h*L 7 777 * / 4 / 8 ;* / 4 / 8 ;* / 4 / 8 ;* / 4 / 8 ;
* B 4 4 -* B 4 4 -* B 4 4 -* B 4 4 -* ?* ?* ?* ? - ---
* -* -* -* -----
----n C !K O " '* ' (e &%y%*N 0T 40 * " T ! ` .L
1111 8=8=8=8= 7 777 ) ))) J JJJ / /// 1:1:1:1: //// 1::1::1::1:: ;;;; ----?= ?= ?= ?= 7 / / ; -7 / / ; -7 / / ; -7 / / ; -
b? T: @ " ' N 0T 4 'O (0 " ( B( " ? 7 ^ y%* G ) v%J
0 ?" %4 '%1 'O (+
- $ $ $ $?" ^ A?"*" ( I " * % "
vKh* " 34 " '*I III ) )))8) A T " * " 8 *
' ( ! %4" G " #0 ?" %4 )+
0 *L/ I ) -/ I ) -/ I ) -/ I ) -
++++ 0000 ) ))) ) )))11231123112311230000 ----+ I ) 0 ) $0 -+ I ) 0 ) $0 -+ I ) 0 ) $0 -+ I ) 0 ) $0 -
c@= " " 'O ( G tM tM+
" $ $ $ $" 7 '* K=+
www.IranMedar.com Morteza Shabanzade
-
7/31/2019 Stracture vhdl +
19/23
-
7/31/2019 Stracture vhdl +
20/23
20
? 7 G '& ' i H0 " 0 '* IJK*L LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY entity_name IS
PORT(data_input_name : IN INTEGER RANGE 0 TO count_value ;clk_input_name : IN STD_LOGIC;clrn_input_name : IN STD_LOGIC;ena_input_name : IN STD_LOGIC;ld_input_name : IN STD_LOGIC;count_output_name : OUT INTEGER RANGE 0 TO count_value
);
END entity_name ;
ARCHITECTURE arch_name OF entity_name ISSIGNAL count_signal_name : INTEGER RANGE 0 TO count_value ;
BEGINPROCESS ( clk_input_name , clrn_input_name )BEGIN
IF clrn_input_name = '0' THEN
count_signal_name
-
7/31/2019 Stracture vhdl +
21/23
21
G '& ' i H0 "!!!! !!!!0 '* IJK*L
LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY entity_name IS
PORT(
d_input_name : IN STD_LOGIC;clk_input_name : IN STD_LOGIC;clrn_input_name : IN STD_LOGIC;ena_input_name : IN STD_LOGIC;q_output_name : OUT STD_LOGIC
);
END entity_name ;
ARCHITECTURE arch_name OF entity_name IS
SIGNAL q_signal_name : STD_LOGIC;
BEGIN
PROCESS ( clk_input_name , clrn_input_name )BEGIN
IF clrn_input_name = '0' THEN
q_signal_name
-
7/31/2019 Stracture vhdl +
22/23
-
7/31/2019 Stracture vhdl +
23/23
G '& ' i H0 " # # # # 0 '* IJK*L
LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY entity_name IS
PORT(
oe_input_name : IN STD_LOGIC;data_input_name : IN STD_LOGIC;tri_output_name : OUT STD_LOGIC
);
END entity_name ;
ARCHITECTURE arch_name OF entity_name ISBEGIN
PROCESS ( oe_input_name , data_input_name )BEGIN
IF oe_input_name = '0' THEN
tri_output_name