|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
VHDL程序包问题 $ n( s3 Z M0 I
VHDL程序包里的过程和函数有声明有实现, 其他地方可以直接调用, 但是关于component为什么只能有元件声明, 而没有元件实现呢?
6 i# b7 l- |% z% |5 N这样别的程序包含这个程序包也不能使用这个元件了吧? 元件实现要在哪里写呢? 能举个例子
! j6 d! _; y+ ]7 j! K5 ?不知道这么写合不合规矩, 只是这样可以使用
& `7 C6 [% r( b+ j6 s& V* U--Filename : ll_pkt.vhd
% v F) W1 ^/ T; K A" b--Author : kalo
8 @" [$ J- y, i7 e--Description : something for my own use) @5 _$ i) j2 m$ n( U
$ r& j" @8 A4 Z& i! ^1 r( |6 c/ V5 e
library IEEE;6 ^' g; A; J8 c9 {/ ~
use IEEE.std_logic_1164.all;. V' @% n- Y6 ^
6 ] ^/ R" \4 T- R
package ll_pkt is4 R4 E% C% g" g* x) T( Q i
) S# U0 i6 Z, } -- A component for reset signal sync output% ]- e+ H# u4 P3 w) h
component RST_SYNC # K6 g" s4 ^. s% n& c
port (
+ }$ N) V+ m9 \8 O Clk : in std_logic;
! c( d" R% }3 }- o R_async : in std_logic;
) o& n( D( `3 X" x8 D) {4 O8 }, b R_sync : out std_logic
2 I8 a, @$ T9 B! e& z/ s. z+ t );% U9 o0 A/ O3 |* R- r6 e
end component;
, G' k/ Y6 q0 {$ _% [end ll_pkt;; u, j0 X+ M4 \, |2 o. `
7 _! [ u) G/ z+ y! ~$ I( D. m! k% E. `
, L2 _& Q( D8 E* k9 K1 p. Y& N9 v
--------------------RST_SYNC----------------------------------
' p/ B# N0 l/ C5 d! D zlibrary IEEE;
1 \6 [. K( r" D. o6 ^( \) N; Kuse IEEE.std_logic_1164.all;' H4 {/ e# _7 M4 ~$ K4 g- t6 p( z
7 Q9 g" M' @& `
entity RST_SYNC is ( w0 M- j) a3 h3 c
port(1 \0 y( [1 b# M& o- S
Clk : in std_logic;
1 }( C! p( M3 \4 W+ n0 B R_async : in std_logic;
8 s4 _, ^1 y1 o; O/ j0 z) \ R_sync : out std_logic" A4 t g1 H$ x5 F/ l
);
, R+ l- ~# ]/ s, ]! X6 Iend RST_SYNC;, B, h; K, L5 w O, O# _
3 Z4 d, r& ~1 Zarchitecture BEHAVIOR of RST_SYNC is
% a7 V( T3 _8 i; I: e signal reg_L1 : std_logic; --latch async reset signal level 1
$ ^' |- l. A6 ^$ ~) Z+ `, ^3 i signal reg_L2 : std_logic; --latch async reset signal level 2& }* |& h. J2 w& W
begin
H! A2 j* p+ x1 _, x+ s R_sync <= reg_L2; --reset signal out8 y3 o {# z! ` I/ E9 m9 k1 w6 E
0 V' n* Y9 `( e3 E: v3 w Main : process(Clk, R_async). U2 r2 @7 ^& u/ }, K8 D) V& @2 i
begin3 U7 e% M' D# X6 A
if (R_async = '0') then" o; ^& ^* Z; k1 x
reg_L1 <= '0';
0 a+ t6 U9 u5 y reg_L2 <= '0';
, K5 m) B- R: w7 p+ ? elsif (Clk'event and Clk = '1') then; U3 k! |1 Y: ^2 O2 C
reg_L1 <= '1';; t1 I1 D. ^. \# J, ?; S. W$ Z9 `
reg_L2 <= reg_L1;
% ^/ ~5 x7 I1 r end if;/ N2 ]0 j M3 E4 [' J& G
end process;( R. C1 I% h0 G" Q3 j- o3 i; a- |' r
end BEHAVIOR;
3 ]- S8 Y u! G2 }---------------------------------------------------------------* B2 x+ L Y" w" O9 Y
& _5 ^6 I! c3 O, K) L& [
% z: D/ U, T- F5 P+ l+ {9 t+ _----------------------package body for other types--------------. s) w- f5 y) g
package body ll_pkt is ( `' U. a3 y6 Q, M1 J- U6 d2 V
----
5 f8 z2 ^& \3 [5 oend ll_pkt;
( g$ }2 W# ^- A% f |
|