我正在开发一个用于突破游戏的FPGA实现的项目。在这个游戏中,我们必须使用球和桨来打破砖块。一些砖块可能在与球的多个接触处断裂。为此,我使用整数数组来表示打破特定砖块所需的命中数。例如(2,0,1,2)代表一个砖块,需要打破2个点击,然后是碎砖,然后是砖块,需要单击才能打破等等。
另外,我在VHDL中完成了所有编码,但为了将结果输出到VGA屏幕,我使用的是Verilog。
在VHDL中,我已经在包中声明了一个整数数组的类型,如下所示:
package mytypes_pkg is
type int_array is array (0 to 39) of integer;
end mytypes_pkg;
然后在我的球运动控制文件中,我导入了work.mytypes_pkg.all然后有:
brickout:out int_array;
包含游戏中所有砖块的当前状态。必须将此数组传递给我的Verilog文件,其中必须进行所有VGA显示生成。在那里,我试过
input [39:0] bricki;
但它给了我错误
“'mainc'的实体和组件上的端口'brickout'的不同类型”
如何纠正此错误并执行我想要执行的操作?有没有办法告诉Verilog bricki也是int_array类型?我是否还需要在Verilog中导入work.mytypes_pkg.all?
答案 0 :(得分:1)
在SystemVerilog中,您可以使用typedef来定义自己的类型,例如
typedef int [N-1:0] mytype;
这种方式可以构建您想要的内容。在包中定义类型,然后导入它:
import pkg_keccak::mytype;
...
mytype int_table;