找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

VHDL编译错误,请大家指教

[复制链接]

1

主题

5

帖子

-8984

积分

未知游客(0)

积分
-8984
跳转到指定楼层
1#
发表于 2009-10-26 16:07 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您!

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

x
本帖最后由 Annhu 于 2009-10-26 16:08 编辑
6 n3 k) T9 I8 C+ l+ i. p' C8 Q: J
:) 下面的程序是一款CCD的驱动程序,clk1=2MHZ,enable主要是控制sh的周期是10us还是10ms icg的周期不变始终为10ms,delay用于控制sh、icg的延时0.5us。编译错误见最下方,小弟把clk和enable的位置换了一下即先判断clk1上升沿然后在判断enable问题就解决了,麻烦高手帮忙看一下这到底是什么原因呢?还有j就是程序的代码有没有可以优化的地方呢,谢谢大家!, k1 f2 [% B" h5 e2 ~
--CCDshixu
: v4 P0 g+ o+ T* vLIBRARY IEEE;
1 Z: H' o$ z" sUSE IEEE.STD_LOGIC_1164.ALL;/ o. t0 ^/ a* j
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
. P$ @8 V* T' O& h) `* R+ B" r) j# jentity divclk is
% u( o; K. }# |2 S8 b3 M   port(clk: in std_logic;
/ ]5 g1 i$ w$ M4 X% a; J        start:in std_logic;
5 O2 H  [$ m7 M9 }$ _: T1 r' x1 U# I        enable:in std_logic_vector(1 downto 0);
. x% D- b1 s* ?4 n$ f$ ^+ X. ?        o_m_clk  out std_logic;
8 A" o9 u8 u5 K9 e6 `$ s% m. N        o_sh,o_icg  out std_logic;        
# z3 C/ r, u% d        stop out std_logic);8 o2 @/ s$ s' R0 f* H
end divclk;5 x( o( K3 T& }8 W4 r4 G0 z+ F
architecture behave1 of divclk is
' Y! j3 ~3 N( m: Vconstant halftime :std_logic_vector(3 downto 0):="0101";$ E, G& U) X, x
signal divcounter: std_logic_vector(3 downto 0);--shizhong fenpinjishu2 [! l: w1 ?: s
signal shcounter : std_logic_vector(13 downto 0);--tiaozheng sh zhouqi he zhan kong bi- e3 F3 E  v  ]! M5 k7 l  w
signal icgcounter :std_logic_vector (14 downto 0);--tiao zheng icg zhouqi he zhan kong bi
! x- \( M7 j! Q0 Lsignal delay :std_logic_vector(1 downto 0);--shixian ICG/SH de mai chong jian ge
% r, p' \/ a9 Ksignal clk1: std_logic;
7 \  h5 E' V8 d/ Tbegin
% \: D3 p& W0 PP1:process(clk,start)--24MHZ,12fenpin; e/ F/ L% g1 X+ v
   begin
4 B) J' D  q6 [- K, E+ x     if start='1' then
. ^2 K+ N/ T$ Y% C       clk1<='0';5 }$ u" N  P; h( Y7 W
       divcounter<="0000";                                                                                                                                                          3 B( r- F8 |5 }; |5 d
     elsif clk'event and clk='1' then
% j+ _, R8 }$ s1 S$ G2 s; Y            if divcounter = halftime then6 w( b; f# u6 K
               clk1 <= not clk1;9 p; @, [5 M7 `/ j1 A# \
               divcounter <= "0000";* v& `0 y% j, y5 E
            else
* g$ F0 r8 S; Q, c) [               divcounter <= divcounter + 1;
; E. D9 X2 }$ @1 _- K6 P8 S4 |            end if;
% q2 v0 n% u( c3 t        end if;4 Y2 \' m$ C3 ~$ B
     o_m_clk <= clk1;- a  ^, Z. A7 z2 o1 x
   end process P1;
8 H2 f: {* [5 L1 VP2:process(clk1,start,enable)
1 a; F1 P4 q4 Wbegin( B' A- P2 Y1 T% w5 [" B! F6 y
     if start = '1' then" D" `+ y5 ^2 X1 _
        delay <="00";9 V- |) d& q; L4 P3 n2 o. A( g& A
        shcounter <= "00000000000000";7 ]4 P, w' E! n/ w+ P. v! D6 t, D
        icgcounter <= "000000000000000"; * A, S2 `9 {: n0 \9 x% D
        o_sh <= '0';) b6 P( ~0 r! d6 g; F$ |
        o_icg <='1';  c4 `  z* O% Y! i( Q9 k2 |+ G! Y" @& k
        stop <= '0';
5 ~% I0 ?: Q( H+ c- [3 F0 b     elsif enable = "01" then7 K2 L3 U4 n& \) Y2 M. W; F
        if clk1'event and clk1='1' then4 S4 x; A/ ]# e: }1 x8 c
           if icgcounter <"100111000100000" then  -- 20000分频产生10ms的周期; g8 S- P% k/ H" O/ _9 S6 b
              icgcounter <= icgcounter +1;
4 s; \% F. ~: Z, i5 F# e1 d$ a- [              if icgcounter <"000000000010100" then
. r5 ^* y" D, d. Z/ O                 o_icg <= '0';                # z; ]+ x  F7 T  ?
              else ' w, Q" Q5 B# K% D
                 o_icg <= '1';               
* L6 O+ o+ M& W/ \5 o. f              end if;1 E. g8 S/ J" A1 V
           else ; B8 I7 q1 j+ K& Y
               icgcounter <= "000000000000000"; 7 v( S/ y' o5 E1 Z
               stop<='1';
4 f2 E. [  D9 |/ i+ A4 F& S           end if;, h! g+ k1 D7 ?  P  }8 ?( j
           if delay = "01"  then
+ y; ~2 X  {! f* {! p- }) x: c              delay <= "00";6 _, |- [( ~" L3 J1 c. W
              if shcounter < "00000000001001" then  -- delay用于产生ICG、SH的脉冲间隔0.5us,10us SH
' C- w, g* b! I' S3 Q                 shcounter <= shcounter +1;
  D' |3 ~5 h$ t5 E  e                  if shcounter <"00000000000101" then  o_sh <= '1';4 ^* a4 k7 a6 k. m1 ^% x
                    else   o_sh <= '0';                     
# i2 d1 w. @; t9 q                  end if;              ( V/ q( ]4 A' d: n2 W1 P, G: {
              else$ C+ ^, I$ R5 M" U
              shcounter<= "00000000000000";
2 \* C' x9 I' L4 n7 N               end if;9 l4 a( H" `* f
           else
6 E9 v; c1 F7 N) \8 q* _) h               delay <= delay +1;
6 C- b0 W' X; B9 b' w$ w7 x6 M           end if;
  `$ Y6 r5 c* R- K+ H5 D         end if;
, n& }5 X' O. M! z2 A& F       6 t: W0 a& [& C
     elsif enable = "10" then
# j) p( y8 J3 a: A        if clk1'event and clk1='1' then1 V  ~  z0 J" w, J5 h
           if icgcounter <"100111000100000" then  -- 10ms ICG
# o7 N" l& F# {" l0 P9 p              icgcounter <= icgcounter +1;+ S; Z3 E1 y! d: `" S, t
              if icgcounter <"000000000010100" then ; D9 i4 u9 o8 ?, b" p& k9 D' H$ Q- n' \
                 o_icg <= '0';               
8 I& h9 i( ^3 _* g: ?& ]              else# I$ W: E0 L, p
                 o_icg <= '1';               
; s0 G# Q3 M; M3 |3 i" g              end if;! s3 V1 v8 x# @
           else
& C% {4 \! ^* X) B               icgcounter <= "000000000000000";
+ \) M6 A7 F  B3 J2 V               stop<='1';
" d* |9 |0 M! d' @           end if;
. T- j) B5 l/ b1 X7 a# E( ~0 y           if delay = "01"  then
' T0 @: F% Z$ z9 X/ X' A              delay <= "00";+ i0 _, ~3 B. _% \7 a! `5 D) y
              if shcounter < "10011100010000" then  -- 2次10000分频delay用于产生ICG、SH的脉冲间隔0.5us,10ms SH1 w( m) U+ h$ \
                 shcounter <= shcounter +1;, B0 |9 B2 ~( Z2 Q" T' [; C4 s
                  if shcounter <"00000000000101" then
# |. n( c6 l) i7 x/ t8 D( d& o; z                     o_sh <= '1';
& M* z+ S& [+ r" Y1 ^% A                  else& L$ |: w( E- N$ ?# s1 A$ O
                     o_sh <= '0'; ' }8 F2 ~5 a" n& v' C) h( f" V
                  end if;              
- ?: \4 A: D, z3 ]9 ?              else- j! X! f/ i4 p; x5 o
                  shcounter<= "00000000000000";
+ N; X' V0 W3 E              end if;
4 z, T; z& o- @' C           else
+ b. k8 V  p; b5 Y9 n4 z               delay <= delay +1;6 X- r2 Q! s8 o+ ]: B" M- N4 E
           end if;      
4 l: q5 c; `5 j; s: b( a        end if;+ a# [% M9 F1 Z! A( M# Z
   end if;  
% C3 f  |/ h7 N  end process P2;0 {/ V' t6 @3 F9 o3 {& m9 L9 i
end behave1;
6 D9 e+ O5 J& A2 k& rError (10821): HDL error at divclk.vhd(42): can't infer register for "stop" because its behavior does not match any supported register model. @/ }7 {+ c1 l
Error (10821): HDL error at divclk.vhd(42): can't infer register for "o_icg" because its behavior does not match any supported register model% w, I6 `* C8 \
Error (10821): HDL error at divclk.vhd(42): can't infer register for "o_sh" because its behavior does not match any supported register model2 T* c3 L+ r# D5 D$ j& ~8 V9 H
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[0]" because its behavior does not match any supported register
" E0 E% ^: w# d+ a2 `+ dmodel( Q, y2 y) [1 T9 [# a
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[1]" because its behavior does not match any supported register
( U6 y" x, v9 g1 cmodel2 F3 }7 X- w3 f
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[2]" because its behavior does not match any supported register ! i+ R3 g5 q" N* {! e7 j0 k
model, X) a! G# |5 N5 Q9 }
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[3]" because its behavior does not match any supported register 5 S7 m8 n& m& C
model4 G$ C. t+ a! G! N
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[4]" because its behavior does not match any supported register 9 u2 ^* ~4 v: I. ^2 F) S3 c5 f
model
5 ~+ w% z) Z" m" R: W2 _$ hError (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[5]" because its behavior does not match any supported register / a/ ]' i% U+ e
model
9 c& l) @9 u9 h0 p6 ^Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[6]" because its behavior does not match any supported register : E3 ~( Q# m; ]* l2 G
model3 X% O) [7 o9 h
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[7]" because its behavior does not match any supported register , y9 R9 C  T7 p. a# i1 j
model/ }7 h0 h% U8 }. @; @
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[8]" because its behavior does not match any supported register   A# c) D; X) h/ c
model/ a( a- ^, h' R) y4 T  u
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[9]" because its behavior does not match any supported register
( e. H! |& Z- H; x0 m1 ?/ @model
' @) n6 u' a: r$ o: VError (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[10]" because its behavior does not match any supported register 1 T' P; _1 i6 b& l" o
model' {2 x9 i& ~  ]' E# w! D) \
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[11]" because its behavior does not match any supported register ; u* k% z; Q; K* W5 s
model! T% H* s" k8 X3 f+ {% F2 ~
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[12]" because its behavior does not match any supported register
! o3 I, j% i( `, zmodel
! B) U1 N' g9 Q& i" wError (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[13]" because its behavior does not match any supported register 7 v5 T% J7 p. S" L
model( p% A* r) P0 S5 i! a
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[14]" because its behavior does not match any supported register & O( I' ^- q8 Z! R
model, _# M0 q$ ]( a# L$ m
Error (10821): HDL error at divclk.vhd(42): can't infer register for "shcounter[0]" because its behavior does not match any supported register 2 a: e+ S- Q! D2 V: s0 t& {! |% p6 b
model
5 e( h0 H  v, V( N& ?& _Error: Can't elaborate top-level user hierarchy
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
天分-速度,勤奋-高度

6

主题

30

帖子

144

积分

二级会员(20)

Rank: 2Rank: 2

积分
144
6#
发表于 2012-2-26 13:58 | 只看该作者
LIBRARY IEEE;
3 l) @5 M5 i# j/ d+ g+ V USE IEEE.STD_LOGIC_1164.ALL;9 C/ x% O3 u% i! n. C! |5 T% i
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
! f2 h. m4 i# q4 _$ k# r entity divclk is
" v, x/ Q4 L# f, E   port(clk: in std_logic;
; E! l+ C$ j5 ^0 q" i2 H$ t         start:in std_logic;9 ^( U$ S$ N& a
         enable:in std_logic_vector(1 downto 0);8 C) y9 q: K% ?4 L+ L( @
         o_m_clk : out std_logic;5 }4 u2 f' ^9 i. r; j! L
         o_sh,o_icg:  out std_logic;
. [, Q* G! C& W         stop: out std_logic);: ^$ \2 }8 h6 f* ^
end divclk;+ O. W5 j2 ]# [- p5 k  s+ O
architecture behave1 of divclk is% q) g6 d6 @+ h$ Y% J2 r0 N
constant halftime :std_logic_vector(3 downto 0):="0101";
. a( f0 A8 }' f7 K* Y6 w5 @ signal divcounter: std_logic_vector(3 downto 0);--shizhong fenpinjishu/ a9 n- j7 W/ z
signal shcounter : std_logic_vector(13 downto 0);--tiaozheng sh zhouqi he zhan kong bi1 t: s2 {2 }8 h0 F1 o
& ]/ [# \2 \, n# i; ]' Z3 M signal icgcounter :std_logic_vector (14 downto 0);--tiao zheng icg zhouqi he zhan kong bi% d9 K0 \( Q* D7 ^- g0 Z* s# k
5 v/ x) K) k9 S6 K7 H6 r signal delay :std_logic_vector(1 downto 0);--shixian ICG/SH de mai chong jian ge7 o6 n3 \2 a1 H6 K) }3 N( d/ K( ]4 e" W
signal clk1: std_logic;7 h& S4 _9 w# g  R% @. x; d
begin% M1 B6 }9 `6 k' y7 `
P1:process(clk,start)--24MHZ,12fenpin/ X9 u0 G7 n: p1 u2 X! p' j
    begin
, M6 h/ m* Z* S  \3 g9 x  X: T* F     if start='1' then1 m  D  B! V- r' [! e* h
        clk1<='0';
/ l  `2 V( O; ~& ?/ w+ @# C        divcounter<="0000";5 I+ Y) c: i1 N! A! O
      elsif clk'event and clk='1' then
6 ]  p: d+ ^5 Y; c% U0 m% X             if divcounter = halftime then' M: A' }( {1 U8 U1 I
                clk1 <= not clk1;
. _5 l7 \7 j% X: T) d" l  C$ [0 K                divcounter <= "0000";
8 {6 `8 V/ Y& a9 i2 t) j" r             else - V; O- [) g2 z" J5 I+ X1 G* s# u
               divcounter <= divcounter + 1;
7 _2 M3 `' A" ?             end if;
$ h3 _9 B  Z5 T; c+ U) m         end if;: s+ A, C) V6 G  ^$ Z0 O6 n
      o_m_clk <= clk1;& W9 G$ R( `6 ~, V' `3 y% H" h2 o  @% j
    end process P1;5 K  x/ g" B; Y% H. D  z$ |7 _7 h' f7 C
P2:process(clk1,start,enable)% S, s" t$ V# Y0 j2 Z8 D
begin
8 `2 C+ y9 q6 u# A      if start <= '1' then7 i. Q- B- D/ j# O# B
         delay <="00";" F) n0 p, s' e, K2 U: k  r* o
         shcounter <= "00000000000000";
8 J" f1 c$ t$ l! z; G' I9 [         icgcounter <= "000000000000000"; 0 w& E, v4 S' f$ Y0 T3 L3 e
         o_sh <= '0';( X6 j8 n7 `2 q# {
         o_icg <='1';$ E; _! l  Q* s1 F& n. B1 t
         stop <= '0';) g/ L6 l# H( J( r8 j
      elsif enable = "01" then. D! z* I6 B$ T. n& F9 N) M* n
         if clk1'event and clk1='1' then
0 X  Z! x2 n7 Q- b1 l' F            if icgcounter <"100111000100000" then    --20000....32767& ]/ g  L: s7 z- F& V
               icgcounter <= icgcounter +1;
2 q$ @8 A  m# ^1 h               if icgcounter <"000000000010100" then   --20: G4 r' u5 g% K" i8 C
                  o_icg <= '0';
4 A7 b4 [& c4 F1 A# ^               else * x: Y5 A' ]% t: h% l
                 o_icg <= '1'; : d( d( F0 t: A: G+ Y& Z
               end if;
$ s' v! T9 R  O- N4 {' X" ~            else
7 D6 k1 @5 a+ d) q+ p4 f# E                icgcounter <= "000000000000000";
; V: c( c. l5 Q/ ?               stop<='1';4 A# a) w0 ?* ]1 {2 u
            end if;4 n' H) g& n% {
            if delay = "01"  then4 D$ ^3 m, ]- t/ \2 p0 U) m. o
               delay <= "00";% H8 k8 Y& w, k  y9 `
               if shcounter < "00000000001001" then0 I+ W- k$ z/ G% h' C& a
                  shcounter <= shcounter +1;/ @0 M, y' X5 ?  @
                   if shcounter <"00000000000101" then  o_sh <= '1';1 T7 C5 @: g, I9 e( f8 k+ Q
                     else   o_sh <= '0';: ~8 C  O- a/ J' b( F3 O
                   end if;, f6 L6 s; \; f7 e2 N4 Q
               else
% N: a# W, M9 [8 k7 ~1 _               shcounter<= "00000000000000";' Q; C1 D: e( w% e  _* ?  C
                end if;6 Y3 R5 h' _2 B6 K
            else5 F3 S- r( E) D, C3 u4 Q& e, c+ K
                delay <= delay +1;
% H6 z+ `/ l. ^6 c" w            end if;
& z1 Q+ B- ?. y8 |          end if;
( f# \' Q! O7 ?5 e# F        
( K" i2 \6 ]/ |9 O7 P     elsif enable = "10" then
$ J+ H- v  z7 F6 E( f% N! {( F         if clk1'event and clk1='1' then0 m: x# \: z$ Q. C  V9 u: W# g
            if icgcounter <"100111000100000" then $ _0 j5 V9 F2 o' d* T8 `$ V3 Y
               icgcounter <= icgcounter +1;2 Z- Q+ D: X# [5 m" {- C
               if icgcounter <"000000000010100" then
1 n$ O, D: p9 G# V1 J                 o_icg <= '0';
- s  s# m/ s5 c( O$ u               else$ W5 E* a/ w* R; }
                  o_icg <= '1'; 7 x/ I0 L$ U- V! p, l8 C
               end if;
: p! b/ X4 w  N, \* d( @4 J; e            else % v1 \; Z3 p) C5 T
               icgcounter <= "000000000000000";
* H! }1 Y# D$ l7 j0 T) e% O               stop<='1';  n  @1 d8 |+ v
            end if;
- L) }# c9 i5 V5 B5 i            if delay = "01"  then
* }  f) L2 `2 v8 f; w* h" I               delay <= "00";
+ u6 w9 ~& k& M) W$ E               if shcounter < "10011100010000" then
. d% |0 o5 h# g/ E& r$ g* p                  shcounter <= shcounter +1;% x, Z! N/ y$ r* l5 N# e
                   if shcounter <"00000000000101" then* S. @0 Z- G, X, d/ M+ v2 v- s/ s$ E4 S
                      o_sh <= '1';
0 S2 i( k8 h: P1 U/ R5 |                   else
% g6 T: m& `( |                      o_sh <= '0';( i& `. o. R3 _, T2 X
                   end if;+ O6 i" L; n- o8 m
               else2 E; k/ }$ @) N& t& G1 y
                   shcounter<= "00000000000000";
& q( h3 ^+ V- m2 i1 ~5 h               end if;
4 q( ~9 J" b! y) o* h6 Y* N4 K            else
5 ~: v) x- {- f) r                delay <= delay +1;0 N$ i( r1 Y& m/ X- y6 m9 X' D
            end if;/ a- M$ u- A6 j- {+ {
         end if;
  o+ \% Y% I5 e6 q    end if;3 \# y& a- a, l7 k
   end process P2;
) @' ^- @/ O7 ^: S$ k end behave1;
6 |3 l* m9 B* Q( t; D

未命名.jpg (36.61 KB, 下载次数: 1)

未命名.jpg

6

主题

30

帖子

144

积分

二级会员(20)

Rank: 2Rank: 2

积分
144
5#
发表于 2012-2-24 20:35 | 只看该作者
这么长,自己慢慢找吧,细心点总能找出来的

26

主题

141

帖子

1639

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1639
4#
发表于 2010-5-15 10:53 | 只看该作者
爱莫能助

0

主题

7

帖子

-8991

积分

未知游客(0)

积分
-8991
3#
发表于 2009-11-4 19:43 | 只看该作者
错误太多了 得一步一步找 一下是看不出来的 所以没人里

1

主题

5

帖子

-8984

积分

未知游客(0)

积分
-8984
2#
 楼主| 发表于 2009-10-28 19:32 | 只看该作者
怎么没人理呢?
天分-速度,勤奋-高度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-24 11:55 , Processed in 0.069183 second(s), 36 queries , Gzip On.

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

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

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