|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
VHDL程序包问题 % Z) d" J) Z- ]8 r/ B3 f
VHDL程序包里的过程和函数有声明有实现, 其他地方可以直接调用, 但是关于component为什么只能有元件声明, 而没有元件实现呢?
0 F* L9 @- ~: ^# h g1 a这样别的程序包含这个程序包也不能使用这个元件了吧? 元件实现要在哪里写呢? 能举个例子
- T$ X, f3 O7 S5 i! J1 t不知道这么写合不合规矩, 只是这样可以使用) F) B1 F( ?, p6 B8 N& L" b
--Filename : ll_pkt.vhd9 v) x. @0 ?2 K
--Author : kalo( z0 U2 v0 f8 v/ i* D; p# B) V0 {
--Description : something for my own use
) ~# B8 u( o/ a% k- N2 D% N
; `' {8 X- ~! H1 i' b8 o& W. }/ F8 p
library IEEE;7 r, P7 X, o7 {! _9 G' _, G, L
use IEEE.std_logic_1164.all;% A t, H, a; W5 b g
# D5 r! _% V q
package ll_pkt is2 E6 t% ~& ~5 u3 W, _! P! } @
' b. {. ^0 ~4 d2 n9 _
-- A component for reset signal sync output
0 h8 D. B% e' |1 ? p component RST_SYNC
7 F2 O a \" C1 B- w/ s+ z port (4 V# r/ s! h/ u( R3 b
Clk : in std_logic;
% ]* ^* t9 e" N' T! q! M- |& x. [" g6 A R_async : in std_logic;8 N; ]7 s5 D+ p0 K
R_sync : out std_logic
6 ~, c& H/ N; D% e0 W );% U0 y2 ?) n4 O
end component;, c2 L g$ F( M! b& ^: l
end ll_pkt;
& d/ [$ _* e# A% o : b3 l/ B# R* ^6 Q
4 J1 T( A4 J2 E1 ~--------------------RST_SYNC----------------------------------6 ^+ l, n; }% @" A0 b2 S
library IEEE;
. K! a% b1 R4 c( Fuse IEEE.std_logic_1164.all;- x. S6 W/ [: [
* x- s. a4 E2 B8 M7 f/ Ventity RST_SYNC is 1 V& w6 w( q7 x* ]
port(7 y5 ~- `0 a8 c3 D) T
Clk : in std_logic;
7 x0 t( f7 b6 ^( @2 q1 _ R_async : in std_logic;
% C- P5 r; H7 H+ g R_sync : out std_logic( A E5 O0 h: R4 ]+ ]4 Q# f
);# B: s1 q8 I; W1 N9 P
end RST_SYNC;
* j0 s+ z6 t- x- g' Q3 M* |& [5 G5 W% B% `( m8 [ g6 [. M8 f" O
architecture BEHAVIOR of RST_SYNC is ! P( U" O4 |7 B: f5 h, O& N
signal reg_L1 : std_logic; --latch async reset signal level 1
2 b2 |& g7 z3 y' a2 O signal reg_L2 : std_logic; --latch async reset signal level 2
. J# D# G" I1 K* p6 D" H+ O: c! ybegin% T0 V4 y0 ?, U9 [
R_sync <= reg_L2; --reset signal out7 j, P% {! i/ G" a/ |2 A
; }# K- `9 r) ^# } Main : process(Clk, R_async)$ s3 z4 A8 Z- o3 P5 m( Q
begin
1 k, G1 A, d' @ if (R_async = '0') then
& I+ `9 o4 ~0 M reg_L1 <= '0';
* f5 G( M) _( V" F reg_L2 <= '0';
- @3 |0 e+ c7 p elsif (Clk'event and Clk = '1') then1 w2 L$ O2 y, F4 j7 }7 b5 E
reg_L1 <= '1';
4 w6 v+ _: S; z$ O9 u8 b reg_L2 <= reg_L1;
- H- J7 u+ U) {" `) S- E end if;
" Y+ Q% A0 z/ |1 {( a: G) p0 I end process;
% M* b( h( |7 o4 z" R8 tend BEHAVIOR;
, n1 T { J, ?---------------------------------------------------------------
, D4 Z& I& J1 ~+ R
* A- I1 i% ^5 b; u4 i \" ^! D9 U1 K7 i% ]) z, f ]: j
----------------------package body for other types--------------9 L7 d$ V) o. l3 {6 P
package body ll_pkt is " ]. J* C, f$ T# P
----# S% ^' G1 w8 ^
end ll_pkt;
" d! O `/ P5 i+ R/ K |
|