【FPGA】Roebi EDA常見問題解決(2)——內部信號的連接和function及二維數組

#致知窮理,學古探微;立德立言,無問西東。

有一段時間沒寫這個系列了,一個是我遇到的都是些小問題,大部分情況下還是我自己的問題,另一個也是一直忙於調試代碼,導致了沒有太多的時間去使用EDA軟件。今天重新提及一下這個系列,也是我最近遇到的問題 and 解決方法。

一、 在Robei EDA裏連接內部信號

一般來說,在代碼模塊之間的例化上,會存在兩種端口例化的情況,一種是端口配輸入輸出線,直截了當,另一種是端口配上一級模塊的內部信號,在高一級的模塊裏使用完了就不再引出信號線了。在Quartus 或者 Vivado 裏,這兩個操作沒有什麼不同,但是在 Robei EDA裏,它的使用略有不同。

  1. 檢查版本。在一些低一點的EDA版本里,是沒有這個操作的,需要在官網下載最新版覆蓋。如何檢測是否有這個操作,點擊robei 頂層模塊的管腳,看有斷屬性裏是否有 Connect 這個選項,如果有則可以繼續操作;如果沒有,需要在官網下載最新版覆蓋。
  2. 如何連接內部信號。將高層模塊裏的內部信號名稱複製,在模塊圖像界面裏,點擊端口,粘貼到屬性欄的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信號都是完整對應硬件電路的信號線,所以不允許有二維數組的定義存在於信號中。

——————————————————寫完文章的分割線——————————————————
菜雞一隻,寫的東西都來自於自己的經歷,有些不保證一定正確,如有問題請批評指正,感激不盡~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章