【FPGA】Roebi EDA常见问题解决(2)——内部信号的连接和function及二维数组

#致知穷理,学古探微;立德立言,无问西东。

有一段时间没写这个系列了,一个是我遇到的都是些小问题,大部分情况下还是我自己的问题,另一个也是一直忙于调试代码,导致了没有太多的时间去使用EDA软件。今天重新提及一下这个系列,也是我最近遇到的问题 and 解决方法。

一、 在Robei EDA里连接内部信号

一般来说,在代码模块之间的例化上,会存在两种端口例化的情况,一种是端口配输入输出线,直截了当,另一种是端口配上一级模块的内部信号,在高一级的模块里使用完了就不再引出信号线了。在Quartus 或者 Vivado 里,这两个操作没有什么不同,但是在 Robei EDA里,它的使用略有不同。

  1. 检查版本。在一些低一点的EDA版本里,是没有这个操作的,需要在官网下载最新版覆盖。如何检测是否有这个操作,点击robei 顶层模块的管脚,看有断属性里是否有 Connect 这个选项,如果有则可以继续操作;如果没有,需要在官网下载最新版覆盖。
    【FPGA】Roebi EDA常见问题解决(2)——内部信号的连接和function及二维数组_第1张图片
  2. 如何连接内部信号。将高层模块里的内部信号名称复制,在模块图像界面里,点击端口,粘贴到属性栏的Connect里面,就可以了。
    【FPGA】Roebi EDA常见问题解决(2)——内部信号的连接和function及二维数组_第2张图片

function函数的使用

在Verilog 里,function的用法就类似于C语言自己定义的函数,function有两个可以存在的地方,一个是Verilog 的module里,一个是自己写的“.v”文件,通过include 写在module之前。
Robei EDA 都支持两种写法,只是操作略有不同。
如果是在module里写,只在这个模块里用,就直接将function写在模块的code 区域
【FPGA】Roebi EDA常见问题解决(2)——内部信号的连接和function及二维数组_第3张图片
如果是通过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信号都是完整对应硬件电路的信号线,所以不允许有二维数组的定义存在于信号中。

——————————————————写完文章的分割线——————————————————
菜鸡一只,写的东西都来自于自己的经历,有些不保证一定正确,如有问题请批评指正,感激不尽~

你可能感兴趣的:(Robei,FPGA)