如何解决使用宏定义总线字段
我试图通过以下方式使用宏来定义不同的总线位字段:
// bitfields NC / YC / XC
// 0:2 / 3:(WIDTH+2) / (WIDTH+2+1): WIDTH+(WIDTH+2)
// first
`ifdef VStrLite
`define WIDTH = 10;
`else
`define WIDTH = 11;
`endif
// then
`define YC (`WIDTH +2) : 3
`define XC (`WIDTH + `WIDTH + 2) : (`WIDTH +2 + 1)
// finally in other module
line 1: assign endframe = (bus[`XC]==639 && bus[´YC]==479)? 1: 0;
line n: x <= bus[`XC] - CONST;
结果:
第1行:连续分配左侧的语法错误;
第n行:赋值语句l值中的语法
以常规形式定义YC或XC时(定义YC 13:3),不会出现错误。
谢谢
解决方法
这里有两个问题。
- 您不需要
=
或最后一个;
进行定义。他们应该是:
`ifdef VStrLite
`define WIDTH 10
`else
`define WIDTH 11
`endif
-
bus[´YC]==479
错误地使用了不允许的前向勾号(´)而不是后向勾号(`)-在其他所有地方都正确。
修复这些问题,它应该可以正确编译。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。