找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 872|回复: 1
打印 上一主题 下一主题

六十进制计数器错误

[复制链接]

2

主题

18

帖子

-8983

积分

未知游客(0)

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

EDA365欢迎您!

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

x
六十进制计数器1 C! f% e$ H) c, T5 z) F
library ieee;
5 f6 g7 H$ ^* h9 b! u$ xuse ieee.std_logic_1164.all;
. N% ]. J+ y4 L  u7 Wuse ieee.std_logic_unsigned.all;
  \/ J" j; @' K# R- m- ?" h1 F; s+ y" f
entity counter_60 is
2 p: Z. l3 R% c        port(clk,bcd1wr,bcd10wr,cin:in std_logic;
% B& C: A6 H" b( i3 C                 co: out std_logic;
2 p2 o" Y2 \" S1 t7 _+ u* z' ?                 datain: in std_logic_vector(3 downto 0);. C7 \" Q: e* s8 _2 k
                 bcd1: out std_logic_vector(3 downto 0);0 p/ Z1 V/ X- h8 N3 [5 j  o3 q
                 bcd10: out std_logic_vector(2 downto 0));6 ~( G5 M& }$ p% Z+ Z
end counter_60;
8 X8 m" O. h) _& a2 e" X8 k2 O9 k, l$ Z: b9 t- V
architecture rtl of counter_60 is
: e/ D6 V% Y5 I$ Asignal bcd1n:std_logic_vector(3 downto 0);
6 m/ r+ Q2 V' k7 q! ?" ^signal bcd10n:std_logic_vector(2 downto 0);7 r9 J6 F0 A1 b- B0 ?: s
begin0 J' y/ G; P* ?" R$ s" F
        bcd1<=bcd1n;! C4 N# n# J! E! D5 M  a1 N
        bcd10<=bcd10n;
" E& H: p& q2 W" m$ s' a        process(clk,bcd1wr,datain) is
  U0 Q7 Y) p! ]7 e& B        begin' Y: e- ]8 X- Z7 |
                if(bcd1wr='1') then
# V1 }2 T; v0 G4 z9 }                        bcd1n<=datain;8 X7 Q$ Q0 ^0 I
                elsif(clk'event and clk='1') then
* H, W$ s, X& S# @                        if(cin='1') then
- R  g+ t" d; M, _7 ^5 u                                if(bcd1n=9) then
9 x7 o1 Z& c. D& q; e                                        bcd1n<="0000";
+ @) |! K! o: K# v6 @. o$ N9 c                                else
+ M) u, M# R* o- @! L                                        bcd1n<=bcd1n+'1';
( F. P; T+ {5 j& |                                end if;. k3 F1 o8 B& l4 ^% n
                        end if;0 F2 P7 ?/ f1 ~
                end if;$ i# P  L; o7 v* g6 O! d* m- @
        end process;1 ^% k+ q. v" g& E
      
" t* i6 Y% y$ f6 k2 m* t8 V' r        process(clk,bcd10wr,datain) is2 V& `. P0 s# [
        begin
* `" O+ N1 k, ~5 q6 T" {$ s3 W                if(bcd10wr='1') then7 p0 x- I7 x  a; x
                        bcd10n<=datain(2 downto 0);5 Q! l2 l/ S8 ]; }2 }
                elsif(clk'event and clk='1') then
! J, u! _5 w% U* T3 p: h3 W                        if(cin='1' and bcd1n=9) then
! H+ M% R! V; _9 H0 V+ g" w                                if(bcd10n=5) then, Q) `6 m( y1 L8 F1 F+ @
                                        bcd10n<="000";
- l) `- R: p) |, @! [) T0 H9 c                                else
8 s" ^# U* Q0 ]                                        bcd10n<=bcd10n+'1';6 ~, Q, ^& A2 z* t' N9 ?2 H' _
                                end if;
# A5 H2 U. v2 u: f3 m2 y                        end if;, z+ M+ h* T- v
                end if;2 L- q/ W, t1 d, X0 x* G' a, V& H
        end process;* F9 U, z8 ?6 s; t4 ^
      
: q% e! g+ c  n, W        process(bcd10n,bcd1n,cin) is+ `3 h; Q. \! l( u7 L
        begin2 {3 j) [6 n  e1 B
                if((cin='1') and (bcd1n=9) and (bcd10n=5)) then
- a8 H$ L$ V$ r$ n$ F# \                        co<='1';. [+ e! m: D- \1 y1 {5 u7 N
                else
( P% [. I3 x; N6 U$ F0 ~- f                        co<='0';5 n$ Y+ p7 X' `4 [) l9 a
                end if;  {; O7 C2 N; o; d8 U$ E* E8 }/ K( r
        end process;
$ [# C' p% {) Z8 Aend rtl;
" C- d7 Z3 ]& N: f( N可以编译,但是仿真不合适,仿真不计数,请各位老师同仁指正,万分感谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

6

主题

30

帖子

144

积分

二级会员(20)

Rank: 2Rank: 2

积分
144
2#
发表于 2012-2-24 17:12 | 只看该作者
     把赋值放到前面去,怎么会变, bcd1<=bcd1n;* ~* H7 I4 ?- @- E, J
        bcd10<=bcd10n;放在最后2 p; d" u2 b- h
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-19 07:06 , Processed in 0.060639 second(s), 32 queries , Gzip On.

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

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

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