|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请各位高手看看本人的程序,编译通过了,仿真却没有结果。我想实现的功能是单稳态脉冲展宽(通过外端口控制展宽宽度)。程序如下:, A S; A5 z5 q" \. M
计数器(控制展宽电路的宽度)部分:
0 h/ x7 } u( `9 ~$ Flibrary IEEE;5 W- ~7 _* P2 f/ f# `
use IEEE.STD_LOGIC_1164.ALL;2 P' q" e) U W- Y; L
use IEEE.STD_LOGIC_ARITH.ALL;
. e0 f, q0 P( Juse IEEE.STD_LOGIC_UNSIGNED.ALL;
; a: u* f4 J3 }8 B7 k) R. bentity counter is
0 m2 c$ ^4 Y4 E8 Q7 ]( b& g2 u* h port(reset,en,clk: in std_logic;
+ z3 d; p8 T6 G& j N1,N2,N3,N4: in std_logic;
+ p3 _/ x z; t& f$ E8 k feed_out: out std_logic);6 s" W1 K% Z9 [9 V+ v- o6 s% c: ^
end counter;
2 G( M) h( x7 T4 t harchitecture Behavioral of counter is
' r( A3 _$ L4 m; X( V* y$ Esignal temp: integer range 0 to 15:=0;; }4 l6 T; Y9 |
signal k:integer:=0;# a d& z* Z7 y/ h
begin$ X/ ^* A1 M& C$ j4 x* ]7 U9 E8 P% }
process(N1,N2,N3,N4,k,clk) is
- \+ q% ^) ~( t# e' D: kbegin
1 U& q( ?. ]$ {/ y+ ? if(N1='1') then temp<=temp+1;" L3 C% k+ Z* f$ b3 I- S7 \3 N
elsif(N2='1') then temp<=temp+2;% \* g/ h% ? E% C7 x' z
elsif(N3='1') then temp<=temp+4;
0 B# b' R, ?. I) O elsif(N4='1') then temp<=temp+8;
4 f4 L3 r* v s5 B, t) P0 x else null;
: s0 b+ u' w2 U; y end if;
: y( H) E' p8 E& ?% L: L' u if (clk'event and clk='1') then
% B0 e% C! M7 \. E/ ?) f/ A( R0 ? if (reset='1') then9 v% H! _9 t9 Z( n! m) \
k<=0;" j. Y' \, H T) u8 k6 F g" w& p
feed_out<='0';
1 t) v% e. e* i! D elsif (en='1') then
1 j$ U, ?5 [# R, p ?( ?4 |, ` if (k=temp-1) then# {2 e0 l2 A) O( M* D0 Q" L/ S8 i
feed_out<='1';/ i! j, X, ~: q5 w) c m
k<=temp-1;
: B% f# K( q# t# W/ ]2 X else k<=k+1;
3 d: X: k' F% P/ L( Y3 ] end if;2 k! w' Z. M3 b6 {$ e9 _! x9 `
end if;
# b8 e- q+ N* l7 o2 q5 Wend if;
# ?- S- T- k* p( ?- L" Kend process;$ W, a5 P' c' Q7 e" P6 K
end Behavioral;
" W; }8 z3 I, R! zD触发器(脉冲前沿产生电路,又是展宽脉冲宽度形成电路):- M& ~9 Z2 D. R6 |2 U) t1 E
library IEEE;8 T9 u* s3 B2 K4 v
use IEEE.STD_LOGIC_1164.ALL;
+ l2 a* B9 s* n1 D0 M6 L1 [use IEEE.STD_LOGIC_ARITH.ALL;
& N7 X* Z7 T* L" N; G. y! F' Tuse IEEE.STD_LOGIC_UNSIGNED.ALL;4 @6 ~& ]0 Y, u
entity D_trigger is
M* T3 g' P' q port(D,clear: in std_logic; w% Y) U5 Y4 _+ b4 J0 ~/ `8 `
clk: in std_logic;
' A$ ]( V: A* v% o$ r& } Q: out std_logic);
z, R$ e! ]) M, C! ~end D_trigger;- l7 I' a9 ]0 H, F; h! f' i
architecture Behavioral of D_trigger is
8 D$ h" m, p. Q* m7 h% ^begin1 @9 x& J# `3 V& p8 K' [! w4 Z
process(D,clear,clk) is$ k% f7 z+ J& [" D
begin: J' @- |/ c! Z7 d
if (clear='1') then) o2 q# n3 g/ k5 G9 H/ l6 B
Q<='0'; 7 m1 C9 x9 f3 h: H0 l! E
elsif (clk'event and clk='1') then* c! l/ P$ c2 s9 f0 e( F6 g
Q<=D;
}9 R. e" L' k8 p4 @9 k end if;' {) M0 @2 Y! `2 G3 b4 C# B
end process;
9 [2 T. @" X$ p6 b, M( c( C* {5 Aend Behavioral;
; S9 w6 ~" ^5 Z" f: o. @! F& F外部综合部分:8 {; ^- ?: U! d: P9 A7 c5 I
library IEEE;
* W% }/ o. i% Huse IEEE.STD_LOGIC_1164.ALL;
' Z6 F5 k6 Z2 h- vuse IEEE.STD_LOGIC_ARITH.ALL;
1 ?4 V: u) B2 y& W8 Uuse IEEE.STD_LOGIC_UNSIGNED.ALL;; o) d! F* g3 `% i; x# k
entity pulse_expand is; A; C5 l2 ]) \1 S0 g. i
port(pulse_in,D_in: in std_logic;
" J4 l; K& Z5 `" b clk_in: in std_logic;
& M" p- c( w0 E+ y n1,n2,n3,n4: in std_logic;1 X+ L, t g r- C4 A1 l
pulsewidth_out: out std_logic);! w" |5 A+ K! K' U& d
end pulse_expand;* `8 _- U# B" M3 A! X& ` y6 a
architecture Behavioral of pulse_expand is" |5 B+ {9 E; N) s
signal a1,a2,a3: std_logic;! U& B9 |' {4 o7 Q+ \" t& ^
component counter is
5 j4 p$ t4 e+ W3 u. q+ j port(reset,en,clk: in std_logic;* g3 `, w1 H1 q- P9 o- q) _. a, u
N1,N2,N3,N4: in std_logic;
8 d4 I: k6 p2 [4 W7 s7 d feed_out: out std_logic);$ l( H) j( i: v/ u
end component counter;! a8 _/ s" T+ \) I3 _/ `2 ^( s
component D_trigger is: [- O" f! Q2 m- |5 d
port(D,clear: in std_logic;4 \* z+ v5 O1 t2 v; b
clk: in std_logic;3 n, d( o$ T5 ]" W/ y3 o3 P F9 Y6 ~
Q: out std_logic);
' [- n# m ~! L4 j0 k/ D end component D_trigger;1 k5 z" |. ?% j) t" \/ D- X
begin
( L5 v4 o% B# Y1 i+ tP1: D_trigger port map (D=>D_in,clear=>a1,clk=>pulse_in,Q=>a2); p1 v, `% }* ]' G
a3<= not a2;
/ m) C2 _ ~7 {( n4 R4 XP2: counter port map ( reset=>a3,en=>a2,clk=>clk_in,feed_out=>a1,
0 K% B, Q7 W% w. k* o N1=>n1,N2=>n2,N3=>n3,N4=>n4);
S: Q) R- N1 K+ S& G' Y; X" Cpulsewidth_out<=a2;1 V6 D1 ^" v) x$ u
end Behavioral;/ S K" D( l! e* v' D
6 _/ R' ] W) U! @8 X! d2 f[ 本帖最后由 marshal403006 于 2008-6-2 09:38 编辑 ] |
|