找回密码
 注册
关于网站域名变更的通知
查看: 1233|回复: 1
打印 上一主题 下一主题

六十进制计数器错误

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-10-12 15:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
六十进制计数器
  [- _1 I5 Q" ~library ieee;5 r$ I9 ]# t5 T: E- f0 U* x' v' G
use ieee.std_logic_1164.all;
2 V9 ~. A) Q6 \! k0 l0 z1 z  Duse ieee.std_logic_unsigned.all;, k  {( D* h3 \% D$ a2 O* h

3 z: k5 b  _, \, C" Q) tentity counter_60 is
0 c9 p! P; G& E  t4 m8 @        port(clk,bcd1wr,bcd10wr,cin:in std_logic;* T) A: [; q' n9 l
                 co: out std_logic;5 R9 S6 W" \/ Y/ u  U9 q9 u
                 datain: in std_logic_vector(3 downto 0);; J! `' w" ^2 K$ i8 \8 h. Z
                 bcd1: out std_logic_vector(3 downto 0);3 @: I- a; Q2 \7 s# u) {& d
                 bcd10: out std_logic_vector(2 downto 0));
8 m4 p, ?2 ^; ]! K3 _% e2 f* Xend counter_60;
$ f+ P  ]- A8 K5 |* ?
" P5 U  V+ `. e, p0 S  i7 |architecture rtl of counter_60 is
, G$ a; C, q' z( w4 F4 rsignal bcd1n:std_logic_vector(3 downto 0);
: L" m6 N+ m4 j0 L" x+ lsignal bcd10n:std_logic_vector(2 downto 0);$ ~. X' z, ?& H, Y9 w& e
begin' ?2 Z) N8 o3 W6 l0 `
        bcd1<=bcd1n;
& f8 U& p! B. @        bcd10<=bcd10n;
- Z$ v+ v* g# w1 E  ^+ I$ h        process(clk,bcd1wr,datain) is
" N+ `: J8 m$ y9 d. ]$ Q* U        begin
. s7 o5 r' p; S% r) M                if(bcd1wr='1') then/ A7 _2 r' ^, E! r8 f8 U
                        bcd1n<=datain;$ p! _! `3 L; G; p- v
                elsif(clk'event and clk='1') then4 V0 W, f0 ?+ Q- q  L; J
                        if(cin='1') then
, K! f/ ]* L# k$ N                                if(bcd1n=9) then
3 B0 C6 g. m/ `+ u3 K# ?                                        bcd1n<="0000";
8 ~7 y* N, O* r: r& K. s                                else# E( T( x/ t% n; @7 P: K. `) a
                                        bcd1n<=bcd1n+'1';- c6 e) v* |* Q. _4 u. C' O4 N- w
                                end if;
9 e* o8 Y' ~6 ]* _" F7 F2 S                        end if;
/ f( b; F7 K, _0 y( e! d4 }                end if;* h9 D2 a, Y: U! e- Y9 o5 [8 O
        end process;$ `1 C* D! U) C0 n3 J, I$ N
       ; Q  H  ]' e- m: g8 x5 ]
        process(clk,bcd10wr,datain) is* @1 `( e& n; ]( n  e- L
        begin# ~& t' j% e, J( v% c) p
                if(bcd10wr='1') then
  l& U$ ~" X) ~5 _1 @9 y6 F                        bcd10n<=datain(2 downto 0);
6 k$ T6 k1 `9 ^- A2 N3 c                elsif(clk'event and clk='1') then$ A" k- g) Y7 P3 |
                        if(cin='1' and bcd1n=9) then
. K- r" H5 ?% r  s                                if(bcd10n=5) then
! D/ c/ G7 M5 K- ?( R9 w' V                                        bcd10n<="000";
6 x/ N) l% ?  }3 e  y                                else( |: T+ {* f/ m' I
                                        bcd10n<=bcd10n+'1';
/ D2 D" \) }6 M* b6 h! f7 \6 Q/ b- s                                end if;
9 [* Y7 u5 a3 ~                        end if;' j8 g$ r1 [  q/ t. p
                end if;
& z+ b+ P6 N. v2 \        end process;9 ~+ G- r! ]9 F5 b8 x0 b9 e# Q
       # q% Q/ S3 Z) J4 L. _) G$ X
        process(bcd10n,bcd1n,cin) is9 B2 g8 d0 _, |7 R  d; S, {# C
        begin
5 w6 y, n. f- A( w, A4 M                if((cin='1') and (bcd1n=9) and (bcd10n=5)) then
: B: F& v+ G8 W' N" x                        co<='1';
% z: l5 |* F* ]8 W+ V% d1 B                else; Q! G: Z1 Q& [$ G* T1 j
                        co<='0';& I# l& e/ _9 U. t; F+ [
                end if;9 ?6 j" b5 Y0 y5 b2 U
        end process;" M- P3 s: M$ N
end rtl;
) i' t8 m+ s4 s; G) P' E2 D' B7 w  L% {可以编译,但是仿真不合适,仿真不计数,请各位老师同仁指正,万分感谢

该用户从未签到

2#
发表于 2012-2-24 17:12 | 只看该作者
     把赋值放到前面去,怎么会变, bcd1<=bcd1n;' \& R3 N! `7 u1 G7 T" j
        bcd10<=bcd10n;放在最后
* Z1 a2 K+ L' X  q0 p5 @: }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-21 04:01 , Processed in 0.125000 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表