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

使用Quartus II对Verilog HDL综合错误

[复制链接]
  • TA的每日心情
    开心
    2019-12-2 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-10-19 10:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    我使用Quartus II64-Bit Version 13.1.0 Build 162 Full Version对一个工程进行编译,但是综合阶段报错。# P* m& Z- K( y3 x* o
    源码如下:
    ; }) Y, `; {! ]" o1 E4 J/*  a# T" [3 L  X9 H* E
    该模块是将计数器32bit计数值通过一个Byte从低位依次传给mcu
    ! `+ f6 A" U# j0 S8 N+ Z  o. X& O' a*/% c4 [) P9 V  T2 r) a
    module Data_Out ( reset, Data_Ready, Counter_Data, Data_Update, Data_Bus );  o& r+ m4 O; V

    / ?! A' L5 k0 d% x3 `input reset; //复位信号,低电平有效5 v2 d& y% D. Q4 l
    input Data_Update; //MCU通过Data_Update通知FPGA可以更新Data_Bus: N, D2 e& P7 f9 `- T# L/ n
    input [31:0] Counter_Data; //32bit计数器输出的计数值2 H) U  x8 M) W( D6 ]
    output Data_Ready; //FPGA通知MCU已经更新Data_Bus
    ) O& t5 C4 P) ~1 O0 D- C- foutput [7:0] Data_Bus; //连接到MCU的数据总线。
    2 L% E; E* m9 u* \4 i" O' I) S3 C" X; a7 _
    reg [2:0] Data_Order; //控制数据总线更新的状态标志& [7 y& l  Q: H9 ~( _. }
    wire [7:0] data0; //Counter_Data[7:0]2 O' z! s7 O  R6 w1 ]
    wire [7:0] data1; //Counter_Data[15:8]
    0 ~9 _4 R2 Z8 _9 Iwire [7:0] data2; //Counter_Data[23:16]  L" s* B) I9 X
    wire [7:0] data3; //Counter_Data[31:24]4 V' v3 e4 a( [
    & S( A; W  B; e. n. E% q
    /*将32bit数据Counter_Data分4个字节分别送给data0~data3*/! r! x* @% o# @3 d$ {& U
    assign data0 = Counter_Data [7:0];! L) l, I0 L+ k  O4 Z& ~5 T
    assign data1 = Counter_Data [15:8];
    ) y8 @; \; f0 ]1 Gassign data2 = Counter_Data [23:16];* _/ z2 M) ~7 k
    assign data3 = Counter_Data [31:24];; O+ o' I3 b5 P: O( P9 C, [' U
    : y& K3 r7 L" O5 ?0 T& m
    /*根据reset和Data_Update,更新Data_Order*/# [& C0 b6 E8 d" ^5 R
    always @( negedge reset or Data_Update )
    - P7 o; m; J/ d3 L1 r% \$ l1 a    begin
    - _$ {2 Y  x% K2 M2 y$ t        if ( reset == 0 ) //reset有效,清零Data_Order。) ^  K5 D2 ]% T  `( E
                begin
    " I; q* q0 \  |$ p# k' @            Data_Order <= 3'b000;
    " t2 O& Q1 e: K/ ?+ A. h! P            end, w/ r5 J8 e* }& {: q/ u& L' s
            else if ( Data_Update == 1 ) //Data_Update为高电平,则对Data_Order 更新5 A2 U6 b3 V# k: Q+ R4 f/ d3 I0 l
                begin
    ! d, }  x7 r! [! \! R/ Z( X! [! I            Data_Order  <= Data_Order + 3'b001;" ?% ~; B$ e" R+ v+ D
                if ( Data_Order == 3'b100 ) //Data_Order 已经到达最后状态,更新到第一个状态
    & U+ j! Q- j; w                begin" t" d( [( f- }+ b& H$ D
                    Data_Order  <= 3'b001;4 {% ?: `. k$ z2 E
                    end
    ' l5 }: S( n' m3 @( W8 o! A! M            end
    & [, J: j! ^3 E, V    end
    * ~9 s* ^/ e$ ]% m  i/ h
    * l8 ]. W: u8 V! l; A) [/*根据Data_Order的不同状态,对Data_Bus和Data_Ready更新*/
    , [0 H' Y6 h; _2 b6 a" l/ calways @( Data_Order , data0, data1, data2, data3, Data_Update )
    5 v" N3 y' k9 o( R! q* i2 W    begin1 ]  d# f/ @0 J3 t+ m7 K( A
            case ( Data_Order )- \6 z& l* {1 P) B; B8 ?. q5 ^0 O
                3'b001:   begin
    $ a; x! w( T( O4 Z                                          Data_Bus = data0;% h1 J! n: r) l9 c2 g8 E& m
                                                             Data_Ready = 1'd1; //更新Data_Bus同时将Data_Ready拉高,通知MCU采样数据总线
    , _& n( w9 J& L2 }                      end, q6 B0 n, L( f8 A1 w" k0 N. |
                3'b010:   begin
    2 x0 G2 x2 Q7 C* p                                          Data_Bus = data1;. x& C0 x  r. f- D- ?
                                                             Data_Ready = 1'd1; //更新Data_Bus同时将Data_Ready拉高,通知MCU采样数据总线, h) M9 D3 c! V2 ^
                          end% [" R/ C% s4 F- V5 W
                3'b011:   begin
    0 p5 Q7 f3 |) }& `( w# s0 t                                          Data_Bus = data2;
    , I$ u8 G8 R$ v) Y, S* r                                                         Data_Ready = 1'd1; //更新Data_Bus同时将Data_Ready拉高,通知MCU采样数据总线
    : }5 e7 U+ N9 T7 n( \, m! p/ w                      end' ~# z4 k: `$ S' P/ `# c3 h
                3'b100:   begin
    ) s! |/ ]* W  `: a4 N                                          Data_Bus = data3;- O8 l/ C0 k2 {5 t9 x" W
                                                             Data_Ready = 1'd1; //更新Data_Bus同时将Data_Ready拉高,通知MCU采样数据总线( O+ p* h9 y) L2 I0 U' D' B
                          end
    & D1 f$ z  K. l2 C6 l  m8 O            default:  begin
    5 C# o3 T+ K! V6 L; J+ V* M2 p+ y                                          Data_Bus = 8'h00;
    3 y, `% _8 ~. J0 [1 }+ {3 P/ \                      end
      R' K+ b8 h9 T' Q2 O        endcase" D; `( e% o# ]! ?# B$ l) L
            if ( Data_Update == 0 ) //Data_Update被MCU拉低后,Data_Ready也被清零
    . r$ V4 y+ H4 V$ ^' |            begin7 }4 {% @  G! u  d# y, V9 k
                    Data_Ready = 1'd0;
    + ~* ~1 O) e$ p( I. r+ F            end) {  J: a2 X2 V9 i
        end! o6 |: G5 g, {9 X5 G9 w4 c

    " ?1 a9 ]% y" T* o) h" Tendmodule
    8 u$ g0 U; M- v2 r; s. R7 \; j" m" r' Y% r

    + M8 a( M" @; g6 y0 M. c4 Z在综合阶段出现错误:
    " z+ t- N7 B2 g" P$ h: _Error (10137): Verilog HDL Procedural Assignment error at Data_Out.v(46): object "Data_Bus" on left-hand side of assignment must have a variable data type2 L* i- \3 t! {

    " r1 Q& f; H6 K" |5 ~1 i# n1 G$ [. E" n7 [* P; }( D
    请教高手对于这个问题应该如何处理能够解决?3 _! C# C! b  n  ^" R. X2 m$ B

    : b9 M# ?3 t2 I5 g' R3 ]' V; p
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-24 20:37 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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