找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

VHDL编译错误,请大家指教

[复制链接]

1

主题

5

帖子

-8984

积分

未知游客(0)

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

EDA365欢迎您!

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

x
本帖最后由 Annhu 于 2009-10-26 16:08 编辑 : S; A7 ^2 W' ~' a8 M
; ?! S! i1 U+ S. M( v
:) 下面的程序是一款CCD的驱动程序,clk1=2MHZ,enable主要是控制sh的周期是10us还是10ms icg的周期不变始终为10ms,delay用于控制sh、icg的延时0.5us。编译错误见最下方,小弟把clk和enable的位置换了一下即先判断clk1上升沿然后在判断enable问题就解决了,麻烦高手帮忙看一下这到底是什么原因呢?还有j就是程序的代码有没有可以优化的地方呢,谢谢大家!' ?- P, D9 D; R2 \: z8 H+ J
--CCDshixu - t. j0 z1 [+ b% o
LIBRARY IEEE;
/ ~0 r8 s/ ~  R& LUSE IEEE.STD_LOGIC_1164.ALL;( {8 Z! p& n5 E! Q% E
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
1 h$ |" Q4 \+ @3 p9 t! l- z( aentity divclk is 6 I' R  B1 m9 N
   port(clk: in std_logic;
/ a, v% t3 i+ |' {        start:in std_logic;
' L* F, H  k9 c4 E  B        enable:in std_logic_vector(1 downto 0);; ^7 ^% _: z* r  o
        o_m_clk  out std_logic;4 D. i) O1 Z% n5 g2 l; E9 K2 n
        o_sh,o_icg  out std_logic;        
- k* B  v! _# y" I/ h: \, M7 R$ Y% t2 t        stop out std_logic);
3 Q1 R4 u4 B: s! g4 Eend divclk;+ [& t  B) z2 ~, r
architecture behave1 of divclk is
  y1 A# O# B& ]* \2 h' ~constant halftime :std_logic_vector(3 downto 0):="0101";, D5 b! M) [5 M
signal divcounter: std_logic_vector(3 downto 0);--shizhong fenpinjishu
) L% c+ I7 v& A& O& z1 b5 Jsignal shcounter : std_logic_vector(13 downto 0);--tiaozheng sh zhouqi he zhan kong bi
$ w+ |3 N4 d7 Zsignal icgcounter :std_logic_vector (14 downto 0);--tiao zheng icg zhouqi he zhan kong bi
; l" S! ]: U8 M- H2 U* usignal delay :std_logic_vector(1 downto 0);--shixian ICG/SH de mai chong jian ge
/ }$ W: M) y2 gsignal clk1: std_logic;
& p+ ?* C: b- o! a5 L+ Bbegin
: U  e; F- d2 g; k3 \# k) VP1:process(clk,start)--24MHZ,12fenpin$ f/ g8 B: ?/ C
   begin : d5 w( f1 |$ H
     if start='1' then6 \1 k/ R8 E# N0 g2 u; D. N/ j8 _; j
       clk1<='0';
; g0 g, `$ g; N$ C       divcounter<="0000";                                                                                                                                                         
: ?; U+ v2 I  i2 r5 F     elsif clk'event and clk='1' then& U" P+ \7 ]. N3 o: r
            if divcounter = halftime then
# l' k4 `. s7 |3 N1 a* n               clk1 <= not clk1;
# {7 R7 J: K$ n               divcounter <= "0000";, }( Z& E, V8 f3 H. D, U; q& A
            else
" B3 @& l' i4 c4 m1 t8 u               divcounter <= divcounter + 1;
1 y' C( M0 a% u% y0 m8 d4 f            end if;
) [# E, y& h0 R, p        end if;) N, W4 G, O8 t# D
     o_m_clk <= clk1;- e. e3 J9 ^$ S) M
   end process P1;+ ?; }+ ^; ~3 Z  n7 J! B8 R
P2:process(clk1,start,enable)
2 l6 F+ e2 A( s% C" m  Vbegin5 J" W: [' }3 F, ^# C) h, I# x
     if start = '1' then0 S9 t' s4 M+ y
        delay <="00";8 {: K  M( N+ j
        shcounter <= "00000000000000";# s3 a" O; @1 c/ a
        icgcounter <= "000000000000000";
7 X2 E* q% I8 c# P        o_sh <= '0';* A: Y0 n3 X& T1 Y
        o_icg <='1';
/ O) Z1 G- }7 g: B, P        stop <= '0';
, X' |! u/ l$ H& }6 t     elsif enable = "01" then
! |9 p+ a! A* W0 y. q        if clk1'event and clk1='1' then7 p! O% g' {: Y8 ^0 |
           if icgcounter <"100111000100000" then  -- 20000分频产生10ms的周期
, M4 M8 ^0 ], ?% X% N              icgcounter <= icgcounter +1;- `7 k3 ^; o, w  O$ i/ ~( f
              if icgcounter <"000000000010100" then
: m! l. g) K& c8 t                 o_icg <= '0';               
, B( f1 j& I& L7 [              else & {) {* y; W2 \- @+ B
                 o_icg <= '1';               
& k$ K8 O  k* G! {7 U7 Q              end if;8 g  i  P( }& h% k( y- m0 _
           else * L! j( t3 M3 @2 k# N
               icgcounter <= "000000000000000"; * D: w# c( |% y; Z# F  d. W
               stop<='1';
( C8 l4 `+ O3 E8 @8 e           end if;
; [- `* u; D5 s8 e5 N* K, T           if delay = "01"  then
9 n% G+ m& D+ u4 e- X% y6 |. m              delay <= "00";
3 c# `; A# V( G- y  K6 q              if shcounter < "00000000001001" then  -- delay用于产生ICG、SH的脉冲间隔0.5us,10us SH
, i1 r8 b$ L3 I( m! s1 t                 shcounter <= shcounter +1;
& b# G7 T  ^3 n9 z, s; j# s                  if shcounter <"00000000000101" then  o_sh <= '1';
$ y1 I9 o4 G0 F! s& s8 u) T                    else   o_sh <= '0';                     5 d; e8 S' b/ }+ D. t% H5 z
                  end if;              8 T7 Y" Y6 Y* [* n' P
              else; ]7 Q3 y  S+ ]) Z7 ]
              shcounter<= "00000000000000";2 ~0 z8 o; P, _  g" l1 i5 T' }# K8 E
               end if;6 e: p8 \% ?/ r) X3 Q
           else
0 ?$ D( U: M1 V- s               delay <= delay +1;
8 \; ]( W- h# V           end if;. J1 Y( `  W6 m' o4 ?2 I0 R4 E% n% L
         end if;
7 L, V  ~- J4 Y/ Z1 a      
1 Z6 Y! k, S* [$ S7 \7 }6 g7 f+ q     elsif enable = "10" then7 [$ F  v, O. P. t
        if clk1'event and clk1='1' then, k* j2 D9 B. P6 Q
           if icgcounter <"100111000100000" then  -- 10ms ICG9 Y9 W) b+ r2 \5 o. O
              icgcounter <= icgcounter +1;/ H/ A1 ^& j5 W  t) r
              if icgcounter <"000000000010100" then
+ i9 F+ z0 F9 N: r8 I; S                 o_icg <= '0';               
9 G. j# I8 W* v              else* W4 I' z, h, P# I
                 o_icg <= '1';                5 H# T; z2 f' O. ~, s: D. I, l) N6 \
              end if;
% H" i) g: r: p! s& \% ?: [0 E2 k           else
4 g  S3 R: b% ]9 f6 W; Q% A               icgcounter <= "000000000000000"; , I. X+ g2 |/ f$ p+ A# n
               stop<='1';
" s* _/ q6 D5 P2 @; N           end if;1 d" ~& B( v; F, B; B
           if delay = "01"  then
0 G5 y/ D% s: y5 E0 W              delay <= "00";
6 \5 c. Y$ B4 |5 B- X$ |! R8 ]              if shcounter < "10011100010000" then  -- 2次10000分频delay用于产生ICG、SH的脉冲间隔0.5us,10ms SH) l- @3 |( s/ i
                 shcounter <= shcounter +1;0 H$ _1 z" J# G
                  if shcounter <"00000000000101" then2 C$ e$ S  r2 U& \$ B( t/ Y( Y! M+ E9 o/ h
                     o_sh <= '1';
9 F3 L0 E( n: A2 g/ L7 t# A; d0 m# s                  else
4 ]% e$ C9 c9 W2 h, d( u1 i                     o_sh <= '0';
. Q1 f5 ~+ f  B9 c5 g+ {                  end if;              
! V8 X4 Z6 D1 h3 h8 r% q. J              else
; u! M: A2 d' J  u2 r                  shcounter<= "00000000000000";. I. ?$ S6 \! _, m$ u; ~6 [
              end if;) D5 r$ K  I* @* [& I3 B) q; M7 h- W
           else5 }: B! f7 s: n0 i/ e
               delay <= delay +1;5 S: t$ |6 S) k' Q
           end if;       * R3 _/ f2 d# Y1 q# V5 D
        end if;
' I! U( l" s& J- H+ M$ ]   end if;  / P' k: p' U: P1 P
  end process P2;9 K$ r' g8 \+ r% v0 X( R$ x) N" B
end behave1;* m' c+ G' h& i
Error (10821): HDL error at divclk.vhd(42): can't infer register for "stop" because its behavior does not match any supported register model
* k; w! i" I+ I6 b" C1 SError (10821): HDL error at divclk.vhd(42): can't infer register for "o_icg" because its behavior does not match any supported register model, q* u7 g2 C" s- E; k
Error (10821): HDL error at divclk.vhd(42): can't infer register for "o_sh" because its behavior does not match any supported register model
1 h  K/ X/ w7 `* i% zError (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[0]" because its behavior does not match any supported register , }0 n6 Q$ y+ H+ x% U- B
model6 b* ^) o7 _" A  N- ^7 C
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[1]" because its behavior does not match any supported register
  n! ^4 j# I! S' B4 B# {8 Ymodel; {& ^. v4 i# e7 |. [7 m
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[2]" because its behavior does not match any supported register
- C6 M1 Y- b5 c* xmodel
) Z4 c( F; z/ Y: [" Q* Y1 q5 L! q( UError (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[3]" because its behavior does not match any supported register ; c  ^+ S% V! d/ y) _5 @
model
' f- a' }; }# [- [. Z8 U7 ~; cError (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[4]" because its behavior does not match any supported register
3 H' {  {$ H  D2 n$ I! jmodel
1 G3 _0 O/ O) v5 ~% wError (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[5]" because its behavior does not match any supported register
& G3 {' k: ?( d) E4 y$ Omodel$ B5 Q  {8 O. E* l. a
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[6]" because its behavior does not match any supported register * B) W  }$ K0 O+ O9 k0 N& x
model
9 |) ~& D5 I3 C2 xError (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[7]" because its behavior does not match any supported register / M) a- L+ A8 x9 U7 |. a% @
model2 _5 C- x% X- B8 x* \  c7 G
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[8]" because its behavior does not match any supported register
2 y, e) G7 b# b7 G0 h, q" nmodel1 e1 _) b- c/ J( W3 i" r  H
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[9]" because its behavior does not match any supported register 7 e; U0 F0 j& @5 |1 ]
model" E, O7 f& [2 a$ V
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[10]" because its behavior does not match any supported register
0 e( {1 e) Z# t( gmodel2 l! b, Q9 ]( a$ x
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[11]" because its behavior does not match any supported register
# b5 _$ p& Q$ M4 f' A  k  umodel
, P: _2 `8 N- VError (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[12]" because its behavior does not match any supported register
+ Z2 v, x$ ]4 G1 j' u- F8 ?8 D" ~model
- N  _% W) |7 e5 tError (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[13]" because its behavior does not match any supported register
4 D% V* v  `3 d8 r) [3 Smodel9 l: O! t/ {( {! D  N
Error (10821): HDL error at divclk.vhd(42): can't infer register for "icgcounter[14]" because its behavior does not match any supported register 0 s$ G9 Y; W; X; l0 O; n, z
model
" r8 m" M, }1 Z" zError (10821): HDL error at divclk.vhd(42): can't infer register for "shcounter[0]" because its behavior does not match any supported register
0 @1 E5 n$ n6 T4 x" ?' |model5 z0 j7 k) H" s: n+ @3 `6 {2 d
Error: Can't elaborate top-level user hierarchy
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
天分-速度,勤奋-高度

1

主题

5

帖子

-8984

积分

未知游客(0)

积分
-8984
2#
 楼主| 发表于 2009-10-28 19:32 | 只看该作者
怎么没人理呢?
天分-速度,勤奋-高度

0

主题

7

帖子

-8991

积分

未知游客(0)

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

26

主题

141

帖子

1639

积分

四级会员(40)

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

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

6

主题

30

帖子

144

积分

二级会员(20)

Rank: 2Rank: 2

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

6

主题

30

帖子

144

积分

二级会员(20)

Rank: 2Rank: 2

积分
144
6#
发表于 2012-2-26 13:58 | 只看该作者
LIBRARY IEEE;" h0 ^) D- \1 E; x4 n
USE IEEE.STD_LOGIC_1164.ALL;
$ n& ]( T8 n6 n+ g* Y! z USE IEEE.STD_LOGIC_UNSIGNED.ALL;
7 z! y8 e& g/ L( M entity divclk is
9 q! D* a8 _& o- v/ E9 m   port(clk: in std_logic;
5 W+ q: A4 b& I) c0 W: \6 n         start:in std_logic;  F) Z# L5 Z6 n3 @( O$ G
         enable:in std_logic_vector(1 downto 0);& }  O3 J3 R  C. k  K
         o_m_clk : out std_logic;
& W+ F, G0 b4 s2 K: c5 e/ O; j1 A, [         o_sh,o_icg:  out std_logic;
& L( ?6 d8 {. r: D8 v7 v         stop: out std_logic);
' Q7 d0 F8 X* X" D end divclk;* j! q1 Z- v/ Z3 J* a2 r
architecture behave1 of divclk is) k( N0 R) |& {  k5 \$ d
constant halftime :std_logic_vector(3 downto 0):="0101";
1 T$ n, t! r$ o; ~# Z5 U signal divcounter: std_logic_vector(3 downto 0);--shizhong fenpinjishu3 D  [. T+ y2 O! \) K
signal shcounter : std_logic_vector(13 downto 0);--tiaozheng sh zhouqi he zhan kong bi1 t: s2 {2 }8 h0 F1 o
: O5 A1 A# T- d+ S) l signal icgcounter :std_logic_vector (14 downto 0);--tiao zheng icg zhouqi he zhan kong bi% d9 K0 \( Q* D7 ^- g0 Z* s# k
# N9 y9 q* R1 j7 v, i, P" z signal delay :std_logic_vector(1 downto 0);--shixian ICG/SH de mai chong jian ge7 o6 n3 \2 a1 H6 K
* R$ ~2 a. _  O$ K4 \ signal clk1: std_logic;
; A& ~; ?) s) f  s% x  ^ begin# ~9 d6 o5 w; t+ ]" L4 t" {2 a
P1:process(clk,start)--24MHZ,12fenpin
' H% y& ?; Y0 H) ~+ Z3 e! `    begin
  M: R* \4 R0 i& O/ I     if start='1' then
  V  I* d- j  X% D% g% g$ K2 F1 j        clk1<='0';
0 k7 V, R3 T# T4 h        divcounter<="0000";
$ C: b  C, o7 L* |8 d6 y      elsif clk'event and clk='1' then
9 X7 ~( K1 |$ ~# T2 c$ d             if divcounter = halftime then
( r; F/ X* U5 {5 P/ B                clk1 <= not clk1;: G/ ?$ N# K% S5 p! T
                divcounter <= "0000";
4 `! i+ M8 D; o; b4 \1 `* l, U/ _+ s             else
4 M6 u$ A- d- S2 j+ L               divcounter <= divcounter + 1;
4 F% g' K: @" i0 G7 Q             end if;
6 Q, O9 x$ R2 e7 S6 F" b- h         end if;
8 n9 X$ B3 B5 w* e" p      o_m_clk <= clk1;. {; R7 a3 c* I  d* @" y# h6 Z
    end process P1;
+ E( u5 F7 h# g& X6 Z  E P2:process(clk1,start,enable)
4 G, f8 X5 i8 N6 E' z3 _/ q! J begin
' e# ?9 N6 ~5 q# Q" `      if start <= '1' then( C( y* M( t; p- D1 @' v7 `
         delay <="00";: m: I2 W! |! p+ [2 H
         shcounter <= "00000000000000";
8 m) M7 L" s' m. T  M8 a         icgcounter <= "000000000000000"; ; y, D7 B- R' p) a7 U6 `2 G
         o_sh <= '0';
6 M: u4 z, N1 A         o_icg <='1';
0 S% e7 M* T0 u7 X; R$ X' T& i         stop <= '0';# B' i" m" K, [) C5 K" U
      elsif enable = "01" then
' `% d+ z% i# a2 P7 U         if clk1'event and clk1='1' then6 \( Q( i; D* D7 f" G( z
            if icgcounter <"100111000100000" then    --20000....32767
. i% n2 c# B5 T               icgcounter <= icgcounter +1;6 r: D) L: M6 B- c. w; M
               if icgcounter <"000000000010100" then   --20
+ |% [% p1 L" ?                  o_icg <= '0';
! l9 u. \& d3 r4 L3 @, G" ]2 e               else
, N: }& J2 S- N3 \4 K- F                 o_icg <= '1';
' s  g! e' W1 Z  \2 A) Q: s               end if;$ m% J8 Q; l- U5 N: e7 U
            else
9 L: O7 y2 D6 M% `7 o                icgcounter <= "000000000000000";
: ?9 {+ R% L4 @7 T6 ~8 S               stop<='1';. C- E% f8 c& H; f+ }" l, R! E- R7 U
            end if;2 v3 U# [4 L( i! ]5 x+ q
            if delay = "01"  then; _' v4 t5 c" u- [) |1 v5 k! L
               delay <= "00";* V, e! z+ y. Y( w5 e
               if shcounter < "00000000001001" then
6 ]' }% _* ]% N6 }9 }                  shcounter <= shcounter +1;+ \9 X, L6 X/ f- b, @3 f5 C) y
                   if shcounter <"00000000000101" then  o_sh <= '1';, O8 s" a& @2 }7 q4 I
                     else   o_sh <= '0';. C  e9 h) a- R0 J  t6 F  Q2 {
                   end if;5 r0 n; c* ~/ ~/ i# J: X
               else/ f2 v" t* X  d  n/ c
               shcounter<= "00000000000000";; m1 q! r6 Q( f6 Q" f
                end if;
/ ^1 |% @- C2 D, t, q, b6 U            else
( |: U5 X3 M3 ?' Z                delay <= delay +1;5 F( _1 o9 {; V0 B! h
            end if;
7 e' |2 ]3 u, r- N: X* p% s8 ~          end if;5 g" P( D8 W; k* V, j6 G
        / T( K' O/ h7 g% \
     elsif enable = "10" then3 ?5 L( Z& y, Q5 B1 r
         if clk1'event and clk1='1' then
) G' u0 }8 I1 N0 a# q            if icgcounter <"100111000100000" then
! v4 H/ z9 a3 m9 S               icgcounter <= icgcounter +1;$ {: k/ e; A/ p" R8 |  ?/ G
               if icgcounter <"000000000010100" then
' A( l, ]% R9 h, f4 I# p* s2 i                 o_icg <= '0';
$ r% _! U8 d* q2 i# a7 v& ^6 k+ \               else6 l7 e$ ~: t  b- ~9 G
                  o_icg <= '1'; : h" }, w) a: u8 o9 \, E9 G
               end if;  I" @/ x; ~0 N& q- Y
            else 1 V* f% t* M  b  E
               icgcounter <= "000000000000000"; / P. ~7 z* R0 r( g0 ^3 R
               stop<='1';: A9 @0 u0 z* Y+ z" A, @. _
            end if;
! U8 U: }. c( x            if delay = "01"  then  j$ x" h6 B; N* b3 J) y* b
               delay <= "00";5 N! l5 C! x+ Q, h5 `; h6 \
               if shcounter < "10011100010000" then
8 F( y8 h* ~, _3 z3 a. @1 r& U, ?                  shcounter <= shcounter +1;
3 R# I8 w* t! f: T8 {                   if shcounter <"00000000000101" then
; C6 r) M: V' r! `( |                      o_sh <= '1';( o" x+ [1 t) J
                   else& }. @. J+ o, ]- D/ t- @
                      o_sh <= '0';5 `- v+ Q$ j/ w+ E3 m' _
                   end if;/ A% K. Q- n* R
               else- v4 ~/ n( A- k3 ~
                   shcounter<= "00000000000000";% a* D, f1 H6 d+ q7 Q
               end if;5 ]: G3 W" ?/ ~
            else" ?8 y8 S4 Q8 q. m8 R% L" k
                delay <= delay +1;
; c6 f; J+ k; G7 W% N" s: O0 ^            end if;
7 g! v. e/ d! T0 ~         end if;& J" }! _6 T% C  Z* {1 l; @
    end if;
3 B0 j; m8 `, |4 w   end process P2;
; A/ \/ b7 ]4 P4 l1 r end behave1;" z( E; E3 }, g6 a! `1 X. O+ U

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

未命名.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-28 07:55 , Processed in 0.086677 second(s), 35 queries , Gzip On.

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

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

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