fpga verilog語法篇 1基本概念
本節(jié)繼續(xù)分享一些基本概念,
其中模塊是核心,
其他的幾個(gè):?綜合,輸入輸出端口,時(shí)序,例化...? 都是說的模塊的特性.
verilog的工程里面,是一個(gè)一個(gè)的模塊組成的.
比如,之前提到的,溫度采集系統(tǒng).
就可以設(shè)計(jì)三個(gè)核心模塊,
1,ad轉(zhuǎn)換模塊;
2,溫度值處理模塊;
3,溫度值輸出模塊;
模塊分為可以綜合,和不可以綜合的.
什么是綜合?
如果verilog的模塊所描述的功能,是可以通過fpga內(nèi)部的硬件搭建,那么就是可以綜合的,否則就是不可以綜合的.
比如上面的,
1,ad轉(zhuǎn)換模塊; (可以綜合)
2,溫度值處理模塊; (可以綜合)
3,溫度值輸出模塊; (可以綜合)
除了這三個(gè)模塊,我們還需要對每個(gè)模塊設(shè)計(jì)一個(gè)測試模塊(tb模塊),
測試模塊里面就有時(shí)鐘,是調(diào)用fpga官方函數(shù)實(shí)現(xiàn)的,這個(gè)時(shí)鐘就是不可以綜合的.
模塊總會有輸入和輸出端口.
輸入端口是為了進(jìn)行數(shù)據(jù)的輸入,
輸出端口是為了讓處理后的數(shù)據(jù)輸出,提供給下一個(gè)模塊使用,或者顯示出來.
輸入輸出端口是有固定類型的.
輸出輸出的設(shè)計(jì)很重要,
因?yàn)関erilog程序,最終編寫出來,都是流水線式的工作,
比如,還是采集溫度的系統(tǒng).
流水線上就有三個(gè)環(huán)節(jié)(模塊)
1,ad轉(zhuǎn)換
2,數(shù)據(jù)處理
3,溫度值輸出
這三個(gè)環(huán)節(jié)是配合的,如何才能默契的配合,
需要時(shí)序,我們按照相同的步調(diào).
或者,需要標(biāo)志,第一個(gè)模塊工作完成之后,輸出一個(gè)脈沖,提醒第二個(gè)模塊,
第二個(gè)模塊工作完成之后,輸出一個(gè)脈沖,"叫醒"第三個(gè)模塊工作...
如果不一致,就會亂掉,流水線上就會產(chǎn)生堆積,或者提前處理不完整數(shù)據(jù),這樣整個(gè)系統(tǒng)就會崩潰.
既然大部分fpga系統(tǒng)都是按照流水線式進(jìn)行工作的,
那么時(shí)序就很重要.
上面提到的脈沖和時(shí)序,都是輸入輸出端口中的某個(gè)變量.
所以,好的輸入輸出端口,可以讓系統(tǒng)更加穩(wěn)定.
例化是什么?
我們設(shè)計(jì)了三個(gè)模塊,
1,ad轉(zhuǎn)換
2,數(shù)據(jù)處理
3,溫度值輸出
這里只是相當(dāng)于模具,如果想要三個(gè)模塊配合運(yùn)行起來,
就需要設(shè)計(jì)一個(gè)主模塊.
在主模塊中,例化上面三個(gè)模塊,
在例化的時(shí)候,傳入的變量是真實(shí)的數(shù)據(jù).
數(shù)據(jù)處理模塊,例化的時(shí)候,輸入端口的數(shù)據(jù)是ad轉(zhuǎn)換處理后的數(shù)據(jù).
輸出端口的數(shù)據(jù)是給溫度值輸出模塊的數(shù)據(jù).
這樣三個(gè)模塊通過例化聯(lián)系在了一起,
然后運(yùn)行主模塊,整個(gè)流水線才會工作起來.