找回密码
 注册
关于网站域名变更的通知
查看: 444|回复: 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对一个工程进行编译,但是综合阶段报错。! m+ a" p3 p# x+ J& i% E
    源码如下:: j2 e9 a, b7 p( M, m1 O
    /*2 z) f) m; i4 P* ]
    该模块是将计数器32bit计数值通过一个Byte从低位依次传给mcu
    / M; C( G' f1 c! p*/
    & o- C, I. S7 J: X# jmodule Data_Out ( reset, Data_Ready, Counter_Data, Data_Update, Data_Bus );) i. S. \5 G; g/ {* L. ~' c6 ?' D3 i& ]

    6 z# K" W3 R7 L- ]% [input reset; //复位信号,低电平有效, v8 e2 S4 U8 ~0 w  J; B
    input Data_Update; //MCU通过Data_Update通知FPGA可以更新Data_Bus
    2 L8 m5 U1 u5 s# u! X9 qinput [31:0] Counter_Data; //32bit计数器输出的计数值1 T: y' ~/ V* M0 W% c3 l6 I6 w8 f
    output Data_Ready; //FPGA通知MCU已经更新Data_Bus, \5 C! q9 _1 W3 V: X1 X$ I
    output [7:0] Data_Bus; //连接到MCU的数据总线。
      o; n5 ]/ [1 U+ K/ D& H; k; ^6 u; P, ~0 i6 r; l& E
    reg [2:0] Data_Order; //控制数据总线更新的状态标志
    * f. ~) f* t& `& [( b3 d, J- |wire [7:0] data0; //Counter_Data[7:0]# g( G+ w1 x$ e# _& i. s7 |7 Q
    wire [7:0] data1; //Counter_Data[15:8]
    " X( z, C- S% V$ @+ X0 N  Wwire [7:0] data2; //Counter_Data[23:16]. V$ E( c9 D) w9 Q7 R* `8 `
    wire [7:0] data3; //Counter_Data[31:24]
      O/ T+ O+ M9 F& l8 s
    8 ~4 c8 {  E$ n7 |  }) t/*将32bit数据Counter_Data分4个字节分别送给data0~data3*// u; d6 c/ c5 ^' a2 Z9 F8 v
    assign data0 = Counter_Data [7:0];# v, q( M% b' x6 r5 P" [
    assign data1 = Counter_Data [15:8];8 `/ j' r7 B/ `0 ?# s0 M
    assign data2 = Counter_Data [23:16];
    . D/ k8 S7 ?. x% e3 \- N- wassign data3 = Counter_Data [31:24];3 O: o2 y  C# V2 ^" n& s
    ' p  i2 ?" Z, n: b
    /*根据reset和Data_Update,更新Data_Order*/$ x$ `' G) h7 ]0 m7 S" K, v
    always @( negedge reset or Data_Update ): P3 S/ E0 A9 S( {8 P
        begin
    1 b' `3 ~5 A2 r( x        if ( reset == 0 ) //reset有效,清零Data_Order。' n: ~5 Q$ Y/ h8 b4 _- U! |' E
                begin7 q9 u' j+ t' b2 M6 H& U' l
                Data_Order <= 3'b000;
    5 P5 ?( x0 X6 u            end
    8 p" |7 t$ `. t5 k4 [" J$ B; G9 t2 y6 N( K        else if ( Data_Update == 1 ) //Data_Update为高电平,则对Data_Order 更新! u: O% g4 n- W: H# d+ @6 E
                begin
    6 t4 a1 M7 D0 z5 r0 M            Data_Order  <= Data_Order + 3'b001;1 J) `* v$ J  ]/ i5 O
                if ( Data_Order == 3'b100 ) //Data_Order 已经到达最后状态,更新到第一个状态
    5 y$ \5 K8 k  j: L3 I; c7 B                begin: z. f& {) F1 k+ C& N6 w
                    Data_Order  <= 3'b001;
    ' O2 V" r- `, g9 R1 Z                end
    0 g( Y0 I7 T( l. X0 N9 \            end% N- v- x* T' }. d# D
        end% k6 A3 Q$ Z% a  k
    + q! R+ D8 S* [
    /*根据Data_Order的不同状态,对Data_Bus和Data_Ready更新*/
    7 E6 U" L/ e# t2 A; _5 x" Talways @( Data_Order , data0, data1, data2, data3, Data_Update )) l+ i* X4 t/ x. y% q
        begin  g: M- X. \1 E- l& Y% b1 T- }) \
            case ( Data_Order )# L; v! y$ D% W. H5 d# L1 y
                3'b001:   begin) \2 q: J# m* C/ N
                                              Data_Bus = data0;1 A7 I0 D/ a: I* q5 P  ^
                                                             Data_Ready = 1'd1; //更新Data_Bus同时将Data_Ready拉高,通知MCU采样数据总线
    " f8 W3 v/ i- Y                      end# n( ]# [/ P1 i4 B
                3'b010:   begin, y& P) {0 v& D! |: y. S
                                              Data_Bus = data1;
    7 {" \: l/ L- C  N0 ^$ K  q                                                         Data_Ready = 1'd1; //更新Data_Bus同时将Data_Ready拉高,通知MCU采样数据总线
    6 r9 s9 L1 m& S( Q, j                      end
      u* d: n7 {( T% N0 K0 B( Q7 c$ \            3'b011:   begin  a2 H7 K; _2 Y! E4 \
                                              Data_Bus = data2;
    $ b, R8 X* Y2 B8 a" R6 K                                                         Data_Ready = 1'd1; //更新Data_Bus同时将Data_Ready拉高,通知MCU采样数据总线1 p( r# a$ i! Q
                          end6 S5 X1 w" G$ \8 ~1 m4 J4 |% z& [
                3'b100:   begin
    6 r2 O% }9 ]  n% p                                          Data_Bus = data3;) ^% x; w- W7 y" h1 U. c
                                                             Data_Ready = 1'd1; //更新Data_Bus同时将Data_Ready拉高,通知MCU采样数据总线- l5 H4 s' Q8 Z/ Q$ l
                          end
    ! }/ z% F, `: |0 R* i- I! l$ W            default:  begin
    * \/ ?" d* I( i) m9 s                                          Data_Bus = 8'h00;/ q) O( e. @, a6 X3 H
                          end8 i) ^4 Q! ?  j8 `% n, j
            endcase
    0 E9 b( M% K3 P. }6 ?* c0 Q  y        if ( Data_Update == 0 ) //Data_Update被MCU拉低后,Data_Ready也被清零+ j$ }$ C3 \7 q
                begin8 L6 ]5 M  ]6 }* e7 [7 u* o
                    Data_Ready = 1'd0;6 q) y2 E  x/ _8 |& Q: j  C  r
                end9 c% H, X& v$ Z' u* v
        end
    0 x- o' ]% E, i1 j  C7 l" s2 }0 Q1 e3 ?' G
    endmodule
    ' e, o1 D# F8 C/ s3 c& x# d
    / v/ Q! u- I, |- H# d! z
    ; f) N) o' k. v! w* o在综合阶段出现错误:
    ( h! J! L1 S; {( u& z% vError (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 type- X  z; g1 {; @& ]

    ! D+ S' Q/ Y% a3 k; L: G% r% _, I* J
    请教高手对于这个问题应该如何处理能够解决?
    + A8 t& ^' \$ B* x# X
    6 h. {1 U; w+ A% g" v: ?& I
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-12 02:32 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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