#懸崖上的花,越芬芳越無常。
今天來解決Robei EDA使用的時候遇到的問題的解決辦法,這個有我自己遇到的,也有別人問我然後我幫着解決的。這幾天剛好有學長來找我寫代碼,要仿真FPGA代碼,結果電腦上的Modelsim好死不死出問題了,於是用了Robei 自帶的仿真給了學長。學長還覺得挺方便的,至少對於初學者來說,很容易上手,不像我當年學FPGA,那叫一個淚流滿面。
include 包含文件
在常見的Verilog代碼中,會遇到包含 include 文件的寫法,這樣類似於定義一些全局的常量,方便調用。在quartus 裏的寫法是這樣的:
`include “sdram_para.v”
而在Robei EDA裏,include 無法直接寫在Code 部分,而是在定義欄的地方添加。
在右側的定義欄,可以看到 “include” 的框子,將文件名稱和後綴添加進去,在代碼編譯的時候就可以自動包含這個文件了。(注意,這個文件必須要放到Robei 模塊的文件路徑下,不然編譯的時候軟件會因爲找不到文件而報錯)
PS: 這裏有一個問題,我在寫SDRAM 的 子模塊的時候,用到了這個sdram_para.v
這個文件,但是我在上層文件綜合的時候,並沒有把這個文件加進去,它會報這樣一個錯誤,就是告知你綜合的時候,沒有找到這個文件的聲明。錯誤如下:
報這個錯誤的時候,就是我子模塊裏包含了這個文件,但是top文件裏沒有這個文件。
我解決這個問題的辦法就在top文件的include裏也加入這個文件,就不會報錯了。
模塊例化的問題
Robei EDA 裏對於每一個模塊被上層模塊例化,信號線的連接方式有兩種,一個是連線,另一個是通過connect連接內部信號。
但是,事實上在FPGA裏,例化方式稀奇古怪,就導致了有一些信號,不能直接像quartus的習慣那樣連接。比如一下這類情況。
- 對信號取反一下在連接的。
- 幾個信號邏輯或、與一下的。
- 有數字還有乘法的
- 一個多位信號分開好幾位的。(二值化的時候)
遇到這類隨心所欲的數值例化,就很尷尬,一開始就不知道該怎麼整。後來選擇了一個辦法,就是把這些信號再過一個模塊,做一個初步的處理。 - 取反+邏輯或模塊
ze_16,color_FFFFFF,t_70)
- 取反模塊
- 信號分割模塊
就是通過這樣的簡單的組合邏輯模塊,有時候也可以是時序的,把原本的信號轉換一下,改成符合要求的例化的信號線。因爲其實在代碼綜合好後生成的RTL圖裏,在例化上的操作其實和我們現在定義模塊是一個作用。
————————————————————正文結束的分割線———————————————
比賽馬上要結束了,我們也在做最後的系統調試和綜合,無論結果如何,都坦然面對。只是說,求仁得仁吧,這個對於我們來說也是成長。當我把人臉檢測(僞)做出來的時候,我的一個學長和我說,我已經比他當年畢業的時候還厲害了,他的畢業設計也只是做了我前一部分而已。這是一個大我3屆的學長,保研電科的大佬,算是我一入大學給我指引方向的人生導師,也是我一直追求的目標。他這麼說很大程度上只是鼓勵我,畢竟我和他的差距還是非常大的,但是不得不說我從比賽上卻是學到了非常多,即使過程再艱辛,心之所向,九死不悔。(以後也要加油啊~)