Robei EDA常见问题|每日播报
(资料图)
在Robei EDA里连接内部信号
一般来说,在代码模块之间的例化上,会存在两种端口例化的情况,一种是端口配输入输出线,直截了当,另一种是端口配上一级模块的内部信号,在高一级的模块里使用完了就不再引出信号线了。在Quartus 或者 Vivado 里,这两个操作没有什么不同,但是在 Robei EDA里,它的使用略有不同。
检查版本。在一些低一点的EDA版本里,是没有这个操作的,需要在官网下载最新版覆盖。如何检测是否有这个操作,点击robei 顶层模块的管脚,看有断属性里是否有 Connect 这个选项,如果有则可以继续操作;如果没有,需要在官网下载最新版覆盖。如何连接内部信号。将高层模块里的内部信号名称复制,在模块图像界面里,点击端口,粘贴到属性栏的Connect里面,就可以了。function函数的使用
在Verilog 里,function的用法就类似于C语言自己定义的函数,function有两个可以存在的地方,一个是Verilog 的module里,一个是自己写的“.v”文件,通过include 写在module之前。Robei EDA 都支持两种写法,只是操作略有不同。如果是在module里写,只在这个模块里用,就直接将function写在模块的code 区域如果是通过include 来包含,那就直接在robei的graph界面,右边的属性栏中有一个include,把需要包含的文件复制到robei模块保存的路径下,把文件名复制在include中,就可以完成包含了。【robei 目前好像还不支持在自己的EDA软件里写.v文件,因为只要模块文件一旦定义,就一定会包含module和endmodule,有些不需要这个的就会保错,同时,Robei EDA的模块只有过编译后才会生成 Verilog代码】
Verilog 中二维数组在Robei EDA中的问题首先关于二维数组在Verilog中的定义,在Verilog HDL中是提供关于二维数组的定义的,但这个二维数组和C语言中的二维数组,其实不是一个东西,FPGA中的二维数组并不是真正意义上的数组,而是由多个寄存器组成的ROM或者RAM。
这个二维数组的目的是帮助编程者去建立内存的行为模型,简单来说就是将内存封装为一个reg 类型的数组,在这个内存中的任意一个单元都可以通过下标去访问。
二维数组的定义如下:
reg [wordsize : 0] array_name [0 : arraysize];
二维数组可以作为一个module里的内部信号,但是不能以信号线的形式定义,也就是input 或者output。同时在赋值上,比较推荐用generate和读入文件的方法来赋值。
在Robei EDA中,规则也是一样的,每一个Robei的模块,都是一个完整的module,输入输出和inout信号都是完整对应硬件电路的信号线,所以不允许有二维数组的定义存在于信号中。
关键词: